Documentație API & Gestionare Bonuri

Bon rapid test

Lista Produse

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%

Lista Bonuri

ID Nume Utilizator Data Adresa Livrare Total Produse
Facturi
Versiune API documentată: 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.
EndpointMetodă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

POST — Plasare comandă online

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).

Exemplu request (Bolt / platformă)

{
    "nrTelefon": "LE9X8",
    "adresaLivrare": "BOLT",
    "formaPlata": "plata_moderna",
    "comentariuBon": "",
    "produse": [
        { "id": 153, "cantitate": 1, "pret": 45.6 },
        { "id": 147, "cantitate": 1, "pret": 41.6 }
    ]
}

Exemplu request (generic)

{
    "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 }
    ]
}

Răspuns succes (format actual — obligatoriu după update server)

{
    "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
        }
    ]
}

Răspuns eroare

{ "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).

GET — Meniu produse (livrare / variante L)

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 stringRezultat
?livrareL=1Recomandat platformă: categorii Delivery + doar produse L
?delivery=1&onlyL=1Echivalent livrareL=1
?livrare=1 sau ?delivery=1Toate produsele din categorii Delivery
?onlyL=1 sau ?l=1Doar produse L (orice categorie)
?excludeL=1Produse fără sufix L
(fără parametri)Toate produsele active

Exemplu răspuns (?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
        }
    ]
}

GET — Bonuri nepreluate (poll POS)

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.

Exemplu Postman

Endpoint

Exemplu Apelare

Exemplu URL:

api_search_product.php?query=margherita

Răspuns JSON

{
    "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"
        }
    ]
}
    

Copiere produs (variantă L)

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.

Sincronizare prețuri

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ă.

Ștergere variante L

Ș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):

Testează API-ul

Rezultate Căutare