Marks an order as successfully delivered to the customer. Changes order status to COMPLETE_WITH_PAYMENT.
All orders are marked as COMPLETE_WITH_PAYMENT regardless of payment type (including CASH). This indicates successful delivery and payment confirmation.
async function completeCashOrder(order) { // 1. Courier confirms cash received const cashReceived = await confirmCashPayment(order.total); if (cashReceived) { // 2. Complete order await completeOrder(order.payment_key); // 3. Log cash collection await logCashCollection({ orderId: order.id, amount: order.total, courierId: currentCourier.id, timestamp: new Date() }); console.log(`✅ Cash order ${order.id} completed`); }}
Copy
async function completeCardOrder(order) { // Card already processed - just confirm delivery await completeOrder(order.payment_key); console.log(`✅ Card order ${order.id} completed`);}
Copy
async function completeOrder(order) { // All payment types use same endpoint await apiClient.put(`/orders/complete/${order.payment_key}`); // Status: COMPLETE_WITH_PAYMENT (regardless of payment type) await updateLocalStatus(order.id, 'complete');}
All payment types (CASH, CREDIT_CARD, DEBIT_CARD) are marked as COMPLETE_WITH_PAYMENT. This confirms both delivery and payment collection.
async function completeOrderSafely(order) { try { await completeOrder(order.payment_key); // Success showSuccessNotification('Order completed successfully'); playSuccessSound(); } catch (error) { if (error.status === 404) { // Order not found alert('Order not found. May have been canceled.'); } else if (error.status === 403) { // Invalid order state alert('Order cannot be completed in current state'); } else { // Other errors console.error('Completion failed:', error); alert('Failed to complete order. Please try again.'); } // Log for investigation await logCompletionError(order.id, error); }}