diff --git a/app/Classes/Modules/Transactions/ControllersLogic/ApproveShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/ApproveShippingInvoiceTransactionLogic.php new file mode 100644 index 00000000..14b5008e --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/ApproveShippingInvoiceTransactionLogic.php @@ -0,0 +1,93 @@ + 'Shipping Invoice Status', + 'message' => 'You have successfully updated the shipping invoice status' + ]; + } + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** @var UpdatesTransactionStatus */ + private $updatesTransactionStatus; + + /** @var CreatesDocument */ + private $createsDocument; + + /** @var CreatesFiles */ + private $createsFiles; + + /** + * ApprovePaymentVerificationLogic constructor. + * @param FetchesPackingList $fetchesPackingList + * @param UpdatesTransactionStatus $updatesTransactionStatus + * @param CreatesDocument $createsDocument + * @param CreatesFiles $createsFiles + * @param CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor + */ + public function __construct(FetchesPackingList $fetchesPackingList, UpdatesTransactionStatus $updatesTransactionStatus, CreatesDocument $createsDocument, CreatesFiles $createsFiles) + { + $this->fetchesPackingList = $fetchesPackingList; + $this->updatesTransactionStatus = $updatesTransactionStatus; + $this->createsDocument = $createsDocument; + $this->createsFiles = $createsFiles; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function logic(Request $request) : JsonResponse + { + $packing_list = $this->fetchesPackingList->execute(['id' => $request->input('packing_list_id')]); + + $invoice_transaction = $packing_list->transactions->where('type', TransactionType::SHIPPING_INVOICE)->first(); + + $this->updatesTransactionStatus->execute($invoice_transaction, ApprovalStatus::APPROVED); + + $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]); + + $document_object = new DocumentObject( + DocumentType::SHIPPING_INVOICE, + [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], + '', + ApprovalStatus::COMPLETED, + 'shipping_invoice' + ); + + /** @var Document $document */ + $document = $this->createsDocument->execute($invoice_transaction, $document_object); + + $this->createsFiles->execute($document, $document_object); + + return $this->response([]); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php index c7cc985d..50b6165f 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php @@ -176,21 +176,6 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic $this->createsTransactionDetail->execute($invoice_transaction, $object_detail); } - $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]); - - $document_object = new DocumentObject( - DocumentType::SHIPPING_INVOICE, - [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], - '', - ApprovalStatus::COMPLETED, - 'shipping_invoice' - ); - - /** @var Document $document */ - $document = $this->createsDocument->execute($invoice_transaction, $document_object); - - $this->createsFile->execute($document, $document_object); - return $this->response([]); } diff --git a/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php index d5f3368f..32d51bf6 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/UpdateShippingInvoiceTransactionLogic.php @@ -145,24 +145,6 @@ class UpdateShippingInvoiceTransactionLogic extends AbstractControllerLogic /** @var Transaction $invoice_transaction */ $invoice_transaction = $this->updatesTransaction->execute($invoice_transaction, $object); - $document = $invoice_transaction->documents->where('document_type', DocumentType::SHIPPING_INVOICE)->first(); - - $files = $document->files; - - $invoice_transaction = $this->fetchesTransaction->execute(['id' => $invoice_transaction->id]); - - $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]); - - $file_object = new FileObject(chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))); - - $filePath = $files[0]->file->path.'/'.$files[0]->file->filename; - - if(Storage::disk('documents')->exists($filePath)){ - Storage::disk('documents')->delete($filePath); - } - - Storage::disk('documents')->put($filePath, $file_object->getDecodedData()); - return $this->response([]); } diff --git a/app/Http/Controllers/Transactions/ApproveShippingInvoiceTransactionController.php b/app/Http/Controllers/Transactions/ApproveShippingInvoiceTransactionController.php new file mode 100644 index 00000000..3c0fe35a --- /dev/null +++ b/app/Http/Controllers/Transactions/ApproveShippingInvoiceTransactionController.php @@ -0,0 +1,15 @@ +execute($request); + } +} \ No newline at end of file diff --git a/routes/transaction.php b/routes/transaction.php index 802c6a8f..8ed481f0 100644 --- a/routes/transaction.php +++ b/routes/transaction.php @@ -16,6 +16,8 @@ Route::group(['prefix' => 'transactions', 'namespace' => 'Transactions', 'as' => route::put('/shipping-invoice/update', 'UpdateShippingInvoiceTransactionController@update')->name('supplier.update'); + route::put('/shipping-invoice/approve', 'ApproveShippingInvoiceTransactionController@approve')->name('supplier.approve'); + route::post('/shipping-invoice/calculator', 'ShippingEstimationCalculatorController@calculate')->name('shipping.estimation.calculator'); // Route::group(['prefix' => '{id}/payment', 'as' => 'payment.'], function () {