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