Query de Pedidos: OPOR y la ODPO


#1

Hola buen día
Soy Nuevo con las Consultas de SQL con las tablas de SAP B1 me podrían apoyar como debo ligar la tabla OPOR y la ODPO
Ya que necesito ver la info de pedidos con Facturas de anticipos y las entradas con Facturas de Proveedor

la tablas las quise unir de esta manera pero no me da el resultado correcto
select t3.DocNum,t5.DocNum
from opor t3
inner join por1 t4 on t3.DocEntry=t4.DocEntry
left join odpo t5 on t4.TrgetEntry=t5.DocEntry

de que manera podría enlazarla.


#2

Hola @JAVIER_NARANJ podías pasar por presentaciones y así sabemos algo más


#3

Hola si claro
Lo que busco es saber cual es el pedido de la Factura de anticipo
y de la factura de proveedor cual es la entrada


#4

Hola @JAVIER_NARANJ, te sugiero como primera medida que crees tu tema de presentación, esto nos ayuda a tener contexto de tu perfil, para poder ayudarte mejor:
Puedes seguir este tema para ayudarte a entender el porque: ¡Hola! ¿Cómo deberías presentarte y para qué?

Respecto a tu consulta, tienes las siguientes tablas:

  1. OPCH : Facturas, aqui se guardan tanto factura de proveedorres como Factura de reserva, las Facturas de reserva las identificas por el campo “IsIns” = “Y”
  2. OPDN: Entrada de Mercancia, que puede venir tanto de una OPOR, como de una OPCH
  3. OPOR: Orden de compra

tienes que tomar en cuenta que la relacion entre documento no es a nivel cabecera sino a detalle, y es posible que Factura de reserva gener mas de una entrega, y asi mismo varias entregas se copien a una misma factura, o una Entrega se copie en varias facturas.
Te paso un query que relaciona estos documentos y lo filtra por proveedor, como ejemplo para que lo adaptes:

SELECT
T0.[CardCode],
T0.[CardName],
T0.[DocNum],
T0.[DocDate],
T1.[WhsCode],
T1.[ItemCode],
T1.[Dscription],
T1.LineNum+1 AS Linea,
T1.[Quantity], 
T1.[Currency],
T1.[PriceAfVAT],
T1.[Quantity]*T1.[PriceAfVAT] as "Total",
'Doc Dest.' = CASE 
WHEN T3.OBJTYPE = '18' AND T3.ISINS = 'Y' THEN 'Fact. Reserva Prov.'
WHEN T3.OBJTYPE = '18' AND T3.ISINS = 'N' THEN 'Fact. Prov'
WHEN T5.OBJTYPE = '20' THEN 'Entrada Merc.'
ELSE NULL END,
'Num. Doc' = CASE 
WHEN T3.OBJTYPE = '18' THEN T3.DOCNUM
WHEN T5.OBJTYPE = '20' THEN T5.DOCNUM
ELSE NULL END

FROM OPOR T0
INNER JOIN POR1 T1 ON T0.DOCENTRY = T1.DOCENTRY
LEFT OUTER JOIN PCH1 T2 ON T2.BASEENTRY = T1.DOCENTRY AND T2.BASETYPE = T1.OBJTYPE AND T2.BASELINE = T1.LINENUM
LEFT OUTER JOIN OPCH T3 ON T2.DOCENTRY = T3.DOCENTRY
LEFT OUTER JOIN PDN1 T4 ON T4.BASEENTRY = T1.DOCENTRY AND T4.BASETYPE = T1.OBJTYPE AND T4.BASELINE = T1.LINENUM
LEFT OUTER JOIN OPDN T5 ON T4.DOCENTRY = T5.DOCENTRY

WHERE
T0.[CardCode] =[%0] AND
T0.[CANCELED] ='N' AND
T1.LineStatus = 'C'

ORDER BY T0.DOCNUM ASC

Espero te sirva.

Saludos,


#5

Muchas gracias por su aportación