mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-26 07:53:58 +00:00
remove accounting tasks from auto generated tasks temporarily until ready
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\PerfexCRM\Processors;
|
||||
|
||||
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
||||
use App\Classes\ValueObjects\Constants\PerfexCRMTasks;
|
||||
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\Transaction;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class TransactionToPerfexCRMProcessorV2
|
||||
{
|
||||
public function execute(Transaction $model, int $status)
|
||||
{
|
||||
try {
|
||||
if($model->owner instanceof \App\Models\Booking) {
|
||||
$bookingInfo = $this->extractBookingInfo($model);
|
||||
$projectName = 'Exchange | ' . $bookingInfo['serviceTypeName'] . ' | ' . $bookingInfo['bookingMarking'];
|
||||
$tasks = $this->defineTasks($model, $status);
|
||||
|
||||
if(count($tasks) > 0) {
|
||||
$updatePerfexCRMObject = new UpdatePerfexCRMObject(
|
||||
$bookingInfo['companyName'],
|
||||
$bookingInfo['companyReference'],
|
||||
$bookingInfo['contactName'],
|
||||
$bookingInfo['contactEmail'],
|
||||
$bookingInfo['bookingMarking'],
|
||||
$projectName,
|
||||
PerfexCRMProjectStatus::IN_PROGRESS,
|
||||
[],
|
||||
$tasks
|
||||
);
|
||||
|
||||
$this->dispatchUpdateJob($model, $status, $updatePerfexCRMObject);
|
||||
}
|
||||
}
|
||||
} catch (\Exception $exception) {
|
||||
Log::error('TransactionToPerfexCRMProcessor debug:');
|
||||
Log::error($exception);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private function extractBookingInfo(Transaction $model): array
|
||||
{
|
||||
$bookingInfo = [];
|
||||
$bookingInfo['companyReference'] = $model->owner->company->reference;
|
||||
$bookingInfo['companyName'] = $model->owner->company->name;
|
||||
$bookingInfo['contactEmail'] = $model->owner->company->employees()->first()->email;
|
||||
$bookingInfo['contactName'] = $model->owner->company->employees()->first()->name;
|
||||
$bookingInfo['bookingMarking'] = $model->owner->marking;
|
||||
$bookingInfo['serviceTypeName'] = $model->owner->company->services()->where('id', $model->owner->service_id)->first()->name;
|
||||
|
||||
return $bookingInfo;
|
||||
}
|
||||
|
||||
private function defineTasks(Transaction $model, int $status): array
|
||||
{
|
||||
$tasks = [];
|
||||
|
||||
if($status == ApprovalStatus::APPROVED && $model->type == TransactionType::PAYMENT) {
|
||||
$tasks = $this->definePaymentTasks($model);
|
||||
} elseif($status == ApprovalStatus::PENDING_VERIFICATION && $model->type == TransactionType::PURCHASE_ORDER) {
|
||||
if($model->owner->service_id == 1 || $model->owner->service_id == 3) {
|
||||
$tasks = [PerfexCRMTasks::TASK_PURCHASE_ORDER_1, PerfexCRMTasks::TASK_PURCHASE_ORDER_2];
|
||||
}
|
||||
}
|
||||
|
||||
return $tasks;
|
||||
}
|
||||
|
||||
private function definePaymentTasks(Transaction $model): array
|
||||
{
|
||||
$tasks = [
|
||||
// PerfexCRMTasks::TASK_1
|
||||
];
|
||||
|
||||
if ($model->owner->service_id == 1) {
|
||||
$tasks = array_merge($tasks, $this->oneDayTransferTasks());
|
||||
} elseif ($model->owner->service_id == 3) {
|
||||
$tasks = array_merge($tasks, $this->threeDayTransferTasks());
|
||||
} elseif ($model->owner->service_id == 4) {
|
||||
$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());
|
||||
}
|
||||
}
|
||||
|
||||
return $tasks;
|
||||
}
|
||||
|
||||
private function oneDayTransferTasks(): array
|
||||
{
|
||||
return [
|
||||
// PerfexCRMTasks::TASK_1_DAY_TRANSFER_1,
|
||||
PerfexCRMTasks::TASK_1_DAY_TRANSFER_2,
|
||||
// PerfexCRMTasks::TASK_1_DAY_TRANSFER_3,
|
||||
// PerfexCRMTasks::TASK_1_DAY_TRANSFER_3_1,
|
||||
// PerfexCRMTasks::TASK_1_DAY_TRANSFER_4,
|
||||
PerfexCRMTasks::TASK_1_DAY_TRANSFER_5,
|
||||
PerfexCRMTasks::TASK_1_DAY_TRANSFER_6
|
||||
];
|
||||
}
|
||||
|
||||
private function threeDayTransferTasks(): array
|
||||
{
|
||||
return [
|
||||
// PerfexCRMTasks::TASK_3_DAY_TRANSFER_1,
|
||||
PerfexCRMTasks::TASK_3_DAY_TRANSFER_2,
|
||||
// PerfexCRMTasks::TASK_3_DAY_TRANSFER_3,
|
||||
// PerfexCRMTasks::TASK_3_DAY_TRANSFER_3_1,
|
||||
// PerfexCRMTasks::TASK_3_DAY_TRANSFER_4,
|
||||
PerfexCRMTasks::TASK_3_DAY_TRANSFER_5,
|
||||
PerfexCRMTasks::TASK_3_DAY_TRANSFER_6
|
||||
];
|
||||
}
|
||||
|
||||
private function payment1688Tasks(): array
|
||||
{
|
||||
return [
|
||||
// PerfexCRMTasks::TASK_1688_PAYMENT_1,
|
||||
PerfexCRMTasks::TASK_1688_PAYMENT_2,
|
||||
// PerfexCRMTasks::TASK_1688_PAYMENT_3,
|
||||
// PerfexCRMTasks::TASK_1688_PAYMENT_3_1,
|
||||
// PerfexCRMTasks::TASK_1688_PAYMENT_4,
|
||||
PerfexCRMTasks::TASK_1688_PAYMENT_5,
|
||||
// PerfexCRMTasks::TASK_1688_PAYMENT_6,
|
||||
PerfexCRMTasks::TASK_1688_PAYMENT_7,
|
||||
PerfexCRMTasks::TASK_1688_PAYMENT_8,
|
||||
PerfexCRMTasks::TASK_1688_PAYMENT_9,
|
||||
PerfexCRMTasks::TASK_1688_PAYMENT_10,
|
||||
PerfexCRMTasks::TASK_1688_PAYMENT_11,
|
||||
PerfexCRMTasks::TASK_1688_PAYMENT_12,
|
||||
PerfexCRMTasks::TASK_1688_PAYMENT_13
|
||||
];
|
||||
}
|
||||
|
||||
private function purchaseOrderTasks(): array
|
||||
{
|
||||
$potask1 = PerfexCRMTasks::TASK_PURCHASE_ORDER_1;
|
||||
$potask1['status'] = PerfexCRMTaskStatus::NOT_STARTED;
|
||||
|
||||
return [
|
||||
$potask1,
|
||||
// PerfexCRMTasks::TASK_PURCHASE_ORDER_2
|
||||
];
|
||||
}
|
||||
|
||||
private function dispatchUpdateJob(Transaction $model, int $status, UpdatePerfexCRMObject $updatePerfexCRMObject)
|
||||
{
|
||||
if($status == ApprovalStatus::APPROVED){
|
||||
UpdatePerfexCRMPrelude::dispatch($model, $updatePerfexCRMObject, UpdatePerfexCRM::class, UpdatePerfexCRMInvoice::class);
|
||||
} elseif($status == ApprovalStatus::PENDING_VERIFICATION){
|
||||
UpdatePerfexCRM::dispatch($updatePerfexCRMObject, null, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -43,9 +43,9 @@ class PerfexCRMTasks
|
||||
○ Outcomes: The payment will be approved in exchange, allowing the next steps in the process to be initiated.<br>',
|
||||
'milestone' => '',
|
||||
'reference' => 'TASK_1_DAY_TRANSFER_2',
|
||||
'on_task_completion' => 'TASK_1_DAY_TRANSFER_3,TASK_1_DAY_TRANSFER_5',
|
||||
'on_task_completion' => 'TASK_1_DAY_TRANSFER_5',
|
||||
'department' => 'Accounts',
|
||||
'status' => '',
|
||||
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
|
||||
'priority' => PerfexCRMTaskPriority::HIGH,
|
||||
'duedate' => 0
|
||||
];
|
||||
@@ -160,9 +160,9 @@ class PerfexCRMTasks
|
||||
○ Link to order page: {link_transfer}<br>',
|
||||
'milestone' => '',
|
||||
'reference' => 'TASK_3_DAY_TRANSFER_2',
|
||||
'on_task_completion' => 'TASK_3_DAY_TRANSFER_3,TASK_3_DAY_TRANSFER_5',
|
||||
'on_task_completion' => 'TASK_3_DAY_TRANSFER_5',
|
||||
'department' => 'Accounts',
|
||||
'status' => '',
|
||||
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
|
||||
'priority' => PerfexCRMTaskPriority::HIGH,
|
||||
'duedate' => 0
|
||||
];
|
||||
@@ -286,9 +286,9 @@ class PerfexCRMTasks
|
||||
○ Outcomes: The payment will be approved in exchange, allowing the next steps in the process to be initiated.<br>',
|
||||
'milestone' => '',
|
||||
'reference' => 'TASK_1688_PAYMENT_2',
|
||||
'on_task_completion' => 'TASK_1688_PAYMENT_3,TASK_1688_PAYMENT_5',
|
||||
'on_task_completion' => 'TASK_1688_PAYMENT_5',
|
||||
'department' => 'Accounts',
|
||||
'status' => '',
|
||||
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
|
||||
'priority' => PerfexCRMTaskPriority::HIGH,
|
||||
'duedate' => 0
|
||||
];
|
||||
@@ -353,7 +353,7 @@ class PerfexCRMTasks
|
||||
○ Outcomes: The order is placed with a supplier and the customer\'s order is confirmed.<br>',
|
||||
'milestone' => '',
|
||||
'reference' => 'TASK_1688_PAYMENT_5',
|
||||
'on_task_completion' => 'TASK_1688_PAYMENT_6',
|
||||
'on_task_completion' => 'TASK_1688_PAYMENT_7',
|
||||
'department' => 'Operations',
|
||||
'status' => '',
|
||||
'priority' => PerfexCRMTaskPriority::HIGH,
|
||||
@@ -454,14 +454,14 @@ class PerfexCRMTasks
|
||||
○ link: {link_transfer}<br>',
|
||||
'milestone' => '',
|
||||
'reference' => 'TASK_1688_PAYMENT_12',
|
||||
'on_task_completion' => 'TASK_1688_PAYMENT_13',
|
||||
'on_task_completion' => '',
|
||||
'department' => 'Operations',
|
||||
'status' => '',
|
||||
'priority' => PerfexCRMTaskPriority::LOW,
|
||||
'duedate' => 1
|
||||
];
|
||||
public const TASK_1688_PAYMENT_13 = [
|
||||
'name' => 'Complete Order bookeeping',
|
||||
'name' => 'Complete Order bookkeeping',
|
||||
'description' => '○ Purpose: To complete the bookkeeping for the booking.<br>
|
||||
○ Initial Status: Not Started<br>
|
||||
○ Deadline: Same day<br>
|
||||
@@ -493,7 +493,7 @@ class PerfexCRMTasks
|
||||
○ Outcomes: Bank transaction is mapped successfully, allowing the next steps in the process to be initiated.<br>',
|
||||
'milestone' => '',
|
||||
'reference' => 'TASK_PURCHASE_ORDER_1',
|
||||
'on_task_completion' => 'TASK_PURCHASE_ORDER_2',
|
||||
'on_task_completion' => '',
|
||||
'department' => 'Operations',
|
||||
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
|
||||
'priority' => PerfexCRMTaskPriority::LOW,
|
||||
|
||||
Reference in New Issue
Block a user