diff --git a/app/Classes/Modules/Exports/Services/ExportsPendingArrangementDeliveryList.php b/app/Classes/Modules/Exports/Services/ExportsPendingArrangementDeliveryList.php new file mode 100644 index 00000000..0d52ca72 --- /dev/null +++ b/app/Classes/Modules/Exports/Services/ExportsPendingArrangementDeliveryList.php @@ -0,0 +1,70 @@ +whereHas('containers', function ($query){ + $query->where('containers.status', ApprovalStatus::COMPLETED); + })->whereDoesntHave('transports'); + } + + /** + * @param PackingList $packingList + * + * @return array + */ + public function map($packingList): array + { + $order = $packingList->owner; + $marking = $order->companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference; + $defaultAddress = $order->companyModule->addresses()->defaultAddress()->first(); + $defaultAddress = $defaultAddress ? $defaultAddress : $order->companyModule->addresses()->first(); + $address = $defaultAddress->street_one.', '.$defaultAddress->street_two.' '.$defaultAddress->district->name.' '.$defaultAddress->postcode.' '.$defaultAddress->state->name.' '.$defaultAddress->country->name; + $contacts = $defaultAddress->contacts->first() ? $defaultAddress->contacts->first(): ''; + $transport = $packingList->transports()->first(); + + return [ + $order->reference, + $marking, + $packingList->packages()->sum('quantity'), + $defaultAddress->remarks->first() ? $defaultAddress->remarks->first()->content: '', + $contacts ? $contacts ->reference : '', + $contacts ? $contacts ->phone : '', + $transport ? Carbon::now()->diffInDays($transport->drop_date, false) : '', + $address + ]; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Exports/ExportPendingArrangementPackingListController.php b/app/Http/Controllers/Exports/ExportPendingArrangementPackingListController.php new file mode 100644 index 00000000..8575e88c --- /dev/null +++ b/app/Http/Controllers/Exports/ExportPendingArrangementPackingListController.php @@ -0,0 +1,29 @@ +headers->set('Authorization', 'Bearer '.$token); + } + + public function export(Request $request) { + $exportsPendingArrangementDeliveryList = new ExportsPendingArrangementDeliveryList($request); + $response = $exportsPendingArrangementDeliveryList->download('pending-arrangement-packing-list.xls', Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + return $response; + } +} diff --git a/resources/views/pages/delivery_list.blade.php b/resources/views/pages/delivery_list.blade.php index 2f27f146..89717e81 100644 --- a/resources/views/pages/delivery_list.blade.php +++ b/resources/views/pages/delivery_list.blade.php @@ -77,7 +77,17 @@
-
+ + + +
Marking
Quantity
CBM
diff --git a/routes/web.php b/routes/web.php index 98a630ec..8ba22313 100644 --- a/routes/web.php +++ b/routes/web.php @@ -231,6 +231,7 @@ Route::get('/warehouse/{id}/show', function ($id) { })->name('warehouse.show'); 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'); +Route::get('/export/pending-arrangement-delivery-list', 'Exports\ExportPendingArrangementPackingListController@export')->name('packaging_list.pending_arrangement.export'); Route::get('/settings', function () { return view('pages.settings');