diff --git a/netforce_clinic/layouts/clinic_report_labor_cost_detail.xml b/netforce_clinic/layouts/clinic_report_labor_cost_detail.xml index 602c81f..b38bebf 100644 --- a/netforce_clinic/layouts/clinic_report_labor_cost_detail.xml +++ b/netforce_clinic/layouts/clinic_report_labor_cost_detail.xml @@ -6,4 +6,6 @@ + + diff --git a/netforce_clinic/models/report_labor_cost_daily.py b/netforce_clinic/models/report_labor_cost_daily.py index 320877d..adc7a4f 100644 --- a/netforce_clinic/models/report_labor_cost_daily.py +++ b/netforce_clinic/models/report_labor_cost_daily.py @@ -69,6 +69,8 @@ class ReportLaborCostDaily(Model): amt=line.amount or 0 if staff_type=='doctor': for hdcase in citem.hd_cases: + if hdcase.state not in ("waiting_payment","paid"): + continue doctor=hdcase.doctor_id pt_type=hdcase.patient_type_id pt=hdcase.patient_id @@ -76,6 +78,7 @@ class ReportLaborCostDaily(Model): lines.append({ 'hd_case_number': hdcase.number or '', 'hd_case_id': hdcase.id or '', + 'date': hdcase.date or '', 'no': no, 'hn': pt.number, 'patient_id': pt.id, @@ -91,6 +94,8 @@ class ReportLaborCostDaily(Model): elif staff_type=='nurse': print("nurse ") for hdcase in citem.hd_cases: + if hdcase.state not in ("waiting_payment","paid"): + continue doctor=hdcase.doctor_id pt_type=hdcase.patient_type_id pt=hdcase.patient_id @@ -98,6 +103,7 @@ class ReportLaborCostDaily(Model): 'no': no, 'cycle_item_name': citem.name or '', 'cycle_item_id': citem.id, + 'date': citem.date, 'hn': pt.number, 'patient_id': pt.id, 'patient_type_name': pt_type.name or '', diff --git a/netforce_clinic/models/report_labor_cost_detail.py b/netforce_clinic/models/report_labor_cost_detail.py index 57a6280..8c549f2 100644 --- a/netforce_clinic/models/report_labor_cost_detail.py +++ b/netforce_clinic/models/report_labor_cost_detail.py @@ -18,6 +18,8 @@ class ReportLaborCostDetail(Model): "type": fields.Selection([["doctor","Doctor"],["nurse","Nurse"],["staff","Staff"]],"Type"), 'department_id': fields.Many2One("clinic.department","Department"), 'branch_id': fields.Many2One("clinic.branch","Branch"), + 'cycle_id': fields.Many2One("clinic.cycle","Cycle"), + 'categ_id': fields.Many2One("clinic.staff.categ","Category"), } def _get_date_from(self,context={}): @@ -32,6 +34,12 @@ class ReportLaborCostDetail(Model): def default_get(self,field_names=None,context={},**kw): defaults=context.get("defaults",{}) date_from=defaults.get("date_from") + cycle_id=defaults.get("cycle_id") + if cycle_id: + cycle_id=int(cycle_id) + categ_id=defaults.get("categ_id") + if categ_id: + categ_id=int(categ_id) if not date_from: date_from=self._get_date_from() date_to=defaults.get("date_to") @@ -39,7 +47,6 @@ class ReportLaborCostDetail(Model): date_to=self._get_date_to() staff_type=defaults.get("staff_type","doctor") staff_id=int(defaults.get('staff_id', "0")) - print('defaults ', defaults) department_id=defaults.get('department_id') if department_id: department_id=int(department_id) @@ -49,15 +56,19 @@ class ReportLaborCostDetail(Model): if not branch_id and department_id: dpt=get_model('clinic.department').browse(department_id) branch_id=dpt.branch_id.id + print('defaults ', defaults) res={ 'date': time.strftime("%Y-%m-%d"), 'date_from': date_from, 'date_to': date_to, 'type': staff_type, - 'staff_id': staff_id and staff_id or None, - 'department_id': department_id and department_id or None, - 'branch_id': branch_id, + 'staff_id': staff_id or None, + 'department_id': department_id or None, + 'branch_id': branch_id or None, + 'cycle_id': cycle_id or None, + 'categ_id': categ_id or None, } + print('res ', res) return res def get_report_data(self,ids,context={}): @@ -70,6 +81,8 @@ class ReportLaborCostDetail(Model): staff_id=defaults.get("staff_id") department_id=defaults.get("department_id") branch_id=defaults.get("branch_id") + cycle_id=defaults.get("cycle_id") or None + categ_id=defaults.get("categ_id") or None dom=[] if ids: obj=self.browse(ids)[0] @@ -79,6 +92,8 @@ class ReportLaborCostDetail(Model): staff_type=obj.type department_id=obj.department_id.id branch_id=obj.branch_id.id + cycle_id=obj.cycle_id.id + categ_id=obj.categ_id.id dom.append(['date','>=',date_from]) dom.append(['date','<=',date_to]) if staff_id: @@ -89,12 +104,16 @@ class ReportLaborCostDetail(Model): dom.append(['labor_cost_id.cycle_item_id.department_id','=',department_id]) if branch_id: dom.append(['labor_cost_id.cycle_item_id.branch_id','=',branch_id]) - + if cycle_id: + dom.append(['cycle_id','=',cycle_id]) + if categ_id: + dom.append(['staff_id.categ_id','=',categ_id]) + print('dom ', dom) def replace_quote(dom=""): return dom.replace("'","\"") #prevent to load more data - if not staff_id: - return {} + #if not staff_id: + #return {} dates={} for line in get_model("clinic.labor.cost.line").search_browse(dom): lcost=line.labor_cost_id @@ -103,7 +122,8 @@ class ReportLaborCostDetail(Model): if not date: continue dpt=citem.department_id - amt=line.pay_amount or 0 #XXX + #amt=line.pay_amount or 0 #XXX + amt=line.amount or 0 #XXX staff=line.staff_id qty=0 if staff.type=='doctor': @@ -112,13 +132,14 @@ class ReportLaborCostDetail(Model): if staff.id==doctor_id: qty+=1 elif staff.type=='nurse': - qty=len(citem.hd_cases) or 0 # qty of patient + qty=citem.pt_total or 0 # qty of patient else: pass if not dates.get(date): dates[date]={ 'labor_cost_id': lcost.id, 'staff_id': staff.id, + 'staff_name': staff.name or "", 'staff_type': staff.type, dpt.name: { 'amt': 0, @@ -130,6 +151,7 @@ class ReportLaborCostDetail(Model): dates[date].update({ 'labor_cost_id': lcost.id, 'staff_id': staff.id, + 'staff_name': staff.name or '', 'staff_type': staff.type, dpt.name: { 'amt': 0, @@ -173,6 +195,7 @@ class ReportLaborCostDetail(Model): vals=dates[kdate] lvals={ 'no': no, + 'staff_name': vals.get('staff_name') or "", 'date': kdate, 'staff_type': vals.get("staff_type"), 'staff_id': vals.get("staff_id"), @@ -229,7 +252,11 @@ class ReportLaborCostDetail(Model): if staff_id: staff=get_model("clinic.staff").browse(staff_id) staff_name=staff.name or '' + show_name=True + if staff_id: + show_name=False data={ + 'show_name': show_name, 'staff_name': staff_name, 'staff_id': staff_id, 'staff_type': staff_type, @@ -244,6 +271,7 @@ class ReportLaborCostDetail(Model): 'dpt_lines': dpt_lines, 'show_all': show_count <=1 and True or False, } + print('.... ', data['show_name']) return data def onchange_date(self,context={}): diff --git a/netforce_clinic/templates/report_labor_cost_daily.hbs b/netforce_clinic/templates/report_labor_cost_daily.hbs index 6c0ac99..0c06db1 100644 --- a/netforce_clinic/templates/report_labor_cost_daily.hbs +++ b/netforce_clinic/templates/report_labor_cost_daily.hbs @@ -8,13 +8,13 @@ HDCase {{/ifeq}} {{#ifeq staff_type "nurse"}} - Cycle Item + Date {{/ifeq}} + Cycle + Department HN Patient Type - Cycle - Department @@ -28,14 +28,14 @@ {{/ifeq}} {{#ifeq ../staff_type "nurse"}} - {{view "link" string=cycle_item_name action="clinic_cycle_item" action_options="mode=form" active_id=cycle_item_id}} + {{view "link" string=date action="clinic_cycle_item" action_options="mode=form" active_id=cycle_item_id}} {{/ifeq}} + {{cycle_name}} + {{dpt_name}} {{hn}} {{patient_name}} {{patient_type_name}} - {{cycle_name}} - {{dpt_name}} {{/each}} diff --git a/netforce_clinic/templates/report_labor_cost_detail.hbs b/netforce_clinic/templates/report_labor_cost_detail.hbs index 381e4a7..3f6ac8e 100644 --- a/netforce_clinic/templates/report_labor_cost_detail.hbs +++ b/netforce_clinic/templates/report_labor_cost_detail.hbs @@ -5,7 +5,9 @@ - + {{#if ../show_name}} + + {{/if}} {{#if show_all}} {{comp_name}} @@ -14,10 +16,14 @@ {{/if}} + # วันที่ + {{#if ../show_name}} + Staff + {{/if}} {{#each dpts}} {{#if show_link}} @@ -38,6 +44,9 @@ + {{#if ../show_name}} + + {{/if}} {{#each dpts}} {{qty_text}} @@ -54,6 +63,11 @@ {{date}} + {{#if ../show_name}} + + {{staff_name}} + + {{/if}} {{#each sub_lines}} {{currency qty zero=""}} @@ -74,6 +88,9 @@ รวม + {{#if show_name}} + + {{/if}} {{#each dpt_lines}} {{qty}} {{currency amt zero=""}}