Reviewers: ,
Please review this at http://codereview.tryton.org/899002/ Affected files: M trytond/modules/account_asset/tests/scenario_account_asset.rst M trytond/modules/account_invoice/CHANGELOG M trytond/modules/account_invoice/invoice.py M trytond/modules/account_invoice/tests/scenario_invoice.rst M trytond/modules/account_invoice/tests/scenario_invoice_supplier.rst M trytond/modules/account_invoice/view/invoice_line_form.xml M trytond/modules/account_invoice_line_standalone/invoice.py M trytond/modules/account_statement/tests/scenario_account_statement.rst
Index: trytond/modules/account_asset/tests/scenario_account_asset.rst =================================================================== --- a/trytond/modules/account_asset/tests/scenario_account_asset.rst +++ b/trytond/modules/account_asset/tests/scenario_account_asset.rst @@ -167,6 +167,7 @@ >>> supplier_invoice.party = supplier >>> invoice_line = InvoiceLine() >>> supplier_invoice.lines.append(invoice_line) + >>> invoice_line.invoice_type = supplier_invoice.type >>> invoice_line.product = asset_product >>> invoice_line.quantity = 1 >>> invoice_line.account == asset_account @@ -280,6 +281,7 @@ >>> customer_invoice.party = customer >>> invoice_line = InvoiceLine() >>> customer_invoice.lines.append(invoice_line) + >>> invoice_line.invoice_type = customer_invoice.type >>> invoice_line.product = asset_product >>> invoice_line.asset = asset >>> invoice_line.quantity = 1 Index: trytond/modules/account_invoice/CHANGELOG =================================================================== --- a/trytond/modules/account_invoice/CHANGELOG +++ b/trytond/modules/account_invoice/CHANGELOG @@ -1,3 +1,5 @@ +* Add domain on line to set correctly their invoice_type + Version 2.8.0 - 2013-04-22 * Bug fixes (see mercurial logs for details) * Add origin Reference on Invoice Line Index: trytond/modules/account_invoice/invoice.py =================================================================== --- a/trytond/modules/account_invoice/invoice.py +++ b/trytond/modules/account_invoice/invoice.py @@ -118,9 +118,12 @@ payment_term = fields.Many2One('account.invoice.payment_term', 'Payment Term', required=True, states=_STATES, depends=_DEPENDS) lines = fields.One2Many('account.invoice.line', 'invoice', 'Lines', + domain=[ + ('invoice_type', '=', Eval('type')), + ], states=_STATES, on_change=[ 'lines', 'taxes', 'currency', 'party', 'type' - ], depends=['state', 'currency_date']) + ], depends=['state', 'currency_date', 'type']) taxes = fields.One2Many('account.invoice.tax', 'invoice', 'Tax Lines', states=_STATES, depends=_DEPENDS, on_change=['lines', 'taxes', 'currency', 'party', 'type']) @@ -1988,6 +1991,14 @@ Return values to credit line. ''' res = {} + if self.invoice_type == 'out_invoice': + res['invoice_type'] = 'out_credit_note' + elif self.invoice_type == 'in_invoice': + res['invoice_type'] = 'in_credit_note' + elif self.invoice_type == 'out_credit_note': + res['invoice_type'] = 'out_invoice' + elif self.invoice_type == 'in_credit_note': + res['invoice_type'] = 'in_invoice' for field in ('sequence', 'type', 'quantity', 'unit_price', 'description'): Index: trytond/modules/account_invoice/tests/scenario_invoice.rst =================================================================== --- a/trytond/modules/account_invoice/tests/scenario_invoice.rst +++ b/trytond/modules/account_invoice/tests/scenario_invoice.rst @@ -186,8 +186,10 @@ >>> invoice.lines.append(line) >>> line.product = product >>> line.quantity = 5 + >>> line.invoice_type = invoice.type >>> line = InvoiceLine() >>> invoice.lines.append(line) + >>> line.invoice_type = invoice.type >>> line.account = revenue >>> line.description = 'Test' >>> line.quantity = 1 Index: trytond/modules/account_invoice/tests/scenario_invoice_supplier.rst =================================================================== --- a/trytond/modules/account_invoice/tests/scenario_invoice_supplier.rst +++ b/trytond/modules/account_invoice/tests/scenario_invoice_supplier.rst @@ -183,10 +183,12 @@ >>> invoice.invoice_date = today >>> line = InvoiceLine() >>> invoice.lines.append(line) + >>> line.invoice_type = invoice.type >>> line.product = product >>> line.quantity = 5 >>> line = InvoiceLine() >>> invoice.lines.append(line) + >>> line.invoice_type = invoice.type >>> line.account = expense >>> line.description = 'Test' >>> line.quantity = 1 Index: trytond/modules/account_invoice/view/invoice_line_form.xml =================================================================== --- a/trytond/modules/account_invoice/view/invoice_line_form.xml +++ b/trytond/modules/account_invoice/view/invoice_line_form.xml @@ -35,4 +35,5 @@ </page> </notebook> <field name="party_lang" invisible="1" colspan="4"/> + <field name="invoice_type" invisible="1" colspan="4"/> </form> Index: trytond/modules/account_invoice_line_standalone/invoice.py =================================================================== --- a/trytond/modules/account_invoice_line_standalone/invoice.py +++ b/trytond/modules/account_invoice_line_standalone/invoice.py @@ -15,13 +15,12 @@ def __setup__(cls): super(Invoice, cls).__setup__() add_remove = [ - ('invoice_type', '=', Eval('type')), ('party', '=', Eval('party')), ('currency', '=', Eval('currency')), ('company', '=', Eval('company')), ('invoice', '=', None), ] - add_remove_depends = set(['type', 'party', 'currency', 'company']) + add_remove_depends = set(['party', 'currency', 'company']) if not cls.lines.add_remove: cls.lines.add_remove = add_remove Index: trytond/modules/account_statement/tests/scenario_account_statement.rst =================================================================== --- a/trytond/modules/account_statement/tests/scenario_account_statement.rst +++ b/trytond/modules/account_statement/tests/scenario_account_statement.rst @@ -145,6 +145,7 @@ >>> customer_invoice1.payment_term = payment_term >>> invoice_line = InvoiceLine() >>> customer_invoice1.lines.append(invoice_line) + >>> invoice_line.invoice_type = customer_invoice1.type >>> invoice_line.quantity = 1 >>> invoice_line.unit_price = Decimal('100') >>> invoice_line.account = revenue @@ -159,6 +160,7 @@ >>> customer_invoice2.payment_term = payment_term >>> invoice_line = InvoiceLine() >>> customer_invoice2.lines.append(invoice_line) + >>> invoice_line.invoice_type = customer_invoice2.type >>> invoice_line.quantity = 1 >>> invoice_line.unit_price = Decimal('150') >>> invoice_line.account = revenue @@ -175,6 +177,7 @@ >>> customer_credit_note.payment_term = payment_term >>> invoice_line = InvoiceLine() >>> customer_credit_note.lines.append(invoice_line) + >>> invoice_line.invoice_type = customer_credit_note.type >>> invoice_line.quantity = 1 >>> invoice_line.unit_price = Decimal('50') >>> invoice_line.account = revenue @@ -191,6 +194,7 @@ >>> supplier_invoice.payment_term = payment_term >>> invoice_line = InvoiceLine() >>> supplier_invoice.lines.append(invoice_line) + >>> invoice_line.invoice_type = supplier_invoice.type >>> invoice_line.quantity = 1 >>> invoice_line.unit_price = Decimal('50') >>> invoice_line.account = expense