unit uEditorCuentasEspeciales;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uEditorBase, ToolWin, ComCtrls, JvExControls, JvComponent,
  JvNavigationPane, uViewCuentasEspeciales, uBizCuentasEspeciales, ActnList, DBActns, uViewGrid,
  Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX,
  TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable,
  JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage,
  JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase,
  uViewBarraSeleccion, pngimage, uIEditorCuentasEspeciales, uEditorGridBase,
  JvComponentBase, uViewGridBase, uCuentasEspecialesController, JvExComCtrls,
  JvStatusBar, uDAInterfaces, dxGDIPlusClasses;

type
  TfEditorCuentasEspeciales = class(TfEditorGridBase, IEditorCuentasEspeciales)
    frViewCuentasEspeciales1: TfrViewCuentasEspeciales;
    procedure FormShow(Sender: TObject);
  private
    FCuentasEspeciales: IBizCuentaEspecial;
    FController : ICuentasEspecialesController;
  protected
    function GetCuentasEspeciales: IBizCuentaEspecial;
    procedure SetCuentasEspeciales(const Value: IBizCuentaEspecial);
    function GetController : ICuentasEspecialesController; virtual;
    procedure SetController (const Value : ICuentasEspecialesController); virtual;

    procedure NuevoInterno; override;
    procedure EliminarInterno; override;
    procedure ModificarInterno; override;
    procedure DuplicarInterno; override;

  public
    procedure PonerTitulos(const ATitulo: string = ''); override;  
    property CuentasEspeciales: IBizCuentaEspecial read GetCuentasEspeciales write SetCuentasEspeciales;
    property Controller : ICuentasEspecialesController read GetController write SetController;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

implementation

uses
  uCustomEditor, uDataModuleUsuarios,
//  uEditorCuentaEspecial,
  uEditorDBBase, uFactuGES_App,
  cxGrid, cxGridCustomTableView; //, uListaCuentasEspeciales;

{$R *.dfm}

{
****************************** TfEditorCuentasEspeciales *******************************
}
procedure TfEditorCuentasEspeciales.FormShow(Sender: TObject);
begin
  inherited;

  if not Assigned(ViewGrid) then
    raise Exception.Create('No hay ninguna vista asignada');

  if not Assigned(CuentasEspeciales) then
    raise Exception.Create('No hay ningún CuentaEspecial asignado');

  CuentasEspeciales.DataTable.Active := True;
  ViewGrid.GotoFirst;
end;

function TfEditorCuentasEspeciales.GetCuentasEspeciales: IBizCuentaEspecial;
begin
  Result := FCuentasEspeciales;
end;

function TfEditorCuentasEspeciales.GetController: ICuentasEspecialesController;
begin
  Result := FController;
end;

procedure TfEditorCuentasEspeciales.ModificarInterno;
begin
  inherited;
  FController.Ver(CuentasEspeciales);
end;

procedure TfEditorCuentasEspeciales.NuevoInterno;
begin
  inherited;
  FController.Anadir(CuentasEspeciales);
  FController.Ver(CuentasEspeciales);
end;

procedure TfEditorCuentasEspeciales.PonerTitulos(const ATitulo: string);
var
  FTitulo : String;
begin
  FTitulo := 'Lista de CuentasEspeciales '; // + AppFactuGES.EmpresaActiva.NOMBRE;
  inherited PonerTitulos(FTitulo);
end;

procedure TfEditorCuentasEspeciales.SetCuentasEspeciales(const Value: IBizCuentaEspecial);
begin
  FCuentasEspeciales := Value;
  dsDataTable.DataTable := FCuentasEspeciales.DataTable;
  if Assigned(ViewGrid) then
    (ViewGrid as IViewCuentasEspeciales).CuentasEspeciales := CuentasEspeciales;
end;

procedure TfEditorCuentasEspeciales.SetController(const Value: ICuentasEspecialesController);
begin
  FController := Value;
end;

destructor TfEditorCuentasEspeciales.Destroy;
begin
  FCuentasEspeciales := NIL;
  inherited;
end;

procedure TfEditorCuentasEspeciales.DuplicarInterno;
{var
  ACuentaEspecial : IBizCuentaEspecial;}
begin
{
  inherited;
  ACuentaEspecial := FController.Duplicar(CuentasEspeciales);
  try
    FController.Ver(ACuentaEspecial);
  finally
    actRefrescar.Execute;
  end;
}  
end;

procedure TfEditorCuentasEspeciales.EliminarInterno;
begin

  if (Application.MessageBox('¿Desea borrar este almacén?', 'Atención', MB_YESNO) = IDYES) then
  begin
    inherited;
    //Para que en el caso de no poderse realizar la operación se refresquen
    //los datos y no nos permita eliminar un registro a la segunda
    if not FController.Eliminar(CuentasEspeciales) then
       actRefrescar.Execute;
  end;
end;

constructor TfEditorCuentasEspeciales.Create(AOwner: TComponent);
begin
  inherited;
  ViewGrid := frViewCuentasEspeciales1; //CreateView(TfrViewCuentasEspeciales) as IViewCuentasEspeciales;
end;

end.

  