Criptomart/red-supermercados-coop#2 stock_inventory_category_concurrency: store product_category_id in stock.quants. Add search and group_by categories

This commit is contained in:
Luis 2025-10-07 11:33:25 +02:00
parent 54e7755197
commit 91641c7c88
5 changed files with 64 additions and 8 deletions

View file

@ -7,6 +7,8 @@
"license": "AGPL-3", "license": "AGPL-3",
"author": "Criptomart", "author": "Criptomart",
"depends": ["stock_inventory"], "depends": ["stock_inventory"],
"data": [], "data": [
"views/stock_quant_view.xml",
],
"installable": True, "installable": True,
} }

View file

@ -0,0 +1,18 @@
# Traducciones para stock_inventory_category_concurrency
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-07 00:00+0000\n"
"PO-Revision-Date: 2025-10-07 00:00+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: stock_inventory_category_concurrency
#: model_terms:ir.ui.view,arch_db:stock_inventory_category_concurrency.stock_quant_search_category_filter
msgid "Product Category"
msgstr "Categoría de producto"

View file

@ -0,0 +1,18 @@
# Translation template for stock_inventory_category_concurrency
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-07 00:00+0000\n"
"PO-Revision-Date: 2025-10-07 00:00+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: stock_inventory_category_concurrency
#: model_terms:ir.ui.view,arch_db:stock_inventory_category_concurrency.stock_quant_search_category_filter
msgid "Product Category"
msgstr ""

View file

@ -1,18 +1,23 @@
from odoo import _, models from odoo import _, models, fields
from odoo.exceptions import ValidationError from odoo.exceptions import ValidationError
class StockQuant(models.Model):
_inherit = "stock.quant"
product_categ_id = fields.Many2one(
related="product_tmpl_id.categ_id",
store=True,
index=True,
string="Product Category",
)
class InventoryAdjustmentsGroup(models.Model): class InventoryAdjustmentsGroup(models.Model):
_inherit = "stock.inventory" _inherit = "stock.inventory"
def action_state_to_in_progress(self): def action_state_to_in_progress(self):
"""
Relaja el bloqueo por categoría: si el ajuste actual es por categoría,
solo bloquea otros ajustes en progreso que afecten a la MISMA categoría exacta,
no a categorías hermanas distintas ni a todas sus hijas.
"""
self.ensure_one() self.ensure_one()
# Reusar la lógica original, pero parchear el caso de category
search_filter = [ search_filter = [
( (
"location_id", "location_id",

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="stock_quant_search_category_filter" model="ir.ui.view">
<field name="name">stock.quant.search.category.filter</field>
<field name="model">stock.quant</field>
<field name="inherit_id" ref="stock.quant_search_view"/>
<field name="arch" type="xml">
<xpath expr="//search/group[filter[@name='productgroup']]" position="inside">
<filter name="product_categ_group" string="Product Category" context="{'group_by':'product_categ_id'}"/>
</xpath>
</field>
</record>
</odoo>