diff --git a/app/Classes/Modules/Bookings/ControllersLogic/ApprovePaymentVerificationLogic.php b/app/Classes/Modules/Bookings/ControllersLogic/ApprovePaymentVerificationLogic.php
index ebe4ce62..b0a01562 100644
--- a/app/Classes/Modules/Bookings/ControllersLogic/ApprovePaymentVerificationLogic.php
+++ b/app/Classes/Modules/Bookings/ControllersLogic/ApprovePaymentVerificationLogic.php
@@ -5,7 +5,6 @@ namespace App\Classes\Modules\Bookings\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
-use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor;
use App\Classes\Modules\Documents\Services\ApprovesDocument;
use App\Classes\Modules\Documents\Services\FetchesDocument;
@@ -29,13 +28,12 @@ class ApprovePaymentVerificationLogic extends AbstractControllerLogic
* @param FetchesDocument $fetchesDocument
* @param CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor
*/
- public function __construct(FetchesTransaction $fetchesTransaction, UpdatesTransactionStatus $updatesTransactionStatus, ApprovesDocument $approvesDocument, RejectsDocument $rejectsDocument, FetchesDocument $fetchesDocument, CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor)
+ public function __construct(FetchesTransaction $fetchesTransaction, UpdatesTransactionStatus $updatesTransactionStatus, ApprovesDocument $approvesDocument, RejectsDocument $rejectsDocument, FetchesDocument $fetchesDocument)
{
$this->fetchesTransaction = $fetchesTransaction;
$this->updatesTransactionStatus = $updatesTransactionStatus;
$this->approvesDocument = $approvesDocument;
$this->rejectsDocument = $rejectsDocument;
- $this->createInvoiceTransactionProcessor = $createInvoiceTransactionProcessor;
}
/**
@@ -60,9 +58,6 @@ class ApprovePaymentVerificationLogic extends AbstractControllerLogic
/** @var RejectsDocument */
private $rejectsDocument;
- /** @var CreateInvoiceTransactionProcessor */
- private $createInvoiceTransactionProcessor;
-
/**
* @param Request $request
* @return JsonResponse
@@ -79,7 +74,7 @@ class ApprovePaymentVerificationLogic extends AbstractControllerLogic
$this->updatesTransactionStatus->execute($transaction, $status === 'approve' ? ApprovalStatus::APPROVED : ApprovalStatus::REJECTED);
- $this->createInvoiceTransactionProcessor->execute($transaction->booking);
+ // $this->createInvoiceTransactionProcessor->execute($transaction->booking);
return $this->response([]);
}
diff --git a/app/Classes/Modules/Bookings/Services/CalculatesBookingCurrencyAverageRate.php b/app/Classes/Modules/Bookings/Services/CalculatesBookingCurrencyAverageRate.php
index 996c8248..e00ab114 100644
--- a/app/Classes/Modules/Bookings/Services/CalculatesBookingCurrencyAverageRate.php
+++ b/app/Classes/Modules/Bookings/Services/CalculatesBookingCurrencyAverageRate.php
@@ -9,11 +9,20 @@ use Carbon\Carbon;
class CalculatesBookingCurrencyAverageRate
{
- public function execute(Booking $booking){
+ public function execute(Booking $booking, $type){
+
+ if ($type == TransactionType::PAYMENT) {
return $booking->transactions()
->where('type', TransactionType::PAYMENT)
->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
->avg('currency_rate');
+ }
+ else if ($type == TransactionType::BILL) {
+ return $booking->transactions()
+ ->where('type', TransactionType::BILL)
+ ->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
+ ->avg('currency_rate');
+ }
}
}
\ No newline at end of file
diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreatePaymentProofDocumentLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreatePaymentProofDocumentLogic.php
index da5c23b6..5cc0efec 100644
--- a/app/Classes/Modules/Transactions/ControllersLogic/CreatePaymentProofDocumentLogic.php
+++ b/app/Classes/Modules/Transactions/ControllersLogic/CreatePaymentProofDocumentLogic.php
@@ -19,6 +19,9 @@ use App\Models\Document;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
+use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor;
+
+
class CreatePaymentProofDocumentLogic extends AbstractControllerLogic
{
@@ -44,6 +47,9 @@ class CreatePaymentProofDocumentLogic extends AbstractControllerLogic
/** @var UpdatesTransactionStatus */
private $updatesTransactionStatus;
+ /** @var CreateInvoiceTransactionProcessor */
+ private $createInvoiceTransactionProcessor;
+
/**
* CreatePaymentVerificationDocumentLogic constructor.
* @param FetchesTransaction $fetchesTransaction
@@ -51,12 +57,13 @@ class CreatePaymentProofDocumentLogic extends AbstractControllerLogic
* @param CreatesFiles $createsFile
* @param UpdatesTransactionStatus $updatesTransactionStatus
*/
- public function __construct(FetchesTransaction $fetchesTransaction, CreatesDocument $createsDocument, CreatesFiles $createsFile, UpdatesTransactionStatus $updatesTransactionStatus)
+ public function __construct(FetchesTransaction $fetchesTransaction, CreatesDocument $createsDocument, CreatesFiles $createsFile, UpdatesTransactionStatus $updatesTransactionStatus, CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor)
{
$this->fetchesTransaction = $fetchesTransaction;
$this->createsDocument = $createsDocument;
$this->createsFile = $createsFile;
$this->updatesTransactionStatus = $updatesTransactionStatus;
+ $this->createInvoiceTransactionProcessor = $createInvoiceTransactionProcessor;
}
/**
@@ -77,6 +84,9 @@ class CreatePaymentProofDocumentLogic extends AbstractControllerLogic
$this->createsFile->execute($document, $object);
$this->updatesTransactionStatus->execute($transaction, ApprovalStatus::COMPLETED);
+
+ $this->createInvoiceTransactionProcessor->execute($transaction->booking);
+
return $this->response([]);
}
diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php
index 8d5c87bc..35389f36 100644
--- a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php
+++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php
@@ -26,6 +26,9 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
+use Meneses\LaravelLaravelMpdf\Facades\LaravelLaravelMpdf;
+use Meneses\LaravelMpdf\Facades\LaravelMpdf;
+
class CreateSupplierTransactionLogic extends AbstractControllerLogic
{
@@ -106,10 +109,9 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic
$rate, 0, 0, null, ApprovalStatus::APPROVED);
$transactions[] = $this->createsTransaction->execute($payment->booking, $object);
-
}
- $pdf = $this->pdf->loadView('pages.pdfs.supplier_order', ['transactions' => $transactions, 'supplier' => $supplier]);
+ $pdf = LaravelMpdf::loadView('pages.pdfs.currency_vendor_order', ['transactions' => $transactions, 'supplier' => $supplier]);
$path = Str::studly($supplier->name).'_'.Carbon::now()->format('Y_m_d_h_s_i').'.pdf';
@@ -118,7 +120,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic
[chunk_split('data:application/pdf;base64,'.base64_encode($pdf->output()))],
'',
ApprovalStatus::COMPLETED,
- 'supplier_orders'
+ 'currency_vendor_order'
);
foreach ($transactions as $key => $row) {
diff --git a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php
index 61b3a3f6..3a5deda3 100644
--- a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php
+++ b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php
@@ -81,6 +81,7 @@ class CreateInvoiceTransactionProcessor
->where('type', TransactionType::PURCHASE_ORDER)
->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
->first();
+
if ($po_order_transaction) {
$paymant_amount = $this->calculatesBookingPaidAmount->execute($booking, $booking->fix_currency_id);
$booking_amount = $booking->fix_amount;
@@ -93,7 +94,17 @@ class CreateInvoiceTransactionProcessor
$billNumber = $this->generatesTransactionBillNumber->execute('INV-');
- $booking_currency_average_rate = $this->calculatesBookingCurrencyAverageRate->execute($booking);
+ $booking_currency_average_rate = $this->calculatesBookingCurrencyAverageRate->execute($booking, TransactionType::PAYMENT);
+
+ $total_service_charge = $booking->transactions()
+ ->where('type', TransactionType::PAYMENT)
+ ->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
+ ->sum('service_charge');
+
+ $total_tax = $booking->transactions()
+ ->where('type', TransactionType::PAYMENT)
+ ->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
+ ->sum('tax');
$transaction_object = new TransactionObject(
$billNumber,
@@ -107,15 +118,16 @@ class CreateInvoiceTransactionProcessor
$transaction->currency_id,
$transaction->original_currency_id,
$booking_currency_average_rate,
- $transaction->tax,
- $transaction->service_charge,
+ $total_tax,
+ $total_service_charge,
null,
ApprovalStatus::APPROVED
);
+ $invoice_transaction = $this->createsTransaction->execute($po_order_transaction->booking, $transaction_object);
$supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]);
- $purchase_order_pdf = LaravelMpdf::loadView('pages.pdfs.purchase_order', ['transaction' => $po_order_transaction, 'supplier' => $supplier]);
+ $purchase_order_pdf = LaravelMpdf::loadView('pages.pdfs.purchase_order', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::PURCHASE_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($purchase_order_pdf->output()))],
@@ -126,7 +138,7 @@ class CreateInvoiceTransactionProcessor
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
- $deliver_order_pdf = LaravelMpdf::loadView('pages.pdfs.deliver_order', ['transaction' => $po_order_transaction, 'supplier' => $supplier]);
+ $deliver_order_pdf = LaravelMpdf::loadView('pages.pdfs.deliver_order', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::DELIVER_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($deliver_order_pdf->output()))],
@@ -137,7 +149,8 @@ class CreateInvoiceTransactionProcessor
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
- $payment_order_pdf = LaravelMpdf::loadView('pages.pdfs.payment_order', ['transaction' => $po_order_transaction, 'supplier' => $supplier]);
+
+ $payment_order_pdf = LaravelMpdf::loadView('pages.pdfs.payment_order', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::PAYMENT_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($payment_order_pdf->output()))],
@@ -148,7 +161,30 @@ class CreateInvoiceTransactionProcessor
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
- $supplier_order_pdf = LaravelMpdf::loadView('pages.pdfs.supplier_deliver_order', ['transaction' => $po_order_transaction, 'supplier' => $supplier]);
+ $billNumber = $this->generatesTransactionBillNumber->execute('SPDO-');
+
+ $booking_currency_average_rate = $this->calculatesBookingCurrencyAverageRate->execute($booking, TransactionType::BILL);
+
+ $transaction_object = new TransactionObject(
+ $billNumber,
+ TransactionType::SUPPLIER_DELIVER,
+ $transaction->issuer,
+ $transaction->receiver,
+ $transaction->recipient_bank_account_id,
+ $transaction->payment_method,
+ $paymant_amount,
+ $booking_amount,
+ $transaction->currency_id,
+ $transaction->original_currency_id,
+ $booking_currency_average_rate,
+ $total_tax,
+ $total_service_charge,
+ null,
+ ApprovalStatus::APPROVED
+ );
+ $supplier_deliver_order_transaction = $this->createsTransaction->execute($po_order_transaction->booking, $transaction_object);
+
+ $supplier_order_pdf = LaravelMpdf::loadView('pages.pdfs.supplier_deliver_order', ['supplier_deliver_order_transaction' => $supplier_deliver_order_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::SUPPLIER_DELIVER_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($supplier_order_pdf->output()))],
@@ -159,7 +195,6 @@ class CreateInvoiceTransactionProcessor
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
- $transaction = $this->createsTransaction->execute($po_order_transaction->booking, $transaction_object);
$this->updatesBookingStatus->execute($booking, ApprovalStatus::COMPLETED);
}
}
diff --git a/app/Classes/ValueObjects/Constants/TransactionType.php b/app/Classes/ValueObjects/Constants/TransactionType.php
index c1b1c350..905c12b1 100644
--- a/app/Classes/ValueObjects/Constants/TransactionType.php
+++ b/app/Classes/ValueObjects/Constants/TransactionType.php
@@ -20,4 +20,6 @@ final class TransactionType {
public const PURCHASE_ORDER = 7;
+ public const SUPPLIER_DELIVER = 8;
+
}
diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php
index cef04572..06093c1f 100644
--- a/app/Models/Transaction.php
+++ b/app/Models/Transaction.php
@@ -60,6 +60,8 @@ class Transaction extends AbstractModel implements Documentable
{
if($this->booking()->first()->fix_currency_id !== 1) {
$currency_rate = $this->currency()->first()->rates()->where('payment_method_type', $this->payment_method)->first();
+ dd($this->payment_method);
+
return number_format($this->original_amount / $currency_rate->selling, 2);
}
return $this->original_amount;
diff --git a/resources/views/pages/pdfs/currency_vendor_order.blade.php b/resources/views/pages/pdfs/currency_vendor_order.blade.php
new file mode 100644
index 00000000..d7d6c666
--- /dev/null
+++ b/resources/views/pages/pdfs/currency_vendor_order.blade.php
@@ -0,0 +1,46 @@
+@extends('layouts.base_pdf')
+@section('inner_content')
+
+
+
+
+
+
+
+ Atvantic Import & Export Snd. Bhd (1309816-P)
+
| No | +Subtotal | +Service Charges | +Tax | +Total Amount (RM) |
+
|---|---|---|---|---|
| {{ $key + 1 }} | +{{ $transaction->amount }} | +MYR {{ number_format($transaction->service_charge, 2) }} | +MYR {{ number_format($transaction->tax, 2) }} | +{{ $transaction->amount }} | +
| This is generated by computer. No signature required. | +Page {PAGENO} of {nbpg} | +
| No | @@ -74,29 +80,66 @@||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| {{ $key + 1 }} | -{{ $transaction_detail->product_code }} | +{{ $key + 1 }} | +{{ $transaction_detail->product_code }} | {{ $transaction_detail->product_name }} | -{{ $transaction_detail->quantity }} | -{{ $transaction_detail->convert_original_price() }} | -{{ $transaction_detail->convert_original_amount() }} | +{{ $transaction_detail->quantity }} | ++ @if($invoice_transaction->booking()->first()->fix_currency_id !== 1) + {{ number_format( (1/$invoice_transaction->currency_rate) * $transaction_detail->price, 2) }} + @else + {{ number_format($transaction_detail->price, 2) }} + @endif + | ++ @if($invoice_transaction->booking()->first()->fix_currency_id !== 1) + {{ number_format( (1/$invoice_transaction->currency_rate) * $transaction_detail->amount, 2) }} + @else + {{ number_format($transaction_detail->amount, 2) }} + @endif + |
| - | Subtotal | -{{ $transaction->convert_original_amount() }} | +Subtotal | ++ @if($invoice_transaction->booking()->first()->fix_currency_id !== 1) + {{ number_format( (1/$invoice_transaction->currency_rate) * $invoice_transaction->amount, 2) }} + @else + {{ number_format($invoice_transaction->amount, 2) }} + @endif + | ||||||
| + | Service Charges | ++ {{ number_format($invoice_transaction->service_charge, 2) }} + | +||||||||
| + | Tax | +{{ number_format($invoice_transaction->tax, 2) }} | +||||||||
| - | Total | -{{ $transaction->convert_original_amount() }} | +Total | ++ @if($invoice_transaction->booking()->first()->fix_currency_id !== 1) + {{ number_format( ((1/$invoice_transaction->currency_rate) * $invoice_transaction->amount) - $invoice_transaction->service_charge - $invoice_transaction->tax, 2) }} + @else + {{ number_format($invoice_transaction->amount - $invoice_transaction->service_charge - $invoice_transaction->tax, 2) }} + @endif + | ||||||
| No | @@ -73,32 +79,65 @@||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| {{ $key + 1 }} | -{{ $transaction_detail->product_code }} | +{{ $key + 1 }} | +{{ $transaction_detail->product_code }} | {{ $transaction_detail->product_name }} | -{{ $transaction_detail->quantity }} | -{{ $transaction_detail->convert_original_price() }} | -{{ $transaction_detail->convert_original_amount() }} | +{{ $transaction_detail->quantity }} | ++ @if($invoice_transaction->booking()->first()->fix_currency_id !== 1) + {{ number_format( (1/$invoice_transaction->currency_rate) * $transaction_detail->price, 2) }} + @else + {{ number_format($transaction_detail->price, 2) }} + @endif + | ++ @if($invoice_transaction->booking()->first()->fix_currency_id !== 1) + {{ number_format( (1/$invoice_transaction->currency_rate) * $transaction_detail->amount, 2) }} + @else + {{ number_format($transaction_detail->amount, 2) }} + @endif + |
| - | Subtotal | -{{ $transaction->convert_original_amount() }} | +Subtotal | ++ @if($invoice_transaction->booking()->first()->fix_currency_id !== 1) + {{ number_format( (1/$invoice_transaction->currency_rate) * $invoice_transaction->amount, 2) }} + @else + {{ number_format($invoice_transaction->amount, 2) }} + @endif + | ||||||
| - | Billing Charges | -{{ $transaction->service_charge }} | -Service Charges | ++ {{ number_format($invoice_transaction->service_charge, 2) }} + | + + @if($invoice_transaction->tax > 0) +||||||
| + | Tax | +{{ number_format($invoice_transaction->tax, 2) }} | +||||||||
| - | Total | -{{ $transaction->convert_original_amount() }} | +Total | ++ @if($invoice_transaction->booking()->first()->fix_currency_id !== 1) + {{ number_format( ((1/$invoice_transaction->currency_rate) * $invoice_transaction->amount) - $invoice_transaction->service_charge - $invoice_transaction->tax, 2) }} + @else + {{ number_format($invoice_transaction->amount - $invoice_transaction->service_charge - $invoice_transaction->tax, 2) }} + @endif + | ||||||
|
- PO#: {{ $transaction->bill_no }} - Ref#: {{ $transaction->payment_reference ?? '-' }} - Date: {{ $transaction->created_at }} + PO#: {{ $po_order_transaction->bill_no }} + Ref#: {{ $po_order_transaction->payment_reference ?? '-' }} + Date: {{ $po_order_transaction->created_at }} |