cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda TN

Former Member
0 Kudos

Buenas tardes compa;eros,

tengo las siguientes sentencias que me deberian bloquear la facturacion cuando este el precio por debajo del costo, pero no logro que asi se realice tal vez y ustedes encuentran 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 articulo ' +@ArticuloF

  WHEN @error=1302 THEN N'No se pueden crear facturas desde una cotizacion.'

  END

  IF @error>0

  BREAK

  SET @IndexFac = @IndexFac+1

  END

END

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member227744
Active Participant
0 Kudos

Crstiano:

Prueba con este procedimiento:

-- Factura de Clientes bajo el costo

IF  @object_type = '13'  and @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])) and (T0.docentry = @list_of_cols_val_tab_del))

BEGIN

     SELECT @error = 1, @error_message = 'Factura con precio unitario por bajo el costo'

END

END

END

Saludos cordiales,

Manuel Díaz G.