Rejestry i numeracja
Każda faktura trafia do rejestru (sprzedaży lub zakupu) — to podstawa ewidencji VAT i przekazania do księgowości. Rejestry obsługuje też osobna aplikacja Rejestry.
Tabele rejestrów
| Tabela | Rola |
|---|---|
REJESTRY_TRANSPORTOWE | rejestry dla faktur transportowych (FAKTURA_TRA) |
REJESTRY_NIETRANSPORTOWE | rejestry dla faktur nietransportowych (FAKTURA) |
REJESTRY_TRANSPORTOWE_FAKTURY | przypisanie faktury transportowej do rejestru (junction) |
REJESTRY_NIETRANSPORTOWE_FAKTURY | przypisanie faktury nietransportowej do rejestru (junction) |
Tabele łącznikowe (_FAKTURY) niosą ID_FAKTURY, ID_REJESTRU, LP (numer porządkowy do raportów) oraz STATUS (-1 błąd przeniesienia / 0 nieaktywne / 1 aktywne).
Przypisanie do rejestru
Przydział do rejestru sprzedaży vs zakupu wynika z kierunku transakcji faktury:
RODZAJ_TRANSAKCJI | Rejestr |
|---|---|
S (sprzedaż) | rejestr sprzedaży |
Z (zakup) | rejestr zakupu |
Rejestr opisują m.in.:
FIRMA— spółka/filia,WALUTA— PLN lub waluta obca,STATUS— aktywność rejestru,ZRODLO_DOK— źródło dokumentu:1= dokumenty tradycyjne (papierowe lub z PDF wprowadzone przez użytkownika do e-VANa),2= dokumenty z KSeF,SYSTEM—0stary e-van /1nowy e-van.
Obsługę rejestrów (wsadowe przetwarzanie, raporty) realizują pakiety TRANSPORT_REGISTER_PKG, NO_TRANSPORT_REGISTER_PKG oraz REJESTR_TRANSPORTOWY_PP_PKG (zakres procedur — niepewne; logika dzielona z aplikacją f1750).
Numeracja dokumentów
Numery nadaje jedna wspólna funkcja F_GET_DOCUMENT_NUMBER (latest/function/):
F_GET_DOCUMENT_NUMBER(
pi_firma in varchar2, -- kod filii (używane pierwsze 4 znaki, np. 'XXWA')
pi_nazwa in varchar2, -- nazwa numeratora (klasa dokumentu)
pi_sysdate in date default sysdate,-- data dokumentu (z niej okres numeracji)
pi_nip_kod_kraj in varchar2 default 'PL'-- kraj NIP kontrahenta: 'PL' lub zagraniczny
) return varchar2;
Licznik — tabela NUMERATOR
Numery pochodzą z tabeli liczników NUMERATOR (nazwa, firma, oddzial_nr, klucz, nr). Każda kombinacja klasy + spółki/oddziału + okresu ma własny, niezależny licznik nr. Algorytm dla każdego wywołania jest taki sam:
- ustalenie oddziału (
oddzial_nr) — zS_FILIA.nrpo kodzie filii (SUBSTR(pi_firma,1,4)); brak filii →0. Dla faktur nietransportowych i proform spółka/oddział są mapowane na sztywno (VVRZ/VVZA→ Kurier,XX…→ VanCargo,VV…→ Podlasie), SELECT nr … FOR UPDATE OF nr— pobranie i zablokowanie wiersza licznika dla(nazwa, oddział, klucz),nr := nr + 1iUPDATElicznika,- brak wiersza (pierwszy dokument w okresie) → gałąź
NO_DATA_FOUND:INSERT … VALUES(…, 1)i numer startuje od 1, - złożenie numeru ze stałego wzorca danej klasy.
FOR UPDATE OF nr powoduje, że równoległe wystawianie dokumentów serializuje się na wierszu licznika — dwa procesy nie dostaną tego samego numeru.Okres numeracji (reset licznika)
Reset wynika z kolumny klucz (część klucza licznika):
- miesięczny —
klucz = TO_CHAR(data,'YYYYMM'): faktury i korekty (transportowe i nietransportowe), rejestry, - roczny —
klucz = TO_CHAR(data,'YYYY'): proformy (SPRZEDAZ_PROFORMA) i noty transportowe (NOTY_TRANS).
Pierwszy dokument nowego okresu zaczyna numerację od 1.
Kontrahent PL vs zagraniczny
Dla faktur sprzedażowych (FV_TRANS_S, FV_NIETRANS_S) numerator jest rozdzielony wg kraju NIP: nazwa licznika dostaje sufiks _PL lub _NPL (osobne ciągi numerów), a do samego numeru wstawiana jest cyfra 0 (PL) lub 7 (zagraniczny).
Klasy i formaty numeru
Klasa (pi_nazwa) | Dokument | Reset | Format numeru |
|---|---|---|---|
FV_TRANS_S | faktura transportowa sprzedaż (FK) | miesięczny | ‹oddział›‹RRMM›‹0|7›‹NNNN› |
KOR_TRANS_S | korekta transportowa | miesięczny | ‹oddział›‹RRMM›‹NNN› |
FV_NIETRANS_S | faktura nietransportowa sprzedaż | miesięczny | ‹spółka 11|13|73›‹RRMM›‹0|7›‹NNNN› |
KOR_NIETRANS_S | korekta nietransportowa | miesięczny | ‹spółka›‹RRMM›‹NNN› |
SPRZEDAZ_PROFORMA | proforma sprzedaż | roczny | ‹NNN›/FP/‹V|K|P›/‹RRRR› |
REJESTR_TRANS | rejestr transportowy | miesięczny | ‹oddział›/‹RR›/‹MM›/‹NN› |
REJESTR_NIETRANS | rejestr nietransportowy | miesięczny | ‹oddział›/…/‹MM›/‹NNN› |
NOTY_TRANS | noty transportowe | roczny | ‹oddział›‹RR›‹NNNN› |
‹RRMM› = rok+miesiąc (YYMM), ‹NNNN› = kolejny numer wyrównany zerami. Przykład faktury transportowej PL dla oddziału 11 w czerwcu 2024: 11 + 2406 + 0 + 0001 → 11240600001; dla kontrahenta zagranicznego cyfra 0 zamienia się na 7.
> 9999 dla numeru 4-cyfrowego albo > 999 dla 3-cyfrowego), numer wydłuża się o jedną cyfrę (LPAD do 5 / 4 znaków).REJESTR_TRANS_PP jest w kodzie oznaczona jako nieużywana („tego nie używamy na dzień dzisiejszy”). Faktury zakupowe (Z) zwykle przyjmują numer nadany przez wystawcę (lub z KSeF), a nie z F_GET_DOCUMENT_NUMBER — funkcja służy przede wszystkim dokumentom wystawianym przez VanCargo.Powiązania
Korekty
Korekty faktur transportowych i nietransportowych — typy korekt, powiązanie z dokumentem bazowym, łańcuch numeracji i obsługa korekt z KSeF.
Księgowanie (KAMSOFT / KDP)
Eksport faktur do księgowości przez dblink @SPO (BSC_COSTS/BSC_INCOMES, schemat KDP/KAMSOFT), statusy księgowe, kurs ważony oraz flaga WIDOCZNE_W_KSIEGOWOSCI.