diff --git a/app/Classes/Modules/Transactions/ControllersLogic/ApproveShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/ApproveShippingInvoiceTransactionLogic.php
index 3eed1f28..9a5febba 100644
--- a/app/Classes/Modules/Transactions/ControllersLogic/ApproveShippingInvoiceTransactionLogic.php
+++ b/app/Classes/Modules/Transactions/ControllersLogic/ApproveShippingInvoiceTransactionLogic.php
@@ -3,6 +3,7 @@
namespace App\Classes\Modules\Transactions\ControllersLogic;
+use App\Classes\Modules\Transactions\Processors\ApproveShippingInvoiceTransactionProcessor;
use App\Classes\Notifications\InvoiceIssuedEmail;
use Illuminate\Http\Request;
@@ -36,29 +37,17 @@ class ApproveShippingInvoiceTransactionLogic extends AbstractControllerLogic
/** @var FetchesPackingList */
private $fetchesPackingList;
- /** @var UpdatesTransactionStatus */
- private $updatesTransactionStatus;
-
- /** @var CreatesDocument */
- private $createsDocument;
-
- /** @var CreatesFiles */
- private $createsFiles;
+ /** @var ApproveShippingInvoiceTransactionProcessor */
+ private $approveShippingInvoiceTransactionProcessor;
/**
- * ApprovePaymentVerificationLogic constructor.
* @param FetchesPackingList $fetchesPackingList
- * @param UpdatesTransactionStatus $updatesTransactionStatus
- * @param CreatesDocument $createsDocument
- * @param CreatesFiles $createsFiles
- * @param CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor
+ * @param ApproveShippingInvoiceTransactionProcessor $approveShippingInvoiceTransactionProcessor
*/
- public function __construct(FetchesPackingList $fetchesPackingList, UpdatesTransactionStatus $updatesTransactionStatus, CreatesDocument $createsDocument, CreatesFiles $createsFiles)
+ public function __construct(FetchesPackingList $fetchesPackingList, ApproveShippingInvoiceTransactionProcessor $approveShippingInvoiceTransactionProcessor)
{
$this->fetchesPackingList = $fetchesPackingList;
- $this->updatesTransactionStatus = $updatesTransactionStatus;
- $this->createsDocument = $createsDocument;
- $this->createsFiles = $createsFiles;
+ $this->approveShippingInvoiceTransactionProcessor = $approveShippingInvoiceTransactionProcessor;
}
/**
@@ -69,29 +58,8 @@ class ApproveShippingInvoiceTransactionLogic extends AbstractControllerLogic
public function logic(Request $request) : JsonResponse
{
$packing_list = $this->fetchesPackingList->execute(['id' => $request->route('id')]);
+ $this->approveShippingInvoiceTransactionProcessor->execute($packing_list);
- $invoice_transaction = $packing_list->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::PENDING_SUBMISSION])->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);
- $user = $packing_list->owner->companyModule->employees()->first();
- if(app()->environment(['production'])) {
- $user->notify(new InvoiceIssuedEmail($user, $packing_list));
- }
return $this->response([]);
}
diff --git a/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php
new file mode 100644
index 00000000..6fe29c44
--- /dev/null
+++ b/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php
@@ -0,0 +1,78 @@
+updatesTransactionStatus = $updatesTransactionStatus;
+ $this->createsDocument = $createsDocument;
+ $this->createsFiles = $createsFiles;
+ }
+
+
+ /**
+ * @param PackingList $packingList
+ * @throws MalformedRequestException
+ */
+ public function execute(PackingList $packingList)
+ {
+
+ /** @var Transaction $invoice_transaction */
+ $invoice_transaction = $packingList->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::PENDING_SUBMISSION])->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);
+ $user = $packingList->owner->companyModule->employees()->first();
+ if(app()->environment(['production'])) {
+ $user->notify(new InvoiceIssuedEmail($user, $packingList));
+ }
+ return;
+ }
+
+}
diff --git a/routes/web.php b/routes/web.php
index 865fc252..82803520 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -20,6 +20,7 @@ use App\Classes\Modules\PackingLists\Processors\FetchOrderListsFromYdPortalProce
use App\Classes\Modules\PackingLists\Processors\FetchPackingListFromVTPortalProcessor;
use App\Classes\Modules\PackingLists\Processors\FetchPackingListsFromYdPortalProcessor;
use App\Classes\Modules\PackingLists\Services\ListsPackingLists;
+use App\Classes\Modules\Transactions\Processors\ApproveShippingInvoiceTransactionProcessor;
use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\BusinessType;
@@ -769,14 +770,21 @@ Route::get('/invoices/approve', function(Request $request){
$invoices = Transaction::where('type', TransactionType::SHIPPING_INVOICE)->where('status', ApprovalStatus::PENDING_SUBMISSION)->get();
foreach ($invoices as $invoice) {
- $order = $invoice->owner->owner;
+ $packingList = $invoice->owner;
+ $order = $packingList->owner;
if(in_array($order->reference, json_decode($request->input('exclude')))){
continue;
}
- echo 'approving...'.$order->reference.'
';
+ try {
+ (App()->make(ApproveShippingInvoiceTransactionProcessor::class))->execute($packingList);
+ echo 'Invoice Approved...
';
+ } catch (Exception $exception){
+ echo 'failed to approve...
';
+
+ }
}