Este módulo permite importar / actualizar registros desde archivos usando el framework de conectores y la cola de trabajos.
Para ejecutar una importación necesita al menos:
- un backend, aloja la configuración global de la importación.
- un recordset, aloja la configuración de la importación para modelos y origen específicos
- un origen, proporciona los datos a importar
- un tipo de importación, describe qué modelos desea importar y cómo importarlos
Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.
auto_awesome Qué hace este módulo
Generado por IA a partir del código · Odoo 19.0Importa y actualiza registros de Odoo desde archivos CSV mediante sesiones de importación configurables. Configura backends, recordsets, tipos de importación y orígenes, y luego ejecuta las importaciones manualmente o mediante cron, con informes detallados y seguimiento de trabajos.
Este módulo añade un menú Importer donde puedes configurar y ejecutar importaciones de datos desde archivos CSV. Creas un Import Backend para contener la configuración global, luego Import Recordsets que definen qué importar y desde qué origen. Cada recordset usa un Import Type (con opciones YAML) para describir qué modelos importar y cómo, y un Import Source (archivo o ruta CSV) para proporcionar los datos.
Cuando ejecutas un recordset, lee el origen en fragmentos, crea registros de importación y los procesa a través del framework de conectores. Las importaciones pueden ejecutarse inmediatamente en modo debug o encolarse como jobs. El recordset muestra un informe resumen con recuentos de registros creados, actualizados, omitidos y con errores, y puedes descargar un informe CSV completo que añade columnas de estado a tu archivo original.
Las reglas de negocio incluyen: impedir la eliminación de backends o recordsets mientras hay jobs en ejecución; un botón para forzar la finalización de jobs; anulación opcional de registros existentes; y un cron que puede ejecutar todos los recordsets o crear uno nuevo a partir de un recordset maestro cada vez. Otro cron limpia recordsets antiguos, conservando solo los últimos N según lo configurado.
Toca modelos como import.backend, import.recordset, import.record, import.type, import.source.csv, y se integra con queue.job para el procesamiento asíncrono.
Lo necesitan otros módulos
Menús que añade
Modelos y campos (22)
- cron.mixin · modelo nuevocron_id (Related cron), cron_mode (Cron mode?), cron_start_date (Start date), cron_interval_type (Interval type), cron_interval_number (Interval number)
- import.type · modelo nuevokey, name, options, use_job, description
- reporter.csv · modelo nuevo
- import.record · modelo nuevodate (Import date), backend_id (Backend), recordset_id (Recordset), jsondata_file
- import.source · modelo nuevoname, chunk_size (Chunks Size), config_summary
- import.backend · modelo nuevoname, notes, version, debug_mode (Debug mode?), job_running, recordset_ids (Record Sets), cron_cleanup_keep, cron_master_recordset_id (Master recordset)
- reporter.mixin · modelo nuevo
- importer.record · modelo nuevo
- import.recordset · modelo nuevoname, notes, sequence, docs_html (Docs), backend_id (Import Backend), record_ids (Records), create_date, last_run_on, report_data, report_file, report_html (Report summary), shared_data, import_type_id (Import type), full_report_url, report_filename, jobs_global_state, override_existing (Override existing items), server_action_ids (Executre server actions), importable_model_ids, server_action_trigger_on, server_action_importable_model_ids
- import.source.csv · modelo nuevocsv_file (CSV file), csv_path (CSV path), csv_encoding (CSV Encoding), csv_filename (CSV filename), csv_filesize (CSV filesize), csv_delimiter (CSV delimiter), csv_quotechar (CSV quotechar), csv_rows_from_to (CSV use only a slice of the available lines. Format: $from:$to. NOTE: recommended only for debug/test purpose.), example_file_url (Download example file), example_file_ext_id
- job.related.mixin · modelo nuevojob_id (Job), job_state
- importer.recordset · modelo nuevo
- importer.base.mapper · modelo nuevo
- importer.mapper.auto · modelo nuevo
- importer.base.component · modelo nuevo
- importer.mapper.dynamic · modelo nuevo
- importer.record.csv.std · modelo nuevo
- recordset.event.listener · modelo nuevo
- importer.tracking.handler · modelo nuevo
- importer.odoorecord.handler · modelo nuevo
- import.source.consumer.mixin · modelo nuevosource_id (Source ID), source_model (Source type), source_ref_id (Source), source_config_summary
- importer.odoorecord.handler.csv.std · modelo nuevo
Texto generado por IA (DeepSeek) al leer el código de la versión 19.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. El módulo es muy grande y solo se ha leído una parte del código. Ver el código en GitHub
Disponibilidad por versión
Revisado: 2026-11-03Estado de confirmación: 8 confirmadas, 1 sin información de 9 versiones.
Fuentes · Odoo 15.0
Confirmado el 2026-11-03 en la rama 15.0 de OCA/connector-interfaces.
terminal Instalación y uso
Documentación de OCA · Odoo 19.0Configuración
Fuente · Odoo 19.0Tipo de importación
Los tipos de importación son la configuración principal de la importación. Describen qué modelos quieres importar y cómo importarlos.
Ejemplo de configuración:
Import Product - all in one product_product_all_in_one
- model: product.product options: importer: odoo_unique_key: barcode mapper: name: product.product.mapper
- model: res.partner options: importer: odoo_unique_key: name override_existing: false mapper: name: importer.mapper.dynamic source_key_prefix: supplier. source_key_whitelist: supplier.name default_keys: supplier_rank: 1
- model: product.supplierinfo options: importer: odoo_unique_key: name mapper: name: product.supplierinfo.mapper source_key_prefix: supplier.
En este ejemplo tenemos 3 modelos para importar uno tras otro usando el mismo archivo de origen:
- product.product
- res.partner
- product.supplierinfo
La importación se ejecutará en el orden de la configuración: primero product.product, luego res.partner y finalmente product.supplierinfo. Para cada modelo tenemos una configuración que describe cómo importar los datos. Con la clave options podemos definir la configuración de la importación para cada componente: importer, mapper, record_handler, tracking_handler.
Hay 4 componentes principales en la configuración de importación:
- importer
- mapper
- record_handler
- tracking_handler
Cada uno de ellos es responsable de una parte específica de la importación.
El importer
importer es el componente principal que importará los datos. Utilizará el mapper para mapear los datos desde el origen al modelo de destino. Si no se define ningún name el importer utilizará el importer predeterminado para el modelo, que es capaz de importar cualquier modelo. La mayoría de las veces no necesitas un importer específico.
Como el importer es el componente principal de la importación, si quieres personalizarlo tendrás que declararlo en un nivel superior, junto a la clave options:
- model: product.product importer: name: product.product.importer options: mapper: name: product.product.mapper
El importer acepta las siguientes opciones:
odoo_unique_key: el campo que se utilizará para encontrar el registro en Odoo. Si se encuentra el registro se actualizará, de lo contrario se creará. > NOTA: el valor de la columna declarada comoodoo_unique_keyse > tratará como xid solo si el nombre de la columna esìdo si > empieza porxid::.break_on_error: si se establece en True la importación se detendrá si ocurre un error. Por defecto es False.override_existing: si se establece en True se actualizarán los registros existentes. Por defecto es True.translation_key_sep: el separador utilizado para dividir la clave de traducción. Por defecto es:. Consulta más abajo para obtener información sobre las claves de traducción.translation_use_regional_lang: si se establece en True el importer utilizará el idioma regional, por ejemplo: fr_CH vs fr.ctx: un diccionario de valores para inyectar en el contexto de la importación.write_only: si se establece en True el importer no creará nuevos registros, solo actualizará los existentes. Por defecto es False.
El mapper
El mapper es el componente que mapeará los datos desde el origen al modelo de destino.
El mapper más flexible es el importer.mapper.dynamic que mapeará los datos basándose en la introspección del modelo y en algunas opciones que puedes definir. El mapper dinámico acepta las siguientes opciones:
name: el nombre del mapper a utilizar. Si no se define ningún nombre se utilizará el mapper predeterminado para el modelo.source_key_prefix: un prefijo que se añadirá a la clave de origen. Esto es útil cuando quieres mapear la misma clave de origen a diferentes campos de destino.source_key_whitelist: una lista de claves de origen a importar. Si no se define se importarán todas las claves.source_key_blacklist: una lista de claves de origen a excluir de la importación.source_key_rename: un diccionario de claves de origen a renombrar. La clave es la clave de origen y el valor es la nueva clave.default_keys: un diccionario de valores predeterminados a establecer en el registro de destino. La clave es el nombre del campo y el valor es el valor predeterminado.translation_keys: una lista de claves que se utilizarán para traducir los datos. Consulta más abajo para obtener información sobre las claves de traducción.required_keys: una lista de claves que son obligatorias. Si falta una de las claves se omitirá el registro. Consulta la documentación del mapper para ver opciones avanzadas.
Considerando el ejemplo anterior:
- model: product.product options: mapper: name: importer.mapper.dynamic source_key_prefix: supplier. source_key_whitelist: supplier.name default_keys: supplier_rank: 1
El mapper:
- importará solo las claves que empiecen por
supplier.ignorando el resto - importará solo la clave
supplier.name - establecerá el valor predeterminado de
supplier_ranken 1
El record_handler
El record handler es el componente que gestionará la creación o actualización del registro en Odoo. Este componente es responsable de:
- encontrar el registro en Odoo
- crear el registro si no se encuentra
- actualizar el registro si se encuentra
- gestionar las traducciones
Si no se define ningún name el importer utilizará el record handler predeterminado para el modelo, que es capaz de gestionar cualquier modelo. Si quieres personalizar el record handler tendrás que declararlo en un nivel superior, junto a la clave options:
- model: product.product options: record_handler: name: product.product.record_handler
Para encontrar el registro en Odoo el record handler utilizará el odoo_unique_key si se define en el importer, de lo contrario recurrirá al dominio de coincidencia. Consulta más abajo.
El record handler acepta las siguientes opciones:
name: el nombre del record handler a utilizar. Si no se define ningún nombre se utilizará el record handler predeterminado para el modelo.match_domain: un dominio para hacer coincidir el registro en Odoo. Cuando el importer no proporciona ningún odoo_unique_key debes proporcionar un match_domain. > Esta clave acepta un snippet que devuelve un dominio. El snippet se > evaluará en el contexto de la importación y recibirá: > > -orig_values: los valores del origen > > -values: valores calculados por el mapper para el registro > > -env> > -user> > -datetime> > -dateutil> > -time> > -ref_id: una función para obtener un ID de registro a partir de una referencia > > -ref: una función para obtener un registro a partir de una referencia > > > Ejemplo: > > > > match_domain: | > > [('name', '=', values.get('name'))]must_generate_xmlid: si se establece en True el importer generará un XML ID para el registro. Por defecto es True si la clave única es un xmlid.skip_fields_unchanged: si se establece en True el importer omitirá los campos que no hayan cambiado. Por defecto es False.
Traducciones
El importer puede traducir los datos utilizando las claves de traducción. Las claves de traducción son una lista de claves (columna) que se gestionarán como traducibles. Siempre que se encuentre una clave en las claves de traducción el importer buscará una columna con el mismo nombre sufijado por el código de idioma (por ejemplo: name:fr_CH). Si se encuentra la columna el importer traducirá los datos utilizando el código de idioma como contexto.
Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación, Uso.
Las instrucciones de instalación, el paquete de distribución, las dependencias y los pasos de configuración no se muestran porque todavía no se han verificado en la documentación del módulo para ninguna versión.
Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.