Abstracts Quote Calculators using Odoo Spreadsheet in v19. Trigger: Cuando el usuario pide crear, leer, actualizar, vincular, borrar un quote calculator, calculadora de cotización, o spreadsheet template de Odoo.
Estandarizar cómo crear, actualizar, leer o eliminar "Quote Calculators" (Odoo Spreadsheets) vinculados a Quotation Templates en Odoo 19 de una forma agnóstica a la configuración usando mcp-server-odoo.
sale.order.spreadsheet (Quote Calculator).sale.order.template.owl de Odoo Spreadsheet.searchParams, fieldMatching, globalFilters). NO LO CONSTRUYAS DESDE CERO EN EL PROMPT.assets/jsons/odoo19_quotation_canonical.json.assets/adapt_spreadsheet.py localmente en la shell para customizar el título y exportarlo en Base64 SIN usar la red.mcp_odoo_create_record.python3 skills/40-odoo/odoo-quote-calculator/assets/adapt_spreadsheet.py --input skills/40-odoo/odoo-quote-calculator/assets/jsons/odoo19_quotation_canonical.json --output skills/40-odoo/odoo-quote-calculator/assets/jsons/deploy.txt --brand "Marca"PAYLOAD=$(cat skills/40-odoo/odoo-quote-calculator/assets/jsons/deploy.txt) (recuerda usar read_file local para ti).mcp_odoo_create_record en el modelo sale.order.spreadsheet definiendo: {"name": "...", "spreadsheet_binary_data": "<base64_recolectado>"}.mcp_odoo_update_record al modelo sale.order.template cambiando el integer en el campo spreadsheet_template_id.Positive example (Deploy agnóstico vía MCP):
{
"model": "sale.order.spreadsheet",
"values": {
"name": "Marca Logistics Calculator",
"spreadsheet_binary_data": "eyJ2ZXJzaW..." // Extraido desde JSons/deploy.txt
}
}
Negative example (JSON inventado a mano con texto plano):
{
"model": "sale.order.spreadsheet",
"values": {
"spreadsheet_data": "{\"sheets\":[...], \"lists\":{...}}"
}
}
# Adapt and Generate Payload
python3 skills/40-odoo/odoo-quote-calculator/assets/adapt_spreadsheet.py \
--input skills/40-odoo/odoo-quote-calculator/assets/jsons/odoo19_quotation_canonical.json \
--output skills/40-odoo/odoo-quote-calculator/assets/jsons/payload.b64.txt \
--brand "MyCustomBrand"
assets/jsons/odoo19_quotation_canonical.jsonassets/adapt_spreadsheet.pyspreadsheet_binary_data en el tool MCP. Nunca escribas directamente un string al spreadsheet_data field a menos que estés testeando patches de hotfix.sale.order.template; si el MCP API retorna integer List [ID] usa solo ID.version: 19).