Versión 2.0.0: validar contra Consignación (suma de OpenInvQty) en lugar del stock

DP_Stock (v2) suma PDN1.OpenInvQty de las Entradas de Consignación abiertas del almacén,
lo mismo que usa el FIFO. La columna se muestra como Consignación.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
georgeandClaude Sonnet 5.5 committed 2026-10-19 15:40:19 -05:00
1 parent 3f6395bfb0
commit 2182147adb
11 files changed
+32 -21

No files matched your search

@@ -136,7 +136,7 @@
<table class="grid">
<thead>
<tr>
<th></th><th>Artículo</th><th class="num">Cantidad</th><th class="num">Stock</th>
<th></th><th>Artículo</th><th class="num">Cantidad</th><th class="num">Consignación</th>
<th>Entrada</th><th>Fecha entrada</th><th class="num">Abierta</th><th class="num">Asignada</th>
<th>Proveedor</th><th>Devolución</th>
</tr>
@@ -260,7 +260,7 @@ export class PlanificacionDetallePage implements OnInit, OnDestroy {
{ titulo: 'Artículo', ancho: 18 },
{ titulo: 'Descripción', ancho: 45 },
{ titulo: 'Cantidad', tipo: 'numero' },
{ titulo: 'Stock', tipo: 'numero' },
{ titulo: 'Consignación', tipo: 'numero' },
{ titulo: 'Estado', ancho: 11 },
{ titulo: 'Devolver', ancho: 10 },
{ titulo: 'Entrada', tipo: 'numero' },
@@ -1,7 +1,7 @@
<section class="encabezado">
<div>
<h1>{{ reemplaza() ? 'Rehacer planificación Nº ' + reemplazaNumero() : 'Nueva planificación' }}</h1>
<p class="muted">Pegue los artículos y cantidades desde Excel; se valida el stock del almacén antes de procesar.</p>
<p class="muted">Pegue los artículos y cantidades desde Excel; se valida contra lo disponible en Consignación del almacén (cantidad abierta de las Entradas de mercancías) antes de procesar.</p>
</div>
<a class="btn" routerLink="/planificaciones">Volver</a>
</section>
@@ -91,7 +91,7 @@
<table class="grid">
<thead>
<tr>
<th>Código</th><th>Descripción</th><th class="num">A devolver</th><th class="num">Stock</th><th>Estado</th>
<th>Código</th><th>Descripción</th><th class="num">A devolver</th><th class="num">Consignación</th><th>Estado</th>
</tr>
</thead>
<tbody>
@@ -112,7 +112,7 @@
</table>
@if (sinStock() > 0) {
<p class="muted nota">
{{ sinStock() }} artículo(s) sin stock suficiente quedarán fuera al procesar.
{{ sinStock() }} artículo(s) sin consignación suficiente quedarán fuera al procesar.
</p>
}
</section>
@@ -95,7 +95,7 @@ describe('NuevaPlanificacionPage', () => {
expect(nombres[0]).toMatch(/^articulos-validados-01-\d{4}-\d{2}-\d{2}\.xlsx$/);
const hoja = leerZip(new Uint8Array(await blobs[0].arrayBuffer())).get('xl/worksheets/sheet1.xml')!;
expect(filasDeHoja(hoja)).toEqual([
['Código', 'Descripción', 'A devolver', 'Stock', 'Estado'],
['Código', 'Descripción', 'A devolver', 'Consignación', 'Estado'],
['A1', 'Libro', '5', '10', 'OK'],
['A2', 'Libro', '5', '10', 'Sin stock'],
]);
@@ -154,7 +154,7 @@ export class NuevaPlanificacionPage implements OnInit {
{ titulo: 'Código', ancho: 18 },
{ titulo: 'Descripción', ancho: 50 },
{ titulo: 'A devolver', tipo: 'numero', ancho: 12 },
{ titulo: 'Stock', tipo: 'numero', ancho: 12 },
{ titulo: 'Consignación', tipo: 'numero', ancho: 12 },
{ titulo: 'Estado', ancho: 12 },
],
filas: lineas.map((l) => [l.itemCode, l.itemDescription, l.quantity, l.onHand, l.status === 'OK' ? 'OK' : 'Sin stock']),