const //Para Función MiAutoCod
VMiAutoCodTipo='L';
VMiAutoCodCod='0';
VMiAutoCodFC=' ';
VMiAutoCodLong=0;
//------------------------------------------------------------------------------
//**********************************************************[ MIAUTOCOD ]*******
// JLGT 25/11/2010 Se encarga de ajustar el código a un largo determinado,
// teniendo como control inicial la decena del año, más un número de control
// Con la inestimable ayuda de Andres1569, Escafandra y Delphius del DelphiAcces
// ---------Ejemplo------------
// En el OnExit de un Edit o DbEdit
// TDbedit(Sender).text:=MiAutoCod(,TDbEdit(Sender).text,,);
//------------------------------------------------------------------------------
Function MiAutoCod(Cod: String=VMiAutoCodCod; //Valor del Código por defecto 0
Tipo: String=VMiAutoCodTipo; //Tipo de código, para L para lote, F, para Factura, A para albaranes, O para otros por defecto ''
Long: integer=VMiAutoCodLong; //Lago que debe adquirir la cadena
Fecha: string=VMiAutoCodFC):string; //Para capturar el año para el inicio del lote
var CadDoc,TxtFormat : string; Year, Month, Day: Word; Vano, Vlargo: Integer;
begin
CadDoc:='';
if Fecha=' ' then fecha:=DateToStr(now);
DecodeDate(Strtodate(Fecha), Year, Month, Day);
Vano := StrToInt(AnsiRightStr(Inttostr(Year), 2));
// ShowMessage('Fecha: ' +fecha+ #13#10+
// 'Código:' +cod+ #13#10+
// 'Tipo: ' +Tipo+ #13#10+
// 'Largo: ' +IntToStr(long)+ #13#10+
// 'Año: ' +IntToStr(Vano));
tipo:=UpperCase(Tipo);
if ((Tipo='L') or (tipo='F')) then Vlargo:=6 //Si es tipo Factura o Lote largo de 6
else
begin
if tipo='A' then Vlargo:=7 //Si es tipo Albarán largo de 7
else
begin
if Tipo='O' then Vlargo:=Long //Si es tipo Otro el largo lo determina long
else Vlargo:=0; // Si no es ninguno de ellos largo 0
end;
end;
if (Length(Cod) <> Vlargo) then
begin
TxtFormat:='%.2d%.'+IntToStr(Vlargo-2)+'d';
CadDoc := Format(TxtFormat, [Vano, StrToInt(cod)]);
end;
Result:=CadDoc;
end;