<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="view_stock_warehouse_orderpoint_kanban" model="ir.ui.view">
        <field name="name">stock.warehouse.orderpoint.kanban</field>
        <field name="model">stock.warehouse.orderpoint</field>
        <field name="arch" type="xml">
            <kanban class="o_kanban_mobile">
                <templates>
                    <t t-name="card">
                        <div class="d-flex">
                            <field name="name" class="fw-bold fs-5 mb-1"/>
                            <span class="badge rounded-pill ms-auto mt-1"><strong>Min qty:</strong><field name="product_min_qty"/></span>
                        </div>
                        <footer class="pt-0">
                            <field name="product_id"/>
                            <span class="badge rounded-pill ms-auto"><strong>Max qty:</strong><field name="product_max_qty"/></span>
                        </footer>
                    </t>
                </templates>
            </kanban>
        </field>
    </record>

    <record id="view_warehouse_orderpoint_tree_editable" model="ir.ui.view">
        <field name="name">stock.warehouse.orderpoint.list.editable</field>
        <field name="model">stock.warehouse.orderpoint</field>
        <field name="arch" type="xml">
            <list string="Reordering Rules" editable="bottom" js_class="stock_orderpoint_list" sample="1" multi_edit="1" export_xlsx="0">
                <field name="active" column_invisible="True"/>
                <field name="company_id" column_invisible="True"/>
                <field name="product_category_id" column_invisible="True"/>
                <field name="product_tmpl_id" column_invisible="True"/>
                <field name="unwanted_replenish" column_invisible="True"/>
                <field name="route_id_placeholder" column_invisible="True"/> <!-- Needed for the placeholder widget -->
                <field name="replenishment_uom_id_placeholder" column_invisible="True"/> <!-- Needed for the placeholder widget -->
                <field name="product_id" readonly="product_id" force_save="1" context="{'default_is_storable': True}"/>
                <field name="location_id" options="{'no_create': True}" groups="stock.group_stock_multi_locations"/>
                <field name="warehouse_id" options="{'no_create': True}" groups="stock.group_stock_multi_warehouses" optional="hide"/>
                <field name="qty_on_hand" force_save="1" width="60"/>
                <field name="qty_forecast" force_save="1" width="60"/>
                <button name="action_product_forecast_report" type="object" icon="fa-area-chart" title="Forecast Report" invisible="not id or unwanted_replenish"/>
                <button name="action_product_forecast_report" type="object" icon="fa-warning text-warning" title="Due to receipts scheduled in the future, you might end up with excessive stock . Check the Forecasted Report  before reordering" invisible="not id or not unwanted_replenish"/>
                <field name="route_id" widget="stock.forced_placeholder" options="{'no_create': True, 'no_open': True, 'placeholder_field': 'route_id_placeholder'}" optional="hidden" decoration-muted="not route_id"/>
                <button name="action_stock_replenishment_info" type="object" icon="fa-info-circle" title="Replenishment Information" invisible="not id or show_supply_warning"/>
                <button name="action_stock_replenishment_info" type="object" icon="fa-warning text-warning" title="Your product is missing a way to be replenished (Route, Vendor, Bill of Materials)." invisible="not id or not show_supply_warning"/>
                <field name="trigger" optional="hide" width="70"/>
                <field name="product_min_qty" string="Min" optional="show" width="50"/>
                <field name="product_max_qty" string="Max" optional="show" width="50"/>
                <field name="replenishment_uom_id" widget="stock.forced_placeholder" options="{'no_create': True, 'placeholder_field': 'replenishment_uom_id_placeholder'}" optional="hide" decoration-muted="not replenishment_uom_id"/>
                <field name="qty_to_order_to_max" column_invisible="true"/>
                <field name="qty_to_order" widget="stock.max_qty_to_order" readonly="trigger == 'auto'" width="60"/>
                <field name="qty_to_order_manual" column_invisible="True"/>
                <button name="action_remove_manual_qty_to_order" type="object" icon="fa-undo" title="Remove manually entered value and replace by the quantity to order based on the forecasted quantities" invisible="not qty_to_order_manual"/>
                <button name="action_remove_manual_qty_to_order" type="object" icon="fa-undo" title="-" class="disabled opacity-0" invisible="qty_to_order_manual"/>
                <field name="product_uom_name" string="Unit" groups="uom.group_uom"/>
                <field name="deadline_date" string="Deadline" optional="hide" decoration-danger="deadline_date &lt; current_date"/>
                <field name="company_id" optional="hide" readonly="1" groups="base.group_multi_company"/>
                <button name="action_replenish" string="Order" type="object" class="o_replenish_buttons" icon="fa-truck"
                    invisible="qty_to_order &lt;= 0.0"/>
                <button name="action_replenish_auto" string="Automate" type="object" class="o_replenish_buttons" icon="fa-refresh"
                    invisible="qty_to_order &lt;= 0.0 or trigger == 'auto'"/>
                <button name="%(action_orderpoint_snooze)d" string="Snooze" type="action" class="text-warning" icon="fa-bell-slash"
                    invisible="trigger != 'manual'" context="{'default_orderpoint_ids': [id]}"/>
            </list>
        </field>
    </record>

    <record model="ir.ui.view" id="stock_reorder_report_search">
        <field name="name">stock.warehouse.orderpoint.reorder.search</field>
        <field name="model">stock.warehouse.orderpoint</field>
        <field name="arch" type="xml">
            <search string="Replenishment Report Search">
                <field name="product_id"/>
                <field name="product_category_id"/>
                <field name="effective_route_id" string="Route"/>
                <field name="warehouse_id" groups="stock.group_stock_multi_warehouses"/>
                <field name="location_id" groups="stock.group_stock_multi_locations"/>
                <filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
                <separator/>
                <filter string="Manual" name="filter_creation_manual_trigger" domain="[('trigger', '=', 'manual')]"/>
                <filter string="Automatic" name="filter_creation_automatic_trigger" domain="[('trigger', '=', 'auto')]"/>
                <separator/>
                <filter string="To Reorder" name="filter_to_reorder" domain="[('qty_to_order', '&gt;', 0.0)]"/>
                <separator/>
                <filter string="Not Snoozed" name="filter_not_snoozed" domain="['|', ('snoozed_until', '=', False), ('snoozed_until', '&lt;=', 'today')]"/>
                <group>
                    <filter string="Warehouse" name="groupby_warehouse" domain="[]"  context="{'group_by': 'warehouse_id'}" groups="stock.group_stock_multi_warehouses"/>
                    <filter string="Location" name="groupby_location" domain="[]" context="{'group_by': 'location_id'}" groups="stock.group_stock_multi_locations"/>
                    <filter string="Product" name="groupby_product" domain="[]" context="{'group_by': 'product_id'}"/>
                    <filter string="Category" name="groupby_category" domain="[]" context="{'group_by': 'product_category_id'}"/>
                </group>
                <searchpanel>
                    <field name="location_id" string="Locations" groups="stock.group_stock_multi_locations" enable_counters="1"/>
                    <field name="trigger" string="Trigger" enable_counters="1"/>
                    <field name="product_category_id" icon="fa-filter" string="Category" select="multi" enable_counters="1"/>
                </searchpanel>
            </search>
        </field>
    </record>


    <record model="ir.ui.view" id="warehouse_orderpoint_search">
        <field name="name">stock.warehouse.orderpoint.search</field>
        <field name="model">stock.warehouse.orderpoint</field>
        <field name="arch" type="xml">
            <search string="Reordering Rules Search">
                <field name="product_id"/>
                <field name="name" string="Reordering Rule"/>
                <field name="trigger"/>
                <field name="warehouse_id" groups="stock.group_stock_multi_warehouses"/>
                <field name="location_id" groups="stock.group_stock_multi_locations"/>
                <filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
                <group>
                    <filter string="Warehouse" name="warehouse" domain="[]"  context="{'group_by': 'warehouse_id'}" groups="stock.group_stock_multi_warehouses"/>
                    <filter string="Location" name="location" domain="[]" context="{'group_by': 'location_id'}" groups="stock.group_stock_multi_locations"/>
                    <filter string="Product" name="product" domain="[]" context="{'group_by': 'product_id'}"/>
                </group>
            </search>
        </field>
    </record>

    <record id="view_warehouse_orderpoint_form" model="ir.ui.view">
        <field name="name">stock.warehouse.orderpoint.form</field>
        <field name="model">stock.warehouse.orderpoint</field>
        <field name="arch" type="xml">
            <form string="Reordering Rules">
                <sheet>
                    <widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
                    <div class="oe_title">
                        <h1>
                            <field name="name"/>
                        </h1>
                    </div>
                    <group>
                        <group>
                            <field name="active" invisible="1"/>
                            <field name="company_id" invisible="1"/>
                            <field name="route_id" invisible="1"/>
                            <field name="product_id"/>
                            <label for="product_min_qty"/>
                            <div class="o_row">
                                <field name="product_min_qty"/>
                                <field name="product_uom_name"/>
                                <button name="stock.action_stock_replenishment_info" string="Forecast Description" type="action" icon="fa-area-chart" invisible="not id"/>
                            </div>
                            <label for="product_max_qty"/>
                            <div class="o_row">
                                <field name="product_max_qty"/>
                                <field name="product_uom_name"/>
                            </div>
                            <field name="replenishment_uom_id" options="{'no_create': True}"/>
                        </group>
                        <group>
                            <field name="allowed_location_ids" invisible="1"/>
                            <field name="warehouse_id" options="{'no_open': True, 'no_create': True}" groups="stock.group_stock_multi_locations"/>
                            <field name="location_id" options="{'no_create': True}" groups="stock.group_stock_multi_locations" domain="[('id', 'in', allowed_location_ids)]"/>
                            <field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
                        </group>
                    </group>
                </sheet>
            </form>
        </field>
    </record>

    <record id="action_orderpoint_replenish" model="ir.actions.act_window">
        <field name="name">Replenishment</field>
        <field name="res_model">stock.warehouse.orderpoint</field>
        <field name="view_mode">list,kanban,form</field>
        <field name="view_id" ref="view_warehouse_orderpoint_tree_editable"/>
        <field name="search_view_id" ref="stock_reorder_report_search"/>
        <field name="help" type="html">
          <p class="o_view_nocontent_replenishment">
            You are good, no replenishment to perform!
          </p><p>
            You'll find here smart replenishment propositions based on inventory forecasts.
            Create new replenishment rules if you want to maintain minimum stock levels for
            some products, and automate these rules to create RFQs or Manufacturing Orders.
          </p>
        </field>
    </record>

    <record id="view_warehouse_orderpoint_tree_editable_show_trigger" model="ir.ui.view">
        <field name="name">stock.warehouse.orderpoint.list.editable.inherit.show_trigger</field>
        <field name="model">stock.warehouse.orderpoint</field>
        <field name="inherit_id" ref="stock.view_warehouse_orderpoint_tree_editable"/>
        <field name="mode">primary</field>
        <field name="arch" type="xml">
            <xpath expr="//field[@name='trigger']" position="attributes">
                <attribute name="optional">show</attribute>
            </xpath>
        </field>
    </record>

    <record id="action_orderpoint" model="ir.actions.act_window">
        <field name="name">Reordering Rules</field>
        <field name="res_model">stock.warehouse.orderpoint</field>
        <field name="view_mode">list,kanban,form</field>
        <field name="view_id" ref="view_warehouse_orderpoint_tree_editable_show_trigger"/>
        <field name="search_view_id" ref="warehouse_orderpoint_search"/>
        <field name="context">{'search_default_trigger': 'auto'}</field>
        <field name="help" type="html">
          <p class="o_view_nocontent_smiling_face">
            No reordering rule found
          </p><p>
            Define a minimum stock rule so that Odoo automatically creates requests for quotations or confirmed manufacturing orders to resupply your stock.
          </p>
        </field>
    </record>

    <record model="ir.actions.server" id="action_replenishment">
        <field name="name">Replenishment</field>
        <field name="model_id" ref="model_stock_warehouse_orderpoint"/>
        <field name="state">code</field>
        <field name="path">replenishment</field>
        <field name="code">
            action = model.with_context(
                search_default_filter_to_reorder=True,
                search_default_filter_not_snoozed=True,
                default_trigger='manual',
                searchpanel_default_trigger='manual'
            ).action_open_orderpoints()
        </field>
    </record>


    <menuitem
        id="menu_reordering_rules_replenish"
        action="action_replenishment"
        name="Replenishment" parent="menu_stock_procurement" sequence="5"
        groups="stock.group_stock_manager"/>
</odoo>
