- Añadidos ribbons 'Sin Stock' (rojo) y 'Pocas Existencias' (amarillo) - Nuevo campo configurable: umbral de stock bajo (default: 5.0) - Campos computed en product.product: * is_out_of_stock: True cuando qty_available <= 0 * is_low_stock: True cuando 0 < qty_available <= threshold * dynamic_ribbon_id: ribbon automático según nivel de stock - Ordenamiento mejorado: productos con stock primero, sin stock al final - Template actualizado: * Muestra ribbon de stock en tarjeta de producto * Deshabilita botón add-to-cart cuando producto sin stock * Cambia icono a 'fa-ban' en productos sin stock - Vista de configuración: campo 'Low Stock Threshold' en Settings > Shop Performance - Solo aplica a productos type='consu' (almacenables) - Tests: 112 pasados, 0 fallos
74 lines
3.9 KiB
XML
74 lines
3.9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<record id="res_config_settings_view_form" model="ir.ui.view">
|
|
<field name="name">res.config.settings.view.form.inherit.aplicoop</field>
|
|
<field name="model">res.config.settings</field>
|
|
<field name="inherit_id" ref="website.res_config_settings_view_form"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//block[@id='website_info_settings']" position="after">
|
|
<h2>Aplicoop Settings</h2>
|
|
<div class="row mt16 o_settings_container" id="aplicoop_settings">
|
|
<div class="col-12 col-lg-6 o_setting_box">
|
|
<div class="o_setting_left_pane"/>
|
|
<div class="o_setting_right_pane">
|
|
<label for="aplicoop_pricelist_id" string="Aplicoop Pricelist"/>
|
|
<div class="text-muted">
|
|
Pricelist used for Aplicoop group orders
|
|
</div>
|
|
<div class="content-group">
|
|
<div class="mt16">
|
|
<field name="aplicoop_pricelist_id" class="oe_inline"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<h2>Shop Performance</h2>
|
|
<div class="row mt16 o_settings_container" id="eskaera_shop_settings">
|
|
<div class="col-12 col-lg-6 o_setting_box">
|
|
<div class="o_setting_left_pane"/>
|
|
<div class="o_setting_right_pane">
|
|
<label for="eskaera_lazy_loading_enabled" string="Enable Lazy Loading"/>
|
|
<div class="text-muted">
|
|
Load products in pages instead of all at once
|
|
</div>
|
|
<div class="content-group">
|
|
<div class="mt16">
|
|
<field name="eskaera_lazy_loading_enabled" class="oe_inline"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-lg-6 o_setting_box">
|
|
<div class="o_setting_left_pane"/>
|
|
<div class="o_setting_right_pane">
|
|
<label for="eskaera_products_per_page" string="Products Per Page"/>
|
|
<div class="text-muted">
|
|
Number of products to load on initial page
|
|
</div>
|
|
<div class="content-group">
|
|
<div class="mt16">
|
|
<field name="eskaera_products_per_page" class="oe_inline"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-lg-6 o_setting_box">
|
|
<div class="o_setting_left_pane"/>
|
|
<div class="o_setting_right_pane">
|
|
<label for="low_stock_threshold" string="Low Stock Threshold"/>
|
|
<div class="text-muted">
|
|
Products with stock ≤ this value show "Low Stock" ribbon. Stock = 0 shows "Out of Stock" ribbon.
|
|
</div>
|
|
<div class="content-group">
|
|
<div class="mt16">
|
|
<field name="low_stock_threshold" class="oe_inline"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
</odoo>
|