Merge remote-tracking branch 'origin/last-mile-integration' into last-mile-integration

This commit is contained in:
omair saleh
2022-04-07 21:13:21 +08:00
7 changed files with 127 additions and 35 deletions
@@ -0,0 +1,81 @@
<?php
namespace App\Classes\Modules\Exports\Services;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Models\PackingList;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Carbon\Carbon;
class ExportsPendingArrangementDeliveryList implements FromQuery, WithHeadings, WithHeadingRow, WithMapping, ShouldAutoSize
{
use Exportable;
public function headings(): array
{
return [
'Container Ref.',
'ETA',
'Unstuffing',
'Marking',
'Order Number',
'Delay Days',
'Quantity',
'State',
'Postcode',
'Address',
'PIC',
'Phone',
'Remark'
];
}
/**
* @return \Illuminate\Support\Collection|mixed
*/
public function query()
{
return PackingList::where('type', '=', 2)->whereHas('containers', function ($query){
$query->where('containers.status', ApprovalStatus::COMPLETED);
})->whereDoesntHave('transports');
}
/**
* @param PackingList $packingList
*
* @return array
*/
public function map($packingList): array
{
$container = $packingList->containers()->first();
$ContainerTransport = $container->transports()->first();
$order = $packingList->owner;
$marking = $order->companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference;
$address = $order->addresses()->where('status', ApprovalStatus::APPROVED)->first();
$contacts = $address->contacts->first() ? $address->contacts->first(): '';
$originalPackingList = $packingList->owner instanceof PackingList ? $packingList->owner : $packingList;
$transport = $originalPackingList->containers()->first()->transports()->first();
return [
$container->reference,
$ContainerTransport->schedules()->where('status', '=', ApprovalStatus::APPROVED)->first()->eta,
$ContainerTransport->drop_date,
$marking,
$order->reference,
$transport ? Carbon::now()->diffInDays($transport->drop_date, false) . ' Days' : '',
$packingList->packages()->sum('quantity'),
$address->state->name,
$address->postcode,
$address->street_one.', '.$address->street_two.' '.$address->district->name.' '.$address->postcode.' '.$address->state->name.' '.$address->country->name,
$address->remarks->first() ? $address->remarks->first()->content: '',
$contacts ? $contacts ->reference : '',
$contacts ? $contacts ->phone : '',
];
}
}
@@ -0,0 +1,29 @@
<?php
namespace App\Http\Controllers\Exports;
use App\Classes\Modules\Exports\Services\ExportsPendingArrangementDeliveryList;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Excel;
class ExportPendingArrangementPackingListController
{
/**
* ExportPendingArrangementPackingListController constructor.
* @param Request $request
*/
public function __construct(Request $request)
{
$token = Auth::fromUser(User::find(1));
$request->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;
}
}
+4 -2
View File
@@ -16,6 +16,7 @@ class TransportResource extends JsonResource
*/
public function toArray($request)
{
$currentSchedule = $this->schedules()->where('status', '=', ApprovalStatus::APPROVED)->first();
return [
'id' => $this->id,
'type' => $this->type,
@@ -24,9 +25,10 @@ class TransportResource extends JsonResource
'dispatch_date' => $this->dispatch_date ? $this->dispatch_date->format('d-m-Y') : $this->dispatch_date,
'drop_date' => $this->drop_date ? $this->drop_date->format('d-m-Y') : $this->drop_date,
'status' => $this->status,
'current_schedule' => new ScheduleResource($this->schedules()->where('status', '=', ApprovalStatus::APPROVED)->first()),
'current_schedule' => new ScheduleResource($currentSchedule),
'schedule_history' => ScheduleResource::collection($this->schedules()->where('status', '=', ApprovalStatus::EXPIRED)->get()),
'dropped_days' => Carbon::now()->diffInDays($this->drop_date, false)
'dropped_days' => Carbon::now()->diffInDays($this->drop_date, false),
'schedule_complete' => $currentSchedule ? $currentSchedule->eta <= Carbon::now() : false
];
}
}
@@ -6,37 +6,6 @@
<customer-profile-component :data="company"></customer-profile-component>
</div>
</div>
<div class="alert alert-info padding-15" role="alert">
<div class="row">
<div class="col"></div>
<div class="col-auto">
<i class="fa fa-times text-info-darker pointer" data-dismiss="alert"></i>
</div>
</div>
<div class="row">
<div class="col">
<p>[清明节仓库放假通知 Qing Ming Warehouse Holiday Notice]<br>
尊敬的客户们<br>
仓库将为 2022年清明节假期做出如下安排 <br>
广州仓库 2022 4 4 - 2022 4 5 4月6日复工<br>
义乌仓库 2022 4 3 - 2022 4 4 4月5日复工<br>
*放假期间没有仓库人员值班 请大家安排好送货时间 感谢<br><br>
Dear Customers :<br>
Our warehouse holiday for Qing Ming is as below :<br>
Guangzhou : 4 April 2022 - 5 April 2022 (Resume date : 6 April)<br>
Yiwu : 3 April 2022 - 4 April 2022 (Resume date : 5 April)<br>
*Warehouse personnel are on leave during the holiday period, please arrange delivery date in advance, thank you</p>
</div>
</div>
</div>
<div class="row" v-show="!$store.getters.isShowing('createOrderForm')">
<div class="col">
<on-boarding-section-component v-if="company.last_order && company.status === 0"></on-boarding-section-component>
@@ -50,7 +50,7 @@
</div>
<div class="col-auto">
<small class="fs-10 all-caps muted">Status</small>
<p class="no-margin bold">{{status}}</p>
<p class="no-margin bold">{{item.container ? item.container.transport.schedule_complete && status === 'Shipping' ? 'Custom Clearance' : status : status}}</p>
</div>
<div class="col-auto" v-if="$store.getters.isAdmin">
<small class="fs-10 all-caps muted">Container</small>
+11 -1
View File
@@ -77,7 +77,17 @@
<div class="col">
<div class="row">
<div class="col">
<div class="row align-items-center p-t-10 p-b-10 b-t b-grey muted all-caps fs-10">
<a href="{{route('packaging_list.pending_arrangement.export')}}" target="_blank">
<button type="button" class="btn btn-sm p-t-10 p-b-10 p-r-35 p-l-35 btn-primary b-rad-none">
<div class="row align-items-center">
<div class="col-auto p-r-0 p-l-0">
<i class="fa fa-file-excel-o fs-16"></i>
</div>
<div class="col p-r-5">Export To Excel</div>
</div>
</button>
</a>
<div class="row align-items-center m-t-10 p-t-10 p-b-10 b-t b-grey muted all-caps fs-10">
<div class="col-2">Marking</div>
<div class="col-1 text-center">Quantity</div>
<div class="col-1">CBM</div>
+1
View File
@@ -248,6 +248,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');