{
===============================================================================
  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 uEditorTiposVenta;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  uIEditorTiposVenta, uBizTiposVenta, uTiposVentaController, DB, uDADataTable,
  ActnList, Grids, DBGrids, StdCtrls, ComCtrls, cxStyles, cxCustomData,
  cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxGridLevel,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
  cxControls, cxGridCustomView, cxGrid, cxTextEdit, uDAInterfaces, cxSpinEdit;

type
  TfEditorTiposVenta = class(TForm, IEditorTiposVenta)
    ActionList1: TActionList;
    dsTiposVenta: TDADataSource;
    actAceptar: TAction;
    actCancelar: TAction;
    bAceptar: TButton;
    bCancelar: TButton;
    actCerrar: TAction;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Label1: TLabel;
    ListaTiposVenta: TcxGrid;
    ListaTiposVentaView: TcxGridDBTableView;
    ListaTiposVentaViewCODIGO: TcxGridDBColumn;
    ListaTiposVentaViewDESCRIPCION: TcxGridDBColumn;
    ListaTiposVentaLevel: TcxGridLevel;
    ListaTiposVentaViewID: TcxGridDBColumn;
    procedure FormShow(Sender: TObject);

    procedure actAceptarExecute(Sender: TObject);
    procedure actCancelarExecute(Sender: TObject);
    procedure actCerrarExecute(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure ListaTiposVentaViewVALORPropertiesValidate(Sender: TObject;
      var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);

  protected
    FTiposVenta: IBizTipoVenta;
    FController: ITiposVentaController;
    function GetTiposVenta: IBizTipoVenta;
    procedure SetTiposVenta(const Value: IBizTipoVenta);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property TiposVenta: IBizTipoVenta read GetTiposVenta write SetTiposVenta;
  end;


implementation
{$R *.dfm}

{ TfEditorTiposVenta }

uses
  uDialogUtils, Dialogs, uDataTableUtils;

function TfEditorTiposVenta.GetTiposVenta: IBizTipoVenta;
begin
  Result := FTiposVenta;
end;

procedure TfEditorTiposVenta.ListaTiposVentaViewVALORPropertiesValidate(
  Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
  var Error: Boolean);
begin
//  Showmessage('Validar'); No es necesario porque si no pone número lo pone el servidor 
end;

procedure TfEditorTiposVenta.SetTiposVenta(const Value: IBizTipoVenta);
begin
  FTiposVenta := Value;
  dsTiposVenta.DataTable := FTiposVenta.DataTable;
  dsTiposVenta.DataTable.Open;
end;

constructor TfEditorTiposVenta.Create(AOwner: TComponent);
begin
  inherited;
  FController := TTiposVentaController.Create;
end;

destructor TfEditorTiposVenta.Destroy;
begin
  FTiposVenta := NIL;
  FController := NIL;
  inherited;
end;

procedure TfEditorTiposVenta.actAceptarExecute(Sender: TObject);
begin
  try
    if (TiposVenta.DataTable.State in dsEditModes) then
       TiposVenta.DataTable.Post;
    TiposVenta.DataTable.ApplyUpdates;
  except
    on E : Exception do begin
      TiposVenta.DataTable.CancelUpdates;
      ShowErrorMessage('Error al guardar cambios', 'Se ha producido un error grave', E);
      Exit;
    end;
  end;
  actCerrar.Execute;
end;

procedure TfEditorTiposVenta.actCancelarExecute(Sender: TObject);
begin
  TiposVenta.DataTable.CancelUpdates;
  actCerrar.Execute;
end;

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

procedure TfEditorTiposVenta.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  Respuesta: Integer;
begin
  Respuesta := IDNO;

  if (DataTableModified(dsTiposVenta.DataTable)) then
     Respuesta := ShowConfirmMessage('Atención', 'Se han producido cambios',
      '¿Desea guardar los cambios que se han producido antes de cerrar?',
      [TDlgButton_SI, TDlgButton_NO, TDlgButton_CANCELAR]);

  case Respuesta of
    IDYES   : actAceptar.Execute;
    IDNO    : actCancelar.Execute;
    else CanClose := False;
  end;
end;

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

  ListaTiposVenta.SetFocus;
{
  EnableScrollBar(ListaTiposVenta.Handle,SB_HORZ,ESB_DISABLE_BOTH);
  ShowScrollBar(ListaTiposVenta.Handle,SB_HORZ,false);
  EnableScrollBar(ListaTiposVenta.Handle,SB_VERT,ESB_DISABLE_BOTH);
}  
end;

end.
