on 07-14-2011 4:54 PM
Hola a Todos,
Tenemos implementado un modelo de autorización para Pedidos de Ventas que verifica cuando se supere el límite de crédito:
SELECT DISTINCT 'TRUE' FROM [DBO].[ORDR] T0 INNER JOIN [DBO].[OCRD] T1 ON T0.CARDCODE = T1.CARDCODE
WHERE T0.CARDCODE = $[$4.1] AND (T1.CreditLine) < (T1.Balance+T1.OrdersBal+T1.DNotesBal+$[ORDR.DocTotal])
Como es sabido, el modelo de autorización solo funciona en la creación de documentos.
Implementamos una notificación (SP) de manera que si se esta actualizando una orden de venta, la misma no sea mayor al limite de credito:
IF @transaction_type = 'U' AND @object_type = '17'
BEGIN
IF EXISTS(SELECT * FROM ORDR T0 INNER JOIN OCRD T1
ON T0.CardCode = T1.CardCode
WHERE T0.DocEntry = @list_of_cols_val_tab_del
AND T0.DocTotal >= T1.CreditLine AND T0.UserSign <> 1
AND T0.WddStatus<>'A' AND T0.WddStatus<>'P' AND T0.WddStatus<>'Y')
BEGIN
SET @error = -1
SET @error_message = 'El Importe total supera el límite de crédito del Socio de Negocio'
END
END
Pero aún presentamos un problema, si el usuario crea la orden de venta y no supera el límite de crédito (no se activa el modelo de autorización), y empieza a actualizar dicho pedido, aumentándole cantidades o precios, pero ya posee saldo en Balance (OCRD.Balance), Pedidos Abiertos (OCRD.OrdersBal), y Entregas (OCRD.DNotesBal), estas no se están validando en el procedimiento almacenado.
Actualmente un pedido de venta puede ser actualizado llegando al monto del límite de crédito, sin verificar si ya hay monto en balance, pedidos y entregas abiertas, ¿cómo incluyo esta validación en el SP? El monto de pedidos abiertos (OCRD.OrdersBal) ya incluye el pedido que estoy actualizando (y otros que pedidos abiertos del cliente).
Gracias de antemano...
Agregas una lineas como
declare @balance as int
declare @ordersbal as int
declare @dnotesbal as int
select
@balance=a.Balance,@ordersbal= a.OrdersBal, @dnotesbal= a.DNotesBal
from ocrd a join ordr b on a.cardcode=b.cardcode where b.docentry=@list_of_cols_val......
Ya con los valores almacenados , tu trabaja la validacion que quieras
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
La sintaxis usada fue la siguiente, de manera que funcionara
IF @transaction_type = 'U' AND @object_type = '17'
BEGIN
declare @balance as int
declare @ordersbal as int
declare @dnotesbal as int
declare @doctotal as int
select @balance=a.Balance,@ordersbal= a.OrdersBal, @dnotesbal= a.DNotesBal from ocrd a join ordr b on a.cardcode=b.cardcode where b.docentry=@list_of_cols_val_tab_del
select @doctotal= DocTotal from ORDR where DocEntry=@list_of_cols_val_tab_del
IF EXISTS(SELECT * FROM ORDR T0 INNER JOIN OCRD T1
ON T0.CardCode = T1.CardCode
WHERE T0.DocEntry = @list_of_cols_val_tab_del
AND @Balance+@dnotesbal+(@ordersbal-@docTotal)+T0.DocTotal>= T1.CreditLine AND T0.UserSign <> 1
AND T0.WddStatus<>'A' AND T0.WddStatus<>'P' AND T0.WddStatus<>'Y')
BEGIN
SET @error = -1
SET @error_message = 'El Importe total supera el límite de crédito del Socio de Negocio'
END
END
Gracias por la ayuda prestada.
User | Count |
---|---|
107 | |
12 | |
11 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.