mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
73 lines
3.2 KiB
PHP
73 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Bookings\Processors;
|
|
|
|
|
|
use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject;
|
|
use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor;
|
|
use App\Classes\Modules\Transactions\Processors\CreatePurchaseOrderTransactionProcessor;
|
|
use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber;
|
|
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
|
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
use App\Models\Booking;
|
|
|
|
class CreatePurchaseOrderFor1688OrderProcessor
|
|
{
|
|
/** @var GeneratesTransactionBillNumber */
|
|
private $generatesTransactionBillNumber;
|
|
|
|
/** @var CreatePurchaseOrderTransactionProcessor */
|
|
private $createPurchaseOrderTransactionProcessor;
|
|
|
|
/** @var UpdatesTransactionStatus */
|
|
private $updatesTransactionStatus;
|
|
|
|
/** @var CreateInvoiceTransactionProcessor */
|
|
private $createInvoiceTransactionProcessor;
|
|
|
|
/**
|
|
* CreatePurchaseOrderFor1688OrderProcessor constructor.
|
|
* @param GeneratesTransactionBillNumber $generatesTransactionBillNumber
|
|
* @param CreatePurchaseOrderTransactionProcessor $createPurchaseOrderTransactionProcessor
|
|
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
|
* @param CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor
|
|
*/
|
|
public function __construct(GeneratesTransactionBillNumber $generatesTransactionBillNumber, CreatePurchaseOrderTransactionProcessor $createPurchaseOrderTransactionProcessor, UpdatesTransactionStatus $updatesTransactionStatus, CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor)
|
|
{
|
|
$this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
|
|
$this->createPurchaseOrderTransactionProcessor = $createPurchaseOrderTransactionProcessor;
|
|
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
|
$this->createInvoiceTransactionProcessor = $createInvoiceTransactionProcessor;
|
|
}
|
|
|
|
public function execute(Booking $booking){
|
|
$billNumber = $this->generatesTransactionBillNumber->execute('PO-');
|
|
|
|
$products = [
|
|
[
|
|
'description' => 'please refer to the attachment below',
|
|
'quantity' => 1,
|
|
'stockCode' => '',
|
|
'unit_price' => $booking->fix_amount
|
|
]
|
|
];
|
|
|
|
$total = collect($products)->sum(function($product){
|
|
return $product['quantity'] * floatval(str_replace(',', '', $product['unit_price']));
|
|
});
|
|
|
|
$object = new TransactionObject($billNumber, TransactionType::PURCHASE_ORDER, $booking->company->id, 1,
|
|
1, PaymentMethodType::CASH,
|
|
$total, $total, $booking->fix_currency_id, $booking->fix_currency_id,
|
|
1, 0, 0, null, ApprovalStatus::PENDING_SUBMISSION, $products);
|
|
|
|
$purchaseOrder = $this->createPurchaseOrderTransactionProcessor->execute($booking, $object);
|
|
|
|
$this->updatesTransactionStatus->execute($purchaseOrder, ApprovalStatus::APPROVED);
|
|
|
|
$this->createInvoiceTransactionProcessor->execute($booking);
|
|
}
|
|
|
|
} |