diff --git a/app/Classes/Modules/Companies/ControllersLogic/ApproveIdentificationDocumentLogic.php b/app/Classes/Modules/Companies/ControllersLogic/ApproveIdentificationDocumentLogic.php index af42a35a..928a9c01 100644 --- a/app/Classes/Modules/Companies/ControllersLogic/ApproveIdentificationDocumentLogic.php +++ b/app/Classes/Modules/Companies/ControllersLogic/ApproveIdentificationDocumentLogic.php @@ -97,15 +97,15 @@ class ApproveIdentificationDocumentLogic extends AbstractControllerLogic $this->updatesCompanyStatus->execute($document->owner, $status === 'approve' ? ApprovalStatus::APPROVED : ApprovalStatus::REJECTED); - $object = new NotificationObject( - 'ID Verification ' . ( $status === 'approve' ? 'Approved' : 'Rejected' ), - ( $status === 'approve' ? 'Dear user, congratulations that your ' : 'Dear user, we are sorry to inform you that your ' ) . ( $document->type === 'IDENTITY_CARD' ? 'IC' : 'SSM' ) . ( $status === 'approve' ? ' has been approved. Start your first order now!' : ' has been rejected due to ' . ( $request->input('rejectRemark') ?? '' ) . ', please resubmit it for further action.' ), - $document->owner, - $document->owner->companyModules()->first()->employees()->first(), - $document, - ); - - $this->createNotificationProcessor->execute($object); +// $object = new NotificationObject( +// 'ID Verification ' . ( $status === 'approve' ? 'Approved' : 'Rejected' ), +// ( $status === 'approve' ? 'Dear user, congratulations that your ' : 'Dear user, we are sorry to inform you that your ' ) . ( $document->type === 'IDENTITY_CARD' ? 'IC' : 'SSM' ) . ( $status === 'approve' ? ' has been approved. Start your first order now!' : ' has been rejected due to ' . ( $request->input('rejectRemark') ?? '' ) . ', please resubmit it for further action.' ), +// $document->owner, +// $document->owner->companyModules()->first()->employees()->first(), +// $document, +// ); +// +// $this->createNotificationProcessor->execute($object); if($status === 'approve'){ $orders = $this->updatesOrdersStatus->execute($document->owner, ApprovalStatus::APPROVED); diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/ReschedulePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/ReschedulePackingListLogic.php index 50371cc6..004390ef 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/ReschedulePackingListLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/ReschedulePackingListLogic.php @@ -7,9 +7,13 @@ use App\Classes\Modules\PackingLists\Services\FetchesPackingList; use App\Classes\Modules\Schedules\Services\CreatesSchedule; use App\Classes\Modules\Schedules\Services\UpdatesScheduleStatus; use App\Classes\Modules\Schedules\DataTransferObjects\ScheduleObject; +use App\Classes\Modules\Transports\DataTransferObjects\TransportObject; +use App\Classes\Modules\Transports\Services\CreatesTransport; use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\ValueObjects\Constants\TransportType; use App\Http\Resources\PackingListResource; +use App\Models\Transport; use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -17,6 +21,8 @@ use Carbon\Carbon; class ReschedulePackingListLogic extends AbstractControllerLogic { + + /** * @return array */ @@ -33,26 +39,31 @@ class ReschedulePackingListLogic extends AbstractControllerLogic /** @var UpdatesScheduleStatus */ private $updatesScheduleStatus; + /** @var CreatesTransport */ + private $createsTransport; + /** @var CreatesSchedule */ private $createsSchedule; /** - * DeleteContainerControllersLogic constructor. + * ReschedulePackingListLogic constructor. * @param FetchesPackingList $fetchesPackingList + * @param UpdatesScheduleStatus $updatesScheduleStatus + * @param CreatesTransport $createsTransport * @param CreatesSchedule $createsSchedule */ - public function __construct(FetchesPackingList $fetchesPackingList, UpdatesScheduleStatus $updatesScheduleStatus, CreatesSchedule $createsSchedule) + public function __construct(FetchesPackingList $fetchesPackingList, UpdatesScheduleStatus $updatesScheduleStatus, CreatesTransport $createsTransport, CreatesSchedule $createsSchedule) { $this->fetchesPackingList = $fetchesPackingList; $this->updatesScheduleStatus = $updatesScheduleStatus; + $this->createsTransport = $createsTransport; $this->createsSchedule = $createsSchedule; } - /** * @param Request $request * @return JsonResponse - * @throws ErrorException + * @throws \App\Classes\Exceptions\MalformedRequestException */ public function logic(Request $request) : JsonResponse { @@ -60,9 +71,15 @@ class ReschedulePackingListLogic extends AbstractControllerLogic $transport = $packing_list->transports()->first(); - $old_sechedule = $transport->schedules()->first(); + if(!$transport) { + $object = new TransportObject(TransportType::LAND, null, '', Carbon::parse($request->input('etd')), Carbon::parse($request->input('eta')),ApprovalStatus::APPROVED); + /** @var Transport $transport */ + $transport = $this->createsTransport->execute($object, $packing_list); + } - $this->updatesScheduleStatus->execute($old_sechedule, ApprovalStatus::REJECTED); + $transport->schedules()->update([ + 'status' => ApprovalStatus::REJECTED + ]); $scheduleObject = new ScheduleObject( Carbon::parse($request->input('eta')), diff --git a/app/Classes/Modules/PackingLists/Processors/FetchOrderListsFromYdPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchOrderListsFromYdPortalProcessor.php index 99ebf9c1..a5a1901b 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchOrderListsFromYdPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchOrderListsFromYdPortalProcessor.php @@ -132,6 +132,7 @@ class FetchOrderListsFromYdPortalProcessor * @param Carbon|null $start * @param Carbon|null $end * @return void + * @throws \GuzzleHttp\Exception\GuzzleException */ public function execute(?Carbon $start = null, ?Carbon $end = null) { @@ -170,7 +171,6 @@ class FetchOrderListsFromYdPortalProcessor $rows = $this->fetchesDataFRomYDPortal->getResponseBody($trackingRequest); if(!$rows){ - Log::debug($row->expressno); continue; } @@ -203,6 +203,7 @@ class FetchOrderListsFromYdPortalProcessor } $rescheduleDate = $dates->sortDesc()->first(); + if(!$delayDate || $rescheduleDate > $delayDate){ /** @var Carbon $delayDate */ $delayDate = $rescheduleDate; @@ -214,11 +215,14 @@ class FetchOrderListsFromYdPortalProcessor } + if ($trackingRow->tracking === '到港') { + $delayDate = Carbon::parse($trackingRow->trackingtime); + } + if ($trackingRow->tracking === '已开船') { $delayDate = Carbon::parse($trackingRow->trackingtime)->addDays('5'); } - if ($trackingRow->tracking === '货物已进目的港仓库') { $unstuffingDate = Carbon::parse($trackingRow->trackingtime); } @@ -228,6 +232,21 @@ class FetchOrderListsFromYdPortalProcessor } } + $client = new \GuzzleHttp\Client(['cookies' => true, 'headers' => ['Cookie' => 'utc_offset=480']]); + + $request = $client->request('get', 'https://main.universe.com.my/Tracking/User/Paging?sEcho=1&sTrackingNo='.$row->expressno.'&sOrgId=sti'); + $deliveryTracking = json_decode($request->getBody()->getContents()); + foreach (array_reverse($deliveryTracking->aaData) as $trackingRow) { + $trackingDate = Carbon::createFromFormat('d/m/y H:i', $trackingRow->LocalDateTime); + if (Str::contains($trackingRow->PublicDescription, ['accepted/picked'])){ + $unstuffingDate = $trackingDate; + } + + if (Str::contains($trackingRow->PublicDescription, ['delivered'])) { + $deliveryDate = $trackingDate; + } + } + $customerno = preg_split('(-|\(|\)|\/)', $row->customerno); $orderNumber = $customerno[array_key_last($customerno)]; @@ -433,7 +452,6 @@ class FetchOrderListsFromYdPortalProcessor } } catch (\Exception $exception) { - dump($exception); Log::debug($exception); } diff --git a/app/Classes/Modules/Segments/ControllersLogic/UpdateConstantLogic.php b/app/Classes/Modules/Segments/ControllersLogic/UpdateConstantLogic.php index 13054a6c..64c41820 100644 --- a/app/Classes/Modules/Segments/ControllersLogic/UpdateConstantLogic.php +++ b/app/Classes/Modules/Segments/ControllersLogic/UpdateConstantLogic.php @@ -102,7 +102,7 @@ class UpdateConstantLogic extends AbstractControllerLogic $constant = $this->fetchesConstant->execute(['segment_id' => $segment->id, 'reference' => $request->input('reference')]); - $constantValue = $this->updatesConstantValue->execute($constant->value, $request->input('id'), $request->input('rate')); + $constantValue = $this->updatesConstantValue->execute($constant->value, $request->input('id'), $request->input('value')); $object = new ConstantObject($request->input('reference'), $constantValue); @@ -112,7 +112,7 @@ class UpdateConstantLogic extends AbstractControllerLogic $constantObject = []; - $constantObject[$request->input('id')] = $request->input('rate'); + $constantObject[$request->input('id')] = $request->input('value'); $object = new ConstantObject( $request->input('reference'), diff --git a/app/Classes/Modules/Segments/Services/UpdatesConstantValue.php b/app/Classes/Modules/Segments/Services/UpdatesConstantValue.php index c8060940..fac73d6b 100644 --- a/app/Classes/Modules/Segments/Services/UpdatesConstantValue.php +++ b/app/Classes/Modules/Segments/Services/UpdatesConstantValue.php @@ -7,9 +7,9 @@ class UpdatesConstantValue /** * @param $json - * @param int $status_id - * @param Array $rate - * @return Array + * @param int $state_id + * @param array $rate + * @return array */ public function execute($json, int $state_id, Array $rate) { diff --git a/app/Classes/ValueObjects/Constants/SegmentConstants.php b/app/Classes/ValueObjects/Constants/SegmentConstants.php index 88be0247..4a43c44f 100644 --- a/app/Classes/ValueObjects/Constants/SegmentConstants.php +++ b/app/Classes/ValueObjects/Constants/SegmentConstants.php @@ -11,6 +11,8 @@ class SegmentConstants public const BASE_PRICE = 'BASE_PRICE'; + public const CUSTOM_PRICE = 'CUSTOM_PRICE'; + public const WAREHOUSE_RATE = 'WAREHOUSE_RATE'; public const STATE_RATE = 'STATE_RATE'; diff --git a/app/Http/Resources/SegmentResource.php b/app/Http/Resources/SegmentResource.php index a4e1c858..a587a7ff 100644 --- a/app/Http/Resources/SegmentResource.php +++ b/app/Http/Resources/SegmentResource.php @@ -15,13 +15,11 @@ class SegmentResource extends JsonResource */ public function toArray($request) { + $constant = $this->constants->where('reference', SegmentConstants::CUSTOM_PRICE)->first(); return [ 'id' => $this->id, 'name' => $this->name, - // 'time_limit' => $this->when($this->whereHas('constants', function($query){ - // $query->where('reference', SegmentConstants::PAYMENT_ATTEMPT_DURATION_LIMIT); - // }), $this->constants->where('reference', SegmentConstants::PAYMENT_ATTEMPT_DURATION_LIMIT)->first()), - // 'services' => CustomServiceTypeResource::collection($this->constants->where('reference', SegmentConstants::CUSTOM_SERVICE_TYPE)) + 'price' => $constant ? $constant->value : 0 ]; } } diff --git a/database/migrations/2022_03_14_133563_create_addons_table.php b/database/migrations/2022_03_14_133563_create_addons_table.php index 42bc4ae6..2e040069 100644 --- a/database/migrations/2022_03_14_133563_create_addons_table.php +++ b/database/migrations/2022_03_14_133563_create_addons_table.php @@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -class CreateAddonsTables extends Migration +class CreateAddonsTable extends Migration { /** * Run the migrations. @@ -13,7 +13,7 @@ class CreateAddonsTables extends Migration */ public function up() { - Schema::table('addons', function (Blueprint $table) { + Schema::create('addons', function (Blueprint $table) { $table->id(); $table->morphs('owner'); $table->string('reference',200); diff --git a/resources/assets/vue/components/orders/forms/OrderFormComponent.vue b/resources/assets/vue/components/orders/forms/OrderFormComponent.vue index 8c07e194..51c2ec09 100644 --- a/resources/assets/vue/components/orders/forms/OrderFormComponent.vue +++ b/resources/assets/vue/components/orders/forms/OrderFormComponent.vue @@ -27,7 +27,8 @@
-
+ +
@@ -39,6 +40,7 @@
+

Due to pandemic prevention, we have decided to temporarily disable our Yiwu warehouse.

@@ -53,6 +55,7 @@

近期由于船期的安排和马来西亚海关的运作等一些不可控因数,导致船期延迟,请大家提前做好采购安排。若有不便之处,敬请谅解。
Due to inevitable circumstances, shipping arrangements and Malaysia custom clearance may have delays. Kindly plan your purchases in advance, thank you for your cooperation.

+

由于义乌船期不稳定,建议发广州仓库。
Due to unexpected shipping delays for Yiwu warehouse, you may select an alternative warehouse.

由于义乌船期不稳定,建议发广州仓库。
Due to unexpected shipping delays for Yiwu warehouse, you may select an alternative warehouse.

diff --git a/resources/assets/vue/components/settings/elements/SegmentComponent.vue b/resources/assets/vue/components/settings/elements/SegmentComponent.vue index cb43c64a..0c0e8866 100644 --- a/resources/assets/vue/components/settings/elements/SegmentComponent.vue +++ b/resources/assets/vue/components/settings/elements/SegmentComponent.vue @@ -27,7 +27,7 @@
-
MYR 0.00
+
MYR {{item.price[data.id].amount}}
diff --git a/resources/assets/vue/components/settings/forms/EditSegmentPriceFormComponent.vue b/resources/assets/vue/components/settings/forms/EditSegmentPriceFormComponent.vue index 4d6b70b2..73ab5c61 100644 --- a/resources/assets/vue/components/settings/forms/EditSegmentPriceFormComponent.vue +++ b/resources/assets/vue/components/settings/forms/EditSegmentPriceFormComponent.vue @@ -9,7 +9,7 @@
- +
@@ -33,8 +33,8 @@ parameters: { reference: 'CUSTOM_PRICE', id: this.data.id, - rate : { - amount: 0 + value : { + amount: this.data.price[this.data.id].amount } } }; diff --git a/resources/views/partials/header.blade.php b/resources/views/partials/header.blade.php index 5a37f886..9bc45c20 100644 --- a/resources/views/partials/header.blade.php +++ b/resources/views/partials/header.blade.php @@ -10,7 +10,7 @@
-
+
diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php index 952060c7..42dd5141 100644 --- a/resources/views/partials/menu.blade.php +++ b/resources/views/partials/menu.blade.php @@ -147,7 +147,7 @@
Shipping Queue
-
+