diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php
index fb0b6404..1997eac4 100644
--- a/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php
+++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php
@@ -5,41 +5,15 @@ namespace App\Classes\Modules\Transactions\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\PackingLists\Services\FetchesPackingList;
-use App\Classes\Modules\SegmentConstants\Services\FetchesSegmentConstant;
-use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber;
-use App\Classes\Modules\Transactions\Services\CreatesTransaction;
-use App\Classes\Modules\Transactions\Services\CreatesTransactionDetail;
-use App\Classes\Modules\Documents\Services\CreatesDocument;
-use App\Classes\Modules\Documents\Services\CreatesFiles;
-use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject;
-use App\Classes\Modules\Transactions\DataTransferObjects\TransactionDetailObject;
-use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
-
-use App\Classes\ValueObjects\Constants\OrderRoleTypes;
-use App\Classes\ValueObjects\Constants\PackingListType;
-use App\Classes\ValueObjects\Constants\TransactionType;
-use App\Classes\ValueObjects\Constants\PaymentMethodType;
-use App\Classes\ValueObjects\Constants\ApprovalStatus;
-use App\Classes\ValueObjects\Constants\DocumentType;
-use App\Classes\ValueObjects\Constants\PackageType;
-use App\Classes\ValueObjects\Constants\SegmentConstants;
-use App\Classes\ValueObjects\Constants\TransactionDetailType;
-
-use App\Models\CompanyModule;
-use App\Models\Document;
-use App\Models\PackingList;
-use App\Models\Transaction;
-use Carbon\Carbon;
+use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Storage;
-use Illuminate\Support\Str;
-use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf;
class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic
{
+
/**
* @return array
*/
@@ -53,214 +27,26 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic
/** @var FetchesPackingList */
private $fetchesPackingList;
- /** @var FetchesSegmentConstant */
- private $fetchesSegmentConstant;
+ /** @var CreateInvoiceTransactionProcessor */
+ private $createInvoiceTransactionProcessor;
- /** @var GeneratesTransactionBillNumber */
- private $generatesTransactionBillNumber;
-
- /** @var CreatesTransaction */
- private $createsTransaction;
-
- /** @var CreatesTransactionDetail */
- private $createsTransactionDetail;
-
- /** @var CreatesDocument */
- private $createsDocument;
-
- /** @var CreatesFiles */
- private $createsFile;
-
- public function __construct(
- FetchesPackingList $fetchesPackingList,
- FetchesSegmentConstant $fetchesSegmentConstant,
- GeneratesTransactionBillNumber $generatesTransactionBillNumber,
- CreatesTransaction $createsTransaction,
- CreatesTransactionDetail $createsTransactionDetail,
- CreatesDocument $createsDocument,
- CreatesFiles $createsFile
- )
+ /**
+ * @param FetchesPackingList $fetchesPackingList
+ * @param CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor
+ */
+ public function __construct(FetchesPackingList $fetchesPackingList, CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor)
{
-
$this->fetchesPackingList = $fetchesPackingList;
- $this->fetchesSegmentConstant = $fetchesSegmentConstant;
- $this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
- $this->createsTransaction = $createsTransaction;
- $this->createsTransactionDetail = $createsTransactionDetail;
- $this->createsDocument = $createsDocument;
- $this->createsFile = $createsFile;
+ $this->createInvoiceTransactionProcessor = $createInvoiceTransactionProcessor;
}
public function logic(Request $request) : JsonResponse
{
+
$packing_list = $this->fetchesPackingList->execute(['id' => $request->input('packing_list_id')]);
- $packing_list = PackingList::where('reference', $packing_list->reference)->where('type', PackingListType::SHIPPING_PACKING_LIST)->first();
-
- $billable_packing_list = $packing_list->packingLists()->first();
-
- $billable_packing_list = $billable_packing_list ? $billable_packing_list : $packing_list;
-
- $cbm = round($billable_packing_list->packages->where('type', '!=', PackageType::OVER_WEIGHT)->sum(function($package) {
- return ($package->width / 100) * ($package->height / 100) *($package->length / 100) * ($package->quantity);
- }), 3);
-
- $over_weight_cbm = round($billable_packing_list->packages->where('type', PackageType::OVER_WEIGHT)->sum(function($package) {
- return ($package->width / 100) * ($package->height / 100) *($package->length / 100) * ($package->quantity);
- }), 3);
-
- $order = $packing_list->owner;
- $companyModule = $order->companyModule;
- $connection = $companyModule->connections()->first();
- $address = $order->addresses()->first();
-
- $base_price_constant = $this->fetchesSegmentConstant->execute(['segment_id' => 1, 'reference' => SegmentConstants::BASE_PRICE]);
- $warehouse_rate_constant = $this->fetchesSegmentConstant->execute(['segment_id' => 1, 'reference' => SegmentConstants::WAREHOUSE_RATE]);
- $state_rate_constant = $this->fetchesSegmentConstant->execute(['segment_id' => 1, 'reference' => SegmentConstants::STATE_RATE]);
- $center_postcode_constant = $this->fetchesSegmentConstant->execute(['segment_id' => 1, 'reference' => SegmentConstants::CENTER_POSTCODE]);
- $outstation_postcode_constant = $this->fetchesSegmentConstant->execute(['segment_id' => 1, 'reference' => SegmentConstants::OUTSTATION_POSTCODE]);
-
- $noMinimumCharge = $connection->segments()->where('segments.id', 2)->first();
-
- $minimum_cbm = 0.3;
- $state_select = '';
-
- $segment_price = $connection->segments()->whereHas('constants', function($query){
- return $query->where('reference', SegmentConstants::CUSTOM_PRICE);
- })->get()->map(function($segment){
- return (float) $segment->constants()->first()->value[0];
- })->sort()->first();
- $segment_price = $segment_price ? $segment_price : 0;
-
- $packing_list_drop_date = PackingList::where('reference', $packing_list->reference)->where('type', 1)->first()->transports->first()->drop_date->format('Y-m-d');
- $base_price = $this->getConstantByKey($base_price_constant, $packing_list_drop_date);
-
- $warehouseId = $order->orderRoles()->where('role_id', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->company_module_id;
- $selected_warehouse_rate = $this->getConstantByKey($warehouse_rate_constant, $warehouseId);
- $warehouse_rate = is_object($selected_warehouse_rate) ? $selected_warehouse_rate->amount : 0;
-
- $stateId = $address->state_id;
- $state_rate_constant = $this->getConstantByKey($state_rate_constant, $stateId);
-
- // get $state_rate
- $postcode = $address->postcode;
- $this->checkPostcodeExistInConstant($center_postcode_constant, $postcode) === true ? $state_select = 'center' : '' ;
- $this->checkPostcodeExistInConstant($outstation_postcode_constant, $postcode) === true ? $state_select = 'outstation' : '' ;
- $state_rate_constant = (array)$state_rate_constant;
- $state_rate = $state_select == '' ? 0 : $state_rate_constant[$state_select];
-
- $container = $packing_list->containers()->first();
- $containerPackingLists = collect();
- $hasMinimumCharge = null;
-
- foreach ($container->packingLists as $packingList){
- if($packingList->owner instanceof CompanyModule) continue;
- if($packingList->owner->companyModule->id !== $companyModule->id) continue;
- $containerPackingLists->push($packingList);
-
- if(!$hasMinimumCharge) {
- $hasMinimumCharge = $packingList->transactions()->whereHas('transactionDetails', function ($query){
- $query->where('reference', 'MIN_CBM_CHARGES');
- })->first();
- }
-
- }
-
- $totalContainerCbm = $containerPackingLists->sum(function($packingList){
- $billable_packing_list = $packingList->packingLists()->first();
- $billable_packing_list = $billable_packing_list ? $billable_packing_list : $packingList;
- return $billable_packing_list->packages->sum(function($package) {
- return ($package->width / 100) * ($package->height / 100) *($package->length / 100) * ($package->quantity);
- });
- });
-
- $minimum_charge = $minimum_cbm - $totalContainerCbm;
- $minimum_charge = ($minimum_charge < 0) ? 0 : $minimum_charge;
- $minimum_charge = $noMinimumCharge ? 0 : $minimum_charge;
-
- $minimum_charge = $noMinimumCharge ? 0 : round($minimum_charge, 3);
-
-
- if($hasMinimumCharge) {
- $minimum_charge = 0;
- }
-
- $price_cbm = $base_price + $segment_price + $warehouse_rate + $state_rate;
-
- $total_cbm = $price_cbm * ($cbm + $minimum_charge + $over_weight_cbm);
-
- $billNumber = $this->generatesTransactionBillNumber->execute('SHIP-');
-
- $object = new TransactionObject(
- $billNumber,
- TransactionType::SHIPPING_INVOICE,
- 1,
- $order->company_module_id,
- 1,
- PaymentMethodType::CASH,
- $total_cbm,
- $total_cbm,
- 1,
- 1,
- 0,
- 0,
- 0,
- null,
- ApprovalStatus::PENDING_SUBMISSION
- );
-
- /** @var Transaction $invoice_transaction */
- $invoice_transaction = $this->createsTransaction->execute($packing_list, $object);
-
- $object_detail = new TransactionDetailObject(
- 'SHIPPING_FEE',
- TransactionDetailType::SHIPPING_FEE.'
'.round($packing_list->packages->where('type', '!=', PackageType::OVER_WEIGHT)->sum('quantity'), 3).' CTNS - '.round($cbm, 3).' CBM',
- $cbm,
- $price_cbm
- );
-
- $this->createsTransactionDetail->execute($invoice_transaction, $object_detail);
-
- if ($over_weight_cbm > 0) {
- $object_detail = new TransactionDetailObject(
- 'OVER_WEIGHT_CHARGES',
- TransactionDetailType::OVER_WEIGHT_CHARGES,
- $over_weight_cbm,
- $price_cbm
- );
-
- $this->createsTransactionDetail->execute($invoice_transaction, $object_detail);
- }
-
- if ($minimum_charge > 0) {
- $object_detail = new TransactionDetailObject(
- 'MIN_CBM_CHARGES',
- TransactionDetailType::MIN_CBM_CHARGES,
- $minimum_charge,
- $price_cbm
- );
-
- $this->createsTransactionDetail->execute($invoice_transaction, $object_detail);
- }
+ $this->createInvoiceTransactionProcessor->execute($packing_list);
return $this->response([]);
}
- function getConstantByKey($segmentConstantObject, $key) {
- if ($segmentConstantObject) {
- $base_rate = (array) $segmentConstantObject->value;
- $base_rate = array_key_exists($key, $base_rate) === true ? $base_rate[$key] : 0;
-
- return $base_rate;
- }
- }
-
- function checkPostcodeExistInConstant($segmentConstantObject, $postcode) {
- $segmentConstantObject = $segmentConstantObject->value;
- if (!empty($segmentConstantObject)) {
- return in_array($postcode, $segmentConstantObject);
- } else {
- return false;
- }
- }
-
}
diff --git a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php
index d0a70946..5ffa1390 100644
--- a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php
+++ b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php
@@ -1,229 +1,239 @@
listsTransactions = $listsTransactions;
- $this->createsTransaction = $createsTransaction;
+ $this->fetchesPackingList = $fetchesPackingList;
+ $this->fetchesSegmentConstant = $fetchesSegmentConstant;
$this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
- $this->calculatesBookingPaidAmount = $calculatesBookingPaidAmount;
- $this->calculatesBookingTransferredAmount = $calculatesBookingTransferredAmount;
- $this->fetchesServiceConfigurations = $fetchesServiceConfigurations;
- $this->calculatesBookingCurrencyAverageRate = $calculatesBookingCurrencyAverageRate;
- $this->fetchesCompany = $fetchesCompany;
- $this->createsDocument = $createsDocument;
- $this->createsFile = $createsFile;
- $this->updatesBookingStatus = $updatesBookingStatus;
+ $this->createsTransaction = $createsTransaction;
+ $this->createsTransactionDetail = $createsTransactionDetail;
}
-
- /**
- * @param Booking $booking
- * @return void
- * @throws \App\Classes\Exceptions\MalformedRequestException
- */
- public function execute(Booking $booking)
+ public function execute(PackingList $packingList) : JsonResponse
{
- $payment_amount = $this->calculatesBookingTransferredAmount->execute($booking, $booking->fix_currency_id);
- $booking_amount = $booking->fix_amount;
+ $packing_list = PackingList::where('reference', $packingList->reference)->where('type', PackingListType::SHIPPING_PACKING_LIST)->first();
+
+ $billable_packing_list = $packing_list->packingLists()->first();
+
+ $billable_packing_list = $billable_packing_list ? $billable_packing_list : $packing_list;
+
+ $cbm = round($billable_packing_list->packages->where('type', '!=', PackageType::OVER_WEIGHT)->sum(function($package) {
+ return ($package->width / 100) * ($package->height / 100) *($package->length / 100) * ($package->quantity);
+ }), 3);
+
+ $over_weight_cbm = round($billable_packing_list->packages->where('type', PackageType::OVER_WEIGHT)->sum(function($package) {
+ return ($package->width / 100) * ($package->height / 100) *($package->length / 100) * ($package->quantity);
+ }), 3);
+
+ $order = $packing_list->owner;
+ $companyModule = $order->companyModule;
+ $connection = $companyModule->connections()->first();
+ $address = $order->addresses()->first();
+
+ $base_price_constant = $this->fetchesSegmentConstant->execute(['segment_id' => 1, 'reference' => SegmentConstants::BASE_PRICE]);
+ $warehouse_rate_constant = $this->fetchesSegmentConstant->execute(['segment_id' => 1, 'reference' => SegmentConstants::WAREHOUSE_RATE]);
+ $state_rate_constant = $this->fetchesSegmentConstant->execute(['segment_id' => 1, 'reference' => SegmentConstants::STATE_RATE]);
+ $center_postcode_constant = $this->fetchesSegmentConstant->execute(['segment_id' => 1, 'reference' => SegmentConstants::CENTER_POSTCODE]);
+ $outstation_postcode_constant = $this->fetchesSegmentConstant->execute(['segment_id' => 1, 'reference' => SegmentConstants::OUTSTATION_POSTCODE]);
+
+ $noMinimumCharge = $connection->segments()->where('segments.id', 2)->first();
+
+ $minimum_cbm = 0.3;
+ $state_select = '';
+
+ $segment_price = $connection->segments()->whereHas('constants', function($query){
+ return $query->where('reference', SegmentConstants::CUSTOM_PRICE);
+ })->get()->map(function($segment){
+ return (float) $segment->constants()->first()->value[0];
+ })->sort()->first();
+ $segment_price = $segment_price ? $segment_price : 0;
+
+ $packing_list_drop_date = PackingList::where('reference', $packing_list->reference)->where('type', 1)->first()->transports->first()->drop_date->format('Y-m-d');
+ $base_price = $this->getConstantByKey($base_price_constant, $packing_list_drop_date);
+
+ $warehouseId = $order->orderRoles()->where('role_id', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->company_module_id;
+ $selected_warehouse_rate = $this->getConstantByKey($warehouse_rate_constant, $warehouseId);
+ $warehouse_rate = is_object($selected_warehouse_rate) ? $selected_warehouse_rate->amount : 0;
+
+ $stateId = $address->state_id;
+ $state_rate_constant = $this->getConstantByKey($state_rate_constant, $stateId);
+
+ // get $state_rate
+ $postcode = $address->postcode;
+ $this->checkPostcodeExistInConstant($center_postcode_constant, $postcode) === true ? $state_select = 'center' : '' ;
+ $this->checkPostcodeExistInConstant($outstation_postcode_constant, $postcode) === true ? $state_select = 'outstation' : '' ;
+ $state_rate_constant = (array)$state_rate_constant;
+ $state_rate = $state_select == '' ? 0 : $state_rate_constant[$state_select];
+
+ $container = $packing_list->containers()->first();
+ $containerPackingLists = collect();
+ $hasMinimumCharge = null;
+
+ foreach ($container->packingLists as $packingList){
+ if($packingList->owner instanceof CompanyModule) continue;
+ if($packingList->owner->companyModule->id !== $companyModule->id) continue;
+ $containerPackingLists->push($packingList);
+
+ if(!$hasMinimumCharge) {
+ $hasMinimumCharge = $packingList->transactions()->whereHas('transactionDetails', function ($query){
+ $query->where('reference', 'MIN_CBM_CHARGES');
+ })->first();
+ }
- if ((float) $booking_amount !== (float) $payment_amount) {
- return;
}
- $po_order_transaction = $booking->transactions()
- ->where('type', TransactionType::PURCHASE_ORDER)
- ->complete()
- ->first();
+ $totalContainerCbm = $containerPackingLists->sum(function($packingList){
+ $billable_packing_list = $packingList->packingLists()->first();
+ $billable_packing_list = $billable_packing_list ? $billable_packing_list : $packingList;
+ return $billable_packing_list->packages->sum(function($package) {
+ return ($package->width / 100) * ($package->height / 100) *($package->length / 100) * ($package->quantity);
+ });
+ });
- $constants = SegmentConstant::where('reference', SegmentConstants::SERVICE_TYPE)->where('detail->id', $booking->service->id)->first();
+ $minimum_charge = $minimum_cbm - $totalContainerCbm;
+ $minimum_charge = ($minimum_charge < 0) ? 0 : $minimum_charge;
+ $minimum_charge = $noMinimumCharge ? 0 : $minimum_charge;
- if($constants->detail->is_billable && !$po_order_transaction) {
- return;
+ $minimum_charge = $noMinimumCharge ? 0 : round($minimum_charge, 3);
+
+
+ if($hasMinimumCharge) {
+ $minimum_charge = 0;
}
- $transaction = $booking->transactions()
- ->where('type', TransactionType::PAYMENT)
- ->first();
+ $price_cbm = $base_price + $segment_price + $warehouse_rate + $state_rate;
- $billNumber = $this->generatesTransactionBillNumber->execute('INV-');
+ $total_cbm = $price_cbm * ($cbm + $minimum_charge + $over_weight_cbm);
- $booking_currency_average_rate = $this->calculatesBookingCurrencyAverageRate->execute($booking, TransactionType::PAYMENT);
+ $billNumber = $this->generatesTransactionBillNumber->execute('SHIP-');
- $total_service_charge = $booking->transactions()
- ->where('type', TransactionType::PAYMENT)
- ->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
- ->sum('service_charge');
-
- $total_tax = $booking->transactions()
- ->where('type', TransactionType::PAYMENT)
- ->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
- ->sum('tax');
-
- $transaction_object = new TransactionObject(
+ $object = new TransactionObject(
$billNumber,
- TransactionType::INVOICE,
- $transaction->issuer,
- $transaction->receiver,
- $transaction->recipient_bank_account_id,
- $transaction->payment_method,
- $payment_amount,
- $booking_amount,
- $transaction->currency_id,
- $transaction->original_currency_id,
- $booking_currency_average_rate,
- $total_tax,
- $total_service_charge,
+ TransactionType::SHIPPING_INVOICE,
+ 1,
+ $order->company_module_id,
+ 1,
+ PaymentMethodType::CASH,
+ $total_cbm,
+ $total_cbm,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
null,
- ApprovalStatus::APPROVED
- );
- $invoice_transaction = $this->createsTransaction->execute($po_order_transaction->booking, $transaction_object);
-
- $supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]);
-
- $purchase_order_pdf = LaravelMpdf::loadView('pages.pdfs.purchase_order', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
- $document_object = new DocumentObject(
- DocumentType::PURCHASE_ORDER,
- [chunk_split('data:application/pdf;base64,'.base64_encode($purchase_order_pdf->output()))],
- '',
- ApprovalStatus::COMPLETED,
- 'purchase_orders'
- );
- $document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
- $this->createsFile->execute($document, $document_object);
-
- $deliver_order_pdf = LaravelMpdf::loadView('pages.pdfs.deliver_order', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
- $document_object = new DocumentObject(
- DocumentType::DELIVER_ORDER,
- [chunk_split('data:application/pdf;base64,'.base64_encode($deliver_order_pdf->output()))],
- '',
- ApprovalStatus::COMPLETED,
- 'delivery_orders'
+ ApprovalStatus::PENDING_SUBMISSION
);
- /** @var Document $document */
- $document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
- $this->createsFile->execute($document, $document_object);
+ /** @var Transaction $invoice_transaction */
+ $invoice_transaction = $this->createsTransaction->execute($packing_list, $object);
-
- $invoice_pdf = LaravelMpdf::loadView('pages.pdfs.invoice', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
- $document_object = new DocumentObject(
- DocumentType::INVOICE,
- [chunk_split('data:application/pdf;base64,'.base64_encode($invoice_pdf->output()))],
- '',
- ApprovalStatus::COMPLETED,
- 'invoices'
+ $object_detail = new TransactionDetailObject(
+ 'SHIPPING_FEE',
+ TransactionDetailType::SHIPPING_FEE.'
'.round($packing_list->packages->where('type', '!=', PackageType::OVER_WEIGHT)->sum('quantity'), 3).' CTNS - '.round($cbm, 3).' CBM',
+ $cbm,
+ $price_cbm
);
- $document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
- $this->createsFile->execute($document, $document_object);
- $billNumber = $this->generatesTransactionBillNumber->execute('SPDO-');
+ $this->createsTransactionDetail->execute($invoice_transaction, $object_detail);
- $booking_currency_average_rate = $this->calculatesBookingCurrencyAverageRate->execute($booking, TransactionType::BILL);
+ if ($over_weight_cbm > 0) {
+ $object_detail = new TransactionDetailObject(
+ 'OVER_WEIGHT_CHARGES',
+ TransactionDetailType::OVER_WEIGHT_CHARGES,
+ $over_weight_cbm,
+ $price_cbm
+ );
- $transaction_object = new TransactionObject(
- $billNumber,
- TransactionType::SUPPLIER_DELIVER,
- $transaction->issuer,
- $transaction->receiver,
- $transaction->recipient_bank_account_id,
- $transaction->payment_method,
- $payment_amount,
- $booking_amount,
- $transaction->currency_id,
- $transaction->original_currency_id,
- $booking_currency_average_rate,
- $total_tax,
- $total_service_charge,
- null,
- ApprovalStatus::APPROVED
- );
- $supplier_deliver_order_transaction = $this->createsTransaction->execute($po_order_transaction->booking, $transaction_object);
+ $this->createsTransactionDetail->execute($invoice_transaction, $object_detail);
+ }
- $supplier_order_pdf = LaravelMpdf::loadView('pages.pdfs.supplier_deliver_order', ['supplier_deliver_order_transaction' => $supplier_deliver_order_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
- $document_object = new DocumentObject(
- DocumentType::SUPPLIER_DELIVER_ORDER,
- [chunk_split('data:application/pdf;base64,'.base64_encode($supplier_order_pdf->output()))],
- '',
- ApprovalStatus::COMPLETED,
- 'supplier_delivery_orders'
- );
- $document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
- $this->createsFile->execute($document, $document_object);
+ if ($minimum_charge > 0) {
+ $object_detail = new TransactionDetailObject(
+ 'MIN_CBM_CHARGES',
+ TransactionDetailType::MIN_CBM_CHARGES,
+ $minimum_charge,
+ $price_cbm
+ );
- $this->updatesBookingStatus->execute($booking, ApprovalStatus::COMPLETED);
+ $this->createsTransactionDetail->execute($invoice_transaction, $object_detail);
+ }
+
+ return;
}
+
+ function getConstantByKey($segmentConstantObject, $key) {
+ if ($segmentConstantObject) {
+ $base_rate = (array) $segmentConstantObject->value;
+ $base_rate = array_key_exists($key, $base_rate) === true ? $base_rate[$key] : 0;
+
+ return $base_rate;
+ }
+ }
+
+ function checkPostcodeExistInConstant($segmentConstantObject, $postcode) {
+ $segmentConstantObject = $segmentConstantObject->value;
+ if (!empty($segmentConstantObject)) {
+ return in_array($postcode, $segmentConstantObject);
+ } else {
+ return false;
+ }
+ }
+
}
diff --git a/routes/web.php b/routes/web.php
index dd378f27..842ec306 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -20,6 +20,7 @@ use App\Classes\Modules\PackingLists\Processors\FetchOrderListsFromYdPortalProce
use App\Classes\Modules\PackingLists\Processors\FetchPackingListFromVTPortalProcessor;
use App\Classes\Modules\PackingLists\Processors\FetchPackingListsFromYdPortalProcessor;
use App\Classes\Modules\PackingLists\Services\ListsPackingLists;
+use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\BusinessType;
use App\Classes\ValueObjects\Constants\DocumentType;
@@ -751,8 +752,7 @@ Route::get('/generate/invoices', function(){
$postCodes = \App\Models\SegmentConstant::whereIn('reference', ['CENTER_POSTCODE', 'OUTSTATION_POSTCODE'])->get()->pluck('value')->flatten();
if(!!$billingAddress && in_array($deliveryAddress->postcode, $postCodes->toArray())){
- echo 'generating...';
- continue;
+ (App()->make(CreateInvoiceTransactionProcessor::class))->execute($packingList);
}
echo 'failed to generate...';
}