From c93b40dfc871e6354a75552a36ccbc937a4e422b Mon Sep 17 00:00:00 2001 From: "watcha.h@almacom.co.th" Date: Sun, 21 Jun 2015 19:20:12 +0700 Subject: [PATCH] reformat report --- netforce_clinic/models/labor_cost.py | 2 +- netforce_clinic/models/report_labor_cost.py | 39 +++++++++-------- .../models/report_labor_cost_summary.py | 41 ++++++++++++++++-- .../reports/report_labor_cost.xlsx | Bin 6817 -> 7369 bytes .../reports/report_labor_cost_summary.xlsx | Bin 6900 -> 7370 bytes .../templates/report_labor_cost.hbs | 2 +- 6 files changed, 62 insertions(+), 22 deletions(-) diff --git a/netforce_clinic/models/labor_cost.py b/netforce_clinic/models/labor_cost.py index 61a8f69..8606871 100644 --- a/netforce_clinic/models/labor_cost.py +++ b/netforce_clinic/models/labor_cost.py @@ -142,7 +142,7 @@ class LaborCost(Model): nurse=line.nurse_id level=line.level_id or nurse.level_id if not level: - raise Exception("Please specify level for %s"%nurse.name) + raise Exception("Please specify level %s for %s"%(nurse.name,item.name)) levels[level.id]['total']+=1 st_levels={} diff --git a/netforce_clinic/models/report_labor_cost.py b/netforce_clinic/models/report_labor_cost.py index 2cf78f4..40dccc6 100644 --- a/netforce_clinic/models/report_labor_cost.py +++ b/netforce_clinic/models/report_labor_cost.py @@ -216,8 +216,7 @@ class ReportLaborCost(Model): for categ_name,vals in ctdata.items(): amount=vals['amount'] or 0 categ_id=vals['categ_id'] - total_amount+=amount - ctlines.append({ + ct_vals={ 'name': categ_name, 'amount': round(amount,0), 'branch_id': branch_id, @@ -225,7 +224,9 @@ class ReportLaborCost(Model): 'department_id': department_id, 'staff_type': 'nurse', 'cycle_id': cycle_id, - }) + } + total_amount+=ct_vals['amount'] + ctlines.append(ct_vals) ctlines.append({ 'name': 'รวม', 'amount': round(total_amount,0), @@ -354,16 +355,28 @@ class ReportLaborCost(Model): nlines[-1]['cost']+=nline['cost'] or 0 nlines[-1]['total']+=nline['total'] or 0 - def conv2line(keys=[],lines=[]): + def con2float(r): + if type(r)==type(''): + return r + return "{0:,.2f}".format(r) + + def v2h(keys=[],lines=[]): lines2=[] for key in keys: no=0 - vals={} + vals={'desc': False} + if key=='name': + vals['desc']=True for line in lines: - vals[no]=line[key] + vals[no]=con2float(line[key]) no+=1 lines2.append(vals) return lines2 + + def reformat(lines=[]): + for line in lines: + line['amount']=con2float(line['amount']) + return lines data={ 'company_name': '%s %s' % (company.name or "", sub_name), @@ -372,25 +385,17 @@ class ReportLaborCost(Model): 'date_to': date_to, 'lines': lines, 'dlines': dlines, - 'dlines2': conv2line(['name','qty','qty2','total_qty','cost'],dlines), + 'dlines2': v2h(['name','qty','qty2','total_qty','cost'],dlines), 'nlines': nlines, - 'nlines2': [], + 'nlines2': v2h(['name','qty','cost'],nlines), 'ctlines': ctlines, + 'ctlines2': reformat(ctlines), 'total_hdcase': total_hdcase, 'branch_id': branch_id, 'department_id': department_id, 'show_detail': show_detail, 'report_type': report_type, } - - for key in ('name', 'qty', 'cost'): - no=0 - vals={} - for nline in data['nlines']: - vals[no]=nline[key] - no+=1 - data['nlines2'].append(vals) - return data def onchange_date(self,context={}): diff --git a/netforce_clinic/models/report_labor_cost_summary.py b/netforce_clinic/models/report_labor_cost_summary.py index 79343b5..c3d2cad 100644 --- a/netforce_clinic/models/report_labor_cost_summary.py +++ b/netforce_clinic/models/report_labor_cost_summary.py @@ -115,9 +115,14 @@ class ReportLaborCostSummary(Model): dom.append(['labor_cost_id.cycle_item_id.cycle_id','=',cycle_id]) staffs={} citems={} + + def int2ths(r): + if type(r)==type(''): + return r + return "{0:,.0f}".format(r) + print('--> dom: ', dom) total_hdcase=0 - for line in get_model("clinic.labor.cost.line").search_browse(dom): lcost=line.labor_cost_id citem=lcost.cycle_item_id @@ -263,6 +268,7 @@ class ReportLaborCostSummary(Model): line['no']=no nlines.append(line) no+=1 + data={ 'title': title, 'date_from': date_from, @@ -272,12 +278,41 @@ class ReportLaborCostSummary(Model): 'comp_span': len(dpts), 'lines': nlines, 'total_lines': total_lines, - 'total_hdcase': total_hdcase or 0, + 'total_hdcase': int2ths(total_hdcase) or 0, 'total_cost': round(total_cost,0) or 0, 'staff_type': staff_type, 'branch_id': branch_id, 'department_id': department_id, - } + 'dpts_txt': [{0: '#', 1: 'รหัส', 2: 'ชื่อ-สกุล',}], + } + items=[] + vals={} + no=0 + dpt_len=len(data['dpts_txt'][0]) + for dpt in dpts: + data['dpts_txt'][0][no+dpt_len]=dpt['name'] + vals[no]=0 + no+=1 + count=1 + for i in range(len(data['lines'])): + line=data['lines'][i] + item_vals=vals.copy() + item_vals['no']=count + item_vals['number']=line['number'] + item_vals['staff_name']=line['staff_name'] + no=0 + for sub_line in line['sub_lines']: + item_vals['item%s'%no]=sub_line['amt'] + no+=1 + item_vals['total']=line['total'] + items.append(item_vals) + count+=1 + data['items']=items + data['total_lines_txt']=[{}] + no=0 + for tline in data['total_lines']: + data['total_lines_txt'][0]['item%s'%no]=tline['amt'] + no+=1 return data def onchange_date(self,context={}): diff --git a/netforce_clinic/reports/report_labor_cost.xlsx b/netforce_clinic/reports/report_labor_cost.xlsx index 4f8f60444f0286fb0243110f63b440c9f141f8f9..7afae3d207abad87bd6444ead0d76ce437af0006 100644 GIT binary patch delta 3021 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 delta 2489 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 literal 6900 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 {{name}} - {{currency amount}} + {{amount}} {{/each}}