Files
FE_CPONE/test/vuex/components/oneFoCashierPaymentNew.vue
2026-04-27 10:13:31 +07:00

782 lines
29 KiB
Vue

<template>
<div>
<v-layout row>
<v-flex xs12>
<v-card >
<v-card-title class="primary white--text">
<span class="title">Response</span>
</v-card-title>
<v-card-text>
<blockquote v-if="_.isEmpty(selectedpatient)" class="blockquote">Anda belum pilih pasien di listing sebelah kiri</blockquote>
<p v-if="!_.isEmpty(selectedpatient)">{{selectedpatient.Api_PushResponse}}</p>
</v-card-text>
</v-card>
</v-flex>
</v-layout>
<v-layout row>
<v-flex xs12>
<v-card class="mt-3" >
<v-card-title class="blue-grey white--text">
<span class="title">Params</span>
</v-card-title>
<v-card-text >
<blockquote v-if="_.isEmpty(selectedpatient)" class="blockquote">Anda belum pilih pasien di listing sebelah kiri</blockquote>
<p v-if="!_.isEmpty(selectedpatient)">{{selectedpatient.Api_PushParams}}</p>
</v-card-text>
</v-card>
</v-flex>
</v-layout>
</div>
</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;
}
.amount-right{
text-align:right!important;
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;
}
.disabled-background{
background:#b7b7b7;
}
.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;
}
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
background:white;
border: 0px;
}
th, td {
border: 1px solid black;
border-collapse: collapse;
padding-top: 2px;
padding-bottom: 2px;
}
table>tr>td {
padding: 8px;
}
table>tr>td:first {
padding-left:15px!important;
}
.mini-input .v-input{
margin-top: 0px;
}
.mini-input .v-input, .mini-input .v-input--selection-controls,.mini-input .v-input__slot{
margin-top: 0px;
margin-bottom:0px;
margin-left:3px;
}
.mini-input .v-messages{
min-height:0px;
}
.border-bottom-dashed{
border-bottom : 1px dashed rgba(0,0,0,.12);
}
</style>
<script>
module.exports = {
components : {
'one-dialog-info':httpVueLoader('../../common/oneDialogInfo.vue'),
'one-field-verification' : httpVueLoader('../../common/oneFieldVerificationSupply.vue'),
'one-dialog-print':httpVueLoader('../../common/oneDialogPrintX.vue'),
'one-dialog-print-red':httpVueLoader('../../common/oneDialogPrintX.vue')
},
data () {
return {
interval: null,
items: [
{
id: 1,
color: 'info',
icon: ICONS['info']
}
],
nonce: 2,
searchPrint:'',
selected_typeprint:{},
typeprints:[
{id:'inv1',name:'Invoice I'},
{id:'inv2',name:'Invoice II'},
{id:'bp',name:'Bukti Pemeriksaan I'},
{id:'bp1',name:'Bukti Pemeriksaan II'},
{id:'bp2',name:'Bukti Pemeriksaan III'},
{id:'kw1',name:'Kwitansi I'},
{id:'kw2',name:'Kwitansi II'},
//{id:'kkp',name:'KKP'},
{id:'ic',name:'Inform Concern'}
],
dialog_languages:false,
type_dialog_lang:'',
data_dialog_language:{},
act_printkw:'',
xdialogatasnama: false,
pembayaran_atas_nama: '',
checkbox: true,
radioGroup: 1,
switchCash: true,
switchDebit: false,
switchKredit: false,
dialog:false,
urlprintnotered:'',
printtitle:'',
printwidth:'60%',
search_card:'',
search_edc:'',
isLoading:false,
fajrihidebtnpay:'Y'
}
},
mounted() {
this.$store.dispatch("paymentnew/lookup_type")
this.$store.dispatch("paymentnew/lookup_banks")
this.$store.dispatch("paymentnew/lookup_accounts")
this.$store.dispatch("paymentnew/getlanguages")
},
computed: {
urlprintnote: {
get () {
return this.$store.state.paymentnew.urlprintnote
},
set (v) {
this.$store.commit('paymentnew/update_urlprintnote', v)
}
},
setting_controll: {
get () {
return this.$store.state.paymentnew.setting_controll
},
set (v) {
this.$store.commit('paymentnew/update_setting_controll', v)
}
},
data_station_location : {
get () {
return this.$store.state.paymentnew.data_station_location
},
set (v) {
this.$store.commit('paymentnew/update_data_station_location', v)
}
},
languages: {
get() {
return this.$store.state.paymentnew.languages
},
set(val) {
this.$store.commit("paymentnew/update_languages",val)
}
},
selected_language: {
get() {
return this.$store.state.paymentnew.selected_language
},
set(val) {
this.$store.commit("paymentnew/update_selected_language",val)
if(val.code == 'ID'){
this.pembayaran_atas_nama = this.$store.state.patient.selected_patient.M_PatientName
}else{
this.pembayaran_atas_nama = this.$store.state.patient.selected_patient.M_PatientName_eng
}
}
},
opendialoginfo: {
get() {
return this.$store.state.paymentnew.open_dialog_info
},
set(val) {
this.$store.commit("paymentnew/update_open_dialog_info",false)
}
},
msginfo: {
get() {
return this.$store.state.paymentnew.msg_info
},
set(val) {
this.$store.commit("paymentnew/update_msg_info",false)
}
},
save_process(){
return this.$store.state.paymentnew.save_process
},
cards(){
return this.$store.state.paymentnew.cards
},
banks(){
return this.$store.state.paymentnew.banks
},
accounts(){
return this.$store.state.paymentnew.accounts
},
xmindp_percent(){
if(this.$store.state.patient.selected_patient){
return this.$store.state.patient.selected_patient.mindp_percent
}
else{
return 0
}
},
xmindp_amount(){
if(this.$store.state.patient.selected_patient){
return this.$store.state.patient.selected_patient.mindp_amount
}
else{
return 0
}
},
notes(){
return this.$store.state.paymentnew.notes
},
xdialogpaysuccess: {
get() {
return this.$store.state.paymentnew.dialog_pay_success
},
set(val) {
this.$store.commit("paymentnew/update_dialog_pay_success",false)
}
},
loading_send(){
return this.$store.state.patient.loading_send
},
unduhan(){
return this.$store.state.patient.unduhan
},
xmsgpaysuccess(){
return this.$store.state.paymentnew.paynumber
},
types() {
return this.$store.state.paymentnew.types
},
totpay() {
return this.$store.state.paymentnew.total_payment
},
restbill(){
if(this.$store.state.patient.patients){
if(this.$store.state.patient.selected_patient && this.$store.state.patient.selected_patient.unpaid)
return this.$store.state.patient.selected_patient.unpaid
else
return 0
}
else{
return 0
}
},
xdialogdelete:{
get() {
return this.$store.state.paymentnew.dialog_delete
},
set(val) {
this.$store.commit("paymentnew/update_dialog_delete",val)
}
},
xmsgdelete(){
return this.$store.state.paymentnew.msg_delete
},
xnotadelete(){
return this.$store.state.paymentnew.nota_delete
},
xnotedelete:{
get() {
return this.$store.state.paymentnew.note_delete
},
set(val) {
this.$store.commit("paymentnew/update_note_delete",val)
}
},
openprintnote: {
get() {
return this.$store.state.paymentnew.open_print_note
},
set(val) {
this.$store.commit("paymentnew/update_open_print_note",false)
}
},
openprintnotered: {
get() {
return this.$store.state.paymentnew.open_print_note
},
set(val) {
this.$store.commit("paymentnew/update_open_print_note",false)
}
},
selectedpatient(){
return this.$store.state.patient.selected_patient
},
logs(){
return this.$store.state.patient.logs
},
xdisable_btn_pay: {
get() {
return this.$store.state.paymentnew.disable_btn_pay
},
set(val) {
this.$store.commit("paymentnew/update_disable_btn_pay",val)
}
},
},
methods : {
sendResult(){
this.$store.dispatch('patient/sendresult', this.selectedpatient)
},
PrintControlCard(){
this.printwidth = 800
this.printtitle = ""
this.$store.dispatch('paymentnew/save_control', {data:this.data_station_location})
},
openSettingControl(){
this.$store.dispatch("paymentnew/getLocations");
},
typePrintNow(){
var selected_x = this.selected_typeprint
if(selected_x.id === 'inv1')
this.printInvoice()
if(selected_x.id === 'inv2')
this.printInvoice2()
if(selected_x.id === 'bp')
this.printBP()
if(selected_x.id === 'bp1')
this.printBP1()
if(selected_x.id === 'bp2')
this.printBP2()
if(selected_x.id === 'kw1')
this.printKw('v1')
if(selected_x.id === 'kw2')
this.printKw('v2')
if(selected_x.id === 'kkp')
this.printKkp()
if(selected_x.id === 'ic')
this.printIc()
},
changeCard(type,value,idx){
var types = this.$store.state.paymentnew.types
if(type === 'card')
types[idx].selected_card = value
if(type === 'edc')
types[idx].selected_edc = value
if(type === 'account')
types[idx].selected_account = value
this.$store.commit("paymentnew/update_types",{records:types,total:types.length})
this.updateTotal()
},
colorbginp(value){
if(value.chex === false){
return 'grey'
}
else{
return 'white'
}
},
convertMoney(money){
return one_money(money)
},
closeDialogPaySuccess(){
let arrpatient = this.$store.state.patient.patients
var idx = _.findIndex(arrpatient, item => item.T_OrderHeaderID === this.$store.state.patient.selected_patient.T_OrderHeaderID)
this.$store.commit("paymentnew/update_dialog_pay_success",false)
this.$store.commit("patient/update_selected_patient",{})
console.log(this.$store.state.paymentnew.types)
this.$store.dispatch("patient/search",{
startdate:this.$store.state.patient.start_date,
enddate:this.$store.state.patient.end_date,
search: this.$store.state.patient.search,
status: this.$store.state.patient.selected_status.value,
current_page:this.$store.state.patient.current_page,
lastidx:idx
})
},
updateTotal(){
var xval = this.$store.state.paymentnew.types
let xcash = _.filter(xval, {code: 'CASH'})
let xother = _.filter(xval, type => type.code !== 'CASH')
var valother = 0
xother.forEach(function(obj){
valother += parseInt(obj.leftvalue)
})
//console.log('val other '+valother)
let restother = this.restbill - valother
let xchange = parseInt(xcash[0].leftvalue) - restother
xcash[0].rightvalue = Math.max(0, xchange)
let idxcash = _.findIndex(xval, item => item.code === 'CASH')
xval[idxcash] = xcash[0]
this.$store.commit("paymentnew/update_types",{records :xval,total:xval.length })
let totpaid = valother + ( parseInt(xcash[0].leftvalue) - Math.max(0, xchange) )
this.$store.commit("paymentnew/update_total_payment",totpaid)
},
pay(){
this.$store.commit("paymentnew/update_save_process",true)
var go_pay = true
let xval = this.$store.state.paymentnew.types
var valpay = 0
var xmsginfo = ''
let xcash = _.filter(xval, {code: 'CASH'})
xval.forEach(function(obj){
valpay += parseInt(obj.leftvalue)
})
let selected_payments = _.filter(this.$store.state.paymentnew.types, {chex: true})
//console.log(selected_payments)
var numberpay = 0
selected_payments.forEach(function(xobj){
var obj = JSON.parse(JSON.stringify(xobj))
if(obj.code === 'CASH' && parseInt(obj.leftvalue) === 0){
go_pay = false
xmsginfo += "<p>Mau bayar pake daun ?</p>"
}
else if(obj.code === 'DEBIT' && ( parseInt(obj.leftvalue) === 0 || parseInt(obj.selected_card.id) === 0 || parseInt(obj.selected_edc.id) === 0 )){
console.log(obj.code)
go_pay = false
xmsginfo += "<p>Bawain pacar bibit buah kedongdong, Kalo bayar pake debit diisi yang lengkap dong</p>"
}
else if(obj.code === 'CREDIT' && ( parseInt(obj.leftvalue) === 0 || parseInt(obj.selected_card.id) === 0 || parseInt(obj.selected_edc.id) === 0 )){
go_pay = false
xmsginfo += "<p>Pergi berlayar pake odong-odong, Kalo bayar pake kredit diisi yang lengkap dong</p>"
}
else if(obj.code === 'TRANSFER' && ( parseInt(obj.leftvalue) === 0 || parseInt(obj.selected_account.id) === 0 || obj.selected_account === '')){
go_pay = false
xmsginfo += "<p>Salah bermanuver kecebur selokan dong, Kalo mau transfer diisi yang lengkap dong</p>"
}
if(parseInt(obj.leftvalue) !== 0){
numberpay = numberpay + parseInt(obj.leftvalue)
}
})
if(selected_payments.length > 0 && go_pay){
console.log('sisa tagihan : '+this.restbill)
if(parseInt(this.restbill) === 0 && numberpay > 0){
//console.log("klo 0 ke sini")
xmsginfo += "<p>Yuk kita ke penghulu, jangan kawin lari ... hayooo!!! diretur dulu, kalau mau bayar lagi</p>"
this.$store.commit("paymentnew/update_msg_info",xmsginfo)
this.$store.commit("paymentnew/update_open_dialog_info",true)
this.$store.commit("paymentnew/update_save_process",false)
}
else{
let prm = {coba:0,orderid:this.$store.state.patient.selected_patient.T_OrderHeaderID,payments:this.$store.state.paymentnew.types}
this.$store.dispatch("paymentnew/pay",prm)
}
}
else{
if(selected_payments.length == 0)
xmsginfo += "<p>Mau bayar pake daun ?</p>"
this.$store.commit("paymentnew/update_msg_info",xmsginfo)
this.$store.commit("paymentnew/update_open_dialog_info",true)
this.$store.commit("paymentnew/update_save_process",false)
// console.log(this.opendialoginfo)
}
},
deleteNote(note,idx){
this.$store.commit("paymentnew/update_note_delete","")
this.$store.commit("paymentnew/update_nota_delete",note)
let xmsg = "Yakin , mau hapus nota nomor <span style='color:red'>"+note.note_number+"</span> ?"
this.$store.commit("paymentnew/update_msg_delete",xmsg)
this.$store.commit("paymentnew/update_dialog_delete",true)
},
doDeleteNote(){
let prm = {catatan:this.$store.state.paymentnew.note_delete,nota:this.$store.state.paymentnew.nota_delete}
this.$store.dispatch("paymentnew/delete_note",prm)
},
closeDialogDelete(){
let arrpatient = this.$store.state.patient.patients
var idx = _.findIndex(arrpatient, item => item.T_OrderHeaderID === this.$store.state.patient.selected_patient.T_OrderHeaderID)
this.$store.commit("paymentnew/update_dialog_delete",false)
this.$store.commit("patient/update_selected_patient",{})
this.$store.dispatch("patient/search",{
startdate:this.$store.state.patient.start_date,
enddate:this.$store.state.patient.end_date,
search: this.$store.state.patient.search,
status: this.$store.state.patient.selected_status.value,
lastidx:idx
})
},
updateChx(val,idx){
var selpat = this.$store.state.patient.selected_patient
var firstamount = 0
if(selpat.unpaid)
firstamount = selpat.unpaid
let xobj = this.$store.state.paymentnew.types
if((xobj[idx].code === 'DEBIT' || xobj[idx].code === 'CREDIT' || xobj[idx].code === 'TRANSFER') && val.chex === false){
xobj[idx].selected_card = {id:0,name:''}
xobj[idx].selected_edc = {id:0,name:''}
xobj[idx].selected_account = {id:0,name:''}
}
var valother = 0
xobj.forEach(function(obj){
if(obj.chex && ( obj.code != val.code))
valother += parseInt(obj.leftvalue)
})
if(!val.chex){
xobj[idx].leftvalue = 0
var x = "Y"
this.xdisable_btn_pay = x
console.log('disable '+this.xdisable_btn_pay )
}
else
xobj[idx].leftvalue = firstamount - valother
this.$store.commit("paymentnew/update_types",{records :xobj,total:xobj.length })
this.updateTotal()
},
check_disable_btn_status(){
this.xdisable_btn_pay = 'N'
var payments = this.$store.state.paymentnew.types
let selected_payments = _.filter(payments, {chex: true})
console.log(this.xdisable_btn_pay)
selected_payments.forEach(function(obj){
if(obj.leftvalue === 0){
this.xdisable_btn_pay = 'Y'
console.log('disable '+this.xdisable_btn_pay )
}
if(obj.code === 'DEBIT' || obj.code === 'CREDIT' || obj.code === 'TRANSFER'){
console.log(obj)
if(obj.selected_card.id === '0' || obj.selected_card.id === 0 || obj.selected_edc.id === '0' || obj.selected_edc.id === 0 || obj.selected_account.id === '0' || obj.selected_account.id === 0){
this.xdisable_btn_pay = 'Y'
console.log('oye')
console.log(this.xdisable_btn_pay)
}
}
})
},
selectedLanguage(){
if(this.type_dialog_lang == 'nota'){
this.printNoteAfterLang()
}
if(this.type_dialog_lang == 'invoice'){
this.printInvoiceAfterLang()
}
},
printNote(val,idx){
this.dialog_languages = true
this.data_dialog_language = val
this.type_dialog_lang = 'nota'
this.selected_language = {id:'1',code:'ID',name:'Bahasa Indonesia'}
},
printNoteAfterLang(){
this.dialog_languages = false
var val = this.data_dialog_language
//console.log(val)
this.printtitle = ""
let user = one_user()
var rpt = 'rpt_t_003'
if(val.note_amount < 0)
rpt = 'rpt_t_004'
if(this.selected_language.code == 'EN'){
rpt = rpt+'_eng'
}
this.urlprintnote = "/birt/run?__report=report/one/fo/"+rpt+".rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+val.note_id
this.$store.commit("paymentnew/update_open_print_note",true)
},
printNotered(val,idx){
this.printtitle = ""
let user = one_user()
var rpt = 'rpt_t_003i'
if(val.note_amount < 0)
rpt = 'rpt_t_004'
this.urlprintnote = "/birt/run?__report=report/one/fo/"+rpt+".rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+val.note_id
this.$store.commit("paymentnew/update_open_print_note",true)
},
doPrint(){
this.printtitle = ""
this.closeDialogPaySuccess()
let user = one_user()
let payments = this.$store.state.paymentnew.last_payments
console.log(payments)
//let xcash = _.filter(payments, {chex: true})
let xcash = _.filter(payments, function(o) { return o.leftvalue < 0})
var rpt = 'rpt_t_003'
if(xcash.length > 0)
rpt = 'rpt_t_004'
console.log(xcash)
console.log(rpt)
this.urlprintnote = "/birt/run?__report=report/one/fo/"+rpt+".rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+this.$store.state.paymentnew.idx
this.$store.commit("paymentnew/update_open_print_note",true)
},
printKw(act) {
this.type_dialog_lang = 'kwitansi'
this.selected_language = {id:'1',code:'ID',name:'Bahasa Indonesia'}
this.act_printkw = act
this.pembayaran_atas_nama = this.$store.state.patient.selected_patient.M_PatientName
this.xdialogatasnama = true
},
printKwV2(){
this.printwidth = 800
this.printtitle = ""
let idx = this.$store.state.patient.selected_patient.T_OrderHeaderID
let user = one_user()
let an_name = "&an=" + encodeURIComponent(this.pembayaran_atas_nama )
var rpt = ''
if(this.act_printkw == 'v1'){
rpt = 'rpt_t_002'
}
else{
rpt = 'rpt_t_002i'
}
if(this.selected_language.code == 'EN'){
rpt = rpt+'_eng'
}
this.urlprintnote = "/birt/run?__report=report/one/fo/"+rpt+".rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+idx + an_name
this.$store.commit("paymentnew/update_open_print_note",true)
},
printBP(){
this.printwidth = 800
this.printtitle = ""
let idx = this.$store.state.patient.selected_patient.T_OrderHeaderID
let user = one_user()
let an_name = "&an=" + encodeURIComponent(this.pembayaran_atas_nama )
this.urlprintnote = "/birt/run?__report=report/one/fo/rpt_t_006.rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+idx + an_name
this.$store.commit("paymentnew/update_open_print_note",true)
},
printBP1(){
this.printwidth = 800
this.printtitle = ""
let idx = this.$store.state.patient.selected_patient.T_OrderHeaderID
let user = one_user()
let an_name = "&an=" + encodeURIComponent(this.pembayaran_atas_nama )
this.urlprintnote = "/birt/run?__report=report/one/fo/rpt_t_006i.rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+idx + an_name
this.$store.commit("paymentnew/update_open_print_note",true)
},
printBP2(){
this.printwidth = 800
this.printtitle = ""
let idx = this.$store.state.patient.selected_patient.T_OrderHeaderID
let user = one_user()
let an_name = "&an=" + encodeURIComponent(this.pembayaran_atas_nama )
this.urlprintnote = "/birt/run?__report=report/one/fo/rpt_t_006ii.rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+idx + an_name
this.$store.commit("paymentnew/update_open_print_note",true)
},
printInvoice(){
this.dialog_languages = true
this.type_dialog_lang = 'invoice'
this.selected_language = {id:'1',code:'ID',name:'Bahasa Indonesia'}
},
printInvoiceAfterLang(){
this.dialog_languages = false
this.printwidth = 800
this.printtitle = ""
let idx = this.$store.state.patient.selected_patient.T_OrderHeaderID
let user = one_user()
var rpt = 'rpt_t_001'
if(this.selected_language.code == 'EN'){
rpt = rpt+'_eng'
}
this.urlprintnote = "/birt/run?__report=report/one/fo/"+rpt+".rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+idx
this.$store.commit("paymentnew/update_open_print_note",true)
},
printInvoice2(){
this.printwidth = 800
this.printtitle = ""
let idx = this.$store.state.patient.selected_patient.T_OrderHeaderID
let user = one_user()
this.urlprintnote = "/birt/run?__report=report/one/fo/rpt_t_001i.rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+idx
this.$store.commit("paymentnew/update_open_print_note",true)
},
printKkp(){
this.printwidth = 800
this.printtitle = ""
let idx = this.$store.state.patient.selected_patient.T_OrderHeaderID
let user = one_user()
this.urlprintnote = "/birt/run?__report=report/one/lab/rpt_fo_001.rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+idx
this.$store.commit("paymentnew/update_open_print_note",true)
},
printIc(){
this.printwidth = 800
this.printtitle = ""
let idx = this.$store.state.patient.selected_patient.T_OrderHeaderID
let user = one_user()
this.urlprintnote = "/birt/run?__report=report/one/fo/rpt_t_inform_concern.rptdesign&__format=pdf&username="+user.M_StaffName+"&PID="+idx
this.$store.commit("paymentnew/update_open_print_note",true)
}
}
}
</script>