unit uBizEjercicios;

interface

uses
  uDAInterfaces, uDADataTable, uDBSelectionListUtils, schEjerciciosClient_Intf;

const
  BIZ_CLIENT_Ejercicio = 'Client.Ejercicio';
  CTE_ABIERTO = 'ABIERTO';
  CTE_CERRADO = 'CERRADO';  

type
  IBizEjercicio = interface(IEjercicios)
    ['{328DA20D-75E5-47D5-A0D6-C7036E2A038F}']
    function EsNuevo : Boolean;
  end;

  TBizEjercicio = class(TEjerciciosDataTableRules, IBizEjercicio, ISeleccionable)
  protected
    FSeleccionableInterface: ISeleccionable;
    procedure OnNewRecord(Sender: TDADataTable); override;
  public
    property SeleccionableInterface : ISeleccionable read FSeleccionableInterface write FSeleccionableInterface implements ISeleccionable;
    constructor Create(aDataTable: TDADataTable); override;
    destructor Destroy; override;

    procedure IniciarValoresEjercicioNueva;
    function EsNuevo : Boolean;
  end;

implementation

{ TBizEjercicio }

uses
  SysUtils, uDataTableUtils, uDateUtils, uFactuGES_App;

constructor TBizEjercicio.Create(aDataTable: TDADataTable);
begin
  inherited;
  FSeleccionableInterface := TSeleccionable.Create(aDataTable);
end;

destructor TBizEjercicio.Destroy;
begin
  FSeleccionableInterface := NIL;
  inherited;
end;

function TBizEjercicio.EsNuevo: Boolean;
begin
  Result := (ID < 0);
end;

procedure TBizEjercicio.IniciarValoresEjercicioNueva;
begin
  ID_EMPRESA := AppFactuGES.EmpresaActiva.ID;
  ACTIVO := 1;
  ESTADO := CTE_ABIERTO;
  NOMBRE := 'Ejercicio ...';
  FECHA_INICIO := DarInicioAno(date);
  FECHA_FIN := DarFinAno(date);  
end;

procedure TBizEjercicio.OnNewRecord(Sender: TDADataTable);
begin
  inherited;
  IniciarValoresEjercicioNueva;
end;

initialization
  RegisterDataTableRules(BIZ_CLIENT_Ejercicio, TBizEjercicio);

finalization

end.

