cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda en Query

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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.

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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

felipe_loyolarodriguez
Active Contributor
0 Kudos

Rulius,

Tienes razon, necesitaba el campo "TransType" en vez de la variable de la pantalla, ya que era para una consulta de informe.

De antemano, gracias

Atte.

FLR

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

Answers (0)