tryton-sao 7.0.28 → 7.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG +5 -0
- package/dist/tryton-sao.js +61 -23
- package/dist/tryton-sao.min.js +2 -2
- package/package.json +1 -1
- package/src/common.js +36 -10
- package/src/model.js +11 -3
- package/src/sao.js +1 -1
- package/src/screen.js +9 -6
- package/src/window.js +4 -3
package/CHANGELOG
CHANGED
package/dist/tryton-sao.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
/* eslint-disable no-redeclare */
|
|
5
5
|
var Sao = {
|
|
6
|
-
__version__: '7.0.
|
|
6
|
+
__version__: '7.0.29',
|
|
7
7
|
};
|
|
8
8
|
/* eslint-enable no-redeclare */
|
|
9
9
|
|
|
@@ -5199,6 +5199,15 @@ var Sao = {
|
|
|
5199
5199
|
if (!context) {
|
|
5200
5200
|
context = {};
|
|
5201
5201
|
}
|
|
5202
|
+
function atof(string) {
|
|
5203
|
+
if (!string) {
|
|
5204
|
+
throw("empty string");
|
|
5205
|
+
}
|
|
5206
|
+
let { format } = new Intl.NumberFormat(
|
|
5207
|
+
Sao.i18n.BC47(Sao.i18n.getlang()));
|
|
5208
|
+
let [, decimalSign] = /^0(.)1$/.exec(format(0.1));
|
|
5209
|
+
return Number(string.replace(decimalSign, '.'));
|
|
5210
|
+
}
|
|
5202
5211
|
var convert_selection = function() {
|
|
5203
5212
|
if (typeof value == 'string') {
|
|
5204
5213
|
for (var i = 0; i < field.selection.length; i++) {
|
|
@@ -5230,8 +5239,12 @@ var Sao = {
|
|
|
5230
5239
|
},
|
|
5231
5240
|
'float': function() {
|
|
5232
5241
|
var factor = Number(field.factor || 1);
|
|
5233
|
-
|
|
5234
|
-
|
|
5242
|
+
try {
|
|
5243
|
+
var result = atof(value);
|
|
5244
|
+
} catch (e) {
|
|
5245
|
+
return null;
|
|
5246
|
+
}
|
|
5247
|
+
if (isNaN(result)) {
|
|
5235
5248
|
return null;
|
|
5236
5249
|
} else {
|
|
5237
5250
|
return result / factor;
|
|
@@ -5239,18 +5252,25 @@ var Sao = {
|
|
|
5239
5252
|
},
|
|
5240
5253
|
'integer': function() {
|
|
5241
5254
|
var factor = Number(field.factor || 1, 10);
|
|
5242
|
-
|
|
5255
|
+
try {
|
|
5256
|
+
var result = atof(value);
|
|
5257
|
+
} catch (e) {
|
|
5258
|
+
return null;
|
|
5259
|
+
}
|
|
5243
5260
|
if (isNaN(result)) {
|
|
5244
5261
|
return null;
|
|
5245
5262
|
} else {
|
|
5246
|
-
return result / factor;
|
|
5263
|
+
return parseInt(result / factor, 10);
|
|
5247
5264
|
}
|
|
5248
5265
|
},
|
|
5249
5266
|
'numeric': function() {
|
|
5250
5267
|
var factor = Number(field.factor || 1);
|
|
5251
|
-
|
|
5252
|
-
|
|
5253
|
-
|
|
5268
|
+
try {
|
|
5269
|
+
var result = atof(value);
|
|
5270
|
+
} catch (e) {
|
|
5271
|
+
return null;
|
|
5272
|
+
}
|
|
5273
|
+
if (isNaN(result)) {
|
|
5254
5274
|
return null;
|
|
5255
5275
|
} else {
|
|
5256
5276
|
return new Sao.Decimal(result / factor);
|
|
@@ -5305,8 +5325,7 @@ var Sao = {
|
|
|
5305
5325
|
return '';
|
|
5306
5326
|
}
|
|
5307
5327
|
var digit = 0;
|
|
5308
|
-
var
|
|
5309
|
-
var string = String(value * factor);
|
|
5328
|
+
var string = String(value);
|
|
5310
5329
|
if (string.contains('e')) {
|
|
5311
5330
|
var exp = string.split('e')[1];
|
|
5312
5331
|
string = string.split('e')[0];
|
|
@@ -5315,7 +5334,14 @@ var Sao = {
|
|
|
5315
5334
|
if (string.contains('.')) {
|
|
5316
5335
|
digit += string.replace(/0+$/, '').split('.')[1].length;
|
|
5317
5336
|
}
|
|
5318
|
-
|
|
5337
|
+
var factor = Number(field.factor || 1);
|
|
5338
|
+
digit -= Math.round(Math.log10(factor));
|
|
5339
|
+
return (value * factor).toLocaleString(
|
|
5340
|
+
Sao.i18n.BC47(Sao.i18n.getlang()), {
|
|
5341
|
+
useGrouping: true,
|
|
5342
|
+
minimumFractionDigits: digit,
|
|
5343
|
+
maximumFractionDigits: digit,
|
|
5344
|
+
});
|
|
5319
5345
|
};
|
|
5320
5346
|
var format_selection = function() {
|
|
5321
5347
|
if (field.selection instanceof Array) {
|
|
@@ -10035,6 +10061,7 @@ var Sao = {
|
|
|
10035
10061
|
}
|
|
10036
10062
|
|
|
10037
10063
|
if (value && (value.add || value.update)) {
|
|
10064
|
+
let vals_to_set = {};
|
|
10038
10065
|
// First set already added fields to prevent triggering a
|
|
10039
10066
|
// second on_change call
|
|
10040
10067
|
if (value.update) {
|
|
@@ -10044,9 +10071,9 @@ var Sao = {
|
|
|
10044
10071
|
}
|
|
10045
10072
|
const record2 = group.get(vals.id);
|
|
10046
10073
|
if (record2) {
|
|
10047
|
-
var vals_to_set = {};
|
|
10048
10074
|
for (var key in vals) {
|
|
10049
|
-
if (!(
|
|
10075
|
+
if (!Object.prototype.hasOwnProperty.call(
|
|
10076
|
+
new_field_names, key)) {
|
|
10050
10077
|
vals_to_set[key] = vals[key];
|
|
10051
10078
|
}
|
|
10052
10079
|
}
|
|
@@ -10080,7 +10107,14 @@ var Sao = {
|
|
|
10080
10107
|
}
|
|
10081
10108
|
const record2 = group.get(vals.id);
|
|
10082
10109
|
if (record2) {
|
|
10083
|
-
|
|
10110
|
+
let to_update = Object.fromEntries(
|
|
10111
|
+
Object.entries(vals).filter(
|
|
10112
|
+
([k, v]) => {
|
|
10113
|
+
!Object.prototype.hasOwnProperty.call(
|
|
10114
|
+
vals_to_set, k)
|
|
10115
|
+
}
|
|
10116
|
+
));
|
|
10117
|
+
record2.set_on_change(to_update);
|
|
10084
10118
|
}
|
|
10085
10119
|
}
|
|
10086
10120
|
}
|
|
@@ -12833,7 +12867,7 @@ var Sao = {
|
|
|
12833
12867
|
Sao.ScreenContainer.BetweenDates._super.init.call(this, id);
|
|
12834
12868
|
this.from.change(this._from_changed.bind(this));
|
|
12835
12869
|
},
|
|
12836
|
-
_get_value: function(entry
|
|
12870
|
+
_get_value: function(entry) {
|
|
12837
12871
|
return entry.find('input[type=text]').val();
|
|
12838
12872
|
},
|
|
12839
12873
|
_set_value: function(entry, value) {
|
|
@@ -12946,11 +12980,17 @@ var Sao = {
|
|
|
12946
12980
|
'class': 'form-control input-sm',
|
|
12947
12981
|
'type': 'number',
|
|
12948
12982
|
'step': 'any',
|
|
12983
|
+
'lang': Sao.i18n.getlang(),
|
|
12949
12984
|
}).appendTo(el);
|
|
12950
12985
|
return entry;
|
|
12951
12986
|
},
|
|
12952
|
-
_get_value: function(entry
|
|
12953
|
-
|
|
12987
|
+
_get_value: function(entry) {
|
|
12988
|
+
let value = entry.val();
|
|
12989
|
+
if (value) {
|
|
12990
|
+
value = Number(value).toLocaleString(
|
|
12991
|
+
Sao.i18n.BC47(Sao.i18n.getlang()))
|
|
12992
|
+
}
|
|
12993
|
+
return value;
|
|
12954
12994
|
},
|
|
12955
12995
|
_set_value: function(entry, value) {
|
|
12956
12996
|
return entry.val(value);
|
|
@@ -13502,9 +13542,6 @@ var Sao = {
|
|
|
13502
13542
|
return this.__current_record;
|
|
13503
13543
|
},
|
|
13504
13544
|
set current_record(record) {
|
|
13505
|
-
if ((this.__current_record === record) && record) {
|
|
13506
|
-
return;
|
|
13507
|
-
}
|
|
13508
13545
|
this.__current_record = record;
|
|
13509
13546
|
var pos = null;
|
|
13510
13547
|
var record_id = null;
|
|
@@ -24760,9 +24797,10 @@ function eval_pyson(value){
|
|
|
24760
24797
|
});
|
|
24761
24798
|
},
|
|
24762
24799
|
clear: function() {
|
|
24763
|
-
|
|
24764
|
-
|
|
24765
|
-
|
|
24800
|
+
let kinds = new Set();
|
|
24801
|
+
this.el.children().each(
|
|
24802
|
+
(i, el) => kinds.add(jQuery(el).data('kind')));
|
|
24803
|
+
kinds.forEach(kind => {
|
|
24766
24804
|
this.refresh(kind);
|
|
24767
24805
|
});
|
|
24768
24806
|
this.__messages.clear();
|