Każda z trzech metod komunikacji odwołuje się zawsze do faktury poprzez pole faktura_id.
Polecenie wysłania do KSEF zawsze generuje wpis tablicy FAKTURA_KSEF a następnie zależnie od wyboru metody wysyłki jest:
1) dla wysyłki online - wysyłany do KSeF i czeka na pobranie UPO
2) dla wysyłki wsadowej - wysyłany do KSeF i UPO zostaje pobrane niezależnie
3) dla serwisu - serwis sprawdza co zdefiniowany interwał czasowy i wysyła do KSE i sprawdza
2. Struktura tabel pomocniczych
faktura KSEF
CREATE TABLE FAKTURA_KSEF (
FAKTURA_KSEF_ID INTEGER NOT NULL,
FAKTURA_ID INTEGER NOT NULL,
FAKTURA_KSEF_STATUS INTEGER,
FAKTURA_KSEF_SESSIONREF VARCHAR(250),
FAKTURA_KSEF_XML BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
FAKTURA_KSEF_UPO_XML BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
FAKTURA_KSEF_QR BLOB SUB_TYPE BINARY SEGMENT SIZE 16384,
(..)
EMPLOYEE_ID INTEGER NOT NULL,
FAKTURA_KSEF_USED INTEGER
);
Uwaga:
Tablica musi istnieć w systemie. Jeśli jej nie ma proszę utworzyć ją ręcznie.
ALTER TABLE FAKTURA_KSEF ADD CONSTRAINT PK_FAKTURA_KSEF PRIMARY KEY (FAKTURA_KSEF_ID);
CREATE INDEX FAKTURA_KSEF_EMPLOYEE_ID ON FAKTURA_KSEF (EMPLOYEE_ID);
CREATE UNIQUE INDEX FAKTURA_KSEF_FAKTURA_ID ON FAKTURA_KSEF (FAKTURA_ID);
CREATE SEQUENCE FAKTURA_KSEF START WITH 0 INCREMENT BY 1;
gdzie
FAKTURA_KSEF_SESSIONREF - numer sesji
FAKTURA_STATUS_KSEF z tabeli faktura jest tożsamy z FAKTURA_KSEF_STATUS
OBIEKT
(..)
OBIEKT_KSEF_TOKEN VARCHAR(250)
OBIEKT_KSEF_CERT_HASLO VARCHAR(250)
OBIEKT_KSEF_CERT BLOB BLOB SUB_TYPE 1 SEGMENT SIZE 16384 CHARACTER SET WIN1250 //->base64
(..)
Faktura
CREATE TABLE FAKTURA (
FAKTURA_ID INTEGER,
(..)
FAKTURA_STATUS_KSEF INTEGER DEFAULT 0 NOT NULL, --> FAKTURA_KSEF_STATUS
FAKTURA_DATA_KSEF_PRZESL DATE,
FAKTURA_NR_KSEF VARCHAR(255),
FAKTURA_DATA_KSEF_PRZYJ DATE,
FAKTURA_NR_KSEF_FAKTURY VARCHAR(255),
FAKTURA_NR_UPO VARCHAR(255),
(..)
);
gdzie:
FAKTURA_DATA_KSEF_PRZESL - data wysyłki do KSeF
FAKTURA_NR_KSEF - numer referencyjny faktury FakturaRef
FAKTURA_DATA_KSEF_PRZYJ - data rejestracji KSeF
FAKTURA_NR_KSEF_FAKTURY - nr faktury KSeF w KSeF
Pracownik
CREATE TABLE EMPLOYEE (
EMPLOYEE_ID INTEGER,
(..)
EMPLOYEE_AUTH_EMAIL VARCHAR(255),
EMPLOYEE_KSEF_CERT VARCHAR(255),
EMPLOYEE_KSEF_KEY VARCHAR(255),
EMPLOYEE_KSEF_PASS VARCHAR(255),
EMPLOYEE_KSEF_TOKEN VARCHAR(255),
EMPLOYEE_R_KSEF INTEGER,
(..)
);
Tablica komunikatów latarni KSeF
CREATE TABLE MESSAGES_KSEF(
MESSAGES_KSEF_ID INTEGER NOT NULL,
MESSAGES_KSEF_NR VARCHAR ( 30 ) NOT NULL,
MESSAGES_KSEF_EVENT_ID INTEGER NOT NULL,
MESSAGES_KSEF_CATEGORY VARCHAR ( 50 ) NOT NULL,
MESSAGES_KSEF_TYPE VARCHAR ( 50 ) NOT NULL,
MESSAGES_KSEF_TITLE VARCHAR(50) NOT NULL,
MESSAGES_KSEF_TEXT BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
MESSAGES_KSEF_START DATE NOT NULL,
MESSAGES_KSEF_END DATE,
MESSAGES_KSEF_VERSION INTEGER NOT NULL,
MESSAGES_KSEF_PUBLISHED DATE NOT NULL
);
ALTER TABLE MESSAGES_KSEF ADD CONSTRAINT PK_MESSAGES_KSEF PRIMARY KEY (MESSAGES_KSEF_ID);
CREATE INDEX MESSAGES_KSEF_PUBLISHED ON MESSAGES_KSEF (MESSAGES_KSEF_PUBLISHED);
CREATE UNIQUE INDEX MESSAGES_KSEF_NR ON MESSAGES_KSEF (MESSAGES_KSEF_NR);
CREATE SEQUENCE SEQ_MESSAGES_KSEF START WITH 0 INCREMENT BY 1;
Tablica odczytów komunikatów przez użytkowników
CREATE TABLE MESSAGES_KSEF_EMP
(
MESSAGES_KSEF_ID INTEGER NOT NULL,
EMPLOYEE_ID INTEGER NOT NULL,
MESSAGES_KSEF_READED DATE NOT NULL
);
ALTER TABLE MESSAGES_KSEF_EMP ADD CONSTRAINT PK_MESSAGES_KSEF_EMP PRIMARY KEY (MESSAGES_KSEF_ID, EMPLOYEE_ID);
Statusy

Dodano status 90 - offline