Merge branch 'dillon/crm-create-task-3-26' into development

This commit is contained in:
Dillon
2023-03-23 04:20:37 +08:00
8 changed files with 181 additions and 265 deletions
-33
View File
@@ -1,33 +0,0 @@
<?php
namespace App\Classes\Jobs;
use App\Classes\Modules\PerfexCRM\Processors\InitializePerfexCRMProcessor;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InitialPerfexCRMObject;
class InitializePerfexCRM implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/** @var InitialPerfexCRMObject */
private $initialPerfexCRMObject;
/**
* InitializePerfexCRM constructor.
* @param InitialPerfexCRMObject $initialPerfexCRMObject
*/
public function __construct(InitialPerfexCRMObject $initialPerfexCRMObject)
{
$this->initialPerfexCRMObject = $initialPerfexCRMObject;
}
public function handle()
{
(App()->make(InitializePerfexCRMProcessor::class))->execute($this->initialPerfexCRMObject);
}
}
@@ -36,7 +36,13 @@ class CreateTaskPerfexCRMObject implements DataTransferObject
/** @var string */
private $department;
public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status, string $department)
/** @var string */
private $priority;
/** @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)
{
$this->email = $email;
$this->name = $name;
@@ -48,6 +54,8 @@ class CreateTaskPerfexCRMObject implements DataTransferObject
$this->onTaskCompletion = $onTaskCompletion;
$this->status = $status;
$this->department = $department;
$this->priority = $priority;
$this->duedate = $duedate;
}
/**
@@ -134,4 +142,20 @@ class CreateTaskPerfexCRMObject implements DataTransferObject
{
return $this->department;
}
/**
* @return string
*/
public function getPriority(): string
{
return $this->priority;
}
/**
* @return string
*/
public function getDuedate(): string
{
return $this->duedate;
}
}
@@ -35,6 +35,8 @@ class CreatePerfexCRMTaskProcessor
$createTaskPerfexCRMObject->getOnTaskCompletion(),
$createTaskPerfexCRMObject->getDepartment(),
$createTaskPerfexCRMObject->getStatus(),
$createTaskPerfexCRMObject->getPriority(),
$createTaskPerfexCRMObject->getDuedate(),
);
return true;
}
@@ -1,195 +0,0 @@
<?php
namespace App\Classes\Modules\PerfexCRM\Processors;
use App\Classes\Modules\PerfexCRM\Services\ConvertsPerfexCRMLeadToCustomer;
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomerProject;
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMMilestone;
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMTask;
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMProject;
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMMilestone;
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMTask;
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomer;
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomerContact;
use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMCustomer;
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CustomerContactObject;
use App\Classes\Exceptions\MalformedRequestException;
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InitialPerfexCRMObject;
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
use App\Classes\ValueObjects\Constants\PerfexCRMMilestones;
use App\Classes\ValueObjects\Constants\PerfexCRMTasks;
use App\Classes\ValueObjects\Constants\PerfexCRMTaskStatus;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Http\Request;
class InitializePerfexCRMProcessor
{
/** @var ConvertsPerfexCRMLeadToCustomer */
private $convertsPerfexCRMLeadToCustomer;
/** @var CreatesPerfexCRMCustomerProject */
private $createsPerfexCRMCustomerProject;
/** @var CreatesPerfexCRMMilestone */
private $createsPerfexCRMMilestone;
/** @var CreatesPerfexCRMTask */
private $createsPerfexCRMTask;
/** @var FetchesPerfexCRMProject */
private $fetchesPerfexCRMProject;
/** @var FetchesPerfexCRMMilestone */
private $fetchesPerfexCRMMilestone;
/** @var FetchesPerfexCRMTask */
private $fetchesPerfexCRMTask;
/** @var CreatesPerfexCRMCustomer */
private $createsPerfexCRMCustomer;
/** @var CreatesPerfexCRMCustomerContact */
private $createsPerfexCRMCustomerContact;
/** @var UpdatesPerfexCRM */
private $updatePerfexCRM;
/** @var UpdatesPerfexCRMCustomer */
private $updatesPerfexCRMCustomer;
/**
* @param ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer
* @param CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject
* @param CreatesPerfexCRMMilestone $createsPerfexCRMMilestone
* @param CreatesPerfexCRMTask $createsPerfexCRMTask
* @param FetchesPerfexCRMProject $fetchesPerfexCRMProject
* @param FetchesPerfexCRMMilestone $fetchesPerfexCRMMilestone
* @param FetchesPerfexCRMTask $fetchesPerfexCRMTask
* @param CreatesPerfexCRMCustomer $createsPerfexCRMCustomer
* @param CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact
* @param UpdatesPerfexCRMCustomer $updatesPerfexCRMCustomer
*/
public function __construct(ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer,
CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject,
CreatesPerfexCRMMilestone $createsPerfexCRMMilestone,
CreatesPerfexCRMTask $createsPerfexCRMTask,
FetchesPerfexCRMProject $fetchesPerfexCRMProject,
FetchesPerfexCRMMilestone $fetchesPerfexCRMMilestone,
FetchesPerfexCRMTask $fetchesPerfexCRMTask,
CreatesPerfexCRMCustomer $createsPerfexCRMCustomer,
CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact,
UpdatesPerfexCRMCustomer $updatesPerfexCRMCustomer)
{
$this->convertsPerfexCRMLeadToCustomer = $convertsPerfexCRMLeadToCustomer;
$this->createsPerfexCRMCustomerProject = $createsPerfexCRMCustomerProject;
$this->createsPerfexCRMMilestone = $createsPerfexCRMMilestone;
$this->createsPerfexCRMTask = $createsPerfexCRMTask;
$this->fetchesPerfexCRMProject = $fetchesPerfexCRMProject;
$this->fetchesPerfexCRMMilestone = $fetchesPerfexCRMMilestone;
$this->fetchesPerfexCRMTask = $fetchesPerfexCRMTask;
$this->createsPerfexCRMCustomer = $createsPerfexCRMCustomer;
$this->createsPerfexCRMCustomerContact = $createsPerfexCRMCustomerContact;
$this->updatesPerfexCRMCustomer = $updatesPerfexCRMCustomer;
}
/**
* @param InitialPerfexCRMObject $initialPerfexCRMObject
* @return null|object
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
public function execute(InitialPerfexCRMObject $initialPerfexCRMObject) {
// Customer has to exist first before Project can appear under it
// Check with Perfex CRM, if this user (email) was previously a lead, should automatically now become a customer
$crmCompany = $initialPerfexCRMObject->getCompanyName();
$result = $this->convertsPerfexCRMLeadToCustomer->execute($initialPerfexCRMObject->getContactEmail());
if(isset($result->payload)){
$crmClientId = $result->payload['client_id'];
if (isset($result->payload['company'])) {
$crmCompany = $result->payload['company'];
}
}
else{
//if reach this point, this means this user is not a official customer nor is a lead in crm
//Create Customer has 2 parts: Create Company (client), Create Contact
$result = $this->createsPerfexCRMCustomer->execute($crmCompany);
if(is_null($result)){
$crmCompany = $crmCompany." 2";
$result = $this->createsPerfexCRMCustomer->execute($crmCompany);
}
$crmClientId = $result->payload['clientId'];
$customerContactObject = new CustomerContactObject(
$crmClientId,
$initialPerfexCRMObject->getContactName(),
$initialPerfexCRMObject->getContactName(),
$initialPerfexCRMObject->getContactEmail(),
"pU^T@sC#9Q",
"on",
"on"
);
$result = $this->createsPerfexCRMCustomerContact->execute($customerContactObject);
}
//Update custom fields to identify company reference from exchange or shipping portal
$value_exists = false;
if (isset($result->payload['customfields'])) {
foreach ($result->payload['customfields'] as $element) {
if ($element['value'] === $initialPerfexCRMObject->getCompanyReference()) {
$value_exists = true;
break;
}
}
}
if(!$value_exists);
{
$result = $this->updatesPerfexCRMCustomer->execute($crmClientId, $crmCompany, $initialPerfexCRMObject->getCompanyReference());
}
// Get existing or create project, project has to exist first before milestone can appear under it
$result = $this->createsPerfexCRMCustomerProject->execute($initialPerfexCRMObject->getProjectName(), $initialPerfexCRMObject->getProjectStatus(), $crmClientId);
if(isset($result->payload)){ //Here means project creation successful
$projectId = $result->payload['project_id'];
}
else{
$projectId = $this->fetchesPerfexCRMProject->execute($initialPerfexCRMObject->getProjectName(), $crmClientId)->id;
}
$tasks = $initialPerfexCRMObject->getTaskNames();
if(count($tasks) > 0){
//Create tasks with milestone
for($count=0; $count < count($tasks); $count++) {
$milestoneId = 0; //By default milestoneId is 0, having this set at individual task is optional
if($tasks[$count]['milestone'] != "") //Create milestone only if it is defined
{
// Get existing or create milestone, milestone has to exist first before task can appear under it
$result = $this->createsPerfexCRMMilestone->execute($tasks[$count]['milestone'], $projectId, $count);
if(isset($result->payload)){
$milestoneId = $result->payload['milestone_id'];
}
else{
$milestone = $this->fetchesPerfexCRMMilestone->execute($tasks[$count]['milestone'], $projectId);
$array = json_decode(json_encode($milestone), true);
$milestoneId = $array[0]['id'];
}
}
$taskStatus = PerfexCRMTaskStatus::NOT_STARTED;
if($tasks[$count]['status'] != ''){
$taskStatus = $tasks[$count]['status'];
}
// Get existing or create task
$result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $tasks[$count]['department'], $taskStatus);
if(is_null($result)){
break; //Breaking the rest of the tasks in array assuming that they are all created as a batch previously
}
}
}
return true;
}
}
@@ -214,7 +214,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);
$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']);
}
//cief todo: to evaluate if this is still needed
@@ -15,13 +15,16 @@ class CreatesPerfexCRMTask
* @param string $leadId
* @param string $milestoneId
* @param string $projectId
* @param string $reference, default: ''
* @param string $on_task_completion, default: ''
* @param string $status, default: 1
* @param string $reference
* @param string $on_task_completion
* @param string $department
* @param string $status
* @param string $priority
* @param string $duedate
* @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 = "1") {
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) {
try{
$custom_fields = [];
if($department != ""){
@@ -43,7 +46,9 @@ class CreatesPerfexCRMTask
'is_system_created' => 1,
'reference' => $reference,
'on_task_completion' => $on_task_completion,
'custom_fields' => $custom_fields
'custom_fields' => $custom_fields,
'priority' => $priority,
'duedate' => date('Y-m-d', strtotime('+' . $duedate . ' days')),
];
if($leadId != '') {
@@ -58,7 +63,9 @@ class CreatesPerfexCRMTask
'is_system_created' => 1,
'reference' => $reference,
'on_task_completion' => $on_task_completion,
'custom_fields' => $custom_fields
'custom_fields' => $custom_fields,
'priority' => $priority,
'duedate' => date('Y-m-d', strtotime('+' . $duedate . ' days')),
];
}
@@ -0,0 +1,17 @@
<?php
namespace App\Classes\ValueObjects\Constants;
final class PerfexCRMTaskPriority {
public const DEFAULT = 0;
public const LOW = 1;
public const MEDIUM = 2;
public const HIGH = 3;
public const URGENT = 4;
}
@@ -11,7 +11,9 @@ class PerfexCRMTasks
'reference' => '',
'on_task_completion' => '',
'department' => '',
'status' => PerfexCRMTaskStatus::COMPLETED
'status' => PerfexCRMTaskStatus::COMPLETED,
'priority' => PerfexCRMTaskPriority::DEFAULT,
'duedate' => 0
];
public const TASK_1_DAY_TRANSFER_1 = [
@@ -28,7 +30,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1_DAY_TRANSFER_1',
'on_task_completion' => 'TASK_1_DAY_TRANSFER_2',
'department' => 'Accounts',
'status' => PerfexCRMTaskStatus::IN_PROGRESS
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 0
];
public const TASK_1_DAY_TRANSFER_2 = [
'name' => 'Approve Payment',
@@ -46,7 +50,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1_DAY_TRANSFER_2',
'on_task_completion' => 'TASK_1_DAY_TRANSFER_3,TASK_1_DAY_TRANSFER_5',
'department' => 'Accounts',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 0
];
public const TASK_1_DAY_TRANSFER_3 = [
'name' => 'Issue Exchange Autocount Invoince',
@@ -62,7 +68,21 @@ class PerfexCRMTasks
'reference' => 'TASK_1_DAY_TRANSFER_3',
'on_task_completion' => 'TASK_1_DAY_TRANSFER_4',
'department' => 'Accounts',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
'duedate' => 1
];
public const TASK_1_DAY_TRANSFER_3_1 = [
'name' => 'Issue Exchange Autocount OR',
'description' => '○ Purpose:
○ Outcomes: An invoice will be issued in accounting software for the customer\'s payment.<br>',
'milestone' => '',
'reference' => 'TASK_1_DAY_TRANSFER_3_1',
'on_task_completion' => 'TASK_1_DAY_TRANSFER_4',
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
'duedate' => 0
];
public const TASK_1_DAY_TRANSFER_4 = [
'name' => 'Knockoff Invoice',
@@ -78,7 +98,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1_DAY_TRANSFER_4',
'on_task_completion' => 'TASK_1_DAY_TRANSFER_5',
'department' => 'Accounts',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
'duedate' => 1
];
public const TASK_1_DAY_TRANSFER_5 = [
'name' => 'Order Placed in White Form',
@@ -94,7 +116,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1_DAY_TRANSFER_5',
'on_task_completion' => 'TASK_1_DAY_TRANSFER_6',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 0
];
public const TASK_1_DAY_TRANSFER_6 = [
'name' => 'Upload China Bank Slip',
@@ -110,7 +134,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1_DAY_TRANSFER_6',
'on_task_completion' => '',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
'duedate' => 1
];
public const TASK_3_DAY_TRANSFER_1 = [
@@ -127,7 +153,9 @@ class PerfexCRMTasks
'reference' => 'TASK_3_DAY_TRANSFER_1',
'on_task_completion' => 'TASK_3_DAY_TRANSFER_2',
'department' => 'Accounts',
'status' => PerfexCRMTaskStatus::IN_PROGRESS
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 0
];
public const TASK_3_DAY_TRANSFER_2 = [
'name' => 'Approve Payment',
@@ -145,7 +173,9 @@ class PerfexCRMTasks
'reference' => 'TASK_3_DAY_TRANSFER_2',
'on_task_completion' => 'TASK_3_DAY_TRANSFER_3,TASK_3_DAY_TRANSFER_5',
'department' => 'Accounts',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 0
];
public const TASK_3_DAY_TRANSFER_3 = [
'name' => 'Issue Exchange Autocount Invoince',
@@ -159,9 +189,23 @@ class PerfexCRMTasks
○ Outcomes: An invoice will be issued in accounting software for the customer\'s payment.<br>',
'milestone' => '',
'reference' => 'TASK_3_DAY_TRANSFER_3',
'on_task_completion' => 'TASK_3_DAY_TRANSFER_3_1',
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
'duedate' => 1
];
public const TASK_3_DAY_TRANSFER_3_1 = [
'name' => 'Issue Exchange Autocount OR',
'description' => '○ Purpose:
○ Outcomes: An invoice will be issued in accounting software for the customer\'s payment.<br>',
'milestone' => '',
'reference' => 'TASK_3_DAY_TRANSFER_3_1',
'on_task_completion' => 'TASK_3_DAY_TRANSFER_4',
'department' => 'Accounts',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
'duedate' => 0
];
public const TASK_3_DAY_TRANSFER_4 = [
'name' => 'Knockoff Invoice',
@@ -177,7 +221,9 @@ class PerfexCRMTasks
'reference' => 'TASK_3_DAY_TRANSFER_4',
'on_task_completion' => 'TASK_3_DAY_TRANSFER_5',
'department' => 'Accounts',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
'duedate' => 1
];
public const TASK_3_DAY_TRANSFER_5 = [
'name' => 'Order Placed in White Form',
@@ -193,7 +239,9 @@ class PerfexCRMTasks
'reference' => 'TASK_3_DAY_TRANSFER_5',
'on_task_completion' => 'TASK_3_DAY_TRANSFER_6',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 0
];
public const TASK_3_DAY_TRANSFER_6 = [
'name' => 'Upload China Bank Slip',
@@ -209,7 +257,9 @@ class PerfexCRMTasks
'reference' => 'TASK_3_DAY_TRANSFER_6',
'on_task_completion' => '',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
'duedate' => 1
];
@@ -228,7 +278,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_1',
'on_task_completion' => 'TASK_1688_PAYMENT_2',
'department' => 'Accounts',
'status' => PerfexCRMTaskStatus::IN_PROGRESS
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 0
];
public const TASK_1688_PAYMENT_2 = [
'name' => 'Approve Payment',
@@ -246,7 +298,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_2',
'on_task_completion' => 'TASK_1688_PAYMENT_3,TASK_1688_PAYMENT_5',
'department' => 'Accounts',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 0
];
public const TASK_1688_PAYMENT_3 = [
'name' => 'Issue Exchange Autocount Invoice',
@@ -262,7 +316,21 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_3',
'on_task_completion' => 'TASK_1688_PAYMENT_4',
'department' => 'Accounts',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
'duedate' => 1
];
public const TASK_1688_PAYMENT_3_1 = [
'name' => 'Issue Exchange Autocount OR',
'description' => '○ Purpose:
○ Outcomes: An invoice will be issued in accounting software for the customer\'s payment.<br>',
'milestone' => '',
'reference' => 'TASK_1688_PAYMENT_3_1',
'on_task_completion' => 'TASK_1688_PAYMENT_4',
'department' => 'Accounts',
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
'duedate' => 0
];
public const TASK_1688_PAYMENT_4 = [
'name' => 'Knockoff Invoice',
@@ -278,7 +346,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_4',
'on_task_completion' => 'TASK_1688_PAYMENT_5',
'department' => 'Accounts',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
'duedate' => 1
];
public const TASK_1688_PAYMENT_5 = [
'name' => 'Order Placed in White Form',
@@ -295,7 +365,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_5',
'on_task_completion' => 'TASK_1688_PAYMENT_6',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 0
];
public const TASK_1688_PAYMENT_6 = [
'name' => 'Send White Form to Operation Department',
@@ -311,7 +383,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_6',
'on_task_completion' => 'TASK_1688_PAYMENT_7',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
'duedate' => 0
];
public const TASK_1688_PAYMENT_7 = [
'name' => 'Authorize Customer\'s 1688 Account',
@@ -329,7 +403,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_7',
'on_task_completion' => 'TASK_1688_PAYMENT_8',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 1
];
public const TASK_1688_PAYMENT_8 = [
'name' => 'Make Payment for Customer 1688 Order',
@@ -345,7 +421,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_8',
'on_task_completion' => 'TASK_1688_PAYMENT_9',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::HIGH,
'duedate' => 1
];
public const TASK_1688_PAYMENT_9 = [
'name' => 'Upload China Bank Slip',
@@ -361,7 +439,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_9',
'on_task_completion' => 'TASK_1688_PAYMENT_10',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
'duedate' => 1
];
public const TASK_1688_PAYMENT_10 = [
'name' => 'Upload 1688 Purchase Order PDF',
@@ -377,7 +457,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_10',
'on_task_completion' => 'TASK_1688_PAYMENT_11',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::MEDIUM,
'duedate' => 1
];
public const TASK_1688_PAYMENT_11 = [
'name' => 'Fill Up Purchase Order',
@@ -393,7 +475,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_11',
'on_task_completion' => 'TASK_1688_PAYMENT_12',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::LOW,
'duedate' => 7
];
public const TASK_1688_PAYMENT_12 = [
'name' => 'Approve Purchase Order',
@@ -409,7 +493,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_12',
'on_task_completion' => 'TASK_1688_PAYMENT_13',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::LOW,
'duedate' => 1
];
public const TASK_1688_PAYMENT_13 = [
'name' => 'Complete Order bookeeping',
@@ -425,7 +511,9 @@ class PerfexCRMTasks
'reference' => 'TASK_1688_PAYMENT_13',
'on_task_completion' => '',
'department' => 'Operations',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
'duedate' => 0
];
@@ -444,7 +532,9 @@ class PerfexCRMTasks
'reference' => 'TASK_PURCHASE_ORDER_1',
'on_task_completion' => 'TASK_PURCHASE_ORDER_2',
'department' => 'Operations',
'status' => PerfexCRMTaskStatus::IN_PROGRESS
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::LOW,
'duedate' => 1
];
public const TASK_PURCHASE_ORDER_2 = [
@@ -461,7 +551,9 @@ class PerfexCRMTasks
'reference' => 'TASK_PURCHASE_ORDER_2',
'on_task_completion' => '',
'department' => 'Accounts',
'status' => ''
'status' => '',
'priority' => PerfexCRMTaskPriority::DEFAULT,
'duedate' => 0
];
@@ -479,6 +571,8 @@ class PerfexCRMTasks
'reference' => 'TASK_IDENTIFICATION_1',
'on_task_completion' => '',
'department' => 'Operations',
'status' => PerfexCRMTaskStatus::IN_PROGRESS
'status' => PerfexCRMTaskStatus::IN_PROGRESS,
'priority' => PerfexCRMTaskPriority::DEFAULT,
'duedate' => 0
];
}