251 lines
8.1 KiB
JavaScript
251 lines
8.1 KiB
JavaScript
// 1 => LOADING
|
|
// 2 => DONE
|
|
// 3 => ERROR
|
|
import * as api from "../api/payment.js"
|
|
|
|
export default {
|
|
namespaced: true,
|
|
state: {
|
|
order_id: 0,
|
|
|
|
selected_patient: {
|
|
order_no: '-',
|
|
order_date: '-',
|
|
order_mou: '-',
|
|
order_company: '-',
|
|
patient_name: '-',
|
|
patient_mr: '-',
|
|
doctor_sender: '-',
|
|
doctor_sender_address: '-',
|
|
doctor_pj: '-'
|
|
},
|
|
|
|
order_detail: [
|
|
// { n:1, d_id:1, t_id:1, t_name:'SGOT', t_price:80000, t_disctotal:7000, t_total:73000 },
|
|
// { n:2, d_id:2, t_id:2, t_name:'SGPT', t_price:75000, t_disctotal:8000, t_total:67000 }
|
|
],
|
|
order_delivery: [],
|
|
|
|
order_subtotal: 0,
|
|
order_rounding: 0,
|
|
order_total: 0,
|
|
order_company: {
|
|
is_bill: "N",
|
|
min_dp: 0,
|
|
min_dp_rp: 0,
|
|
on_hold: "N",
|
|
on_hold_text: ""
|
|
},
|
|
|
|
payment_cash_amount: 0,
|
|
payment_debit_amount: 0,
|
|
payment_credit_amount: 0,
|
|
|
|
payments: [],
|
|
payment_total: 0,
|
|
|
|
payment_id: 0,
|
|
payment_number: '',
|
|
finish_dialog_is_active: false,
|
|
|
|
paid: false
|
|
},
|
|
mutations: {
|
|
update_order (state, data) {
|
|
state.selected_patient = data.order_header
|
|
state.order_detail = data.order_detail
|
|
state.order_delivery = data.order_delivery
|
|
|
|
state.order_subtotal = data.order_header.order_subtotal
|
|
state.order_rounding = data.order_header.order_rounding
|
|
state.order_total = data.order_header.order_total
|
|
|
|
state.order_company = {
|
|
is_bill: data.order_header.M_CompanyIsBill,
|
|
min_dp: data.order_header.M_CompanyMinDP,
|
|
min_dp_rp: Math.round(data.order_header.M_CompanyMinDP * data.order_header.order_total / 100),
|
|
on_hold: data.order_header.M_CompanyIsAgingOnHold,
|
|
on_hold_text: data.order_header.M_CompanyIsAgingOnHoldNote
|
|
}
|
|
},
|
|
|
|
update_order_id (state, id) {
|
|
state.order_id = id
|
|
},
|
|
|
|
update_payment(state, o) {
|
|
if (o.type == 'cash')
|
|
state.payment_cash_amount = o.amount
|
|
if (o.type == 'debit')
|
|
state.payment_debit_amount = o.amount
|
|
if (o.type == 'credit')
|
|
state.payment_credit_amount = o.amount
|
|
},
|
|
|
|
update_payments(state, o) {
|
|
state.payments = o
|
|
|
|
// Total payments
|
|
let total = 0
|
|
for (let i in o) {
|
|
o[i].payment_actual = Math.round(o[i].payment_actual)
|
|
total += o[i].payment_actual
|
|
}
|
|
|
|
state.payment_total = total
|
|
|
|
// Calculate change
|
|
for (let i in o) {
|
|
o[i].payment_amount = o[i].payment_actual
|
|
|
|
if (o[i].payment_type_code == 'CASH') {
|
|
o[i].payment_change = 0
|
|
let chg = total - state.order_total;
|
|
|
|
if (chg > o[i].payment_actual)
|
|
chg = o[i].payment_actual
|
|
if (chg < 0)
|
|
chg = 0
|
|
|
|
o[i].payment_change = chg
|
|
|
|
// re-calculate payment amount
|
|
o[i].payment_amount = o[i].payment_actual - o[i].payment_change
|
|
state.payment_total -= chg
|
|
}
|
|
}
|
|
|
|
state.payments = o
|
|
},
|
|
|
|
reset_payment(state) {
|
|
state.payment_total = 0
|
|
},
|
|
|
|
update_finish_dialog_is_active(state, val) {
|
|
state.finish_dialog_is_active = val
|
|
},
|
|
|
|
update_payment_number(state, val) {
|
|
state.payment_number = val
|
|
},
|
|
|
|
update_payment_id(state, val) {
|
|
state.payment_id = val
|
|
},
|
|
|
|
update_paid(state, val) {
|
|
state.paid = val
|
|
},
|
|
|
|
update_order_company(state, val) {
|
|
state.order_company = val
|
|
}
|
|
},
|
|
actions: {
|
|
async get_order(context, prm) {
|
|
// context.commit("update_search_status",1)
|
|
try {
|
|
let resp= await api.get_order(prm)
|
|
if (resp.status != "OK") {
|
|
// context.commit("update_search_status",3)
|
|
// context.commit("update_search_error_message",resp.message)
|
|
} else {
|
|
// context.commit("update_search_status",2)
|
|
// context.commit("update_search_error_message","")
|
|
let data = resp.data.data
|
|
context.commit("update_order", data)
|
|
|
|
// commit("patientaddress/test", "X", { root: true })
|
|
}
|
|
} catch(e) {
|
|
// context.commit("update_search_status",3)
|
|
// context.commit("update_search_error_message",e.message )
|
|
}
|
|
},
|
|
|
|
async search(context, prm) {
|
|
// context.commit("update_search_status",1)
|
|
try {
|
|
let resp= await api.search(prm)
|
|
if (resp.status != "OK") {
|
|
// context.commit("update_search_status",3)
|
|
// context.commit("update_search_error_message",resp.message)
|
|
} else {
|
|
// context.commit("update_search_status",2)
|
|
// context.commit("update_search_error_message","")
|
|
let data = resp.data
|
|
context.commit("update_payments", data)
|
|
|
|
// commit("patientaddress/test", "X", { root: true })
|
|
}
|
|
} catch(e) {
|
|
// context.commit("update_search_status",3)
|
|
// context.commit("update_search_error_message",e.message )
|
|
}
|
|
},
|
|
|
|
async save(context) {
|
|
var order_id = context.state.order_id;
|
|
let payments = []
|
|
let p = context.state.payments
|
|
for (let i in context.state.payments) {
|
|
if (Math.round(p[i].payment_amount) == 0)
|
|
continue;
|
|
|
|
payments.push({
|
|
type: p[i].payment_type_id,
|
|
amount: p[i].payment_amount,
|
|
actual: p[i].payment_actual,
|
|
changes: p[i].payment_change,
|
|
note: p[i].payment_note,
|
|
card: p[i].payment_card_id,
|
|
edc: p[i].payment_edc_id
|
|
})
|
|
}
|
|
|
|
// context.commit("update_search_status",1)
|
|
try {
|
|
let resp= await api.save(one_token(), order_id, payments)
|
|
|
|
if (resp.status != "200") {
|
|
// context.commit("update_search_status",3)
|
|
// context.commit("update_search_error_message",resp.message)
|
|
alert('error')
|
|
} else {
|
|
context.commit('update_payment_number', resp.data.data.payment_number)
|
|
context.commit('update_payment_id', resp.data.data.payment_id)
|
|
context.commit('update_finish_dialog_is_active', true)
|
|
context.commit('update_paid', true)
|
|
}
|
|
} catch(e) {
|
|
// context.commit("update_search_status",3)
|
|
// context.commit("update_search_error_message",e.message )
|
|
}
|
|
},
|
|
|
|
async print_nota (context, a) {
|
|
let usr = one_user()
|
|
let ts = Date.now() / 1000 | 0
|
|
let x = context.rootState.company.selected_mou
|
|
let rpt_url = '/birt/run?__report=report/one/fo/rpt_t_003.rptdesign&PID='+a+'&username='+usr.M_UserUsername+'&__format=pdf&ts='+ts
|
|
if (x.M_MouIsBill == 'Y')
|
|
rpt_url = '/birt/run?__report=report/one/fo/rpt_t_006.rptdesign&__format=pdf&username='+usr.M_UserUsername+'&PID='+a+'&ts='+ts
|
|
|
|
context.commit('order/update_rpt_url', window.BASE_URL + rpt_url, {root:true})
|
|
context.commit('order/update_print_dialog_is_active', true, {root:true})
|
|
},
|
|
|
|
async print_invoice (context, a) {
|
|
context.commit('order/update_rpt_url', window.BASE_URL + '/birt/run?__report=report/one/fo/rpt_t_001.rptdesign&PID='+a+'&username=admin&__format=pdf', {root:true})
|
|
context.commit('order/update_print_dialog_is_active', true, {root:true})
|
|
},
|
|
|
|
async print_control (context, a) {
|
|
context.commit('order/update_rpt_url', window.BASE_URL + '/birt/run?__report=report/one/lab/rpt_fo_001.rptdesign&PID='+a+'&username=admin&__format=pdf', {root:true})
|
|
context.commit('order/update_print_dialog_is_active', true, {root:true})
|
|
}
|
|
|
|
}
|
|
}
|