30 lines
910 B
JavaScript
30 lines
910 B
JavaScript
/** @odoo-module */
|
|
|
|
import { download } from "@web/core/network/download";
|
|
import { registry } from "@web/core/registry";
|
|
import { createSpreadsheetModel, waitForDataLoaded } from "@spreadsheet/helpers/model";
|
|
|
|
/**
|
|
* @param {import("@web/env").OdooEnv} env
|
|
* @param {object} action
|
|
*/
|
|
async function downloadSpreadsheet(env, action) {
|
|
let { name, data, stateUpdateMessages, xlsxData } = action.params;
|
|
if (!xlsxData) {
|
|
const model = await createSpreadsheetModel({ env, data, revisions: stateUpdateMessages });
|
|
await waitForDataLoaded(model);
|
|
xlsxData = model.exportXLSX();
|
|
}
|
|
await download({
|
|
url: "/spreadsheet/xlsx",
|
|
data: {
|
|
zip_name: `${name}.xlsx`,
|
|
files: JSON.stringify(xlsxData.files),
|
|
},
|
|
});
|
|
}
|
|
|
|
registry
|
|
.category("actions")
|
|
.add("action_download_spreadsheet", downloadSpreadsheet, { force: true });
|