Files
georgeandClaude Sonnet 5.5 901dd8763d Integración Shopify → SAP Business One (snobbycl y on-chile)
Pipeline de integración de órdenes de Shopify a SAP Service Layer:
Invoice de reserva, pago con tarjeta o transferencia por transacción,
solicitud de traslado, traslado de stock y entrega.

- Invoice igual a lo cobrado; fulfillments limitados a lo facturado
- Estados terminales integrated, timeout, ignored y cancelled
- Idempotencia contra SAP: adopta documentos existentes en vez de duplicar
- Reintentos de red en el cliente de Shopify
- Secretos fuera de los JSON de tienda (${VARIABLE} resuelta desde .env)
- Herramientas de consulta, integración puntual y carga de pruebas
- Documentación en docs/ (flujo, casos especiales, mapeo, configuración)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 19:22:40 -05:00

39 lines
1.4 KiB
Python

from typing import Any, Dict
ITR_BASE_TYPE = 1250000001 # DocObjectCode de InventoryTransferRequests
def construir_stock_transfer(itr: Dict[str, Any], store_config: Dict[str, Any]) -> Dict[str, Any]:
"""
Arma el JSON para POST StockTransfers a partir de una
InventoryTransferRequest ya creada en SAP (itr = el documento completo
leído de SAP, con LineNum reales). Copia CardCode/CardName/Comments/
almacenes/UDFs de la ITR, y cada línea referencia su línea base vía
BaseType/BaseEntry/BaseLine.
"""
document_lines = [
{
"ItemCode": line["ItemCode"],
"Quantity": line["Quantity"],
"FromWarehouseCode": line["FromWarehouseCode"],
"WarehouseCode": line["WarehouseCode"],
"BaseType": ITR_BASE_TYPE,
"BaseEntry": itr["DocEntry"],
"BaseLine": line["LineNum"],
}
for line in itr["StockTransferLines"]
]
return {
"CardCode": itr.get("CardCode"),
"CardName": itr.get("CardName"),
"Comments": itr.get("Comments"),
"DocDate": itr["DocDate"][:10],
"FromWarehouse": itr["FromWarehouse"],
"ToWarehouse": itr["ToWarehouse"],
"Series": store_config["sap"]["numbering_series"]["STOCK_TRANSFER"],
"U_ShopifyOrderId": itr.get("U_ShopifyOrderId"),
"U_ShopifyStore": itr.get("U_ShopifyStore"),
"StockTransferLines": document_lines,
}