Query Manager: Factura con Entrada

Buenas tardes compañeros, necesitaría un query que vincule la factura con la entrada:

De la tabla de OPCH necesito el campo TransID. De la tabla pch1 el campo T1.“AcctCode” y de la tabla pdn1, el campo T3.“AcctCode”

He realizado varias pruebas pero no llego a lo esperado:
No logro hacer bien las uniones de las tablas, que recomiendan para obtener dicho resultado?

image

Muchas gracias, saludos

Hola amigo.

Hay varios temas con la información que buscas:
https://foros.consultoria-sap.com/search?q=baseentry

Este Join te serviría:

FROM [dbo].[OPCH] T0 
INNER JOIN [dbo].[PCH1] T1 ON T0.DocEntry = T1.DocEntry
LEFT JOIN [dbo].[PDN1] T2 ON T1.BaseEntry = T2.DocEntry AND T1.BaseType = T2.ObjType AND T1.BaseLine = T2.LineNum
LEFT JOIN [dbo].[OPDN] T5 ON T5.DocEntry = T2.DocEntry

Saludos.

1 me gusta

Hice la pruebe pero no me trae las entradas que están relacionadas con la factura o no me trae ninguna entrada cuando tiene, que podría estar mal?

SELECT 
T0."TransId"
, T1."ItemCode"
, T1."AcctCode"
,  T3."TransId"
, T2."AcctCode" 
FROM 
OPCH T0
INNER JOIN PCH1 T1 ON T0."DocEntry" = T1."DocEntry"
LEFT JOIN PDN1 T2 ON T1."BaseEntry" = T2."DocEntry" AND T1."BaseType" = T2."ObjType" AND T1."BaseLine" = T2."LineNum"
LEFT JOIN OPDN T3 ON T3."DocEntry" = T2."DocEntry" 
WHERE 
T0."DocDate" >=[%0] AND  T0."DocDate" <=[%1] 
AND 
T1."AcctCode" Like '%%1.1.080.40.001%%'

Que tal.

Si ejecuto tu query sin el Where, me trae datos sin problema, pudiera ser que en efecto no está encontrando resultados con los parámetros que utilizas.

Prueba como te comento, ejecuta sin Where para que puedas percatarte que te trae los datos que buscas, saludos.

Me sigue sucediendo lo mismo. Que podría ser? alguna relación entre las tablas?

Tengo dudas de esta relación si estará OK
LEFT JOIN PDN1 T2 ON T1.“BaseEntry” = T2.“DocEntry” AND T1.“BaseType” = T2.“ObjType” AND T1.“BaseLine” = T2.“LineNum”

Te comparto lo que tengo funcional en mis reportes, hay muchas maneras de ligar documento base con documento destino, utiliza el buscador y experimenta con alguna otra relación de tablas:
https://foros.consultoria-sap.com/search?q=baseentry

Select
T0.TransId
, T1.ItemCode
, T1.AcctCode
,  T3.TransId
, T2.AcctCode 
FROM 
OPCH T0
INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry
LEFT JOIN PDN1 T2 ON T1.BaseEntry = T2.DocEntry AND T1.BaseType = T2.ObjType And T1.BaseLine = T2.LineNum
LEFT JOIN OPDN T3 ON T3.DocEntry = T2.DocEntry

Si no tienes una control estricto de que cada línea de tu entrada sea equivalente a una línea de tu factura, puedes prescindir de “T1.BaseLine = T2.LineNum”

controlaste si el nro de T3.“TransId” corresponde al de T0.“TransId”? por que a mi me trae cualquier otra relación

Creo que no comprendo qué es lo que prendes con tu query. El TransId es el número de póliza, no tendría porque haber relación de número de poliza de la entrada y el número de póliza de la factura.

En caso de hacer un cambio sería el tipo de Join entre OPDN y PDN1 que por error lo he dejado como “left” cuando debería ser “Inner”:

Select
T0.TransId
, T1.ItemCode
,  (Select TX.AcctName FROM OACT TX Where TX.AcctCode = T1.AcctCode)
,  T3.TransId
, (Select TX.AcctName FROM OACT TX Where TX.AcctCode = T2.AcctCode)
FROM 
OPCH T0
INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry
LEFT JOIN PDN1 T2 ON T1.BaseEntry = T2.DocEntry AND T1.BaseType = T2.ObjType And T1.BaseLine = T2.LineNum
INNER JOIN OPDN T3 ON T3.DocEntry = T2.DocEntry
Order By T0.TransId Desc

Y para poder comparar de manera visual, he agregado el nombre de la cuenta en lugar del código interno:

Debes tomar en cuenta primero el flujo de tu proceso, por que si primero registras la factura de reserva, y luego la entrada, ese query no funciona.

2 Me gusta

Estoy de acuerdo con @Willy_Caldero en el lugar donde estoy las facturas son casi al final del proceso.

1 me gusta

Totalmente de acuerdo, el documento base cambia si se trata de factura de reserva. En este caso el compañero nunca mencionó que se trata de factura de reserva, por ello la recomendación de joins.

Hola Amigos!!!, si perdón si no lo mencioné, es una factura de reserva. Muchas gracias por su aporte, me sirve, lo único que me faltaría es relacionar la tabla OPDN con las tablas OJDT/JDT1, ya que la de PDN1, me trae la cuenta contable de factura de reserva, y tendría que ser la del asiento contable. Lo pruebo y se los comparto.

1 me gusta

Enterado, la unión entre las tablas que comentas se realiza mediante el TransId.

Saludos.

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