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 CHANGED
@@ -1,4 +1,9 @@
1
1
 
2
+ Version 7.0.29 - 2025-05-02
3
+ ---------------------------
4
+ * Bug fixes (see mercurial logs for details)
5
+
6
+
2
7
  Version 7.0.28 - 2025-04-26
3
8
  ---------------------------
4
9
  * Bug fixes (see mercurial logs for details)
@@ -3,7 +3,7 @@
3
3
 
4
4
  /* eslint-disable no-redeclare */
5
5
  var Sao = {
6
- __version__: '7.0.28',
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
- var result = Number(value);
5234
- if (isNaN(result) || value === '' || value === null) {
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
- var result = parseInt(value, 10);
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
- var result = Number(value);
5252
- if (isNaN(result.valueOf()) ||
5253
- value === '' || value === null) {
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 factor = Number(field.factor || 1);
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
- return (value * factor).toFixed(digit);
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 (!(key in new_field_names)) {
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
- record2.set_on_change(vals);
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, value) {
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, value) {
12953
- return entry.val();
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
- var kinds = this.el.children().each(
24764
- (i, el) => jQuery(el).data('kind'));
24765
- new Set(kinds).forEach(kind => {
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();