Files
descarga_factura_transporte/docs/validar_precios.mkd
T

1.3 KiB

Validar Precios

flowchart TD
    A["factura con lineas[]"] --> B["Obtener maestro zonas<br>SAP U_IDC_ZONAS"]
    B --> C["Por cada línea de factura"]

    C --> D{"cantidad > 0?"}
    D -->|No| E["Resultado: cantidad cero, sin validar"]
    D -->|Sí| F{"¿Hay guías de remisión?"}
    F -->|No| G["Resultado: sin guía de referencia"]

    F -->|Sí| H["Por cada guía en guias[]"]
    H --> I["Consultar SAP B1<br>get_delivery_notes()"]
    I --> J["Por cada DeliveryNote"]

    J --> K["Obtener zona desde<br>U_IDC_DESTINO"]
    K --> L["Extraer WarehouseCode<br>de DocumentLines[0]"]
    L --> M["Acumular Weight1<br>de DocumentLines[0]"]
    M --> N["Por cada línea FL* en<br>DocumentLines"]


    N --> O["Sumar LineTotal"]
    O --> P["Máx Quantity"]
    P --> Q["Sumar PriceAfterVAT"]
    Q --> R["Construir guias_lt[]<br>para cada guía:<br>line_total, quantity,<br>price_after_vat_sum,<br>warehouse_code, zona, weight1"]

    R --> S["Comparar total_linea (XML)<br>vs sap_total (FL*)"]
    S --> T{"abs(diff) < 0.01?"}
    T -->|Sí| U["ok = True<br>use_sap_prices si qty==1<br>y total_sap_qty≠1"]
    T -->|No| V["ok = False"]

    U --> W["Resultado por línea:<br>ok, draft_price, sap_price,<br>draft_cantidad, guias_lt[]"]
    V --> W
    W --> C
    C --> X["todas_coinciden = all(ok)"]