Zakaz na predekretację RS oraz usunięcie RS w buforze + Trigger na TraNag

Problemy i pomysły związane z funkcjonowaniem modułu Sprzedaż

Moderator: mikey

m_pk
Posty: 47
Rejestracja: 20 wrz 2017, 13:39
Rola: Inny
Lokalizacja: ZST
Kontakt:

Zakaz na predekretację RS oraz usunięcie RS w buforze + Trigger na TraNag

Post autor: m_pk »

Witam,

Chcę zablokować księgowym możliwość predekretacji RS oraz RSK.
Jest możliwość zrobienia tego za pomocą zakazu?
Bo widziałem zakaz ogólnie na zakaz predekretacji, ale wszystkich dokumentów.

Mam jeszcze problem odnośnie triggera blokującego usunięcie RS i RSK w buforze.
Zrobiłem trigger na tranag który zwraca info, że należy go zatwierdzić i anulować, ale działa on na cały TraNag a nie na RS i RSK.
Mile widziana modyfikacja uwzględniająca konretnego usera.

Jak należy to zmodyfikować

Kod: Zaznacz cały

USE [Name_Database]
GO
/****** Object:  Trigger [CDN].[TraNag_Delete]    Script Date: 07/17/2018 08:22:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
	 ALTER TRIGGER [CDN].[TraNag_Delete]         ON [CDN].[TraNag]         
	 INSTEAD OF DELETE AS
	 RAISERROR('#CDN_INFO/# #CDN_1=Dokumentu nie można usunąć. Prawidłowy sposób: potwierdź a następnie anuluj. /# #CDN_2=Wywołany został wyzwalacz na tabeli cdn.TraNag uniemożliwiający usuwanie RS i RSK. Pytania proszę kierować na pomoc@prefix.pl /#',16,1);
	 ROLLBACK TRANSACTION

Proszę o pomoc.

Pzdr.
PK

Monster
Posty: 182
Rejestracja: 20 mar 2012, 09:04
Rola: Konsultant CDN XL
Wersja: 2016
Lokalizacja: Wrocław

Re: Zakaz na predekretację RS oraz usunięcie RS w buforze + Trigger na TraNag

Post autor: Monster »

Czemu robić zakaz na predekretację RS? Nie lepiej odpiąć schematy księgowań od typu dokumentu?

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: Zakaz na predekretację RS oraz usunięcie RS w buforze + Trigger na TraNag

Post autor: elmiq »

Zakaz sugeruje zrobić poprzez dezaktywacje kontrolek w małej hydrze (pytanie co z samym księgowaniem z poziomu listy dokumentów). Trigger działa na całość, bo nie ma prawa działać inaczej. Musisz odwołać się do odpowiednich GID-typów dokumentów (sugeruje zapoznać się z tabelą CDN.Obiekty). Zarówno do tej części problemu, jak i kwestii tego aby kontrolować samego usera który ma/nie ma praw do usuwania, zapoznaj się z zasadami działania tabel inserted oraz deleted dla triggerów DML. Wiem, że to bardzo ogólna odpowiedź i mógłbym zamiast tego wkleić gotowca, ale skoro bawisz się na bazie (zakładam, że docelowo na produkcyjnej) to lepiej wiedzieć co się robi. Nawet wklejanie czegoś z forum od pseudospecjalistów takich jak ja (nie urażając nikogo), nie zawsze jest bezpieczne i warto to weryfikować - w końcu odpowiedzialność leży po Twojej stronie :)

Pozdrawiam,
Mateusz
Mateusz Świerkosz

http://elmiq.blogspot.com/

m_pk
Posty: 47
Rejestracja: 20 wrz 2017, 13:39
Rola: Inny
Lokalizacja: ZST
Kontakt:

Re: Zakaz na predekretację RS oraz usunięcie RS w buforze + Trigger na TraNag

Post autor: m_pk »

WItam,

Pozostane jednak przy edycji triggera. Spróbuje dodać if na trngidtyp in(2039,2047) i z operatorem też coś pomodzę.

Co do księgowania RS,RSK chce dać zakaz, ponieważ powoduję to duże deadlocki na bazie.
Robię to osobiście i zabroniłem księgowym księgować, ale nie zawsze słuchają.

DZiękuje za wszystkie odpowiedzi.

PZdr.
PK

ODPOWIEDZ