Hola,
Apenas estoy comenzando a utilizar el transaction y no comprendo muy bien la lógica que aplica. Tengo que hacer una validación que me impida crear una Factura de clientes si no viene de un documento de Orden de Venta.
Tengo el siguiente transaction:
--Transaction para impedir creación de facturas de clientes sin orden de venta previa
IF @object_type = '13' and @transaction_type in ('A', 'U')
BEGIN
IF (SELECT TOP 1 ISNULL(T1.BaseEntry,'') FROM OINV T0
INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OCRD T2 ON T0.CardCode = T2.CardCode
WHERE T1.DocEntry=1 order by T1.BaseEntry desc)=''
BEGIN
SELECT @error=106, @error_message='Factura sin orden de venta previa'
END
END
Cuando hago una factura de servicio o de articulo sin copiarla de una Orden de venta, lo detecta y me envía el mensaje 'Factura sin orden de venta previa', el problema viene que cuando hago la orden de venta y la copio a una factura de proveedores también envía el mismo mensaje y no me deja crear la factura.
Alguien sabe porque sucede esto??
Ocurre lo mismo con las siguientes transacciones.
-- Impide entrada de mercancia proveedor sin orden de compra previa.
IF (@object_type='20') AND (@transaction_type='A')
BEGIN
IF (SELECT TOP 1 ISNULL(T1.BaseEntry,'') FROM OPDN T0
INNER JOIN PDN1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OCRD T2 ON T0.CardCode = T2.CardCode
WHERE T1.DocEntry=1 order by T1.BaseEntry desc)=''
BEGIN
SELECT @error=102
SET @error_message='Entrada de mercancia sin orden de compra (Pedido)'
END
END
---
--Impide la creación de facturas sin entrada de mercancia,solo permite crear la factura para un grupo de proveedores en especifico.
IF @object_type ='18' AND @transaction_type IN ('A','U')
BEGIN
IF (SELECT TOP 1 ISNULL(T1.BaseEntry,'') FROM OPCH T0
INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OCRD T2 ON T0.CardCode = T2.CardCode
WHERE T1.DocEntry=1 and T2.GroupCode !='103' and T1.LineNum='0' order by T1.BaseEntry desc)=''
BEGIN
SELECT @error=103, @error_message='Factura sin entrada de mercancia'
END
END
--Impide la creación de facturas copiadas del pedido
IF @object_type ='18' AND @transaction_type IN ('A','U')
BEGIN
IF EXISTS(SELECT T1.BaseEntry FROM OPCH T0
INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OCRD T2 ON T0.CardCode = T2.CardCode
WHERE T1.DocEntry=@list_of_cols_val_tab_del and T1.BaseType<>'20'and T2.GroupCode !='103')
BEGIN
SELECT @error=104, @error_message='Factura sin entrada de mercancia'
END
END
--
Saludos!