From a030ec6679991fb639b05520c6b2000093651737 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 29 Sep 2020 04:27:11 +0000 Subject: [PATCH] Add routes and templates for advance order. #509 --- config/acl.yaml | 4 + config/cmb.menu.yaml | 8 + config/menu.yaml | 8 + config/routes/job_order.yaml | 40 + src/Controller/JobOrderController.php | 22 + .../JobOrderHandler/CMBJobOrderHandler.php | 35 +- .../job-order/cmb.form.advanceorder.html.twig | 1656 +++++++++++++++++ 7 files changed, 1772 insertions(+), 1 deletion(-) create mode 100644 templates/job-order/cmb.form.advanceorder.html.twig diff --git a/config/acl.yaml b/config/acl.yaml index 1d1a0c74..ea81ada5 100644 --- a/config/acl.yaml +++ b/config/acl.yaml @@ -272,6 +272,10 @@ access_keys: label: Hub View - id: jo_behind_schedule.list label: View Behind Schedule + - id: jo_advance_order.form + label: New Advance Order + - id: jo_assign_advance_order.form + label: Assign Advance Order - id: support label: Customer Support Access diff --git a/config/cmb.menu.yaml b/config/cmb.menu.yaml index ca756046..c61617eb 100644 --- a/config/cmb.menu.yaml +++ b/config/cmb.menu.yaml @@ -106,6 +106,14 @@ main_menu: acl: jo_onestep.form label: One-step Process parent: joborder + - id: jo_advance_order + acl: jo_advance_order.form + label: New Advance Order + parent: joborder + - id: jo_advance_order_assign + acl: jo_assign_advance_order.form + label: Assign Advance Order + parent: joborder - id: jo_walkin_form acl: jo_walkin.form label: Walk-in diff --git a/config/menu.yaml b/config/menu.yaml index ca756046..c216839b 100644 --- a/config/menu.yaml +++ b/config/menu.yaml @@ -106,6 +106,14 @@ main_menu: acl: jo_onestep.form label: One-step Process parent: joborder + - id: jo_advance_order_form + acl: jo_advance_order.form + label: New Advance Order + parent: joborder + - id: jo_advance_order_assign_form + acl: jo_assign_advance_order.form + label: Assign Advance Order + parent: joborder - id: jo_walkin_form acl: jo_walkin.form label: Walk-in diff --git a/config/routes/job_order.yaml b/config/routes/job_order.yaml index 4ec4279e..45623b22 100644 --- a/config/routes/job_order.yaml +++ b/config/routes/job_order.yaml @@ -264,3 +264,43 @@ jo_behind_schedule_rows: methods: [POST] defaults: tier: "behind_schedule" + +jo_advance_order_form: + path: /job-order/advance-order + controller: App\Controller\JobOrderController::advanceOrderForm + methods: [GET] + +jo_advance_order_submit: + path: /job-order/advance-order + controller: App\Controller\JobOrderController::advanceOrderSubmit + methods: [POST] + +jo_advance_order_edit_form: + path: /job-order/advance-order/{id}/edit + controller: App\Controller\JobOrderController::advanceOrderEditForm + methods: [GET] + +jo_advance_order_edit_submit: + path: /job-order/onestep/{id}/edit + controller: App\Controller\JobOrderController::advanceOrderEditSubmit + methods: [POST] + +jo_assign_advance_order_form: + path: /job-order/assign-advance-order + controller: App\Controller\JobOrderController::assignAdvanceOrderForm + methods: [GET] + +jo_assign_advance_order_submit: + path: /job-order/assign-advance-order + controller: App\Controller\JobOrderController::assignAdvanceOrderSubmit + methods: [POST] + +jo_assign_advance_order_edit_form: + path: /job-order/assign-advance-order/{id}/edit + controller: App\Controller\JobOrderController::assignAdvanceOrderEditForm + methods: [GET] + +jo_assign_advance_order_edit_submit: + path: /job-order/assign-advance-order/{id}/edit + controller: App\Controller\JobOrderController::assignAdvanceOrderEditSubmit + methods: [POST] diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index 1b7a451f..d8ff3b06 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -1073,6 +1073,28 @@ class JobOrderController extends Controller ]); } + /** + * @Menu(selected="jo_advance_order_form") + */ + public function advanceOrderForm(EntityManagerInterface $em, JobOrderHandlerInterface $jo_handler, + GISManagerInterface $gis) + { + $this->denyAccessUnlessGranted('jo_advance_order.form', null, 'No access.'); + + $params = $jo_handler->initializeAdvanceOrderForm(); + $params['submit_url'] = $this->generateUrl('jo_advance_order_submit'); + $params['return_url'] = $this->generateUrl('jo_advance_order_form'); + $params['map_js_file'] = $gis->getJSJOFile(); + $params['vmfgs'] = $em->getRepository(VehicleManufacturer::class)->findAll(); + $params['vmakes'] = $em->getRepository(Vehicle::class)->findAll(); + $params['hubs'] = $em->getRepository(Hub::class)->findAll(); + + $template = $params['template']; + + // response + return $this->render($template, $params); + } + /** * @Menu(selected="jo_hub_view") */ diff --git a/src/Service/JobOrderHandler/CMBJobOrderHandler.php b/src/Service/JobOrderHandler/CMBJobOrderHandler.php index 1f6250f0..998bc41b 100644 --- a/src/Service/JobOrderHandler/CMBJobOrderHandler.php +++ b/src/Service/JobOrderHandler/CMBJobOrderHandler.php @@ -2881,6 +2881,32 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface return $params; } + public function initializeAdvanceOrderForm() + { + $new_jo = new JobOrder(); + + // set time schedule + $date_schedule = new DateTime(); + + // add 45 minutes to time + $date_schedule->add(new DateInterval('PT45M')); + $new_jo->setDateSchedule($date_schedule); + + $params['obj'] = $new_jo; + $params['mode'] = 'advanceorder'; + $params['jo_service_charges'] = []; + $params['current_date'] = new DateTime(); + + $this->fillDropdownParameters($params); + $this->fillFormTags($params); + + // get template to display + $params['template'] = $this->getTwigTemplate('jo_advanceorder_form'); + + // return params + return $params; + } + protected function fillDropdownParameters(&$params) { $em = $this->em; @@ -2973,7 +2999,13 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface $params['ftags']['invoice_edit'] = true; $params['ftags']['preset_vehicle'] = true; break; - + case 'advanceorder': + $params['ftags']['vehicle_dropdown'] = true; + $params['ftags']['set_map_coordinate'] = false; + $params['ftags']['invoice_edit'] = true; + $params['ftags']['ticket_table'] = false; + $params['ftags']['cancel_button'] = false; + break; } } @@ -2998,6 +3030,7 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface $this->template_hash['jo_walkin_edit_form'] = 'job-order/cmb.form.walkin.html.twig'; $this->template_hash['jo_popup'] = 'job-order/cmb.popup.html.twig'; $this->template_hash['jo_behind_schedule'] = 'job-order/cmb.list.behindschedule.html.twig'; + $this->template_hash['jo_advanceorder_form'] = 'job-order/cmb.form.advanceorder.html.twig'; } protected function checkTier($tier) diff --git a/templates/job-order/cmb.form.advanceorder.html.twig b/templates/job-order/cmb.form.advanceorder.html.twig new file mode 100644 index 00000000..6e11db8d --- /dev/null +++ b/templates/job-order/cmb.form.advanceorder.html.twig @@ -0,0 +1,1656 @@ +{% extends 'base.html.twig' %} + +{% block body %} + + + +
+ +
+
+
+
+
+
+ + + + {% if mode == "advanceorder" %} +

+ Advance Order Job Order +

+ {% else %} +

+ Advance Order Job Order #{{ obj.getID }} - {{ obj.getStatusText }} +

+ {% endif %} +
+
+
+
+ + +
+ {%if ftags.vehicle_dropdown %} +
+
+
+ + + +
+ +
+
+
+
+
+ + + +
+
+
+ {% else %} + + {% endif %} + {% if obj.getReferenceJO %} +
+
+
+ + + +
+
+
+ {% endif %} + +
+
+

+ Customer Details +

+ + + +
+
+
+ + + +
+
+ + + +
+
+
+
+ +
+ {% trans %}country_code_prefix{% endtrans %} + + +
+
+
+ +
+ {% trans %}country_code_prefix{% endtrans %} + + +
+
+
+
+
+ +
+ {% trans %}country_code_prefix{% endtrans %} + + +
+
+
+
+
+
+
+ + + +
+
+
+
+
+

+ Vehicle Details +

+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ + + +
+ +
+
+
+
+

+ Battery Details +

+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
+

+ Transaction Details +

+ + + +
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ + + +
+
+ +
+ + + + +
+ +
+
+ +
+ + + + +
+ +
+
+
+
+
+ + + +
+
+
+ + +
+
+
+ + + +
+
+
+
+ + + +
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+
+
+
+
+
+

+ Location +

+
+
+
+ + + +
+
+ + + +
+
+
+
+ + + + +
+ + + + +
+
+
+
+
+ +
+
+

+ {% if mode in ['view-all', 'update-fulfillment'] %} + Assigned Hub + {% else %} + Nearest Hubs + {% endif %} +

+
+
+
+ {% if mode != 'view-all' %} + + {% endif %} + + +
+ + + + + + + + + + + + +
HubBranchContact NumbersDistance in KM
+
+
+
+
+ + {% if mode in ['advanceorder-edit'] %} +
+
+
+

+ Other Information +

+
+
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+ +
+ {% for key, picture in jo_pictures %} + {% if key == 'image_1' %} +
+ + + +
+ +
+ {% endif %} + {% if key == 'image_2' %} +
+ + + +
+ +
+ {% endif %} + {% if key == 'image_3' %} +
+ + + +
+ +
+ {% endif %} + {% if key == 'image_4' %} +
+ + + +
+ +
+ {% endif %} + + {% endfor %} +
+ +
+ + + {% endif %} + +
+
+
+

+ Service Charges +

+
+
+ {% if mode != 'view-all' %} +
+ +
+ {% endif %} +
+ + {% for jo_sc in jo_service_charges %} +
+
+
+ +
+
+
+ +
+
+ +
+
+ {% endfor %} +
+ +
+
+
+

+ Invoice +

+
+
+
+ + + +
+ +
+
+
+ + {% if ftags.invoice_edit %} + + + {% else %} + + + {% endif %} +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + + + + + + + + + + {% if not obj.getInvoice or (obj.getInvoice and obj.getInvoice.getItems|length == 0) %} + + + + {% else %} + {% for item in obj.getInvoice.getItems %} + + + + + + + {% endfor %} + {% endif %} + +
ItemQuantityUnit PriceAmount
+ No items to display. +
{{ item.getTitle }}{{ item.getQuantity|number_format }}{{ item.getPrice|number_format(2) }}{{ (item.getPrice * item.getQuantity)|number_format(2) }}
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + + +
+
+
+
+
+
+
+
+ {% if mode != 'view-all' %} + + {% if ftags.set_map_coordinate and is_granted('joborder.cancel') and not obj.isCancelled %} + Cancel Job Order + {% endif %} + {% endif %} + Back +
+
+
+
+ +
+
+
+
+{% endblock %} + +{% block scripts %} +{{ include('map/' ~ map_js_file) }} + + + + +{% endblock %}