Reviewers: ,
Please review this at http://codereview.tryton.org/941002/
Affected files:
M CHANGELOG
M statement.py
M view/statement_line_tree_editable.xml
Index: CHANGELOG
===================================================================
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,5 @@
+* Allow to use invoice to fill party and account on statement line
+
Version 2.8.0 - 2013-04-22
* Bug fixes (see mercurial logs for details)
Index: statement.py
===================================================================
--- a/statement.py
+++ b/statement.py
@@ -2,7 +2,7 @@
#this repository contains the full copyright notices and license terms.
from decimal import Decimal
from trytond.model import Workflow, ModelView, ModelSQL, fields
-from trytond.pyson import Eval, If
+from trytond.pyson import Eval, If, Bool
from trytond.transaction import Transaction
from trytond.backend import TableHandler
from trytond.pool import Pool
@@ -350,17 +350,15 @@
description = fields.Char('Description')
move = fields.Many2One('account.move', 'Account Move', readonly=True)
invoice = fields.Many2One('account.invoice', 'Invoice',
+ on_change=['party', 'account', 'invoice'],
domain=[
- ('party', '=', Eval('party')),
- ('account', '=', Eval('account')),
+ If(Bool(Eval('party')), [('party', '=', Eval('party'))], []),
+ If(Bool(Eval('party')), [('account', '=', Eval('account'))],
[]),
If(Eval('_parent_statement', {}).get('state') == 'draft',
('state', '=', 'posted'),
('state', '!=', '')),
],
- states={
- 'readonly': (~Eval('amount') | ~Eval('party') |
~Eval('account')),
- },
- depends=['party', 'account', 'amount'])
+ depends=['party', 'account'])
@classmethod
def __setup__(cls):
@@ -443,6 +441,17 @@
res['invoice'] = None
return res
+ def on_change_invoice(self):
+ changes = {}
+ if self.invoice:
+ if not self.party:
+ changes['party'] = self.invoice.party.id
+ changes['party.rec_name'] = self.invoice.party.rec_name
+ if not self.account:
+ changes['account'] = self.invoice.account.id
+ changes['account.rec_name'] = self.invoice.account.rec_name
+ return changes
+
def get_rec_name(self, name):
return self.statement.rec_name
Index: view/statement_line_tree_editable.xml
===================================================================
--- a/view/statement_line_tree_editable.xml
+++ b/view/statement_line_tree_editable.xml
@@ -5,7 +5,7 @@
<field name="date"/>
<field name="amount" sum="Amount"/>
<field name="party"/>
+ <field name="invoice"/>
<field name="account"/>
- <field name="invoice"/>
<field name="description"/>
</tree>