Quan KSeF dona una factura per duplicada
KSeF busca duplicats en totes les factures guardades al sistema. Hi decideixen tres camps:
- el NIF del venedor,
Podmiot1:NIP; - el tipus de factura,
RodzajFaktury; - el número de factura,
P_2, que segons l'esquema FA(3) ha d'identificar la factura sense ambigüitat.
La unicitat dura 10 anys complets, comptats des del final de l'any en què es va emetre la factura. Sempre compta el NIF del venedor: si diverses sucursals o unitats emeten en nom d'una mateixa empresa, han de posar-se d'acord en la numeració.

Què porta la resposta i què guarda Odoo
A la resposta de KSeF, l'estat 440 té la descripció «Duplikat faktury» (factura duplicada) i dos camps a extensions: originalKsefNumber, el número KSeF de la factura que ja és al sistema, i originalSessionReferenceNumber, la sessió per la qual va entrar. L'exemple de la documentació de l'API posa a details un missatge del tipus «Duplikat faktury. Faktura o numerze KSeF: … została już prawidłowo przesłana do systemu w sesji: …».
A Odoo 18, 19 i 20, el mòdul l10n_pl_edi posa «KSeF Status» en Rejected i afegeix a l'historial «KSeF Status: Rejected (Code: 440). Duplicate invoice.» (en polonès a la 18 i la 19: «Status KSeF: Odrzucono (Kod: 440). Powielona faktura.»). Odoo no guarda extensions, de manera que el número KSeF de l'original no apareix a la factura. Com a P_2, Odoo escriu el número de la factura d'Odoo.
D'on surt un duplicat amb factures d'Odoo
| Situació | Què passa |
|---|---|
| La factura ja va arribar a KSeF per un altre canal i després es va enviar des d'Odoo | L'original és a KSeF; el nou enviament rep 440. |
| El mateix NIF emet des de dues bases o empreses d'Odoo amb seqüències idèntiques | Dues factures diferents comparteixen tipus i número. |
| Les sucursals d'una empresa porten numeracions pròpies que se superposen | KSeF compta el NIF del venedor, no la sucursal. |
Odoo només envia factures sense estat KSeF. Una factura en Sent o Accepted no es pot enviar dues vegades per descuit des del mateix Odoo.
Com resoldre-ho
- Localitza l'original: el número KSeF de
originalKsefNumbero la factura amb aquest número a KSeF. - Si és la mateixa factura, enviada abans per un altre canal, no la tornis a enviar. Cada enviament nou amb aquest número rep 440.
- Si és una altra factura amb el mateix número, el problema és la numeració: acorda amb la teva assessoria sèries separades per a cada base, empresa o sucursal que comparteixi NIF.
La factura està a KSeF després d'un 440?
Sí. A KSeF hi és la factura original, la de originalKsefNumber. Només es va rebutjar l'enviament nou.
Quant de temps recorda KSeF un número de factura?
Durant 10 anys complets des del final de l'any d'emissió. Fins llavors, el mateix NIF, tipus i número donen 440.

Amb el nostre mòdul
Poland KSeF 2.0 Validator no envia factures, però té el botó «Mark accepted by KSeF» per a una factura pujada a KSeF fora d'Odoo, amb el número KSeF que va donar el sistema. Si després l10n_pl_edi envia també aquesta factura i KSeF la rebutja, el mòdul la deixa en Accepted i afegeix: «KSeF rejected the new sending of this invoice by l10n_pl_edi, already accepted by KSeF with KSeF number …: it stays Accepted.». En la resta de casos pren de l10n_pl_edi l'estat Rejected, sense el codi 440.
Continua llegint
Comprovat al codi del mòdul (versió 20.0) i a les fonts enllaçades
Fonts
- Codi del mòdul: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): i18n/pl.po
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/open-api.json
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/weryfikac
- github.com/CIRFMF/ksef-client-csharp/blob/a66cbc669814e6c2a615748a13a0a04a650ba04f/KSeF.Cl
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/schemy/FA
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/i18n
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/i18n
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/data
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- Codi del mòdul: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/account_move.py
- Codi del mòdul: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): views/account_move_views.xml
