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 @@