From 1f3e1d32a18255732a6301d3ac16d548216748f7 Mon Sep 17 00:00:00 2001 From: Dillon Date: Fri, 31 Mar 2023 00:17:21 +0800 Subject: [PATCH 1/2] Sync code changes from Shipping Portal + Fix a problem related to activating 1688 service --- app/Classes/Jobs/UpdatePerfexCRM.php | 27 +++++++++++++++++-- app/Classes/Jobs/UpdatePerfexCRMInvoice.php | 15 +++-------- app/Classes/Jobs/UpdatePerfexCRMPrelude.php | 19 ++++++++----- .../UpdatePerfexCRMInvoiceObject.php | 14 +++++++++- .../BookingToPerfexCRMProcessor.php | 2 +- .../TransactionToPerfexCRMProcessor.php | 11 +------- .../Processors/UpdatePerfexCRMProcessor.php | 8 ++++-- .../NewServiceAnnouncementComponent.vue | 23 ++++++++++------ 8 files changed, 77 insertions(+), 42 deletions(-) diff --git a/app/Classes/Jobs/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index cbc686e3..059779e1 100644 --- a/app/Classes/Jobs/UpdatePerfexCRM.php +++ b/app/Classes/Jobs/UpdatePerfexCRM.php @@ -9,6 +9,8 @@ use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject; +use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObject; + class UpdatePerfexCRM implements ShouldQueue { @@ -17,17 +19,38 @@ class UpdatePerfexCRM implements ShouldQueue /** @var UpdatePerfexCRMObject */ private $updatePerfexCRMObject; + /** @var UpdatePerfexCRMInvoice */ + private $nextJob; + + /** @var */ + private $transaction; + /** * UpdatePerfexCRM constructor. * @param UpdatePerfexCRMObject $updatePerfexCRMObject + * @param UpdatePerfexCRMInvoice $nextJob + * @param $transaction */ - public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject) + public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject, $transaction, $nextJob) { $this->updatePerfexCRMObject = $updatePerfexCRMObject; + $this->nextJob = $nextJob; + $this->transaction = $transaction; } public function handle() { - (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject); + $result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject); + /** @var UpdatePerfexCRMInvoice $nextJob*/ + if($this->nextJob != null && $this->transaction != null){ + $updatePerfexCRMInvoiceOject = new UpdatePerfexCRMInvoiceObject( + $this->updatePerfexCRMObject->getContactEmail(), + $this->updatePerfexCRMObject->getProjectName(), + $result->projectId, + $this->transaction, + true, + ); + $this->nextJob::dispatch($updatePerfexCRMInvoiceOject); + } } } diff --git a/app/Classes/Jobs/UpdatePerfexCRMInvoice.php b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php index dae4cdc9..3cfbcd20 100644 --- a/app/Classes/Jobs/UpdatePerfexCRMInvoice.php +++ b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php @@ -56,6 +56,7 @@ class UpdatePerfexCRMInvoice implements ShouldQueue $number = 'EXC-'.$number; $invoice = (App()->make(FetchesPerfexCRMInvoice::class))->execute($customer->userid,"INV-", $number); + Log::error(json_encode('UpdatePerfexCRMInvoice debug $number: '.$number)); if(is_null($invoice)){ $result = (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($transaction, null, null, $this->updatePerfexCRMInvoiceObject->getIsPaid()); @@ -67,20 +68,10 @@ class UpdatePerfexCRMInvoice implements ShouldQueue //This only run when invoice already exist and the invoice does not have a PAID status if($invoiceStatus != PerfexCRMInvoiceStatus::PAID){ - //get project - $projectId = ""; - $project = (App()->make(FetchesPerfexCRMProject::class))->execute($this->updatePerfexCRMInvoiceObject->getProjectName(), $customer->userid); - if(!is_null($project)){ - $projectId = $project->id; - } - - if($projectId == ""){ - Log::error(json_encode('UpdatePerfexCRMInvoice debug: '.$this->updatePerfexCRMInvoiceObject->getProjectName())); - Log::error(json_encode($transaction->owner)); - } + Log::error(json_encode('UpdatePerfexCRMInvoice debug $this->updatePerfexCRMInvoiceObject->getProjectId(): '.$this->updatePerfexCRMInvoiceObject->getProjectId())); //update invoice - (App()->make(UpdatesPerfexCRMInvoice::class))->execute($invoice, $projectId); + (App()->make(UpdatesPerfexCRMInvoice::class))->execute($invoice, $this->updatePerfexCRMInvoiceObject->getProjectId()); } } diff --git a/app/Classes/Jobs/UpdatePerfexCRMPrelude.php b/app/Classes/Jobs/UpdatePerfexCRMPrelude.php index 6ca33eae..25afdc4d 100644 --- a/app/Classes/Jobs/UpdatePerfexCRMPrelude.php +++ b/app/Classes/Jobs/UpdatePerfexCRMPrelude.php @@ -21,20 +21,25 @@ class UpdatePerfexCRMPrelude implements ShouldQueue /** @var UpdatePerfexCRMObject */ private $updatePerfexCRMObject; - /** @var */ - private $nextJob; + /** @var UpdatePerfexCRM */ + private $nextJob1; + + /** @var UpdatePerfexCRMInvoice */ + private $nextJob2; /** * UpdatePerfexCRMPrelude constructor. * @param Transaction $transaction * @param UpdatePerfexCRMObject $updatePerfexCRMObject - * @param $nextJob + * @param UpdatePerfexCRM $nextJob1 + * @param UpdatePerfexCRMInvoice $nextJob2 */ - public function __construct(Transaction $transaction, UpdatePerfexCRMObject $updatePerfexCRMObject, $nextJob) + public function __construct(Transaction $transaction, UpdatePerfexCRMObject $updatePerfexCRMObject, $nextJob1, $nextJob2) { $this->transaction = $transaction; $this->updatePerfexCRMObject = $updatePerfexCRMObject; - $this->nextJob = $nextJob; + $this->nextJob1 = $nextJob1; + $this->nextJob2 = $nextJob2; } public function handle() @@ -73,7 +78,9 @@ class UpdatePerfexCRMPrelude implements ShouldQueue $result = $this->replacePlaceholders($this->updatePerfexCRMObject->getTasks(), $data); $this->updatePerfexCRMObject->setTasks($result); - $this->nextJob::dispatch($this->updatePerfexCRMObject); + /** @var UpdatePerfexCRM $nextJob1 */ + /** @var UpdatePerfexCRMInvoice $nextJob2 */ + $this->nextJob1::dispatch($this->updatePerfexCRMObject, $this->transaction, $this->nextJob2); } function replacePlaceholders($template, $data, $prefix = '') diff --git a/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMInvoiceObject.php b/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMInvoiceObject.php index ff2c2080..ad7fb921 100644 --- a/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMInvoiceObject.php +++ b/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMInvoiceObject.php @@ -20,12 +20,16 @@ class UpdatePerfexCRMInvoiceObject implements DataTransferObject /** @var string */ private $projectName; - public function __construct(string $email, Transaction $transaction, bool $isPaid, string $projectName) + /** @var string */ + private $projectId; + + public function __construct(string $email, string $projectName, string $projectId, Transaction $transaction, bool $isPaid) { $this->email = $email; $this->transaction = $transaction; $this->isPaid = $isPaid; $this->projectName = $projectName; + $this->projectId = $projectId; } /** @@ -59,4 +63,12 @@ class UpdatePerfexCRMInvoiceObject implements DataTransferObject { return $this->projectName; } + + /** + * @return string + */ + public function getProjectId(): string + { + return $this->projectId; + } } diff --git a/app/Classes/Modules/PerfexCRM/Processors/BookingToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/BookingToPerfexCRMProcessor.php index 5929ea1d..76b01825 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/BookingToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/BookingToPerfexCRMProcessor.php @@ -37,7 +37,7 @@ class BookingToPerfexCRMProcessor [], [] ); - UpdatePerfexCRM::dispatch($updatePerfexCRMObject); + UpdatePerfexCRM::dispatch($updatePerfexCRMObject, null, null); return true; } diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php index 4bf3e699..93ad30da 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php @@ -8,7 +8,6 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus; use App\Classes\ValueObjects\Constants\PerfexCRMTaskStatus; -use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObject; use App\Classes\Jobs\UpdatePerfexCRMInvoice; use App\Classes\Jobs\UpdatePerfexCRM; use App\Classes\Jobs\UpdatePerfexCRMPrelude; @@ -119,16 +118,8 @@ class TransactionToPerfexCRMProcessor $tasks ); - UpdatePerfexCRMPrelude::dispatch($model, $updatePerfexCRMObject, UpdatePerfexCRM::class); + UpdatePerfexCRMPrelude::dispatch($model, $updatePerfexCRMObject, UpdatePerfexCRM::class, UpdatePerfexCRMInvoice::class); } - - $updatePerfexCRMInvoiceOject = new UpdatePerfexCRMInvoiceObject( - $contactEmail, - $model, - true, - $projectName - ); - UpdatePerfexCRMInvoice::dispatch($updatePerfexCRMInvoiceOject); } else if($status == ApprovalStatus::PENDING_VERIFICATION){ if($model->type == TransactionType::PURCHASE_ORDER){ diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index b6fcb1ac..752c9644 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -108,7 +108,8 @@ class UpdatePerfexCRMProcessor * @throws \App\Classes\Exceptions\MalformedRequestException */ public function execute(UpdatePerfexCRMObject $updatePerfexCRMObject) { - + $projectId = ""; + // Customer has to exist first before Project can appear under it // Check with Perfex CRM, if this user (email) was previously a lead, should automatically now become a customer $crmCompany = $updatePerfexCRMObject->getCompanyName(); @@ -220,6 +221,9 @@ class UpdatePerfexCRMProcessor // } } } - return true; + + $payload = []; + $payload['projectId'] = $projectId; + return (object) $payload; } } diff --git a/resources/assets/vue/components/companies/elements/NewServiceAnnouncementComponent.vue b/resources/assets/vue/components/companies/elements/NewServiceAnnouncementComponent.vue index c4b8930b..ebcf3851 100644 --- a/resources/assets/vue/components/companies/elements/NewServiceAnnouncementComponent.vue +++ b/resources/assets/vue/components/companies/elements/NewServiceAnnouncementComponent.vue @@ -148,7 +148,8 @@ segment_id: '' }, expanded: false, - failed: false + failed: false, + part: 0 } }, methods: { @@ -156,19 +157,19 @@ this.parameters = { segment_id: 13 }; - + this.part = 1; if(this.acknowledge){ this.submit(this.route('api.company.segment.assign', this.data.id), 'post', 'activateService', true, false); } - location.reload(); + // location.reload(); }, ServiceWaitingList(){ this.acknowledge = true; this.parameters = { segment_id: 14 }; - + this.part = 2; this.submit(this.route('api.company.segment.assign', this.data.id), 'post', 'activateService', false, false) }, failedRequierments(){ @@ -177,18 +178,24 @@ this.parameters = { segment_id: 17 }; - + this.part = 3; this.submit(this.route('api.company.segment.assign', this.data.id), 'post', 'activateService', false, false) }, ServiceNotInterested(){ this.parameters = { segment_id: 16 }; - + this.part = 4; this.submit(this.route('api.company.segment.assign', this.data.id), 'post', 'activateService', true, false); - location.reload(); + // location.reload(); + }, + successHandler(){ + console.log('successful'); + if(this.part == 1 || this.part == 4){ + location.reload(); + } } }, mixins: [componentHandler] } - \ No newline at end of file + From a3a1c912a3a3678e481d9f8289f024f207d924b9 Mon Sep 17 00:00:00 2001 From: Dillon Date: Fri, 31 Mar 2023 17:43:22 +0800 Subject: [PATCH 2/2] Minor code amendment --- .../PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php | 2 +- .../PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php | 2 +- .../Processors/CreateInvoiceTransactionProcessor.php | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php index fdd7a618..4dbaa2d5 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php @@ -120,7 +120,7 @@ class CreatePerfexCRMInvoiceProcessor $bookingMarking = $transaction->owner->marking; $serviceTypeName = $transaction->owner->company->services()->where('id', $transaction->owner->service_id)->first()->name; $projectName = 'Exchange | '.$serviceTypeName.' | '.$bookingMarking; - Log::error('CreatePerfexCRMInvoiceProcessor debug:'); + Log::error('CreatePerfexCRMInvoiceProcessor debug:'.json_encode($transaction)); Log::error('$projectName: '.$projectName); return $email; } diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php index 93ad30da..903c640e 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php @@ -143,7 +143,7 @@ class TransactionToPerfexCRMProcessor [], $tasks ); - UpdatePerfexCRM::dispatch($updatePerfexCRMObject); + UpdatePerfexCRM::dispatch($updatePerfexCRMObject, null, null); } } } diff --git a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php index 985d45ea..391f6db9 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php @@ -18,7 +18,6 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\SegmentConstants; use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\DocumentType; -use App\Classes\Jobs\CreatePerfexCRMInvoice; use App\Models\Booking; use App\Models\SegmentConstant;