diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index da68cf5a..9388de32 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -698,7 +698,7 @@ class JobOrderController extends Controller $items = $req->request->get('items'); $promo_id = $req->request->get('promo'); $cvid = $req->request->get('cvid'); - $service_charges = $req->request->get('service_charges'); + $service_charges = $req->request->get('service_charges', []); $em = $this->getDoctrine()->getManager(); @@ -742,14 +742,7 @@ class JobOrderController extends Controller } */ - // TODO: this snippet should be in the invoice generator - $error = $ic->validateDiscount($criteria, $promo_id); - - // process service charges - $error = $ic->invoiceServiceCharges($criteria, $service_charges); - - if (!$error) - $error = $ic->invoiceBatteries($criteria, $items); + $error = $ic->generateDraftInvoice($criteria, $promo_id, $service_charges, $items); if ($error) { diff --git a/src/Service/InvoiceGenerator/CMBInvoiceGenerator.php b/src/Service/InvoiceGenerator/CMBInvoiceGenerator.php index cc1cb020..534600fb 100644 --- a/src/Service/InvoiceGenerator/CMBInvoiceGenerator.php +++ b/src/Service/InvoiceGenerator/CMBInvoiceGenerator.php @@ -204,6 +204,25 @@ class CMBInvoiceGenerator implements InvoiceGeneratorInterface } } + // prepare draft for invoice + public function generateDraftInvoice($criteria, $discount, $service_charges, $items) + { + $ierror = $this->validateDiscount($criteria, $discount); + + if (!$ierror) + { + // process service charges + $ierror = $this->invoiceServiceCharges($criteria, $service_charges); + + if (!$ierror) + { + $ierror = $this->invoiceBatteries($criteria, $items); + } + } + + return $ierror; + } + protected function getTaxAmount($price) { $vat_ex_price = $this->getTaxExclusivePrice($price); diff --git a/src/Service/InvoiceGenerator/ResqInvoiceGenerator.php b/src/Service/InvoiceGenerator/ResqInvoiceGenerator.php index f9aad46a..2999d622 100644 --- a/src/Service/InvoiceGenerator/ResqInvoiceGenerator.php +++ b/src/Service/InvoiceGenerator/ResqInvoiceGenerator.php @@ -194,6 +194,20 @@ class ResqInvoiceGenerator implements InvoiceGeneratorInterface } } + // prepare draft for invoice + public function generateDraftInvoice($criteria, $promo_id, $service_charges, $items) + { + $ierror = $this->invoicePromo($criteria, $promo_id); + + if (!$ierror) + { + $ierror = $this->invoiceBatteries($criteria, $items); + } + + return $ierror; + } + + protected function getTaxAmount($price) { $vat_ex_price = $this->getTaxExclusivePrice($price); @@ -227,7 +241,7 @@ class ResqInvoiceGenerator implements InvoiceGeneratorInterface return 0; } - public function invoicePromo(InvoiceCriteria $criteria, $promo_id) + protected function invoicePromo(InvoiceCriteria $criteria, $promo_id) { // return error if there's a problem, false otherwise // check service type diff --git a/src/Service/InvoiceGeneratorInterface.php b/src/Service/InvoiceGeneratorInterface.php index 85407c30..3e1c5f88 100644 --- a/src/Service/InvoiceGeneratorInterface.php +++ b/src/Service/InvoiceGeneratorInterface.php @@ -15,4 +15,7 @@ interface InvoiceGeneratorInterface // generate invoice criteria public function generateInvoiceCriteria(JobOrder $jo, int $promo_id, array $invoice_items, array &$error_array); + // prepare draft for invoice + public function generateDraftInvoice(InvoiceCriteria $criteria, int $promo_id, array $service_charges, array $items); + } diff --git a/templates/job-order/form.html.twig b/templates/job-order/form.html.twig index a0e5985c..bba70b39 100644 --- a/templates/job-order/form.html.twig +++ b/templates/job-order/form.html.twig @@ -47,6 +47,9 @@