sale.order: campos, relaciones y API
El modelo sale.order («Pedido de venta») es un modelo persistente declarado por el módulo Ventas y ampliado por 36 módulos más. Expone 188 campos, 154 de ellos declarados directamente en el modelo; 35 campos de otros modelos apuntan a él. A continuación encontrará cada campo con su nombre técnico, tipo, etiqueta en español y relaciones, y un ejemplo de llamada a la API JSON-2 de Odoo 20.
Ficha de identidad
- Nombre técnico
sale.order- Etiqueta
- Pedido de venta
- Tipo
- Persistente (models.Model)
- Tabla SQL
sale_order- Módulo de origen
- Ventas (
sale) - Ampliado por
- sale_management, sale_project, crm_sale_project, delivery, event_sale, event_booth_sale, sale_crm, mass_mailing_sale, sale_stock, stock_delivery, repair, sale_purchase, sale_purchase_stock, stock_dropshipping, partnership, pos_sale, sale_margin, pos_sale_stock, sale_mrp, sale_expense, sale_edi_ubl, sale_gelato, sale_loyalty, sale_loyalty_delivery, sale_pdf_quote_builder, sale_product_matrix, sale_timesheet, website_sale, website_sale_slides, website_event_booth_sale, website_event_sale, website_sale_stock, website_sale_collect, website_sale_gelato, website_sale_loyalty, website_sale_mrp
- Orden por defecto (_order)
date_order desc, id desc
Campos del modelo
154 campos propios, 29 heredados de mixins y 5 campos automáticos del ORM. Haga clic en un nombre para obtener el enlace directo al campo.
188 de 188 campos mostrados
| Nombre técnico | Etiqueta | Tipo | Detalles |
|---|---|---|---|
| amount_delivery | Gastos de envío Impuestos incluidos o excluidos en función de la configuración del sitio web. | monetary | calculado añadido por Comercio electrónico ( |
| amount_invoiced | Ya facturado | monetary | calculado |
| amount_paid | Importe de las transacciones de pago La suma de las transacciones realizadas con el formulario del método de pago en línea que están en estado "hecho" o "autorizado" y vinculadas a este pedido. | float | calculado |
| amount_tax | Impuestos | monetary | calculado, almacenado |
| amount_to_invoice | Saldo no facturado | monetary | calculado |
| amount_total | Total | monetary | calculado, almacenado |
| amount_unpaid | Amount Remaining Amount left to pay to avoid double payment or double invoicing. | monetary | calculado, almacenado |
| amount_untaxed | Importe base | monetary | calculado, almacenado |
| analytic_account_id | Cuenta analítica | many2one | |
| applied_coupon_ids | Cupones aplicados manualmente | many2many | añadido por Sale Loyalty ( |
| assigned_grade_id | Nivel asignado | many2one | calculado añadido por Partnership / Membership ( |
| assigned_website_id | Sitio web | many2one→ website | calculado, almacenado añadido por Comercio electrónico ( |
| attendee_count | Número de asistentes | integer | calculado añadido por Events Sales ( |
| authorized_transaction_ids | Transacciones autorizadas | many2many | calculado |
| available_quotation_document_ids | Documentos de presupuesto disponibles | many2many | calculado añadido por Sales PDF Quotation Builder ( |
| campaign_id | Campaña | many2one | |
| carrier_id | Método de envío Complete este campo si facturará el envío basado en el albarán de la preparación de pedidos. | many2one | añadido por Delivery Costs ( |
| cart_quantity | Cantidad en la cesta | integer | calculado añadido por Comercio electrónico ( |
| cart_recovery_email_sent | Correo electrónico de recuperación de cesta ya enviado | boolean | añadido por Comercio electrónico ( |
| client_order_ref | Referencia del cliente | char | |
| closed_task_count | Closed Task Count | integer | calculado añadido por Sales - Project ( |
| code_enabled_rule_ids | Reglas activadas manualmente | many2many | añadido por Sale Loyalty ( |
| commitment_date | Entrega prometida Es la fecha de entrega prometida al cliente. Si se establece, la orden de entrega se programará en función de esta fecha en lugar de los plazos de entrega del producto. | datetime | |
| company_id | Compañía | many2one | obligatorio |
| company_price_include | Company Price Include | selection | related: |
| completed_task_percentage | Completed Task Percentage | float | calculado añadido por Sales - Project ( |
| country_code | Código del país | char | related: |
| coupon_point_ids | Punto de cupón | one2many | inverso: añadido por Sale Loyalty ( |
| create_date | Fecha de creación | datetime | solo lectura |
| currency_id | Moneda | many2one | calculado, almacenado |
| currency_rate | Tipo de cambio | float | calculado, almacenado |
| customizable_pdf_form_fields | Campos de formulario en PDF personalizables | json | añadido por Sales PDF Quotation Builder ( |
| date_order | Fecha del pedido Creation date of draft/sent orders, Confirmation date of confirmed orders. | datetime | obligatorio |
| delivery_count | Órdenes de entrega | integer | calculado añadido por Sales and Warehouse Management ( |
| delivery_date | Fecha de entrega | datetime | calculado |
| delivery_message | Mensaje de entrega | char | solo lectura añadido por Delivery Costs ( |
| delivery_set | Entrega establecida | boolean | calculado añadido por Delivery Costs ( |
| delivery_status | Estado de la entrega Blue: Not Delivered/Started Orange: Partially Delivered Green: Fully Delivered | selection | calculado, almacenado Valores: |
| delivery_type | Delivery Type | selection | related: añadido por Clic y recoger ( |
| disabled_auto_rewards | Recompensas automáticas deshabilitadas | many2many | añadido por Coupons, Promotions, Gift Card and Loyalty for eCommerce ( |
| document_tax_mode | Modo de impuestos del documento | selection | obligatoriocalculado, almacenado Valores: |
| dropship_picking_count | Número de dropshippings | integer | calculado añadido por Drop Shipping ( |
| duplicated_order_ids | Pedido duplicado | many2many | calculado |
| effective_date | Fecha efectiva Fecha de finalización de la primera orden de entrega. | datetime | calculado, almacenado añadido por Sales and Warehouse Management ( |
| event_booth_count | Número de estands | integer | calculado añadido por Events Booths Sales ( |
| event_booth_ids | Estands | one2many | inverso: añadido por Events Booths Sales ( |
| expected_date | Fecha prevista Fecha de entrega que puede prometer al cliente, en el caso de los productos de servicio, se calcula a partir del plazo mínimo de las líneas del pedido. En el caso de los envíos, se tendrá en cuenta la política de envíos del pedido para utilizar el plazo mínimo o máximo de las líneas del mismo. | datetime | calculado |
| expense_count | N.° de gastos | integer | calculado añadido por Sales Expense ( |
| expense_ids | Gastos | one2many | solo lectura inverso: añadido por Sales Expense ( |
| extra_total_fields | Campos adicionales del total | json | calculado |
| fiscal_position_id | Posición fiscal Las posiciones fiscales se utilizan para adaptar impuestos y cuentas para determinados clientes o pedidos de venta/facturas. El valor por defecto viene del cliente. | many2one | calculado, almacenado |
| gift_card_count | Número de tarjetas de regalo | integer | calculado añadido por Sale Loyalty ( |
| grid | Almacenamiento local de matriz Technical local storage of grid. If grid_update, will be loaded on the SO. If not, represents the matrix to open. | char | añadido por Sale Matrix ( |
| grid_product_tmpl_id | Plantilla de cuadrícula del producto | many2one | añadido por Sale Matrix ( |
| grid_update | Actualización de la cuadrícula | boolean | añadido por Sale Matrix ( |
| has_active_pricelist | Tiene una lista de precios activa | boolean | calculado |
| has_archived_products | Tiene productos archivados | boolean | calculado |
| has_authorized_transaction_ids | Tiene transacciones autorizadas | boolean | calculado |
| has_overages | Has Overages | boolean | calculado |
| incoterm | Incoterm Los términos de comercio internacional son una serie de condiciones comerciales usadas en las transacciones internacionales. | many2one | calculado, almacenado |
| incoterm_location | Ubicación del Incoterm | char | calculado, almacenado |
| invoice_count | Número de facturas | integer | calculado |
| invoice_ids | Facturas | many2many | calculado |
| invoice_overages | Invoice Overages | boolean | |
| invoice_status | Estado de la factura | selection | calculado, almacenado Valores: |
| invoicing_closed | Manually Closed For Invoicing If enabled, the order is considered fully invoiced regardless of lines. | boolean | |
| is_abandoned_cart | Cesta abandonada | boolean | calculado añadido por Comercio electrónico ( |
| is_all_service | Producto de servicio | boolean | calculado añadido por Delivery Costs ( |
| is_expired | Está vencido | boolean | calculado |
| is_linked_to_expense_with_attachment | Is Linked To Expense With Attachment | boolean | calculado añadido por Sales Expense ( |
| is_pdf_quote_builder_available | ¿Está disponible el creador de presupuestos en PDF? | boolean | calculado añadido por Sales PDF Quotation Builder ( |
| is_pickup_required | Is Pickup Required | boolean | related: añadido por Disponibilidad del producto ( |
| is_product_milestone | Is Product Milestone | boolean | calculado añadido por Sales - Project ( |
| is_rating_email_sent | Correo electrónico de valoración enviado | boolean | añadido por Comercio electrónico ( |
| is_unfulfilled | Unfulfilled Orders | boolean | |
| journal_id | Diario Si se establece, los pedidos de venta se facturarán en este diario. De lo contrario, se utilizará el diario de ventas con la secuencia más baja. | many2one | calculado, almacenado |
| json_popover | Datos JSON para el widget de ventana emergente | char | calculado añadido por Sales and Warehouse Management ( |
| late_availability | Disponibilidad tardía True si alguna operación de picking relacionada tiene disponibilidad tardía | boolean | calculado añadido por Sales and Warehouse Management ( |
| locked | Bloqueado No se pueden modificar los pedidos bloqueados. | boolean | |
| margin | Margen | monetary | calculado, almacenado añadido por Margins in Sales Orders ( |
| margin_percent | Margen (%) | float | calculado, almacenado añadido por Margins in Sales Orders ( |
| medium_id | Medio | many2one | |
| milestone_count | Milestone Count | integer | calculado añadido por Sales - Project ( |
| mrp_production_count | Número de órdenes de fabricación generadas | integer | calculado añadido por Sales and MRP Management ( |
| mrp_production_ids | Órdenes de fabricación vinculadas a este pedido de venta. | many2many | calculado añadido por Sales and MRP Management ( |
| name | Referencia del pedido | char | obligatorio |
| note | Términos y condiciones | html | calculado, almacenado |
| only_services | Solo servicios | boolean | calculado añadido por Comercio electrónico ( |
| opportunity_id | Oportunidad | many2one→ crm.lead | añadido por Opportunity to Quotation ( |
| order_line | Líneas del pedido | one2many | inverso: |
| origin | Documento de origen Referencia del documento que generó esta solicitud de pedido de venta | char | |
| partner_credit_warning | Advertencia de crédito del contacto | text | calculado |
| partner_id | Cliente | many2one | obligatorio |
| partner_invoice_id | Dirección de facturación | many2one | obligatoriocalculado, almacenado |
| partner_shipping_id | Dirección de entrega | many2one | obligatoriocalculado, almacenado |
| payment_term_id | Condiciones de pago | many2one | calculado, almacenado |
| pending_email_template_id | Plantilla de correo electrónico pendiente | many2one | solo lectura |
| picking_ids | Traslados | one2many | inverso: añadido por Sales and Warehouse Management ( |
| picking_policy | Política de envío Especifica si los artículos se entregan parcialmente o todos a la vez | selection | obligatorio Valores: añadido por Sales and Warehouse Management ( |
| pos_order_count | Nº de pedidos de TPV | integer | solo lecturacalculado añadido por POS - Sales ( |
| pos_order_line_ids | Líneas de pedido que se transfirieron al punto de venta | one2many | solo lectura inverso: añadido por POS - Sales ( |
| preferred_payment_method_line_id | Método de pago | many2one | calculado, almacenado |
| prepayment_amount | Importe de pago anticipado The amount that must be paid by the customer to confirm the order. | monetary | calculado |
| prepayment_percent | Prepayment The percentage of the amount that must be paid by the customer to confirm the order. | float | calculado, almacenado |
| pricelist_id | Lista de precios If you change the pricelist, the prices of all order lines will be updated accordingly. | many2one | calculado, almacenado |
| project_account_id | Cuenta del proyecto | many2one | related: añadido por Sales - Project ( |
| project_count | Number of Projects | integer | calculado añadido por Sales - Project ( |
| project_id | Proyecto Se creará una tarea para el proyecto al confirmar el pedido de venta. La distribución analítica de este proyecto también servirá como referencia para los nuevos artículos del pedido de venta. | many2one | añadido por Sales - Project ( |
| project_ids | Proyectos | many2many | calculado añadido por Sales - Project ( |
| project_required | Project Required | boolean | calculado añadido por Sales - Project ( |
| purchase_order_count | Número de pedidos de compra generadas | integer | calculado añadido por Sale Purchase ( |
| quotation_document_ids | Encabezados/pies de página | many2many | añadido por Sales PDF Quotation Builder ( |
| recompute_delivery_price | El coste de envío debería ser recalculado | boolean | añadido por Delivery Costs ( |
| reference | Ref. de pago La referencia de pago de este pedido de venta. | char | |
| repair_count | Órdenes de reparación | integer | calculado añadido por Reparaciones ( |
| repair_order_ids | Orden de reparación | one2many | inverso: añadido por Reparaciones ( |
| report_grids | Imprimir cuadrículas de variantes | boolean | añadido por Sale Matrix ( |
| require_signature | Firma en línea Solicite al cliente que firme en línea para confirmar el pedido. | boolean | calculado, almacenado |
| reward_amount | Importe de la recompensa | float | calculado añadido por Sale Loyalty ( |
| sale_order_template_id | Plantilla | many2one | añadido por Ventas ( |
| sale_warning_text | Advertencia de venta Advertencia interna para el contacto o los productos según lo establecido por el usuario. | text | calculado |
| shipping_weight | Peso del envío | float | calculado, almacenado añadido por Delivery Costs ( |
| show_create_project_button | Show Create Project Button | boolean | calculado añadido por Sales - Project ( |
| show_hours_recorded_button | Show Hours Recorded Button | boolean | calculado añadido por Sales Timesheet ( |
| show_json_popover | Preparación de stock retrasada | boolean | calculado añadido por Sales and Warehouse Management ( |
| show_project_button | Show Project Button | boolean | calculado añadido por Sales - Project ( |
| show_ship_button | Show Ship Button | boolean | calculado |
| show_sol_numbers | Show Sol Numbers | boolean | related: |
| signature | Firma | image | |
| signed_by | Firmada por | char | |
| signed_on | Firmado el | datetime | |
| source_id | Origen | many2one | |
| state | Estado | selection | solo lectura Valores: |
| stock_reference_ids | Referencias | many2many | añadido por Sales and Warehouse Management ( |
| tag_ids | Etiquetas | many2many→ crm.tag | |
| tasks_count | Tareas | integer | calculado añadido por Sales - Project ( |
| tasks_ids | Tasks associated with this sale | many2many | calculado añadido por Sales - Project ( |
| tax_calculation_rounding_method | Método de redondeo del cálculo de impuestos | selection | related: |
| tax_country_id | Impuesto del país | many2one | calculado |
| tax_totals | Total de impuestos | json | calculado |
| team_id | Equipo de ventas | many2one→ crm.team | calculado, almacenado |
| terms_type | Terms Type | selection | related: |
| timesheet_count | Timesheet activities | float | calculado añadido por Sales Timesheet ( |
| timesheet_encode_uom_id | Timesheet Encode Uom | many2one→ uom.uom | related: añadido por Sales Timesheet ( |
| timesheet_total_duration | Duración total de los partes de horas Duración total registrada, expresada en la codificación UdM, y redondeada a la unidad | integer | calculado añadido por Sales Timesheet ( |
| transaction_count | Número de transacciones | integer | calculado |
| transaction_ids | Transacciones | many2many | solo lectura |
| type_name | Nombre del tipo | char | calculado |
| user_id | Comercial | many2one | calculado, almacenado |
| validity_date | Vencimiento Validity of the quotation. After this date, you will no longer be able to sign and pay it. | date | calculado, almacenado |
| visible_project | Display project | boolean | solo lecturacalculado añadido por Sales - Project ( |
| warehouse_id | Almacén | many2one | calculado, almacenado añadido por Sales and Warehouse Management ( |
| website_id | eCommerce Website Sitio web mediante el cual se realizó este pedido para los pedidos de comercio electrónico. | many2one→ website | solo lectura añadido por Comercio electrónico ( |
| website_order_line | Líneas de pedido mostradas en el sitio web | one2many | calculado añadido por Comercio electrónico ( |
| access_token | Token de seguridad | char | heredado de portal.mixin |
| access_url | URL de acceso al portal URL del portal de cliente | char | calculado heredado de portal.mixin |
| access_warning | Advertencia de acceso | text | calculado heredado de portal.mixin |
| activity_calendar_event_id | Siguiente evento en el calendario de actividades. | many2one | calculado heredado de mail.activity.mixin |
| activity_date_deadline | Fecha límite de la siguiente actividad | date | solo lecturacalculado heredado de mail.activity.mixin |
| activity_exception_decoration | Decoración de Actividad de Excepción Tipo de actividad de excepción en el registro. | selection | calculado Valores: heredado de mail.activity.mixin |
| activity_exception_icon | Icono Icono para indicar una actividad de excepción. | char | calculado heredado de mail.activity.mixin |
| activity_ids | Actividades | one2many | inverso: heredado de mail.activity.mixin |
| activity_plans_ids | Planes de actividades | many2many | calculado heredado de mail.activity.mixin |
| activity_state | Estado de la actividad Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities. | selection | calculado Valores: heredado de mail.activity.mixin |
| activity_summary | Resumen de la siguiente actividad | char | related: heredado de mail.activity.mixin |
| activity_type_icon | Icono de tipo de actividad | char | related: heredado de mail.activity.mixin |
| activity_type_id | Tipo de la siguiente actividad | many2one | related: heredado de mail.activity.mixin |
| activity_user_id | Usuario responsable | many2one | solo lecturacalculado heredado de mail.activity.mixin |
| alerts | Alertas | json | heredado de website.checkout.alert.mixin |
| has_message | Tiene un mensaje | boolean | calculado heredado de mail.thread |
| message_attachment_count | Número de archivos adjuntos | integer | calculado heredado de mail.thread |
| message_follower_ids | Seguidores | one2many | inverso: heredado de mail.thread |
| message_has_error | Error de envío de mensaje Si está marcada, algunos mensajes tienen error de envío. | boolean | calculado heredado de mail.thread |
| message_has_error_counter | Número de errores Número de mensajes con error de envío | integer | calculado heredado de mail.thread |
| message_has_sms_error | Error de envío del SMS Si está marcada, algunos mensajes tienen error de envío. | boolean | calculado heredado de mail.thread |
| message_ids | Mensajes | one2many | inverso: heredado de mail.thread |
| message_is_follower | Es un seguidor | boolean | calculado heredado de mail.thread |
| message_needaction | Acción requerida Si está marcada, hay nuevos mensajes que requieren su atención. | boolean | calculado heredado de mail.thread |
| message_needaction_counter | Número de acciones Número de mensajes que requieren una acción | integer | calculado heredado de mail.thread |
| message_partner_ids | Seguidores (Contactos) | many2many | calculado heredado de mail.thread |
| my_activity_date_deadline | Fecha límite de mi actividad | date | solo lecturacalculado heredado de mail.activity.mixin |
| rating_ids | Calificaciones | one2many | inverso: heredado de mail.thread |
| utm_reference | Referencia UTM | reference | heredado de utm.mixin |
| create_uid | Creado por | many2one | solo lecturaautomático |
| display_name | Nombre mostrado | char | solo lecturacalculadoautomático |
| id | ID | integer | solo lecturaautomático |
| write_date | Última actualización el | datetime | solo lecturaautomático |
| write_uid | Última actualización por | many2one | solo lecturaautomático |
Relaciones
Modelos enlazados desde este modelo
- account.analytic.account: analytic_account_id, project_account_id
- account.fiscal.position: fiscal_position_id
- account.incoterms: incoterm
- account.journal: journal_id
- account.move: invoice_ids
- account.payment.method.line: preferred_payment_method_line_id
- account.payment.term: payment_term_id
- crm.lead: opportunity_id
- crm.tag: tag_ids
- crm.team: team_id
- delivery.carrier: carrier_id
- event.booth: event_booth_ids
- hr.expense: expense_ids
- loyalty.card: applied_coupon_ids
- loyalty.reward: disabled_auto_rewards
- loyalty.rule: code_enabled_rule_ids
- mail.template: pending_email_template_id
- mrp.production: mrp_production_ids
- payment.transaction: authorized_transaction_ids, transaction_ids
- pos.order.line: pos_order_line_ids
- product.pricelist: pricelist_id
- product.template: grid_product_tmpl_id
- project.project: project_id, project_ids
- project.task: tasks_ids
- quotation.document: available_quotation_document_ids, quotation_document_ids
- repair.order: repair_order_ids
- res.company: company_id
- res.country: tax_country_id
- res.currency: currency_id
- res.partner: partner_id, partner_invoice_id, partner_shipping_id
- res.partner.grade: assigned_grade_id
- res.users: user_id
- sale.order: duplicated_order_ids
- sale.order.coupon.points: coupon_point_ids
- sale.order.line: order_line, website_order_line
- sale.order.template: sale_order_template_id
- stock.picking: picking_ids
- stock.reference: stock_reference_ids
- stock.warehouse: warehouse_id
- uom.uom: timesheet_encode_uom_id
- utm.campaign: campaign_id
- utm.medium: medium_id
- utm.source: source_id
- website: assigned_website_id, website_id
Campos de otros modelos que apuntan aquí
- account.analytic.line: order_id
- choose.delivery.carrier: order_id
- delivery.note.wizard: so_id
- event.booth: sale_order_id
- event.registration: sale_order_id
- event.sale.report: sale_order_id
- expense.attachment.selection.wizard: sale_order_id
- hr.expense: sale_order_id
- hr.expense.split: sale_order_id
- loyalty.card: order_id
- pay.on.delivery: order_ids
- payment.transaction: sale_order_ids
- pos.order.line: sale_order_origin_id
- project.project: reinvoiced_sale_order_id, sale_order_id
- project.sale.line.employee.map: sale_order_id
- project.task: project_sale_order_id, sale_order_id
- purchase.order.line: sale_order_id
- registration.editor: sale_order_id
- repair.order: sale_order_id
- report.project.task.user: sale_order_id
- sale.advance.payment.inv: sale_order_ids
- sale.loyalty.coupon.wizard: order_id
- sale.loyalty.reward.wizard: order_id
- sale.mass.cancel.orders: sale_order_ids
- sale.order: duplicated_order_ids
- sale.order.coupon.points: order_id
- sale.order.discount: sale_order_id
- sale.order.line: order_id
- stock.lot: sale_order_ids
- stock.picking: sale_id
- stock.reference: sale_ids
- timesheets.analysis.report: order_id
- withdrawal.request: order_id
Leer este modelo por la API
Ejemplo de llamada a la API JSON-2 de Odoo 20: lectura de los cinco primeros registros con campos reales del modelo. Sustituya la instancia, la base y la clave API por las suyas.
curl -X POST "https://su-instancia.odoo.com/json/2/sale.order/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: su-base" \
-H "Content-Type: application/json" \
-d '{"domain":[],"fields":["name","company_id","date_order","document_tax_mode","partner_id"],"limit":5}'import requests
BASE_URL = "https://su-instancia.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "su-base"}
res = requests.post(
f"{BASE_URL}/sale.order/search_read",
headers=headers,
json={"domain": [], "fields": ["name","company_id","date_order","document_tax_mode","partner_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())- El acceso a la API externa está reservado al plan Custom de Odoo.
- XML-RPC y JSON-RPC se retirarán en Odoo 22 (otoño de 2028): use JSON-2.
- Se aplican los permisos de acceso y las reglas de registro del usuario de la clave.
Citar esta herramienta
¿Escribe un tutorial, una documentación interna o una respuesta en un foro? Copie este enlace para dirigir a sus lectores a la ficha actualizada.
<a href="https://aidoo.ai/es/outils/explorateur-modeles-odoo/sale-order">sale.order (Odoo 20.0)</a>Fuentes
- Código fuente del modelo en GitHub
- Documentación de Odoo 20: ORM API
- Documentación de Odoo 20: API externa JSON-2
Datos verificados el 25 de septiembre de 2026 · Odoo 20.0 Community
¿Tiene un proyecto Odoo o quiere aprovechar su ERP con la IA? Hablemos
Implantación, desarrollo de módulos, conexión de Claude o ChatGPT a sus datos: cuéntenos su contexto y le responderemos en 24 horas laborables.