Integrare PrestaShop cu FirstBill: facturi automate din comenzi
Actualizat la
Pe scurt
PrestaShop se conectează la FirstBill prin cod, dintr-un modul sau un fragment care trimite comanda în formatul FirstBill. În FirstBill creezi o conexiune în Configurare → Magazine online, apoi fiecare comandă devine factură o singură dată, cu clientul, TVA-ul și încasarea. Integrarea necesită planul Pro.
Ce face integrarea PrestaShop – FirstBill
- Emite automat factura pentru fiecare comandă, cu numerotarea și seria firmei tale.
- Caută clientul după CUI (sau după email și nume) și îl creează dacă nu există.
- Preia cotele de TVA, reducerile și transportul din comandă.
- Înregistrează încasarea pe factură când comanda este plătită.
- Nu emite niciodată două facturi pentru aceeași comandă, chiar dacă platforma retrimite notificarea.
- Afișează în FirstBill, la conexiune, numărul de facturi emise și ultima eroare, dacă apare.
Metode de integrare pentru PrestaShop
PrestaShop este o platformă open-source de magazin online, folosită des în România. Nu trimite comenzi la o adresă externă fără un modul, așa că integrarea se face printr-un modul (propriu sau al unui dezvoltator) care apelează FirstBill la evenimentele de comandă.
| Metodă | Disponibilitate | Observații |
|---|---|---|
| Webhook direct PrestaShop → FirstBill | Nu | Este nevoie de un modul care trimite comanda. |
| Modul propriu cu hook-uri PrestaShop | Recomandat | Exemplul de cod de mai jos pornește de la hook-urile comenzii. |
| Zapier, Make, n8n | Depinde de conector | Verifică disponibilitatea unui declanșator PrestaShop în instrumentul tău. |
Cum conectezi PrestaShop la FirstBill, pas cu pas
- În FirstBill (planul Pro), deschide Configurare → Magazine online, alege „Altă platformă / Zapier / Make / cod propriu” și creează conexiunea. Copiază adresa webhook și tokenul (se afișează o singură dată).
- În PrestaShop adaugă o extensie, un modul sau un fragment de cod care rulează când o comandă este plasată sau plătită, la punctele de extensie de mai jos.
- Din acel cod trimite comanda ca JSON la adresa webhook, cu antetul X-Firstbill-Token (exemplul de cod este mai jos).
- Pregătește corpul în formatul comenzii FirstBill: id comandă, client, produse, TVA și starea plății.
- Testează pe un mediu de test sau cu o comandă de probă. Factura apare în Vânzări → Facturi emise.
- Eroarea, dacă există, apare în Configurare → Magazine online, la conexiunea respectivă.
Puncte de extensie în PrestaShop
| Unde | Când se declanșează |
|---|---|
| actionValidateOrder | La plasarea comenzii (comandă validată). |
| actionOrderStatusPostUpdate | După schimbarea stării comenzii; utilă pentru „plată acceptată”. |
Formatul comenzii FirstBill
Exemplu de corp JSON pentru o comandă plătită, cu două bucăți dintr-un produs și transport:
{
"externalId": "1001",
"customer": {
"name": "FIRMA CLIENT SRL",
"cui": "RO12345678",
"address": "Str. Exemplu 1",
"city": "Focșani",
"county": "VN",
"email": "client@exemplu.ro",
"phone": "0700000000"
},
"lines": [
{ "name": "Produs", "quantity": 2, "unitPrice": 50, "vatRate": 21, "sku": "P1" }
],
"shipping": { "name": "Curier", "price": 15, "vatRate": 21 },
"priceIncludesVat": false,
"paid": true,
"paymentMethod": "CARD_ONLINE",
"notes": "Comandă #1001"
}Câmpurile comenzii FirstBill
Comenzile se trimit ca JSON, la adresa webhook a conexiunii. Doar identificatorul comenzii, numele clientului și produsele sunt obligatorii.
| Câmp | Ce trimiți din platformă |
|---|---|
| externalId | Numărul sau ID-ul unic al comenzii. Aceeași valoare retrimisă nu emite o a doua factură. |
| customer.name | Denumirea firmei sau numele persoanei. |
| customer.cui | CUI-ul, dacă magazinul îl colectează (câmp personalizat la checkout). Fără CUI, clientul rămâne persoană fizică. |
| customer.address, city, county, email, phone | Datele de facturare. Județul poate fi numele sau codul (Vrancea sau VN). |
| lines[].name, quantity, unitPrice | Produsele. Prețul este fără TVA, sau cu TVA dacă pui priceIncludesVat true. |
| lines[].vatRate | Cota de TVA (21, 11 sau 0). Dacă lipsește, se folosește 21 pentru firmele plătitoare de TVA. |
| lines[].discount | Valoarea totală a reducerii liniei, în aceeași logică a prețului. |
| shipping.price | Costul transportului, trecut ca linie separată pe factură. |
| priceIncludesVat | true dacă prețurile din magazin includ TVA. |
| paid, paymentMethod | paid true înregistrează și încasarea. Metode: CARD_ONLINE, COD (ramburs), TRANSFER, CASH, CARD și altele. |
Exemplu de cod (PHP)
Funcția de mai jos trimite o comandă la FirstBill. Este un punct de pornire: apelează-o din punctul de extensie ales, după ce construiești `$order`.
<?php
// Exemplu de pornire: trimite comanda la FirstBill. Testează pe un mediu de test înainte de producție.
function firstbill_send_order(array $order): void {
$ch = curl_init('https://cloud.firstbill.ro/api/hooks/ID_CONEXIUNE');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'X-Firstbill-Token: TOKENUL_TAU'],
CURLOPT_POSTFIELDS => json_encode($order, JSON_UNESCAPED_UNICODE),
]);
curl_exec($ch);
curl_close($ch);
}
// $order are structura din „Formatul comenzii FirstBill”: externalId, customer, lines, paid etc.TVA, CUI și transport
- Cotele de TVA se iau din comandă. Dacă magazinul nu are taxe configurate, prețurile se tratează ca având TVA inclus.
- Pentru clienți persoane juridice, magazinul trebuie să colecteze CUI-ul la checkout (câmp personalizat). FirstBill nu importă CNP-ul: persoanele fizice rămân fără CUI.
- Transportul apare ca linie separată, cu cota lui de TVA.
- Firmele neplătitoare de TVA emit facturi fără TVA, indiferent de cotele din comandă.
- Dacă ai activată transmiterea automată în SPV, factura emisă din comandă se transmite ca orice altă factură.
Particularități PrestaShop
- Câmpul CUI este adăugat de modulele de checkout pentru firme: citește-l din câmpul modulului și trimite-l în customer.cui.
- Prețurile din PrestaShop pot fi afișate cu sau fără TVA, în funcție de setările tale: setează priceIncludesVat corespunzător.
Ce îți trebuie
- Un cont FirstBill cu planul Pro (integrările cu magazine online folosesc conexiuni webhook și API).
- Acces de administrator în magazin, ca să poți adăuga un webhook sau o automatizare.
- Pentru e-Factura: firma conectată la ANAF în FirstBill (planul Start sau Pro).
Întrebări frecvente
- Ce hook PrestaShop folosesc?
- actionValidateOrder la plasarea comenzii sau actionOrderStatusPostUpdate la schimbarea stării (de exemplu plată acceptată).
- Există un modul gata făcut?
- Momentan nu oferim un modul PrestaShop; exemplul de cod este un punct de pornire pentru dezvoltatorul tău.
- Pot emite automat facturi din comenzile PrestaShop?
- Da, în planul Pro. Fiecare comandă PrestaShop devine o factură în FirstBill, o singură dată, cu încasarea înregistrată dacă este plătită.
- Ce se întâmplă dacă PrestaShop trimite aceeași comandă de două ori?
- FirstBill recunoaște comanda după identificatorul ei și întoarce factura deja emisă, fără să creeze alta.
Începe gratuit
Creează un cont și emite prima factură în câteva minute. Nu ai nevoie de card pentru planul gratuit.