409 lines
15 KiB
Vue
409 lines
15 KiB
Vue
<template>
|
|
<v-layout column pb-2>
|
|
<v-card >
|
|
<v-layout row pa-2 align-center wrap >
|
|
<v-flex xs6>
|
|
<div class="label-tagihan text-xs-left">Total Tagihan</div>
|
|
</v-flex>
|
|
<v-flex xs6>
|
|
<div class="text-tagihan text-xs-right"><kbd>{{ one_money(bill_total) }}</kbd></div>
|
|
</v-flex>
|
|
</v-layout>
|
|
<v-layout style="border-top:1px dashed rgb(221,221,221)" row mt-1 mb-1></v-layout>
|
|
|
|
<v-layout column>
|
|
<v-flex xs12 v-for="(p, pi) in payments" v-bind:key="p.payment_type_id">
|
|
|
|
<v-layout row pt-2 pb-1 pl-2 align-center wrap class="border-top-dashed">
|
|
<v-flex xs12>
|
|
<v-switch
|
|
true-value="Y"
|
|
false-value="N"
|
|
v-model="payments[pi].payment_enable"
|
|
:label="p.payment_type_name"
|
|
@change="(v) => payment_enable(pi, v)"
|
|
></v-switch>
|
|
</v-flex>
|
|
</v-layout>
|
|
<v-layout row pa-2 wrap >
|
|
<v-flex xs4 pr-2>
|
|
<!-- <div class="pa-2"> -->
|
|
<v-text-field
|
|
v-bind:class="[p.payment_type_code == 'CASH' ? 'input-cash' : 'input-plain', 'text-xs-right font-weight-bold']"
|
|
v-model="payments[pi].payment_actual"
|
|
:disabled="(payments[pi].payment_enable == 'Y' ? false : true)"
|
|
@input="(v) => update_payments(pi, 'payment_actual', v)"
|
|
reverse
|
|
label="Jumlah"
|
|
outline
|
|
>
|
|
</v-text-field>
|
|
|
|
<!-- </div> -->
|
|
</v-flex>
|
|
<v-flex xs4 v-if="['CASH', 'VOUCHER'].indexOf(p.payment_type_code) > -1">
|
|
<!-- <div class="pa-2"> -->
|
|
<v-text-field
|
|
v-show="p.payment_type_code == 'VOUCHER'"
|
|
class="input-plain"
|
|
v-model="payments[pi].payment_note"
|
|
:disabled="(payments[pi].payment_enable == 'Y' ? false : true)"
|
|
@input="(v) => update_payments(pi, 'payment_amount', v)"
|
|
reverse
|
|
:label="p.payment_note_label"
|
|
outline
|
|
>
|
|
</v-text-field>
|
|
|
|
<v-text-field
|
|
v-show="p.payment_type_code == 'CASH'"
|
|
class="input-cash"
|
|
v-model="payments[pi].payment_change_mask"
|
|
disabled
|
|
reverse
|
|
:label="p.payment_note_label"
|
|
outline
|
|
>
|
|
</v-text-field>
|
|
<!-- </div> -->
|
|
</v-flex>
|
|
|
|
<v-flex xs4 v-if="['CREDIT', 'DEBIT'].indexOf(p.payment_type_code) > -1" pr-2>
|
|
<v-autocomplete
|
|
:items="banks"
|
|
item-text="Nat_BankName"
|
|
item-value="Nat_BankID"
|
|
outline
|
|
hide-details
|
|
height="30"
|
|
label="Kartu"
|
|
@change="(v) => update_payments(pi, 'payment_card_id', v)"
|
|
v-model="init_val_card[p.payment_type_code]"
|
|
></v-autocomplete>
|
|
</v-flex>
|
|
|
|
<v-flex xs4 v-if="['CREDIT', 'DEBIT'].indexOf(p.payment_type_code) > -1">
|
|
<v-autocomplete
|
|
:items="banks"
|
|
item-text="Nat_BankName"
|
|
item-value="Nat_BankID"
|
|
outline
|
|
hide-details
|
|
height="30"
|
|
label="EDC"
|
|
@change="(v) => update_payments(pi, 'payment_edc_id', v)"
|
|
v-model="init_val_edc[p.payment_type_code]"
|
|
></v-autocomplete>
|
|
</v-flex>
|
|
|
|
<v-flex xs4 v-if="['TRANSFER'].indexOf(p.payment_type_code) > -1" pr-2>
|
|
<v-autocomplete
|
|
:items="accounts"
|
|
item-text="M_BankAccountNo"
|
|
item-value="M_BankAccountID"
|
|
outline
|
|
hide-details
|
|
height="30"
|
|
label="No Rekening"
|
|
@change="(v) => update_payments(pi, 'payment_account_id', v)"
|
|
v-model="init_val_acc"
|
|
></v-autocomplete>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-flex>
|
|
</v-layout>
|
|
|
|
<v-layout style="border-top:1px dashed rgb(221,221,221)" row mt-1 mb-1></v-layout>
|
|
<v-layout row pa-2 wrap >
|
|
<v-flex xs6>
|
|
<div>
|
|
<v-btn color="error" :dark="btn_save_enable" large @click="save" :disabled="!btn_save_enable">SIMPAN & BAYAR</v-btn>
|
|
</div>
|
|
</v-flex>
|
|
<v-flex xs6>
|
|
<div class="text-tagihan text-xs-right"><kbd>{{ one_money(payment_total) }}</kbd></div>
|
|
</v-flex>
|
|
|
|
</v-layout>
|
|
<one-fo-clinic-registration-finish-dialog></one-fo-clinic-registration-finish-dialog>
|
|
<one-dialog-print></one-dialog-print>
|
|
</v-card>
|
|
</v-layout>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.label-tagihan{
|
|
text-align:left;
|
|
font-size: 25px;
|
|
font-family: open sans, tahoma, sans-serif;
|
|
font-weight:700;
|
|
}
|
|
|
|
.sub-header{
|
|
text-align:left;
|
|
font-size: 18px;
|
|
font-family: open sans, tahoma, sans-serif;
|
|
font-weight:700;
|
|
}
|
|
|
|
.sub-title{
|
|
text-align:left;
|
|
font-size: 14px;
|
|
font-family: open sans, tahoma, sans-serif;
|
|
font-weight:700;
|
|
}
|
|
|
|
.text-tagihan{
|
|
text-align:left;
|
|
font-size: 42px;
|
|
font-family: open sans, tahoma, sans-serif;
|
|
}
|
|
|
|
.input-cash{
|
|
width: 100%;
|
|
/* padding: 8px 14px; */
|
|
/* box-sizing: border-box; */
|
|
/* border: 2px solid grey;
|
|
border-radius: 4px; */
|
|
font-size: 22px;
|
|
font-weight:700;
|
|
text-align:right;
|
|
}
|
|
.input-plain{
|
|
width: 100%;
|
|
/* padding: 4px 8px; */
|
|
/* box-sizing: border-box; */
|
|
/* border: 2px solid grey;
|
|
border-radius: 4px; */
|
|
font-size: 14px;
|
|
}
|
|
.v-input, .v-input__slot, .v-messages{
|
|
margin:0px;
|
|
padding:0px;
|
|
min-height: 0px;
|
|
}
|
|
.v-input--selection-controls:not(.v-input--hide-details) .v-input__slot {
|
|
margin-bottom: 0px;
|
|
}
|
|
|
|
.border-top-dashed {
|
|
border-top: 1px dashed rgb(221,221,221)
|
|
}
|
|
</style>
|
|
<script>
|
|
module.exports = {
|
|
components : {
|
|
'one-fo-clinic-registration-finish-dialog': httpVueLoader('./oneFoClinicRegistrationFinishDialog.vue'),
|
|
'one-dialog-print': httpVueLoader('./oneDialogPrint.vue')
|
|
},
|
|
|
|
data () {
|
|
return {
|
|
checkbox: true,
|
|
radioGroup: 1,
|
|
switchCash: true,
|
|
switchDebit: false,
|
|
switchKredit: false,
|
|
|
|
switch_payment_enable: [],
|
|
|
|
payment_amount: [],
|
|
init_val_edc:{"CREDIT":0,"DEBIT":0},
|
|
init_val_card:{"CREDIT":0,"DEBIT":0},
|
|
init_val_acc:0
|
|
}
|
|
},
|
|
|
|
methods : {
|
|
one_money(p) {
|
|
return window.one_money(p)
|
|
},
|
|
|
|
payment_enable (idx, v) {
|
|
let payments = this.payments
|
|
payments[idx]['payment_enable'] = v
|
|
if (v == "N") {
|
|
payments[idx]['payment_actual'] = 0
|
|
payments[idx]['payment_amount'] = 0
|
|
payments[idx]['payment_card_id'] = 0
|
|
payments[idx]['payment_edc_id'] = 0
|
|
payments[idx]['payment_account_id'] = 0
|
|
payments[idx]['payment_change'] = 0
|
|
payments[idx]['payment_change_mask'] = 0
|
|
this.init_val_edc[payments[idx]['payment_type_code']] = 0
|
|
this.init_val_card[payments[idx]['payment_type_code']] = 0
|
|
this.init_val_acc = 0
|
|
|
|
} else {
|
|
payments[idx]['payment_amount'] = this.bill_rest
|
|
payments[idx]['payment_actual'] = this.bill_rest
|
|
}
|
|
|
|
this.$store.commit('payment/update_payments', payments)
|
|
},
|
|
|
|
save() {
|
|
this.$store.dispatch('order/save')
|
|
return
|
|
},
|
|
|
|
update_payments (idx, type, v) {
|
|
let payments = this.payments
|
|
payments[idx][type] = v
|
|
this.$store.commit('payment/update_payments', payments)
|
|
|
|
|
|
}
|
|
},
|
|
|
|
|
|
|
|
computed : {
|
|
bill_total() {
|
|
return this.$store.state.payment.order_total
|
|
},
|
|
|
|
payment_total () {
|
|
return this.$store.state.payment.payment_total
|
|
},
|
|
|
|
bill_rest () {
|
|
return this.bill_total - this.payment_total
|
|
},
|
|
|
|
payment_cash_amount : {
|
|
get () {
|
|
return this.$store.state.payment.order_total
|
|
},
|
|
set (v) {
|
|
// this.$store.commit('payment/update_payment', {type:'cash',amount:v})
|
|
return
|
|
}
|
|
},
|
|
|
|
payment_debit_amount : {
|
|
get () {
|
|
return 0
|
|
},
|
|
set (v) {
|
|
return
|
|
}
|
|
},
|
|
|
|
payment_credit_amount : {
|
|
get () {
|
|
return 0
|
|
},
|
|
set (v) {
|
|
return
|
|
}
|
|
},
|
|
|
|
payments : {
|
|
get () {
|
|
let p = this.$store.state.payment.payments
|
|
for (let i in p) {
|
|
p[i].payment_change_mask = window.one_money(p[i].payment_change)
|
|
this.init_val_edc[p[i]['payment_type_code']] = p[i]['payment_edc_id']
|
|
this.init_val_card[p[i]['payment_type_code']] = p[i]['payment_card_id']
|
|
if (p[i]['payment_type_code'] == 'TRANSFER')
|
|
this.init_val_acc = p[i]['payment_account_id']
|
|
}
|
|
|
|
|
|
return p
|
|
// [{"payment_type_id":"1","payment_type_name":"Cash","payment_type_code":"CASH","payment_amount":"0","payment_note":"","payment_note_label":"Kembali","payment_enable":"N"},{"payment_type_id":"2","payment_type_name":"Debit","payment_type_code":"DEBIT","payment_amount":"0","payment_note":"","payment_note_label":"Nomor Kartu","payment_enable":"N"},{"payment_type_id":"3","payment_type_name":"Credit","payment_type_code":"CREDIT","payment_amount":"0","payment_note":"","payment_note_label":"Nomor Kartu","payment_enable":"N"},{"payment_type_id":"4","payment_type_name":"Voucher","payment_type_code":"VOUCHER","payment_amount":"0","payment_note":"","payment_note_label":"Nomor Voucher","payment_enable":"N"}]
|
|
},
|
|
set (v) {
|
|
this.$store.commit('payment/update_payments', v)
|
|
return
|
|
}
|
|
},
|
|
|
|
order_id : {
|
|
get () {
|
|
return this.$store.state.payment.order_id
|
|
},
|
|
|
|
set (v) {
|
|
return
|
|
}
|
|
},
|
|
|
|
btn_save_enable () {
|
|
// if (this.payments.length < 1)
|
|
// return false
|
|
|
|
// let en = false
|
|
// let sm = 0
|
|
// for (let i in this.payments) {
|
|
// let p = this.payments[i]
|
|
// if (p.payment_enable == "Y") {
|
|
// en = true
|
|
// sm = sm + Math.round(p.payment_amount)
|
|
|
|
// // IF DEBIT OR CREDIT
|
|
// if (['DEBIT', 'CREDIT'].indexOf(p.payment_type_code) > -1) {
|
|
// if (p.payment_edc_id == 0 || p.payment_card_id == 0)
|
|
// en = false
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// if (!en) return false
|
|
|
|
// if (this.$store.state.payment.order_id == 0 ||
|
|
// this.$store.state.payment.order_id == "0")
|
|
// return false;
|
|
|
|
// if (sm == 0)
|
|
// return false
|
|
|
|
if (!this.$store.state.doctor.selected_doctor.M_DoctorID ||
|
|
!this.$store.state.patient.selected_patient.M_PatientID)
|
|
return false
|
|
|
|
return true
|
|
},
|
|
|
|
banks () {
|
|
return this.$store.state.other.banks
|
|
},
|
|
|
|
accounts () {
|
|
return this.$store.state.other.accounts
|
|
},
|
|
|
|
is_bill () {
|
|
return this.$store.state.company.selected_mou.M_MouIsBill == "Y"
|
|
}
|
|
},
|
|
|
|
mounted () {
|
|
this.$store.dispatch('payment/search')
|
|
this.$store.dispatch('other/search_bank')
|
|
this.$store.dispatch('other/search_accounts')
|
|
},
|
|
|
|
watch : {
|
|
switch_payment_enable (n, o) {
|
|
if (n != o) {
|
|
if (n.length < o.length) {
|
|
for (let i in o)
|
|
if (n.indexOf(o[i]) < 0)
|
|
return
|
|
}
|
|
}
|
|
},
|
|
|
|
order_id (n, o) {
|
|
if (n == 0 || n == "0")
|
|
this.$store.commit("order/update_tab_enable", [2, false])
|
|
else
|
|
this.$store.commit("order/update_tab_enable", [2, true])
|
|
}
|
|
|
|
}
|
|
}
|
|
</script>
|