🎉 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
+77
View File
@@ -0,0 +1,77 @@
import requests
import json
# Datos de conexión obtenidos de la configuración de Odoo
shop_url = "hazard-mexico.myshopify.com"
token = "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"
headers = {'X-Shopify-Access-Token': token}
# SKU a investigar
sku_to_check = "HRS-POL-BLUKNT-M-WHT-S"
print(f"--- INVESTIGACIÓN DE STOCK PARA SKU: {sku_to_check} ---")
# 1. Obtener ubicaciones para ver qué tenemos configurado en Shopify
loc_url = f"https://{shop_url}/admin/api/2024-01/locations.json"
r_loc = requests.get(loc_url, headers=headers)
print(f"Status Ubicaciones: {r_loc.status_code}")
locations = r_loc.json().get('locations', [])
for l in locations:
print(f"Ubicación: {l['name']} (ID: {l['id']})")
# 2. Buscar el producto por SKU usando GraphQL (más directo)
query = """
{
productVariants(first: 1, query: "sku:%s") {
edges {
node {
id
legacyResourceId
inventoryItem {
id
legacyResourceId
inventoryLevels(first: 10) {
edges {
node {
quantities(names: ["available"]) {
name
quantity
}
location {
id
name
}
}
}
}
}
}
}
}
}
""" % sku_to_check
gql_url = f"https://{shop_url}/admin/api/2024-01/graphql.json"
r_gql = requests.post(gql_url, headers=headers, json={'query': query})
if r_gql.status_code == 200:
data = r_gql.json()
variants = data.get('data', {}).get('productVariants', {}).get('edges', [])
if not variants:
print(f"\nNo se encontró ninguna variante con SKU {sku_to_check} via GraphQL.")
else:
var_node = variants[0]['node']
inv_item = var_node['inventoryItem']
print(f"\nVariante encontrada en Shopify!")
print(f"Variant ID: {var_node['legacyResourceId']}")
print(f"Inventory Item ID: {inv_item['legacyResourceId']}")
print("\nNiveles de inventario reportados por la API:")
for edge in inv_item['inventoryLevels']['edges']:
loc = edge['node']['location']
qties = edge['node']['quantities']
qty = qties[0]['quantity'] if qties else 0
print(f"- {loc['name']} (ID: {loc['id'].split('/')[-1]}): {qty}")
else:
print(f"Error en GraphQL: {r_gql.status_code} - {r_gql.text}")