Hola a todos, tengo un problema, espero puedan ayudarme:
Estoy programando una restricción de precios en Transaction Notification, a nivel detalle, en el momento en que sea crea una Factura de Deudores , en donde se compare el precio unitario de venta del producto con un precio de lista, el cual se extrae desde una tabla definida por usuario la cual cree ( @PRECIOVENTAFIJO) dependiendo los plazos de pago del cliente. El precio unitario de venta debe ser mayor o igual a este precio de lista, si esto no se cumple, debe tirar un error. No tengo problemas al momento de ingresar un producto, pero al momento de ingresar dos o más, me sale el siguiente error: Se ha producido un error interno (512) [Mensaje 131-183].
Este es mi código:
DECLARE @DIF FLOAT
If @object_type='13'
BEGIN
If @transaction_type = 'A'
BEGIN
SET @DIF= (Select case when INV1.Currency='USD' then INV1.PRICE else INV1.PRICE/ORTT.Rate END FROM INV1 INNER JOIN ORTT ON INV1.DOCDATE=ORTT.RATEDATE WHERE ORTT.Currency='usd' and INV1.DOCENTRY=@list_of_cols_val_tab_del)
- (SELECT CASE WHEN DATEDIFF(day,dbo.OINV.TAXDATE,dbo.OINV.DOCDUEDATE)<=120 THEN dbo.[@PRECIOVENTAFIJO].[U_Precio120] WHEN DATEDIFF(day,dbo.OINV.TAXDATE,dbo.OINV.DOCDUEDATE)<=150 THEN dbo.[@PRECIOVENTAFIJO].[U_Precio150] WHEN DATEDIFF(day, dbo.OINV.TAXDATE,dbo.OINV.DOCDUEDATE)<=180 THEN dbo.[@PRECIOVENTAFIJO].[U_Precio180] WHEN DATEDIFF(day, dbo.OINV.TAXDATE,dbo.OINV.DOCDUEDATE)<=210 THEN dbo.[@PRECIOVENTAFIJO].[U_Precio210] WHEN DATEDIFF(day, dbo.OINV.TAXDATE,dbo.OINV.DOCDUEDATE)<=240 THEN dbo.[@PRECIOVENTAFIJO].[U_Precio240] WHEN DATEDIFF(day, dbo.OINV.TAXDATE,dbo.OINV.DOCDUEDATE)<=270 THEN dbo.[@PRECIOVENTAFIJO].[U_Precio270] WHEN DATEDIFF(day, dbo.OINV.TAXDATE,dbo.OINV.DOCDUEDATE)<=300 THEN dbo.[@PRECIOVENTAFIJO].[U_Precio300] WHEN DATEDIFF(day, dbo.OINV.TAXDATE,dbo.OINV.DOCDUEDATE)<=330 THEN dbo.[@PRECIOVENTAFIJO].[U_Precio330] ELSE dbo.[@PRECIOVENTAFIJO].[U_Precio360] END
FROM dbo.OINV inner join dbo.INV1 ON dbo.OINV.Docentry = dbo.INV1.Docentry inner join [dbo].[@PRECIOVENTAFIJO] ON dbo.[@PRECIOVENTAFIJO].[CODE]=dbo.INV1.Itemcode
WHERE OINV.Docentry = @list_of_cols_val_tab_del and month(dbo.[@PRECIOVENTAFIJO].[U_FechaPrecio])=month(OINV.Taxdate) and year(dbo.[@PRECIOVENTAFIJO].[U_FechaPrecio])=year(OINV.Taxdate))
-- ESTA ES LA DIFERENCIA ENTRE PRECIOS @DIF=(PRECIO UNITARIO DE VENTA) - (PRECIO LISTA SEGÚN PLAZO)
IF (@DIF<0)
BEGIN
SET @error = 213
SET @error_message = 'El precio unitario debe ser mayor o igual al precio fijo'
END
END
END