[FIX][web_export_view] Remove monetary formatting (#594)

Monetary fields were being exported empty because the parsing failed.

In the way of correctly exporting them as numbers, this chunk of code's performance has been improved.
This commit is contained in:
Jairo Llopis
2017-03-31 13:55:22 +02:00
committed by ernesto
parent efd42c0ed2
commit 971a20fddc

View File

@@ -46,49 +46,45 @@ odoo.define('web_export_view', function (require) {
export_columns_names.push(this.string);
}
});
var rows = view.$el.find('.o_list_view > tbody > tr');
var export_rows = [];
$.each(rows, function () {
var $row = $(this);
$.blockUI();
if (children) {
// find only rows with data
if ($row.attr('data-id')) {
view.$el.find('.o_list_view > tbody > tr[data-id]:has(.o_list_record_selector input:checkbox:checked)')
.each(function () {
var $row = $(this);
var export_row = [];
var checked = $row.find('.o_list_record_selector input[type=checkbox]').is(':checked');
if (children && checked === true) {
$.each(export_columns_keys, function () {
var $cell = $row.find('td[data-field="' + this + '"]')
var $cellcheckbox = $cell.find('.o_checkbox input[type=checkbox]');
if ($cellcheckbox.length) {
if ($cellcheckbox.is(':checked')) {
export_row.push(_t("True"));
}
else {
export_row.push(_t("False"));
}
$.each(export_columns_keys, function () {
var $cell = $row.find('td[data-field="' + this + '"]')
var $cellcheckbox = $cell.find('.o_checkbox input:checkbox');
if ($cellcheckbox.length) {
export_row.push(
$cellcheckbox.is(":checked")
? _t("True") : _t("False")
);
}
else {
var text = $cell.text().trim();
if ($cell.hasClass("o_list_number")) {
export_row.push(parseFloat(
text
// Remove thousands separator
.split(_t.database.parameters.thousands_sep)
.join("")
// Always use a `.` as decimal separator
.replace(_t.database.parameters.decimal_point, ".")
// Remove non-numeric characters
.replace(/[^\d\.-]/g, "")
));
}
else {
var cell = $cell.get(0);
var text = cell.text || cell.textContent || cell.innerHTML || "";
if (cell.classList.contains("o_list_number")) {
var tmp2 = text;
do {
var tmp = tmp2;
tmp2 = tmp.replace(_t.database.parameters.thousands_sep, "");
} while (tmp !== tmp2);
tmp2 = tmp.replace(_t.database.parameters.decimal_point, ".");
export_row.push(parseFloat(tmp2));
}
else {
export_row.push(text.trim());
}
export_row.push(text);
}
});
export_rows.push(export_row);
}
}
});
$.blockUI();
}
});
export_rows.push(export_row);
});
}
view.session.get_file({
url: '/web/export/xls_view',
data: {data: JSON.stringify({