From 4769541535b34ec9a9ca8b5b31d4ac333ac8bf9a Mon Sep 17 00:00:00 2001 From: Dillon Date: Sun, 12 Mar 2023 17:37:49 +0800 Subject: [PATCH 1/6] CRM add department custom field to tasks --- .env.example | 4 ++++ .../CreateTaskPerfexCRMObject.php | 12 +++++++++++- .../CreatePerfexCRMTaskProcessor.php | 1 + .../InitializePerfexCRMProcessor.php | 2 +- .../NewLeadTaskToPerfexCRMProcessor.php | 3 ++- .../Processors/UpdatePerfexCRMProcessor.php | 2 +- .../Services/CreatesPerfexCRMTask.php | 18 +++++++++++++++--- .../Services/UpdatesPerfexCRMCustomer.php | 3 ++- .../Services/UpdatesPerfexCRMLead.php | 3 ++- .../Constants/PerfexCRMCustomFields.php | 18 ++++++++++++++++++ .../ValueObjects/Constants/PerfexCRMTasks.php | 8 ++++++++ 11 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 app/Classes/ValueObjects/Constants/PerfexCRMCustomFields.php diff --git a/.env.example b/.env.example index 5ae78676..8f2f87a1 100644 --- a/.env.example +++ b/.env.example @@ -55,3 +55,7 @@ EXCHANGE_URL=https://dev.exchange.cief-malaysia.com/ MIX_EXCHANGE_URL="${EXCHANGE_URL}" YD_API_CODE='' + +PERFEXCRM_BASE_URL="" +PERFEXCRM_API_KEY="" +PERFEXCRM_IS_ENABLED="false" diff --git a/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php b/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php index 70bae013..8923ec01 100644 --- a/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php +++ b/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php @@ -33,8 +33,10 @@ class CreateTaskPerfexCRMObject implements DataTransferObject /** @var string */ private $status; + /** @var string */ + private $department; - public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status) + public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status, string $department) { $this->email = $email; $this->name = $name; @@ -45,6 +47,7 @@ class CreateTaskPerfexCRMObject implements DataTransferObject $this->reference = $reference; $this->onTaskCompletion = $onTaskCompletion; $this->status = $status; + $this->department = $department; } /** @@ -124,4 +127,11 @@ class CreateTaskPerfexCRMObject implements DataTransferObject return $this->status; } + /** + * @return string + */ + public function getDepartment(): string + { + return $this->department; + } } diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php index 965f6f34..f70760f8 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php @@ -33,6 +33,7 @@ class CreatePerfexCRMTaskProcessor $createTaskPerfexCRMObject->getProjectId(), $createTaskPerfexCRMObject->getReference(), $createTaskPerfexCRMObject->getOnTaskCompletion(), + $createTaskPerfexCRMObject->getDepartment(), $createTaskPerfexCRMObject->getStatus(), ); return true; diff --git a/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php index 809dc835..82ef0d36 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php @@ -183,7 +183,7 @@ class InitializePerfexCRMProcessor } // Get existing or create task - $result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $taskStatus); + $result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'],$tasks[$count]['department'], $taskStatus); if(is_null($result)){ break; //Breaking the rest of the tasks in array assuming that they are all created as a batch previously } diff --git a/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php index b882d0c7..d2fdf961 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php @@ -29,7 +29,8 @@ class NewLeadTaskToPerfexCRMProcessor "", "", "", - PerfexCRMTasks::TASK_IDENTIFICATION_1['status'] + PerfexCRMTasks::TASK_IDENTIFICATION_1['status'], + PerfexCRMTasks::TASK_IDENTIFICATION_1['department'] ); CreatePerfexCRMSingleTask::dispatch($createTaskPerfexCRMObject); diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 324aeea8..475a2eaf 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -194,7 +194,7 @@ class UpdatePerfexCRMProcessor } // Get existing or create task - $result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $taskStatus); + $result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $tasks[$count]['department'], $taskStatus); if(is_null($result)){ break; //Breaking the rest of the tasks in array assuming that they are all created as a batch previously } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php index 1674c999..8d75989a 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; use Illuminate\Support\Facades\Log; +use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields; class CreatesPerfexCRMTask { @@ -20,8 +21,17 @@ class CreatesPerfexCRMTask * @return null|object * @throws MalformedRequestException */ - public function execute(string $taskName, string $taskDescription, string $leadId, string $milestoneId, string $projectId, string $reference = '', string $on_task_completion = '', string $status = "1") { + public function execute(string $taskName, string $taskDescription, string $leadId, string $milestoneId, string $projectId, string $reference = '', string $on_task_completion = '', string $department = '', string $status = "1") { try{ + $custom_fields = []; + if($department != ""){ + $custom_fields = [ + "tasks" => [ + PerfexCRMCustomFields::TASKS_DEPARTMENT => $department + ] + ]; + } + $data = [ 'name' => $taskName, 'description' => $taskDescription, @@ -32,7 +42,8 @@ class CreatesPerfexCRMTask 'status' => $status, 'is_system_created' => 1, 'reference' => $reference, - 'on_task_completion' => $on_task_completion + 'on_task_completion' => $on_task_completion, + 'custom_fields' => $custom_fields ]; if($leadId != '') { @@ -46,7 +57,8 @@ class CreatesPerfexCRMTask 'status' => $status, 'is_system_created' => 1, 'reference' => $reference, - 'on_task_completion' => $on_task_completion + 'on_task_completion' => $on_task_completion, + 'custom_fields' => $custom_fields ]; } diff --git a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php index 3f891d08..bdcf7437 100644 --- a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php +++ b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; use Illuminate\Support\Facades\Log; +use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields; class UpdatesPerfexCRMCustomer { @@ -19,7 +20,7 @@ class UpdatesPerfexCRMCustomer try{ $custom_fields = [ "customers" => [ - 2 => $companyReference + PerfexCRMCustomFields::CUSTOMERS_SHIPPING_PORTAL_REFERENCE => $companyReference ] ]; diff --git a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php index 565dcc99..3c0e4897 100644 --- a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php +++ b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; use Illuminate\Support\Facades\Log; +use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields; class UpdatesPerfexCRMLead { @@ -18,7 +19,7 @@ class UpdatesPerfexCRMLead try{ $custom_fields = [ "leads" => [ - 4 => $companyReference + PerfexCRMCustomFields::LEADS_SHIPPING_PORTAL_REFERENCE => $companyReference ] ]; diff --git a/app/Classes/ValueObjects/Constants/PerfexCRMCustomFields.php b/app/Classes/ValueObjects/Constants/PerfexCRMCustomFields.php new file mode 100644 index 00000000..f40f4a1d --- /dev/null +++ b/app/Classes/ValueObjects/Constants/PerfexCRMCustomFields.php @@ -0,0 +1,18 @@ + 'MILESTONE 1 - Customer Paid', 'reference' => '', 'on_task_completion' => '', + 'department' => '', 'status' => PerfexCRMTaskStatus::COMPLETED ]; @@ -29,6 +30,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_POST_PAYMENT_1', 'on_task_completion' => 'TASK_POST_PAYMENT_2', + 'department' => 'Accounts', 'status' => PerfexCRMTaskStatus::IN_PROGRESS ]; public const TASK_POST_PAYMENT_2 = [ @@ -44,6 +46,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_POST_PAYMENT_2', 'on_task_completion' => 'TASK_POST_PAYMENT_3', + 'department' => 'Accounts', 'status' => '' ]; public const TASK_POST_PAYMENT_3 = [ @@ -59,6 +62,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_POST_PAYMENT_3', 'on_task_completion' => 'TASK_POST_PAYMENT_4', + 'department' => 'Accounts', 'status' => '' ]; public const TASK_POST_PAYMENT_4 = [ @@ -74,6 +78,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_POST_PAYMENT_4', 'on_task_completion' => '', + 'department' => 'Accounts', 'status' => '' ]; @@ -88,6 +93,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_LOADED_CONTAINER_1', 'on_task_completion' => 'TASK_LOADED_CONTAINER_2', + 'department' => 'Operations', 'status' => PerfexCRMTaskStatus::IN_PROGRESS ]; @@ -101,6 +107,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_LOADED_CONTAINER_2', 'on_task_completion' => '', + 'department' => 'Customer Services', 'status' => '' ]; @@ -118,6 +125,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_IDENTIFICATION_1', 'on_task_completion' => '', + 'department' => 'Operations', 'status' => PerfexCRMTaskStatus::IN_PROGRESS ]; } From 0fd3584af25b921942895b3f9b676fd96a4f2302 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 16:03:05 +0800 Subject: [PATCH 2/6] billplz audit --- routes/web.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/routes/web.php b/routes/web.php index ab6c32b4..18efb102 100644 --- a/routes/web.php +++ b/routes/web.php @@ -968,6 +968,9 @@ Route::get('/billplz/audit', function (Request $request) { if($data['paid']){ } else { + $transaction->status = ApprovalStatus::REJECTED; + $transaction->save(); + $totalAmount += $transaction->amount; echo 'Order: '. $transaction->owner->owner->owner->reference . ' - Date: '.$transaction->owner->created_at->format('d-m-Y').' - Amount: '. $transaction->amount . "

"; } From daeb376aa5c755bc13635b171099ffdd9152c7d6 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 16:05:41 +0800 Subject: [PATCH 3/6] billplz audit --- routes/web.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/routes/web.php b/routes/web.php index 18efb102..11bbf1db 100644 --- a/routes/web.php +++ b/routes/web.php @@ -968,9 +968,13 @@ Route::get('/billplz/audit', function (Request $request) { if($data['paid']){ } else { + $transaction->status = ApprovalStatus::REJECTED; $transaction->save(); + $invoice = $transaction->owner; + $invoice->status = ApprovalStatus::APPROVED; + $totalAmount += $transaction->amount; echo 'Order: '. $transaction->owner->owner->owner->reference . ' - Date: '.$transaction->owner->created_at->format('d-m-Y').' - Amount: '. $transaction->amount . "

"; } From 92b6e6dc3a32efaa2bfd9822028d8add3c386d51 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Wed, 15 Mar 2023 19:48:48 +0800 Subject: [PATCH 4/6] debug billplz payment --- .../Commands/debugBillplzFailedPayment.php | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 app/Console/Commands/debugBillplzFailedPayment.php diff --git a/app/Console/Commands/debugBillplzFailedPayment.php b/app/Console/Commands/debugBillplzFailedPayment.php new file mode 100644 index 00000000..ee1cf4b0 --- /dev/null +++ b/app/Console/Commands/debugBillplzFailedPayment.php @@ -0,0 +1,75 @@ +where('payment_method', PaymentMethodType::PAYMENT_GATEWAY)->whereNotIn('status', [ApprovalStatus::COMPLETED, ApprovalStatus::APPROVED])->get(); + + $i = 0; + $totalAmount = 0; + foreach ($transactions as $transaction){ + $response = Http::withBasicAuth(config('billplz.api_key').':', '')->get(config('billplz.base_url').'/api/v3/bills/'.$transaction->payment_reference); + + // dd($response); + + if($response->successful()){ + $data = $response->json(); + if($data['paid']){ + if (!in_array($transaction->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) { + $this->returnLog('Paid transaction', $transaction); + } + } + // else { + // $totalAmount += $transaction->amount; + // $this->returnLog('Unpaid Transaction', $transaction); + // } + }else{ + $this->returnLog('billplz error', $transaction); + } + } + } + + public function returnLog($text, $transaction) { + $approvalStatusArray = ApprovalStatus::APPROVAL_STATUS_ID; + $this->info($text . ' - id: '. $transaction->id . '. Booking Marking: '. $transaction->owner->marking . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount . '. Current Status: ' . $approvalStatusArray[$transaction->status]); + } +} From ef3c738fb13104e35d0cd625f2fe01430f19e375 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Wed, 15 Mar 2023 19:58:05 +0800 Subject: [PATCH 5/6] debug billplz payment --- app/Console/Commands/debugBillplzFailedPayment.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Console/Commands/debugBillplzFailedPayment.php b/app/Console/Commands/debugBillplzFailedPayment.php index ee1cf4b0..729ecfee 100644 --- a/app/Console/Commands/debugBillplzFailedPayment.php +++ b/app/Console/Commands/debugBillplzFailedPayment.php @@ -50,6 +50,8 @@ class debugBillplzFailedPayment extends Command $response = Http::withBasicAuth(config('billplz.api_key').':', '')->get(config('billplz.base_url').'/api/v3/bills/'.$transaction->payment_reference); // dd($response); + + // dd($transaction->owner->owner->owner->reference); if($response->successful()){ $data = $response->json(); @@ -70,6 +72,6 @@ class debugBillplzFailedPayment extends Command public function returnLog($text, $transaction) { $approvalStatusArray = ApprovalStatus::APPROVAL_STATUS_ID; - $this->info($text . ' - id: '. $transaction->id . '. Booking Marking: '. $transaction->owner->marking . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount . '. Current Status: ' . $approvalStatusArray[$transaction->status]); + $this->info($text . ' - id: '. $transaction->id . '. Order Marking: '. $transaction->owner->owner->owner->reference . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount . '. Current Status: ' . $approvalStatusArray[$transaction->status]); } } From 64ec76eed6c5796aa3445c756d5f88935e5c7ced Mon Sep 17 00:00:00 2001 From: Dillon Date: Fri, 17 Mar 2023 17:28:18 +0800 Subject: [PATCH 6/6] Insert logs for debugging --- app/Classes/Jobs/UpdatePerfexCRMInvoice.php | 8 +++ .../CreatePerfexCRMInvoiceProcessor.php | 7 +++ .../PackingListToPerfexCRMProcessor.php | 59 +++++++++++-------- 3 files changed, 48 insertions(+), 26 deletions(-) diff --git a/app/Classes/Jobs/UpdatePerfexCRMInvoice.php b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php index e7902958..0db33536 100644 --- a/app/Classes/Jobs/UpdatePerfexCRMInvoice.php +++ b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php @@ -18,6 +18,8 @@ use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Carbon\Carbon; +use Illuminate\Support\Facades\Log; + class UpdatePerfexCRMInvoice implements ShouldQueue { @@ -58,6 +60,7 @@ class UpdatePerfexCRMInvoice implements ShouldQueue 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; @@ -68,6 +71,11 @@ class UpdatePerfexCRMInvoice implements ShouldQueue } } + if($projectId == ""){ + Log::error(json_encode('UpdatePerfexCRMInvoice debug: '.$projectName)); + Log::error(json_encode($transaction->owner)); + } + //update invoice (App()->make(UpdatesPerfexCRMInvoice::class))->execute($invoice, $projectId); } diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php index 806bb5dd..ba0c1033 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php @@ -14,6 +14,7 @@ use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomerProject; use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus; use App\Models\PackingList; use Carbon\Carbon; +use Illuminate\Support\Facades\Log; class CreatePerfexCRMInvoiceProcessor { @@ -99,6 +100,7 @@ class CreatePerfexCRMInvoiceProcessor //get project $projectId = ""; //Project only exist in CRM if the customer already made payment + $projectName = ""; if($isPaid){ if($transaction->owner instanceof PackingList){ $orderReference = $transaction->owner->owner->reference; @@ -115,6 +117,11 @@ class CreatePerfexCRMInvoiceProcessor } } } + + if($projectId == ""){ + Log::error(json_encode('CreatePerfexCRMInvoiceProcessor debug: '.$projectName)); + Log::error(json_encode($transaction->owner)); + } } //newitems diff --git a/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php index 775407ed..55d2e150 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php @@ -7,6 +7,7 @@ use App\Classes\ValueObjects\Constants\PerfexCRMTasks; use App\Classes\Jobs\UpdatePerfexCRM; use App\Models\PackingList; use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus; +use Illuminate\Support\Facades\Log; class PackingListToPerfexCRMProcessor { @@ -17,35 +18,41 @@ class PackingListToPerfexCRMProcessor */ public function execute(PackingList $packingList) { - $order = $packingList->owner; - $companyModule = $order->companyModule()->first(); - $connection = $companyModule->inviters()->withPivot('invitee_reference')->first(); - $companyName = $companyModule->name; - $companyReference = $connection ? $connection->pivot->invitee_reference:''; - $employee = $companyModule->employees()->first(); - $contactEmail = $employee->email; - $contactName = $employee->name; + try { + $order = $packingList->owner; + $companyModule = $order->companyModule()->first(); + $connection = $companyModule->inviters()->withPivot('invitee_reference')->first(); + $companyName = $companyModule->name; + $companyReference = $connection ? $connection->pivot->invitee_reference:''; + $employee = $companyModule->employees()->first(); + $contactEmail = $employee->email; + $contactName = $employee->name; - $orderReference = $packingList->owner->reference; - $packingListReference = $packingList->reference; - $projectName = 'IZYIM | X1 Shipping | '.$orderReference.' | '.$packingListReference; + $orderReference = $packingList->owner->reference; + $packingListReference = $packingList->reference; + $projectName = 'IZYIM | X1 Shipping | '.$orderReference.' | '.$packingListReference; - $updatePerfexCRMObject = new UpdatePerfexCRMObject( - $companyName, - $companyReference, - $contactName, - $contactEmail, - "", - $projectName, - PerfexCRMProjectStatus::NOT_STARTED, - [], - [ - PerfexCRMTasks::TASK_LOADED_CONTAINER_1, - PerfexCRMTasks::TASK_LOADED_CONTAINER_2, - ] - ); - UpdatePerfexCRM::dispatch($updatePerfexCRMObject); + $updatePerfexCRMObject = new UpdatePerfexCRMObject( + $companyName, + $companyReference, + $contactName, + $contactEmail, + "", + $projectName, + PerfexCRMProjectStatus::NOT_STARTED, + [], + [ + PerfexCRMTasks::TASK_LOADED_CONTAINER_1, + PerfexCRMTasks::TASK_LOADED_CONTAINER_2, + ] + ); + UpdatePerfexCRM::dispatch($updatePerfexCRMObject); + } catch (\Exception $exception){ + Log::error(json_encode('PackingListToPerfexCRMProcessor debug:')); + Log::error(json_encode($packingList)); + Log::error($exception); + } return true; } }