on 10-29-2010 4:19 PM
Buenos Dias Foro
Tengo una duda y me gustaria si pudiesen ayudarme a resolver y a aprender como se hace...
La siguiente query es para bajar un diario de las transacciones. El problema es que algunos comentarios (JDT1, LineMemo) no satisfacen la necesidad de saber de que trata el asiento, como los son "Entregas - 15482134-2" o comentarios asi por defecto.
La idea es hacer un "Case" donde me diga que si el asiento proviene de un "TT" como ejemplo, que es una factura de proveedores, vaya a la tabla OPCH y extraiga el "OPCH, Comments".
El campo en el asiento que quiero poner donde aparecen los ???? visto en informacion del sistema es
TT [Form=392 Item=24 Pane=0 Variable=66]
y no se como agregarlo en la consulta.
SELECT
T1.TransId,
T0.FormatCode,
T0.AcctName,
T1.Debit,
T1.Credit,
'Comentarios' = Case
WHEN (SELECT $[$??.??.??]) = 'TT' THEN (SELECT T4.Comments FROM OPCH T4 WHERE T1.TransId = T4.TransId)
Else
'Otros'
End,
T1.RefDate,
T2.CreateDate,
T1.ShortName,
T3.U_NAME
FROM OACT T0
INNER JOIN JDT1 T1 ON T1.Account = T0.AcctCode
INNER JOIN OJDT T2 ON T1.Transid = T2.Transid
INNER JOIN OUSR T3 ON T1.UserSign = T3.UserID
WHERE T1.RefDate BETWEEN [%0] AND [%1]
AND
T0.Segment_0 = [%2]
Desde Ya muchas Gracias.
Atte.
FLR
Edited by: Floyola on Oct 29, 2010 5:25 PM
Floyola,
Este CASE ya lo he hecho y la verdad es que es bastante largo, ues tendrias que enlazarlo para cada uno de los posibles objetos de negocio que generan registros contables (creo que son alrededor de 30).
Asi que si lo unico que necesitas es obtener el comments del documento, te aconsejo que mejor hables con tus usuarios que generan los diferentes documentos para que coloquen en el campo JrnlMemo (Asiento Contable - Ficha finanzas) una glosa mas descriptiva.
slds.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Rulius, gracias por responder
Entiendo que el CASE puede ser muy largo y tedioso hacerlo, pero lo que quiero sacar de aqui, no es la consulta hecha, sino como hacer referencia a ese parametro que aparece en la info del sistema. ya que no se hacerle referencia, y asi de paso saber hacer consultas formateadas (creo que se llaman asi).
ademas en la empresa quizas no se ocupan todos modulos que generan asientos, y me di cuenta que en vez de terminar el case en
Else
'otros'
modifico a
Else
(Select LineMemo From JDT1 where TransId = T1.TransID)
y asi si hay alguna referencia interna que se me haya pasado, arroje de todas maneras el JrnlMemo.
Saludos
Pero lo que quieres es generar una consulta formateada o una consulta de informe?
porque por consulta formateada, significa que quieres que se ejecute cuando entres a la pantalla del Journal y te muestre el resulta.
Si es una consulta para informes, entonces no necesitas las variables de pantalla, sino, los campos de base de datos.
Si es este ultimo caso, aqui tienes el CASE a algunos documentos (creo los mas importantes), pero esta consulta trae otro campo, deberias cambiarlo por el campo que tu necesitas.
slds.
, CASE T1.TransType WHEN '13' THEN
(SELECT ISNULL(D0.FolioNum, D0.DocNum)
FROM OINV D0
WHERE D0.TransId = T1.TransId)
WHEN '14' THEN
(SELECT ISNULL(D0.FolioNum, D0.DocNum)
FROM ORIN D0
WHERE D0.TransId = T1.TransId)
WHEN '18' THEN
(SELECT ISNULL(D0.FolioNum, D0.DocNum)
FROM OPCH D0
WHERE D0.TransId = T1.TransId)
WHEN '19' THEN
(SELECT ISNULL(D0.FolioNum, D0.DocNum)
FROM ORPC D0
WHERE D0.TransId = T1.TransId)
WHEN '203' THEN
(SELECT ISNULL(D0.FolioNum, D0.DocNum)
FROM ODPI D0
WHERE D0.TransId = T1.TransId)
WHEN '204' THEN
(SELECT ISNULL(D0.FolioNum, D0.DocNum)
FROM ODPO D0
WHERE D0.TransId = T1.TransId)
WHEN '30' THEN CASE ISNUMERIC(T1.Ref1)
WHEN 1 THEN T1.Ref1 ELSE T1.TransId END
ELSE T0.TransId END AS NumDoc
T1 es JDT1
Edited by: rulius on Oct 29, 2010 3:16 PM
Bueno Rulius, queria denuevo agradecer tu ayuda
Y la query va de la siguiente manera
SELECT
T1.TransId 'Diario',
T0.FormatCode 'Cuenta',
T0.AcctName,
T1.Debit 'Debe',
T1.Credit 'Haber',
(T1.Debit - T1.Credit) 'Saldo',
CASE T1.TransType
WHEN '13' THEN (SELECT D0.Comments FROM OINV D0 WHERE D0.TransId = T4.TransId)
WHEN '14' THEN (SELECT D0.Comments FROM ORIN D0 WHERE D0.TransId = T4.TransId)
WHEN '15' THEN (SELECT D0.Comments FROM ODLN D0 WHERE D0.TransId = T4.TransId)
WHEN '18' THEN (SELECT D0.Comments FROM OPCH D0 WHERE D0.TransId = T4.TransId)
WHEN '19' THEN (SELECT D0.Comments FROM ORPC D0 WHERE D0.TransId = T4.TransId)
WHEN '20' THEN (SELECT D0.Comments FROM OPDN D0 WHERE D0.TransId = T4.TransId)
WHEN '21' THEN (SELECT D0.Comments FROM ORPD D0 WHERE D0.TransId = T4.TransId)
WHEN '59' THEN (SELECT D0.Comments FROM OIGN D0 WHERE D0.TransId = T4.TransId)
WHEN '67' THEN (SELECT D0.Comments FROM OWTR D0 WHERE D0.TransId = T4.TransId)
WHEN '162' THEN (SELECT D0.Comments FROM OMRV D0 WHERE D0.TransId = T4.TransId)
Else
T4.Memo
End AS 'Comentarios',
T4.Memo 'Com.Sistema',
T1.RefDate 'Fecha Contable',
T2.CreateDate 'Fecha Creacion',
T1.ShortName 'S/N',
T3.U_NAME 'Usuario'
FROM OACT T0
INNER JOIN JDT1 T1 ON T1.Account = T0.AcctCode
INNER JOIN OJDT T2 ON T1.Transid = T2.Transid
INNER JOIN OUSR T3 ON T1.UserSign = T3.UserID
INNER JOIN OJDT T4 ON T1.Transid = T4.Transid
WHERE T1.RefDate BETWEEN [%0] AND [%1]
AND
T0.Segment_0 = [%2]
Posteriormente seguire agregando mas TransType
Atte.
FLR
User | Count |
---|---|
91 | |
7 | |
7 | |
4 | |
3 | |
3 | |
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.