Czy wiesz, że w Comarch BPM można zweryfikować, czy dokument o danym numerze jest już wystawiony (tzw. weryfikacja numeru obcego)

Zastosowanie

Dzięki tej konfiguracji system Comarch BPM zyskuje zdolność do aktywnego wykrywania i ostrzegania przed duplikatami dokumentów w obiegu. Zastosowanie to zapewnia integralność i spójność danych, uniemożliwiając wprowadzenie dokumentu, który już został zarejestrowany w systemie pod tym samym numerem i jest przypisany do tego samego kontrahenta. W przypadku wykrycia duplikatu, system natychmiast wyświetla komunikat ostrzegawczy.

 

Zawartość przykładu

  • Definicja Typu Obiegu (Workflow): Wzorcowa ścieżka obiegu dokumentu kosztowego z krokami akceptacji i konfiguracją kontrolki Komunikat, konfiguracją kontrolki Dane tabelaryczne i wygenerowaniem dokumentu do Comarch ERPXL

 

Zasada działania

  • Mechanizm opiera się na kontrolce typu Komunikat, która pełni rolę Obserwatora dwóch kluczowych pól wejściowych: Numer dokumentu i Kontrahent.
  • Kontrolka Komunikat jest wyzwalana przy każdej zmianie wartości w polach: Numer dokumentu oraz Kontrahent.
  • Komunikat wykonuje zapytanie SQL, które przeszukuje bazę BPM, odwołując się do tabel dokumentów (do.RO_Documents) i wartości kontrolek (do.RO_ControlsValueexpand).
  • Zapytanie szuka innego dokumentu (z pominięciem aktualnie edytowanego dokumentu: t2.dwd_ID <> isnull(@^DocumentId @,0)), w tym samym Typie Obiegu (t1.DFH_Name=’Weryfikacja numeru obcego BPM’), o tym samym Numerze dokumentu (t3.DWC_ValueString = @Numer_dokumentu@) i przypisanego do tego samego Kontrahenta (t4.DWC_ValueInt= @Kontrahent_Id@).
  • Jeśli duplikat zostanie znaleziony (If exists (Select 1 from…)), kontrolka wyświetla komunikat: „Numer faktury dla wskazanego kontrahenta już istnieje”.

 

Konfiguracja przykładu

1.Na karcie obiegu zdefiniowano następujące kontrolki niezbędne do skonfigurowania mechanizmu sprawdzania, czy dokument o danym numerze już istnieje w obiegu Comarch BPM:

  • „Numer dokumentu” (identyfikator: Numer_dokumentu) – typ Tekst
  • „Kontrahent” (identyfikator: Kontrahent) typ Kontrahent
  • „Komunikat” (identyfikator: Komunikat) – typ Komunikat

 

2.Dodano obserwację kontrolek: Kontrolka Komunikat obserwuje pola „Numer dokumentu” i „Kontrahent”.

 

Kontrolka komunikat – kontrolki powiązane

 

3.Dodano zapytanie SQL: Kontrolka Komunikat zawiera zapytanie SQL, które wykonuje weryfikację, sprawdzając, czy inny dokument w tym samym Typie Obiegu (DFH_Name=’Weryfikacja numeru obcego BPM’) ma ten sam numer i tego samego kontrahenta.

  • Jeśli duplikat zostanie znaleziony, wyświetla komunikat: „Numer faktury dla wskazanego kontrahenta już istnieje”.

 

BEGIN TRY
If exists (Select 1
from do.RO_ObjectsTypes as t1
join do.RO_Documents as t2 on t1.DFH_Id=t2.DFH_Id
join do.RO_ControlsValueexpand as t3 on t3.DWD_ID=t2.DWD_ID
join do.RO_ControlsValueExpand as t4 on t4.DWD_ID=t2.DWD_ID
where t3.DWC_ValueString =  @Numer_dokumentu@  /*Odwołanie do kontrolki Numer dokumentu*/
and t1.DFH_Name='Weryfikacja numeru obcego w BPM' /*Podstawić właściwą nazwę typu obiegu*/
and t3.DKO_Name='Numer_dokumentu' /*Identyfikator kontrolki Numer dokumentu*/
and t4.DKO_Name='Kontrahent'  /*Identyfikator kontrolki Kontrahent*/
and t4.DWC_ValueInt= @Kontrahent_Id@ /*Odwołanie do kontrolki Kontrahent*/
and t2.dwd_ID <> isnull( @^DocumentId@,0) )
Begin

/*Informacja, która jest wyświetlana na karcie obiegu, w przypadku duplikacji*/
SELECT 'Numer faktury dla wskazanego kontrahenta już istnieje', 1
End
END TRY
BEGIN CATCH
DECLARE @ErrorMessage varchar(max) = 'W zapytaniu wystąpił błąd : ' + ERROR_MESSAGE();
THROW 50001,  @ErrorMessage ,1;
END CATCH

 

Komentarze dotyczące Logiki Zapytania:

  • t3.DWC_ValueString = @Numer_dokumentu@: Odwołanie do kontrolki Numer dokumentu
  • t1.DFH_Name=’Weryfikacja numeru obcego w BPM’: Podstawić właściwą nazwę typu obiegu
  • t3.DKO_Name=’Numer_dokumentu’: Identyfikator kontrolki Numer dokumentu
  • t4.DKO_Name=’Kontrahent’: Identyfikator kontrolki Kontrahent
  • t4.DWC_ValueInt= @Kontrahent_Id@: Odwołanie do kontrolki Kontrahent
  • SELECT ’Numer faktury dla wskazanego kontrahenta już istnieje’, 1: Informacja, która jest wyświetlana na karcie obiegu, w przypadku duplikacji.
  • Wartość 1 (Blokada Zapisu): Jeżeli zapytanie zwraca wartość 1, komunikat pojawia się na karcie obiegu, a zapisanie nowoutworzonego dokumentu lub przekazanie już zapisanego dokumentu do kolejnego etapu zostanie zablokowane. System wymusi poprawienie danych przez użytkownika, uniemożliwiając wprowadzenie duplikatu do obiegu.
  • Wartość 0 (Brak Blokady): Jeżeli zamiast jedynki zwracana jest wartość 0, komunikat pojawi się jedynie jako ostrzeżenie. Użytkownik będzie mógł zapisać i procesować dokument dalej, ponieważ system zasygnalizuje potencjalny duplikat, ale nie zablokuje pracy.

 

Uwaga
W kontekście weryfikacji duplikatu, użycie wartości 1 jest standardowe i konieczne, aby mechanizm ten skutecznie uniemożliwił wprowadzenie powtarzających się dokumentów

 

Zapytanie SQL w kontrolce Komunikat

 

Weryfikacja Duplikacji Dokumentów

Na nowoutworzonym dokumencie, który nie został jeszcze zapisany, po wprowadzeniu numeru dokumentu do kontrolki „Numer dokumentu” i następnie wybraniu kontrahenta w kontrolce „Kontrahent”, mechanizm weryfikacji zostaje natychmiast wyzwolony. System wykonał zapytanie SQL, sprawdzając bazę BPM. Kluczowym elementem zapytania jest warunek t2.dwd_ID <> isnull( @^DocumentId@,0), który zapewnia, że weryfikacja ignoruje bieżący dokument (ponieważ dopiero jest tworzony i nie ma nadanego numeru w obiegu BPM, który by go identyfikował jako zapisany). W tym momencie system wykrył, że dokument o tym samym numerze dla wskazanego kontrahenta już istnieje w BPM i pojawia się komunikat ostrzegawczy: „Numer faktury dla wskazanego kontrahenta już istnieje”. Wartość 1 w instrukcji SELECT zapytania oznacza Blokadę zapisu. System uniemożliwia zapisanie dokumentu do kolejnego etapu, dopóki nie zostanie skorygowany numer dokumentu lub kontrahent.

 

Komunikat informujący o duplikacji

 

Pobierz przykładową definicję obiegu

 

Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?

Sprawdź Szkolenia Comarch BPM!