summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYannick Tivisse <yti@odoo.com>2017-11-14 15:02:36 +0100
committerYannick Tivisse <yti@odoo.com>2017-11-16 14:49:06 +0100
commit6fb8e51b6dedca4e427a437878047ac882deb9f3 (patch)
tree47874d1ec6fa4041f207c935675ba38d63633ffa
parentcbbd9c443f91f5e9740ad90277194222569b7e9c (diff)
[IMP] stock_landed_costs: Convert yml tests to python
-rw-r--r--addons/stock_landed_costs/__manifest__.py6
-rw-r--r--addons/stock_landed_costs/test/stock_landed_costs.yml125
-rw-r--r--addons/stock_landed_costs/test/stock_landed_costs_rounding.yml143
-rw-r--r--addons/stock_landed_costs/tests/__init__.py2
-rw-r--r--addons/stock_landed_costs/tests/common.py8
-rw-r--r--addons/stock_landed_costs/tests/test_stock_landed_costs.py145
-rw-r--r--addons/stock_landed_costs/tests/test_stock_landed_costs_rounding.py155
7 files changed, 310 insertions, 274 deletions
diff --git a/addons/stock_landed_costs/__manifest__.py b/addons/stock_landed_costs/__manifest__.py
index 436a601b9bc..e181f6d9bb4 100644
--- a/addons/stock_landed_costs/__manifest__.py
+++ b/addons/stock_landed_costs/__manifest__.py
@@ -23,12 +23,6 @@ This module allows you to easily add extra costs on pickings and decide the spli
'views/stock_landed_cost_views.xml',
'views/res_config_settings_views.xml',
],
- 'test': [
- '../account/test/account_minimal_test.xml',
- '../stock_account/test/stock_valuation_account.xml',
- 'test/stock_landed_costs.yml',
- 'test/stock_landed_costs_rounding.yml',
- ],
'installable': True,
'auto_install': False,
}
diff --git a/addons/stock_landed_costs/test/stock_landed_costs.yml b/addons/stock_landed_costs/test/stock_landed_costs.yml
deleted file mode 100644
index f98ca67a312..00000000000
--- a/addons/stock_landed_costs/test/stock_landed_costs.yml
+++ /dev/null
@@ -1,125 +0,0 @@
--
- In order to test the landed costs feature of stock, I create a landed cost, confirm it and check its account move created
--
- I create 2 products with different volume and gross weight and configure them for real_time valuation and fifo costing method
--
- !record {model: product.product, id: product_landed_cost_1}:
- name: "LC product 1"
- cost_method: fifo
- valuation: real_time
- weight: 10
- volume: 1
- property_stock_account_input: o_expense
- property_stock_account_output: o_income
--
- !record {model: product.product, id: product_landed_cost_2}:
- name: "LC product 2"
- cost_method: fifo
- valuation: real_time
- weight: 20
- volume: 1.5
- property_stock_account_input: o_expense
- property_stock_account_output: o_income
--
- I create 2 picking moving those products
--
- !record {model: stock.picking, id: picking_landed_cost_1}:
- name: 'LC_pick_1'
- picking_type_id: stock.picking_type_out
- move_lines:
- - name: move 1
- product_id: product_landed_cost_1
- product_uom_qty: 5
- product_uom: product.product_uom_unit
- location_id: stock.stock_location_stock
- location_dest_id: stock.stock_location_customers
--
- Confirm and assign picking
--
- !python {model: stock.picking, id: picking_landed_cost_1}: |
- self.env.user.company_id.anglo_saxon_accounting = True
- self.action_confirm()
- self.action_assign()
- self.move_lines.quantity_done = 5
- self.button_validate()
--
- !record {model: stock.picking, id: picking_landed_cost_2}:
- name: 'LC_pick_2'
- picking_type_id: stock.picking_type_out
- move_lines:
- - name: move 2
- product_id: product_landed_cost_2
- product_uom_qty: 10
- product_uom: product.product_uom_unit
- location_id: stock.stock_location_stock
- location_dest_id: stock.stock_location_customers
--
- Confirm and assign picking
--
- !python {model: stock.picking, id: picking_landed_cost_2}: |
- self.action_confirm()
- self.action_assign()
- self.move_lines.quantity_done = 10
- self.button_validate()
--
- I create a landed cost for those 2 pickings
--
- !record {model: stock.landed.cost, id: stock_landed_cost_1}:
- picking_ids: [picking_landed_cost_1, picking_landed_cost_2]
- account_journal_id: expenses_journal
- cost_lines:
- - name: 'equal split'
- split_method: 'equal'
- price_unit: 10
- product_id: product.product_product_2
- - name: 'split by quantity'
- split_method: 'by_quantity'
- price_unit: 150
- product_id: product.product_product_2
- - name: 'split by weight'
- split_method: 'by_weight'
- price_unit: 250
- product_id: product.product_product_2
- - name: 'split by volume'
- split_method: 'by_volume'
- price_unit: 20
- product_id: product.product_product_2
- valuation_adjustment_lines: []
--
- I compute the landed cost using Compute button
--
- !python {model: stock.landed.cost, id: stock_landed_cost_1}: |
- self.compute_landed_cost()
--
- I check the valuation adjustment lines
--
- !python {model: stock.landed.cost, id: stock_landed_cost_1}: |
- for valuation in self.valuation_adjustment_lines:
- if valuation.cost_line_id.name == 'equal split':
- assert valuation.additional_landed_cost == 5
- elif valuation.cost_line_id.name == 'split by quantity' and valuation.move_id.name == "move 1":
- assert valuation.additional_landed_cost == 50
- elif valuation.cost_line_id.name == 'split by quantity' and valuation.move_id.name == "move 2":
- assert valuation.additional_landed_cost == 100
- elif valuation.cost_line_id.name == 'split by weight' and valuation.move_id.name == "move 1":
- assert valuation.additional_landed_cost == 50
- elif valuation.cost_line_id.name == 'split by weight' and valuation.move_id.name == "move 2":
- assert valuation.additional_landed_cost == 200
- elif valuation.cost_line_id.name == 'split by volume' and valuation.move_id.name == "move 1":
- assert valuation.additional_landed_cost == 5
- elif valuation.cost_line_id.name == 'split by volume' and valuation.move_id.name == "move 2":
- assert valuation.additional_landed_cost == 15
- else:
- raise 'unrecognized valuation adjustment line'
--
- I confirm the landed cost
--
- !python {model: stock.landed.cost, id: stock_landed_cost_1}: |
- self.button_validate()
--
- I check that the landed cost is now "Closed" and that it has an accounting entry
--
- !assert {model: stock.landed.cost, id: stock_landed_cost_1}:
- - state == 'done'
- - account_move_id
- - len(account_move_id.line_ids) == 48
diff --git a/addons/stock_landed_costs/test/stock_landed_costs_rounding.yml b/addons/stock_landed_costs/test/stock_landed_costs_rounding.yml
deleted file mode 100644
index 225ab5a74c4..00000000000
--- a/addons/stock_landed_costs/test/stock_landed_costs_rounding.yml
+++ /dev/null
@@ -1,143 +0,0 @@
--
- In order to test the rounding in landed costs feature of stock, I create 2 landed cost
--
- Define undivisible units
--
- !record {model: product.uom, id: product_uom_unit_round_1}:
- category_id: product.product_uom_categ_unit
- name: Undivisible Unit(s)
- factor: 1.0
- rounding: 1.0
--
- I create 2 products with different cost prices and configure them for real_time valuation and real price costing method
--
- !record {model: product.product, id: product_landed_cost_3}:
- name: "LC product 3"
- cost_method: fifo
- uom_id: product_uom_unit_round_1
- valuation: real_time
- property_stock_account_input: o_expense
- property_stock_account_output: o_income
--
- !record {model: product.product, id: product_landed_cost_4}:
- name: "LC product 4"
- cost_method: fifo
- uom_id: product_uom_unit_round_1
- valuation: real_time
- property_stock_account_input: o_expense
- property_stock_account_output: o_income
--
- I create 2 pickings moving those products
--
- !record {model: stock.picking, id: picking_landed_cost_3}:
- name: 'LC_pick_3'
- picking_type_id: stock.picking_type_in
- move_lines:
- - name: move 3
- product_id: product_landed_cost_3
- product_uom_qty: 13
- product_uom: product_uom_unit_round_1
- location_id: stock.stock_location_customers
- location_dest_id: stock.stock_location_stock
--
- !record {model: stock.picking, id: picking_landed_cost_4}:
- name: 'LC_pick_4'
- picking_type_id: stock.picking_type_in
- move_lines:
- - name: move 4
- product_id: product_landed_cost_4
- product_uom_qty: 1
- product_uom: product.product_uom_dozen
- location_id: stock.stock_location_customers
- location_dest_id: stock.stock_location_stock
- price_unit: !eval 17.00/12.00
--
- We perform all the tests for LC_pick_3
--
- I receive picking LC_pick_3, and check how many quants are created
--
- !python {model: stock.picking, id: picking_landed_cost_3}: |
- self.move_lines.price_unit = 1.0
-
- self.action_confirm()
- self.action_assign()
- self.action_done()
--
- I create a landed cost for picking 3
--
- !record {model: stock.landed.cost, id: stock_landed_cost_2}:
- picking_ids: [picking_landed_cost_3]
- account_journal_id: expenses_journal
- cost_lines:
- - name: 'equal split'
- split_method: 'equal'
- price_unit: 15
- product_id: product.product_product_1
- valuation_adjustment_lines: []
--
- I compute the landed cost using Compute button
--
- !python {model: stock.landed.cost, id: stock_landed_cost_2}: |
- self.compute_landed_cost()
--
- I check the valuation adjustment lines
--
- !python {model: stock.landed.cost, id: stock_landed_cost_2}: |
- for valuation in self.valuation_adjustment_lines:
- assert valuation.additional_landed_cost == 15
--
- I confirm the landed cost
--
- !python {model: stock.landed.cost, id: stock_landed_cost_2}: |
- self.button_validate()
--
- I check that the landed cost is now "Closed" and that it has an accounting entry
--
- !assert {model: stock.landed.cost, id: stock_landed_cost_2}:
- - state == 'done'
- - account_move_id
--
- We perform all the tests for LC_pick_4
--
- I receive picking LC_pick_4, and check how many quants are created
--
- !python {model: stock.picking, id: picking_landed_cost_4}: |
- self.move_lines.price_unit = 17.0/12.0
-
- self.action_confirm()
- self.action_assign()
- self.action_done()
--
- I create a landed cost for picking 4
--
- !record {model: stock.landed.cost, id: stock_landed_cost_3}:
- picking_ids: [picking_landed_cost_4]
- account_journal_id: expenses_journal
- cost_lines:
- - name: 'equal split'
- split_method: 'equal'
- price_unit: 11
- product_id: product.product_product_1
- valuation_adjustment_lines: []
--
- I compute the landed cost using Compute button
--
- !python {model: stock.landed.cost, id: stock_landed_cost_3}: |
- self.compute_landed_cost()
--
- I check the valuation adjustment lines
--
- !python {model: stock.landed.cost, id: stock_landed_cost_3}: |
- for valuation in self.valuation_adjustment_lines:
- assert valuation.additional_landed_cost == 11
--
- I confirm the landed cost
--
- !python {model: stock.landed.cost, id: stock_landed_cost_3}: |
- self.button_validate()
--
- I check that the landed cost is now "Closed" and that it has an accounting entry
--
- !assert {model: stock.landed.cost, id: stock_landed_cost_3}:
- - state == 'done'
- - account_move_id
diff --git a/addons/stock_landed_costs/tests/__init__.py b/addons/stock_landed_costs/tests/__init__.py
index 6fba363c3bf..750868a9cbb 100644
--- a/addons/stock_landed_costs/tests/__init__.py
+++ b/addons/stock_landed_costs/tests/__init__.py
@@ -1,3 +1,5 @@
# -*- coding: utf-8 -*-
+from . import test_stock_landed_costs
from . import test_stock_landed_costs_purchase
+from . import test_stock_landed_costs_rounding
diff --git a/addons/stock_landed_costs/tests/common.py b/addons/stock_landed_costs/tests/common.py
index 34158874a07..56087a3726c 100644
--- a/addons/stock_landed_costs/tests/common.py
+++ b/addons/stock_landed_costs/tests/common.py
@@ -1,9 +1,17 @@
# -*- coding: utf-8 -*-
+from odoo import tools
from odoo.addons.account.tests.account_test_classes import AccountingTestCase
+from odoo.modules.module import get_module_resource
+
class TestStockLandedCostsCommon(AccountingTestCase):
+ def _load(self, module, *args):
+ tools.convert_file(self.cr, 'stock_landed_costs',
+ get_module_resource(module, *args),
+ {}, 'init', False, 'test', self.registry._assertion_report)
+
def setUp(self):
super(TestStockLandedCostsCommon, self).setUp()
# Objects
diff --git a/addons/stock_landed_costs/tests/test_stock_landed_costs.py b/addons/stock_landed_costs/tests/test_stock_landed_costs.py
new file mode 100644
index 00000000000..1d709b17f16
--- /dev/null
+++ b/addons/stock_landed_costs/tests/test_stock_landed_costs.py
@@ -0,0 +1,145 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.addons.stock_landed_costs.tests.common import TestStockLandedCostsCommon
+from odoo.exceptions import ValidationError
+
+
+class TestStockLandedCosts(TestStockLandedCostsCommon):
+
+ def test_stock_landed_costs(self):
+ # In order to test the landed costs feature of stock,
+ # I create a landed cost, confirm it and check its account move created
+
+ self._load('account', 'test', 'account_minimal_test.xml')
+ self._load('stock_account', 'test', 'stock_valuation_account.xml')
+
+ # I create 2 products with different volume and gross weight and configure
+ # them for real_time valuation and fifo costing method
+ product_landed_cost_1 = self.env['product.product'].create({
+ 'name': "LC product 1",
+ 'cost_method': 'fifo',
+ 'valuation': 'real_time',
+ 'weight': 10,
+ 'volume': 1,
+ 'property_stock_account_input': self.ref('stock_landed_costs.o_expense'),
+ 'property_stock_account_output': self.ref('stock_landed_costs.o_income'),
+ })
+
+ product_landed_cost_2 = self.env['product.product'].create({
+ 'name': "LC product 2",
+ 'cost_method': 'fifo',
+ 'valuation': 'real_time',
+ 'weight': 20,
+ 'volume': 1.5,
+ 'property_stock_account_input': self.ref('stock_landed_costs.o_expense'),
+ 'property_stock_account_output': self.ref('stock_landed_costs.o_income'),
+ })
+
+ picking_default_vals = self.env['stock.picking'].default_get(list(self.env['stock.picking'].fields_get()))
+
+ # I create 2 picking moving those products
+ vals = dict(picking_default_vals, **{
+ 'name': 'LC_pick_1',
+ 'picking_type_id': self.ref('stock.picking_type_out'),
+ 'move_lines': [(0, 0, {
+ 'product_id': product_landed_cost_1.id,
+ 'product_uom_qty': 5,
+ 'product_uom': self.ref('product.product_uom_unit'),
+ 'location_id': self.ref('stock.stock_location_stock'),
+ 'location_dest_id': self.ref('stock.stock_location_customers'),
+ })],
+ })
+ picking_landed_cost_1 = self.env['stock.picking'].new(vals)
+ picking_landed_cost_1.onchange_picking_type()
+ picking_landed_cost_1.move_lines.onchange_product_id()
+ picking_landed_cost_1.move_lines.name = 'move 1'
+ vals = picking_landed_cost_1._convert_to_write(picking_landed_cost_1._cache)
+ picking_landed_cost_1 = self.env['stock.picking'].create(vals)
+
+ # Confirm and assign picking
+ self.env.user.company_id.anglo_saxon_accounting = True
+ picking_landed_cost_1.action_confirm()
+ picking_landed_cost_1.action_assign()
+ picking_landed_cost_1.move_lines.quantity_done = 5
+ picking_landed_cost_1.button_validate()
+
+ vals = dict(picking_default_vals, **{
+ 'name': 'LC_pick_2',
+ 'picking_type_id': self.ref('stock.picking_type_out'),
+ 'move_lines': [(0, 0, {
+ 'product_id': product_landed_cost_2.id,
+ 'product_uom_qty': 10,
+ 'product_uom': self.ref('product.product_uom_unit'),
+ 'location_id': self.ref('stock.stock_location_stock'),
+ 'location_dest_id': self.ref('stock.stock_location_customers'),
+ })],
+ })
+ picking_landed_cost_2 = self.env['stock.picking'].new(vals)
+ picking_landed_cost_2.onchange_picking_type()
+ picking_landed_cost_2.move_lines.onchange_product_id()
+ picking_landed_cost_2.move_lines.name = 'move 2'
+ vals = picking_landed_cost_2._convert_to_write(picking_landed_cost_2._cache)
+ picking_landed_cost_2 = self.env['stock.picking'].create(vals)
+
+ # Confirm and assign picking
+ picking_landed_cost_2.action_confirm()
+ picking_landed_cost_2.action_assign()
+ picking_landed_cost_2.move_lines.quantity_done = 10
+ picking_landed_cost_2.button_validate()
+
+ # I create a landed cost for those 2 pickings
+ default_vals = self.env['stock.landed.cost'].default_get(list(self.env['stock.landed.cost'].fields_get()))
+ default_vals.update({
+ 'picking_ids': [picking_landed_cost_1.id, picking_landed_cost_2.id],
+ 'account_journal_id': self.ref('stock_landed_costs.expenses_journal'),
+ 'cost_lines': [
+ (0, 0, {'product_id': self.ref('product.product_product_2')}),
+ (0, 0, {'product_id': self.ref('product.product_product_2')}),
+ (0, 0, {'product_id': self.ref('product.product_product_2')}),
+ (0, 0, {'product_id': self.ref('product.product_product_2')})],
+ 'valuation_adjustment_lines': [],
+ })
+ cost_lines_values = {
+ 'name': ['equal split', 'split by quantity', 'split by weight', 'split by volume'],
+ 'split_method': ['equal', 'by_quantity', 'by_weight', 'by_volume'],
+ 'price_unit': [10, 150, 250, 20],
+ }
+ stock_landed_cost_1 = self.env['stock.landed.cost'].new(default_vals)
+ for index, cost_line in enumerate(stock_landed_cost_1.cost_lines):
+ cost_line.onchange_product_id()
+ cost_line.name = cost_lines_values['name'][index]
+ cost_line.split_method = cost_lines_values['split_method'][index]
+ cost_line.price_unit = cost_lines_values['price_unit'][index]
+ vals = stock_landed_cost_1._convert_to_write(stock_landed_cost_1._cache)
+ stock_landed_cost_1 = self.env['stock.landed.cost'].create(vals)
+
+ # I compute the landed cost using Compute button
+ stock_landed_cost_1.compute_landed_cost()
+
+ # I check the valuation adjustment lines
+ for valuation in stock_landed_cost_1.valuation_adjustment_lines:
+ if valuation.cost_line_id.name == 'equal split':
+ self.assertEqual(valuation.additional_landed_cost, 5)
+ elif valuation.cost_line_id.name == 'split by quantity' and valuation.move_id.name == "move 1":
+ self.assertEqual(valuation.additional_landed_cost, 50)
+ elif valuation.cost_line_id.name == 'split by quantity' and valuation.move_id.name == "move 2":
+ self.assertEqual(valuation.additional_landed_cost, 100)
+ elif valuation.cost_line_id.name == 'split by weight' and valuation.move_id.name == "move 1":
+ self.assertEqual(valuation.additional_landed_cost, 50)
+ elif valuation.cost_line_id.name == 'split by weight' and valuation.move_id.name == "move 2":
+ self.assertEqual(valuation.additional_landed_cost, 200)
+ elif valuation.cost_line_id.name == 'split by volume' and valuation.move_id.name == "move 1":
+ self.assertEqual(valuation.additional_landed_cost, 5)
+ elif valuation.cost_line_id.name == 'split by volume' and valuation.move_id.name == "move 2":
+ self.assertEqual(valuation.additional_landed_cost, 15)
+ else:
+ raise ValidationError('unrecognized valuation adjustment line')
+
+ # I confirm the landed cost
+ stock_landed_cost_1.button_validate()
+
+ # I check that the landed cost is now "Closed" and that it has an accounting entry
+ self.assertEqual(stock_landed_cost_1.state, "done")
+ self.assertTrue(stock_landed_cost_1.account_move_id)
+ self.assertEqual(len(stock_landed_cost_1.account_move_id.line_ids), 48)
diff --git a/addons/stock_landed_costs/tests/test_stock_landed_costs_rounding.py b/addons/stock_landed_costs/tests/test_stock_landed_costs_rounding.py
new file mode 100644
index 00000000000..d069389439a
--- /dev/null
+++ b/addons/stock_landed_costs/tests/test_stock_landed_costs_rounding.py
@@ -0,0 +1,155 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.addons.stock_landed_costs.tests.common import TestStockLandedCostsCommon
+
+
+class TestStockLandedCostsRounding(TestStockLandedCostsCommon):
+
+ def test_stock_landed_costs_rounding(self):
+ # In order to test the rounding in landed costs feature of stock, I create 2 landed cost
+
+ self._load('account', 'test', 'account_minimal_test.xml')
+ self._load('stock_account', 'test', 'stock_valuation_account.xml')
+
+ # Define undivisible units
+ product_uom_unit_round_1 = self.env['product.uom'].create({
+ 'category_id': self.ref('product.product_uom_categ_unit'),
+ 'name': 'Undivisible Unit(s)',
+ 'factor': 1.0,
+ 'rounding': 1.0,
+ })
+
+ # I create 2 products with different cost prices and configure them for real_time
+ # valuation and real price costing method
+ product_landed_cost_3 = self.env['product.product'].create({
+ 'name': "LC product 3",
+ 'cost_method': 'fifo',
+ 'uom_id': product_uom_unit_round_1.id,
+ 'valuation': 'real_time',
+ 'property_stock_account_input': self.ref('stock_landed_costs.o_expense'),
+ 'property_stock_account_output': self.ref('stock_landed_costs.o_income'),
+ })
+
+ product_landed_cost_4 = self.env['product.product'].create({
+ 'name': "LC product 4",
+ 'cost_method': 'fifo',
+ 'uom_id': product_uom_unit_round_1.id,
+ 'valuation': 'real_time',
+ 'property_stock_account_input': self.ref('stock_landed_costs.o_expense'),
+ 'property_stock_account_output': self.ref('stock_landed_costs.o_income'),
+ })
+
+ picking_default_vals = self.env['stock.picking'].default_get(list(self.env['stock.picking'].fields_get()))
+
+ # I create 2 pickings moving those products
+ vals = dict(picking_default_vals, **{
+ 'name': 'LC_pick_3',
+ 'picking_type_id': self.ref('stock.picking_type_in'),
+ 'move_lines': [(0, 0, {
+ 'product_id': product_landed_cost_3.id,
+ 'product_uom_qty': 13,
+ 'product_uom': product_uom_unit_round_1.id,
+ 'location_id': self.ref('stock.stock_location_customers'),
+ 'location_dest_id': self.ref('stock.stock_location_stock'),
+ })],
+ })
+ picking_landed_cost_3 = self.env['stock.picking'].new(vals)
+ picking_landed_cost_3.onchange_picking_type()
+ picking_landed_cost_3.move_lines.onchange_product_id()
+ picking_landed_cost_3.move_lines.name = 'move 3'
+ vals = picking_landed_cost_3._convert_to_write(picking_landed_cost_3._cache)
+ picking_landed_cost_3 = self.env['stock.picking'].create(vals)
+
+ vals = dict(picking_default_vals, **{
+ 'name': 'LC_pick_4',
+ 'picking_type_id': self.ref('stock.picking_type_in'),
+ 'move_lines': [(0, 0, {
+ 'product_id': product_landed_cost_4.id,
+ 'product_uom_qty': 1,
+ 'product_uom': self.ref('product.product_uom_dozen'),
+ 'location_id': self.ref('stock.stock_location_customers'),
+ 'location_dest_id': self.ref('stock.stock_location_stock'),
+ 'price_unit': 17.00 / 12.00,
+ })],
+ })
+ picking_landed_cost_4 = self.env['stock.picking'].new(vals)
+ picking_landed_cost_4.onchange_picking_type()
+ picking_landed_cost_4.move_lines.onchange_product_id()
+ picking_landed_cost_4.move_lines.name = 'move 4'
+ vals = picking_landed_cost_4._convert_to_write(picking_landed_cost_4._cache)
+ picking_landed_cost_4 = self.env['stock.picking'].create(vals)
+
+ # We perform all the tests for LC_pick_3
+ # I receive picking LC_pick_3, and check how many quants are created
+ picking_landed_cost_3.move_lines.price_unit = 1.0
+ picking_landed_cost_3.action_confirm()
+ picking_landed_cost_3.action_assign()
+ picking_landed_cost_3.action_done()
+
+ # I create a landed cost for picking 3
+ default_vals = self.env['stock.landed.cost'].default_get(list(self.env['stock.landed.cost'].fields_get()))
+ default_vals.update({
+ 'picking_ids': [picking_landed_cost_3.id],
+ 'account_journal_id': self.ref('stock_landed_costs.expenses_journal'),
+ 'cost_lines': [(0, 0, {'product_id': self.ref('product.product_product_1')})],
+ 'valuation_adjustment_lines': [],
+ })
+ stock_landed_cost_2 = self.env['stock.landed.cost'].new(default_vals)
+ stock_landed_cost_2.cost_lines.onchange_product_id()
+ stock_landed_cost_2.cost_lines.name = 'equal split'
+ stock_landed_cost_2.cost_lines.split_method = 'equal'
+ stock_landed_cost_2.cost_lines.price_unit = 15
+ vals = stock_landed_cost_2._convert_to_write(stock_landed_cost_2._cache)
+ stock_landed_cost_2 = self.env['stock.landed.cost'].create(vals)
+
+ # I compute the landed cost using Compute button
+ stock_landed_cost_2.compute_landed_cost()
+
+ # I check the valuation adjustment lines
+ for valuation in stock_landed_cost_2.valuation_adjustment_lines:
+ self.assertEqual(valuation.additional_landed_cost, 15)
+
+ # I confirm the landed cost
+ stock_landed_cost_2.button_validate()
+
+ # I check that the landed cost is now "Closed" and that it has an accounting entry
+ self.assertEqual(stock_landed_cost_2.state, 'done')
+ self.assertTrue(stock_landed_cost_2.account_move_id)
+
+ # We perform all the tests for LC_pick_4
+ # I receive picking LC_pick_4, and check how many quants are created
+ picking_landed_cost_4.move_lines.price_unit = 17.0/12.0
+ picking_landed_cost_4.action_confirm()
+ picking_landed_cost_4.action_assign()
+ picking_landed_cost_4.action_done()
+
+ # I create a landed cost for picking 4
+ default_vals = self.env['stock.landed.cost'].default_get(list(self.env['stock.landed.cost'].fields_get()))
+ default_vals.update({
+ 'picking_ids': [picking_landed_cost_4.id],
+ 'account_journal_id': self.ref('stock_landed_costs.expenses_journal'),
+ 'cost_lines': [(0, 0, {'product_id': self.ref('product.product_product_1')})],
+ 'valuation_adjustment_lines': [],
+ })
+ stock_landed_cost_3 = self.env['stock.landed.cost'].new(default_vals)
+ stock_landed_cost_3.cost_lines.onchange_product_id()
+ stock_landed_cost_3.cost_lines.name = 'equal split'
+ stock_landed_cost_3.cost_lines.split_method = 'equal'
+ stock_landed_cost_3.cost_lines.price_unit = 11
+ vals = stock_landed_cost_3._convert_to_write(stock_landed_cost_3._cache)
+ stock_landed_cost_3 = self.env['stock.landed.cost'].create(vals)
+
+ # I compute the landed cost using Compute button
+ stock_landed_cost_3.compute_landed_cost()
+
+ # I check the valuation adjustment lines
+ for valuation in stock_landed_cost_3.valuation_adjustment_lines:
+ self.assertEqual(valuation.additional_landed_cost, 11)
+
+ # I confirm the landed cost
+ stock_landed_cost_3.button_validate()
+
+ # I check that the landed cost is now "Closed" and that it has an accounting entry
+ self.assertEqual(stock_landed_cost_3.state, 'done')
+ self.assertTrue(stock_landed_cost_3.account_move_id)