Zastosowanie
Scenariusz opisuje proces akceptacji dokumentów w systemie Comarch BPM, które zostały uprzednio pobrane z Krajowego Systemu e-Faktur (KSeF) do systemu Comarch ERP Optima. Głównym celem rozwiązania jest automatyzacja obiegu faktur kosztowych poprzez wyeliminowanie konieczności ręcznego przepisywania danych. Dzięki wykorzystaniu unikalnego identyfikatora dokumentu z bazy Comarch ERP Optima (VaN_VaNID), system Comarch BPM dynamicznie zaczytuje szczegółowe informacje bezpośrednio do kontrolek na karcie obiegu oraz kontrolki tabelarycznej ‘Elementy’.
Zawartość przykładu
- Definicja Typu Obiegu (Workflow): Wzorcowa ścieżka obiegu dokumentu kosztowego z krokami akceptacji, konfiguracją kontrolki Dane tabelaryczne.
Zasada działania
Proces automatyzacji opiera się na integracji bazy danych Comarch ERP Optima z procesem BPM:
- Pobranie i Rejestracja (Optima): Dokument zostaje pobrany z bramki KSeF do Comarch ERP Optima. Na jego podstawie tworzony jest dokument w Rejestrze VAT (tabela CDN.VatNag).
- Pobranie dokumentów przez Comarh BPM: Poprzez punkt ACD (Współpraca z dowolnym programem OCR ) do Comarch BPM zostają pobrane dokumenty z systemu Comarch ERP Optima.
- Pobranie ID dokumentu: W punkcie ACD pobierany jest unikalny identyfikator dokumentu z bazy Comarch ERP Optima (VaN_VaNID).
- Tworzenie dokumentów w Comarch BPM: Na podstawie pobranych danych z poziomu punktu ACD tworzone są dokumenty w Comarch BPM, w celu ich akceptacji.
- Automatyczne uzupełnianie danych: Informacje w poszczególnych kontrolkach karty obiegu są uzupełniane automatycznie na podstawie ID dokumentu, zaczytanego w punkcie ACD. Wykorzystując ten unikalny klucz, system za pomocą zapytań SQL zaczytuje szczegółowe dane bezpośrednio z bazy Comarch ERP Optima.
Konfiguracja Punktu ACD
W celu umożliwienia akceptacji dokumentów pobranych z Comarch ERP Optima w systemie Comarch BPM skonfigurowano punkt o trybie współpracy: Współpraca z dowolnym programem OCR .

1. Zakładka Ogólne: Skonfigurowano połączenie do bazy Comarch ERP Optima, z której będą pobierane dokumenty.

W polu Połączenie do bazy po kliknięciu opcji Zmień, należy uzupełnić:
- Nazwę serwera, na którym jest podpięta baza Comarch ERP Optima
- Nazwę bazy danych Comarch ERP Optima, z której mają być pobierane dokumenty
- Użytkownika ODUSER zmapowanego z tą bazą
- Hasło dla użytkownika ODUSER

- Tworzenie tabeli: Utworzono tabelę poprzez kliknięcie opcji Utwórz tabelę, która przechowuje informacja o utworzonych dokumentach, podając login i hasło administratora bazy danych MS SQL.

2. Zakładka Lista: Wprowadzono poniższe zapytanie, które pobiera listę dokumentów gotowych do akceptacji oraz ich unikalne ID (VaN_VaNID):
BEGIN TRY SELECT V.VaN_VaNID, V.VaN_Typ, CONCAT( V.VaN_Dokument, /*Numer dokumentu z rejestru */ ' | ', V.VaN_KntNazwa1, /* Nazwa kontrahenta */ ' | ', CONVERT(VARCHAR(10), V.VaN_DataZap, 104), /* Data wpływu */ ' | KSeF: ',K.DKF_NumerKSeF /*Numer KSeF pobrany z tabeli DokumentyKSeF */ ) AS [InformacjeWyswietlaneNaLiscie] FROM CDN.VatNag AS V INNER JOIN CDN.DokumentyKSeF AS K ON V.VaN_VaNID = K.DKF_VaNId LEFT JOIN dbo.DF_WorkAPProcess AS B1 ON B1.APW_DocumentID1 = V.VaN_Typ /*Rejestr zakupu w Optimie to 1 */ AND B1.APW_DocumentID2 = V.VaN_VaNID /*Mapowanie po VaNID */ AND B1.APW_APDId = @PointId@ /*ID punktu ACD z tabeli do.DF_ConfAPDictionary pobierany dynamicznie*/ WHERE V.VaN_Typ = 1 /*Filtr: Rejestr Zakupów */ AND K.DKF_Typ = 1 /*Dokumenty KSeF typu zakupowego*/ AND B1.APW_ID IS NULL /*Wykluczamy już przeprocesowane */ ORDER BY V.VaN_DataZap DESC; END TRY BEGIN CATCH DECLARE @ErrorMessage varchar(max) = 'W zapytaniu wystąpił błąd: ' + ERROR_MESSAGE(); THROW 50001, @ErrorMessage ,1; END CATCH
3. Zakładka Kontrolki: Dodano kontrolkę ID_VanID (ID_Optima) i przypisano jej zapytanie, które pobiera VANID dokumentu z Comarch ERP Optima:

Konfiguracja kontrolek na karcie obiegu
W definicji dokumentu, do każdej kontrolki przypisano zapytanie SQL, które na podstawie pobranego ID (przekazanego do parametru @ID_OPTIMA@) pobiera konkretne dane z bazy.
Przykładowe zapytania dla kontrolek:
- Data wpływu:
select VaN_DataZap from CDN.VatNag where VaN_VaNID = @ID_OPTIMA@
- Data zakupu:
select VaN_DataOpe from CDN.VatNag where VaN_VaNID = @ID_OPTIMA@
- Data wystawienia:
select VaN_DataWys FROM CDN.VatNag where VaN_VaNID = @ID_OPTIMA@
- Dokument:
select VaN_Dokument from CDN.VatNag where VaN_VaNID = @ID_OPTIMA@
- Kontrahent:
select VaN_PodID from CDN.VatNag where VaN_VaNID = @ID_OPTIMA@
- Waluta:
select W.WNa_WNaID , W.WNa_Symbol, W.WNa_WNaID from CDN.VatNag AS V JOIN CDN_KNF_KONFIGURACJA.CDN.WalNazwy as W /* Należy wskazać właściwą nazwę bazy konfiguracyjnej */ on ISNULL(NULLIF(V.VaN_Waluta, ''), 'PLN') = W.WNa_Symbol where V.VaN_VaNID = @ID_OPTIMA@
- Forma płatności:
select F.FPl_FPlId, F.FPl_Nazwa, F.FPl_FPlId from CDN.VatNag as V JOIN CDN.FormyPlatnosci as F ON V.VAN_FPLID = F.FPL_FPLID where V.VaN_VaNID = @ID_OPTIMA@
- Termin płatności:
select VaN_Termin from CDN.VatNag where VaN_VaNID = @ID_OPTIMA@
- Numer rachunku bankowego:
select Van_PlatnikRachunekNr from CDN.VatNag where VaN_VaNID = @ID_OPTIMA@
- Notatka:
select VaN_Opis from CDN.VatNag where VaN_VaNID = @ID_OPTIMA@
- Rejestr:
select G.Gru_GruID, G.Gru_Nazwa,G.Gru_GruID from CDN.VatNag as V JOIN CDN.Grupy as G on V.VaN_Rejestr = G.Gru_Nazwa where V.VaN_VaNID = @ID_OPTIMA@ AND G.Gru_Typ = 1
- Kategoria:
select K.Kat_KatID, K.Kat_KodSzczegol, K.Kat_KatID from CDN.VatNag as V JOIN CDN.Kategorie as K on V.VaN_KatID = K.Kat_KatID where V.VaN_VaNID = @ID_OPTIMA@
- Opis Kategorii:
select K.Kat_Opis from CDN.VatNag as V JOIN CDN.Kategorie as K on V.VaN_KatID = K.Kat_KatID where V.VaN_VaNID = @ID_OPTIMA@
- Numer KSeF:
select DKF_NumerKSeF from CDN.DokumentyKSeF where DKF_VaNId = @ID_OPTIMA@
- Data przyjęcia z KSeF:
select DKF_DataPozyskania from CDN.DokumentyKSeF where DKF_VaNId = @ID_OPTIMA@
- Walidator:
select VaN_VaNID from cdn.VatNag where VaN_VaNID = @ID_OPTIMA@
- Rejestr VAT zakupu:
select VaN_VaNID from cdn.VatNag where VaN_VaNID = @ID_OPTIMA@
- Zapytanie do kontrolki Dane tabelaryczne Elementy:
IF @^SenderControlName@ = 'ID_OPTIMA' /*Identyfikator kontrolki do której pobierane jest ID dokumentu z Comarch ERP Optima */ BEGIN SELECT V.VaT_KatID AS [KategoriaID], V.VaT_KatOpis AS [Kategoria], V.VaT_Kat2ID AS [Kategoria2ID], V.VaT_Kat2Opis AS [Kategoria2], /* Pobieramy ID stawki ze słownika */ (SELECT TOP 1 K.Kon_KonId FROM CDN_KNF_Konfiguracja.cdn.Konfig AS K WHERE K.Kon_Numer = 301 AND K.Kon_Wartosc LIKE V.VaT_StawkaSymbol + '%') AS [StawkaID], V.VaT_Netto AS [Netto], V.VaT_VATWal, (V.VaT_Netto + V.VaT_VAT) AS [Brutto], V.VaT_RodzajZakupu AS [Rodzaj], V.VaT_Odliczenia AS [Odliczenia] FROM CDN.VatTab AS V WHERE V.VaT_VaNID = @ID_OPTIMA@ END
Uzupełniony dokument w Comarch BPM
Dokumenty z Comarch ERP Optima zostały pobrane do punktu ACD i poprawnie zainicjowane w Comarch BPM.

Dane na karcie obiegu zostały zaczytane dynamicznie z bazy Comarch ERP Optima na podstawie unikalnego identyfikatora ID__OPTIMA (VaN_VaNID). System wykorzystał ten klucz, aby wykonać zapytania SQL przypisane do poszczególnych kontrolek, co wyeliminowało konieczność ręcznego przepisywania danych z faktury.





