Lo que puedes hacer con el Reporteador: Documento con KIT's y Lotes

DIY: Lo que puedes hacer usando el Reporteador de Microsip

Les comparto el procedimiento para que se muestren los Lotes tanto del Kit como de los Componentes.

Kits( Juego) con Lotes y sus Componentes con Lotes

Pasos:

Bajas la forma original Documento de Inventarios desde el Reporteador de Microsip.

Agregas una variable mem

Cambias el contenido de este procedimiento

con este códgo

procedure varArticuloCompOnCalc(var Value: Variant);
var
  Series, Lotes: string;  
  FClaveSerie: string;
  FClaveLote: string;  
  FFechaLote: TDateTime;
  FFechaStrLote: string;
  FUnidadesLote: Double;
  FUnidadesStrLote: string;
  FArticulo_id: Integer;  

begin
  SetQuery('SELECT A.ARTICULO_ID, B.NOMBRE, B.UNIDAD_VENTA, B.SEGUIMIENTO, B.ES_IMPORTADO, '+
           'A.CLAVE_ARTICULO, A.UNIDADES '+
	         'FROM DOCTOS_IN_DET A '+
           'JOIN ARTICULOS B '+
           'ON A.ARTICULO_ID = B.ARTICULO_ID '+
           'WHERE (A.DOCTO_IN_DET_ID = :DOCTO_IN_DET_ID) ');
  SetParamValue('DOCTO_IN_DET_ID', MovtosComplementariosInv['Sub Movto Id']);
  OpenQuery; 
  FArticulo_id := GetFieldAsInteger('ARTICULO_ID'); 
  FArticuloComp := GetFieldAsString('CLAVE_ARTICULO');
  FNombreArticuloComp := GetFieldAsString('NOMBRE');
  memNombreArticuloComp.Lines.Clear;
  memNombreArticuloComp.Lines.Add(FNombreArticuloComp);
  FUMedComp:= GetFieldAsString('UNIDAD_VENTA');
  FUnidadesComp := GetFieldAsFloat('UNIDADES');
  FSeguimientoComp := GetFieldAsString('SEGUIMIENTO');
  FEsImportadoComp := GetFieldAsString('ES_IMPORTADO');
  CloseQuery;   
  Value := FArticuloComp;
  
  
  
  Lotes := '';
{  memLotes.Visible := TraspasosInvDetalle['Seguimiento'] = 'L'; }
  memLotes.Visible := True ;
  if memLotes.Visible then
  begin
    memLotes.Lines.Clear;
    SetQuery(
              'SELECT ' +
              '           X.UNIDADES, ' + 
              '           Y.CLAVE, ' + 
              '           Y.FECHA ' +
              'FROM       DESGLOSE_EN_DISCRETOS X ' +
              'INNER JOIN ARTICULOS_DISCRETOS   Y ON ( Y.ART_DISCRETO_ID = X.ART_DISCRETO_ID ) ' +
              'WHERE      ( Y.TIPO = ''L'' ) ' + 
              '       AND ( X.DOCTO_IN_DET_ID = :CMC_DOCTO_IN_DET_ID ) ' +
              '       AND ( Y.ARTICULO_ID     = :CMC_ARTICULO_ID )' 
            );
    SetParamValue('CMC_DOCTO_IN_DET_ID', MovtosComplementariosInv['Sub Movto Id'] );
    SetParamValue('CMC_ARTICULO_ID', FArticulo_id );
    OpenQuery;
    First;
    while not Eof do
    begin
      FClaveLote := GetFieldAsString('CLAVE');
      FFechaLote := GetFieldAsDate('FECHA');
      FFechaStrLote := FormatDateTime('dd-mmm-yyyy',FFechaLote);
      FUnidadesLote := GetFieldAsFloat('UNIDADES');
      FUnidadesStrLote := NumStr(True, FUnidadesLote, 18, 5, 0, 'N');
    	if Lotes = '' then
    	  Lotes := FClaveLote+ '/' + FFechaStrLote + '/' + FUnidadesStrLote
      else    	
        Lotes := Lotes + '; ' + FClaveLote+ '/' + FFechaStrLote + '/' + FUnidadesStrLote;
      Next;
    end;
    memLotes.Lines.Add('Lotes: ' + Lotes);
    CloseQuery;
  end;
    
end;

Y en el articulo KIY/Juego, activas Imprimir componentes en las formas de la pestaña Componentes.