<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="product_template_search_view_pos" model="ir.ui.view">
        <field name="name">product.template.search.pos.form</field>
        <field name="model">product.template</field>
        <field name="inherit_id" ref="product.product_template_search_view"/>
        <field name="arch" type="xml">
            <field name="categ_id" position="after">
                <field string="POS Product Category" name="pos_categ_ids" filter_domain="[('pos_categ_ids', 'child_of', raw_value)]"/>
            </field>
            <filter name="filter_to_sell" position="after">
               <filter name="filter_to_availabe_pos" string="Point of Sale" domain="[('available_in_pos', '=', True)]"/>
            </filter>
            <filter name="group_by_categ_id" position="after">
                <filter string="POS Category" name="pos_categ_ids" context="{'group_by': 'pos_categ_ids'}"/>
            </filter>
        </field>
    </record>

    <record id="product_template_action_pos_product" model="ir.actions.act_window">
        <field name="name">Products</field>
        <field name="res_model">product.template</field>
        <field name="view_mode">kanban,list,form,activity</field>
        <field name="context">{'search_default_filter_to_availabe_pos': 1, 'default_available_in_pos': True, 'create_variant_never': 'no_variant', '_pos_self_order': True, 'list_view_ref': 'point_of_sale.product_template_tree_view_point_of_sale'}</field>
        <field name="help" type="html">
            <p class="o_view_nocontent_smiling_face">
                Create new product
            </p><p>
                Define products and categories for POS retail and restaurant
            </p>
        </field>
    </record>
    <record id="product_product_action" model="ir.actions.act_window">
        <field name="name">Product Variants</field>
        <field name="res_model">product.product</field>
        <field name="view_mode">kanban,list,form,activity</field>
        <field name="context">{'search_default_filter_to_availabe_pos': 1, 'default_available_in_pos': True}</field>
        <field name="search_view_id" eval="False"/> <!-- Force empty -->
        <field name="view_id" ref="product.product_product_tree_view"/>
        <field name="help" type="html">
            <p class="o_view_nocontent_smiling_face">
                Create a new product variant
            </p><p>
                You must define a product for everything you sell through
                the point of sale interface.
            </p>
        </field>
    </record>
    <record id="product_category_action" model="ir.actions.act_window">
        <field name="name">Internal Categories</field>
        <field name="res_model">product.category</field>
        <field name="search_view_id" ref="product.product_category_search_view"/>
        <field name="view_id" ref="product.product_category_list_view"/>
    </record>

    <record id="product_template_form_view" model="ir.ui.view">
        <field name="name">product.template.form.inherit</field>
        <field name="model">product.template</field>
        <field name="inherit_id" ref="product.product_template_form_view"/>
        <field name="arch" type="xml">
            <xpath expr="//page[@name='sales']" position="attributes">
                <attribute name="invisible" remove="1" separator="or"/>
            </xpath>
            <page name="sales" position="after">
                <page string="Point of Sale" name="pos" invisible="not available_in_pos">
                    <group>
                        <group name="pos" string="Point of Sale">
                            <field name="color" invisible="True"/>
                            <field name="to_weight" invisible="type=='service'"/>
                            <field name="pos_categ_ids"
                                   widget="many2many_tags"
                                   groups="point_of_sale.group_pos_user"
                                   string="Category"
                                   options="{'color_field': 'color'}"/>
                            <field name="color"
                                   widget="color_picker" string="Color" />
                        </group>
                        <group string="Description" name="public_description">
                            <field name="public_description"
                                placeholder="Information about your product."
                                nolabel="1"
                                colspan="2"/>
                        </group>
                        <group string="Upsell &amp; Cross-Sell" name="upsell_pos" >
                            <field name="pos_optional_product_ids"
                                widget="many2many_tags"
                                groups="point_of_sale.group_pos_user"
                                domain="[('id', '!=', id)]"
                                options="{'color_field': 'color'}"
                                placeholder="Recommend when 'Adding to Cart'"/>
                        </group>
                    </group>
                </page>
            </page>
            <span name="sale_option" position="after">
                <span class="d-inline-block">
                    <field name="available_in_pos"/>
                    <label for="available_in_pos" string="Point of Sale"/>
                </span>
            </span>
        </field>
    </record>

    <record id="product_template_only_form_view" model="ir.ui.view">
        <field name="name">product.template.product.form.inherit</field>
        <field name="model">product.template</field>
        <field name="inherit_id" ref="product.product_template_only_form_view"/>
        <field name="arch" type="xml">
            <xpath expr="//field[@name='attribute_line_ids']//field[@name='attribute_id']" position="attributes">
                <attribute name="context">{'default_create_variant': context.get('create_variant_never', 'always')}</attribute>
            </xpath>
        </field>
    </record>

    <!-- Product Catalog menus and sub menus -->
    <menuitem id="pos_config_menu_catalog"
        name="Products"
        parent="point_of_sale.menu_point_root"/>
    <menuitem id="menu_pos_products"
        action="product_template_action_pos_product"
        parent="point_of_sale.pos_config_menu_catalog"
        sequence="5"/>
    <menuitem id="pos_config_menu_action_product_product"
        name="Product Variants"
        parent="point_of_sale.pos_config_menu_catalog"
        action="product_product_action"
        groups="product.group_product_variant"
        sequence="10"/>
    <menuitem id="point_of_sale.menu_product_combo"
        name="Combo Choices"
        parent="point_of_sale.pos_config_menu_catalog"
        action="product.product_combo_action"
        sequence="15"/>
    <menuitem id="pos_config_menu_action_product_pricelist"
        parent="point_of_sale.pos_config_menu_catalog"
        action="product.product_pricelist_action2"
        groups="product.group_product_pricelist"
        sequence="20"/>

    <record id="product_uom_form_view_inherit" model="ir.ui.view">
        <field name="name">product.uom.form.view.inherit</field>
        <field name="model">uom.uom</field>
        <field name="inherit_id" ref="uom.product_uom_form_view"/>
        <field name="arch" type="xml">
            <div name="relative_factor" position="after">
                <field name="is_pos_groupable" groups="base.group_no_one"/>
            </div>
        </field>
    </record>

    <record id="product_template_tree_view" model="ir.ui.view">
        <field name="name">product.template.product.list.inherit</field>
        <field name="model">product.template</field>
        <field name="inherit_id" ref="product.product_template_tree_view"/>
        <field name="arch" type="xml">
            <field name="categ_id" position="before">
                <field name="pos_categ_ids" widget="many2many_tags" groups="point_of_sale.group_pos_user" optional="hide" string="POS Product Category"/>
            </field>
            <field name="pos_categ_ids" position="after">
                <field name="available_in_pos" groups="point_of_sale.group_pos_user" optional="hide"/>
            </field>
        </field>
    </record>
    <record id="product_template_tree_view_point_of_sale" model="ir.ui.view">
        <field name="name">product.template.view.list.point_of_sale</field>
        <field name="mode">primary</field>
        <field name="model">product.template</field>
        <field name="inherit_id" ref="point_of_sale.product_template_tree_view"/>
        <field name="arch" type="xml">
            <list position="attributes">
                <attribute name="default_order">pos_sequence</attribute>
            </list>
            <field name="is_favorite" position="before">
                <field name="pos_sequence" widget="handle" nolabel="1"/>
            </field>
        </field>
    </record>

    <record id="product_product_tree_view" model="ir.ui.view">
        <field name="name">product.product.product.list.inherit</field>
        <field name="model">product.product</field>
        <field name="inherit_id" ref="product.product_product_tree_view"/>
        <field name="arch" type="xml">
            <field name="categ_id" position="before">
                <field name="pos_categ_ids" widget="many2many_tags" groups="point_of_sale.group_pos_user" optional="hide" string="POS Product Category"/>
            </field>
        </field>
    </record>

    <record id="product_template_view_form_normalized_pos" model="ir.ui.view">
        <field name="name">product.template.view.form.normalized</field>
        <field name="model">product.template</field>
        <field name="arch" type="xml">
            <form>
                <sheet>
                    <field name="image_1920" widget="image" class="oe_avatar" nolabel="1" options="{'zoom': True, 'convert_to_webp': True, 'preview_image': 'image_128'}"/>
                    <group name="name">
                            <field name="name" class="oe_inline" placeholder="e.g. Cheese Burger" string="Product Name"/>
                            <field name="barcode" class="oe_inline" placeholder="e.g. 1234567890"/>
                            <label for="is_storable" class="oe_inline" invisible="type != 'consu'"/>
                            <div class="o_row w-100" invisible="type != 'consu'">
                                <field name="is_storable"/>
                                <field name="tracking" invisible="not is_storable" groups="stock.group_production_lot"/>
                            </div>
                            <field name="list_price" class="oe_inline" widget="monetary"
                                    options="{'currency_field': 'currency_id', 'field_digits': True}"/>
                            <label for="taxes_id"/>
                            <div name="tax_info" class="o_row">
                                <field name="taxes_id" widget="many2many_tags"
                                    readonly="context.get('taxes_readonly', False)"
                                    context="{'search_default_sale': 1}"
                                    options="{'create': false, 'create_edit': false}"/>
                                <field name="tax_string"/>
                            </div>
                            <field name="pos_categ_ids" string="POS Category" class="oe_inline" widget="many2many_tags"/>
                            <field name="color" widget="color_picker" string="Color" />
                    </group>
                </sheet>
            </form>
        </field>
    </record>

    <record id="product_template_action_add_pos" model="ir.actions.act_window">
        <field name="name">New Product</field>
        <field name="res_model">product.template</field>
        <field name="view_mode">form</field>
        <field name="target">new</field>
        <field name="context" eval="{'default_available_in_pos': True, 'create_variant_never': 'no_variant', 'dialog_size': 'medium', 'can_be_sold': True, 'default_is_storable': True}"/>
        <field name="view_id" ref="point_of_sale.product_template_view_form_normalized_pos"/>
    </record>
    <record id="product_template_action_edit_pos" model="ir.actions.act_window">
        <field name="name">Edit Product</field>
        <field name="res_model">product.template</field>
        <field name="view_mode">form</field>
        <field name="target">new</field>
        <field name="context" eval="{'dialog_size': 'medium'}"/>
        <field name="view_id" ref="point_of_sale.product_template_view_form_normalized_pos"/>
    </record>
</odoo>
