You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.7 KiB
76 lines
2.7 KiB
odoo.define('pos_sequence_ref_number.pos_sequence_ref_number_assets_backend', function(require) {
|
|
"use strict";
|
|
|
|
var models = require('point_of_sale.models');
|
|
|
|
var PosModelSuper = models.PosModel;
|
|
var posmodel_super = models.PosModel.prototype;
|
|
var _super_order = models.Order.prototype;
|
|
|
|
|
|
var sequence_next = function(seq){
|
|
var idict = {
|
|
'year': moment().format('YYYY'),
|
|
'month': moment().format('MM'),
|
|
'day': moment().format('DD'),
|
|
'y': moment().format('YY')
|
|
};
|
|
var format = function(s, dict){
|
|
s = s || '';
|
|
$.each(dict, function(k, v){
|
|
s = s.replace('%(' + k + ')s', v);
|
|
});
|
|
return s;
|
|
};
|
|
function pad(n, width, z) {
|
|
z = z || '0';
|
|
n = n + '';
|
|
if (n.length < width) {
|
|
n = new Array(width - n.length + 1).join(z) + n;
|
|
}
|
|
return n;
|
|
}
|
|
var num = seq.number_next_actual;
|
|
var prefix = format(seq.prefix, idict);
|
|
var suffix = format(seq.suffix, idict);
|
|
seq.number_next_actual += seq.number_increment;
|
|
|
|
return prefix + pad(num, seq.padding) + suffix;
|
|
};
|
|
|
|
models.PosModel = models.PosModel.extend({
|
|
load_server_data: function () {
|
|
var self = this;
|
|
// Load POS sequence object
|
|
self.models.push({
|
|
model: 'ir.sequence',
|
|
fields: [],
|
|
ids: function(self){ return [self.config.sequence_id[0]]; },
|
|
loaded: function(self, sequence){ self.pos_order_sequence = sequence[0]; },
|
|
});
|
|
return posmodel_super.load_server_data.apply(this, arguments);
|
|
},
|
|
push_order: function(order){
|
|
if (order !== undefined) {
|
|
order.set({'sequence_ref_number': this.pos_order_sequence.number_next_actual});
|
|
order.set({'sequence_ref': sequence_next(this.pos_order_sequence)});
|
|
}
|
|
return PosModelSuper.prototype.push_order.call(this, order);
|
|
},
|
|
});
|
|
|
|
models.Order = models.Order.extend({
|
|
export_as_JSON: function() {
|
|
var json = _super_order.export_as_JSON.apply(this,arguments);
|
|
json['sequence_ref'] = this.get('sequence_number');
|
|
json['sequence_ref_number'] = this.get('sequence_ref_number');
|
|
return json;
|
|
},
|
|
export_for_printing: function() {
|
|
var json = _super_order.export_for_printing.apply(this,arguments);
|
|
json['sequence_ref_number'] = this.get('sequence_number');
|
|
return json;
|
|
},
|
|
});
|
|
|
|
});
|