Browse Source

[FIX] add triggers to recompute the amounts / hours on invoice or analytic lines changes

pull/2/head
Guewen Baconnier @ Camptocamp 12 years ago
parent
commit
efcdc073bc
  1. 33
      analytic_hours_block/hours_block.py

33
analytic_hours_block/hours_block.py

@ -146,12 +146,39 @@ class AccountHoursBlock(orm.Model):
result[block]['amount_hours_block_done'] result[block]['amount_hours_block_done']
return result return result
def _get_analytic_line(self, cr, uid, ids, context=None):
invoice_ids = []
an_lines_obj = self.pool.get('account.analytic.line')
block_obj = self.pool.get('account.hours.block')
for line in an_lines_obj.browse(cr, uid, ids, context=context):
if line.invoice_id:
invoice_ids.append(line.invoice_id.id)
return block_obj.search(
cr, uid, [('invoice_id', 'in', invoice_ids)], context=context)
def _get_invoice(self, cr, uid, ids, context=None):
block_ids = set()
inv_obj = self.pool.get('account.invoice')
for invoice in inv_obj.browse(cr, uid, ids, context=context):
block_ids.update([inv.id for inv in invoice.account_hours_block_ids])
return list(block_ids)
_recompute_triggers = {
'account.hours.block': (lambda self, cr, uid, ids, c=None:
ids, ['invoice_id', 'type'], 10),
'account.invoice': (_get_invoice, ['analytic_line_ids'], 10),
'account.analytic.line': (
_get_analytic_line,
['product_uom_id', 'unit_amount', 'to_invoice', 'invoice_id'],
10),
}
_columns = { _columns = {
'amount_hours_block': fields.function( 'amount_hours_block': fields.function(
_compute, _compute,
type='float', type='float',
string='Quantity / Amount bought', string='Quantity / Amount bought',
store=True,
store=_recompute_triggers,
multi='amount_hours_block_delta', multi='amount_hours_block_delta',
help="Amount bought by the customer. " help="Amount bought by the customer. "
"This amount is expressed in the base Unit of Measure " "This amount is expressed in the base Unit of Measure "
@ -160,7 +187,7 @@ class AccountHoursBlock(orm.Model):
_compute, _compute,
type='float', type='float',
string='Quantity / Amount used', string='Quantity / Amount used',
store=True,
store=_recompute_triggers,
multi='amount_hours_block_delta', multi='amount_hours_block_delta',
help="Amount done by the staff. " help="Amount done by the staff. "
"This amount is expressed in the base Unit of Measure " "This amount is expressed in the base Unit of Measure "
@ -169,7 +196,7 @@ class AccountHoursBlock(orm.Model):
_compute, _compute,
type='float', type='float',
string='Difference', string='Difference',
store=True,
store=_recompute_triggers,
multi='amount_hours_block_delta', multi='amount_hours_block_delta',
help="Difference between bought and used. " help="Difference between bought and used. "
"This amount is expressed in the base Unit of Measure " "This amount is expressed in the base Unit of Measure "

Loading…
Cancel
Save