0. Wprowadzenie
1. Autoresponder - Ban
2. Email: faktura z archiwum
3. Import zamówień z Baselinkera
4. Oblicz ceny sprzedaży dla cennika
5. Zamykanie zleceń
6. Wartość zamówień sprzedaży
7. Wezwanie_checklista
8. Faktoring dla BPH
9. Informacja dla przedstawiciela
10. Informacja dla kierownika 10
11. Zapisywanie pliku .csv z asortymentem i cenami
12. Tematy powiązane
(AsystentAI)
0. Wprowadzenie
W tym artykule są opisy roli i funkcji alertów, których definicje XML są w katalogu ftp.
Opisy utworzono przy pomocy AI. Ułatwiają intepretację definicji zapisanych w plikach XML.
Patrz definicje alertów w ftp:
ftp: Alerty
Patrz też:
Alerty. Tworzenie XML. Przykłady
1. Autoresponder - Ban
Ten alert w systemie Trawers ERP pełni funkcję automatycznego odpowiadania
na niechciane wiadomości e-mail, czyli działa jak autoresponder dla zablokowanych
(banowanych) nadawców.
Nazwa alertu: Autoresponder - BanKiedy działa?
* Codziennie o godzinie 6:00 rano.
* Nie powtarza się w ciągu dnia (`POWTORZ=N`).
Co analizuje?
* Odbiera e-maile z folderu o ID = '06' - jest to folder odbiorczy.
* Tylko z ostatniego dnia (`DATA z ostatnich 1 dni`).
* E-mail musi nie być jeszcze przypisany do żadnego operatora (`SYMOP pusty`).
* Musi pochodzić z systemu pocztowego oznaczonego jako: NA lub ZO (czyli skrzynki w systemie Trawers).
* Musi być powiązany z konkretnym odbiorcą lub dostawcą (`ODBDOST` wypełnione).
Co sprawdza dalej?
* Sprawdza, czy nadawca maila jest oznaczony jako 'banowany' - czyli taki,
z którym nie chcemy mieć kontaktu.
* Jeśli jest banowany (`Ban = Tak`), to:
Co robi alert?
1. Wysyła automatyczną odpowiedź e-mail do nadawcy:
```
Prosimy nie wysyłać korespondencji na nasz adres <adres nadawcy>
```
(dodatkowo informacja, że wiadomość została wygenerowana automatycznie przez alert systemu Trawers)
2. Oznacza e-mail jako przetworzony, aby nie odpowiedzieć ponownie na kolejne wiadomości
od tego samego nadawcy w tym samym cyklu (dzięki polom `TR_EMAIL_OZNACZ` i `@UID`).
Cel działania:
Chroni system i użytkowników przed spamem, błędną korespondencją lub kontaktami
z niepożądanymi nadawcami. Umożliwia też zarządzanie reputacją i czasem operatorów -
nie muszą ręcznie reagować na tego typu wiadomości.
2. Email: faktura z archiwum
Ten alert w Trawers ERP został nazwany Email: faktura z archiwum i pełni rolę
automatycznej obsługi żądań przesyłania faktur w formie PDF.
Nazwa alertu: Email: faktura z archiwumJak działa w czasie?
* Uruchamia się co 10 minut (`COMIN=10`).
* Działa cały dzień (`ODGODZ 00:00 - DOGODZ 00:00`).
* Powtarza się cyklicznie (`POWTORZ=T`).
Jakie e-maile analizuje?
Alert szuka nowych wiadomości spełniających warunki:
1. Data wiadomości = dzisiejsza (`DATA = TODAY`).
2. Pochodzi ze skrzynki o ID XE (`IDSKRZYN='XE'`).
3. Jest to e-mail odebrany (`RODZAJ='O'`).
4. Jest w folderze 01 (`IDFOLDER='01'`).
5. System pocztowy to NA (`NSYST='NA'`).
6. Nadawca (`ODBDOST`) musi być rozpoznany w systemie.
7. Temat wiadomości zawiera specjalny wzorzec:
`[TR:SI?... ]` (jest to żądanie w formacie Trawersa,
zawierające parametry, np. numer faktury).
Co robi z treścią maila?
* W treści tematu szuka parametru nr faktury (np. `F12345/05/20`).
To jest numer dokumentu, który ma zostać wyciągnięty z archiwum.
* Jeśli nie znajdzie numeru --> odpowiada komunikatem o braku parametru.
Kto może dostać fakturę?
* Sprawdza, czy odbiorca (`ODBDOST`) jest upoważniony:
* kod `100000`, albo
* kod `005304`.
* Jeśli tak, i jeśli podany numer faktury istnieje --> system:
1. generuje wydruk faktury (raport `NA_DFA50`),
2. dodaje go jako załącznik PDF do odpowiedzi.
Co wysyła w odpowiedzi?
* Automatyczny e-mail z treścią:
```
E-mail wygenerowany automatycznie.
Odpowiedź na e-mail z dnia @DATA, temat: @TEMAT
```
* Jeśli faktura została znaleziona -> dołącza PDF.
* Jeśli nie -> informuje:
```
Uwaga: Brak załącznika z plikiem pdf oznacza brak faktury o podanym numerze.
```
Cel działania:
Ten alert to samobsługowy mechanizm - pozwala klientom (lub uprawnionym pracownikom)
samodzielnie uzyskać kopię faktury z archiwum. Wystarczy wysłać e-mail o określonym
formacie tematu, a system automatycznie odeśle fakturę jako załącznik.
Innymi słowy:
To jest automatyczny serwer faktur na żądanie, sterowany przez temat e-maila.
NOTE: Po wdrożeniu KSeF, nie trzeba przechowywać faktur w e-archiwum. Opisany mechanizm
można zastosować do pobierania innych dokumentów z e-archiwum. Wszystkie dokumenty
transakcyjne można pobierać via RefNo.
***********************************************************************************************************************
Przykład użyciaKlient (lub uprawniona osoba) wysyła e-mail:
* Adres: na firmową skrzynkę (np. `faktury@firma.pl`, która jest podpięta do skrzynki `XE` w Trawersie).
* Temat:
```
[TR:SI?nr=F12345/05/20]
```
> tu `F12345/05/20` to numer faktury, o którą prosimy
* Treść wiadomości: może być pusta, bo alert patrzy tylko na temat.
Alert działa co 10 minut i przetwarza nową pocztę.
* Widzi e-mail z powyższym tematem.
* Wydobywa numer faktury z parametru `nr=...`.
* Sprawdza, czy nadawca (`ODBDOST`) jest uprawniony (np. `100000` lub `005304`).
Jeśli wszystko się zgadza:
System automatycznie generuje fakturę w PDF z archiwum i odsyła odpowiedź.
Klient dostaje odpowiedź e-mail:
* Temat odpowiedzi:
```
Odp. automatyczna [TR:SI?nr=F12345/05/20]
```
* Treść:
```
E-mail wygenerowany automatycznie.
Odpowiedź na e-mail z dnia 09.09.2025, temat: [TR:SI?nr=F12345/05/20]
Uwaga: Brak załącznika z plikiem pdf oznacza brak faktury o podanym numerze.
```
* Załącznik:
`F12345-05-20.pdf` (tylko jeśli faktura istnieje w archiwum).
Co jeśli numeru nie ma albo jest błędny?
* Odpowiedź przychodzi bez załącznika.
* Treść będzie zawierać komunikat:
```
Brak parametru nr dokumentu, nr= ? [TR:SI?nr=xxxxxx/mm/rr]
```
***********************************************************************************************************************
Wzór wiadomości e-mail, który można przekazać klientom lub pracownikom, aby łatwo zamawiali
faktury z archiwum przez system Trawers.
Szablon zapytania o fakturęAdresat (Do):
`faktury@firma.pl`
*(lub inny adres przypisany do skrzynki e-mail w Trawersie, np. `XE`)*
Temat wiadomości (ważne!):
```
[TR:SI?nr=F12345/05/20]
```
Treść wiadomości:
```
Proszę o przesłanie kopii faktury o numerze F12345/05/20.
```
Odpowiedź automatyczna, jaką dostanie klientTemat:
```
Odp. automatyczna [TR:SI?nr=F12345/05/20]
```
Treść:
```
E-mail wygenerowany automatycznie.
Odpowiedź na e-mail z dnia 09.09.2025, temat: [TR:SI?nr=F12345/05/20]
Uwaga: Brak załącznika z plikiem pdf oznacza brak faktury o podanym numerze.
```
Załącznik:
* `F12345-05-20.pdf` (jeżeli faktura istnieje w archiwum i użytkownik ma do niej dostęp).
Wskazówki dla użytkowników:
* Numer faktury musi być podany w formacie:
`Fxxxxx/mm/rr` (np. `F12345/05/20`).
* Numer należy zawsze wpisać w temacie e-maila w nawiasach kwadratowych, np.:
```
[TR:SI?nr=F12345/05/20]
```
* Jeśli numer będzie błędny lub faktura nie istnieje -> przyjdzie odpowiedź bez załącznika.
* Tylko osoby uprawnione (np. kontrahenci o symbolach `100000` lub `005304`) otrzymają faktury.
3. Import zamówień z Baselinkera
Alert o nazwie: Import zamówień z Baselinkera odpowiada za automatyczne pobieranie
nowych zamówień z systemu Baselinker do Trawersa.
Nazwa:
`Import zamówień z Baselinkera`
Harmonogram działania:
* Uruchamia się co godzinę (`COGODZ=1`).
* Pracuje przez całą dobę (`ODGODZ=00:00` - `DOGODZ=00:00`).
* Jest cykliczny (`POWTORZ=T`).
Co robi?
W definicji raportu znajduje się:
```
ţBLGetOrders{000001;T;python python.py %1}
```
To oznacza, że:
1. Wywoływana jest funkcja `BLGetOrders`, która odpowiada za komunikację z API Baselinkera.
2. Pobierane są nowe zamówienia (parametr `000001` wskazuje np. na identyfikator lub zestaw ustawień integracji).
3. Parametr `T` zapewne oznacza, że pobieranie jest aktywne / pełne (np. z pełną synchronizacją).
4. Dodatkowo uruchamiany jest skrypt Python (`python.py`), który może:
* przetwarzać dane zamówień,
* robić dodatkowe mapowania,
* albo przygotowywać je do importu w Trawersie.
Efekt działania:
* Zamówienia z kont podłączonych do Baselinkera (np. z Allegro, sklepów internetowych, marketplaceów)
są automatycznie pobierane do systemu Trawers.
* Dzięki temu użytkownicy nie muszą ręcznie wprowadzać zamówień - wszystko dzieje się automatycznie co godzinę.
Cel biznesowy:
* Automatyzacja sprzedaży online - zamówienia z e-commerce pojawiają się w ERP bez udziału człowieka.
* Oszczędność czasu - nie trzeba kopiować danych z maili czy panelu Baselinkera.
* Spójność danych - wszystkie zamówienia są w systemie ERP, gotowe do dalszej obsługi
(fakturowania, magazynu, wysyłki).
***********************************************************************************************************************
Schemat działania alertu: Import zamówień z Baselinkera - krok po kroku
Od momentu złożenia zamówienia przez klienta, aż do pojawienia się go w Trawersie.
Przepływ procesuKlient składa zamówienie
* Klient kupuje produkt np. na Allegro, w sklepie internetowym, Amazonie czy innym kanale,
który jest spięty z Baselinkerem.
* Zamówienie trafia do panelu Baselinker.
Baselinker zapisuje zamówienie
* W Baselinkerze zamówienie zostaje zapisane z pełnymi danymi:
* dane klienta,
* adres dostawy,
* metoda wysyłki,
* sposób płatności,
* lista produktów (kody, ilości, ceny).
Alert w Trawersie uruchamia się co godzinę
* Alert Import zamówień z Baselinkera działa automatycznie co godzinę.
* Wywołuje polecenie:
```
BLGetOrders{000001;T;python python.py %1}
```
które:
* łączy się z API Baselinkera,
* pobiera nowe zamówienia,
* przekazuje dane do Trawersa,
* opcjonalnie uruchamia skrypt Python, aby np. przetworzyć dane (mapowanie kodów produktów,
konwersja formatu, logi).
Zamówienia są importowane do Trawersa
* W Trawersie tworzone są dokumenty zamówień od klientów.
* Każde zamówienie zawiera:
* dane nabywcy,
* adres dostawy,
* powiązane produkty (zgodne z kartotekami w ERP),
* status (np. do realizacji).
Obsługa w Trawersie
Od tego momentu zamówienie w ERP może być obsługiwane standardowo:
* rezerwacja towaru w magazynie,
* wystawienie dokumentów WZ / faktury,
* przekazanie do działu logistyki / kuriera,
* śledzenie statusu realizacji.
Korzyści
* Pełna automatyzacja - operatorzy nie muszą ręcznie wklepywać danych z Baselinkera.
* Mniej błędów - wszystkie informacje są pobierane dokładnie z zamówienia.
* Aktualność danych - co godzinę Trawers ma najnowsze zamówienia.
* Integracja wielu kanałów - niezależnie, czy sprzedaż pochodzi z Allegro, własnego sklepu
czy innego marketplaceu, wszystko trafia do ERP.
4. Oblicz ceny sprzedaży dla cennika
Alert: Oblicz ceny sprzedaży w Trawers ERP:
Co to jest?
Automat, który przelicza ceny sprzedaży w cenniku katalogowym według wcześniej zapisanych parametrów.
Kiedy działa?
* Codziennie (`CODNI=1`), przez całą dobę (okno 00:0000:00), cyklicznie (`POWTORZ=T`).
Jak to działa technicznie?
W sekcji RAPORT widać:
```
WykonajFunkcje{MI_OC315;ParametryDlaCennikaPLN_Netto1}
```
To znaczy: uruchom funkcję/konfigurator MI_OC315 z zestawem parametrów ParametryDlaCennikaPLN_Netto1.
Komentarz w definicji podpowiada, że przykładowo liczy cenę Netto 1 w PLN według
formuły [0100] dla indeksów z grupy [01].
Co jest efektem?
* System wylicza/aktualizuje ceny (np. Netto 1 w PLN) dla wybranych indeksów
zgodnie z parametrami w MI_OC315.
* Zakres (które indeksy), formuła wyceny (np. marża/narzut na koszcie, kurs waluty, zaokrąglenia),
wariant cennika - wszystko bierze z tego zestawu parametrów.
Dlaczego robić automatycznie?
* Po zmianach kosztów, kursów walut albo marż - cennik sam się odświeża.
* Mniej ręcznej pracy i spójne zasady wyceny.
Przykład praktyczny
Załóżmy, że:
* Chcesz, aby Netto 1 (PLN) dla towarów z grupy 01 liczyło się jako *średni koszt + 25% marży*,
zaokrąglone do 0,10 PLN.
* Taki zestaw zapisujesz w MI_OC315 jako: ParametryDlaCennikaPLN_Netto1.
ParametryDlaCennikaPLN_Netto1, to: Nazwa parametrów last user choice - ID Ostatni wybór operatora
Patrz opis funkcji TrExtLang -> tWykonajFunkcje{}
Efekt: co dzień alert uruchamia MI_OC315 i aktualizuje ceny Netto 1 tam, gdzie trzeba.
Jak tym sterować?
* Zmiana logiki (formuły, marży, kursu, filtrów indeksów): edytujesz zestaw parametrów w MI_OC315.
* Inny cennik/inna cena (np. Netto 2, waluta EUR, inna grupa indeksów):
tworzysz nowy zestaw w MI_OC315 i podstawiasz jego nazwę do alertu.
Na co uważać?
* Jeśli niektóre ceny są ręcznie nadpisywane, ustal, czy MI_OC315 ma je pomijać, czy nadpisywać.
* Zaokrąglenia i progi - sprawdź, czy odpowiadają polityce cenowej.
* Zrób test na wąskiej grupie indeksów przed wdrożeniem na całość.
5. Zamykanie zleceń produkcyjnych / usługowych
Alert w Trawers ERP o nazwie: Zamykanie zleceń odpowiada za automatyczne
zamykanie zleceń produkcyjnych, które zostały już w całości zrealizowane.
Nazwa:
Zamykanie zlecen
Harmonogram działania:
* Uruchamia się co 10 minut (`COMIN=10`), przez cały dzień (`00:0023:59`).
* Działa cyklicznie (`POWTORZ=T`).
* Między kolejnymi wywołaniami zostawia 10 minut przerwy (`POMIN=10`).
Logika działania:
1. Wybierane są zlecenia produkcyjne o statusie O (Otwarte).
```
WARUNE1: IS_EQ(STATUS,'O')
```
2. Alert oblicza łączną ilość przyjętą na magazyn:
```
Przyjeto = @ILOSCW + @ILOSCW1
```
3. Porównuje tę ilość z ilością zleconą do produkcji (`@ILOSCZ`).
* Jeśli Przyjęto Ilość zlecona -> ustawia flagę Można zamknąć = TAK.
4. Jeżeli warunek spełniony, wysyła polecenie zamknięcia zlecenia:
```
<woClose>
<workOrderPrefix>@WOPRE</workOrderPrefix>
<workOrderSuffix>@WOSUF</workOrderSuffix>
</woClose>
```
Efekt działania:
* Zlecenia produkcyjne, które zostały w pełni zrealizowane (ilość wykonana ilość zlecona),
są automatycznie zamykane.
* Zlecenia niepełne pozostają otwarte.
Cel biznesowy:
* Utrzymanie porządku w systemie produkcyjnym.
* Automatyzacja - nie trzeba ręcznie pilnować i zamykać każdego zlecenia.
* Zapobieganie dalszej rejestracji operacji w zleceniach, które są już faktycznie zakończone.
***********************************************************************************************************************
Praktyczny scenariusz działania alertu: Zamykanie zleceń krok po kroku.
Przykład 1: Zlecenie zrealizowane w całości
* Zlecenie: produkcja 100 sztuk.
* Status początkowy: [O] (Otwarte).
* Ilość zlecona (`@ILOSCZ`) = 100.
* Ilość przyjęta (`@ILOSCW + @ILOSCW1`) = 100.
Alert co 10 minut sprawdza warunek:
* 100 (przyjęto) 100 (zlecono) -> warunek spełniony.
Efekt:
* Alert generuje polecenie `<woClose>` -> zlecenie zostaje automatycznie zamknięte.
* Status zmienia się z [O] (Otwarte) na [Z] (Zamknięte).
Przykład 2: Zlecenie częściowo zrealizowane
* Zlecenie: produkcja 100 sztuk.
* Status początkowy: [O].
* Ilość zlecona = 100.
* Ilość przyjęta = 95.
Alert sprawdza:
* 95 (przyjęto) < 100 (zlecono) -> warunek nie spełniony.
Efekt:
* Alert nie zamyka zlecenia.
* Status pozostaje [O].
* Można jeszcze przyjmować brakujące 5 sztuk.
Przykład 3: Nadprodukcja
* Zlecenie: 100 sztuk.
* Ilość przyjęta = 105.
Sprawdzenie:
* 105 100 -> warunek spełniony.
Efekt:
* Zlecenie zostaje zamknięte mimo nadprodukcji.
* Status = [Z].
Podsumowanie
* Alert pilnuje, aby otwarte zlecenia zamykały się same, gdy osiągną wymaganą ilość.
* Obsługuje też przypadki nadprodukcji - wtedy zamyka od razu.
* Przy niedoprodukcji - pozostawia otwarte.
6. Wartość zamówień sprzedaży
Alert w Trawers ERP o nazwie Wartość zamówień sprzedaży służy do kontroli i akceptacji
zamówień sprzedaży o dużej wartości.
Nazwa:
`Wartosc zamówień sprzedaży`
Harmonogram działania:
* Sprawdza zamówienia co minutę (`COMIN=1`).
* Działa przez całą dobę (`ODGODZ=00:00 - DOGODZ=00:00`).
* Powtarza się cyklicznie (`POWTORZ=T`).
* Jest odroczony o minutę pomiędzy uruchomieniami (`POMIN=1`).
Jakie dokumenty analizuje?
* Dotyczy tylko dokumentów o rodzaju [ZL] (`WARUNE1: IS_EQ(RODZAJD,'ZL')`), czyli zamówień sprzedaży.
Logika działania:
1. Zbiera zamówienia - zapamiętuje numery i wartości zamówień (`TR_MEM[ZAMOWIENIA]`).
2. Sprawdza wartość zamówienia:
* Jeżeli wartość > 1000 PLN, zamówienie wymaga akceptacji.
3. Pokazuje okno dialogowe operatorowi:
* Wyświetla numer i wartość zamówienia.
* Pytanie: Czy akceptować?.
* Opcje: Tak / Nie.
4. Decyzja operatora:
* Jeśli Tak -> system wysyła polecenie akceptacji zamówienia:
```
<acceptSalesOrder>
<documentNr>[NumerZamówienia]</documentNr>
</acceptSalesOrder>
```
i potwierdza: SOA OK.
* Jeśli Nie -> wpisuje komunikat: Odrzucono przez operatora: [Numer].
Efekt działania:
* Małe zamówienia ( 1000 PLN) są akceptowane automatycznie.
* Duże zamówienia (> 1000 PLN) wymagają potwierdzenia operatora w dodatkowym oknie.
* System zapisuje, które zamówienia zostały zaakceptowane, a które odrzucone.
Cel biznesowy:
* Zapewnia kontrolę nad ryzykownymi zamówieniami o wysokiej wartości.
* Chroni przed przypadkowym przyjęciem zbyt dużych zamówień bez zgody kierownika/handlowca.
* Daje ścieżkę akceptacji w ERP - operator widzi okno, wybiera decyzję, a system wykonuje odpowiednie polecenie.
7. Wezwanie_checklista
Alert w Trawers ERP o nazwie: Wezwanie_checklista służy do obsługi procesu wysyłki
wezwań do zapłaty (przypomnień dla kontrahentów o zaległych płatnościach).
Nazwa:
`Wezwanie_checklista`
Harmonogram działania:
* Aktywny cały czas (`00:00 - 00:00`), cykliczny (`POWTORZ=T`).
* Uruchamiany ręcznie lub zgodnie z harmonogramem systemu.
Warunki wyboru danych (część Query):
Alert filtruje dokumenty (rozrachunki) wg warunków:
1. ROZLICZ = 0 -> dokument nie został jeszcze rozliczony.
2. ROKROZ pusty -> brak roku końcowego rozliczenia.
3. TERMIN minął 7 dni temu (`!TD_GE(TERMIN,f_data-7)`).
4. KWOTA > KWOTAR -> kwota należności większa od kwoty rozliczającej (czyli pozostało coś do zapłaty).
Czyli wybiera przeterminowane, nierozliczone należności o dodatnim saldzie.
Część interaktywna (RAPORT):
* Alert buduje checklistę (listę wyboru) kontrahentów spełniających powyższe kryteria.
* Operator widzi okno z listą kontrahentów i zaznacza tych, do których ma być wysłane wezwanie do zapłaty.
* `TN=T` -> Wysłać
* `TN=N` -> Nie wysyłać
* W tle zapisywane są dane w pamięci (`TR_MEM`, `checklist;odbiorcy`).
Na końcu alert wywołuje kolejny proces:
```
TR_ALERT;;WEZW03
```
który odpowiada za faktyczne generowanie i wysyłanie wezwań.
Efekt działania:
* Użytkownik dostaje wygodną listę dłużników.
* Sam decyduje, komu wysłać wezwanie.
* Po zatwierdzeniu system uruchamia kolejny alert/raport (`WEZW03`),
który przygotowuje i wysyła wezwania.
Cel biznesowy:
* Automatyzuje kontrolę przeterminowanych należności.
* Minimalizuje ryzyko pominięcia klienta, który zalega z płatnością.
* Umożliwia operatorowi ręczną selekcję - dzięki czemu można np. pominąć
kluczowego klienta albo takiego, z którym wcześniej ustalono indywidualny termin płatności.
***********************************************************************************************************************
Scenariusz praktyczny działania alertu: Wezwanie_checklista krok po kroku:
Przykład - zaległa fakturaWystawienie faktury
* Data wystawienia: 01.06.2023
* Termin płatności: 30 dni (czyli do 01.07.2023)
* Kwota: 5000 PLN
* Faktura nie została jeszcze rozliczona (`ROZLICZ = 0`, `ROKROZ pusty`).
Po terminie
* Mija 7 dni od terminu płatności -> 08.07.2023 faktura staje się przeterminowana.
* Nadal jest nieopłacona, więc spełnia warunki alertu:
* `ROZLICZ = 0`
* brak `ROKROZ`
* `TERMIN sprzed 7 dni`
* `KWOTA > KWOTAR` (czyli nadal jest saldo do zapłaty).
Uruchomienie alertu
* Alert Wezwanie_checklista uruchamia się (automatycznie / ręcznie).
* Buduje checklistę kontrahentów z zaległymi płatnościami.
* Na ekranie pojawia się lista - np.:
```
Wysyłanie wezwań do zapłaty
Proszę wybrać odbiorców, którym wysłać wezwanie:
[ ] Klient A - Faktura F/123/06/2023 - 5000 PLN - Termin 01.07.2023
[ ] Klient B - Faktura F/456/05/2023 - 3000 PLN - Termin 15.06.2023
...
```
Decyzja operatora
* Operator zaznacza, że do Klienta A ma być wysłane wezwanie (`TN = T`).
* Klienta B można np. odznaczyć, jeśli ustalono indywidualne przedłużenie terminu.
Generowanie wezwania
* Po zatwierdzeniu checklisty alert przekazuje dane do procesu WEZW03.
* System tworzy wezwanie do zapłaty (najczęściej jako pismo/wiadomość e-mail z PDF).
* Klient A dostaje oficjalne przypomnienie o zaległości.
--
Efekt biznesowy
* Operator nie musi ręcznie sprawdzać terminów - system sam wyłapuje przeterminowane płatności.
* Użytkownik ma pełną kontrolę, komu wysłać wezwanie.
* Minimalizuje się ryzyko: 'zapomnienia' o dłużniku.
8. Faktoring dla BPH
Alert: Faktoring dla BPH został zdefiniowany, aby generować plik CSV z fakturami
przeznaczonymi do przekazania bankowi BPH w ramach faktoringu.
Nazwa i kontekst
* Nazwa: Faktoring dla BPH
* System: NA (Należności)
* Uruchamianie: raz dziennie (`CODNI=1`), obejmuje dokumenty z ostatnich 14 dni.
Warunki wyboru danych
Alert przetwarza tylko te faktury, które:
1. ROZLICZ = 0 -> nierozliczone, otwarte rozrachunki.
2. ROKROZ pusty -> brak roku końcowego rozliczenia.
3. RODZAJ $ (FA; FK) -> dokumenty sprzedaży: faktura VAT i faktura korygująca.
4. ODODNUME = 'FB' -> wyróżnik wskazujący, że faktura jest przeznaczona do faktoringu w BPH.
(wyróżnik podany w karcie odbiorcy)
5. DATA z ostatnich 14 dni -> tylko nowe rozrachunki (świeże faktury).
Raport / Akcja alertu
* Tworzony jest plik CSV o nazwie zawierającej datę i godzinę (np. `faktoringFB_20230420_153012.csv`).
* W pliku zapisywane są informacje z faktur:
* numer doręczenia (symbol faktury),
* daty wystawienia i terminy płatności,
* wartości (kwota brutto pomniejszona o rozliczenia),
* dane kontrahenta (nazwa, adres, kod, miasto, kraj).
* Dodatkowo tworzony jest podsumowujący rekord kontrolny:
* liczba pozycji,
* suma wartości wszystkich faktur.
Efekt działania
* Każdego dnia system automatycznie generuje plik CSV z fakturami do faktoringu w banku BPH.
* Plik może być przesłany na serwer banku (np. przez FTP) lub ręcznie przekazany.
* Dzięki temu księgowość nie musi ręcznie przygotowywać listy faktur dla banku.
Cel biznesowy
* Automatyzacja obsługi faktoringu - minimalizacja pracy ręcznej.
* Standaryzacja danych - plik w formacie wymaganym przez bank.
* Bezpieczeństwo i kontrola - podsumowania w pliku pozwalają zweryfikować kompletność danych.
9. Informacja dla przedstawiciela handlowego
Alert: Informacja dla przedstawiciela służy do informowania handlowców/przedstawicieli
o zaległościach płatniczych klientów.
Nazwa i kontekst
* Nazwa: Informacja dla przedstawiciela
* System: NA (Należności)
* Uruchamianie: raz dziennie (`CODNI=1`).
Warunki wyboru danych
Alert wybiera tylko te rozrachunki (należności), które:
1. ROZLICZ = 0 -> nierozliczone (wciąż otwarte).
2. TERMIN płatności minął 7 dni temu (`!TD_GE(TERMIN,f_data-7)`).
3. ROKROZ pusty -> brak roku końcowego rozliczenia.
Oznacza to, że raport obejmuje przeterminowane należności nieopłacone od co najmniej tygodnia.
Raport / treść alertu
Alert generuje zestawienie w układzie tabelarycznym. W raporcie dla każdego
klienta/przedstawiciela wyświetlane są:
* @OSOBA -> klient/przedstawiciel powiązany z rozrachunkiem,
* Nr dokumentu (@NUMER) - numer faktury/rozrachunku,
* Kwota należności (@KWOTA),
* Kwota zapłacona (@KWOTAR),
* Kwota zaległości (@KWOTA - @KWOTAR),
* Termin płatności (@TERMIN) - z możliwością wyliczenia dni po terminie.
Układ kolumn wygląda mniej więcej tak:
```
Klient Nr dokumentu Należność Zapłacona Zaległość Termin
-------------------------------------------------------------------------
Kowalski FV/123/06/16 5000,00 2000,00 3000,00 2016-06-15
```
Efekt działania
* Każdego dnia handlowiec/przedstawiciel otrzymuje listę zaległości swoich klientów.
* Dzięki temu wie, którzy klienci mają przeterminowane faktury i na jakie kwoty.
* Ułatwia to przygotowanie się do rozmów i działań windykacyjnych.
Cel biznesowy
* Zapewnienie handlowcom bieżącej informacji o stanie rozliczeń ich klientów.
* Wsparcie w egzekwowaniu płatności i rozmowach handlowych.
* Szybsza reakcja na zaległości (np. wstrzymanie realizacji nowych zamówień, przypomnienia telefoniczne).
10. Informacja dla kierownika z grupy 10
Alert: Informacja dla kierownika 10 przygotowuje raport o zaległych płatnościach
dla kontrahentów przypisanych do grupy nr 10.
Nazwa i kontekst
* Nazwa: Informacja dla kierownika 10
* System: NA (Należności)
* Priorytet: 6 (ważny, ale nie najwyższy).
* Uruchamianie: co 7 dni (`CODNI=7`), przez całą dobę (`ODGODZ=00:00 - DOGODZ=00:00`).
Warunki wyboru danych
Alert obejmuje tylko rozrachunki:
1. ROZLICZ = 0 -> należności nierozliczone (otwarte).
2. ROKROZ pusty -> brak roku końcowego rozliczenia.
3. ODGRUPA = '10' -> kontrahenci należący do grupy 10.
Czyli system zbiera otwarte, nierozliczone należności klientów z grupy 10.
Raport / treść alertu
* Raport formatuje się jak dokument (czcionki, linie, nagłówki).
* Nagłówek:
* tytuł: Zaległe płatności,
* grupa kontrahenta = 10,
* data wykonania (`TR_MEM[data]`).
* Dla każdego odbiorcy (`@OSOBA`) alert wywołuje wydruk WEZALERT z parametrami:
* system: NA (należności),
* rodzaj: RZ (rozrachunki),
* raport: WEZALERT,
* zakres zaległości (`z1=30`, `z2=60` -> np. faktury przeterminowane 30-60 dni).
Efekt działania
* Kierownik dostaje cykliczny raport zbiorczy o zaległościach w grupie kontrahentów nr 10.
* Raport zawiera wezwane płatności, pogrupowane wg klientów.
* Daje możliwość szybkiej kontroli, które należności są przeterminowane i od jak dawna.
Cel biznesowy
* Regularne informowanie kierownika odpowiedzialnego za grupę klientów nr 10 o zaległościach.
* Ułatwia podejmowanie działań windykacyjnych i handlowych.
* Zwiększa kontrolę nad płynnością finansową poprzez monitorowanie zaległości co tydzień.
***********************************************************************************************************************
Scenariusz praktyczny działania alertu: Informacja dla kierownika 10 krok po kroku:
Dane wejściowe - przykładowy klient z grupy 10
* Klient: Firma Alfa (przypisana do grupy kontrahentów nr 10)
* Faktury:
1. Faktura FA/123/06/2023 - kwota 5 000 PLN, termin płatności minął 35 dni temu.
2. Faktura FA/456/06/2023 - kwota 8 000 PLN, termin płatności minął 55 dni temu.
* Obie faktury są nierozliczone (`ROZLICZ=0`) i bez roku końcowego rozliczenia (`ROKROZ pusty`).
Działanie alertu
1. Alert uruchamia się raz na 7 dni.
2. Sprawdza należności klientów z ODGRUPA = 10.
3. Znajduje dwie faktury przeterminowane: 35 i 55 dni.
4. Wywołuje dla klienta wydruk WEZALERT z parametrami `z1=30`, `z2=60`.
Raport (fragment)
Nagłówek:
```
Zaległe płatności
Grupa kontrahenta: 10 Data: 2023-07-01
------------------------------------------------------------
```
Pozycje dla klienta: Firma Alfa:
```
Klient: Firma Alfa
Nr dokumentu Kwota należności Kwota zapłacona Zaległość Termin
FA/123/06/2023 5 000,00 PLN 0,00 PLN 5 000,00 PLN 2023-05-27
FA/456/06/2023 8 000,00 PLN 0,00 PLN 8 000,00 PLN 2023-06-06
```
*(alert pokazuje, że faktury są w zakresie 3060 dni przeterminowania)*
Efekt biznesowy
* Kierownik otrzymuje pełną informację o zaległościach klientów ze swojej grupy (10).
* Widzi, że: Firma Alfa ma 2 faktury zaległe: 35 i 55 dni po terminie.
* Może podjąć działania:
* wysłać przypomnienie,
* skontaktować się z klientem,
* wstrzymać nowe zamówienia do czasu uregulowania zaległości.
***********************************************************************************************************************
Raport z alertu: Informacja dla kierownika 10 w formie tabeli ASCII tak,
żeby była czytelna w dokumentacji albo mailu.
Raport - przykład tabeli ASCII
```
============================================================
ZALEGŁE PŁATNOŚCI
Grupa kontrahenta: 10 Data: 2023-07-01
============================================================
Klient: Firma Alfa
--------------------------------------------------------------------------------
Nr dokumentu Kwota należności Kwota zapłacona Zaległość Termin
--------------------------------------------------------------------------------
FA/123/06/2023 5 000,00 PLN 0,00 PLN 5 000,00 PLN 2023-05-27
FA/456/06/2023 8 000,00 PLN 0,00 PLN 8 000,00 PLN 2023-06-06
--------------------------------------------------------------------------------
RAZEM: 13 000,00 PLN
===============================================================
```
W ten sposób kierownik od razu widzi:
* jakie dokumenty są przeterminowane,
* jaka jest ich wartość,
* ile wynosi całkowita zaległość klienta,
* do jakiej grupy kontrahentów należy.
***********************************************************************************************************************
Raport zbiorczy z alertu: Informacja dla kierownika 10 - pokazująca kilku klientów z grupy nr 10.
Raport - zbiorcza tabela ASCII
```
============================================================
ZALEGŁE PŁATNOŚCI
Grupa kontrahenta: 10 Data: 2023-07-01
============================================================
Klient: Firma Alfa
--------------------------------------------------------------------------------
Nr dokumentu Kwota należności Kwota zapłacona Zaległość Termin
--------------------------------------------------------------------------------
FA/123/06/2023 5 000,00 PLN 0,00 PLN 5 000,00 PLN 2023-05-27
FA/456/06/2023 8 000,00 PLN 0,00 PLN 8 000,00 PLN 2023-06-06
--------------------------------------------------------------------------------
RAZEM: 13 000,00 PLN
Klient: Firma Beta
--------------------------------------------------------------------------------
Nr dokumentu Kwota należności Kwota zapłacona Zaległość Termin
--------------------------------------------------------------------------------
FA/789/06/2023 4 500,00 PLN 1 500,00 PLN 3 000,00 PLN 2023-05-20
FA/812/06/2023 2 000,00 PLN 0,00 PLN 2 000,00 PLN 2023-06-10
--------------------------------------------------------------------------------
RAZEM: 5 000,00 PLN
Klient: Firma Gamma
--------------------------------------------------------------------------------
Nr dokumentu Kwota należności Kwota zapłacona Zaległość Termin
--------------------------------------------------------------------------------
FA/900/06/2023 12 000,00 PLN 10 000,00 PLN 2 000,00 PLN 2023-05-25
--------------------------------------------------------------------------------
RAZEM: 2 000,00 PLN
================================================================
PODSUMOWANIE DLA GRUPY 10: 20 000,00 PLN
================================================================
```
Taki raport zbiorczy pozwala kierownikowi od razu zobaczyć:
* który klient zalega,
* które faktury są nieopłacone,
* ile brakuje do zapłaty na poziomie klienta i całej grupy.
11. Zapisywanie pliku .csv z asortymentem i cenami
Alert: Stany i ceny cyklicznie tworzy plik .csv zawierający wybrane indeksy KIM
wraz z dwiema cenami sprzedaży i ilością dostępną w magazynie 01.
<Trawers_Alert wydanie='2026.07.29' wersja='5.00'>
<TRALERTDB>
<NAZWA>Stany i ceny dla PS</NAZWA>
<NSYST>MG</NSYST>
<SELECT>229</SELECT>
<COMIN>15</COMIN>
<ODGODZ>07:00</ODGODZ>
<DOGODZ>19:00</DOGODZ>
<POWTORZ>T</POWTORZ>
<TEMAT>Stany i ceny dla PS</TEMAT>
<RAPORT>TţNazwijPlik{ala;csv}ţNadpiszPlik{}
ţCofnijWiersz{} PţUsuńSpacje{@INDEKS};ţUsuń
{ ;ţUsuńSpacje{ţ96
{TR_CENA_SPR;;@INDEKS;4;50;01}}};ţUsuń
{ ;ţUsuńSpacje{ţ60{ţ96
{TR_CENA_SPR;;@INDEKS;4;10;01};Brak ceny!!!;0;ţ96
{TR_CENA_SPR;;@INDEKS;4;10;01}}}};ţUsuńSpacje
{ţFormat{ţIlośćDostępna{01;@INDEKS;;};999}};
</RAPORT>
<ADDDATE>2026.07.29</ADDDATE>
<ADDDATD>2026-07-29</ADDDATD>
<ADDTIME>13:12:19</ADDTIME>
<ADDUSER>AA</ADDUSER>
<ADDPROC>AD_TAL10</ADDPROC>
<ADDSYST>AD</ADDSYST>
<CHGDATE>2026.07.29</CHGDATE>
<CHGDATD>2026-07-29</CHGDATD>
<CHGTIME>13:12:19</CHGTIME>
<CHGUSER>AA</CHGUSER>
<CHGPROC>AD_TAL10</CHGPROC>
<CHGSYST>AD</CHGSYST>
<NPOLE1>GRUPA</NPOLE1>
<NPOLE2>MRODZAJ</NPOLE2>
<NPOLE3>BLOKADTN</NPOLE3>
<TPOLE1>C</TPOLE1>
<TPOLE2>C</TPOLE2>
<TPOLE3>C</TPOLE3>
<DPOLE11>2</DPOLE11>
<DPOLE12>2</DPOLE12>
<DPOLE13>1</DPOLE13>
<OPOLE1>Grupa indeksu %GG</OPOLE1>
<OPOLE2>Rodzaj: Pp:Pw:Mz:Zs:Pr:...</OPOLE2>
<OPOLE3>[ ][T] Zablokowana</OPOLE3>
<RELAC1>nie zawiera tekstu (...)</RELAC1>
<RELAC2>jest = (równy)</RELAC2>
<RELAC3>jest = (równy)</RELAC3>
<WARTOD1>'ZA'</WARTOD1>
<WARTOD2>'03'</WARTOD2>
<WARTOD3>'N'</WARTOD3>
<LACZNI2>i</LACZNI2>
<LACZNI3>i</LACZNI3>
<WARUNE1>!IS_IN(GRUPA,'ZA')</WARUNE1>
<WARUNE2>IS_EQ(MRODZAJ,'03')</WARUNE2>
<WARUNE3>IS_EQ(BLOKADTN,'N')</WARUNE3>
</TRALERTDB>
</Trawers_Alert>
Ogólna interpretacja
Alert Stany i ceny dla PS cyklicznie tworzy plik `ala.csv` zawierający wybrane
indeksy KIM wraz z dwiema cenami sprzedaży i ilością dostępną w magazynie 01.
Skrót PS nie jest rozwinięty w definicji. Najprawdopodobniej oznacza system
lub platformę, która pobiera ten plik.
Harmonogram
Alert:
* sprawdza dane co 15 minut,
* działa w godzinach 07:0019:00,
* ma ustawione `POWTORZ=T`, czyli wcześniej przetworzone rekordy mogą być ujmowane ponownie.
Dokumentacja wskazuje, że częstotliwość określa moment kolejnego sprawdzenia,
a opcja ponownego ujmowania pozwala przetwarzać te same rekordy w kolejnych wykonaniach.
Ponieważ w XML nie ma widocznego dodatkowego okresu ponowienia, można przyjąć,
że kwalifikujące się indeksy będą najprawdopodobniej eksportowane przy każdym
wykonaniu alertu.
Źródło danych
```
NSYST = MG
SELECT = 229
```
Alert przegląda zbiór 229 - Kartoteka indeksów KIM. W kartotece znajdują się m.in.
pola `INDEKS`, `GRUPA`, `MRODZAJ` i informacje o blokadzie.
Warunki wyboru indeksów
Do pliku trafią tylko karty KIM spełniające jednocześnie trzy warunki:
```
!IS_IN(GRUPA,'ZA')
AND IS_EQ(MRODZAJ,'03')
AND IS_EQ(BLOKADTN,'N')
```
Czyli:
1. Grupa indeksu nie zawiera `ZA`
Ponieważ grupa KIM jest polem dwuznakowym, praktycznie oznacza to wykluczenie grupy `ZA`.
2. Rodzaj indeksu = `03`
Kod `03` oznacza Materiał kupowany [Mz], czyli towary i materiały magazynowane.
3. Karta nie jest zablokowana
`BLOKADTN=N` oznacza wybór kart aktywnych, niezablokowanych.
Nazwa i sposób tworzenia pliku
Pierwsza linia raportu:
```
T
ţNazwijPlik{ala;csv}
ţNadpiszPlik{}
ţCofnijWiersz{}
```
oznacza:
* nazwa pliku: `ala.csv`,
* istniejący plik o tej nazwie ma być nadpisany,
* `CofnijWiersz{}` usuwa pusty wiersz, który powstałby przez techniczną linię sterującą.
Funkcja `NazwijPlik` zmienia automatyczną nazwę pliku na wskazaną przez autora wzorca.
`CofnijWiersz` cofa wydruk o jeden wiersz.
Miejsce zapisu pliku zależy od urządzenia wyjściowego przypisanego do alertu.
Tego przypisania nie ma w pokazanym fragmencie XML.
Struktura jednego wiersza CSV
Dla każdego indeksu spełniającego warunki powstaje wiersz:
```
INDEKS;CENA_50;CENA_10;ILOSC_DOSTEPNA;
```
Czyli cztery kolumny rozdzielone średnikami, z dodatkowym średnikiem na końcu.
Kolumna 1 - indeks KIM
```
ţUsuńSpacje{@INDEKS}
```
Zwraca symbol indeksu bez spacji początkowych i końcowych.
Kolumna 2 - cena z cennika typu 50
```
ţ96{TR_CENA_SPR;;@INDEKS;4;50;01}
```
Parametry oznaczają:
```
indeks = @INDEKS
nr ceny = 4
typ cennika = 50
magazyn = 01
waluta = domyślna, czyli PLN
data/czas = bieżące
```
Typ `50` to podstawowy cennik katalogowy dla magazynu/oddziału, a numer ceny `4`
jest pierwszą ceną brutto. Funkcja ceny przyjmuje kolejno indeks, numer ceny,
typ cennika i magazyn.
Zewnętrzne funkcje:
```
UsuńSpacje
Usuń{ ;...}
``
usuwają spacje brzegowe oraz wszystkie pozostałe spacje z wyniku, np. separatory tysięcy.
`Usuń` usuwa wskazane znaki z tekstu.
**Kolumna 3 cena promocyjna z cennika typu 10
```
ţ60{
ţ96{TR_CENA_SPR;;@INDEKS;4;10;01};
Brak ceny!!!;
**0;
ţ96{TR_CENA_SPR;;@INDEKS;4;10;01}
}
```
Jest to:
``text
nr ceny = 4
typ cennika = 10
magazyn = 01
```
Typ `10` oznacza cennik promocyjny dla magazynu/oddziału.
Funkcja `60` porównuje teksty:
* gdy funkcja ceny zwróci `Brak ceny!!!` - do CSV wpisuje `0`,
* w przeciwnym razie wpisuje znalezioną cenę.
Funkcja `t60` ma postać `tekst1; tekst2; wynik gdy równe; wynik gdy różne`.
Kolumna 4 - ilość dostępna w magazynie 01
```
ţFormat{
ţIlośćDostępna{01;@INDEKS;;};
999
}
```
Zwraca ilość dostępną dla indeksu w magazynie `01`. Ilość dostępna oznacza
ilość możliwą do wykorzystania lub sprzedaży, po uwzględnieniu dostępności magazynowej.
Format `999` oznacza:
* maksymalnie trzy cyfry,
* brak części dziesiętnej,
* brak spacji brzegowych.
Przykładowy rezultat
Schematycznie plik może wyglądać tak:
```csv
TOWAR-001;123.00;99.00;25;
TOWAR-002;45.50;0;8;
TOWAR-003;19.99;17.99;0;
```
Plik nie zawiera wiersza nagłówkowego.
Istotne uwagi i możliwe problemy1. Brak obsługi brakującej ceny typu 50
Dla ceny promocyjnej typu `10` brak ceny jest zamieniany na `0`.
Dla ceny podstawowej typu `50` takiego zabezpieczenia nie ma.
Jeżeli cena nie zostanie znaleziona, w drugiej kolumnie może pojawić się
tekst:
```
Brak ceny!!!
```
zamiast wartości liczbowej.
2. Format ilości jest bardzo wąski
Format:
```
999
```
mieści tylko trzy cyfry. Dla ilości większej niż `999` funkcja formatująca może zwrócić `***`,
podobnie jak przy innych przepełnieniach formatu liczbowego.
Ponadto ilości ułamkowe nie będą pokazane z miejscami po przecinku.
Dla towarów ewidencjonowanych np. w kilogramach lub metrach może to prowadzić do utraty precyzji.
3. Plik jest stale nadpisywany
Każde wykonanie tworzy aktualny zrzut danych w `ala.csv`, a nie historię zmian.
Jest to właściwe dla integracji, która oczekuje pełnego, bieżącego pliku.
4. Cena jest ceną brutto
Numer ceny `4` oznacza cenę brutto odpowiadającą cenie netto nr 1.
Jeżeli odbiorca pliku oczekuje cen netto, należałoby użyć numeru `1`, a nie `4`.
Podsumowanie
Alert co 15 minut, w godzinach 07:00-19:00, przygotowuje aktualny plik `ala.csv` dla:
* niezablokowanych materiałów kupowanych `[Mz]/03`,
* z pominięciem grupy `ZA`,
* z ceną brutto nr 4 z cennika magazynowego typu `50`,
* z ceną brutto nr 4 z promocji magazynowej typu `10`,
* z ilością dostępną w magazynie `01`.
Najważniejsze ryzyka definicji to brak zamiany brakującej ceny typu `50` na zero
oraz zbyt krótki format ilości `999`.