Baza wiedzy LINKSPOT › Wskazówki

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?

Wskazówki · Opublikowano 2025-11-04

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:

Zawartość przykładu

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):

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

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:

Kolumny w kontrolce Dane tabelaryczne

3.W kontrolce typu Dane tabelaryczne  na zakładce Listy zdefiniowano zapytanie pobierające:

 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

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ści i Ceny wylicza wartość Netto, po zmianie Stawki VAT wylicza wartość Brutto, a po zmianie wartości Brutto wylicza Cenę i wartość Netto.

Uwaga

Należy upewnić się, że identyfikatory liczbowe (ID) stawek VAT i jednostek 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

Kolumna Netto w trybie „Do odczytu”

select sum (Netto) from  @Elementy@

Kontrolka Liczbowa WartoscNetto

select sum (Brutto) from  @Elementy@

Kontrolka Liczbowa WartoscBrutto

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 Netto i Brutto 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 odczytanymi 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!

Powrót do początku artykułu

+ Mam problem z tym tematem Otwórz w portalu bazy wiedzy »