Autorización de Presupuesto con Query

Buenos días amigos…

Me pidieron realizara una autorización para presupuesto. La cosa va así:
Si al momento de hacer una orden de compra, las cuentas contables afectada estan en cierto rango (se tienen cuentas por área de la empresa), y el monto provoca que el presupuesto se pase entre 80 y 90% debe solicitar autorización al líder de su área.

Si ya es del 90% para arríba debe llevar autorización por el director de Finanzas…

No tengo problemas en las personas, quien autoriza y quien no…

Mi problema está en el Query.

¿Como puedo saber si el asiento contable de un pedido de compra (que no genera asiento contable alguno), va a causar que el presupuesto se sobrepase más de un cierto porcentaje en ese mes?

EDIT: En parametrizaciones generales - presupuesto solo te lanza advertencia o te bloquea el presupuesto si ya te pasaste por 1 peso. La idea no es un mensaje de advertencia o bloqueo, sino que cuando ya se tenga cierto % el documento pida autorizaciones por área.

Podrías usar la herramienta de “proceso de aprobación”, con la cual podes armar una query que relacione el presupuesto con la orden de compra para poder observar el porcentaje en que vario, para luego decidir si entra al modelo de autorización o no.

Un poco más de información sobre esa herramienta… No la conozco :thinking:

Donde la consigo? como se usa? algún video o manual?

Las tablas que deberías usar son:
OPRQ Solicitud de compra
PRQ1 Solicitud de compra - Filas
OPOR Pedido
POR1 Pedido: Líneas

Campos de utilidad para relacionar tablas POR1 y PRQ1:
image

En cuanto a los videos búscate uno en youtube que hay muchos… En este momento no te puedo pasar un link porque tengo restringido el acceso.

mira este video:

1 me gusta

Ya lo sé realizar…

Por el momento tengo este query que estoy probando. Es muy General aún, debo personalizarlo más, por ejemplo, colocarle un grupo de cuentas contables, si son las mismas, y sobrepasa por un porcentaje entre X% y Y% debe ir una autorización a un área.

Aún estoy armando el query, pero como tengo mucho que no trabajo con Cursores. por si alguien me puede ayudar un poco xD

DECLARE @CUENTA DECIMAL
DECLARE @PRESUPUESTO DECIMAL
DECLARE @SALDO DECIMAL
DECLARE @LINEA DECIMAL


-- creando el cursor
declare cuentas cursor SCROLL
for 
-- consulta (aquí colocar mejor las condiciones y cuentas)
select t0.AcctCode[cuenta], round(sum(t0.LineTotal),0)[linea], round(t1.DebLTotal,0)[presupuesto], tq.saldo[Saldo]
from POR1 t0 
LEFT OUTER JOIN BGT1 t1 on t0.AcctCode = t1.AcctCode and t1.Line_ID +1 = month(getdate())
LEFT OUTER JOIN (select t2.ACCOUNT, round(sum(t2.Debit),0) saldo 
					from JDT1 t2 
					where DATEPART (MONTH,t2.taxdate) = month(getdate()) and DATEPART (YEAR,T2.TaxDate) = '2020' 
group by t2.Account) Tq ON t0.AcctCode = tq.Account
where t0.DocEntry =  $[$8.0.0]
group by t0.AcctCode, T1.DebLTotal, T1.AcctCode, tq.saldo

-- abrir  cursor
open cuentas
-- navega linea por linea
fetch NEXT FROM CUENTAS INTO @CUENTA,@LINEA, @PRESUPUESTO, @SALDO
WHILE (@@FETCH_STATUS = '0')
	BEGIN
		SELECT 'TRUE'
		WHERE (@LINEA+@SALDO) > @PRESUPUESTO --Modificar para que sea % aquí
		fetch NEXT FROM CUENTAS INTO @CUENTA,@LINEA, @PRESUPUESTO, @SALDO
	END
	
-- cerrar cursor
close cuentas
deallocate cuentas

Siento que le estoy perdiendo al validar de la JDT1 todos los movimientos del mes… pero es que si lo hago contra la OBGT para saber lo que arroja ocupado del mes, y no tiene presupuesto (no todas las cuentas tienen presupuesto), entonces no me toma bien la consulta, llega a arrojar error, y con esta no me está arrojando tanto error.

Recomendaciones?, ideas para mejorar el query?

1 me gusta

En realidad no necesitas usar un cursos en un query de proceso de autorización, acordate que es un query especial que hace referencia a variables que aun no se guardan en la DB. cuando tu query hace referencia a una variable de la grilla, automáticamente repetirá el query por cada linea, y si alguna devuelve TRUE, ahí se inicia el proceso de autorización.

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.