unit uViewListaEjecucionesObra;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewDetallesGenerico, cxStyles, cxCustomData, cxGraphics, cxFilter,
  cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, ImgList, PngImageList,
  uDAInterfaces, uDADataTable, ComCtrls, ToolWin, cxGridLevel,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
  cxControls, cxGridCustomView, cxGrid, uBizObras, cxCalendar, cxTextEdit,
  cxCurrencyEdit, uObrasController;

type
  IViewListaEjecucionesObra = interface(IViewDetallesGenerico)
    ['{EBDB67B7-145D-45D4-9C9D-384FD06686D0}']
    function GetObra: IBizObra;
    procedure SetObra(const Value: IBizObra);
    property Obra: IBizObra read GetObra write SetObra;

    function GetController : IObrasController;
    procedure SetController (const Value : IObrasController);
    property Controller : IObrasController read GetController write SetController;
  end;

  TfrViewListaEjecucionesObra = class(TfrViewDetallesGenerico, IViewListaEjecucionesObra)
    cxGridViewFECHA_INICIO: TcxGridDBColumn;
    cxGridViewFECHA_FIN: TcxGridDBColumn;
    cxGridViewSUBCONTRATA: TcxGridDBColumn;
    cxGridViewIMPORTE_GASTOS: TcxGridDBColumn;
    cxGridViewIMPORTE_INGRESOS: TcxGridDBColumn;
    cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
    procedure CustomViewCreate(Sender: TObject);
    procedure actModificarExecute(Sender: TObject);
  private
    FObrasController : IObrasController;
    FObra : IBizObra;
    FEjecuciones : IBizEjecucionesObra;
    
    function AddFilterGrid(
      const Operacion: tcxFilterBoolOperatorKind): TcxFilterCriteriaItemList;

    function GetObra: IBizObra;
    procedure SetObra(const Value: IBizObra);

    function GetController : IObrasController;
    procedure SetController (const Value : IObrasController);
  public
    property Obra: IBizObra read GetObra write SetObra;
    property Controller : IObrasController read GetController write SetController;
  end;

implementation

{$R *.dfm}

procedure TfrViewListaEjecucionesObra.actModificarExecute(Sender: TObject);
begin
  inherited;
  FObrasController.VerEjecucion(FObra);
end;

function TfrViewListaEjecucionesObra.AddFilterGrid(const Operacion: tcxFilterBoolOperatorKind): TcxFilterCriteriaItemList;
var
  AItemList: TcxFilterCriteriaItemList;
begin
  AItemList := cxGridView.DataController.Filter.Root;
  Result := AItemList.AddItemList(Operacion);
end;


procedure TfrViewListaEjecucionesObra.CustomViewCreate(Sender: TObject);
var
  FFiltro : TcxFilterCriteriaItemList;
begin
  inherited;

  FFiltro := AddFilterGrid(fboAnd);
  FFiltro.AddItem(cxGridViewFECHA_FIN, foNotEqual, NULL, 'Ejecuciones terminadas');
  cxGridView.DataController.Filter.Active := True;
end;

function TfrViewListaEjecucionesObra.GetController: IObrasController;
begin
  Result := FObrasController;
end;

function TfrViewListaEjecucionesObra.GetObra: IBizObra;
begin
  Result := FObra;
end;

procedure TfrViewListaEjecucionesObra.SetController(
  const Value: IObrasController);
begin
  FObrasController := Value;
end;

procedure TfrViewListaEjecucionesObra.SetObra(const Value: IBizObra);
begin
  FObra := Value;

  if Assigned(FObra) then
  begin
    FObra.Active := True;
    FEjecuciones := FObra.Ejecuciones;
    dsDetalles.DataTable := FEjecuciones.DataTable;
  end
  else begin
    FObra := NIL;
    FEjecuciones := NIL;
    dsDetalles.DataTable := NIL;
  end;
end;

end.
