cancel
Showing results for 
Search instead for 
Did you mean: 

Transaction Bloqueo de pedidos por cantidades contra cotizacion

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

former_member413321
Contributor
0 Kudos

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)

Former Member
0 Kudos

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.

former_member413321
Contributor
0 Kudos

Perdón, copie la línea de codigo Equivocada.

El cambio esta en esta

    IF @CANTIDAD_COTIZACION<=@Cantidad_Pedido

Que debe ser esta

    IF @CANTIDAD_COTIZACION<@Cantidad_Pedido

Former Member
0 Kudos

Hola Alejandro, probe el cambio que me dijiste pero el problema continua, se te ocurre otra idea? gracias, por lo pronto seguire buscando a solucion, y se los hare saber .saludos

former_member413321
Contributor
0 Kudos

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.

former_member413321
Contributor
0 Kudos

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

Former Member
0 Kudos

Gracias Alejandro hay estaba el error, fue la solucion al problema buscar y sumar las cantidades de os demas pedidos.

Answers (0)