From 5cf88125f85556ba1d482cd5c329f86228ffcf17 Mon Sep 17 00:00:00 2001 From: mgh-odoo Date: Fri, 17 May 2019 11:43:26 +0000 Subject: [PATCH] [IMP] point_of_sale: allow to chose the state on customer screen When you are creating some customers inside the point of sale, it is impossible to set a state on the customer address and to see the one set if it has been created in backend. So we've added a selction field for the state, set it's default value to the one set on the company. Task-1978312 Closes #33484 Signed-off-by: pimodoo --- addons/point_of_sale/static/src/js/db.js | 9 +++++---- addons/point_of_sale/static/src/js/models.js | 8 +++++++- addons/point_of_sale/static/src/js/screens.js | 19 +++++++++++++++++++ addons/point_of_sale/static/src/xml/pos.xml | 12 ++++++++++++ 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/addons/point_of_sale/static/src/js/db.js b/addons/point_of_sale/static/src/js/db.js index b03f4db2649..fc294afe358 100644 --- a/addons/point_of_sale/static/src/js/db.js +++ b/addons/point_of_sale/static/src/js/db.js @@ -277,10 +277,11 @@ var PosDB = core.Class.extend({ if(partner.barcode){ this.partner_by_barcode[partner.barcode] = partner; } - partner.address = (partner.street || '') +', '+ - (partner.zip || '') +' '+ - (partner.city || '') +', '+ - (partner.country_id[1] || ''); + partner.address = (partner.street ? partner.street + ', ': '') + + (partner.zip ? partner.zip + ', ': '') + + (partner.city ? partner.city + ', ': '') + + (partner.state_id ? partner.state_id[1] + ', ': '') + + (partner.country_id ? partner.country_id[1]: ''); this.partner_search_string += this._partner_search_string(partner); } } diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index a594820e031..47f17c9a641 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -181,7 +181,7 @@ exports.PosModel = Backbone.Model.extend({ }, },{ model: 'res.company', - fields: [ 'currency_id', 'email', 'website', 'company_registry', 'vat', 'name', 'phone', 'partner_id' , 'country_id', 'tax_calculation_rounding_method'], + fields: [ 'currency_id', 'email', 'website', 'company_registry', 'vat', 'name', 'phone', 'partner_id' , 'country_id', 'state_id', 'tax_calculation_rounding_method'], ids: function(self){ return [self.user.company_id[0]]; }, loaded: function(self,companies){ self.company = companies[0]; }, },{ @@ -215,6 +215,12 @@ exports.PosModel = Backbone.Model.extend({ self.partners = partners; self.db.add_partners(partners); }, + },{ + model: 'res.country.state', + fields: ['name', 'country_id'], + loaded: function(self,states){ + self.states = states; + }, },{ model: 'res.country', fields: ['name', 'vat_label'], diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index 3e9f97ea18a..7cd57158f22 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -1150,6 +1150,7 @@ var ClientListScreenWidget = ScreenWidget.extend({ this.$('.new-customer').click(function(){ self.display_client_details('edit',{ 'country_id': self.pos.company.country_id, + 'state_id': self.pos.company.state_id, }); }); @@ -1535,6 +1536,24 @@ var ClientListScreenWidget = ScreenWidget.extend({ }, 0); }); + contents.find('.client-address-country').on('change', function (ev) { + var $stateSelection = contents.find('.client-address-states'); + var value = this.value; + $stateSelection.empty() + $stateSelection.append($("