mirror of https://github.com/OCA/web.git
[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.pull/442/merge
parent
3edd9f84e5
commit
3d502aa149
|
@ -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({
|
||||
|
|
Loading…
Reference in New Issue