From 28feba2ae931fbecb90741acfc71077c0ffe498a Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Tue, 16 Apr 2024 12:39:44 +0800 Subject: [PATCH 01/18] change sst invoice format --- .../shipping_invoices_sst_combined.blade.php | 88 +++++++++---------- 1 file changed, 41 insertions(+), 47 deletions(-) diff --git a/resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php b/resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php index 8e452590..f7cff168 100644 --- a/resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php +++ b/resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php @@ -1,10 +1,10 @@ @extends('layouts.base_pdf') @section('inner_content') -@php -$grandTotal = 0; -$grandTotalTax = 0; -$grandSubTotal = 0; -@endphp + @php + $grandTotal = 0; + $grandTotalTax = 0; + $grandSubTotal = 0; + @endphp @@ -21,7 +21,8 @@ $grandSubTotal = 0; No. 72-3, Jalan Jalil 1,
The Earth Bukit Jalil,
57000 Kuala Lumpur
- Tel: 03-8082 1252 + Tel: 03-8082 1252
+ SST No: W10-2403-32000643 - - - @@ -84,16 +78,16 @@ $grandSubTotal = 0;
@@ -40,13 +41,6 @@ $grandSubTotal = 0;
- - Tax Invoice - -
@@ -71,9 +65,9 @@ $grandSubTotal = 0; {{ $addresses->country()->first()->name }}
- @php - $contact = $companyModule->contacts()->first(); - @endphp + @php + $contact = $companyModule->contacts()->first(); + @endphp Phone: {{ $contact ? $contact->phone : '' }}
- - - - - - - - - - + + + + + + + + + + @foreach ($invoice_transactions as $key => $invoice_transaction) @@ -109,7 +103,7 @@ $grandSubTotal = 0; - - - - - - - + - - - - - - - + + + + + + + + + + + - + +
NoInvoice NoDescriptionQuantityUnit Price (RM)Tax (%)Tax Amount (RM)Total Amount
(RM)
NoInvoice NoDescriptionQtyUnit Price
(RM)
Tax (%)Tax Amount
(RM)
Sub Total
(RM)
{{ round($transaction_detail->tax_percentage, 2) }} + {{ number_format(round($transaction_detail->tax_amount, 2), 2) }} @@ -125,28 +119,28 @@ $grandSubTotal = 0; @endforeach
Subtotal - {{ round($grandSubTotal, 2) }} -
Tax - {{ round($grandTotalTax, 2) }} -
Total - {{ round($grandTotal, 2) }} + Total Taxable Amount + {{ round($grandSubTotal, 2) }} +
Total SST (6%) RM + {{ round($grandTotalTax, 2) }} +
Total Amount RM + {{ round($grandTotal, 2) }} -
From c7e3091f9bae76fa4a63ca90bf953397bd674044 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Tue, 16 Apr 2024 12:49:46 +0800 Subject: [PATCH 02/18] change sst invoice format --- .../pdfs/shipping_invoice_sst_inner.blade.php | 136 +++++++++--------- 1 file changed, 65 insertions(+), 71 deletions(-) diff --git a/resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php b/resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php index c0006b1d..eadd5f87 100644 --- a/resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php +++ b/resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php @@ -18,7 +18,8 @@ No. 72-3, Jalan Jalil 1,
The Earth Bukit Jalil,
57000 Kuala Lumpur
- Tel: 03-8082 1252 + Tel: 03-8082 1252
+ SST No: W10-2403-32000643
@@ -41,13 +42,6 @@
- - - - Tax Invoice - - - @@ -65,18 +59,18 @@ $addresses = $companyModule->addresses()->where('status', '=', \App\Classes\ValueObjects\Constants\ApprovalStatus::APPROVED)->where('type', '=', \App\Classes\ValueObjects\Constants\AddressType::BILLING)->first(); @endphp @if($addresses) - {{ $addresses->street_one }} - {{ $addresses->street_two }} , - {{ $addresses->district()->first()->name }}, - {{ $addresses->postcode }} - {{ $addresses->state()->first()->name }}, - {{ $addresses->country()->first()->name }} + {{ $addresses->street_one }} + {{ $addresses->street_two }} , + {{ $addresses->district()->first()->name }}, + {{ $addresses->postcode }} + {{ $addresses->state()->first()->name }}, + {{ $addresses->country()->first()->name }} @endif
- @php - $contact = $companyModule->contacts()->first(); - @endphp + @php + $contact = $companyModule->contacts()->first(); + @endphp Phone: {{ $contact ? $contact->phone : '' }}
@@ -87,63 +81,63 @@
- - - - - - - - - + + + + + + + + + - @foreach ($invoice_transaction->transactionDetails as $key => $transaction_detail) - - - - - - - - - - @endforeach + @foreach ($invoice_transaction->transactionDetails as $key => $transaction_detail) + + + + + + + + + + @endforeach - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
NoDescriptionQuantityUnit Price (RM)Tax (%)Tax Amount (RM)Total Amount
(RM)
NoDescriptionQtyUnit Price
(RM)
Tax (%)Tax Amount
(RM)
Sub Total
(RM)
{{ $key + 1 }}{!! $transaction_detail->name !!}{{ round($transaction_detail->quantity, 3) }} - {{ round($transaction_detail->price, 2) }} - - {{ round($transaction_detail->tax_percentage, 2) }} - - {{ number_format(round($transaction_detail->tax_amount, 2), 2) }} - - {{ number_format(round($transaction_detail->amount, 2), 2) }} -
{{ $key + 1 }}{!! $transaction_detail->name !!}{{ round($transaction_detail->quantity, 3) }} + {{ round($transaction_detail->price, 2) }} + + {{ round($transaction_detail->tax_percentage, 2) }} + + {{ number_format(round($transaction_detail->tax_amount, 2), 2) }} + + {{ number_format(round($transaction_detail->amount, 2), 2) }} +
Subtotal - {{ number_format(round($invoice_transaction->amount - $invoice_transaction->tax, 2), 2) }} -
Service Charges - {{ number_format(round($invoice_transaction->service_charge, 2), 2) }} -
Tax{{ number_format($invoice_transaction->tax, 2) }}
Total - {{ number_format(round($invoice_transaction->amount, 2), 2) }} -
Subtotal + {{ number_format(round($invoice_transaction->amount - $invoice_transaction->tax, 2), 2) }} +
Service Charges + {{ number_format(round($invoice_transaction->service_charge, 2), 2) }} +
Total SST (6%) RM{{ number_format($invoice_transaction->tax, 2) }}
Total Amount RM + {{ number_format(round($invoice_transaction->amount, 2), 2) }} +
From 1d4ac80b8f65a6902690a6f560a2bc0d12720291 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Tue, 16 Apr 2024 13:02:40 +0800 Subject: [PATCH 03/18] change sst invoice format --- .../Modules/Transactions/Services/CreatesTransaction.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/Classes/Modules/Transactions/Services/CreatesTransaction.php b/app/Classes/Modules/Transactions/Services/CreatesTransaction.php index 2032b7b8..5260837c 100644 --- a/app/Classes/Modules/Transactions/Services/CreatesTransaction.php +++ b/app/Classes/Modules/Transactions/Services/CreatesTransaction.php @@ -35,10 +35,6 @@ class CreatesTransaction extends AbstractUpdateRelationshipRecord $model->expires_on = $object->getExpiresOn(); $model->status = $object->getStatus(); - if((int)$object->getTransactionType() === TransactionType::SHIPPING_INVOICE){ - $model->created_at = Carbon::now()->subDays(10); - $model->updated_at = Carbon::now()->subDays(10); - } return $this->handler($packing_list->transactions(), $model); } From d129f8f6bd95e1ddabef571d1ce5ef8e8524dac5 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Tue, 16 Apr 2024 13:17:23 +0800 Subject: [PATCH 04/18] clear wrong date invoice from april to march --- .../Modules/Transactions/Services/CreatesTransaction.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Classes/Modules/Transactions/Services/CreatesTransaction.php b/app/Classes/Modules/Transactions/Services/CreatesTransaction.php index 5260837c..27074e27 100644 --- a/app/Classes/Modules/Transactions/Services/CreatesTransaction.php +++ b/app/Classes/Modules/Transactions/Services/CreatesTransaction.php @@ -35,6 +35,10 @@ class CreatesTransaction extends AbstractUpdateRelationshipRecord $model->expires_on = $object->getExpiresOn(); $model->status = $object->getStatus(); + if((int)$object->getTransactionType() === TransactionType::SHIPPING_INVOICE){ + $model->created_at = Carbon::now()->subDays(17); + $model->updated_at = Carbon::now()->subDays(17); + } return $this->handler($packing_list->transactions(), $model); } From a49920973e343138130793e7c2540dee3ddb4795 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Tue, 16 Apr 2024 13:21:07 +0800 Subject: [PATCH 05/18] Revert "Merge branch 'dillon/58-shipping-portal-sst' into 'master'" This reverts commit 7cd376a9b5328e6f57621067e0c515eb15617bbf, reversing changes made to 6176135f85bc5a9a7f0cbef09c41ff99f50046e4. --- .env.example | 4 - ...enerateShippingInvoiceTransactionLogic.php | 22 +- ...eSingleShippingInvoiceTransactionLogic.php | 10 +- .../UpdateShippingInvoiceTransactionLogic.php | 40 +-- .../TransactionDetailObject.php | 29 +- .../DataTransferObjects/TransactionObject.php | 32 +- ...oveShippingInvoiceTransactionProcessor.php | 10 +- ...heckStorageInvoiceTransactionProcessor.php | 46 +-- .../CreateInvoiceTransactionProcessor.php | 24 +- ...CreateShippingCostTransactionProcessor.php | 4 +- ...orageInvoiceDocTransactionFixProcessor.php | 14 +- ...eStorageInvoiceDocTransactionProcessor.php | 13 +- .../CreatesShippingCostTransaction.php | 2 - .../Services/CreatesTransactionDetail.php | 4 +- .../Services/UpdatesTransactionDetail.php | 4 +- .../ValueObjects/Constants/TaxPercentage.php | 12 - .../Constants/TransactionDetailType.php | 2 - app/Console/Commands/FixInvoice.php | 21 +- .../Resources/GroupForOrderV2Resource.php | 2 +- app/Http/Resources/TransactionResource.php | 2 +- .../TransactionWithStorageResource.php | 6 +- ...d_columns_to_transaction_details_table.php | 36 -- .../AdminPaymentsBillingComponent.vue | 322 ++++++++++++++++++ ...dminPaymentsBillingWithSearchComponent.vue | 1 - .../forms/InvoiceItemFormComponent.vue | 19 +- .../forms/InvoiceItemsFormComponent.vue | 6 +- .../pages/pdfs/shipping_invoice_sst.blade.php | 21 -- .../pdfs/shipping_invoice_sst_inner.blade.php | 143 -------- .../shipping_invoices_sst_combined.blade.php | 163 --------- routes/web.php | 21 +- 30 files changed, 402 insertions(+), 633 deletions(-) delete mode 100644 app/Classes/ValueObjects/Constants/TaxPercentage.php delete mode 100644 database/migrations/2024_04_06_004026_add_columns_to_transaction_details_table.php create mode 100644 resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingComponent.vue delete mode 100644 resources/views/pages/pdfs/shipping_invoice_sst.blade.php delete mode 100644 resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php delete mode 100644 resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php diff --git a/.env.example b/.env.example index 245cbd56..8f2f87a1 100644 --- a/.env.example +++ b/.env.example @@ -59,7 +59,3 @@ YD_API_CODE='' PERFEXCRM_BASE_URL="" PERFEXCRM_API_KEY="" PERFEXCRM_IS_ENABLED="false" - - -STORAGE_FEE_LAUNCH_DATE="2023-12-11 00:00:00" -SST_START_DATE="2024-04-01 00:00:00" diff --git a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php index 352b3373..8922e651 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php @@ -15,7 +15,6 @@ use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf; use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Models\Document; -use Carbon\Carbon; class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic { @@ -52,18 +51,11 @@ class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic foreach ($orders as $order){ $invoices = $order->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get(); foreach ($invoices as $invoice){ - + $invoice->documents()->delete(); - - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } - - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); - + + $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice]); + $document_object = new DocumentObject( DocumentType::SHIPPING_INVOICE, [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], @@ -71,11 +63,11 @@ class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic ApprovalStatus::COMPLETED, 'shipping_invoice' ); - + $document =$this->createsDocument->execute($invoice, $document_object); - + $this->createsFiles->execute($document, $document_object); - + // dump($document); } } diff --git a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php index 272a2a54..20dba2a0 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php @@ -16,7 +16,6 @@ use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Classes\Modules\Transactions\Services\FetchesTransaction; use App\Models\Document; -use Carbon\Carbon; class RegenerateSingleShippingInvoiceTransactionLogic extends AbstractControllerLogic { @@ -55,14 +54,7 @@ class RegenerateSingleShippingInvoiceTransactionLogic extends AbstractController $invoice->documents()->delete(); - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } - - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); + $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice]); $document_object = new DocumentObject( DocumentType::SHIPPING_INVOICE, diff --git a/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php index 86db0e3f..278d6959 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php @@ -25,8 +25,6 @@ use App\Classes\Modules\Transactions\Services\DeletesTransactionDetails; use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject; use App\Classes\Modules\Transactions\DataTransferObjects\TransactionDetailObject; use App\Classes\Modules\Transactions\Services\FetchesTransaction; -use App\Classes\ValueObjects\Constants\TaxPercentage; -use Carbon\Carbon; class UpdateShippingInvoiceTransactionLogic extends AbstractControllerLogic { @@ -62,9 +60,9 @@ class UpdateShippingInvoiceTransactionLogic extends AbstractControllerLogic /** @var DeletesTransactionDetails */ private $deletesTransactionDetails; - + public function __construct( - FetchesPackingList $fetchesPackingList, + FetchesPackingList $fetchesPackingList, FetchesTransaction $fetchesTransaction, UpdatesTransaction $updatesTransaction, FetchesTransactionDetail $fetchesTransactionDetail, @@ -107,25 +105,11 @@ class UpdateShippingInvoiceTransactionLogic extends AbstractControllerLogic $transaction_detail = (object) $transaction_detail; if(!in_array($transaction_detail->reference, ['SHIPPING_FEE', 'OVER_WEIGHT_CHARGES', 'MIN_CBM_CHARGES'])){ - $reference = 'CUSTOM_CHARGES'; - $taxPercentage = TaxPercentage::DEFAULT; - - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice_transaction->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare)) { - $taxPercentage = TaxPercentage::SIX_PERCENT; - } - - if($transaction_detail->reference === "PAY_ON_BEHALF"){ - $reference = "PAY_ON_BEHALF"; - $taxPercentage = TaxPercentage::NO_TAX; - } $object_detail = new TransactionDetailObject( - $reference, + 'CUSTOM_CHARGES', isset($transaction_detail->name) ? $transaction_detail->name : TransactionDetailType::CUSTOM_CHARGES, $transaction_detail->quantity, - $transaction_detail->price, - $taxPercentage + $transaction_detail->price ); if(isset($transaction_detail->id)){ @@ -137,20 +121,20 @@ class UpdateShippingInvoiceTransactionLogic extends AbstractControllerLogic } $object = new TransactionObject( - $invoice_transaction->bill_no, - TransactionType::SHIPPING_INVOICE, - 1, + $invoice_transaction->bill_no, + TransactionType::SHIPPING_INVOICE, + 1, $invoice_transaction->issuer, - 1, + 1, PaymentMethodType::CASH, $invoice_transaction->transactionDetails()->sum('amount'), $invoice_transaction->transactionDetails()->sum('amount'), 1, - 1, + 1, + 0, + 0, 0, - $invoice_transaction->transactionDetails()->sum('tax_amount'), - 0, - null, + null, ApprovalStatus::PENDING_VERIFICATION ); diff --git a/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php index 3e015947..beb4b4dc 100644 --- a/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php +++ b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php @@ -18,25 +18,19 @@ class TransactionDetailObject implements DataTransferObject /** @var float|null */ private $price; - /** @var float|null */ - private $taxPercentage; - - /** * TransactionDetailObject constructor. * @param string $reference * @param string $name * @param float $quantity * @param float $price - * @param float $taxPercentage */ - public function __construct(?string $reference, ?string $name , ?float $quantity, ?float $price, ?float $taxPercentage) + public function __construct(?string $reference, ?string $name , ?float $quantity, ?float $price) { $this->reference = $reference; $this->name = $name; $this->quantity = $quantity; $this->price = $price; - $this->taxPercentage = $taxPercentage; } /** @@ -71,28 +65,9 @@ class TransactionDetailObject implements DataTransferObject return $this->price; } - /** - * @return float - */ public function getAmount(): float { - return ($this->getQuantity() * $this->getPrice()) + $this->getTaxAmount(); - } - - /** - * @return float - */ - public function getTaxPercentage(): ?float - { - return $this->taxPercentage; - } - - /** - * @return float - */ - public function getTaxAmount(): float - { - return ($this->getQuantity() * $this->getPrice()) * $this->getTaxPercentage() / 100; + return $this->getQuantity() * $this->getPrice(); } } diff --git a/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php index 36488488..5e943e29 100644 --- a/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php +++ b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php @@ -80,21 +80,21 @@ class TransactionObject implements DataTransferObject * @param array|null $details */ public function __construct( - string $billNo, - string $transactionType, - int $issuer, - int $receiver, - int $recipientBankAccountId, - int $paymentMethod, - float $amount, - float $originalAmount, + string $billNo, + string $transactionType, + int $issuer, + int $receiver, + int $recipientBankAccountId, + int $paymentMethod, + float $amount, + float $originalAmount, int $currencyId, - int $originalCurrencyId, + int $originalCurrencyId, float $currencyRate, - float $tax, - float $serviceCharge, - ?Carbon $expiresOn, - ?int $status = ApprovalStatus::PENDING_SUBMISSION, + float $tax, + float $serviceCharge, + ?Carbon $expiresOn, + ?int $status = ApprovalStatus::PENDING_SUBMISSION, ?array $details = [], ?string $paymentReference = null ) @@ -241,10 +241,10 @@ class TransactionObject implements DataTransferObject /** * @return array */ - public function getDetails(): array //cief todo: not in used as of 20240407 + public function getDetails(): array { return array_map(function($product){ - return new TransactionDetailObject($product['stockCode'] ?? '', $product['description'] ?? '', $product['quantity'] ?? '', floatval(str_replace(',', '', $product['unit_price'])), 0.0 ); + return new TransactionDetailObject($product['stockCode'] ?? '', $product['description'] ?? '', $product['quantity'] ?? '', floatval(str_replace(',', '', $product['unit_price']))); }, $this->details); } @@ -255,4 +255,4 @@ class TransactionObject implements DataTransferObject { return $this->paymentReference; } -} +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php index 6b2cae0e..05abbc8d 100644 --- a/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php @@ -19,7 +19,6 @@ use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus; use App\Classes\Jobs\CreatePerfexCRMInvoice; use App\Classes\Modules\Transactions\Processors\CheckStorageInvoiceTransactionProcessor; use App\Models\Order; -use Carbon\Carbon; class ApproveShippingInvoiceTransactionProcessor { @@ -60,16 +59,9 @@ class ApproveShippingInvoiceTransactionProcessor /** @var Transaction $invoice_transaction */ $invoice_transaction = $packingList->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::PENDING_SUBMISSION])->first(); - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice_transaction->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice_transaction->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } - $this->updatesTransactionStatus->execute($invoice_transaction, ApprovalStatus::APPROVED); - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice_transaction]); + $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]); $document_object = new DocumentObject( DocumentType::SHIPPING_INVOICE, diff --git a/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php index dfe76267..0faca0d2 100644 --- a/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php @@ -23,7 +23,6 @@ use App\Classes\ValueObjects\Constants\PaymentMethodType; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\PackageType; use App\Classes\ValueObjects\Constants\PackingListType; -use App\Classes\ValueObjects\Constants\TaxPercentage; use App\Classes\ValueObjects\Constants\TransactionDetailType; use App\Http\Resources\TransactionWithStorageResource; use App\Models\Order; @@ -196,26 +195,14 @@ class CheckStorageInvoiceTransactionProcessor $cbm = $cbm + $quantity; } - $total_tax = 0; - $taxPercentage = TaxPercentage::DEFAULT; $price_cbm = $pricePerCBM * $cbm * $resultNumberOfDaysExceeded; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::now(); - Log::channel('storage_invoices')->info('storageInvoice: '.json_encode($storageInvoice).', $transaction->status: '.$transaction->status); if(!$storageInvoice && $resultNumberOfDaysExceeded > 0 && $transaction->status != ApprovalStatus::COMPLETED){ Log::channel('storage_invoices')->info('Created $transaction->id: '.$transaction->id); $billNumber = $this->generatesTransactionBillNumber->execute('STOR-'); - - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare)) { - $taxPercentage = TaxPercentage::SIX_PERCENT; - $total_tax = $price_cbm * $taxPercentage / 100; - $price_cbm = $price_cbm + $total_tax; - } - - $storageInvoice = $this->createStorageInvoiceTransaction($destinationWarehousePackage, $billNumber, $company_module_id, $price_cbm, $total_tax); + $storageInvoice = $this->createStorageInvoiceTransaction($destinationWarehousePackage, $billNumber, $company_module_id, $price_cbm); $storageInvoiceId = $storageInvoice->id; - $this->createStorageInvoiceTransactionDetails($storageInvoice, $destinationWarehousePackage, $cbm, $pricePerCBM, $resultNumberOfDaysExceeded, $taxPercentage); + $this->createStorageInvoiceTransactionDetails($storageInvoice, $destinationWarehousePackage, $cbm, $pricePerCBM, $resultNumberOfDaysExceeded); } else if($storageInvoice){ //Additional handling for giving selected storage invoice a waiver @@ -234,12 +221,6 @@ class CheckStorageInvoiceTransactionProcessor $price_cbm = $pricePerCBM * $cbm * $resultNumberOfDaysExceeded; } - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare)) { - $taxPercentage = TaxPercentage::SIX_PERCENT; - $total_tax = $price_cbm * $taxPercentage / 100; - $price_cbm = $price_cbm + $total_tax; - } - $amount = $storageInvoice->amount; $epsilon = 0.0001; // Tolerance for the comparison Log::channel('storage_invoices')->info('Update $transaction->id: '.$transaction->id); @@ -265,10 +246,9 @@ class CheckStorageInvoiceTransactionProcessor if($proceedToUpdate || ($pricePerCBM == 0 && $amount != 0)){ Log::channel('storage_invoices')->info('proceedToUpdate'); - - $storageInvoice = $this->updateStorageInvoiceTransaction($storageInvoice, $price_cbm, $total_tax); + $storageInvoice = $this->updateStorageInvoiceTransaction($storageInvoice, $price_cbm); $invoiceTransactionDetails = $storageInvoice->transactionDetails()->first(); - $this->updateStorageInvoiceTransactionDetails($invoiceTransactionDetails, $destinationWarehousePackage, $cbm, $pricePerCBM, $resultNumberOfDaysExceeded, $taxPercentage); + $this->updateStorageInvoiceTransactionDetails($invoiceTransactionDetails, $destinationWarehousePackage, $cbm, $pricePerCBM, $resultNumberOfDaysExceeded); } $storageInvoiceId = $storageInvoice->id; @@ -376,7 +356,7 @@ class CheckStorageInvoiceTransactionProcessor } } - private function updateStorageInvoiceTransaction(Transaction $transaction, float $totalAmount, float $totalTax){ + private function updateStorageInvoiceTransaction(Transaction $transaction, float $totalAmount){ $object = new TransactionObject( $transaction->bill_no, @@ -390,7 +370,7 @@ class CheckStorageInvoiceTransactionProcessor 1, 1, 0, - $totalTax, + 0, 0, null, ApprovalStatus::APPROVED @@ -402,19 +382,18 @@ class CheckStorageInvoiceTransactionProcessor return $invoice_transaction; } - private function updateStorageInvoiceTransactionDetails($invoice_transaction_details, PackingList $packing_list, $cbm, $pricePerCBM, $numberOfDays, $taxPercentage){ + private function updateStorageInvoiceTransactionDetails($invoice_transaction_details, PackingList $packing_list, $cbm, $pricePerCBM, $numberOfDays){ $object_detail = new TransactionDetailObject( 'STORAGE_FEE', TransactionDetailType::STORAGE_FEE.' for '.$numberOfDays. ' days * RM'.$pricePerCBM.'
'.round($packing_list->packages->where('type', '!=', PackageType::OVER_WEIGHT)->sum('quantity'), 3).' CTNS - '.round($cbm, 3).' CBM', $cbm, - $pricePerCBM * $numberOfDays, - $taxPercentage + $pricePerCBM * $numberOfDays ); $this->updatesTransactionDetail->execute($invoice_transaction_details, $object_detail); } - private function createStorageInvoiceTransaction(PackingList $packing_list, string $billNumber, int $companyModuleId, float $totalAmount, float $totalTax){ + private function createStorageInvoiceTransaction(PackingList $packing_list, string $billNumber, int $companyModuleId, float $totalAmount){ $object = new TransactionObject( $billNumber, @@ -428,7 +407,7 @@ class CheckStorageInvoiceTransactionProcessor 1, 1, 0, - $totalTax, + 0, 0, null, ApprovalStatus::APPROVED @@ -440,13 +419,12 @@ class CheckStorageInvoiceTransactionProcessor return $invoice_transaction; } - private function createStorageInvoiceTransactionDetails($invoice_transaction, PackingList $packing_list, $cbm, $pricePerCBM, $numberOfDays, $taxPercentage){ + private function createStorageInvoiceTransactionDetails($invoice_transaction, PackingList $packing_list, $cbm, $pricePerCBM, $numberOfDays){ $object_detail = new TransactionDetailObject( 'STORAGE_FEE', TransactionDetailType::STORAGE_FEE.' for '.$numberOfDays. ' days * RM'.$pricePerCBM.'
'.round($packing_list->packages->where('type', '!=', PackageType::OVER_WEIGHT)->sum('quantity'), 3).' CTNS - '.round($cbm, 3).' CBM', $cbm, - $pricePerCBM * $numberOfDays, - $taxPercentage + $pricePerCBM * $numberOfDays ); $this->createsTransactionDetail->execute($invoice_transaction, $object_detail); diff --git a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php index dec6dd2f..c3d20062 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php @@ -22,17 +22,14 @@ use App\Classes\ValueObjects\Constants\PaymentMethodType; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\PackageType; use App\Classes\ValueObjects\Constants\SegmentConstants; -use App\Classes\ValueObjects\Constants\TaxPercentage; 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 Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Log; use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf; class CreateInvoiceTransactionProcessor @@ -174,16 +171,6 @@ class CreateInvoiceTransactionProcessor $billNumber = $this->generatesTransactionBillNumber->execute('SHIP-'); - $total_tax = 0; - $taxPercentage = TaxPercentage::DEFAULT; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::now(); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare)) { - $taxPercentage = TaxPercentage::SIX_PERCENT; - $total_tax = $total_cbm * $taxPercentage / 100; - $total_cbm = $total_cbm + $total_tax; - } - $object = new TransactionObject( $billNumber, TransactionType::SHIPPING_INVOICE, @@ -196,7 +183,7 @@ class CreateInvoiceTransactionProcessor 1, 1, 0, - $total_tax, + 0, 0, null, ApprovalStatus::PENDING_SUBMISSION @@ -209,8 +196,7 @@ class CreateInvoiceTransactionProcessor '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, - $taxPercentage + $price_cbm ); $this->createsTransactionDetail->execute($invoice_transaction, $object_detail); @@ -220,8 +206,7 @@ class CreateInvoiceTransactionProcessor 'OVER_WEIGHT_CHARGES', TransactionDetailType::OVER_WEIGHT_CHARGES, $over_weight_cbm, - $price_cbm, - $taxPercentage + $price_cbm ); $this->createsTransactionDetail->execute($invoice_transaction, $object_detail); @@ -232,8 +217,7 @@ class CreateInvoiceTransactionProcessor 'MIN_CBM_CHARGES', TransactionDetailType::MIN_CBM_CHARGES, $minimum_charge, - $price_cbm, - $taxPercentage + $price_cbm ); $this->createsTransactionDetail->execute($invoice_transaction, $object_detail); diff --git a/app/Classes/Modules/Transactions/Processors/CreateShippingCostTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateShippingCostTransactionProcessor.php index d93702b9..5591731c 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateShippingCostTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateShippingCostTransactionProcessor.php @@ -9,7 +9,6 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\SegmentConstants; use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\PaymentMethodType; -use App\Classes\ValueObjects\Constants\TaxPercentage; use App\Models\Order; class CreateShippingCostTransactionProcessor @@ -58,8 +57,7 @@ class CreateShippingCostTransactionProcessor TransactionType::SHIPPING_COST, 'Shipping Cost', $quantity, - $totalShippingCost/$totalCBM, - TaxPercentage::SIX_PERCENT + $totalShippingCost/$totalCBM ); $shippingCostTransaction = $this->createsShippingCostTransaction->execute($order, $transactionObject, $transactionDetailObject); diff --git a/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionFixProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionFixProcessor.php index 940935fa..f019209e 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionFixProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionFixProcessor.php @@ -16,8 +16,6 @@ use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus; -use Carbon\Carbon; -use Illuminate\Support\Facades\Log; class CreateStorageInvoiceDocTransactionFixProcessor { @@ -53,17 +51,9 @@ class CreateStorageInvoiceDocTransactionFixProcessor /** @var Transaction $invoice_transaction */ $invoice_transaction = $packingList->transactions()->where('transactions.type', TransactionType::STORAGE_INVOICE)->whereIn('status', [ApprovalStatus::COMPLETED])->first(); - // $this->updatesTransactionStatus->execute($invoice_transaction, ApprovalStatus::APPROVED); - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - Log::info('$dateToCompare 2: '.$dateToCompare); - $storageInvoiceTransactionCreatedDate = Carbon::parse($invoice_transaction->created_at); - Log::info('$storageInvoiceTransactionCreatedDate 2: '.$storageInvoiceTransactionCreatedDate); - if ($storageInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice_transaction->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } + // $this->updatesTransactionStatus->execute($invoice_transaction, ApprovalStatus::APPROVED); - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice_transaction]); + $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]); $document_object = new DocumentObject( DocumentType::STORAGE_INVOICE, diff --git a/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionProcessor.php index d5277409..d46f5661 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionProcessor.php @@ -16,8 +16,6 @@ use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus; -use Carbon\Carbon; -use Illuminate\Support\Facades\Log; class CreateStorageInvoiceDocTransactionProcessor { @@ -55,16 +53,7 @@ class CreateStorageInvoiceDocTransactionProcessor // $this->updatesTransactionStatus->execute($invoice_transaction, ApprovalStatus::APPROVED); - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - Log::info('$dateToCompare: '.$dateToCompare); - $storageInvoiceTransactionCreatedDate = Carbon::parse($invoice_transaction->created_at); - Log::info('$storageInvoiceTransactionCreatedDate: '.$storageInvoiceTransactionCreatedDate); - if ($storageInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice_transaction->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } - - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice_transaction]); + $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]); $document_object = new DocumentObject( DocumentType::STORAGE_INVOICE, diff --git a/app/Classes/Modules/Transactions/Services/CreatesShippingCostTransaction.php b/app/Classes/Modules/Transactions/Services/CreatesShippingCostTransaction.php index 55c6ac99..e071d174 100644 --- a/app/Classes/Modules/Transactions/Services/CreatesShippingCostTransaction.php +++ b/app/Classes/Modules/Transactions/Services/CreatesShippingCostTransaction.php @@ -44,8 +44,6 @@ class CreatesShippingCostTransaction extends AbstractUpdateRelationshipRecord $model->quantity = $transactionDetailObject->getQuantity(); $model->price = $transactionDetailObject->getPrice(); $model->amount = $transactionDetailObject->getAmount(); - $model->tax_amount = $transactionDetailObject->getTaxAmount(); - $model->tax_percentage = $transactionDetailObject->getTaxPercentage(); return $this->handler($transaction->transactionDetails(), $model); diff --git a/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php b/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php index 76ad6850..bdb0f387 100644 --- a/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php +++ b/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php @@ -23,10 +23,8 @@ class CreatesTransactionDetail extends AbstractUpdateRelationshipRecord $model->quantity = $object->getQuantity(); $model->price = $object->getPrice(); $model->amount = $object->getAmount(); - $model->tax_amount = $object->getTaxAmount(); - $model->tax_percentage = $object->getTaxPercentage(); return $this->handler($transaction->transactionDetails(), $model); } -} +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Services/UpdatesTransactionDetail.php b/app/Classes/Modules/Transactions/Services/UpdatesTransactionDetail.php index 457379bd..128214d4 100644 --- a/app/Classes/Modules/Transactions/Services/UpdatesTransactionDetail.php +++ b/app/Classes/Modules/Transactions/Services/UpdatesTransactionDetail.php @@ -20,10 +20,8 @@ class UpdatesTransactionDetail extends AbstractUpdateRecord $transactionDetail->quantity = $object->getQuantity(); $transactionDetail->price = $object->getPrice(); $transactionDetail->amount = $object->getAmount(); - $transactionDetail->tax_amount = $object->getTaxAmount(); - $transactionDetail->tax_percentage = $object->getTaxPercentage(); return $this->handler($transactionDetail); } -} +} \ No newline at end of file diff --git a/app/Classes/ValueObjects/Constants/TaxPercentage.php b/app/Classes/ValueObjects/Constants/TaxPercentage.php deleted file mode 100644 index a47336c9..00000000 --- a/app/Classes/ValueObjects/Constants/TaxPercentage.php +++ /dev/null @@ -1,12 +0,0 @@ -transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get(); foreach ($invoices as $invoice){ - + dump($invoice->id); - + $invoice->documents()->delete(); - - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } - - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); - + + $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice]); + $document_object = new DocumentObject( DocumentType::SHIPPING_INVOICE, [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], @@ -79,10 +72,10 @@ class FixInvoice extends Command ApprovalStatus::COMPLETED, 'shipping_invoice' ); - + /** @var Document $document */ $document = (App()->make(CreatesDocument::class))->execute($invoice, $document_object); - + (App()->make(CreatesFiles::class))->execute($document, $document_object); } } diff --git a/app/Http/Resources/GroupForOrderV2Resource.php b/app/Http/Resources/GroupForOrderV2Resource.php index cfd2f121..69cce0ed 100644 --- a/app/Http/Resources/GroupForOrderV2Resource.php +++ b/app/Http/Resources/GroupForOrderV2Resource.php @@ -26,7 +26,7 @@ class GroupForOrderV2Resource extends JsonResource 'original_currency' => new CurrencyResource($this->original_currency), 'issuer_name' => $this->issuerCompany->name, 'issuer_id' => $this->issuerCompany->id, - 'amount' => (float) $this->amount, //cief todo: 58 + 'amount' => (float) $this->amount, 'service_charge' => (float) $this->amount, 'currency' => new CurrencyResource($this->currency), 'created_at' => Carbon::parse($this->created_at)->format('d-m-Y h:i:s A'), diff --git a/app/Http/Resources/TransactionResource.php b/app/Http/Resources/TransactionResource.php index 6a21f1d2..d8697f8a 100644 --- a/app/Http/Resources/TransactionResource.php +++ b/app/Http/Resources/TransactionResource.php @@ -52,7 +52,7 @@ class TransactionResource extends JsonResource 'documents' => $groupTransactions ? DocumentResource::collection($this->documents->where('status', ApprovalStatus::PENDING_VERIFICATION)) : DocumentResource::collection($this->documents), 'type' => (int) $this->type, 'bill_no' => $this->bill_no, - 'amount' => (double) $this->amount, //cief todo: 58 + 'amount' => (double) $this->amount, 'payment_method' => (int) $this->payment_method, 'payment_reference' => $this->payment_reference, 'outstanding' => (double) $this->amount - ($this->transactions()->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->sum('amount')), diff --git a/app/Http/Resources/TransactionWithStorageResource.php b/app/Http/Resources/TransactionWithStorageResource.php index fe71d674..dd307ad8 100644 --- a/app/Http/Resources/TransactionWithStorageResource.php +++ b/app/Http/Resources/TransactionWithStorageResource.php @@ -59,7 +59,7 @@ class TransactionWithStorageResource extends JsonResource if ($ts) { $paymentTransaction = Transaction::where('payment_reference', $ts->reference)->whereIn('status', [ApprovalStatus::PENDING_SUBMISSION])->first(); if($paymentTransaction){ - $groupTotalAmount = (double) $this->amount; //cief todo: 58 + $groupTotalAmount = (double) $this->amount; foreach ($group_payment_history as $key => $value) { if ($value->id === $ts->id && $value->reference === $ts->reference) { @@ -88,10 +88,10 @@ class TransactionWithStorageResource extends JsonResource 'documents' => $groupTransactions ? DocumentResource::collection($this->documents->where('status', ApprovalStatus::PENDING_VERIFICATION)) : DocumentResource::collection($this->documents), 'type' => (int) $this->type, 'bill_no' => $this->bill_no, - 'amount' => (double) $this->amount, //cief todo: 58 + 'amount' => (double) $this->amount, 'payment_method' => (int) $this->payment_method, 'payment_reference' => $this->payment_reference, - 'outstanding' => (double) $this->amount - ($this->transactions()->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->sum('amount')), //cief todo: 58 + 'outstanding' => (double) $this->amount - ($this->transactions()->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->sum('amount')), 'floating' => $group_payment_attempts ? $groupTotalAmount : (double) $this->transactions()->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::PENDING_SUBMISSION, ApprovalStatus::PENDING_VERIFICATION])->sum('amount'), 'service_charge' => (double) $this->service_charge, 'tax' => (double) $this->tax, diff --git a/database/migrations/2024_04_06_004026_add_columns_to_transaction_details_table.php b/database/migrations/2024_04_06_004026_add_columns_to_transaction_details_table.php deleted file mode 100644 index 7d179b3e..00000000 --- a/database/migrations/2024_04_06_004026_add_columns_to_transaction_details_table.php +++ /dev/null @@ -1,36 +0,0 @@ -decimal('tax_amount', 14, 5)->after('amount')->default(0.00); - $table->decimal('tax_percentage', 6, 2)->after('tax_amount')->default(0.00); - $table->decimal('discount', 14, 5)->after('tax_percentage')->default(0.00); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('transaction_details', function (Blueprint $table) { - $table->dropColumn('tax_amount'); - $table->dropColumn('tax_percentage'); - $table->dropColumn('discount'); - }); - } -} diff --git a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingComponent.vue new file mode 100644 index 00000000..13a4981b --- /dev/null +++ b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingComponent.vue @@ -0,0 +1,322 @@ + + diff --git a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue index 682cd602..6cbfa39e 100644 --- a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue @@ -38,7 +38,6 @@ diff --git a/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemFormComponent.vue b/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemFormComponent.vue index 262c67ab..b32e2b49 100644 --- a/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemFormComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemFormComponent.vue @@ -37,11 +37,7 @@
-
-

Name

-

{{product.name}}

-
-
+
@@ -97,10 +93,6 @@ // required: true default: 0 }, - name:{ - type: String, - default: "" - }, }, data(){ return { @@ -110,7 +102,6 @@ quantity: 0, price: 0, amount: 0, - reference: 'CUSTOM_CHARGES', }, products: [] } @@ -122,12 +113,6 @@ price: { required }, } }, - mounted() { - if(this.name){ - this.product.name = this.name; - this.product.reference = 'PAY_ON_BEHALF'; - } - }, created() { if (this.data) { this.product = this.data; @@ -151,7 +136,7 @@ this.$emit('add', { name: this.product.name, quantity: this.product.quantity, - reference: this.product.reference, + reference: 'CUSTOM_CHARGES', price: parseFloat((this.product.price).toString().replace(',', '')), amount: this.productTotal }); diff --git a/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemsFormComponent.vue b/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemsFormComponent.vue index a0806e4d..5153c14a 100644 --- a/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemsFormComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemsFormComponent.vue @@ -15,14 +15,13 @@
- +
-
{{ addCharges? 'Cancel' : 'Add \'Pay On Behalf \' Charges' }}
-
{{ addCharges? 'Cancel' : 'Add Charges' }}
+
{{ addCharges? 'Cancel' : 'Add Charges' }}
Save Change
@@ -45,7 +44,6 @@ parameters: { transaction_details: [] }, - addChargesName: '' } }, methods: { diff --git a/resources/views/pages/pdfs/shipping_invoice_sst.blade.php b/resources/views/pages/pdfs/shipping_invoice_sst.blade.php deleted file mode 100644 index 5e08aea2..00000000 --- a/resources/views/pages/pdfs/shipping_invoice_sst.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.base_pdf') -@section('inner_content') -
- -

-
{{ $invoice_transaction->bill_no }}
-
- @include('pages.pdfs.shipping_invoice_sst_inner', ['invoice_transaction' => $invoice_transaction]) - - - @include('pages.pdfs.packing_list_measurement', ['invoice_transaction' => $invoice_transaction]) - - - - - - - -
SST This is generated by computer. No signature required.Page {PAGENO} of {nbpg}
-
-@endsection diff --git a/resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php b/resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php deleted file mode 100644 index eadd5f87..00000000 --- a/resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - -
- - - CIEF WORLDWIDE SDN BHD - - - (1134596-M)
- No. 72-3, Jalan Jalil 1,
- The Earth Bukit Jalil,
- 57000 Kuala Lumpur
- Tel: 03-8082 1252
- SST No: W10-2403-32000643 -
-
- - Invoice - -
- -
Invoice No: {{ $invoice_transaction->bill_no }}
- - @php - $companyModule = $invoice_transaction->owner->owner->companyModule; - @endphp - -
Date: {{ $invoice_transaction->created_at }}
-
Order No: {{ $invoice_transaction->owner->owner->reference }}
-
Container Ref: {{ $invoice_transaction->owner->containers()->first()->reference }}
- {{--
{{ $companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference }}
--}} -
 
- -
- - Bill To - -
-
- {{ $companyModule->name }} -
-
- @php - $addresses = $companyModule->addresses()->where('status', '=', \App\Classes\ValueObjects\Constants\ApprovalStatus::APPROVED)->where('type', '=', \App\Classes\ValueObjects\Constants\AddressType::BILLING)->first(); - @endphp - @if($addresses) - {{ $addresses->street_one }} - {{ $addresses->street_two }} , - {{ $addresses->district()->first()->name }}, - {{ $addresses->postcode }} - {{ $addresses->state()->first()->name }}, - {{ $addresses->country()->first()->name }} - @endif -
-
- @php - $contact = $companyModule->contacts()->first(); - @endphp - Phone: {{ $contact ? $contact->phone : '' }} -
-
- -
-
- - - - - - - - - - - - - - @foreach ($invoice_transaction->transactionDetails as $key => $transaction_detail) - - - - - - - - - - @endforeach - - - - - - - - - - - - - - - - - - - - - - - -
NoDescriptionQtyUnit Price
(RM)
Tax (%)Tax Amount
(RM)
Sub Total
(RM)
{{ $key + 1 }}{!! $transaction_detail->name !!}{{ round($transaction_detail->quantity, 3) }} - {{ round($transaction_detail->price, 2) }} - - {{ round($transaction_detail->tax_percentage, 2) }} - - {{ number_format(round($transaction_detail->tax_amount, 2), 2) }} - - {{ number_format(round($transaction_detail->amount, 2), 2) }} -
Subtotal - {{ number_format(round($invoice_transaction->amount - $invoice_transaction->tax, 2), 2) }} -
Service Charges - {{ number_format(round($invoice_transaction->service_charge, 2), 2) }} -
Total SST (6%) RM{{ number_format($invoice_transaction->tax, 2) }}
Total Amount RM - {{ number_format(round($invoice_transaction->amount, 2), 2) }} -
diff --git a/resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php b/resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php deleted file mode 100644 index f7cff168..00000000 --- a/resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php +++ /dev/null @@ -1,163 +0,0 @@ -@extends('layouts.base_pdf') -@section('inner_content') - @php - $grandTotal = 0; - $grandTotalTax = 0; - $grandSubTotal = 0; - @endphp - - - - - - - - - - - - - -
- - - CIEF WORLDWIDE SDN BHD - - - (1134596-M)
- No. 72-3, Jalan Jalil 1,
- The Earth Bukit Jalil,
- 57000 Kuala Lumpur
- Tel: 03-8082 1252
- SST No: W10-2403-32000643 -
-
- - Summary - -
- - @php - $companyModule = $invoice_transactions[0]->owner->owner->companyModule; - @endphp - - {{--
Date: {{ $invoice_transactions[0]->created_at }}
--}} -
Date: {{ \Carbon\Carbon::now() }}
-
 
- -
- - Bill To - -
-
- {{ $companyModule->name }} -
-
- @php - $addresses = $companyModule->addresses()->where('status', '=', \App\Classes\ValueObjects\Constants\ApprovalStatus::APPROVED)->where('type', '=', \App\Classes\ValueObjects\Constants\AddressType::BILLING)->first(); - @endphp - {{ $addresses->street_one }} - {{ $addresses->street_two }} , - {{ $addresses->district()->first()->name }}, - {{ $addresses->postcode }} - {{ $addresses->state()->first()->name }}, - {{ $addresses->country()->first()->name }} -
-
- @php - $contact = $companyModule->contacts()->first(); - @endphp - Phone: {{ $contact ? $contact->phone : '' }} -
-
- -
-
- - - - - - - - - - - - - - - @foreach ($invoice_transactions as $key => $invoice_transaction) - @foreach ($invoice_transaction->transactionDetails as $transaction_detail) - - - - - - - - - - - @endforeach - @php - $grandSubTotal = $grandSubTotal + round($invoice_transaction->amount - $invoice_transaction->tax, 2); - $grandTotalTax = $grandTotalTax + round($invoice_transaction->tax, 2); - $grandTotal = $grandTotal + round($invoice_transaction->amount, 2); - @endphp - @endforeach - - - - - - - - - - - - - - - - - - -
NoInvoice NoDescriptionQtyUnit Price
(RM)
Tax (%)Tax Amount
(RM)
Sub Total
(RM)
{{ $key + 1 }}{{ $invoice_transaction->bill_no }}{!! $transaction_detail->name !!}{{ round($transaction_detail->quantity, 3) }} - {{ round($transaction_detail->price, 2) }} - - {{ round($transaction_detail->tax_percentage, 2) }} - - {{ number_format(round($transaction_detail->tax_amount, 2), 2) }} - - {{ round($transaction_detail->amount, 2) }} -
Total Taxable Amount - {{ round($grandSubTotal, 2) }} -
Total SST (6%) RM - {{ round($grandTotalTax, 2) }} -
Total Amount RM - {{ round($grandTotal, 2) }} - -
- - @foreach ($invoice_transactions as $transaction) - - @include('pages.pdfs.shipping_invoice_sst_inner', ['invoice_transaction' => $transaction]) - - @include('pages.pdfs.packing_list_measurement', ['invoice_transaction' => $transaction]) - @endforeach - - - - - - - - -
This is generated by computer. No signature required.Page {PAGENO} of {nbpg}
-
-@endsection diff --git a/routes/web.php b/routes/web.php index c95a958d..da9575b8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -802,14 +802,7 @@ Route::get('/invoices/fix/{company_module_id}', function($company_module_id) { $invoice->documents()->delete(); - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } - - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); + $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice]); $document_object = new DocumentObject( DocumentType::SHIPPING_INVOICE, @@ -835,16 +828,8 @@ Route::get('/invoices/combine/{ids}', function($ids){ $ids = json_decode($ids); $transactions = Transaction::whereIn('id', $ids)->get(); - $invoice = $transactions[0]; //NOTE: invoices that need to be combined need to be seperated before and after SST implementation - $view = 'pages.pdfs.shipping_invoices_combined'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { - $view = 'pages.pdfs.shipping_invoices_sst_combined'; - } - - $pdf = LaravelMpdf::loadView($view, ['invoice_transactions' => $transactions]); + $pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoices_combined', ['invoice_transactions' => $transactions]); return $pdf->download('combined_invoice_.pdf'); })->name('invoice.combined_summary'); @@ -1270,7 +1255,7 @@ Route::get('/payment-and-billing-2', function () { })->name('admin.payment-and-billing-2'); Route::get('/show-all-extra-payments', function () { - ini_set('memory_limit', '-1'); + ini_set('memory_limit', '-1'); $invoices = Transaction::where('type', TransactionType::SHIPPING_INVOICE) ->where('status', ApprovalStatus::COMPLETED) From df2916594b6f19b2a548d8d350ee86d21db4829d Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 01:14:39 +0800 Subject: [PATCH 06/18] remove invoice date adjuster --- .../Modules/Transactions/Services/CreatesTransaction.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/Classes/Modules/Transactions/Services/CreatesTransaction.php b/app/Classes/Modules/Transactions/Services/CreatesTransaction.php index 27074e27..dbe3fd5f 100644 --- a/app/Classes/Modules/Transactions/Services/CreatesTransaction.php +++ b/app/Classes/Modules/Transactions/Services/CreatesTransaction.php @@ -35,11 +35,6 @@ class CreatesTransaction extends AbstractUpdateRelationshipRecord $model->expires_on = $object->getExpiresOn(); $model->status = $object->getStatus(); - if((int)$object->getTransactionType() === TransactionType::SHIPPING_INVOICE){ - $model->created_at = Carbon::now()->subDays(17); - $model->updated_at = Carbon::now()->subDays(17); - } - return $this->handler($packing_list->transactions(), $model); } } From 98e45e27e372c1a8ecf50e12c163dd1be932fbc1 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 02:04:56 +0800 Subject: [PATCH 07/18] update payment export itemization --- .../Services/ExportsPaymentTransactions.php | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php index 82f09025..3c0dfabc 100644 --- a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php @@ -130,6 +130,32 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading $furtherDescription .= $item->name.' '.$item->quantity.' X '.$item->price."\n"; } + $transactionDetails = $transaction->transactionDetails; + + $rows = []; + foreach ($transactionDetails as $detail) { + // Prepare each row based on the transaction detail + $rows[] = [ + '<>', + $transaction->created_at->format('m/d/Y H:m'), + $company->debtor, + $order->reference, + $order->reference, + '500-0000', + $detail->name, + '', + $container->reference, + 'CIEF', + $detail->quantity, + $detail->price, + $detail->tax_percentage ? 'SV-6' : '', + $detail->tax_amount, + $detail->tax_percentage, + ]; + } + + return $rows; + return [ '<>', $transaction->created_at->format('m/d/Y H:m'), From 863dc94dad338ddcb1ee6861c584c567b99d9337 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 02:09:16 +0800 Subject: [PATCH 08/18] Revert "Revert "Merge branch 'dillon/58-shipping-portal-sst' into 'master'"" This reverts commit a49920973e343138130793e7c2540dee3ddb4795. --- .env.example | 4 + ...enerateShippingInvoiceTransactionLogic.php | 22 +- ...eSingleShippingInvoiceTransactionLogic.php | 10 +- .../UpdateShippingInvoiceTransactionLogic.php | 40 ++- .../TransactionDetailObject.php | 29 +- .../DataTransferObjects/TransactionObject.php | 32 +- ...oveShippingInvoiceTransactionProcessor.php | 10 +- ...heckStorageInvoiceTransactionProcessor.php | 46 ++- .../CreateInvoiceTransactionProcessor.php | 24 +- ...CreateShippingCostTransactionProcessor.php | 4 +- ...orageInvoiceDocTransactionFixProcessor.php | 14 +- ...eStorageInvoiceDocTransactionProcessor.php | 13 +- .../CreatesShippingCostTransaction.php | 2 + .../Services/CreatesTransactionDetail.php | 4 +- .../Services/UpdatesTransactionDetail.php | 4 +- .../ValueObjects/Constants/TaxPercentage.php | 12 + .../Constants/TransactionDetailType.php | 2 + app/Console/Commands/FixInvoice.php | 21 +- .../Resources/GroupForOrderV2Resource.php | 2 +- app/Http/Resources/TransactionResource.php | 2 +- .../TransactionWithStorageResource.php | 6 +- ...d_columns_to_transaction_details_table.php | 36 ++ .../AdminPaymentsBillingComponent.vue | 322 ------------------ ...dminPaymentsBillingWithSearchComponent.vue | 1 + .../forms/InvoiceItemFormComponent.vue | 19 +- .../forms/InvoiceItemsFormComponent.vue | 6 +- .../pages/pdfs/shipping_invoice_sst.blade.php | 21 ++ .../pdfs/shipping_invoice_sst_inner.blade.php | 143 ++++++++ .../shipping_invoices_sst_combined.blade.php | 163 +++++++++ routes/web.php | 21 +- 30 files changed, 633 insertions(+), 402 deletions(-) create mode 100644 app/Classes/ValueObjects/Constants/TaxPercentage.php create mode 100644 database/migrations/2024_04_06_004026_add_columns_to_transaction_details_table.php delete mode 100644 resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingComponent.vue create mode 100644 resources/views/pages/pdfs/shipping_invoice_sst.blade.php create mode 100644 resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php create mode 100644 resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php diff --git a/.env.example b/.env.example index 8f2f87a1..245cbd56 100644 --- a/.env.example +++ b/.env.example @@ -59,3 +59,7 @@ YD_API_CODE='' PERFEXCRM_BASE_URL="" PERFEXCRM_API_KEY="" PERFEXCRM_IS_ENABLED="false" + + +STORAGE_FEE_LAUNCH_DATE="2023-12-11 00:00:00" +SST_START_DATE="2024-04-01 00:00:00" diff --git a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php index 8922e651..352b3373 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php @@ -15,6 +15,7 @@ use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf; use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Models\Document; +use Carbon\Carbon; class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic { @@ -51,11 +52,18 @@ class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic foreach ($orders as $order){ $invoices = $order->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get(); foreach ($invoices as $invoice){ - + $invoice->documents()->delete(); - - $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice]); - + + $view = 'pages.pdfs.shipping_invoice'; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { + $view = 'pages.pdfs.shipping_invoice_sst'; + } + + $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); + $document_object = new DocumentObject( DocumentType::SHIPPING_INVOICE, [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], @@ -63,11 +71,11 @@ class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic ApprovalStatus::COMPLETED, 'shipping_invoice' ); - + $document =$this->createsDocument->execute($invoice, $document_object); - + $this->createsFiles->execute($document, $document_object); - + // dump($document); } } diff --git a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php index 20dba2a0..272a2a54 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php @@ -16,6 +16,7 @@ use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Classes\Modules\Transactions\Services\FetchesTransaction; use App\Models\Document; +use Carbon\Carbon; class RegenerateSingleShippingInvoiceTransactionLogic extends AbstractControllerLogic { @@ -54,7 +55,14 @@ class RegenerateSingleShippingInvoiceTransactionLogic extends AbstractController $invoice->documents()->delete(); - $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice]); + $view = 'pages.pdfs.shipping_invoice'; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { + $view = 'pages.pdfs.shipping_invoice_sst'; + } + + $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); $document_object = new DocumentObject( DocumentType::SHIPPING_INVOICE, diff --git a/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php index 278d6959..86db0e3f 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php @@ -25,6 +25,8 @@ use App\Classes\Modules\Transactions\Services\DeletesTransactionDetails; use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject; use App\Classes\Modules\Transactions\DataTransferObjects\TransactionDetailObject; use App\Classes\Modules\Transactions\Services\FetchesTransaction; +use App\Classes\ValueObjects\Constants\TaxPercentage; +use Carbon\Carbon; class UpdateShippingInvoiceTransactionLogic extends AbstractControllerLogic { @@ -60,9 +62,9 @@ class UpdateShippingInvoiceTransactionLogic extends AbstractControllerLogic /** @var DeletesTransactionDetails */ private $deletesTransactionDetails; - + public function __construct( - FetchesPackingList $fetchesPackingList, + FetchesPackingList $fetchesPackingList, FetchesTransaction $fetchesTransaction, UpdatesTransaction $updatesTransaction, FetchesTransactionDetail $fetchesTransactionDetail, @@ -105,11 +107,25 @@ class UpdateShippingInvoiceTransactionLogic extends AbstractControllerLogic $transaction_detail = (object) $transaction_detail; if(!in_array($transaction_detail->reference, ['SHIPPING_FEE', 'OVER_WEIGHT_CHARGES', 'MIN_CBM_CHARGES'])){ + $reference = 'CUSTOM_CHARGES'; + $taxPercentage = TaxPercentage::DEFAULT; + + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice_transaction->created_at); + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare)) { + $taxPercentage = TaxPercentage::SIX_PERCENT; + } + + if($transaction_detail->reference === "PAY_ON_BEHALF"){ + $reference = "PAY_ON_BEHALF"; + $taxPercentage = TaxPercentage::NO_TAX; + } $object_detail = new TransactionDetailObject( - 'CUSTOM_CHARGES', + $reference, isset($transaction_detail->name) ? $transaction_detail->name : TransactionDetailType::CUSTOM_CHARGES, $transaction_detail->quantity, - $transaction_detail->price + $transaction_detail->price, + $taxPercentage ); if(isset($transaction_detail->id)){ @@ -121,20 +137,20 @@ class UpdateShippingInvoiceTransactionLogic extends AbstractControllerLogic } $object = new TransactionObject( - $invoice_transaction->bill_no, - TransactionType::SHIPPING_INVOICE, - 1, + $invoice_transaction->bill_no, + TransactionType::SHIPPING_INVOICE, + 1, $invoice_transaction->issuer, - 1, + 1, PaymentMethodType::CASH, $invoice_transaction->transactionDetails()->sum('amount'), $invoice_transaction->transactionDetails()->sum('amount'), 1, - 1, - 0, - 0, + 1, 0, - null, + $invoice_transaction->transactionDetails()->sum('tax_amount'), + 0, + null, ApprovalStatus::PENDING_VERIFICATION ); diff --git a/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php index beb4b4dc..3e015947 100644 --- a/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php +++ b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php @@ -18,19 +18,25 @@ class TransactionDetailObject implements DataTransferObject /** @var float|null */ private $price; + /** @var float|null */ + private $taxPercentage; + + /** * TransactionDetailObject constructor. * @param string $reference * @param string $name * @param float $quantity * @param float $price + * @param float $taxPercentage */ - public function __construct(?string $reference, ?string $name , ?float $quantity, ?float $price) + public function __construct(?string $reference, ?string $name , ?float $quantity, ?float $price, ?float $taxPercentage) { $this->reference = $reference; $this->name = $name; $this->quantity = $quantity; $this->price = $price; + $this->taxPercentage = $taxPercentage; } /** @@ -65,9 +71,28 @@ class TransactionDetailObject implements DataTransferObject return $this->price; } + /** + * @return float + */ public function getAmount(): float { - return $this->getQuantity() * $this->getPrice(); + return ($this->getQuantity() * $this->getPrice()) + $this->getTaxAmount(); + } + + /** + * @return float + */ + public function getTaxPercentage(): ?float + { + return $this->taxPercentage; + } + + /** + * @return float + */ + public function getTaxAmount(): float + { + return ($this->getQuantity() * $this->getPrice()) * $this->getTaxPercentage() / 100; } } diff --git a/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php index 5e943e29..36488488 100644 --- a/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php +++ b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php @@ -80,21 +80,21 @@ class TransactionObject implements DataTransferObject * @param array|null $details */ public function __construct( - string $billNo, - string $transactionType, - int $issuer, - int $receiver, - int $recipientBankAccountId, - int $paymentMethod, - float $amount, - float $originalAmount, + string $billNo, + string $transactionType, + int $issuer, + int $receiver, + int $recipientBankAccountId, + int $paymentMethod, + float $amount, + float $originalAmount, int $currencyId, - int $originalCurrencyId, + int $originalCurrencyId, float $currencyRate, - float $tax, - float $serviceCharge, - ?Carbon $expiresOn, - ?int $status = ApprovalStatus::PENDING_SUBMISSION, + float $tax, + float $serviceCharge, + ?Carbon $expiresOn, + ?int $status = ApprovalStatus::PENDING_SUBMISSION, ?array $details = [], ?string $paymentReference = null ) @@ -241,10 +241,10 @@ class TransactionObject implements DataTransferObject /** * @return array */ - public function getDetails(): array + public function getDetails(): array //cief todo: not in used as of 20240407 { return array_map(function($product){ - return new TransactionDetailObject($product['stockCode'] ?? '', $product['description'] ?? '', $product['quantity'] ?? '', floatval(str_replace(',', '', $product['unit_price']))); + return new TransactionDetailObject($product['stockCode'] ?? '', $product['description'] ?? '', $product['quantity'] ?? '', floatval(str_replace(',', '', $product['unit_price'])), 0.0 ); }, $this->details); } @@ -255,4 +255,4 @@ class TransactionObject implements DataTransferObject { return $this->paymentReference; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php index 05abbc8d..6b2cae0e 100644 --- a/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php @@ -19,6 +19,7 @@ use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus; use App\Classes\Jobs\CreatePerfexCRMInvoice; use App\Classes\Modules\Transactions\Processors\CheckStorageInvoiceTransactionProcessor; use App\Models\Order; +use Carbon\Carbon; class ApproveShippingInvoiceTransactionProcessor { @@ -59,9 +60,16 @@ class ApproveShippingInvoiceTransactionProcessor /** @var Transaction $invoice_transaction */ $invoice_transaction = $packingList->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::PENDING_SUBMISSION])->first(); + $view = 'pages.pdfs.shipping_invoice'; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice_transaction->created_at); + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice_transaction->tax > 0) { + $view = 'pages.pdfs.shipping_invoice_sst'; + } + $this->updatesTransactionStatus->execute($invoice_transaction, ApprovalStatus::APPROVED); - $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]); + $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice_transaction]); $document_object = new DocumentObject( DocumentType::SHIPPING_INVOICE, diff --git a/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php index 0faca0d2..dfe76267 100644 --- a/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php @@ -23,6 +23,7 @@ use App\Classes\ValueObjects\Constants\PaymentMethodType; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\PackageType; use App\Classes\ValueObjects\Constants\PackingListType; +use App\Classes\ValueObjects\Constants\TaxPercentage; use App\Classes\ValueObjects\Constants\TransactionDetailType; use App\Http\Resources\TransactionWithStorageResource; use App\Models\Order; @@ -195,14 +196,26 @@ class CheckStorageInvoiceTransactionProcessor $cbm = $cbm + $quantity; } + $total_tax = 0; + $taxPercentage = TaxPercentage::DEFAULT; $price_cbm = $pricePerCBM * $cbm * $resultNumberOfDaysExceeded; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + $shippingInvoiceTransactionCreatedDate = Carbon::now(); + Log::channel('storage_invoices')->info('storageInvoice: '.json_encode($storageInvoice).', $transaction->status: '.$transaction->status); if(!$storageInvoice && $resultNumberOfDaysExceeded > 0 && $transaction->status != ApprovalStatus::COMPLETED){ Log::channel('storage_invoices')->info('Created $transaction->id: '.$transaction->id); $billNumber = $this->generatesTransactionBillNumber->execute('STOR-'); - $storageInvoice = $this->createStorageInvoiceTransaction($destinationWarehousePackage, $billNumber, $company_module_id, $price_cbm); + + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare)) { + $taxPercentage = TaxPercentage::SIX_PERCENT; + $total_tax = $price_cbm * $taxPercentage / 100; + $price_cbm = $price_cbm + $total_tax; + } + + $storageInvoice = $this->createStorageInvoiceTransaction($destinationWarehousePackage, $billNumber, $company_module_id, $price_cbm, $total_tax); $storageInvoiceId = $storageInvoice->id; - $this->createStorageInvoiceTransactionDetails($storageInvoice, $destinationWarehousePackage, $cbm, $pricePerCBM, $resultNumberOfDaysExceeded); + $this->createStorageInvoiceTransactionDetails($storageInvoice, $destinationWarehousePackage, $cbm, $pricePerCBM, $resultNumberOfDaysExceeded, $taxPercentage); } else if($storageInvoice){ //Additional handling for giving selected storage invoice a waiver @@ -221,6 +234,12 @@ class CheckStorageInvoiceTransactionProcessor $price_cbm = $pricePerCBM * $cbm * $resultNumberOfDaysExceeded; } + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare)) { + $taxPercentage = TaxPercentage::SIX_PERCENT; + $total_tax = $price_cbm * $taxPercentage / 100; + $price_cbm = $price_cbm + $total_tax; + } + $amount = $storageInvoice->amount; $epsilon = 0.0001; // Tolerance for the comparison Log::channel('storage_invoices')->info('Update $transaction->id: '.$transaction->id); @@ -246,9 +265,10 @@ class CheckStorageInvoiceTransactionProcessor if($proceedToUpdate || ($pricePerCBM == 0 && $amount != 0)){ Log::channel('storage_invoices')->info('proceedToUpdate'); - $storageInvoice = $this->updateStorageInvoiceTransaction($storageInvoice, $price_cbm); + + $storageInvoice = $this->updateStorageInvoiceTransaction($storageInvoice, $price_cbm, $total_tax); $invoiceTransactionDetails = $storageInvoice->transactionDetails()->first(); - $this->updateStorageInvoiceTransactionDetails($invoiceTransactionDetails, $destinationWarehousePackage, $cbm, $pricePerCBM, $resultNumberOfDaysExceeded); + $this->updateStorageInvoiceTransactionDetails($invoiceTransactionDetails, $destinationWarehousePackage, $cbm, $pricePerCBM, $resultNumberOfDaysExceeded, $taxPercentage); } $storageInvoiceId = $storageInvoice->id; @@ -356,7 +376,7 @@ class CheckStorageInvoiceTransactionProcessor } } - private function updateStorageInvoiceTransaction(Transaction $transaction, float $totalAmount){ + private function updateStorageInvoiceTransaction(Transaction $transaction, float $totalAmount, float $totalTax){ $object = new TransactionObject( $transaction->bill_no, @@ -370,7 +390,7 @@ class CheckStorageInvoiceTransactionProcessor 1, 1, 0, - 0, + $totalTax, 0, null, ApprovalStatus::APPROVED @@ -382,18 +402,19 @@ class CheckStorageInvoiceTransactionProcessor return $invoice_transaction; } - private function updateStorageInvoiceTransactionDetails($invoice_transaction_details, PackingList $packing_list, $cbm, $pricePerCBM, $numberOfDays){ + private function updateStorageInvoiceTransactionDetails($invoice_transaction_details, PackingList $packing_list, $cbm, $pricePerCBM, $numberOfDays, $taxPercentage){ $object_detail = new TransactionDetailObject( 'STORAGE_FEE', TransactionDetailType::STORAGE_FEE.' for '.$numberOfDays. ' days * RM'.$pricePerCBM.'
'.round($packing_list->packages->where('type', '!=', PackageType::OVER_WEIGHT)->sum('quantity'), 3).' CTNS - '.round($cbm, 3).' CBM', $cbm, - $pricePerCBM * $numberOfDays + $pricePerCBM * $numberOfDays, + $taxPercentage ); $this->updatesTransactionDetail->execute($invoice_transaction_details, $object_detail); } - private function createStorageInvoiceTransaction(PackingList $packing_list, string $billNumber, int $companyModuleId, float $totalAmount){ + private function createStorageInvoiceTransaction(PackingList $packing_list, string $billNumber, int $companyModuleId, float $totalAmount, float $totalTax){ $object = new TransactionObject( $billNumber, @@ -407,7 +428,7 @@ class CheckStorageInvoiceTransactionProcessor 1, 1, 0, - 0, + $totalTax, 0, null, ApprovalStatus::APPROVED @@ -419,12 +440,13 @@ class CheckStorageInvoiceTransactionProcessor return $invoice_transaction; } - private function createStorageInvoiceTransactionDetails($invoice_transaction, PackingList $packing_list, $cbm, $pricePerCBM, $numberOfDays){ + private function createStorageInvoiceTransactionDetails($invoice_transaction, PackingList $packing_list, $cbm, $pricePerCBM, $numberOfDays, $taxPercentage){ $object_detail = new TransactionDetailObject( 'STORAGE_FEE', TransactionDetailType::STORAGE_FEE.' for '.$numberOfDays. ' days * RM'.$pricePerCBM.'
'.round($packing_list->packages->where('type', '!=', PackageType::OVER_WEIGHT)->sum('quantity'), 3).' CTNS - '.round($cbm, 3).' CBM', $cbm, - $pricePerCBM * $numberOfDays + $pricePerCBM * $numberOfDays, + $taxPercentage ); $this->createsTransactionDetail->execute($invoice_transaction, $object_detail); diff --git a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php index c3d20062..dec6dd2f 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php @@ -22,14 +22,17 @@ use App\Classes\ValueObjects\Constants\PaymentMethodType; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\PackageType; use App\Classes\ValueObjects\Constants\SegmentConstants; +use App\Classes\ValueObjects\Constants\TaxPercentage; 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 Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf; class CreateInvoiceTransactionProcessor @@ -171,6 +174,16 @@ class CreateInvoiceTransactionProcessor $billNumber = $this->generatesTransactionBillNumber->execute('SHIP-'); + $total_tax = 0; + $taxPercentage = TaxPercentage::DEFAULT; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + $shippingInvoiceTransactionCreatedDate = Carbon::now(); + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare)) { + $taxPercentage = TaxPercentage::SIX_PERCENT; + $total_tax = $total_cbm * $taxPercentage / 100; + $total_cbm = $total_cbm + $total_tax; + } + $object = new TransactionObject( $billNumber, TransactionType::SHIPPING_INVOICE, @@ -183,7 +196,7 @@ class CreateInvoiceTransactionProcessor 1, 1, 0, - 0, + $total_tax, 0, null, ApprovalStatus::PENDING_SUBMISSION @@ -196,7 +209,8 @@ class CreateInvoiceTransactionProcessor '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 + $price_cbm, + $taxPercentage ); $this->createsTransactionDetail->execute($invoice_transaction, $object_detail); @@ -206,7 +220,8 @@ class CreateInvoiceTransactionProcessor 'OVER_WEIGHT_CHARGES', TransactionDetailType::OVER_WEIGHT_CHARGES, $over_weight_cbm, - $price_cbm + $price_cbm, + $taxPercentage ); $this->createsTransactionDetail->execute($invoice_transaction, $object_detail); @@ -217,7 +232,8 @@ class CreateInvoiceTransactionProcessor 'MIN_CBM_CHARGES', TransactionDetailType::MIN_CBM_CHARGES, $minimum_charge, - $price_cbm + $price_cbm, + $taxPercentage ); $this->createsTransactionDetail->execute($invoice_transaction, $object_detail); diff --git a/app/Classes/Modules/Transactions/Processors/CreateShippingCostTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateShippingCostTransactionProcessor.php index 5591731c..d93702b9 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateShippingCostTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateShippingCostTransactionProcessor.php @@ -9,6 +9,7 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\SegmentConstants; use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\PaymentMethodType; +use App\Classes\ValueObjects\Constants\TaxPercentage; use App\Models\Order; class CreateShippingCostTransactionProcessor @@ -57,7 +58,8 @@ class CreateShippingCostTransactionProcessor TransactionType::SHIPPING_COST, 'Shipping Cost', $quantity, - $totalShippingCost/$totalCBM + $totalShippingCost/$totalCBM, + TaxPercentage::SIX_PERCENT ); $shippingCostTransaction = $this->createsShippingCostTransaction->execute($order, $transactionObject, $transactionDetailObject); diff --git a/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionFixProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionFixProcessor.php index f019209e..940935fa 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionFixProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionFixProcessor.php @@ -16,6 +16,8 @@ use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus; +use Carbon\Carbon; +use Illuminate\Support\Facades\Log; class CreateStorageInvoiceDocTransactionFixProcessor { @@ -51,9 +53,17 @@ class CreateStorageInvoiceDocTransactionFixProcessor /** @var Transaction $invoice_transaction */ $invoice_transaction = $packingList->transactions()->where('transactions.type', TransactionType::STORAGE_INVOICE)->whereIn('status', [ApprovalStatus::COMPLETED])->first(); - // $this->updatesTransactionStatus->execute($invoice_transaction, ApprovalStatus::APPROVED); + // $this->updatesTransactionStatus->execute($invoice_transaction, ApprovalStatus::APPROVED); + $view = 'pages.pdfs.shipping_invoice'; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + Log::info('$dateToCompare 2: '.$dateToCompare); + $storageInvoiceTransactionCreatedDate = Carbon::parse($invoice_transaction->created_at); + Log::info('$storageInvoiceTransactionCreatedDate 2: '.$storageInvoiceTransactionCreatedDate); + if ($storageInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice_transaction->tax > 0) { + $view = 'pages.pdfs.shipping_invoice_sst'; + } - $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]); + $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice_transaction]); $document_object = new DocumentObject( DocumentType::STORAGE_INVOICE, diff --git a/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionProcessor.php index d46f5661..d5277409 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateStorageInvoiceDocTransactionProcessor.php @@ -16,6 +16,8 @@ use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus; +use Carbon\Carbon; +use Illuminate\Support\Facades\Log; class CreateStorageInvoiceDocTransactionProcessor { @@ -53,7 +55,16 @@ class CreateStorageInvoiceDocTransactionProcessor // $this->updatesTransactionStatus->execute($invoice_transaction, ApprovalStatus::APPROVED); - $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]); + $view = 'pages.pdfs.shipping_invoice'; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + Log::info('$dateToCompare: '.$dateToCompare); + $storageInvoiceTransactionCreatedDate = Carbon::parse($invoice_transaction->created_at); + Log::info('$storageInvoiceTransactionCreatedDate: '.$storageInvoiceTransactionCreatedDate); + if ($storageInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice_transaction->tax > 0) { + $view = 'pages.pdfs.shipping_invoice_sst'; + } + + $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice_transaction]); $document_object = new DocumentObject( DocumentType::STORAGE_INVOICE, diff --git a/app/Classes/Modules/Transactions/Services/CreatesShippingCostTransaction.php b/app/Classes/Modules/Transactions/Services/CreatesShippingCostTransaction.php index e071d174..55c6ac99 100644 --- a/app/Classes/Modules/Transactions/Services/CreatesShippingCostTransaction.php +++ b/app/Classes/Modules/Transactions/Services/CreatesShippingCostTransaction.php @@ -44,6 +44,8 @@ class CreatesShippingCostTransaction extends AbstractUpdateRelationshipRecord $model->quantity = $transactionDetailObject->getQuantity(); $model->price = $transactionDetailObject->getPrice(); $model->amount = $transactionDetailObject->getAmount(); + $model->tax_amount = $transactionDetailObject->getTaxAmount(); + $model->tax_percentage = $transactionDetailObject->getTaxPercentage(); return $this->handler($transaction->transactionDetails(), $model); diff --git a/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php b/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php index bdb0f387..76ad6850 100644 --- a/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php +++ b/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php @@ -23,8 +23,10 @@ class CreatesTransactionDetail extends AbstractUpdateRelationshipRecord $model->quantity = $object->getQuantity(); $model->price = $object->getPrice(); $model->amount = $object->getAmount(); + $model->tax_amount = $object->getTaxAmount(); + $model->tax_percentage = $object->getTaxPercentage(); return $this->handler($transaction->transactionDetails(), $model); } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Transactions/Services/UpdatesTransactionDetail.php b/app/Classes/Modules/Transactions/Services/UpdatesTransactionDetail.php index 128214d4..457379bd 100644 --- a/app/Classes/Modules/Transactions/Services/UpdatesTransactionDetail.php +++ b/app/Classes/Modules/Transactions/Services/UpdatesTransactionDetail.php @@ -20,8 +20,10 @@ class UpdatesTransactionDetail extends AbstractUpdateRecord $transactionDetail->quantity = $object->getQuantity(); $transactionDetail->price = $object->getPrice(); $transactionDetail->amount = $object->getAmount(); + $transactionDetail->tax_amount = $object->getTaxAmount(); + $transactionDetail->tax_percentage = $object->getTaxPercentage(); return $this->handler($transactionDetail); } -} \ No newline at end of file +} diff --git a/app/Classes/ValueObjects/Constants/TaxPercentage.php b/app/Classes/ValueObjects/Constants/TaxPercentage.php new file mode 100644 index 00000000..a47336c9 --- /dev/null +++ b/app/Classes/ValueObjects/Constants/TaxPercentage.php @@ -0,0 +1,12 @@ +transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get(); foreach ($invoices as $invoice){ - + dump($invoice->id); - + $invoice->documents()->delete(); - - $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice]); - + + $view = 'pages.pdfs.shipping_invoice'; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { + $view = 'pages.pdfs.shipping_invoice_sst'; + } + + $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); + $document_object = new DocumentObject( DocumentType::SHIPPING_INVOICE, [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], @@ -72,10 +79,10 @@ class FixInvoice extends Command ApprovalStatus::COMPLETED, 'shipping_invoice' ); - + /** @var Document $document */ $document = (App()->make(CreatesDocument::class))->execute($invoice, $document_object); - + (App()->make(CreatesFiles::class))->execute($document, $document_object); } } diff --git a/app/Http/Resources/GroupForOrderV2Resource.php b/app/Http/Resources/GroupForOrderV2Resource.php index 69cce0ed..cfd2f121 100644 --- a/app/Http/Resources/GroupForOrderV2Resource.php +++ b/app/Http/Resources/GroupForOrderV2Resource.php @@ -26,7 +26,7 @@ class GroupForOrderV2Resource extends JsonResource 'original_currency' => new CurrencyResource($this->original_currency), 'issuer_name' => $this->issuerCompany->name, 'issuer_id' => $this->issuerCompany->id, - 'amount' => (float) $this->amount, + 'amount' => (float) $this->amount, //cief todo: 58 'service_charge' => (float) $this->amount, 'currency' => new CurrencyResource($this->currency), 'created_at' => Carbon::parse($this->created_at)->format('d-m-Y h:i:s A'), diff --git a/app/Http/Resources/TransactionResource.php b/app/Http/Resources/TransactionResource.php index d8697f8a..6a21f1d2 100644 --- a/app/Http/Resources/TransactionResource.php +++ b/app/Http/Resources/TransactionResource.php @@ -52,7 +52,7 @@ class TransactionResource extends JsonResource 'documents' => $groupTransactions ? DocumentResource::collection($this->documents->where('status', ApprovalStatus::PENDING_VERIFICATION)) : DocumentResource::collection($this->documents), 'type' => (int) $this->type, 'bill_no' => $this->bill_no, - 'amount' => (double) $this->amount, + 'amount' => (double) $this->amount, //cief todo: 58 'payment_method' => (int) $this->payment_method, 'payment_reference' => $this->payment_reference, 'outstanding' => (double) $this->amount - ($this->transactions()->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->sum('amount')), diff --git a/app/Http/Resources/TransactionWithStorageResource.php b/app/Http/Resources/TransactionWithStorageResource.php index dd307ad8..fe71d674 100644 --- a/app/Http/Resources/TransactionWithStorageResource.php +++ b/app/Http/Resources/TransactionWithStorageResource.php @@ -59,7 +59,7 @@ class TransactionWithStorageResource extends JsonResource if ($ts) { $paymentTransaction = Transaction::where('payment_reference', $ts->reference)->whereIn('status', [ApprovalStatus::PENDING_SUBMISSION])->first(); if($paymentTransaction){ - $groupTotalAmount = (double) $this->amount; + $groupTotalAmount = (double) $this->amount; //cief todo: 58 foreach ($group_payment_history as $key => $value) { if ($value->id === $ts->id && $value->reference === $ts->reference) { @@ -88,10 +88,10 @@ class TransactionWithStorageResource extends JsonResource 'documents' => $groupTransactions ? DocumentResource::collection($this->documents->where('status', ApprovalStatus::PENDING_VERIFICATION)) : DocumentResource::collection($this->documents), 'type' => (int) $this->type, 'bill_no' => $this->bill_no, - 'amount' => (double) $this->amount, + 'amount' => (double) $this->amount, //cief todo: 58 'payment_method' => (int) $this->payment_method, 'payment_reference' => $this->payment_reference, - 'outstanding' => (double) $this->amount - ($this->transactions()->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->sum('amount')), + 'outstanding' => (double) $this->amount - ($this->transactions()->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->sum('amount')), //cief todo: 58 'floating' => $group_payment_attempts ? $groupTotalAmount : (double) $this->transactions()->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::PENDING_SUBMISSION, ApprovalStatus::PENDING_VERIFICATION])->sum('amount'), 'service_charge' => (double) $this->service_charge, 'tax' => (double) $this->tax, diff --git a/database/migrations/2024_04_06_004026_add_columns_to_transaction_details_table.php b/database/migrations/2024_04_06_004026_add_columns_to_transaction_details_table.php new file mode 100644 index 00000000..7d179b3e --- /dev/null +++ b/database/migrations/2024_04_06_004026_add_columns_to_transaction_details_table.php @@ -0,0 +1,36 @@ +decimal('tax_amount', 14, 5)->after('amount')->default(0.00); + $table->decimal('tax_percentage', 6, 2)->after('tax_amount')->default(0.00); + $table->decimal('discount', 14, 5)->after('tax_percentage')->default(0.00); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('transaction_details', function (Blueprint $table) { + $table->dropColumn('tax_amount'); + $table->dropColumn('tax_percentage'); + $table->dropColumn('discount'); + }); + } +} diff --git a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingComponent.vue deleted file mode 100644 index 13a4981b..00000000 --- a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingComponent.vue +++ /dev/null @@ -1,322 +0,0 @@ - - diff --git a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue index 6cbfa39e..682cd602 100644 --- a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue @@ -38,6 +38,7 @@
diff --git a/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemFormComponent.vue b/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemFormComponent.vue index b32e2b49..262c67ab 100644 --- a/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemFormComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemFormComponent.vue @@ -37,7 +37,11 @@
-
+
+

Name

+

{{product.name}}

+
+
@@ -93,6 +97,10 @@ // required: true default: 0 }, + name:{ + type: String, + default: "" + }, }, data(){ return { @@ -102,6 +110,7 @@ quantity: 0, price: 0, amount: 0, + reference: 'CUSTOM_CHARGES', }, products: [] } @@ -113,6 +122,12 @@ price: { required }, } }, + mounted() { + if(this.name){ + this.product.name = this.name; + this.product.reference = 'PAY_ON_BEHALF'; + } + }, created() { if (this.data) { this.product = this.data; @@ -136,7 +151,7 @@ this.$emit('add', { name: this.product.name, quantity: this.product.quantity, - reference: 'CUSTOM_CHARGES', + reference: this.product.reference, price: parseFloat((this.product.price).toString().replace(',', '')), amount: this.productTotal }); diff --git a/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemsFormComponent.vue b/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemsFormComponent.vue index 5153c14a..a0806e4d 100644 --- a/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemsFormComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/forms/InvoiceItemsFormComponent.vue @@ -15,13 +15,14 @@
- +
-
{{ addCharges? 'Cancel' : 'Add Charges' }}
+
{{ addCharges? 'Cancel' : 'Add \'Pay On Behalf \' Charges' }}
+
{{ addCharges? 'Cancel' : 'Add Charges' }}
Save Change
@@ -44,6 +45,7 @@ parameters: { transaction_details: [] }, + addChargesName: '' } }, methods: { diff --git a/resources/views/pages/pdfs/shipping_invoice_sst.blade.php b/resources/views/pages/pdfs/shipping_invoice_sst.blade.php new file mode 100644 index 00000000..5e08aea2 --- /dev/null +++ b/resources/views/pages/pdfs/shipping_invoice_sst.blade.php @@ -0,0 +1,21 @@ +@extends('layouts.base_pdf') +@section('inner_content') +
+ +

+
{{ $invoice_transaction->bill_no }}
+
+ @include('pages.pdfs.shipping_invoice_sst_inner', ['invoice_transaction' => $invoice_transaction]) + + + @include('pages.pdfs.packing_list_measurement', ['invoice_transaction' => $invoice_transaction]) + + + + + + + +
SST This is generated by computer. No signature required.Page {PAGENO} of {nbpg}
+
+@endsection diff --git a/resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php b/resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php new file mode 100644 index 00000000..eadd5f87 --- /dev/null +++ b/resources/views/pages/pdfs/shipping_invoice_sst_inner.blade.php @@ -0,0 +1,143 @@ + + + + + + + + + + + + + +
+ + + CIEF WORLDWIDE SDN BHD + + + (1134596-M)
+ No. 72-3, Jalan Jalil 1,
+ The Earth Bukit Jalil,
+ 57000 Kuala Lumpur
+ Tel: 03-8082 1252
+ SST No: W10-2403-32000643 +
+
+ + Invoice + +
+ +
Invoice No: {{ $invoice_transaction->bill_no }}
+ + @php + $companyModule = $invoice_transaction->owner->owner->companyModule; + @endphp + +
Date: {{ $invoice_transaction->created_at }}
+
Order No: {{ $invoice_transaction->owner->owner->reference }}
+
Container Ref: {{ $invoice_transaction->owner->containers()->first()->reference }}
+ {{--
{{ $companyModule->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference }}
--}} +
 
+ +
+ + Bill To + +
+
+ {{ $companyModule->name }} +
+
+ @php + $addresses = $companyModule->addresses()->where('status', '=', \App\Classes\ValueObjects\Constants\ApprovalStatus::APPROVED)->where('type', '=', \App\Classes\ValueObjects\Constants\AddressType::BILLING)->first(); + @endphp + @if($addresses) + {{ $addresses->street_one }} + {{ $addresses->street_two }} , + {{ $addresses->district()->first()->name }}, + {{ $addresses->postcode }} + {{ $addresses->state()->first()->name }}, + {{ $addresses->country()->first()->name }} + @endif +
+
+ @php + $contact = $companyModule->contacts()->first(); + @endphp + Phone: {{ $contact ? $contact->phone : '' }} +
+
+ +
+
+ + + + + + + + + + + + + + @foreach ($invoice_transaction->transactionDetails as $key => $transaction_detail) + + + + + + + + + + @endforeach + + + + + + + + + + + + + + + + + + + + + + + +
NoDescriptionQtyUnit Price
(RM)
Tax (%)Tax Amount
(RM)
Sub Total
(RM)
{{ $key + 1 }}{!! $transaction_detail->name !!}{{ round($transaction_detail->quantity, 3) }} + {{ round($transaction_detail->price, 2) }} + + {{ round($transaction_detail->tax_percentage, 2) }} + + {{ number_format(round($transaction_detail->tax_amount, 2), 2) }} + + {{ number_format(round($transaction_detail->amount, 2), 2) }} +
Subtotal + {{ number_format(round($invoice_transaction->amount - $invoice_transaction->tax, 2), 2) }} +
Service Charges + {{ number_format(round($invoice_transaction->service_charge, 2), 2) }} +
Total SST (6%) RM{{ number_format($invoice_transaction->tax, 2) }}
Total Amount RM + {{ number_format(round($invoice_transaction->amount, 2), 2) }} +
diff --git a/resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php b/resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php new file mode 100644 index 00000000..f7cff168 --- /dev/null +++ b/resources/views/pages/pdfs/shipping_invoices_sst_combined.blade.php @@ -0,0 +1,163 @@ +@extends('layouts.base_pdf') +@section('inner_content') + @php + $grandTotal = 0; + $grandTotalTax = 0; + $grandSubTotal = 0; + @endphp + + + + + + + + + + + + + +
+ + + CIEF WORLDWIDE SDN BHD + + + (1134596-M)
+ No. 72-3, Jalan Jalil 1,
+ The Earth Bukit Jalil,
+ 57000 Kuala Lumpur
+ Tel: 03-8082 1252
+ SST No: W10-2403-32000643 +
+
+ + Summary + +
+ + @php + $companyModule = $invoice_transactions[0]->owner->owner->companyModule; + @endphp + + {{--
Date: {{ $invoice_transactions[0]->created_at }}
--}} +
Date: {{ \Carbon\Carbon::now() }}
+
 
+ +
+ + Bill To + +
+
+ {{ $companyModule->name }} +
+
+ @php + $addresses = $companyModule->addresses()->where('status', '=', \App\Classes\ValueObjects\Constants\ApprovalStatus::APPROVED)->where('type', '=', \App\Classes\ValueObjects\Constants\AddressType::BILLING)->first(); + @endphp + {{ $addresses->street_one }} + {{ $addresses->street_two }} , + {{ $addresses->district()->first()->name }}, + {{ $addresses->postcode }} + {{ $addresses->state()->first()->name }}, + {{ $addresses->country()->first()->name }} +
+
+ @php + $contact = $companyModule->contacts()->first(); + @endphp + Phone: {{ $contact ? $contact->phone : '' }} +
+
+ +
+
+ + + + + + + + + + + + + + + @foreach ($invoice_transactions as $key => $invoice_transaction) + @foreach ($invoice_transaction->transactionDetails as $transaction_detail) + + + + + + + + + + + @endforeach + @php + $grandSubTotal = $grandSubTotal + round($invoice_transaction->amount - $invoice_transaction->tax, 2); + $grandTotalTax = $grandTotalTax + round($invoice_transaction->tax, 2); + $grandTotal = $grandTotal + round($invoice_transaction->amount, 2); + @endphp + @endforeach + + + + + + + + + + + + + + + + + + +
NoInvoice NoDescriptionQtyUnit Price
(RM)
Tax (%)Tax Amount
(RM)
Sub Total
(RM)
{{ $key + 1 }}{{ $invoice_transaction->bill_no }}{!! $transaction_detail->name !!}{{ round($transaction_detail->quantity, 3) }} + {{ round($transaction_detail->price, 2) }} + + {{ round($transaction_detail->tax_percentage, 2) }} + + {{ number_format(round($transaction_detail->tax_amount, 2), 2) }} + + {{ round($transaction_detail->amount, 2) }} +
Total Taxable Amount + {{ round($grandSubTotal, 2) }} +
Total SST (6%) RM + {{ round($grandTotalTax, 2) }} +
Total Amount RM + {{ round($grandTotal, 2) }} + +
+ + @foreach ($invoice_transactions as $transaction) + + @include('pages.pdfs.shipping_invoice_sst_inner', ['invoice_transaction' => $transaction]) + + @include('pages.pdfs.packing_list_measurement', ['invoice_transaction' => $transaction]) + @endforeach + + + + + + + + +
This is generated by computer. No signature required.Page {PAGENO} of {nbpg}
+
+@endsection diff --git a/routes/web.php b/routes/web.php index da9575b8..c95a958d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -802,7 +802,14 @@ Route::get('/invoices/fix/{company_module_id}', function($company_module_id) { $invoice->documents()->delete(); - $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice]); + $view = 'pages.pdfs.shipping_invoice'; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { + $view = 'pages.pdfs.shipping_invoice_sst'; + } + + $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); $document_object = new DocumentObject( DocumentType::SHIPPING_INVOICE, @@ -828,8 +835,16 @@ Route::get('/invoices/combine/{ids}', function($ids){ $ids = json_decode($ids); $transactions = Transaction::whereIn('id', $ids)->get(); + $invoice = $transactions[0]; //NOTE: invoices that need to be combined need to be seperated before and after SST implementation - $pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoices_combined', ['invoice_transactions' => $transactions]); + $view = 'pages.pdfs.shipping_invoices_combined'; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { + $view = 'pages.pdfs.shipping_invoices_sst_combined'; + } + + $pdf = LaravelMpdf::loadView($view, ['invoice_transactions' => $transactions]); return $pdf->download('combined_invoice_.pdf'); })->name('invoice.combined_summary'); @@ -1255,7 +1270,7 @@ Route::get('/payment-and-billing-2', function () { })->name('admin.payment-and-billing-2'); Route::get('/show-all-extra-payments', function () { - ini_set('memory_limit', '-1'); + ini_set('memory_limit', '-1'); $invoices = Transaction::where('type', TransactionType::SHIPPING_INVOICE) ->where('status', ApprovalStatus::COMPLETED) From 7d70c800db3e8014436e4302817e12a6b965f6b3 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 02:12:55 +0800 Subject: [PATCH 09/18] update payment export itemization --- .../Exports/Services/ExportsPaymentTransactions.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php index 3c0dfabc..554fa8b9 100644 --- a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php @@ -132,11 +132,12 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading $transactionDetails = $transaction->transactionDetails; + $firstItem = true; $rows = []; foreach ($transactionDetails as $detail) { // Prepare each row based on the transaction detail $rows[] = [ - '<>', + $firstItem ? '<>' : '', $transaction->created_at->format('m/d/Y H:m'), $company->debtor, $order->reference, @@ -152,6 +153,10 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading $detail->tax_amount, $detail->tax_percentage, ]; + + if($firstItem) { + $firstItem = false; + } } return $rows; From 19efba4b897a203e9f3be92ec83a62f70873bb47 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 02:13:43 +0800 Subject: [PATCH 10/18] update payment export itemization --- .../Modules/Exports/Services/ExportsPaymentTransactions.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php index 554fa8b9..a579b0c4 100644 --- a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php @@ -41,6 +41,9 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading 'DeptNo', 'Qty', 'UnitPrice', + 'TaxType', + 'TaxableAmt', + 'TaxRate', // 'marking', // 'contact person', // 'contact number', From aac2a0666add9539f37ad0657997f2657344f0cb Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 02:16:13 +0800 Subject: [PATCH 11/18] update payment export itemization --- .../Modules/Exports/Services/ExportsPaymentTransactions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php index a579b0c4..43ca9f1f 100644 --- a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php @@ -153,7 +153,7 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading $detail->quantity, $detail->price, $detail->tax_percentage ? 'SV-6' : '', - $detail->tax_amount, + $detail->tax_percentage ? $detail->amount : 0, $detail->tax_percentage, ]; From 2802e3c36672a3c1266099608e3b50e9a5f16a26 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 02:17:43 +0800 Subject: [PATCH 12/18] update payment export itemization --- .../Modules/Exports/Services/ExportsPaymentTransactions.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php index 43ca9f1f..a58b4279 100644 --- a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php @@ -152,8 +152,8 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading 'CIEF', $detail->quantity, $detail->price, - $detail->tax_percentage ? 'SV-6' : '', - $detail->tax_percentage ? $detail->amount : 0, + $detail->tax_percentage !== 0 ? 'SV-6' : '', + $detail->tax_percentage !== 0 ? $detail->amount : 0, $detail->tax_percentage, ]; From a959e83f5b8cce322cecf8f7bb036f9e1e196b15 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 02:19:05 +0800 Subject: [PATCH 13/18] update payment export itemization --- .../Modules/Exports/Services/ExportsPaymentTransactions.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php index a58b4279..651ae04b 100644 --- a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php @@ -138,6 +138,7 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading $firstItem = true; $rows = []; foreach ($transactionDetails as $detail) { + dd($detail->tax_percentage); // Prepare each row based on the transaction detail $rows[] = [ $firstItem ? '<>' : '', From 675324081b3fb9acdc43e422a8d913390a12e524 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 02:21:30 +0800 Subject: [PATCH 14/18] update payment export itemization --- .../Modules/Exports/Services/ExportsPaymentTransactions.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php index 651ae04b..5ca776b0 100644 --- a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php @@ -138,7 +138,6 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading $firstItem = true; $rows = []; foreach ($transactionDetails as $detail) { - dd($detail->tax_percentage); // Prepare each row based on the transaction detail $rows[] = [ $firstItem ? '<>' : '', @@ -153,8 +152,8 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading 'CIEF', $detail->quantity, $detail->price, - $detail->tax_percentage !== 0 ? 'SV-6' : '', - $detail->tax_percentage !== 0 ? $detail->amount : 0, + floatval($detail->tax_percentage) > 0 ? 'SV-6' : '', + floatval($detail->tax_percentage) > 0 ? $detail->amount : 0, $detail->tax_percentage, ]; From 75037f6192a7b530cb0570cec07107922f6f4f43 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 02:22:30 +0800 Subject: [PATCH 15/18] update payment export itemization --- .../Modules/Exports/Services/ExportsPaymentTransactions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php index 5ca776b0..a266be87 100644 --- a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php @@ -153,7 +153,7 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading $detail->quantity, $detail->price, floatval($detail->tax_percentage) > 0 ? 'SV-6' : '', - floatval($detail->tax_percentage) > 0 ? $detail->amount : 0, + floatval($detail->tax_percentage) > 0 ? $detail->amount : '0', $detail->tax_percentage, ]; From dcec8cb33b0db579057fa2620607ffb35416b4ca Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 18 Apr 2024 02:27:35 +0800 Subject: [PATCH 16/18] update payment export itemization --- .../Modules/Exports/Services/ExportsPaymentTransactions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php index a266be87..9fd483bc 100644 --- a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php @@ -146,7 +146,7 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeading $order->reference, $order->reference, '500-0000', - $detail->name, + str_replace('
', ' ', $detail->name), '', $container->reference, 'CIEF', From 46a0e670bab6de7db1a391712222ee5ba9a2843b Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Sat, 4 May 2024 17:51:57 +0800 Subject: [PATCH 17/18] Fix emails cannot be sent with attachment --- app/Classes/Notifications/InvoiceIssuedEmail.php | 7 ++++++- app/Classes/Notifications/ShipmentDepartureEmail.php | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/Classes/Notifications/InvoiceIssuedEmail.php b/app/Classes/Notifications/InvoiceIssuedEmail.php index 8a5c90cc..bbd4271d 100644 --- a/app/Classes/Notifications/InvoiceIssuedEmail.php +++ b/app/Classes/Notifications/InvoiceIssuedEmail.php @@ -8,6 +8,7 @@ use App\Classes\ValueObjects\Constants\TransactionType; use App\Models\PackingList; use App\Models\User; use Illuminate\Notifications\Messages\MailMessage; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; class InvoiceIssuedEmail extends AbstractEmail @@ -35,10 +36,14 @@ class InvoiceIssuedEmail extends AbstractEmail $invoice = $this->packingList->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->where('status', ApprovalStatus::APPROVED)->first(); $invoiceDocument = $invoice->documents()->first()->files; + // $fileContent = Storage::disk('documents')->get($invoiceDocument->first()->file->file_info->original->file); + $filePath = storage_path('app/documents/' . $invoiceDocument->first()->file->file_info->original->file); + + Log::info('InvoiceIssuedEmail sent - Att: '.$this->user->name.' - Invoice for order no.'. $this->packingList->owner->reference); return (new MailMessage) ->subject('Att: '.$this->user->name.' - Invoice for order no.'. $this->packingList->owner->reference) - ->attach(Storage::disk('documents')->get($invoiceDocument->first()->file->file_info->original->file), [ + ->attach($filePath, [ 'as' => 'name.pdf', 'mime' => 'application/pdf', ])->view('emails.shipment.invoice', ['user' => $this->user, 'packingList' => $this->packingList]); diff --git a/app/Classes/Notifications/ShipmentDepartureEmail.php b/app/Classes/Notifications/ShipmentDepartureEmail.php index 44362d44..902ece25 100644 --- a/app/Classes/Notifications/ShipmentDepartureEmail.php +++ b/app/Classes/Notifications/ShipmentDepartureEmail.php @@ -9,6 +9,7 @@ use App\Models\PackingList; use App\Models\PasswordReset; use App\Models\User; use Illuminate\Notifications\Messages\MailMessage; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; class ShipmentDepartureEmail extends AbstractEmail @@ -40,10 +41,14 @@ class ShipmentDepartureEmail extends AbstractEmail $invoiceDocument = $invoice->documents()->first()->files; + // $fileContent = Storage::disk('documents')->get($invoiceDocument->first()->file->file_info->original->file); + $filePath= storage_path('app/documents/' . $invoiceDocument->first()->file->file_info->original->file); + + Log::info('ShipmentDepartureEmail sent - Att: '.$this->user->name.' - Invoice for order no.'. $this->packingList->owner->reference); return (new MailMessage) ->subject('Your packages are on the way to malaysia - Invoice pending payment for order no.'. $this->packingList->owner->reference) - ->attach(Storage::disk('documents')->get($invoiceDocument->first()->file->file_info->original->file), [ + ->attach($filePath, [ 'as' => 'name.pdf', 'mime' => 'application/pdf', ])->bcc(['email_test@cief-malaysia.com'])->view('emails.shipment.ETD', ['user' => $this->user, 'packingList' => $this->packingList]); From 1705b5c2e5b92d13a60020e76051d66a6737427b Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Mon, 6 May 2024 13:19:23 +0800 Subject: [PATCH 18/18] Fix a front end UX problem reported by Yien --- .../CustomerPaymentsBillingComponent.vue | 21 ++++++++++++++----- .../forms/PaymentFormComponent.vue | 1 + .../PaymentVerificationFormComponent.vue | 9 ++++++-- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingComponent.vue index 244ba240..f93ba436 100644 --- a/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingComponent.vue @@ -68,10 +68,10 @@ - MYR {{(Math.round((item.outstanding + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")}}
-
+
Make Payment
@@ -238,6 +238,17 @@ latestComment() { let questions = this.item.remarks; return questions.slice().reverse()[0]; + }, + paymentPending(){ + if (Array.isArray(this.item.transactions)) { + for (let i = 0; i < this.item.transactions.length; i++) { + const status = this.item.transactions[i].status; + if (status === 1) { + return true; + } + } + } + return false; } }, created(){ diff --git a/resources/assets/vue/components/paymentsBilling/forms/PaymentFormComponent.vue b/resources/assets/vue/components/paymentsBilling/forms/PaymentFormComponent.vue index bd861a20..3ff38d1f 100644 --- a/resources/assets/vue/components/paymentsBilling/forms/PaymentFormComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/forms/PaymentFormComponent.vue @@ -157,6 +157,7 @@ this.error = response.payload.data.message; } else{ + this.closeModal(); this.updateList(); } } diff --git a/resources/assets/vue/components/paymentsBilling/forms/PaymentVerificationFormComponent.vue b/resources/assets/vue/components/paymentsBilling/forms/PaymentVerificationFormComponent.vue index bb1df036..a60f6b14 100644 --- a/resources/assets/vue/components/paymentsBilling/forms/PaymentVerificationFormComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/forms/PaymentVerificationFormComponent.vue @@ -76,9 +76,14 @@ files: this.files }; this.submit(this.route('api.transaction.payment.verification.create', this.data.id), 'post', this.section, true, true) - } + }, + successHandler(response){ + this.closeModal(); + this.formHandler(); + window.location.reload(); + }, }, mixins: [ModalFromHandler] } - \ No newline at end of file +