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.