Custom POS UI
Let’s see how to customize the Point of Sale user interface. Point of Sale application
written with the OWL Qweb Template.
This is the default point of Sale user interface.
We are going to customize this UI and display the available quantity information
in the product box.
For that, I created a pos_custom.js file in my module like this.
odoo.define('custom_pos.user_inteface', function(require) {
"User strict";
Var models = require('point_of_sale.models');
models.load_fields("product.product", ['qty_available']);
});
Here we are loading qty_available field to the product.product pos model, which
was not loaded by default. After this, the product data will contain this field
information too, and we can use it in the Qweb template.
We have loaded the required field. Now we need to customize the product card.
For that, we need to inherit the ProductItem template. This is the default product
card template.
Add pos_screen.xml file to the module and inherit the template like this. We extend
the existing product card template and display additional information using xpath.
<t t-name="ProductItem" t-inherit="point_of_sale.ProductItem" t-inherit-mode="extension" owl="1">
<xpath expr="////t[@t-esc='props.product.display_name']" position="after">
<br/>
<span>Available Qty: <t t-esc="props.product.qty_available"/></span>
</xpath>
</t>
Using xpath we are displaying the available quantity after the product display name.
Finally, add the js file and qweb template in the assets.
'assets': {
'point_of_sale.assets': [
'custom_pos_javascript_file/static/src/js/custom_pos.js',
],
'web.assets_qweb': [
'custom_pos_javascript_file/static/src/xml/pos_screen.xml'
],
},
Now the product card also shows the available quantity information.