actualización de documentos *.md

This commit is contained in:
George committed 2026-08-05 07:54:08 -05:00
1 parent 69cd3b70d7
commit b777d57833
3 files changed
+80 -36

No files matched your search

+10 -5
View File
@@ -121,23 +121,28 @@ Orden de columnas:
### Algoritmo de Descuentos (allowanceCharge)
Cada línea puede tener 0 o más bloques `allowanceCharge`. Solo se procesan los de tipo `ALLOWANCE` con `percentage > 0`.
Cada línea puede tener 0 o más bloques `allowanceCharge`. Se procesan según su tipo:
```
base_total = netPrice × requestedQuantity
para cada allowanceCharge con allowanceOrChargeType="ALLOWANCE" y percentage > 0:
descuento = round(base_total × percentage / 100) ← round a entero, .5 hacia arriba
para cada allowanceCharge:
si percentage > 0:
descuento = round(base_total × percentage / 100) ← round a entero, .5 hacia arriba
si no:
descuento = round(amount) ← monto fijo
base_total = base_total - descuento
totalAmount (calculado) = base_total
precio_efectivo = round(totalAmount / requestedQuantity)
```
**Reglas:**
- Los descuentos se aplican **secuencialmente** sobre el saldo restante (no todos sobre el original)
- El percentage y amount en el XML son por unidad, informativos. El cálculo real se hace sobre el total de la línea
- Si `percentage > 0`, se usa el porcentaje sobre el total actual; si no, se usa el `amount` como monto fijo
- El resultado final debe coincidir con `lineItem/totalAmount/amount`
- Si hay múltiples ALLOWANCE, se encadenan: primero desc % sobre el total original, luego otro % sobre el resultado anterior
- Si hay múltiples allowance, se encadenan: primero el primero sobre el total original, luego el siguiente sobre el resultado anterior
- `precio_efectivo` se calcula como el total con descuento dividido por la cantidad solicitada
**Ejemplos validados contra archivos reales:**