getOpenDocuments($contact_id); $answer['success'] = 1; exit(json_encode($answer)); } if ($action === 'save_formula') { $id = (int)($data['id'] ?? 0); $formula_id = isset($data['formula_id']) && (int)$data['formula_id'] > 0 ? (int)$data['formula_id'] : null; $mgr->saveFormula($id, $formula_id); $answer['success'] = 1; exit(json_encode($answer)); } if ($action === 'retrieve') { $receipt_id = (int)($data['id'] ?? $data['receipt_id'] ?? 0); $answer['output'] = $mgr->getReceiptById($receipt_id); $answer['success'] = 1; exit(json_encode($answer)); } if ($action === 'void') { $receipt_id = (int)($data['id'] ?? $data['receipt_id'] ?? 0); dbTransaction($pdo2, function($pdo) use ($receipt_id, $company_id, $logging) { $mgr = new ReceiptManager($pdo, $company_id); $mgr->voidReceipt($receipt_id, $logging); }); $answer['success'] = 1; $answer['message'] = 'Receipt voided.'; exit(json_encode($answer)); } if ($action === 'create') { $new_id = null; dbTransaction($pdo2, function($pdo) use ($data, $company_id, $logging, &$new_id) { $mgr = new ReceiptManager($pdo, $company_id); $new_id = $mgr->createReceipt($data, $logging); }); $answer['success'] = 1; $answer['new_id'] = $new_id; $answer['message'] = 'Receipt posted.'; (new UsageGuard($pdo1, $company_id, $packages))->increment(); exit(json_encode($answer)); } $answer['output'] = $mgr->getReceiptList(); $answer['success'] = 1; } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; http_response_code(500); } catch (Exception $e) { $answer['message'] = $e->getMessage(); http_response_code(400); } exit(json_encode($answer)); ?>