Skip to content

Commit

Permalink
[MIG] stock_receipt_lot_info: Migration to 16.0
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcBForgeFlow committed Oct 26, 2022
1 parent 4ab7091 commit a13d32e
Show file tree
Hide file tree
Showing 7 changed files with 123 additions and 92 deletions.
2 changes: 1 addition & 1 deletion stock_receipt_lot_info/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"summary": "Be able to introduce more info on lot/serial "
"number while processing a receipt.",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"version": "15.0.1.0.0",
"version": "16.0.1.0.0",
"category": "Warehouse Management",
"website": "https://github.com/OCA/stock-logistics-workflow",
"license": "LGPL-3",
Expand Down
18 changes: 0 additions & 18 deletions stock_receipt_lot_info/migrations/15.0.1.0.0/pre-migration.py

This file was deleted.

6 changes: 3 additions & 3 deletions stock_receipt_lot_info/model/stock_move_line.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2021 ForgeFlow, S.L.
# Copyright 2022 ForgeFlow, S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).

from odoo import fields, models
Expand All @@ -12,8 +12,8 @@ class StockMoveLine(models.Model):
lot_removal_date = fields.Datetime(string="Lot/Serial Removal Date")
lot_alert_date = fields.Datetime(string="Lot/Serial Alert Date")

def _prepare_new_lot_vals(self):
vals = super()._prepare_new_lot_vals()
def _get_value_production_lot(self):
vals = super()._get_value_production_lot()
creation_lot_fields = [
"expiration_date",
"use_date",
Expand Down
1 change: 1 addition & 0 deletions stock_receipt_lot_info/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
* Forgeflow (https://www.forgeflow.com)

* Lois Rilo <lois.rilo@forgeflow.com>
* Marc Belmonte <marc.belmonte@forgeflow.com>
4 changes: 1 addition & 3 deletions stock_receipt_lot_info/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from . import test_stock_picking_show_return
from . import test_receipt_lot_info
117 changes: 117 additions & 0 deletions stock_receipt_lot_info/tests/test_receipt_lot_info.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Copyright 2022 ForgeFlow, S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).

from datetime import timedelta

from odoo.fields import Datetime
from odoo.tests.common import TransactionCase


class ReceiptLotInfo(TransactionCase):
@classmethod
def setUpClass(cls):
super(ReceiptLotInfo, cls).setUpClass()
group_stock_multi_locations = cls.env.ref("stock.group_stock_multi_locations")
cls.env.user.write({"groups_id": [(4, group_stock_multi_locations.id, 0)]})
cls.stock_location = cls.env.ref("stock.stock_location_stock")
cls.customer_location = cls.env.ref("stock.stock_location_customers")
cls.supplier_location = cls.env.ref("stock.stock_location_suppliers")
cls.uom_unit = cls.env.ref("uom.product_uom_unit")
cls.uom_dozen = cls.env.ref("uom.product_uom_dozen")
cls.product = cls.env["product.product"].create(
{
"name": "Product A",
"type": "product",
"categ_id": cls.env.ref("product.product_category_all").id,
}
)
cls.product_serial = cls.env["product.product"].create(
{
"name": "Product B",
"type": "product",
"tracking": "serial",
"categ_id": cls.env.ref("product.product_category_all").id,
}
)
cls.product_lot = cls.env["product.product"].create(
{
"name": "Product C",
"type": "product",
"tracking": "lot",
"categ_id": cls.env.ref("product.product_category_all").id,
}
)

def test_in_1(self):
"""This tests adds info about dates in move lines and check if
its set correctly.
"""

picking = self.env["stock.picking"].create(
{
"location_id": self.supplier_location.id,
"location_dest_id": self.stock_location.id,
"picking_type_id": self.env.ref("stock.picking_type_in").id,
}
)
move1 = self.env["stock.move"].create(
{
"name": "test_lot_info_1",
"location_id": self.supplier_location.id,
"location_dest_id": self.stock_location.id,
"product_id": self.product_lot.id,
"product_uom": self.uom_unit.id,
"product_uom_qty": 1.0,
"picking_id": picking.id,
"picking_type_id": self.env.ref("stock.picking_type_in").id,
}
)
move1._action_confirm()
move1._action_assign()
self.assertEqual(move1.state, "assigned")

# create an untracked quant
self.env["stock.quant"]._update_available_quantity(
self.product_lot, self.stock_location, 1.0
)
# lot1 = self.env["stock.lot"].create(
# {
# "name": "lot1",
# "product_id": self.product_lot.id,
# "company_id": self.env.company.id,
# }
# )

# create a new move line with a lot not assigned to any quant
self.env["stock.move.line"].create(
{
"move_id": move1.id,
"product_id": move1.product_id.id,
"qty_done": 1,
"product_uom_id": move1.product_uom.id,
"location_id": move1.location_id.id,
"location_dest_id": move1.location_dest_id.id,
# "lot_id": lot1.id,
"lot_name": "LOT001",
"lot_expiration_date": Datetime.now() + timedelta(days=15),
"lot_use_date": Datetime.now() + timedelta(days=5),
"lot_removal_date": Datetime.now() + timedelta(days=20),
"lot_alert_date": Datetime.now() + timedelta(days=10),
}
)

move_line = move1.move_line_ids
# move_line.lot_id = lot1
# validating the move line should move the lot, not create a negative quant in stock
move1._action_done()

self.assertEqual(
move_line[1].lot_expiration_date, Datetime.now() + timedelta(days=15)
)
self.assertEqual(move_line[1].lot_use_date, Datetime.now() + timedelta(days=5))
self.assertEqual(
move_line[1].lot_removal_date, Datetime.now() + timedelta(days=20)
)
self.assertEqual(
move_line[1].lot_alert_date, Datetime.now() + timedelta(days=10)
)
67 changes: 0 additions & 67 deletions stock_receipt_lot_info/tests/test_stock_picking_show_return.py

This file was deleted.

0 comments on commit a13d32e

Please sign in to comment.