{
===============================================================================
  Copyright (©) 2007. 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: 
  Versión actual: 1.0.0
  Fecha versión actual: 
===============================================================================
  Modificaciones:

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

unit uEditorElegirRecibosProveedor;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, uDADataTable, Menus, JvAppStorage, JvAppRegistryStorage,
  JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns,
  ActnList, uCustomView, uViewBase, uViewGridBase, uViewGrid,
  JvExComCtrls, JvStatusBar,
  ComCtrls, TB2ExtItems, TBXExtItems, TBX,
  TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent,
  JvNavigationPane, uViewBarraSeleccion, StdCtrls,
  uViewRecibosProveedor, uEditorRecibosProveedor, uBizRecibosProveedor, uIEditorElegirRecibosProveedor,
  Buttons, cxRadioGroup, cxMaskEdit, cxDropDownEdit, cxCalendar, cxControls,
  cxContainer, cxEdit, cxTextEdit, TBXDkPanels, JSDialog, uDAInterfaces;
  

type
  TfEditorElegirRecibosProveedor = class(TfEditorRecibosProveedor, IEditorElegirRecibosProveedor)
    frViewBarraSeleccion1: TfrViewBarraSeleccion;
    EditorSeleccionActionList: TActionList;
    actBuscar2: TAction;
    actQuitarFiltro2: TAction;
    actAnchoAuto2: TAction;
    pnlFiltrar: TTBXDockablePanel;
    Label1: TLabel;
    txtFiltroTodo: TcxTextEdit;
    edtFechaFiltro1: TcxDateEdit;
    edtFechaFiltro2: TcxDateEdit;
    rbTodo: TcxRadioButton;
    rbFechas: TcxRadioButton;
    Button1: TBitBtn;
    pnlHeader: TPanel;
    lblTitle: TLabel;
    lblComments: TLabel;
    procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject);
    procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject);
    procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure actAnchoAuto2Execute(Sender: TObject);
    procedure actQuitarFiltro2Execute(Sender: TObject);
    procedure txtFiltroTodoPropertiesChange(Sender: TObject);
    procedure edtFechaFiltro1PropertiesEditValueChanged(Sender: TObject);
    procedure rbTodoClick(Sender: TObject);
  protected
    procedure SetMultiSelect (AValue : Boolean);
    function GetMultiSelect : Boolean;
    function GetRecibosProveedorSeleccionados: IBizRecibosProveedor;
    procedure SetViewGrid(const Value: IViewGridBase); override;
    procedure SetMensaje (const AValue: String);
    function GetMensaje: String;
  public
    property Mensaje : String read GetMensaje write SetMensaje;
    property RecibosProveedorSeleccionados: IBizRecibosProveedor read GetRecibosProveedorSeleccionados;
    property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
  end;

implementation

uses
  uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, uDBSelectionListUtils,
  uGridUtils, uDialogUtils, uEditorBase, uRecibosProveedorController;

{$R *.dfm}

{ TfEditorElegirRecibosProveedor }

procedure TfEditorElegirRecibosProveedor.actAnchoAuto2Execute(Sender: TObject);
begin
  inherited;
  actAnchoAuto.Execute;
end;

procedure TfEditorElegirRecibosProveedor.actQuitarFiltro2Execute(Sender: TObject);
begin
//  inherited;

  if Assigned(ViewGrid) then
  begin
    txtFiltroTodo.Clear;
    edtFechaFiltro1.Clear;
    edtFechaFiltro2.Clear;
    (ViewGrid as IViewRecibosProveedor).FiltrarPorFechas(null, null);
    inherited;
  end;

//  actQuitarFiltro.Execute;
end;

procedure TfEditorElegirRecibosProveedor.edtFechaFiltro1PropertiesEditValueChanged(Sender: TObject);
begin
  if not VarIsNull(edtFechaFiltro1.EditValue) and not VarIsNull(edtFechaFiltro2.EditValue) then
  begin
    if (edtFechaFiltro1.EditValue > edtFechaFiltro2.EditValue) then
    begin
       ShowWarningMessage('La fecha de inicio debe ser anterior a la fecha final');
       edtFechaFiltro1.SetFocus;
    end
    else
       (ViewGrid as IViewRecibosProveedor).FiltrarPorFechas(edtFechaFiltro1.EditValue, edtFechaFiltro2.EditValue);
  end;
end;

procedure TfEditorElegirRecibosProveedor.FormShow(Sender: TObject);
begin
  inherited;
  EditorActionList.State := asSuspended;
  frViewRecibosProveedor1.cxViewGridPopupMenu.PopupMenus.Items[0].HitTypes := [];  
end;

procedure TfEditorElegirRecibosProveedor.frViewBarraSeleccion1actCancelarExecute(
  Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfEditorElegirRecibosProveedor.frViewBarraSeleccion1actSeleccionarExecute(
  Sender: TObject);
begin
  inherited;
  ModalResult := mrOk;
end;

procedure TfEditorElegirRecibosProveedor.frViewBarraSeleccion1actSeleccionarUpdate(
  Sender: TObject);
begin
  inherited;
  (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0)
end;

function TfEditorElegirRecibosProveedor.GetRecibosProveedorSeleccionados: IBizRecibosProveedor;
begin
  SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (RecibosProveedor as ISeleccionable).SelectedRecords);
  // En SelectedRecords tengo los ID de las filas seleccionadas del grid
  Result := (Controller as IRecibosProveedorController).ExtraerSeleccionados(RecibosProveedor) as IBizRecibosProveedor;
end;

procedure TfEditorElegirRecibosProveedor.rbTodoClick(Sender: TObject);
begin
  actQuitarFiltro.Execute;

  if rbTodo.Checked then
  begin
    edtFechaFiltro1.Enabled := False;
    edtFechaFiltro2.Enabled := False;
    txtFiltroTodo.Enabled := True;
  end
  else begin
    edtFechaFiltro1.Enabled := True;
    edtFechaFiltro2.Enabled := True;
    txtFiltroTodo.Enabled := False;
  end;
end;

function TfEditorElegirRecibosProveedor.GetMensaje: String;
begin
  Result := lblComments.Caption;
end;

function TfEditorElegirRecibosProveedor.GetMultiSelect: Boolean;
begin
  Result := ViewGrid.MultiSelect;
end;

procedure TfEditorElegirRecibosProveedor.SetMensaje(const AValue: String);
begin
  lblComments.Caption := AValue;
end;

procedure TfEditorElegirRecibosProveedor.SetMultiSelect(AValue: Boolean);
begin
  ViewGrid.MultiSelect := AValue;
end;

procedure TfEditorElegirRecibosProveedor.SetViewGrid(const Value: IViewGridBase);
begin
  inherited;
  ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute;
end;

procedure TfEditorElegirRecibosProveedor.txtFiltroTodoPropertiesChange(Sender: TObject);
begin
  if Assigned(ViewGrid) then
    ViewGrid.Filter := txtFiltroTodo.Text;
end;

end.
