diff --git a/addons/hw_escpos/controllers/main.py b/addons/hw_escpos/controllers/main.py
index 16df99a5f77..b1ba85b2dba 100644
--- a/addons/hw_escpos/controllers/main.py
+++ b/addons/hw_escpos/controllers/main.py
@@ -263,12 +263,12 @@ hw_proxy.drivers['escpos'] = driver
class EscposProxy(hw_proxy.Proxy):
- @http.route('/hw_proxy/open_cashbox', type='json', auth='none')
+ @http.route('/hw_proxy/open_cashbox', type='json', auth='none', cors='*')
def open_cashbox(self):
_logger.info('ESC/POS: OPEN CASHBOX')
driver.push_task('cashbox')
- @http.route('/hw_proxy/print_receipt', type='json', auth='none')
+ @http.route('/hw_proxy/print_receipt', type='json', auth='none', cors='*')
def print_receipt(self, receipt):
_logger.info('ESC/POS: PRINT RECEIPT')
driver.push_task('receipt',receipt)
diff --git a/addons/hw_proxy/controllers/main.py b/addons/hw_proxy/controllers/main.py
index adb59a072b3..5293abd1f25 100644
--- a/addons/hw_proxy/controllers/main.py
+++ b/addons/hw_proxy/controllers/main.py
@@ -33,20 +33,15 @@ class Proxy(http.Controller):
statuses[driver] = drivers[driver].get_status()
return statuses
- @http.route('/hw_proxy/hello', type='http', auth='none')
+ @http.route('/hw_proxy/hello', type='http', auth='none', cors='*')
def hello(self):
- return request.make_response('ping', {
- 'Cache-Control': 'no-cache',
- 'Content-Type': 'text/html; charset=utf-8',
- 'Access-Control-Allow-Origin': '*',
- 'Access-Control-Allow-Methods': 'GET',
- })
+ return "ping"
- @http.route('/hw_proxy/handshake', type='json', auth='none')
+ @http.route('/hw_proxy/handshake', type='json', auth='none', cors='*')
def handshake(self):
return True
- @http.route('/hw_proxy/status', type='http', auth='none')
+ @http.route('/hw_proxy/status', type='http', auth='none', cors='*')
def status_http(self):
resp = '\n
\nHardware Proxy Status
\n'
statuses = self.get_status()
@@ -75,39 +70,39 @@ class Proxy(http.Controller):
'Access-Control-Allow-Methods': 'GET',
})
- @http.route('/hw_proxy/status_json', type='json', auth='none')
+ @http.route('/hw_proxy/status_json', type='json', auth='none', cors='*')
def status_json(self):
return self.get_status()
- @http.route('/hw_proxy/scan_item_success', type='json', auth='none')
+ @http.route('/hw_proxy/scan_item_success', type='json', auth='none', cors='*')
def scan_item_success(self, ean):
"""
A product has been scanned with success
"""
print 'scan_item_success: ' + str(ean)
- @http.route('/hw_proxy/scan_item_error_unrecognized', type='json', auth='none')
+ @http.route('/hw_proxy/scan_item_error_unrecognized', type='json', auth='none', cors='*')
def scan_item_error_unrecognized(self, ean):
"""
A product has been scanned without success
"""
print 'scan_item_error_unrecognized: ' + str(ean)
- @http.route('/hw_proxy/help_needed', type='json', auth='none')
+ @http.route('/hw_proxy/help_needed', type='json', auth='none', cors='*')
def help_needed(self):
"""
The user wants an help (ex: light is on)
"""
print "help_needed"
- @http.route('/hw_proxy/help_canceled', type='json', auth='none')
+ @http.route('/hw_proxy/help_canceled', type='json', auth='none', cors='*')
def help_canceled(self):
"""
The user stops the help request
"""
print "help_canceled"
- @http.route('/hw_proxy/weighting_start', type='json', auth='none')
+ @http.route('/hw_proxy/weighting_start', type='json', auth='none', cors='*')
def weighting_start(self):
if self.scale == 'closed':
print "Opening (Fake) Connection to Scale..."
@@ -118,7 +113,7 @@ class Proxy(http.Controller):
else:
print "WARNING: Scale already Connected !!!"
- @http.route('/hw_proxy/weighting_read_kg', type='json', auth='none')
+ @http.route('/hw_proxy/weighting_read_kg', type='json', auth='none', cors='*')
def weighting_read_kg(self):
if self.scale == 'open':
print "Reading Scale..."
@@ -130,7 +125,7 @@ class Proxy(http.Controller):
print "WARNING: Reading closed scale !!!"
return 0.0
- @http.route('/hw_proxy/weighting_end', type='json', auth='none')
+ @http.route('/hw_proxy/weighting_end', type='json', auth='none', cors='*')
def weighting_end(self):
if self.scale == 'open':
print "Closing Connection to Scale ..."
@@ -141,7 +136,7 @@ class Proxy(http.Controller):
else:
print "WARNING: Scale already Closed !!!"
- @http.route('/hw_proxy/payment_request', type='json', auth='none')
+ @http.route('/hw_proxy/payment_request', type='json', auth='none', cors='*')
def payment_request(self, price):
"""
The PoS will activate the method payment
@@ -149,55 +144,55 @@ class Proxy(http.Controller):
print "payment_request: price:"+str(price)
return 'ok'
- @http.route('/hw_proxy/payment_status', type='json', auth='none')
+ @http.route('/hw_proxy/payment_status', type='json', auth='none', cors='*')
def payment_status(self):
print "payment_status"
return { 'status':'waiting' }
- @http.route('/hw_proxy/payment_cancel', type='json', auth='none')
+ @http.route('/hw_proxy/payment_cancel', type='json', auth='none', cors='*')
def payment_cancel(self):
print "payment_cancel"
- @http.route('/hw_proxy/transaction_start', type='json', auth='none')
+ @http.route('/hw_proxy/transaction_start', type='json', auth='none', cors='*')
def transaction_start(self):
print 'transaction_start'
- @http.route('/hw_proxy/transaction_end', type='json', auth='none')
+ @http.route('/hw_proxy/transaction_end', type='json', auth='none', cors='*')
def transaction_end(self):
print 'transaction_end'
- @http.route('/hw_proxy/cashier_mode_activated', type='json', auth='none')
+ @http.route('/hw_proxy/cashier_mode_activated', type='json', auth='none', cors='*')
def cashier_mode_activated(self):
print 'cashier_mode_activated'
- @http.route('/hw_proxy/cashier_mode_deactivated', type='json', auth='none')
+ @http.route('/hw_proxy/cashier_mode_deactivated', type='json', auth='none', cors='*')
def cashier_mode_deactivated(self):
print 'cashier_mode_deactivated'
- @http.route('/hw_proxy/open_cashbox', type='json', auth='none')
+ @http.route('/hw_proxy/open_cashbox', type='json', auth='none', cors='*')
def open_cashbox(self):
print 'open_cashbox'
- @http.route('/hw_proxy/print_receipt', type='json', auth='none')
+ @http.route('/hw_proxy/print_receipt', type='json', auth='none', cors='*')
def print_receipt(self, receipt):
print 'print_receipt' + str(receipt)
- @http.route('/hw_proxy/is_scanner_connected', type='json', auth='none')
+ @http.route('/hw_proxy/is_scanner_connected', type='json', auth='none', cors='*')
def print_receipt(self, receipt):
print 'is_scanner_connected?'
return False
- @http.route('/hw_proxy/scanner', type='json', auth='none')
+ @http.route('/hw_proxy/scanner', type='json', auth='none', cors='*')
def print_receipt(self, receipt):
print 'scanner'
time.sleep(10)
return ''
- @http.route('/hw_proxy/log', type='json', auth='none')
+ @http.route('/hw_proxy/log', type='json', auth='none', cors='*')
def log(self, arguments):
_logger.info(' '.join(str(v) for v in arguments))
- @http.route('/hw_proxy/print_pdf_invoice', type='json', auth='none')
+ @http.route('/hw_proxy/print_pdf_invoice', type='json', auth='none', cors='*')
def print_pdf_invoice(self, pdfinvoice):
print 'print_pdf_invoice' + str(pdfinvoice)
diff --git a/addons/hw_scanner/controllers/main.py b/addons/hw_scanner/controllers/main.py
index 664606954c3..105856a3e28 100644
--- a/addons/hw_scanner/controllers/main.py
+++ b/addons/hw_scanner/controllers/main.py
@@ -124,7 +124,7 @@ class Scanner(Thread):
self.set_status('error',str(e))
return None
- @http.route('/hw_proxy/Vis_scanner_connected', type='json', auth='none')
+ @http.route('/hw_proxy/Vis_scanner_connected', type='json', auth='none', cors='*')
def is_scanner_connected(self):
return self.get_device() != None
@@ -207,7 +207,7 @@ s = Scanner()
hw_proxy.drivers['scanner'] = s
class ScannerDriver(hw_proxy.Proxy):
- @http.route('/hw_proxy/scanner', type='json', auth='none')
+ @http.route('/hw_proxy/scanner', type='json', auth='none', cors='*')
def scanner(self):
if not s.isAlive():
s.start()
diff --git a/addons/point_of_sale/static/src/js/devices.js b/addons/point_of_sale/static/src/js/devices.js
index 57b23afd49f..bb13503d903 100644
--- a/addons/point_of_sale/static/src/js/devices.js
+++ b/addons/point_of_sale/static/src/js/devices.js
@@ -102,6 +102,8 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal
};
this.custom_payment_status = this.default_payment_status;
+ this.receipt_queue = [];
+
this.notifications = {};
this.bypass_proxy = false;
@@ -113,6 +115,13 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal
this.set_connection_status('disconnected');
+ this.on('change:status',this,function(eh,status){
+ status = status.newValue;
+ if(status.status === 'connected'){
+ self.print_receipt();
+ }
+ });
+
window.hw_proxy = this;
},
set_connection_status: function(status,drivers){
@@ -502,7 +511,23 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal
* }
*/
print_receipt: function(receipt){
- return this.message('print_receipt',{receipt: receipt});
+ var self = this;
+ if(receipt){
+ this.receipt_queue.push(receipt);
+ }
+ var aborted = false;
+ function send_printing_job(){
+ if (self.receipt_queue.length > 0){
+ var r = self.receipt_queue.shift();
+ self.message('print_receipt',{ receipt: r },{ timeout: 5000 })
+ .then(function(){
+ send_printing_job();
+ },function(){
+ self.receipt_queue.unshift(r)
+ });
+ }
+ }
+ send_printing_job();
},
// asks the proxy to log some information, as with the debug.log you can provide several arguments.