getBillableDocuments($contact_id); $answer['success'] = 1; exit(json_encode($answer)); } if ($action === 'open_billings') { $contact_id = (int)($data['contact_id'] ?? 0); $answer['output'] = $mgr->getOpenBillingList($contact_id); $answer['success'] = 1; exit(json_encode($answer)); } if ($action === 'retrieve') { $billing_id = (int)($data['id'] ?? $data['billing_id'] ?? 0); $answer['output'] = $mgr->getBillingById($billing_id); $answer['success'] = 1; exit(json_encode($answer)); } if ($action === 'void') { $billing_id = (int)($data['id'] ?? $data['billing_id'] ?? 0); dbTransaction($pdo2, function($pdo) use ($billing_id, $company_id, $logging) { $mgr = new PaymentBillingManager($pdo, $company_id); $mgr->voidBilling($billing_id, $logging); }); $answer['success'] = 1; $answer['message'] = 'Payment billing voided.'; exit(json_encode($answer)); } if ($action === 'create') { $new_id = null; dbTransaction($pdo2, function($pdo) use ($data, $company_id, $logging, &$new_id) { $mgr = new PaymentBillingManager($pdo, $company_id); $new_id = $mgr->createBilling($data, $logging); }); $answer['success'] = 1; $answer['new_id'] = $new_id; $answer['message'] = 'Payment billing created.'; (new UsageGuard($pdo1, $company_id, $packages))->increment(); exit(json_encode($answer)); } $answer['output'] = $mgr->getBillingList(); $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)); ?>