Compare commits

...

2 Commits

Author SHA1 Message Date
clementmbr
c7172a5c7f [IMP] add bool is_created_by_warehouse on locations 2024-05-27 20:40:51 -03:00
clementmbr
5023839119 [ADD] bew module stock_location_simple 2024-05-27 19:57:29 -03:00
9 changed files with 182 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
from . import models
from .hooks import post_init_hook

View File

@@ -0,0 +1,14 @@
# Copyright 2024 Akretion
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Stock Location Simple",
"summary": "Simplified stock.location menu",
"version": "14.0.1.0.0",
"license": "AGPL-3",
"author": "Akretion",
"website": "http://akretion.com",
"depends": ["stock"],
"data": ["views/stock_location_views.xml"],
"post_init_hook": "post_init_hook",
}

View 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()

View File

@@ -0,0 +1,2 @@
from . import stock_location
from . import stock_warehouse

View File

@@ -0,0 +1,10 @@
# Copyright 2024 Akretion
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
class StockLocation(models.Model):
_inherit = "stock.location"
is_created_by_warehouse = fields.Boolean()

View 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

View File

@@ -0,0 +1 @@
from . import test_stock_location_simple

View 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)

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 Akretion
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="stock_location_simple_form_view" model="ir.ui.view">
<field name="name">stock.location.simple.form</field>
<field name="model">stock.location</field>
<field name="arch" type="xml">
<form string="Stock Location">
<sheet>
<div class="oe_button_box" name="button_box">
<button string="Current Stock"
class="oe_stat_button"
icon="fa-cubes" name="%(stock.location_open_quants)d" type="action"/>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name"/>
</h1>
<label for="location_id" class="oe_edit_only"/>
<h2>
<field name="location_id" required="1" domain="[('usage', '=', 'internal')]"/>
</h2>
<group>
<field name="active" invisible="1"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<field name="comment" placeholder="External note..."/>
</sheet>
</form>
</field>
</record>
<record id="stock_location_simple_tree_view" model="ir.ui.view">
<field name="name">stock.location.simple.tree</field>
<field name="model">stock.location</field>
<field name="arch" type="xml">
<!-- TODO: decoration info if lockdown, if view, if linked to a warehouse -->
<tree string="Stock Location">
<field name="active" invisible="1"/>
<field name="complete_name" string="Location"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record id="stock_location_simple_act_window" model="ir.actions.act_window">
<field name="name">Stock Location</field>
<field name="res_model">stock.location</field>
<field name="view_mode">tree,form</field>
<field name="domain">[("usage", "=", "internal")]</field>
</record>
<record id="stock_location_simple_act_window_tree" model="ir.actions.act_window.view" >
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="stock_location_simple_tree_view"/>
<field name="act_window_id" ref="stock_location_simple_act_window"/>
</record>
<record id="stock_location_simple_act_window_form" model="ir.actions.act_window.view" >
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="stock_location_simple_form_view"/>
<field name="act_window_id" ref="stock_location_simple_act_window"/>
</record>
<record id="stock_location_simple_menu" model="ir.ui.menu">
<field name="name">Locations</field>
<field name="parent_id" ref="stock.menu_warehouse_config"/>
<field name="action" ref="stock_location_simple_act_window"/>
<field name="sequence" eval="0"/>
<field name="groups_id" eval="[(4, ref('stock.group_stock_multi_locations'))]" />
</record>
<!-- Modify name and groups_id on original stock.location menu -->
<record id="stock.menu_action_location_form" model="ir.ui.menu">
<field name="name">Locations Technical</field>
<field name="parent_id" ref="stock.menu_warehouse_config"/>
<field name="action" ref="stock.action_location_form"/>
<field name="sequence" eval="2"/>
<field name="groups_id" eval="[(4, ref('base.group_erp_manager'))]" />
</record>
</odoo>