47 lines
1.8 KiB
PHP
47 lines
1.8 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../includes/app.php';
|
|
require_auth();
|
|
header('Content-Type: application/json');
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
http_response_code(405);
|
|
echo json_encode(['success' => false, 'error' => tr('طريقة الطلب غير مدعومة.', 'Method not allowed.')]);
|
|
exit;
|
|
}
|
|
|
|
$saleId = (int) ($_POST['sale_id'] ?? 0);
|
|
$paymentAmount = (string) ($_POST['payment_amount'] ?? '');
|
|
$completeOrder = !empty($_POST['complete_order']);
|
|
|
|
if ($saleId <= 0) {
|
|
echo json_encode(['success' => false, 'error' => tr('الفاتورة غير صالحة.', 'Invalid invoice.')]);
|
|
exit;
|
|
}
|
|
if ($paymentAmount === '' || !is_numeric($paymentAmount) || (float) $paymentAmount <= 0) {
|
|
echo json_encode(['success' => false, 'error' => tr('أدخل مبلغ دفعة صحيحاً.', 'Enter a valid payment amount.')]);
|
|
exit;
|
|
}
|
|
|
|
try {
|
|
$sale = fetch_sale($saleId);
|
|
if (!$sale) {
|
|
echo json_encode(['success' => false, 'error' => tr('الفاتورة غير موجودة أو غير مصرح بها.', 'Invoice not found or not allowed.')]);
|
|
exit;
|
|
}
|
|
|
|
$result = apply_sale_payment($saleId, (float) $paymentAmount, $completeOrder);
|
|
|
|
echo json_encode([
|
|
'success' => true,
|
|
'message' => $result['due_amount'] <= 0.0005
|
|
? tr('تم سداد الفاتورة بالكامل.', 'Invoice paid in full.')
|
|
: tr('تم تسجيل الدفعة الجزئية بنجاح.', 'Partial payment recorded successfully.'),
|
|
'payment_status' => $result['payment_status'],
|
|
'paid_amount' => $result['paid_amount'],
|
|
'due_amount' => $result['due_amount'],
|
|
'applied_amount' => $result['applied_amount'],
|
|
]);
|
|
} catch (Throwable $e) {
|
|
echo json_encode(['success' => false, 'error' => tr('تعذر تسجيل الدفعة.', 'Could not record the payment.')]);
|
|
}
|