Zastosowanie
Dzięki zastosowaniu tej zintegrowanej konfiguracji, proces obiegu faktur kosztowych w Comarch BPM zyskuje pełną automatyzację i spójność danych.
Głównym celem jest:
- Pobranie i wyświetlenie podsumowania VAT: Dane są pobierane bezpośrednio z systemu KSeF (poprzez BPM), a kontrolka tabelaryczna Tabela VAT jest automatycznie wypełniana, prezentując zagregowane wartości dla każdej stawki.
- Eliminacja Ręcznego Wprowadzania Danych: Dane z faktury KSeF (pobrane do tabeli do.KS_DocumentItems) są automatycznie mapowane i wypełniają kontrolkę tabelaryczną, eliminując potrzebę przepisywania.
- Ujednolicenie Stawki VAT: Zapewnienie, że stawki VAT z KSeF zostaną poprawnie zmapowane na identyfikatory liczbowe (Naz_GIDLp) używane w Comarch ERP XL, co jest kluczowe dla poprawnego księgowania.
- Minimalizacja błędów i skrócenie czasu obsługi faktury: Proces akceptacji bazuje na poprawnych i spójnych danych, co skraca czas obsługi faktury.
Zawartość przykładu
- Definicja Typu Obiegu (Workflow): Wzorcowa ścieżka obiegu dokumentu kosztowego z krokami akceptacji, konfiguracją kontrolki Dane tabelaryczne i wygenerowaniem dokumentu do Comarch ERPXL
- Punkt konfiguracyjny ACD: Wzorcowa konfiguracja, która jest odpowiedzialna za pobranie ID dokumentu KSeF, Załącznika oraz wszystkich kluczowych danych nagłówkowych (Numer dokumentu, Kontrahent, Data zakupu, Data wystawienia, Data wpływu Termin płatności, Forma płatności, Waluta, Wartość Netto, Wartość Brutto, Numer KSeF, Data przyjęcia KSeF) oraz inicjację dokumentu obiegowego.
W przypadku kontrolki Kontrahent w zapytaniu przed nazwą tabeli CDN.KntKarty należy wskazać właściwą nazwę bazy Comarch ERXL.
Kliknij tutaj, aby pobrać przykład
Zasada działania
Mechanizm opiera się na inicjowaniu wartości w kontrolce Tabela VAT, która jest wypełniana danymi z bazy Comarch BPM, zapisanymi po przetworzeniu faktury z KSeF w punkcie ACD.
- Konfiguracja wykorzystuje ID dokumentu KSeF (zapisane w dedykowanej kontrolce typu Liczba całkowita o nazwie np. ID_KSeF) jako identyfikator do pobrania danych.
- Kontrolka tabelaryczna Tabela VAT obserwuje pole ID_KSeF, reagując na jego wypełnienie.
- Kluczowym elementem jest zapytanie SQL umieszczone na zakładce Inicjowanie Wartości kontrolki tabelarycznej.
- Zapytanie jest filtrowane za pomocą parametru @ID_KSeF@, dzięki czemu pobiera ono wiersze z właściwego dokumentu KSeF z tabeli do.KS_DocumentItems w bazie BPM.
- Zapytanie zawiera logikę CASE, która rozpoznaje specyficzne oznaczenia stawek z KSeF (np. Stawka0KR, StawkanpI, zw) i mapuje je na standardowe klucze (np. 0%, NP, ZW).
- Dane z tabeli do.KS_DocumentItems są natychmiast grupowane i sumowane według ujednoliconego klucza VAT. Dzięki temu, nawet przy wielu pozycjach na fakturze, Tabela VAT wyświetla tylko jeden zbiorczy wiersz dla każdej stawki.
- Następuje mapowanie kluczy na identyfikatory liczbowe (Naz_GIDLp) z tabeli CDN.Nazwy (dla Naz_GIDTyp = 624). W konfiguracji wykorzystano kolumnę Naz_Nazwa, co zapewnia precyzyjne dopasowanie do stawek systemowych (np. 'A 23.00′).
- Końcowy SELECT zwraca już zagregowane kwoty Netto, oblicza Wartość VAT oraz Wartość Brutto, używając mapowanego ID stawki (Naz_GIDLp)
- Kontrolki podsumowujące (WartoscNetto i WartoscBrutto) obserwują kontrolkę Tabela VAT
- i automatycznie zliczają całkowitą sumę z kolumn Wartość Netto i Wartość Brutto w całej tabeli, wyświetlając poprawne podsumowanie kwot.
- Na podstawie zagregowanej sumy Netto i zmapowanej stawki procentowej, zapytanie automatycznie oblicza i zwraca Wartość VAT oraz Wartość Brutto
Konfiguracja przykładu
1. Utworzono kontrolkę ID_KSeF: Na karcie obiegu dodano kontrolkę typu Liczba całkowita o nazwie (identyfikatorze) ID_KSeF, do której będzie zapisywane ID dokumentu KSeF.

2. Utworzono kontrolkę Tabelaryczną: Dodano kontrolkę typu Dane tabelaryczne o nazwie (identyfikatorze) Tabela VAT i skonfigurowano w niej następujące kolumny:
- ”Wartość Netto” (identyfikator kolumny: WartoscNetto) – typ Liczba stałoprzecinkowa
- ”Stawka VAT” (identyfikator kolumny: StawkaVAT) – typ Lista
- ”Wartość VAT” (identyfikator kolumny: WartoscVAT) – typ Liczba stałoprzecinkowa
- ”Wartość Brutto” (identyfikator kolumny: WartoscBrutto)– typ Liczba stałoprzecinkowa

3. W kontrolce typu Dane tabelaryczne na zakładce Listy zdefiniowano zapytanie pobierające:
- Stawki VAT:
select Naz_gidLp as Id, CASE WHEN Naz_Nazwa='A 23.00' THEN '23%' WHEN Naz_Nazwa='B 8.00' THEN '8%' WHEN Naz_Nazwa='C 0.00' THEN '0%' WHEN Naz_Nazwa='D 0.00' THEN 'ZW' WHEN Naz_Nazwa='E 0.00' THEN 'NP' WHEN Naz_Nazwa='F 7.00' THEN '7%' WHEN Naz_Nazwa='G 5.00' THEN '5%' END from CDN.Nazwy where Naz_GIDTyp = 624 AND trim(substring(Naz_Nazwa,9,2))=''

4. Dodano obserwację kontrolki: W kontrolce Dane tabelaryczne, na zakładce Inicjowanie wartości, dodano powiązanie do kontrolki ID_KSeF.

5. Dodano zapytanie SQL: W kontrolce Dane tabelaryczne, na zakładce Inicjowanie wartości w sekcji Wzór na wartość SQL ERP dodano zapytanie, które pobiera dane z tabel do.KS_DocumentItems na podstawie przekazanego parametru @ID_KSeF@ (ID dokumentu KSeF). Zapytanie od razu grupuje i sumuje wartości Netto dla wszystkich pozycji, które mają tę samą stawkę VAT, co pozwala na wygenerowanie zbiorczego podsumowania zamiast listy pojedynczych towarów.
Ta sekcja jest wywoływana tylko raz, podczas inicjowania obiegu:
IF @^SenderControlName@ = 'ID_KSeF' /* Identyfikator kontrolki do której pobierane jest ID dokumentu KSeF */ BEGIN /* Tryb 1: Inicjowanie wierszy z dokumentu KSeF */ WITH KSeF_Parsed AS ( SELECT CASE WHEN di.KSI_ElementStawkaVAT = 'Stawka23' THEN '23%' WHEN di.KSI_ElementStawkaVAT = 'Stawka8' THEN '8%' WHEN di.KSI_ElementStawkaVAT = 'Stawka0KR' THEN '0%' WHEN di.KSI_ElementStawkaVAT = 'zw' THEN 'ZW' WHEN di.KSI_ElementStawkaVAT = 'StawkanpI' THEN 'NP' ELSE di.KSI_ElementStawkaVAT END AS KluczMapowania, di.KSI_ElementWartoscNetto FROM [Nazwa_Bazy_ComarchBPM].do.KS_DocumentItems AS di /*Uzupełnić nazwę bazy Comarch BPM */ WHERE di.KSI_DocumentId = @ID_KSeF@ ), KSeF_Aggregated AS ( /* Sumujemy netto dla każdej rozpoznanej grupy stawek */ SELECT KluczMapowania, SUM(KSI_ElementWartoscNetto) AS SumaNetto FROM KSeF_Parsed GROUP BY KluczMapowania ), XL_Stawki AS ( /* Pobieramy ID stawek */ SELECT Naz_gidLp AS Id, CASE WHEN Naz_Nazwa = 'A 23.00' THEN '23%' WHEN Naz_Nazwa = 'B 8.00' THEN '8%' WHEN Naz_Nazwa = 'C 0.00' THEN '0%' WHEN Naz_Nazwa = 'D 0.00' THEN 'ZW' WHEN Naz_Nazwa = 'E 0.00' THEN 'NP' END AS NazwaMapowana, CASE WHEN Naz_Nazwa = 'A 23.00' THEN 0.23 WHEN Naz_Nazwa = 'B 8.00' THEN 0.08 ELSE 0.00 END AS Procent FROM CDN.Nazwy WHERE Naz_GIDTyp = 624 ) /* Finalne połączenie danych */ SELECT ka.SumaNetto AS 'Wartość netto', xl.Id AS 'Stawka VAT ID', CAST(ka.SumaNetto * xl.Procent AS DECIMAL(18, 2)) AS 'Wartość VAT', CAST(ka.SumaNetto * (1 + xl.Procent) AS DECIMAL(18, 2)) AS 'Wartość brutto' FROM KSeF_Aggregated ka INNER JOIN XL_Stawki xl ON ka.KluczMapowania = xl.NazwaMapowana ORDER BY xl.Id ASC; END

6. Utworzono kontrolkę liczbową: Dodano kontrolkę typu Liczba stałoprzecinkowa o identyfikatorze WartoscNetto, w której dodano powiązanie do kontrolki Tabela VAT i skonfigurowano w niej zapytanie, które zlicza wartość z kolumny Netto z kontrolki tabelarycznej:
select sum (WartoscNetto) from @Tabela_VAT@

7. Utworzono kontrolkę liczbową: Dodano kontrolkę typu Liczba stałoprzecinkowa o identyfikatorze WartoscBrutto, w której dodano powiązanie do kontrolki Tabela VAT i skonfigurowano w niej zapytanie, które zlicza wartość z kolumny Brutto z kontrolki tabelarycznej:
SELECT SUM (WartoscBrutto) FROM @Tabela_VAT@

8. Punkt ACD: W punkcie konfiguracyjnym ACD (Import dokumentów zakupu z KSeF), na zakładce Kontrolki, dodano kontrolkę ID_KSeF i przypisano jej zapytanie, które pobiera ID dokumentu KSeF:
select @Id1@
9. Zdefiniowano również odpowiednie zapytania SQL do poszczególnych kontrolek, do których będą pobierane dane z KSeF.

Uzupełnione dane w punkcie ACD
Po pomyślnym pobraniu dokumentu z KSeF w punkcie ACD (Import dokumentów zakupu z KSeF), dane nagłówkowe oraz identyfikator dokumentu uzupełniły się automatycznie w kontrolkach na podstawie danych odczytanych z pliku XML.

Uzupełniona Kontrolka Dane Tabelaryczne
Po pomyślnym zainicjowaniu dokumentu z punktu ACD, kontrolka Dane Tabelaryczne (Tabela VAT) została automatycznie wypełniona zagregowanymi wierszami VAT odczytanymi z KSeF.
Dla każdej stawki VAT, system automatycznie obliczył i uzupełnił wartości w kolumnach Wartość Netto, Wartość VAT i Wartość Brutto na podstawie sumy netto dla danej stawki, pobranej z KSeF i zmapowanej stawki procentowej XL.
Kontrolka Wartość Netto wyświetla poprawną sumę końcową z kolumny Netto kontrolki Dane tabelaryczne. Kontrolka Wartość Brutto wyświetla poprawną sumę końcową z kolumny Brutto kontrolki Dane tabelaryczne.

Pozostałe dane uzupełnione na karcie obiegu
Po pomyślnym zainicjowaniu dokumentu z punktu ACD, pozostałe dane na karcie obiegu zostały prawidłowo uzupełnione.





