Boa tarde colegas,
Tenho as seguintes declarações que deveriam bloquear a faturação quando o preço estiver abaixo do custo, mas não consigo que isso aconteça. Talvez vocês encontrem o erro que eu não consegui identificar.
@object_type = '13' e (@transaction_type = 'U' ou @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
-- --Declaração de variáveis
DECLARE @CodigoAF VARCHAR(8) -- Código do armazém na fatura
DECLARE @ArticuloF VARCHAR(100) -- Código do artigo
DECLARE @PrecioF NUMERIC(19,6) -- Preço do artigo
DECLARE @TreeTypeF CHAR(1) -- Artigo componente de um código E
DECLARE @MonedaF NVARCHAR(15) -- Moeda da fatura
DECLARE @BaseTypeF INT -- Documento base da fatura
DECLARE @Reserva NVARCHAR(1) -- Indicador de reserva da fatura
-- --Atribuição de valores às variáveis
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) Preço Abaixo do Custo
WHEN @PrecioF <= (SELECT t4.AvgPrice FROM OITW t4 WHERE t4.ItemCode=@ArticuloF AND t4.WhsCode = @CodigoAF) /*and @Reserva = 'Y'*/ THEN 1301
--(2) Faturação Bloqueada a partir de Orçamento
WHEN @Reserva = 'N' AND @BaseTypeF = '23' THEN 1302
ELSE 0
END
SET @error_message =
CASE
WHEN @error=1301 THEN N'Preço abaixo do custo para o artigo ' +@ArticuloF
WHEN @error=1302 THEN N'Não é possível criar faturas a partir de um orçamento.'
END
IF @error>0
BREAK
SET @IndexFac = @IndexFac+1
END
END