Skip to content

Commit

Permalink
[FIX][web_export_view] Remove monetary formatting (OCA#594)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
yajo authored and CarlosRoca13 committed Nov 2, 2020
1 parent 03662f0 commit 4a8a1e9
Showing 1 changed file with 33 additions and 37 deletions.
70 changes: 33 additions & 37 deletions web_export_view/static/src/js/web_export_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand Down

0 comments on commit 4a8a1e9

Please sign in to comment.