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

Reply via email to