prevent to duplicate enter account product/patient

conv_bal
watcha.h@almacom.co.th 2015-04-08 14:32:19 +07:00
parent b7bf99819c
commit f8521a2e16
9 changed files with 56 additions and 29 deletions

View File

@ -11,7 +11,7 @@
<header string="REPORTS"/> <header string="REPORTS"/>
<item string="HD Case Expense" action="clinic_report_account_hd_case_summary"/> <item string="HD Case Expense" action="clinic_report_account_hd_case_summary"/>
<item string="RD Shop Expense" action="clinic_report_account_shop"/> <item string="RD Shop Expense" action="clinic_report_account_shop"/>
<item string="Labor Cost" action="clinic_report_labor_cost"/> <item string="Labor Cost Overview" action="clinic_report_labor_cost"/>
<!--<item string="Labor Cost Summary" action="clinic_report_labor_cost_summary"/>--> <!--<item string="Labor Cost Summary" action="clinic_report_labor_cost_summary"/>-->
<!--<item string="Labor Cost Detail" action="clinic_report_labor_cost_detail"/>--> <!--<item string="Labor Cost Detail" action="clinic_report_labor_cost_detail"/>-->
<!--<item string="Labor Cost Sub Detail" action="clinic_report_labor_cost_sub_detail"/>--> <!--<item string="Labor Cost Sub Detail" action="clinic_report_labor_cost_sub_detail"/>-->

View File

@ -6,7 +6,7 @@
<field name="staff_id" domain='[["type","=",staff_type]]' span="2"/> <field name="staff_id" domain='[["type","=",staff_type]]' span="2"/>
<field name="branch_id" onchange="onchange_branch" span="2"/> <field name="branch_id" onchange="onchange_branch" span="2"/>
<field name="department_id" domain='[["branch_id","=",branch_id]]' span="2"/> <field name="department_id" domain='[["branch_id","=",branch_id]]' span="2"/>
<field name="categ_id" span="2"/> <field name="categ_id" domain='[["type","=","nurse"]]' span="2"/>
<field name="level_id" span="2"/> <field name="level_id" span="2"/>
<field name="only_value" span="2"/> <field name="only_value" span="2"/>
</form> </form>

View File

@ -59,7 +59,10 @@ class LaborCost(Model):
total_stcost=0.0 total_stcost=0.0
for line in obj.staff_lines: for line in obj.staff_lines:
total_stcost+=line.amount or 0.0 total_stcost+=line.amount or 0.0
#XXX total_ncost=round(total_ncost,0)
total_dcost=round(total_dcost,0)
total_stcost=round(total_stcost,0)
total_formular=round(total_formular,0)
total=total_ncost+total_dcost+total_stcost total=total_ncost+total_dcost+total_stcost
res[obj.id]={ res[obj.id]={
'var_pt': total_case, 'var_pt': total_case,
@ -69,10 +72,10 @@ class LaborCost(Model):
'var_fml3': '(%s%s)/%s'%(var_ptx,total_bstr,total_a), 'var_fml3': '(%s%s)/%s'%(var_ptx,total_bstr,total_a),
'var_x': round(var_x,2), 'var_x': round(var_x,2),
'total': total, 'total': total,
'total_formular': round(total_formular,0), 'total_formular': total_formular,
'total_ncost': round(total_ncost,0), 'total_ncost': total_ncost,
'total_nqty': total_nqty, 'total_nqty': total_nqty,
'total_dcost': round(total_dcost,0), 'total_dcost': total_dcost,
'total_dqty': total_dqty, 'total_dqty': total_dqty,
'total_stcost': total_stcost, 'total_stcost': total_stcost,
} }

View File

@ -99,7 +99,6 @@ class ReportLaborCostSummary(Model):
citems={} citems={}
print('dom ', dom) print('dom ', dom)
total_hdcase=0 total_hdcase=0
x=set()
for line in get_model("clinic.labor.cost.line").search_browse(dom): for line in get_model("clinic.labor.cost.line").search_browse(dom):
lcost=line.labor_cost_id lcost=line.labor_cost_id
citem=lcost.cycle_item_id citem=lcost.cycle_item_id
@ -245,6 +244,7 @@ class ReportLaborCostSummary(Model):
'total_lines': total_lines, 'total_lines': total_lines,
'total_hdcase': total_hdcase or 0, 'total_hdcase': total_hdcase or 0,
'total_cost': round(total_cost,0) or 0, 'total_cost': round(total_cost,0) or 0,
'staff_type': staff_type,
} }
return data return data

View File

@ -20,8 +20,16 @@ DAYS={
class ClinicSetting(Model): class ClinicSetting(Model):
_name="clinic.setting" _name="clinic.setting"
_string="Setting" _string="Setting"
_field_name="var_k"
def _get_name(self,ids,context={}):
res={}
for obj in self.browse(ids):
res[obj.id]='xxx'
return res
_fields={ _fields={
'name': fields.Char("Name", function="_get_name"),
"var_k": fields.Float("K"), "var_k": fields.Float("K"),
'signature': fields.File("Signature"), 'signature': fields.File("Signature"),
'levels': fields.One2Many("clinic.setting.level","setting_id","Levels"), 'levels': fields.One2Many("clinic.setting.level","setting_id","Levels"),
@ -152,11 +160,16 @@ class ClinicSetting(Model):
if user_id !=1: if user_id !=1:
print("Only admin!!") print("Only admin!!")
return return
path='/tmp/test' #path='/tmp/test'
self.update_pcycle(path,['ls1.csv','ls2.csv','ls3.csv']) #self.update_pcycle(path,['ls1.csv','ls2.csv','ls3.csv'])
###TODO remove douplicate patient ###TODO remove douplicate patient
###TODO remove douplicate staff ###TODO remove douplicate staff
###TODO remove douplicate visit ###TODO remove douplicate visit
obj=self.browse(ids)[0]
for ap_line in obj.account_patients:
pt=ap_line.patient_id
if not pt:
ap_line.delete()
print("Done!") print("Done!")
def multi_department(self,ids,context={}): def multi_department(self,ids,context={}):

View File

@ -7,9 +7,9 @@ class SettingAccountPatient(Model):
_fields={ _fields={
"setting_id": fields.Many2One("clinic.setting","Setting",required=True,on_delete="cascade"), "setting_id": fields.Many2One("clinic.setting","Setting",required=True,on_delete="cascade"),
"patient_id": fields.Many2One("clinic.patient","Patient",domain=[["state","=","admit"]], search=True), "patient_id": fields.Many2One("clinic.patient","Patient",domain=[["state","=","admit"]], search=True,required=True),
'partner_id': fields.Many2One("partner","Contact", search=True), 'partner_id': fields.Many2One("partner","Contact", search=True,required=True),
'type_id': fields.Many2One("clinic.patient.type","Type", search=True), 'type_id': fields.Many2One("clinic.patient.type","Type", search=True,required=True),
'hn': fields.Char("HN", search=True), 'hn': fields.Char("HN", search=True),
'card_no': fields.Char("ID Card",size=13, search=True), 'card_no': fields.Char("ID Card",size=13, search=True),
'company_id': fields.Many2One("company","Company"), 'company_id': fields.Many2One("company","Company"),
@ -18,6 +18,7 @@ class SettingAccountPatient(Model):
'setting_id': 1, 'setting_id': 1,
"company_id": lambda *a: get_active_company(), "company_id": lambda *a: get_active_company(),
} }
_sql_constraints=("clinic_setting_acc_pt_key_uniq","unique(patient_id,partner_id,type_id,hn,card_no)","account patient should be unique"),
_order="type_id,patient_id" _order="type_id,patient_id"
SettingAccountPatient.register() SettingAccountPatient.register()

View File

@ -8,20 +8,20 @@ class SettingAccountProduct(Model):
_fields={ _fields={
"setting_id": fields.Many2One("clinic.setting","Setting",required=True,on_delete="cascade"), "setting_id": fields.Many2One("clinic.setting","Setting",required=True,on_delete="cascade"),
"patient_type_id": fields.Many2One("clinic.patient.type","Patient Type",search=True), "patient_type_id": fields.Many2One("clinic.patient.type","Patient Type",search=True,required=True),
'categ_id': fields.Many2One("product.categ","Category",search=True), 'categ_id': fields.Many2One("product.categ","Category",search=True,required=True),
"product_id": fields.Many2One("product","Product",search=True), "product_id": fields.Many2One("product","Product",search=True,required=True),
"ar_credit_id": fields.Many2One("account.account","Income Credit",multi_company=True,search=True), "ar_credit_id": fields.Many2One("account.account","Income Credit",multi_company=True,search=True),
"ar_debit_id": fields.Many2One("account.account","AR Debit",multi_company=True,search=True), "ar_debit_id": fields.Many2One("account.account","AR Debit",multi_company=True,search=True),
"type": fields.Selection([("cash","Cash"),("credit","Credit")],"Type",search=True,required=True),
'company_id': fields.Many2One("company","Company"), 'company_id': fields.Many2One("company","Company"),
"type": fields.Selection([("cash","Cash"),("credit","Credit")],"Type",search=True),
} }
_defaults={ _defaults={
"company_id": lambda *a: get_active_company(), "company_id": lambda *a: get_active_company(),
'setting_id': 1, 'setting_id': 1,
} }
_sql_constraints=("clinic_setting_acc_prod_key_uniq","unique(patient_type_id,categ_id,product_id,ar_credit_id,ar_debit_id,type)","account product should be unique"),
_order="patient_type_id" _order="patient_type_id"
SettingAccountProduct.register() SettingAccountProduct.register()

View File

@ -9,7 +9,7 @@
<table class="table table-condensed table-striped"> <table class="table table-condensed table-striped">
<thead> <thead>
<th>ชั้น</th> <th>ชั้น</th>
<th style="text-align:right">จำนวน HD Case</th> <th style="text-align:right">รวม</th>
</thead> </thead>
<tbody> <tbody>
{{#each lines }} {{#each lines }}

View File

@ -20,12 +20,16 @@
<tr> <tr>
<th rowspan="2">#</th> <th rowspan="2">#</th>
<th rowspan="2">รหัส</th> <th rowspan="2">รหัส</th>
<th rowspan="2">ชื่อ-สกุล</th> {{#ifeq staff_type "nurse"}}
<th rowspan="2">ตำแหน่ง</th> <th rowspan="2">ชื่อ-สกุล</th>
<th rowspan="2">หมวดหมู่</th> <th rowspan="2">ตำแหน่ง</th>
{{#each dpts}} <th rowspan="2">หมวดหมู่</th>
<th style="text-align:right">{{name}}</th> {{else}}
{{/each}} <th rowspan="2" colspan="3">ชื่อ-สกุล</th>
{{/ifeq}}
{{#each dpts}}
<th style="text-align:right">{{name}}</th>
{{/each}}
</th> </th>
<th rowspan="2" style="text-align:right;">รวม</th> <th rowspan="2" style="text-align:right;">รวม</th>
</tr> </tr>
@ -35,11 +39,17 @@
<tr> <tr>
<td>{{no}}</th> <td>{{no}}</th>
<td>{{number}}</th> <td>{{number}}</th>
<td> {{#ifeq ../staff_type "nurse"}}
{{view "link" string=staff_name action="clinic_staff" action_options="mode=form" active_id=staff_id}} <td>
</td> {{view "link" string=staff_name action="clinic_staff" action_options="mode=form" active_id=staff_id}}
<td>{{staff_level}}</th> </td>
<td>{{categ_name}}</th> <td>{{staff_level}}</th>
<td>{{categ_name}}</th>
{{else}}
<td colspan="3">
{{view "link" string=staff_name action="clinic_staff" action_options="mode=form" active_id=staff_id}}
</td>
{{/ifeq}}
{{#each sub_lines}} {{#each sub_lines}}
<td style="text-align:right;"> <td style="text-align:right;">
<a href="#name=clinic_report_labor_cost_detail&defaults.date_from={{../../date_from}}&defaults.date_to={{../../date_to}}&defaults.staff_type={{../staff_type}}&defaults.staff_id={{../staff_id}}&defaults.department_id={{dpt_id}}">{{currency amt zero=""}}</a> <a href="#name=clinic_report_labor_cost_detail&defaults.date_from={{../../date_from}}&defaults.date_to={{../../date_to}}&defaults.staff_type={{../staff_type}}&defaults.staff_id={{../staff_id}}&defaults.department_id={{dpt_id}}">{{currency amt zero=""}}</a>