From 36d6d03836c1ed616a5ede38bdbad9524e01740a Mon Sep 17 00:00:00 2001 From: edmondlang Date: Fri, 11 Mar 2022 22:35:59 +0800 Subject: [PATCH] Create Mock Up White Form - ui and API --- .../DownloadMockUpWhiteFormPdfLogic.php | 125 ++++++++++++++++++ .../DownloadMockUpWhiteFormPdfController.php | 15 +++ .../forms/SupplierPlaceOrderFormComponent.vue | 12 ++ routes/web.php | 4 +- 4 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 app/Classes/Modules/Transactions/ControllersLogic/DownloadMockUpWhiteFormPdfLogic.php create mode 100644 app/Http/Controllers/Transactions/DownloadMockUpWhiteFormPdfController.php diff --git a/app/Classes/Modules/Transactions/ControllersLogic/DownloadMockUpWhiteFormPdfLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/DownloadMockUpWhiteFormPdfLogic.php new file mode 100644 index 00000000..d3561244 --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/DownloadMockUpWhiteFormPdfLogic.php @@ -0,0 +1,125 @@ + 'Create Mock Up White Form', + 'message' => 'You have successfully created Mock Up White Form' + ]; + } + + /** @var FetchesCompany */ + private $fetchesCompany; + + /** @var CreatesTransaction */ + private $createsTransaction; + + /** @var GeneratesTransactionBillNumber */ + private $generatesTransactionBillNumber; + + /** @var CalculatesTransactionServiceCharge */ + private $calculatesTransactionServiceCharge; + + /** @var CalculatesTransactionTransferFee */ + private $calculatesTransactionTransferFee; + + /** + * CreateSupplierTransactionLogic constructor. + * @param FetchesCompany $fetchesCompany + * @param FetchesConstant $fetchesConstant + * @param CreatesTransaction $createsTransaction + * @param GeneratesTransactionBillNumber $generatesTransactionBillNumber + * @param CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge + * @param CalculatesTransactionTransferFee $calculatesTransactionTransferFee + */ + public function __construct(FetchesCompany $fetchesCompany, FetchesConstant $fetchesConstant, CreatesTransaction $createsTransaction, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge, CalculatesTransactionTransferFee $calculatesTransactionTransferFee) + { + + $this->fetchesCompany = $fetchesCompany; + $this->fetchesConstant = $fetchesConstant; + $this->createsTransaction = $createsTransaction; + $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; + $this->calculatesTransactionServiceCharge = $calculatesTransactionServiceCharge; + $this->calculatesTransactionTransferFee = $calculatesTransactionTransferFee; + } + + public function logic(Request $request) : JsonResponse + { + $supplier = $this->fetchesCompany->execute(['id' => $request->route('id')]); + + $rate = $request->route('rate'); + + $transactions = collect(); + $transferFeeTransactions = collect(); + + $payment_ids = explode(",", $request->route('payment_ids')); + + DB::beginTransaction(); + + foreach($payment_ids as $payment_id){ + + /** @var Transaction $payment */ + $payment = Transaction::find($payment_id); + + if($payment->status !== ApprovalStatus::APPROVED) continue; + + $billNumber = $this->generatesTransactionBillNumber->execute('SPLR-'); + $constant = SegmentConstant::where('reference', SegmentConstants::SERVICE_CHARGE)->where('detail->id', $supplier->id)->first(); + $serviceCharge = $this->calculatesTransactionServiceCharge->execute($payment->original_amount, $rate, $constant ? $constant->detail->service_charge->amount : 0); + + $object = new TransactionObject($billNumber, TransactionType::BILL, $supplier->id, 1, + $supplier->banks()->where('default', true)->first()->id, PaymentMethodType::CASH, + $payment->original_amount * (1 / $rate), $payment->original_amount, 1, $payment->original_currency_id, + $rate, 0, $supplier->id == 2 ? 0 : $serviceCharge, null, ApprovalStatus::PENDING_VERIFICATION); + + $transactions[] = $billTransaction = $this->createsTransaction->execute($payment->booking, $object); + + $transferFeeNumber = $this->generatesTransactionBillNumber->execute('TRFR-'); + $trasferFee = $this->calculatesTransactionTransferFee->execute($payment->original_amount); + $object = new TransactionObject($transferFeeNumber, TransactionType::TRANSFER_FEE, 1, $supplier->id, + $supplier->banks()->where('default', true)->first()->id, PaymentMethodType::CASH, + $payment->original_amount, $payment->original_amount, $payment->original_currency_id, $payment->original_currency_id, + 1, 0, $trasferFee, null, ApprovalStatus::PENDING_VERIFICATION); + + $transferFeeTransactions[] = $this->createsTransaction->execute($billTransaction, $object); + } + + + if(!count($transactions)) return $this->response([]); + + $pdf = LaravelMpdf::loadView('pages.pdfs.currency_vendor_order', ['transactions' => $transactions, 'transferFeeTransactions' => $transferFeeTransactions, 'supplier' => $supplier]); + DB::rollback(); + return $pdf->stream('MockUpWhiteForm.pdf'); + } +} diff --git a/app/Http/Controllers/Transactions/DownloadMockUpWhiteFormPdfController.php b/app/Http/Controllers/Transactions/DownloadMockUpWhiteFormPdfController.php new file mode 100644 index 00000000..10267363 --- /dev/null +++ b/app/Http/Controllers/Transactions/DownloadMockUpWhiteFormPdfController.php @@ -0,0 +1,15 @@ +execute($request); + } +} diff --git a/resources/assets/vue/components/bookings/forms/SupplierPlaceOrderFormComponent.vue b/resources/assets/vue/components/bookings/forms/SupplierPlaceOrderFormComponent.vue index c0acd955..84a9caa8 100644 --- a/resources/assets/vue/components/bookings/forms/SupplierPlaceOrderFormComponent.vue +++ b/resources/assets/vue/components/bookings/forms/SupplierPlaceOrderFormComponent.vue @@ -48,6 +48,7 @@
+
@@ -138,6 +139,17 @@ payments: [], rate: 0 }; + }, + generateMockWhiteForm() { + var paymentsIds = []; + + this.payments.forEach(function(payment) { + paymentsIds.push(payment.id); + }); + + paymentsIds = paymentsIds.toString(); + + window.open(this.route('transactions.supplier.mockUpWhiteForm.download', this.supplier.id, this.parameters.rate, paymentsIds), '_blank'); } }, mixins: [FormHandler] diff --git a/routes/web.php b/routes/web.php index 03435aee..d3b4e432 100644 --- a/routes/web.php +++ b/routes/web.php @@ -170,4 +170,6 @@ Route::get('purchase/sensitive/', function(Request $request){ foreach ($items as $key => $item){ echo ($key+1).'. '.$item->product_name.' => '.$item->transaction->owner->marking.'

'; } -}); \ No newline at end of file +}); + +Route::get('/transactions/supplier/{id}/mock-up-white-form/download/{rate}/{payment_ids}', 'Transactions\DownloadMockUpWhiteFormPdfController@download')->name('transactions.supplier.mockUpWhiteForm.download'); \ No newline at end of file