diff --git a/addons/hr_payroll/report/report_payroll_advice.rml b/addons/hr_payroll/report/report_payroll_advice.rml index 3e0aa3c0af1..4d110fa5aa1 100644 --- a/addons/hr_payroll/report/report_payroll_advice.rml +++ b/addons/hr_payroll/report/report_payroll_advice.rml @@ -126,30 +126,6 @@ - - - - - SI. No. - - - Name of the Employee - - - Amount - - - By Salary - - - Bank Account - - - C/D - - - - [[repeatIn(objects,'o')]] @@ -239,7 +215,7 @@ Bank Account - C/D + D/C diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 6e64c6589e9..7773c5d6d7d 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -95,7 +95,7 @@ class sale_order(osv.osv): for id in ids: res[id] = [0.0, 0.0] cr.execute('''SELECT - p.sale_id, sum(m.product_qty), mp.state as mp_state + p.sale_id, sum(m.product_qty), mp.state as mp_state, m.state as state, p.type as tp FROM stock_move m LEFT JOIN @@ -103,15 +103,21 @@ class sale_order(osv.osv): LEFT JOIN procurement_order mp on (mp.move_id=m.id) WHERE - p.sale_id IN %s GROUP BY mp.state, p.sale_id''', (tuple(ids),)) - for oid, nbr, mp_state in cr.fetchall(): - if mp_state == 'cancel': + p.sale_id IN %s GROUP BY m.state, mp.state, p.sale_id, p.type''', (tuple(ids),)) + + for oid, nbr, state, move_state, type_pick in cr.fetchall(): + if state == 'cancel': continue - if mp_state == 'done': + res[oid][1] += nbr or 0.0 + if state == 'done' or move_state == 'done': res[oid][0] += nbr or 0.0 - res[oid][1] += nbr or 0.0 - else: - res[oid][1] += nbr or 0.0 + + if type_pick == 'in':#this is a returned picking + res[oid][1] -= 2*nbr or 0.0 # Deducting the return picking qty + if state == 'done' or move_state == 'done': + nbr += nbr + res[oid][0] -= nbr or 0.0 + for r in res: if not res[r][1]: res[r] = 0.0