Přeskočit na obsah

Ucetni integrace

Modul propojuje WooCommerce s polskymi fakturacnimi systemy: wFirma, Fakturownia a iFirma. Faktury se odesilaji automaticky s opakovanim pri chybach API.

SystemFormat APIVerze APIAutentizace
wFirmaXMLv2API key + API secret
FakturowniaJSONv3API token
iFirmaJSONv1Login + API key (klic faktur)

V danem okamziku muze byt aktivni pouze jedna ucetni integrace.

Prejdete do WooCommerce > Nastaveni > Polski PRO > Ucetnictvi.

Vyberte ucetni system a zadejte autentizacni udaje.

NastaveniPopis
API keyKlic API z panelu wFirma
API secretSecret API
ID firmyIdentifikator firmy ve wFirma
Serie fakturSerie cislovani (napr. “FV”, “FVS”)
NastaveniPopis
SubdomenaNazev subdomeny (napr. mojafirma.fakturownia.pl)
API tokenToken API z nastaveni uctu
ID oddeleniVolitelne - ID oddeleni vystavujiciho faktury
Jazyk fakturypl nebo en
NastaveniPopis
LoginLogin k uctu iFirma
Klic API fakturKlic API pro vystavovani faktur
Klic API abonentaKlic API abonenta (pro ziskavani dat)
NastaveniVychozi hodnotaPopis
Automaticke vystavovaniAnoVystavit fakturu automaticky po zaplaceni objednavky
Spousteci statusprocessingStatus objednavky spoustejici vystaveni faktury
Typ dokumentuFaktura DPHFaktura DPH, Proforma faktura, Uctenka
Pridat do e-mailuAnoPrilozit PDF faktury k e-mailu objednavky
Retry pri chybeAnoOpakovat pokus pri chybe API
Maximalni pocet pokusu5Limit opakovanych pokusu
  1. Objednavka WooCommerce zmeni status na processing (nebo jiny nastaveny)
  2. Modul shromazdi data objednavky a namapuje je na format poskytovatele
  3. Data jsou odeslana asynchronne do API ucetniho systemu
  4. Po uspesnem vytvoreni je ID faktury ulozeno v meta objednavky
  5. PDF faktury je stazeno a prilozeno k e-mailu zakaznika

Modul automaticky mapuje data objednavky WooCommerce na pozadovany format API:

Data WooCommercewFirma (XML)Fakturownia (JSON)iFirma (JSON)
Nazev firmy<contractor><name>buyer_nameKontrahent.Nazwa
DIC<contractor><nip>buyer_tax_noKontrahent.NIP
Adresa<contractor><street>buyer_streetKontrahent.Ulica
Polozky objednavky<invoicecontents>positionsPozycje
Sazba DPH<vat_code>taxStawkaVat
Zpusob platby<paymentmethod>payment_typeSposobZaplaty
<api>
<invoices>
<invoice>
<contractor>
<name>Firma Testowa Sp. z o.o.</name>
<nip>1234567890</nip>
<street>ul. Testowa 1</street>
<city>Warszawa</city>
<zip>00-001</zip>
</contractor>
<invoicecontents>
<invoicecontent>
<name>Produkt testowy</name>
<unit>szt.</unit>
<count>2</count>
<price>100.00</price>
<vat_code>23</vat_code>
</invoicecontent>
</invoicecontents>
<paymentmethod>transfer</paymentmethod>
<paymentdate>2026-04-12</paymentdate>
</invoice>
</invoices>
</api>
{
"invoice": {
"kind": "vat",
"number": null,
"buyer_name": "Firma Testowa Sp. z o.o.",
"buyer_tax_no": "1234567890",
"buyer_street": "ul. Testowa 1",
"buyer_city": "Warszawa",
"buyer_post_code": "00-001",
"positions": [
{
"name": "Produkt testowy",
"quantity": 2,
"total_price_gross": "246.00",
"tax": "23"
}
],
"payment_type": "transfer",
"payment_to": "2026-04-12"
}
}

Kdyz API vraci chybu (HTTP 5xx, timeout, chyba pripojeni), modul automaticky planuje opakovanej pokus s exponencialnim zpozdemim:

PokusZpozdeniCas od prvniho pokusu
1Okamzite0 s
230 s30 s
32 min2 min 30 s
48 min10 min 30 s
532 min42 min 30 s

Zpozdeni je vypocitano vzorcem: delay = base_delay * 2^(attempt - 1), kde base_delay = 30 sekund.

Chyby klienta (HTTP 4xx) nejsou opakovany automaticky, protoze ukazuji na problem s daty, ne s API:

  • 400 Bad Request - neplatna data
  • 401 Unauthorized - chybny API token
  • 403 Forbidden - nedostatecna opravneni
  • 422 Unprocessable Entity - validace dat

Tyto chyby jsou logovany a vyzaduji zasah administratora.

Faktury jsou odesilany asynchronne pomoci WC_Action_Scheduler, coz znamena, ze neblokyji proces vytvareni objednavky. Zakaznik vidi potvrzeni objednavky okamzite a faktura je generovana na pozadi.

/**
* Akcja wywoływana po pomyślnym wystawieniu faktury.
*
* @param int $order_id ID zamówienia
* @param string $invoice_id ID faktury w systemie księgowym
* @param string $provider Nazwa dostawcy ('wfirma', 'fakturownia', 'ifirma')
*/
do_action('polski_pro/accounting/invoice_created', int $order_id, string $invoice_id, string $provider);

Priklad - logovani do externiho systemu:

add_action('polski_pro/accounting/invoice_created', function (
int $order_id,
string $invoice_id,
string $provider
): void {
error_log(sprintf(
'[Polski PRO] Faktura %s wystawiona w %s dla zamówienia #%d',
$invoice_id,
$provider,
$order_id
));
}, 10, 3);
/**
* Akcja wywoływana po wyczerpaniu prób wysłania faktury.
*
* @param int $order_id ID zamówienia
* @param string $provider Nazwa dostawcy
* @param string $error Komunikat błędu
* @param int $attempts Liczba wykonanych prób
*/
do_action('polski_pro/accounting/invoice_failed', int $order_id, string $provider, string $error, int $attempts);

Priklad - oznameni administratorovi:

add_action('polski_pro/accounting/invoice_failed', function (
int $order_id,
string $provider,
string $error,
int $attempts
): void {
$admin_email = get_option('admin_email');
wp_mail(
$admin_email,
sprintf('Błąd wystawienia faktury - zamówienie #%d', $order_id),
sprintf(
"Nie udało się wystawić faktury w %s po %d próbach.\n\nBłąd: %s\n\nSprawdź zamówienie: %s",
$provider,
$attempts,
$error,
admin_url(sprintf('post.php?post=%d&action=edit', $order_id))
)
);
}, 10, 4);
/**
* Filtruje dane faktury przed wysłaniem do API.
*
* @param array $invoice_data Dane faktury w formacie dostawcy
* @param \WC_Order $order Zamówienie WooCommerce
* @param string $provider Nazwa dostawcy
*/
apply_filters('polski_pro/accounting/invoice_data', array $invoice_data, \WC_Order $order, string $provider): array;

Priklad - pridani poznamek k fakture:

add_filter('polski_pro/accounting/invoice_data', function (
array $invoice_data,
\WC_Order $order,
string $provider
): array {
if ($provider === 'fakturownia') {
$invoice_data['invoice']['description'] = sprintf(
'Zamówienie internetowe #%s',
$order->get_order_number()
);
}
return $invoice_data;
}, 10, 3);

Na seznamu objednavek WooCommerce je pridan sloupec “Faktura” zobrazujici:

  • Zelena ikona - faktura uspesne vystavena
  • Zluta ikona - probiha odesilani / retry
  • Cervena ikona - chyba (kliknete pro zobrazeni detailu)
  • Seda ikona - netyka se (bez automatickeho vystavovani)

Na strance upravy objednavky, v panelu Faktura, administrator muze:

  1. Vystavit fakturu rucne (pokud automaticke vystavovani selhalo)
  2. Stahnout PDF faktury
  3. Opakovat odeslani faktury
  4. Zobrazit log pokusu a chyb

Faktura se nevystavuje automaticky Zkontrolujte, ze spousteci status je spravny. Ujistete se, ze Action Scheduler funguje (WooCommerce > Stav > Naplanovane akce). Zkontrolujte log chyb v WooCommerce > Stav > Logy.

Chyba “Unauthorized” pri pripojeni k API Overite autentizacni udaje. V pripade wFirma zkontrolujte, ze API key a secret jsou z hlavniho uctu (ne poductu). U Fakturownia se ujistete, ze subdomena je spravna.

Duplikaty faktur Modul zabezpecuje proti duplikatum kontrolou meta _polski_pro_invoice_id pred vystavenim. Pokud se duplikaty vyskytuji, zkontrolujte, ze jiny plugin nespousti stejny hook objednavky.

Tato stránka slouží pouze k informačním účelům a nepředstavuje právní poradenství. Před implementací se poraďte s právníkem. Polski for WooCommerce je open source software (GPLv2) poskytovaný bez záruky.