From e9d3ca720f05c99c4b8bc8d15efabce7b3b4d5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 24 Oct 2019 18:58:34 +0200 Subject: [PATCH] Add test for FIFO cost price with no input issue8699 review252351002 --- tests/scenario_product_cost_fifo_no_in.rst | 98 ++++++++++++++++++++++ tests/test_product_cost_fifo.py | 5 ++ 2 files changed, 103 insertions(+) create mode 100644 tests/scenario_product_cost_fifo_no_in.rst diff --git a/tests/scenario_product_cost_fifo_no_in.rst b/tests/scenario_product_cost_fifo_no_in.rst new file mode 100644 index 0000000000..d3467eae77 --- /dev/null +++ b/tests/scenario_product_cost_fifo_no_in.rst @@ -0,0 +1,98 @@ +=================================== +Stock FIFO Cost Price with no Input +=================================== + +Imports:: + + >>> import datetime + >>> from decimal import Decimal + >>> from proteus import Model + >>> from trytond.tests.tools import activate_modules + >>> from trytond.modules.company.tests.tools import create_company, \ + ... get_company + >>> today = datetime.date.today() + +Install product_cost_fifo Module:: + + >>> config = activate_modules('product_cost_fifo') + +Create company:: + + >>> _ = create_company() + >>> company = get_company() + +Create product:: + + >>> ProductUom = Model.get('product.uom') + >>> ProductTemplate = Model.get('product.template') + >>> unit, = ProductUom.find([('name', '=', 'Unit')]) + + >>> template = ProductTemplate() + >>> template.name = 'Product' + >>> template.default_uom = unit + >>> template.type = 'goods' + >>> template.list_price = Decimal('300') + >>> template.cost_price_method = 'fifo' + >>> product, = template.products + >>> product.cost_price = Decimal('80') + >>> template.save() + >>> product, = template.products + +Get stock locations:: + + >>> Location = Model.get('stock.location') + >>> supplier_loc, = Location.find([('code', '=', 'SUP')]) + >>> customer_loc, = Location.find([('code', '=', 'CUS')]) + >>> storage_loc, = Location.find([('code', '=', 'STO')]) + +Make 2 units of the product not available @ 60 and 80 :: + + >>> StockMove = Model.get('stock.move') + >>> incoming_move = StockMove() + >>> incoming_move.product = product + >>> incoming_move.uom = unit + >>> incoming_move.quantity = 1 + >>> incoming_move.from_location = supplier_loc + >>> incoming_move.to_location = storage_loc + >>> incoming_move.planned_date = today + >>> incoming_move.company = company + >>> incoming_move.unit_price = Decimal('60') + >>> incoming_move.currency = company.currency + >>> incoming_move.fifo_quantity = 1 + >>> incoming_move.click('do') + + >>> incoming_move = StockMove() + >>> incoming_move.product = product + >>> incoming_move.uom = unit + >>> incoming_move.quantity = 1 + >>> incoming_move.from_location = supplier_loc + >>> incoming_move.to_location = storage_loc + >>> incoming_move.planned_date = today + >>> incoming_move.company = company + >>> incoming_move.unit_price = Decimal('80') + >>> incoming_move.currency = company.currency + >>> incoming_move.fifo_quantity = 1 + >>> incoming_move.click('do') + +Sell 1 unit @ 200:: + + >>> StockMove = Model.get('stock.move') + >>> outgoing_move = StockMove() + >>> outgoing_move.product = product + >>> outgoing_move.uom = unit + >>> outgoing_move.quantity = 1 + >>> outgoing_move.from_location = storage_loc + >>> outgoing_move.to_location = customer_loc + >>> outgoing_move.planned_date = today + >>> outgoing_move.company = company + >>> outgoing_move.unit_price = Decimal('200') + >>> outgoing_move.currency = company.currency + >>> outgoing_move.click('do') + +Check Cost Price FIFO is the current cost price:: + + >>> product.reload() + >>> product.cost_price + Decimal('70.0000') + >>> outgoing_move.cost_price + Decimal('70.0000') diff --git a/tests/test_product_cost_fifo.py b/tests/test_product_cost_fifo.py index c26b0a0ff6..7b81f5e9d9 100644 --- a/tests/test_product_cost_fifo.py +++ b/tests/test_product_cost_fifo.py @@ -27,4 +27,9 @@ def suite(): tearDown=doctest_teardown, encoding='utf-8', checker=doctest_checker, optionflags=doctest.REPORT_ONLY_FIRST_FAILURE)) + suite.addTests(doctest.DocFileSuite( + 'scenario_product_cost_fifo_no_in.rst', + tearDown=doctest_teardown, encoding='utf-8', + checker=doctest_checker, + optionflags=doctest.REPORT_ONLY_FIRST_FAILURE)) return suite