Buenas tardes compañeros,
tengo las siguientes sentencias que deberían bloquear la facturación cuando el precio esté por debajo del costo, pero no logro que se realice. Tal vez ustedes encuentren la falla que yo no he podido.
@object_type = '13' and (@transaction_type = 'U' or @transaction_type = 'A')
BEGIN
DECLARE @IndexFac INT
DECLARE @RowsFac INT
--SET @RowsFac = (SELECT DISTINCT COUNT(T1.LineNum) FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocEntry=@list_of_cols_val_tab_del)
SET @IndexFac = 0
WHILE(@IndexFac<@RowsFac)
BEGIN
-- --Declaración de variables
DECLARE @CodigoAF VARCHAR(8) -- Código de almacén factura
DECLARE @ArticuloF VARCHAR(100) -- Código del artículo
DECLARE @PrecioF NUMERIC(19,6) -- Precio del artículo
DECLARE @TreeTypeF CHAR(1) -- Artículo componente de un código E
DECLARE @MonedaF NVARCHAR(15) -- Moneda factura
DECLARE @BaseTypeF INT -- Documento base factura
DECLARE @Reserva NVARCHAR(1) -- Indicador de factura reserva
-- --Asignación de valores a variables
SET @CodigoAF = (SELECT T1.WhsCode FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocEntry = @list_of_cols_val_tab_del and T1.LineNum=@IndexFac)
SET @ArticuloF = (SELECT T1.ItemCode FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocEntry = @list_of_cols_val_tab_del and T1.LineNum=@IndexFac)
SET @PrecioF = (SELECT T1.Price FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocEntry = @list_of_cols_val_tab_del and T1.LineNum=@IndexFac)
SET @TreeTypeF = (SELECT T1.TreeType FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocEntry = @list_of_cols_val_tab_del and T1.LineNum=@IndexFac)
SET @MonedaF = (SELECT T0.DocCur FROM OINV T0 WHERE T0.DocEntry = @list_of_cols_val_tab_del)
SET @BaseTypeF = (SELECT T1.BaseType FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocEntry = @list_of_cols_val_tab_del and T1.LineNum=@IndexFac)
SET @Reserva = (SELECT T0.IsIns FROM OINV T0 WHERE T0.DocEntry = @list_of_cols_val_tab_del)
SET @error =
CASE
--(1) Precio Bajo el Costo
WHEN @PrecioF <= (SELECT t4.AvgPrice FROM OITW t4 WHERE t4.ItemCode=@ArticuloF AND t4.WhsCode = @CodigoAF) /*and @Reserva = 'Y'*/ THEN 1301
--(2) Facturación desde Cotización Bloqueada
WHEN @Reserva = 'N' AND @BaseTypeF = '23' THEN 1302
ELSE 0
END
SET @error_message =
CASE
WHEN @error=1301 THEN N'Precio abajo del costo para el artículo ' +@ArticuloF
WHEN @error=1302 THEN N'No se pueden crear facturas desde una cotización.'
END
IF @error>0
BREAK
SET @IndexFac = @IndexFac+1
END
END