diff --git a/config/services.yaml b/config/services.yaml index 8c8024f5..65abbe59 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -130,3 +130,9 @@ services: $menu_name: "main_menu" tags: - { name: kernel.event_listener, event: kernel.controller, method: onKernelController } + + # invoice creator + App\Service\InvoiceCreator\CMBInvoiceCreator: ~ + + # invoice creator interface + App\Service\InvoiceCreatorInterface: "@App\\Service\\InvoiceCreator\\CMBInvoiceCreator" diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 075879bb..92146e1b 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -24,7 +24,7 @@ use App\Ramcar\TransactionOrigin; use App\Ramcar\TradeInType; use App\Ramcar\JOEventType; -use App\Service\InvoiceCreator; +use App\Service\InvoiceCreatorInterface; use App\Service\RisingTideGateway; use App\Service\MQTTClient; use App\Service\GeofenceTracker; @@ -808,7 +808,7 @@ class APIController extends Controller return $res->getReturnResponse(); } - public function requestJobOrder(Request $req, InvoiceCreator $ic, GeofenceTracker $geo) + public function requestJobOrder(Request $req, InvoiceCreatorInterface $ic, GeofenceTracker $geo) { // check required parameters and api key $required_params = [ @@ -1020,7 +1020,7 @@ class APIController extends Controller return $res->getReturnResponse(); } - public function getEstimate(Request $req, InvoiceCreator $ic) + public function getEstimate(Request $req, InvoiceCreatorInterface $ic) { // $this->debugRequest($req); diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index 8e9c7d46..d746a59b 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -27,7 +27,7 @@ use App\Entity\Battery; use App\Entity\JOEvent; use App\Entity\JORejection; -use App\Service\InvoiceCreator; +use App\Service\InvoiceCreatorInterface; use App\Service\MapTools; use App\Service\HubCounter; use App\Service\MQTTClient; @@ -251,7 +251,7 @@ class JobOrderController extends Controller return $this->render('job-order/form.html.twig', $params); } - public function openEditSubmit(Request $req, ValidatorInterface $validator, InvoiceCreator $ic, $id) + public function openEditSubmit(Request $req, ValidatorInterface $validator, InvoiceCreatorInterface $ic, $id) { $this->denyAccessUnlessGranted('jo_open.edit', null, 'No access.'); @@ -425,7 +425,7 @@ class JobOrderController extends Controller return $this->render('job-order/form.html.twig', $params); } - public function incomingSubmit(Request $req, ValidatorInterface $validator, InvoiceCreator $ic) + public function incomingSubmit(Request $req, ValidatorInterface $validator, InvoiceCreatorInterface $ic) { $this->denyAccessUnlessGranted('jo_in.list', null, 'No access.'); @@ -2482,7 +2482,7 @@ class JobOrderController extends Controller return null; } - public function generateInvoice(Request $req, InvoiceCreator $ic) + public function generateInvoice(Request $req, InvoiceCreatorInterface $ic) { // error_log('generating invoice...'); $error = false; diff --git a/src/Controller/RAPIController.php b/src/Controller/RAPIController.php index ddd66d5e..a613a150 100644 --- a/src/Controller/RAPIController.php +++ b/src/Controller/RAPIController.php @@ -25,7 +25,7 @@ use App\Ramcar\InvoiceStatus; use App\Ramcar\ModeOfPayment; use App\Ramcar\JOEventType; -use App\Service\InvoiceCreator; +use App\Service\InvoiceCreatorInterface; use App\Service\MQTTClient; use App\Entity\RiderSession; @@ -739,7 +739,7 @@ class RAPIController extends Controller error_log(print_r($all, true)); } - public function changeService(Request $req, InvoiceCreator $ic) + public function changeService(Request $req, InvoiceCreatorInterface $ic) { $this->debugRequest($req); diff --git a/src/Service/InvoiceCreator.php b/src/Service/InvoiceCreator/CMBInvoiceCreator.php similarity index 91% rename from src/Service/InvoiceCreator.php rename to src/Service/InvoiceCreator/CMBInvoiceCreator.php index 1c6a74a7..aa96399e 100644 --- a/src/Service/InvoiceCreator.php +++ b/src/Service/InvoiceCreator/CMBInvoiceCreator.php @@ -1,6 +1,6 @@ getVATExclusivePrice($price); + $vat_ex_price = $this->getTaxExclusivePrice($price); return $price - $vat_ex_price; - // return round($vat_ex_price * self::VAT_RATE, 2); + // return round($vat_ex_price * self::TAX_RATE, 2); } - public function getVATExclusivePrice($price) + public function getTaxExclusivePrice($price) { - return round($price / (1 + self::VAT_RATE), 2); + return round($price / (1 + self::TAX_RATE), 2); } public function getTradeInRate($ti) @@ -57,7 +60,7 @@ class InvoiceCreator return 0; } - protected function processEntries(&$total, InvoiceCriteria $criteria, Invoice $invoice) + public function processEntries(&$total, InvoiceCriteria $criteria, Invoice $invoice) { // error_log('processing entries...'); $entries = $criteria->getEntries(); @@ -100,7 +103,7 @@ class InvoiceCreator $this->processTradeIns($total, $con_tis, $invoice); } - protected function processBatteries(&$total, $con_batts, Invoice $invoice) + public function processBatteries(&$total, $con_batts, Invoice $invoice) { // process batteries foreach ($con_batts as $con_data) @@ -109,8 +112,8 @@ class InvoiceCreator $qty = $con_data['qty']; $sell_price = $batt->getSellingPrice(); - $vat = $this->getVATAmount($sell_price); - // $vat_ex_price = $this->getVATExclusivePrice($sell_price); + $vat = $this->getTaxAmount($sell_price); + // $vat_ex_price = $this->getTaxExclusivePrice($sell_price); $total['sell_price'] += $sell_price * $qty; $total['vat'] += $vat * $qty; @@ -130,7 +133,7 @@ class InvoiceCreator } } - protected function processTradeIns(&$total, $con_tis, Invoice $invoice) + public function processTradeIns(&$total, $con_tis, Invoice $invoice) { foreach ($con_tis as $ti) { @@ -151,7 +154,7 @@ class InvoiceCreator } } - protected function processDiscount(&$total, InvoiceCriteria $criteria, Invoice $invoice) + public function processDiscount(&$total, InvoiceCriteria $criteria, Invoice $invoice) { $promos = $criteria->getPromos(); if (count($promos) < 1) @@ -224,12 +227,12 @@ class InvoiceCreator $item->setInvoice($invoice) ->setTitle('Recharge fee') ->setQuantity(1) - ->setPrice(300.00); + ->setPrice(self::RECHARGE_FEE); $invoice->addItem($item); - $total['sell_price'] = 300.00; - $total['vat_ex_price'] = 300.00; - $total['total_price'] = 300.00; + $total['sell_price'] = self::RECHARGE_FEE; + $total['vat_ex_price'] = self::RECHARGE_FEE; + $total['total_price'] = self::RECHARGE_FEE; } public function processReplacement(&$total, $invoice) @@ -301,7 +304,7 @@ class InvoiceCreator $total_price += 1600; } - $vat_ex_price = $this->getVATExclusivePrice($total_price); + $vat_ex_price = $this->getTaxExclusivePrice($total_price); $vat = $total_price - $vat_ex_price; $total['total_price'] = $total_price; $total['vat_ex_price'] = $vat_ex_price; @@ -324,7 +327,7 @@ class InvoiceCreator $invoice->addItem($item); $total_price = $fee; - $vat_ex_price = $this->getVATExclusivePrice($total_price); + $vat_ex_price = $this->getTaxExclusivePrice($total_price); $vat = $total_price - $vat_ex_price; $total['total_price'] = $total_price; $total['vat_ex_price'] = $vat_ex_price; @@ -385,7 +388,7 @@ class InvoiceCreator break; } - $vat_ex_price = $this->getVATExclusivePrice($total_price); + $vat_ex_price = $this->getTaxExclusivePrice($total_price); $vat = $total_price - $vat_ex_price; $total['total_price'] = $total_price; $total['vat_ex_price'] = $vat_ex_price; diff --git a/src/Service/InvoiceCreatorInterface.php b/src/Service/InvoiceCreatorInterface.php new file mode 100644 index 00000000..f91f48c2 --- /dev/null +++ b/src/Service/InvoiceCreatorInterface.php @@ -0,0 +1,58 @@ +