fix(web): el precio de una línea nueva queda vacío para que SAP aplique la lista de precios

Probado contra SBODemoCL: crear y actualizar órdenes de venta y de compra, reemplazo de líneas y 412 por conflicto.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
GeorgeandClaude Sonnet 5.5 committed 2026-10-14 11:06:58 -05:00
1 parent 6978fed6fb
commit 4b35aa6bfd
4 files changed
+14 -5

No files matched your search

@@ -1,4 +1,5 @@
import { describe, expect, it } from 'vitest';
import { newDocumentLine } from './line-columns';
import {
computeTotals,
createPayload,
@@ -85,6 +86,11 @@ describe('createPayload', () => {
});
});
it('un precio sin escribir no se envía: SAP aplica la lista de precios', () => {
const body = createPayload({ CardCode: 'C1' }, [{ ...newDocumentLine(), ItemCode: 'A1' }]);
expect(body['DocumentLines']).toEqual([{ ItemCode: 'A1', Quantity: 1, DiscountPercent: 0 }]);
});
it('isBlankLine', () => {
expect(isBlankLine({ ItemCode: '' })).toBe(true);
expect(isBlankLine({ ItemCode: 'A1' })).toBe(false);
@@ -52,7 +52,7 @@ describe('columnas estándar de línea', () => {
describe('línea nueva y "catálogo completo"', () => {
it('la línea nueva trae cantidad 1 y total 0', () => {
expect(newDocumentLine()).toMatchObject({ Quantity: 1, Price: 0, LineTotal: 0, ItemCode: '' });
expect(newDocumentLine()).toMatchObject({ Quantity: 1, Price: null, LineTotal: 0, ItemCode: '' });
});
it('cada artículo elegido se convierte en una línea nueva', () => {
@@ -12,13 +12,16 @@ export function recalcLine(line: GridLine): GridLine {
return { ...line, LineTotal: round2(total) };
}
/** Línea nueva con los valores por defecto de un documento. */
/**
* Línea nueva con los valores por defecto de un documento. El precio queda vacío (no 0): si el
* usuario no lo escribe no se envía y SAP aplica la lista de precios del socio de negocio.
*/
export const newDocumentLine = (): GridLine => ({
ItemCode: '',
ItemDescription: '',
Quantity: 1,
WarehouseCode: '',
Price: 0,
Price: null,
DiscountPercent: 0,
TaxCode: '',
LineTotal: 0,