fix update group

This commit is contained in:
omair saleh
2022-07-29 14:30:16 +08:00
parent f435b6d088
commit af981bf177
3 changed files with 73 additions and 18 deletions
@@ -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));
}
@@ -53,15 +53,25 @@
<!--</span>-->
</div>
<div class="col">
<div class="font-heading fs-10 muted all-caps">PO Completion</div>
<document-file-viewer-component v-if="item.documents.purchase_order" :file="item.documents.purchase_order.files[0]">
<template slot="button">
<button class="btn btn-xs btn-default bg-master-lightest b-rad-none no-border">
<i class="fa fa-file-pdf-o"></i>
</button>
</template>
</document-file-viewer-component>
<p class="font-heading fs-12 bold text-success pointer" @click="expanded = !expanded"><span :class="[{'text-danger': item.complete_transactions.length !== item.transactions.length}]">{{item.complete_transactions.length}}</span>/{{item.transactions.length}}</p>
<div class="row">
<div class="col">
<div class="font-heading fs-10 muted all-caps">PO Completion</div>
</div>
</div>
<div class="row">
<div class="col-auto p-r-0" v-if="item.documents.purchase_order" >
<document-file-viewer-component :file="item.documents.purchase_order.files[0]">
<template slot="button">
<button class="btn btn-xs btn-default bg-master-lightest b-rad-none no-border">
<i class="fa fa-file-pdf-o"></i>
</button>
</template>
</document-file-viewer-component>
</div>
<div class="col">
<p class="font-heading fs-12 bold text-success pointer" @click="expanded = !expanded"><span :class="[{'text-danger': item.complete_transactions.length !== item.transactions.length}]">{{item.complete_transactions.length}}</span>/{{item.transactions.length}}</p>
</div>
</div>
<!--<span class="font-heading fs-10" v-for="transaction in item.transactions">-->
<!--<a :href="route('booking.details', transaction.booking.marking)">{{transaction.booking.marking}}&nbsp;</a>-->
<!--</span>-->
+2 -1
View File
@@ -29,6 +29,7 @@ Route::group(['prefix' => 'transactions', 'namespace' => 'Transactions', 'as' =>
Route::get('/list', 'ListGroupsController@list')->name('list');
Route::delete('/{id}/delete', 'DeleteGroupController@delete')->name('delete');
Route::put('/{id}/update', 'UpdateGroupController@update')->name('update');
Route::post('bulk/po', 'CreateBulkPurchaseOrderDocumentController@create')->name('bulk.po');
Route::post('/{id}/approve', 'CreateBulkPurchaseOrderDocumentController@aprove')->name('approve');
Route::post('/bulk/po', 'CreateBulkPurchaseOrderDocumentController@create')->name('bulk.po');
});
});