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
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:
OPCH : Facturas, aqui se guardan tanto factura de proveedorres como Factura de reserva, las Facturas de reserva las identificas por el campo “IsIns” = “Y”
OPDN: Entrada de Mercancia, que puede venir tanto de una OPOR, como de una OPCH
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