Reporte de Solicitudes de compra, Ordenes de Compra y Entradas
Buenos días Comunidad, espero tengan un excelente día.
Disculpen solicito de su apoyo ya que surgió la necesidad de hacer un Query que me pueda mostrar las Solicitudes de Compra abiertas, así como los Pedidos y las entradas, esto con la finalidad de poder rastrear una solicitud desde el inicio hasta su cierre ya que actualmente no se lleva el control de esto.
Intente realizarlo, pero no he podido ver en donde puedo relacionar la solicitud de compra con el pedido, en el campo de comentarios de mi pedido viene el numero de la orden de compra en el que se basa el pedido, pero no solo viene ese numero si no que ademas viene también una descripción.
Para esto intente hacer un Like en la condición para poderlos enlazar , por que ademas debo hacer un filtro por usuario que lo solicito.
Buen día @Alberth121484 , en las tablas de la descripción viene un campo TrgetEntry que es el DocEntry de los documentos a seguir ej. Solicitud de compra -> Oferta compra TrgetEntry de la solicitud es el DocEntry de la Oferta, con ese campo puedes hacer los Joins, aqui dejo un pequeño ej de los datos.
`
SELECT T0.DocNum 'Solicitud',
T2.DocNum 'Pedido',
T4.DocNum 'Factura',
T6.DocNum 'Entrega'
FROM OPRQ T0
LEFT JOIN PRQ1 T1 ON T0.[DocEntry] = T1.[DocEntry]
LEFT JOIN OPOR T2 ON T1.TrgetEntry = T2.DocEntry
LEFT JOIN POR1 T3 ON T2.DocEntry = T3.DocEntry
LEFT JOIN OPCH T4 ON T3.TrgetEntry = T4.DocEntry
LEFT JOIN PCH1 T5 ON T4.DocEntry = T5.DocEntry
LEFT JOIN OPDN T6 ON T5.TrgetEntry = T6.DocEntry
`
Espero y te sirva, esto es lo que te entendí que necesitabas. Saludos
Muchas gracias @Enrique1, Me ayudaste bastante para poder realizar el Query que necesitaba.
Te comparto como quedo mi código al final, así como también una imagen del resultado del Query.
Código:
SELECT DISTINCT (T0.DocNum) 'ID', T1.DocDate [Fecha Solicitud],T0.DocNum [Solicitud],Case When T2.DocEntry <> 0 Then 'Autorizada' When T0.CANCELED = 'N' Then 'Pendiente de Autozizar' When T0.CANCELED = 'Y' Then 'Cancelada' END [Estatus],
T2.DocDate[Fecha de Oferta],T2.DocNum [Oferta],Case When T4.DocEntry <> 0 Then 'Autorizada' When T2.CANCELED = 'N' Then 'Pendiente de Autozizar' When T2.CANCELED = 'Y' Then 'Cancelada' END [Estatus],
T4.DocDate[Fecha de Pedido],T4.DocNum [Pedido],Case When T6.DocEntry <> 0 Then 'Autorizada' When T4.CANCELED = 'N' Then 'Pendiente de Autozizar' When T4.CANCELED = 'Y' Then 'Cancelada' END [Estatus],
T6.DocDate[Fecha de Entrega],T6.DocNum [Entrega],Case When T8.DocEntry <> 0 Then 'Autorizada' When T6.CANCELED = 'N' Then 'Pendiente de Autozizar' When T6.CANCELED = 'Y' Then 'Cancelada' END [Estatus],
T8.DocDate[Fecha de Entrega],T8.DocNum [Factura'],Case When T8.DocStatus = 'O' Then 'Abierta' When T8.DocStatus = 'C' Then 'Cerrada' END [Estatus],
T0.ReqName [Solicitado por...],
T4.CardName [Proveedor]
FROM OPRQ T0
LEFT JOIN PRQ1 T1 ON T0.[DocEntry] = T1.[DocEntry]
LEFT JOIN OPQT T2 ON T1.TrgetEntry = T2.DocEntry
LEFT JOIN PQT1 T3 ON T2.DocEntry = T3.DocEntry
LEFT JOIN OPOR T4 ON T3.TrgetEntry = T4.DocEntry
LEFT JOIN POR1 T5 ON T4.DocEntry = T5.DocEntry
LEFT JOIN OPDN T6 ON T5.TrgetEntry = T6.DocEntry
LEFT JOIN PDN1 T7 ON T6.DocEntry = T7.DocEntry
LEFT JOIN OPCH T8 ON T7.TrgetEntry = T8.DocEntry
LEFT JOIN PCH1 T9 ON T8.DocEntry = T9.DocEntry
Where T0.Requester = 'mantto02' AND T0.DocDate BETWEEN '[%0]' AND '[%1]'
Como puedes ver solo realice un cambio de orden en tu Query.
Espero que este código le pueda servir a alguien que tiene la misma inquietud que yo.
Saludos.