Pobieranie danych z KSeF do kontrolki tabelarycznej Elementy na Fakturze kosztowej przy współpracy z Comarch ERP Optima

image_pdfimage_print

Zastosowanie

Dzięki zastosowaniu tej zintegrowanej konfiguracji, proces obiegu faktur kosztowych w Comarch BPM zyskuje pełną automatyzację i spójność danych. Dane są pobierane bezpośrednio z systemu KSeF (poprzez BPM), a kontrolka tabelaryczna jest automatycznie wypełniana.

Głównym celem jest:

  • Eliminacja ręcznego wprowadzania pozycji dokumentów: Dane z faktury KSeF (pobrane do tabeli do.KS_DocumentItems) są automatycznie mapowane i wypełniają kontrolkę tabelaryczną na karcie obiegu.
  • Automatyczne kalkulowanie wartości: Kontrolka tabelaryczna uzyskuje zdolność automatycznego przeliczania wszędzie tam, gdzie zmienione zostaną dane wejściowe (np. Netto, Stawka VAT, Brutto) przez użytkownika.
  • Minimalizacja błędów i skrócenie czasu obsługi faktury: Proces akceptacji bazuje na poprawnych i spójnych danych, które są automatycznie kalkulowane i aktualizowane, zanim dokument zostanie zaksięgowany w Comarch ERP Optima.

Przykład jest oparty na definicji typu obiegu dostępnej na stronach walidowanych w sekcji ERP 5.0->Comarch BPM (dawniej DMS)->Przykłady->ERP Optima. Razem z przykładem udostępnione są pliki exe, które umożliwiają wygenerowanie dokumentu do Comarch ERP Optima. Aby skorzystać z tej funkcjonalności należy pobrać przykład adekwatny do wersji Comarch ERP Optima

 

Przykłady generatorów do Comarch ERP Optima

Zawartość przykładu

  • Definicja Typu Obiegu (Workflow): Wzorcowa ścieżka obiegu Faktury kosztowej z krokami akceptacji, konfiguracją kontrolki Dane tabelaryczne i wygenerowaniem dokumentu do Comarch ERP Optima
  • 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 z KSeF) oraz utworzenie dokumentu obiegowego.

W przypadku kontrolki Kontrahent w zapytaniu przed nazwą tabeli CDN.Kontrahenci należy wskazać właściwą nazwę bazy Comarch ERP Optima.

Kliknij tutaj, aby pobrać przykład

Zasada działania

Mechanizm opiera się na dwóch trybach pracy zintegrowanych w kontrolce Dane Tabelaryczne (Elementy):

  • Tryb Inicjowania (Pobieranie z KSeF): Wyzwalany, gdy kontrolka ID_KSeF zostanie uzupełniona. System pobiera dane z tabeli do.KS_DocumentItems z bazy BPM i łączy je ze stawkami VAT z bazy konfiguracyjnej Comarch ERP Optima.
  • 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 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.
  • Tryb Edycji (Interaktywny): Kontrolka Dane Tabelaryczne (Elementy) obserwuje sama siebie (@^SenderControlName@ = ’Elementy’), co aktywuje logikę automatycznego przeliczania wartości w trybie edycji. Pozwala to na ręczne przypisanie stawki VAT oraz przeliczenie pozostałych wartości.

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.

Kontrolka Liczba całkowita ID_KSeF
2. Utworzono kontrolkę Tabelaryczną: Dodano kontrolkę typu Dane tabelaryczne o nazwie (identyfikatorze) Elementy i skonfigurowano w niej następujące kolumny:
  • ”Kategoria” (identyfikator kolumny: Kategoria) – typ Lista
  • ”Opis” (identyfikator kolumny: Opis) – typ Tekst
  • ”Kategoria2” (identyfikator kolumny: Kategoria2) – typ Lista
  • ”Opis2” (identyfikator kolumny: Opis2) – typ Tekst
  • ”Stawka” (identyfikator kolumny: Stawka) – typ Lista
  • ”Netto” (identyfikator kolumny: Netto) – typ Liczba stałoprzecinkowa
  • ”VAT” (identyfikator kolumny: VAT) – typ Liczba stałoprzecinkowa
  • ”Brutto” (identyfikator kolumny: Brutto) – typ Liczba stałoprzecinkowa
  • ”Rodzaj” (identyfikator kolumny: Rodzaj) – typ Lista
  • ”Odliczenia” (identyfikator kolumny: Odliczenia) – typ Lista
Kolumny w kontrolce Dane tabelaryczne
3. W kontrolce typu Dane tabelaryczne  na zakładce Listy zdefiniowano zapytania pobierające dane:
  • Kategoria:
select Kat_KatID, Kat_KodSzczegol--, (select top 1 Kat_KatID from cdn.Kategorie order by 1)
from cdn.Kategorie where Kat_Typ=1
  • Stawka VAT:
SELECT Kon_KonId,
CASE
WHEN Kon_Opis='Stawka zwolniona' THEN 'ZW'
WHEN Kon_Opis='Nie podlega Vat' THEN 'NP'
WHEN Kon_Opis<>'Stawka zwolniona' and Kon_Opis<>'Nie podlega Vat' THEN CONCAT(LEFT(Kon_wartosc,6),' %')
END
FROM CDN_KNF_Konfiguracja.cdn.Konfig /* <<<<- Tu podmiana nazwy bazy>>>> */
where Kon_Numer=301 and Kon_wartosc like '%PL'
  • Rodzaj:
SELECT 1, 'Towary'
UNION
SELECT 2,'Inne'
UNION
SELECT 3,'Środki trwałe'
UNION
SELECT 4,'Usługi'
UNION
SELECT 5,'Środki transportu'
UNION
SELECT 6,'Nieruchomości'
UNION
SELECT 7,'Paliwo'
  • Odliczenia:
select 1, 'Nie'
union
select 2, 'Tak'
union
select 3, 'Warunkowo'
4. Dodano obserwację kontrolki: W kontrolce Dane tabelaryczne, na zakładce Inicjowanie wartości, dodano powiązanie do kontrolki ID_KSeF oraz do samej siebie.

Dane tabelaryczna, zakładka Inicjowanie wartości
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 tabeli do.KS_DocumentItems na podstawie przekazanego parametru @ID_KSeF@ (ID dokumentu KSeF).

Uwaga
W zapytaniu przed nazwą tabeli do.KS_DocumentItems należy wskazać właściwą nazwę bazy Comarch BPM

  • Ta sekcja jest wywoływana tylko raz, podczas inicjowania obiegu:

Pierwsza sekcja zapytania SQL, rozpoczynająca się od bloku IF @^SenderControlName@ = 'ID_KSeF’ pobiera dane szczegółowe pozycji faktury z KSeF, standaryzuje identyfikatory stawek VAT i mapuje je na wartości procentowe z konfiguracji Comarch ERP Optima. Zapytanie to wypełnia kolumny z kwotami Netto/VAT/Brutto i ustala poprawną Stawkę procentową, jednocześnie inicjując kolumny  (Kategoria, Opis) wartością NULL, ponieważ te dane muszą być uzupełnione ręcznie.

IF @^SenderControlName@ = 'ID_KSeF'  /*Identyfikator kontrolki do której pobierane jest ID dokumentu KSeF */

BEGIN

/* Tryb 1: Inicjowanie pozycji z dokumentu KSeF */

WITH ProcessedDocumentItems AS (
/* CTE 1: Ujednolicenie stawek VAT z KSeF i ujęcie kluczowych kolumn */
SELECT
di.KSI_DocumentId,
KSI_ElementNazwa,
KSI_ElementWartoscNetto AS KSI_ElementWartoscNetto,
KSI_ElementStawkaVAT,
/* Ustandaryzowanie stawki KSeF do formatu liczbowego/ZW/NP ('23', '8', 'ZW', itp.) */
CASE
WHEN di.KSI_ElementStawkaVAT LIKE 'Stawka%' THEN LTRIM(RTRIM(SUBSTRING(di.KSI_ElementStawkaVAT, 7, LEN(di.KSI_ElementStawkaVAT) - 6)))
WHEN di.KSI_ElementStawkaVAT IN ('zw', 'np', 'oo', 'np') THEN UPPER(di.KSI_ElementStawkaVAT)
ELSE di.KSI_ElementStawkaVAT
END AS StandardizedKSeFVAT_Text
FROM
[NAZWA_BAZY_BPM].do.KS_DocumentItems AS di  /*Należy wskazać nazwę bazy BPM*/
WHERE KSI_DocumentId =  @ID_KSeF@  /*Identyfikator kontrolki liczba całkowita, do której pobierane jest ID dokumentu KSeF*/
),
OptimaVATRates AS (
/* CTE 2: Przygotowanie stawek VAT z Konfiguracji Optima */
SELECT
Kon_KonId,
Kon_Wartosc,
/* Ekstrakcja wartości liczbowej stawki (Poprawne SUBSTRING od indeksu 1) */
ISNULL(CAST(REPLACE(RTRIM(SUBSTRING(Kon_Wartosc, 1, CHARINDEX(' ', Kon_Wartosc, 2))), ',', '.') AS REAL), 1) AS StawkaVatValue,
/* NORMALIZACJA: Konwersja stawki Optima ('23.00') na format KSeF ('23') dla poprawnego JOIN */
CASE
WHEN Kon_Wartosc LIKE '%ZW%' THEN 'ZW'
WHEN Kon_Wartosc LIKE '%NP%' THEN 'NP'
WHEN Kon_Wartosc LIKE '%OO%' THEN 'OO'
WHEN Kon_Wartosc LIKE '%NP%' THEN 'NP'
ELSE CAST(ISNULL(CAST(REPLACE(RTRIM(SUBSTRING(Kon_Wartosc, 1, CHARINDEX(' ', Kon_Wartosc, 2))), ',', '.') AS REAL), 0) AS VARCHAR(10))
END AS StandardizedOptimaVAT_Text
FROM
[CDN_KNF_Konfiguracja].cdn.Konfig
WHERE Kon_Numer = 301 AND Kon_Wartosc LIKE '%PL'
)

/* Końcowy SELECT: Zwraca żądany zestaw kolumn */
SELECT

-- Wymagane jawne CAST na INT dla NULL (usuwa błąd konwersji)
CAST(NULL AS INT) AS 'Kategoria',
NULL AS 'Opis', -- pi.KSI_ElementNazwa AS 'Opis',
CAST(NULL AS INT) AS 'Kategoria 2',
NULL AS 'Opis 2',
ovr.Kon_KonId AS 'Stawka', -- INT
pi.KSI_ElementWartoscNetto AS 'Netto',
pi.KSI_ElementWartoscNetto * (ovr.StawkaVatValue / 100.0) AS 'VAT',
pi.KSI_ElementWartoscNetto * (1 + ovr.StawkaVatValue / 100.0) AS 'Brutto',
1,--  CAST(NULL AS INT) AS 'Rodzaj',
1-- CAST(NULL AS INT) AS 'Odliczenia'
FROM
ProcessedDocumentItems AS pi
LEFT JOIN
OptimaVATRates AS ovr
ON
pi.StandardizedKSeFVAT_Text = ovr.StandardizedOptimaVAT_Text;
END;
  • Ta sekcja jest wywoływana przy każdej modyfikacji danych w kontrolce „Elementy” i wymaga użycia ELSE po sekcji KSeF:

Druga sekcja zapytania SQL, rozpoczynająca się od bloku ELSE IF @^SenderControlName@ = 'Elementy’, jest odpowiedzialna za całą logikę przeliczania, walidacji i uzupełniania danych w czasie rzeczywistym po ręcznej edycji wiersza w kontrolce Dane Tabelaryczne. Ponieważ kontrolka Elementy obserwuje sama siebie, każda zmiana w kolumnie wyzwala ten kod.

/*Przeliczanie Elementów*/
ELSE
IF @^SenderControlName@ = 'Elementy'
BEGIN

declare @stawkaVat real

IF @Elementy_Column@=1 /* Inicjowanie pozycji wiersza po wskazaniu kategorii */
BEGIN
UPDATE @Elementy@ set [Opis]= (SELECT Kat_opis from cdn.Kategorie where Kat_KatID=(SELECT [Kategoria] from @Elementy@ where POS=@Elementy_Row@)) WHERE POS=@Elementy_Row@
UPDATE @Elementy@ set [Stawka] = (
select Kon_KonId from
(
select Kon_KonId, flaga, stawka from
(
select Kon_KonId, cast (SUBSTRING (Kon_Wartosc, 7,  1) as int) flaga, cast (replace ( rtrim( SUBSTRING (Kon_Wartosc, 0,  charindex (' ', Kon_Wartosc , 2))),',','.') as real) stawka
from CDN_KNF_Konfiguracja.cdn.Konfig     /* <<<<---------------   Tu podmiana nazwy bazy     >>>> */
where kon_numer = 301 and Kon_wartosc like '%PL'
) insel1
join cdn.Kategorie on kat_stawka = stawka and kat_flaga = flaga and kat_katid = (SELECT [Kategoria] from @Elementy@ where POS=@Elementy_Row@)
) insel2
)  where POS=@Elementy_Row@

UPDATE @Elementy@ set [Rodzaj]=(SELECT Kat_RodzajZakupu from cdn.Kategorie where Kat_KatID=(SELECT [Kategoria] from @Elementy@ where POS=@Elementy_Row@)) where POS=@Elementy_Row@
UPDATE @Elementy@ set [Odliczenia]=(SELECT Kat_Odliczenia+1 from cdn.Kategorie where Kat_KatID=(SELECT [Kategoria] from @Elementy@ where POS=@Elementy_Row@)) where POS=@Elementy_Row@

END

ELSE IF @Elementy_Column@=3
BEGIN
UPDATE @Elementy@ set [Opis2]= (SELECT Kat_opis from cdn.Kategorie where Kat_KatID=(SELECT [Kategoria2] from @Elementy@ where POS=@Elementy_Row@)) WHERE POS=@Elementy_Row@

END

IF @Elementy_Column@=5 or @Elementy_Column@=6 /* Przeliczenie Brutto i wartości VAT po zmianie stawki VAT lub Netto */
BEGIN
declare @Netto decimal (22,4)
SELECT @Netto = [Netto] from @Elementy@ where POS=@Elementy_Row@

select  @stawkaVat = isnull (cast (replace ( rtrim( SUBSTRING (Kon_Wartosc, 0,  charindex (' ', Kon_Wartosc , 2))),',','.') as real) , 1)
from CDN_KNF_Konfiguracja.cdn.Konfig     /* <<<<---------------   Tu podmiana nazwy bazy     >>>> */
where kon_numer = 301 and Kon_KonId = (select  [Stawka] from @Elementy@ where POS=@Elementy_Row@) and Kon_wartosc like '%PL'

UPDATE @Elementy@ set [Brutto]= @Netto + (@Netto * (@stawkaVat / 100)) where POS=@Elementy_Row@
UPDATE @Elementy@ set [VAT]= @Netto * (@stawkaVat / 100) where POS=@Elementy_Row@
END

IF @Elementy_Column@=5 or @Elementy_Column@=8 /* Przeliczenie Netto i wartości VAT po zmianie stawki VAT lub Brutto */
BEGIN
declare @Brutto decimal (22,4)
SELECT @Brutto = [Brutto] from @Elementy@ where POS=@Elementy_Row@

select  @stawkaVat = isnull (cast (replace ( rtrim( SUBSTRING (Kon_Wartosc, 0,  charindex (' ', Kon_Wartosc , 2))),',','.') as real) , 1)
from CDN_KNF_Konfiguracja.cdn.Konfig     /* <<<<---------------   Tu podmiana nazwy bazy     >>>> */
where kon_numer = 301 and Kon_KonId = (select  [Stawka] from @Elementy@ where POS=@Elementy_Row@) and Kon_wartosc like '%PL'

UPDATE @Elementy@ set [Netto]= @Brutto / ((@stawkaVat/100) + 1)  where POS=@Elementy_Row@
UPDATE @Elementy@ set [VAT]= @Brutto / ((@stawkaVat/100) + 1) * (@stawkaVat / 100) where POS=@Elementy_Row@
END

SELECT * from @Elementy@

END
Zapytanie SQL w kontrolce Dane tabelaryczne na zakładce Inicjowanie wartości

Konfiguracja punktu ACD

1. W punkcie konfiguracyjnym ACD (Import dokumentów zakupu KSeF), na zakładce Lista dodano zapytanie, które pobiera pobiera listę faktur z tabel do.KS_Documents, do.KS_WorkAPProcess, do.KS_DocumentHeadersdo.KS_DocumentContractors, filtrując je m.in. po statusie przetworzenia (KSW_Status), operatorze, numerze faktury (KSD_NumerFaktury), NIP, dacie wystawienia (KSH_DataWytworzeniaFa), typie faktury i kwotach.

BEGIN TRY
select d.KSD_ID, NULL, KSD_NumerFaktury, KSD_Tag1, KSD_Tag2, KSD_Tag3
from do.KS_Documents d
left join do.KS_WorkAPProcess W on d.KSD_ID = KSW_DocumentID  /*tabela przeprocesowanych dokumentów*/
left join do.KS_DocumentHeaders dh on d.KSD_ID = dh.KSH_DocumentId
left join do.KS_DocumentContractors dc on d.KSD_ID = dc.KSC_DocumentID
where KSW_APDId=@PointId@  /*id punktu ACD */
and KSW_OperatorID=@IdOperatorBPM@ /*dodatkowy warunek, aby na liście operator widział dokumenty przeprocesowane przez siebie*/
and ((@InvoiceStatus@ = 0 and KSW_Status <> 5 and KSW_Archival = 0) OR (@InvoiceStatus@ = 1 and KSW_Archival = 1) OR
(@InvoiceStatus@ = 2 and KSW_Status = 5) OR @InvoiceStatus@ = 3)
and (nullif(@SearchText@,'') is null OR (@SearchText@ <> '' and KSD_NumerFaktury LIKE '%' + @SearchText@ + '%'))
and (@Nip@ is null OR dc.KSC_PodatnikNIP = @Nip@)
and (@DateFrom@ is null or dh.KSH_DataWytworzeniaFa >= @DateFrom@)
and (@DateTo@ is null or dh.KSH_DataWytworzeniaFa <= @DateTo@)
and (@GrossAmountFrom@ is null or KSD_SumaBrutto >= @GrossAmountFrom@)
and (@GrossAmountTo@ is null or KSD_SumaBrutto <= @GrossAmountTo@)
and (@InvoiceType@ is null or KSD_RodzajFaktury = @InvoiceType@)
END TRY
BEGIN CATCH
DECLARE @ErrorMessage varchar(max) = 'W zapytaniu wystąpił błąd : ' + ERROR_MESSAGE();
THROW 50001,  @ErrorMessage ,1;
END CATCH
2. W zakładce Kontrolki dodano kontrolkę ID_KSeF, której przypisano zapytanie pobierające identyfikator dokumentu KSEF. Jednocześnie zdefiniowano odpowiednie zapytania SQL dla pozostałych kontrolek, które służą do automatycznego pobierania i wyświetlania danych bezpośrednio z systemu KSeF:
  • Załączniki
select KSD_SourceContent,CASEWHEN KSD_NumerFaktury LIKE '%/%' 
THEN CONCAT(REPLACE(KSD_NumerFaktury, '/', '_'), '.pdf')ELSE CONCAT(KSD_NumerFaktury, '.pdf')END AS modified_columnfrom do.KS_Documentswhere KSD_ID=@Id1@
  • Załącznik XML
select KSD_Xml,CASEWHEN KSD_NumerFaktury LIKE '%/%' 
THEN CONCAT(REPLACE(KSD_NumerFaktury, '/', '_'), '.xml')ELSE CONCAT(KSD_NumerFaktury, '.xml')END AS modified_columnfrom do.KS_Documentswhere KSD_ID=@Id1@
  • Dokument
select KSD_NumerFaktury from do.KS_Documents where KSD_ID=@Id1@
  • Kontrahent
select top 1 Knt_KntId, Knt_Kod
from [do].[KS_DocumentContractors]
join [CDN_Optima].[cdn].[Kontrahenci] on Knt_Nip = KSC_PodatnikNIP
where KSC_ID=@Id1@
  • Data zakupu
SELECT CASE
WHEN KSD_DataDostawy IS NULL THEN KSD_DataWystawienia
ELSE KSD_DataDostawy
END
FROM do.KS_Documents WHERE KSD_ID=@id1@
  • Data wpływu
select KSH_DataWytworzeniaFa from do.KS_DocumentHeaders where KSH_DocumentID=@Id1@
  • Data wystawienia
select KSD_DataWystawienia from do.KS_Documents where KSD_ID=@Id1@
  • Forma płatności
SELECT
(
CASE
WHEN KSD_FormaPlatnosci = 1 THEN 'Gotówka'
WHEN KSD_FormaPlatnosci = 2 THEN 'Karta'
WHEN KSD_FormaPlatnosci = 3 THEN 'Bon'
WHEN KSD_FormaPlatnosci = 4 THEN 'Czek'
WHEN KSD_FormaPlatnosci = 5 THEN 'Kredyt'
WHEN KSD_FormaPlatnosci = 6 THEN 'Przelew'
WHEN KSD_FormaPlatnosci = 7 THEN 'Płatność Mobilna'
ELSE 'Inna'
END
) AS FormaPlatnosci
FROM
do.KS_DocumentsWHERE KSD_Id=@ID1@
  • Termin płatności
 select KSP_TerminPlatnosci from do.KS_PaymentDates where KSP_DocumentID=@Id1@
  • Numer KSeF
select KSH_NumerReferencyjnyKSeF 
from do.KS_DocumentHeaderswhere KSH_DocumentID=@Id1@
  • Waluta
select KSD_KodWaluty from do.KS_Documents where KSD_ID=@Id1@
  • IDKSeF
select @Id1@
  • Data przyjęcia KSeF
select KSH_DataWytworzeniaFa from do.KS_DocumentHeaders where KSH_DocumentID=@Id1@
  • Numer rachunku bankowego
select KSB_NrRachunku from do.KS_BankAccounts
join do.KS_Documents on ksb_documentId= KSD_Id where ksd_id=@Id1@
Kontrolka ID_KSeF w punkcie ACD

Uzupełnione dane w punkcie ACD

Po pomyślnym pobraniu dokumentu z KSeFpunkcie 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.

Dane pobrane z KSeF w punkcie ACD

Uzupełniona Kontrolka Dane Tabelaryczne

  • Na podstawie przetworzonych danych z KSeF, w systemie Comarch BPM są generowane dokumenty w ramach wskazanej definicji typu obiegu.
  • Po pomyślnym zainicjowaniu nagłówka dokumentu, system dokonuje pełnego uzupełnienia skonfigurowanych kontrolek na karcie obiegu.
  • Kontrolka typu Dane Tabelaryczne zostaje automatycznie wypełniona pozycjami odczytanymi z dokumentu. Wypełnienie to odbywa się z wykorzystaniem dedykowanego zapytania SQL, które dokonuje normalizacji stawek VAT oraz przeliczeń kwot (Netto/Brutto).
  • Kluczowe jest to, że kontrolka techniczna ID_KSeF (która przechowuje wewnętrzny identyfikator pobranego dokumentu KSeF) jest obserwowana przez kontrolkę Dane Tabelaryczne i na podstawie jej wartości (@ID_KSeF@ w zapytaniu SQL) kontrolka Danych Tabelarycznych jest uzupełniana danymi.
Uwaga

Kolumny Kategoria oraz Kategoria 2 w kontrolce dane tabelaryczne są inicjowane wartością null. Wynika to z faktu, że nazewnictwo pozycji na fakturach dostawców w systemie KSeF często nie jest tożsame z nazewnictwem w Comarch ERP Optima. Wymaga to od użytkownika świadomego, ręcznego przypisania odpowiedniej kategorii oraz kategorii pomocniczej (jeżeli jest taka potrzeba) przed zaksięgowaniem dokumentu, aby zapewnić poprawność analityczną zapisów.

Kontrolka Dane tabelaryczne uzupełniona pozycjami odczytanymi z KSeF

 

Pozostałe dane uzupełnione na karcie obiegu

Po pomyślnym zainicjowaniu dokumentu z poziomu ACD, pozostałe dane na karcie obiegu zostały prawidłowo uzupełnione. System automatycznie przypisał nie tylko dane podstawowe, takie jak numer dokumentu, czy dane kontrahenta, ale również precyzyjnie rozbił pozycje faktury na poszczególne stawki VAT (23% oraz 8%). Prawidłowo przeniesiono także numer rachunku bankowego oraz unikalny numer KSeF, co gwarantuje pełną spójność danych między obiegiem dokumentów, a systemem Comarch ERP Optima.

Uzupełnione dane na karcie obiegu pobrane z KSeF
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!

 

Czy ten artykuł był pomocny?