🎉 Initial commit - Hazard Odoo 16 project
- Custom modules: hazard_shopify, hazard_inventory_report, hazard_website - Third-party modules: bi_sql_editor, query_deluxe, sql_request_abstract, l10n_mx_sat_sync_itadmin_ee - Docker setup: Odoo 16 + PostgreSQL 17 - Utility scripts: backup_hazard.sh, update_module.py - Agent configuration: .agents/AGENTS.md - Security: Enterprise modules, credentials, backups and production data excluded via .gitignore
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo noupdate="1">
|
||||
<!-- Método de envío: Mensajería Local (Taxi/Mensajero de confianza) -->
|
||||
<record id="delivery_carrier_mensajeria_local" model="delivery.carrier">
|
||||
<field name="name">Mensajería Local (Taxi/Mensajero)</field>
|
||||
<field name="delivery_type">fixed</field>
|
||||
<field name="fixed_price">0.0</field>
|
||||
<field name="product_id" ref="delivery.product_product_delivery"/>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- Sequence for Barcode Generation (EAN-13) -->
|
||||
<record id="seq_product_barcode_hazard" model="ir.sequence">
|
||||
<field name="name">Secuencia de Códigos de Barras Hazard (EAN-13)</field>
|
||||
<field name="code">product.barcode.hazard</field>
|
||||
<field name="prefix">200001</field> <!-- Standard GS1 + Company format prefix -->
|
||||
<field name="padding">6</field> <!-- E.g. 200001 000001 (12 digits, then + checksum) -->
|
||||
<field name="company_id" eval="False"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="paperformat_label_thermal2x1" model="report.paperformat">
|
||||
<field name="name">Etiqueta Termica 2x1 (51x25mm)</field>
|
||||
<field name="default" eval="False" />
|
||||
<field name="format">custom</field>
|
||||
<field name="page_width">51</field>
|
||||
<field name="page_height">25</field>
|
||||
<field name="orientation">Portrait</field>
|
||||
<field name="margin_top">0</field>
|
||||
<field name="margin_bottom">0</field>
|
||||
<field name="margin_left">0</field>
|
||||
<field name="margin_right">0</field>
|
||||
<field name="disable_shrinking" eval="True"/>
|
||||
<field name="dpi">96</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- ================================================================
|
||||
CRON 1: Importación Automática de Pedidos (Shopify → Odoo)
|
||||
Activo solo cuando 'auto_import_orders' = True en la config.
|
||||
================================================================ -->
|
||||
<record id="ir_cron_shopify_import_orders" model="ir.cron">
|
||||
<field name="name">Shopify: Importar Pedidos Nuevos</field>
|
||||
<field name="model_id" ref="model_shopify_config"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model.cron_import_orders()</field>
|
||||
<field name="interval_number">5</field>
|
||||
<field name="interval_type">minutes</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="active">True</field>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="priority">5</field>
|
||||
</record>
|
||||
|
||||
<!-- ================================================================
|
||||
CRON 2: Sincronización de Inventario (Odoo ➔ Shopify)
|
||||
Odoo manda. Odoo es la Fuente de Verdad.
|
||||
Por defecto INACTIVO: se activa cuando estén listos.
|
||||
================================================================ -->
|
||||
<record id="ir_cron_shopify_sync_inventory" model="ir.cron">
|
||||
<field name="name">Shopify: Sincronizar Inventario (Odoo ➔ Shopify)</field>
|
||||
<field name="model_id" ref="model_shopify_config"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model.cron_sync_inventory_to_shopify()</field>
|
||||
<field name="interval_number">12</field>
|
||||
<field name="interval_type">hours</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="active">False</field>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="priority">10</field>
|
||||
</record>
|
||||
|
||||
<!-- ================================================================
|
||||
CRON 3: Renovación Preventiva de Tokens (Shopify OAuth)
|
||||
Shopify emite tokens con duración de 24h. Este cron los renueva
|
||||
automáticamente cada 20 horas para evitar interrupciones de servicio
|
||||
sin intervención manual del cliente.
|
||||
================================================================ -->
|
||||
<record id="ir_cron_shopify_refresh_tokens" model="ir.cron">
|
||||
<field name="name">Shopify: Renovar Tokens de Acceso (Automático)</field>
|
||||
<field name="model_id" ref="model_shopify_config"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model.cron_refresh_tokens()</field>
|
||||
<field name="interval_number">20</field>
|
||||
<field name="interval_type">hours</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="active">True</field>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="priority">1</field>
|
||||
</record>
|
||||
|
||||
<!-- ================================================================
|
||||
CRON 4: Descarga de Imágenes por Lotes (Shopify → Odoo)
|
||||
Procesa 15 productos sin imagen por ejecución.
|
||||
Se ACTIVA desde el botón y se auto-DESACTIVA al terminar.
|
||||
================================================================ -->
|
||||
<record id="ir_cron_shopify_download_images" model="ir.cron">
|
||||
<field name="name">Shopify: Descargar Imágenes de Productos</field>
|
||||
<field name="model_id" ref="model_shopify_config"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_download_images_batch()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">minutes</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="active">False</field>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="priority">5</field>
|
||||
</record>
|
||||
|
||||
<!-- ================================================================
|
||||
CRON 5: Sincronización Permanente y Automática de Nuevas Imágenes
|
||||
Busca productos sin foto en Odoo, descarga la portada y NUNCA se desactiva.
|
||||
Se ejecuta cada 2 horas de forma 100% transparente para el usuario.
|
||||
================================================================ -->
|
||||
<record id="ir_cron_shopify_auto_image_sync" model="ir.cron">
|
||||
<field name="name">Shopify: Auto-Descargar Imágenes Nuevas (Permanente)</field>
|
||||
<field name="model_id" ref="model_shopify_config"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model.cron_auto_download_images()</field>
|
||||
<field name="interval_number">2</field>
|
||||
<field name="interval_type">hours</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="active">True</field>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="priority">8</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user