openerp-community-reviewer team mailing list archive
-
openerp-community-reviewer team
-
Mailing list archive
-
Message #07933
Re: [Merge] lp:~sylvain-legal/openerp-pos/7.0_pos_select_customer into lp:openerp-pos
I have made a comment inline.
Diff comments:
> === added directory 'pos_select_customer'
> === added file 'pos_select_customer/__init__.py'
> --- pos_select_customer/__init__.py 1970-01-01 00:00:00 +0000
> +++ pos_select_customer/__init__.py 2014-07-30 11:15:32 +0000
> @@ -0,0 +1,22 @@
> +# -*- encoding: utf-8 -*-
> +##############################################################################
> +#
> +# Point Of Sale - Select Customer module for OpenERP
> +# Copyright (C) 2013-2014 GRAP (http://www.grap.coop)
> +# @author Julien WESTE
> +# @author Sylvain LE GAL (https://twitter.com/legalsylvain)
> +#
> +# This program is free software: you can redistribute it and/or modify
> +# it under the terms of the GNU Affero General Public License as
> +# published by the Free Software Foundation, either version 3 of the
> +# License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU Affero General Public License for more details.
> +#
> +# You should have received a copy of the GNU Affero General Public License
> +# along with this program. If not, see <http://www.gnu.org/licenses/>.
> +#
> +##############################################################################
>
> === added file 'pos_select_customer/__openerp__.py'
> --- pos_select_customer/__openerp__.py 1970-01-01 00:00:00 +0000
> +++ pos_select_customer/__openerp__.py 2014-07-30 11:15:32 +0000
> @@ -0,0 +1,76 @@
> +# -*- encoding: utf-8 -*-
> +##############################################################################
> +#
> +# Point Of Sale - Select Customer module for OpenERP
> +# Copyright (C) 2014 GRAP (http://www.grap.coop)
> +# @author Julien WESTE
> +# @author Sylvain LE GAL (https://twitter.com/legalsylvain)
> +#
> +# This program is free software: you can redistribute it and/or modify
> +# it under the terms of the GNU Affero General Public License as
> +# published by the Free Software Foundation, either version 3 of the
> +# License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU Affero General Public License for more details.
> +#
> +# You should have received a copy of the GNU Affero General Public License
> +# along with this program. If not, see <http://www.gnu.org/licenses/>.
> +#
> +##############################################################################
> +
> +{
> + 'name': 'Point Of Sale - Select Customers',
> + 'summary': 'Allow users to select a customer in Front End Point Of Sale',
> + 'version': '0.1',
> + 'category': 'sale',
> + 'description': """
> +Allow users to select a customer in Front End Point Of Sale
> +===========================================================
> +
> +Functionality:
> +--------------
> + * Allow user to set a customer to a pos order in front end views;
> +
> +Possible improvements and fix:
> +------------------------------
> + * This module displays all the customers. That can be long to display"""
Oh, I almost forget about this. I mean for example here. You don't need this intermediate triple quota.
> + """ if there are a lot of customers in database; Display only 80"""
> + """ could be a solution;
> + * Images of customers are loaded each time; Similar behaviour as"""
> + """ products image management (with cache) could be developped;
> +
> +NON Covered features:
> +---------------------
> + * Possibility to create customers in front end views;
> + * Possibility to change price if customer has a list price different as"""
> + """ the default list price; (Big stuff);
> + * Possibility to see if the partner has not the default price list;
> + * Possibility to invoice in front-end views;
> +
> +Copyright, Authors and Licence:
> +-------------------------------
> + * Copyright: 2014, GRAP: Groupement Régional Alimentaire de Proximité;
> + * Author:
> + * Julien WESTE;
> + * Sylvain LE GAL (https://twitter.com/legalsylvain);
> + * Licence: AGPL-3 (http://www.gnu.org/licenses/);""",
> + 'author': 'GRAP',
> + 'website': 'http://www.grap.coop',
> + 'license': 'AGPL-3',
> + 'depends': [
> + 'point_of_sale',
> + 'pos_second_header',
> + ],
> + 'qweb': [
> + 'static/src/xml/psc.xml',
> + ],
> + 'js': [
> + 'static/src/js/psc.js',
> + ],
> + 'css': [
> + 'static/src/css/psc.css',
> + ],
> +}
>
> === added directory 'pos_select_customer/i18n'
> === added file 'pos_select_customer/i18n/fr.po'
> --- pos_select_customer/i18n/fr.po 1970-01-01 00:00:00 +0000
> +++ pos_select_customer/i18n/fr.po 2014-07-30 11:15:32 +0000
> @@ -0,0 +1,74 @@
> +# -*- encoding: utf-8 -*-
> +##############################################################################
> +#
> +# Point Of Sale - Select Customer module for OpenERP
> +# Copyright (C) 2013-2014 GRAP (http://www.grap.coop)
> +# @author Julien WESTE
> +# @author Sylvain LE GAL (https://twitter.com/legalsylvain)
> +#
> +# This program is free software: you can redistribute it and/or modify
> +# it under the terms of the GNU Affero General Public License as
> +# published by the Free Software Foundation, either version 3 of the
> +# License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU Affero General Public License for more details.
> +#
> +# You should have received a copy of the GNU Affero General Public License
> +# along with this program. If not, see <http://www.gnu.org/licenses/>.
> +#
> +##############################################################################
> +# Translation of OpenERP Server.
> +# This file contains the translation of the following modules:
> +# * pos_select_customer
> +#
> +msgid ""
> +msgstr ""
> +"Project-Id-Version: OpenERP Server 7.0\n"
> +"Report-Msgid-Bugs-To: \n"
> +"POT-Creation-Date: 2014-04-16 16:31+0000\n"
> +"PO-Revision-Date: 2014-04-16 16:31+0000\n"
> +"Last-Translator: <>\n"
> +"Language-Team: \n"
> +"MIME-Version: 1.0\n"
> +"Content-Type: text/plain; charset=UTF-8\n"
> +"Content-Transfer-Encoding: \n"
> +"Plural-Forms: \n"
> +
> +#. module: pos_select_customer
> +#. openerp-web
> +#: code:addons/pos_select_customer/static/src/xml/psc.xml:48
> +#, python-format
> +msgid "Cancel"
> +msgstr "Annuler"
> +
> +#. module: pos_select_customer
> +#. openerp-web
> +#: code:addons/pos_select_customer/static/src/js/psc.js:57
> +#, python-format
> +msgid "Customer"
> +msgstr "Client"
> +
> +#. module: pos_select_customer
> +#. openerp-web
> +#: code:addons/pos_select_customer/static/src/xml/psc.xml:41
> +#, python-format
> +msgid "Customer Selection"
> +msgstr "Sélection d'un client"
> +
> +#. module: pos_select_customer
> +#. openerp-web
> +#: code:addons/pos_select_customer/static/src/js/psc.js:68
> +#, python-format
> +msgid "Del."
> +msgstr "Suppr."
> +
> +#. module: pos_select_customer
> +#. openerp-web
> +#: code:addons/pos_select_customer/static/src/xml/psc.xml:45
> +#, python-format
> +msgid "Search Customers"
> +msgstr "Rechercher des clients"
> +
>
> === added directory 'pos_select_customer/static'
> === added directory 'pos_select_customer/static/src'
> === added directory 'pos_select_customer/static/src/css'
> === added file 'pos_select_customer/static/src/css/psc.css'
> --- pos_select_customer/static/src/css/psc.css 1970-01-01 00:00:00 +0000
> +++ pos_select_customer/static/src/css/psc.css 2014-07-30 11:15:32 +0000
> @@ -0,0 +1,168 @@
> +/******************************************************************************
> + Point Of Sale - Select Customer module for OpenERP
> + Copyright (C) 2014 GRAP (http://www.grap.coop)
> + @author Julien WESTE
> + @author Sylvain LE GAL (https://twitter.com/legalsylvain)
> +
> + This program is free software: you can redistribute it and/or modify
> + it under the terms of the GNU Affero General Public License as
> + published by the Free Software Foundation, either version 3 of the
> + License, or (at your option) any later version.
> +
> + This program is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + GNU Affero General Public License for more details.
> +
> + You should have received a copy of the GNU Affero General Public License
> + along with this program. If not, see <http://www.gnu.org/licenses/>.
> +******************************************************************************/
> +
> +/* ********* Current customer name ********* */
> +
> +.point-of-sale #rightheader #customer-name{
> + width:200px;
> +}
> +.point-of-sale #rightheader #remove-customer-button{
> + width:80px;
> +}
> +
> +/* ********* Customer PopUp ********* */
> +.point-of-sale .modal-dialog .popup-select-customer{
> + margin-left:0;
> + margin-top:0;
> + left:5%;
> + width: 90%;
> + top:5%;
> + height:90%;
> +}
> +.point-of-sale .modal-dialog .popup-select-customer .customer-header{
> + height:65px;
> +}
> +
> +.point-of-sale .modal-dialog .popup-select-customer #customer-title{
> +/* text-align:left;*/
> +}
> +.point-of-sale .modal-dialog .popup-select-customer .customer-searchbox{
> + float:left;
> + top: 20px;
> + position: absolute;
> + left: 10px;
> +}
> +.point-of-sale .modal-dialog .popup-select-customer #customer-cancel{
> + top: 0px;
> + position: absolute;
> + right: 10px;
> +}
> +/* ********* Customer List ********* */
> +
> +.point-of-sale .customer-list {
> + padding:10px !important;
> +}
> +
> +.point-of-sale .customer-list-container {
> + position:absolute;
> + top:70px;
> + bottom:0px;
> + left:0px;
> + right:0px;
> +}
> +
> +.point-of-sale .customer-list-scroller{
> + -webkit-box-sizing: border-box;
> + -moz-box-sizing: border-box;
> + -ms-box-sizing: border-box;
> + box-sizing: border-box;
> + width:100%;
> + height:100%;
> + overflow: hidden;
> +}
> +
> +/* ********* Customer Scrollbar ********* */
> +/* Fix incorrect display of buttons.*/
> +/* TODO: found why it is necessary and remove top,bottom and left values*/
> +.point-of-sale .customer-list-container .scrollbar .up-button{
> + top: -10px;
> + left: -5px;
> +}
> +.point-of-sale .customer-list-container .scrollbar .down-button {
> + left: -5px;
> + bottom: -5px;
> +}
> +
> +/* ********* Customer Item ********* */
> +
> +.point-of-sale .customer {
> + position:relative;
> + vertical-align: top;
> + display: inline-block;
> + font-size: 11px;
> + margin: 5px !important;
> + width: 200px;
> + height:110px;
> + background:#fff;
> + border: 1px solid #fff;
> + border-radius: 3px;
> + overflow: hidden;
> + -webkit-box-shadow: 0px 2px 0px #dad8e4, 0px 1px 8px #636480;
> + -moz-box-shadow: 0px 2px 0px #dad8e4, 0px 1px 8px #636480;
> + box-shadow: 0px 2px 0px #dad8e4, 0px 1px 8px #636480;
> +}
> +
> +.point-of-sale .customer .customer-name,
> + .point-of-sale .customer .customer-email,
> + .point-of-sale .customer .customer-address,
> + .point-of-sale .customer .customer-phone,
> + .point-of-sale .customer .customer-mobile{
> + position: absolute;
> + -webkit-box-sizing: border-box;
> + -moz-box-sizing: border-box;
> + -ms-box-sizing: border-box;
> + box-sizing: border-box;
> +
> + text-align:left;
> + overflow: hidden;
> + text-overflow: ellipsis;
> + background: -webkit-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
> + background: -moz-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
> + background: -ms-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1));
> + padding: 3px;
> +}
> +.point-of-sale .customer .customer-name{
> + font-size: 13px;
> + width:100%;
> + top:0px;
> + height: 20px;
> +}
> +.point-of-sale .customer .customer-email{
> + width:100%;
> + top:24px;
> + height: 16px;
> +}
> +.point-of-sale .customer .customer-img {
> + position: absolute;
> + top: 44px;
> + left: 0px;
> + width: 64px;
> + height: 64px;
> + background: white;
> + text-align: center;
> +}
> +.point-of-sale .customer .customer-address{
> + width:135px;
> + top:44px;
> + left: 65px;
> + height: 32px;
> +}
> +.point-of-sale .customer .customer-phone{
> + width:135px;
> + top:76px;
> + left: 65px;
> + height: 16px;
> +}
> +.point-of-sale .customer .customer-mobile{
> + width:135px;
> + top:92px;
> + left: 65px;
> + height: 16px;
> +}
>
> === added directory 'pos_select_customer/static/src/img'
> === added file 'pos_select_customer/static/src/img/icon.png'
> Binary files pos_select_customer/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and pos_select_customer/static/src/img/icon.png 2014-07-30 11:15:32 +0000 differ
> === added directory 'pos_select_customer/static/src/js'
> === added file 'pos_select_customer/static/src/js/psc.js'
> --- pos_select_customer/static/src/js/psc.js 1970-01-01 00:00:00 +0000
> +++ pos_select_customer/static/src/js/psc.js 2014-07-30 11:15:32 +0000
> @@ -0,0 +1,309 @@
> +/******************************************************************************
> + Point Of Sale - Select Customer module for OpenERP
> + Copyright (C) 2014 GRAP (http://www.grap.coop)
> + @author Julien WESTE
> + @author Sylvain LE GAL (https://twitter.com/legalsylvain)
> +
> + This program is free software: you can redistribute it and/or modify
> + it under the terms of the GNU Affero General Public License as
> + published by the Free Software Foundation, either version 3 of the
> + License, or (at your option) any later version.
> +
> + This program is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + GNU Affero General Public License for more details.
> +
> + You should have received a copy of the GNU Affero General Public License
> + along with this program. If not, see <http://www.gnu.org/licenses/>.
> +******************************************************************************/
> +
> +openerp.pos_select_customer = function (instance) {
> + module = instance.point_of_sale;
> + _t = instance.web._t;
> +
> + /*************************************************************************
> + Define : CustomerOrderWidget that display the name of the customer
> + of the current pos order and display button to select of remove it.
> + */
> + module.CustomerOrderWidget = module.PosBaseWidget.extend({
> + template: 'CustomerOrderWidget',
> +
> + /* Overload Section */
> + init: function(parent, options){
> + this._super(parent,options);
> + this.pos.bind('change:selectedOrder', this.refresh, this);
> + },
> +
> + start: function(){
> + this._super();
> + this._build_widgets();
> + },
> +
> + /* Custom Section */
> + refresh: function(){
> + this.renderElement();
> + this._build_widgets();
> + },
> +
> + _build_widgets: function(){
> + // Create a button to open the customer popup
> + this.select_customer_button = new module.HeaderButtonWidget(this,{
> + label:_t('Customer'),
> + action: function(){
> + self.screen_selector.show_popup('select-customer');
> + },
> + });
> + this.select_customer_button.replace($('.placeholder-SelectCustomerButton'));
> + this.select_customer_button.renderElement();
> +
> + if (this.get_name() !== ''){
> + // Create a button to remove the current customer
> + this.remove_customer_button = new module.HeaderButtonWidget(this,{
> + label:_t('Del.'),
> + action: function(){
> + this.pos.get('selectedOrder').set_client(undefined);
> + this.pos_widget.customer_order.refresh();
> + this.hide();
> + },
> + });
> + this.remove_customer_button.replace($('.placeholder-RemoveCustomerButton'));
> + this.remove_customer_button.renderElement();
> + }
> + },
> +
> + get_name: function(){
> + customer = this.pos.get('selectedOrder').get_client();
> + if(customer){
> + return customer.name;
> + }else{
> + return "";
> + }
> + },
> + });
> +
> + /*************************************************************************
> + Define : CustomerWidget that display a customer
> + */
> + module.CustomerWidget = module.PosBaseWidget.extend({
> + template: 'CustomerWidget',
> +
> + /* Overload Section */
> + init: function(parent, options) {
> + this._super(parent,options);
> + this.model = options.model;
> + },
> +
> + renderElement: function() {
> + this._super();
> + this.$('img').replaceWith(this.pos_widget.image_cache.get_image(this.model.get_image_small_url()));
> + var self = this;
> + $("a", this.$el).click(function(e){
> + self.pos.get('selectedOrder').set_client(self.model.toJSON());
> + self.pos_widget.customer_order.refresh();
> + self.pos_widget.screen_selector.set_current_screen('products');
> + });
> + },
> + });
> +
> + /*************************************************************************
> + Define : CustomerListScreenWidget that display a list of customers.
> + */
> + module.CustomerListScreenWidget = module.ScreenWidget.extend({
> + template:'CustomerListScreenWidget',
> +
> + init: function(parent, options) {
> + this._super(parent,options);
> + this.customer_list = [];
> + },
> +
> + start: function() {
> + this._super();
> + var self = this;
> + },
> +
> + renderElement: function() {
> + this._super();
> + var self = this;
> + // Delete old customers widget and display refreshed customers list
> + for(var i = 0, len = this.customer_list.length; i < len; i++){
> + this.customer_list[i].destroy();
> + }
> + this.customer_list = [];
> + var customers = this.pos.get('customer_list_filter') || [];
> + for(var i = 0, len = customers.models.length; i < len; i++){
> + var customer = new module.CustomerWidget(this, {
> + model: customers.models[i],
> + click_product_action: this.click_product_action,
> + });
> + this.customer_list.push(customer);
> + customer.appendTo(this.$('.customer-list'));
> + }
> +
> + // Delete old scrollbar widget and display refreshed scrollbar
> + if(this.scrollbar){
> + this.scrollbar.destroy();
> + }
> + this.scrollbar = new module.ScrollbarWidget(this,{
> + target_widget: this,
> + target_selector: '.customer-list-scroller',
> + on_show: function(){
> + self.$('.customer-list-scroller').css({'padding-right':'62px'},100);
> + },
> + on_hide: function(){
> + self.$('.customer-list-scroller').css({'padding-right':'0px'},100);
> + },
> + });
> + this.scrollbar.replace(this.$('.placeholder-ScrollbarWidget'));
> + },
> + }),
> +
> + /*************************************************************************
> + Define : SelectCustomerPopupWidget that display a pop up to search
> + and select customers.
> + */
> + module.SelectCustomerPopupWidget = module.PopUpWidget.extend({
> + template:'SelectCustomerPopupWidget',
> +
> + start: function(){
> + this._super();
> + var self = this;
> + this.customer_list_widget = new module.CustomerListScreenWidget(this,{});
> + },
> +
> + show: function(){
> + this._super();
> + var self = this;
> + this.reset_customers();
> + this.customer_list_widget.replace($('.placeholder-CustomerListScreenWidget'));
> + this.$('#customer-cancel').off('click').click(function(){
> + self.pos_widget.screen_selector.set_current_screen('products');
> + });
> + // filter customers according to the search string
> + this.$('.customer-searchbox input').keyup(function(event){
> + pattern = $(this).val().toLowerCase();
> + if(pattern){
> + var customers = self.pos.get('customer_list').search_customer(pattern);
> + self.pos.set({'customer_list_filter' : customers});
> + self.$('.customer-search-clear').fadeIn();
> + self.customer_list_widget.renderElement();
> + }
> + else{
> + self.reset_customers();
> + }
> + });
> + //reset the search when clicking on reset
> + this.$('.customer-search-clear').click(function(){
> + self.reset_customers();
> + });
> + },
> +
> + reset_customers: function(){
> + this.pos.set({'customer_list_filter' : this.pos.get('customer_list')});
> + this.$('.customer-search-clear').fadeOut();
> + this.customer_list_widget.renderElement();
> + this.$('.customer-searchbox input').val('').focus();
> + },
> +
> + });
> +
> +
> + /*************************************************************************
> + Overload : PosWidget to include button in PosOrderHeaderWidget widget
> + to select or unselect customers
> + */
> + module.PosWidget = module.PosWidget.extend({
> +
> + build_widgets: function(){
> + this._super();
> + var self = this;
> +
> + // Add a widget to manage customer
> + this.customer_order = new module.CustomerOrderWidget(this,{});
> + this.customer_order.appendTo(this.$('#pos_order_header'));
> +
> + // create a pop up 'select-customer' to search and select customers
> + this.select_customer_popup = new module.SelectCustomerPopupWidget(this, {});
> + this.select_customer_popup.appendTo($('.point-of-sale'));
> + this.select_customer_popup.hide();
> + this.screen_selector.popup_set['select-customer'] = this.select_customer_popup;
> +
> + },
> + });
> +
> + /*************************************************************************
> + Define : New Model 'Customer'
> + */
> + module.Customer = Backbone.Model.extend({
> + get_image_small_url: function(){
> + return instance.session.url('/web/binary/image', {model: 'res.partner', field: 'image_small', id: this.get('id')});
> + },
> + });
> +
> + module.CustomerCollection = Backbone.Collection.extend({
> + model: module.Customer,
> +
> + search_customer: function(pattern){
> + res = new module.CustomerCollection();
> + var reg = RegExp(pattern,"i");
> + for(var i = 0, len = this.models.length; i < len; i++){
> + res_reg = reg.exec(this.models[i].attributes.name);
> + if (res_reg){
> + res.push(this.models[i]);
> + }
> + }
> + return res;
> + },
> + });
> +
> + /*
> + Overload: PosModel.initialize() to define two new lists.
> + 'customer_list' are the list of all customers available;
> + 'customer_list_filter' are a sub-list according to the current filter
> + selection.
> + */
> + var _initialize_ = module.PosModel.prototype.initialize;
> + module.PosModel.prototype.initialize = function(session, attributes){
> + _initialize_.call(this, session, attributes);
> + this.set({
> + 'customer_list': new module.CustomerCollection(),
> + 'customer_list_filter': new module.CustomerCollection(),
> + });
> + };
> +
> + /*
> + Overload: PosModel.load_server_data() function to get in memory
> + customers.
> + The function will load all usefull informations even if any
> + informations won't be used in this module, to allow further modules
> + to use them.
> + */
> + var _load_server_data_ = module.PosModel.prototype.load_server_data;
> + module.PosModel.prototype.load_server_data = function(){
> + var self = this;
> + var load_def = _load_server_data_.call(self).done(self.load_customers_data());
> + return load_def;
> + },
> +
> + module.PosModel = module.PosModel.extend({
> + load_customers_data: function(){
> + var self = this;
> + var loaded = self.fetch(
> + 'res.partner',
> + ['name','display_name','title','function','type',
> + 'parent_id','is_company',
> + 'lang','company_id','ean13','color',
> + 'contact_address','street','street2','city','zip','state_id','country_id',
> + 'property_product_pricelist','vat','debit_limit','credit_limit',
> + 'email','website','fax','phone','mobile',],
> + [['customer', '=', true]])
> + .then(function(customers){
> + console.log(customers);
> + self.set({'customer_list' : new module.CustomerCollection(customers)});
> + self.set({'customer_list_filter' : new module.CustomerCollection(customers)});
> + });
> + return loaded;
> + },
> + });
> +};
> +
>
> === added directory 'pos_select_customer/static/src/xml'
> === added file 'pos_select_customer/static/src/xml/psc.xml'
> --- pos_select_customer/static/src/xml/psc.xml 1970-01-01 00:00:00 +0000
> +++ pos_select_customer/static/src/xml/psc.xml 2014-07-30 11:15:32 +0000
> @@ -0,0 +1,103 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!-- ********************************************************************** -->
> +<!--Point Of Sale - Select Customer module for OpenERP -->
> +<!--Copyright (C) 2014 GRAP (http://www.grap.coop) -->
> +<!--@author Julien WESTE -->
> +<!--@author Sylvain LE GAL (https://twitter.com/legalsylvain) -->
> +
> +<!--This program is free software: you can redistribute it and/or modify -->
> +<!--it under the terms of the GNU Affero General Public License as -->
> +<!--published by the Free Software Foundation, either version 3 of the -->
> +<!--License, or (at your option) any later version. -->
> +
> +<!--This program is distributed in the hope that it will be useful, -->
> +<!--but WITHOUT ANY WARRANTY; without even the implied warranty of -->
> +<!--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -->
> +<!--GNU Affero General Public License for more details. -->
> +
> +<!--You should have received a copy of the GNU Affero General Public License-->
> +<!--along with this program. If not, see <http://www.gnu.org/licenses/>. -->
> +<!-- ********************************************************************** -->
> +<templates id="template" xml:space="preserve">
> +
> + <t t-name="CustomerOrderWidget">
> + <div class="extra-label">
> + <span class="placeholder-SelectCustomerButton" />
> + </div>
> + <div id="customer-name" class="extra-label">
> + <div class="extra-text">
> + <t t-esc="widget.get_name()" />
> + </div>
> + </div>
> + <div id="remove-customer-button" class="extra-label">
> + <span class="placeholder-RemoveCustomerButton" />
> + </div>
> + </t>
> +
> + <t t-name="SelectCustomerPopupWidget">
> + <div class="modal-dialog">
> + <div class="popup popup-select-customer">
> + <div class="customer-header">
> + <div id="customer-title">
> + Customer Selection
> + </div>
> + <div class="customer-searchbox">
> + <input placeholder="Search Customers" />
> + <img class="customer-search-clear" src="/point_of_sale/static/src/img/search_reset.gif" />
> + </div>
> + <div id="customer-cancel" class="button">
> + Cancel
> + </div>
> + </div>
> + <div class="content-container">
> + <span class="placeholder-CustomerListScreenWidget" />
> + </div>
> + </div>
> + </div>
> + </t>
> +
> + <t t-name="CustomerListScreenWidget">
> + <div class='customer-list-container'>
> + <div class="customer-list-scroller">
> + <ol id="customer-screen-ol" class="customer-list">
> + </ol>
> + </div>
> + <div class="shadow-top"></div>
> + <span class="placeholder-ScrollbarWidget" />
> + </div>
> + </t>
> +
> + <t t-name="CustomerWidget">
> + <li class='customer'>
> + <a href="#">
> + <div class="customer-img">
> + <img sr='' />
> + </div>
> + <div class="customer-name">
> + <t t-esc="widget.model.get('name')"/>
> + </div>
> + <div class="customer-email">
> + <t t-if="widget.model.get('email')">
> + <t t-esc="widget.model.get('email')"/>
> + </t>
> + </div>
> + <div class="customer-address">
> + <t t-if="widget.model.get('contact_address')">
> + <t t-esc="widget.model.get('contact_address')"/>
> + </t>
> + </div>
> + <div class="customer-phone">
> + <t t-if="widget.model.get('phone')">
> + <t t-esc="widget.model.get('phone')"/>
> + </t>
> + </div>
> + <div class="customer-mobile">
> + <t t-if="widget.model.get('mobile')">
> + <t t-esc="widget.model.get('mobile')"/>
> + </t>
> + </div>
> + </a>
> + </li>
> + </t>
> +
> +</templates>
>
--
https://code.launchpad.net/~sylvain-legal/openerp-pos/7.0_pos_select_customer/+merge/228826
Your team OpenERP Community Reviewer/Maintainer is subscribed to branch lp:openerp-pos.
References