[IMP] add bool is_created_by_warehouse on locations
This commit is contained in:
@@ -1 +1,2 @@
|
|||||||
from . import models
|
from . import models
|
||||||
|
from .hooks import post_init_hook
|
||||||
|
|||||||
@@ -10,4 +10,5 @@
|
|||||||
"website": "http://akretion.com",
|
"website": "http://akretion.com",
|
||||||
"depends": ["stock"],
|
"depends": ["stock"],
|
||||||
"data": ["views/stock_location_views.xml"],
|
"data": ["views/stock_location_views.xml"],
|
||||||
|
"post_init_hook": "post_init_hook",
|
||||||
}
|
}
|
||||||
|
|||||||
10
stock_location_simple/hooks.py
Normal file
10
stock_location_simple/hooks.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Copyright 2021 Akretion (https://www.akretion.com).
|
||||||
|
# @author Sébastien BEAU <sebastien.beau@akretion.com>
|
||||||
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import SUPERUSER_ID, api
|
||||||
|
|
||||||
|
|
||||||
|
def post_init_hook(cr, registry):
|
||||||
|
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||||
|
env["stock.warehouse"].search([])._check_locations_created_by_warehouse()
|
||||||
@@ -1 +1,2 @@
|
|||||||
from . import stock_location
|
from . import stock_location
|
||||||
|
from . import stock_warehouse
|
||||||
|
|||||||
@@ -7,4 +7,4 @@ from odoo import _, api, fields, models
|
|||||||
class StockLocation(models.Model):
|
class StockLocation(models.Model):
|
||||||
_inherit = "stock.location"
|
_inherit = "stock.location"
|
||||||
|
|
||||||
# TODO
|
is_created_by_warehouse = fields.Boolean()
|
||||||
|
|||||||
34
stock_location_simple/models/stock_warehouse.py
Normal file
34
stock_location_simple/models/stock_warehouse.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Copyright 2024 Akretion
|
||||||
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import _, api, fields, models
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
|
||||||
|
class StockWarehouse(models.Model):
|
||||||
|
_inherit = "stock.warehouse"
|
||||||
|
|
||||||
|
def _get_location_fields(self):
|
||||||
|
location_fields = []
|
||||||
|
|
||||||
|
for field, definition in self.fields_get().items():
|
||||||
|
if definition.get("relation") == "stock.location":
|
||||||
|
location_fields.append(field)
|
||||||
|
|
||||||
|
return location_fields
|
||||||
|
|
||||||
|
def _check_locations_created_by_warehouse(self):
|
||||||
|
location_ids = self.env["stock.location"]
|
||||||
|
location_fields = self._get_location_fields()
|
||||||
|
|
||||||
|
for rec in self:
|
||||||
|
for field in location_fields:
|
||||||
|
location_ids |= getattr(rec, field)
|
||||||
|
|
||||||
|
location_ids.write({"is_created_by_warehouse": True})
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def create(self, vals):
|
||||||
|
res = super().create(vals)
|
||||||
|
res._check_locations_created_by_warehouse()
|
||||||
|
return res
|
||||||
1
stock_location_simple/tests/__init__.py
Normal file
1
stock_location_simple/tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
from . import test_stock_location_simple
|
||||||
19
stock_location_simple/tests/test_stock_location_simple.py
Normal file
19
stock_location_simple/tests/test_stock_location_simple.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Copyright 2018-2022 Camptocamp
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo.tests import TransactionCase
|
||||||
|
|
||||||
|
|
||||||
|
class TestStockLocationSimple(TransactionCase):
|
||||||
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
self.env["stock.warehouse"].search([])._check_locations_created_by_warehouse()
|
||||||
|
|
||||||
|
def test_location_checked_at_warehouse_creation(self):
|
||||||
|
warehouse = self.env["stock.warehouse"].create({"name": "Test", "code": "TEST"})
|
||||||
|
self.assertTrue(warehouse.view_location_id.is_created_by_warehouse)
|
||||||
|
|
||||||
|
def test_native_location_checked(self):
|
||||||
|
location_id = self.env.ref("stock.warehouse0").view_location_id
|
||||||
|
|
||||||
|
self.assertTrue(location_id.is_created_by_warehouse)
|
||||||
Reference in New Issue
Block a user