Browse Source

port to 9

pull/155/head
ufaks 9 years ago
committed by Vincent Van Rossem
parent
commit
fc9185cb7e
  1. 6
      pos_keyboard/data.xml
  2. 111
      pos_keyboard/static/src/js/pos.js

6
pos_keyboard/data.xml

@ -1,10 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <openerp>
<data> <data>
<template id="assets_backend" name="debt pos assets" inherit_id="point_of_sale.assets_backend">
<template id="assets" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside"> <xpath expr="." position="inside">
<script type="text/javascript" src="/pos_keyboard/static/src/js/pos.js"></script>
<script type="text/javascript" src="/pos_keyboard/static/src/js/pos.js"></script>
</xpath> </xpath>
</template> </template>
</data> </data>
</openerp> </openerp>

111
pos_keyboard/static/src/js/pos.js

@ -1,62 +1,69 @@
function pos_keyboard_widgets(instance, module){
odoo.define('pos_keyboard.pos', function (require) {
"use strict";
var core = require('web.core');
var models = require('point_of_sale.models');
var screens = require('point_of_sale.screens');
var _super_posmodel = models.PosModel.prototype;
models.PosModel = models.PosModel.extend({
initialize: function (session, attributes) {
this.keypad = new Keypad({'pos': this});
return _super_posmodel.initialize.call(this, session, attributes);
}
});
module.PosWidget.include({
screens.NumpadWidget.include({
start: function() { start: function() {
self = this;
resSuper = this._super();
res = resSuper.done(function(e){
self.pos.keypad.connect();
self.pos.keypad.set_action_callback(function(data){
self.keypad_action(data, self.pos.keypad.type);
});
});
return res;
},
close: function() {
this._super(); this._super();
this.pos.keypad.disconnect();
var self = this;
this.pos.keypad.set_action_callback(function(data){
self.keypad_action(data, self.pos.keypad.type);
});
}, },
keypad_action: function(data, type){ keypad_action: function(data, type){
var numpad = this.pos_widget.numpad;
if (data.type === type.numchar){ if (data.type === type.numchar){
numpad.state.appendNewChar(data.val);
this.state.appendNewChar(data.val);
} }
else if (data.type === type.bmode) { else if (data.type === type.bmode) {
numpad.state.changeMode(data.val);
this.state.changeMode(data.val);
} }
else if (data.type === type.sign){ else if (data.type === type.sign){
numpad.clickSwitchSign();
this.clickSwitchSign();
} }
else if (data.type === type.backspace){ else if (data.type === type.backspace){
numpad.clickDeleteLastChar();
this.clickDeleteLastChar();
} }
},
}
}); });
var PosModelSuper = module.PosModel;
module.PosModel = module.PosModel.extend({
initialize: function(session, attributes) {
this.keypad = new module.Keypad({'pos': this});
PosModelSuper.prototype.initialize.call(this, session, attributes);
},
screens.PaymentScreenWidget.include({
show: function(){
this._super();
this.pos.keypad.disconnect();
},
hide: function(){
this._super();
this.pos.keypad.connect();
}
}); });
// this module mimics a keypad-only cash register. Use connect() and // this module mimics a keypad-only cash register. Use connect() and
// disconnect() to activate and deactivate it. // disconnect() to activate and deactivate it.
module.Keypad = instance.web.Class.extend({
var Keypad = core.Class.extend({
init: function(attributes){ init: function(attributes){
this.pos = attributes.pos; this.pos = attributes.pos;
this.pos_widget = this.pos.pos_widget;
/*this.pos_widget = this.pos.pos_widget;*/
this.type = { this.type = {
numchar: 'number, dot',
bmode: 'qty, disc, price',
sign: '+, -',
backspace: 'backspace'
}
numchar: 'number, dot',
bmode: 'quantity, discount, price',
sign: '+, -',
backspace: 'backspace'
};
this.data = { this.data = {
type: undefined, type: undefined,
val: undefined val: undefined
}
};
this.action_callback = undefined; this.action_callback = undefined;
}, },
@ -101,20 +108,11 @@ function pos_keyboard_widgets(instance, module){
80: 'p', 83: 's', 68: 'd', 190: '.', 81: 'q', 80: 'p', 83: 's', 68: 'd', 190: '.', 81: 'q',
96: '0', 97: '1', 98: '2', 99: '3', 100: '4', 96: '0', 97: '1', 98: '2', 99: '3', 100: '4',
101: '5', 102: '6', 103: '7', 104: '8', 105: '9', 101: '5', 102: '6', 103: '7', 104: '8', 105: '9',
106: '*', 107: '+', 109: '-', 110: '.', 111: '/',
106: '*', 107: '+', 109: '-', 110: '.', 111: '/'
}; };
//cancel return to the previous page when press backspace
var rx = /INPUT|SELECT|TEXTAREA/i;
$(document).on("keydown keypress", function(e){
if( e.which == 8 ){ // 8 == backspace
if(!rx.test(e.target.tagName) || e.target.disabled || e.target.readOnly ){
e.preventDefault();
}
}
});
//usb keyboard keyup event //usb keyboard keyup event
var rx = /INPUT|SELECT|TEXTAREA/i;
var ok = false; var ok = false;
var timeStamp = 0; var timeStamp = 0;
$('body').on('keyup', '', function (e){ $('body').on('keyup', '', function (e){
@ -131,10 +129,10 @@ function pos_keyboard_widgets(instance, module){
var token = e.keyCode; var token = e.keyCode;
if ((token >= 96 && token <= 105 || token == 110) || if ((token >= 96 && token <= 105 || token == 110) ||
(token >= 48 && token <= 57 || token == 190)) { (token >= 48 && token <= 57 || token == 190)) {
self.data.type = type.numchar;
self.data.val = kc_lookup[token];
is_number = true;
ok = true;
self.data.type = type.numchar;
self.data.val = kc_lookup[token];
is_number = true;
ok = true;
} }
else if (token == KC_PLU || token == KC_PLU_1) { else if (token == KC_PLU || token == KC_PLU_1) {
self.data.type = type.sign; self.data.type = type.sign;
@ -180,13 +178,8 @@ function pos_keyboard_widgets(instance, module){
$('body').off('keyup', '') $('body').off('keyup', '')
} }
}); });
}
(function(){
var _super = window.openerp.point_of_sale;
window.openerp.point_of_sale = function(instance){
_super(instance);
var module = instance.point_of_sale;
pos_keyboard_widgets(instance, module);
}
})();
return {
Keypad: Keypad
};
});
Loading…
Cancel
Save