Reconciliación de Lotes (Batch) de Ventas (SOP) Parte I

Microsoft Dynamics GP

Hace tiempo, Mariano Gómez escribió un artículo sobre el tema Reconciling SOP Batches. Microsoft Dynamics GP en su versión actual todavía no ha incorporado la conciliación de los lotes de ventas.

Para verificar la existencia de lotes de ventas inconsistentes utilizo el siguiente script de SQL:


SELECT
	B.[BACHNUMB],
	B.[NUMOFTRX],
	B.[BCHTOTAL],
	T.REALNUMOFTRX,
	T.REALBCHTOTAL,
	B.[NUMOFTRX] - T.[REALNUMOFTRX] 'TRXDIFF',
	B.[BCHTOTAL] - T.[REALBCHTOTAL] 'TOTALDIFF'
FROM
	[dbo].[SY00500] B
JOIN
	(SELECT
		H.[BACHNUMB],
		ISNULL(COUNT(H.[SOPNUMBE]), 0) 'REALNUMOFTRX',
		ISNULL(SUM(H.[DOCAMNT]), 0) 'REALBCHTOTAL'
	FROM
		[dbo].[SOP10100] H
	GROUP BY
		H.[BACHNUMB]) T ON
	T.[BACHNUMB] = B.[BACHNUMB]
WHERE
	B.[SERIES] = 3 AND
	B.[BCHSOURC] = 'Sales Entry' AND
	(B.[NUMOFTRX] - T.[REALNUMOFTRX] <> 0 OR
	B.[BCHTOTAL] - T.[REALBCHTOTAL] <> 0)

El script anterior muestra únicamente los lotes con inconsistencias y sus diferencias en caso de existir.

La primera versión del script de update de Mariano funcionaba a la perfección, pero estaba basado en cursores. Luego actualizó el artículo y lo optimizó. Casualmente cuando hice la mía era bastante parecida a la de Mariano, con una pequeña diferencia. Solo actualiza los batch que tienen diferencia y no todos, lo que desde mi punto de vista tiene sentido. El script es el siguiente:


WITH T AS (
	SELECT
		H.[BACHNUMB],
		ISNULL(COUNT(H.[SOPNUMBE]), 0) 'REALNUMOFTRX',
		ISNULL(SUM(H.[DOCAMNT]), 0) 'REALBCHTOTAL'
	FROM
		[dbo].[SOP10100] H
	GROUP BY
		H.[BACHNUMB]
)
UPDATE C
SET
	C.[NUMOFTRX] = T.[REALNUMOFTRX],
	C.[BCHTOTAL] = T.[REALBCHTOTAL]
FROM
	[dbo].[SY00500] C
JOIN T ON T.[BACHNUMB] = C.[BACHNUMB]
WHERE
	C.[SERIES] = 3 AND
	C.[BCHSOURC] = 'Sales Entry' AND
	(C.[NUMOFTRX] - T.[REALNUMOFTRX] <> 0 OR
	C.[BCHTOTAL] - T.[REALBCHTOTAL] <> 0)

De esta manera, si no existen lotes inconsistentes no realiza ninguna actualización.

En la Parte II, voy a mostrar cómo hacer el llamado a un Stored Procedure desde Dexterity. Actualmente, el método de VBA no lo recomiendo, debido a que no es soportado por el WebClient.

Cualquier duda o comentario, escríbanme…

Takashi

 

Leave a Reply