🎉 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:
2026-06-30 06:12:35 -06:00
commit 28d9e56f47
350 changed files with 99832 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
import xmlrpc.client
import sys
url = 'http://localhost:16001'
db = 'hazard_new'
username = 'admin'
password = '123'
try:
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, 'admin', {})
if not uid:
uid = common.authenticate(db, 'admin', '123', {})
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))
ref = 'HRS-GLV-CABRET-U-WHT-L'
products = models.execute_kw(db, uid, 'admin', 'product.product', 'search_read',
[[['default_code', '=', ref]]],
{'fields': ['id', 'name', 'display_name', 'product_tmpl_id', 'active']})
if not products:
print(f"Producto {ref} no encontrado.")
sys.exit()
print(f"--- SE ENCONTRARON {len(products)} PRODUCTOS CON ESE SKU ---")
for product in products:
tmpl_id = product['product_tmpl_id'][0]
print(f"\nVariante ID: {product['id']} | Activo: {product['active']}")
print(f"Name (variante): {product['name']}")
print(f"Display Name: {product['display_name']}")
tmpls = models.execute_kw(db, uid, 'admin', 'product.template', 'read',
[[tmpl_id]],
{'fields': ['id', 'name', 'active']})
print(f"Template Name: {tmpls[0]['name']} | Activo: {tmpls[0]['active']}")
# 3. Buscar las órdenes más recientes de este producto
print(" --- ULTIMAS LINEAS DE VENTA ---")
sols = models.execute_kw(db, uid, 'admin', 'sale.order.line', 'search_read',
[[['product_id', '=', product['id']]]],
{'fields': ['id', 'order_id', 'name', 'create_date'], 'limit': 3, 'order': 'id desc'})
for sol in sols:
print(f" SOL ID: {sol['id']} | Fecha: {sol['create_date']} | Pedido: {sol['order_id'][1]} | Descripcion: {sol['name']}")
print(" --- ULTIMOS MOVIMIENTOS DE INVENTARIO ---")
moves = models.execute_kw(db, uid, 'admin', 'stock.move', 'search_read',
[[['product_id', '=', product['id']]]],
{'fields': ['id', 'picking_id', 'name', 'description_picking', 'create_date'], 'limit': 3, 'order': 'id desc'})
for m in moves:
picking_name = m['picking_id'][1] if m['picking_id'] else 'Sin Albaran'
print(f" Move ID: {m['id']} | Fecha: {m['create_date']} | Albaran: {picking_name} | Desc: {m['description_picking']}")
except Exception as e:
print("Error conectando o consultando Odoo:", e)