diff --git a/odoo/addons/pos_product_sequence/models/__init__.pyc b/odoo/addons/pos_product_sequence/models/__init__.pyc new file mode 100644 index 0000000..6a01310 Binary files /dev/null and b/odoo/addons/pos_product_sequence/models/__init__.pyc differ diff --git a/odoo/addons/pos_product_sequence/models/product.py b/odoo/addons/pos_product_sequence/models/product.py index 9486baf..f67570f 100644 --- a/odoo/addons/pos_product_sequence/models/product.py +++ b/odoo/addons/pos_product_sequence/models/product.py @@ -1,15 +1,25 @@ # -*- coding: utf-8 -*- -from odoo import fields, models +from odoo import fields, models, api class ProductProduct(models.Model): _inherit = "product.product" _order = 'pos_sequence, default_code, name, id' - class ProductTemplate(models.Model): _inherit = "product.template" _order = 'pos_sequence, name' pos_sequence = fields.Integer(string='POS Sequence', help='POS product display base on product sequence number') + + @api.model + def create(self, vals): + res = super(ProductTemplate, self).create(vals) + if res: + rec = self.search([]) + if rec: + seq = max(self.search([]).mapped('pos_sequence')) + if seq: + res.pos_sequence = seq + 1; + return res \ No newline at end of file diff --git a/odoo/addons/pos_product_sequence/models/product.pyc b/odoo/addons/pos_product_sequence/models/product.pyc new file mode 100644 index 0000000..acc4472 Binary files /dev/null and b/odoo/addons/pos_product_sequence/models/product.pyc differ diff --git a/odoo/addons/pos_product_sequence/static/src/js/models.js b/odoo/addons/pos_product_sequence/static/src/js/models.js index 056e6c2..7d6ed27 100644 --- a/odoo/addons/pos_product_sequence/static/src/js/models.js +++ b/odoo/addons/pos_product_sequence/static/src/js/models.js @@ -6,22 +6,49 @@ var core = require('web.core'); var QWeb = core.qweb; var _t = core._t; +var PosDB = require('point_of_sale.DB') var exports = require('point_of_sale.models'); +PosDB.include({ + get_product_by_category: function(category_id){ + var product_ids = this.product_by_category_id[category_id]; + var list = []; + if (product_ids) { + for (var i = 0, len = Math.min(product_ids.length, this.limit); i < len; i++) { + list.push(this.product_by_id[product_ids[i]]); + } + } + if(list.length){ + var new_list = _.sortBy(list, function(num) { + return num.pos_sequence; + }); + return new_list; + } + return list; + }, +}); + models.load_models({ model: 'product.product', - fields: ['display_name', 'list_price', 'standard_price', 'categ_id', 'pos_categ_id', 'taxes_id', + // todo remove list_price in master, it is unused + fields: ['display_name', 'list_price', 'lst_price', 'standard_price', 'categ_id', 'pos_categ_id', 'taxes_id', 'barcode', 'default_code', 'to_weight', 'uom_id', 'description_sale', 'description', - 'product_tmpl_id','tracking'], + 'product_tmpl_id','tracking','pos_sequence'], order: _.map(['pos_sequence','sequence','default_code','name'], function (name) { return {name: name}; }), domain: [['sale_ok','=',true],['available_in_pos','=',true]], context: function(self){ return { display_default_code: false }; }, loaded: function(self, products){ + var using_company_currency = self.config.currency_id[0] === self.company.currency_id[0]; + var conversion_rate = self.currency.rate / self.company_currency.rate; self.db.add_products(_.map(products, function (product) { + if (!using_company_currency) { + product.lst_price = round_pr(product.lst_price * conversion_rate, self.currency.rounding); + } product.categ = _.findWhere(self.product_categories, {'id': product.categ_id[0]}); return new exports.Product({}, product); })); }, }); return exports; + }); \ No newline at end of file