summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorJoseph Caburnay <jcb@odoo.com>2020-05-20 05:15:39 +0000
committerJoseph Caburnay <jcb@odoo.com>2020-06-26 05:40:23 +0000
commit67e148c20f82de862b3f78fc5a54d1e63555600e (patch)
treea9643c41ebaf78c875eab1d9d9ffaf51d4eec684 /addons
parent8f2d79a1172a2a740487cf6b6aa35ddaecd036ca (diff)
[IMP] point_of_sale: various pos backend views and pos ui improvements
TASK-ID: 2230195
Diffstat (limited to 'addons')
-rw-r--r--addons/point_of_sale/models/pos_config.py4
-rw-r--r--addons/point_of_sale/models/pos_session.py2
-rw-r--r--addons/point_of_sale/static/src/css/pos.css8
-rw-r--r--addons/point_of_sale/static/src/xml/Screens/PaymentScreen/PaymentScreen.xml60
-rw-r--r--addons/point_of_sale/static/src/xml/Screens/ProductScreen/OrderWidget.xml2
-rw-r--r--addons/point_of_sale/views/pos_config_view.xml13
-rw-r--r--addons/point_of_sale/views/pos_order_view.xml16
-rw-r--r--addons/point_of_sale/views/pos_session_view.xml18
-rw-r--r--addons/pos_hr/views/pos_order_view.xml2
-rw-r--r--addons/pos_restaurant/models/pos_config.py4
-rw-r--r--addons/pos_restaurant/views/pos_config_views.xml4
11 files changed, 75 insertions, 58 deletions
diff --git a/addons/point_of_sale/models/pos_config.py b/addons/point_of_sale/models/pos_config.py
index d63bced8eb9..dae8d95ddf8 100644
--- a/addons/point_of_sale/models/pos_config.py
+++ b/addons/point_of_sale/models/pos_config.py
@@ -194,8 +194,8 @@ class PosConfig(models.Model):
use_pricelist = fields.Boolean("Use a pricelist.")
tax_regime = fields.Boolean("Tax Regime")
tax_regime_selection = fields.Boolean("Tax Regime Selection value")
- start_category = fields.Boolean("Set Start Category", default=False)
- limit_categories = fields.Boolean("Restrict Available Product Categories")
+ start_category = fields.Boolean("Start Category", default=False)
+ limit_categories = fields.Boolean("Restrict Product Categories")
module_account = fields.Boolean(string='Invoicing', help='Enables invoice generation from the Point of Sale.')
module_pos_restaurant = fields.Boolean("Is a Bar/Restaurant")
module_pos_discount = fields.Boolean("Global Discounts")
diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py
index 8abdcef3167..8e058ec8712 100644
--- a/addons/point_of_sale/models/pos_session.py
+++ b/addons/point_of_sale/models/pos_session.py
@@ -32,7 +32,7 @@ class PosSession(models.Model):
index=True)
name = fields.Char(string='Session ID', required=True, readonly=True, default='/')
user_id = fields.Many2one(
- 'res.users', string='Responsible',
+ 'res.users', string='Opened By',
required=True,
index=True,
readonly=True,
diff --git a/addons/point_of_sale/static/src/css/pos.css b/addons/point_of_sale/static/src/css/pos.css
index a53f99fd54e..8b1dedd7cdf 100644
--- a/addons/point_of_sale/static/src/css/pos.css
+++ b/addons/point_of_sale/static/src/css/pos.css
@@ -1489,6 +1489,9 @@ td {
padding-left: 0;
flex-grow: 5;
}
+.payment-screen .customer-button {
+ margin-bottom: 10px;
+}
.payment-screen .payment-buttons .button {
background: #e2e2e2;
line-height: 73px;
@@ -1618,6 +1621,11 @@ td {
.payment-screen .payment-buttons {
display: flex;
flex-wrap: wrap;
+ flex-direction: column;
+ }
+ .payment-screen .payment-controls {
+ display: flex;
+ flex-wrap: wrap;
}
.payment-screen .payment-buttons .button {
flex-basis: 30%;
diff --git a/addons/point_of_sale/static/src/xml/Screens/PaymentScreen/PaymentScreen.xml b/addons/point_of_sale/static/src/xml/Screens/PaymentScreen/PaymentScreen.xml
index e2382e2f3f3..d6ae732708b 100644
--- a/addons/point_of_sale/static/src/xml/Screens/PaymentScreen/PaymentScreen.xml
+++ b/addons/point_of_sale/static/src/xml/Screens/PaymentScreen/PaymentScreen.xml
@@ -49,35 +49,39 @@
</section>
<div class="payment-buttons">
- <div class="button" t-on-click="selectClient">
- <i class="fa fa-user" role="img" aria-label="Customer"
- title="Customer" />
- <span class="js_customer_name">
- <t t-if="env.pos.get_client()">
- <t t-esc="env.pos.get_client().name" />
- </t>
- <t t-if="!env.pos.get_client()">
- Customer
- </t>
- </span>
+ <div class="customer-button">
+ <div class="button" t-on-click="selectClient">
+ <i class="fa fa-user" role="img" aria-label="Customer"
+ title="Customer" />
+ <span class="js_customer_name">
+ <t t-if="env.pos.get_client()">
+ <t t-esc="env.pos.get_client().name" />
+ </t>
+ <t t-if="!env.pos.get_client()">
+ Customer
+ </t>
+ </span>
+ </div>
</div>
- <div t-if="env.pos.config.module_account" class="button js_invoice"
- t-att-class="{ highlight: currentOrder.is_to_invoice() }"
- t-on-click="toggleIsToInvoice">
- <i class="fa fa-file-text-o" /> Invoice
- </div>
- <div class="button js_email"
- t-att-class="{ highlight: currentOrder.is_to_email() }"
- t-on-click="toggleIsToEmail">
- <i class="fa fa-inbox" /> Email
- </div>
- <div t-if="env.pos.config.tip_product_id" class="button js_tip"
- t-on-click="addTip">
- <i class="fa fa-heart" /> Tip
- </div>
- <div t-if="env.pos.config.iface_cashdrawer" class="button js_cashdrawer"
- t-on-click="openCashbox">
- <i class="fa fa-archive" /> Open Cashbox
+ <div class="payment-controls">
+ <div t-if="env.pos.config.module_account" class="button js_invoice"
+ t-att-class="{ highlight: currentOrder.is_to_invoice() }"
+ t-on-click="toggleIsToInvoice">
+ <i class="fa fa-file-text-o" /> Invoice
+ </div>
+ <div class="button js_email"
+ t-att-class="{ highlight: currentOrder.is_to_email() }"
+ t-on-click="toggleIsToEmail">
+ <i class="fa fa-inbox" /> Email
+ </div>
+ <div t-if="env.pos.config.tip_product_id" class="button js_tip"
+ t-on-click="addTip">
+ <i class="fa fa-heart" /> Tip
+ </div>
+ <div t-if="env.pos.config.iface_cashdrawer" class="button js_cashdrawer"
+ t-on-click="openCashbox">
+ <i class="fa fa-archive" /> Open Cashbox
+ </div>
</div>
</div>
</div>
diff --git a/addons/point_of_sale/static/src/xml/Screens/ProductScreen/OrderWidget.xml b/addons/point_of_sale/static/src/xml/Screens/ProductScreen/OrderWidget.xml
index 316453726fc..532309dce94 100644
--- a/addons/point_of_sale/static/src/xml/Screens/ProductScreen/OrderWidget.xml
+++ b/addons/point_of_sale/static/src/xml/Screens/ProductScreen/OrderWidget.xml
@@ -8,7 +8,7 @@
<div class='order-empty'>
<i class='fa fa-shopping-cart' role="img" aria-label="Shopping cart"
title="Shopping cart"/>
- <h1>Your shopping cart is empty</h1>
+ <h1>This order is empty</h1>
</div>
</t>
<t t-else="">
diff --git a/addons/point_of_sale/views/pos_config_view.xml b/addons/point_of_sale/views/pos_config_view.xml
index e3b849801e1..c1dd061b0d6 100644
--- a/addons/point_of_sale/views/pos_config_view.xml
+++ b/addons/point_of_sale/views/pos_config_view.xml
@@ -71,7 +71,7 @@
<field name="module_pos_hr" attrs="{'readonly': [('has_active_session','=', True)]}"/>
</div>
<div class="o_setting_right_pane" id="login_with_employees">
- <span class="o_form_label">Login with Employees</span>
+ <span class="o_form_label">Authorized Employees</span>
<div class="text-muted">
Use employee credentials to log in to the PoS session and switch cashier
</div>
@@ -102,7 +102,7 @@
<div class="o_setting_right_pane">
<label for="limit_categories"/>
<div class="text-muted">
- Available Product Categories
+ Pick which product categories are available
</div>
<div class="content-group mt16" attrs="{'invisible': [('limit_categories', '=', False)]}">
<field name="iface_available_categ_ids" widget="many2many_tags" attrs="{'readonly': [('has_active_session','=', True)]}"/>
@@ -156,9 +156,9 @@
<field name="is_posbox"/>
</div>
<div class="o_setting_right_pane">
- <label for="is_posbox" string="IoT Box Devices"/>
+ <label for="is_posbox" string="IoT Box"/>
<div class="text-muted mb16">
- Connect devices to your PoS through an IoT Box
+ Connect devices using an IoT Box
</div>
<div class="content-group pos_iot_config" attrs="{'invisible' : [('is_posbox', '=', False)]}">
<div class="row">
@@ -204,9 +204,9 @@
<div class="o_setting_left_pane">
</div>
<div class="o_setting_right_pane">
- <span class="o_form_label">Barcode Scanner</span>
+ <span class="o_form_label">Barcodes</span>
<div class="text-muted">
- Set barcodes to scan products, customer cards, etc.
+ Use barcodes to scan products, customer cards, etc.
</div>
<div class="content-group mt16 row">
<label for="barcode_nomenclature_id" string="Barcode Nomenclature" class="col-lg-3 o_light_label"/>
@@ -535,7 +535,6 @@
<field name="arch" type="xml">
<tree string="Point of Sale Configuration">
<field name="name" />
- <field name="picking_type_id"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
</tree>
</field>
diff --git a/addons/point_of_sale/views/pos_order_view.xml b/addons/point_of_sale/views/pos_order_view.xml
index fd4ad92c74c..c128ef3870f 100644
--- a/addons/point_of_sale/views/pos_order_view.xml
+++ b/addons/point_of_sale/views/pos_order_view.xml
@@ -134,24 +134,28 @@
<field name="arch" type="xml">
<kanban class="o_kanban_mobile" create="0" sample="1">
<field name="name"/>
- <field name="user_id"/>
+ <field name="partner_id"/>
<field name="amount_total"/>
<field name="date_order"/>
<field name="state"/>
<field name="pos_reference"/>
<field name="partner_id"/>
+ <field name="currency_id"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_card oe_kanban_global_click">
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title">
- <span>
- <t t-esc="record.user_id"/>
+ <span t-if="record.partner_id.value">
+ <t t-esc="record.partner_id.value"/>
+ </span>
+ <span t-else="">
+ <t t-esc="record.name.value"/>
</span>
</strong>
</div>
- <strong><span class="badge badge-pill"><i class="fa fa-money" role="img" aria-label="Amount" title="Amount"/> <field name="amount_total"/></span></strong>
+ <strong><field name="amount_total" widget="monetary"/></strong>
</div>
<div class="row">
<div class="col-12">
@@ -221,8 +225,8 @@
<field name="date_order"/>
<field name="pos_reference"/>
<field name="partner_id"/>
- <field string="Cashier" name="user_id"/>
- <field name="amount_total" sum="Amount total" widget="monetary"/>
+ <field string="Cashier" name="user_id" widget="many2one_avatar_user"/>
+ <field name="amount_total" sum="Amount total" widget="monetary" decoration-bf="1"/>
<field name="state" widget="badge" decoration-info="state == 'draft'" decoration-success="state not in ('draft','cancel')"/>
</tree>
</field>
diff --git a/addons/point_of_sale/views/pos_session_view.xml b/addons/point_of_sale/views/pos_session_view.xml
index 7a58a880794..9b11eb65a1b 100644
--- a/addons/point_of_sale/views/pos_session_view.xml
+++ b/addons/point_of_sale/views/pos_session_view.xml
@@ -11,15 +11,14 @@
context="{'balance': 'start'}"/>
<button name="action_pos_session_open" type="object" string="Start Session"
attrs="{'invisible' : ['|', ('cash_control', '=', False), ('state', '!=', 'opening_control')]}" class="oe_highlight"/>
- <button name="open_frontend_cb" type="object" string="Continue Selling" states="opened"
- class="oe_highlight"/>
+ <button name="open_frontend_cb" type="object" string="Continue Selling" states="opened"/>
<button id="end_session_opened" name="action_pos_session_closing_control" type="object" string="End of Session"
attrs="{'invisible' : ['|', ('cash_control', '=', False),('state', '!=', 'opened')]}"
class="oe_highlight"/>
- <button id="validate_opened" name="action_pos_session_closing_control" type="object" string="Validate Closing &amp; Post Entries"
+ <button id="validate_opened" name="action_pos_session_closing_control" type="object" string="Close Session &amp; Post Entries"
attrs="{'invisible' : ['|', ('cash_control', '=', True),('state', '!=', 'opened')]}"
class="oe_highlight"/>
- <button id="validate_closing_control" name="action_pos_session_validate" type="object" string="Validate Closing &amp; Post Entries" states="closing_control"
+ <button id="validate_closing_control" name="action_pos_session_validate" type="object" string="Close Session &amp; Post Entries" states="closing_control"
class="oe_highlight"/>
<field name="state" widget="statusbar" statusbar_visible="new_session,opening_control,opened,closing_control,closed" nolabel="1" />
@@ -136,12 +135,12 @@
<field name="model">pos.session</field>
<field name="arch" type="xml">
<tree string="Point of Sale Session" create="0" sample="1">
+ <field name="name" decoration-bf="1"/>
<field name="config_id" />
- <field name="name" />
- <field name="user_id" />
+ <field name="user_id" widget="many2one_avatar_user"/>
<field name="start_at" />
<field name="stop_at" />
- <field name="state" />
+ <field name="state" widget="badge" decoration-info="state in ('new_session', 'opening_control')" decoration-success="state in ('opened', 'closed')" decoration-warning="state == 'closing_control'" />
</tree>
</field>
</record>
@@ -198,8 +197,11 @@
<separator/>
<filter string="Opening Date" name="start_date" date="start_at" />
<group expand="0" string="Group By">
- <filter string="Responsible" name="user" domain="[]" context="{'group_by' : 'user_id'}"/>
+ <filter string="Opened By" name="user" domain="[]" context="{'group_by' : 'user_id'}"/>
<filter string="Point of Sale" name="point_of_sale" domain="[]" context="{'group_by': 'config_id'}"/>
+ <filter string="Status" name="status" domain="[]" context="{'group_by': 'state'}"/>
+ <filter string="Opening Date" name="opening_date" domain="[]" context="{'group_by': 'start_at'}"/>
+ <filter string="Closing Date" name="closing_date" domain="[]" context="{'group_by': 'stop_at'}"/>
</group>
</search>
</field>
diff --git a/addons/pos_hr/views/pos_order_view.xml b/addons/pos_hr/views/pos_order_view.xml
index 98b74cba1cc..832d31ed11b 100644
--- a/addons/pos_hr/views/pos_order_view.xml
+++ b/addons/pos_hr/views/pos_order_view.xml
@@ -32,7 +32,7 @@
<field name="inherit_id" ref="point_of_sale.view_pos_order_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='user_id']" position="replace">
- <field name="cashier"/>
+ <field name="employee_id" widget="many2one_avatar_employee"/>
</xpath>
</field>
</record>
diff --git a/addons/pos_restaurant/models/pos_config.py b/addons/pos_restaurant/models/pos_config.py
index b9807b1ec62..96e28652165 100644
--- a/addons/pos_restaurant/models/pos_config.py
+++ b/addons/pos_restaurant/models/pos_config.py
@@ -9,10 +9,10 @@ class PosConfig(models.Model):
iface_splitbill = fields.Boolean(string='Bill Splitting', help='Enables Bill Splitting in the Point of Sale.')
iface_printbill = fields.Boolean(string='Bill Printing', help='Allows to print the Bill before payment.')
- iface_orderline_notes = fields.Boolean(string='Orderline Notes', help='Allow custom notes on Orderlines.')
+ iface_orderline_notes = fields.Boolean(string='Notes', help='Allow custom notes on Orderlines.')
floor_ids = fields.One2many('restaurant.floor', 'pos_config_id', string='Restaurant Floors', help='The restaurant floors served by this point of sale.')
printer_ids = fields.Many2many('restaurant.printer', 'pos_config_printer_rel', 'config_id', 'printer_id', string='Order Printers')
- is_table_management = fields.Boolean('Table Management')
+ is_table_management = fields.Boolean('Floors & Tables')
is_order_printer = fields.Boolean('Order Printer')
module_pos_restaurant = fields.Boolean(default=True)
diff --git a/addons/pos_restaurant/views/pos_config_views.xml b/addons/pos_restaurant/views/pos_config_views.xml
index 5d6140037ed..c9bbead1ea3 100644
--- a/addons/pos_restaurant/views/pos_config_views.xml
+++ b/addons/pos_restaurant/views/pos_config_views.xml
@@ -73,7 +73,7 @@
<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">
- Manage table orders
+ Design floors and assign orders to tables
</div>
<div class="content-group" attrs="{'invisible': [('is_table_management','=',False)]}">
<div class="mt16">
@@ -96,7 +96,7 @@
<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 to orderlines
+ Add notes on order lines
</div>
</div>
</div>