Validación para Refactura

Estimados, estoy creando una validación en el Transac pero por alguna razón no me funciona.
Alguien me podrá orientar para ver que estoy haciendo mal o que no estoy tomando en cuenta?

If @object_type = '13' AND @transaction_type='A'

SELECT	@EsReserva = T0.isIns,
	@EsRefactura = T0.U_Refactura,
	@NumDespacho = T0.U_DespNum,
	@NumFactAnulada = T0.U_FacAnulada,
	@DocumentoBase = T1.BaseType
FROM	OINV T0
	INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
WHERE	T0.DocEntry = @list_of_cols_val_tab_del

	IF @EsReserva = 'Y' and @DOCUMENTOBASE <> 17
		BEGIN
		    set @error = 1
		    set @error_message = 'Esta Factura de Reserva no tiene Pedido asociado'
		END
	IF @EsReserva = 'N' and @DOCUMENTOBASE <> 15
		BEGIN
		    set @error = 1
		    set @error_message = 'Esta Factura no tiene Despacho asociado'
		END
	IF @EsRefactura <> 'N' and @DOCUMENTOBASE = -1 and @NumDespacho is null and @NumFactura is null
		BEGIN
		    set @error = 1
		    set @error _message = 'Esta es un Refactura, debe ingresar su despacho y factura anulada'
		END
END

Hola compañero.

Porque haz decidido identificar la fcatura de reserva por medio de un campo de usuario, me parece mejor idea identificarlas por medio del campo nativo:

La factura de reserva de clientes se puede identificar en una consulta mediante el campo “IsIns” (Factura de reserva) cuyo valor para dicha factura es “Y”

Sobre tu código, prefiero dejarte un ejemplo y tu mismo pulas tu consulta, en este caso es un bloqueo para que la entrega no se pueda crear sin un documento base:

IF @transaction_type in('A') AND (@object_type='15') AND ISNULL((Select T0.DocType FROM ODLN T0 WHERE T0.DocEntry = @list_of_cols_val_tab_del),'') = 'I'	-- Articulo="I", Servicio="S"
		BEGIN
		SET @numeroDeLineasSinDocumentoBase = ISNULL((Select COUNT(ISNULL(T1.BaseType,-1)) From DLN1 T1 Where T1.DocEntry = @list_of_cols_val_tab_del And ISNULL(T1.BaseType,-1) = -1),0)
		IF @numeroDeLineasSinDocumentoBase > 0
			BEGIN
				SET @error = 9
				SET @error_message = 'ATENCION !!!   NO debe crear Entrega de mercancias sin Documento BASE, es decir, toda Entrega debe venir de un Pedido, revise por favor...'
				GOTO FINAL_DEL_PROCESO_TransactionNotification
			END
		END

Es un poco más seguro, recuerda que en el documento destino, se pueden crear líneas adicionales a las ya contenidas en el documento base y con este código te aseguras que toda línea debe estar contenida en el documento base.

Saludos.

1 me gusta

Muchas gracias @Gera_Mendez tu código me ayudo a entender como realizar mi validación.
Este fue el resultado final:

IF (@OBJECT_TYPE = ‘13’ AND @TRANSACTION_TYPE IN (‘A’,‘U’))
BEGIN
SET @numeroDeLineasSinDocumentoBase = ISNULL((Select COUNT(ISNULL(T1.BaseType,-1)) From INV1 T1 Where T1.DocEntry = @list_of_cols_val_tab_del And ISNULL(T1.BaseType,-1) = -1),0)
IF @numeroDeLineasSinDocumentoBase > 0 And (Select T0.U_Refactura From OINV T0 Where T0.DocEntry = @list_of_cols_val_tab_del) = 'N’
BEGIN
SET @error = 9
SET @error_message = 'Esta factura no tiene Despacho asociado’
END
IF @NumeroDeLineasSinDocumentoBase > 0 And (Select T0.isIns From OINV T0 Where T0.DocEntry = @list_of_cols_val_tab_del) = 'Y’
Begin
SET @error = 9
SET @error_message = 'Esta factura en reserva no tiene Pedido asociado’
END
END

1 me gusta

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