{
===============================================================================
  Copyright (©) 2006. Rodax Software.
===============================================================================
  Los contenidos de este fichero son propiedad de Rodax Software titular del
  copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
  en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
  acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
  bajo el que se suministra.
  -----------------------------------------------------------------------------
  Web:  www.rodax-software.com
===============================================================================
  Fecha primera versión: 22-05-2006
  Versión actual: 1.0.0
  Fecha versión actual: 22-05-2006
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
===============================================================================
}

unit uEditorTiposIVA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  uIEditorTiposIVA, uBizTiposIVA, uTiposIVAController, DB, uDADataTable,
  ActnList, Grids, DBGrids, StdCtrls, ComCtrls, uDAInterfaces;

type
  TfEditorTiposIVA = class(TForm, IEditorTiposIVA)
    ActionList1: TActionList;
    dsTiposIVA: TDADataSource;
    actAnadir: TAction;
    actEliminar: TAction;
    bEliminar: TButton;
    actAceptar: TAction;
    actCancelar: TAction;
    bAceptar: TButton;
    bCancelar: TButton;
    actCerrar: TAction;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Label1: TLabel;
    bAnadir: TButton;
    actModificar: TAction;
    Button1: TButton;
    ListaTiposIVA: TDBGrid;
    procedure FormShow(Sender: TObject);                     

    procedure actAnadirExecute(Sender: TObject);
    procedure actEliminarExecute(Sender: TObject);
    procedure actAceptarExecute(Sender: TObject);
    procedure actCancelarExecute(Sender: TObject);
    procedure actCerrarExecute(Sender: TObject);
    procedure actAnadirUpdate(Sender: TObject);
    procedure actEliminarUpdate(Sender: TObject);
    procedure actModificarExecute(Sender: TObject);
    procedure ListaTiposIVADblClick(Sender: TObject);
    procedure actModificarUpdate(Sender: TObject);
  protected
    FTiposIVA: IBizTipoIVA;
    FController: ITiposIVAController;
    function GetTiposIVA: IBizTipoIVA;
    procedure SetTiposIVA(const Value: IBizTipoIVA);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property TiposIVA: IBizTipoIVA read GetTiposIVA write SetTiposIVA;
  end;


implementation
{$R *.dfm}

{ TfEditorTiposIVA }

uses
  uDialogUtils, uFactuGES_App;

function TfEditorTiposIVA.GetTiposIVA: IBizTipoIVA;
begin
  Result := FTiposIVA;
end;

procedure TfEditorTiposIVA.ListaTiposIVADblClick(Sender: TObject);
begin
//  ListaTiposIVA.SelectedIndex
end;

procedure TfEditorTiposIVA.SetTiposIVA(const Value: IBizTipoIVA);
begin
  FTiposIVA := Value;
  dsTiposIVA.DataTable := (FTiposIVA as IBizTipoIVA).DataTable;
  dsTiposIVA.DataTable.Open;
end;

procedure TfEditorTiposIVA.actAnadirExecute(Sender: TObject);
begin
  FController.Anadir(TiposIVA);
  FController.Ver(TiposIVA);
end;

procedure TfEditorTiposIVA.actEliminarExecute(Sender: TObject);
begin
  if (ShowConfirmMessage('¿Desea borrar este tipo de IVA?', '') = IDYES) then
    FController.Eliminar(FTiposIVA)
end;

procedure TfEditorTiposIVA.actEliminarUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(FTiposIVA) and
                                 FTiposIVA.DataTable.Active and
                                 (FTiposIVA.DataTable.RecordCount > 0) and
                                 (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_ADMINISTRADOR);
end;

procedure TfEditorTiposIVA.actModificarExecute(Sender: TObject);
begin
  FController.Ver(TiposIVA);
end;

procedure TfEditorTiposIVA.actModificarUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(FTiposIVA) and
                                 FTiposIVA.DataTable.Active and
                                 (FTiposIVA.DataTable.RecordCount > 0) and
                                 (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_ADMINISTRADOR);
end;

constructor TfEditorTiposIVA.Create(AOwner: TComponent);
begin
  inherited;
  FController := TTiposIVAController.Create;
end;

destructor TfEditorTiposIVA.Destroy;
begin
  FTiposIVA := NIL;
  FController := NIL;
  inherited;
end;

procedure TfEditorTiposIVA.actAceptarExecute(Sender: TObject);
begin
  try
    TiposIVA.DataTable.ApplyUpdates;
  except
    on E : Exception do begin
      TiposIVA.DataTable.CancelUpdates;
      ShowErrorMessage('Error al guardar cambios', 'Se ha producido un error grave', E);
      exit;
    end;
  end;
  actCerrar.Execute;
end;

procedure TfEditorTiposIVA.actCancelarExecute(Sender: TObject);
begin
  TiposIVA.DataTable.CancelUpdates;
  actCerrar.Execute;
end;

procedure TfEditorTiposIVA.actCerrarExecute(Sender: TObject);
begin
  Close;
end;

procedure TfEditorTiposIVA.actAnadirUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(FTiposIVA) and
                                 FTiposIVA.DataTable.Active;
end;

procedure TfEditorTiposIVA.FormShow(Sender: TObject);
begin
  if not FTiposIVA.DataTable.Active then
     FTiposIVA.DataTable.Active := true;

  ListaTiposIVA.SetFocus;
end;

end.
