Zastosowanie
Dzięki zastosowaniu tej konfiguracji, proces wprowadzania danych w Comarch BPM zyskuje pełną zdolność automatycznego kalkulowania wszędzie tam, gdzie użyta jest kontrolka tabelaryczna. Głównym celem jest eliminacja ręcznych obliczeń, co bezpośrednio przekłada się na mniejszą liczbę błędów i znacznie szybszą pracę użytkownika. Konfiguracja ta umożliwia automatyczne przeliczanie wartości w kolumnach wynikowych (np. Netto, Brutto) w oparciu o zmianę danych wejściowych (np. Cena lub Ilość) w tym samym wierszu.
Zawartość przykładu
- Definicja Typu Obiegu (Workflow): Wzorcowa ścieżka obiegu dokumentu kosztowego z krokami akceptacji i konfiguracją kontrolki Dane tabelaryczne i wygenerowaniem dokumentu do Comarch ERPXL
Kliknij tutaj, aby pobrać przykład
Zasada działania
Mechanizm opiera się na ciągłym monitorowaniu zmian wartości w kontrolce tabelarycznej i automatycznym uruchamianiu zapytania SQL, które przelicza i aktualizuje wartości w kolumnach wynikowych.
- Kontrolka Dane Tabelaryczne jest skonfigurowana tak, aby obserwować samą siebie i reagować na każdą edycję wiersza.
- Zapytanie SQL, zaimplementowane na zakładce Inicjowanie wartości, jest wyzwalane przy każdej zmianie wartości w kolumnach wejściowych (Cena, Ilość lub Stawka VAT).
- Przeliczania W Przód: (Cena/Ilość): Logika IF w kodzie SQL jest wyzwalana przy zmianie kolumn wejściowych (np. Cena lub Ilość). W tym trybie Netto i Brutto są obliczane na podstawie wartości wejściowych i stawki VAT.
- Przeliczania W Tył: (Brutto): Logika ELSE IF jest wyzwalana przy zmianie kolumny Brutto. W tym trybie system przelicza i aktualizuje wartość w kolumnie Cena lub Netto, traktując Ilość jako stałą, zachowując tym samym wewnętrzną spójność wiersza.
- Zapytanie SQL pobiera niezbędne dane (np. wartość Stawki VAT z tabeli CDN.Nazwy). Następnie, za pomocą komendy UPDATE, bezpośrednio przelicza i aktualizuje wartości w kolumnach wynikowych (Netto oraz Brutto).
- Kolumna wynikowa Netto została ustawiona w trybie „Do odczytu”, aby użytkownik nie mógł ręcznie jej edytować.
- Osobna kontrolka typu Podsumowanie obserwuje kolumnę wynikową (Brutto) i zlicza jej sumę za pomocą prostego zapytania SQL (select sum (Brutto) from @Elementy@).
Konfiguracja przykładu
1. 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
- ”Netto” (identyfikator kolumny: Netto) – typ Liczba stałoprzecinkowa
- ”Stawka VAT” (identyfikator kolumny: StawkaVAT) – typ Lista
- ”Brutto” (identyfikator kolumny: Brutto) – typ Liczba stałoprzecinkowa

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

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

4. Dodano zapytanie SQL: W kontrolce typu Dane tabelaryczne, na zakładce Inicjowanie wartości w sekcji Wzór na wartość SQL ERP dodano zapytanie, które pobiera stawki VAT z bazy XL i na podstawie Ilości i Ceny wylicza wartość Netto, po uzupełnieniu Stawki VAT wylicza wartość Brutto, a po zmianie wartości Brutto wylicza Cenę i wartość Brutto.
/*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ść), 5 (Stawka VAT) */ IF @Elementy_Column@=2 OR @Elementy_Column@=3 OR @Elementy_Column@=5 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Ę: 6 (Brutto) */ IF @Elementy_Column@=6 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

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

6. Utworzono kontrolkę liczbową: Dodano kontrolkę typu Liczba stałoprzecinkowa o nazwie (identyfikatorze) Podsumowanie, 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@

Uzupełniona Kontrolka Dane Tabelaryczne
Po wprowadzeniu wartości w kontrolce typu Dane tabelaryczne w kolumnach Cena, Ilość lub Stawka VAT kontrolka typu Dane Tabelaryczne została automatycznie zaktualizowana. Dla każdej pozycji, system automatycznie przeliczył i uzupełnił wartości w kolumnach Netto oraz Brutto w tym samym wierszu. Możliwe jest przeliczanie wartości w przód (Cena/Ilość → Netto/Brutto) oraz w tył (Brutto → Cena/Netto). Wartości w kolumnach wynikowych (Netto, Brutto) są widoczne, ale kolumna Netto jest zablokowana do ręcznej edycji (tryb „Do odczytu„), co gwarantuje poprawność danych. Kontrolka Podsumowanie wyświetla poprawną sumę końcową z kolumny Brutto kontrolki typu Dane tabelaryczne.
