Skip to content

Refund

Ilgari sotilgan chekni qaytaradi. Buning uchun o'sha sotuvdan olingan saleId kerak.

POSThttps://localhost:26496/service·command: Refund

So'rov

json
{
  "id": "2",
  "method": "send",
  "data": {
    "command": "Refund",
    "payload": {
      "saleId": 142,
      "amount": 12500,
      "shouldPrintReceipt": true,
      "products": [
        {
          "id": "p_1001",
          "name": "Espresso",
          "barcode": null,
          "units": "шт",
          "price": 12500,
          "vat": 0.12,
          "amount": 1,
          "isDecimalUnits": false,
          "labels": [],
          "psid": "10112001001000000",
          "packageCode": 1512472,
          "unitCode": null,
          "discountAmount": 0,
          "commissionTIN": null,
          "commissionPINFL": null
        }
      ],
      "payments": [{ "paymentType": "Cash", "amount": 12500 }]
    }
  }
}

Javob

json
{ "id": "2", "success": true, "data": { } }

payload

MaydonTuriTavsif
saleIdintegerSale javobidan
amountintegerQaytarilayotgan summa, tiyinda
productsarrayQaytarilayotgan pozitsiyalar — Sale dagi bilan bir xil format
paymentsarrayPul qanday qaytariladi — Sale dagi bilan bir xil format
shouldPrintReceiptbooleantrue — qog'ozga bosish

Bu yerda saleType ham, discountAmount ham, totalAmount ham yo'q.

Sotuvni saqlang, keyin qayta yuboring

Qaytarishning eng oddiy yo'li: Sale yuborayotganda, yuborgan payload ingizni saleId bilan birga saqlang. Qaytarishda o'sha products va payments ni qaytadan yuboring.

js
// sotuvda
const { saleId } = await send('Sale', payload)
await db.save(orderId, { saleId, payload })

// vozvratda
const { saleId, payload } = await db.load(orderId)

await send('Refund', {
  saleId,
  amount: payload.totalAmount,
  shouldPrintReceipt: true,
  products: payload.products,
  payments: payload.payments
})

Agar buning o'rniga pozitsiyalarni buyurtmadan qaytadan qursangiz, sotuvdan beri narxlar yoki soliq sozlamalari o'zgargan bo'lishi mumkin va summalar dastlabki chekka mos kelmaydi — apparat uni rad etadi.

Qisman qaytarish

Faqat qaytarayotgan pozitsiyalarni yuboring va ularning amount ini (miqdorini) kamaytiring. price ni o'zgartirmang:

json
{
  "saleId": 142,
  "amount": 12500,
  "shouldPrintReceipt": true,
  "products": [ /* bitta pozitsiya, amount: 1 */ ],
  "payments": [{ "paymentType": "Cash", "amount": 12500 }]
}

saleId yo'q — vozvrat ham yo'q

Agar saleId ni saqlamagan bo'lsangiz, chekni API orqali qaytarib bo'lmaydi. Uni apparatda qo'lda qaytarish kerak bo'ladi.

ARCA Proxy API