Reviewers: ,


Please review this at http://codereview.tryton.org/583004/

Affected files:
  M invoice.py
  M tests/scenario_account_stock_anglo_saxon.rst


Index: invoice.py
===================================================================

--- a/invoice.py
+++ b/invoice.py
@@ -62,7 +62,9 @@
         moves = []
         # other types will get current cost price
         if self.invoice.type == 'in_invoice':
-            moves = [move for purchase_line in self.purchase_lines
+            with Transaction().set_user(0, set_context=True):
+                purchase_lines = self.__class__(self.id).purchase_lines
+            moves = [move for purchase_line in purchase_lines
                     for move in purchase_line.moves
                     if move.state == 'done']
         elif self.invoice.type == 'out_invoice':

Index: tests/scenario_account_stock_anglo_saxon.rst
===================================================================

--- a/tests/scenario_account_stock_anglo_saxon.rst
+++ b/tests/scenario_account_stock_anglo_saxon.rst
@@ -16,8 +16,8 @@

 Create database::

-    >>> config = config.set_trytond()
-    >>> config.pool.test = True
+    >>> current_config = config.set_trytond()
+    >>> current_config.pool.test = True

 Install account_stock_continental, sale and purchase::

@@ -26,7 +26,7 @@
     ...         ('name', 'in', ('account_stock_anglo_saxon',
     ...             'sale', 'purchase')),
     ...     ])
-    >>> Module.install([x.id for x in modules], config.context)
+    >>> Module.install([x.id for x in modules], current_config.context)
     >>> Wizard('ir.module.module.install_upgrade').execute('upgrade')

 Create company::
@@ -55,7 +55,18 @@
 Reload the context::

     >>> User = Model.get('res.user')
-    >>> config._context = User.get_preferences(True, config.context)
+ >>> current_config._context = User.get_preferences(True, current_config.context)
+
+Create an accountant user::
+
+    >>> Group = Model.get('res.group')
+    >>> accountant = User()
+    >>> accountant.name = 'Accountant'
+    >>> accountant.login = 'accountant'
+    >>> accountant.password = 'accountant'
+    >>> account_group, = Group.find([('name', '=', 'Account')])
+    >>> accountant.groups.append(account_group)
+    >>> accountant.save()

 Create fiscal year::

@@ -80,7 +91,7 @@
     >>> fiscalyear.out_credit_note_sequence = invoice_sequence
     >>> fiscalyear.in_credit_note_sequence = invoice_sequence
     >>> fiscalyear.save()
-    >>> FiscalYear.create_period([fiscalyear.id], config.context)
+    >>> FiscalYear.create_period([fiscalyear.id], current_config.context)

 Create chart of accounts::

@@ -167,7 +178,7 @@
     >>> product.account_journal_stock_customer = stock_journal
     >>> product.account_journal_stock_lost_found = stock_journal
     >>> product.save()
- >>> product_average = Product(Product.copy([product.id], config.context)[0]) + >>> product_average = Product(Product.copy([product.id], current_config.context)[0])
     >>> product_average.cost_price_method = 'average'
     >>> product_average.save()

@@ -199,8 +210,8 @@
     >>> purchase_line.quantity = 7.0
     >>> purchase_line.unit_price = Decimal(6)
     >>> purchase.save()
-    >>> Purchase.quote([purchase.id], config.context)
-    >>> Purchase.confirm([purchase.id], config.context)
+    >>> Purchase.quote([purchase.id], current_config.context)
+    >>> Purchase.confirm([purchase.id], current_config.context)
     >>> purchase.state
     u'confirmed'

@@ -216,8 +227,8 @@
     >>> shipment.incoming_moves.append(move)
     >>> move.quantity = 5.0
     >>> shipment.save()
-    >>> ShipmentIn.receive([shipment.id], config.context)
-    >>> ShipmentIn.done([shipment.id], config.context)
+    >>> ShipmentIn.receive([shipment.id], current_config.context)
+    >>> ShipmentIn.done([shipment.id], current_config.context)
     >>> shipment.state
     u'done'
     >>> stock_supplier.reload()
@@ -244,7 +255,7 @@
     >>> invoice_line = invoice.lines[1]
     >>> invoice_line.unit_price = Decimal('4')
     >>> invoice.save()
-    >>> Invoice.open([invoice.id], config.context)
+    >>> Invoice.open([invoice.id], current_config.context)
     >>> invoice.state
     u'open'
     >>> payable.reload()
@@ -277,9 +288,9 @@
     >>> sale_line.product = product_average
     >>> sale_line.quantity = 3.0
     >>> sale.save()
-    >>> Sale.quote([sale.id], config.context)
-    >>> Sale.confirm([sale.id], config.context)
-    >>> Sale.process([sale.id], config.context)
+    >>> Sale.quote([sale.id], current_config.context)
+    >>> Sale.confirm([sale.id], current_config.context)
+    >>> Sale.process([sale.id], current_config.context)
     >>> sale.state
     u'processing'

@@ -287,16 +298,16 @@

     >>> ShipmentOut = Model.get('stock.shipment.out')
     >>> shipment, = sale.shipments
-    >>> ShipmentOut.assign_try([shipment.id], config.context)
+    >>> ShipmentOut.assign_try([shipment.id], current_config.context)
     True
     >>> shipment.state
     u'assigned'
     >>> shipment.reload()
-    >>> ShipmentOut.pack([shipment.id], config.context)
+    >>> ShipmentOut.pack([shipment.id], current_config.context)
     >>> shipment.state
     u'packed'
     >>> shipment.reload()
-    >>> ShipmentOut.done([shipment.id], config.context)
+    >>> ShipmentOut.done([shipment.id], current_config.context)
     >>> shipment.state
     u'done'
     >>> stock_customer.reload()
@@ -312,7 +323,7 @@

     >>> sale.reload()
     >>> invoice, = sale.invoices
-    >>> Invoice.open([invoice.id], config.context)
+    >>> Invoice.open([invoice.id], current_config.context)
     >>> invoice.state
     u'open'
     >>> receivable.reload()
@@ -331,3 +342,25 @@
     >>> (cogs.debit, cogs.credit) == \
     ... (Decimal('28.00'), Decimal('0.00'))
     True
+
+Now create a supplier invoice with an accountant::
+
+    >>> purchase = Purchase()
+    >>> purchase.party = supplier
+    >>> purchase.payment_term = payment_term
+    >>> purchase.invoice_method = 'order'
+    >>> purchase_line = PurchaseLine()
+    >>> purchase.lines.append(purchase_line)
+    >>> purchase_line.product = product
+    >>> purchase_line.quantity = 5.0
+    >>> purchase_line.unit_price = Decimal(4)
+    >>> purchase.save()
+    >>> Purchase.quote([purchase.id], current_config.context)
+    >>> Purchase.confirm([purchase.id], current_config.context)
+    >>> purchase.state
+    u'confirmed'
+
+    >>> new_config = config.set_trytond(user='accountant',
+ ... password='accountant', database_name=current_config.database_name)
+    >>> Invoice = Model.get('account.invoice')
+    >>> Invoice.open([i.id for i in purchase.invoices], new_config.context)



--
tryton-dev@googlegroups.com mailing list

Reply via email to