Numero de Lote, Fecha Vencimiento Entrega

Estimados,

Como puedo unir la tabla ODLN con OBTN para sacar la Fecha de Vencimiento, Fecha Elaboracón, Lote relacionado a una Entrega

select t1.CardCode 'CodigoCliente', t1.CardName 'Nombre', t1.DocDueDate 'FechaEntrega', t2.ItemCode 'CodigoProducto', 
t2.Dscription 'Descrición', t2.U_Marca 'Marca', convert (int,t2.Quantity) 'Cajas', convert(int,t2.U_Kilos_Q) 'Kilos',t2.DocEntry
from ODLN AS T1
INNER JOIN DLN1 AS T2 ON T1.DocEntry =t2.DocEntry

Hola p.cabana, para poder realizar tu script tienes que hacer utilizar la tabla IBT1 ya que esta tabla tiene todos los movimiento de lotes y lo enlazas con el objectype, y basetype del documento.

Mira si te sirve este script lo realice ya que necesitaba algo parecido pero con mas documentos.

Espero te sea de utilidad

  SELECT --IBT1.ItemCode+'-'+IBT1.BatchNum AS ItemBatchNum, 
	   IBT1.ItemCode, IBT1.ItemName, IBT1.BatchNum, IBT1.DocDate, IBT1.WhsCode, 
			CASE WHEN IBT1.Direction=1 
				THEN IBT1.Quantity*-1 
				ELSE IBT1.Quantity 
			END AS Quantity, 
			IBT1.CardCode, IBT1.CardName
			,CASE 
				WHEN IBT1.[BaseType]=13 THEN 'Factura de Ventas'
				WHEN IBT1.[BaseType]=14 THEN 'N/C de Ventas'
				WHEN IBT1.[BaseType]=15 THEN 'Entrega de Ventas'
				WHEN IBT1.[BaseType]=16 THEN 'Devolución de Ventas'
				WHEN IBT1.[BaseType]=18 THEN 'Factura de Compras'
				WHEN IBT1.[BaseType]=19 THEN 'N/C de Compras'
				WHEN IBT1.[BaseType]=20 THEN 'Entrada de Compras'
				WHEN IBT1.[BaseType]=21 THEN 'Devolución de Compras'
				WHEN IBT1.[BaseType]=59 AND IGN1.BaseEntry IS NULL THEN 'Entrada de Mercancía'
				WHEN IBT1.[BaseType]=59 AND NOT(IGN1.BaseEntry IS NULL) THEN 'Recibo de Producción'
				WHEN IBT1.[BaseType]=60 AND IGE1.BaseEntry IS NULL THEN 'Salida de Mercancía'
				WHEN IBT1.[BaseType]=60 AND NOT(IGE1.BaseEntry IS NULL) THEN 'Emisión para Producción'
				WHEN IBT1.[BaseType]=67 THEN 'Traslado'
				ELSE convert(varchar, IBT1.[BaseType] )
			END AS BaseTypeDesc
			,CASE 
				WHEN IBT1.[BaseType]=59 AND NOT(IGN1.BaseEntry IS NULL) THEN OWOR_IGN1.DocEntry
				WHEN IBT1.[BaseType]=60 AND NOT(IGE1.BaseEntry IS NULL) THEN OWOR_IGE1.DocEntry
				ELSE NULL
			END AS DocEntryOP
			,CASE 
				WHEN IBT1.[BaseType]=59 AND NOT(IGN1.BaseEntry IS NULL) THEN OWOR_IGN1.DocNum
				WHEN IBT1.[BaseType]=60 AND NOT(IGE1.BaseEntry IS NULL) THEN OWOR_IGE1.DocNum
				ELSE NULL
			END AS DocNumOP
			,CASE 
				WHEN IBT1.[BaseType]=59 AND NOT(IGN1.BaseEntry IS NULL) THEN OWOR_IGN1.ItemCode
				WHEN IBT1.[BaseType]=60 AND NOT(IGE1.BaseEntry IS NULL) THEN OWOR_IGE1.ItemCode
				ELSE NULL
			END AS ItemCodeOP
			,CASE 
				WHEN IBT1.[BaseType]=59 AND NOT(IGN1.BaseEntry IS NULL) THEN (SELECT OITM.ItemName FROM OITM WHERE OITM.ItemCode=OWOR_IGN1.ItemCode)
				WHEN IBT1.[BaseType]=60 AND NOT(IGE1.BaseEntry IS NULL) THEN (SELECT OITM.ItemName FROM OITM WHERE OITM.ItemCode=OWOR_IGE1.ItemCode)
				ELSE NULL
			END AS ItemNameOP
			,CASE 
				WHEN IBT1.[BaseType]=13 THEN OINV.NumAtCard
				WHEN IBT1.[BaseType]=14 THEN ORIN.NumAtCard
				WHEN IBT1.[BaseType]=15 THEN ODLN.NumAtCard
				WHEN IBT1.[BaseType]=16 THEN ORDN.NumAtCard
				WHEN IBT1.[BaseType]=18 THEN OPCH.NumAtCard
				WHEN IBT1.[BaseType]=19 THEN ORPC.NumAtCard
				WHEN IBT1.[BaseType]=20 THEN OPDN.NumAtCard
				WHEN IBT1.[BaseType]=21 THEN ORPD.NumAtCard
				WHEN IBT1.[BaseType]=59 THEN OIGN.Ref1
				WHEN IBT1.[BaseType]=60 THEN OIGE.Ref1
				WHEN IBT1.[BaseType]=67 THEN OWTR.Ref1
				ELSE NULL
			END AS BaseNumAtCard
			/*,CASE 
				WHEN IBT1.BaseType=13 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND OINV.Series=NNM1.Series)
				WHEN IBT1.BaseType=14 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND ORIN.Series=NNM1.Series)
				WHEN IBT1.BaseType=15 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND ODLN.Series=NNM1.Series)
				WHEN IBT1.BaseType=16 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND ORDN.Series=NNM1.Series)
				WHEN IBT1.BaseType=18 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND OPCH.Series=NNM1.Series)
				WHEN IBT1.BaseType=19 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND ORPC.Series=NNM1.Series)
				WHEN IBT1.BaseType=20 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND OPDN.Series=NNM1.Series)
				WHEN IBT1.BaseType=21 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND ORPD.Series=NNM1.Series)
				WHEN IBT1.BaseType=59 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND OIGN.Series=NNM1.Series)
				WHEN IBT1.BaseType=60 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND OIGE.Series=NNM1.Series)
				WHEN IBT1.BaseType=67 THEN (SELECT NNM1.SeriesName FROM NNM1 WHERE IBT1.BaseType=NNM1.ObjectCode AND OWTR.Series=NNM1.Series)
				ELSE NULL
			END AS SerieSAP*/
			,CASE 
				WHEN IBT1.[BaseType]=13 THEN OINV.DocNum
				WHEN IBT1.[BaseType]=14 THEN ORIN.DocNum
				WHEN IBT1.[BaseType]=15 THEN ODLN.DocNum
				WHEN IBT1.[BaseType]=16 THEN ORDN.DocNum
				WHEN IBT1.[BaseType]=18 THEN OPCH.DocNum
				WHEN IBT1.[BaseType]=19 THEN ORPC.DocNum
				WHEN IBT1.[BaseType]=20 THEN OPDN.DocNum
				WHEN IBT1.[BaseType]=21 THEN ORPD.DocNum
				WHEN IBT1.[BaseType]=59 THEN OIGN.DocNum
				WHEN IBT1.[BaseType]=60 THEN OIGE.DocNum
				WHEN IBT1.[BaseType]=67 THEN OWTR.DocNum
				ELSE NULL
			END AS DocNumSAP
			/*,CASE 
				WHEN IBT1.[BaseType]=13 THEN INV1.unitMsr
				WHEN IBT1.[BaseType]=14 THEN RIN1.unitMsr
				WHEN IBT1.[BaseType]=15 THEN DLN1.unitMsr
				WHEN IBT1.[BaseType]=16 THEN RDN1.unitMsr
				WHEN IBT1.[BaseType]=18 THEN PCH1.unitMsr
				WHEN IBT1.[BaseType]=19 THEN RPC1.unitMsr
				WHEN IBT1.[BaseType]=20 THEN PDN1.unitMsr
				WHEN IBT1.[BaseType]=21 THEN RPD1.unitMsr
				WHEN IBT1.[BaseType]=59 THEN IGN1.unitMsr
				WHEN IBT1.[BaseType]=60 THEN IGE1.unitMsr
				WHEN IBT1.[BaseType]=67 THEN WTR1.unitMsr
				ELSE NULL
			END AS unitMsr, IBT1.BaseEntry, IBT1.BaseType, IBT1.Direction, OIBT.ExpDate, 
			(Select MAX(upper(T0.U_DoctoSerie)) from OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry=T1.DocEntry where ODLN.DocEntry=T1.BaseEntry AND ISNULL(T1.BaseType,0)=15) as U_FacSerie, 
			(Select MAX(T0.U_DoctoNo) from OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry=T1.DocEntry where ODLN.DocEntry=T1.BaseEntry AND ISNULL(T1.BaseType,0)=15) as U_Facnum, 
			(Select MAX(TaxDate) from OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry=T1.DocEntry where ODLN.DocEntry=T1.BaseEntry AND ISNULL(T1.BaseType,0)=15) as TaxDate,
			(Select MAX(U_NoCont) from OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry=T1.DocEntry where ODLN.DocEntry=T1.BaseEntry AND ISNULL(T1.BaseType,0)=15) as Contraseña*/
			
		FROM IBT1 IBT1
			LEFT JOIN INV1  ON IBT1.BaseType=13 AND IBT1.BaseEntry=INV1.DocEntry AND IBT1.BaseLinNum=INV1.LineNum	--Detalle de Facturas de Venta
				LEFT JOIN OINV ON IBT1.BaseType=13 AND IBT1.BaseEntry=OINV.DocEntry AND OINV.CANCELED='N'				--Maestro de Facturas de Venta 	
			LEFT JOIN RIN1  ON IBT1.BaseType=14 AND IBT1.BaseEntry=RIN1.DocEntry AND IBT1.BaseLinNum=RIN1.LineNum	--Detalle de N/C de Venta
				LEFT JOIN ORIN ON IBT1.BaseType=14 AND IBT1.BaseEntry=ORIN.DocEntry	AND ORIN.CANCELED='N'				--Maestro de N/C de Venta 	
			LEFT JOIN DLN1 ON IBT1.BaseType=15 AND IBT1.BaseEntry=DLN1.DocEntry AND IBT1.BaseLinNum=DLN1.LineNum	--Detalle de Entregas de Venta
				LEFT JOIN ODLN ON IBT1.BaseType=15 AND IBT1.BaseEntry=ODLN.DocEntry	AND ODLN.CANCELED='N'			--Maestro de Entregas de Venta								
			LEFT JOIN RDN1 ON IBT1.BaseType=16 AND IBT1.BaseEntry=RDN1.DocEntry AND IBT1.BaseLinNum=RDN1.LineNum	--Detalle de Devoluciones de Venta
				LEFT JOIN ORDN ON IBT1.BaseType=16 AND IBT1.BaseEntry=ORDN.DocEntry	AND ORDN.CANCELED='N'				--Maestro de Devoluciones de Venta
			LEFT JOIN PCH1 ON IBT1.BaseType=18 AND IBT1.BaseEntry=PCH1.DocEntry AND IBT1.BaseLinNum=PCH1.LineNum	--Detalle de Facturas de Compra
				LEFT JOIN OPCH ON IBT1.BaseType=18 AND IBT1.BaseEntry=OPCH.DocEntry AND OPCH.CANCELED='N'				--Maestro de Facturas de Compra
			LEFT JOIN RPC1 ON IBT1.BaseType=18 AND IBT1.BaseEntry=RPC1.DocEntry AND IBT1.BaseLinNum=RPC1.LineNum	--Detalle de N/C de Compra
				LEFT JOIN ORPC ON IBT1.BaseType=18 AND IBT1.BaseEntry=ORPC.DocEntry	AND ORPC.CANCELED='N'				--Maestro de N/C de Compra
			LEFT JOIN PDN1 ON IBT1.BaseType=20 AND IBT1.BaseEntry=PDN1.DocEntry AND IBT1.BaseLinNum=PDN1.LineNum	--Detalle de Entradas de Compra
				LEFT JOIN OPDN ON IBT1.BaseType=20 AND IBT1.BaseEntry=OPDN.DocEntry	AND OPDN.CANCELED='N'				--Maestro de Entradas de Compra
			LEFT JOIN RPD1 ON IBT1.BaseType=21 AND IBT1.BaseEntry=RPD1.DocEntry AND IBT1.BaseLinNum=RPD1.LineNum	--Detalle de Devoluciones de Compra
				LEFT JOIN ORPD ON IBT1.BaseType=21 AND IBT1.BaseEntry=ORPD.DocEntry	AND ORPD.CANCELED='N'				--Maestro de Devoluciones de Compra
			LEFT JOIN IGN1 ON IBT1.BaseType=59 AND IBT1.BaseEntry=IGN1.DocEntry AND IBT1.BaseLinNum=IGN1.LineNum	--Detalle de Entradas de Mercancía
				LEFT JOIN OIGN ON IBT1.BaseType=59 AND IBT1.BaseEntry=OIGN.DocEntry	AND OIGN.CANCELED='N'				--Maestro de Entradas de Mercancía
			LEFT JOIN IGE1 ON IBT1.BaseType=60 AND IBT1.BaseEntry=IGE1.DocEntry AND IBT1.BaseLinNum=IGE1.LineNum	--Detalle de Salidas de Mercancía
				LEFT JOIN OIGE ON IBT1.BaseType=60 AND IBT1.BaseEntry=OIGE.DocEntry	AND OIGE.CANCELED='N'				--Maestro de Salidas de Mercancía
			LEFT JOIN WTR1 ON IBT1.BaseType=67 AND IBT1.BaseEntry=WTR1.DocEntry AND IBT1.BaseLinNum=WTR1.LineNum	--Detalle de Traslados
				LEFT JOIN OWTR ON IBT1.BaseType=67 AND IBT1.BaseEntry=OWTR.DocEntry	AND OWTR.CANCELED='N'				--Maestro de Traslados
			LEFT JOIN OWOR AS OWOR_IGN1 ON IGN1.BaseEntry=OWOR_IGN1.DocEntry AND NOT(IGN1.BaseEntry IS NULL)		--Maestro de Ordenes de Producción VS Recibo de Producción
			LEFT JOIN OWOR AS OWOR_IGE1 ON IGE1.BaseEntry=OWOR_IGE1.DocEntry AND NOT(IGE1.BaseEntry IS NULL)		--Maestro de Ordenes de Producción VS Emisión para Producción
			--LEFT JOIN INV1 AS INV1_ODLN ON ODLN.DocEntry=INV1_ODLN.BaseEntry AND INV1_ODLN.BaseType=15				--Detalle de Facturas vinculadas a entregas
			--LEFT JOIN OINV AS Factura ON INV1_ODLN.DocEntry=Factura.DocEntry AND NOT(INV1_ODLN.DocEntry IS NULL)	--Maestro de Facturas vinculadas a entregas
			LEFT JOIN OIBT ON IBT1.BatchNum=OIBT.BatchNum AND IBT1.ItemCode=OIBT.ItemCode AND IBT1.WhsCode=OIBT.WhsCode	--Maestro de Lotes
--WHERE IBT1.ItemCode = 'XXXXX' and IBT1.BatchNum ='XXX'

Saludos

1 me gusta

Muchas Gracias, realice la consulta de esta forma.

select t0.CardCode ‘Clinte’, t0.CardName ‘Nombre’, t0.BaseNum ‘N°Guia’ ,convert(date,t0.DocDate,102) ‘FechaDespacho’,t0.ItemCode ‘CodigoPRoducto’,
t0.ItemName ‘Descripción’, convert (int,t0.Quantity) ‘Cajas’, t1.LotNumber’Marca’, t1.MnfSerial ‘GP’, T1.DistNumber ‘Lote’,
convert(date,t1.ExpDate,102)‘FechaVencimiento’,convert (date,t1.MnfDate,102)‘FechaFabricación’
FROM IBT1 AS T0
left join OBTN AS t1 ON t0.BatchNum=t1.DistNumber
where t0.BaseType=15 and t0.Quantity>0

hola p.cabana que excelente que lograste hacer tu script, solo recuerda de cerra el tema y marcarlo como solucionado.

Saludos

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.