From e383a66e8fe472716ac99d5ed30c12998bfb0a6d Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Fri, 6 Apr 2018 16:04:31 +0800 Subject: [PATCH] Add pdf workaround #76 --- config/acl.yaml | 2 + config/routes/job_order.yaml | 5 + src/Controller/JobOrderController.php | 29 + templates/job-order/form.pdf.html.twig | 1277 ++++++++++++++++++++++++ templates/job-order/list.all.html.twig | 1 + 5 files changed, 1314 insertions(+) create mode 100644 templates/job-order/form.pdf.html.twig diff --git a/config/acl.yaml b/config/acl.yaml index 7e777afd..f531102b 100644 --- a/config/acl.yaml +++ b/config/acl.yaml @@ -199,6 +199,8 @@ access_keys: label: Open - id: jo_all.list label: View All + - id: jo_pdf.list + label: PDF - id: joborder.cancel label: Cancel diff --git a/config/routes/job_order.yaml b/config/routes/job_order.yaml index 65a808c3..f15163bd 100644 --- a/config/routes/job_order.yaml +++ b/config/routes/job_order.yaml @@ -155,3 +155,8 @@ jo_all_form: path: /job-order/all/{id} controller: App\Controller\JobOrderController::allForm methods: [GET] + +jo_pdf_form: + path: /job-order/pdf/{id} + controller: App\Controller\JobOrderController::pdfForm + methods: [GET] diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index 9b168908..f9065d2d 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -569,6 +569,7 @@ class JobOrderController extends BaseController else { $row['meta']['update_url'] = $this->generateUrl($tier_params['edit_route'], ['id' => $row['id']]); + $row['meta']['pdf_url'] = $this->generateUrl('jo_pdf_form', ['id' => $row['id']]); } if ($tier_params['unlock_route'] != '') @@ -1466,6 +1467,34 @@ class JobOrderController extends BaseController // response return $this->render('job-order/form.html.twig', $params); } + + + public function pdfForm($id) + { + $this->denyAccessUnlessGranted('jo_pdf.list', null, 'No access.'); + + $em = $this->getDoctrine()->getManager(); + + $params = $this->initParameters('jo_all'); + $params['mode'] = 'update-all'; + + // get row data + $obj = $em->getRepository(JobOrder::class)->find($id); + + // make sure this row exists + if (empty($obj)) + throw $this->createNotFoundException('The job order does not exist'); + + $this->fillDropdownParameters($params); + + $params['obj'] = $obj; + $params['status_cancelled'] = JOStatus::CANCELLED; + $params['return_url'] = $this->generateUrl('jo_all'); + $params['submit_url'] = ''; + + // response + return $this->render('job-order/form.pdf.html.twig', $params); + } public function cancelJobOrder(Request $req, $id) { diff --git a/templates/job-order/form.pdf.html.twig b/templates/job-order/form.pdf.html.twig new file mode 100644 index 00000000..d301def1 --- /dev/null +++ b/templates/job-order/form.pdf.html.twig @@ -0,0 +1,1277 @@ +{% extends 'base.html.twig' %} + +{% block body %} + +
+
+
+

Job Order

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

+ Motolite Express Hatid - {{ obj.getID }} +

+
+
+
+
+
+ + {% if mode == 'create' %} +
+
+
+ + + +
+ +
+
+
+
+
+ + + +
+
+
+ {% elseif obj.getReferenceJO %} +
+
+
+ + + +
+
+
+ {% endif %} + +
+
+

+ Customer Details +

+
+
+
+ + + +
+
+ + + +
+
+
+
+ +
+ +63 + + +
+
+
+ +
+ +63 + + +
+
+
+
+
+
+

+ Vehicle Details +

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

+ Transaction Details +

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

+ Location +

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

+ Invoice +

+
+
+
+ + + +
+
+ + + +
+
+
+
+ + {% if mode == 'create' %} + + + {% 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.getPrice|number_format(2) }}{{ item.getQuantity|number_format }}{{ (item.getPrice * item.getQuantity)|number_format(2) }}
+
+
+ {% if mode == 'create' %} +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + + +
+
+ {% endif %} +
+ + {% if mode in ['update-processing', 'update-reassign-hub'] %} +
+
+
+

+ Nearest Hubs +

+
+
+
+ + +
+ + + + + + + + + + + + + + + + {% for hub in hubs %} + + + + + + + + + {% endfor %} + +
HubBranchAvailable RidersJobs For AssignmentContact Numbers
+ No items to display. +
{{ hub.hub.getName }}{{ hub.hub.getBranch }}{{ hub.rider_count }}{{ hub.jo_count }}{{ hub.hub.getContactNumbers|replace({"\n": ', '}) }}
+
+
+
+
+
+
+
+
+
+ {% endif %} + + {% if mode in ['update-assigning', 'update-fulfillment', 'update-reassign-rider', 'update-all'] %} +
+ {% if obj.getHub %} +
+
+

+ Hub Details +

+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ + + +
+
+ + + +
+
+
+ {% endif %} + +
+ + {% if mode in ['update-assigning', 'update-reassign-rider'] %} +
+
+

+ Rider Assignment +

+
+
+
+ + +
+ + + + + + + + + + + + + {% set avail_riders = obj.getHub.getAvailableRiders|default([]) %} + + + + + {% if obj.getHub %} + {% for rider in avail_riders %} + + + + + + + + + {% endfor %} + {% endif %} + +
First NameLast NameContact No.Plate NumberStatus
+ No riders available. +
+
+
{{ rider.getFirstName }}{{ rider.getLastName }}{{ rider.getContactNumber }}{{ rider.getPlateNumber }}
+
+
+
+
+ {% endif %} + + {% if mode in ['update-fulfillment', 'update-all'] %} + {% if obj.getRider %} +
+
+

+ Rider Details +

+
+
+
+ + + +
+
+ + + +
+
+
+
+ + + +
+
+ + + +
+
+
+ {% endif %} + {% endif %} + {% endif %} + +
+
+
+
+
+ {% if mode != 'create' %} + Back + {% endif %} +
+
+
+
+
+
+
+
+
+{% endblock %} + +{% block scripts %} + + + + +{% endblock %} diff --git a/templates/job-order/list.all.html.twig b/templates/job-order/list.all.html.twig index 88a80ec2..a36ff295 100644 --- a/templates/job-order/list.all.html.twig +++ b/templates/job-order/list.all.html.twig @@ -109,6 +109,7 @@ overflow: 'visible', template: function (row, index, datatable) { var actions = ''; + actions += ''; return actions; }, -- 2.43.5