diff --git a/app/Classes/Modules/Transactions/ControllersLogic/UpdateGroupLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/UpdateGroupLogic.php index 3aa34056..68a01ff7 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/UpdateGroupLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/UpdateGroupLogic.php @@ -3,7 +3,12 @@ namespace App\Classes\Modules\Transactions\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; +use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; +use App\Classes\Modules\Documents\Services\CreatesDocument; +use App\Classes\Modules\Documents\Services\CreatesFiles; +use App\Classes\ValueObjects\Constants\DocumentType; use App\Http\Resources\GroupResource; +use App\Models\Document; use App\Models\SegmentConstant; use App\Classes\Modules\Companies\Services\FetchesCompany; use App\Classes\Modules\Transactions\Services\CalculatesTransactionServiceCharge; @@ -18,6 +23,8 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use ErrorException; +use Illuminate\Support\Facades\DB; +use Meneses\LaravelMpdf\Facades\LaravelMpdf; class UpdateGroupLogic extends AbstractControllerLogic { @@ -47,19 +54,31 @@ class UpdateGroupLogic extends AbstractControllerLogic /** @var CalculatesTransactionTransferFee */ private $calculatesTransactionTransferFee; - public function __construct( - FetchesGroup $fetchesGroup, - FetchesCompany $fetchesCompany, - CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge, - UpdatesTransaction $updatesTransaction, - CalculatesTransactionTransferFee $calculatesTransactionTransferFee - ) + /** @var CreatesDocument */ + private $createsDocument; + + /** @var CreatesFiles */ + private $createsFile; + + /** + * UpdateGroupLogic constructor. + * @param FetchesGroup $fetchesGroup + * @param FetchesCompany $fetchesCompany + * @param CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge + * @param UpdatesTransaction $updatesTransaction + * @param CalculatesTransactionTransferFee $calculatesTransactionTransferFee + * @param CreatesDocument $createsDocument + * @param CreatesFiles $createsFile + */ + public function __construct(FetchesGroup $fetchesGroup, FetchesCompany $fetchesCompany, CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge, UpdatesTransaction $updatesTransaction, CalculatesTransactionTransferFee $calculatesTransactionTransferFee, CreatesDocument $createsDocument, CreatesFiles $createsFile) { $this->fetchesGroup = $fetchesGroup; $this->fetchesCompany = $fetchesCompany; $this->calculatesTransactionServiceCharge = $calculatesTransactionServiceCharge; $this->updatesTransaction = $updatesTransaction; $this->calculatesTransactionTransferFee = $calculatesTransactionTransferFee; + $this->createsDocument = $createsDocument; + $this->createsFile = $createsFile; } /** @@ -77,6 +96,10 @@ class UpdateGroupLogic extends AbstractControllerLogic $supplier = $this->fetchesCompany->execute(['id' => $request->input('supplier_id')]); +// $group->transactions()->update(['issuer' => $supplier->id, 'currency_rate' => $rate]); +// $group->transactions()->update(['amount' => DB::raw('(original_amount * (1 / currency_rate)) + service_charge + tax')]); + + foreach($transactions as $transaction) { $constant = SegmentConstant::where('reference', SegmentConstants::SERVICE_CHARGE)->where('detail->id', $supplier->id)->first(); @@ -127,7 +150,7 @@ class UpdateGroupLogic extends AbstractControllerLogic $this->updatesTransaction->execute($transferTransaction, $object); } - $group->issuer = $supplier; + $group->issuer = $supplier->id; $group->amount = $group->transactions()->sum('amount'); $group->currency_rate = $rate; $group->tax = $group->transactions()->sum('tax'); @@ -135,6 +158,27 @@ class UpdateGroupLogic extends AbstractControllerLogic $group->save(); + $group->documents()->delete(); + + $transferFeeTransactions = $group->transactions()->with([ + 'transactions' => function ($transaction) { + return $transaction->where('type', TransactionType::TRANSFER_FEE); + }])->get()->pluck('transactions')->flatten(); + + $pdf = LaravelMpdf::loadView('pages.pdfs.currency_vendor_order', ['transactions' => $group->transactions, 'transferFeeTransactions' => $transferFeeTransactions, 'supplier' => $supplier]); + + $object = new DocumentObject( + DocumentType::CURRENCY_VENDOR_ORDER, + [chunk_split('data:application/pdf;base64,'.base64_encode($pdf->output()))], + '', + ApprovalStatus::COMPLETED, + 'currency_vendor_order' + ); + + /** @var Document $document */ + $document = $this->createsDocument->execute($group, $object); + $this->createsFile->execute($document, $object); + return $this->resourceResponse(new GroupResource($group)); } diff --git a/resources/assets/vue/components/bookings/elements/TransactionGroupComponent.vue b/resources/assets/vue/components/bookings/elements/TransactionGroupComponent.vue index 186a415b..165a9048 100644 --- a/resources/assets/vue/components/bookings/elements/TransactionGroupComponent.vue +++ b/resources/assets/vue/components/bookings/elements/TransactionGroupComponent.vue @@ -53,15 +53,25 @@
{{item.complete_transactions.length}}/{{item.transactions.length}}
+{{item.complete_transactions.length}}/{{item.transactions.length}}
+