on 02-20-2014 2:43 PM
Buenos dias a todos , mi inconveniente tiene que ver con el codigo del TN, este query evalua el valor de contrato y controla que los pedidos no superen el valor del contrato, pero en la segunda parte necesito evaluar las cantidades del pedido y controlar que no se puedan pedir mas cantidades de la cantidad pendiente en la cotizacion, hasta el momento tengo este query pero no funciona ya que realiza el bloqueo aun si la cantidad es igual. no se que falta, agradezco su colaboración. Adjunto el codigo
Si bien entendi el query, tu problema estaría en la línea 39
Donde indica
WHILE (@LINENUMMAX>=@LINENUMMIN)
Debes cambiarlo por
WHILE (@LINENUMMAX>@LINENUMMIN)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hola Alejandro gracias por responder, las variables del @LINENUMMAX y @LINENUMMIN las utilizo para navegar en las lineas del pedido @LINENUMMAX es el numero de linea mayor y @LINENUMMIN es el numero de linea menor por eso debo evaluar hasta que @LINENUMMAX sea mayor o igual a @LINENUMMIN segun el incremento del ciclo WHILE,
el problema es que no me esta capturando la cantidad de la linea del pedido para compararla con la cantidad pendiente de la cotizacion, tendrias alguna otra idea, Gracias por tus aportes.
Amigo, tu problema es que estas utilizando la columna OpenCreQty, la cual almacena lo pendiente de la orden para poder utilizar. Pero al utilizarlo en el TN esa columna se ve alterada y cuando facturas la misma cantidad se disminuye lo que estas convertiendo en pedido.
Por lo que si lo que la orden tiene pendiente es 2 y facturas 2, cuando entra a tu metodo esta comparando 0 > 2, porque ya la variable de @cantidad_Cotizacion es la cantidad pendiente menos lo facturado.
Adjunto el Fragmento de tu codigo que debes cambiar.
Lo que hice por el comentario anterior es sacar el total de la orden y buscar todos los pedidos asociados a la misma.
Ademas corregi las variables porque no debian ser int porque las cantidades pueden tener decimales.
Tambien cambie la manera en la que devuelves el mensaje de error.
DECLARE @LINENUMMAX INT,
@LINENUMMIN INT,
@CANTIDAD_PEDIDO decimal(18,6),
@CANTIDAD_COTIZACION decimal(18,6)
SET @LINENUMMAX = (SELECT max(T0.LineNum) FROM RDR1 T0 where t0.BaseRef=@referencia)
SET @LINENUMMIN=(SELECT MIN(T0.LineNum) FROM RDR1 T0 where t0.BaseRef=@referencia)
WHILE (@LINENUMMAX>=@LINENUMMIN)
BEGIN
Set @CANTIDAD_COTIZACION = -1
Set @CANTIDAD_PEDIDO = -1
SET @CANTIDAD_COTIZACION=(SELECT T1.Quantity
FROM OQUT T0 INNER JOIN QUT1 T1 ON T1.DocEntry=T0.DocEntry
WHERE T1.LineNum=@LINENUMMIN and T0.DocEntry=@referencia)
SET @CANTIDAD_PEDIDO = (SELECT SUM(T0.Quantity) FROM RDR1 T0 where t0.BaseRef=@referencia AND T0.BaseLine=@LINENUMMIN)
IF @CANTIDAD_COTIZACION
BEGIN
SET @error=101
SET @error_message= 'La cantidad del pedido en la linea ' + CONVERT(varchar, @LINENUMMIN)+ ' supera la cantidad de la cotizacion.'
BREAK
END
SET @LINENUMMIN=@LINENUMMIN+1
END
User | Count |
---|---|
89 | |
7 | |
6 | |
3 | |
3 | |
3 | |
3 | |
3 | |
3 | |
2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.