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/UpdatePerfexCRM.php b/app/Classes/Jobs/UpdatePerfexCRM.php index 93f536c5..51ec264f 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 - $this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceId()); + $this->updatePerfexCRMObject->setInvoiceId($this->getInvoiceIdOrCreateInvoice()); $result = (App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject); if($this->transaction != null && $this->shouldCreateInvoice){ @@ -59,12 +60,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/Jobs/UpdatePerfexCRMInvoice.php b/app/Classes/Jobs/UpdatePerfexCRMInvoice.php index e9094f84..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, $this->updatePerfexCRMInvoiceObject->getIsPaid()); + $result = (App()->make(CreatePerfexCRMInvoiceProcessor::class))->execute($transaction); if ($result) { $invoiceId = $result->payload['id']; } else { 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 2bd95920..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; @@ -120,7 +113,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; } @@ -229,26 +221,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/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/FetchPerfexCRMInvoiceProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/FetchPerfexCRMInvoiceProcessor.php
index ddf0ee55..4c8ee9bf 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());
+ $result = $this->createPerfexCRMInvoiceProcessor->execute($transaction);
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/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'],
diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php
index 2971e3c8..fbf64be8 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;
@@ -203,12 +203,22 @@ class UpdatePerfexCRMProcessor
}
// Get existing or create task
- $taskName = $tasks[$count]['name'];;
- if($updatePerfexCRMObject->getInvoiceId() != 0){
+ $taskName = $tasks[$count]['name'];
+ $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 && $taskIsOnTaskCompletionUpdate){
+ $taskOnTaskCompletion = $taskOnTaskCompletion."_".$updatePerfexCRMObject->getInvoiceId();
+ }
}
+
$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));
+ Log::error("UpdatePerfexCRMProcessor task: ".$taskName);
if(isset($result->payload)){
//&& $result->payload[0]['status'] == PerfexCRMTaskStatus::NOT_STARTED
@@ -219,13 +229,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,
+ $taskReference,
+ $taskOnTaskCompletion,
+ $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([
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());
}
}
diff --git a/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php b/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php
index 4129f2a8..1d26c9d3 100644
--- a/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php
+++ b/app/Classes/ValueObjects/Constants/PerfexCRMTasks.php
@@ -13,7 +13,9 @@ class PerfexCRMTasks
'department' => '',
'status' => PerfexCRMTaskStatus::COMPLETED,
'priority' => PerfexCRMTaskPriority::DEFAULT,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1_DAY_TRANSFER_1 = [
@@ -27,7 +29,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1_DAY_TRANSFER_2 = [
'name' => 'Approve Payment',
@@ -47,7 +51,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => true,
+ 'is_on_task_completion_update' => true
];
public const TASK_1_DAY_TRANSFER_3 = [
'name' => 'Issue Exchange Autocount Invoince',
@@ -65,7 +71,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1_DAY_TRANSFER_3_1 = [
'name' => 'Issue Exchange Autocount OR',
@@ -76,7 +84,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1_DAY_TRANSFER_4 = [
'name' => 'Knockoff Invoice',
@@ -94,7 +104,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1_DAY_TRANSFER_5 = [
'name' => 'Order Placed in White Form',
@@ -114,7 +126,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => true,
+ 'is_on_task_completion_update' => true
];
public const TASK_1_DAY_TRANSFER_6 = [
'name' => 'Upload China Bank Slip',
@@ -132,7 +146,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => true,
+ 'is_on_task_completion_update' => true
];
public const TASK_3_DAY_TRANSFER_1 = [
@@ -151,7 +167,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_3_DAY_TRANSFER_2 = [
'name' => 'Approve Payment',
@@ -164,7 +182,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => true,
+ 'is_on_task_completion_update' => true
];
public const TASK_3_DAY_TRANSFER_3 = [
'name' => 'Issue Exchange Autocount Invoince',
@@ -182,7 +202,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_3_DAY_TRANSFER_3_1 = [
'name' => 'Issue Exchange Autocount OR',
@@ -193,7 +215,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_3_DAY_TRANSFER_4 = [
'name' => 'Knockoff Invoice',
@@ -211,7 +235,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_3_DAY_TRANSFER_5 = [
'name' => 'Order Placed in White Form',
@@ -231,7 +257,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => true,
+ 'is_on_task_completion_update' => true
];
public const TASK_3_DAY_TRANSFER_6 = [
'name' => 'Upload China Bank Slip',
@@ -249,7 +277,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => true,
+ 'is_on_task_completion_update' => true
];
@@ -270,7 +300,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1688_PAYMENT_2 = [
'name' => 'Approve Payment',
@@ -290,7 +322,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1688_PAYMENT_3 = [
'name' => 'Issue Exchange Autocount Invoice',
@@ -308,7 +342,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1688_PAYMENT_3_1 = [
'name' => 'Issue Exchange Autocount OR',
@@ -320,7 +356,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1688_PAYMENT_4 = [
'name' => 'Knockoff Invoice',
@@ -338,7 +376,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1688_PAYMENT_5 = [
'name' => 'Order Placed in White Form',
@@ -357,7 +397,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1688_PAYMENT_6 = [
'name' => 'Send White Form to Operation Department',
@@ -375,7 +417,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1688_PAYMENT_7 = [
'name' => 'Authorize Customer\'s 1688 Account',
@@ -395,7 +439,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => true,
+ 'is_on_task_completion_update' => true
];
public const TASK_1688_PAYMENT_8 = [
'name' => 'Make Payment for Customer 1688 Order',
@@ -410,7 +456,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => true,
+ 'is_on_task_completion_update' => true
];
public const TASK_1688_PAYMENT_9 = [
'name' => 'Upload China Bank Slip',
@@ -422,7 +470,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => true,
+ 'is_on_task_completion_update' => true
];
public const TASK_1688_PAYMENT_10 = [
'name' => 'Upload 1688 Purchase Order PDF',
@@ -434,7 +484,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => true,
+ 'is_on_task_completion_update' => false
];
public const TASK_1688_PAYMENT_11 = [
'name' => 'Fill Up Purchase Order',
@@ -446,7 +498,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::LOW,
- 'duedate' => 7
+ 'duedate' => 7,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1688_PAYMENT_12 = [
'name' => 'Approve Purchase Order',
@@ -458,7 +512,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::LOW,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_1688_PAYMENT_13 = [
'name' => 'Complete Order bookkeeping',
@@ -476,7 +532,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
@@ -497,7 +555,9 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::LOW,
- 'duedate' => 1
+ 'duedate' => 1,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
public const TASK_PURCHASE_ORDER_2 = [
@@ -510,7 +570,9 @@ class PerfexCRMTasks
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
@@ -530,6 +592,8 @@ class PerfexCRMTasks
'department' => 'Operations',
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::DEFAULT,
- 'duedate' => 0
+ 'duedate' => 0,
+ 'is_allow_multiple' => false,
+ 'is_on_task_completion_update' => false
];
}
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);
+ }
+}
diff --git a/resources/views/pages/pdfs/deliver_order.blade.php b/resources/views/pages/pdfs/deliver_order.blade.php
index ba30bc68..c59cc5a9 100644
--- a/resources/views/pages/pdfs/deliver_order.blade.php
+++ b/resources/views/pages/pdfs/deliver_order.blade.php
@@ -69,6 +69,7 @@
| No | @@ -81,34 +82,37 @@||||||
|---|---|---|---|---|---|---|
| {{ $key + 1 }} | {{ $transaction_detail->product_code }} | {{ $transaction_detail->product_name }} | {{ $transaction_detail->quantity }} | - @php - $unitPrice = $transaction_detail->price / $currencyRate; - @endphp - {{ number_format($unitPrice, 2) }} + {{ number_format($exactUnitPrice, 2) }} | - @php - $itemTotal = $unitPrice * $transaction_detail->quantity; - $subtotal += $itemTotal; - @endphp {{ number_format($itemTotal, 2) }} | |
| Subtotal | @@ -117,27 +121,17 @@||||||
| Service Charges | -- {{ number_format($transaction->service_charge, 2) }} - | +{{ number_format($transaction->service_charge, 2) }} | ||||
| Voucher ({{ $voucher_redemption->voucher->code }}) | --{{ $voucherDiscount }} | +-{{ number_format($voucherDiscount, 2) }} | ||||
| - | Adjustment | -- @php - $adjustment = $transaction->amount - $subtotal; - @endphp - {{ number_format($adjustment, 2) }} - | -||||
| @@ -145,13 +139,21 @@ | {{ number_format($transaction->tax, 2) }} | |||||
| + | Adjustment | +{{ roundUpDo($discrepancy,2) }} | +||||
| Total | - @php - $total = $subtotal + $transaction->service_charge + $transaction->tax + $voucherDiscount; - @endphp {{ number_format($total, 2) }} | |||||
|
-
-
- CIEF WORLDWIDE SDN BHD
-
-
+ CIEF WORLDWIDE SDN BHD
(1134596-M) No. 72-3, Jalan Jalil 1, The Earth Bukit Jalil, @@ -23,14 +23,8 @@ Tel: 03-8082 1252 |
-
-
- Invoice
-
-
-
+ Invoice
EI#: {{ $transaction->bill_no }}
-
Ref# {{ $po_order_transaction->booking->marking }}
Date: {{ $supplier->segments->whereIn('id', [23])->first() ? \Carbon\Carbon::now() : $po_order_transaction->booking->created_at }}
|
| - - Bill To - + Bill To | ||
|
-
- {{ $supplier->name }}
-
+ {{ $supplier->name }}
+ @php
+ $billingAddress = $supplier->addresses()->where('billing', '=', true)->first();
+ @endphp
- @php
- $billingAddress = $supplier->addresses()->where('billing', '=', true)->first();
- @endphp
{{ $billingAddress->street_one }}
- {{ $billingAddress->street_two }} ,
+ {{ $billingAddress->street_two }},
{{ $billingAddress->district()->first()->name }},
{{ $billingAddress->postcode }}
{{ $billingAddress->state()->first()->name }},
{{ $billingAddress->country()->first()->name }}
-
- Phone: {{ $supplier->contacts()->first()->phone }}
-
+ Phone: {{ $supplier->contacts()->first()->phone }}
|
||
| No | @@ -81,35 +72,37 @@||||||
|---|---|---|---|---|---|---|
| {{ $key + 1 }} | {{ $transaction_detail->product_code }} | {{ $transaction_detail->product_name }} | {{ $transaction_detail->quantity }} | - @php - $unitPrice = $transaction_detail->price / $currencyRate; - @endphp - {{ number_format($unitPrice, 2) }} + {{ number_format($exactUnitPrice, 2) }} | - @php - $itemTotal = $unitPrice * $transaction_detail->quantity; - $subtotal += $itemTotal; - @endphp {{ number_format($itemTotal, 2) }} | |
| Subtotal | @@ -120,23 +113,15 @@Service Charges | {{ number_format($transaction->service_charge, 2) }} | ||||
| Voucher ({{ $voucher_redemption->voucher->code }}) | --{{ $voucherDiscount }} | +-{{ number_format($voucherDiscount, 2) }} | ||||
| - | Adjustment | -- @php - $adjustment = $transaction->amount - $subtotal; - @endphp - {{ number_format($adjustment, 2) }} - | -||||
| @@ -144,24 +129,59 @@ | {{ number_format($transaction->tax, 2) }} | |||||
| + | Adjustment | +{{ roundUp($discrepancy,2) }} | +||||
| Total | - @php - $total = $subtotal + $transaction->service_charge + $transaction->tax + $voucherDiscount; - @endphp {{ number_format($total, 2) }} | |||||
| This is generated by computer. No signature required. | -Page {PAGENO} of {nbpg} | -
| No | @@ -89,34 +90,37 @@||||||
|---|---|---|---|---|---|---|
| {{ $key + 1 }} | {{ $transaction_detail->product_code }} | {{ $transaction_detail->product_name }} | {{ $transaction_detail->quantity }} | - @php - $unitPrice = $transaction_detail->price / $currencyRate; - @endphp - {{ number_format($unitPrice, 2) }} + {{ number_format($exactUnitPrice, 2) }} | - @php - $itemTotal = $unitPrice * $transaction_detail->quantity; - $subtotal += $itemTotal; - @endphp {{ number_format($itemTotal, 2) }} | |
| Subtotal | @@ -125,27 +129,17 @@||||||
| Service Charges | -- {{ number_format($transaction->service_charge, 2) }} - | +{{ number_format($transaction->service_charge, 2) }} | ||||
| Voucher ({{ $voucher_redemption->voucher->code }}) | --{{ $voucherDiscount }} | +-{{ number_format($voucherDiscount, 2) }} | ||||
| - | Adjustment | -- @php - $adjustment = $transaction->amount - $subtotal; - @endphp - {{ number_format($adjustment, 2) }} - | -||||
| @@ -153,13 +147,21 @@ | {{ number_format($transaction->tax, 2) }} | |||||
| + | Adjustment | +{{ roundUpPo($discrepancy,2) }} | +||||
| Total | - @php - $total = $subtotal + $transaction->service_charge + $transaction->tax + $voucherDiscount; - @endphp {{ number_format($total, 2) }} | |||||