From f94ba4fc5c3a15d979424cd043f49d2350e9df60 Mon Sep 17 00:00:00 2001 From: Mantux11 Date: Thu, 29 Dec 2022 12:01:01 +0000 Subject: [PATCH] [15.0][MIG] excel_import_export, excel_import_export_demo: Migration --- excel_import_export/__manifest__.py | 8 +- excel_import_export/controllers/main.py | 70 +- excel_import_export/i18n/es_AR.po | 1482 ----------------- excel_import_export/i18n/it.po | 14 +- excel_import_export/models/common.py | 9 +- excel_import_export/models/ir_report.py | 11 +- excel_import_export/models/xlsx_export.py | 10 +- excel_import_export/models/xlsx_import.py | 23 +- excel_import_export/models/xlsx_template.py | 22 +- .../js/report/action_manager_report.esm.js | 55 + .../src/js/report/action_manager_report.js | 98 -- .../views/webclient_templates.xml | 14 - .../views/xlsx_template_view.xml | 2 +- .../wizard/import_xlsx_wizard.py | 7 +- excel_import_export_demo/__manifest__.py | 2 +- .../partner_list/report_partner_list.py | 1 - .../report_action/sale_order/report.xml | 3 +- .../report_crm_lead/report_crm_lead.py | 8 +- .../report_crm_lead/templates.xml | 6 +- .../report_sale_order/report_sale_order.py | 1 - .../tests/test_xlsx_import_export.py | 4 +- .../tests/test_xlsx_report.py | 2 +- .../tests/test_xlsx_template.py | 2 +- 23 files changed, 180 insertions(+), 1674 deletions(-) delete mode 100644 excel_import_export/i18n/es_AR.po create mode 100644 excel_import_export/static/src/js/report/action_manager_report.esm.js delete mode 100644 excel_import_export/static/src/js/report/action_manager_report.js delete mode 100644 excel_import_export/views/webclient_templates.xml diff --git a/excel_import_export/__manifest__.py b/excel_import_export/__manifest__.py index 4f4efbb6c..368134208 100644 --- a/excel_import_export/__manifest__.py +++ b/excel_import_export/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Excel Import/Export/Report", "summary": "Base module for developing Excel import/export/report", - "version": "14.0.1.1.0", + "version": "15.0.1.0.0", "author": "Ecosoft,Odoo Community Association (OCA)", "license": "AGPL-3", "website": "https://github.com/OCA/server-tools", @@ -18,9 +18,13 @@ "wizard/report_xlsx_wizard.xml", "views/xlsx_template_view.xml", "views/xlsx_report.xml", - "views/webclient_templates.xml", ], "installable": True, "development_status": "Beta", "maintainers": ["kittiu"], + "assets": { + "web.assets_backend": [ + "/excel_import_export/static/src/js/report/action_manager_report.esm.js" + ] + }, } diff --git a/excel_import_export/controllers/main.py b/excel_import_export/controllers/main.py index cfef9a2f1..1a4cfd206 100644 --- a/excel_import_export/controllers/main.py +++ b/excel_import_export/controllers/main.py @@ -3,12 +3,24 @@ import base64 import json +import logging -from odoo.http import content_disposition, request, route -from odoo.tools.safe_eval import safe_eval +from werkzeug.urls import url_decode + +from odoo import http +from odoo.http import ( + content_disposition, + request, + route, + serialize_exception as _serialize_exception, +) +from odoo.tools import html_escape +from odoo.tools.safe_eval import safe_eval, time from odoo.addons.web.controllers import main as report +_logger = logging.getLogger(__name__) + class ReportController(report.ReportController): @route() @@ -28,15 +40,20 @@ class ReportController(report.ReportController): if data["context"].get("lang"): del data["context"]["lang"] context.update(data["context"]) - excel, report_name = report.with_context(context).render_excel( + + excel, report_name = report.with_context(**context)._render_excel( docids, data=data ) excel = base64.decodestring(excel) - if report.print_report_name and not len(docids) > 1: - obj = request.env[report.model].browse(docids[0]) - file_ext = report_name.split(".")[-1:].pop() - report_name = safe_eval(report.print_report_name, {"object": obj}) - report_name = "{}.{}".format(report_name, file_ext) + if docids: + records = request.env[report.model].browse(docids) + if report.print_report_name and not len(records) > 1: + # this is a bad idea, this sou ld only be .xlsx + extension = report_name.split(".")[-1:].pop() + report_name = safe_eval( + report.print_report_name, {"object": records, "time": time} + ) + report_name = f"{report_name}.{extension}" excelhttpheaders = [ ( "Content-Type", @@ -47,6 +64,37 @@ class ReportController(report.ReportController): ("Content-Disposition", content_disposition(report_name)), ] return request.make_response(excel, headers=excelhttpheaders) - return super(ReportController, self).report_routes( - reportname, docids, converter, **data - ) + return super().report_routes(reportname, docids, converter, **data) + + @http.route() + def report_download(self, data, context=None): + requestcontent = json.loads(data) + url, report_type = requestcontent[0], requestcontent[1] + if report_type != "excel": + return super().report_download(data, context) + reportname = "???" + try: + pattern = "/report/excel/" + reportname = url.split(pattern)[1].split("?")[0] + docids = None + if "/" in reportname: + reportname, docids = reportname.split("/") + _logger.warning(reportname) + if docids: + return self.report_routes( + reportname, docids=docids, converter="excel", context=context + ) + data = dict(url_decode(url.split("?")[1]).items()) + if "context" in data: + context, data_context = json.loads(context or "{}"), json.loads( + data.pop("context") + ) + context = json.dumps({**context, **data_context}) + return self.report_routes( + reportname, converter="excel", context=context, **data + ) + except Exception as e: + _logger.exception("Error while generating report %s", reportname) + se = _serialize_exception(e) + error = {"code": 200, "message": "Odoo Server Error", "data": se} + return request.make_response(html_escape(json.dumps(error))) diff --git a/excel_import_export/i18n/es_AR.po b/excel_import_export/i18n/es_AR.po deleted file mode 100644 index 660c65f18..000000000 --- a/excel_import_export/i18n/es_AR.po +++ /dev/null @@ -1,1482 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * excel_import_export -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2022-08-20 22:07+0000\n" -"Last-Translator: Ignacio Buioli \n" -"Language-Team: none\n" -"Language: es_AR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.3.2\n" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "${object.post_import_do_something()}" -msgstr "${object.post_import_do_something()}" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/common.py:0 -#: code:addons/excel_import_export/models/common.py:0 -#, python-format -msgid "'%s' sheet not found" -msgstr "'%s' hoja no encontrada" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_export_xlsx_wizard__state -#: model:ir.model.fields,help:excel_import_export.field_import_xlsx_wizard__state -#: model:ir.model.fields,help:excel_import_export.field_xlsx_report__state -msgid "" -"* Choose: wizard show in user selection mode\n" -"* Get: wizard show results from user action" -msgstr "" -"* Elegir: el asistente se muestra en el modo selección de usuario\n" -"* Obtener: el asistente muestra resultados desde la acción de usuario" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Cell: Location of data in excel sheet (e.g., A1, B1, ...)" -msgstr "" -"Celda: Ubicación de los datos en la hoja de excel (ej., A1, B1, ...)" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Continue: If not selected, start rolling with specified first row " -"cells. If selected, continue from previous one2many field" -msgstr "" -"Continuar: Si no está seleccionado, comienza a rodar con las celdas " -"de la primera fila especificadas. Si se selecciona, continúa desde el campo " -"one2many anterior" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Extend: If selected, extend one row after one data row in order to " -"preserve the sum line" -msgstr "" -"Extender: Si está seleccionado, extiende una fila despues de una fila " -"con datos en orden de pereservar la línea de suma" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Field Cond.: Python code in ${...} to manipulate field " -"value, e.g., if field = product_id, value will represent " -"product object, e.g., ${value and value.uom_id.name or \"\"}" -msgstr "" -"Campo Cond.: Código de python en ${...} para manipular " -"el valor del campo, ej., if field = product_id, value " -"representará el objeto producto, ej., ${value and value.uom_id.name or " -"\"\"}" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Field Cond.: Python code in ${...} value will represent " -"data from excel cell, e.g., if A1 = 'ABC', value will represent" -" 'ABC', e.g., ${value == \"ABC\" and \"X\" or \"Y\"} thus can " -"change from cell value to other value for import." -msgstr "" -"Campo Cond.: Código de python en ${...} value " -"representará datos desde la celda de excel, ej., if A1 = 'ABC', value representará 'ABC', ej., ${value == \"ABC\" and \"X\" or \"Y\"} por lo tanto, puede cambiar del valor de la celda a otro valor para " -"importar." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Field: Field of the record to be imported to, e.g., product_id" -msgstr "Campo: Campo del registro a ser importado, ej., product_id" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Field: Field of the record, e.g., product_id.uom_id.name. They are " -"orm compliant." -msgstr "" -"Campo: Campo del registro, ej., product_id.uom_id.name. Son " -"compatibles con orm." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"No Delete: By default, all one2many lines will be deleted before " -"import. Select this, to avoid deletion" -msgstr "" -"No Eliminar: De forma predeterminada, todas las líneas one2many se " -"eliminarán antes de la importación. Seleccione esto, para evitar la " -"eliminación" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Note:" -msgstr "Nota:" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Row Field: Use _HEAD_ for the record itself, and one2many field " -"(e.g., line_ids) for row data" -msgstr "" -"Campo de Fila: Use _HEAD_ para el registro mismo, y un campo one2many " -"(ej., line_ids) para los datos de la fila" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Row Field: Use _HEAD_ for the record itself, and one2many field for " -"row data, e.g., order_line, line_ids[max_row] where " -"[max_row] is optional number of rows to import" -msgstr "" -"Campo de Fila: Use _HEAD_ para el registro mismo, y un campo one2many " -"para los datos de la fila, ej., order_line, line_ids[max_row] " -"donde [max_row] es un número opcional de filas a importar" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Sheet: Name (e.g., Sheet 1) or index (e.g., 1) of excel sheet" -msgstr "Hoja: Nombre (ej., Hoja 1) o ídice (ej., 1) de la hoja de excel" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Sheet: Name (e.g., Sheet 1) or index (e.g., 1) of excel sheet to " -"export data to" -msgstr "" -"Hoja: Nombre (ej., Hoja 1) o ídice (ej., 1) de la hoja de excel para " -"exportar datos" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Style w/Cond.: Conditional style by python code in " -"#?...?, e.g., apply style for specific product, " -"#?value.name == \"ABC\" and #{font=bold;fill=red} or None?" -msgstr "" -"Estilo c/Cond.: Estilo condicional por código de python en " -"#?...?, ej., aplica un estilo para un producto específico, " -"#?value.name == \"ABC\" and #{font=bold;fill=red} or None?" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Style: Default style in #{...} that apply to each cell, " -"e.g., #{align=left;style=text}. See module's style.py " -"for available styles." -msgstr "" -"Estilo: Estilo predeterminado en #{...} que aplica para " -"cada celda, ej., #{align=left;style=text}. Ver en el módulo el " -"archivo style.py para los estilos disponibles." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Sum: Add sum value on last row, @{sum}" -msgstr "Sum: Agrega valor de suma a la última fila, @{sum}" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"\n" -"{\n" -" '__EXPORT__': {\n" -" 'sale_order': { # sheet can be name (string) or index (integer)\n" -" '_HEAD_': {\n" -" 'B2': 'partner_id.display_name${value or \"\"}#{align=left;style=text}',\n" -" 'B3': 'name${value or \"\"}#{align=left;style=text}',\n" -" },\n" -" 'line_ids': { # prefix with _CONT_ to continue rows from previous row field\n" -" 'A6': 'product_id.display_name${value or \"\"}#{style=text}',\n" -" 'C6': 'product_uom_qty${value or 0}#{style=number}',\n" -" 'E6': 'price_unit${value or 0}#{style=number}',\n" -" 'G6': 'price_subtotal${value or 0}#{style=number}',\n" -" },\n" -" },\n" -" },\n" -" '__IMPORT__': {\n" -" 'sale_order': { # sheet can be name (string) or index (integer)\n" -" 'order_line': { # prefix with _NODEL_ to not delete rows before import\n" -" 'A6': 'product_id',\n" -" 'C6': 'product_uom_qty',\n" -" 'E6': 'price_unit${value > 0 and value or 0}',\n" -" },\n" -" },\n" -" },\n" -" '__POST_IMPORT__': '${object.post_import_do_something()}',\n" -"}\n" -"\n" -" " -msgstr "" -"\n" -"{\n" -" '__EXPORT__': {\n" -" 'sale_order': { # las hojas pueden tener nombre (string) or índice " -"(integer)\n" -" '_HEAD_': {\n" -" 'B2': 'partner_id.display_name${value or \"\"" -"}#{align=left;style=text}',\n" -" 'B3': 'name${value or \"\"}#{align=left;style=text}',\n" -" },\n" -" 'line_ids': { # prefijo con _CONT_ para continuar con las filas " -"desde el campo de la fila anterior\n" -" 'A6': 'product_id.display_name${value or \"\"}#{style=text}'," -"\n" -" 'C6': 'product_uom_qty${value or 0}#{style=number}',\n" -" 'E6': 'price_unit${value or 0}#{style=number}',\n" -" 'G6': 'price_subtotal${value or 0}#{style=number}',\n" -" },\n" -" },\n" -" },\n" -" '__IMPORT__': {\n" -" 'sale_order': { # las hojas pueden tener nombre (string) or índice " -"(integer)\n" -" 'order_line': { # prefijo con _NODEL_ para no eliminar las " -"filas antes de importar\n" -" 'A6': 'product_id',\n" -" 'C6': 'product_uom_qty',\n" -" 'E6': 'price_unit${value > 0 and value or 0}',\n" -" },\n" -" },\n" -" },\n" -" '__POST_IMPORT__': '${object.post_import_do_something()}',\n" -"}\n" -"\n" -" " - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "date, datetime, time: some useful python classes" -msgstr "date, datetime, time: algunas clases útiles de python" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "model: active model, e.g., self.env['my.model']" -msgstr "model: modelo activo, ej., self.env['my.model']" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"object: record object or line object depends on Row " -"Field" -msgstr "" -"object: registro de objeto o línea de objeto del cual depende " -"en Campo de Fila" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "value: value from Cell" -msgstr "valor: valor de la Celda" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "value: value from Field" -msgstr "valor: valor del Campo" - -#. module: excel_import_export -#. openerp-web -#: code:addons/excel_import_export/static/src/js/report/action_manager_report.js:0 -#, python-format -msgid "" -"A popup window with your report was blocked. You may need to change your " -"browser settings to allow popup windows for this page." -msgstr "" -"Se bloqueó una ventana emergente con su informe. Es posible que deba cambiar " -"la configuración de su navegador para permitir ventanas emergentes para esta " -"página." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Add Export Action" -msgstr "Agrega Acción de Exportar" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Add Import Action" -msgstr "Agrega Acción de Importar" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Add Report Menu" -msgstr "Agregar Menú de Reporte" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Add data column" -msgstr "Agrega columna de datos" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Add header section" -msgstr "Agrega sección de cabecera" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Add new report menu at root level" -msgstr "Agrega un nuevo menú de reporte al nivel del origen" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Add row section" -msgstr "Agrega una sección de fila" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Add sheet section" -msgstr "Agrega una sección de hoja" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__choose_template -msgid "Allow Choose Template" -msgstr "Permite Elegir Plantilla" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__assigned_attachment_ids -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__assigned_attachment_ids -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report__assigned_attachment_ids -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__assigned_attachment_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_export__assigned_attachment_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_import__assigned_attachment_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__assigned_attachment_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_styles__assigned_attachment_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__assigned_attachment_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__assigned_attachment_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__assigned_attachment_ids -msgid "Assigned Attachments" -msgstr "Adjuntos Asignados" - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_xlsx_styles -msgid "Available styles for excel" -msgstr "Estilos disponibles para excel" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template_import__no_delete -msgid "" -"By default, all rows will be deleted before import.\n" -"Select No Delete, otherwise" -msgstr "" -"De forma predeterminada, todas las filas serán eliminadas despues de la " -"importación\n" -"De otra forma, seleccione No Eliminar" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__csv_delimiter -msgid "CSV Delimiter" -msgstr "Delimitador CSV" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__csv_extension -msgid "CSV File Extension" -msgstr "Extensión de Archivo CSV" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__csv_quote -msgid "CSV Quoting" -msgstr "Cita del CSV" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__post_import_hook -msgid "" -"Call a function after successful import, i.e.,\n" -"${object.post_import_do_something()}" -msgstr "" -"Llama una función despues de una importación satisfactoria, por ej.,\n" -"${object.post_import_do_something()}" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.export_xlsx_wizard -#: model_terms:ir.ui.view,arch_db:excel_import_export.import_xlsx_wizard -#: model_terms:ir.ui.view,arch_db:excel_import_export.report_xlsx_wizard -#: model_terms:ir.ui.view,arch_db:excel_import_export.xlsx_report_view -msgid "Cancel" -msgstr "Cancelar" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__excel_cell -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__excel_cell -msgid "Cell" -msgstr "Celda" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__changeset_change_ids -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__changeset_change_ids -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report__changeset_change_ids -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__changeset_change_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_export__changeset_change_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_import__changeset_change_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__changeset_change_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_styles__changeset_change_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__changeset_change_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__changeset_change_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__changeset_change_ids -msgid "Changeset Changes" -msgstr "Cambios en el Conjunto de Cambios" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__changeset_ids -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__changeset_ids -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report__changeset_ids -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__changeset_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_export__changeset_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_import__changeset_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__changeset_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_styles__changeset_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__changeset_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__changeset_ids -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__changeset_ids -msgid "Changesets" -msgstr "Conjunto de Cambios" - -#. module: excel_import_export -#: model:ir.model.fields.selection,name:excel_import_export.selection__export_xlsx_wizard__state__choose -#: model:ir.model.fields.selection,name:excel_import_export.selection__import_xlsx_wizard__state__choose -#: model:ir.model.fields.selection,name:excel_import_export.selection__xlsx_report__state__choose -msgid "Choose" -msgstr "Elegir" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.xlsx_report_view -msgid "Choose Template:" -msgstr "Elegir Plantilla:" - -#. module: excel_import_export -#: model_terms:ir.actions.act_window,help:excel_import_export.action_xlsx_template -msgid "Click to create a XLSX Template Object." -msgstr "Clic para crear un Objeto de Plantilla XLSX." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.export_xlsx_wizard -#: model_terms:ir.ui.view,arch_db:excel_import_export.import_xlsx_wizard -#: model_terms:ir.ui.view,arch_db:excel_import_export.xlsx_report_view -msgid "Close" -msgstr "Cerrar" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.export_xlsx_wizard -msgid "Complete Prepare File (.xlsx)" -msgstr "Completar Archivo de Preparación (.xlsx)" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.xlsx_report_view -msgid "Complete Prepare Report (.xlsx)" -msgstr "Completar Reporte de Preparación (.xlsx)" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__is_cont -msgid "Continue" -msgstr "Continuar" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template_export__is_cont -msgid "Continue data rows after last data row" -msgstr "Continuar filas de datos despues de la última fila de datos" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__to_csv -msgid "Convert file into CSV format on export" -msgstr "Convertir archivo en formato CSV al exportar" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__to_csv -msgid "Convert to CSV?" -msgstr "¿Convertir a CSV?" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__count_pending_changeset_changes -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__count_pending_changeset_changes -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report__count_pending_changeset_changes -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__count_pending_changeset_changes -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_export__count_pending_changeset_changes -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_import__count_pending_changeset_changes -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__count_pending_changeset_changes -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_styles__count_pending_changeset_changes -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__count_pending_changeset_changes -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__count_pending_changeset_changes -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__count_pending_changeset_changes -msgid "Count Pending Changeset Changes" -msgstr "Contar los Cambios Pendientes del Conjunto de Cambios" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__count_pending_changesets -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__count_pending_changesets -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report__count_pending_changesets -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__count_pending_changesets -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_export__count_pending_changesets -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_import__count_pending_changesets -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__count_pending_changesets -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_styles__count_pending_changesets -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__count_pending_changesets -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__count_pending_changesets -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__count_pending_changesets -msgid "Count Pending Changesets" -msgstr "Contar Conjunto de Cambios Pendientes" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__create_uid -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__create_uid -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__create_uid -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__create_uid -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__create_uid -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__create_uid -msgid "Created by" -msgstr "Creado por" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__create_date -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__create_date -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__create_date -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__create_date -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__create_date -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__create_date -msgid "Created on" -msgstr "Creado en" - -#. module: excel_import_export -#: model:ir.model.fields.selection,name:excel_import_export.selection__xlsx_template_export__section_type__data -#: model:ir.model.fields.selection,name:excel_import_export.selection__xlsx_template_import__section_type__data -msgid "Data" -msgstr "Datos" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__style -msgid "Default Style" -msgstr "Estilo Predeterminado" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__description -msgid "Description" -msgstr "Descripción" - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_xlsx_template_export -msgid "Detailed of how excel data will be exported" -msgstr "Detalle sobre como los datos de excel serán exportados" - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_xlsx_template_import -msgid "Detailed of how excel data will be imported" -msgstr "Detalle sobre como los datos de excel serán importados" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__display_name -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__display_name -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report__display_name -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__display_name -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_export__display_name -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_import__display_name -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__display_name -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_styles__display_name -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__display_name -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__display_name -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__display_name -msgid "Display Name" -msgstr "Mostrar Nombre" - -#. module: excel_import_export -#: code:addons/excel_import_export/wizard/import_xlsx_wizard.py:0 -#, python-format -msgid "Document must be in %s states" -msgstr "Documento debe estar en estado %s" - -#. module: excel_import_export -#: code:addons/excel_import_export/wizard/import_xlsx_wizard.py:0 -#, python-format -msgid "Document must be in draft state" -msgstr "Documento debe estar en estado borrador" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__use_report_wizard -msgid "Easy Reporting" -msgstr "Reportes Fáciles" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_import.py:0 -#, python-format -msgid "" -"Error deleting data\n" -"%s" -msgstr "" -"Error al eliminar datos\n" -"%s" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_export.py:0 -#, python-format -msgid "" -"Error filling data into Excel sheets\n" -"%s" -msgstr "" -"Error rellenando datos en las hojas de Excel\n" -"%s" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_import.py:0 -#, python-format -msgid "Error importing data" -msgstr "Error al importar datos" - -#. module: excel_import_export -#: model:ir.model.fields.selection,name:excel_import_export.selection__ir_actions_report__report_type__excel -msgid "Excel" -msgstr "Excel" - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_xlsx_export -msgid "Excel Export AbstractModel" -msgstr "Exportar Excel AbstractModel" - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_xlsx_import -msgid "Excel Import AbstractModel" -msgstr "Importar Excel AbstractModel" - -#. module: excel_import_export -#: model:ir.ui.menu,name:excel_import_export.menu_excel_import_export -msgid "Excel Import/Export" -msgstr "Importar/Exportar Excel" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.xlsx_report_view -msgid "Excel Report" -msgstr "Reporte Excel" - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_xlsx_report -msgid "Excel Report AbstractModel" -msgstr "Reporte Excel AbstractModel" - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_xlsx_template -msgid "Excel template file and instruction" -msgstr "Archivo de plantilla excel e instrucción" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.report_xlsx_wizard -msgid "Execute" -msgstr "Ejecutar" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.xlsx_report_view -msgid "Execute Report" -msgstr "Ejecutar Reporte" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__export_ids -#: model_terms:ir.ui.view,arch_db:excel_import_export.export_xlsx_wizard -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Export" -msgstr "Exportar" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__export_action_id -msgid "Export Action" -msgstr "Acción de Exportar" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Export Instruction is how to write data from an active data record to specified cells in excel sheet.\n" -" For example, an active record can be a sale order that user want to export.\n" -" The record itself will be mapped to the header part of excel sheet. The record can contain multiple one2many fields, which will be written as data lines.\n" -" You can look at following instruction as Excel Sheet(s), each with 1 header section (_HEAD_) and multiple row sections (one2many fields)." -msgstr "" -"La instrucción de exportación es cómo escribir datos de un registro de datos " -"activos en celdas específicas en una hoja de Excel.\n" -" Por ejemplo, un registro activo puede ser " -"una orden de venta que el usuario desea exportar.\n" -" El registro en sí se asignará a la parte " -"del encabezado de la hoja de Excel. El registro puede contener varios campos " -"one2many, que se escribirán como líneas de datos.\n" -" Puede ver las siguientes instrucciones " -"como hojas de Excel, cada una con 1 sección de encabezado (_HEAD_) y varias " -"secciones de fila (campos one2many)." - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__is_extend -msgid "Extend" -msgstr "Extender" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template_export__is_extend -msgid "Extend a blank row after filling each record, to extend the footer" -msgstr "" -"Extiende una fila en blanco después de completar cada registro, para " -"extender el pie de página" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__field_name -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__field_name -msgid "Field" -msgstr "Campo" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__field_cond -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__field_cond -msgid "Field Cond." -msgstr "Cond. de Campo." - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__data -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__data -msgid "File" -msgstr "Archivo" - -#. module: excel_import_export -#: code:addons/excel_import_export/wizard/import_xlsx_wizard.py:0 -#, python-format -msgid "File \"%s\" not found in template, %s." -msgstr "Archivo \"%s\" no encontrado en la plantilla, %s." - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__datas -msgid "File Content" -msgstr "Contenido del Archivo" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__name -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__name -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__fname -msgid "File Name" -msgstr "Nombre del Archivo" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Following are more explaination on each column:" -msgstr "A continuación hay más explicaciones en cada columna:" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Following show very simple example of the dictionary construct.\n" -" Normally, this will be within templates.xml file within addons." -msgstr "" -"A continuación, se muestra un ejemplo muy simple de la construcción del " -"diccionario.\n" -" Normalmente, esto estará dentro del " -"archivo templates.xml dentro de los módulos." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"For code block ${...} and #?...?, following object" -" are available," -msgstr "" -"Para el bloque de código ${...} y #?...?, los " -"siguientes objetos están disponibles," - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "For code block ${...}, following object are available," -msgstr "" -"Para el bloque de código ${...}, los siguientes objetos están " -"disponibles," - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_report_xlsx_wizard -msgid "Generic Report Wizard, used with template reporting option" -msgstr "" -"Reporte Genérico del Asistente, usado con la opción de plantillas de reporte" - -#. module: excel_import_export -#: model:ir.model.fields.selection,name:excel_import_export.selection__export_xlsx_wizard__state__get -#: model:ir.model.fields.selection,name:excel_import_export.selection__import_xlsx_wizard__state__get -#: model:ir.model.fields.selection,name:excel_import_export.selection__xlsx_report__state__get -msgid "Get" -msgstr "Obtener" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.export_xlsx_wizard -msgid "Get Import Template" -msgstr "Obtener Plantilla de Importación" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__gname -msgid "Group Name" -msgstr "Agrupar Nombre" - -#. module: excel_import_export -#: model:ir.model.fields.selection,name:excel_import_export.selection__xlsx_template_export__section_type__head -#: model:ir.model.fields.selection,name:excel_import_export.selection__xlsx_template_import__section_type__head -msgid "Head" -msgstr "Cabecera" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Help with Export Instruction" -msgstr "Ayuda con la Instrucción de Exportación" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Help with Import Instruction" -msgstr "Ayuda con la Instrucción de Importación" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.export_xlsx_wizard -msgid "Here is the exported file:" -msgstr "Acá está el archivo exportado:" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.xlsx_report_view -msgid "Here is the report file:" -msgstr "Acá está el archivo del reporte:" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__id -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__id -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report__id -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__id -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_export__id -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_import__id -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__id -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_styles__id -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__id -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__id -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__id -msgid "ID" -msgstr "ID" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template_export__row_field -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template_import__row_field -msgid "If section type is row, this field is required" -msgstr "Si el tipo de sección es una fila, este campo es requerido" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_export.py:0 -#, python-format -msgid "" -"IllegalCharacterError\n" -"Some exporting data contain special character\n" -"%s" -msgstr "" -"IllegalCharacterError\n" -"Algún dato de exportación contiene un carácter especial\n" -"%s" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__import_ids -#: model_terms:ir.ui.view,arch_db:excel_import_export.import_xlsx_wizard -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Import" -msgstr "Importar" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__import_action_id -msgid "Import Action" -msgstr "Acción de Importar" - -#. module: excel_import_export -#: code:addons/excel_import_export/wizard/import_xlsx_wizard.py:0 -#, python-format -msgid "Import Excel" -msgstr "Importar Excel" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__import_file -msgid "Import File (*.xlsx)" -msgstr "Importar Archivo (*.xlsx)" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.import_xlsx_wizard -msgid "Import File Template" -msgstr "Importar Plantilla de Archivo" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__attachment_ids -msgid "Import File(s) (*.xlsx)" -msgstr "Importar Archivo(s) (*.xlsx)" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"Import Instruction is how to get data from excel sheet and write them to an active record.\n" -" For example, user create a sales order document, and want to import order lines from excel.\n" -" In reverse direction to exporting, data from excel's cells will be mapped to record fields during import.\n" -" Cells can be mapped to record in header section (_HEAD_) and data table can be mapped to row section (one2many field, begins from specifed cells." -msgstr "" -"La instrucción de importación es cómo obtener datos de una hoja de Excel y " -"escribirlos en un registro activo.\n" -" Por ejemplo, el usuario crea un documento " -"de pedido de ventas y desea importar líneas de pedido desde Excel.\n" -" En dirección inversa a la exportación, " -"los datos de las celdas de Excel se asignarán a los campos de registro " -"durante la importación.\n" -" Las celdas se pueden asignar al registro " -"en la sección de encabezado (_HEAD_) y la tabla de datos se puede asignar a " -"la sección de fila (campo one2many, comienza desde las celdas especificadas)." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.import_xlsx_wizard -msgid "Import Successful!" -msgstr "¡Importación Satisfactoria!" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"In header section part, map data fields (e.g., number, partner_id.name) into" -" cells (e.g., B1, B2)." -msgstr "" -"En la parte de la sección del encabezado, asigne campos de datos (ej., " -"number, partner_id.name) a celdas (ej., B1, B2)." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"In header section, map cells (e.g., B1, B2) into data fields (e.g., number, " -"partner_id)." -msgstr "" -"En la sección del encabezado, asigne celdas (ej., B1, B2) a campos de datos (" -"ej., number, partner_id)." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"In row section, data list will be rolled out from one2many row field (e.g., " -"order_line), and map data field (i.e., product_id.name, uom_id.name, qty) " -"into the first row cells to start rolling (e.g., A6, B6, C6)." -msgstr "" -"En la sección de fila, la lista de datos se desplegará desde el campo de " -"fila one2many (ej., order_line) y el campo de datos del mapa (es decir, " -"product_id.name, uom_id.name, qty) en las celdas de la primera fila para " -"comenzar a rodar (ej., A6, B6, C6)." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "" -"In row section, data table from excel can be imported to one2many row field " -"(e.g., order_line) by mapping cells on first row onwards (e.g., A6, B6, C6) " -"to fields (e.g., product_id, uom_id, qty)" -msgstr "" -"En la sección de filas, la tabla de datos de Excel se puede importar a un " -"campo de fila one2many (ej., order_line) asignando celdas de la primera fila " -"en adelante (ej., A6, B6, C6) a campos (ej., product_id, uom_id, qty)" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Input Instruction (Dict.)" -msgstr "Instrucción de Entrada (Dict.)" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__instruction -msgid "Instruction" -msgstr "Instrucción" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__input_instruction -msgid "Instruction (Input)" -msgstr "Instrucción (Entrada)" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__instruction -msgid "Instruction on how to import/export, prepared by system." -msgstr "Instrucción sobre como importar/exportar, preparado por el sistema." - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_import.py:0 -#, python-format -msgid "Invalid declaration, %s has no valid field type" -msgstr "Declaración inválida, %s no tiene un tipo de campo válido" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_import.py:0 -#, python-format -msgid "Invalid file style, only .xls or .xlsx file allowed" -msgstr "Estilo de archivo inválido, solo se permiten archivos .xls o xlsx" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/common.py:0 -#, python-format -msgid "Invalid style type %s" -msgstr "Tipo de estilo inválido %s" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/common.py:0 -#, python-format -msgid "Invalid value {} for style type {}" -msgstr "Valor inválido {} para el tipo de estilo {}" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_export.py:0 -#, python-format -msgid "" -"Key Error\n" -"%s" -msgstr "" -"Key Error\n" -"%s" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard____last_update -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard____last_update -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report____last_update -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard____last_update -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_export____last_update -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_import____last_update -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report____last_update -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_styles____last_update -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template____last_update -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export____last_update -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import____last_update -msgid "Last Modified on" -msgstr "Última modificación en" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__write_uid -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__write_uid -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__write_uid -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__write_uid -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__write_uid -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__write_uid -msgid "Last Updated by" -msgstr "Última actualización realizada por" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__write_date -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__write_date -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__write_date -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__write_date -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__write_date -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__write_date -msgid "Last Updated on" -msgstr "Última actualización el" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__gname -msgid "" -"Multiple template of same model, can belong to same group,\n" -"result in multiple template selection" -msgstr "" -"Múltiples plantillas del mismo modelo, pueden pertenecer al mismo grupo,\n" -"resultando en selección de múltiples plantillas" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__no_delete -msgid "No Delete" -msgstr "No Eliminar" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_import.py:0 -#, python-format -msgid "No data_dict['__IMPORT__'] in template %s" -msgstr "No hay data_dict['__IMPORT__'] in la plantilla %s" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_template.py:0 -#, python-format -msgid "No file content!" -msgstr "¡Sin contenido de archivo!" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_report.py:0 -#: code:addons/excel_import_export/wizard/export_xlsx_wizard.py:0 -#, python-format -msgid "No file in %s" -msgstr "Sin archivo en %s" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_report.py:0 -#: code:addons/excel_import_export/wizard/export_xlsx_wizard.py:0 -#: code:addons/excel_import_export/wizard/import_xlsx_wizard.py:0 -#, python-format -msgid "No template found" -msgstr "No se encontró una plantilla" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_export.py:0 -#, python-format -msgid "Not enough worksheets" -msgstr "No hay suficientes hojas de trabajo" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/ir_report.py:0 -#, python-format -msgid "Only one id is allowed for excel_import_export" -msgstr "Solo un id es permitido para excel_import_export" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__redirect_action -msgid "Optional action, redirection after finish import operation" -msgstr "" -"Acción opcional, redirección despues de finalizar la operación de importación" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__csv_extension -msgid "Optional for CSV, default is .csv" -msgstr "Opcional para CSV, de manera predeterminada es .csv" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__csv_delimiter -msgid "Optional for CSV, default is comma." -msgstr "Opcional para CSV, de manera predetermina es coma." - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__csv_quote -msgid "Optional for CSV, default is full quoting." -msgstr "Opción para CSV, de manera predeterminada es cita completa (\")." - -#. module: excel_import_export -#: code:addons/excel_import_export/wizard/import_xlsx_wizard.py:0 -#, python-format -msgid "Please select Excel file to import" -msgstr "Por favor, seleciona un archivo Excel para importar" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/common.py:0 -#: code:addons/excel_import_export/models/common.py:0 -#, python-format -msgid "Position %s is not valid" -msgstr "La posición %s no es válida" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__post_import_hook -msgid "Post Import Function Hook" -msgstr "Función de Post Importación" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Post Import Hook" -msgstr "Hook de Post Importación" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_import.py:0 -#, python-format -msgid "" -"Post import operation error\n" -"%s" -msgstr "" -"Error de operación de post importación\n" -"%s" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_export.py:0 -#, python-format -msgid "Records in %s exceed max records allowed" -msgstr "Registros en %s exceden los máximos registros permitidos" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Remove Export Action" -msgstr "Eliminar Acción de Exportación" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Remove Import Action" -msgstr "Eliminar Acción de Importación" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Remove Report Menu" -msgstr "Eliminar Menú de Reporte" - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_ir_actions_report -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__report_action_id -msgid "Report Action" -msgstr "Acción de Reporte" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__report_menu_id -msgid "Report Menu" -msgstr "Menú de Reporte" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__result_model_id -msgid "Report Model" -msgstr "Modelo del Reporte" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report__report_type -msgid "Report Type" -msgstr "Tipo de Reporte" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__res_model -msgid "Res Model" -msgstr "Modelo Res" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__res_id -msgid "Resource ID" -msgstr "ID del Recurso" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__res_ids -msgid "Resource IDs" -msgstr "IDs de los Recursos" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__res_model -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__res_model -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__res_model -msgid "Resource Model" -msgstr "Modelo del Recurso" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__result_field -msgid "Result Field" -msgstr "Campo Resultado" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__redirect_action -msgid "Return Action" -msgstr "Acción de Retorno" - -#. module: excel_import_export -#: model:ir.model.fields.selection,name:excel_import_export.selection__xlsx_template_export__section_type__row -#: model:ir.model.fields.selection,name:excel_import_export.selection__xlsx_template_import__section_type__row -msgid "Row" -msgstr "Fila" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__row_field -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__row_field -msgid "Row Field" -msgstr "Campo de Fila" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__datas -msgid "Sample" -msgstr "Ejemplo" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -msgid "Sample Input Instruction as Dictionary" -msgstr "Ejemplo de Instrucción de Entrada como Diccionario" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__domain -msgid "Search Criterias" -msgstr "Criterios de Búsqueda" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__section_type -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__section_type -msgid "Section Type" -msgstr "Tipo de Sección" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__sequence -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__sequence -msgid "Sequence" -msgstr "Secuencia" - -#. module: excel_import_export -#: code:addons/excel_import_export/wizard/import_xlsx_wizard.py:0 -#, python-format -msgid "Set Templates" -msgstr "Configurar Plantillas" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__sheet -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__sheet -#: model:ir.model.fields.selection,name:excel_import_export.selection__xlsx_template_export__section_type__sheet -#: model:ir.model.fields.selection,name:excel_import_export.selection__xlsx_template_import__section_type__sheet -msgid "Sheet" -msgstr "Hoja" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_export.py:0 -#: code:addons/excel_import_export/models/xlsx_import.py:0 -#, python-format -msgid "Sheet %s not found" -msgstr "Hoja %s no encontrada" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__show_instruction -msgid "Show Output" -msgstr "Mostrar Salida" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__smart_search -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__smart_search -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report__smart_search -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__smart_search -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_export__smart_search -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_import__smart_search -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__smart_search -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_styles__smart_search -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__smart_search -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__smart_search -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__smart_search -msgid "Smart Search" -msgstr "Búsqueda Inteligente" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__state -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__state -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__state -msgid "State" -msgstr "Estado" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__style_cond -msgid "Style w/Cond." -msgstr "Estilo c/Cond." - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__is_sum -msgid "Sum" -msgstr "Sum" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__template_id -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__template_id -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__template_id -msgid "Template" -msgstr "Plantilla" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/ir_report.py:0 -#, python-format -msgid "Template %s on model %s is not unique!" -msgstr "¡La Plantilla %s en el modelo %s no es única!" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__fname -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__name -msgid "Template Name" -msgstr "Nombre de Plantilla" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/common.py:0 -#, python-format -msgid "" -"Template with CSV Quoting = False, data must not contain the same char as " -"delimiter -> \"%s\"" -msgstr "" -"Plantilla con Cita CSV = False, los datos no deben contener el mismo " -"carácter como delimitador -> \"%s\"" - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_export.py:0 -#: code:addons/excel_import_export/models/xlsx_import.py:0 -#, python-format -msgid "Template's model mismatch" -msgstr "Inconsistencia del modelo de plantilla" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__res_model -msgid "The database object this attachment will be attached to." -msgstr "El objeto de la base de datos al que se adjuntará este archivo adjunto." - -#. module: excel_import_export -#: code:addons/excel_import_export/models/xlsx_template.py:0 -#, python-format -msgid "The selected redirect action is not for model %s" -msgstr "La acción de redirección selecciona no está para el modelo %s" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_ir_actions_report__report_type -msgid "" -"The type of the report that will be rendered, each one having its own " -"rendering method. HTML means the report will be opened directly in your " -"browser PDF means the report will be rendered using Wkhtmltopdf and " -"downloaded by the user." -msgstr "" -"El tipo de repote que se va a renderizar, cada uno con su propio método de " -"renderizado. HTML significa que el informe se abrirá directamente en su " -"navegador. PDF significa que el informe se procesará mediante Wkhtmltopdf y " -"el usuario lo descargará." - -#. module: excel_import_export -#: code:addons/excel_import_export/wizard/import_xlsx_wizard.py:0 -#, python-format -msgid "This import action is not usable in this document context" -msgstr "" -"Esta acción de importación no puede usarse en este contexto de documento" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__show_instruction -msgid "" -"This is the computed instruction based on tab Import/Export,\n" -"to be used by xlsx import/export engine" -msgstr "" -"Esta es la instrucción computada basada en la pestaña Importar/Exportar\n" -"para ser usada por el motor xlsx de importar/exportar" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__input_instruction -msgid "This is used to construct instruction in tab Import/Export" -msgstr "" -"Este es usada para construir la instrucción en la pestaña Importar/Exportar" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__use_report_wizard -msgid "Use common report wizard model, instead of create specific model" -msgstr "" -"Utilizar un asistente de modelo de reporte común, en lugar de crear un " -"modelo específico" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_export_xlsx_wizard__user_can_see_changeset -#: model:ir.model.fields,field_description:excel_import_export.field_import_xlsx_wizard__user_can_see_changeset -#: model:ir.model.fields,field_description:excel_import_export.field_ir_actions_report__user_can_see_changeset -#: model:ir.model.fields,field_description:excel_import_export.field_report_xlsx_wizard__user_can_see_changeset -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_export__user_can_see_changeset -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_import__user_can_see_changeset -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_report__user_can_see_changeset -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_styles__user_can_see_changeset -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template__user_can_see_changeset -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__user_can_see_changeset -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__user_can_see_changeset -msgid "User Can See Changeset" -msgstr "El usuario puede ver el Conjunto de Cambios" - -#. module: excel_import_export -#. openerp-web -#: code:addons/excel_import_export/static/src/js/report/action_manager_report.js:0 -#, python-format -msgid "Warning" -msgstr "Advertencia" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_xlsx_template__result_model_id -msgid "When use commone wizard, choose the result model" -msgstr "Cuando utilice un asistente común, elija el modelo resultado" - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_export_xlsx_wizard -msgid "Wizard for exporting excel" -msgstr "Asistente para exportar excel" - -#. module: excel_import_export -#: model:ir.model,name:excel_import_export.model_import_xlsx_wizard -msgid "Wizard for importing excel" -msgstr "Asistente para importar excel" - -#. module: excel_import_export -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_export__template_id -#: model:ir.model.fields,field_description:excel_import_export.field_xlsx_template_import__template_id -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form -#: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_tree -msgid "XLSX Template" -msgstr "Plantilla de XLSX" - -#. module: excel_import_export -#: model:ir.actions.act_window,name:excel_import_export.action_xlsx_template -#: model:ir.ui.menu,name:excel_import_export.menu_xlsx_template -msgid "XLSX Templates" -msgstr "Plantillas de XLSX" - -#. module: excel_import_export -#: model:ir.model.fields,help:excel_import_export.field_import_xlsx_wizard__attachment_ids -msgid "You can select multiple files to import." -msgstr "Puede seleccionar múltiples archivos para importar." - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.export_xlsx_wizard -#: model_terms:ir.ui.view,arch_db:excel_import_export.import_xlsx_wizard -#: model_terms:ir.ui.view,arch_db:excel_import_export.xlsx_report_view -msgid "or" -msgstr "o" - -#. module: excel_import_export -#: model_terms:ir.ui.view,arch_db:excel_import_export.import_xlsx_wizard -msgid "⇒ Get Sample Import Template" -msgstr "⇒ Obtener Ejemplo de Plantilla de Importación" diff --git a/excel_import_export/i18n/it.po b/excel_import_export/i18n/it.po index cc03eb748..6a3d3b29c 100644 --- a/excel_import_export/i18n/it.po +++ b/excel_import_export/i18n/it.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2022-05-13 10:05+0000\n" -"Last-Translator: Alessandro Fiorino \n" +"PO-Revision-Date: 2022-03-16 13:17+0000\n" +"Last-Translator: Francesco Foresti \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" @@ -242,7 +242,7 @@ msgstr "date, datetime, time: alcune utili classi python" #. module: excel_import_export #: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form msgid "model: active model, e.g., self.env['my.model']" -msgstr "model: modello attivo, ad es. self.env['my.model']" +msgstr "modello: modello attivo, ad es. self.env['my.model']" #. module: excel_import_export #: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form @@ -250,18 +250,18 @@ msgid "" "object: record object or line object depends on Row " "Field" msgstr "" -"object: oggetto del record o oggetto della riga che dipende dal " -"Campo Riga" +"oggetto: oggetto del record o oggetto della riga che dipende " +"dal Campo Riga" #. module: excel_import_export #: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form msgid "value: value from Cell" -msgstr "value: valore dalla Cella" +msgstr "valore: valore dalla Cella" #. module: excel_import_export #: model_terms:ir.ui.view,arch_db:excel_import_export.view_xlsx_template_form msgid "value: value from Field" -msgstr "value: valore dal Campo" +msgstr "valore: valore dal Campo" #. module: excel_import_export #. openerp-web diff --git a/excel_import_export/models/common.py b/excel_import_export/models/common.py index dbf01ad37..0c8d9535b 100644 --- a/excel_import_export/models/common.py +++ b/excel_import_export/models/common.py @@ -105,10 +105,11 @@ def fill_cell_style(field, field_style, styles): for f in field_styles: (key, value) = f.split("=") if key not in styles.keys(): - raise ValidationError(_("Invalid style type %s" % key)) + raise ValidationError(_("Invalid style type %s") % key) if value.lower() not in styles[key].keys(): raise ValidationError( - _("Invalid value {} for style type {}".format(value, key)) + _("Invalid value %(value)s for style type %(key)s") + % {"value": value, "key": key} ) cell_style = styles[key][value] if key == "font": @@ -177,8 +178,8 @@ def xlrd_get_sheet_by_name(book, name): sheet = book.sheet_by_index(idx) if sheet.name == name: return sheet - except IndexError: - raise ValidationError(_("'%s' sheet not found") % (name,)) + except IndexError as exc: + raise ValidationError(_("'%s' sheet not found") % (name,)) from exc def isfloat(input_val): diff --git a/excel_import_export/models/ir_report.py b/excel_import_export/models/ir_report.py index 80137dcd1..211d00422 100644 --- a/excel_import_export/models/ir_report.py +++ b/excel_import_export/models/ir_report.py @@ -13,7 +13,7 @@ class ReportAction(models.Model): ) @api.model - def render_excel(self, docids, data): + def _render_excel(self, docids, data): if len(docids) != 1: raise UserError(_("Only one id is allowed for excel_import_export")) xlsx_template = self.env["xlsx.template"].search( @@ -21,10 +21,8 @@ class ReportAction(models.Model): ) if not xlsx_template or len(xlsx_template) != 1: raise UserError( - _( - "Template %s on model %s is not unique!" - % (self.report_name, self.model) - ) + _("Template %(report_name)s on model %(model)s is not unique!") + % {"report_name": self.report_name, "model": self.model} ) Export = self.env["xlsx.export"] return Export.export_xlsx(xlsx_template, self.model, docids[0]) @@ -40,5 +38,4 @@ class ReportAction(models.Model): ("report_type", "in", qwebtypes), ("report_name", "=", report_name), ] - context = self.env["res.users"].context_get() - return report_obj.with_context(context).search(conditions, limit=1) + return report_obj.search(conditions, limit=1) diff --git a/excel_import_export/models/xlsx_export.py b/excel_import_export/models/xlsx_export.py index c77c8a8da..cdb024895 100644 --- a/excel_import_export/models/xlsx_export.py +++ b/excel_import_export/models/xlsx_export.py @@ -129,7 +129,7 @@ class XLSXExport(models.AbstractModel): self._fill_head(ws, st, record) self._fill_lines(ws, st, record) except KeyError as e: - raise ValidationError(_("Key Error\n%s") % e) + raise ValidationError(_("Key Error\n%s") % e) from e except IllegalCharacterError as e: raise ValidationError( _( @@ -137,9 +137,11 @@ class XLSXExport(models.AbstractModel): "Some exporting data contain special character\n%s" ) % e - ) + ) from e except Exception as e: - raise ValidationError(_("Error filling data into Excel sheets\n%s") % e) + raise ValidationError( + _("Error filling data into Excel sheets\n%s") % e + ) from e @api.model def _get_field_data(self, _field, _line): @@ -235,7 +237,7 @@ class XLSXExport(models.AbstractModel): out_file = template.datas return (out_file, out_name) # Prepare temp file (from now, only xlsx file works for openpyxl) - decoded_data = base64.decodestring(template.datas) + decoded_data = base64.decodebytes(template.datas) ConfParam = self.env["ir.config_parameter"].sudo() ptemp = ConfParam.get_param("path_temp_file") or "/tmp" stamp = dt.utcnow().strftime("%H%M%S%f")[:-3] diff --git a/excel_import_export/models/xlsx_import.py b/excel_import_export/models/xlsx_import.py index a6fa65e8c..c5cb0c923 100644 --- a/excel_import_export/models/xlsx_import.py +++ b/excel_import_export/models/xlsx_import.py @@ -50,7 +50,7 @@ class XLSXImport(models.AbstractModel): ModelData.create( { "name": "{}_{}".format(record._table, record.id), - "module": "excel_import_export", + "module": "__excel_import_export__", "model": record._name, "res_id": record.id, } @@ -68,10 +68,10 @@ class XLSXImport(models.AbstractModel): record = record[f] else: return field_type - except Exception: + except Exception as exc: raise ValidationError( _("Invalid declaration, %s has no valid field type") % field - ) + ) from exc @api.model def _delete_record_data(self, record, data_dict): @@ -93,7 +93,7 @@ class XLSXImport(models.AbstractModel): new_fv = data_dict[s].pop(f) data_dict[s][f.replace("_NODEL_", "")] = new_fv except Exception as e: - raise ValidationError(_("Error deleting data\n%s") % e) + raise ValidationError(_("Error deleting data\n%s") % e) from e @api.model def _get_end_row(self, st, worksheet, line_field): @@ -161,12 +161,11 @@ class XLSXImport(models.AbstractModel): rc, key_eval_cond = co.get_field_condition(rc) field, val_eval_cond = co.get_field_condition(field) field_type = self._get_field_type(model, field) - value = False try: row, col = co.pos2idx(rc) value = co._get_cell_value(st.cell(row, col), field_type=field_type) except Exception: - pass + value = False eval_context = self.get_eval_context(model=model, value=value) if key_eval_cond: value = str(safe_eval(key_eval_cond, eval_context)) @@ -206,7 +205,7 @@ class XLSXImport(models.AbstractModel): xml_id = ( record and self.get_external_id(record) - or "{}.{}".format("xls", uuid.uuid4()) + or "{}.{}".format("__excel_import_export__", uuid.uuid4()) ) out_st.write(0, 0, "id") # id and xml_id on first column out_st.write(1, 0, xml_id) @@ -228,11 +227,11 @@ class XLSXImport(models.AbstractModel): "file_name": "temp.xls", } ) - errors = imp.do( + errors = imp.execute_import( header_fields, header_fields, { - "headers": True, + "has_headers": True, "advanced": True, "keep_matches": False, "encoding": "", @@ -254,10 +253,10 @@ class XLSXImport(models.AbstractModel): message = ", ".join([x["message"] for x in messages]) raise ValidationError(message.encode("utf-8")) return self.env.ref(xml_id) - except xlrd.XLRDError: + except xlrd.XLRDError as exc: raise ValidationError( _("Invalid file style, only .xls or .xlsx file allowed") - ) + ) from exc except Exception as e: raise e @@ -272,7 +271,7 @@ class XLSXImport(models.AbstractModel): eval_context = {"object": record} safe_eval(code, eval_context) except Exception as e: - raise ValidationError(_("Post import operation error\n%s") % e) + raise ValidationError(_("Post import operation error\n%s") % e) from e @api.model def import_xlsx(self, import_file, template, res_model=False, res_id=False): diff --git a/excel_import_export/models/xlsx_template.py b/excel_import_export/models/xlsx_template.py index 8bf5dc588..ffddf148c 100644 --- a/excel_import_export/models/xlsx_template.py +++ b/excel_import_export/models/xlsx_template.py @@ -35,13 +35,12 @@ class XLSXTemplate(models.Model): help="Multiple template of same model, can belong to same group,\n" "result in multiple template selection", ) - description = fields.Char(string="Description") + description = fields.Char() input_instruction = fields.Text( string="Instruction (Input)", help="This is used to construct instruction in tab Import/Export", ) instruction = fields.Text( - string="Instruction", compute="_compute_output_instruction", help="Instruction on how to import/export, prepared by system.", ) @@ -538,18 +537,14 @@ class XLSXTemplateImport(models.Model): ondelete="cascade", readonly=True, ) - sequence = fields.Integer(string="Sequence", default=10) - sheet = fields.Char(string="Sheet") + sequence = fields.Integer(default=10) + sheet = fields.Char() section_type = fields.Selection( [("sheet", "Sheet"), ("head", "Head"), ("row", "Row"), ("data", "Data")], - string="Section Type", required=True, ) - row_field = fields.Char( - string="Row Field", help="If section type is row, this field is required" - ) + row_field = fields.Char(help="If section type is row, this field is required") no_delete = fields.Boolean( - string="No Delete", default=False, help="By default, all rows will be deleted before import.\n" "Select No Delete, otherwise", @@ -584,16 +579,13 @@ class XLSXTemplateExport(models.Model): ondelete="cascade", readonly=True, ) - sequence = fields.Integer(string="Sequence", default=10) - sheet = fields.Char(string="Sheet") + sequence = fields.Integer(default=10) + sheet = fields.Char() section_type = fields.Selection( [("sheet", "Sheet"), ("head", "Head"), ("row", "Row"), ("data", "Data")], - string="Section Type", required=True, ) - row_field = fields.Char( - string="Row Field", help="If section type is row, this field is required" - ) + row_field = fields.Char(help="If section type is row, this field is required") is_cont = fields.Boolean( string="Continue", default=False, help="Continue data rows after last data row" ) diff --git a/excel_import_export/static/src/js/report/action_manager_report.esm.js b/excel_import_export/static/src/js/report/action_manager_report.esm.js new file mode 100644 index 000000000..0b67e0262 --- /dev/null +++ b/excel_import_export/static/src/js/report/action_manager_report.esm.js @@ -0,0 +1,55 @@ +/** @odoo-module **/ + +import {download} from "@web/core/network/download"; +import {registry} from "@web/core/registry"; + +function getReportUrl({report_name, context, data}, env) { + // Rough copy of action_service.js _getReportUrl method. + let url = `/report/excel/${report_name}`; + const actionContext = context || {}; + if (data && JSON.stringify(data) !== "{}") { + const encodedOptions = encodeURIComponent(JSON.stringify(data)); + const encodedContext = encodeURIComponent(JSON.stringify(actionContext)); + return `${url}?options=${encodedOptions}&context=${encodedContext}`; + } + if (actionContext.active_ids) { + url += `/${actionContext.active_ids.join(",")}`; + } + const userContext = encodeURIComponent(JSON.stringify(env.services.user.context)); + return `${url}?context=${userContext}`; +} + +async function triggerDownload(action, {onClose}, env) { + // Rough copy of action_service.js _triggerDownload method. + env.services.ui.block(); + try { + await download({ + url: "/report/download", + data: { + data: JSON.stringify([getReportUrl(action, env), "excel"]), + context: JSON.stringify(env.services.user.context), + }, + }); + } finally { + env.services.ui.unblock(); + } + if (action.close_on_report_download) { + return env.services.action.doAction( + {type: "ir.actions.act_window_close"}, + {onClose} + ); + } + if (onClose) { + onClose(); + } +} + +registry + .category("ir.actions.report handlers") + .add("excel_handler", async function (action, options, env) { + if (action.report_type === "excel") { + await triggerDownload(action, options, env); + return true; + } + return false; + }); diff --git a/excel_import_export/static/src/js/report/action_manager_report.js b/excel_import_export/static/src/js/report/action_manager_report.js deleted file mode 100644 index fb283446f..000000000 --- a/excel_import_export/static/src/js/report/action_manager_report.js +++ /dev/null @@ -1,98 +0,0 @@ -// © 2017 Creu Blanca -// License AGPL-3.0 or later (https://www.gnuorg/licenses/agpl.html). -odoo.define("excel_import_export.report", function (require) { - "use strict"; - - var core = require("web.core"); - var ActionManager = require("web.ActionManager"); - var framework = require("web.framework"); - var session = require("web.session"); - var _t = core._t; - - ActionManager.include({ - _downloadReportExcel: function (url, actions) { - var self = this; - framework.blockUI(); - var type = "excel"; - var cloned_action = _.clone(actions); - var new_url = url; - - if ( - _.isUndefined(cloned_action.data) || - _.isNull(cloned_action.data) || - (_.isObject(cloned_action.data) && _.isEmpty(cloned_action.data)) - ) { - if (cloned_action.context.active_ids) { - new_url += "/" + cloned_action.context.active_ids.join(","); - } - } else { - new_url += - "?options=" + - encodeURIComponent(JSON.stringify(cloned_action.data)); - new_url += - "&context=" + - encodeURIComponent(JSON.stringify(cloned_action.context)); - } - - return new Promise(function (resolve, reject) { - var blocked = !session.get_file({ - url: new_url, - data: { - data: JSON.stringify([new_url, type]), - }, - success: resolve, - error: (error) => { - self.call("crash_manager", "rpc_error", error); - reject(); - }, - complete: framework.unblockUI, - }); - if (blocked) { - // AAB: this check should be done in get_file service directly, - // should not be the concern of the caller (and that way, get_file - // could return a deferred) - var message = _t( - "A popup window with your report was blocked. You " + - "may need to change your browser settings to allow " + - "popup windows for this page." - ); - this.do_warn(_t("Warning"), message, true); - } - }); - }, - - _triggerDownload: function (action, options, type) { - var self = this; - var reportUrls = this._makeReportUrls(action); - if (type === "excel") { - return this._downloadReportExcel(reportUrls[type], action).then( - function () { - if (action.close_on_report_download) { - var closeAction = {type: "ir.actions.act_window_close"}; - return self.doAction( - closeAction, - _.pick(options, "on_close") - ); - } - return options.on_close(); - } - ); - } - return this._super.apply(this, arguments); - }, - - _makeReportUrls: function (action) { - var reportUrls = this._super.apply(this, arguments); - reportUrls.excel = "/report/excel/" + action.report_name; - return reportUrls; - }, - - _executeReportAction: function (action, options) { - var self = this; - if (action.report_type === "excel") { - return self._triggerDownload(action, options, "excel"); - } - return this._super.apply(this, arguments); - }, - }); -}); diff --git a/excel_import_export/views/webclient_templates.xml b/excel_import_export/views/webclient_templates.xml deleted file mode 100644 index db11d018c..000000000 --- a/excel_import_export/views/webclient_templates.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - -