- 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
56 lines
2.6 KiB
Python
56 lines
2.6 KiB
Python
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)
|