From 96131c5b33a182f170e43a04555325d63b22ff7d Mon Sep 17 00:00:00 2001 From: glovetleong Date: Fri, 14 Jan 2022 14:03:40 +0800 Subject: [PATCH] export packing list --- .../Services/ExportsContainerPackingList.php | 92 +++++++++++++++++++ .../ExportContainerPackingListController.php | 19 ++++ .../elements/ContainerComponent.vue | 11 +++ routes/web.php | 2 + 4 files changed, 124 insertions(+) create mode 100644 app/Classes/Modules/Exports/Services/ExportsContainerPackingList.php create mode 100644 app/Http/Controllers/Exports/ExportContainerPackingListController.php diff --git a/app/Classes/Modules/Exports/Services/ExportsContainerPackingList.php b/app/Classes/Modules/Exports/Services/ExportsContainerPackingList.php new file mode 100644 index 00000000..2371962b --- /dev/null +++ b/app/Classes/Modules/Exports/Services/ExportsContainerPackingList.php @@ -0,0 +1,92 @@ +id = $id; + } + + /** + * @return \Illuminate\Support\Collection|mixed + */ + public function query() + { + return Container::find($this->id)->packingLists(); + } + + /** + * @param Company $container + * + * @return array + */ + public function map($packing_list): array + { + $order = $packing_list->owner()->first(); + $address = $order->addresses()->first(); + $company = $order->companyModule()->first(); + $connection = $company->inviters()->withPivot('invitee_reference')->first(); + $marking = $connection ? $connection->pivot->invitee_reference:''; + + $quantity = 0; + $cbm = 0; + foreach ($packing_list->packages()->get() as $key => $row) { + $quantity += $row->quantity; + $cbm += (($row->width / 100) * ($row->height / 100) * ($row->length / 100)) * $row->quantity; + } + + $status = ''; + if ($packing_list->transports()->count() > 0) { + $status = 'Delivery'; + } + elseif ($packing_list->status == ApprovalStatus::SUSPENDED) { + $status = 'On Hold'; + } + elseif ($packing_list->status != ApprovalStatus::SUSPENDED) { + $status = 'Release'; + } + + return [ + $marking, + $order->reference, + $quantity, + $cbm, + $status, + $address->contacts()->first() ? $address->contacts()->first()->phone : 'n/a', + $address->contacts()->first() ? $address->contacts()->first()->reference : 'n/a', + $address->street_one . ' ' . $address->street_two . ' ' . $address->district->name . ' ' . $address->post_code . ' ' . $address->state->name . ' ' . $address->country->name, + $address->remarks()->first() ? $address->remarks()->first()->content : 'n/a', + $packing_list->transports()->first() ? $packing_list->transports()->current_schedule->eta : 'n/a' + ]; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Exports/ExportContainerPackingListController.php b/app/Http/Controllers/Exports/ExportContainerPackingListController.php new file mode 100644 index 00000000..6e5d845d --- /dev/null +++ b/app/Http/Controllers/Exports/ExportContainerPackingListController.php @@ -0,0 +1,19 @@ +headers->set('Authorization', 'Bearer '.$token); + $exportsContainerPackingList->setId($request->route('id')); + return $exportsContainerPackingList->download('customer-container-packing-list.csv', Excel::CSV, ['Content-Type' => 'text/csv']); + } +} diff --git a/resources/assets/vue/components/containers/elements/ContainerComponent.vue b/resources/assets/vue/components/containers/elements/ContainerComponent.vue index 098a1c90..0aa0aa45 100644 --- a/resources/assets/vue/components/containers/elements/ContainerComponent.vue +++ b/resources/assets/vue/components/containers/elements/ContainerComponent.vue @@ -72,6 +72,11 @@
status
Delivery Details
Delivery Date
+
+
+ Export +
+
@@ -131,6 +136,12 @@ }, errorHandler(){ this.index = null; + }, + exportContainer(id) { + console.log(id); + + + window.location.href = (this.route('container.export', $id)); } }, mixins: [componentHandler] diff --git a/routes/web.php b/routes/web.php index d520f721..6b9ae1d0 100644 --- a/routes/web.php +++ b/routes/web.php @@ -184,3 +184,5 @@ Route::get('/yd', function (){ }); Route::get('/export/customer-latest-order-date/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@export'); +Route::get('/export/packing-list/{id}', 'Exports\ExportContainerPackingListController@export')->name('container.packaging_list.export'); +