fixing bugs

This commit is contained in:
omair saleh
2021-05-12 05:19:37 +08:00
parent 760a592d9f
commit 366a4d87b3
21 changed files with 579 additions and 285 deletions
@@ -0,0 +1,24 @@
<?php
namespace App\Classes\General\Eloquent\Filters;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\SegmentConstants;
use App\Classes\ValueObjects\Constants\TransactionType;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
class PendingPayment implements Filter
{
/**
* @param Builder $builder
* @param $value
* @return Builder|mixed
*/
public static function apply(Builder $builder, $value)
{
return $builder;
}
}
@@ -0,0 +1,29 @@
<?php
namespace App\Classes\General\Eloquent\Filters;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\SegmentConstants;
use App\Classes\ValueObjects\Constants\TransactionType;
use Illuminate\Database\Eloquent\Builder;
class PendingPurchaseOrder implements Filter
{
/**
* @param Builder $builder
* @param $value
* @return Builder|mixed
*/
public static function apply(Builder $builder, $value)
{
return $builder->whereHas('service', function($service){
$service->whereHas('constants', function($query) {
$query->where('reference', SegmentConstants::SERVICE_TYPE)->where('detail->is_billable', true);
});
})->whereDoesntHave('transactions', function($transaction){
return $transaction->where('type', TransactionType::PURCHASE_ORDER)->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
});
}
}
@@ -0,0 +1,29 @@
<?php
namespace App\Classes\General\Eloquent\Filters;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\SegmentConstants;
use App\Classes\ValueObjects\Constants\TransactionType;
use Illuminate\Database\Eloquent\Builder;
class PurchaseOrderApproval implements Filter
{
/**
* @param Builder $builder
* @param $value
* @return Builder|mixed
*/
public static function apply(Builder $builder, $value)
{
return $builder->whereHas('service', function($service){
$service->whereHas('constants', function($query) {
$query->where('reference', SegmentConstants::SERVICE_TYPE)->where('detail->is_billable', true);
});
})->whereHas('transactions', function($transaction){
return $transaction->where('type', TransactionType::PURCHASE_ORDER)->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION]);
});
}
}
@@ -8,6 +8,7 @@ use App\Classes\Modules\Bookings\Services\FetchesBooking;
use App\Classes\Modules\Documents\Services\ApprovesDocument;
use App\Classes\Modules\Documents\Services\FetchesDocument;
use App\Classes\Modules\Documents\Services\RejectsDocument;
use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor;
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
@@ -34,15 +35,20 @@ class ApprovePurchaseOrderLogic extends AbstractControllerLogic
/** @var UpdatesTransactionStatus */
private $updatesTransactionStatus;
/** @var CreateInvoiceTransactionProcessor */
private $createInvoiceTransactionProcessor;
/**
* ApprovePurchaseOrderLogic constructor.
* @param FetchesBooking $fetchesBooking
* @param UpdatesTransactionStatus $updatesTransactionStatus
* @param CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor
*/
public function __construct(FetchesBooking $fetchesBooking, UpdatesTransactionStatus $updatesTransactionStatus)
public function __construct(FetchesBooking $fetchesBooking, UpdatesTransactionStatus $updatesTransactionStatus, CreateInvoiceTransactionProcessor $createInvoiceTransactionProcessor)
{
$this->fetchesBooking = $fetchesBooking;
$this->updatesTransactionStatus = $updatesTransactionStatus;
$this->createInvoiceTransactionProcessor = $createInvoiceTransactionProcessor;
}
/**
@@ -57,6 +63,8 @@ class ApprovePurchaseOrderLogic extends AbstractControllerLogic
$this->updatesTransactionStatus->execute($booking->transactions()->where('type', TransactionType::PURCHASE_ORDER)->first(), ApprovalStatus::APPROVED);
$this->createInvoiceTransactionProcessor->execute($booking);
return $this->response([]);
}
@@ -0,0 +1,21 @@
<?php
namespace App\Classes\Modules\Bookings\Services;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Models\Booking;
use Carbon\Carbon;
class CalculatesBookingTransferredAmount
{
public function execute(Booking $booking, int $type){
return $type === 1 ?
$booking->transactions()->payments()->transferred()
->selectRaw('sum(amount - service_charge - tax) as sub_total')->get()->sum('sub_total') :
$booking->transactions()->payments()->transferred()->sum('original_amount');
}
}
@@ -123,11 +123,9 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic
'currency_vendor_order'
);
foreach ($transactions as $key => $row) {
/** @var Document $document */
$document = $this->createsDocument->execute($row, $object);
$this->createsFile->execute($document, $object);
}
/** @var Document $document */
$document = $this->createsDocument->execute($supplier, $object);
$this->createsFile->execute($document, $object);
return $this->response([]);
}
@@ -2,6 +2,8 @@
namespace App\Classes\Modules\Transactions\Processors;
use App\Classes\Modules\Bookings\Services\CalculatesBookingTransferredAmount;
use App\Classes\Modules\ServiceTypes\Services\FetchesServiceConfigurations;
use App\Classes\Modules\Transactions\Services\ListsTransactions;
use App\Classes\Modules\Transactions\Services\CreatesTransaction;
use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber;
@@ -15,11 +17,12 @@ use App\Classes\Modules\Bookings\Services\UpdatesBookingStatus;
use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject;
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\SegmentConstants;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Classes\ValueObjects\Constants\DocumentType;
use App\Models\Booking;
use App\Models\Document;
use Meneses\LaravelLaravelMpdf\Facades\LaravelLaravelMpdf;
use App\Models\SegmentConstant;
use Meneses\LaravelMpdf\Facades\LaravelMpdf;
class CreateInvoiceTransactionProcessor
@@ -36,6 +39,12 @@ class CreateInvoiceTransactionProcessor
/** @var CalculatesBookingPaidAmount */
private $calculatesBookingPaidAmount;
/** @var CalculatesBookingTransferredAmount */
private $calculatesBookingTransferredAmount;
/** @var FetchesServiceConfigurations */
private $fetchesServiceConfigurations;
/** @var CalculatesBookingCurrencyAverageRate */
private $calculatesBookingCurrencyAverageRate;
@@ -52,18 +61,27 @@ class CreateInvoiceTransactionProcessor
private $updatesBookingStatus;
/**
* CreateInvoiceTransactionLogic constructor.
* CreateInvoiceTransactionProcessor constructor.
* @param ListsTransactions $listsTransactions
* @param CreatesTransaction $createsTransaction
* @param GeneratesTransactionBillNumber $generatesTransactionBillNumber
* @param CalculatesBookingPaidAmount $calculatesBookingPaidAmount
* @param CalculatesBookingTransferredAmount $calculatesBookingTransferredAmount
* @param FetchesServiceConfigurations $fetchesServiceConfigurations
* @param CalculatesBookingCurrencyAverageRate $calculatesBookingCurrencyAverageRate
* @param FetchesCompany $fetchesCompany
* @param CreatesDocument $createsDocument
* @param CreatesFiles $createsFile
* @param UpdatesBookingStatus $updatesBookingStatus
*/
public function __construct(ListsTransactions $listsTransactions, CreatesTransaction $createsTransaction, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CalculatesBookingPaidAmount $calculatesBookingPaidAmount, CalculatesBookingCurrencyAverageRate $calculatesBookingCurrencyAverageRate, FetchesCompany $fetchesCompany, CreatesDocument $createsDocument, CreatesFiles $createsFile, UpdatesBookingStatus $updatesBookingStatus)
public function __construct(ListsTransactions $listsTransactions, CreatesTransaction $createsTransaction, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CalculatesBookingPaidAmount $calculatesBookingPaidAmount, CalculatesBookingTransferredAmount $calculatesBookingTransferredAmount, FetchesServiceConfigurations $fetchesServiceConfigurations, CalculatesBookingCurrencyAverageRate $calculatesBookingCurrencyAverageRate, FetchesCompany $fetchesCompany, CreatesDocument $createsDocument, CreatesFiles $createsFile, UpdatesBookingStatus $updatesBookingStatus)
{
$this->listsTransactions = $listsTransactions;
$this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
$this->createsTransaction = $createsTransaction;
$this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
$this->calculatesBookingPaidAmount = $calculatesBookingPaidAmount;
$this->calculatesBookingTransferredAmount = $calculatesBookingTransferredAmount;
$this->fetchesServiceConfigurations = $fetchesServiceConfigurations;
$this->calculatesBookingCurrencyAverageRate = $calculatesBookingCurrencyAverageRate;
$this->fetchesCompany = $fetchesCompany;
$this->createsDocument = $createsDocument;
@@ -71,6 +89,7 @@ class CreateInvoiceTransactionProcessor
$this->updatesBookingStatus = $updatesBookingStatus;
}
/**
* @param Booking $booking
* @return void
@@ -78,128 +97,133 @@ class CreateInvoiceTransactionProcessor
*/
public function execute(Booking $booking)
{
$payment_amount = $this->calculatesBookingTransferredAmount->execute($booking, $booking->fix_currency_id);
$booking_amount = $booking->fix_amount;
if ((float) $booking_amount !== (float) $payment_amount) {
return;
}
$po_order_transaction = $booking->transactions()
->where('type', TransactionType::PURCHASE_ORDER)
->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
->complete()
->first();
if ($po_order_transaction) {
$payment_amount = $this->calculatesBookingPaidAmount->execute($booking, $booking->fix_currency_id);
$booking_amount = $booking->fix_amount;
$constants = SegmentConstant::where('reference', SegmentConstants::SERVICE_TYPE)->where('detail->id', $booking->service->id)->first();
if ((float) $booking_amount === (float) $payment_amount) {
$transaction = $booking->transactions()
->where('type', TransactionType::PAYMENT)
->first();
$billNumber = $this->generatesTransactionBillNumber->execute('INV-');
$booking_currency_average_rate = $this->calculatesBookingCurrencyAverageRate->execute($booking, TransactionType::PAYMENT);
$total_service_charge = $booking->transactions()
->where('type', TransactionType::PAYMENT)
->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
->sum('service_charge');
$total_tax = $booking->transactions()
->where('type', TransactionType::PAYMENT)
->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
->sum('tax');
$transaction_object = new TransactionObject(
$billNumber,
TransactionType::INVOICE,
$transaction->issuer,
$transaction->receiver,
$transaction->recipient_bank_account_id,
$transaction->payment_method,
$payment_amount,
$booking_amount,
$transaction->currency_id,
$transaction->original_currency_id,
$booking_currency_average_rate,
$total_tax,
$total_service_charge,
null,
ApprovalStatus::APPROVED
);
$invoice_transaction = $this->createsTransaction->execute($po_order_transaction->booking, $transaction_object);
$supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]);
$purchase_order_pdf = LaravelMpdf::loadView('pages.pdfs.purchase_order', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::PURCHASE_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($purchase_order_pdf->output()))],
'',
ApprovalStatus::COMPLETED,
'purchase_orders'
);
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
$deliver_order_pdf = LaravelMpdf::loadView('pages.pdfs.deliver_order', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::DELIVER_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($deliver_order_pdf->output()))],
'',
ApprovalStatus::COMPLETED,
'deliver_orders'
);
/** @var Document $document */
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
$invoice_pdf = LaravelMpdf::loadView('pages.pdfs.invoice', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::INVOICE,
[chunk_split('data:application/pdf;base64,'.base64_encode($invoice_pdf->output()))],
'',
ApprovalStatus::COMPLETED,
'invoices'
);
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
$billNumber = $this->generatesTransactionBillNumber->execute('SPDO-');
$booking_currency_average_rate = $this->calculatesBookingCurrencyAverageRate->execute($booking, TransactionType::BILL);
$transaction_object = new TransactionObject(
$billNumber,
TransactionType::SUPPLIER_DELIVER,
$transaction->issuer,
$transaction->receiver,
$transaction->recipient_bank_account_id,
$transaction->payment_method,
$payment_amount,
$booking_amount,
$transaction->currency_id,
$transaction->original_currency_id,
$booking_currency_average_rate,
$total_tax,
$total_service_charge,
null,
ApprovalStatus::APPROVED
);
$supplier_deliver_order_transaction = $this->createsTransaction->execute($po_order_transaction->booking, $transaction_object);
$supplier_order_pdf = LaravelMpdf::loadView('pages.pdfs.supplier_deliver_order', ['supplier_deliver_order_transaction' => $supplier_deliver_order_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::SUPPLIER_DELIVER_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($supplier_order_pdf->output()))],
'',
ApprovalStatus::COMPLETED,
'supplier_deliver_orders'
);
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
$this->updatesBookingStatus->execute($booking, ApprovalStatus::COMPLETED);
}
if($constants->detail->is_billable && !$po_order_transaction) {
return;
}
$transaction = $booking->transactions()
->where('type', TransactionType::PAYMENT)
->first();
$billNumber = $this->generatesTransactionBillNumber->execute('INV-');
$booking_currency_average_rate = $this->calculatesBookingCurrencyAverageRate->execute($booking, TransactionType::PAYMENT);
$total_service_charge = $booking->transactions()
->where('type', TransactionType::PAYMENT)
->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
->sum('service_charge');
$total_tax = $booking->transactions()
->where('type', TransactionType::PAYMENT)
->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
->sum('tax');
$transaction_object = new TransactionObject(
$billNumber,
TransactionType::INVOICE,
$transaction->issuer,
$transaction->receiver,
$transaction->recipient_bank_account_id,
$transaction->payment_method,
$payment_amount,
$booking_amount,
$transaction->currency_id,
$transaction->original_currency_id,
$booking_currency_average_rate,
$total_tax,
$total_service_charge,
null,
ApprovalStatus::APPROVED
);
$invoice_transaction = $this->createsTransaction->execute($po_order_transaction->booking, $transaction_object);
$supplier = $this->fetchesCompany->execute(['id' => $transaction->receiver]);
$purchase_order_pdf = LaravelMpdf::loadView('pages.pdfs.purchase_order', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::PURCHASE_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($purchase_order_pdf->output()))],
'',
ApprovalStatus::COMPLETED,
'purchase_orders'
);
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
$deliver_order_pdf = LaravelMpdf::loadView('pages.pdfs.deliver_order', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::DELIVER_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($deliver_order_pdf->output()))],
'',
ApprovalStatus::COMPLETED,
'delivery_orders'
);
/** @var Document $document */
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
$invoice_pdf = LaravelMpdf::loadView('pages.pdfs.invoice', ['invoice_transaction' => $invoice_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::INVOICE,
[chunk_split('data:application/pdf;base64,'.base64_encode($invoice_pdf->output()))],
'',
ApprovalStatus::COMPLETED,
'invoices'
);
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
$billNumber = $this->generatesTransactionBillNumber->execute('SPDO-');
$booking_currency_average_rate = $this->calculatesBookingCurrencyAverageRate->execute($booking, TransactionType::BILL);
$transaction_object = new TransactionObject(
$billNumber,
TransactionType::SUPPLIER_DELIVER,
$transaction->issuer,
$transaction->receiver,
$transaction->recipient_bank_account_id,
$transaction->payment_method,
$payment_amount,
$booking_amount,
$transaction->currency_id,
$transaction->original_currency_id,
$booking_currency_average_rate,
$total_tax,
$total_service_charge,
null,
ApprovalStatus::APPROVED
);
$supplier_deliver_order_transaction = $this->createsTransaction->execute($po_order_transaction->booking, $transaction_object);
$supplier_order_pdf = LaravelMpdf::loadView('pages.pdfs.supplier_deliver_order', ['supplier_deliver_order_transaction' => $supplier_deliver_order_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
$document_object = new DocumentObject(
DocumentType::SUPPLIER_DELIVER_ORDER,
[chunk_split('data:application/pdf;base64,'.base64_encode($supplier_order_pdf->output()))],
'',
ApprovalStatus::COMPLETED,
'supplier_delivery_orders'
);
$document = $this->createsDocument->execute($po_order_transaction->booking, $document_object);
$this->createsFile->execute($document, $document_object);
$this->updatesBookingStatus->execute($booking, ApprovalStatus::COMPLETED);
}
}
+1
View File
@@ -20,6 +20,7 @@ class BankResource extends JsonResource
'type' => $this->type,
'reference' => $this->reference,
'bank_name' => $this->bank_name,
'bank_branch' => $this->bank_name,
'holder_name' => $this->holder_name,
'account_no' => $this->account_no,
'country_id' => $this->country_id,
+1 -1
View File
@@ -38,7 +38,7 @@ class BookingResource extends JsonResource
'conversion_currency' => new CurrencyResource($this->conversionCurrency),
'documents' => [
'purchase_order' => new DocumentResource($this->documents()->where('document_type', DocumentType::PURCHASE_ORDER)->first()),
'deliver_order' => new DocumentResource($this->documents()->where('document_type', DocumentType::DELIVER_ORDER)->first()),
'delivery_order' => new DocumentResource($this->documents()->where('document_type', DocumentType::DELIVER_ORDER)->first()),
'invoice' => new DocumentResource($this->documents()->where('document_type', DocumentType::INVOICE)->first()),
'supplier_delivery_order' => new DocumentResource($this->documents()->where('document_type', DocumentType::SUPPLIER_DELIVER_ORDER)->first()),
],
+3 -1
View File
@@ -4,6 +4,7 @@ namespace App\Http\Resources;
use App\Models\Company;
use App\Models\Document;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Resources\Json\JsonResource;
@@ -23,7 +24,8 @@ class DocumentResource extends JsonResource
'status' => (int) $this->status,
'document_type' => $this->document_type,
'owner' => new CompanyResource($this->whenLoaded('owner')),
'files' => FileResource::collection($this->files)
'files' => FileResource::collection($this->files),
'created_at' => Carbon::parse($this->created_at)->format('d-m-Y h:s:i')
];
}
}
+9 -1
View File
@@ -60,7 +60,6 @@ class Transaction extends AbstractModel implements Documentable
{
if($this->booking()->first()->fix_currency_id !== 1) {
$currency_rate = $this->currency()->first()->rates()->where('payment_method_type', $this->payment_method)->first();
dd($this->payment_method);
return number_format($this->original_amount / $currency_rate->selling, 2);
}
@@ -100,4 +99,13 @@ class Transaction extends AbstractModel implements Documentable
{
return $query->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
}
/**
* @param Builder $query
* @return Builder
*/
public function scopeTransferred(Builder $query)
{
return $query->whereIn('status', [ApprovalStatus::COMPLETED]);
}
}
@@ -0,0 +1,87 @@
<template>
<div class="row m-b-10">
<div class="col bg-white">
<loading-component style="height: 200px; top: 0;" key="1" color="success" v-show="isLoading"></loading-component>
<div class="row" v-show="!isLoading">
<div class="col">
<div class="row align-items-center">
<div class="col-auto p-r-0">
<document-file-viewer-component :file="item.files[0]">
<template slot="button">
<button class="btn btn-xs btn-default bg-master-lightest b-rad-none no-border">
<i class="fa fa-eye"></i>
</button>
</template>
</document-file-viewer-component>
</div>
<div class="col p-t-10 p-b-10">
<div class="row">
<div class="col">
<div class="text-primary fs-10 bold">{{item.created_at}}</div>
</div>
</div>
<div class="row align-items-center">
<div class="col">
<div class="muted fs-10">{{item.owner.name}}</div>
</div>
</div>
</div>
<div class="col-auto">
<div class="row parentContainer">
<div class="col p-l-0">
<button class="btn btn-xs btn-default bg-success b-rad-none no-border requestModal" data-type="approveDocument">
<i class="fa fa-check text-white"></i>
</button>
<modal-component small type="approveDocument">
<div class="row">
<div class="col text-center">
<div class="row">
<div class="col text-center">
<div class="row m-b-20">
<div class="col">
<h5 class="all-caps">Currency Order Placed</h5>
<div class="fs-11">Are you sure you that the currency order has been placed with the supplier?</div>
</div>
</div>
<div class="row">
<div class="col p-r-5">
<div data-dismiss="modal" class="btn btn-sm btn-default bg-master-lighter btn-block b-rad-none">Cancel</div>
</div>
<div class="col p-l-5">
<div data-dismiss="modal" class="btn btn-sm btn-success btn-block b-rad-none" @click="approveDocument('approve')">Confirm</div>
</div>
</div>
</div>
</div>
</div>
</div>
</modal-component>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import componentHandler from '../../../general/mixins/componentHandler';
import staticFormHandler from '../../../general/mixins/staticFormHandler'
export default {
data() {
return {
expanded: false
}
},
methods: {
approveDocument(status){
this.isLoading = true;
this.submit(this.route('api.company.identification.approval', this.item.owner.id, this.item.id, status), 'put', 'identificationVerificationSection', true, true);
},
},
mixins: [componentHandler, staticFormHandler]
}
</script>
@@ -19,6 +19,12 @@
MYR {{(Math.round((item.amount + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")}}
</div>
</div>
<div class="col">
<div class="font-heading fs-10 muted all-caps">Original</div>
<div class="font-heading fs-10">
{{item.original_currency.short_code}} {{(Math.round((item.original_amount + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")}}
</div>
</div>
<div class="col-auto text-right">
<div class="font-heading fs-10 muted all-caps">Date</div>
<div class="font-heading fs-10">
@@ -31,13 +37,13 @@
<div class="row no-margin">
<div v-if="item.documents != null">
<div v-for="file in item.documents.files" v-bind:key="file.id" class="col-auto no-padding m-r-5">
<document-file-viewr-component :file="file">
<document-file-viewer-component :file="file">
<template slot="button">
<div class="icon-thumbnail fs-11 text-white icon-25 bg-primary btn-rounded float-left m-r-5">
<i class="fa fa-file-image-o fs-10"></i>
</div>
</template>
</document-file-viewr-component>
</document-file-viewer-component>
</div>
</div>
</div>
File diff suppressed because one or more lines are too long
@@ -89,6 +89,15 @@
</div>
<div class="col">
<supplier-place-order-form-component :payments="payments" :currency="selectedCurrency" :supplier="selectedSupplier" section="pendingOrdersSection"></supplier-place-order-form-component>
<div class="row m-t-20">
<div class="col">
<list-component key="2" section="currencyOrdersListSection" :options="{'per_page': 5, 'document_type_in': ['CURRENCY_VENDOR_ORDER'], 'status': 1, 'with_company': true}" :endpoint="route('api.document.list')">
<template slot="list" slot-scope="{data}">
<currency-order-component section="currencyOrdersListSection" :data="data"></currency-order-component>
</template>
</list-component>
</div>
</div>
</div>
</div>
</div>
@@ -79,13 +79,13 @@
</div>
<div class="row no-margin">
<div v-for="file in item.files" v-bind:key="file.id" class="col-auto no-padding m-r-5">
<document-file-viewr-component :file="file">
<document-file-viewer-component :file="file">
<template slot="button">
<div class="icon-thumbnail fs-11 text-white icon-25 bg-primary btn-rounded float-left m-r-5">
<i class="fa fa-file-image-o fs-10"></i>
</div>
</template>
</document-file-viewr-component>
</document-file-viewer-component>
</div>
</div>
</div>
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
<template>
<div class="row parentContainer">
<div class="col">
<div class="requestModal pointer" @click="loadFile" data-type="filePreview">
<div class="requestModal pointer h-100" @click="loadFile" data-type="filePreview">
<slot name="button" ></slot>
</div>
<modal-component styleType="fill-in" size="extra-large" type="filePreview">
@@ -29,7 +29,7 @@
</div>
</div>
<div class="col">
<div class="row justify-content-end">
<div class="row justify-content-end hide">
<div class="col">
<div class="row fs-12 text-center">
<div class="col p-t-20 p-b-20 bg-master-lighter" tab-name="transactions">
@@ -343,9 +343,32 @@
<div class="col">
<div class="row">
<div class="col">
<div class="row m-b-15 p-b-10 b-b b-grey">
<div class="col">
<small class="all-caps muted fs-10">Pending Verification</small>
</div>
</div>
<div class="row">
<div class="col">
<list-component key="2" section="transferSection" :endpoint="route('api.booking.list')" :options="{per_page: 10}">
<list-component key="2" section="poPendingApprovalSection" :endpoint="route('api.booking.list')" :options="{per_page: 10, purchase_order_approval: true}">
<template slot="list" slot-scope="{data}">
<booking-component :data="data"></booking-component>
</template>
</list-component>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="row m-b-15 p-b-10 b-b b-grey">
<div class="col">
<small class="all-caps muted fs-10">Pending Submission</small>
</div>
</div>
<div class="row">
<div class="col">
<list-component key="2" section="poPendingSubmissionSection" :endpoint="route('api.booking.list')" :options="{per_page: 10, pending_purchase_order: true}">
<template slot="list" slot-scope="{data}">
<booking-component :data="data"></booking-component>
</template>
@@ -1,46 +1,51 @@
@extends('layouts.base_pdf')
@section('inner_content')
<style>
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th, td {
padding: 15px;
}
</style>
<br>
<htmlpageheader name="page-header">
<br>
<table width="100%" style="border-bottom: 1px solid black;">
<tr>
<td
style="text-align: center; color: red; text-transform: uppercase; font-weight: bold; font-size: 18px; padding-bottom: 5px;">
Atvantic Import & Export Snd. Bhd (1309816-P)</td>
</tr>
</table>
</htmlpageheader>
@foreach ($transactions as $key => $transaction)
<table class="line-table" style="overflow: wrap" autosize="1">
<thead>
<tr>
<th width="5%">No</th>
<th class="stock-code" width="10%">Subtotal</th>
<th class="description">Service Charges</th>
<th width="10%">Tax</th>
<th width="10%">Total Amount<br>(RM)</th>
</tr>
</thead>
<table style="margin-bottom: 25px; border: none;">
<tbody>
<tr>
<td width="5%" class="center top">{{ $key + 1 }}</td>
<td class="stock-code top" width="10%">{{ $transaction->amount }}</td>
<td class="description">MYR {{ number_format($transaction->service_charge, 2) }}</td>
<td width="10%" class="center top">MYR {{ number_format($transaction->tax, 2) }}</td>
<td width="12%" class="center top">{{ $transaction->amount }}</td>
</tr>
<tr>
<td>{{$supplier->name}}</td>
<td>{{\Carbon\Carbon::now('Asia/Singapore')->format('d-m-Y h:s')}}</td>
</tr>
</tbody>
</table>
@endforeach
</htmlpageheader>
<br>
<table style="width:100%">
<tbody>
<tr>
<td>Reference</td>
<td>Rate</td>
<td>Amount</td>
<td>Bank in Details</td>
</tr>
@foreach($transactions as $transaction)
<tr style="margin-bottom: 10px;">
<td>{{$transaction->booking->marking}}</td>
<td>{{$transaction->currency_rate}}</td>
<td>{{$transaction->original_currency->short_code}} {{$transaction->original_amount}}</td>
<td>Account Holder Name: {{$transaction->booking->bank->holder_name}}<br>{{$transaction->booking->bank->bank_name}}: {{$transaction->booking->bank->account_no}}
<br>Branch: {{$transaction->booking->bank->bank_branch}}<br>Bank in Amount: {{$transaction->original_currency->short_code}} {{$transaction->original_amount}}</td>
</tr>
@endforeach
</tbody>
</table>
<htmlpagefooter name="page-footer">
<table width="100%">
<table width="100%" style="border: none;">
<tr>
<td style="text-align: right; ">This is generated by computer. No signature required.</td>
<td style="text-align: right; ">Page {PAGENO} of {nbpg}</td>
</tr>
</table>
</htmlpagefooter>
@endsection
@endsection
+7 -6
View File
@@ -7,7 +7,7 @@
<a href="#" class="btn-link toggle-sidebar fa fa-bars text-white" data-toggle="horizontal-menu"></a>
</div>
<div class="col-auto d-xs-none bg-complete-light p-t-10 p-b-10 p-l-30 p-r-30">
<div class="row">
<a href="{{route('dashboard')}}"><div class="row">
<div class="col">
<img src="{{asset('images/logo-light.png')}}" alt="logo" height="22">
</div>
@@ -17,9 +17,10 @@
<div class="m-t-5 all-caps fs-10 text-white hint-text">Overseas Transfers Management</div>
</div>
</div>
</a>
</div>
<div class="col text-right p-r-30">
<div class="row justify-content-end">
<div class="col text-right p-r-30 ">
<div class="row justify-content-end hide">
<div class="col text-right">
<div class="row justify-content-end">
<div class="col-auto p-r-20">
@@ -40,7 +41,7 @@
</div>
<div class="col-auto p-r-30">
<div class="row no-margin">
<div class="col-auto m-r-5">
<div class="col-auto m-r-5 hide">
<div class="row align-items-center justify-content-center b-a b-thick h-100" style="border-color: #ffffff3d">
<div class="col p-r-10 p-l-10">
<i class="fa fa-bell fs-12 text-primary-lighter"></i>
@@ -52,14 +53,14 @@
<div class="col-auto">
<div class="fs-12 text-primary-lighter">Hi, <span v-text="$store.getters.getUserName.split(' ').slice(0,2).join(' ')"></span>!</div>
</div>
<div class="col-auto p-l-0 p-r-10">
<div class="col-auto p-l-0 p-r-10 hide">
<div class="btn btn-xs btn-primary p-t-0 p-b-0 text-primary-lighter" style="background-color: rgba(255, 255, 255, 0.2);">
<i class="fa fa-angle-down fs-14 m-t-5"></i>
</div>
</div>
</div>
</div>
<div class="col-auto m-r-5">
<div class="col-auto m-r-5" v-if="$store.getters.isAdmin">
<a href="{{route('settings')}}">
<div class="row align-items-center justify-content-center b-a b-thick h-100" style="border-color: #ffffff3d">
<div class="col p-r-10 p-l-10">