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 %} + + + +