Czy wiesz, że można wypełnić kontrolkę typu Dane tabelaryczne pozycjami dokumentu zaczytanego przez Comarch OCR oraz przeliczyć wartości przy współpracy z Comarch ERP XL?

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. Głównym celem jest:

  • Eliminacja ręcznego wprowadzania pozycji dokumentów: Dane zaczytane przez Comarch OCR są automatycznie mapowane i wypełniają kontrolkę tabelaryczną na karcie obiegu.
  • Automatyczne kalkulowanie wartości: Kontrolka tabelaryczna uzyskuje pełną zdolność automatycznego przeliczania wszędzie tam, gdzie zmienione zostaną dane wejściowe (np. Cena, Ilość, Stawka VAT, Brutto).
  • 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 ERP XL.

 

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 OCR, Załącznika oraz wszystkich kluczowych danych nagłówkowych (NIP, Kontrahent, Dane kontrahenta, Data zakupu, Data wystawienia, Termin płatności, Forma płatności, Waluta) oraz inicjację dokumentu obiegowego.

 

Kliknij tutaj, aby pobrać przykład

 

Zasada działania

Mechanizm opiera się na dwóch trybach działania zintegrowanych w jednej kontrolce Dane Tabelaryczne („Elementy”):

1.Pobranie pozycji z Comarch OCR (Wyzwalacz: ID_OCR):

  • Po przetworzeniu dokumentu przez Comarch OCR, punkt ACD zapisuje ID dokumentu OCR do dedykowanej kontrolki typu Liczba całkowita o nazwie ID_OCR.
  • Kontrolka tabelaryczna „Elementy” obserwuje to pole, reagując na jego wypełnienie.
  • Zapytanie SQL (umieszczone na zakładce Inicjowanie Wartości) jest filtrowane za pomocą parametru @ID_OCR@ i pobiera wiersze z tabeli do.OC_Document_Items w bazie BPM.
  • Na podstawie zwróconych wierszy kontrolka DT jest automatycznie wypełniana pozycjami faktury.
  • W zapytaniu OCR używana jest logika CASE WHEN do konwersji wartości tekstowych (Stawki VAT, Jednostki miary) na identyfikatory liczbowe, wymagane przez BPM.

 

2.Automatyczne Przeliczanie (Wyzwalacz: Edycja wiersza DT):

  • Kontrolka DT jest skonfigurowana tak, aby obserwować samą siebie.
    • Zapytanie SQL jest wyzwalane przy każdej zmianie wartości w kolumnach wejściowych (Cena, Ilość lub Stawka VAT).
    • Przeliczanie W Przód: Logika IF w kodzie SQL jest wyzwalana przy zmianie Ceny, Ilości lub Stawki VAT, obliczając NettoBrutto.
    • Przeliczanie W Tył: Logika ELSE IF jest wyzwalana przy zmianie kolumny Brutto, przeliczając i aktualizując wartość Ceny lub Netto (przy zachowaniu stałej Ilości).
    • Zapytanie to wykorzystuje komendę UPDATE do bezpośredniego przeliczania i aktualizacji wartości w kolumnach wynikowych (Netto, Brutto)
  • Osobna kontrolka WartoscNetto obserwuje kolumnę wynikową (Netto) i zlicza jej sumę za pomocą prostego zapytania SQL (select sum (Netto) from @Elementy@).
  • Osobna kontrolka WartoscBrutto obserwuje kolumnę wynikową (Brutto) i zlicza jej sumę za pomocą prostego zapytania SQL (select sum (Brutto) from @Elementy@).

 

Konfiguracja przykładu

1.Utworzono kontrolkę ID_OCR: Na karcie obiegu dodano kontrolkę typu Liczba całkowita o nazwie (identyfikatorze) ID_OCR, do której będzie zapisywane ID OCR-owanego dokumentu.

 

Kontrolka Liczba całkowita ID_OCR

 

2.Utworzono kontrolkę Tabelaryczną: Dodano kontrolkę typu Dane tabelaryczne o nazwie (identyfikatorze) Elementy i skonfigurowano w niej następujące kolumny:

  • ”Nazwa” (identyfikator kolumny: Nazwa)– typ Tekst
  • ”Cena” (identyfikator kolumny: Cena) – typ Liczba stałoprzecinkowa
  • ”Ilość” (identyfikator kolumny: Ilosc)– typ Liczba stałoprzecinkowa
  • ”Jednostka miary” (identyfikator kolumny: JM) – typ Lista
  • ”Netto” (identyfikator kolumny: Netto)typ Liczba stałoprzecinkowa
  • ”Stawka VAT” (identyfikator kolumny: StawkaVAT) – typ Lista
  • ”Brutto” (identyfikator kolumny: Brutto)– typ Liczba stałoprzecinkowa

 

Kolumny w kontrolce Dane tabelaryczne

 

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))=''

 

Lista Stawka VAT w kontrolce Dane tabelaryczne

 

  • Jednostki miary:

 

SELECT Naz_GIDLp,Naz_Nazwa from cdn.Nazwy where Naz_GIDTyp=144;

 

Lista Jednostka miary w kontrolce Dane tabelaryczne

 

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

 

Powiązanie do kontrolki ID_OCR i samej siebie

 

5.Zintegrowane zapytanie SQL do obsługi obu trybów: W kontrolce typu 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.OC_Document_Items oraz do.OC_Documents na podstawie przekazanego parametru @ID_OCR@ (ID dokumentu OCR). W zapytaniu SQL konieczne jest użycie logiki CASE WHEN do konwersji wartości tekstowych jednostek miary (’szt’) i stawek VAT (np. '23.00′) na odpowiednie identyfikatory liczbowe akceptowane przez Comarch BPM. Dodano również zapytanie, które na podstawie IlościCeny wylicza wartość Netto, po zmianie Stawki VAT wylicza wartość Brutto, a po zmianie wartości Brutto wylicza Cenęwartość Netto.

 

Uwaga
Należy upewnić się, że identyfikatory liczbowe (ID) stawek VATjednostek miary użyte w zapytaniu SQL są zgodne z tymi, które aktualnie obowiązują w bazie Comarch ERP XL współpracującej z Comarch BPM.
Uwaga
W zapytaniu przed nazwą tabel do.OC_Document_Items oraz do.OC_Documents należy wskazać właściwą nazwę bazy Comarch BPM.

 

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

 

If @^SenderControlName@ = 'ID_OCR'

Begin

Select

ODI_Name,/*Nazwa*/

ODI_NetUnitPrice, /*Cena netto*/

ODI_Count, /*Ilość*/

CASE

WHEN ODI_Unit='szt.' THEN 1

WHEN ODI_Unit='l' THEN 2

WHEN ODI_Unit='kg' THEN 3

Else 0

END, /*Jednostka miary*/

ODI_NetValue, /* Wartość Netto*/

CASE

WHEN ODI_VatRate='23.00' THEN 1

WHEN ODI_VatRate='8.00' THEN 2

WHEN ODI_VatRate='0.00' THEN 3

WHEN ODI_VatRate='5.00' THEN 7

Else 0

END,

ODI_GrossValue, /*Wartość Brutto*/

[ODI_GrossValue]-[ODI_NetValue], -- kwota VAT

1

from [BPM_Przyklady].do.OC_Document_Items I /*Zmienić na właściwą nazwę bazy BPM*/

join [BPM_Przyklady].do.OC_Documents D on D.OCD_Id=I.ODI_DocumentId /*Zmienić na właściwą nazwę bazy BPM*/

where ODI_DocumentId=@ID_OCR@

END

 

Ta sekcja jest wywoływana przy każdej modyfikacji danych w kontrolce „Elementy” i wymaga użycia ELSE po sekcji OCR:

 

ELSE  
If  @^InitSenderControlName@ ='Elementy' 
Begin 
 /*Deklaracja Stawki VAT */ 
DECLARE @VAT AS DECIMAL(4, 2) 

/* Pobranie stawki VAT z tabeli CDN.Nazwy na podstawie kolumny StawkaVAT w bieżącym wierszu */ 
SELECT @VAT = CAST(SUBSTRING(Naz_Nazwa1, 0, CHARINDEX(' ', Naz_Nazwa1)) AS DECIMAL(4, 2)) / 100 
FROM CDN.Nazwy 
WHERE Naz_GIDTyp = 624  
  AND Naz_GIDLp = ( 
      SELECT [StawkaVAT] 
      FROM @Elementy@ 
      WHERE POS = @Elementy_Row@ 
  ) 

  /* JEŚLI ZMIENIONO KOLUMNY: 2 (Cena), 3 (Ilość), 6 (Stawka VAT) */ 
IF @Elementy_Column@=2 OR @Elementy_Column@=3 OR @Elementy_Column@=6 
BEGIN 
    /* PRZELICZANIE W PRZÓD (Cena/Ilość/Stawka VAT -> Netto/Brutto) */ 
     
    /*Wyliczenie i aktualizacja netto i brutto */ 
    UPDATE @Elementy@ 
    SET 
        [Netto] = (Ilosc * Cena), 
        [Brutto] = (Ilosc * Cena) * (@VAT + 1) 
    WHERE POS = @Elementy_Row@ 

    /* !!! OBOWIĄZKOWE: Odświeżenie wiersza !!! */ 
    SELECT * FROM @Elementy@ 
END 

 /* JEŚLI ZMIENIONO KOLUMNĘ: 7 (Brutto) */ 
IF @Elementy_Column@=7 
BEGIN 
    /* PRZELICZANIE W TYŁ (Brutto -> Cena/Netto) */ 
     
    /* Aktualizacja ceny i netto (Ilość stała) */ 
    UPDATE @Elementy@ 
    SET 
        [Cena] = [Brutto] / (@VAT + 1),        /*Obliczenie Ceny Netto z Brutto*/ 
        [Netto] = [Ilosc] * ([Brutto] / (@VAT + 1))  /*Obliczenie Wartości Netto*/ 
    WHERE POS = @Elementy_Row@ 
     
    /* !!! OBOWIĄZKOWE: Odświeżenie wiersza !!! */ 
    SELECT * FROM @Elementy@ 
END 
END

 

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

 

  • Tryb pracy: W kontrolce typu Dane tabelaryczne, na zakładce Ograniczenie edycji kolumnę „Netto” ustawiono w trybie „Do odczytu”.

 

Kolumna Netto w trybie „Do odczytu”

 

  • Utworzono kontrolkę liczbową: Dodano kontrolkę typu Liczba stałoprzecinkowa o nazwie (identyfikatorze) WartoscNetto, w której dodano powiązanie do kontrolki Elementy i skonfigurowano w niej zapytanie, które zlicza wartość z kolumny Netto z kontrolki tabelarycznej:

 

select sum (Netto) from  @Elementy@

 

Kontrolka Liczbowa WartoscNetto

 

  • Utworzono kontrolkę liczbową: Dodano kontrolkę typu Liczba stałoprzecinkowa o nazwie (identyfikatorze) WartoscBrutto, w której dodano powiązanie do kontrolki Elementy i skonfigurowano w niej zapytanie, które zlicza wartość z kolumny Brutto z kontrolki tabelarycznej:

 

select sum (Brutto) from  @Elementy@

 

Kontrolka Liczbowa WartoscBrutto

 

  • Punkt ACD: W punkcie konfiguracyjnym ACD (Współpraca z Comarch OCR), wykorzystywanym do inicjowania obiegu, na zakładce Kontrolki dodano kontrolkę ID_OCR i przypisano jej odpowiednie zapytanie:

 

select @Id1@

 

Kontrolka ID_OCR w punkcie ACD

 

Uzupełniona Kontrolka Dane Tabelaryczne

Po pomyślnym zainicjowaniu dokumentu z punktu ACD, kontrolka typu Dane Tabelaryczne została automatycznie wypełniona pozycjami odczytanymi przez OCR. Dla każdej pozycji, system automatycznie przeliczył i uzupełnił wartości w kolumnach NettoBrutto w tym samym wierszu. W przypadku nieprawidłowości w kwotach możliwe jest przeliczanie wartości w przód (Cena/Ilość -> Netto/Brutto) oraz w tył (Brutto -> Cena/Netto). Kolumna Netto jest zablokowana do ręcznej edycji (tryb „Do odczytu”), co gwarantuje poprawność danych. Kontrolka WartoscNetto wyświetla poprawną sumę końcową z kolumny Netto kontrolki Dane tabelaryczne. Kontrolka WartoscBrutto wyświetla poprawną sumę końcową z kolumny Brutto kontrolki typu Dane tabelaryczne.

 

Kontrolka Dane tabelaryczne uzupełniona pozycjami odczytanym przez Comarch OCR oraz podsumowanie kwot

 

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?