Blokada przesunięć MM
Moderator: mikey
Blokada przesunięć MM
Witam,
czy istnieje mechanizm blokujący przesunięcia MM?
Wyjaśniam:
Ktoś przez przypadek przesunął towar na magazyn na którym powinny być tylko produkty. Wyszło to dopiero teraz gdy Księgowa zamyka stany i wychodzą minusowe. Dlaczego? A bo nie zadziałał mechanizm który by dodał na magazyn produktów towar. Teraz faktura już poszła do klienta ale nie to problem jest. Obawiam się, że mogą wystąpić w najbliższym czasie podobne sytuacje. Czy istnieje jakiś mechanizm, jakaś blokada nie umożliwiająca przesuwać towar na produkcje i na odwrót?
czy istnieje mechanizm blokujący przesunięcia MM?
Wyjaśniam:
Ktoś przez przypadek przesunął towar na magazyn na którym powinny być tylko produkty. Wyszło to dopiero teraz gdy Księgowa zamyka stany i wychodzą minusowe. Dlaczego? A bo nie zadziałał mechanizm który by dodał na magazyn produktów towar. Teraz faktura już poszła do klienta ale nie to problem jest. Obawiam się, że mogą wystąpić w najbliższym czasie podobne sytuacje. Czy istnieje jakiś mechanizm, jakaś blokada nie umożliwiająca przesuwać towar na produkcje i na odwrót?
Re: Blokada przesunięć MM
Na przykład triger na tabeli TraNag.
Re: Blokada przesunięć MM
Kod: Zaznacz cały
USE [ERPXL_TEST]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <******>
-- Create date: <******>
-- Description: <Trigger sprawdzający dokument PW czy dane są poprawne. >
-- =============================================
ALTER TRIGGER [CDN].[TraNag_Sprawdz_Magazyny]
ON [CDN].[TraNag]
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
BEGIN
DECLARE @typ AS INT
DECLARE @numer AS INT
DECLARE @flaga AS INT
DECLARE @centrum AS INT
DECLARE @operator AS VARCHAR (MAX)
SET @typ = (SELECT TrN_GIDTyp FROM inserted) --pobiera aktualn typ dokumenty dla PW: 1617
SET @numer = (SELECT TrN_GIDNumer FROM inserted) -- pobiera aktualny numer dokumentu
IF (@typ = 1617)
BEGIN
SET @flaga = (SELECT CDN.TraElem.TrE_TypTwr FROM CDN.TraElem WHERE CDN.TraElem.TrE_GIDNumer = @numer AND CDN.TraElem.TrE_GIDTyp = @typ GROUP BY CDN.TraElem.TrE_TypTwr) -- sprawdza typ kartotek np: towar albo produkt
SET @centrum = (SELECT s.SES_FrsID FROM inserted
left outer join CDN.Sesje s ON s.SeS_SesjaId=TrN_Aktywny GROUP BY s.SES_FrsID) -- Sprawdza aktualne centrum zabezpieczeń
IF exists (SELECT * FROM inserted WHERE TrN_GIDTyp = 1617 AND (TrN_MagDNumer = 2 OR TrN_MagDNumer = 11 OR TrN_MagDNumer = 3 OR TrN_MagDNumer = 4 OR TrN_MagDNumer = 12) AND @flaga !=1 AND @centrum !=1) -- sprawdza warunek czy wprowadzamy na stan magazynu towarów produkt
BEGIN
RAISERROR ('#CDN_BLADK/# #CDN_1=Nie można wprowadzić kartoteki typu: "Produkt" na Magazyn towarów/# #CDN_2=Nieprawidłowy magazyn docelowy/# #CDN_3=Zmień dane w PW/#',16,1) -- wywołujemy bład
ROLLBACK TRAN
END
IF exists (SELECT * FROM inserted WHERE TrN_GIDTyp =1617 AND (TrN_MagDNumer = 6 OR TrN_MagDNumer = 7 OR TrN_MagDNumer = 1) AND @flaga !=2 AND @centrum !=1) -- odwrotnie
BEGIN
RAISERROR ('#CDN_BLADK/# #CDN_1=Nie można wprowadzić kartoteki typu: "Towar" na Magazyn produktów/# #CDN_2=Nieprawidłowy magazyn docelowy/# #CDN_3=Zmień dane w PW/#',16,1)
ROLLBACK TRAN
END
END
END
END
-
- Posty: 934
- Rejestracja: 12 sty 2009, 12:03
- Rola: Administrator CDN XL
- Wersja: 2016
- Lokalizacja: Kraków
Re: Blokada przesunięć MM
Trigger fajny ale w ostateczności. Ogranicz rzeczy takie jak "przez przypadek.." "mogą wystąpić w najbliższym czasie..."
Pierwszy krok -> ogranicz użyszkodnikowi działanie przycinając uprawnienia do wystawiania dokumentów, do magazynów, dokumentów do magazynów itd. (Administrator -> definicje dokumentów, struktura firmy, operatorzy )
Drugi krok -> naucz kogoś lub sam kontroluj stany magazynowe, niezamknięte dokumenty, niewygenerowane dokumenty - odpowiedni raport załatwi prawie wszystko. (Lista towarów -> filtry i wydruk Rozbieżności ilości, Lista dokumentów -> filtry itd.)
Pierwszy krok -> ogranicz użyszkodnikowi działanie przycinając uprawnienia do wystawiania dokumentów, do magazynów, dokumentów do magazynów itd. (Administrator -> definicje dokumentów, struktura firmy, operatorzy )
Drugi krok -> naucz kogoś lub sam kontroluj stany magazynowe, niezamknięte dokumenty, niewygenerowane dokumenty - odpowiedni raport załatwi prawie wszystko. (Lista towarów -> filtry i wydruk Rozbieżności ilości, Lista dokumentów -> filtry itd.)
Re: Blokada przesunięć MM
Super było by to co piszesz ale w naszej firmie nie realne. Uwierz mi do tej pory zdarza się telefon, że problem z przyjęciem bo chcą towar na produkcje wrzucić albo odwrotnie bo tak im się chce. A odkręcanie tego to nie taka prosta sprawa dlatego przyjęliśmy taktykę odgórnego zakazu na poziomie bazy danych.
Re: Blokada przesunięć MM
Odkopuje temat
Proszę może coś wymyślicie. Chodzi mi o funkcje RAISERROR która sama w sobie wycofuję transakcje i pojawia się buba w momencie kiedy dokument PW jest tworzony nie przez dodaj nowe PW tylko w momencie jak z RW robimy PW. Trigger łapie i wywala błąd ale i tak dokument jest tworzony. Problem, że nie da sie go usunąć bo trigger blokuje jakakolwiek edycję. Powstała myśl, że jedynie ostrzegać użytkownika ale funkcja RAISEERROR sama w sobie cofa transakcje, macie pomysł co innego zastosować?
Proszę może coś wymyślicie. Chodzi mi o funkcje RAISERROR która sama w sobie wycofuję transakcje i pojawia się buba w momencie kiedy dokument PW jest tworzony nie przez dodaj nowe PW tylko w momencie jak z RW robimy PW. Trigger łapie i wywala błąd ale i tak dokument jest tworzony. Problem, że nie da sie go usunąć bo trigger blokuje jakakolwiek edycję. Powstała myśl, że jedynie ostrzegać użytkownika ale funkcja RAISEERROR sama w sobie cofa transakcje, macie pomysł co innego zastosować?
Re: Blokada przesunięć MM
Może się mylę ale czy jakby zamienić:
na
to mogłoby rozwiązać problem.
Ogólnie nie rozumiem co chcesz osiągnąć. Czy zablokować przesunięcia tak jak w temacie czy blokować RW/PW.
Kod: Zaznacz cały
AFTER INSERT,UPDATE
Kod: Zaznacz cały
FOR INSERT,UPDATE
Ogólnie nie rozumiem co chcesz osiągnąć. Czy zablokować przesunięcia tak jak w temacie czy blokować RW/PW.
Re: Blokada przesunięć MM
Nie blokować wszystkie PW/RW tylko blokować PW w określonej sytuacji.