cancel
Showing results for 
Search instead for 
Did you mean: 

Proceso de autorizacion 2

Former Member
0 Kudos

Tengo un query (gracias mauricio) que uso en procedimientos de autorizacion que revisa si el SN tiene facturas vencidas sin embargo si me paga de contado puede brincarse la autorizacion, el query es este:


declare @efectivo as nvarchar(1)
set @efectivo = (select $[ordr.U_contado])
if @efectivo ='N'
begin
SELECT Distinct 'TRUE'  
FROM OINV T0 
WHERE T0.DocStatus = 'O' AND 
DateDiff(dd, T0.DocDueDate, CONVERT(DateTime, CONVERT(nvarchar(11),GetDate(),112),112)) >= 1
AND T0.CardCOde = $[$4.0.0]
AND (Select balance from ocrd where cardcode=$[$4.0.0]) > 0
end

Sin embargo a ultima hora tengo que hacer una modificacion para que tambien me verifique que no se exceda de credito el Socio de Negocio, vaya que pida autorizacion sin olvidar la primera parte que es si me paga de contado brincate todo.

Se que por default hay una autorizacion para esto pero no la puedo modificar para que si me paga de contado se la brinque, el query que estoy usando es algo parecido:


declare @efectivo as nvarchar(1)
set @efectivo = (select $[ordr.U_contado])
if @efectivo ='N'
begin
SELECT Distinct 'TRUE'  
FROM OINV T0  INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode INNER JOIN ORDR T2 ON T1.CardCode = T2.CardCode
WHERE T0.DocStatus = 'O' AND 
DateDiff(dd, T0.DocDueDate, CONVERT(DateTime, CONVERT(nvarchar(11),GetDate(),112),112)) >= 1
AND T0.CardCOde = $[$4.0.0] AND T1.balance+T2.Doctotal <= T1.creditline 
end

Cabe aclarar que lo que quiero es que pida autorizacion desde la Orden de Venta(por eso agregue las tablas) y no se vaya a parar ya en la factura, eso pues quitaria tiempo y los clientes se molestarian que ya cuando van a hacer la factura se les detenga.

Alguna sugerencia?

Accepted Solutions (1)

Accepted Solutions (1)

former_member188440
Active Contributor
0 Kudos

Prueba asi


declare @efectivo as nvarchar(1)
declare @importe as decimal (19,6)
set @efectivo = (select $[ordr.U_contado])
set @importe=(select $[ordr.doctotal])
if @efectivo ='N'
begin
SELECT Distinct 'TRUE'  
FROM OINV T0  INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode INNER JOIN ORDR T2 ON T1.CardCode = T2.CardCode
WHERE T0.DocStatus = 'O' AND 
DateDiff(dd, T0.DocDueDate, CONVERT(DateTime, CONVERT(nvarchar(11),GetDate(),112),112)) >= 1
AND T0.CardCOde = $[$4.0.0] AND T1.balance+T2.Doctotal <= T1.creditline and T1.CreditLimit <=@importe
end

Former Member
0 Kudos

El campo T1.CreditLimit no existe en OCRD quisiste decir CreditLine otra vez?

En la ultima parte pones:


T1.balance+T2.Doctotal <= T1.creditline and T1.CreditLimit <=@importe

No sera:


T1.balance+@importe <= T1.creditline solamente?

Former Member
0 Kudos

Bueno ya probe:


declare @efectivo as nvarchar(1)
declare @importe as decimal (19,6)
set @efectivo = (select $[ordr.U_contado])
set @importe=(select $[ordr.doctotal])
if @efectivo ='N'
begin
SELECT Distinct 'TRUE'  
FROM OINV T0  INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode INNER JOIN ORDR T2 ON T1.CardCode = T2.CardCode
WHERE T0.DocStatus = 'O' AND 
DateDiff(dd, T0.DocDueDate, CONVERT(DateTime, CONVERT(nvarchar(11),GetDate(),112),112)) >= 1
AND T0.CardCOde = $[$4.0.0] AND T1.balance+@importe <= T1.creditline 
end

Y no funciona, vaya se crea el documento apesar que excede el limite de credito

former_member188440
Active Contributor
0 Kudos

Si disculpa , me equivoque con ese campo

si no pon otro procedimiento de autorizacion al mismo documento que sea asi


declare @efectivo as nvarchar(1)
set @efectivo = (select $[ordr.U_contado])
if @efectivo ='N'
begin
SELECT 'TRUE' WHERE ($[$29.0.Number]+(SELECT T0.[Balance]+T0.[OrdersBal] 
FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0]) > (SELECT T0.[CreditLine]
 FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0]))

espero jale bien

Former Member
0 Kudos

Excelente, funciona usando los 2 querys en un mismo procedimiento, quiza deba separarlos para saber donde cae pero para eso hare pruebas, te falto el END al final pero ya se lo puse y funciono, para quien decida tomar este procedimiento en un futuro el codigo es:


declare @efectivo as nvarchar(1)
set @efectivo = (select $[ordr.U_contado])
if @efectivo ='N'
begin
SELECT 'TRUE' WHERE ($[$29.0.Number]+(SELECT T0.[Balance]+T0.[OrdersBal] 
FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0]) > (SELECT T0.[CreditLine]
 FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0]))
end

Para quien no sepa el

 $[$29.0.Number] 

significa que vaya y busque el campo de doctotal de la ordr que es la orden de venta.

Gracias Mauricio es bueno tener en el foro gente experimentada como tu en estas cosas.

Former Member
0 Kudos

Hola, Carlos Salcedo,

Estoy leyendo tu post, este último código, es para verificar el limite de crédito? y colocarlo en Modelo de Autorización--->Condiciones basadas en consultas de usuario??

Espero tus comentarios...

Gracias

Former Member
0 Kudos

Asi es, lo metes en condiciones basadas en consultas de usuario.

Former Member
0 Kudos

Muchísimas gracias Carlos,  lo implementaré espero me funcione...

Gracias a todos por compartir sus conocimientos.

Saludos.

Former Member
0 Kudos

Mauricio buen día, soy nuevo en esto de SAP, tengo la V. 9.1 mi problema es esto: requiero crear un proceso de autorización o alguna herramienta para que cuando un socio de negocios específico llegue o sobrepase su límite de crédito el vendedor requiera de una autorización para que pueda continuar con el proceso... es esto posible?

Answers (0)