diff --git a/netforce_clinic/actions/clinic_print_wizard_labor_cost.xml b/netforce_clinic/actions/clinic_print_wizard_labor_cost.xml
new file mode 100644
index 0000000..20ba3f9
--- /dev/null
+++ b/netforce_clinic/actions/clinic_print_wizard_labor_cost.xml
@@ -0,0 +1,6 @@
+
+ Report Wizard Labor Cost
+ multi_view
+ clinic.print.wizard.labor.cost
+ clinic_menu
+
diff --git a/netforce_clinic/layouts/clinic_print_wizard_labor_cost_form.xml b/netforce_clinic/layouts/clinic_print_wizard_labor_cost_form.xml
new file mode 100644
index 0000000..28dcc21
--- /dev/null
+++ b/netforce_clinic/layouts/clinic_print_wizard_labor_cost_form.xml
@@ -0,0 +1,25 @@
+
diff --git a/netforce_clinic/layouts/clinic_print_wizard_labor_cost_list.xml b/netforce_clinic/layouts/clinic_print_wizard_labor_cost_list.xml
new file mode 100644
index 0000000..9c9a544
--- /dev/null
+++ b/netforce_clinic/layouts/clinic_print_wizard_labor_cost_list.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/netforce_clinic/layouts/clinic_report_wizard_labor_cost.xml b/netforce_clinic/layouts/clinic_report_wizard_labor_cost.xml
index 70b2313..0a6b798 100644
--- a/netforce_clinic/layouts/clinic_report_wizard_labor_cost.xml
+++ b/netforce_clinic/layouts/clinic_report_wizard_labor_cost.xml
@@ -13,6 +13,6 @@
-
+
diff --git a/netforce_clinic/models/__init__.py b/netforce_clinic/models/__init__.py
index 8563616..09051b3 100644
--- a/netforce_clinic/models/__init__.py
+++ b/netforce_clinic/models/__init__.py
@@ -153,3 +153,4 @@ from . import report_wizard_labor_cost
#revise
from . import patient_move
from . import report_hdcase_summary
+from . import print_wizard_labor_cost
diff --git a/netforce_clinic/models/print_wizard_labor_cost.py b/netforce_clinic/models/print_wizard_labor_cost.py
new file mode 100644
index 0000000..3fa8116
--- /dev/null
+++ b/netforce_clinic/models/print_wizard_labor_cost.py
@@ -0,0 +1,178 @@
+import os
+import time
+import urllib
+from calendar import monthrange
+
+from netforce.model import Model,fields,get_model
+from netforce.database import get_active_db, get_connection
+from netforce.access import get_active_user, get_active_company, set_active_user
+import netforce.config as config
+
+class PrintLaborCost(Model):
+ _name="clinic.print.wizard.labor.cost"
+ _string="Report Wizard Labor Cost"
+ _audit_log=True
+
+ _fields={
+ "date": fields.Date("Month"),
+ "period_id": fields.Many2One("clinic.period.line", "Period", search=True),
+ "date_from": fields.Date("From", required=True),
+ "date_to": fields.Date("To", required=True),
+ "cycle_id": fields.Many2One("clinic.cycle","Cycle"),
+ "branch_id": fields.Many2One("clinic.branch","Branch"),
+ "department_id": fields.Many2One("clinic.department","Department"),
+ "staff_type": fields.Selection([["doctor","Doctor"],["nurse","Nurse"]],"Type"),
+ 'staff_id': fields.Many2One("clinic.staff","Staff"),
+ 'state': fields.Selection([['draft','Draft'],['waiting_doc','Waiting Document'],['done','Done']],'State',search=True),
+ 'company_id': fields.Many2One('company','Company'),
+ 'file_pdf1': fields.File("File_Labor_cost_sunmary"),
+ 'file_pdf2': fields.File("File_Labor_cost_details"),
+ 'file_pdf3': fields.File("File_Labor_cost_Sub_Deatils(Doctor)"),
+ }
+
+ def _get_date_from(self,context={}):
+ year,month,day=time.strftime("%Y-%m-%d").split("-")
+ #return '%s-%s-01'%(year,month)
+ return '%s-%s-%s'%(year,month,day)
+
+ def _get_date_to(self,context={}):
+ year,month,day=time.strftime("%Y-%m-%d").split("-")
+ weekday, total_day=monthrange(int(year), int(month))
+ #return "%s-%s-%s"%(year,month,total_day)
+ return "%s-%s-%s"%(year,month,day)
+
+ def default_get(self,field_names=None,context={},**kw):
+ defaults=context.get("defaults",{})
+ date_from=defaults.get("date_from", self._get_date_from())
+ date_to=defaults.get("date_to", self._get_date_to())
+ print('defaults ', defaults)
+ yearnow=date_from.split("-")[0]
+ for period in get_model('clinic.period').search_browse([['name','=',yearnow]]):
+ for line in period.lines:
+ if line.state=='open':
+ period_id=line.id
+ date_from=line.date_start
+ date_to=line.date_stop
+ break
+ res={
+ 'period_id': period_id,
+ 'date': time.strftime("%Y-%m-%d"),
+ 'date_from': date_from,
+ 'date_to': date_to,
+ 'state': 'draft',
+ 'company_id': get_active_company(),
+ }
+ return res
+
+ def generate_report(self,ids,context={}):
+ db=get_connection()
+ user_id=get_active_user()
+ set_active_user(1)
+ if ids:
+ obj=self.browse(ids)[0]
+ else:
+ return
+ obj.write({
+ 'state': 'waiting_doc',
+ 'file_pdf1': None,
+ 'file_pdf2': None,
+ 'file_pdf3': None,
+ })
+ db.commit()
+
+ def load_report(fname,link):
+ host=config.config['host']
+ port=config.config['port']
+ hostname='http://%s:%s/'%(host,port)
+ link=hostname+link
+ req=urllib.request.Request(link)
+ response=urllib.request.urlopen(req)
+ data=response.read()
+ fpath=os.path.join('/tmp/wizard_lc',fname)
+ open(fpath,"wb").write(data)
+
+ dbname=get_active_db()
+ fdir=os.path.join("static","db",dbname,"files")
+ tmp_dir='/tmp/wizard_lc'
+ if not os.path.isdir(tmp_dir):
+ os.system("mkdir %s"%(tmp_dir))
+ #Create File Name
+ fname1='%s_wizard_sunmary_%s_to_%s.pdf'%(obj.id,obj.date_from,obj.date_to)
+ fname2='%s_wizard_details_%s_to_%s.pdf'%(obj.id,obj.date_from,obj.date_to)
+ fname3='%s_wizard_sub_details_%s_to_%s.pdf'%(obj.id,obj.date_from,obj.date_to)
+ defaults='&data=%s&period_id=%s&date_from=%s&date_to=%s&cycle_id=%s&branch_id=%s&department_id=%s'%(obj.date_from,obj.period_id.id,obj.date_from,obj.date_to,obj.cycle_id.id or None,obj.branch_id.id or None,obj.department_id.id or None,)
+ lc_id=get_model('clinic.report.wizard.labor.cost').create({})
+ link1="report?convert=pdf&refer_id=%s&template=report_wizard_labor_cost_summary&model=clinic.report.wizard.labor.cost&type=report_odt2&method=get_report_wizard_summary%s&type_report=wizard&user=admin" % (lc_id,defaults)
+ load_report(fname1,link1)
+ link2="report?convert=pdf&refer_id=%s&template=report_wizard_labor_cost_details&model=clinic.report.wizard.labor.cost&type=report_odt2&method=get_report_wizard_details%s&type_report=wizard&user=admin" % (lc_id,defaults)
+ load_report(fname2,link2)
+ link3="report?convert=pdf&refer_id=%s&template=report_wizard_labor_cost_sub_details&model=clinic.report.wizard.labor.cost&type=report_odt2&method=get_report_wizard_sub_details%s&type_report=wizard&user=admin" % (lc_id,defaults)
+ load_report(fname3,link3)
+
+ obj.write({
+ 'file_pdf1': '%s' % (fname1),
+ 'file_pdf2': '%s' % (fname2),
+ 'file_pdf3': '%s' % (fname3),
+ 'state': 'done',
+ })
+ os.chdir('%s'%fdir)
+ os.system("mv /%s/%s* ."%(tmp_dir,obj.id))
+ os.chdir('../../../../')
+ set_active_user(user_id)
+ vals={
+ 'to_id': get_active_user(),
+ 'subject': 'Generate Report',
+ 'body': """
+ Generate labor cost report for successfully.
+ Open Print Wizard Labor Cost
+ """%(obj.id),
+ }
+ get_model("message").create(vals)
+ db.commit()
+ return {
+ 'next': {
+ 'name': 'clinic.print.wizard.labor.cost',
+ 'mode': 'form',
+ 'active_id': obj.id,
+ },
+ }
+
+ def wkf_gen_report(self,context={},**kw):
+ print("#"*80)
+ trigger_ids=context.get("trigger_ids")
+ if not trigger_ids:
+ raise Exception("Missing trigger ids")
+ print("trigger_ids",trigger_ids)
+ self.generate_report(trigger_ids,context,**kw)
+
+ def do_generate(self,ids,context={}):
+ self.trigger(ids,"do_gen")
+
+ def onchange_date(self,context={}):
+ data=context['data']
+ date=data['date']
+ year,month,day=date.split("-")
+ weekday, total_day=monthrange(int(year), int(month))
+ data['date_from']="%s-%s-01"%(year,month)
+ data['date_to']="%s-%s-%s"%(year,month,total_day)
+ return data
+
+ def onchange_branch(self,context={}):
+ data=context['data']
+ data['department_id']=None
+ return data
+
+ def onchange_from(self,context={}):
+ data=context['data']
+ data['date_to']=data['date_from']
+ return data
+
+ def onchange_period(self,context={}):
+ data=context['data']
+ period_id=data['period_id']
+ period=get_model('clinic.period.line').browse(period_id)
+ data['date_from']=period.date_start
+ data['date_to']=period.date_stop
+ return data
+
+PrintLaborCost.register()
diff --git a/netforce_clinic/models/report_labor_cost.py b/netforce_clinic/models/report_labor_cost.py
index c68c6f8..57bff51 100644
--- a/netforce_clinic/models/report_labor_cost.py
+++ b/netforce_clinic/models/report_labor_cost.py
@@ -50,6 +50,11 @@ class ReportLaborCost(Model):
date_from=line.date_start
date_to=line.date_stop
break
+ if defaults.get('report_type_wizard'):
+ per = get_model('clinic.period.line').browse(int(defaults.get('period_id')))
+ period_id=per.id
+ date_from=per.date_start
+ date_to=per.date_stop
res={
'period_id': period_id,
'date': time.strftime("%Y-%m-%d"),
diff --git a/netforce_clinic/models/report_labor_cost_detail.py b/netforce_clinic/models/report_labor_cost_detail.py
index 1b64c01..f731b97 100644
--- a/netforce_clinic/models/report_labor_cost_detail.py
+++ b/netforce_clinic/models/report_labor_cost_detail.py
@@ -56,7 +56,7 @@ 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)
+ #print('defaults ', defaults)
res={
'date': time.strftime("%Y-%m-%d"),
'date_from': date_from,
@@ -68,7 +68,7 @@ class ReportLaborCostDetail(Model):
'cycle_id': cycle_id or None,
'categ_id': categ_id or None,
}
- print('res ', res)
+ #print('res ', res)
return res
def get_report_data(self,ids,context={}):
diff --git a/netforce_clinic/models/report_labor_cost_sub_detail.py b/netforce_clinic/models/report_labor_cost_sub_detail.py
index f7c1a74..cc9729d 100644
--- a/netforce_clinic/models/report_labor_cost_sub_detail.py
+++ b/netforce_clinic/models/report_labor_cost_sub_detail.py
@@ -57,7 +57,7 @@ class ReportLaborCostSubDetail(Model):
'department_id': department_id,
'branch_id': branch_id,
}
- print('res ', res)
+ #print('res ', res)
return res
def get_report_data(self,ids,context={}):
diff --git a/netforce_clinic/models/report_wizard_labor_cost.py b/netforce_clinic/models/report_wizard_labor_cost.py
index 2816e6a..e8c0c72 100644
--- a/netforce_clinic/models/report_wizard_labor_cost.py
+++ b/netforce_clinic/models/report_wizard_labor_cost.py
@@ -1,7 +1,6 @@
import time
from datetime import datetime
from calendar import monthrange
-
from netforce.model import Model,fields,get_model
from netforce.access import get_active_company, set_active_company, get_active_user, set_active_user
from netforce.database import get_connection
@@ -10,15 +9,15 @@ class ReportLaborCost(Model):
_name="clinic.report.wizard.labor.cost"
_string="Report Wizard Labor Cost"
_transient=True
-
+
_fields={
"date": fields.Date("Month"),
"period_id": fields.Many2One("clinic.period.line","Period"),
"date_from": fields.Date("From", required=True),
"date_to": fields.Date("To", required=True),
- "branch_id": fields.Many2One("clinic.branch","Branch"),
+ "branch_id": fields.Many2One("clinic.branch","Branch", required=False),
"cycle_id": fields.Many2One("clinic.cycle","Cycle"),
- "department_id": fields.Many2One("clinic.department","Department"),
+ "department_id": fields.Many2One("clinic.department","Department", required=False),
"staff_type": fields.Selection([["doctor","Doctor"],["nurse","Nurse"],["staff","Staff"]],"Type"),
"staff_id": fields.Many2One("clinic.staff","Staff")
}
@@ -33,7 +32,7 @@ class ReportLaborCost(Model):
weekday, total_day=monthrange(int(year), int(month))
#return "%s-%s-%s"%(year,month,total_day)
return "%s-%s-%s"%(year,month,day)
-
+
def default_get(self,field_names=None,context={},**kw):
defaults=context.get("defaults",{})
date_from=defaults.get("date_from", self._get_date_from())
@@ -55,7 +54,7 @@ class ReportLaborCost(Model):
'date_to': date_to,
}
return res
-
+
def wizard_report_summary(self,ids,context={}):
obj=self.browse(ids)[0]
return {
@@ -81,14 +80,66 @@ class ReportLaborCost(Model):
"convert": "pdf",
}
}
-
+
+ def wizard_report_sub_details(self,ids,context={}):
+ obj=self.browse(ids)[0]
+ return {
+ "next": {
+ "type": "report_odt",
+ "model": self._name,
+ "template": "report_wizard_labor_cost_sub_details",
+ "refer_id": obj.id,
+ "method": "get_report_wizard_sub_details",
+ "convert": "pdf",
+ "date_from": obj.date_from,
+ }
+ }
+
def get_report_data(self,ids,context={}):
return
def get_report_wizard_summary(self,ids,context={}):
obj=[]
if ids:
- obj=self.browse(ids)[0]
+ if not context.get('type_report'):
+ obj = self.browse(ids)[0]
+ date = obj.date
+ period_id = obj.period_id.id
+ date_from = obj.date_from
+ date_to = obj.date_to
+ cycle_id = obj.cycle_id.id or None
+ staff_id = obj.staff_id.id or None
+ staff_type = obj.staff_type or None
+ branch_id = obj.branch_id.id or None
+ department_id = obj.department_id.id or None
+ else:
+ date=context.get('date')
+ period_id=context.get('period_id')
+ date_from=context.get('date_from')
+ date_to=context.get('date_to')
+ if context.get('staff_type')=='None':
+ staff_type=None
+ else:
+ staff_type=context.get('staff_type')
+ if context.get('staff_id')=='None':
+ staff_id=None
+ else:
+ staff_id=context.get('staff_id')
+ if context.get('cycle_id')=='None':
+ cycle_id=None
+ else:
+ cycle_id=context.get('cycle_id')
+ if context.get('branch_id')=='None':
+ branch_id=None
+ else:
+ branch_id=context.get('branch_id')
+ if context.get('department_id')=='None':
+ department_id=None
+ else:
+ department_id=context.get('department_id')
+ if context.get('user')=='admin':
+ user_id=get_active_user()
+ set_active_user(1)
company_id=get_active_company()
if not company_id:
set_active_company(1)
@@ -98,48 +149,50 @@ class ReportLaborCost(Model):
pages2=[]
t1=datetime.now()
lc_vals={
- 'date': obj.date_form,
- 'period_id': obj.period_id.id,
- 'date_from': obj.date_from,
- 'date_to': obj.date_to,
- 'cycle_id': obj.cycle_id.id or None,
- 'branch_id': obj.branch_id.id or None,
+ 'date': date_from,
+ 'period_id': period_id,
+ 'date_from': date_from,
+ 'date_to': date_to,
+ 'cycle_id': cycle_id or None,
+ 'branch_id': branch_id or None,
'report_type': 'cross',
- 'department_id': obj.department_id.id or None,
+ 'department_id': department_id or None,
+ 'report_type_wizard':'t',
}
- print(lc_vals)
- lc_id=get_model('clinic.report.labor.cost').create(lc_vals)
+ lc_id=get_model('clinic.report.labor.cost').create({},context={'defaults':lc_vals,})
lc_data=get_model('clinic.report.labor.cost').get_report_data([lc_id])
#data['lc_data'].append(lc_data) # END STEP 1
data={
"comp_name":company.name,
- "date_from_1": obj.date_from,
- "date_to_1": obj.date_to,
+ "date_from_1": date_from,
+ "date_to_1": date_to,
"dlines2": lc_data['dlines2'] or None,
"nlines2": lc_data['nlines2'] or None,
"ctlines2": lc_data['ctlines2'] or None,
}
pages1.append(data)
t2=datetime.now()
- #import pdb; pdb.set_trace()
print('step 1 : ',t2-t1)
#STEP 2
staff_data=[]
- if obj.staff_type:
- staff_data.append(obj.staff_type)
+ if staff_type:
+ staff_data.append(staff_type)
else:
staff_data=['doctor','nurse']
for s_line in staff_data:
- sum_id=get_model('clinic.report.labor.cost.summary').create({
- 'date': obj.date_from,
- 'date_from': obj.date_from,
- 'date_to': obj.date_to,
- 'staff_type': obj.staff_type or s_line,
- 'staff_id': obj.staff_id or None,
- 'cycle_id': obj.cycle_id.id or None,
- 'branch_id': obj.branch_id.id or None,
- 'department_id': obj.department_id.id or None,
+ s_vals={
+ 'date': date_from,
+ 'date_from': date_from,
+ 'date_to': date_to,
+ 'staff_type': staff_type or s_line,
+ 'staff_id': staff_id or None,
+ 'cycle_id': cycle_id or None,
+ 'branch_id': branch_id or None,
+ 'department_id': department_id or None,
+ }
+ sum_id=get_model('clinic.report.labor.cost.summary').create({},context={
+ 'defaults':s_vals,
})
sum_data=get_model('clinic.report.labor.cost.summary').get_report_data([sum_id])
if s_line=='doctor':
@@ -148,8 +201,8 @@ class ReportLaborCost(Model):
sum_data.update({'staff_name':'ตารางพยาบาล'})
data={
"comp_name":company.name,
- "date_from_1": obj.date_from,
- "date_to_1": obj.date_to,
+ "date_from_1": date_from,
+ "date_to_1": date_to,
"emp_type": sum_data['staff_type'] or None,
"dpts_txt": sum_data['dpts_txt'] or None,
"items": sum_data['items'] or None,
@@ -157,7 +210,9 @@ class ReportLaborCost(Model):
}
pages2.append(data)
t2=datetime.now()
- print('step 2 : ',t2-t1)
+
+ if context.get('user')=='admin':
+ set_active_user(user_id)
if pages1 and pages2:
pages1[-1]['is_last_page']=True
pages2[-1]['is_last_page']=True
@@ -165,11 +220,49 @@ class ReportLaborCost(Model):
"pages1": pages1,
"pages2": pages2,
}
-
+
def get_report_wizard_details(self,ids,context={}):
obj=[]
if ids:
- obj=self.browse(ids)[0]
+ if not context.get('type_report'):
+ obj = self.browse(ids)[0]
+ date = obj.date
+ period_id = obj.period_id.id
+ date_from = obj.date_from
+ date_to = obj.date_to
+ cycle_id = obj.cycle_id.id or None
+ staff_id = obj.staff_id.id or None
+ staff_type = obj.staff_type or None
+ branch_id = obj.branch_id.id or None
+ department_id = obj.department_id.id or None
+ else:
+ date=context.get('date')
+ period_id=context.get('period_id')
+ date_from=context.get('date_from')
+ date_to=context.get('date_to')
+ if context.get('staff_type')=='None':
+ staff_type=None
+ else:
+ staff_type=context.get('staff_type')
+ if context.get('staff_id')=='None':
+ staff_id=None
+ else:
+ staff_id=context.get('staff_id')
+ if context.get('cycle_id')=='None':
+ cycle_id=None
+ else:
+ cycle_id=context.get('cycle_id')
+ if context.get('branch_id')=='None':
+ branch_id=None
+ else:
+ branch_id=context.get('branch_id')
+ if context.get('department_id')=='None':
+ department_id=None
+ else:
+ department_id=context.get('department_id')
+ if context.get('user')=='admin':
+ user_id=get_active_user()
+ set_active_user(1)
company_id=get_active_company()
if not company_id:
set_active_company(1)
@@ -181,42 +274,40 @@ class ReportLaborCost(Model):
#STEP 2
i=0
staff_data=[]
- if obj.staff_type:
- staff_data.append(obj.staff_type)
+ if staff_type:
+ staff_data.append(staff_type)
else:
staff_data=['doctor','nurse']
for s_line in staff_data:
sum_id=get_model('clinic.report.labor.cost.summary').create({
- 'date': obj.date_from,
- 'date_from': obj.date_from,
- 'date_to': obj.date_to,
- #'staff_type': s_line,
- 'staff_type': obj.staff_type or s_line,
- 'staff_id': obj.staff_id or None,
- 'cycle_id': obj.cycle_id.id or None,
- 'branch_id': obj.branch_id.id or None,
- 'department_id': obj.department_id.id or None,
+ 'date': date_from,
+ 'date_from': date_from,
+ 'date_to': date_to,
+ 'staff_type': staff_type or s_line,
+ 'staff_id': staff_id or None,
+ 'cycle_id': cycle_id or None,
+ 'branch_id': branch_id or None,
+ 'department_id': department_id or None,
})
sum_data=get_model('clinic.report.labor.cost.summary').get_report_data([sum_id])
t2=datetime.now()
- print('step 2 : ',t2-t1)
#STEP 3
for detail_line in sum_data['lines']:
detail_id=get_model('clinic.report.labor.cost.detail').create({
- 'date': obj.date_from,
- 'date_from': obj.date_from,
- 'date_to': obj.date_to,
+ 'date': date_from,
+ 'date_from': date_from,
+ 'date_to': date_to,
'staff_type': detail_line['staff_type'] or None,
'staff_id': detail_line['staff_id'] or None,
'cycle_id': None,
- 'branch_id': obj.branch_id.id or None,
- 'department_id': obj.department_id.id or None,
+ 'branch_id': branch_id or None,
+ 'department_id': department_id or None,
})
detail_data=get_model('clinic.report.labor.cost.detail').get_report_data([detail_id])
data={
- "date_from_1": obj.date_from,
- "date_to_1": obj.date_to,
+ "date_from_1": date_from,
+ "date_to_1": date_to,
"emp_type": detail_line['staff_type'] or None,
"emp_name": detail_line['staff_name'] or None,
"detail_dpts_txt": detail_data['dpts_txt'] or None,
@@ -229,10 +320,128 @@ class ReportLaborCost(Model):
print('step 3 : ',t2-t1,' item in %d and name %s >>>>>>>> %s'%(i,detail_line['staff_name'],detail_line['staff_type']))
if pages:
pages[-1]['is_last_page']=True
+ if context.get('user')=='admin':
+ set_active_user(user_id)
+ if not company_id:
+ set_active_company(company_id)
return {
"pages": pages,
}
+ def get_report_wizard_sub_details(self,ids,context={}):
+ obj=[]
+ if ids:
+ if not context.get('type_report'):
+ obj = self.browse(ids)[0]
+ date = obj.date
+ period_id = obj.period_id.id
+ date_from = obj.date_from
+ date_to = obj.date_to
+ cycle_id = obj.cycle_id.id or None
+ staff_id = obj.staff_id.id or None
+ staff_type = obj.staff_type or None
+ branch_id = obj.branch_id.id or None
+ department_id = obj.department_id.id or None
+ else:
+ date=context.get('date')
+ period_id=context.get('period_id')
+ date_from=context.get('date_from')
+ date_to=context.get('date_to')
+ if context.get('staff_type')=='None':
+ staff_type=None
+ else:
+ staff_type=context.get('staff_type')
+ if context.get('staff_id')=='None':
+ staff_id=None
+ else:
+ staff_id=context.get('staff_id')
+ if context.get('cycle_id')=='None':
+ cycle_id=None
+ else:
+ cycle_id=context.get('cycle_id')
+ if context.get('branch_id')=='None':
+ branch_id=None
+ else:
+ branch_id=context.get('branch_id')
+ if context.get('department_id')=='None':
+ department_id=None
+ else:
+ department_id=context.get('department_id')
+ if context.get('user')=='admin':
+ user_id=get_active_user()
+ set_active_user(1)
+ company_id=get_active_company()
+ if not company_id:
+ set_active_company(1)
+ company_id=1
+ company=get_model("company").browse(company_id)
+ pages=[]
+ t1=datetime.now()
+
+ staff_data=[]
+ if staff_type:
+ staff_data.append(staff_type)
+ else:
+ staff_data=['doctor']
+ for s_line in staff_data:
+ ctx_sum={
+ 'date': date_from,
+ 'date_from': date_from,
+ 'date_to': date_to,
+ 'staff_type': staff_type or s_line,
+ 'staff_id': None,
+ 'cycle_id': None,
+ 'branch_id': None,
+ 'department_id': None,
+
+ }
+ sum_id=get_model('clinic.report.labor.cost.summary').create({
+ 'date': date_from,
+ 'date_from': date_from,
+ 'date_to': date_to,
+ 'staff_type': staff_type or s_line,
+ 'staff_id': staff_id or None,
+ 'cycle_id': cycle_id or None,
+ 'branch_id': branch_id or None,
+ 'department_id': department_id or None,
+ }, context=ctx_sum)
+ sum_data=get_model('clinic.report.labor.cost.summary').get_report_data([sum_id])
+ t2=datetime.now()
+ for line in sum_data['lines']:
+ ctx={
+ 'defaults': {
+ 'date': date_from,
+ 'date_from': date_from,
+ 'date_to': date_to,
+ 'staff_type': line['staff_type'] or None,
+ 'staff_id': line['staff_id'] or None,
+ 'branch_id': branch_id or None,
+ 'department_id': department_id or None,
+ }
+ }
+ sub_detail_id=get_model('clinic.report.labor.cost.sub.detail').create({},context=ctx)
+ sub_data=get_model('clinic.report.labor.cost.sub.detail').get_report_data([sub_detail_id])
+ data={
+ "date_from_1": date_from,
+ "date_to_1": date_to,
+ "emp_name": line['staff_name'] or None,
+ "emp_type": line['staff_type'] or None,
+ "lines": sub_data['lines'] or None,
+ "amount_total": line['total'] or None,
+ }
+ print('Get Data : Name : %s, Type : %s, Total : %s'%(line['staff_name'],line['staff_type'],line['total']))
+ pages.append(data)
+ t2=datetime.now
+ if pages:
+ pages[-1]['is_last_page']=True
+ if context.get('user')=='admin':
+ set_active_user(user_id)
+ if not company_id:
+ set_active_company(company_id)
+ return {
+ "pages":pages,
+ }
+
def onchange_date(self,context={}):
data=context['data']
date=data['date']
@@ -251,7 +460,7 @@ class ReportLaborCost(Model):
data=context['data']
data['date_to']=data['date_from']
return data
-
+
def onchange_period(self,context={}):
data=context['data']
period_id=data['period_id']
diff --git a/netforce_clinic/reports/report_wizard_labor_cost_details.odt b/netforce_clinic/reports/report_wizard_labor_cost_details.odt
index 50a5e69..1b8ceb1 100644
Binary files a/netforce_clinic/reports/report_wizard_labor_cost_details.odt and b/netforce_clinic/reports/report_wizard_labor_cost_details.odt differ
diff --git a/netforce_clinic/reports/report_wizard_labor_cost_sub_details.odt b/netforce_clinic/reports/report_wizard_labor_cost_sub_details.odt
new file mode 100644
index 0000000..eed32db
Binary files /dev/null and b/netforce_clinic/reports/report_wizard_labor_cost_sub_details.odt differ
diff --git a/netforce_clinic/templates/rdc_page.hbs b/netforce_clinic/templates/rdc_page.hbs
index ee70f2e..2d87495 100644
--- a/netforce_clinic/templates/rdc_page.hbs
+++ b/netforce_clinic/templates/rdc_page.hbs
@@ -65,7 +65,7 @@
{{t "Recompute Cost"}}