report labor cost summary
parent
3874920314
commit
85712d9e25
|
@ -3,4 +3,6 @@
|
||||||
<field name="date_from" required="1" span="2"/>
|
<field name="date_from" required="1" span="2"/>
|
||||||
<field name="date_to" required="1" span="2"/>
|
<field name="date_to" required="1" span="2"/>
|
||||||
<field name="type" span="2"/>
|
<field name="type" span="2"/>
|
||||||
|
<field name="staff_id" domain='[["type","=",type]]' span="2"/>
|
||||||
|
<field name="only_value" span="2"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -17,6 +17,7 @@ class ReportLaborCostSummary(Model):
|
||||||
"type": fields.Selection([["doctor","Doctor"],["nurse","Nurse"],["staff","Staff"]],"Type"),
|
"type": fields.Selection([["doctor","Doctor"],["nurse","Nurse"],["staff","Staff"]],"Type"),
|
||||||
'department_id': fields.Many2One("clinic.department","Department"),
|
'department_id': fields.Many2One("clinic.department","Department"),
|
||||||
'branch_id': fields.Many2One("clinic.branch","Branch"),
|
'branch_id': fields.Many2One("clinic.branch","Branch"),
|
||||||
|
'only_value': fields.Boolean("Only Value Exist"),
|
||||||
}
|
}
|
||||||
|
|
||||||
def _get_date_from(self,context={}):
|
def _get_date_from(self,context={}):
|
||||||
|
@ -32,6 +33,7 @@ class ReportLaborCostSummary(Model):
|
||||||
'date': lambda *a: time.strftime("%Y-%m-%d"),
|
'date': lambda *a: time.strftime("%Y-%m-%d"),
|
||||||
'date_from': _get_date_from,
|
'date_from': _get_date_from,
|
||||||
'date_to': _get_date_to,
|
'date_to': _get_date_to,
|
||||||
|
'only_value': True,
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_report_data(self,ids,context={}):
|
def get_report_data(self,ids,context={}):
|
||||||
|
@ -40,19 +42,27 @@ class ReportLaborCostSummary(Model):
|
||||||
date_to=time.strftime(fmt)
|
date_to=time.strftime(fmt)
|
||||||
company_id=get_active_company()
|
company_id=get_active_company()
|
||||||
comp=get_model("company").browse(company_id)
|
comp=get_model("company").browse(company_id)
|
||||||
_type=None
|
staff_type=None
|
||||||
|
staff_id=None
|
||||||
|
only_value=False
|
||||||
dom=[]
|
dom=[]
|
||||||
if ids:
|
if ids:
|
||||||
obj=self.browse(ids)[0]
|
obj=self.browse(ids)[0]
|
||||||
date_from=obj.date_from
|
date_from=obj.date_from
|
||||||
date_to=obj.date_to
|
date_to=obj.date_to
|
||||||
_type=obj.type
|
staff_id=obj.staff_id.id
|
||||||
|
staff_type=obj.type
|
||||||
|
only_value=obj.only_value
|
||||||
dom.append(['date','>=',date_from])
|
dom.append(['date','>=',date_from])
|
||||||
dom.append(['date','<=',date_to])
|
dom.append(['date','<=',date_to])
|
||||||
if _type:
|
if staff_id:
|
||||||
dom.append(['type','=',_type])
|
dom.append(['staff_id','=',staff_id])
|
||||||
|
if staff_type:
|
||||||
|
dom.append(['type','=',staff_type])
|
||||||
|
if only_value:
|
||||||
|
dom.append(['amount','!=',0])
|
||||||
|
|
||||||
staffs={}
|
staffs={}
|
||||||
print('dom ', dom)
|
|
||||||
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
|
||||||
|
@ -68,24 +78,20 @@ class ReportLaborCostSummary(Model):
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if not staffs[staff.name].get(dpt.name):
|
if not staffs[staff.name].get(dpt.name):
|
||||||
staffs[staff.name]={
|
staffs[staff.name].update({
|
||||||
'staff_id': staff.id,
|
dpt.name: {
|
||||||
dpt.name: {
|
'amt': 0,
|
||||||
'amt':amt,
|
}})
|
||||||
}
|
|
||||||
}
|
|
||||||
staffs[staff.name][dpt.name]['amt']+=amt
|
|
||||||
|
|
||||||
|
staffs[staff.name][dpt.name]['amt']+=amt
|
||||||
lines=[]
|
lines=[]
|
||||||
dpts=get_model("clinic.department").search_read([],['name'])
|
dpts=get_model("clinic.department").search_read([],['name'])
|
||||||
dpts=sorted(dpts, key=lambda b: b['name'])
|
dpts=sorted(dpts, key=lambda b: b['name'])
|
||||||
no=1
|
no=1
|
||||||
|
|
||||||
staff_types=set()
|
staff_types=set()
|
||||||
snames=sorted(staffs.keys()) #sort by staff name
|
snames=sorted(staffs.keys()) #sort by staff name
|
||||||
for sname in snames:
|
for sname in snames:
|
||||||
vals=staffs[sname]
|
vals=staffs[sname]
|
||||||
print(">> ", vals.get('staff_name'), ' ', sname)
|
|
||||||
lvals={
|
lvals={
|
||||||
'no': no,
|
'no': no,
|
||||||
'staff_name': sname,
|
'staff_name': sname,
|
||||||
|
@ -94,6 +100,7 @@ class ReportLaborCostSummary(Model):
|
||||||
total=0
|
total=0
|
||||||
lvals['sub_lines']=[]
|
lvals['sub_lines']=[]
|
||||||
for dpt in dpts:
|
for dpt in dpts:
|
||||||
|
amt=0 #solve bug
|
||||||
dname=dpt['name'] or ''
|
dname=dpt['name'] or ''
|
||||||
vals2=vals.get(dname)
|
vals2=vals.get(dname)
|
||||||
if vals2:
|
if vals2:
|
||||||
|
|
|
@ -92,9 +92,6 @@
|
||||||
<div>
|
<div>
|
||||||
<a href="#name=clinic_hd_case">{{t "HD Cases"}}</a>
|
<a href="#name=clinic_hd_case">{{t "HD Cases"}}</a>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
|
||||||
<a href="#name=clinic_matching_hdcase">{{t "HD Cases Matching"}}</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
<div>
|
||||||
<a href="#name=clinic_shop">{{t "RD Shop"}}</a>
|
<a href="#name=clinic_shop">{{t "RD Shop"}}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue