diff --git a/app/Classes/Jobs/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index cbc686e3..dfe0db93 100644 --- a/app/Classes/Jobs/UpdatePerfexCRM.php +++ b/app/Classes/Jobs/UpdatePerfexCRM.php @@ -9,6 +9,7 @@ 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 +18,37 @@ 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); + if($this->nextJob != null && $this->transaction != null){ + $updatePerfexCRMInvoiceOject = new UpdatePerfexCRMInvoiceObject( + $this->updatePerfexCRMObject->getContactEmail(), + $result->projectId, + $this->transaction, + true + ); + /** @var UpdatePerfexCRMInvoice $nextJob */ + $this->nextJob::dispatch($updatePerfexCRMInvoiceOject); + } } } diff --git a/app/Classes/Jobs/UpdatePerfexCRMInvoice.php b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php index d9c85637..1aaa596b 100644 --- a/app/Classes/Jobs/UpdatePerfexCRMInvoice.php +++ b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php @@ -47,6 +47,7 @@ class UpdatePerfexCRMInvoice implements ShouldQueue $invoiceId = 0; $invoiceStatus = 0; $invoice = (App()->make(FetchesPerfexCRMInvoice::class))->execute($customer->userid,"INV-", $transaction->owner->bill_no); + Log::error(json_encode('UpdatePerfexCRMInvoice debug $transaction->owner->bill_no: '.$transaction->owner->bill_no)); if(is_null($invoice)){ $result = (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($transaction->owner, $this->updatePerfexCRMInvoiceObject->getIsPaid()); @@ -58,27 +59,9 @@ 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 = ""; - $projectName = ""; - if($transaction->owner instanceof Transaction){ - $orderReference = $transaction->owner->owner->owner()->first()->reference; - $packingListReference = $transaction->owner->owner->reference; - $projectName = 'IZYIM | X1 Shipping | '.$orderReference.' | '.$packingListReference; - $result = (App()->make(FetchesPerfexCRMProject::class))->execute($projectName, $customer->userid); - if(isset($result->payload)){ - $project = $result->payload[0]; - $projectId = $project['id']; - } - } - - if($projectId == ""){ - Log::error(json_encode('UpdatePerfexCRMInvoice debug: '.$projectName)); - 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 22a1c4cd..8241939e 100644 --- a/app/Classes/Jobs/UpdatePerfexCRMPrelude.php +++ b/app/Classes/Jobs/UpdatePerfexCRMPrelude.php @@ -3,6 +3,7 @@ namespace App\Classes\Jobs; use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject; +use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObject; use App\Models\PackingList; use App\Models\Transaction; use Illuminate\Bus\Queueable; @@ -26,22 +27,27 @@ class UpdatePerfexCRMPrelude implements ShouldQueue /** @var UpdatePerfexCRMObject */ private $updatePerfexCRMObject; - /** @var */ - private $nextJob; + /** @var UpdatePerfexCRM */ + private $nextJob1; + + /** @var UpdatePerfexCRMInvoice */ + private $nextJob2; /** * UpdatePerfexCRMPrelude constructor. * @param $packingList * @param $transaction * @param UpdatePerfexCRMObject $updatePerfexCRMObject - * @param $nextJob + * @param UpdatePerfexCRM $nextJob1 + * @param UpdatePerfexCRMInvoice $nextJob2 */ - public function __construct($packingList, $transaction, UpdatePerfexCRMObject $updatePerfexCRMObject, $nextJob) + public function __construct($packingList, $transaction, UpdatePerfexCRMObject $updatePerfexCRMObject, $nextJob1, $nextJob2) { $this->packingList = $packingList; $this->transaction = $transaction; $this->updatePerfexCRMObject = $updatePerfexCRMObject; - $this->nextJob = $nextJob; + $this->nextJob1 = $nextJob1; + $this->nextJob2 = $nextJob2; } public function handle() @@ -63,7 +69,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 d19e6153..20df1dc9 100644 --- a/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMInvoiceObject.php +++ b/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMInvoiceObject.php @@ -17,11 +17,15 @@ class UpdatePerfexCRMInvoiceObject implements DataTransferObject /** @var bool */ private $isPaid; - public function __construct(string $email, Transaction $transaction, bool $isPaid) + /** @var string */ + private $projectId; + + public function __construct(string $email, string $projectId, Transaction $transaction, bool $isPaid) { $this->email = $email; $this->transaction = $transaction; $this->isPaid = $isPaid; + $this->projectId = $projectId; } /** @@ -32,6 +36,14 @@ class UpdatePerfexCRMInvoiceObject implements DataTransferObject return $this->email; } + /** + * @return string + */ + public function getProjectId(): string + { + return $this->projectId; + } + /** * @return Transaction */ diff --git a/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php index d0d70d73..b433049b 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php @@ -48,7 +48,7 @@ class PackingListToPerfexCRMProcessor PerfexCRMTasks::TASK_LOADED_CONTAINER_2, ] ); - UpdatePerfexCRMPrelude::dispatch($packingList, null, $updatePerfexCRMObject, UpdatePerfexCRM::class); + UpdatePerfexCRMPrelude::dispatch($packingList, null, $updatePerfexCRMObject, UpdatePerfexCRM::class, null); } } catch (\Exception $exception){ Log::error(json_encode('PackingListToPerfexCRMProcessor debug:')); diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php index e3e8e32e..d7aeeff2 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php @@ -2,13 +2,7 @@ namespace App\Classes\Modules\PerfexCRM\Processors; -use App\Classes\Modules\PerfexCRM\Processors\UpdatePerfexCRMProcessor; -use App\Classes\Modules\PerfexCRM\Services\Init; -use App\Classes\Modules\Companies\Services\FetchesCompany; use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject; -use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObject; -use App\Classes\General\Eloquent\AbstractUpdateRecord; -use App\Classes\ValueObjects\Constants\PerfexCRMMilestones; use App\Classes\ValueObjects\Constants\PerfexCRMTasks; use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus; use App\Classes\ValueObjects\Constants\ApprovalStatus; @@ -21,25 +15,6 @@ use Illuminate\Support\Facades\Log; class TransactionToPerfexCRMProcessor { - /** @var FetchesCompany */ - private $fetchesCompany; - - /** @var UpdatePerfexCRMProcessor */ - private $updatePerfexCRMProcessor; - - - /** - * TransactionToPerfexCRMProcessor constructor. - * @param UpdatePerfexCRMProcessor $updatePerfexCRMProcessor - * @param FetchesCompany $fetchesCompany - */ - public function __construct(UpdatePerfexCRMProcessor $updatePerfexCRMProcessor, FetchesCompany $fetchesCompany) - { - $this->updatePerfexCRMProcessor = $updatePerfexCRMProcessor; - $this->fetchesCompany = $fetchesCompany; - } - - /** * @param Transaction $model * @param int $status @@ -84,14 +59,7 @@ class TransactionToPerfexCRMProcessor ] ); - UpdatePerfexCRMPrelude::dispatch(null, $model, $updatePerfexCRMObject, UpdatePerfexCRM::class); - - $updatePerfexCRMInvoiceOject = new UpdatePerfexCRMInvoiceObject( - $contactEmail, - $model, - true - ); - UpdatePerfexCRMInvoice::dispatch($updatePerfexCRMInvoiceOject)->delay(6); + UpdatePerfexCRMPrelude::dispatch(null, $model, $updatePerfexCRMObject, UpdatePerfexCRM::class, UpdatePerfexCRMInvoice::class); } else if($model->owner instanceof \App\Models\PackingList && $model->status == ApprovalStatus::PENDING_SUBMISSION && $status == ApprovalStatus::APPROVED) { diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index f786f358..7806b161 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -108,6 +108,7 @@ 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 @@ -221,7 +222,10 @@ class UpdatePerfexCRMProcessor } } } - return true; + + $payload = []; + $payload['projectId'] = $projectId; + return (object) $payload; } }