$client_id] + (array) $_POST, $by); if (!$recurring_invoice_id) { $return_arr['success'] = "False"; $return_arr['message'] = $error; header("HTTP/1.1 400 Bad Request"); echo json_encode($return_arr); exit(); } $insert_id = $recurring_invoice_id; $recurring = billingRow('recurring', $recurring_invoice_id, false); $reference = billingNumber('recurring', $recurring); $return_arr['recurring_invoice_reference'] = $reference; $return_arr['amount'] = (float) $recurring['recurring_invoice_amount']; logAudit("Recurring Invoice", "Create", escapeSql("Created recurring invoice $reference - " . $recurring['recurring_invoice_scope'] . " via API ($api_key_name)"), $client_id, $recurring_invoice_id); logAudit("API", "Success", escapeSql("Created recurring invoice $reference via API ($api_key_name)"), $client_id); // The first invoice, now if (intval($_POST['invoice_now'] ?? 0) === 1) { $invoice_id = recurringInvoiceGenerate($recurring_invoice_id, $by, true); if ($invoice_id) { if (getFieldById('invoices', $invoice_id, 'invoice_status') === 'Sent') { // Emailed by itself as it was made - the recurring invoice sends its own (recurringInvoiceGenerate()) $emailed_to = array_map(function ($r) { return $r['name'] !== '' ? "{$r['name']} ({$r['email']})" : $r['email']; }, billingEmailRecipients(intval($client_id))); } else { $emailed_to = intval($_POST['invoice_send'] ?? 1) === 1 ? billingInvoiceIssue($invoice_id, $by) : []; } $invoice = billingRow('invoice', $invoice_id, false); $return_arr['invoice'] = [ 'invoice_id' => $invoice_id, 'reference' => billingNumber('invoice', $invoice), 'amount' => (float) $invoice['invoice_amount'], 'currency' => (string) $invoice['invoice_currency_code'], 'due' => (string) $invoice['invoice_due'], 'status' => (string) $invoice['invoice_status'], 'url' => billingGuestUrl('invoice', $invoice), 'emailed_to' => $emailed_to, ]; } } $return_arr['next_date'] = (string) getFieldById('recurring_invoices', $recurring_invoice_id, 'recurring_invoice_next_date'); // Output require_once '../create_output.php';