<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="action_picking_type_list" model="ir.actions.act_window">
        <field name="name">Operations Types</field>
        <field name="res_model">stock.picking.type</field>
        <field name="view_mode">tree,form</field>
        <field name="help" type="html">
            <p class="o_view_nocontent_smiling_face">
                No transfer found. Let's create one!
            </p><p>
                Transfers allow you to move products from one location to another.
            </p>
        </field>
    </record>

    <record id="stock_picking_type_action" model="ir.actions.act_window">
        <field name="name">Inventory Overview</field>
        <field name="res_model">stock.picking.type</field>
        <field name="view_mode">kanban,form</field>
        <field name="help" type="html">
            <p class="o_view_nocontent_smiling_face">
            Create a new operation type
            </p><p>
            The operation type system allows you to assign each stock
            operation a specific type which will alter its views accordingly.
            On the operation type you could e.g. specify if packing is needed by default,
            if it should show the customer.
            </p>
        </field>
    </record>

    <menuitem id="menu_pickingtype" name="Operations Types" parent="stock.menu_warehouse_config" action="action_picking_type_list" sequence="5"/>

    <menuitem
        action="stock_picking_type_action"
        id="stock_picking_type_menu"
        parent="menu_stock_root" sequence="0"
        name="Overview"/>

    <record id="view_pickingtype_filter" model="ir.ui.view">
        <field name="name">stock.picking.type.filter</field>
        <field name="model">stock.picking.type</field>
        <field name="arch" type="xml">
            <search string="Operation Type">
                <field name="name"/>
                <field name="warehouse_id"/>
                <filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
                <group expand="0" string="Group By">
                    <filter string="Type of Operation" name="groupby_code" domain="[]" context="{'group_by': 'code'}"/>
                    <filter string="Warehouse" name="groupby_warehouse_id" domain="[]" context="{'group_by': 'warehouse_id'}"/>
                </group>
            </search>
        </field>
    </record>

    <record id="view_picking_type_tree" model="ir.ui.view">
        <field name="name">Operation types</field>
        <field name="model">stock.picking.type</field>
        <field name="arch" type="xml">
            <tree string="Operation Types">
                <field name="sequence" widget="handle"/>
                <field name="name"/>
                <field name="active" column_invisible="True"/>
                <field name="warehouse_id" groups="stock.group_stock_multi_warehouses"/>
                <field name="sequence_id" groups="base.group_no_one"/>
                <field name="company_id" groups="base.group_multi_company"/>
                <field name="company_id" groups="!base.group_multi_company" column_invisible="True"/>
            </tree>
        </field>
    </record>

    <record id="view_picking_type_form" model="ir.ui.view">
        <field name="name">Operation Types</field>
        <field name="model">stock.picking.type</field>
        <field name="arch" type="xml">
            <form string="Operation Types">
                <sheet>
                    <widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
                    <label for="name"/>
                    <h1><field name="name" placeholder="e.g. Receptions"/></h1>
                    <notebook>
                        <page name="general" string="General">
                            <group name="first">
                                <group>
                                    <field name="code"/>
                                    <field name="active" invisible="1"/>
                                    <field name="company_id" invisible="1"/>
                                    <field name="hide_reservation_method" invisible="1"/>
                                    <field name="show_picking_type" invisible="1"/>
                                    <field name="sequence_id" groups="base.group_no_one"/>
                                    <field name="sequence_code"/>
                                    <field name="warehouse_id" groups="stock.group_stock_multi_warehouses" force_save="1"/>
                                    <field name="reservation_method" invisible="hide_reservation_method" widget="radio"/>
                                    <label for="reservation_days_before" string="Reserve before scheduled date" invisible="code == 'incoming' or reservation_method != 'by_date'"/>
                                    <div class="o_row" invisible="code == 'incoming' or reservation_method != 'by_date'">
                                        <span><field name="reservation_days_before" style="width: 23px;"/> days before/</span>
                                        <span><field name="reservation_days_before_priority" style="width: 23px;"/> days before when starred</span>
                                    </div>
                                    <field name="auto_show_reception_report" invisible="code not in ['incoming', 'internal']" groups="stock.group_reception_report"/>
                                </group>
                                <group>
                                    <field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
                                    <field invisible="code not in ['incoming', 'outgoing', 'internal']" name="return_picking_type_id" string="Returns Type"/>
                                    <field name="default_location_return_id" invisible="code not in ['incoming', 'outgoing', 'internal']" groups="stock.group_stock_multi_locations"/>
                                    <field name="create_backorder"/>
                                </group>
                            </group>
                            <group name="second">
                                <group invisible="code not in ['incoming', 'outgoing', 'internal']" string="Lots/Serial Numbers" groups="stock.group_production_lot" name="stock_picking_type_lot">
                                    <field name="use_create_lots" string="Create New"/>
                                    <field name="use_existing_lots" string="Use Existing ones"/>
                                </group>
                                <group invisible="code not in ['incoming', 'outgoing', 'internal']" string="Packages" groups="stock.group_tracking_lot">
                                    <field name="show_entire_packs"/>
                                </group>
                                <!-- As this group will be hidden without multi_loccation, you will not be able to create a
                                    picking type with the code 'Internal', which make sense, but as the field 'code' on picking
                                    types can't be partially hidden, you can still select the code internal in the form view -->
                                <group string="Locations" groups="stock.group_stock_multi_locations" name="locations">
                                    <field name="default_location_src_id" options="{'no_create': True}" required="code in ('internal', 'outgoing')"/>
                                    <field name="default_location_dest_id" options="{'no_create': True}" required="code in ('internal', 'incoming')"/>
                                </group>
                            </group>
                        </page>
                        <page name="hardware" string="Hardware" invisible="code not in ['incoming', 'outgoing', 'internal']" >
                            <group name="auto_print">
                                <group string="Print on Validation">
                                    <field name="auto_print_delivery_slip" string="Delivery Slip"/>
                                    <field name="auto_print_return_slip" string="Return Slip"/>
                                    <label for="auto_print_product_labels" string="Product Labels"/>
                                    <div class="o_row">
                                        <field name="auto_print_product_labels" string="Product Labels"/>
                                        <label for="product_label_format" string="Print label as:" invisible="not auto_print_product_labels" class="fw-bold"/>
                                        <field name="product_label_format" invisible="not auto_print_product_labels"/>
                                    </div>
                                    <label for="auto_print_lot_labels" string="Lot/SN Labels" groups="stock.group_production_lot"/>
                                    <div class="o_row" groups="stock.group_production_lot">
                                        <field name="auto_print_lot_labels" string="Lot/SN Labels"/>
                                        <label for="lot_label_format" string="Print label as:" invisible="not auto_print_lot_labels" class="fw-bold"/>
                                        <field name="lot_label_format" invisible="not auto_print_lot_labels"/>
                                    </div>
                                    <field name="auto_print_reception_report" string="Reception Report" invisible="code == 'outgoing'" groups="stock.group_reception_report"/>
                                    <field name="auto_print_reception_report_labels" string="Reception Report Labels" invisible="code == 'outgoing'" groups="stock.group_reception_report"/>
                                    <field name="auto_print_packages" string="Package Content" groups="stock.group_tracking_lot"/>
                                </group>
                                <group string="">
                                    <div colspan="2">
                                        Odoo opens a PDF preview by default. If you (Enterprise users only) want to print instantly,
                                        install the IoT App on a computer that is on the same local network as the
                                        barcode operator and configure the routing of the reports.
                                        <a href="https://www.odoo.com/documentation/17.0/applications/productivity/iot/devices/printer.html"
                                           target="_blank" class="fa fa-arrow-right">
                                            Documentation
                                        </a>
                                    </div>
                                </group>
                                <group string='Print on "Put in Pack"' groups="stock.group_tracking_lot">
                                    <label for="auto_print_package_label" string="Package Label"/>
                                    <div class="o_row">
                                        <field name="auto_print_package_label" string="Package Label"/>
                                        <label for="package_label_to_print" string="Print label as:" invisible="not auto_print_package_label" class="fw-bold"/>
                                        <field name="package_label_to_print" invisible="not auto_print_package_label"/>
                                    </div>
                                </group>
                            </group>
                        </page>
                    </notebook>
                </sheet>
            </form>
        </field>
    </record>

    <record id="stock_picking_type_kanban" model="ir.ui.view">
        <field name="name">stock.picking.type.kanban</field>
        <field name="model">stock.picking.type</field>
        <field name="arch" type="xml">
            <kanban class="o_kanban_dashboard o_emphasize_colors" create="0" group_create="false">
                <field name="color"/>
                <field name="code" readonly="1"/>
                <field name="count_picking_ready"/>
                <field name="count_picking_draft"/>
                <field name="count_picking_waiting"/>
                <field name="count_picking_late"/>
                <field name="count_picking_backorders"/>
                <field name="show_picking_type" invisible="1"/>
                <templates>
                    <t t-name="kanban-menu" t-if="!selection_mode">
                        <div class="container" t-if="record.show_picking_type.raw_value">
                            <div class="row">
                                <div class="col-6 o_kanban_card_manage_section o_kanban_manage_view">
                                    <h5 role="menuitem" class="o_kanban_card_manage_title">
                                        <span t-if="record.code.raw_value == 'internal'">Transfers</span>
                                        <span t-else="">View</span>
                                    </h5>
                                    <div role="menuitem">
                                        <a name="get_stock_picking_action_picking_type" type="object">All</a>
                                    </div>
                                    <div role="menuitem">
                                        <a name="get_action_picking_tree_ready" type="object">Ready</a>
                                    </div>
                                    <div role="menuitem">
                                        <a name="get_action_picking_tree_waiting" type="object">Waiting</a>
                                    </div>
                                    <div role="menuitem">
                                        <a name="get_action_picking_type_operations" type="object">Operations</a>
                                    </div>
                                </div>
                                <div class="col-6 o_kanban_card_manage_section o_kanban_manage_new">
                                    <h5 role="menuitem" class="o_kanban_card_manage_title">
                                        <a name="%(action_picking_form)d" type="action">New</a>
                                    </h5>
                                </div>
                            </div>

                            <div t-if="widget.editable" class="o_kanban_card_manage_settings row">
                                <div class="col-8" role="menuitem" aria-haspopup="true">
                                    <ul class="oe_kanban_colorpicker" data-field="color" role="menu"/>
                                </div>
                                <div role="menuitem" class="col-4">
                                    <a class="dropdown-item" role="menuitem" type="edit">Configuration</a>
                                </div>
                            </div>
                        </div>
                    </t>
                    <t t-name="kanban-box">
                        <div t-if="record.show_picking_type.raw_value" t-attf-class="#{!selection_mode ? kanban_color(record.color.raw_value) : ''}" name="stock_picking">
                            <div t-attf-class="o_kanban_card_header">
                                <div class="o_kanban_card_header_title">
                                    <div class="o_primary" t-if="!selection_mode">
                                        <a type="object" name="get_stock_picking_action_picking_type">
                                            <field name="name"/>
                                        </a>
                                    </div>
                                    <div class="o_primary" t-if="selection_mode">
                                        <field name="name"/>
                                    </div>
                                    <div class="o_secondary"><field class="o_secondary"  name="warehouse_id" readonly="1" groups="stock.group_stock_multi_warehouses"/></div>
                                </div>
                            </div>
                            <div class="container o_kanban_card_content" t-if="!selection_mode">
                                <div class="row">
                                    <div class="col-6 o_kanban_primary_left">
                                        <button class="btn btn-primary" name="get_action_picking_tree_ready" type="object">
                                            <span><t t-esc="record.count_picking_ready.value"/> To Process</span>
                                        </button>
                                    </div>
                                    <div class="col-6 o_kanban_primary_right">
                                        <div t-if="record.count_picking_ready.raw_value > 0" class="row">
                                        </div>

                                        <div t-if="record.count_picking_waiting.raw_value > 0" class="row">
                                            <div class="col-12">
                                                <a name="get_action_picking_tree_waiting" type="object">
                                                    <field name="count_picking_waiting"/>
                                                    Waiting
                                                </a>
                                            </div>
                                        </div>

                                        <div t-if="record.count_picking_late.raw_value > 0" class="row">
                                            <div class="col-12">
                                                <a class="oe_kanban_stock_picking_type_list" name="get_action_picking_tree_late" type="object">
                                                    <field name="count_picking_late"/>
                                                    Late
                                                </a>
                                            </div>
                                        </div>

                                        <div t-if="record.count_picking_backorders.raw_value > 0" class="row" name="picking_type_backorder_count">
                                            <div class="col-12">
                                                <a class="oe_kanban_stock_picking_type_list" name="get_action_picking_tree_backorder" type="object">
                                                    <field name="count_picking_backorders"/>
                                                    Back Orders
                                                </a>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </t>
                </templates>
            </kanban>
        </field>
    </record>
</odoo>
