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
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.
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