Morffeus Docs
ENSR morffeus.com

Predračuni

Predračun je ponuda sa cenama koja dolazi pre porudžbine. Zamrzava cene korpe, rezerviše zalihe i dobija broj i poziv na broj za uplatu. Kupac ga plaća, vaš magacin potvrđuje šta može da isporuči, a vi ga pretvarate u porudžbinu. Predračun koji se ne plati na vreme ističe.

Životni ciklus#

Predračun se pravi od korpe kojoj je naplata izračunala cene, sa primenjenim promocijama i pogodnostima: od obračuna porudžbine, koji imenuje order_processing_id. Odatle prolazi kroz ove statuse:

StatusŠta znači
draftNapravljen. Cene su zamrznute, zalihe rezervisane, iznos se duguje.
awaiting_paymentPlaćanje karticom je u toku, na primer čeka se 3-D Secure.
paidUplaćeno pokriva ukupan iznos. Delimične uplate se sabiraju dok ga ne pokriju.
confirmedMagacin je potvrdio svaku stavku u celosti.
partial_confirmedMagacin je za neke stavke potvrdio manje. Cene predračuna su ponovo izračunate, a razlika vraćena.
convertedPretvoren u porudžbinu. Konačno.
canceledOtkazan; naplaćene uplate su vraćene, a zalihe oslobođene. Konačno.
expiredNije završen na vreme pa je automatski otkazan, bez poruke kupcu. Konačno.

Predračun traje 72 sata, osim ako je vaša aplikacija drugačije podešena; expires_at kaže do kada. Njegove stavke, cene, kupac i isporuka ne mogu da se menjaju: da biste ih promenili, otkažite predračun i napravite nov. Menjaju se samo oznake, komentar i upozorenja.

Predračun u listama#

Ono što GET /proforma_orders vraća za svaki predračun. Iznosi su brojevi u valuti predračuna.

PoljeOpis
idintegerNaš id predračuna.
proforma_numberstringNjegov broj, na primer P-2026-7KQ2XD. Jedinstven u vašoj aplikaciji i nije redni.
proforma_status_id, proforma_status_name, proforma_status_color, proforma_status_finalStatus.
processing_datedatetimeKad su cene zamrznute.
expires_at, expires_in_secondsKad predračun ističe i koliko je još ostalo.
customer_id, customer_email, customer_first_name, customer_last_nameKupac. anonymous je true za gosta.
sales, discount, net_sales, vat, end_salesnumberBruto, popust, neto, PDV i iznos za plaćanje.
paid, debtnumberŠta je plaćeno i šta se još duguje.
market_id, currency_id, sales_channel_id, sales_channelGde je predračun napravljen.
warehouse_confirmed_at, converted_at, order_idmože biti nullKad ga je magacin potvrdio, kad je pretvoren i porudžbina koja je od njega nastala.
canceled, canceled_at, cancel_reasonDa li je, kada i zašto otkazan.
tags, alerts_count, open_alerts_countVaše oznake, i koliko upozorenja ima i koliko ih je nerešeno. Upozorenje beleži nešto što traži čoveka, na primer povraćaj novca koji nije uspeo.
inserted_at, updated_atdatetime · ISO 8601, UTCKad je napravljen i poslednji put izmenjen. Šalje se bez pomaka.

Lista predračuna#

GET /api/v2/proforma_orders

Predračuni vaše aplikacije, stranicu po stranicu. Filtrima nalazite ono što traži radnju: predračune koji uskoro ističu, plaćene koji čekaju magacin, one sa otvorenim upozorenjima.

Parametri upita

ParametarOpis
statusstringNaziv jednog statusa, ili više njih odvojenih zarezima: status=paid,confirmed.
expiring_withinintegerOtvoreni predračuni koji ističu za toliko sati.
has_alertsbooleantrue: bar jedno nerešeno upozorenje. false: nijedno.
anonymousbooleanSamo predračuni gostiju, ili samo kupaca.
customer_idintegerPredračuni jednog kupca.
date_from, date_todatum ili datum i vremePo processing_date, uključivo. Sam datum pokriva ceo dan.
orderBystringexpires_at, end_sales, paid, debt, customer_name, processing_date, inserted_at, updated_at, proforma_number ili status, po želji sa asc ili desc iza.
offset, limitinteger · podrazumevano 0, 30Stranice. Pogledajte Paginaciju i filtriranje.

Vrednost filtera koju ne možemo da iskoristimo zanemaruje se umesto da se odbije.

Vraća

data: listu predračuna. GET /proforma_orders/stats umesto toga vraća brojeve za kontrolnu tablu: otvorene predračune i njihov zbir, one koji čekaju uplatu, one koji ističu za 24 sata, plaćene a nepretvorene, pretvorene u poslednjih 7 dana, i stopu pretvaranja između date_from i date_to (podrazumevano: poslednjih 30 dana).

GET/proforma_orders
curl -G "https://api.morffeus.com/api/v2/proforma_orders" \
  -H "Authorization: Bearer $MORFFEUS_TOKEN" \
  -d "status=paid" -d "orderBy=expires_at"
Odgovor200 OK
{
  "data": [
    {
      "id": 2207,
      "proforma_number": "P-2026-7KQ2XD",
      "proforma_status_name": "paid",
      "proforma_status_final": false,
      "processing_date": "2026-10-01T09:12:40",
      "expires_at": "2026-10-04T09:12:40",
      "expires_in_seconds": 203400,
      "customer_id": 5521,
      "end_sales": 5490.0,
      "paid": 5490.0,
      "debt": 0.0,
      "order_id": null,
      "open_alerts_count": 0,
      …
    }
  ]
}

Čitanje jednog predračuna#

GET /api/v2/proforma_orders/{id}

Jedan predračun u celosti, u obliku porudžbine, pa isti kod može da čita oba.

Vraća

data: polja i iznose predračuna, plus:

  • items i fee_items: stavke, svaka sa traženom količinom i, posle koraka u magacinu, potvrđenom količinom.
  • payments: svaku uplatu sa amount, payment_method, payment_status, payment_date i finalized.
  • payment_instructions: ono što traži uplata na račun: primalac i račun koje je vaša aplikacija podesila, iznos koji se još duguje i poziv na broj (model 97).
  • tax_brackets, transaction_reference, delivery_area i alerts sa njihovim rešenjem.
  • converted_order_number kad je pretvoren.

Predračun koji nije u vašoj aplikaciji vraća 404 sa praznim telom.

Odgovor200 OK
{
  "data": {
    "id": 2207,
    "proforma_number": "P-2026-7KQ2XD",
    "proforma_status": "paid",
    "order_processing_id": 88123,
    "end_sales": 5490.0,
    "paid": 5490.0,
    "payments": [
      {
        "amount": 5490.0,
        "payment_method": "Bank transfer",
        "payment_status": "Captured",
        "finalized": true,
        …
      }
    ],
    "payment_instructions": { … },
    "alerts": [],
    …
  }
}

Pravljenje predračuna#

POST /api/v2/proforma_orders

Pretvara obračun porudžbine u predračun. Cene, promocije i pogodnosti obračuna se zamrzavaju, zalihe se rezervišu, a obračun se troši: od njega ne može da nastane drugi predračun ni porudžbina.

Parametri tela zahteva

ParametarOpis
order_processing_idobaveznointegerObračun porudžbine, iz naplate. Nije umotan u objekat.

Vraća

201 i predračun u data, u obliku iz Čitanja jednog predračuna.

Greške

StatusKada
422Obračun ne postoji ili je potrošen: API.OrderProcessings.StaleEvaluation. Pripada drugoj aplikaciji: API.ProformaOrders.WrongApp. Proizvod nema PDV: API.Products.MissingVat. Podaci gosta za isporuku nisu potpuni: API.Orders.GuestDeliveryDataIncomplete. Mesto preuzimanja nedostaje ili nije dostupno: API.ShipmentMethods.PickupPointRequired, API.ShipmentMethods.PickupPointUnavailable. Nema dovoljno zaliha: Insufficient stock for product: ….
POST/proforma_orders
curl -X POST "https://api.morffeus.com/api/v2/proforma_orders" \
  -H "Authorization: Bearer $MORFFEUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "order_processing_id": 88123 }'
Greška422 Unprocessable Entity
{
  "errors": {
    "OrderProcessings": ["API.OrderProcessings.StaleEvaluation"]
  }
}

Uplata, potvrda, pretvaranje#

POST /api/v2/proforma_orders/{id}/convert

Tri koraka koja vode predračun napred. Svaki vraća predračun, a pretvaranje porudžbinu, i ne prolazi sa API.ProformaOrders.AlreadyFinal za predračun koji je pretvoren, otkazan ili istekao.

PozivOpis
POST /proforma_orders/{id}/payBeleži uplatu. Telo: {"payment": {"payment_method_id": …, "amount": …}}. amount od 0 ili manje plaća ceo preostali dug. Koristite ga za uplate koje se odmah završe, kao gotovina ili uplata na račun koju ste primili; plaćanja karticom za koja treba pregledač kupca idu preko naplate u prodavnici. Kad uplate pokriju ukupan iznos, status postaje paid.
POST /proforma_orders/{id}/warehouse_confirmPotvrđuje šta magacin može da isporuči. Telo: {"adjustments": [{"proforma_order_item_id": …, "qty_confirmed": …}]}. Stavke koje izostavite potvrđuju se u celosti. Kad se stavka smanji, cene predračuna se ponovo računaju sa promocijama koje je imao kad je napravljen, zalihe koje više ne trebaju se oslobađaju, preplaćena razlika se vraća, a status postaje partial_confirmed; inače confirmed.
POST /proforma_orders/{id}/convertPravi porudžbinu: njene stavke nose potvrđene količine, uplate prelaze na porudžbinu, a pogodnosti koje je kupac zaradio se knjiže. Zalihe ostaju rezervisane kao što su bile. Ponovni poziv vraća istu porudžbinu. Odgovor je zapis porudžbine u data.

Greške

StatusKada
404U vašoj aplikaciji nema takvog predračuna. Telo je prazno.
422Predračun je konačan: API.ProformaOrders.AlreadyFinal. Način plaćanja nije podržan: API.PaymentMethod.NotSupported. Uplata je veća od duga, ili je dug već plaćen: Payment amount exceeds order debt, Order debt is already paid. Uplata gotovinom traži iznos: API.Payments.CashAmountRequired.

Povraćaj novca koji ne uspe tokom koraka u magacinu ne obara poziv: dodaje se u alerts predračuna da ga neko proveri.

POST/proforma_orders/{id}/warehouse_confirm
curl -X POST "https://api.morffeus.com/api/v2/proforma_orders/2207/warehouse_confirm" \
  -H "Authorization: Bearer $MORFFEUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "adjustments": [
      { "proforma_order_item_id": 9911, "qty_confirmed": 1 }
    ]
  }'
Greška422 Unprocessable Entity
{
  "errors": {
    "ProformaOrders": ["API.ProformaOrders.AlreadyFinal"]
  }
}

Oznake, komentar ili otkazivanje#

DELETE /api/v2/proforma_orders/{id}
PozivOpis
PUT /proforma_orders/{id}, PATCHMenja jedine izmenljive delove. Telo: tags (lista stringova, koja zamenjuje staru), comment, i alerts koja treba rešiti, svako kao {"index": …, "resolved": true}. Oznake i komentar ne mogu da se menjaju na konačnom predračunu; upozorenja mogu uvek da se reše. Vraća predračun.
DELETE /proforma_orders/{id}Otkazuje predračun: naplaćene uplate se vraćaju, zalihe i zadržane pogodnosti se oslobađaju, a status postaje canceled. Opciono telo: reason. Vraća 204 bez tela.

Greške

StatusKada
404U vašoj aplikaciji nema takvog predračuna.
422Predračun je konačan: API.ProformaOrders.AlreadyFinal. Oznake ili komentar nisu ispravni: API.ProformaOrders.InvalidTags, API.ProformaOrders.InvalidComment. Upozorenje za rešavanje ne postoji: API.ProformaOrders.AlertNotFound, i ništa se ne upisuje.
DELETE/proforma_orders/{id}
curl -X DELETE "https://api.morffeus.com/api/v2/proforma_orders/2207" \
  -H "Authorization: Bearer $MORFFEUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Customer changed the order" }'
Poslednja izmena 1. oktobra 2026. · API v2 Nešto nije u redu na ovoj stranici?