mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-23 13:32:03 +02:00
Initial commit: OCA Technical packages (595 packages)
This commit is contained in:
commit
2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions
|
|
@ -0,0 +1 @@
|
|||
from . import test_ddmrp_sale
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
# Copyright 2021 ForgeFlow S.L. (https://www.forgeflow.com)
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
|
||||
|
||||
from datetime import datetime as dt, timedelta as td
|
||||
|
||||
from odoo.addons.ddmrp.tests.common import TestDdmrpCommon
|
||||
|
||||
|
||||
class TestDDMRPSale(TestDdmrpCommon):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.so_model = cls.env["sale.order"]
|
||||
|
||||
cls.uom_dozen = cls.env.ref("uom.product_uom_dozen")
|
||||
|
||||
cls.customer = cls.partner_model.create({"name": "Customer XYZ"})
|
||||
cls.buffer_internal = cls.bufferModel.create(
|
||||
{
|
||||
"buffer_profile_id": cls.buffer_profile_mmm.id,
|
||||
"product_id": cls.productA.id,
|
||||
"location_id": cls.location_shelf1.id,
|
||||
"warehouse_id": cls.warehouse.id,
|
||||
"qty_multiple": 1.0,
|
||||
"adu_calculation_method": cls.adu_fixed.id,
|
||||
"adu_fixed": 5.0,
|
||||
"lead_days": 10.0,
|
||||
"order_spike_horizon": 10.0,
|
||||
}
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def _refresh_involved_buffers(cls):
|
||||
cls.buffer_a.invalidate_recordset()
|
||||
cls.buffer_internal.invalidate_recordset()
|
||||
cls.buffer_a.cron_actions()
|
||||
cls.buffer_internal.cron_actions()
|
||||
|
||||
def test_01_can_serve_sales(self):
|
||||
self.assertTrue(self.buffer_a.can_serve_sales)
|
||||
self.assertFalse(self.buffer_internal.can_serve_sales)
|
||||
|
||||
def test_02_sales_quotation_included_as_demand(self):
|
||||
self._refresh_involved_buffers()
|
||||
self.assertEqual(
|
||||
self.buffer_a.qualified_demand, self.buffer_internal.qualified_demand
|
||||
)
|
||||
so_date = dt.today() + td(days=2)
|
||||
so = self.so_model.create(
|
||||
{
|
||||
"partner_id": self.customer.id,
|
||||
"partner_invoice_id": self.customer.id,
|
||||
"partner_shipping_id": self.customer.id,
|
||||
"commitment_date": so_date,
|
||||
"order_line": [
|
||||
(
|
||||
0,
|
||||
0,
|
||||
{
|
||||
"product_id": self.productA.id,
|
||||
"name": "cool product",
|
||||
"price_unit": 100.0,
|
||||
"product_uom_qty": 17, # it is a spike.
|
||||
"commitment_date": so_date,
|
||||
},
|
||||
)
|
||||
],
|
||||
}
|
||||
)
|
||||
self.assertEqual(so.state, "draft")
|
||||
self._refresh_involved_buffers()
|
||||
self.assertNotEqual(
|
||||
self.buffer_a.qualified_demand, self.buffer_internal.qualified_demand
|
||||
)
|
||||
# Buffer A sees quotations because it can serve SO's.
|
||||
diff = self.buffer_a.qualified_demand - self.buffer_internal.qualified_demand
|
||||
buffer_a_prev_nfp = self.buffer_a.net_flow_position
|
||||
self.assertEqual(diff, 17)
|
||||
so.action_confirm()
|
||||
self.assertTrue(so.picking_ids)
|
||||
self._refresh_involved_buffers()
|
||||
# After confirmation we ignore the SO and rely on the picking.
|
||||
# Check that NFP does not vary. If picking is reserved OH quantity
|
||||
# should had been reduced, if not, quantity remained as qualified demand.
|
||||
self.assertEqual(self.buffer_a.net_flow_position, buffer_a_prev_nfp)
|
||||
|
||||
def test_03_sol_uom(self):
|
||||
self._refresh_involved_buffers()
|
||||
so_date = dt.today() + td(days=2)
|
||||
so = self.so_model.create(
|
||||
{
|
||||
"partner_id": self.customer.id,
|
||||
"partner_invoice_id": self.customer.id,
|
||||
"partner_shipping_id": self.customer.id,
|
||||
"commitment_date": so_date,
|
||||
"order_line": [
|
||||
(
|
||||
0,
|
||||
0,
|
||||
{
|
||||
"product_id": self.productA.id,
|
||||
"name": "cool product",
|
||||
"price_unit": 100.0,
|
||||
"product_uom_qty": 2, # 2 dozens, it is a spike.
|
||||
"product_uom": self.uom_dozen.id,
|
||||
"commitment_date": so_date,
|
||||
},
|
||||
)
|
||||
],
|
||||
}
|
||||
)
|
||||
self.assertEqual(so.state, "draft")
|
||||
self._refresh_involved_buffers()
|
||||
diff = self.buffer_a.qualified_demand - self.buffer_internal.qualified_demand
|
||||
self.assertEqual(diff, 24)
|
||||
Loading…
Add table
Add a link
Reference in a new issue