Condicionar via SP traslado de mercancía

Hola. En la empresa donde trabajo utilizamos segmentos de proyectos y varios almacenes. Ahora la cuestion. El personal de almacén quiere que coloquemos un candado, para que no se pueda generar la solicitud de traslado y el traslado de la mercancia a 2 almacenes especificos si dentro del contenido de los documentos no se agrega el codigo del proyecto. Tengo entendido que se puede llevar a cabo por medio de validaciones en el Stored Procedure, la cuestion es que no se como hacerlo ya que el codigo de estoy colocando no me permite realizar esto para los almacenes especificos.

Este es el codigo que estoy colocando.

-- Variable de lineas con proyecto
DECLARE @CONT3 INT 
-- Variable de lineas de documento
DECLARE @VAR3 INT 
-- Variable de lineas sin stock
DECLARE @CONT4 INT 
-- Variable de almacen
DECLARE @ALM INT
IF @object_type = '1250000001' AND @transaction_type IN ('A','U')
	BEGIN
	SET @CONT3 = (SELECT COUNT(T0.Project) FROM WTQ1 T0 INNER JOIN OWTQ T1 ON T0.DocEntry = T1.DocEntry 
					WHERE T0.Project <> ' ' AND T1.DocEntry = @list_of_cols_val_tab_del)
	SET @VAR3 = (SELECT COUNT(T0.LineNum) FROM WTQ1 T0 INNER JOIN OWTQ T1 ON T0.DocEntry = T1.DocEntry 
					WHERE T1.DocEntry = @list_of_cols_val_tab_del)
	SET @CONT4 = (SELECT COUNT (T0.[OnHand]) FROM OITW T0 , WTQ1 T1 INNER JOIN OWTQ T2 ON T1.DocEntry = T2.DocEntry
					WHERE T1.[ItemCode] = T0.[ItemCode] AND T1.[FromWhsCod] = T0.[WhsCode] AND T0.[OnHand] = 0 AND T1.DocEntry = @list_of_cols_val_tab_del)
	IF (@CONT3 <> @VAR3) AND (@ALM = 01 OR @ALM = 04 OR @ALM = 05 OR @ALM = 06 OR @ALM = 07 OR @ALM = 08 OR @ALM = 09 OR @ALM = 10 OR @ALM = 11 OR @ALM = 12 OR @ALM = 13)
		BEGIN
			SELECT @error = 1
			SELECT @error_message = 'Existe alguna línea del documento sin Proyecto'
	END
	BEGIN
	SET @ALM = (SELECT COUNT(T1.WhsCode) FROM OWTQ T0  INNER JOIN WTQ1 T1 ON T0.DocEntry = T1.DocEntry WHERE T1.DocEntry = @list_of_cols_val_tab_del)
	IF @ALM = 02 OR @ALM = 03 AND (@CONT3 <> @VAR3)
	BEGIN 
		SELECT @error = 2
		SELECT @error_message = 'El almacén destino necesita un proyecto especifico'
	END
	END	
END

De antemano gracias por el apoyo.

1 me gusta

Hola…

y si pruebas algo mas simple

SELECT COUNT(T0.Project)
FROM WTQ1 T0 INNER JOIN OWTQ T1 ON T0.DocEntry = T1.DocEntry
WHERE ISNULL(T0.Project,’’)= ’ ’ AND T1.DocEntry = @list_of_cols_val_tab_del
AND T0.WhsCode IN (‘01’,‘04’,‘05’,‘06’,'07)
HAVING COUNT(T0.Project) > 0

Saludos

2 Me gusta

@bfierro Gracias, intente agregarlo, pero no me permite realizar la validacion. lo agregue como valor a la variable que estoy colocando como ALM pero no funciona.

Crees que me puedas orientar un poco mas.

Gracias de antemano.

Hola, completo quedaría de la siguiente manera,

IF @object_type = ‘1250000001’ AND @transaction_type IN (‘A’,‘U’)
BEGIN
IF EXISTS (
SELECT COUNT(T0.Project)
FROM WTQ1 T0 INNER JOIN OWTQ T1 ON T0.DocEntry = T1.DocEntry
WHERE ISNULL(T0.Project,’’)= ’ ’ AND T1.DocEntry = @list_of_cols_val_tab_del
AND T0.WhsCode IN (‘01’,‘04’,‘05’,‘06’,'07)
HAVING COUNT(T0.Project) > 0
)
BEGIN
SET @error = 2
SET @error_message = 'El almacén destino necesita un proyecto especifico’
END

END

Saludos

3 Me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.