Estimados,
Tengo un problema que no he podido resolver y me ha tomado mucho tiempo. Estoy haciendo un informe y necesito que me rescate el ultimo valor del campo PrcAmount de la tabla OCR1 para obtener el valor del factor porcentual de la tabla OCR1 más actual para cada registro. Estoy haciendo una consulta para saber los costos por centro de beneficio y al tener asientos contables con una norma de reparto, me extrae todos los factores ingresados, pero yo necesito que me extraiga el más actual del campo PrcAmount de la tabla OCR1.
Sino hago esto, la consulta esta mala ya que en caso que exista mas de una actualizacion del valor porcentual(PrcAmount) de la tabla OCR1 para algun centro de beneficio(por ejemplo J1) sumaria mas de una vez en la linea "ELSE ((T1.Debit - T1.Credit) * T4.PrcAmount)/100"
Copio la consulta SQL. El problema esta en que se debe poner un where para que seleccione el PrcAmount con la fecha más actual y se resolvería el problema. El inconveniente es que no tengo mucha experiencia y no me toma la función para extraer el ultimo valor actualizado. De antemano muchas gracias.
SELECT
T0.RefDate
,T1.TransId
,T1.Account
,T2.FormatCode
,T2.AcctName
,T4.PrcCode
,max(T4.ValidFrom)
,T4.PrcAmount
,T5.GrpCode
,cast(isnull(t5.prcname,'') as varchar(100)) [PrcName]
,CASE
WHEN ISNULL(T1.ProfitCode,'') = '' THEN (T1.Debit - T1.Credit)
WHEN T4.PrcAmount = T4.OcrTotal THEN (T1.Debit - T1.Credit)
ELSE ((T1.Debit - T1.Credit) * T4.PrcAmount)/100
END [Saldo]
FROM OJDT T0
JOIN JDT1 T1 ON T1.TransId = T0.TransId
JOIN OACT T2 ON T2.AcctCode = T1.Account LEFT
JOIN OOCR T3 ON T3.OcrCode = T1.ProfitCode LEFT
JOIN OCR1 T4 ON T4.OcrCode = T3.OcrCode left
join OPRC t5 on t5.PrcCode = T4.PrcCode
WHERE T0.RefDate BETWEEN '20100901' AND '20100930' AND T4.PrcCode = 'J1'
group by T0.RefDate,T1.TransId,T1.Account,T2.FormatCode,T2. AcctName,T4.PrcCode,T5.GrpCode,T5.PrcName,T1.Profi tCode, T1.Debit, T1.Credit,T4.PrcAmount,T4.OcrTotal