[IMP][FIX]hr_payroll: fixed the error if contract is not define and some improvement in report.

bzr revid: vra@tinyerp.com-20101008094910-psvxtftbau0txae6
This commit is contained in:
vra
2010-10-08 15:19:10 +05:30
parent 766b822f2c
commit 62592beb07
2 changed files with 39 additions and 39 deletions
@@ -33,32 +33,32 @@ class salary_structure_report(report_sxw.rml_parse):
self.localcontext.update({
'time': time,
'get_type':self.get_type,
'get_contract':self.get_contract,
#'get_contract':self.get_contract,
'get_line_amount_type':self.get_line_amount_type,
'get_line_type':self.get_line_type,
'get_line_amount_symbol':self.get_line_amount_symbol
})
def get_contract(self,emp):
curr_date = "'"+time.strftime("%Y-%m-%d")+"'"
sql_req= '''
SELECT c.id as id, c.wage as wage, struct_id as struct
FROM hr_contract c
LEFT JOIN hr_employee emp on (c.employee_id=emp.id)
LEFT JOIN hr_contract_wage_type cwt on (cwt.id = c.wage_type_id)
LEFT JOIN hr_contract_wage_type_period p on (cwt.period_id = p.id)
WHERE
(emp.id=%s) AND
(date_start <= %s) AND
(date_end IS NULL OR date_end >= %s)
LIMIT 1
'''%(emp.id, curr_date, curr_date)
self.cr.execute(sql_req)
contract_id = self.cr.dictfetchone()
if not contract_id:
return []
contract = self.pool.get('hr.contract').browse(self.cr, self.uid, [contract_id['id']])
return contract
# def get_contract(self,emp):
# curr_date = "'"+time.strftime("%Y-%m-%d")+"'"
# sql_req= '''
# SELECT c.id as id, c.wage as wage, struct_id as struct
# FROM hr_contract c
# LEFT JOIN hr_employee emp on (c.employee_id=emp.id)
# LEFT JOIN hr_contract_wage_type cwt on (cwt.id = c.wage_type_id)
# LEFT JOIN hr_contract_wage_type_period p on (cwt.period_id = p.id)
# WHERE
# (emp.id=%s) AND
# (date_start <= %s) AND
# (date_end IS NULL OR date_end >= %s)
# LIMIT 1
# '''%(emp.id, curr_date, curr_date)
# self.cr.execute(sql_req)
# contract_id = self.cr.dictfetchone()
# if not contract_id:
# return []
# contract = self.pool.get('hr.contract').browse(self.cr, self.uid, [contract_id['id']])
# return contract
def get_type(self,type):
return type[0].swapcase() + type[1:] +' Salary'
@@ -267,7 +267,7 @@
<font color="white"> </font>
</para>
<section>
<para style="terp_default_9">[[repeatIn(get_contract(employee),'cont')]]</para>
<para style="terp_default_9">[[ not employee.contract_id and removeParentNode('section') ]]</para>
<blockTable colWidths="68.0,111.0,63.0,111.0,71.0,115.0" style="Table4">
<tr>
<td>
@@ -318,7 +318,7 @@
<para style="terp_tblheader_Details">Designation</para>
</td>
<td>
<para style="terp_default_9">[[ cont.job_id.name or '' ]]</para>
<para style="terp_default_9">[[ employee.contract_id and employee.contract_id.job_id and employee.contract_id.job_id.name or '' ]]</para>
</td>
<td>
<para style="terp_tblheader_Details">Phone No.</para>
@@ -334,7 +334,7 @@
</td>
</tr>
</blockTable>
<para style="terp_default_space">
<para style="terp_default_9">
<font color="white"> </font>
</para>
<blockTable colWidths="539.0" style="Table13">
@@ -356,19 +356,19 @@
<para style="terp_tblheader_Details">Start Date</para>
</td>
<td>
<para style="terp_default_9">[[ formatLang(cont.date_start,date=True) or '' ]]</para>
<para style="terp_default_9">[[ employee.contract_id and formatLang(employee.contract_id.date_start,date=True) or '' ]]</para>
</td>
<td>
<para style="terp_tblheader_Details">End Date</para>
</td>
<td>
<para style="terp_default_9">[[ formatLang(cont.date_end,date=True) or removeParentNode('para') ]]</para>
<para style="terp_default_9">[[ employee.contract_id and formatLang(employee.contract_id.date_end,date=True) or removeParentNode('para') ]]</para>
</td>
<td>
<para style="terp_tblheader_Details">Type</para>
</td>
<td>
<para style="terp_default_9">[[ get_type(cont.wage_type_id.type) or '' ]]</para>
<para style="terp_default_9">[[ employee.contract_id and get_type(employee.contract_id.wage_type_id.type) or '' ]]</para>
</td>
</tr>
</blockTable>
@@ -378,13 +378,13 @@
<para style="terp_tblheader_Details">Salary</para>
</td>
<td>
<para style="terp_default_9">[[ formatLang(cont.wage) or '' ]] [[ employee.company_id.currency_id.symbol]]</para>
<para style="terp_default_9">[[ employee.contract_id and formatLang(employee.contract_id.wage) or '' ]] [[ employee.company_id.currency_id.symbol]]</para>
</td>
<td>
<para style="terp_tblheader_Details">Notes:</para>
</td>
<td>
<para style="terp_default_9">[[ cont.notes or '' ]]</para>
<para style="terp_default_9">[[ employee.contract_id and employee.contract_id.notes or '' ]]</para>
</td>
</tr>
</blockTable>
@@ -394,19 +394,19 @@
<para style="terp_tblheader_Details">Basic</para>
</td>
<td>
<para style="terp_default_9">[[ cont.basic ]] [[ employee.company_id.currency_id.symbol ]]</para>
<para style="terp_default_9">[[ employee.basic ]] [[ employee.company_id.currency_id.symbol ]]</para>
</td>
<td>
<para style="terp_tblheader_Details">Allowances</para>
</td>
<td>
<para style="terp_default_9">[[ cont.advantages_gross ]] [[ employee.company_id.currency_id.symbol ]]</para>
<para style="terp_default_9">[[ employee.advantages_gross ]] [[ employee.company_id.currency_id.symbol ]]</para>
</td>
<td>
<para style="terp_tblheader_Details">Gross Salary</para>
</td>
<td>
<para style="terp_default_9">[[ cont.gross ]] [[ employee.company_id.currency_id.symbol ]]</para>
<para style="terp_default_9">[[ employee.gross ]] [[ employee.company_id.currency_id.symbol ]]</para>
</td>
</tr>
</blockTable>
@@ -416,17 +416,17 @@
<para style="terp_tblheader_Details">Deductions</para>
</td>
<td>
<para style="terp_default_9">[[ cont.advantages_net ]] [[ employee.company_id.currency_id.symbol ]]</para>
<para style="terp_default_9">[[ employee.advantages_net ]] [[ employee.company_id.currency_id.symbol ]]</para>
</td>
<td>
<para style="terp_tblheader_Details">Net Salary</para>
</td>
<td>
<para style="terp_default_9">[[ cont.net ]] [[ employee.company_id.currency_id.symbol ]]</para>
<para style="terp_default_9">[[ employee.net ]] [[ employee.company_id.currency_id.symbol ]]</para>
</td>
</tr>
</blockTable>
<para style="terp_default_space">
<para style="terp_default_9">
<font color="white"> </font>
</para>
<blockTable colWidths="539.0" style="Table9">
@@ -463,7 +463,7 @@
<font color="white"> </font>
</para>
<section>
<para style="terp_default_9">[[repeatIn(cont.struct_id.line_ids,'line')]]</para>
<para style="terp_default_9">[[repeatIn(employee.contract_id and employee.contract_id.struct_id and employee.contract_id.struct_id.line_ids or [],'line')]]</para>
<blockTable colWidths="34.0,340.0,80.0,84.0" style="Table8">
<tr>
<td>
@@ -473,7 +473,7 @@
<para style="terp_default_9">[[ line.name ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(line.amount) or '']][[ get_line_amount_symbol(line.amount_type) ]]</para>
<para style="terp_default_Right_9">[[ line.amount or '']] [[ get_line_amount_symbol(line.amount_type) ]]</para>
</td>
<td>
<para style="terp_default_9">[[ get_line_amount_type(line.amount_type) ]]</para>
@@ -489,7 +489,7 @@
</para>
</section>
</section>
<para style="terp_default_space">
<para style="terp_default_9">
<font color="white"> </font>
</para>
<blockTable colWidths="539.0" style="Table10">
@@ -536,7 +536,7 @@
<para style="terp_default_9">[[ line1.name ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(line1.amount) ]]</para>
<para style="terp_default_Right_9">[[ line1.amount ]] [[ get_line_amount_symbol(line1.amount_type) ]]</para>
</td>
<td>
<para style="terp_default_9">[[ get_line_amount_type(line1.amount_type) ]]</para>