|
@@ -0,0 +1,44 @@
|
|
|
+(function(){
|
|
|
+ "use strict";
|
|
|
+ /* ---------------------------------------------------------------------
|
|
|
+ * [formatAmountCurrency].
|
|
|
+ * Description: Number to currency format.
|
|
|
+ * Written by Robert Gauto.
|
|
|
+ * --------------------------------------------------------------------*/
|
|
|
+ openerp.web.formatCurrency = function () {
|
|
|
+ return function(value, options) {
|
|
|
+
|
|
|
+ value = value.toString()
|
|
|
+
|
|
|
+ if (!(options instanceof Object)) {
|
|
|
+ options = {}
|
|
|
+ }
|
|
|
+
|
|
|
+ options.thousandsSeparator = options.thousandsSeparator || '.'
|
|
|
+ options.decimalPlaces = options.decimalPlaces >= 0 || options.decimalPlaces <= 2 ? options.decimalPlaces : 2
|
|
|
+ options.decimalSeparator = options.decimalSeparator || ','
|
|
|
+ options.decimalZeros = !!options.decimalZeros
|
|
|
+
|
|
|
+ if (!!(`${options.thousandsSeparator}${options.decimalSeparator}`).replace(/\.,|,\./g, '')) {
|
|
|
+ throw new Error('Same thousands and decimal separator is not allowed')
|
|
|
+ }
|
|
|
+
|
|
|
+ value = value.split('.')
|
|
|
+
|
|
|
+ value[0] = value[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, `$1${options.thousandsSeparator}`)
|
|
|
+
|
|
|
+ if (!!value[1]) {
|
|
|
+ value[1] = Number.parseFloat(`1.${value[1]}e${options.decimalPlaces}`)
|
|
|
+ value[1] = Math.round(value[1]).toString().replace(/^1/, '')
|
|
|
+ }
|
|
|
+
|
|
|
+ value = options.decimalPlaces === 0 ?value[0] :value.join(options.decimalSeparator)
|
|
|
+
|
|
|
+ if (!options.decimalZeros) {
|
|
|
+ value = value.replace(/([\.|,]\d)0$/, '$1')
|
|
|
+ }
|
|
|
+
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ }()
|
|
|
+})();
|