actualización de documentos *.md
This commit is contained in:
1 parent
69cd3b70d7
commit
b777d57833
3 files changed
+80
-36
No files matched your search
+10
-5
@@ -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:**
|
||||
|
||||
|
||||
Reference in new issue
Block a user