mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-19 04:24:12 +00:00
172 lines
8.5 KiB
Vue
172 lines
8.5 KiB
Vue
<template>
|
|
<div class="row parentContainer">
|
|
<div class="col">
|
|
<div class="row">
|
|
<div class="col">
|
|
<div v-show="!$store.getters.isLoading(section)">
|
|
<list-component :section="section" :endpoint="endpoint" :options="options">
|
|
<template slot="list" slot-scope="{data}">
|
|
<!-- <payments-billing-components v-if="endpoint == route('api.transaction.list') && !data.storages" :section="section" :data="data" :selectedInvoice="selectedInvoice" v-on:input="updateList($event)"></payments-billing-components> -->
|
|
<payments-billing-variant-2-components v-if="endpoint == route('api.transaction.list')" :section="section" :invoices="getMergedInvoices(data, data.storages)" :selectedInvoice="selectedInvoice" :isPaidInvoices="isPaidInvoices" v-on:input="updateList($event)"></payments-billing-variant-2-components>
|
|
<group-payments-billing-components v-else :section="section" :data="data" :selectedInvoice="selectedInvoice" v-on:input="updateList($event)"></group-payments-billing-components>
|
|
</template>
|
|
</list-component>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-sm-12 col-md-4" v-if="!['customerPaidGroupInvoiceComponent', 'customerGroupPaymentInProgressInvoiceComponent', 'customerGroupPaymentExpiredInvoiceComponent'].includes(section)">
|
|
<div class="row align-items-center">
|
|
<div class="col">
|
|
<div class="row" v-if="section === 'customerPendingPaymentInvoiceComponent'">
|
|
<div class="col m-b-15">
|
|
<wallet-component :company_module_id="company_module_id" section="billingWalletSection" :creditable=true></wallet-component>
|
|
</div>
|
|
</div>
|
|
<div class="b-a b-grey rounded padding-25 bg-white">
|
|
<div class="row">
|
|
<div class="col">
|
|
<h6 class="semi-bold muted">Summary</h6>
|
|
</div>
|
|
</div>
|
|
<div class="row align-items-center justify-content-center">
|
|
<div class="col-auto">
|
|
<div class="padding-5">
|
|
<i class="fa fa-angle-up"></i>
|
|
</div>
|
|
</div>
|
|
<div class="col p-l-0">
|
|
<h6 class="semi-bold text-primary">{{selectedInvoice.length}} Invoice Selected</h6>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col">
|
|
<div class="row" v-for="invoice in selectedInvoice">
|
|
<div class="col">
|
|
<h6 class="no-margin">{{ invoice.bill_no }}</h6>
|
|
</div>
|
|
<div class="col-auto">
|
|
<h6 class="no-margin">MYR {{ invoice.amount.toFixed(2) }}</h6>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
<div class="row">
|
|
<div class="col">
|
|
<h6 class="normal m-t-0 m-b-0">Total Amount</h6>
|
|
</div>
|
|
<div class="col-auto">
|
|
<h6 class="text-primary bold m-t-0 m-b-0">MYR {{ sumAmount }}</h6>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row" v-if="selectedInvoice.length">
|
|
<div class="col">
|
|
<div v-if="section === 'customerPendingPaymentInvoiceComponent'" class="btn btn-success btn-xl pointer m-t-10 w-100 requestModal" data-type="makePayment">Make Payment</div>
|
|
<div v-if="['customerPaidInvoiceComponent', 'customerPendingPaymentInvoiceComponent'].includes(section)" class="btn btn-info btn-xl pointer m-t-10 w-100" @click='generateSummaryInvoice'>Generate Summary Invoice</div>
|
|
</div>
|
|
</div>
|
|
<modal-component class="animate__animated animate__fast animate__fadeIn" styleType="fill-in" type="makePayment">
|
|
<group-payment-form-component :section="section" :company_module_id="company_module_id" :selectedIds="selectedIds" :sumAmount="sumAmount"></group-payment-form-component>
|
|
</modal-component>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
export default {
|
|
props: {
|
|
options: {
|
|
default () {
|
|
return {}
|
|
}
|
|
},
|
|
section:{
|
|
type: String,
|
|
required: true
|
|
},
|
|
company_module_id: {
|
|
type: Number,
|
|
required: true,
|
|
},
|
|
endpoint: {
|
|
type: String,
|
|
required: true
|
|
},
|
|
isPaidInvoices :{
|
|
type: Boolean,
|
|
default: false
|
|
}
|
|
},
|
|
data(){
|
|
return {
|
|
isLoading: true,
|
|
invoices: null,
|
|
selectedInvoice: [],
|
|
selectedPaidInvoice: [],
|
|
selectedUnpaidInvoice: [],
|
|
selectAllInvoice: false,
|
|
}
|
|
},
|
|
computed: {
|
|
pendingQueue () {
|
|
return this.$store.getters.isInCompleteQueue(this.section);
|
|
},
|
|
sumAmount () {
|
|
var new_object = this.selectedInvoice;
|
|
var total = Object.keys(new_object).reduce(function(total, key) {
|
|
return total + new_object[key].amount;
|
|
}, 0).toFixed(2);
|
|
return Math.round(total * 100) / 100;
|
|
},
|
|
selectedIds () {
|
|
return this.selectedInvoice.map(s=>s.id);
|
|
}
|
|
},
|
|
methods: {
|
|
generateSummaryInvoice(){
|
|
window.open(route('invoice.combined_summary', JSON.stringify(this.selectedIds)), '_blank');
|
|
},
|
|
makePayment(){
|
|
this.submit(this.route('api.transaction.group.create', JSON.stringify(this.selectedId)), 'post', this.section, true, false);
|
|
},
|
|
updateList(invoices){
|
|
invoices.forEach(invoice => {
|
|
if (this.selectedInvoice.includes(invoice)) {
|
|
this.selectedInvoice.splice(this.selectedInvoice.indexOf(invoice), 1);
|
|
} else {
|
|
this.selectedInvoice.push(invoice);
|
|
}
|
|
});
|
|
|
|
},
|
|
getMergedInvoices(shippingInvoice, storages){
|
|
if(storages){
|
|
const storageMap = {};
|
|
for (const storage of storages) {
|
|
storageMap[storage.parentInvoiceId] = storage.storageInvoiceId;
|
|
}
|
|
|
|
const storageInvoiceId = storageMap[shippingInvoice.id];
|
|
const storage = storages.find((i) => {
|
|
return i.storageInvoiceId === storageInvoiceId;
|
|
});
|
|
|
|
const mergedArray = [
|
|
...(shippingInvoice ? [shippingInvoice] : []),
|
|
...(storage && storage.storageInvoice.status !== 3 ? [storage.storageInvoice] : [])
|
|
];
|
|
return mergedArray;
|
|
}
|
|
|
|
const mergedArray = [
|
|
...(shippingInvoice ? [shippingInvoice] : [])
|
|
];
|
|
return mergedArray;
|
|
}
|
|
}
|
|
}
|
|
</script>
|