| ID | Denumire | Preț | Stoc | Subcategorie | TVA |
|---|---|---|---|---|---|
| 4 | CASTEL FIRMIAN CABERNET 2022 | 65.00 RON | 119 | Vin | 21% |
| 8 | ARAGOSTA 2022 | 58.00 RON | 123 | Vin | 21% |
| 11 | CASTEL FIRMIAN CHARDONNAY | 52.00 RON | 118 | Vin | 21% |
| 12 | IMPRINT PRIMITIVO | 82.00 RON | 123 | Vin | 21% |
| 13 | CASTEL FIRMIAN MOSCATO 2022 | 49.00 RON | 123 | Vin | 21% |
| 14 | DONNAFUGATA SEDARA 2019 | 99.00 RON | 123 | Vin | 21% |
| 16 | POLIZIANO CHIANTI 2022 | 78.00 RON | 123 | Vin | 21% |
| 17 | GINEPRONE CHIANTI2019 | 65.00 RON | 123 | Vin | 21% |
| 20 | GAJA SITO MORESCO | 238.00 RON | 123 | Vin | 21% |
| 21 | RATTI NEBBIOLO 2020 | 154.00 RON | 123 | Vin | 21% |
| ID | Nume Utilizator | Data | Adresa Livrare | Total | Produse |
|---|
2026-06-11 —
răspunsurile JSON conțin câmpul apiVersion (insert bon, get produse).
Dacă lipsește, fișierele de pe server trebuie actualizate.
| Endpoint | Metodă | Utilizare |
|---|---|---|
api_insert_bon.php |
POST JSON | Platformă (Bolt etc.) — plasează comandă, scade stoc, returnează total + linii |
api_get_produse.php?livrareL=1 |
GET | Meniu livrare: categorii Delivery + produse cu sufix „ L” |
api_get_bonuri.php |
GET | Restaurant / Magazin — poll comenzi nepreluate (UserId=0) |
api_search_product.php?query=... |
GET | Căutare produs după nume |
URL: api_insert_bon.php · Metodă: POST · Header: Content-Type: application/json
Câmpuri obligatorii: nrTelefon, adresaLivrare, produse[] (fiecare cu id, cantitate).
Opțional: formaPlata, comentariuBon, pret pe linie (dacă lipsește → preț catalog).
{
"nrTelefon": "LE9X8",
"adresaLivrare": "BOLT",
"formaPlata": "plata_moderna",
"comentariuBon": "",
"produse": [
{ "id": 153, "cantitate": 1, "pret": 45.6 },
{ "id": 147, "cantitate": 1, "pret": 41.6 }
]
}
{
"nrTelefon": "0744123456",
"adresaLivrare": "Strada Mihai Viteazu, Nr. 10, București",
"formaPlata": "plata_moderna",
"comentariuBon": "Inchidere rapida",
"produse": [
{ "id": 1, "cantitate": 2, "pret": 25.50 },
{ "id": 2, "cantitate": 1, "pret": 99.00 }
]
}
{
"success": true,
"apiVersion": "2026-06-11",
"bonId": 500270,
"totalFiscal": 87.2,
"tipVanzare": 6,
"comentariuBon": "",
"produse": [
{
"id": 153,
"denumire": "NUME PRODUS L",
"cantitate": 1,
"pret": 45.6,
"pretCatalog": 40,
"totalLinie": 45.6
},
{
"id": 147,
"denumire": "ALT PRODUS L",
"cantitate": 1,
"pret": 41.6,
"pretCatalog": 38,
"totalLinie": 41.6
}
]
}
{ "success": false, "message": "Stoc insuficient pentru produsul ..." }
Mapare formaPlata:
numerar/cash=0,
card=1,
bonuri/bon=2,
voucher=3,
plata_moderna/online=6
Condiții: tura deschisă în aplicația de vânzare; produse active, stoc suficient; bon creat cu UserId=0 (nepreluat).
URL: api_get_produse.php · Metodă: GET
Returnează produse active (Deleted=0, Active=1).
Variantele L = denumire produs terminată cu spațiu + L (ex: PIZZA MARGHERITA L).
| Query string | Rezultat |
|---|---|
?livrareL=1 | Recomandat platformă: categorii Delivery + doar produse L |
?delivery=1&onlyL=1 | Echivalent livrareL=1 |
?livrare=1 sau ?delivery=1 | Toate produsele din categorii Delivery |
?onlyL=1 sau ?l=1 | Doar produse L (orice categorie) |
?excludeL=1 | Produse fără sufix L |
| (fără parametri) | Toate produsele active |
?livrareL=1){
"status": "success",
"apiVersion": "2026-06-11",
"count": 2,
"filters": {
"delivery": true,
"onlyL": true,
"excludeL": false,
"activeOnly": true
},
"products": [
{
"ID": 153,
"Denumire": "PRODUS EXEMPLU L",
"Pret": 45.60,
"Stoc": 10,
"Delivery": 1,
"isL": true,
"NumeCategorie": "CATEGORIE L",
"NumeSubCategorie": "SUBCATEGORIE L",
"CodBare": "...",
"UM": "bucata",
"TVA": 19
}
]
}
URL: api_get_bonuri.php · Metodă: GET
Folosit de aplicația Restaurant / Magazin (la ~2 secunde) pentru comenzi API nepreluate pe tura curentă (UserId=0).
{
"status": "success",
"bonuri": [
{
"ID": 500270,
"NumeUser": "api",
"DataBon": "2026-06-11 20:30:00",
"AdresaLivrare": "BOLT",
"TotalFiscal": "87.20"
}
]
}
Listă goală "bonuri": [] dacă nu există tura deschisă sau nu sunt comenzi nepreluate.
Pentru a căuta un produs după denumire, faceți un GET la api_search_product.php.
GETapi_search_product.php?query={fraza_cautata}query (string) - Fraza căutată în denumirea produselorExemplu URL:
api_search_product.php?query=margherita
{
"status": "success",
"products": [
{
"ID": "41",
"IDSubCategorie": "12",
"CodBare": "6450476450474",
"Denumire": "MARGHERITA ",
"Descriere": "-",
"Pret": "43.00",
"NumeSubCategorie": "PIZZA",
"UM": "bucata",
"Stoc": "0.000",
"TVA": "9",
"Relevanta": "2"
}
]
}
Faceți POST la api_copy_product.php pentru a copia un produs cu un preț nou. Se creează automat categoria și subcategoria (nume sursă + L), iar produsul nou primește același nume + L.
Un singur produs:
{
"id": 4,
"pret": 77.77
}
Bulk (mai multe produse):
{
"produse": [
{ "id": 4, "pret": 77.77 },
{ "id": 12, "pret": 35.50 }
]
}
Parametri per produs: id și pret. Răspuns: id (noul produs), produsNou. Bulk: copiate[].id, erori.
Faceți POST la api_sync_prices.php. Răspunsul are mereu aceeași structură:
{
"success": true,
"actualizate": [
{ "id": 151, "denumire": "LIPIE VITA MARE L", "pretVechi": 55, "pret": 55 }
],
"erori": [],
"totalActualizate": 1,
"totalErori": 0
}
Un singur produs:
{ "id": 151, "pret": 55 }
Bulk:
{
"produse": [
{ "id": 151, "pret": 55 },
{ "id": 7, "pret": 60 }
]
}
Se actualizează doar ID-ul trimis — nu se sincronizează automat perechea L / sursă.
Șterge definitiv din baza de date toate produsele, subcategoriile și categoriile cu sufixul L (spațiu + L). Nu afectează produse precum Coca Cola 0.33L.
API: GET api_delete_l_items.php (preview) · POST api_delete_l_items.php cu { "confirm": true }
În prezent în baza de date (total, inclusiv soft-delete):