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.
近期由于船期的安排和马来西亚海关的运作等一些不可控因数,导致船期延迟,请大家提前做好采购安排。若有不便之处,敬请谅解。
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.