diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/purchase_stock/tests/test_purchase_stock_report.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/purchase_stock/tests/test_purchase_stock_report.py')
| -rw-r--r-- | addons/purchase_stock/tests/test_purchase_stock_report.py | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/addons/purchase_stock/tests/test_purchase_stock_report.py b/addons/purchase_stock/tests/test_purchase_stock_report.py new file mode 100644 index 00000000..824a11e7 --- /dev/null +++ b/addons/purchase_stock/tests/test_purchase_stock_report.py @@ -0,0 +1,147 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.tests.common import Form +from odoo.addons.stock.tests.test_report import TestReportsCommon + + +class TestPurchaseStockReports(TestReportsCommon): + def test_report_forecast_1_purchase_order_multi_receipt(self): + """ Create a PO for 5 product, receive them then increase the quantity to 10. + """ + po_form = Form(self.env['purchase.order']) + po_form.partner_id = self.partner + with po_form.order_line.new() as line: + line.product_id = self.product + line.product_qty = 5 + po = po_form.save() + + # Checks the report. + report_values, docs, lines = self.get_report_forecast(product_template_ids=self.product_template.ids) + draft_picking_qty_in = docs['draft_picking_qty']['in'] + draft_purchase_qty = docs['draft_purchase_qty'] + pending_qty_in = docs['qty']['in'] + self.assertEqual(len(lines), 0, "Must have 0 line for now.") + self.assertEqual(draft_picking_qty_in, 0) + self.assertEqual(draft_purchase_qty, 5) + self.assertEqual(pending_qty_in, 5) + + # Confirms the PO and checks the report again. + po.button_confirm() + report_values, docs, lines = self.get_report_forecast(product_template_ids=self.product_template.ids) + draft_picking_qty_in = docs['draft_picking_qty']['in'] + draft_purchase_qty = docs['draft_purchase_qty'] + pending_qty_in = docs['qty']['in'] + self.assertEqual(len(lines), 1) + self.assertEqual(lines[0]['document_in'].id, po.id) + self.assertEqual(lines[0]['quantity'], 5) + self.assertEqual(lines[0]['document_out'], False) + self.assertEqual(draft_picking_qty_in, 0) + self.assertEqual(draft_purchase_qty, 0) + self.assertEqual(pending_qty_in, 0) + + # Receives 5 products. + receipt = po.picking_ids + res_dict = receipt.button_validate() + wizard = Form(self.env[res_dict['res_model']].with_context(res_dict['context'])).save() + wizard.process() + report_values, docs, lines = self.get_report_forecast(product_template_ids=self.product_template.ids) + draft_picking_qty_in = docs['draft_picking_qty']['in'] + draft_purchase_qty = docs['draft_purchase_qty'] + pending_qty_in = docs['qty']['in'] + self.assertEqual(len(lines), 0) + self.assertEqual(draft_picking_qty_in, 0) + self.assertEqual(draft_purchase_qty, 0) + self.assertEqual(pending_qty_in, 0) + + # Increase the PO quantity to 10, so must create a second receipt. + po_form = Form(po) + with po_form.order_line.edit(0) as line: + line.product_qty = 10 + po = po_form.save() + # Checks the report. + report_values, docs, lines = self.get_report_forecast(product_template_ids=self.product_template.ids) + draft_picking_qty_in = docs['draft_picking_qty']['in'] + draft_purchase_qty = docs['draft_purchase_qty'] + pending_qty_in = docs['qty']['in'] + self.assertEqual(len(lines), 1, "Must have 1 line for now.") + self.assertEqual(lines[0]['document_in'].id, po.id) + self.assertEqual(lines[0]['quantity'], 5) + self.assertEqual(draft_picking_qty_in, 0) + self.assertEqual(draft_purchase_qty, 0) + self.assertEqual(pending_qty_in, 0) + + def test_report_forecast_2_purchase_order_three_step_receipt(self): + """ Create a PO for 4 product, receive them then increase the quantity + to 10, but use three steps receipt. + """ + grp_multi_loc = self.env.ref('stock.group_stock_multi_locations') + grp_multi_routes = self.env.ref('stock.group_adv_location') + self.env.user.write({'groups_id': [(4, grp_multi_loc.id)]}) + self.env.user.write({'groups_id': [(4, grp_multi_routes.id)]}) + # Configure warehouse. + warehouse = self.env.ref('stock.warehouse0') + warehouse.reception_steps = 'three_steps' + + po_form = Form(self.env['purchase.order']) + po_form.partner_id = self.partner + with po_form.order_line.new() as line: + line.product_id = self.product + line.product_qty = 4 + po = po_form.save() + + # Checks the report -> Must be empty for now, just display some pending qty. + report_values, docs, lines = self.get_report_forecast(product_template_ids=self.product_template.ids) + draft_picking_qty_in = docs['draft_picking_qty']['in'] + draft_purchase_qty = docs['draft_purchase_qty'] + pending_qty_in = docs['qty']['in'] + self.assertEqual(len(lines), 0, "Must have 0 line for now.") + self.assertEqual(draft_picking_qty_in, 0) + self.assertEqual(draft_purchase_qty, 4) + self.assertEqual(pending_qty_in, 4) + + # Confirms the PO and checks the report again. + po.button_confirm() + report_values, docs, lines = self.get_report_forecast(product_template_ids=self.product_template.ids) + draft_picking_qty_in = docs['draft_picking_qty']['in'] + draft_purchase_qty = docs['draft_purchase_qty'] + pending_qty_in = docs['qty']['in'] + self.assertEqual(len(lines), 1) + self.assertEqual(lines[0]['document_in'].id, po.id) + self.assertEqual(lines[0]['quantity'], 4) + self.assertEqual(lines[0]['document_out'], False) + self.assertEqual(draft_picking_qty_in, 0) + self.assertEqual(draft_purchase_qty, 0) + self.assertEqual(pending_qty_in, 0) + # Get back the different transfers. + receipt = po.picking_ids + + # Receives 4 products. + res_dict = receipt.button_validate() + wizard = Form(self.env[res_dict['res_model']].with_context(res_dict['context'])).save() + wizard.process() + report_values, docs, lines = self.get_report_forecast(product_template_ids=self.product_template.ids) + draft_picking_qty_in = docs['draft_picking_qty']['in'] + draft_purchase_qty = docs['draft_purchase_qty'] + pending_qty_in = docs['qty']['in'] + self.assertEqual(len(lines), 0) + self.assertEqual(draft_picking_qty_in, 0) + self.assertEqual(draft_purchase_qty, 0) + self.assertEqual(pending_qty_in, 0) + + # Increase the PO quantity to 10, so must create a second receipt. + po_form = Form(po) + with po_form.order_line.edit(0) as line: + line.product_qty = 10 + po = po_form.save() + # Checks the report. + report_values, docs, lines = self.get_report_forecast(product_template_ids=self.product_template.ids) + draft_picking_qty_in = docs['draft_picking_qty']['in'] + draft_purchase_qty = docs['draft_purchase_qty'] + pending_qty_in = docs['qty']['in'] + self.assertEqual(len(lines), 1) + self.assertEqual(lines[0]['document_in'].id, po.id) + self.assertEqual(lines[0]['quantity'], 6) + self.assertEqual(draft_picking_qty_in, 0) + self.assertEqual(draft_purchase_qty, 0) + self.assertEqual(pending_qty_in, 0) |
