mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-27 00:14:05 +00:00
Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ba2bd59b04 | |||
| 981ec9bbeb | |||
| b293542321 | |||
| 18593cb959 | |||
| e2d1426d19 | |||
| d31deeb112 | |||
| d61a0c2104 | |||
| cbda7aa6ba | |||
| b5027c81f8 | |||
| e83e53a1d7 | |||
| 4058456797 | |||
| d03e34a1f4 | |||
| 5d79d5808a | |||
| e4464c3eb4 | |||
| e227abac59 | |||
| 997a9da276 | |||
| a810fcad59 | |||
| 9f4b04b9fb | |||
| 085692485a | |||
| 2b20160334 | |||
| 8a29f10ef3 | |||
| cb8d808562 | |||
| 130aca262a | |||
| 06ab1be86e | |||
| 53d076c7e5 | |||
| 1b84ccf60e | |||
| 515c71daa7 | |||
| a041a70d93 | |||
| d4c9899120 |
@@ -21,7 +21,6 @@ gox.iml
|
|||||||
rebuild_docker.sh
|
rebuild_docker.sh
|
||||||
docker/*
|
docker/*
|
||||||
db/*
|
db/*
|
||||||
docker-compose.yml
|
|
||||||
package-lock.json
|
package-lock.json
|
||||||
public/*
|
public/*
|
||||||
/public/*
|
/public/*
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Jobs;
|
||||||
|
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMLeadProcessor;
|
||||||
|
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\CreateLeadPerfexCRMObject;
|
||||||
|
|
||||||
|
class CreatePerfexCRMCustomer implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||||
|
|
||||||
|
/** @var CreateLeadPerfexCRMObject */
|
||||||
|
private $createLeadPerfexCRMObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CreatePerfexCRMCustomer constructor.
|
||||||
|
* @param CreateLeadPerfexCRMObject $createLeadPerfexCRMObject
|
||||||
|
*/
|
||||||
|
public function __construct(CreateLeadPerfexCRMObject $createLeadPerfexCRMObject)
|
||||||
|
{
|
||||||
|
$this->createLeadPerfexCRMObject = $createLeadPerfexCRMObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
(App()->make(CreatePerfexCRMLeadProcessor::class))->execute($this->createLeadPerfexCRMObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Jobs;
|
||||||
|
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMTaskProcessor;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMLead;
|
||||||
|
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\CreateTaskPerfexCRMObject;
|
||||||
|
|
||||||
|
class CreatePerfexCRMSingleTask implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||||
|
|
||||||
|
/** @var FetchesPerfexCRMLead */
|
||||||
|
private $fetchesPerfexCRMLead;
|
||||||
|
|
||||||
|
/** @var CreateTaskPerfexCRMObject */
|
||||||
|
private $createTaskPerfexCRMObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CreatePerfexCRMSingleTask constructor.
|
||||||
|
* @param CreateTaskPerfexCRMObject $createTaskPerfexCRMObject
|
||||||
|
*/
|
||||||
|
public function __construct(CreateTaskPerfexCRMObject $createTaskPerfexCRMObject)
|
||||||
|
{
|
||||||
|
$this->createTaskPerfexCRMObject = $createTaskPerfexCRMObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$lead = (App()->make(FetchesPerfexCRMLead::class))->execute($this->createTaskPerfexCRMObject->getEmail());
|
||||||
|
if(!is_null($lead))
|
||||||
|
{
|
||||||
|
$this->createTaskPerfexCRMObject->setLeadId($lead->id);
|
||||||
|
(App()->make(CreatePerfexCRMTaskProcessor::class))->execute($this->createTaskPerfexCRMObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Jobs;
|
||||||
|
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\UpdatePerfexCRMProcessor;
|
||||||
|
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\UpdatePerfexCRMObject;
|
||||||
|
|
||||||
|
class UpdatePerfexCRM implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||||
|
|
||||||
|
/** @var UpdatePerfexCRMObject */
|
||||||
|
private $updatePerfexCRMObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdatePerfexCRM constructor.
|
||||||
|
* @param UpdatePerfexCRMObject $updatePerfexCRMObject
|
||||||
|
*/
|
||||||
|
public function __construct(UpdatePerfexCRMObject $updatePerfexCRMObject)
|
||||||
|
{
|
||||||
|
$this->updatePerfexCRMObject = $updatePerfexCRMObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
(App()->make(UpdatePerfexCRMProcessor::class))->execute($this->updatePerfexCRMObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,23 +8,27 @@ use App\Classes\General\Services\GeneratesInitials;
|
|||||||
use App\Classes\Modules\Accounts\Processors\AuthenticationProcessor;
|
use App\Classes\Modules\Accounts\Processors\AuthenticationProcessor;
|
||||||
use App\Classes\Modules\Accounts\Processors\CreateUserProcessor;
|
use App\Classes\Modules\Accounts\Processors\CreateUserProcessor;
|
||||||
use App\Classes\Modules\Accounts\Processors\GenerateEmailVerificationAttemptProcessor;
|
use App\Classes\Modules\Accounts\Processors\GenerateEmailVerificationAttemptProcessor;
|
||||||
use App\Classes\Modules\Companies\DataTransferObjects\CompanyConnectionObject;
|
|
||||||
use App\Classes\Modules\Companies\Processors\AssignEmployeeProcessor;
|
use App\Classes\Modules\Companies\Processors\AssignEmployeeProcessor;
|
||||||
use App\Classes\Modules\Companies\Processors\CreateCompanyProcessor;
|
use App\Classes\Modules\Companies\Processors\CreateCompanyProcessor;
|
||||||
use App\Classes\Modules\Companies\Processors\CreateCompanyModuleProcessor;
|
use App\Classes\Modules\Companies\Processors\CreateCompanyModuleProcessor;
|
||||||
use App\Classes\Modules\Companies\DataTransferObjects\EmploymentObject;
|
|
||||||
use App\Classes\Modules\Companies\Services\ApprovesCompanyConnection;
|
use App\Classes\Modules\Companies\Services\ApprovesCompanyConnection;
|
||||||
use App\Classes\Modules\Companies\Services\CreatesCompanyConnection;
|
use App\Classes\Modules\Companies\Services\CreatesCompanyConnection;
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompanyModule;
|
use App\Classes\Modules\Companies\Services\FetchesCompanyModule;
|
||||||
use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject;
|
|
||||||
use App\Classes\Modules\Contacts\Processors\CreateContactProcessor;
|
use App\Classes\Modules\Contacts\Processors\CreateContactProcessor;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\CreatePerfexCRMLeadProcessor;
|
||||||
use App\Classes\Modules\Documents\Processors\UploadIdentityDocumentProcessor;
|
use App\Classes\Modules\Documents\Processors\UploadIdentityDocumentProcessor;
|
||||||
|
use App\Classes\Modules\Companies\DataTransferObjects\CompanyConnectionObject;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateLeadPerfexCRMObject;
|
||||||
|
use App\Classes\Modules\Companies\DataTransferObjects\EmploymentObject;
|
||||||
|
use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject;
|
||||||
|
|
||||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
use App\Classes\ValueObjects\Constants\BusinessType;
|
use App\Classes\ValueObjects\Constants\BusinessType;
|
||||||
use App\Classes\ValueObjects\Constants\CompanyType;
|
use App\Classes\ValueObjects\Constants\CompanyType;
|
||||||
use App\Classes\ValueObjects\Constants\RoleTypes;
|
use App\Classes\ValueObjects\Constants\RoleTypes;
|
||||||
|
|
||||||
|
use App\Classes\Jobs\CreatePerfexCRMCustomer;
|
||||||
|
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Models\CompanyModule;
|
use App\Models\CompanyModule;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
@@ -80,6 +84,9 @@ class CreateCustomerLogic extends AbstractControllerLogic
|
|||||||
/** @var FetchesCompanyModule */
|
/** @var FetchesCompanyModule */
|
||||||
private $fetchesCompanyModule;
|
private $fetchesCompanyModule;
|
||||||
|
|
||||||
|
/** @var CreatePerfexCRMLeadProcessor */
|
||||||
|
private $createPerfexCRMLeadProcessor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CreateCustomerLogic constructor.
|
* CreateCustomerLogic constructor.
|
||||||
* @param CreateUserProcessor $createUserProcessor
|
* @param CreateUserProcessor $createUserProcessor
|
||||||
@@ -93,8 +100,9 @@ class CreateCustomerLogic extends AbstractControllerLogic
|
|||||||
* @param AuthenticationProcessor $authenticationProcessor
|
* @param AuthenticationProcessor $authenticationProcessor
|
||||||
* @param GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor
|
* @param GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor
|
||||||
* @param FetchesCompanyModule $fetchesCompanyModule
|
* @param FetchesCompanyModule $fetchesCompanyModule
|
||||||
|
* @param CreatePerfexCRMLeadProcessor $createPerfexCRMLeadProcessor
|
||||||
*/
|
*/
|
||||||
public function __construct(CreateUserProcessor $createUserProcessor, CreateCompanyProcessor $createCompanyProcessor, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, AssignEmployeeProcessor $assignEmployeeProcessor, UploadIdentityDocumentProcessor $uploadIdentityDocumentProcessor, AuthenticationProcessor $authenticationProcessor, GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor, FetchesCompanyModule $fetchesCompanyModule)
|
public function __construct(CreateUserProcessor $createUserProcessor, CreateCompanyProcessor $createCompanyProcessor, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, AssignEmployeeProcessor $assignEmployeeProcessor, UploadIdentityDocumentProcessor $uploadIdentityDocumentProcessor, AuthenticationProcessor $authenticationProcessor, GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor, FetchesCompanyModule $fetchesCompanyModule, CreatePerfexCRMLeadProcessor $createPerfexCRMLeadProcessor)
|
||||||
{
|
{
|
||||||
$this->createUserProcessor = $createUserProcessor;
|
$this->createUserProcessor = $createUserProcessor;
|
||||||
$this->createCompanyProcessor = $createCompanyProcessor;
|
$this->createCompanyProcessor = $createCompanyProcessor;
|
||||||
@@ -107,6 +115,7 @@ class CreateCustomerLogic extends AbstractControllerLogic
|
|||||||
$this->authenticationProcessor = $authenticationProcessor;
|
$this->authenticationProcessor = $authenticationProcessor;
|
||||||
$this->generateEmailVerificationAttemptProcessor = $generateEmailVerificationAttemptProcessor;
|
$this->generateEmailVerificationAttemptProcessor = $generateEmailVerificationAttemptProcessor;
|
||||||
$this->fetchesCompanyModule = $fetchesCompanyModule;
|
$this->fetchesCompanyModule = $fetchesCompanyModule;
|
||||||
|
$this->createPerfexCRMLeadProcessor = $createPerfexCRMLeadProcessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -146,6 +155,17 @@ class CreateCustomerLogic extends AbstractControllerLogic
|
|||||||
|
|
||||||
$this->uploadIdentityDocumentProcessor->execute($request, $company);
|
$this->uploadIdentityDocumentProcessor->execute($request, $company);
|
||||||
|
|
||||||
|
if(config('perfexcrm.is_enabled') == 'true'){
|
||||||
|
// $this->createPerfexCRMLeadProcessor->execute($request);
|
||||||
|
$createLeadPerfexCRMObject = new CreateLeadPerfexCRMObject(
|
||||||
|
$request->input('name'),
|
||||||
|
$request->input('email'),
|
||||||
|
$request->input('phone'),
|
||||||
|
$request->input('type') === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name')
|
||||||
|
);
|
||||||
|
CreatePerfexCRMCustomer::dispatch($createLeadPerfexCRMObject);
|
||||||
|
}
|
||||||
|
|
||||||
// $this->generateEmailVerificationAttemptProcessor->execute($user);
|
// $this->generateEmailVerificationAttemptProcessor->execute($user);
|
||||||
|
|
||||||
return $this->response($this->authenticationProcessor->execute($request));
|
return $this->response($this->authenticationProcessor->execute($request));
|
||||||
|
|||||||
+7
-60
@@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
namespace App\Classes\Modules\PackingLists\Processors;
|
namespace App\Classes\Modules\PackingLists\Processors;
|
||||||
|
|
||||||
|
use App\Classes\Exceptions\AccessForbiddenException;
|
||||||
use App\Classes\Exceptions\MalformedRequestException;
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use App\Classes\Exceptions\RequestValidationException;
|
||||||
use App\Classes\Exceptions\ResourceNotFoundException;
|
use App\Classes\Exceptions\ResourceNotFoundException;
|
||||||
use App\Classes\Modules\Companies\Services\FetchesCompanyModule;
|
use App\Classes\Modules\Companies\Services\FetchesCompanyModule;
|
||||||
use App\Classes\Modules\Orders\Services\FetchesDataFromYDPortal;
|
use App\Classes\Modules\Orders\Services\FetchesDataFromYDPortal;
|
||||||
@@ -38,6 +40,7 @@ use App\Models\Order;
|
|||||||
use App\Models\PackingList;
|
use App\Models\PackingList;
|
||||||
use App\Models\Transport;
|
use App\Models\Transport;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use GuzzleHttp\Exception\GuzzleException;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
@@ -47,18 +50,6 @@ class FetchContainersFromYdPortalProcessor
|
|||||||
/** @var FetchesDataFromYDPortal */
|
/** @var FetchesDataFromYDPortal */
|
||||||
private $fetchesDataFRomYDPortal;
|
private $fetchesDataFRomYDPortal;
|
||||||
|
|
||||||
/** @var FetchesOrder */
|
|
||||||
private $fetchesOrder;
|
|
||||||
|
|
||||||
/** @var UpdatesContractObligation */
|
|
||||||
private $updatesContractObligations;
|
|
||||||
|
|
||||||
/** @var CreatePackingListProcessor */
|
|
||||||
private $createPackingListProcessor;
|
|
||||||
|
|
||||||
/** @var CreatePackageProcessor */
|
|
||||||
private $createPackageProcessor;
|
|
||||||
|
|
||||||
/** @var CreatesTransport */
|
/** @var CreatesTransport */
|
||||||
private $createsTransport;
|
private $createsTransport;
|
||||||
|
|
||||||
@@ -68,75 +59,31 @@ class FetchContainersFromYdPortalProcessor
|
|||||||
/** @var FetchesContainer */
|
/** @var FetchesContainer */
|
||||||
private $fetchesContainer;
|
private $fetchesContainer;
|
||||||
|
|
||||||
/** @var FetchesPackingList */
|
|
||||||
private $fetchesPackingList;
|
|
||||||
|
|
||||||
/** @var FetchesCompanyModule */
|
|
||||||
private $fetchesCompanyModule;
|
|
||||||
|
|
||||||
/** @var CreateContainerProcessor */
|
/** @var CreateContainerProcessor */
|
||||||
private $createContainerProcessor;
|
private $createContainerProcessor;
|
||||||
|
|
||||||
/** @var CreatesContract */
|
|
||||||
private $unityCreateContract;
|
|
||||||
|
|
||||||
/** @var AssignContractEntityProcessor */
|
|
||||||
private $unityAssignContractEntity;
|
|
||||||
|
|
||||||
/** @var CreateContractEntityProcessor */
|
|
||||||
private $unityCreateContractEntity;
|
|
||||||
|
|
||||||
/** @var CreatesStep */
|
|
||||||
private $createsStep;
|
|
||||||
|
|
||||||
/** @var ActivateContractProcessor */
|
|
||||||
private $unityActivateContract;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FetchOrderListsFromYdPortalProcessor constructor.
|
|
||||||
* @param FetchesDataFromYDPortal $fetchesDataFRomYDPortal
|
* @param FetchesDataFromYDPortal $fetchesDataFRomYDPortal
|
||||||
* @param FetchesOrder $fetchesOrder
|
|
||||||
* @param UpdatesContractObligation $updatesContractObligations
|
|
||||||
* @param CreatePackingListProcessor $createPackingListProcessor
|
|
||||||
* @param CreatePackageProcessor $createPackageProcessor
|
|
||||||
* @param CreatesTransport $createsTransport
|
* @param CreatesTransport $createsTransport
|
||||||
* @param CreatesSchedule $createsSchedule
|
* @param CreatesSchedule $createsSchedule
|
||||||
* @param FetchesContainer $fetchesContainer
|
* @param FetchesContainer $fetchesContainer
|
||||||
* @param FetchesPackingList $fetchesPackingList
|
|
||||||
* @param FetchesCompanyModule $fetchesCompanyModule
|
|
||||||
* @param CreateContainerProcessor $createContainerProcessor
|
* @param CreateContainerProcessor $createContainerProcessor
|
||||||
* @param CreatesContract $unityCreateContract
|
|
||||||
* @param AssignContractEntityProcessor $unityAssignContractEntity
|
|
||||||
* @param CreateContractEntityProcessor $unityCreateContractEntity
|
|
||||||
* @param CreatesStep $createsStep
|
|
||||||
* @param ActivateContractProcessor $unityActivateContract
|
|
||||||
*/
|
*/
|
||||||
public function __construct(FetchesDataFromYDPortal $fetchesDataFRomYDPortal, FetchesOrder $fetchesOrder, UpdatesContractObligation $updatesContractObligations, CreatePackingListProcessor $createPackingListProcessor, CreatePackageProcessor $createPackageProcessor, CreatesTransport $createsTransport, CreatesSchedule $createsSchedule, FetchesContainer $fetchesContainer, FetchesPackingList $fetchesPackingList, FetchesCompanyModule $fetchesCompanyModule, CreateContainerProcessor $createContainerProcessor, CreatesContract $unityCreateContract, AssignContractEntityProcessor $unityAssignContractEntity, CreateContractEntityProcessor $unityCreateContractEntity, CreatesStep $createsStep, ActivateContractProcessor $unityActivateContract)
|
public function __construct(FetchesDataFromYDPortal $fetchesDataFRomYDPortal, CreatesTransport $createsTransport, CreatesSchedule $createsSchedule, FetchesContainer $fetchesContainer, CreateContainerProcessor $createContainerProcessor)
|
||||||
{
|
{
|
||||||
$this->fetchesDataFRomYDPortal = $fetchesDataFRomYDPortal;
|
$this->fetchesDataFRomYDPortal = $fetchesDataFRomYDPortal;
|
||||||
$this->fetchesOrder = $fetchesOrder;
|
|
||||||
$this->updatesContractObligations = $updatesContractObligations;
|
|
||||||
$this->createPackingListProcessor = $createPackingListProcessor;
|
|
||||||
$this->createPackageProcessor = $createPackageProcessor;
|
|
||||||
$this->createsTransport = $createsTransport;
|
$this->createsTransport = $createsTransport;
|
||||||
$this->createsSchedule = $createsSchedule;
|
$this->createsSchedule = $createsSchedule;
|
||||||
$this->fetchesContainer = $fetchesContainer;
|
$this->fetchesContainer = $fetchesContainer;
|
||||||
$this->fetchesPackingList = $fetchesPackingList;
|
|
||||||
$this->fetchesCompanyModule = $fetchesCompanyModule;
|
|
||||||
$this->createContainerProcessor = $createContainerProcessor;
|
$this->createContainerProcessor = $createContainerProcessor;
|
||||||
$this->unityCreateContract = $unityCreateContract;
|
|
||||||
$this->unityAssignContractEntity = $unityAssignContractEntity;
|
|
||||||
$this->unityCreateContractEntity = $unityCreateContractEntity;
|
|
||||||
$this->createsStep = $createsStep;
|
|
||||||
$this->unityActivateContract = $unityActivateContract;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Carbon|null $start
|
|
||||||
* @param Carbon|null $end
|
|
||||||
* @return void
|
* @return void
|
||||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
* @throws MalformedRequestException
|
||||||
|
* @throws AccessForbiddenException
|
||||||
|
* @throws RequestValidationException
|
||||||
*/
|
*/
|
||||||
public function execute()
|
public function execute()
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -51,7 +51,7 @@ class FetchContainersUpdatesFromYdPortalProcessor
|
|||||||
foreach ($containers as $container) {
|
foreach ($containers as $container) {
|
||||||
$time_start = microtime(true);
|
$time_start = microtime(true);
|
||||||
|
|
||||||
$packingList = $container->packingLists()->first();
|
$packingList = $container->packingLists()->random();
|
||||||
|
|
||||||
$trackingRequest = $this->fetchesDataFRomYDPortal->clientRequest('http://www.yd-wl.com/api/ApiTracking.ashx', 'GET', [
|
$trackingRequest = $this->fetchesDataFRomYDPortal->clientRequest('http://www.yd-wl.com/api/ApiTracking.ashx', 'GET', [
|
||||||
'trakingno' => $packingList->reference
|
'trakingno' => $packingList->reference
|
||||||
|
|||||||
@@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\DataTransferObjects;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Classes\General\Interfaces\DataTransferObject;
|
||||||
|
|
||||||
|
class CreateLeadPerfexCRMObject implements DataTransferObject
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
private $name;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $email;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $phone;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $companyName;
|
||||||
|
|
||||||
|
public function __construct(string $name, string $email, string $phone, string $companyName)
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->name = $name;
|
||||||
|
$this->email = $email;
|
||||||
|
$this->phone = $phone;
|
||||||
|
$this->companyName = $companyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getName(): string
|
||||||
|
{
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getEmail(): string
|
||||||
|
{
|
||||||
|
return $this->email;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getPhone(): string
|
||||||
|
{
|
||||||
|
return $this->phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCompanyName(): string
|
||||||
|
{
|
||||||
|
return $this->companyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\DataTransferObjects;
|
||||||
|
|
||||||
|
use App\Classes\General\Interfaces\DataTransferObject;
|
||||||
|
|
||||||
|
class CreateTaskPerfexCRMObject implements DataTransferObject
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
private $email;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $name;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $description;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $leadId;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $milestoneId;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $projectId;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $reference;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $onTaskCompletion;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $status;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status)
|
||||||
|
{
|
||||||
|
$this->email = $email;
|
||||||
|
$this->name = $name;
|
||||||
|
$this->description = $description;
|
||||||
|
$this->leadId = $leadId;
|
||||||
|
$this->projectId = $projectId;
|
||||||
|
$this->milestoneId = $milestoneId;
|
||||||
|
$this->reference = $reference;
|
||||||
|
$this->onTaskCompletion = $onTaskCompletion;
|
||||||
|
$this->status = $status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getEmail(): string
|
||||||
|
{
|
||||||
|
return $this->email;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getName(): string
|
||||||
|
{
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return $this->description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getLeadId(): string
|
||||||
|
{
|
||||||
|
return $this->leadId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setLeadId(string $leadId)
|
||||||
|
{
|
||||||
|
$this->leadId = $leadId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getProjectId(): string
|
||||||
|
{
|
||||||
|
return $this->projectId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getMilestoneId(): string
|
||||||
|
{
|
||||||
|
return $this->milestoneId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getReference(): string
|
||||||
|
{
|
||||||
|
return $this->reference;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getOnTaskCompletion(): string
|
||||||
|
{
|
||||||
|
return $this->onTaskCompletion;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getStatus(): string
|
||||||
|
{
|
||||||
|
return $this->status;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\DataTransferObjects;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Classes\General\Interfaces\DataTransferObject;
|
||||||
|
|
||||||
|
class CustomerContactObject implements DataTransferObject
|
||||||
|
{
|
||||||
|
/** @var int */
|
||||||
|
private $customerId;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $firstname;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $lastname;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $email;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $password;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $isPrimary;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $sendSetPasswordEmail;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct(string $customerId, string $firstname, string $lastname, string $email, string $password, string $isPrimary, string $sendSetPasswordEmail)
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->customerId = $customerId;
|
||||||
|
$this->firstname = $firstname;
|
||||||
|
$this->lastname = $lastname;
|
||||||
|
$this->email = $email;
|
||||||
|
$this->password = $password;
|
||||||
|
$this->isPrimary = $isPrimary;
|
||||||
|
$this->sendSetPasswordEmail = $sendSetPasswordEmail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getCustomerId(): int
|
||||||
|
{
|
||||||
|
return $this->customerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getFirstName(): string
|
||||||
|
{
|
||||||
|
return $this->firstname;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getLastName(): string
|
||||||
|
{
|
||||||
|
return $this->lastname;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getEmail(): string
|
||||||
|
{
|
||||||
|
return $this->email;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getPassword(): string
|
||||||
|
{
|
||||||
|
return $this->password;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getIsPrimary(): string
|
||||||
|
{
|
||||||
|
return $this->isPrimary;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getSendSetPasswordEmail(): string
|
||||||
|
{
|
||||||
|
return $this->sendSetPasswordEmail;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\DataTransferObjects;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Classes\General\Interfaces\DataTransferObject;
|
||||||
|
|
||||||
|
class InitialPerfexCRMObject implements DataTransferObject
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
private $companyName;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $companyReference;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $contactName;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $contactEmail;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $bookingMarking;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $projectName;
|
||||||
|
|
||||||
|
/** @var array */
|
||||||
|
private $milestoneNames;
|
||||||
|
|
||||||
|
/** @var array */
|
||||||
|
private $taskNames;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct(string $companyName, string $companyReference, string $contactName, string $contactEmail, string $bookingMarking, string $projectName, array $milestoneNames, array $taskNames)
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->companyName = $companyName;
|
||||||
|
$this->companyReference = $companyReference;
|
||||||
|
$this->contactName = $contactName;
|
||||||
|
$this->contactEmail = $contactEmail;
|
||||||
|
$this->bookingMarking = $bookingMarking;
|
||||||
|
$this->projectName = $projectName;
|
||||||
|
$this->milestoneNames = $milestoneNames;
|
||||||
|
$this->taskNames = $taskNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCompanyName(): string
|
||||||
|
{
|
||||||
|
return $this->companyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCompanyReference(): string
|
||||||
|
{
|
||||||
|
return $this->companyReference;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getContactName(): string
|
||||||
|
{
|
||||||
|
return $this->contactName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getContactEmail(): string
|
||||||
|
{
|
||||||
|
return $this->contactEmail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getBookingMarking(): string
|
||||||
|
{
|
||||||
|
return $this->bookingMarking;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getProjectName(): string
|
||||||
|
{
|
||||||
|
return $this->projectName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getMilestoneNames(): array
|
||||||
|
{
|
||||||
|
return $this->milestoneNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getTaskNames(): array
|
||||||
|
{
|
||||||
|
return $this->taskNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\DataTransferObjects;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Classes\General\Interfaces\DataTransferObject;
|
||||||
|
|
||||||
|
class InvoicePaymentPerfexCRMObject implements DataTransferObject
|
||||||
|
{
|
||||||
|
/** @var int */
|
||||||
|
private $invoiceId;
|
||||||
|
|
||||||
|
/** @var float */
|
||||||
|
private $amount;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $date;
|
||||||
|
|
||||||
|
/** @var int */
|
||||||
|
private $paymentMode;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $transactionId;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $note;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct(int $invoiceId, float $amount, string $date, int $paymentMode, string $transactionId, string $note)
|
||||||
|
{
|
||||||
|
$this->invoiceId = $invoiceId;
|
||||||
|
$this->amount = $amount;
|
||||||
|
$this->date = $date;
|
||||||
|
$this->paymentMode = $paymentMode;
|
||||||
|
$this->transactionId = $transactionId;
|
||||||
|
$this->note = $note;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getInvoiceId(): int
|
||||||
|
{
|
||||||
|
return $this->invoiceId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public function getAmount(): float
|
||||||
|
{
|
||||||
|
return $this->amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getDate(): string
|
||||||
|
{
|
||||||
|
return $this->date;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getPaymentMode(): int
|
||||||
|
{
|
||||||
|
return $this->paymentMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getTransactionId(): string
|
||||||
|
{
|
||||||
|
return $this->transactionId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getNote(): string
|
||||||
|
{
|
||||||
|
return $this->note;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,145 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\DataTransferObjects;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Classes\General\Interfaces\DataTransferObject;
|
||||||
|
|
||||||
|
class InvoicePerfexCRMObject implements DataTransferObject
|
||||||
|
{
|
||||||
|
/** @var int */
|
||||||
|
private $clientId;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $number;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $date;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $dueDate;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $currency;
|
||||||
|
|
||||||
|
/** @var float */
|
||||||
|
private $subTotal;
|
||||||
|
|
||||||
|
/** @var float */
|
||||||
|
private $total;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $billingStreet;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $projectId;
|
||||||
|
|
||||||
|
/** @var array */
|
||||||
|
private $allowedPaymentModes;
|
||||||
|
|
||||||
|
/** @var array */
|
||||||
|
private $invoiceItems;
|
||||||
|
|
||||||
|
public function __construct(string $clientId, string $number, string $date, string $dueDate, string $currency, float $subTotal, float $total, string $billingStreet, string $projectId, array $allowedPaymentModes, array $invoiceItems)
|
||||||
|
{
|
||||||
|
$this->clientId = $clientId;
|
||||||
|
$this->number = $number;
|
||||||
|
$this->date = $date;
|
||||||
|
$this->dueDate = $dueDate;
|
||||||
|
$this->currency = $currency;
|
||||||
|
$this->subTotal = $subTotal;
|
||||||
|
$this->total = $total;
|
||||||
|
$this->billingStreet = $billingStreet;
|
||||||
|
$this->projectId = $projectId;
|
||||||
|
$this->allowedPaymentModes = $allowedPaymentModes;
|
||||||
|
$this->invoiceItems = $invoiceItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getClientId(): int
|
||||||
|
{
|
||||||
|
return $this->clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getNumber(): string
|
||||||
|
{
|
||||||
|
return $this->number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getDate(): string
|
||||||
|
{
|
||||||
|
return $this->date;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getDueDate(): string
|
||||||
|
{
|
||||||
|
return $this->dueDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCurrency(): string
|
||||||
|
{
|
||||||
|
return $this->currency;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public function getSubTotal(): float
|
||||||
|
{
|
||||||
|
return $this->subTotal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public function getTotal(): float
|
||||||
|
{
|
||||||
|
return $this->total;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getBillingStreet(): string
|
||||||
|
{
|
||||||
|
return $this->billingStreet;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getProjectId(): string
|
||||||
|
{
|
||||||
|
return $this->projectId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getAllowedPaymentModes(): array
|
||||||
|
{
|
||||||
|
return $this->allowedPaymentModes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getInvoiceItems(): array
|
||||||
|
{
|
||||||
|
return $this->invoiceItems;
|
||||||
|
}
|
||||||
|
}
|
||||||
+86
@@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\DataTransferObjects;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Classes\General\Interfaces\DataTransferObject;
|
||||||
|
|
||||||
|
class InvoiceSingleItemPerfexCRMObject implements DataTransferObject
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
public $description;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
public $longDescription;
|
||||||
|
|
||||||
|
/** @var int */
|
||||||
|
public $qty;
|
||||||
|
|
||||||
|
/** @var float */
|
||||||
|
public $rate;
|
||||||
|
|
||||||
|
/** @var int */
|
||||||
|
public $order;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
public $unit;
|
||||||
|
|
||||||
|
public function __construct(string $description, string $longDescription, int $qty, float $rate, int $order, string $unit)
|
||||||
|
{
|
||||||
|
$this->description = $description;
|
||||||
|
$this->longDescription = $longDescription;
|
||||||
|
$this->qty = $qty;
|
||||||
|
$this->rate = $rate;
|
||||||
|
$this->order = $order;
|
||||||
|
$this->unit = $unit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return $this->description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getLongDescription(): string
|
||||||
|
{
|
||||||
|
return $this->longDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getQty(): int
|
||||||
|
{
|
||||||
|
return $this->qty;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public function getRate(): float
|
||||||
|
{
|
||||||
|
return $this->rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getOrder(): int
|
||||||
|
{
|
||||||
|
return $this->order;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getUnit(): string
|
||||||
|
{
|
||||||
|
return $this->unit;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\DataTransferObjects;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Classes\General\Interfaces\DataTransferObject;
|
||||||
|
|
||||||
|
class UpdatePerfexCRMObject implements DataTransferObject
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
private $companyName;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $companyReference;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $contactEmail;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $bookingMarking;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $projectName;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $milestoneName;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $taskName;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct(string $companyName, string $companyReference, string $contactEmail, string $bookingMarking, string $projectName, string $milestoneName, string $taskName)
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->companyName = $companyName;
|
||||||
|
$this->companyReference = $companyReference;
|
||||||
|
$this->contactEmail = $contactEmail;
|
||||||
|
$this->bookingMarking = $bookingMarking;
|
||||||
|
$this->projectName = $projectName;
|
||||||
|
$this->milestoneName = $milestoneName;
|
||||||
|
$this->taskName = $taskName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCompanyName(): string
|
||||||
|
{
|
||||||
|
return $this->companyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCompanyReference(): string
|
||||||
|
{
|
||||||
|
return $this->companyReference;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getContactEmail(): string
|
||||||
|
{
|
||||||
|
return $this->contactEmail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getBookingMarking(): string
|
||||||
|
{
|
||||||
|
return $this->bookingMarking;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getProjectName(): string
|
||||||
|
{
|
||||||
|
return $this->projectName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getMilestoneName(): string
|
||||||
|
{
|
||||||
|
return $this->milestoneName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getTaskName(): string
|
||||||
|
{
|
||||||
|
return $this->taskName;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,159 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Processors;
|
||||||
|
|
||||||
|
// use App\Classes\Modules\PerfexCRM\DataTransferObjects\ContactObject;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMInvoice;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMInvoicePayment;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\ConvertsPerfexCRMLeadToCustomer;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePerfexCRMObject;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePaymentPerfexCRMObject;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoiceSingleItemPerfexCRMObject;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
|
class CreatePerfexCRMInvoiceProcessor
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var CreatesPerfexCRMInvoice */
|
||||||
|
private $createsPerfexCRMInvoice;
|
||||||
|
|
||||||
|
/** @var CreatesPerfexCRMInvoicePayment */
|
||||||
|
private $createsPerfexCRMInvoicePayment;
|
||||||
|
|
||||||
|
/** @var ConvertsPerfexCRMLeadToCustomer */
|
||||||
|
private $convertsPerfexCRMLeadToCustomer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CreatePerfexCRMInvoiceProcessor constructor.
|
||||||
|
* @param CreatesPerfexCRMInvoice $createsPerfexCRMInvoice
|
||||||
|
*/
|
||||||
|
public function __construct(CreatesPerfexCRMInvoice $createsPerfexCRMInvoice,
|
||||||
|
CreatesPerfexCRMInvoicePayment $createsPerfexCRMInvoicePayment,
|
||||||
|
ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer)
|
||||||
|
{
|
||||||
|
$this->createsPerfexCRMInvoice = $createsPerfexCRMInvoice;
|
||||||
|
$this->createsPerfexCRMInvoicePayment = $createsPerfexCRMInvoicePayment;
|
||||||
|
$this->convertsPerfexCRMLeadToCustomer = $convertsPerfexCRMLeadToCustomer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $transaction
|
||||||
|
* @param $purchaseOrder
|
||||||
|
* @param $supplier
|
||||||
|
* @return null|object
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute($transaction, $purchaseOrder, $supplier) {
|
||||||
|
$clientId = "";
|
||||||
|
$number = $transaction->bill_no;
|
||||||
|
$prefix = "INV-";
|
||||||
|
if (substr($number, 0, strlen($prefix)) == $prefix) {
|
||||||
|
$number = substr($number, strlen($prefix));
|
||||||
|
}
|
||||||
|
|
||||||
|
$date = Carbon::parse($transaction->booking->created_at)->format('Y-m-d');
|
||||||
|
$dueDate = Carbon::parse($transaction->booking->created_at)->format('Y-m-d');
|
||||||
|
$currency = 1; //cief TODO: To look into Malaysia and Chinese currency
|
||||||
|
$subTotal = 0.00;
|
||||||
|
$total = 0.00;
|
||||||
|
|
||||||
|
$billingStreet = "";
|
||||||
|
$addresses = $supplier->addresses()->where('billing', '=', true)->first();
|
||||||
|
|
||||||
|
$billingStreet = $billingStreet.$addresses->street_one;
|
||||||
|
$billingStreet = $billingStreet.$addresses->street_two.',';
|
||||||
|
$billingStreet = $billingStreet.$addresses->district()->first()->name.',';
|
||||||
|
$billingStreet = $billingStreet.$addresses->postcode;
|
||||||
|
$billingStreet = $billingStreet.$addresses->state()->first()->name.',';
|
||||||
|
$billingStreet = $billingStreet.$addresses->country()->first()->name;
|
||||||
|
|
||||||
|
$projectId = "";
|
||||||
|
$allowedPaymentModes = [];
|
||||||
|
$invoiceItems = [];
|
||||||
|
|
||||||
|
$email = $supplier->employees()->first()->email;
|
||||||
|
$email = 'dillon37@yahoo.com'; //cief TODO: To be updated to user actual email address
|
||||||
|
$result = $this->convertsPerfexCRMLeadToCustomer->execute($email);
|
||||||
|
if(isset($result->payload)){
|
||||||
|
$clientId = $result->payload['client_id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
//newitems
|
||||||
|
foreach ($purchaseOrder->transactionDetails as $key => $transaction_detail){
|
||||||
|
$order = $key + 1;
|
||||||
|
$stockCode = $transaction_detail->product_code;
|
||||||
|
$description = $transaction_detail->product_name;
|
||||||
|
$quantity = $transaction_detail->quantity;
|
||||||
|
$unitPrice = 0.00;
|
||||||
|
if($transaction->booking()->first()->fix_currency_id !== 1)
|
||||||
|
$unitPrice = (1/$transaction->currency_rate) * $transaction_detail->price;
|
||||||
|
else
|
||||||
|
$unitPrice = $transaction_detail->price;
|
||||||
|
|
||||||
|
//$totalAmount = 0.00;
|
||||||
|
if($transaction->booking()->first()->fix_currency_id !== 1){
|
||||||
|
|
||||||
|
//$totalAmount = (float)number_format( (1/$transaction->currency_rate) * $transaction_detail->price, 2,'.','')*$transaction_detail->quantity;
|
||||||
|
$subTotal += (1/$transaction->currency_rate) * $transaction_detail->price * $transaction_detail->quantity;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//$totalAmount = (float)number_format($transaction_detail->price, 2,'.','')*$transaction_detail->quantity;
|
||||||
|
$subTotal += $transaction_detail->price * $transaction_detail->quantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
//string $description, string $longDescription, int $qty, int $rate, int $order, string $unit
|
||||||
|
$invoiceSingleItem = new InvoiceSingleItemPerfexCRMObject(
|
||||||
|
$description,
|
||||||
|
"",
|
||||||
|
$quantity,
|
||||||
|
$unitPrice,
|
||||||
|
$order,
|
||||||
|
""
|
||||||
|
);
|
||||||
|
array_push($invoiceItems, $invoiceSingleItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($transaction->booking()->first()->fix_currency_id !== 1){
|
||||||
|
$total = ((1/$transaction->currency_rate) * $transaction->amount) + $transaction->service_charge + $transaction->tax;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$total = $transaction->amount + $transaction->service_charge + $transaction->tax;
|
||||||
|
}
|
||||||
|
|
||||||
|
//cief TODO: To be updated, temporarily hardcoded allow payment modes
|
||||||
|
array_push($allowedPaymentModes, 1, 2);
|
||||||
|
|
||||||
|
$invoicePerfexCRMObject = new InvoicePerfexCRMObject(
|
||||||
|
$clientId,
|
||||||
|
$number,
|
||||||
|
$date,
|
||||||
|
$dueDate,
|
||||||
|
$currency,
|
||||||
|
$subTotal,
|
||||||
|
$total,
|
||||||
|
$billingStreet,
|
||||||
|
$projectId,
|
||||||
|
$allowedPaymentModes,
|
||||||
|
$invoiceItems
|
||||||
|
);
|
||||||
|
|
||||||
|
$result = $this->createsPerfexCRMInvoice->execute($invoicePerfexCRMObject);
|
||||||
|
|
||||||
|
//If there is a checking whether an payment to an invoice need to be generated, do it here
|
||||||
|
if(true && $result->payload['id']){
|
||||||
|
$invoicePaymentPerfexCRMObject = new InvoicePaymentPerfexCRMObject(
|
||||||
|
$result->payload['id'],
|
||||||
|
$total,
|
||||||
|
$date,
|
||||||
|
1,
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
);
|
||||||
|
$this->createsPerfexCRMInvoicePayment->execute($invoicePaymentPerfexCRMObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Processors;
|
||||||
|
|
||||||
|
// use App\Classes\Modules\PerfexCRM\DataTransferObjects\ContactObject;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMLead;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateLeadPerfexCRMObject;
|
||||||
|
|
||||||
|
class CreatePerfexCRMLeadProcessor
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var CreatesPerfexCRMLead */
|
||||||
|
private $createsPerfexCRMLead;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CreatePerfexCRMLeadProcessor constructor.
|
||||||
|
* @param CreatesPerfexCRMLead $createsPerfexCRMLead
|
||||||
|
*/
|
||||||
|
public function __construct(CreatesPerfexCRMLead $createsPerfexCRMLead)
|
||||||
|
{
|
||||||
|
$this->createsPerfexCRMLead = $createsPerfexCRMLead;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param CreateLeadPerfexCRMObject $createLeadPerfexCRMObject
|
||||||
|
* @return null|object
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(CreateLeadPerfexCRMObject $createLeadPerfexCRMObject) {
|
||||||
|
return $this->createsPerfexCRMLead->execute($createLeadPerfexCRMObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Processors;
|
||||||
|
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMTask;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateTaskPerfexCRMObject;
|
||||||
|
|
||||||
|
class CreatePerfexCRMTaskProcessor
|
||||||
|
{
|
||||||
|
/** @var CreatesPerfexCRMTask */
|
||||||
|
private $createsPerfexCRMTask;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param CreatesPerfexCRMTask $createsPerfexCRMTask
|
||||||
|
*/
|
||||||
|
public function __construct(CreatesPerfexCRMTask $createsPerfexCRMTask)
|
||||||
|
{
|
||||||
|
$this->createsPerfexCRMTask = $createsPerfexCRMTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param CreateTaskPerfexCRMObject $createTaskPerfexCRMObject
|
||||||
|
* @return true
|
||||||
|
* @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->getStatus(),
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,192 @@
|
|||||||
|
<?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\PerfexCRMStatus;
|
||||||
|
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(), $crmClientId);
|
||||||
|
if(isset($result->payload)){ //Here means project creation successful
|
||||||
|
$projectId = $result->payload['project_id'];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$projectId = $this->fetchesPerfexCRMProject->execute($initialPerfexCRMObject->getProjectName(), $crmClientId)->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!is_null($result)){
|
||||||
|
$tasks = $initialPerfexCRMObject->getTaskNames();
|
||||||
|
|
||||||
|
//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 = PerfexCRMStatus::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'], $taskStatus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Processors;
|
||||||
|
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateTaskPerfexCRMObject;
|
||||||
|
use App\Classes\ValueObjects\Constants\PerfexCRMStatus;
|
||||||
|
use App\Classes\Jobs\CreatePerfexCRMSingleTask;
|
||||||
|
|
||||||
|
class NewLeadTaskToPerfexCRMProcessor
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param None
|
||||||
|
* @return true
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute()
|
||||||
|
{
|
||||||
|
$createTaskPerfexCRMObject = new CreateTaskPerfexCRMObject(
|
||||||
|
"dillontest1@gmail.com",
|
||||||
|
"test is the name of the task",
|
||||||
|
"this is the description of the task",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
PerfexCRMStatus::NOT_STARTED
|
||||||
|
);
|
||||||
|
|
||||||
|
CreatePerfexCRMSingleTask::dispatch($createTaskPerfexCRMObject);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Processors;
|
||||||
|
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\UpdatePerfexCRMProcessor;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\InitializePerfexCRMProcessor;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Services\Init;
|
||||||
|
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InitialPerfexCRMObject;
|
||||||
|
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||||
|
use App\Classes\ValueObjects\Constants\PerfexCRMMilestones;
|
||||||
|
use App\Classes\ValueObjects\Constants\PerfexCRMTasks;
|
||||||
|
use App\Models\Transaction;
|
||||||
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
|
use App\Classes\Jobs\InitializePerfexCRM;
|
||||||
|
use App\Classes\Jobs\UpdatePerfexCRM;
|
||||||
|
|
||||||
|
class TransactionToPerfexCRMProcessor
|
||||||
|
{
|
||||||
|
/** @var FetchesCompany */
|
||||||
|
private $fetchesCompany;
|
||||||
|
|
||||||
|
/** @var UpdatePerfexCRMProcessor */
|
||||||
|
private $updatePerfexCRMProcessor;
|
||||||
|
|
||||||
|
/** @var InitializePerfexCRMProcessor */
|
||||||
|
private $initializePerfexCRMProcessor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TransactionToPerfexCRMProcessor constructor.
|
||||||
|
* @param UpdatePerfexCRMProcessor $updatePerfexCRMProcessor
|
||||||
|
* @param InitializePerfexCRMProcessor $initializePerfexCRMProcessor
|
||||||
|
* @param FetchesCompany $fetchesCompany
|
||||||
|
*/
|
||||||
|
public function __construct(UpdatePerfexCRMProcessor $updatePerfexCRMProcessor, InitializePerfexCRMProcessor $initializePerfexCRMProcessor, FetchesCompany $fetchesCompany)
|
||||||
|
{
|
||||||
|
$this->updatePerfexCRMProcessor = $updatePerfexCRMProcessor;
|
||||||
|
$this->initializePerfexCRMProcessor = $initializePerfexCRMProcessor;
|
||||||
|
$this->fetchesCompany = $fetchesCompany;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Transaction $model
|
||||||
|
* @param int $status
|
||||||
|
* @return \Illuminate\Database\Eloquent\Model
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(Transaction $model, int $status)
|
||||||
|
{
|
||||||
|
if($model->owner instanceof \App\Models\Transaction && $status == ApprovalStatus::APPROVED){
|
||||||
|
//dd(json_encode($packingList->owner()->first()->companyModule()->first()->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference));
|
||||||
|
//dd(json_encode($model->owner->owner->owner()->first()->companyModule()->first()->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference));
|
||||||
|
$companyModule = $model->owner->owner->owner()->first()->companyModule()->first();
|
||||||
|
$companyName = $companyModule->name;
|
||||||
|
$companyReference = $companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference;
|
||||||
|
$employee = $companyModule->employees()->first();
|
||||||
|
$contactEmail = $employee->email;
|
||||||
|
$contactName = $employee->name;
|
||||||
|
|
||||||
|
$orderReference = $model->owner->owner->owner()->first()->reference;
|
||||||
|
$packingListReference = $model->owner->owner->reference;
|
||||||
|
$projectName = 'IZYIM | X1 Shipping | '.$orderReference.' | '.$packingListReference;
|
||||||
|
|
||||||
|
$bookingMarking = $model->owner->owner->id."-".$model->owner->owner->owner->id;
|
||||||
|
$initialPerfexCRMObject = new InitialPerfexCRMObject(
|
||||||
|
$companyName,
|
||||||
|
$companyReference,
|
||||||
|
$contactName,
|
||||||
|
$contactEmail,
|
||||||
|
$bookingMarking,
|
||||||
|
$projectName,
|
||||||
|
[],
|
||||||
|
[
|
||||||
|
PerfexCRMTasks::TASK_1,
|
||||||
|
PerfexCRMTasks::TASK_POST_PAYMENT_1,
|
||||||
|
PerfexCRMTasks::TASK_POST_PAYMENT_2,
|
||||||
|
PerfexCRMTasks::TASK_POST_PAYMENT_3,
|
||||||
|
PerfexCRMTasks::TASK_POST_PAYMENT_4,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
//$this->initializePerfexCRMProcessor->execute($initialPerfexCRMObject);
|
||||||
|
InitializePerfexCRM::dispatch($initialPerfexCRMObject);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,139 @@
|
|||||||
|
<?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\UpdatesPerfexCRMTask;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CustomerContactObject;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
||||||
|
use App\Classes\ValueObjects\Constants\PerfexCRMStatus;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdatePerfexCRMProcessor
|
||||||
|
{
|
||||||
|
/** @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 UpdatesPerfexCRMTask */
|
||||||
|
private $updatesPerfexCRMTask;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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 UpdatesPerfexCRMTask $updatesPerfexCRMTask
|
||||||
|
*/
|
||||||
|
public function __construct(ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer,
|
||||||
|
CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject,
|
||||||
|
CreatesPerfexCRMMilestone $createsPerfexCRMMilestone,
|
||||||
|
CreatesPerfexCRMTask $createsPerfexCRMTask,
|
||||||
|
FetchesPerfexCRMProject $fetchesPerfexCRMProject,
|
||||||
|
FetchesPerfexCRMMilestone $fetchesPerfexCRMMilestone,
|
||||||
|
FetchesPerfexCRMTask $fetchesPerfexCRMTask,
|
||||||
|
CreatesPerfexCRMCustomer $createsPerfexCRMCustomer,
|
||||||
|
CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact,
|
||||||
|
UpdatesPerfexCRMTask $updatesPerfexCRMTask)
|
||||||
|
{
|
||||||
|
$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->updatesPerfexCRMTask = $updatesPerfexCRMTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param PerfexCRMObject $perfexCRMObject
|
||||||
|
* @return null|object
|
||||||
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(UpdatePerfexCRMObject $updatePerfexCRMObject) {
|
||||||
|
|
||||||
|
// 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
|
||||||
|
$result = $this->convertsPerfexCRMLeadToCustomer->execute($updatePerfexCRMObject->getContactEmail());
|
||||||
|
if(isset($result->payload)){
|
||||||
|
$crmClientId = $result->payload['client_id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get existing or create project, project has to exist first before milestone can appear under it
|
||||||
|
$result = $this->createsPerfexCRMCustomerProject->execute($updatePerfexCRMObject->getProjectName(), $crmClientId);
|
||||||
|
if(isset($result->payload)){
|
||||||
|
$projectId = $result->payload['project_id'];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$projectId = $this->fetchesPerfexCRMProject->execute($updatePerfexCRMObject->getProjectName(), $crmClientId)->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get existing or create milestone, milestone has to exist first before task can appear under it
|
||||||
|
$result = $this->createsPerfexCRMMilestone->execute($updatePerfexCRMObject->getMilestoneName(), $projectId);
|
||||||
|
if(isset($result->payload)){
|
||||||
|
$milestoneId = $result->payload['milestone_id'];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$milestone = $this->fetchesPerfexCRMMilestone->execute($updatePerfexCRMObject->getMilestoneName(), $projectId);
|
||||||
|
$array = json_decode(json_encode($milestone), true);
|
||||||
|
$milestoneId = $array[0]['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get existing or create task
|
||||||
|
$result = $this->createsPerfexCRMTask->execute($updatePerfexCRMObject->getTaskName(), $milestoneId, $projectId);
|
||||||
|
if(isset($result->payload)){
|
||||||
|
$taskId = $result->payload['task_id'];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$taskId = $this->fetchesPerfexCRMTask->execute($updatePerfexCRMObject->getTaskName(), $milestoneId)->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->updatesPerfexCRMTask->execute($taskId, $updatePerfexCRMObject->getTaskName(), $milestoneId, $projectId, PerfexCRMStatus::COMPLETED);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class ConvertsPerfexCRMLeadToCustomer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $email
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $email) {
|
||||||
|
try{
|
||||||
|
$response = Http::withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key'),])
|
||||||
|
->get(config('perfexcrm.base_url').'/api/leads/convertocustomer/'.$email);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class CreatesPerfexCRMCustomer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $companyName
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $companyName) {
|
||||||
|
try{
|
||||||
|
$data = [
|
||||||
|
'company' => $companyName
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = Http::asForm()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->post(config('perfexcrm.base_url').'/api/customers',$data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CustomerContactObject;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class CreatesPerfexCRMCustomerContact
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param CustomerContactObject $customerContactObject
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(CustomerContactObject $customerContactObject) {
|
||||||
|
try{
|
||||||
|
$data = [
|
||||||
|
'customer_id' => $customerContactObject->getCustomerId(),
|
||||||
|
'firstname' => $customerContactObject->getFirstName(),
|
||||||
|
'lastname' => $customerContactObject->getLastName(),
|
||||||
|
'email' => $customerContactObject->getEmail(), //$email
|
||||||
|
'password' => $customerContactObject->getPassword(),
|
||||||
|
'is_primary' => $customerContactObject->getIsPrimary(),
|
||||||
|
//'send_set_password_email' => $customerContactObject->getSendSetPasswordEmail(),
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = Http::asForm()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->post(config('perfexcrm.base_url').'/api/contacts',$data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class CreatesPerfexCRMCustomerProject
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $projectName
|
||||||
|
* @param string $clientId
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $projectName, string $clientId) {
|
||||||
|
try{
|
||||||
|
$data = [
|
||||||
|
'name' => $projectName,
|
||||||
|
'rel_type' => 'customer',
|
||||||
|
'billing_type' => 1,
|
||||||
|
'clientid' => $clientId,
|
||||||
|
'start_date' => date('Y-m-d'),
|
||||||
|
'status' => 1
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = Http::asForm()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->post(config('perfexcrm.base_url').'/api/projects',$data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePerfexCRMObject;
|
||||||
|
|
||||||
|
class CreatesPerfexCRMInvoice
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param InvoicePerfexCRMObject $invoicePerfexCRMObject
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(InvoicePerfexCRMObject $invoicePerfexCRMObject) {
|
||||||
|
try{
|
||||||
|
$data = [
|
||||||
|
'clientid' => $invoicePerfexCRMObject->getClientId(),
|
||||||
|
'number' => $invoicePerfexCRMObject->getNumber(),
|
||||||
|
'date' => $invoicePerfexCRMObject->getDate(),
|
||||||
|
'duedate' => $invoicePerfexCRMObject->getDueDate(),
|
||||||
|
'currency' => $invoicePerfexCRMObject->getCurrency(),
|
||||||
|
'subtotal' => $invoicePerfexCRMObject->getSubTotal(),
|
||||||
|
'total' => $invoicePerfexCRMObject->getTotal(),
|
||||||
|
'billing_street' => $invoicePerfexCRMObject->getBillingStreet(),
|
||||||
|
'project_id' => $invoicePerfexCRMObject->getProjectId(),
|
||||||
|
'allowed_payment_modes[0]' => 1,
|
||||||
|
'allowed_payment_modes[1]' => 2,
|
||||||
|
];
|
||||||
|
|
||||||
|
for($count=0; $count < count($invoicePerfexCRMObject->getInvoiceItems()); $count++) {
|
||||||
|
$oneItem = [
|
||||||
|
"newitems[".$count."][description]" => $invoicePerfexCRMObject->getInvoiceItems()[$count]->description,
|
||||||
|
"newitems[".$count."][long_description]" => $invoicePerfexCRMObject->getInvoiceItems()[$count]->longDescription,
|
||||||
|
"newitems[".$count."][qty]" => $invoicePerfexCRMObject->getInvoiceItems()[$count]->qty,
|
||||||
|
"newitems[".$count."][rate]" => $invoicePerfexCRMObject->getInvoiceItems()[$count]->rate,
|
||||||
|
"newitems[".$count."][order]" => $invoicePerfexCRMObject->getInvoiceItems()[$count]->order,
|
||||||
|
"newitems[".$count."][unit]" => $invoicePerfexCRMObject->getInvoiceItems()[$count]->unit,
|
||||||
|
];
|
||||||
|
$data = array_merge($data, $oneItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = Http::asForm()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->post(config('perfexcrm.base_url').'/api/invoices',$data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InvoicePaymentPerfexCRMObject;
|
||||||
|
|
||||||
|
class CreatesPerfexCRMInvoicePayment
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param InvoicePaymentPerfexCRMObject $invoicePaymentPerfexCRMObject
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(InvoicePaymentPerfexCRMObject $invoicePaymentPerfexCRMObject) {
|
||||||
|
try{
|
||||||
|
$data = [
|
||||||
|
'invoiceid' => $invoicePaymentPerfexCRMObject->getInvoiceId(),
|
||||||
|
'amount' => $invoicePaymentPerfexCRMObject->getAmount(),
|
||||||
|
'date' => $invoicePaymentPerfexCRMObject->getDate(),
|
||||||
|
'paymentmode' => $invoicePaymentPerfexCRMObject->getPaymentMode(),
|
||||||
|
'transactionid' => $invoicePaymentPerfexCRMObject->getTransactionId(),
|
||||||
|
'note' => $invoicePaymentPerfexCRMObject->getNote(),
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = Http::asForm()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->post(config('perfexcrm.base_url').'/api/invoices/recordpayment',$data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\CreateLeadPerfexCRMObject;
|
||||||
|
|
||||||
|
class CreatesPerfexCRMLead
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param CreateLeadPerfexCRMObject $createLeadPerfexCRMObject
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(CreateLeadPerfexCRMObject $createLeadPerfexCRMObject) {
|
||||||
|
try{
|
||||||
|
$data = [
|
||||||
|
'name' => $createLeadPerfexCRMObject->getName(),
|
||||||
|
'email' => $createLeadPerfexCRMObject->getEmail(),
|
||||||
|
'phonenumber' => $createLeadPerfexCRMObject->getPhone(),
|
||||||
|
'company' => $createLeadPerfexCRMObject->getCompanyName(),
|
||||||
|
'source' => 2, //1: Exchange, 2: Shipping Portal
|
||||||
|
'status' => 2 //2: Lead, 1: Customer
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = Http::asForm()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->post(config('perfexcrm.base_url').'/api/leads/byemail',$data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server ' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class CreatesPerfexCRMMilestone
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $$milestoneName
|
||||||
|
* @param string $projectId
|
||||||
|
* @param string $milestoneOrder
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $milestoneName, string $projectId, string $milestoneOrder = "") {
|
||||||
|
try{
|
||||||
|
$data = [
|
||||||
|
'name' => $milestoneName,
|
||||||
|
'project_id' => $projectId,
|
||||||
|
'due_date' => date('Y-m-d'),
|
||||||
|
'start_date' => date('Y-m-d')
|
||||||
|
];
|
||||||
|
|
||||||
|
if($milestoneOrder != ""){
|
||||||
|
$data['milestone_order'] = $milestoneOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = Http::asForm()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->post(config('perfexcrm.base_url').'/api/milestones',$data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class CreatesPerfexCRMTask
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $taskName
|
||||||
|
* @param string $taskDescription
|
||||||
|
* @param string $leadId
|
||||||
|
* @param string $milestoneId
|
||||||
|
* @param string $projectId
|
||||||
|
* @param string $reference, default: ''
|
||||||
|
* @param string $on_task_completion, default: ''
|
||||||
|
* @param string $status, default: 1
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $taskName, string $taskDescription, string $leadId, string $milestoneId, string $projectId, string $reference = '', string $on_task_completion = '', string $status = "1") {
|
||||||
|
try{
|
||||||
|
$data = [
|
||||||
|
'name' => $taskName,
|
||||||
|
'description' => $taskDescription,
|
||||||
|
'milestone' => $milestoneId,
|
||||||
|
'startdate' => date('Y-m-d'),
|
||||||
|
'rel_type' => 'project',
|
||||||
|
'rel_id' => $projectId,
|
||||||
|
'status' => $status,
|
||||||
|
'is_system_created' => 1,
|
||||||
|
'reference' => $reference,
|
||||||
|
'on_task_completion' => $on_task_completion
|
||||||
|
];
|
||||||
|
|
||||||
|
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
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = Http::asForm()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->post(config('perfexcrm.base_url').'/api/tasks',$data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class FetchesPerfexCRMLead
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $email
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $email) {
|
||||||
|
try{
|
||||||
|
$response = Http::withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key'),])
|
||||||
|
->get(config('perfexcrm.base_url').'/api/leads/byemail/'.$email);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server: ' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class FetchesPerfexCRMMilestone
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $milestoneName
|
||||||
|
* @param string $projectId
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $milestoneName, string $projectId) {
|
||||||
|
try{
|
||||||
|
$response = Http::withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key'),])
|
||||||
|
->get(config('perfexcrm.base_url').'/api/milestones/bynameandprojectid/'.rawurlencode($milestoneName).'/'.$projectId);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class FetchesPerfexCRMProject
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $projectName
|
||||||
|
* @param string $clientId
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $projectName, string $clientId) {
|
||||||
|
try{
|
||||||
|
$data = [
|
||||||
|
'name' => $projectName,
|
||||||
|
'clientid' => $clientId,
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = Http::asForm()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->post(config('perfexcrm.base_url').'/api/projects/bynameandclientid', $data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class FetchesPerfexCRMTask
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $taskName
|
||||||
|
* @param string $milestoneId
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $taskName, string $milestoneId) {
|
||||||
|
try{
|
||||||
|
$response = Http::withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key'),])
|
||||||
|
->get(config('perfexcrm.base_url').'/api/tasks/bynameandmilestoneid/'.rawurlencode($taskName).'/'.$milestoneId);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class UpdatesPerfexCRMCustomer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $customerId
|
||||||
|
* @param string $companyReference
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $customerId, string $companyName, string $companyReference) {
|
||||||
|
try{
|
||||||
|
$custom_fields = [
|
||||||
|
"customers" => [
|
||||||
|
2 => $companyReference
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'company' => $companyName,
|
||||||
|
'custom_fields' => $custom_fields
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = Http::asJson()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->put(config('perfexcrm.base_url').'/api/customers/'.$customerId, $data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\PerfexCRM\Services;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use App\Classes\Exceptions\MalformedRequestException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class UpdatesPerfexCRMTask
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $taskName
|
||||||
|
* @param string $milestoneId
|
||||||
|
* @param string $projectId
|
||||||
|
* @param string $status, default: 1
|
||||||
|
* @return null|object
|
||||||
|
* @throws MalformedRequestException
|
||||||
|
*/
|
||||||
|
public function execute(string $taskId, string $taskName, string $milestoneId, string $projectId, string $status = "1") {
|
||||||
|
try{
|
||||||
|
$data = [
|
||||||
|
'name' => $taskName,
|
||||||
|
'milestone' => $milestoneId,
|
||||||
|
'startdate' => date('Y-m-d'),
|
||||||
|
'duedate' => date('Y-m-d'),
|
||||||
|
'rel_type' => 'project',
|
||||||
|
'rel_id' => $projectId,
|
||||||
|
'status' => $status,
|
||||||
|
'repeat_every' => '',
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = Http::asJson()->withHeaders([
|
||||||
|
'authtoken' => config('perfexcrm.api_key')])
|
||||||
|
->put(config('perfexcrm.base_url').'/api/tasks/'.$taskId, $data);
|
||||||
|
|
||||||
|
if($response->successful()){
|
||||||
|
$data = $response->json();
|
||||||
|
return (object) $data;
|
||||||
|
}else{
|
||||||
|
Log::error($response);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}catch(\Exception $exception){
|
||||||
|
throw new MalformedRequestException('Unable to get correct response from Perfex CRM server' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,9 +4,27 @@ namespace App\Classes\Modules\Transactions\Services;
|
|||||||
|
|
||||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||||
use App\Models\Transaction;
|
use App\Models\Transaction;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\TransactionToPerfexCRMProcessor;
|
||||||
|
use App\Classes\Modules\PerfexCRM\Processors\NewLeadTaskToPerfexCRMProcessor;
|
||||||
|
|
||||||
class UpdatesTransactionStatus extends AbstractUpdateRecord
|
class UpdatesTransactionStatus extends AbstractUpdateRecord
|
||||||
{
|
{
|
||||||
|
/** @var TransactionToPerfexCRMProcessor */
|
||||||
|
private $transactionToPerfexCRMProcessor;
|
||||||
|
|
||||||
|
/** @var NewLeadTaskToPerfexCRMProcessor */
|
||||||
|
private $newLeadTaskToPerfexCRMProcessor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdatesTransactionStatus constructor.
|
||||||
|
* @param TransactionToPerfexCRMProcessor $transactionToPerfexCRMProcessor
|
||||||
|
* @param NewLeadTaskToPerfexCRMProcessor $newLeadTaskToPerfexCRMProcessor
|
||||||
|
*/
|
||||||
|
public function __construct(TransactionToPerfexCRMProcessor $transactionToPerfexCRMProcessor, NewLeadTaskToPerfexCRMProcessor $newLeadTaskToPerfexCRMProcessor)
|
||||||
|
{
|
||||||
|
$this->transactionToPerfexCRMProcessor = $transactionToPerfexCRMProcessor;
|
||||||
|
$this->newLeadTaskToPerfexCRMProcessor = $newLeadTaskToPerfexCRMProcessor;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Transaction $model
|
* @param Transaction $model
|
||||||
@@ -16,7 +34,11 @@ class UpdatesTransactionStatus extends AbstractUpdateRecord
|
|||||||
*/
|
*/
|
||||||
public function execute(Transaction $model, int $status)
|
public function execute(Transaction $model, int $status)
|
||||||
{
|
{
|
||||||
|
if(config('perfexcrm.is_enabled') == 'true'){
|
||||||
|
$this->transactionToPerfexCRMProcessor->execute($model, $status);
|
||||||
|
// $this->newLeadTaskToPerfexCRMProcessor->execute();
|
||||||
|
}
|
||||||
$model->status = $status;
|
$model->status = $status;
|
||||||
return $this->handler($model);
|
return $this->handler($model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,4 +18,14 @@ final class ApprovalStatus {
|
|||||||
|
|
||||||
public const EXPIRED = 6;
|
public const EXPIRED = 6;
|
||||||
|
|
||||||
|
public const APPROVAL_STATUS_ID = [
|
||||||
|
self::PENDING_SUBMISSION => "Pending Submission",
|
||||||
|
self::PENDING_VERIFICATION => "Pending Verification",
|
||||||
|
self::APPROVED => "Approved",
|
||||||
|
self::COMPLETED => "Completed",
|
||||||
|
self::REJECTED => "Rejected",
|
||||||
|
self::SUSPENDED => "Suspended",
|
||||||
|
self::EXPIRED => "Expired",
|
||||||
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\ValueObjects\Constants;
|
||||||
|
|
||||||
|
class PerfexCRMMilestones
|
||||||
|
{
|
||||||
|
public const MILESTONE_1 = 'MILESTONE 1 - Customer Paid';
|
||||||
|
public const MILESTONE_2 = 'MILESTONE 2 - Order Placed';
|
||||||
|
public const MILESTONE_3 = 'MILESTONE 3 - Purchase Order Approved';
|
||||||
|
public const MILESTONE_4 = 'MILESTONE 4';
|
||||||
|
public const MILESTONE_5 = 'MILESTONE 5';
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\ValueObjects\Constants;
|
||||||
|
|
||||||
|
final class PerfexCRMStatus {
|
||||||
|
|
||||||
|
public const NOT_STARTED = 1;
|
||||||
|
|
||||||
|
public const AWAITING_FEEDBACK = 2;
|
||||||
|
|
||||||
|
public const TESTING = 3;
|
||||||
|
|
||||||
|
public const IN_PROGRESS = 4;
|
||||||
|
|
||||||
|
public const COMPLETED = 5;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\ValueObjects\Constants;
|
||||||
|
|
||||||
|
class PerfexCRMTasks
|
||||||
|
{
|
||||||
|
public const TASK_1 = [
|
||||||
|
'name' => 'Customer Paid',
|
||||||
|
'description' => '',
|
||||||
|
'milestone' => 'MILESTONE 1 - Customer Paid',
|
||||||
|
'reference' => '',
|
||||||
|
'on_task_completion' => '',
|
||||||
|
'status' => PerfexCRMStatus::COMPLETED
|
||||||
|
];
|
||||||
|
|
||||||
|
public const TASK_POST_PAYMENT_1 = [
|
||||||
|
'name' => 'Map Bank Transaction Record',
|
||||||
|
'description' => '○ Purpose: To map a transaction to bank transaction in the bank statement<br>
|
||||||
|
○ Initial Status: In Progress<br>
|
||||||
|
○ Deadline: Same day<br>
|
||||||
|
○ Responsible department: Accounts<br>
|
||||||
|
○ Next step: Change the status of the Approve payment status to "In Progress" upon successful completion of the operation.<br>
|
||||||
|
○ Additional details: ** Any specific requirements or notes for the operation.**<br>
|
||||||
|
○ Dependencies: None<br>
|
||||||
|
○ Outcomes: Bank transaction is mapped successfully, allowing the next steps in the process to be initiated.<br>',
|
||||||
|
'milestone' => '',
|
||||||
|
'reference' => 'TASK_POST_PAYMENT_1',
|
||||||
|
'on_task_completion' => 'TASK_POST_PAYMENT_2',
|
||||||
|
'status' => PerfexCRMStatus::IN_PROGRESS
|
||||||
|
];
|
||||||
|
public const TASK_POST_PAYMENT_2 = [
|
||||||
|
'name' => 'Approve Payment',
|
||||||
|
'description' => '○ Purpose: To verify and approve the customer\'s payment on IZYIM<br>
|
||||||
|
○ Initial Status: Not Started<br>
|
||||||
|
○ Deadline:Same day<br>
|
||||||
|
○ Responsible department: Accounts<br>
|
||||||
|
○ Next step: Change the status of the Issue Shipping Autocount Invoice operation to "In Progress"<br>
|
||||||
|
○ Additional details: When the payment method is FPX or Wallet this task is performed automatically by the system.<br>
|
||||||
|
○ Dependencies: Map Transaction operation must be completed before this operation can begin.<br>
|
||||||
|
○ Outcomes: The payment will be approved in IZYIM, which will release the customer’s goods for delivery.<br>',
|
||||||
|
'milestone' => '',
|
||||||
|
'reference' => 'TASK_POST_PAYMENT_2',
|
||||||
|
'on_task_completion' => 'TASK_POST_PAYMENT_3',
|
||||||
|
'status' => ''
|
||||||
|
];
|
||||||
|
public const TASK_POST_PAYMENT_3 = [
|
||||||
|
'name' => 'Issue Shipping Autocount Invoince',
|
||||||
|
'description' => '○ Purpose: To issue an invoice for the customer\'s payment in accounting software.<br>
|
||||||
|
○ Initial Status: Not Started<br>
|
||||||
|
○ Deadline: Next day<br>
|
||||||
|
○ Responsible department: Accounts<br>
|
||||||
|
○ Next step: Change the status of the Knockoff Invoice operation to "In Progress" upon successful completion.<br>
|
||||||
|
○ Additional details: ** Any specific requirements or notes for the operation.**<br>
|
||||||
|
○ Dependencies: Approve Payment operation must be completed before this operation can begin.<br>
|
||||||
|
○ Outcomes: An invoice will be issued in accounting software for the customer\'s payment.<br>',
|
||||||
|
'milestone' => '',
|
||||||
|
'reference' => 'TASK_POST_PAYMENT_3',
|
||||||
|
'on_task_completion' => 'TASK_POST_PAYMENT_4',
|
||||||
|
'status' => ''
|
||||||
|
];
|
||||||
|
public const TASK_POST_PAYMENT_4 = [
|
||||||
|
'name' => 'Knockoff Invoice',
|
||||||
|
'description' => '○ Purpose: The purpose of this operation is to issue the official receipt and knockoff with invoice for the customer\'s payment.<br>
|
||||||
|
○ Initial Status: Not Started<br>
|
||||||
|
○ Deadline: Next day.<br>
|
||||||
|
○ Responsible Department: Accounts<br>
|
||||||
|
○ Next Step: None<br>
|
||||||
|
○ Additional Details: ** Any specific requirements or notes for the operation.**<br>
|
||||||
|
○ Dependencies: Issue Shipping Autocount Invoice operation must be completed before this operation can begin.<br>
|
||||||
|
○ Outcomes: The customer’s payment is applied to the accounting software invoice and invoice is marked as paid.<br>',
|
||||||
|
'milestone' => '',
|
||||||
|
'reference' => 'TASK_POST_PAYMENT_4',
|
||||||
|
'on_task_completion' => '',
|
||||||
|
'status' => ''
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Transactions\Processors\ApproveShippingInvoiceTransactionProcessor;
|
||||||
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||||
|
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||||
|
use App\Models\Transaction;
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
|
class approveInvoice extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name and signature of the console command.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $signature = 'approve:invoice';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = 'Command description';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new command instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$invoices = Transaction::where('type', TransactionType::SHIPPING_INVOICE)->where('status', ApprovalStatus::PENDING_SUBMISSION)->get();
|
||||||
|
|
||||||
|
foreach ($invoices as $invoice) {
|
||||||
|
$packingList = $invoice->owner;
|
||||||
|
$order = $packingList->owner;
|
||||||
|
|
||||||
|
try {
|
||||||
|
(App()->make(ApproveShippingInvoiceTransactionProcessor::class))->execute($packingList);
|
||||||
|
$this->info('Invoice Approved for reference ' . $order->reference . '.');
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
$this->info('Failed to Approve invoice for reference ' . $order->reference . '. Exception: ' . $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'base_url' => env('PERFEXCRM_BASE_URL', 'http://192.168.1.100:8084'), //cief todo: Update crm api domain here
|
||||||
|
'api_key' => env('PERFEXCRM_API_KEY', ''),
|
||||||
|
'is_enabled' => env('PERFEXCRM_IS_ENABLED', 'true'),
|
||||||
|
];
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
FROM php:7.4-fpm
|
||||||
|
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
RUN docker-php-ext-install pdo pdo_mysql
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
libfreetype6-dev \
|
||||||
|
libjpeg62-turbo-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libzip-dev \
|
||||||
|
zip \
|
||||||
|
cron \
|
||||||
|
supervisor \
|
||||||
|
nano \
|
||||||
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||||
|
&& docker-php-ext-install -j$(nproc) gd \
|
||||||
|
&& docker-php-ext-install zip \
|
||||||
|
&& docker-php-ext-install bcmath
|
||||||
|
|
||||||
|
COPY --from=composer:1.9.3 /usr/bin/composer /usr/bin/composer
|
||||||
|
|
||||||
|
#NODEJS & NPM
|
||||||
|
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
|
||||||
|
RUN apt-get -y install nodejs
|
||||||
|
|
||||||
|
RUN chown -R www-data:www-data /var/www
|
||||||
|
RUN chmod 755 /var/www
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
networks:
|
||||||
|
shipping-portal-staging:
|
||||||
|
|
||||||
|
services:
|
||||||
|
#################################################################
|
||||||
|
nginx:
|
||||||
|
image: nginx:stable-alpine
|
||||||
|
container_name: shipping-portal-ngnix
|
||||||
|
ports:
|
||||||
|
- "8081:80"
|
||||||
|
volumes:
|
||||||
|
- ../:/var/www/html
|
||||||
|
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
|
||||||
|
depends_on:
|
||||||
|
- php
|
||||||
|
- mysql
|
||||||
|
networks:
|
||||||
|
- shipping-portal-staging
|
||||||
|
#################################################################
|
||||||
|
mysql:
|
||||||
|
image: mysql:5.7.29
|
||||||
|
container_name: shipping-portal-mysql
|
||||||
|
restart: unless-stopped
|
||||||
|
tty: true
|
||||||
|
ports:
|
||||||
|
- 3307:3306
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_USER: root
|
||||||
|
MYSQL_ROOT_PASSWORD: root
|
||||||
|
MYSQL_DATABASE: shipping-portal-db
|
||||||
|
MYSQL_USER: master
|
||||||
|
MYSQL_PASSWORD: cDe7gcrRBWetaAP
|
||||||
|
volumes:
|
||||||
|
- mysql-data:/var/lib/mysql
|
||||||
|
networks:
|
||||||
|
- shipping-portal-staging
|
||||||
|
#################################################################
|
||||||
|
php:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: shipping-portal-php
|
||||||
|
volumes:
|
||||||
|
- ../:/var/www/html
|
||||||
|
ports:
|
||||||
|
- "9001:9000"
|
||||||
|
networks:
|
||||||
|
- shipping-portal-staging
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mysql-data:
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
index index.php index.html;
|
||||||
|
server_name localhost;
|
||||||
|
error_log /var/log/nginx/error.log;
|
||||||
|
access_log /var/log/nginx/access.log;
|
||||||
|
root /var/www/html/public;
|
||||||
|
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
try_files $uri =404;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
|
fastcgi_pass php:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
fastcgi_intercept_errors on;
|
||||||
|
fastcgi_keep_conn on;
|
||||||
|
fastcgi_param PHP_VALUE "auto_prepend_file= \n allow_url_include=Off \n output_buffering=Off \n output_buffering=4096";
|
||||||
|
}
|
||||||
|
}
|
||||||
+120
-25
@@ -742,33 +742,33 @@ Route::get('/invoices/combine/{ids}', function($ids){
|
|||||||
return $pdf->download('combined_invoice_.pdf');
|
return $pdf->download('combined_invoice_.pdf');
|
||||||
})->name('invoice.combined_summary');
|
})->name('invoice.combined_summary');
|
||||||
|
|
||||||
Route::get('/generate/invoices', function(){
|
// Route::get('/generate/invoices', function(){
|
||||||
$packingLists = (App()->make(ListsPackingLists::class))->execute(['does_not_have_transaction_type' => 1, 'type' => 2]);
|
// $packingLists = (App()->make(ListsPackingLists::class))->execute(['does_not_have_transaction_type' => 1, 'type' => 2]);
|
||||||
foreach ($packingLists as $packingList){
|
// foreach ($packingLists as $packingList){
|
||||||
$order = $packingList->owner;
|
// $order = $packingList->owner;
|
||||||
if(!($order instanceof Order)) {
|
// if(!($order instanceof Order)) {
|
||||||
echo '<span style="color: red;">failed to generate...</span><br>';
|
// echo '<span style="color: red;">failed to generate...</span><br>';
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
|
|
||||||
$companyModule = $order->companyModule;
|
// $companyModule = $order->companyModule;
|
||||||
$billingAddress = $companyModule->addresses()->where('type', \App\Classes\ValueObjects\Constants\AddressType::BILLING)->first();
|
// $billingAddress = $companyModule->addresses()->where('type', \App\Classes\ValueObjects\Constants\AddressType::BILLING)->first();
|
||||||
$deliveryAddress = $order->addresses()->where('status', ApprovalStatus::APPROVED)->first();
|
// $deliveryAddress = $order->addresses()->where('status', ApprovalStatus::APPROVED)->first();
|
||||||
|
|
||||||
$postCodes = \App\Models\SegmentConstant::whereIn('reference', ['CENTER_POSTCODE', 'OUTSTATION_POSTCODE'])->get()->pluck('value')->flatten();
|
// $postCodes = \App\Models\SegmentConstant::whereIn('reference', ['CENTER_POSTCODE', 'OUTSTATION_POSTCODE'])->get()->pluck('value')->flatten();
|
||||||
|
|
||||||
if(!!$billingAddress && in_array($deliveryAddress->postcode, $postCodes->toArray())){
|
// if(!!$billingAddress && in_array($deliveryAddress->postcode, $postCodes->toArray())){
|
||||||
try {
|
// try {
|
||||||
(App()->make(CreateInvoiceTransactionProcessor::class))->execute($packingList);
|
// (App()->make(CreateInvoiceTransactionProcessor::class))->execute($packingList);
|
||||||
echo '<span style="color: green;">Invoice Generated...</span><br>';
|
// echo '<span style="color: green;">Invoice Generated...</span><br>';
|
||||||
|
|
||||||
} catch (Exception $exception){
|
// } catch (Exception $exception){
|
||||||
echo '<span style="color: red;">failed to generate...</span><br>';
|
// echo '<span style="color: red;">failed to generate...</span><br>';
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
echo '<span style="color: red;">failed to generate...</span><br>';
|
// echo '<span style="color: red;">failed to generate...</span><br>';
|
||||||
}
|
// }
|
||||||
})->name('generate.invoices');
|
// })->name('generate.invoices');
|
||||||
|
|
||||||
Route::get('/invoices/approve', function(Request $request){
|
Route::get('/invoices/approve', function(Request $request){
|
||||||
// whereDoesntHave
|
// whereDoesntHave
|
||||||
@@ -778,8 +778,10 @@ Route::get('/invoices/approve', function(Request $request){
|
|||||||
$packingList = $invoice->owner;
|
$packingList = $invoice->owner;
|
||||||
$order = $packingList->owner;
|
$order = $packingList->owner;
|
||||||
|
|
||||||
if(in_array($order->reference, json_decode($request->input('exclude')))){
|
if ($request->input('exclude')){
|
||||||
continue;
|
if(in_array($order->reference, json_decode($request->input('exclude')))){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -795,4 +797,97 @@ Route::get('/invoices/approve', function(Request $request){
|
|||||||
|
|
||||||
})->name('invoices.approve');
|
})->name('invoices.approve');
|
||||||
|
|
||||||
|
Route::get('/invoices/show-duplicated', function(Request $request){
|
||||||
|
$transactionWithMultipleInvoice = DB::table('transactions')
|
||||||
|
->where('type', TransactionType::SHIPPING_INVOICE)
|
||||||
|
->where('status', '!=' , ApprovalStatus::COMPLETED)
|
||||||
|
->where('deleted_at', null)
|
||||||
|
->select('owner_id', DB::raw('count(*) as count'))
|
||||||
|
->groupBy('owner_id')
|
||||||
|
->having('count', '>', 1)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// delete invoice type suspended
|
||||||
|
|
||||||
|
echo '<table>';
|
||||||
|
echo "<tr>";
|
||||||
|
echo "<td style='border:1px solid'>owner_id</td>";
|
||||||
|
echo "<td style='border:1px solid'>count</td>";
|
||||||
|
echo "</tr>";
|
||||||
|
|
||||||
|
$duplicatedOrderId = [];
|
||||||
|
foreach($transactionWithMultipleInvoice as $invoice) {
|
||||||
|
$duplicatedOrderId[] = $invoice->owner_id;
|
||||||
|
echo "<tr>";
|
||||||
|
echo "<td style='border:1px solid'>$invoice->owner_id</td>";
|
||||||
|
echo "<td style='border:1px solid'>$invoice->count</td>";
|
||||||
|
echo "</tr>";
|
||||||
|
}
|
||||||
|
echo '</table>';
|
||||||
|
|
||||||
|
$duplicatedInvoice = Transaction::whereIn('owner_id', $duplicatedOrderId)->orderByDesc('owner_id')->get();
|
||||||
|
// dd($duplicatedInvoice);
|
||||||
|
echo '<br>';
|
||||||
|
echo '<table>';
|
||||||
|
echo "<tr>";
|
||||||
|
echo "<td style='border:1px solid'>Order Reference</td>";
|
||||||
|
echo "<td style='border:1px solid'>Status</td>";
|
||||||
|
echo "<td style='border:1px solid'>Invoice Owner ID</td>";
|
||||||
|
echo "<td style='border:1px solid'>Invoice Owner ID</td>";
|
||||||
|
echo "</tr>";
|
||||||
|
|
||||||
|
foreach($duplicatedInvoice as $invoice) {
|
||||||
|
$order = $invoice->owner->owner;
|
||||||
|
echo "<tr>";
|
||||||
|
echo '<td style="border:1px solid"><a target="_blank" href="'.route('order.show', $order->reference).'">'. $order->reference.' - </a>' . $order->created_at . '</td>';
|
||||||
|
echo "<td style='border:1px solid'>".ApprovalStatus::APPROVAL_STATUS_ID[$invoice->status]."</td>";
|
||||||
|
echo "<td style='border:1px solid'>$invoice->owner_id</td>";
|
||||||
|
echo "<td style='border:1px solid'>$invoice->amount</td>";
|
||||||
|
echo "</tr>";
|
||||||
|
}
|
||||||
|
echo '</table>';
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Route::get('/invoices/delete-duplicated', function(Request $request){
|
||||||
|
$duplicatedInvoices = DB::table('transactions')
|
||||||
|
->where('type', TransactionType::SHIPPING_INVOICE)
|
||||||
|
->where('status', '!=' , ApprovalStatus::COMPLETED)
|
||||||
|
->where('deleted_at', null)
|
||||||
|
->select('owner_id', DB::raw('count(*) as count'))
|
||||||
|
->groupBy('owner_id')
|
||||||
|
->having('count', '>', 1)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$duplicatedInvoices = Transaction::whereIn('owner_id', $duplicatedInvoices->pluck('owner_id'))->get()->groupBy('owner_id');
|
||||||
|
|
||||||
|
foreach($duplicatedInvoices as $invoice) {
|
||||||
|
$packingList = $invoice->first()->owner;
|
||||||
|
$order = $packingList->owner;
|
||||||
|
|
||||||
|
$paidInvoice = $packingList->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->where('status', ApprovalStatus::COMPLETED)->get();
|
||||||
|
|
||||||
|
$unpaidInvoices = $packingList->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::PENDING_SUBMISSION, ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::APPROVED])->orderBy('id', 'desc')->get();
|
||||||
|
|
||||||
|
if (count($paidInvoice)) {
|
||||||
|
$packingList->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->where('status', '!=', ApprovalStatus::COMPLETED)->delete();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete duplicated invoices
|
||||||
|
$unpaidInvoicesIds = $unpaidInvoices->pluck('id')->toArray();
|
||||||
|
array_shift($unpaidInvoicesIds);
|
||||||
|
Transaction::whereIn('id', $unpaidInvoicesIds)->delete();
|
||||||
|
|
||||||
|
// delete expired invoices
|
||||||
|
$packingList->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->where('status', '!=', ApprovalStatus::EXPIRED)->delete();
|
||||||
|
|
||||||
|
// delete suspended invoices
|
||||||
|
$suspendedInvoices = $packingList->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->where('status', '!=', ApprovalStatus::SUSPENDED)->orderBy('id', 'desc')->get();
|
||||||
|
$suspendedInvoicesIds = $suspendedInvoices->pluck('id')->toArray();
|
||||||
|
array_shift($suspendedInvoicesIds);
|
||||||
|
Transaction::whereIn('id', $suspendedInvoicesIds)->delete();
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user