Avalados por :

Como bloquear a faturação quando o preço está abaixo do custo: Guia passo a passo

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 3 Vistas
0
Cargando...

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

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

1 Respuestas

0
Cargando...

Cristiano:

Experimente este procedimento:

-- Fatura de Clientes abaixo do custo

IF @object_type = '13' e @transaction_type IN ('A','U')

BEGIN

if exists (SELECT T1.[ItemCode]

FROM OINV T0

INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry

INNER JOIN OITW T2 ON T1.ITEMCODE=T2.ITEMCODE

WHERE (T1.[price] <= (((T2.[avgprice] * 10) / 100) + T2.[avgprice])) e (T0.docentry = @list_of_cols_val_tab_del))

BEGIN

SELECT @error = 1, @error_message = 'Fatura com preço unitário abaixo do custo'

END

END

Cumprimentos,

Manuel Díaz G.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?