summaryrefslogtreecommitdiff
path: root/addons/pos_restaurant/views
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/pos_restaurant/views
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/pos_restaurant/views')
-rw-r--r--addons/pos_restaurant/views/pos_config_views.xml114
-rw-r--r--addons/pos_restaurant/views/pos_order_views.xml16
-rw-r--r--addons/pos_restaurant/views/pos_restaurant_templates.xml73
-rw-r--r--addons/pos_restaurant/views/pos_restaurant_views.xml171
4 files changed, 374 insertions, 0 deletions
diff --git a/addons/pos_restaurant/views/pos_config_views.xml b/addons/pos_restaurant/views/pos_config_views.xml
new file mode 100644
index 00000000..4bf03185
--- /dev/null
+++ b/addons/pos_restaurant/views/pos_config_views.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0"?>
+<odoo>
+
+ <record id="pos_config_view_form_inherit_restaurant" model="ir.ui.view">
+ <field name="name">pos.config.form.inherit.restaurant</field>
+ <field name="model">pos.config</field>
+ <field name="inherit_id" ref="point_of_sale.pos_config_view_form"/>
+ <field name="arch" type="xml">
+ <button id="btn_use_pos_restaurant" position="replace"/>
+ <div id="iface_invoicing" position="before">
+ <div class="col-12 col-lg-6 o_setting_box"
+ id="iface_printbill"
+ attrs="{'invisible': [('module_pos_restaurant', '=', False)]}">
+ <div class="o_setting_left_pane">
+ <field name="iface_printbill"/>
+ </div>
+ <div class="o_setting_right_pane">
+ <label for="iface_printbill"/>
+ <span class="fa fa-lg fa-cutlery" title="For bars and restaurants" role="img" aria-label="For bars and restaurants"/>
+ <div class="text-muted">
+ Allow to print bill before payment
+ </div>
+ </div>
+ </div>
+ <div class="col-12 col-lg-6 o_setting_box"
+ id="iface_splitbill"
+ attrs="{'invisible': [('module_pos_restaurant', '=', False)]}">
+ <div class="o_setting_left_pane">
+ <field name="iface_splitbill"/>
+ </div>
+ <div class="o_setting_right_pane">
+ <label for="iface_splitbill"/>
+ <span class="fa fa-lg fa-cutlery" title="For bars and restaurants" role="img" aria-label="For bars and restaurants"/>
+ <div class="text-muted">
+ Split total or order lines
+ </div>
+ </div>
+ </div>
+ </div>
+ <div id="barcode_scanner" position="after">
+ <div class="col-12 col-lg-6 o_setting_box"
+ id="is_order_printer"
+ attrs="{'invisible': [('module_pos_restaurant', '=', False)]}">
+ <div class="o_setting_left_pane">
+ <field name="is_order_printer"/>
+ </div>
+ <div class="o_setting_right_pane">
+ <label for="is_order_printer"/>
+ <span class="fa fa-lg fa-cutlery" title="For bars and restaurants" role="img" aria-label="For bars and restaurants"/>
+ <div class="text-muted">
+ Print orders at the kitchen, at the bar, etc.
+ </div>
+ <div class="content-group" attrs="{'invisible': [('is_order_printer', '=', False)]}">
+ <div class="mt16">
+ <label string="Printers" for="printer_ids" class="o_light_label"/>
+ <field name="printer_ids" widget="many2many_tags"/>
+ </div>
+ <div>
+ <button name="%(pos_restaurant.action_restaurant_printer_form)d" icon="fa-arrow-right" type="action" string="Printers" class="btn-link"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div id="tip_product" position="after">
+ <div attrs="{'invisible': ['|', ('module_pos_restaurant', '=', False), ('iface_tipproduct', '=', False)]}">
+ <field name="set_tip_after_payment" class="oe_inline"/>
+ <label class="font-weight-normal" for="set_tip_after_payment" string="Add tip after payment (North America specific)"/>
+ <span class="fa fa-lg fa-cutlery" title="For bars and restaurants" role="img" aria-label="For bars and restaurants"/>
+ </div>
+ </div>
+ <div id="category_reference" position="before">
+ <div class="col-12 col-lg-6 o_setting_box"
+ id="is_table_management"
+ attrs="{'invisible': [('module_pos_restaurant', '=', False)]}">
+ <div class="o_setting_left_pane">
+ <field name="is_table_management" attrs="{'readonly': [('has_active_session','=', True)]}"/>
+ </div>
+ <div class="o_setting_right_pane">
+ <label for="is_table_management"/>
+ <span class="fa fa-lg fa-cutlery" title="For bars and restaurants" role="img" aria-label="For bars and restaurants"/>
+ <div class="text-muted">
+ Design floors and assign orders to tables
+ </div>
+ <div class="content-group" attrs="{'invisible': [('is_table_management','=',False)]}">
+ <div class="mt16">
+ <label string="Floors" for="floor_ids" class="o_light_label"/>
+ <field name="floor_ids" widget="many2many_tags" attrs="{'readonly': [('has_active_session','=', True)]}" domain="['|', ('pos_config_id', '=', False), ('pos_config_id', '=', active_id)]"/>
+ </div>
+ <div>
+ <button name="%(pos_restaurant.action_restaurant_floor_form)d" icon="fa-arrow-right" type="action" string="Floors" class="btn-link"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-12 col-lg-6 o_setting_box"
+ id="iface_orderline_notes"
+ attrs="{'invisible': [('module_pos_restaurant', '=', False)]}">
+ <div class="o_setting_left_pane">
+ <field name="iface_orderline_notes"/>
+ </div>
+ <div class="o_setting_right_pane">
+ <label for="iface_orderline_notes"/>
+ <span class="fa fa-lg fa-cutlery" title="For bars and restaurants" role="img" aria-label="For bars and restaurants"/>
+ <div class="text-muted">
+ Add notes on order lines
+ </div>
+ </div>
+ </div>
+ </div>
+ </field>
+ </record>
+
+</odoo>
diff --git a/addons/pos_restaurant/views/pos_order_views.xml b/addons/pos_restaurant/views/pos_order_views.xml
new file mode 100644
index 00000000..182eb8d4
--- /dev/null
+++ b/addons/pos_restaurant/views/pos_order_views.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<odoo>
+
+ <record id="view_pos_pos_form" model="ir.ui.view">
+ <field name="name">pos.order.form.view.inherit</field>
+ <field name="model">pos.order</field>
+ <field name="inherit_id" ref="point_of_sale.view_pos_pos_form"></field>
+ <field name="arch" type="xml">
+ <xpath expr="//group[@name='order_fields']" position="inside">
+ <field name="table_id"/>
+ <field name="customer_count"/>
+ </xpath>
+ </field>
+ </record>
+
+</odoo>
diff --git a/addons/pos_restaurant/views/pos_restaurant_templates.xml b/addons/pos_restaurant/views/pos_restaurant_templates.xml
new file mode 100644
index 00000000..8f5727a9
--- /dev/null
+++ b/addons/pos_restaurant/views/pos_restaurant_templates.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+ <template id="assets" inherit_id="point_of_sale.assets">
+ <xpath expr="." position="inside">
+ <script type="text/javascript" src="/pos_restaurant/static/lib/js/jquery.ui.touch-punch.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/multiprint.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/floors.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/notes.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/payment.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Resizeable.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/ProductScreen/ControlButtons/OrderlineNoteButton.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/ProductScreen/ControlButtons/TableGuestsButton.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/ProductScreen/ControlButtons/PrintBillButton.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/ProductScreen/ControlButtons/SubmitOrderButton.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/ProductScreen/ControlButtons/SplitBillButton.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/ProductScreen/ControlButtons/TransferOrderButton.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/ProductScreen/Orderline.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/BillScreen.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/SplitBillScreen/SplitBillScreen.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/SplitBillScreen/SplitOrderline.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/FloorScreen/FloorScreen.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/FloorScreen/EditBar.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/FloorScreen/TableWidget.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/FloorScreen/EditableTable.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/OrderManagementScreen/OrderManagementScreen.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/OrderManagementScreen/OrderRow.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/TicketScreen.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/ChromeWidgets/BackToFloorButton.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/ChromeWidgets/TicketButton.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Chrome.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/ReceiptScreen/ReceiptScreen.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/PaymentScreen.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/src/js/Screens/TipScreen.js"></script>
+ </xpath>
+ <xpath expr="//link[@id='pos-stylesheet']" position="after">
+ <link rel="stylesheet" href="/pos_restaurant/static/src/css/restaurant.css"/>
+ </xpath>
+ </template>
+
+ <template id="assets_backend" name="hr assets" inherit_id="web.assets_backend">
+ <xpath expr="." position="inside">
+ <link rel="stylesheet" type="text/scss" href="/point_of_sale/static/src/scss/pos_dashboard.scss"/>
+ </xpath>
+ </template>
+
+ <template id="assets_tests" name="POS Restaurant Assets Tests" inherit_id="web.assets_tests">
+ <xpath expr="." position="inside">
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/helpers/ProductScreenTourMethods.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/helpers/ChromeTourMethods.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/helpers/FloorScreenTourMethods.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/helpers/SplitBillScreenTourMethods.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/helpers/TextAreaPopupTourMethods.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/helpers/TextInputPopupTourMethods.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/helpers/BillScreenTourMethods.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/helpers/TipScreenTourMethods.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/pos_restaurant.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/SplitBillScreen.tour.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/ControlButtons.tour.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/FloorScreen.tour.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/OrderManagementScreen.tour.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/TicketScreen.tour.js"></script>
+ <script type="text/javascript" src="/pos_restaurant/static/tests/tours/TipScreen.tour.js"></script>
+ </xpath>
+ </template>
+
+ <template id="pos_restaurant.qunit_suite_tests" inherit_id="point_of_sale.qunit_suite_tests">
+ <xpath expr="." position="inside">
+ <script type="text/javascript" src="/pos_restaurant/static/tests/unit/test_FloorScreen.js"></script>
+ </xpath>
+ </template>
+
+</odoo>
diff --git a/addons/pos_restaurant/views/pos_restaurant_views.xml b/addons/pos_restaurant/views/pos_restaurant_views.xml
new file mode 100644
index 00000000..5db31bbd
--- /dev/null
+++ b/addons/pos_restaurant/views/pos_restaurant_views.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0"?>
+<odoo>
+ <!-- RESTAURANTS FLOORS -->
+
+ <record id="view_restaurant_floor_form" model="ir.ui.view">
+ <field name="name">Restaurant Floors</field>
+ <field name="model">restaurant.floor</field>
+ <field name="arch" type="xml">
+ <form string="Restaurant Floor">
+ <sheet>
+ <widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
+ <field name="active" invisible="1"/>
+ <group col="4">
+ <field name="name" />
+ <field name="pos_config_id" />
+ <field name="background_color" groups="base.group_no_one" />
+ </group>
+ <field name="table_ids">
+ <tree string='Tables'>
+ <field name="name" />
+ <field name="seats" />
+ <field name="shape" />
+ </tree>
+ </field>
+ </sheet>
+ </form>
+ </field>
+ </record>
+
+ <record id="view_restaurant_floor_tree" model="ir.ui.view">
+ <field name="name">Restaurant Floors</field>
+ <field name="model">restaurant.floor</field>
+ <field name="arch" type="xml">
+ <tree string="Restaurant Floors">
+ <field name="sequence" widget="handle" />
+ <field name="name" />
+ <field name="pos_config_id" />
+ </tree>
+ </field>
+ </record>
+
+ <record id="view_restaurant_floor_search" model="ir.ui.view">
+ <field name="name">restaurant.floor.search</field>
+ <field name="model">restaurant.floor</field>
+ <field name="arch" type="xml">
+ <search>
+ <field name="name"/>
+ <filter string="Archived" name="active" domain="[('active', '=', False)]"/>
+ </search>
+ </field>
+ </record>
+
+ <record id="view_restaurant_floor_kanban" model="ir.ui.view">
+ <field name="name">restaurant.floor.kanban</field>
+ <field name="model">restaurant.floor</field>
+ <field name="arch" type="xml">
+ <kanban class="o_kanban_mobile">
+ <field name="name"/>
+ <field name="pos_config_id" />
+ <templates>
+ <t t-name="kanban-box">
+ <div t-attf-class="oe_kanban_global_click">
+ <div><strong>Floor Name: </strong><t t-esc="record.name.value"/></div>
+ <div><strong>Point of Sale: </strong><t t-esc="record.pos_config_id.value"/></div>
+ </div>
+ </t>
+ </templates>
+ </kanban>
+ </field>
+ </record>
+
+ <record id="action_restaurant_floor_form" model="ir.actions.act_window">
+ <field name="name">Floor Plans</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">restaurant.floor</field>
+ <field name="view_mode">tree,kanban,form</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Add a new restaurant floor
+ </p><p>
+ A restaurant floor represents the place where customers are served, this is where you can
+ define and position the tables.
+ </p>
+ </field>
+ </record>
+
+ <record id="view_restaurant_table_form" model="ir.ui.view">
+ <field name="name">Restaurant Table</field>
+ <field name="model">restaurant.table</field>
+ <field name="arch" type="xml">
+ <form string="Restaurant Table">
+ <group col="2">
+ <field name="name" />
+ <field name="seats" />
+ </group>
+ <group col="4" string="Appearance" groups="base.group_no_one">
+ <field name="shape" />
+ <field name="color" />
+ <field name="position_h" />
+ <field name="position_v" />
+ <field name="width" />
+ <field name="height" />
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <menuitem id="menu_restaurant_floor_all"
+ parent="point_of_sale.menu_point_config_product"
+ action="action_restaurant_floor_form"
+ sequence="10"
+ groups="base.group_no_one"/>
+
+ <!-- RESTAURANT PRINTERS -->
+
+ <record id="view_restaurant_printer_form" model="ir.ui.view">
+ <field name="name">Order Printer</field>
+ <field name="model">restaurant.printer</field>
+ <field name="arch" type="xml">
+ <form string="POS Printer">
+ <sheet>
+ <group>
+ <field name="name" />
+ <field name="printer_type" widget="radio"/>
+ <field name="proxy_ip" attrs="{'invisible': [('printer_type', '!=', 'iot')]}"/>
+ <field name="product_categories_ids" />
+ </group>
+ </sheet>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_restaurant_printer_form" model="ir.actions.act_window">
+ <field name="name">Order Printers</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">restaurant.printer</field>
+ <field name="view_mode">tree,kanban,form</field>
+ <field name="help" type="html">
+ <p class="o_view_nocontent_smiling_face">
+ Add a new restaurant order printer
+ </p><p>
+ Order Printers are used by restaurants and bars to print the
+ order updates in the kitchen/bar when the waiter updates the order.
+ </p><p>
+ Each Order Printer has an IP Address that defines the IoT Box/Hardware
+ Proxy where the printer can be found, and a list of product categories.
+ An Order Printer will only print updates for products belonging to one of
+ its categories.
+ </p>
+ </field>
+ </record>
+
+ <record id="view_restaurant_printer" model="ir.ui.view">
+ <field name="name">Order Printers</field>
+ <field name="model">restaurant.printer</field>
+ <field name="arch" type="xml">
+ <tree string="Restaurant Order Printers">
+ <field name="name" />
+ <field name="proxy_ip" />
+ <field name="product_categories_ids" />
+ </tree>
+ </field>
+ </record>
+
+ <menuitem id="menu_restaurant_printer_all"
+ parent="point_of_sale.menu_point_config_product"
+ action="action_restaurant_printer_form"
+ sequence="15"
+ groups="base.group_no_one"/>
+
+</odoo>