unit uLotesLogic;

interface

uses
  System.SysUtils, System.DateUtils;

type
  TLotesLogic = class
  public
    /// <summary>
    /// Genera un código de lote basado en el ID del producto y la fecha actual.
    /// Formato: [ID_PRODUCTO][AAAAMMDD]
    /// </summary>
    class function GenerarCodigoLote(const AIDProducto: string): string;
    
    /// <summary>
    /// Valida si un código de lote cumple con la estructura requerida.
    /// </summary>
    class function EsLoteValido(const ACodigoLote: string): Boolean;
  end;

implementation

{ TLotesLogic }

class function TLotesLogic.GenerarCodigoLote(const AIDProducto: string): string;
var
  LFechaStr: string;
begin
  // AAAAMMDD
  LFechaStr := FormatDateTime('yyyymmdd', Now);
  Result := Trim(AIDProducto) + LFechaStr;
end;

class function TLotesLogic.EsLoteValido(const ACodigoLote: string): Boolean;
begin
  // Implementación de validación según longitud y formato
  // Por ahora validamos que no esté vacío y tenga al menos 9 caracteres (1 prod + 8 fecha)
  Result := (Length(ACodigoLote) >= 9);
end;

end.
