From 165af24f49573bfc31e990f2ca3642a960136f7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Wed, 27 Nov 2013 15:44:27 +0100 Subject: [PATCH] [WIP] point_of_sale: more progress on ipadification: the app now is in a separate controller, with proper meta tags for standalone apps, pixel ratio, etc bzr revid: fva@openerp.com-20131127144427-odf37v9dthuw4yrm --- addons/point_of_sale/controllers/main.py | 227 +++++------------- addons/point_of_sale/static/src/css/pos.css | 6 + .../static/src/img/touch-icon-ipad-retina.png | Bin 0 -> 3441 bytes .../static/src/img/touch-icon-ipad.png | Bin 0 -> 4098 bytes .../src/img/touch-icon-iphone-retina.png | Bin 0 -> 8403 bytes .../static/src/img/touch-icon-iphone.png | Bin 0 -> 3745 bytes .../static/src/img/touch-icon.svg | 199 +++++++++++++++ addons/point_of_sale/static/src/js/models.js | 2 +- addons/point_of_sale/static/src/js/screens.js | 19 +- addons/point_of_sale/static/src/js/widgets.js | 29 +-- addons/point_of_sale/static/src/xml/pos.xml | 2 +- 11 files changed, 291 insertions(+), 193 deletions(-) create mode 100644 addons/point_of_sale/static/src/img/touch-icon-ipad-retina.png create mode 100644 addons/point_of_sale/static/src/img/touch-icon-ipad.png create mode 100644 addons/point_of_sale/static/src/img/touch-icon-iphone-retina.png create mode 100644 addons/point_of_sale/static/src/img/touch-icon-iphone.png create mode 100644 addons/point_of_sale/static/src/img/touch-icon.svg diff --git a/addons/point_of_sale/controllers/main.py b/addons/point_of_sale/controllers/main.py index 2461fe90b79..76dd705cbfc 100644 --- a/addons/point_of_sale/controllers/main.py +++ b/addons/point_of_sale/controllers/main.py @@ -8,182 +8,73 @@ import random from openerp import http from openerp.http import request -from openerp.addons.web.controllers.main import manifest_list, module_boot, html_template +from openerp.addons.web.controllers.main import manifest_list, module_boot _logger = logging.getLogger(__name__) -class PointOfSaleController(http.Controller): - def __init__(self): - self.scale = 'closed' - self.scale_weight = 0.0 +html_template = """ + + + OpenERP Point of Sale - @http.route('/pos/app', type='http', auth='admin') - def app(self): - js = "\n ".join('' % i for i in manifest_list('js',db=request.db)) - css = "\n ".join('' % i for i in manifest_list('css',db=request.db)) + + - cookie = request.httprequest.cookies.get("instance0|session_id") - session_id = cookie.replace("%22","") - template = html_template.replace(' + - r = template % { + + + + + + + + %(css)s + %(js)s + + + + + + +""" + +class PosController(http.Controller): + + @http.route('/pos/web', type='http', auth='none') + def a(self, debug=False, **k): + js_list = manifest_list('js',db=request.db, debug=debug) + css_list = manifest_list('css',db=request.db, debug=debug) + + print css_list + print js_list + + js = "\n".join('' % i for i in js_list) + css = "\n".join('' % i for i in css_list) + r = html_template % { 'js': js, 'css': css, - 'modules': simplejson.dumps(module_boot(request)), - 'init': 'var wc = new s.web.WebClient();wc.appendTo($(document.body));' + 'modules': simplejson.dumps(module_boot(request.db)), + 'init': """ + window.navigator.standalone = true; + var wc = new s.web.WebClient(); + wc.appendTo($(document.body)); + wc.show_application = function(){ + wc.action_manager.do_action("pos.ui"); + }; + wc.show_login = function(){ + window.location.href = '/'; + } + """ } return r - @http.route('/pos/manifest',type='http', auth='admin') - def manifest(self): - """ This generates a HTML5 cache manifest files that preloads the categories and products thumbnails - and other ressources necessary for the point of sale to work offline """ - - ml = ["CACHE MANIFEST"] - - # loading all the images in the static/src/img/* directories - def load_css_img(srcdir,dstdir): - for f in os.listdir(srcdir): - path = os.path.join(srcdir,f) - dstpath = os.path.join(dstdir,f) - if os.path.isdir(path) : - load_css_img(path,dstpath) - elif f.endswith(('.png','.PNG','.jpg','.JPG','.jpeg','.JPEG','.gif','.GIF')): - ml.append(dstpath) - - imgdir = openerp.modules.get_module_resource('point_of_sale','static/src/img'); - load_css_img(imgdir,'/point_of_sale/static/src/img') - - products = request.registry.get('product.product') - for p in products.search_read(request.cr, request.uid, [('pos_categ_id','!=',False)], ['name']): - product_id = p['id'] - url = "/web/binary/image?session_id=%s&model=product.product&field=image&id=%s" % (request.session_id, product_id) - ml.append(url) - - categories = request.registry.get('pos.category') - for c in categories.search_read(request.cr, request.uid, [], ['name']): - category_id = c['id'] - url = "/web/binary/image?session_id=%s&model=pos.category&field=image&id=%s" % (request.session_id, category_id) - ml.append(url) - - ml += ["NETWORK:","*"] - m = "\n".join(ml) - - return m - - @http.route('/pos/test_connection', type='json', auth='admin') - def test_connection(self): - _logger.info('Received Connection Test from the Point of Sale'); - - @http.route('/pos/scan_item_success', type='json', auth='admin') - def scan_item_success(self, ean): - """ - A product has been scanned with success - """ - print 'scan_item_success: ' + str(ean) - - @http.route('/pos/scan_item_error_unrecognized', type='json', auth='admin') - def scan_item_error_unrecognized(self, ean): - """ - A product has been scanned without success - """ - print 'scan_item_error_unrecognized: ' + str(ean) - - @http.route('/pos/help_needed', type='json', auth='admin') - def help_needed(self): - """ - The user wants an help (ex: light is on) - """ - print "help_needed" - - @http.route('/pos/help_canceled', type='json', auth='admin') - def help_canceled(self): - """ - The user stops the help request - """ - print "help_canceled" - - @http.route('/pos/weighting_start', type='json', auth='admin') - def weighting_start(self): - if self.scale == 'closed': - print "Opening (Fake) Connection to Scale..." - self.scale = 'open' - self.scale_weight = 0.0 - time.sleep(0.1) - print "... Scale Open." - else: - print "WARNING: Scale already Connected !!!" - - @http.route('/pos/weighting_read_kg', type='json', auth='admin') - def weighting_read_kg(self): - if self.scale == 'open': - print "Reading Scale..." - time.sleep(0.025) - self.scale_weight += 0.01 - print "... Done." - return self.scale_weight - else: - print "WARNING: Reading closed scale !!!" - return 0.0 - - @http.route('/pos/weighting_end', type='json', auth='admin') - def weighting_end(self): - if self.scale == 'open': - print "Closing Connection to Scale ..." - self.scale = 'closed' - self.scale_weight = 0.0 - time.sleep(0.1) - print "... Scale Closed." - else: - print "WARNING: Scale already Closed !!!" - - @http.route('/pos/payment_request', type='json', auth='admin') - def payment_request(self, price): - """ - The PoS will activate the method payment - """ - print "payment_request: price:"+str(price) - return 'ok' - - @http.route('/pos/payment_status', type='json', auth='admin') - def payment_status(self): - print "payment_status" - return { 'status':'waiting' } - - @http.route('/pos/payment_cancel', type='json', auth='admin') - def payment_cancel(self): - print "payment_cancel" - - @http.route('/pos/transaction_start', type='json', auth='admin') - def transaction_start(self): - print 'transaction_start' - - @http.route('/pos/transaction_end', type='json', auth='admin') - def transaction_end(self): - print 'transaction_end' - - @http.route('/pos/cashier_mode_activated', type='json', auth='admin') - def cashier_mode_activated(self): - print 'cashier_mode_activated' - - @http.route('/pos/cashier_mode_deactivated', type='json', auth='admin') - def cashier_mode_deactivated(self): - print 'cashier_mode_deactivated' - - @http.route('/pos/open_cashbox', type='json', auth='admin') - def open_cashbox(self): - print 'open_cashbox' - - @http.route('/pos/print_receipt', type='json', auth='admin') - def print_receipt(self, receipt): - print 'print_receipt' + str(receipt) - - @http.route('/pos/log', type='json', auth='admin') - def log(self, arguments): - _logger.info(' '.join(str(v) for v in arguments)) - - @http.route('/pos/print_pdf_invoice', type='json', auth='admin') - def print_pdf_invoice(self, pdfinvoice): - print 'print_pdf_invoice' + str(pdfinvoice) - - diff --git a/addons/point_of_sale/static/src/css/pos.css b/addons/point_of_sale/static/src/css/pos.css index 8e1fcb8c28e..8935e6d2dc5 100644 --- a/addons/point_of_sale/static/src/css/pos.css +++ b/addons/point_of_sale/static/src/css/pos.css @@ -30,6 +30,12 @@ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } +.pos input::-webkit-outer-spin-button, +.pos input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + .pos button{ box-shadow: none; outline: none; diff --git a/addons/point_of_sale/static/src/img/touch-icon-ipad-retina.png b/addons/point_of_sale/static/src/img/touch-icon-ipad-retina.png new file mode 100644 index 0000000000000000000000000000000000000000..4f1e1db5c98573b2eb39abc8ad74fd8327de5b86 GIT binary patch literal 3441 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 TGU-1d00000NkvXXu0mjfNvD=t literal 0 HcmV?d00001 diff --git a/addons/point_of_sale/static/src/img/touch-icon-ipad.png b/addons/point_of_sale/static/src/img/touch-icon-ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8c111406f6470bdd6868bc74a80b647efa73de GIT binary patch literal 4098 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 Ar~m)} literal 0 HcmV?d00001 diff --git a/addons/point_of_sale/static/src/img/touch-icon-iphone-retina.png b/addons/point_of_sale/static/src/img/touch-icon-iphone-retina.png new file mode 100644 index 0000000000000000000000000000000000000000..593c1506061954de69358c3f7009bacc68f928d0 GIT binary patch literal 8403 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 literal 0 HcmV?d00001 diff --git a/addons/point_of_sale/static/src/img/touch-icon-iphone.png b/addons/point_of_sale/static/src/img/touch-icon-iphone.png new file mode 100644 index 0000000000000000000000000000000000000000..4122e61f9c0af572442fdd0eb60e8fe1a2dbce25 GIT binary patch literal 3745 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 LNkvXXu0mjfr8rij literal 0 HcmV?d00001 diff --git a/addons/point_of_sale/static/src/img/touch-icon.svg b/addons/point_of_sale/static/src/img/touch-icon.svg new file mode 100644 index 00000000000..8ce5f30e13e --- /dev/null +++ b/addons/point_of_sale/static/src/img/touch-icon.svg @@ -0,0 +1,199 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 3de24b22fbb..68acd4b874e 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -378,7 +378,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal _flush_order: function(order_id, options){ var self = this; options = options || {}; - timeout = typeof options.timeout === 'number' ? options.timeout : 5000; + timeout = typeof options.timeout === 'number' ? options.timeout : 7500; var order = this.db.get_order(order_id); order.to_invoice = options.to_invoice || false; diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index 4c5f2245e0d..88a83fc52e1 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -812,6 +812,8 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa this._super(); var self = this; + this.pos_widget.set_numpad_visible(false); + var print_button = this.add_action_button({ label: _t('Print'), icon: '/point_of_sale/static/src/img/icons/png48/printer.png', @@ -872,6 +874,10 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa this.currentOrder = this.pos.get('selectedOrder'); $('.pos-receipt-container', this.$el).html(QWeb.render('PosTicket',{widget:this})); }, + close: function(){ + this._super(); + this.pos_widget.set_numpad_visible(true); + } }); module.PaymentScreenWidget = module.ScreenWidget.extend({ @@ -1006,6 +1012,11 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa this.pos_widget.screen_selector.set_current_screen(this.next_screen); } } + // hide onscreen (iOS) keyboard + setTimeout(function(){ + document.activeElement.blur(); + $("input").blur(); + },250); }, bindPaymentLineEvents: function() { this.currentPaymentLines = (this.pos.get('selectedOrder')).get('paymentLines'); @@ -1068,8 +1079,8 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa }, isPaymentPaid: function(){ var currentOrder = this.pos.get('selectedOrder'); - return (currentOrder.getTotalTaxIncluded < 0.000001 - && currentOrder.getPaidTotal() + 0.000001 < currentOrder.getTotalTaxIncluded()); + return (currentOrder.getTotalTaxIncluded() >= 0.000001 + && currentOrder.getPaidTotal() + 0.000001 >= currentOrder.getTotalTaxIncluded()); }, updatePaymentSummary: function() { @@ -1088,8 +1099,8 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa } if(this.pos_widget.action_bar){ - this.pos_widget.action_bar.set_button_disabled('validation', this.isPaymentPaid()); - this.pos_widget.action_bar.set_button_disabled('invoice', this.isPaymentPaid()); + this.pos_widget.action_bar.set_button_disabled('validation', !this.isPaymentPaid()); + this.pos_widget.action_bar.set_button_disabled('invoice', !this.isPaymentPaid()); } }, set_numpad_state: function(numpadState) { diff --git a/addons/point_of_sale/static/src/js/widgets.js b/addons/point_of_sale/static/src/js/widgets.js index 6a222cd1ca4..2939eb39390 100644 --- a/addons/point_of_sale/static/src/js/widgets.js +++ b/addons/point_of_sale/static/src/js/widgets.js @@ -213,13 +213,13 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa var scroller = this.$('.order-scroller')[0]; var scrollbottom = true; var scrollTop = 0; - /*if(scroller){ + if(scroller){ var overflow_bottom = scroller.scrollHeight - scroller.clientHeight; scrollTop = scroller.scrollTop; if( !goto_bottom && scrollTop < 0.9 * overflow_bottom){ scrollbottom = false; } - }*/ + } this._super(); // freeing subwidgets @@ -244,14 +244,13 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa this.update_summary(); scroller = this.$('.order-scroller')[0]; + if(scroller){ - //scroller.scrollTop = 1000000; - /* if(scrollbottom){ scroller.scrollTop = scroller.scrollHeight - scroller.clientHeight; }else{ scroller.scrollTop = scrollTop; - }*/ + } } }, update_summary: function(){ @@ -313,8 +312,12 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa focus: function(){ var val = this.$('input')[0].value; this.$('input')[0].focus(); - this.$('input')[0].value = val; - this.$('input')[0].select(); + if(Number(val) === 0){ + this.$('input')[0].value = ''; + }else{ + this.$('input')[0].value = val; + this.$('input')[0].select(); + } }, }); @@ -863,16 +866,8 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa self.screen_selector.set_default_screen(); - self.pos.barcode_reader.connect(); - if(!$('#oe-fullscreenwidget-viewport').length){ - $('head').append(''); - $('head').append(''); - } - - $('.oe_leftbar').addClass('oe_hidden'); - instance.webclient.set_content_full_screen(true); if (!self.pos.get('pos_session')) { @@ -1104,7 +1099,6 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa return this.rpc('/web/action/load', {'action_id': res[0]['res_id']}).pipe(_.bind(function(result) { var action = result; action.context = _.extend(action.context || {}, {'cancel_action': {type: 'ir.actions.client', tag: 'reload'}}); - //self.destroy(); this.do_action(action); }, this)); }, self)); @@ -1124,9 +1118,6 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa destroy: function() { this.pos.destroy(); instance.webclient.set_content_full_screen(false); - $('.oe_leftbar').removeClass('oe_hidden'); - $('#oe-pos-viewport').remove(); - $('#oe-pos-apple-mobile').remove(); this._super(); } }); diff --git a/addons/point_of_sale/static/src/xml/pos.xml b/addons/point_of_sale/static/src/xml/pos.xml index 42e5b7ef44d..4eaf9e53604 100644 --- a/addons/point_of_sale/static/src/xml/pos.xml +++ b/addons/point_of_sale/static/src/xml/pos.xml @@ -580,7 +580,7 @@ - +