[FIX] account: fix unexpected invalidation of field account_invoice.reconciled

Problem: the field account_invoice.reconciled was invalidated by a workflow
signal sent from the compute method of the field. The purpose of the signal was
to re-open the invoice when the account move lines were no longer reconciled,
for instance after cancelling a reconciliation.

Solution: modify the workflow such that it makes an automatic transition from
'paid' to 're-open' when the condition 'not reconciled' is met. This works
because the field 'reconciled' is stored, and each recomputation forces a
reevaluation the workflow. The signal to re-open the invoice is thus no longer
necessary.
This commit is contained in:
Raphael Collet 2014-08-05 10:01:07 +02:00
parent dbca34511e
commit c0997d332a
2 changed files with 9 additions and 12 deletions

View File

@ -97,8 +97,6 @@ class account_invoice(models.Model):
@api.depends('account_id', 'move_id.line_id.account_id', 'move_id.line_id.reconcile_id')
def _compute_reconciled(self):
self.reconciled = self.test_paid()
if not self.reconciled and self.state == 'paid':
self.signal_workflow('open_test')
@api.model
def _get_reference_type(self):

View File

@ -13,14 +13,12 @@
<field name="flow_start">True</field>
<field name="name">draft</field>
</record>
<record id="act_proforma2" model="workflow.activity">
<field name="wkf_id" ref="wkf"/>
<field name="name">proforma2</field>
<field name="action">write({'state':'proforma2'})</field>
<field name="kind">function</field>
</record>
<record id="act_open" model="workflow.activity">
<field name="wkf_id" ref="wkf"/>
<field name="name">open</field>
@ -35,7 +33,7 @@ invoice_validate()</field>
<field name="name">re-open</field>
<field name="action">write({'state':'open'})</field>
<field name="kind">function</field>
</record>
</record>
<record id="act_paid" model="workflow.activity">
<field name="wkf_id" ref="wkf"/>
<field name="name">paid</field>
@ -61,9 +59,9 @@ write({'state':'cancel'})</field>
<record id="t8" model="workflow.transition">
<field name="act_from" ref="act_open"/>
<field name="act_to" ref="act_paid"/>
<field name="trigger_model">account.move.line</field>
<field name="trigger_expr_id">move_line_id_payment_get()</field>
<field name="condition">test_paid()</field>
<field name="trigger_model"/>
<field name="trigger_expr_id"/>
<field name="condition">reconciled</field>
</record>
<record id="t9" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
@ -78,7 +76,8 @@ write({'state':'cancel'})</field>
<record id="t13" model="workflow.transition">
<field name="act_from" ref="act_paid"/>
<field name="act_to" ref="act_open_test"/>
<field name="signal">open_test</field>
<field name="signal"/>
<field name="condition">not reconciled</field>
</record>
<record id="t14" model="workflow.transition">
<field name="act_from" ref="act_open_test"/>
@ -89,9 +88,9 @@ write({'state':'cancel'})</field>
<record id="open_test_to_paid" model="workflow.transition">
<field name="act_from" ref="act_open_test"/>
<field name="act_to" ref="act_paid"/>
<field name="trigger_model">account.move.line</field>
<field name="trigger_expr_id">move_line_id_payment_get()</field>
<field name="condition">test_paid()</field>
<field name="trigger_model"/>
<field name="trigger_expr_id"/>
<field name="condition">reconciled</field>
</record>
<record id="draft_to_pro2" model="workflow.transition">