show company
parent
7eff465fd1
commit
cbde2cc6ff
|
@ -1,4 +1,5 @@
|
|||
<inherit model="partner" inherit="contact_form">
|
||||
<!--
|
||||
<field name="payment_terms" position="after">
|
||||
<newline/>
|
||||
<separator string="Clinic"/>
|
||||
|
@ -8,4 +9,5 @@
|
|||
<field name="account_payment_id" attrs='{"required":[["type","=","org"]]}'/>
|
||||
<field name="account_income_id" attrs='{"required":[["type","=","org"]]}'/>
|
||||
</field>
|
||||
-->
|
||||
</inherit>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<form model="clinic.cycle">
|
||||
<form model="clinic.cycle" show_company="1">
|
||||
<head>
|
||||
<button string="Options" dropdown="1">
|
||||
</button>
|
||||
|
@ -10,6 +10,7 @@
|
|||
<field name="color"/>
|
||||
<field name="duration"/>
|
||||
<field name="note"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<related>
|
||||
<field name="cycle_items"/>
|
||||
<field name="visits"/>
|
||||
|
|
|
@ -10,28 +10,8 @@
|
|||
|
||||
<field name="cycle_id" required="1"/>
|
||||
<field name="date"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<tabs>
|
||||
<!--
|
||||
<tab string="HDCase">
|
||||
<field name="hd_cases" nolabel="1" count="5">
|
||||
<list model="clinic.hd.case" colors='{"#cfc":[["state","=","completed"]],"#f9e37d":[["state","=","in_progress"]],"#bcbbb9":[["state","=","cancelled"]],"#ACD1E9":[["state","=","waiting_payment"]],"#70DB93":[["state","=","paid"]]}'>
|
||||
<field name="sickbed_id" domain="[['available','=',true]]" span="2"/>
|
||||
<field name="patient_id" span="2"/>
|
||||
<field name="time_start" span="2"/>
|
||||
<field name="wt_start" span="2"/>
|
||||
<field name="bp_start" span="2"/>
|
||||
<field name="membrane_type" span="2"/>
|
||||
<field name="vascular_acc" span="2"/>
|
||||
<field name="bid_flow_rate" span="2"/>
|
||||
<field name="ultrafittration" span="2"/>
|
||||
<field name="time_stop" span="2"/>
|
||||
<field name="wt_stop" span="2"/>
|
||||
<field name="bp_stop" span="2"/>
|
||||
<field name="hd_case_id" span="2"/>
|
||||
</list>
|
||||
</field>
|
||||
</tab>
|
||||
-->
|
||||
<tab string="Nurses">
|
||||
<field name="nurses" nolabel="1">
|
||||
<list>
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
<field name="use_time" readonly="1"/>
|
||||
<field name="max_use_time"/>
|
||||
<field name="description"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
</group>
|
||||
<foot>
|
||||
<button string="Confirm" type="success" states="new" method="confirm"/>
|
||||
|
|
|
@ -8,14 +8,16 @@
|
|||
</head>
|
||||
<group form_layout="stacked" attrs='{"readonly":[["state","=","completed"]]}'>
|
||||
<field name="number" span="2"/>
|
||||
<field name="sickbed_id" domain="[['available','=',true]]" required="1" span="2"/>
|
||||
<field name="sickbed_id" attrs='{"readonly":[["state","in",["completed","waiting_payment","paid"]]]}' domain="[['state','=','available']]" required="1" span="2"/>
|
||||
<field name="patient_id" span="2" onchange="onchange_patient"/>
|
||||
<field name="patient_type_id" span="2"/>
|
||||
<field name="cycle_id" span="2" required="1" onchange="onchange_cycle"/>
|
||||
<field name="department_id" span="2"/>
|
||||
<field name="cycle_item_id" span="2" domain="[['cycle_id','=',cycle_id]]"/>
|
||||
<field name="visit_id" span="2"/>
|
||||
<field name="req_fee" span="2" readonly="1" invisible="1"/>
|
||||
<field name="req_fee" span="2" invisible="1"/>
|
||||
<!-- enable show_company=1 -->
|
||||
<field name="company_id" span="2" invisible="1"/>
|
||||
</group>
|
||||
<tabs>
|
||||
<tab string="General">
|
||||
|
@ -119,7 +121,8 @@
|
|||
<button string="Done" type="success" icon="ok" method="done" states="in_progress"/>
|
||||
<button string="Discard" type="danger" icon="remove" action="clinic_hd_case_distcont" states="in_progress"/>
|
||||
<button string="Claim Expense" type="default" icon="arrow-right" states="completed" method="request_fee" attrs='{"invisible":[["req_fee","=",1]]}'/>
|
||||
<button string="Pay" type="success" icon="ok" method="pay" states="completed" attrs='{"invisible":[["req_fee","=",0]]}'/>
|
||||
<!--<button string="Pay" type="success" icon="ok" method="pay" states="completed" attrs='{"invisible":[["req_fee","=",0]]}'/>-->
|
||||
<button string="Pay" type="success" icon="ok" method="pay" states="completed,waiting_payment" attrs='{"invisible":[["req_fee","=",0]]}'/>
|
||||
</foot>
|
||||
<related>
|
||||
<field name="invoices" click_action="view_invoice">
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<field name="number"/>
|
||||
<field name="date"/>
|
||||
<field name="patient_id"/>
|
||||
<field name="patient_type_id"/>
|
||||
<field name="sickbed_id"/>
|
||||
<field name="cycle_id"/>
|
||||
<field name="department_id"/>
|
||||
|
|
|
@ -36,29 +36,21 @@
|
|||
<item string="Visits">
|
||||
<item string="Visits" action="clinic_visit"/>
|
||||
<item string="Visit Board" action="clinic_visit_board"/>
|
||||
<!--<item string="Generate Visit" action="clinic_gen_visit_form"/>-->
|
||||
</item>
|
||||
<item string="HD Cases">
|
||||
<item string="HD Cases" action="clinic_hd_case"/>
|
||||
<item string="Sickbed" action="clinic_sickbed"/>
|
||||
</item>
|
||||
<item string="Reports">
|
||||
<item string="HD Case Summary" action="clinic_report_hd_case_summary"/>
|
||||
<item string="Medical Summary" action="clinic_report_medical_summary"/>
|
||||
<item string="Recent Patient" action="clinic_report_recent_patient"/>
|
||||
<item string="Discontinue Patient" action="clinic_report_discontinue_patient"/>
|
||||
</item>
|
||||
<!--
|
||||
<item string="Others">
|
||||
<header string="TESTING"/>
|
||||
<item string="Import Product" action="import_clinic_product"/>
|
||||
<item string="Import Patient" action="import_clinic_patient"/>
|
||||
<item string="Import Visit" action="import_clinic_visit"/>
|
||||
<item string="Import HD Case" action="import_clinic_hd_case"/>
|
||||
</item>
|
||||
-->
|
||||
<item string="Settings">
|
||||
<item string="Branch" action="clinic_branch"/>
|
||||
<item string="Departments" action="clinic_department"/>
|
||||
<item string="Hospital" action="clinic_hospital"/>
|
||||
<item string="Sickbed" action="clinic_sickbed"/>
|
||||
<item string="Nationalities" action="clinic_nation"/>
|
||||
<item string="Valcular Access" action="clinic_vascular_access"/>
|
||||
<item string="Clinic Settings" action="clinic_setting"/>
|
||||
|
|
|
@ -4,13 +4,15 @@
|
|||
<item string="Labor Cost" action="clinic_labor_cost"/>
|
||||
<item string="Labor Cost Items" action="clinic_labor_cost_item"/>
|
||||
<item string="Labor Cost Entries" action="clinic_labor_cost_entry"/>
|
||||
<!--<item string="Import Payment" action="import_clinic_payment"/>-->
|
||||
<item string="Matching Invoices" action="clinic_report_payment_matching"/>
|
||||
<item string="HD Case Expenses" action="clinic_hd_case_expense"/>
|
||||
<divider/>
|
||||
<header string="REPORTS"/>
|
||||
<item string="Staff Fee Summary" action="clinic_report_staff_fee_sum"/>
|
||||
<item string="Staff Fee Detail" action="clinic_report_staff_fee_detail"/>
|
||||
<divider/>
|
||||
<header string="SETTINGS"/>
|
||||
<item string="Labor Cost Setting" action="clinic_report_staff_fee_sum"/>
|
||||
</item>
|
||||
</item>
|
||||
<item string="Conversion Balances" position="after">
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<form model="clinic.patient">
|
||||
<form model="clinic.patient" show_company="1">
|
||||
<head>
|
||||
<field name="type_id"/>
|
||||
<button string="Options" dropdown="1">
|
||||
|
@ -8,7 +8,7 @@
|
|||
</button>
|
||||
</head>
|
||||
<field name="number"/>
|
||||
<field name="trt_number"/>
|
||||
<field name="trt_no"/>
|
||||
<field name="type_id"/>
|
||||
<field name="name"/>
|
||||
<field name="hn"/>
|
||||
|
@ -28,7 +28,7 @@
|
|||
<field name="card_exp"/>
|
||||
<field name="birthday"/>
|
||||
<field name="age"/>
|
||||
<field name="picture"/>
|
||||
<field name="image"/>
|
||||
<field name="mobile"/>
|
||||
<field name="email"/>
|
||||
</group>
|
||||
|
@ -41,6 +41,7 @@
|
|||
<field name="weight"/>
|
||||
<field name="height"/>
|
||||
<field name="phone"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
</group>
|
||||
</tab>
|
||||
<tab string="Health Information">
|
||||
|
@ -98,7 +99,7 @@
|
|||
<tab string="Other">
|
||||
<group form_layout="stacked">
|
||||
<field name="cycle_id" span="2"/>
|
||||
<field name="hn_num" span="2"/>
|
||||
<field name="hn_no" span="2"/>
|
||||
</group>
|
||||
</tab>
|
||||
</tabs>
|
||||
|
|
|
@ -4,11 +4,12 @@
|
|||
</head>
|
||||
<field name="reg_date"/>
|
||||
<field name="number"/>
|
||||
<field name="hn"/>
|
||||
<field name="hn_no"/>
|
||||
<field name="trt_no"/>
|
||||
<field name="name"/>
|
||||
<field name="department_id"/>
|
||||
<field name="branch_id"/>
|
||||
<field name="categ_id"/>
|
||||
<!--<field name="type"/>-->
|
||||
<field name="type_id"/>
|
||||
<field name="image" preview='1'/>
|
||||
</list>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<form model="clinic.patient.type">
|
||||
<form model="clinic.patient.type" show_company="1">
|
||||
<head>
|
||||
<button string="Options" dropdown="1">
|
||||
<item string="New Contact" method="new_contact"/>
|
||||
|
@ -8,4 +8,5 @@
|
|||
<field name="code"/>
|
||||
<field name="contact_id"/>
|
||||
<field name="default"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
</form>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<list model="clinic.patient.type">
|
||||
<list model="clinic.patient.type" colors='{"#cfc":[["default","=",true]]}'>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="contact_id"/>
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
<field name="cycle_item_id" readonly="1"/>
|
||||
</list>
|
||||
</field>
|
||||
<field name="company_id" invisible="1"/>
|
||||
</group>
|
||||
</tab>
|
||||
<tab string="Planning">
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<list>
|
||||
<field name="patient_type_id"/>
|
||||
<field name="product_id" onchange="onchange_product"/>
|
||||
<field name="account_id"/>
|
||||
<field name="product_categ_id"/>
|
||||
<field name="description"/>
|
||||
<field name="reimbursable"/>
|
||||
|
@ -21,17 +22,6 @@
|
|||
<field name="qty" onchange="onchange_setting_line"/>
|
||||
<field name="amount"/>
|
||||
</list>
|
||||
<form>
|
||||
<field name="patient_type_id"/>
|
||||
<field name="product_id"/>
|
||||
<field name="product_categ_id"/>
|
||||
<field name="description"/>
|
||||
<field name="reimbursable"/>
|
||||
<field name="uom_id"/>
|
||||
<field name="price"/>
|
||||
<field name="qty"/>
|
||||
<field name="amount"/>
|
||||
</form>
|
||||
</field>
|
||||
<!--
|
||||
<separator string="Invoice Policy"/>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<form model="clinic.sickbed">
|
||||
<form model="clinic.sickbed" show_company="1">
|
||||
<head>
|
||||
<button string="Options" dropdown="1">
|
||||
<item string="Copy" method="copy"/>
|
||||
|
@ -6,6 +6,7 @@
|
|||
</head>
|
||||
<field name="name"/>
|
||||
<field name="available" readonly="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<related>
|
||||
<field name="hd_cases"/>
|
||||
</related>
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
<list model="clinic.sickbed">
|
||||
<list model="clinic.sickbed" colors='{"#70db93":[["state","=","available"]],"#ee3322":[["state","=","not_available"]]}'>
|
||||
<field name="name"/>
|
||||
<field name="available"/>
|
||||
<field name="date"/>
|
||||
<field name="patient_id"/>
|
||||
<field name="image" preview="1"/>
|
||||
<!--<field name="available"/>-->
|
||||
<field name="state"/>
|
||||
</list>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<form model="clinic.staff.categ">
|
||||
<form model="clinic.staff.categ" show_company="1">
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
<field name="parent_id" domain="[['type','=',type]]"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
</form>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<form model="clinic.staff">
|
||||
<form model="clinic.staff" show_company="1">
|
||||
<head>
|
||||
<field name="state"/>
|
||||
<button string="Options" dropdown="1">
|
||||
|
@ -12,6 +12,7 @@
|
|||
<field name="nick_name"/>
|
||||
<field name="department_id"/>
|
||||
<field name="branch_id"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<tabs>
|
||||
<tab string="General">
|
||||
<group span="6" columns="1">
|
||||
|
@ -24,7 +25,7 @@
|
|||
<field name="state"/>
|
||||
</group>
|
||||
<group span="6" columns="1">
|
||||
<field name="picture"/>
|
||||
<field name="image"/>
|
||||
<field name="user_id"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="email"/>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<form model="clinic.staff.level">
|
||||
<form model="clinic.staff.level" show_company="1">
|
||||
<head>
|
||||
<button string="Options" dropdown="1">
|
||||
<item string="Copy" method="copy"/>
|
||||
|
@ -8,4 +8,5 @@
|
|||
<field name="type"/>
|
||||
<field name="sequence"/>
|
||||
<field name="description"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
</form>
|
||||
|
|
|
@ -14,5 +14,6 @@
|
|||
<field name="level_id"/>
|
||||
<field name="categ_id"/>
|
||||
<field name="type"/>
|
||||
<field name="image"/>
|
||||
<field name="state"/>
|
||||
</list>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<form model="clinic.staff.rotation">
|
||||
<form model="clinic.staff.rotation" show_company="1">
|
||||
<field name="staff_id"/>
|
||||
<field name="level_id"/>
|
||||
<field name="from_company_id"/>
|
||||
|
@ -8,4 +8,5 @@
|
|||
<field name="wage"/>
|
||||
<field name="max_cycle"/>
|
||||
<field name="note"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
</form>
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<button string="New Visit" method="make_visit" span="1" icon="plus" type="success" size="small"/>
|
||||
</group>
|
||||
<group span="2" columns="1">
|
||||
<button string="Make An Appointment" action="clinic_gen_visit_form" span="2" icon="calendar" type="default" size="small"/>
|
||||
<button string="Make An Appointment" action="clinic_gen_visit_form" span="1" icon="calendar" type="default" size="small"/>
|
||||
</group>
|
||||
<!--<button string="calendar" icon="calendar" size="small" span="1"/>-->
|
||||
</form>
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
<calendar model="clinic.visit" states='draft' start_field="time_start" end_field="time_stop" colors='{"#090":[["cycle","=",1]],"#2400ff":[["cycle","=",2]],"orange":[["cycle","=",3]],"#f20000":[["cycle","=",4]]}'>
|
||||
<calendar model="clinic.visit" states='draft' start_field="time_start" end_field="time_stop" colors='{"#F1B2E1":[["cycle_color","=","#F1B2E1"]],"#B1DDF3":[["cycle_color","=","#B1DDF3"]],"#FFDE89":[["cycle_color","=","#FFDE89"]],"#E3675C":[["cycle_color","=","#E3675C"]]}'>
|
||||
<field name="patient_id"/>
|
||||
<field name="cycle_id"/>
|
||||
<field name="number"/>
|
||||
<field name="doctor_id"/>
|
||||
<field name="nurse_id"/>
|
||||
<field name="cycle_color"/>
|
||||
<!--<field name="state"/>-->
|
||||
</calendar>
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<field name="time_stop"/>
|
||||
<field name="doctor_id"/>
|
||||
<field name="visit_date" onchange="onchange_date"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
</group>
|
||||
</tab>
|
||||
<tab string="Confirmation">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<inherit model="settings" inherit="fin_settings">
|
||||
<field name="rounding_account_id" position="after">
|
||||
<separator string="Clinic"/>
|
||||
<separator string="Clinic (Patient pay by them-self)"/>
|
||||
<field name="cash_account_id" domain="[['type','!=','view']]"/>
|
||||
<field name="income_account_id" domain="[['type','!=','view']]"/>
|
||||
<!--<field name="ap_doctor_id"/>-->
|
||||
|
|
|
@ -7,6 +7,7 @@ class Cycle(Model):
|
|||
_name="clinic.cycle"
|
||||
_string="Cycle"
|
||||
_key=["name"]
|
||||
_multi_company=True
|
||||
|
||||
def _get_duration(self,ids,context={}):
|
||||
res={}
|
||||
|
|
|
@ -8,6 +8,7 @@ class CycleItem(Model):
|
|||
_name="clinic.cycle.item"
|
||||
_string="Cycle Item"
|
||||
_name_field="name"
|
||||
_multi_company=True
|
||||
|
||||
def _get_all(self,ids,context={}):
|
||||
res={}
|
||||
|
|
|
@ -114,6 +114,7 @@ class HDCase(Model):
|
|||
"invoice_option": fields.Selection([("fee_mdc_plus","Combine Fee & Medicine"),("fee_mdc_split","Split Fee & Medicine")],"Invoice:"),
|
||||
'req_fee': fields.Integer("Request Expense"),
|
||||
'hd_case_id': fields.Many2One("clinic.hd.case","HD",function="_get_all",function_multi=True), # XXX
|
||||
'company_id': fields.Many2One("company","Company"),
|
||||
}
|
||||
|
||||
def _get_number(self,context={}):
|
||||
|
@ -320,6 +321,7 @@ class HDCase(Model):
|
|||
|
||||
payment_id=get_model("account.payment").create(vals,context={"type":"in"})
|
||||
obj.write({
|
||||
'state': 'paid',
|
||||
'payment_lines': [('create',{
|
||||
'payment_id': payment_id,
|
||||
'amount': pay_amount,
|
||||
|
@ -360,32 +362,43 @@ class HDCase(Model):
|
|||
context['inv_type']='invoice'
|
||||
rmb_lines=[] #yes
|
||||
normb_lines=[] #no
|
||||
|
||||
cst=get_model('clinic.setting').browse(1)
|
||||
for line in obj.lines:
|
||||
if line.state!='draft':
|
||||
continue
|
||||
prod=line.product_id
|
||||
# 1.find in line
|
||||
account_id=line.account_id.id
|
||||
if not account_id:
|
||||
# 2.find in clinic setting
|
||||
for sline in cst.products:
|
||||
stype=sline.patient_type_id
|
||||
if stype.id==obj.patient_type_id.id and prod.id==sline.product_id.id:
|
||||
account_id=sline.account_id.id
|
||||
break
|
||||
# 3.find in product(tab accounting)
|
||||
if not account_id:
|
||||
account_id=prod.sale_account_id.id
|
||||
if not account_id:
|
||||
raise Exception("Please define sale account for product [%s] %s"%(prod.code, prod.name))
|
||||
if line.reimbursable=='yes':
|
||||
rmb_lines.append(('create',{
|
||||
"product_id": prod.id,
|
||||
"description": line.description,
|
||||
"description": line.description or "",
|
||||
"qty": line.qty,
|
||||
"uom_id": line.uom_id.id,
|
||||
"unit_price": line.price,
|
||||
"amount": line.amount,
|
||||
"unit_price": line.price or 0,
|
||||
"amount": line.amount or 0,
|
||||
'account_id': account_id,
|
||||
}))
|
||||
else:
|
||||
normb_lines.append(('create',{
|
||||
"product_id": prod.id,
|
||||
"description": line.description,
|
||||
"description": line.description or "",
|
||||
"qty": line.qty,
|
||||
"uom_id": line.uom_id.id,
|
||||
"unit_price": line.price,
|
||||
"amount": line.amount,
|
||||
"unit_price": line.price or 0,
|
||||
"amount": line.amount or 0,
|
||||
'account_id': account_id,
|
||||
}))
|
||||
|
||||
|
@ -522,11 +535,6 @@ class HDCase(Model):
|
|||
#TODO should find dlz when confirm visit
|
||||
if not obj.dialyzers:
|
||||
raise Exception("Please input dialyzer!")
|
||||
sickbed=obj.sickbed_id
|
||||
sickbed.write({
|
||||
'available': False,
|
||||
})
|
||||
|
||||
vals={
|
||||
'state': 'in_progress',
|
||||
}
|
||||
|
@ -751,7 +759,7 @@ class HDCase(Model):
|
|||
'state': 'completed',
|
||||
})
|
||||
obj.sickbed_id.write({
|
||||
'available': True,
|
||||
'state': 'available',
|
||||
})
|
||||
return {
|
||||
'next': {
|
||||
|
@ -882,6 +890,11 @@ class HDCase(Model):
|
|||
price=st_prod.price
|
||||
qty=st_prod.qty
|
||||
amt=st_prod.amount
|
||||
account_id=st_prod.account_id.id
|
||||
if not account_id:
|
||||
account_id=prod.sale_account_id.id
|
||||
if not account_id:
|
||||
raise Exception("Please define sale account for product [%s] %s"%(prod.code, prod.name))
|
||||
if not amt:
|
||||
amt=qty*price
|
||||
categ=st_prod.product_categ_id
|
||||
|
@ -894,6 +907,7 @@ class HDCase(Model):
|
|||
'qty': qty,
|
||||
'reimbursable': st_prod.reimbursable,
|
||||
'amount': amt,
|
||||
'account_id': account_id,
|
||||
}))
|
||||
# XXX need to get default
|
||||
partner=patient.type_id.contact_id
|
||||
|
@ -925,21 +939,66 @@ class HDCase(Model):
|
|||
|
||||
def write(self,ids,vals,**kw):
|
||||
obj=self.browse(ids)[0]
|
||||
vals['req_fee']=0
|
||||
total_amt=0
|
||||
due_amt=0
|
||||
if 'lines' in vals.keys():
|
||||
#for mode, line_ids, line_vals in vals['lines']:
|
||||
for line in vals['lines']:
|
||||
mode=line[0]
|
||||
if mode=='create':
|
||||
line_vals=line[1]
|
||||
else:
|
||||
line_vals=line[2]
|
||||
if line_vals['reimbursable']=='no':
|
||||
vals['req_fee']=1 # to show button pay
|
||||
amt=line_vals.get("amount",0)
|
||||
total_amt+=amt
|
||||
rmb=line_vals.get("reimbursable","no")
|
||||
print('rmb ', rmb)
|
||||
if rmb=='no':
|
||||
due_amt+=amt
|
||||
else:
|
||||
for line in obj.lines:
|
||||
amt=line.amount or 0
|
||||
total_amt+=amt
|
||||
print('>> rmb ', line.reimbursable)
|
||||
if line.reimbursable=='no':
|
||||
due_amt+=amt
|
||||
pay_amt=0
|
||||
if 'payment_lines' in vals.keys():
|
||||
for line in vals['payment_lines']:
|
||||
mode=line[0]
|
||||
if mode=='create':
|
||||
line_vals=line[1]
|
||||
else:
|
||||
line_vals=line[2]
|
||||
pay_amt+=line_vals.get("amount",0)
|
||||
for pline in obj.payment_lines:
|
||||
pay_amt+=pline.amount or 0
|
||||
due_amt-=pay_amt
|
||||
|
||||
vals['req_fee']=0
|
||||
print('due_amt ', due_amt)
|
||||
if due_amt<=0:
|
||||
vals['req_fee']=1
|
||||
elif due_amt>0:
|
||||
vals['req_fee']=1
|
||||
|
||||
#if obj.state=='completed':
|
||||
#if pay_amt==0:
|
||||
#vals['req_fee']=0 # to hide button pay
|
||||
#elif pay_amt==total_amt:
|
||||
#vals['req_fee']=1 # to show button pay
|
||||
#elif pay_amt<total_amt:
|
||||
#vals['req_fee']=1 # to show button pay
|
||||
|
||||
if 'sickbed_id' in vals.keys():
|
||||
if vals['sickbed_id']!=obj.sickbed_id.id and obj.state!='draft':
|
||||
if obj.sickbed_id:
|
||||
obj.sickbed_id.write({
|
||||
'state': 'available',
|
||||
})
|
||||
sb=get_model("clinic.sickbed").browse(vals['sickbed_id'])
|
||||
sb.write({
|
||||
'state': 'not_available',
|
||||
})
|
||||
super().write(ids,vals,**kw)
|
||||
|
||||
def approve(self,ids,context={}):
|
||||
|
@ -957,4 +1016,5 @@ class HDCase(Model):
|
|||
}
|
||||
|
||||
|
||||
|
||||
HDCase.register()
|
||||
|
|
|
@ -14,6 +14,7 @@ class Hdcaseline(Model):
|
|||
"product_categ_id": fields.Many2One("product.categ","Category",domain=[['expense','=',True]]),
|
||||
'reimbursable': fields.Selection([['yes','Yes'],['no','No']],"Reimbursable"),
|
||||
'state': fields.Selection([['draft','Draft'],['done','Done']],"State"),
|
||||
"account_id": fields.Many2One("account.account","Account"),
|
||||
}
|
||||
|
||||
_defaults={
|
||||
|
|
|
@ -45,13 +45,14 @@ class HDCasePayment(Model):
|
|||
hd_case.make_payment(context=context)
|
||||
if obj.complete:
|
||||
hd_case.create_cycle_item()
|
||||
if obj.pay_amount==hd_case.total_amount: #XXX
|
||||
if obj.pay_amount==obj.to_pay:
|
||||
vals={
|
||||
'state': 'paid',
|
||||
}
|
||||
else:
|
||||
vals={
|
||||
'state': 'waiting_payment',
|
||||
#'req_fee': 1, # show pay button
|
||||
}
|
||||
hd_case.write(vals)
|
||||
hd_case.do_expense()
|
||||
|
@ -74,11 +75,11 @@ class HDCasePayment(Model):
|
|||
hd_case.make_invoices(context=context)
|
||||
hd_case.post_invoices()
|
||||
hd_case.create_cycle_item()
|
||||
if obj.pay_amount==obj.to_pay:
|
||||
vals={
|
||||
'state': 'paid',
|
||||
}
|
||||
hd_case.write(vals)
|
||||
#if obj.pay_amount==obj.to_pay:
|
||||
#vals={
|
||||
#'state': 'paid',
|
||||
#}
|
||||
#hd_case.write(vals)
|
||||
hd_case.do_expense()
|
||||
return {
|
||||
'next': {
|
||||
|
|
|
@ -136,8 +136,8 @@ class ImportPayment(Model):
|
|||
def get_all_patient(self):
|
||||
print("getting patient")
|
||||
patients={}
|
||||
for pt in get_model("clinic.patient").search_read([[]],['name','hn','hn_num']):
|
||||
key=pt['hn_num']
|
||||
for pt in get_model("clinic.patient").search_read([[]],['name','hn','hn_no']):
|
||||
key=pt['hn_no']
|
||||
patients[key]={
|
||||
'id': pt['id'],
|
||||
'name': pt['name'],
|
||||
|
@ -157,7 +157,7 @@ class ImportPayment(Model):
|
|||
}
|
||||
return hd_cases
|
||||
|
||||
def get_hn_num(self,hn=""):
|
||||
def get_hn_no(self,hn=""):
|
||||
return ''.join(h for h in hn if h.isdigit())
|
||||
|
||||
def import_payment_pks(self,ids,context={}):
|
||||
|
@ -201,8 +201,8 @@ class ImportPayment(Model):
|
|||
def get_invoice_epobills(self,lines):
|
||||
for line in lines:
|
||||
hn=line.get('hn',"")
|
||||
hn_num=self.get_hn_num(hn)
|
||||
print(hn_num)
|
||||
hn_no=self.get_hn_no(hn)
|
||||
print(hn_no)
|
||||
return lines
|
||||
|
||||
def get_invoice_hdbills(self,lines):
|
||||
|
@ -211,8 +211,8 @@ class ImportPayment(Model):
|
|||
invno=line.get("invno")
|
||||
hdrate=float(line.get("hdrate","0"))
|
||||
hn=line.get('hn',"")
|
||||
hn_num=self.get_hn_num(hn)
|
||||
print(hn_num)
|
||||
hn_no=self.get_hn_no(hn)
|
||||
print(hn_no)
|
||||
return lines
|
||||
|
||||
def import_payment_uc(self,ids,context={}):
|
||||
|
|
|
@ -41,7 +41,7 @@ class ImportUC(Model):
|
|||
}
|
||||
patients={}
|
||||
for p in get_model("clinic.patient").search_browse([]):
|
||||
patients[p.hn_num]=p.name
|
||||
patients[p.hn_no]=p.name
|
||||
|
||||
if obj.type_id.code=='U':
|
||||
fname=obj.file
|
||||
|
@ -52,10 +52,10 @@ class ImportUC(Model):
|
|||
epoadm=0
|
||||
for line in lines:
|
||||
hn=line.get('hn')
|
||||
hn_num=''.join(x for x in hn if x.isdigit()) #XXX
|
||||
hn_no=''.join(x for x in hn if x.isdigit()) #XXX
|
||||
epoadm=line.get("epoadm")
|
||||
lines2=line.get("epos").get('EPO',[])
|
||||
name='%s %s'%(hn,patients.get(hn_num,""))
|
||||
name='%s %s'%(hn,patients.get(hn_no,""))
|
||||
for l2 in lines2:
|
||||
if type(l2)==type(''):
|
||||
continue
|
||||
|
|
|
@ -67,9 +67,9 @@ class ImportVisit(Model):
|
|||
raise Exception("Wrong File")
|
||||
cycles=[(c['id'],'%s:00'%c['time_start'],'%s:00'%c['time_stop']) for c in get_model("clinic.cycle").search_read([[]],['time_start','time_stop'])]
|
||||
patients={}
|
||||
field_name=['name','hn','hn_num','department_id','doctor_id']
|
||||
field_name=['name','hn','hn_no','department_id','doctor_id']
|
||||
for pt in get_model("clinic.patient").search_read([[]],field_name):
|
||||
hn_num=pt['hn_num']
|
||||
hn_no=pt['hn_no']
|
||||
dp=pt['department_id']
|
||||
department_id=None
|
||||
if dp:
|
||||
|
@ -79,7 +79,7 @@ class ImportVisit(Model):
|
|||
if doctor:
|
||||
doctor_id=doctor[0]
|
||||
|
||||
patients[hn_num]={
|
||||
patients[hn_no]={
|
||||
'id': pt['id'],
|
||||
'hn': pt['hn'],
|
||||
'department_id': department_id,
|
||||
|
@ -93,13 +93,13 @@ class ImportVisit(Model):
|
|||
return ''.join(h for h in hn if h.isdigit())
|
||||
|
||||
for line in lines:
|
||||
hn_num=line.get('hn')
|
||||
hn=get_hn(hn_num)
|
||||
hn_no=line.get('hn')
|
||||
hn=get_hn(hn_no)
|
||||
date,time=line.get("dttran").split("T")
|
||||
patient=patients.get(hn)
|
||||
if not patient:
|
||||
fail_qty+=1
|
||||
msg+='%s,%s,%s\n'%(hn_num,'','Not found hn')
|
||||
msg+='%s,%s,%s\n'%(hn_no,'','Not found hn')
|
||||
continue
|
||||
vals={
|
||||
'patient_id': patient['id'],
|
||||
|
@ -125,7 +125,7 @@ class ImportVisit(Model):
|
|||
if not visit_ids:
|
||||
visit_id=get_model('clinic.visit').create(vals)
|
||||
done_qty+=1
|
||||
msg+='%s,%s,%s\n'%(hn_num,patient['name'],'Create visit %s'%date)
|
||||
msg+='%s,%s,%s\n'%(hn_no,patient['name'],'Create visit %s'%date)
|
||||
print('create visit %s'%visit_id)
|
||||
|
||||
obj.write({
|
||||
|
|
|
@ -32,7 +32,7 @@ class Patient(Model):
|
|||
res[obj.id]=cycle_id
|
||||
return res
|
||||
|
||||
def _get_hn_num(self,ids,context={}):
|
||||
def _get_hn_no(self,ids,context={}):
|
||||
res={}
|
||||
for obj in self.browse(ids):
|
||||
hn=''.join(x for x in (obj.hn or "") if x.isdigit())
|
||||
|
@ -42,9 +42,9 @@ class Patient(Model):
|
|||
_fields={
|
||||
'type_id': fields.Many2One("clinic.patient.type","Type",search=True,required=True),
|
||||
"number": fields.Char("Number",required=True,search=True),
|
||||
"trt_number": fields.Char("TRT. NO",search=True),
|
||||
"trt_no": fields.Char("TRT. No",search=True),
|
||||
"hn_no": fields.Char("HN",function="_get_hn_no"),
|
||||
"hn": fields.Char("REF/HN",search=True),
|
||||
"hn_num": fields.Char("HN Numeric",function="_get_hn_num"),
|
||||
"name": fields.Char("Name",required=True,search=True),
|
||||
"reg_date": fields.Date("Register Date",required=False,search=True),
|
||||
"birthday": fields.Date("Birthday",required=False,search=True),
|
||||
|
@ -52,7 +52,7 @@ class Patient(Model):
|
|||
"mobile": fields.Char("Mobile",required=False,search=True),
|
||||
"job": fields.Char("Job/Position"),
|
||||
"age": fields.Integer("Age", function="_get_age"),
|
||||
'picture': fields.File("Picture"),
|
||||
'image': fields.File("Image"),
|
||||
'email': fields.Char("Email"),
|
||||
"weight": fields.Float("Weight (cm)"),
|
||||
"height": fields.Float("Height (Kg)"),
|
||||
|
@ -223,27 +223,31 @@ class Patient(Model):
|
|||
print('remove visit auto %s'%visit_ids)
|
||||
super().write(ids,vals,**kw)
|
||||
|
||||
def _name_get(self,ids,context={}):
|
||||
def name_get(self,ids,context={}):
|
||||
vals=[]
|
||||
for obj in self.browse(ids):
|
||||
name="%s %s %s"%(obj.number,obj.name, obj.hn)
|
||||
#name="%s [%s]"%(obj.name, obj.hn_no)
|
||||
name=obj.name or ''
|
||||
if obj.hn_no:
|
||||
name+=" (HN: %s)"%obj.hn_no
|
||||
vals.append((obj.id,name))
|
||||
return vals
|
||||
|
||||
def name_search(self,name,domain=None,context={},**kw):
|
||||
dom=[["number","ilike","%"+name+"%"]]
|
||||
if domain:
|
||||
dom=[dom,domain]
|
||||
ids1=self.search(dom)
|
||||
dom=[["name","ilike","%"+name+"%"]]
|
||||
if domain:
|
||||
dom=[dom,domain]
|
||||
ids2=self.search(dom)
|
||||
ids1=self.search(dom)
|
||||
dom=[["hn","ilike","%"+name+"%"]]
|
||||
if domain:
|
||||
dom=[dom,domain]
|
||||
ids3=self.search(dom)
|
||||
ids=list(set(ids1+ids2+ids3))
|
||||
ids2=self.search(dom)
|
||||
ids=list(set(ids1+ids2))
|
||||
#dom=[["hn","ilike","%"+name+"%"]]
|
||||
#if domain:
|
||||
#dom=[dom,domain]
|
||||
#ids3=self.search(dom)
|
||||
#ids=list(set(ids1+ids2+ids3))
|
||||
return self.name_get(ids,context=context)
|
||||
|
||||
def simple_address(self,ids,context={}):
|
||||
|
|
|
@ -1,19 +1,23 @@
|
|||
from netforce.model import Model, fields, get_model
|
||||
from netforce.access import get_active_company
|
||||
|
||||
class PatientType(Model):
|
||||
_name="clinic.patient.type"
|
||||
_string="Patient Type"
|
||||
_key=['code','name']
|
||||
|
||||
_multi_company=True
|
||||
_fields={
|
||||
"name": fields.Char("Name",required=True,search=True),
|
||||
"code": fields.Char("Code",required=True,search=True),
|
||||
'contact_id': fields.Many2One("partner","Contact",domain=[['type','=','org']],search=True),
|
||||
'default': fields.Boolean("Default"),
|
||||
'company_id': fields.Many2One("company","Company"),
|
||||
}
|
||||
|
||||
_defaults={
|
||||
'defaults': False,
|
||||
'company_id': lambda *a: get_active_company(),
|
||||
|
||||
}
|
||||
|
||||
def new_contact(self,ids,context={}):
|
||||
|
|
|
@ -101,7 +101,7 @@ class ReportPaymentMatching(Model):
|
|||
patient=exp.patient_id
|
||||
if obj.type_id.code=='S':
|
||||
key='%s:%s:%s:%s:%s'%(
|
||||
patient.hn_num,
|
||||
patient.hn_no,
|
||||
exp.date,
|
||||
exp.fee_amt and exp.fee_amt or 0,
|
||||
exp.srv_amt and exp.srv_amt or 0,
|
||||
|
@ -109,7 +109,7 @@ class ReportPaymentMatching(Model):
|
|||
)
|
||||
else:
|
||||
key='%s:%s:%s'%(
|
||||
patient.hn_num,
|
||||
patient.hn_no,
|
||||
exp.date,
|
||||
exp.fee_amt and exp.fee_amt or 0,
|
||||
)
|
||||
|
|
|
@ -124,24 +124,25 @@ class ScheduleCopy(Model):
|
|||
get_model("clinic.schedule").delete([eid])
|
||||
print("delete ", exist_date)
|
||||
count+=7 # looking for next week if dow is not exist
|
||||
print("x ", schedules)
|
||||
if date not in [v['date'] for k,v in exist_date.items()]+[schedule_date]:
|
||||
schedules.append({
|
||||
'date': date,
|
||||
'lines': lines,
|
||||
})
|
||||
else:
|
||||
print("y ", schedules)
|
||||
# copy to exist nurse
|
||||
schedules=get_model("clinic.schedule").search_browse([['date','=',date]])
|
||||
schds=get_model("clinic.schedule").search_browse([['date','=',date]])
|
||||
print("update lines ", lines)
|
||||
if schedules and lines:
|
||||
schd=schedules[0]
|
||||
if schds and lines:
|
||||
schd=schds[0]
|
||||
for line in schd.lines:
|
||||
line.delete()
|
||||
schd.write({'lines': lines})
|
||||
|
||||
start_date=tmp
|
||||
|
||||
|
||||
for sc in schedules:
|
||||
date=sc['date']
|
||||
sc['time_start']='%s %s'%(date,time_start)
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
from netforce.model import Model, fields, get_model
|
||||
from netforce.model import Model, fields
|
||||
from netforce.access import get_active_company
|
||||
|
||||
class SettingProduct(Model):
|
||||
_name="clinic.setting.product"
|
||||
_string="Setting Product"
|
||||
_multi_company=True
|
||||
|
||||
_fields={
|
||||
"setting_id": fields.Many2One("clinic.setting","Setting"),
|
||||
|
@ -15,11 +17,12 @@ class SettingProduct(Model):
|
|||
'price': fields.Float("Price"),
|
||||
'qty': fields.Integer("Qty"),
|
||||
'amount': fields.Float("Amount"),
|
||||
"account_id": fields.Many2One("account.account","Account",multi_company=True),
|
||||
'company_id': fields.Many2One("company","Company"),
|
||||
}
|
||||
|
||||
_defaults={
|
||||
#'type': 'fee',
|
||||
#'patient_type': 'sc',
|
||||
"company_id": lambda *a: get_active_company(),
|
||||
'qty': 1,
|
||||
'reimbursable': 'no',
|
||||
}
|
||||
|
|
|
@ -1,17 +1,43 @@
|
|||
from netforce.model import Model, fields, get_model
|
||||
from netforce.access import get_active_company
|
||||
|
||||
class SickBed(Model):
|
||||
_name="clinic.sickbed"
|
||||
_string="Sickbed"
|
||||
|
||||
def _get_all(self,ids,context={}):
|
||||
res={}
|
||||
for obj in self.browse(ids):
|
||||
hd_case=None
|
||||
patient_id=None
|
||||
image=None
|
||||
date=''
|
||||
for hd_case in sorted(obj.hd_cases, key=lambda a: a.id):
|
||||
patient=hd_case.patient_id
|
||||
patient_id=patient.id
|
||||
image=patient.image
|
||||
date=hd_case.date
|
||||
res[obj.id]={
|
||||
'patient_id': patient_id,
|
||||
'image': image,
|
||||
'date': date,
|
||||
}
|
||||
return res
|
||||
|
||||
_fields={
|
||||
"name": fields.Char("Name",required=True,search=True),
|
||||
"available": fields.Boolean("Available"),
|
||||
'hd_cases': fields.One2Many("clinic.hd.case",'sickbed_id','HDCases'),
|
||||
'company_id': fields.Many2One("company","Company"),
|
||||
'patient_id': fields.Many2One("clinic.patient","Lasted Patient",function="_get_all",function_multi=True),
|
||||
'image': fields.File("Image",function="_get_all",function_multi=True),
|
||||
'date': fields.Date("Date",function="_get_all",function_multi=True),
|
||||
"state": fields.Selection([("available","Available"),("not_available","Not Available")],"Status"),
|
||||
}
|
||||
|
||||
_defaults={
|
||||
'available': True,
|
||||
"company_id": lambda *a: get_active_company(),
|
||||
}
|
||||
|
||||
def copy(self,ids,context={}):
|
||||
|
|
|
@ -84,7 +84,7 @@ class Staff(Model):
|
|||
"doctor_visits": fields.One2Many("clinic.visit","doctor_id","Visits"),
|
||||
"company_id": fields.Many2One("company","Company"),
|
||||
"user_id": fields.Many2One("base.user","User"),
|
||||
'picture': fields.File("Picture"),
|
||||
'image': fields.File("Image"),
|
||||
'note': fields.Text("Note"),
|
||||
'categ_id': fields.Many2One("clinic.staff.categ", "Category"),
|
||||
'level_id': fields.Many2One("clinic.staff.level", "Level", function="_get_level"),
|
||||
|
|
|
@ -5,6 +5,7 @@ class StaffCategory(Model):
|
|||
_name="clinic.staff.categ"
|
||||
_string="Staff Category"
|
||||
_key=["name"]
|
||||
_multi_company=True
|
||||
|
||||
_fields={
|
||||
"name": fields.Char("Name",required=True,search=True),
|
||||
|
|
|
@ -5,12 +5,14 @@ class StaffLevel(Model):
|
|||
_name="clinic.staff.level"
|
||||
_string="Staff Level"
|
||||
_key=["name"]
|
||||
_multi_company=True
|
||||
|
||||
_fields={
|
||||
"name": fields.Char("Name",required=True,search=True),
|
||||
'description': fields.Text("Description", search=True),
|
||||
'sequence': fields.Integer("Sequence"),
|
||||
"type": fields.Selection([('staff','Staff'),("doctor","Doctor"),("nurse","Nurse")],"Staff Type",required=True, search=True),
|
||||
'company_id': fields.Many2One("company","Company"),
|
||||
}
|
||||
|
||||
_defaults={
|
||||
|
|
|
@ -4,6 +4,7 @@ from netforce.access import get_active_company
|
|||
class StaffRotation(Model):
|
||||
_name="clinic.staff.rotation"
|
||||
_string="Staff Rotation"
|
||||
_multi_company=True
|
||||
|
||||
_fields={
|
||||
"staff_id": fields.Many2One("clinic.staff","Staff", search=True),
|
||||
|
|
|
@ -19,11 +19,16 @@ class Visit(Model):
|
|||
res[obj.id]=datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
return res
|
||||
|
||||
def _get_color(self,ids,context={}):
|
||||
def _get_all(self,ids,context={}):
|
||||
res={}
|
||||
for obj in self.browse(ids):
|
||||
color=get_model("clinic.cycle").browse(obj.cycle_id.id).color
|
||||
res[obj.id]=color
|
||||
cycle=obj.cycle_id
|
||||
color=cycle.color
|
||||
res[obj.id]={
|
||||
'cycle_color': color,
|
||||
'sequence': '%s-%s'%(obj.time_start[0:10],cycle.sequence), #date-sequence
|
||||
'visit_date': obj.time_start[0:10]
|
||||
}
|
||||
return res
|
||||
|
||||
_fields={
|
||||
|
@ -38,13 +43,13 @@ class Visit(Model):
|
|||
"company_id": fields.Many2One("company","Company"),
|
||||
'hd_cases': fields.One2Many('clinic.hd.case','visit_id',"HD Cases",readonly=True),
|
||||
"cycle_id": fields.Many2One("clinic.cycle","Cycle"),
|
||||
'cycle_color': fields.Char('Color',function="_get_color"),
|
||||
"state": fields.Selection([["draft","Draft"],['pending','Pending'],["confirmed","Confirmed"],["cancelled","Cancelled"]],"Status",required=True),
|
||||
"comments": fields.One2Many("message","related_id","Comments"),
|
||||
'visit_date': fields.Date('Visit Date'),
|
||||
'print_date': fields.Date('Print Date',function="_get_print_date"),
|
||||
'cycle_item_id': fields.Many2One("clinic.cycle.item","Cycle Item"), #XXX on_delete="cascade" -> rm visit from cycle item
|
||||
'sequence': fields.Char("Sequence"),
|
||||
'sequence': fields.Char("Sequence",function="_get_all",function_multi=True,store=True),
|
||||
'visit_date': fields.Date('Visit Date',function="_get_all",function_multi=True,store=True),
|
||||
'cycle_color': fields.Char('Color',function="_get_all",function_multi=True,store=True),
|
||||
'note': fields.Text('Note'),
|
||||
}
|
||||
|
||||
|
@ -393,15 +398,6 @@ class Visit(Model):
|
|||
'flash': 'Generate number succesfully',
|
||||
}
|
||||
|
||||
def create(self, vals,**kw):
|
||||
cycle_id=vals['cycle_id']
|
||||
cycle=get_model("clinic.cycle").browse(cycle_id)
|
||||
vals['sequence']='%s-%s'%(vals['time_start'][0:10],cycle.sequence) #date-sequence
|
||||
vals['visit_date']=vals['time_start'][0:10]
|
||||
new_id=super().create(vals,**kw)
|
||||
print('create visit ', new_id)
|
||||
return new_id
|
||||
|
||||
def cancel(self,ids,context={}):
|
||||
obj=self.browse(ids)[0]
|
||||
obj.write({
|
||||
|
@ -416,12 +412,14 @@ class Visit(Model):
|
|||
'flash': 'Visit\'s %s has been cancelled'%obj.patient_id.name
|
||||
}
|
||||
|
||||
def create(self, vals,**kw):
|
||||
new_id=super().create(vals,**kw)
|
||||
self.function_store([new_id])
|
||||
return new_id
|
||||
|
||||
def write(self,ids,vals,**kw):
|
||||
obj=self.browse(ids)[0]
|
||||
cycle=obj.cycle_id
|
||||
vals['sequence']='%s-%s'%(obj.time_start[0:10],cycle.sequence) #date-sequence
|
||||
vals['visit_date']=obj.time_start[0:10]
|
||||
super().write(ids,vals,**kw)
|
||||
self.function_store(ids)
|
||||
|
||||
def pending(self,ids,context={}):
|
||||
obj=self.browse(ids)[0]
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
=====
|
||||
- get account id by product
|
||||
-bug
|
||||
- generate schedule
|
||||
- copy nurse
|
||||
- create duplicate
|
||||
- import
|
||||
- check name
|
||||
- get account id by product -> ok
|
||||
- access right control
|
||||
|
||||
=====
|
||||
create button reset at setting
|
||||
|
|
Loading…
Reference in New Issue