From 4c169ab8d8fc48a698242b1a0883aa993ac29699 Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 17 Jun 2023 17:11:28 +0800 Subject: [PATCH 01/44] Quick fix where invoice not get created when user make payment --- .../PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php index cd5990f1..d2466bcf 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php @@ -233,7 +233,7 @@ class TransactionToPerfexCRMProcessorV2 private function dispatchUpdateJob(Transaction $model, int $status, UpdatePerfexCRMObject $updatePerfexCRMObject) { - $withInvoice = ($model->type === TransactionType::PAYMENT && $model->owner === Booking::class && $status === ApprovalStatus::APPROVED); + $withInvoice = ($model->type === TransactionType::PAYMENT && $model->owner instanceof Booking && $status === ApprovalStatus::APPROVED); UpdatePerfexCRMPrelude::dispatch($model, $updatePerfexCRMObject, $withInvoice); } From f6ae86bcab8127f4bfb248d5534363009f0272d3 Mon Sep 17 00:00:00 2001 From: Dillon Date: Mon, 19 Jun 2023 06:00:56 +0800 Subject: [PATCH 02/44] Enhancement to allow multiple tasks of the same name (with invoice id as distinguish marker) to be created at CRM as a result of multiple payments allowed per order --- app/Classes/Jobs/UpdatePerfexCRM.php | 17 +++++ .../CreateTaskPerfexCRMObject.php | 14 +++- .../UpdatePerfexCRMObject.php | 19 ++++- .../BookingToPerfexCRMProcessor.php | 1 + .../CreatePerfexCRMInvoiceV2Processor.php | 72 +++++++++++++++++++ .../CreatePerfexCRMTaskProcessor.php | 1 + .../NewLeadTaskToPerfexCRMProcessor.php | 3 +- .../TransactionToPerfexCRMProcessor.php | 2 + .../TransactionToPerfexCRMProcessorV2.php | 3 +- .../Processors/UpdatePerfexCRMProcessor.php | 9 +-- .../Services/CreatesPerfexCRMTask.php | 9 ++- .../Services/FetchesPerfexCRMTask.php | 7 +- 12 files changed, 146 insertions(+), 11 deletions(-) create mode 100644 app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php diff --git a/app/Classes/Jobs/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index 833fb365..77e19b64 100644 --- a/app/Classes/Jobs/UpdatePerfexCRM.php +++ b/app/Classes/Jobs/UpdatePerfexCRM.php @@ -3,6 +3,7 @@ namespace App\Classes\Jobs; use App\Classes\Modules\PerfexCRM\Processors\UpdatePerfexCRMProcessor; +use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMInvoiceV2Processor; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -41,6 +42,22 @@ class UpdatePerfexCRM implements ShouldQueue public function handle() { + $invoiceId = 0; + + //To use invoice as a reference to decide whether more tasks should be created + if($this->transaction != null){ + $updatePerfexCRMInvoiceObject = new UpdatePerfexCRMInvoiceObject( + $this->updatePerfexCRMObject->getContactEmail(), + $this->updatePerfexCRMObject->getProjectName(), + '', + $this->transaction, + true + ); + // UpdatePerfexCRMInvoice::dispatch($updatePerfexCRMInvoiceObject); + $invoiceId = (App()->make(CreatePerfexCRMInvoiceV2Processor::class))->execute($updatePerfexCRMInvoiceObject); + } + + $this->updatePerfexCRMObject->setInvoiceId($invoiceId); $result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject); if($this->transaction != null && $this->shouldCreateInvoice){ $updatePerfexCRMInvoiceObject = new UpdatePerfexCRMInvoiceObject( diff --git a/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php b/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php index 6c6354f1..2475ebbf 100644 --- a/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php +++ b/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php @@ -42,7 +42,10 @@ class CreateTaskPerfexCRMObject implements DataTransferObject /** @var string */ private $duedate; - public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status, string $department, string $priority, string $duedate) + /** @var int */ + private $invoiceId; + + public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status, string $department, string $priority, string $duedate, int $invoiceId) { $this->email = $email; $this->name = $name; @@ -56,6 +59,7 @@ class CreateTaskPerfexCRMObject implements DataTransferObject $this->department = $department; $this->priority = $priority; $this->duedate = $duedate; + $this->invoiceId = $invoiceId; } /** @@ -158,4 +162,12 @@ class CreateTaskPerfexCRMObject implements DataTransferObject { return $this->duedate; } + + /** + * @return int + */ + public function getInvoiceId(): int + { + return $this->invoiceId; + } } diff --git a/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMObject.php b/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMObject.php index 023bd786..cec82ee5 100644 --- a/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMObject.php +++ b/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMObject.php @@ -34,8 +34,11 @@ class UpdatePerfexCRMObject implements DataTransferObject /** @var array */ private $tasks; + /** @var int */ + private $invoiceId; - public function __construct(string $companyName, string $companyReference, string $contactName, string $contactEmail, string $bookingMarking, string $projectName, int $projectStatus, array $milestoneNames, array $tasks) + + public function __construct(string $companyName, string $companyReference, string $contactName, string $contactEmail, string $bookingMarking, string $projectName, int $projectStatus, int $invoiceId, array $milestoneNames, array $tasks) { $this->companyName = $companyName; @@ -45,6 +48,7 @@ class UpdatePerfexCRMObject implements DataTransferObject $this->bookingMarking = $bookingMarking; $this->projectName = $projectName; $this->projectStatus = $projectStatus; + $this->$invoiceId = $invoiceId; $this->milestoneNames = $milestoneNames; $this->tasks = $tasks; } @@ -105,6 +109,14 @@ class UpdatePerfexCRMObject implements DataTransferObject return $this->projectStatus; } + /** + * @return int + */ + public function getInvoiceId(): int + { + return $this->invoiceId; + } + /** * @return array */ @@ -126,4 +138,9 @@ class UpdatePerfexCRMObject implements DataTransferObject $this->tasks = $tasks; } + public function setInvoiceId($invoiceId) + { + $this->invoiceId = $invoiceId; + } + } diff --git a/app/Classes/Modules/PerfexCRM/Processors/BookingToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/BookingToPerfexCRMProcessor.php index 930d3765..379caae7 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/BookingToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/BookingToPerfexCRMProcessor.php @@ -35,6 +35,7 @@ class BookingToPerfexCRMProcessor $bookingMarking, $projectName, PerfexCRMProjectStatus::NOT_STARTED, + 0, [], [] ); diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php new file mode 100644 index 00000000..636c1840 --- /dev/null +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php @@ -0,0 +1,72 @@ +fetchesPerfexCRMCustomer = $fetchesPerfexCRMCustomer; + $this->fetchesPerfexCRMInvoice = $fetchesPerfexCRMInvoice; + $this->createPerfexCRMInvoiceProcessor = $createPerfexCRMInvoiceProcessor; + } + + public function execute(UpdatePerfexCRMInvoiceObject $updatePerfexCRMInvoiceObject) + { + //get the client id + $customer = $this->fetchesPerfexCRMCustomer->execute($updatePerfexCRMInvoiceObject->getEmail()); + $transaction = $updatePerfexCRMInvoiceObject->getTransaction(); + + //get the invoice id + $invoiceId = 0; + + $number = $transaction->bill_no; + + $prefix = "INV-"; + //This will remove the prefix if prefix already exist in the string + if (substr($number, 0, strlen($prefix)) == $prefix) { + $number = substr($number, strlen($prefix)); + } + + $number = 'EXC-'.$number; + $invoice = $this->fetchesPerfexCRMInvoice->execute($customer->userid,"INV-", $number); + Log::error(json_encode('CreatePerfexCRMInvoiceV2Processor debug $number: '.$number)); + if(is_null($invoice)){ + $result = $this->createPerfexCRMInvoiceProcessor->execute($transaction, null, null, $updatePerfexCRMInvoiceObject->getIsPaid()); + if ($result) { + $invoiceId = $result->payload['id']; + } else { + $log['message'] = 'CreatePerfexCRMInvoiceV2Processor CreatePerfexCRMInvoiceProcessor failed'; + Helper::debugLoggerForPerfexCRM($log); + } + } + + return $invoiceId; + } +} diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php index e9822471..4aa5a089 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php @@ -37,6 +37,7 @@ class CreatePerfexCRMTaskProcessor $createTaskPerfexCRMObject->getStatus(), $createTaskPerfexCRMObject->getPriority(), $createTaskPerfexCRMObject->getDuedate(), + $createTaskPerfexCRMObject->getInvoiceId(), ); return true; } diff --git a/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php index bd03c894..2195fc46 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php @@ -32,7 +32,8 @@ class NewLeadTaskToPerfexCRMProcessor PerfexCRMTasks::TASK_IDENTIFICATION_1['status'], PerfexCRMTasks::TASK_IDENTIFICATION_1['department'], PerfexCRMTaskPriority::DEFAULT, - "0" + "0", + 0 ); CreatePerfexCRMSingleTask::dispatch($createTaskPerfexCRMObject); diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php index 903c640e..b996e592 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php @@ -114,6 +114,7 @@ class TransactionToPerfexCRMProcessor $bookingMarking, $projectName, PerfexCRMProjectStatus::IN_PROGRESS, + 0, [], $tasks ); @@ -140,6 +141,7 @@ class TransactionToPerfexCRMProcessor $bookingMarking, $projectName, PerfexCRMProjectStatus::IN_PROGRESS, + 0, [], $tasks ); diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php index d2466bcf..fccdaec4 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php @@ -8,8 +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\Jobs\UpdatePerfexCRMInvoice; -use App\Classes\Jobs\UpdatePerfexCRM; use App\Classes\Jobs\UpdatePerfexCRMPrelude; use App\Models\Booking; use App\Models\Transaction; @@ -35,6 +33,7 @@ class TransactionToPerfexCRMProcessorV2 $bookingInfo['bookingMarking'], $projectName, PerfexCRMProjectStatus::IN_PROGRESS, + 0, [], $tasks ); diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 7527760f..a35debae 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -203,18 +203,19 @@ class UpdatePerfexCRMProcessor } // Get existing or create task - $result = $this->fetchesPerfexCRMTask->execute($tasks[$count]['name'], $milestoneId, 'project', $projectId); + $result = $this->fetchesPerfexCRMTask->execute($tasks[$count]['name'], $milestoneId, 'project', $projectId, $updatePerfexCRMObject->getInvoiceId()); + Log::info("UpdatePerfexCRMProcessor task: ".json_encode($taskStatus)." , ".json_encode($result)); + if(isset($result->payload)){ //&& $result->payload[0]['status'] == PerfexCRMTaskStatus::NOT_STARTED - Log::info(json_encode([$taskStatus])); - if($taskStatus != PerfexCRMTaskStatus::NOT_STARTED ) + if($taskStatus != PerfexCRMTaskStatus::NOT_STARTED) { $task = $result->payload[0]; $result = $this->updatesPerfexCRMTask->execute($task['id'], $task['name'], $task['milestone'], $task['rel_id'], $taskStatus, $task['startdate'], is_null($task['duedate']) ? '': $task['duedate']); } } else{ - $result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $tasks[$count]['department'], $taskStatus, $tasks[$count]['priority'], $tasks[$count]['duedate']); + $result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $tasks[$count]['department'], $taskStatus, $tasks[$count]['priority'], $tasks[$count]['duedate'], $updatePerfexCRMObject->getInvoiceId()); } //cief todo: to evaluate if this is still needed diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php index f2f461a4..06ca013c 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php @@ -21,10 +21,11 @@ class CreatesPerfexCRMTask * @param string $status * @param string $priority * @param string $duedate + * @param int $invoiceId * @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 $department, string $status, string $priority, string $duedate) { + public function execute(string $taskName, string $taskDescription, string $leadId, string $milestoneId, string $projectId, string $reference, string $on_task_completion, string $department, string $status, string $priority, string $duedate, int $invoiceId) { try{ $custom_fields = []; if($department != ""){ @@ -35,6 +36,10 @@ class CreatesPerfexCRMTask ]; } + if($invoiceId != 0){ + $taskName = $taskName." (".$invoiceId.")"; + } + $data = [ 'name' => $taskName, 'description' => $taskDescription, @@ -49,6 +54,7 @@ class CreatesPerfexCRMTask 'custom_fields' => $custom_fields, 'priority' => $priority, 'duedate' => date('Y-m-d', strtotime('+' . $duedate . ' days')), + 'invoice_id' => $invoiceId, ]; if($leadId != '') { @@ -66,6 +72,7 @@ class CreatesPerfexCRMTask 'custom_fields' => $custom_fields, 'priority' => $priority, 'duedate' => date('Y-m-d', strtotime('+' . $duedate . ' days')), + 'invoice_id' => 0 ]; } diff --git a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMTask.php b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMTask.php index acdf1a89..ed280098 100644 --- a/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMTask.php +++ b/app/Classes/Modules/PerfexCRM/Services/FetchesPerfexCRMTask.php @@ -17,7 +17,7 @@ class FetchesPerfexCRMTask * @return null|object * @throws MalformedRequestException */ - public function execute(string $taskName, string $milestoneId, string $relType, string $relId) { + public function execute(string $taskName, string $milestoneId, string $relType, string $relId, string $invoiceId) { try{ $data = [ 'name' => $taskName, @@ -30,6 +30,11 @@ class FetchesPerfexCRMTask $data = array_merge($data, $newItem); } + if($invoiceId != 0) { + $newItem = ['invoice_id' => $invoiceId ]; + $data = array_merge($data, $newItem); + } + $response = Http::asForm()->withHeaders([ 'authtoken' => config('perfexcrm.api_key')]) ->post(config('perfexcrm.base_url').'/api/tasks/customsearch', $data); From 2091553d7b11cedec00b5ac12dfd809adf218ee4 Mon Sep 17 00:00:00 2001 From: Dillon Date: Mon, 19 Jun 2023 06:28:25 +0800 Subject: [PATCH 03/44] Debug duplicated task created --- .../PerfexCRM/Processors/UpdatePerfexCRMProcessor.php | 8 ++++++-- .../Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php | 4 ---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index a35debae..8798d7fd 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -203,7 +203,11 @@ class UpdatePerfexCRMProcessor } // Get existing or create task - $result = $this->fetchesPerfexCRMTask->execute($tasks[$count]['name'], $milestoneId, 'project', $projectId, $updatePerfexCRMObject->getInvoiceId()); + $taskName = $tasks[$count]['name'];; + if($updatePerfexCRMObject->getInvoiceId() != 0){ + $taskName = $taskName." (".$updatePerfexCRMObject->getInvoiceId().")"; + } + $result = $this->fetchesPerfexCRMTask->execute($taskName, $milestoneId, 'project', $projectId, $updatePerfexCRMObject->getInvoiceId()); Log::info("UpdatePerfexCRMProcessor task: ".json_encode($taskStatus)." , ".json_encode($result)); if(isset($result->payload)){ @@ -215,7 +219,7 @@ class UpdatePerfexCRMProcessor } } else{ - $result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $tasks[$count]['department'], $taskStatus, $tasks[$count]['priority'], $tasks[$count]['duedate'], $updatePerfexCRMObject->getInvoiceId()); + $result = $this->createsPerfexCRMTask->execute($taskName, $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $tasks[$count]['department'], $taskStatus, $tasks[$count]['priority'], $tasks[$count]['duedate'], $updatePerfexCRMObject->getInvoiceId()); } //cief todo: to evaluate if this is still needed diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php index 06ca013c..ace2aa00 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php @@ -36,10 +36,6 @@ class CreatesPerfexCRMTask ]; } - if($invoiceId != 0){ - $taskName = $taskName." (".$invoiceId.")"; - } - $data = [ 'name' => $taskName, 'description' => $taskDescription, From d7776d90df3aa47016d9d8de46b73b9bd987e85b Mon Sep 17 00:00:00 2001 From: Dillon Date: Mon, 19 Jun 2023 06:44:59 +0800 Subject: [PATCH 04/44] Debug duplicated task created --- .../PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php index 636c1840..df73bd61 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php @@ -66,6 +66,9 @@ class CreatePerfexCRMInvoiceV2Processor Helper::debugLoggerForPerfexCRM($log); } } + else{ + $invoiceId = $invoice->id; + } return $invoiceId; } From 7e64e126d183625e867596a558b249f79ce8f8b4 Mon Sep 17 00:00:00 2001 From: Dillon Date: Mon, 19 Jun 2023 06:49:28 +0800 Subject: [PATCH 05/44] Comment logs --- .../Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 8798d7fd..2971e3c8 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -208,7 +208,7 @@ class UpdatePerfexCRMProcessor $taskName = $taskName." (".$updatePerfexCRMObject->getInvoiceId().")"; } $result = $this->fetchesPerfexCRMTask->execute($taskName, $milestoneId, 'project', $projectId, $updatePerfexCRMObject->getInvoiceId()); - Log::info("UpdatePerfexCRMProcessor task: ".json_encode($taskStatus)." , ".json_encode($result)); + // Log::info("UpdatePerfexCRMProcessor task: ".json_encode($taskStatus)." , ".json_encode($result)); if(isset($result->payload)){ //&& $result->payload[0]['status'] == PerfexCRMTaskStatus::NOT_STARTED From aa6f6a558144d3bc43b3b9a06d2c1e5c17267bc2 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 01:15:11 +0800 Subject: [PATCH 06/44] credit note --- .../GenerateCreditNotePdfLogic.php | 54 +++++++++++++++++++ .../GenerateCreditNotePdfController.php | 15 ++++++ ...omerTransactionHistorySectionComponent.vue | 2 +- .../views/pages/pdfs/credit_note.blade.php | 35 ++++++++++++ routes/web.php | 2 + 5 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php create mode 100644 app/Http/Controllers/Transactions/GenerateCreditNotePdfController.php create mode 100644 resources/views/pages/pdfs/credit_note.blade.php diff --git a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php new file mode 100644 index 00000000..15d2359a --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php @@ -0,0 +1,54 @@ +fetchesTransaction = $fetchesTransaction; + $this->createSupplierTransactionProcessor = $createSupplierTransactionProcessor; + } + + /** + * @param Request $request + * @return string|\Symfony\Component\HttpFoundation\Response + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function execute(Request $request) + { + ini_set('memory_limit', '-1'); + + $transaction = $this->fetchesTransaction->execute(['id' => $request->route('id')]); + + // $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction]); + + // return $pdf->stream('MockUpWhiteForm.pdf'); + + $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction]); + $pdfContent = $pdf->output(); + + // Pass the PDF content variable to the view + return view('pages.pdf_view', ['pdfContent' => $pdfContent]); + } +} diff --git a/app/Http/Controllers/Transactions/GenerateCreditNotePdfController.php b/app/Http/Controllers/Transactions/GenerateCreditNotePdfController.php new file mode 100644 index 00000000..11d27cdd --- /dev/null +++ b/app/Http/Controllers/Transactions/GenerateCreditNotePdfController.php @@ -0,0 +1,15 @@ +execute($request); + } +} diff --git a/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue b/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue index 3d441d53..e0076b58 100644 --- a/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue +++ b/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue @@ -22,7 +22,7 @@
{{item.created_at}}
-
{{ convertTransactionType(item.type) }} {{ item.payment_reference ? ' - ' + item.payment_reference : '' }}
+
{{ convertTransactionType(item.type) }} {{ item.payment_reference ? ' - ' + item.payment_reference : '' }} Download Document
{{[5, 9].includes(parseFloat(item.type)) ? (Math.round((parseFloat(item.amount) + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ''}}
{{[1, 11].includes(parseFloat(item.type)) ? '- ' + (Math.round((parseFloat(item.amount) + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ''}}
diff --git a/resources/views/pages/pdfs/credit_note.blade.php b/resources/views/pages/pdfs/credit_note.blade.php new file mode 100644 index 00000000..95301de6 --- /dev/null +++ b/resources/views/pages/pdfs/credit_note.blade.php @@ -0,0 +1,35 @@ +@extends('layouts.base_pdf') +@section('inner_content') +
+ +

+
{{ $transaction->bill_no }}
+
+ + + + + +
+ + + CIEF WORLDWIDE SDN BHD + + + (1134596-M)
+ No. 72-3, Jalan Jalil 1,
+ The Earth Bukit Jalil,
+ 57000 Kuala Lumpur
+ Tel: 03-8082 1252 +
+ + + + + + +
This is generated by computer. No signature required.Page {PAGENO} of {nbpg}
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 609b06ea..cff4a06d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -667,3 +667,5 @@ Route::get('/customer/vouchers/{marking}', function ($marking) { $id = \App\Models\Company::where('reference', '=', $marking)->first()->employees->first()->id; return view('pages.customers.reward', ['id' => $id]); })->name('customer.reward'); + +Route::get('transaction/{id}/credit_note/download', 'Transactions\GenerateCreditNotePdfController@download')->name('transaction.credit_note.download'); From a21ac646e24fdd5df087b591e8d8653b3d90f329 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 01:28:49 +0800 Subject: [PATCH 07/44] credit note --- .../ControllersLogic/GenerateCreditNotePdfLogic.php | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php index 15d2359a..c7feb076 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php @@ -37,18 +37,10 @@ class GenerateCreditNotePdfLogic */ public function execute(Request $request) { - ini_set('memory_limit', '-1'); - $transaction = $this->fetchesTransaction->execute(['id' => $request->route('id')]); - // $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction]); - - // return $pdf->stream('MockUpWhiteForm.pdf'); - $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction]); - $pdfContent = $pdf->output(); - // Pass the PDF content variable to the view - return view('pages.pdf_view', ['pdfContent' => $pdfContent]); + return $pdf->stream('MockUpWhiteForm.pdf'); } } From 6357c7ef9f969ae2a8bbc82196aca657d8d25751 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 01:46:46 +0800 Subject: [PATCH 08/44] credit note --- .../GenerateCreditNotePdfLogic.php | 19 ++++++-- .../views/pages/pdfs/credit_note.blade.php | 44 ++++++++++++++++++- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php index c7feb076..1220a281 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php @@ -9,6 +9,7 @@ use Illuminate\Support\Facades\DB; use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf; use App\Classes\Modules\Companies\Services\FetchesCompany; use App\Classes\Modules\Transactions\Services\FetchesTransaction; +use App\Classes\ValueObjects\Constants\TransactionType; class GenerateCreditNotePdfLogic { @@ -16,17 +17,22 @@ class GenerateCreditNotePdfLogic /** @var FetchesTransaction */ private $fetchesTransaction; + /** @var FetchesCompany */ + private $fetchesCompany; + /** @var CreateSupplierTransactionProcessor */ private $createSupplierTransactionProcessor; /** - * DownloadMockUpWhiteFormPdfLogic constructor. + * GenerateCreditNotePdfLogic constructor. * @param FetchesTransaction $fetchesTransaction + * @param FetchesCompany $fetchesCompany * @param CreateSupplierTransactionProcessor $createSupplierTransactionProcessor */ - public function __construct(FetchesTransaction $fetchesTransaction, CreateSupplierTransactionProcessor $createSupplierTransactionProcessor) + public function __construct(FetchesTransaction $fetchesTransaction, FetchesCompany $fetchesCompany, CreateSupplierTransactionProcessor $createSupplierTransactionProcessor) { $this->fetchesTransaction = $fetchesTransaction; + $this->fetchesCompany = $fetchesCompany; $this->createSupplierTransactionProcessor = $createSupplierTransactionProcessor; } @@ -39,7 +45,14 @@ class GenerateCreditNotePdfLogic { $transaction = $this->fetchesTransaction->execute(['id' => $request->route('id')]); - $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction]); + $purchaseOrder = $transaction->owner()->transactions() + ->where('type', TransactionType::PURCHASE_ORDER) + ->complete() + ->first(); + + $supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]); + + $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction, 'po_order_transaction' => $purchaseOrder, 'supplier' => $supplier]); return $pdf->stream('MockUpWhiteForm.pdf'); } diff --git a/resources/views/pages/pdfs/credit_note.blade.php b/resources/views/pages/pdfs/credit_note.blade.php index 95301de6..70b8f489 100644 --- a/resources/views/pages/pdfs/credit_note.blade.php +++ b/resources/views/pages/pdfs/credit_note.blade.php @@ -22,7 +22,49 @@ 57000 Kuala Lumpur
Tel: 03-8082 1252 - + +
+ + {{ $transaction->type == 9 ? 'Credit' : 'Debit' }} Note + +
+ +
EI#: {{ $transaction->bill_no }}
+ + +
Ref# {{ $po_order_transaction->booking->marking }}
+
Date: {{ $transaction->created_at }}
+
 
+
+ + + + + {{ $transaction->type == 9 ? 'Credit' : 'Debit' }} To + + + + + +
+ {{ $supplier->name }} +
+
+ @php + $addresses = $supplier->addresses()->where('billing', '=', true)->first(); + @endphp + {{ $addresses->street_one }} + {{ $addresses->street_two }} , + {{ $addresses->district()->first()->name }}, + {{ $addresses->postcode }} + {{ $addresses->state()->first()->name }}, + {{ $addresses->country()->first()->name }} +
+
+ Phone: {{ $supplier->contacts()->first()->phone }} +
+ + From 1495cd85208c9bbf076de84f4c51bdf98559dc0d Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 01:51:43 +0800 Subject: [PATCH 09/44] credit note --- .../ControllersLogic/GenerateCreditNotePdfLogic.php | 10 +++++----- resources/views/pages/pdfs/credit_note.blade.php | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php index 1220a281..ea15c166 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php @@ -45,14 +45,14 @@ class GenerateCreditNotePdfLogic { $transaction = $this->fetchesTransaction->execute(['id' => $request->route('id')]); - $purchaseOrder = $transaction->owner()->transactions() - ->where('type', TransactionType::PURCHASE_ORDER) - ->complete() - ->first(); + // $purchaseOrder = $transaction->owner()->transactions() + // ->where('type', TransactionType::PURCHASE_ORDER) + // ->complete() + // ->first(); $supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]); - $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction, 'po_order_transaction' => $purchaseOrder, 'supplier' => $supplier]); + $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction, 'po_order_transaction' => null, 'supplier' => $supplier]); return $pdf->stream('MockUpWhiteForm.pdf'); } diff --git a/resources/views/pages/pdfs/credit_note.blade.php b/resources/views/pages/pdfs/credit_note.blade.php index 70b8f489..37d94b7a 100644 --- a/resources/views/pages/pdfs/credit_note.blade.php +++ b/resources/views/pages/pdfs/credit_note.blade.php @@ -32,7 +32,7 @@
EI#: {{ $transaction->bill_no }}
-
Ref# {{ $po_order_transaction->booking->marking }}
+
Ref# //todo-new $po_order_transaction->booking->marking
Date: {{ $transaction->created_at }}
 
From ef63dad63db32d478f77cd4fc154d4ab546cbd65 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 01:56:31 +0800 Subject: [PATCH 10/44] credit note --- .../ControllersLogic/GenerateCreditNotePdfLogic.php | 4 +++- resources/views/pages/pdfs/credit_note.blade.php | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php index ea15c166..6af73dc8 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php @@ -45,6 +45,8 @@ class GenerateCreditNotePdfLogic { $transaction = $this->fetchesTransaction->execute(['id' => $request->route('id')]); + $booking = $transaction->booking; + // $purchaseOrder = $transaction->owner()->transactions() // ->where('type', TransactionType::PURCHASE_ORDER) // ->complete() @@ -52,7 +54,7 @@ class GenerateCreditNotePdfLogic $supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]); - $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction, 'po_order_transaction' => null, 'supplier' => $supplier]); + $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction, 'booking' => $booking, 'supplier' => $supplier]); return $pdf->stream('MockUpWhiteForm.pdf'); } diff --git a/resources/views/pages/pdfs/credit_note.blade.php b/resources/views/pages/pdfs/credit_note.blade.php index 37d94b7a..5516336e 100644 --- a/resources/views/pages/pdfs/credit_note.blade.php +++ b/resources/views/pages/pdfs/credit_note.blade.php @@ -32,7 +32,7 @@
EI#: {{ $transaction->bill_no }}
-
Ref# //todo-new $po_order_transaction->booking->marking
+
Ref# {{ $booking->marking }}
Date: {{ $transaction->created_at }}
 
From a87a8f8f9aa6f83537ff1c7e6d0c4444b178a46e Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 02:05:00 +0800 Subject: [PATCH 11/44] credit note --- .../GenerateCreditNotePdfLogic.php | 7 +- .../views/pages/pdfs/credit_note.blade.php | 169 +++++++++++------- 2 files changed, 104 insertions(+), 72 deletions(-) diff --git a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php index 6af73dc8..7f834417 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php @@ -45,12 +45,9 @@ class GenerateCreditNotePdfLogic { $transaction = $this->fetchesTransaction->execute(['id' => $request->route('id')]); - $booking = $transaction->booking; + dd($transaction); - // $purchaseOrder = $transaction->owner()->transactions() - // ->where('type', TransactionType::PURCHASE_ORDER) - // ->complete() - // ->first(); + $booking = $transaction->booking; $supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]); diff --git a/resources/views/pages/pdfs/credit_note.blade.php b/resources/views/pages/pdfs/credit_note.blade.php index 5516336e..7d8d67d8 100644 --- a/resources/views/pages/pdfs/credit_note.blade.php +++ b/resources/views/pages/pdfs/credit_note.blade.php @@ -1,77 +1,112 @@ @extends('layouts.base_pdf') @section('inner_content') -
- -

-
{{ $transaction->bill_no }}
-
-
+
+ +

+
{{ $transaction->bill_no }}
+
+
+ + + + + + + + + + +
+ + + CIEF WORLDWIDE SDN BHD + + + (1134596-M)
+ No. 72-3, Jalan Jalil 1,
+ The Earth Bukit Jalil,
+ 57000 Kuala Lumpur
+ Tel: 03-8082 1252 +
+
+ + {{ $transaction->type == 9 ? 'Credit' : 'Debit' }} Note + +
+ +
EI#: {{ $transaction->bill_no }}
+ + +
Ref# {{ $booking->marking }}
+
Date: {{ $transaction->created_at }}
+
 
+ +
+ + {{ $transaction->type == 9 ? 'Credit' : 'Debit' }} To + +
+
+ {{ $supplier->name }} +
+
+ @php + $addresses = $supplier->addresses()->where('billing', '=', true)->first(); + @endphp + {{ $addresses->street_one }} + {{ $addresses->street_two }} , + {{ $addresses->district()->first()->name }}, + {{ $addresses->postcode }} + {{ $addresses->state()->first()->name }}, + {{ $addresses->country()->first()->name }} +
+
+ Phone: {{ $supplier->contacts()->first()->phone }} +
+
+
+
+ + - - - + + + + + + + + - + + + + + + - + + + +
- - - CIEF WORLDWIDE SDN BHD - - - (1134596-M)
- No. 72-3, Jalan Jalil 1,
- The Earth Bukit Jalil,
- 57000 Kuala Lumpur
- Tel: 03-8082 1252 -
-
- - {{ $transaction->type == 9 ? 'Credit' : 'Debit' }} Note - -
- -
EI#: {{ $transaction->bill_no }}
- - -
Ref# {{ $booking->marking }}
-
Date: {{ $transaction->created_at }}
-
 
- -
NoDescriptionQuantityUnit Price (RM)Total Amount
(RM)
- - {{ $transaction->type == 9 ? 'Credit' : 'Debit' }} To - + 1{{ $transaction->payment_reference }}1 + {{ number_format(transaction->amount, 2) }} + + {{ number_format(transaction->amount, 2) }}
-
- {{ $supplier->name }} -
-
- @php - $addresses = $supplier->addresses()->where('billing', '=', true)->first(); - @endphp - {{ $addresses->street_one }} - {{ $addresses->street_two }} , - {{ $addresses->district()->first()->name }}, - {{ $addresses->postcode }} - {{ $addresses->state()->first()->name }}, - {{ $addresses->country()->first()->name }} -
-
- Phone: {{ $supplier->contacts()->first()->phone }} -
+
Total + {{ number_format(transaction->amount, 2) }}
+ + + + + +
This is generated by computer. No signature required.Page {PAGENO} of {nbpg}
- - - - - - -
This is generated by computer. No signature required.Page {PAGENO} of {nbpg}
-
-@endsection +
+@endsection \ No newline at end of file From 8957d2d10a8a4b81a2f503fa57d42001805e7880 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 02:07:02 +0800 Subject: [PATCH 12/44] credit note --- .../ControllersLogic/GenerateCreditNotePdfLogic.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php index 7f834417..14ca3478 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php @@ -45,8 +45,6 @@ class GenerateCreditNotePdfLogic { $transaction = $this->fetchesTransaction->execute(['id' => $request->route('id')]); - dd($transaction); - $booking = $transaction->booking; $supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]); From 9bfe967c6e29f072883a325f20f14f2ed7cd7f05 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 02:10:09 +0800 Subject: [PATCH 13/44] credit note --- resources/views/pages/pdfs/credit_note.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/pages/pdfs/credit_note.blade.php b/resources/views/pages/pdfs/credit_note.blade.php index 7d8d67d8..3e842832 100644 --- a/resources/views/pages/pdfs/credit_note.blade.php +++ b/resources/views/pages/pdfs/credit_note.blade.php @@ -84,10 +84,10 @@ {{ $transaction->payment_reference }} 1 - {{ number_format(transaction->amount, 2) }} + {{ number_format($transaction->amount, 2) }} - {{ number_format(transaction->amount, 2) }} + {{ number_format($transaction->amount, 2) }} @@ -96,7 +96,7 @@ Total - {{ number_format(transaction->amount, 2) }} + {{ number_format($transaction->amount, 2) }} From 43df375489c5a8e5404e27e42b27d29467935f55 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 02:10:57 +0800 Subject: [PATCH 14/44] credit note --- resources/views/pages/pdfs/credit_note.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/pages/pdfs/credit_note.blade.php b/resources/views/pages/pdfs/credit_note.blade.php index 3e842832..73212440 100644 --- a/resources/views/pages/pdfs/credit_note.blade.php +++ b/resources/views/pages/pdfs/credit_note.blade.php @@ -93,7 +93,7 @@ - + Total {{ number_format($transaction->amount, 2) }} From d1ac8580b3e128b74c04574685a0b4cdc7aa7937 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 02:12:01 +0800 Subject: [PATCH 15/44] credit note --- resources/views/pages/pdfs/credit_note.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/pages/pdfs/credit_note.blade.php b/resources/views/pages/pdfs/credit_note.blade.php index 73212440..9dcd176b 100644 --- a/resources/views/pages/pdfs/credit_note.blade.php +++ b/resources/views/pages/pdfs/credit_note.blade.php @@ -81,7 +81,7 @@ 1 - {{ $transaction->payment_reference }} + {{ ucfirst($transaction->payment_reference) }} 1 {{ number_format($transaction->amount, 2) }} From 2692faa2596ac87e6820eaf7aefc2fb365ccb889 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 02:13:40 +0800 Subject: [PATCH 16/44] credit note --- .../ControllersLogic/GenerateCreditNotePdfLogic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php index 14ca3478..949dd243 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/GenerateCreditNotePdfLogic.php @@ -51,6 +51,6 @@ class GenerateCreditNotePdfLogic $pdf = LaravelMpdf::loadView('pages.pdfs.credit_note', ['transaction' => $transaction, 'booking' => $booking, 'supplier' => $supplier]); - return $pdf->stream('MockUpWhiteForm.pdf'); + return $pdf->stream('CreditNote.pdf'); } } From 4031b1eb79897d2fb10eade371b811f554d3b3f3 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 1 Aug 2023 23:42:20 +0800 Subject: [PATCH 17/44] download credit note --- .../elements/CustomerTransactionHistorySectionComponent.vue | 2 +- resources/views/pages/pdfs/credit_note.blade.php | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue b/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue index e0076b58..c3663ef0 100644 --- a/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue +++ b/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue @@ -22,7 +22,7 @@
{{item.created_at}}
-
{{ convertTransactionType(item.type) }} {{ item.payment_reference ? ' - ' + item.payment_reference : '' }} Download Document
+
{{ convertTransactionType(item.type) }} {{ item.payment_reference ? ' - ' + item.payment_reference : '' }}
{{[5, 9].includes(parseFloat(item.type)) ? (Math.round((parseFloat(item.amount) + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ''}}
{{[1, 11].includes(parseFloat(item.type)) ? '- ' + (Math.round((parseFloat(item.amount) + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ''}}
diff --git a/resources/views/pages/pdfs/credit_note.blade.php b/resources/views/pages/pdfs/credit_note.blade.php index 9dcd176b..ca6e0a5c 100644 --- a/resources/views/pages/pdfs/credit_note.blade.php +++ b/resources/views/pages/pdfs/credit_note.blade.php @@ -29,9 +29,6 @@
-
EI#: {{ $transaction->bill_no }}
- -
Ref# {{ $booking->marking }}
Date: {{ $transaction->created_at }}
 
From f34333f4c981454f45dc6513db4c574cff37a39b Mon Sep 17 00:00:00 2001 From: Dillon Date: Wed, 2 Aug 2023 20:44:37 +0800 Subject: [PATCH 18/44] Minor rewrite --- app/Classes/Jobs/UpdatePerfexCRM.php | 32 +++++++++---------- .../UpdatePerfexCRMObject.php | 2 +- .../CreatePerfexCRMInvoiceV2Processor.php | 6 ++-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/app/Classes/Jobs/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index 77e19b64..27357552 100644 --- a/app/Classes/Jobs/UpdatePerfexCRM.php +++ b/app/Classes/Jobs/UpdatePerfexCRM.php @@ -42,22 +42,9 @@ class UpdatePerfexCRM implements ShouldQueue public function handle() { - $invoiceId = 0; - //To use invoice as a reference to decide whether more tasks should be created - if($this->transaction != null){ - $updatePerfexCRMInvoiceObject = new UpdatePerfexCRMInvoiceObject( - $this->updatePerfexCRMObject->getContactEmail(), - $this->updatePerfexCRMObject->getProjectName(), - '', - $this->transaction, - true - ); - // UpdatePerfexCRMInvoice::dispatch($updatePerfexCRMInvoiceObject); - $invoiceId = (App()->make(CreatePerfexCRMInvoiceV2Processor::class))->execute($updatePerfexCRMInvoiceObject); - } + $this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceId()); - $this->updatePerfexCRMObject->setInvoiceId($invoiceId); $result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject); if($this->transaction != null && $this->shouldCreateInvoice){ $updatePerfexCRMInvoiceObject = new UpdatePerfexCRMInvoiceObject( @@ -67,9 +54,22 @@ class UpdatePerfexCRM implements ShouldQueue $this->transaction, true ); - UpdatePerfexCRMInvoice::dispatch($updatePerfexCRMInvoiceObject); - } } + + private function getInvoiceId(){ + if($this->transaction != null){ + $updatePerfexCRMInvoiceObject = new UpdatePerfexCRMInvoiceObject( + $this->updatePerfexCRMObject->getContactEmail(), + $this->updatePerfexCRMObject->getProjectName(), + '', + $this->transaction, + true + ); + $invoiceId = (App()->make(CreatePerfexCRMInvoiceV2Processor::class))->execute($updatePerfexCRMInvoiceObject); + return $invoiceId; + } + return 0; + } } diff --git a/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMObject.php b/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMObject.php index cec82ee5..96bbc8bd 100644 --- a/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMObject.php +++ b/app/Classes/Modules/PerfexCRM/DataTransferObjects/UpdatePerfexCRMObject.php @@ -35,7 +35,7 @@ class UpdatePerfexCRMObject implements DataTransferObject private $tasks; /** @var int */ - private $invoiceId; + private $invoiceId = 0; public function __construct(string $companyName, string $companyReference, string $contactName, string $contactEmail, string $bookingMarking, string $projectName, int $projectStatus, int $invoiceId, array $milestoneNames, array $tasks) diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php index df73bd61..08c74133 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php @@ -39,13 +39,13 @@ class CreatePerfexCRMInvoiceV2Processor public function execute(UpdatePerfexCRMInvoiceObject $updatePerfexCRMInvoiceObject) { + //invoiceId to be returned - fetch or create + $invoiceId = 0; + //get the client id $customer = $this->fetchesPerfexCRMCustomer->execute($updatePerfexCRMInvoiceObject->getEmail()); $transaction = $updatePerfexCRMInvoiceObject->getTransaction(); - //get the invoice id - $invoiceId = 0; - $number = $transaction->bill_no; $prefix = "INV-"; From 60c6b8ea94eae5af75ef16622dd6dab75b69d9cf Mon Sep 17 00:00:00 2001 From: Dillon Date: Wed, 2 Aug 2023 22:19:14 +0800 Subject: [PATCH 19/44] Minor rewrite + debug --- app/Classes/Jobs/UpdatePerfexCRM.php | 9 ++-- .../FetchPerfexCRMInvoiceObject.php | 50 +++++++++++++++++++ ...php => FetchPerfexCRMInvoiceProcessor.php} | 20 ++++---- .../TransactionToPerfexCRMProcessorV2.php | 3 ++ 4 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 app/Classes/Modules/PerfexCRM/DataTransferObjects/FetchPerfexCRMInvoiceObject.php rename app/Classes/Modules/PerfexCRM/Processors/{CreatePerfexCRMInvoiceV2Processor.php => FetchPerfexCRMInvoiceProcessor.php} (73%) diff --git a/app/Classes/Jobs/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index 27357552..93f536c5 100644 --- a/app/Classes/Jobs/UpdatePerfexCRM.php +++ b/app/Classes/Jobs/UpdatePerfexCRM.php @@ -3,7 +3,7 @@ namespace App\Classes\Jobs; use App\Classes\Modules\PerfexCRM\Processors\UpdatePerfexCRMProcessor; -use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMInvoiceV2Processor; +use App\Classes\Modules\PerfexCRM\Processors\FetchPerfexCRMInvoiceProcessor; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -11,6 +11,7 @@ use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject; use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObject; +use App\Classes\Modules\PerfexCRM\DataTransferObjects\FetchPerfexCRMInvoiceObject; use Illuminate\Support\Facades\Log; use PhpOffice\PhpSpreadsheet\Calculation\Logical\Boolean; @@ -60,14 +61,12 @@ class UpdatePerfexCRM implements ShouldQueue private function getInvoiceId(){ if($this->transaction != null){ - $updatePerfexCRMInvoiceObject = new UpdatePerfexCRMInvoiceObject( + $fetchPerfexCRMInvoiceObject = new FetchPerfexCRMInvoiceObject( $this->updatePerfexCRMObject->getContactEmail(), - $this->updatePerfexCRMObject->getProjectName(), - '', $this->transaction, true ); - $invoiceId = (App()->make(CreatePerfexCRMInvoiceV2Processor::class))->execute($updatePerfexCRMInvoiceObject); + $invoiceId = (App()->make(FetchPerfexCRMInvoiceProcessor::class))->execute($fetchPerfexCRMInvoiceObject); return $invoiceId; } return 0; diff --git a/app/Classes/Modules/PerfexCRM/DataTransferObjects/FetchPerfexCRMInvoiceObject.php b/app/Classes/Modules/PerfexCRM/DataTransferObjects/FetchPerfexCRMInvoiceObject.php new file mode 100644 index 00000000..cbb85a3e --- /dev/null +++ b/app/Classes/Modules/PerfexCRM/DataTransferObjects/FetchPerfexCRMInvoiceObject.php @@ -0,0 +1,50 @@ +email = $email; + $this->transaction = $transaction; + $this->isPaid = $isPaid; + } + + /** + * @return string + */ + public function getEmail(): string + { + return $this->email; + } + + /** + * @return Transaction + */ + public function getTransaction(): Transaction + { + return $this->transaction; + } + + /** + * @return bool + */ + public function getIsPaid(): bool + { + return $this->isPaid; + } +} diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php similarity index 73% rename from app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php rename to app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php index 08c74133..4e0a12f8 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceV2Processor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php @@ -6,11 +6,11 @@ namespace App\Classes\Modules\PerfexCRM\Processors; use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMInvoiceProcessor; use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMCustomer; use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMInvoice; -use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObject; +use App\Classes\Modules\PerfexCRM\DataTransferObjects\FetchPerfexCRMInvoiceObject; use Illuminate\Support\Facades\Log; use App\Classes\General\Helper; -class CreatePerfexCRMInvoiceV2Processor +class FetchPerfexCRMInvoiceProcessor { private $fetchesPerfexCRMCustomer; /** @var FetchesPerfexCRMCustomer */ @@ -23,7 +23,7 @@ class CreatePerfexCRMInvoiceV2Processor /** * - * CreatePerfexCRMInvoiceV2Processor constructor. + * FetchPerfexCRMInvoiceProcessor constructor. * @param FetchesPerfexCRMCustomer $fetchesPerfexCRMCustomer * @param FetchesPerfexCRMInvoice $fetchesPerfexCRMInvoice * @param CreatePerfexCRMInvoiceProcessor $createPerfexCRMInvoiceProcessor @@ -37,14 +37,14 @@ class CreatePerfexCRMInvoiceV2Processor $this->createPerfexCRMInvoiceProcessor = $createPerfexCRMInvoiceProcessor; } - public function execute(UpdatePerfexCRMInvoiceObject $updatePerfexCRMInvoiceObject) + public function execute(FetchPerfexCRMInvoiceObject $fetchPerfexCRMInvoiceObject) { //invoiceId to be returned - fetch or create $invoiceId = 0; //get the client id - $customer = $this->fetchesPerfexCRMCustomer->execute($updatePerfexCRMInvoiceObject->getEmail()); - $transaction = $updatePerfexCRMInvoiceObject->getTransaction(); + $customer = $this->fetchesPerfexCRMCustomer->execute($fetchPerfexCRMInvoiceObject->getEmail()); + $transaction = $fetchPerfexCRMInvoiceObject->getTransaction(); $number = $transaction->bill_no; @@ -56,14 +56,14 @@ class CreatePerfexCRMInvoiceV2Processor $number = 'EXC-'.$number; $invoice = $this->fetchesPerfexCRMInvoice->execute($customer->userid,"INV-", $number); - Log::error(json_encode('CreatePerfexCRMInvoiceV2Processor debug $number: '.$number)); + Log::error(json_encode('FetchPerfexCRMInvoiceProcessor debug $number: '.$number)); if(is_null($invoice)){ - $result = $this->createPerfexCRMInvoiceProcessor->execute($transaction, null, null, $updatePerfexCRMInvoiceObject->getIsPaid()); + $result = $this->createPerfexCRMInvoiceProcessor->execute($transaction, null, null, $fetchPerfexCRMInvoiceObject->getIsPaid()); if ($result) { $invoiceId = $result->payload['id']; } else { - $log['message'] = 'CreatePerfexCRMInvoiceV2Processor CreatePerfexCRMInvoiceProcessor failed'; - Helper::debugLoggerForPerfexCRM($log); + $log['message'] = 'FetchPerfexCRMInvoiceProcessor CreatePerfexCRMInvoiceProcessor failed'; + Helper::debugLogger($log); } } else{ diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php index fccdaec4..65a6f545 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php @@ -12,6 +12,7 @@ use App\Classes\Jobs\UpdatePerfexCRMPrelude; use App\Models\Booking; use App\Models\Transaction; use Illuminate\Support\Facades\Log; +use App\Classes\General\Helper; class TransactionToPerfexCRMProcessorV2 { @@ -24,6 +25,8 @@ class TransactionToPerfexCRMProcessorV2 $projectName = 'Exchange | ' . $bookingInfo['serviceTypeName'] . ' | ' . $bookingInfo['bookingMarking']; $tasks = $this->defineTasks($model, $status); + Helper::debugLogger(json_encode($transaction)); //cief todo: to be removed + if(count($tasks) > 0) { $updatePerfexCRMObject = new UpdatePerfexCRMObject( $bookingInfo['companyName'], From dab9a8e810f6986880d34452d65fcf8d109c3c90 Mon Sep 17 00:00:00 2001 From: Dillon Date: Wed, 2 Aug 2023 22:26:17 +0800 Subject: [PATCH 20/44] Debug --- .../Processors/TransactionToPerfexCRMProcessorV2.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php index 65a6f545..98628569 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php @@ -12,7 +12,6 @@ use App\Classes\Jobs\UpdatePerfexCRMPrelude; use App\Models\Booking; use App\Models\Transaction; use Illuminate\Support\Facades\Log; -use App\Classes\General\Helper; class TransactionToPerfexCRMProcessorV2 { @@ -25,7 +24,7 @@ class TransactionToPerfexCRMProcessorV2 $projectName = 'Exchange | ' . $bookingInfo['serviceTypeName'] . ' | ' . $bookingInfo['bookingMarking']; $tasks = $this->defineTasks($model, $status); - Helper::debugLogger(json_encode($transaction)); //cief todo: to be removed + Log::error('TransactionToPerfexCRMProcessorV2 debug: ', json_encode($transaction)); //cief todo: to be removed if(count($tasks) > 0) { $updatePerfexCRMObject = new UpdatePerfexCRMObject( @@ -44,7 +43,6 @@ class TransactionToPerfexCRMProcessorV2 } } } catch (\Exception $exception) { - Log::error('TransactionToPerfexCRMProcessor debug:'); Log::error($exception); } return true; From f4e40e556b1e00b9a226bd680791424c2213b349 Mon Sep 17 00:00:00 2001 From: Dillon Date: Wed, 2 Aug 2023 22:29:24 +0800 Subject: [PATCH 21/44] Debug --- .../PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php index 98628569..27c1b356 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php @@ -24,7 +24,7 @@ class TransactionToPerfexCRMProcessorV2 $projectName = 'Exchange | ' . $bookingInfo['serviceTypeName'] . ' | ' . $bookingInfo['bookingMarking']; $tasks = $this->defineTasks($model, $status); - Log::error('TransactionToPerfexCRMProcessorV2 debug: ', json_encode($transaction)); //cief todo: to be removed + Log::error('TransactionToPerfexCRMProcessorV2 debug: ' + json_encode($transaction)); //cief todo: to be removed if(count($tasks) > 0) { $updatePerfexCRMObject = new UpdatePerfexCRMObject( From 8a679844018d2a98bc2c65fb37623f02615e8a87 Mon Sep 17 00:00:00 2001 From: Dillon Date: Wed, 2 Aug 2023 22:32:44 +0800 Subject: [PATCH 22/44] Debug --- .../PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php index 27c1b356..958032f8 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php @@ -24,7 +24,7 @@ class TransactionToPerfexCRMProcessorV2 $projectName = 'Exchange | ' . $bookingInfo['serviceTypeName'] . ' | ' . $bookingInfo['bookingMarking']; $tasks = $this->defineTasks($model, $status); - Log::error('TransactionToPerfexCRMProcessorV2 debug: ' + json_encode($transaction)); //cief todo: to be removed + Log::error('TransactionToPerfexCRMProcessorV2 debug: '.json_encode($transaction)); //cief todo: to be removed if(count($tasks) > 0) { $updatePerfexCRMObject = new UpdatePerfexCRMObject( From b235304ad880f4b71a917a335277eec822b6c107 Mon Sep 17 00:00:00 2001 From: Dillon Date: Wed, 2 Aug 2023 22:46:08 +0800 Subject: [PATCH 23/44] Debug and fixing a decimal problem at Invoice in CRM --- .../PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php index 4dbaa2d5..2b64aa75 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php @@ -152,7 +152,7 @@ class CreatePerfexCRMInvoiceProcessor 'Refer to booking: '.$booking->marking, "", 1.00, - $transaction->amount, + number_format($transaction->amount, 2,'.','') * 1, 1, "" ); From 4f6887ef20f960bd2aa9197f4e698aa09eb1a373 Mon Sep 17 00:00:00 2001 From: Dillon Date: Wed, 2 Aug 2023 22:55:12 +0800 Subject: [PATCH 24/44] Debug and fixing a decimal problem at Invoice in CRM --- .../PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php index 2b64aa75..2bd95920 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php @@ -152,7 +152,7 @@ class CreatePerfexCRMInvoiceProcessor 'Refer to booking: '.$booking->marking, "", 1.00, - number_format($transaction->amount, 2,'.','') * 1, + $transaction->amount, 1, "" ); @@ -199,7 +199,7 @@ class CreatePerfexCRMInvoiceProcessor //When this transaction is of TransactionType::PAYMENT, the amount is actually in the currecy user choose to pay (RM) //So there is no need to convert it if ($transaction->type == TransactionType::PAYMENT){ - $total = $transaction->amount; + $total = number_format($transaction->amount, 2,'.','') * 1; } else{ if($booking->first()->fix_currency_id !== 1){ From 07eac828aa33844d8a049b10efc31e23042b6230 Mon Sep 17 00:00:00 2001 From: Dillon Date: Wed, 2 Aug 2023 23:10:11 +0800 Subject: [PATCH 25/44] Debug --- .../PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php index 2bd95920..5872cf8c 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php @@ -196,6 +196,8 @@ class CreatePerfexCRMInvoiceProcessor } } + Log::error('CreatePerfexCRMInvoiceProcessor debug: '.json_encode($transaction)); //cief todo: to be removed + //When this transaction is of TransactionType::PAYMENT, the amount is actually in the currecy user choose to pay (RM) //So there is no need to convert it if ($transaction->type == TransactionType::PAYMENT){ From 43aa0cc9c192a210c94f91bee20ecd8becf3eced Mon Sep 17 00:00:00 2001 From: Dillon Date: Wed, 2 Aug 2023 23:21:17 +0800 Subject: [PATCH 26/44] Debug and fixing a decimal problem at Invoice in CRM --- .../PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php | 2 -- .../PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php | 2 +- .../PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php | 2 -- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php index 5872cf8c..2bd95920 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php @@ -196,8 +196,6 @@ class CreatePerfexCRMInvoiceProcessor } } - Log::error('CreatePerfexCRMInvoiceProcessor debug: '.json_encode($transaction)); //cief todo: to be removed - //When this transaction is of TransactionType::PAYMENT, the amount is actually in the currecy user choose to pay (RM) //So there is no need to convert it if ($transaction->type == TransactionType::PAYMENT){ diff --git a/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php index 4e0a12f8..ddf0ee55 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php @@ -62,7 +62,7 @@ class FetchPerfexCRMInvoiceProcessor if ($result) { $invoiceId = $result->payload['id']; } else { - $log['message'] = 'FetchPerfexCRMInvoiceProcessor CreatePerfexCRMInvoiceProcessor failed'; + $log['message'] = 'FetchPerfexCRMInvoiceProcessor failed'; Helper::debugLogger($log); } } diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php index 958032f8..7ec712c6 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php @@ -24,8 +24,6 @@ class TransactionToPerfexCRMProcessorV2 $projectName = 'Exchange | ' . $bookingInfo['serviceTypeName'] . ' | ' . $bookingInfo['bookingMarking']; $tasks = $this->defineTasks($model, $status); - Log::error('TransactionToPerfexCRMProcessorV2 debug: '.json_encode($transaction)); //cief todo: to be removed - if(count($tasks) > 0) { $updatePerfexCRMObject = new UpdatePerfexCRMObject( $bookingInfo['companyName'], From edaf72aa040bc1a1298a14c4d2dfa28b36ef8f92 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Thu, 3 Aug 2023 11:55:15 +0800 Subject: [PATCH 27/44] add download credit note --- app/Http/Resources/WalletTransactionResource.php | 1 + .../elements/CustomerTransactionHistorySectionComponent.vue | 2 +- .../wallets/elements/CustomerTransactionSectionComponent.vue | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Http/Resources/WalletTransactionResource.php b/app/Http/Resources/WalletTransactionResource.php index 53f18364..a0e1a930 100644 --- a/app/Http/Resources/WalletTransactionResource.php +++ b/app/Http/Resources/WalletTransactionResource.php @@ -45,6 +45,7 @@ class WalletTransactionResource extends JsonResource } return [ + 'id' => (int) $this->id, 'type' => (int) $this->type, 'marking' => $this->owner->owner->reference, 'bill_no' => $this->bill_no, diff --git a/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue b/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue index c3663ef0..7b0aee28 100644 --- a/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue +++ b/resources/assets/vue/components/bookings/elements/CustomerTransactionHistorySectionComponent.vue @@ -22,7 +22,7 @@
{{item.created_at}}
-
{{ convertTransactionType(item.type) }} {{ item.payment_reference ? ' - ' + item.payment_reference : '' }}
+
{{ convertTransactionType(item.type) }} {{ item.payment_reference ? ' - ' + item.payment_reference : '' }}
{{[5, 9].includes(parseFloat(item.type)) ? (Math.round((parseFloat(item.amount) + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ''}}
{{[1, 11].includes(parseFloat(item.type)) ? '- ' + (Math.round((parseFloat(item.amount) + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ''}}
diff --git a/resources/assets/vue/components/wallets/elements/CustomerTransactionSectionComponent.vue b/resources/assets/vue/components/wallets/elements/CustomerTransactionSectionComponent.vue index 25577b5c..fa535635 100644 --- a/resources/assets/vue/components/wallets/elements/CustomerTransactionSectionComponent.vue +++ b/resources/assets/vue/components/wallets/elements/CustomerTransactionSectionComponent.vue @@ -21,7 +21,7 @@
{{item.created_at}}
-
+
{{item.description }}
{{[5, 9].includes(parseFloat(item.type)) ? (Math.round((parseFloat(item.amount) + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ''}}
{{[1, 11].includes(parseFloat(item.type)) ? '- ' + (Math.round((parseFloat(item.amount) + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ''}}
{{remainingBalance(index)}}
From b4a062669c6bc327454a3ede25fced5c1f1702fe Mon Sep 17 00:00:00 2001 From: edmondlang Date: Thu, 3 Aug 2023 12:45:35 +0800 Subject: [PATCH 28/44] update wallet history text bug --- .../wallets/elements/CustomerTransactionSectionComponent.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/assets/vue/components/wallets/elements/CustomerTransactionSectionComponent.vue b/resources/assets/vue/components/wallets/elements/CustomerTransactionSectionComponent.vue index fa535635..fcfba752 100644 --- a/resources/assets/vue/components/wallets/elements/CustomerTransactionSectionComponent.vue +++ b/resources/assets/vue/components/wallets/elements/CustomerTransactionSectionComponent.vue @@ -21,7 +21,7 @@
{{item.created_at}}
-
{{item.description }}
+
{{[5, 9].includes(parseFloat(item.type)) ? (Math.round((parseFloat(item.amount) + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ''}}
{{[1, 11].includes(parseFloat(item.type)) ? '- ' + (Math.round((parseFloat(item.amount) + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ''}}
{{remainingBalance(index)}}
From 8b20bfc0a6baa12d59b9097bd181cda1b6a46bda Mon Sep 17 00:00:00 2001 From: Dillon Date: Fri, 4 Aug 2023 14:45:01 +0800 Subject: [PATCH 29/44] Minor logging update --- .../PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php | 1 - .../PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php | 3 +-- .../Modules/PerfexCRM/Services/UpdatesPerfexCRMInvoice.php | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php index 2bd95920..ca2c4069 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php @@ -120,7 +120,6 @@ 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:'.json_encode($transaction)); Log::error('$projectName: '.$projectName); return $email; } diff --git a/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php index ddf0ee55..f9ffced9 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php @@ -56,13 +56,12 @@ class FetchPerfexCRMInvoiceProcessor $number = 'EXC-'.$number; $invoice = $this->fetchesPerfexCRMInvoice->execute($customer->userid,"INV-", $number); - Log::error(json_encode('FetchPerfexCRMInvoiceProcessor debug $number: '.$number)); if(is_null($invoice)){ $result = $this->createPerfexCRMInvoiceProcessor->execute($transaction, null, null, $fetchPerfexCRMInvoiceObject->getIsPaid()); if ($result) { $invoiceId = $result->payload['id']; } else { - $log['message'] = 'FetchPerfexCRMInvoiceProcessor failed'; + $log['message'] = 'FetchPerfexCRMInvoiceProcessor failed for transaction > bill_no: '.$number; Helper::debugLogger($log); } } diff --git a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMInvoice.php b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMInvoice.php index 1ade5453..9adb9460 100644 --- a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMInvoice.php +++ b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMInvoice.php @@ -64,7 +64,6 @@ class UpdatesPerfexCRMInvoice return null; } }catch(\Exception $exception){ - dd(json_encode($exception)); throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage()); } } From ba2fcb1d6f66862b685c39c36ab4230834353301 Mon Sep 17 00:00:00 2001 From: Dillon Date: Fri, 4 Aug 2023 23:17:26 +0800 Subject: [PATCH 30/44] Some code syntax fixes + remove comments --- app/Classes/Jobs/UpdatePerfexCRM.php | 17 +++--- .../FetchPerfexCRMInvoiceObject.php | 14 +---- .../CreatePerfexCRMInvoiceProcessor.php | 20 ------- .../FetchPerfexCRMInvoiceProcessor.php | 2 +- .../Processors/UpdatePerfexCRMProcessor.php | 24 +++++--- .../Services/CreatesPerfexCRMTask.php | 60 ++++++------------- 6 files changed, 45 insertions(+), 92 deletions(-) diff --git a/app/Classes/Jobs/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index 93f536c5..83e91df4 100644 --- a/app/Classes/Jobs/UpdatePerfexCRM.php +++ b/app/Classes/Jobs/UpdatePerfexCRM.php @@ -26,28 +26,28 @@ class UpdatePerfexCRM implements ShouldQueue private $transaction; /** @var Boolean|null */ - private $shouldCreateInvoice; + private $shouldCreateInvoiceWithPayment; /** * @param UpdatePerfexCRMObject $updatePerfexCRMObject * @param $transaction - * @param bool|null $shouldCreateInvoice + * @param bool|null $shouldCreateInvoiceWithPayment */ - public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject, $transaction, ?bool $shouldCreateInvoice = false) + public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject, $transaction, ?bool $shouldCreateInvoiceWithPayment = false) { $this->updatePerfexCRMObject = $updatePerfexCRMObject; $this->transaction = $transaction; - $this->shouldCreateInvoice = $shouldCreateInvoice; + $this->shouldCreateInvoiceWithPayment = $shouldCreateInvoiceWithPayment; } public function handle() { //To use invoice as a reference to decide whether more tasks should be created - $this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceId()); + $this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceIdOrCreateInvoice()); $result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject); - if($this->transaction != null && $this->shouldCreateInvoice){ + if($this->transaction != null && $this->shouldCreateInvoiceWithPayment){ $updatePerfexCRMInvoiceObject = new UpdatePerfexCRMInvoiceObject( $this->updatePerfexCRMObject->getContactEmail(), $this->updatePerfexCRMObject->getProjectName(), @@ -59,12 +59,11 @@ class UpdatePerfexCRM implements ShouldQueue } } - private function getInvoiceId(){ + private function getInvoiceIdOrCreateInvoice(){ if($this->transaction != null){ $fetchPerfexCRMInvoiceObject = new FetchPerfexCRMInvoiceObject( $this->updatePerfexCRMObject->getContactEmail(), - $this->transaction, - true + $this->transaction ); $invoiceId = (App()->make(FetchPerfexCRMInvoiceProcessor::class))->execute($fetchPerfexCRMInvoiceObject); return $invoiceId; diff --git a/app/Classes/Modules/PerfexCRM/DataTransferObjects/FetchPerfexCRMInvoiceObject.php b/app/Classes/Modules/PerfexCRM/DataTransferObjects/FetchPerfexCRMInvoiceObject.php index cbb85a3e..56c5a01d 100644 --- a/app/Classes/Modules/PerfexCRM/DataTransferObjects/FetchPerfexCRMInvoiceObject.php +++ b/app/Classes/Modules/PerfexCRM/DataTransferObjects/FetchPerfexCRMInvoiceObject.php @@ -13,15 +13,11 @@ class FetchPerfexCRMInvoiceObject implements DataTransferObject /** @var Transaction */ private $transaction; - /** @var bool */ - private $isPaid; - - public function __construct(string $email, Transaction $transaction, bool $isPaid) + public function __construct(string $email, Transaction $transaction) { $this->email = $email; $this->transaction = $transaction; - $this->isPaid = $isPaid; } /** @@ -39,12 +35,4 @@ class FetchPerfexCRMInvoiceObject implements DataTransferObject { return $this->transaction; } - - /** - * @return bool - */ - public function getIsPaid(): bool - { - return $this->isPaid; - } } diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php index ca2c4069..2b6a557d 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php @@ -228,26 +228,6 @@ class CreatePerfexCRMInvoiceProcessor ); $result = $this->createsPerfexCRMInvoice->execute($invoicePerfexCRMObject); - - //cief todo: When invoices need to be regenerated, need to ensure payment do not get double created - - // if(!is_null($result)) - // { - // if($result->payload['id']){ - // $invoicePaymentPerfexCRMObject = new InvoicePaymentPerfexCRMObject( - // $result->payload['id'], - // $total, - // $date, - // 1, - // "", - // "" - // ); - // $this->createsPerfexCRMInvoicePayment->execute($invoicePaymentPerfexCRMObject); - // } - // } - //else: logs will record the following: - //"status":false,"error":{"number":"The Invoice number is already in use"},"message":"

The Invoice number is already in use<\/p>"} - return $result; } } diff --git a/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php index f9ffced9..28ee70a7 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php @@ -57,7 +57,7 @@ class FetchPerfexCRMInvoiceProcessor $number = 'EXC-'.$number; $invoice = $this->fetchesPerfexCRMInvoice->execute($customer->userid,"INV-", $number); if(is_null($invoice)){ - $result = $this->createPerfexCRMInvoiceProcessor->execute($transaction, null, null, $fetchPerfexCRMInvoiceObject->getIsPaid()); + $result = $this->createPerfexCRMInvoiceProcessor->execute($transaction, null, null); if ($result) { $invoiceId = $result->payload['id']; } else { diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 2971e3c8..5552edd9 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -15,8 +15,8 @@ use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMTask; use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMCustomer; use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMProject; use App\Classes\Modules\PerfexCRM\DataTransferObjects\CustomerContactObject; -use App\Classes\Exceptions\MalformedRequestException; use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject; +use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateTaskPerfexCRMObject; use App\Classes\ValueObjects\Constants\PerfexCRMTaskStatus; use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus; use Illuminate\Support\Facades\Http; @@ -219,13 +219,23 @@ class UpdatePerfexCRMProcessor } } else{ - $result = $this->createsPerfexCRMTask->execute($taskName, $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $tasks[$count]['department'], $taskStatus, $tasks[$count]['priority'], $tasks[$count]['duedate'], $updatePerfexCRMObject->getInvoiceId()); + $createTaskPerfexCRMObject = new CreateTaskPerfexCRMObject( + "", + $taskName, + $tasks[$count]['description'], + "", + $projectId, + $milestoneId, + $tasks[$count]['reference'], + $tasks[$count]['on_task_completion'], + $taskStatus, + $tasks[$count]['department'], + $tasks[$count]['priority'], + $tasks[$count]['duedate'], + $updatePerfexCRMObject->getInvoiceId() + ); + $result = $this->createsPerfexCRMTask->execute($createTaskPerfexCRMObject); } - - //cief todo: to evaluate if this is still needed - // 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 ace2aa00..feb8f9c8 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php @@ -6,70 +6,46 @@ use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; use Illuminate\Support\Facades\Log; use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields; +use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateTaskPerfexCRMObject; class CreatesPerfexCRMTask { /** - * @param string $taskName - * @param string $taskDescription - * @param string $leadId - * @param string $milestoneId - * @param string $projectId - * @param string $reference - * @param string $on_task_completion - * @param string $department - * @param string $status - * @param string $priority - * @param string $duedate - * @param int $invoiceId + * @param CreateTaskPerfexCRMObject $createTaskPerfexCRMObject * @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 $department, string $status, string $priority, string $duedate, int $invoiceId) { + public function execute(CreateTaskPerfexCRMObject $createTaskPerfexCRMObject) { try{ $custom_fields = []; - if($department != ""){ + if($createTaskPerfexCRMObject->getDepartment() != ""){ $custom_fields = [ "tasks" => [ - PerfexCRMCustomFields::TASKS_DEPARTMENT => $department + PerfexCRMCustomFields::TASKS_DEPARTMENT => $createTaskPerfexCRMObject->getDepartment() ] ]; } $data = [ - 'name' => $taskName, - 'description' => $taskDescription, - 'milestone' => $milestoneId, + 'name' => $createTaskPerfexCRMObject->getName(), + 'description' => $createTaskPerfexCRMObject->getDescription(), + 'milestone' => $createTaskPerfexCRMObject->getMilestoneId(), 'startdate' => date('Y-m-d'), 'rel_type' => 'project', - 'rel_id' => $projectId, - 'status' => $status, + 'rel_id' => $createTaskPerfexCRMObject->getProjectId(), + 'status' => $createTaskPerfexCRMObject->getStatus(), 'is_system_created' => 1, - 'reference' => $reference, - 'on_task_completion' => $on_task_completion, + 'reference' => $createTaskPerfexCRMObject->getReference(), + 'on_task_completion' => $createTaskPerfexCRMObject->getOnTaskCompletion(), 'custom_fields' => $custom_fields, - 'priority' => $priority, - 'duedate' => date('Y-m-d', strtotime('+' . $duedate . ' days')), - 'invoice_id' => $invoiceId, + 'priority' => $createTaskPerfexCRMObject->getPriority(), + 'duedate' => date('Y-m-d', strtotime('+' . $createTaskPerfexCRMObject->getDuedate() . ' days')), + 'invoice_id' => $createTaskPerfexCRMObject->getInvoiceId(), ]; - if($leadId != '') { - $data = [ - 'name' => $taskName, - 'description' => $taskDescription, - 'milestone' => $milestoneId, - 'startdate' => date('Y-m-d'), - 'rel_type' => 'lead', - 'rel_id' => $leadId, - 'status' => $status, - 'is_system_created' => 1, - 'reference' => $reference, - 'on_task_completion' => $on_task_completion, - 'custom_fields' => $custom_fields, - 'priority' => $priority, - 'duedate' => date('Y-m-d', strtotime('+' . $duedate . ' days')), - 'invoice_id' => 0 - ]; + if($createTaskPerfexCRMObject->getLeadId() != '') { + $data['rel_type'] = 'lead'; + $data['rel_id'] = $createTaskPerfexCRMObject->getLeadId(); } $response = Http::asForm()->withHeaders([ From fd3aacd2c069957e21410b47f2195f7e56b888bc Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 5 Aug 2023 00:13:21 +0800 Subject: [PATCH 31/44] Fix error from production logs --- app/Classes/Jobs/UpdatePerfexCRM.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/Classes/Jobs/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index 83e91df4..65d40126 100644 --- a/app/Classes/Jobs/UpdatePerfexCRM.php +++ b/app/Classes/Jobs/UpdatePerfexCRM.php @@ -26,28 +26,30 @@ class UpdatePerfexCRM implements ShouldQueue private $transaction; /** @var Boolean|null */ - private $shouldCreateInvoiceWithPayment; + private $shouldCreateInvoice; /** * @param UpdatePerfexCRMObject $updatePerfexCRMObject * @param $transaction - * @param bool|null $shouldCreateInvoiceWithPayment + * @param bool|null $shouldCreateInvoice */ - public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject, $transaction, ?bool $shouldCreateInvoiceWithPayment = false) + public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject, $transaction, ?bool $shouldCreateInvoice = false) { $this->updatePerfexCRMObject = $updatePerfexCRMObject; $this->transaction = $transaction; - $this->shouldCreateInvoiceWithPayment = $shouldCreateInvoiceWithPayment; + $this->shouldCreateInvoice = $shouldCreateInvoice; } public function handle() { //To use invoice as a reference to decide whether more tasks should be created - $this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceIdOrCreateInvoice()); + if($this->transaction != null && $this->shouldCreateInvoice){ + $this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceIdOrCreateInvoice()); + } $result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject); - if($this->transaction != null && $this->shouldCreateInvoiceWithPayment){ + if($this->transaction != null && $this->shouldCreateInvoice){ $updatePerfexCRMInvoiceObject = new UpdatePerfexCRMInvoiceObject( $this->updatePerfexCRMObject->getContactEmail(), $this->updatePerfexCRMObject->getProjectName(), From edfec118fe943ad4bc339614e592eb0c60cabe2c Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 5 Aug 2023 00:36:18 +0800 Subject: [PATCH 32/44] Fix error from production logs --- app/Classes/Jobs/UpdatePerfexCRM.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Classes/Jobs/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index 65d40126..cbb65228 100644 --- a/app/Classes/Jobs/UpdatePerfexCRM.php +++ b/app/Classes/Jobs/UpdatePerfexCRM.php @@ -14,6 +14,7 @@ use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMInvoiceObje use App\Classes\Modules\PerfexCRM\DataTransferObjects\FetchPerfexCRMInvoiceObject; use Illuminate\Support\Facades\Log; use PhpOffice\PhpSpreadsheet\Calculation\Logical\Boolean; +use App\Classes\ValueObjects\Constants\TransactionType; class UpdatePerfexCRM implements ShouldQueue { @@ -44,7 +45,7 @@ class UpdatePerfexCRM implements ShouldQueue public function handle() { //To use invoice as a reference to decide whether more tasks should be created - if($this->transaction != null && $this->shouldCreateInvoice){ + if($this->transaction != null && $this->transaction->type === TransactionType::PAYMENT){ $this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceIdOrCreateInvoice()); } From bea8180e200a0b04ba5d89c4dfc091bebe51067c Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 5 Aug 2023 00:44:11 +0800 Subject: [PATCH 33/44] Fix error from production logs --- app/Classes/Jobs/UpdatePerfexCRM.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/Classes/Jobs/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index cbb65228..9f598c34 100644 --- a/app/Classes/Jobs/UpdatePerfexCRM.php +++ b/app/Classes/Jobs/UpdatePerfexCRM.php @@ -45,9 +45,7 @@ class UpdatePerfexCRM implements ShouldQueue public function handle() { //To use invoice as a reference to decide whether more tasks should be created - if($this->transaction != null && $this->transaction->type === TransactionType::PAYMENT){ - $this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceIdOrCreateInvoice()); - } + $this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceIdOrCreateInvoice()); $result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject); if($this->transaction != null && $this->shouldCreateInvoice){ @@ -63,7 +61,7 @@ class UpdatePerfexCRM implements ShouldQueue } private function getInvoiceIdOrCreateInvoice(){ - if($this->transaction != null){ + if($this->transaction != null && $this->transaction->type !== TransactionType::PURCHASE_ORDER){ $fetchPerfexCRMInvoiceObject = new FetchPerfexCRMInvoiceObject( $this->updatePerfexCRMObject->getContactEmail(), $this->transaction From 818672bbf5ca54af837e2ef03bfcccbd0d46c8e8 Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 5 Aug 2023 01:31:15 +0800 Subject: [PATCH 34/44] Fix error from production logs --- app/Classes/Jobs/UpdatePerfexCRM.php | 2 +- app/Classes/Jobs/UpdatePerfexCRMInvoice.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/Jobs/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index 9f598c34..51ec264f 100644 --- a/app/Classes/Jobs/UpdatePerfexCRM.php +++ b/app/Classes/Jobs/UpdatePerfexCRM.php @@ -61,7 +61,7 @@ class UpdatePerfexCRM implements ShouldQueue } private function getInvoiceIdOrCreateInvoice(){ - if($this->transaction != null && $this->transaction->type !== TransactionType::PURCHASE_ORDER){ + if($this->transaction != null){ $fetchPerfexCRMInvoiceObject = new FetchPerfexCRMInvoiceObject( $this->updatePerfexCRMObject->getContactEmail(), $this->transaction diff --git a/app/Classes/Jobs/UpdatePerfexCRMInvoice.php b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php index e9094f84..422dabb3 100644 --- a/app/Classes/Jobs/UpdatePerfexCRMInvoice.php +++ b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php @@ -60,7 +60,7 @@ class UpdatePerfexCRMInvoice implements ShouldQueue Log::error(json_encode('UpdatePerfexCRMInvoice debug $number: '.$number)); if(is_null($invoice)){ - $result = (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($transaction, null, null, $this->updatePerfexCRMInvoiceObject->getIsPaid()); + $result = (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($transaction, null, null); if ($result) { $invoiceId = $result->payload['id']; } else { From 96aed6b8f4949b4c8ce4dc29bad48efd15763103 Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 5 Aug 2023 02:48:11 +0800 Subject: [PATCH 35/44] Fix error from production logs --- .../Processors/CreatePerfexCRMTaskProcessor.php | 15 +-------------- .../Processors/UpdatePerfexCRMProcessor.php | 11 ++++++++--- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php index 4aa5a089..efd6df0e 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php @@ -25,20 +25,7 @@ class CreatePerfexCRMTaskProcessor * @throws \App\Classes\Exceptions\MalformedRequestException */ public function execute(CreateTaskPerfexCRMObject $createTaskPerfexCRMObject) { - $this->createsPerfexCRMTask->execute( - $createTaskPerfexCRMObject->getName(), - $createTaskPerfexCRMObject->getDescription(), - $createTaskPerfexCRMObject->getLeadId(), - $createTaskPerfexCRMObject->getMilestoneId(), - $createTaskPerfexCRMObject->getProjectId(), - $createTaskPerfexCRMObject->getReference(), - $createTaskPerfexCRMObject->getOnTaskCompletion(), - $createTaskPerfexCRMObject->getDepartment(), - $createTaskPerfexCRMObject->getStatus(), - $createTaskPerfexCRMObject->getPriority(), - $createTaskPerfexCRMObject->getDuedate(), - $createTaskPerfexCRMObject->getInvoiceId(), - ); + $this->createsPerfexCRMTask->execute($createTaskPerfexCRMObject); return true; } diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 5552edd9..1852eb72 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -203,10 +203,15 @@ class UpdatePerfexCRMProcessor } // Get existing or create task - $taskName = $tasks[$count]['name'];; + $taskName = $tasks[$count]['name']; + $taskReference = $tasks[$count]['reference']; + $taskOnTaskCompletion = $tasks[$count]['on_task_completion']; if($updatePerfexCRMObject->getInvoiceId() != 0){ $taskName = $taskName." (".$updatePerfexCRMObject->getInvoiceId().")"; + $taskReference = $taskReference."_".$updatePerfexCRMObject->getInvoiceId(); + $taskOnTaskCompletion = $taskOnTaskCompletion."_".$updatePerfexCRMObject->getInvoiceId(); } + $result = $this->fetchesPerfexCRMTask->execute($taskName, $milestoneId, 'project', $projectId, $updatePerfexCRMObject->getInvoiceId()); // Log::info("UpdatePerfexCRMProcessor task: ".json_encode($taskStatus)." , ".json_encode($result)); @@ -226,8 +231,8 @@ class UpdatePerfexCRMProcessor "", $projectId, $milestoneId, - $tasks[$count]['reference'], - $tasks[$count]['on_task_completion'], + $taskReference, + $taskOnTaskCompletion, $taskStatus, $tasks[$count]['department'], $tasks[$count]['priority'], From 0d2ecffd8ca7f07483dc8e786b9a4e3fe808d1d9 Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 5 Aug 2023 03:16:27 +0800 Subject: [PATCH 36/44] Fix error from production logs --- .../Processors/TransactionToPerfexCRMProcessorV2.php | 12 ++++++------ .../Processors/UpdatePerfexCRMProcessor.php | 4 +++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php index 7ec712c6..bc747720 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php @@ -162,12 +162,12 @@ class TransactionToPerfexCRMProcessorV2 $tasks = array_merge($tasks, $this->payment1688Tasks()); } - if ($model->owner->service_id === 1 || $model->owner->service_id === 3) { - $purchaseOrder = $model->booking->transactions()->where('type', TransactionType::PURCHASE_ORDER)->complete()->first(); - if(is_null($purchaseOrder)){ - $tasks = array_merge($tasks, $this->purchaseOrderTasks()); - } - } + // if ($model->owner->service_id === 1 || $model->owner->service_id === 3) { + // $purchaseOrder = $model->booking->transactions()->where('type', TransactionType::PURCHASE_ORDER)->complete()->first(); + // if(is_null($purchaseOrder)){ + // $tasks = array_merge($tasks, $this->purchaseOrderTasks()); + // } + // } return $tasks; } diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 1852eb72..127b712f 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -209,7 +209,9 @@ class UpdatePerfexCRMProcessor if($updatePerfexCRMObject->getInvoiceId() != 0){ $taskName = $taskName." (".$updatePerfexCRMObject->getInvoiceId().")"; $taskReference = $taskReference."_".$updatePerfexCRMObject->getInvoiceId(); - $taskOnTaskCompletion = $taskOnTaskCompletion."_".$updatePerfexCRMObject->getInvoiceId(); + if($taskOnTaskCompletion){ + $taskOnTaskCompletion = $taskOnTaskCompletion."_".$updatePerfexCRMObject->getInvoiceId(); + } } $result = $this->fetchesPerfexCRMTask->execute($taskName, $milestoneId, 'project', $projectId, $updatePerfexCRMObject->getInvoiceId()); From 3be1854fce50680fba178a8f0e738aad2dab7aeb Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 5 Aug 2023 20:39:04 +0800 Subject: [PATCH 37/44] Fix error from production logs --- app/Classes/Jobs/CreatePerfexCRMInvoice.php | 14 ++------------ app/Classes/Jobs/UpdatePerfexCRMInvoice.php | 2 +- .../Processors/CreatePerfexCRMInvoiceProcessor.php | 13 +++---------- .../Processors/FetchPerfexCRMInvoiceProcessor.php | 2 +- 4 files changed, 7 insertions(+), 24 deletions(-) diff --git a/app/Classes/Jobs/CreatePerfexCRMInvoice.php b/app/Classes/Jobs/CreatePerfexCRMInvoice.php index a6905be4..7246dc79 100644 --- a/app/Classes/Jobs/CreatePerfexCRMInvoice.php +++ b/app/Classes/Jobs/CreatePerfexCRMInvoice.php @@ -16,27 +16,17 @@ class CreatePerfexCRMInvoice implements ShouldQueue /** @var $transaction*/ private $transaction; - /** @var $purchaseOrder*/ - private $purchaseOrder; - - /** @var $supplier*/ - private $supplier; - /** * CreatePerfexCRMInvoice constructor. * @param $transaction - * @param $purchaseOrder - * @param $supplier */ - public function __construct($transaction, $purchaseOrder, $supplier) + public function __construct($transaction) { $this->transaction = $transaction; - $this->purchaseOrder = $purchaseOrder; - $this->supplier = $supplier; } public function handle() { - (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($this->transaction, $this->purchaseOrder, $this->supplier); + (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($this->transaction); } } diff --git a/app/Classes/Jobs/UpdatePerfexCRMInvoice.php b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php index 422dabb3..26131bca 100644 --- a/app/Classes/Jobs/UpdatePerfexCRMInvoice.php +++ b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php @@ -60,7 +60,7 @@ class UpdatePerfexCRMInvoice implements ShouldQueue Log::error(json_encode('UpdatePerfexCRMInvoice debug $number: '.$number)); if(is_null($invoice)){ - $result = (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($transaction, null, null); + $result = (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($transaction); if ($result) { $invoiceId = $result->payload['id']; } else { diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php index 2b6a557d..4edb2ef5 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMInvoiceProcessor.php @@ -59,23 +59,16 @@ class CreatePerfexCRMInvoiceProcessor /** * @param $transaction - * @param $purchaseOrder - * @param $supplier * @return null|object * @throws \App\Classes\Exceptions\MalformedRequestException */ - public function execute($transaction, $purchaseOrder, $supplier) { + public function execute($transaction) { $booking = $transaction->booking; - - if(is_null($supplier)){ - $supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]); - } - if(is_null($purchaseOrder)){ - $purchaseOrder = $booking->transactions() + $supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]); + $purchaseOrder = $booking->transactions() ->where('type', TransactionType::PURCHASE_ORDER) ->complete() ->first(); - } $clientId = ""; $number = $transaction->bill_no; diff --git a/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php index 28ee70a7..4c8ee9bf 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php @@ -57,7 +57,7 @@ class FetchPerfexCRMInvoiceProcessor $number = 'EXC-'.$number; $invoice = $this->fetchesPerfexCRMInvoice->execute($customer->userid,"INV-", $number); if(is_null($invoice)){ - $result = $this->createPerfexCRMInvoiceProcessor->execute($transaction, null, null); + $result = $this->createPerfexCRMInvoiceProcessor->execute($transaction); if ($result) { $invoiceId = $result->payload['id']; } else { From 79affd81f92588d44e3ee28ea21b6a40b90ae6fd Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 5 Aug 2023 21:01:21 +0800 Subject: [PATCH 38/44] Fix error from production logs --- .../Processors/UpdatePerfexCRMProcessor.php | 3 +- .../ValueObjects/Constants/PerfexCRMTasks.php | 96 ++++++++++++------- 2 files changed, 66 insertions(+), 33 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 127b712f..4355956a 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -206,7 +206,8 @@ class UpdatePerfexCRMProcessor $taskName = $tasks[$count]['name']; $taskReference = $tasks[$count]['reference']; $taskOnTaskCompletion = $tasks[$count]['on_task_completion']; - if($updatePerfexCRMObject->getInvoiceId() != 0){ + $taskIsAllowMultiple = $tasks[$count]['is_allow_multiple']; + if($updatePerfexCRMObject->getInvoiceId() != 0 && $taskIsAllowMultiple){ $taskName = $taskName." (".$updatePerfexCRMObject->getInvoiceId().")"; $taskReference = $taskReference."_".$updatePerfexCRMObject->getInvoiceId(); if($taskOnTaskCompletion){ diff --git a/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php b/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php index 4129f2a8..c0bc66d7 100644 --- a/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php +++ b/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php @@ -13,7 +13,8 @@ class PerfexCRMTasks 'department' => '', 'status' => PerfexCRMTaskStatus::COMPLETED, 'priority' => PerfexCRMTaskPriority::DEFAULT, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; public const TASK_1_DAY_TRANSFER_1 = [ @@ -27,7 +28,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; public const TASK_1_DAY_TRANSFER_2 = [ 'name' => 'Approve Payment', @@ -47,7 +49,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => true ]; public const TASK_1_DAY_TRANSFER_3 = [ 'name' => 'Issue Exchange Autocount Invoince', @@ -65,7 +68,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => false ]; public const TASK_1_DAY_TRANSFER_3_1 = [ 'name' => 'Issue Exchange Autocount OR', @@ -76,7 +80,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; public const TASK_1_DAY_TRANSFER_4 = [ 'name' => 'Knockoff Invoice', @@ -94,7 +99,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => false ]; public const TASK_1_DAY_TRANSFER_5 = [ 'name' => 'Order Placed in White Form', @@ -114,7 +120,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => true ]; public const TASK_1_DAY_TRANSFER_6 = [ 'name' => 'Upload China Bank Slip', @@ -132,7 +139,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => true ]; public const TASK_3_DAY_TRANSFER_1 = [ @@ -151,7 +159,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; public const TASK_3_DAY_TRANSFER_2 = [ 'name' => 'Approve Payment', @@ -164,7 +173,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => true ]; public const TASK_3_DAY_TRANSFER_3 = [ 'name' => 'Issue Exchange Autocount Invoince', @@ -182,7 +192,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => false ]; public const TASK_3_DAY_TRANSFER_3_1 = [ 'name' => 'Issue Exchange Autocount OR', @@ -193,7 +204,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; public const TASK_3_DAY_TRANSFER_4 = [ 'name' => 'Knockoff Invoice', @@ -211,7 +223,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => false ]; public const TASK_3_DAY_TRANSFER_5 = [ 'name' => 'Order Placed in White Form', @@ -231,7 +244,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => true ]; public const TASK_3_DAY_TRANSFER_6 = [ 'name' => 'Upload China Bank Slip', @@ -249,7 +263,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => true ]; @@ -270,7 +285,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; public const TASK_1688_PAYMENT_2 = [ 'name' => 'Approve Payment', @@ -290,7 +306,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; public const TASK_1688_PAYMENT_3 = [ 'name' => 'Issue Exchange Autocount Invoice', @@ -308,7 +325,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => false ]; public const TASK_1688_PAYMENT_3_1 = [ 'name' => 'Issue Exchange Autocount OR', @@ -320,7 +338,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; public const TASK_1688_PAYMENT_4 = [ 'name' => 'Knockoff Invoice', @@ -338,7 +357,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => false ]; public const TASK_1688_PAYMENT_5 = [ 'name' => 'Order Placed in White Form', @@ -357,7 +377,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; public const TASK_1688_PAYMENT_6 = [ 'name' => 'Send White Form to Operation Department', @@ -375,7 +396,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; public const TASK_1688_PAYMENT_7 = [ 'name' => 'Authorize Customer\'s 1688 Account', @@ -395,7 +417,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => true ]; public const TASK_1688_PAYMENT_8 = [ 'name' => 'Make Payment for Customer 1688 Order', @@ -410,7 +433,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::HIGH, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => true ]; public const TASK_1688_PAYMENT_9 = [ 'name' => 'Upload China Bank Slip', @@ -422,7 +446,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => true ]; public const TASK_1688_PAYMENT_10 = [ 'name' => 'Upload 1688 Purchase Order PDF', @@ -434,7 +459,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => true ]; public const TASK_1688_PAYMENT_11 = [ 'name' => 'Fill Up Purchase Order', @@ -446,7 +472,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::LOW, - 'duedate' => 7 + 'duedate' => 7, + 'is_allow_multiple' => false ]; public const TASK_1688_PAYMENT_12 = [ 'name' => 'Approve Purchase Order', @@ -458,7 +485,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::LOW, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => false ]; public const TASK_1688_PAYMENT_13 = [ 'name' => 'Complete Order bookkeeping', @@ -476,7 +504,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; @@ -497,7 +526,8 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::LOW, - 'duedate' => 1 + 'duedate' => 1, + 'is_allow_multiple' => false ]; public const TASK_PURCHASE_ORDER_2 = [ @@ -510,7 +540,8 @@ class PerfexCRMTasks 'department' => 'Accounts', 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; @@ -530,6 +561,7 @@ class PerfexCRMTasks 'department' => 'Operations', 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::DEFAULT, - 'duedate' => 0 + 'duedate' => 0, + 'is_allow_multiple' => false ]; } From 21c4508647dfd84b2ff83d7af95dfab5957b160f Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 5 Aug 2023 21:20:56 +0800 Subject: [PATCH 39/44] Fix error from production logs --- .../Processors/UpdatePerfexCRMProcessor.php | 3 +- .../ValueObjects/Constants/PerfexCRMTasks.php | 96 ++++++++++++------- 2 files changed, 66 insertions(+), 33 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 4355956a..51e04388 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -207,10 +207,11 @@ class UpdatePerfexCRMProcessor $taskReference = $tasks[$count]['reference']; $taskOnTaskCompletion = $tasks[$count]['on_task_completion']; $taskIsAllowMultiple = $tasks[$count]['is_allow_multiple']; + $taskIsOnTaskCompletionUpdate = $tasks[$count]['is_on_task_completion_update']; if($updatePerfexCRMObject->getInvoiceId() != 0 && $taskIsAllowMultiple){ $taskName = $taskName." (".$updatePerfexCRMObject->getInvoiceId().")"; $taskReference = $taskReference."_".$updatePerfexCRMObject->getInvoiceId(); - if($taskOnTaskCompletion){ + if($taskOnTaskCompletion && $taskIsOnTaskCompletionUpdate){ $taskOnTaskCompletion = $taskOnTaskCompletion."_".$updatePerfexCRMObject->getInvoiceId(); } } diff --git a/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php b/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php index c0bc66d7..1d26c9d3 100644 --- a/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php +++ b/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php @@ -14,7 +14,8 @@ class PerfexCRMTasks 'status' => PerfexCRMTaskStatus::COMPLETED, 'priority' => PerfexCRMTaskPriority::DEFAULT, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1_DAY_TRANSFER_1 = [ @@ -29,7 +30,8 @@ class PerfexCRMTasks 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1_DAY_TRANSFER_2 = [ 'name' => 'Approve Payment', @@ -50,7 +52,8 @@ class PerfexCRMTasks 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 0, - 'is_allow_multiple' => true + 'is_allow_multiple' => true, + 'is_on_task_completion_update' => true ]; public const TASK_1_DAY_TRANSFER_3 = [ 'name' => 'Issue Exchange Autocount Invoince', @@ -69,7 +72,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, 'duedate' => 1, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1_DAY_TRANSFER_3_1 = [ 'name' => 'Issue Exchange Autocount OR', @@ -81,7 +85,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1_DAY_TRANSFER_4 = [ 'name' => 'Knockoff Invoice', @@ -100,7 +105,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, 'duedate' => 1, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1_DAY_TRANSFER_5 = [ 'name' => 'Order Placed in White Form', @@ -121,7 +127,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 0, - 'is_allow_multiple' => true + 'is_allow_multiple' => true, + 'is_on_task_completion_update' => true ]; public const TASK_1_DAY_TRANSFER_6 = [ 'name' => 'Upload China Bank Slip', @@ -140,7 +147,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, 'duedate' => 1, - 'is_allow_multiple' => true + 'is_allow_multiple' => true, + 'is_on_task_completion_update' => true ]; public const TASK_3_DAY_TRANSFER_1 = [ @@ -160,7 +168,8 @@ class PerfexCRMTasks 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_3_DAY_TRANSFER_2 = [ 'name' => 'Approve Payment', @@ -174,7 +183,8 @@ class PerfexCRMTasks 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 0, - 'is_allow_multiple' => true + 'is_allow_multiple' => true, + 'is_on_task_completion_update' => true ]; public const TASK_3_DAY_TRANSFER_3 = [ 'name' => 'Issue Exchange Autocount Invoince', @@ -193,7 +203,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, 'duedate' => 1, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_3_DAY_TRANSFER_3_1 = [ 'name' => 'Issue Exchange Autocount OR', @@ -205,7 +216,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_3_DAY_TRANSFER_4 = [ 'name' => 'Knockoff Invoice', @@ -224,7 +236,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, 'duedate' => 1, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_3_DAY_TRANSFER_5 = [ 'name' => 'Order Placed in White Form', @@ -245,7 +258,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 0, - 'is_allow_multiple' => true + 'is_allow_multiple' => true, + 'is_on_task_completion_update' => true ]; public const TASK_3_DAY_TRANSFER_6 = [ 'name' => 'Upload China Bank Slip', @@ -264,7 +278,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, 'duedate' => 1, - 'is_allow_multiple' => true + 'is_allow_multiple' => true, + 'is_on_task_completion_update' => true ]; @@ -286,7 +301,8 @@ class PerfexCRMTasks 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1688_PAYMENT_2 = [ 'name' => 'Approve Payment', @@ -307,7 +323,8 @@ class PerfexCRMTasks 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1688_PAYMENT_3 = [ 'name' => 'Issue Exchange Autocount Invoice', @@ -326,7 +343,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, 'duedate' => 1, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1688_PAYMENT_3_1 = [ 'name' => 'Issue Exchange Autocount OR', @@ -339,7 +357,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1688_PAYMENT_4 = [ 'name' => 'Knockoff Invoice', @@ -358,7 +377,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, 'duedate' => 1, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1688_PAYMENT_5 = [ 'name' => 'Order Placed in White Form', @@ -378,7 +398,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1688_PAYMENT_6 = [ 'name' => 'Send White Form to Operation Department', @@ -397,7 +418,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1688_PAYMENT_7 = [ 'name' => 'Authorize Customer\'s 1688 Account', @@ -418,7 +440,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 1, - 'is_allow_multiple' => true + 'is_allow_multiple' => true, + 'is_on_task_completion_update' => true ]; public const TASK_1688_PAYMENT_8 = [ 'name' => 'Make Payment for Customer 1688 Order', @@ -434,7 +457,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::HIGH, 'duedate' => 1, - 'is_allow_multiple' => true + 'is_allow_multiple' => true, + 'is_on_task_completion_update' => true ]; public const TASK_1688_PAYMENT_9 = [ 'name' => 'Upload China Bank Slip', @@ -447,7 +471,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, 'duedate' => 1, - 'is_allow_multiple' => true + 'is_allow_multiple' => true, + 'is_on_task_completion_update' => true ]; public const TASK_1688_PAYMENT_10 = [ 'name' => 'Upload 1688 Purchase Order PDF', @@ -460,7 +485,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::MEDIUM, 'duedate' => 1, - 'is_allow_multiple' => true + 'is_allow_multiple' => true, + 'is_on_task_completion_update' => false ]; public const TASK_1688_PAYMENT_11 = [ 'name' => 'Fill Up Purchase Order', @@ -473,7 +499,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::LOW, 'duedate' => 7, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1688_PAYMENT_12 = [ 'name' => 'Approve Purchase Order', @@ -486,7 +513,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::LOW, 'duedate' => 1, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_1688_PAYMENT_13 = [ 'name' => 'Complete Order bookkeeping', @@ -505,7 +533,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; @@ -527,7 +556,8 @@ class PerfexCRMTasks 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::LOW, 'duedate' => 1, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; public const TASK_PURCHASE_ORDER_2 = [ @@ -541,7 +571,8 @@ class PerfexCRMTasks 'status' => '', 'priority' => PerfexCRMTaskPriority::DEFAULT, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; @@ -562,6 +593,7 @@ class PerfexCRMTasks 'status' => PerfexCRMTaskStatus::IN_PROGRESS, 'priority' => PerfexCRMTaskPriority::DEFAULT, 'duedate' => 0, - 'is_allow_multiple' => false + 'is_allow_multiple' => false, + 'is_on_task_completion_update' => false ]; } From e2930acd018d1d936a2ebe1ce8a1febc7423ccc9 Mon Sep 17 00:00:00 2001 From: Dillon Date: Sun, 6 Aug 2023 12:14:23 +0800 Subject: [PATCH 40/44] Enabled back previously disabled function meant for CRM task creation --- .../Processors/TransactionToPerfexCRMProcessorV2.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php index bc747720..7ec712c6 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php @@ -162,12 +162,12 @@ class TransactionToPerfexCRMProcessorV2 $tasks = array_merge($tasks, $this->payment1688Tasks()); } - // if ($model->owner->service_id === 1 || $model->owner->service_id === 3) { - // $purchaseOrder = $model->booking->transactions()->where('type', TransactionType::PURCHASE_ORDER)->complete()->first(); - // if(is_null($purchaseOrder)){ - // $tasks = array_merge($tasks, $this->purchaseOrderTasks()); - // } - // } + if ($model->owner->service_id === 1 || $model->owner->service_id === 3) { + $purchaseOrder = $model->booking->transactions()->where('type', TransactionType::PURCHASE_ORDER)->complete()->first(); + if(is_null($purchaseOrder)){ + $tasks = array_merge($tasks, $this->purchaseOrderTasks()); + } + } return $tasks; } From 0e67cacf80f7572d293a05dc768d8e86231c40dd Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 8 Aug 2023 19:14:56 +0800 Subject: [PATCH 41/44] make refunded booking expired status --- app/Console/Commands/DeleteOrderCommand.php | 79 +++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 app/Console/Commands/DeleteOrderCommand.php diff --git a/app/Console/Commands/DeleteOrderCommand.php b/app/Console/Commands/DeleteOrderCommand.php new file mode 100644 index 00000000..a4702ff0 --- /dev/null +++ b/app/Console/Commands/DeleteOrderCommand.php @@ -0,0 +1,79 @@ +argument('bookings_reference'); + $bookings_reference = explode(',', $bookings_reference); + + $start = new Carbon(); + $this->logOutput('Process started'); + + foreach ($bookings_reference as $reference) { + $booking = Booking::where('marking', $reference)->first(); + + if (!$booking) { + $this->logOutput('Booking not found: ' . $reference); + } else { + $booking->status = ApprovalStatus::EXPIRED; + $booking->save(); + $this->logOutput('Booking deleted: ' . $reference); + } + } + + $end = new Carbon(); + $elapsedTime = $start->diff($end)->format('%H:%I:%S'); + + $this->logOutput('Process ended. ElapsedTime: ' . $elapsedTime); + } + + public function logOutput($text) + { + if (is_array($text)) { + $text = implode(', ', $text); + } + + $this->info(Carbon::now() . ' : ' . $text); + + $filePath = storage_path('logs/delete-orders.log'); + $textToAppend = Carbon::now()->format('[Y-m-d H:i:s]') . ' ' . $text . PHP_EOL; + file_put_contents($filePath, $textToAppend, FILE_APPEND); + } +} From 2cf2c27051a32043595bcc445698c1624c9dea4a Mon Sep 17 00:00:00 2001 From: Dillon Date: Tue, 8 Aug 2023 23:10:36 +0800 Subject: [PATCH 42/44] Debugging --- .../Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 51e04388..9093321e 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -217,7 +217,7 @@ class UpdatePerfexCRMProcessor } $result = $this->fetchesPerfexCRMTask->execute($taskName, $milestoneId, 'project', $projectId, $updatePerfexCRMObject->getInvoiceId()); - // Log::info("UpdatePerfexCRMProcessor task: ".json_encode($taskStatus)." , ".json_encode($result)); + Log::error("UpdatePerfexCRMProcessor task: ".$taskName." , ".json_encode($result)); if(isset($result->payload)){ //&& $result->payload[0]['status'] == PerfexCRMTaskStatus::NOT_STARTED From 497ec941738a2a687cd18b65c8a80c5e02e20b0b Mon Sep 17 00:00:00 2001 From: Dillon Date: Tue, 8 Aug 2023 23:15:58 +0800 Subject: [PATCH 43/44] Debugging --- .../Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 9093321e..fbf64be8 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -217,7 +217,8 @@ class UpdatePerfexCRMProcessor } $result = $this->fetchesPerfexCRMTask->execute($taskName, $milestoneId, 'project', $projectId, $updatePerfexCRMObject->getInvoiceId()); - Log::error("UpdatePerfexCRMProcessor task: ".$taskName." , ".json_encode($result)); + // Log::error("UpdatePerfexCRMProcessor task: ".$taskName." , ".json_encode($result)); + Log::error("UpdatePerfexCRMProcessor task: ".$taskName); if(isset($result->payload)){ //&& $result->payload[0]['status'] == PerfexCRMTaskStatus::NOT_STARTED From 0b597b473ee0a67dfd48cc546daacfa7acad1ae9 Mon Sep 17 00:00:00 2001 From: Dillon Date: Wed, 9 Aug 2023 01:41:02 +0800 Subject: [PATCH 44/44] Debugging --- .../PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php index 7ec712c6..8494f61e 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessorV2.php @@ -24,6 +24,8 @@ class TransactionToPerfexCRMProcessorV2 $projectName = 'Exchange | ' . $bookingInfo['serviceTypeName'] . ' | ' . $bookingInfo['bookingMarking']; $tasks = $this->defineTasks($model, $status); + Log::error("TransactionToPerfexCRMProcessorV2 status: ".$status." - for project name: ".$projectName); + if(count($tasks) > 0) { $updatePerfexCRMObject = new UpdatePerfexCRMObject( $bookingInfo['companyName'],