unit uViewHistoricoMovimientos;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, frxClass, frxPreview, cxStyles,
  cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB,
  cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls,
  cxGridCustomView, cxGridCustomTableView, cxGridTableView,
  cxGridDBTableView, cxGrid, StdCtrls, ExtCtrls, cxLabel, dxPSGlbl, dxPSUtl,
  dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
  dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, cxImage,
  cxImageComboBox, ImgList, PngImageList, cxTextEdit, Grids, DBGrids, cxDBLookupComboBox,
  cxButtonEdit, cxGridCustomPopupMenu, cxGridPopupMenu, uViewGrid,
  uBizHistoricoMovimientos, uBizAlmacenes, cxSpinEdit, uViewFiltroBase, TB2Item, TBX,
  TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, cxCurrencyEdit, uDAInterfaces;
    
type
  IViewHistoricoMovimientos = interface(IViewGrid)
  ['{1E8F901C-F013-42E0-88B7-0D9DA2919A01}']
    function GetHistoricoMovimientos: IBizHistoricoMovimientos;
    procedure SetHistoricoMovimientos(const Value: IBizHistoricoMovimientos);
    property HistoricoMovimientos: IBizHistoricoMovimientos read GetHistoricoMovimientos write SetHistoricoMovimientos;
    function GetAlmacenes: IBizAlmacen;
    procedure SetAlmacenes(const Value: IBizAlmacen);
    property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacenes;
  end;

  TfrViewHistoricoMovimientos = class(TfrViewGrid, IViewHistoricoMovimientos)
    cxGridDBTableView1: TcxGridDBTableView;
    cxStyleEntrada: TcxStyle;
    cxGridViewDESCRIPCION: TcxGridDBColumn;
    cxGridViewREFERENCIA: TcxGridDBColumn;
    cxGridViewFAMILIA: TcxGridDBColumn;
    cxGridViewNOMBRE_ALMACEN: TcxGridDBColumn;
    cxGridViewID_ALMACEN: TcxGridDBColumn;
    cxGridViewFECHA: TcxGridDBColumn;
    cxGridViewCANTIDAD: TcxGridDBColumn;
    cxGridViewUNIDAD_MEDIDA: TcxGridDBColumn;
    cxGridViewCAUSA: TcxGridDBColumn;
    cxStyleSalida: TcxStyle;
    cxGridViewFABRICANTE: TcxGridDBColumn;
    cxGridViewREFERENCIA_FABR: TcxGridDBColumn;
    cxGridViewTIPO_MOVIMIENTO: TcxGridDBColumn;

    procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
    procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
            ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out
            AStyle: TcxStyle);

  private
    //Filtros relativos a la vista
    procedure AnadirFiltroAlmacenes;

  protected
    FAlmacenes: IBizAlmacen;
    FHistoricoMovimientos: IBizHistoricoMovimientos;
    function GetAlmacenes: IBizAlmacen;
    procedure SetAlmacenes(const Value: IBizAlmacen);
    function GetHistoricoMovimientos: IBizHistoricoMovimientos;
    procedure SetHistoricoMovimientos(const Value: IBizHistoricoMovimientos);
  public
    property HistoricoMovimientos: IBizHistoricoMovimientos read GetHistoricoMovimientos write SetHistoricoMovimientos;
    procedure AnadirOtrosFiltros; override;
    destructor Destroy; override;
  end;

implementation
{$R *.dfm}

uses uDataModuleHistoricoMovimientos, schHistoricoMovimientosClient_Intf;

procedure TfrViewHistoricoMovimientos.AnadirFiltroAlmacenes;
var
  FFiltro : TcxFilterCriteriaItemList;
  CodigoAlmacen: String;
begin
{
  FFiltro := AddFilterGrid(fboAnd);

  CodigoAlmacen := IntToStr(cxGrid.Levels.Items[cxGrid.ActiveLevel.Index].Tag);
  if CodigoAlmacen <> '-1' then
  begin
     FFiltro.AddItem(cxGridViewID_ALMACEN, foEqual, CodigoAlmacen, CodigoAlmacen);
     cxGridViewNOMBRE_ALMACEN.Visible := False;
  end
  else
     cxGridViewNOMBRE_ALMACEN.Visible := True;
}
end;

procedure TfrViewHistoricoMovimientos.AnadirOtrosFiltros;
begin
  inherited;

  AnadirFiltroAlmacenes;

  //Finalmente activamos el filtro si tenemos algo
  if cxGridView.DataController.Filter.IsEmpty
  then cxGridView.DataController.Filter.Active := False
  else cxGridView.DataController.Filter.Active := True;
  cxGrid.ActiveLevel.GridView := cxGridView;
end;

procedure TfrViewHistoricoMovimientos.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
begin
//  inherited;
//  RefrescarFiltro;
end;

procedure TfrViewHistoricoMovimientos.cxGridViewStylesGetContentStyle(Sender:
        TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem:
        TcxCustomGridTableItem; out AStyle: TcxStyle);
var
  IndiceCol: Integer;
  ACantidad: Variant;
begin
{
  inherited;

  if Assigned(ARecord) then
  begin
    IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_HistoricoMovimientosCANTIDAD).Index;
    ACantidad := ARecord.DisplayTexts[IndiceCol];
    if (ACantidad < 0) then
      AStyle.TextColor := cxStyleSalida.TextColor
    else
      AStyle.TextColor := cxStyleEntrada.TextColor;
  end;
}  
end;

destructor TfrViewHistoricoMovimientos.Destroy;
begin
  FAlmacenes := Nil;
  FHistoricoMovimientos := Nil;
  inherited;
end;

function TfrViewHistoricoMovimientos.GetAlmacenes: IBizAlmacen;
begin
  Result := FAlmacenes;
end;

function TfrViewHistoricoMovimientos.GetHistoricoMovimientos: IBizHistoricoMovimientos;
begin
  Result := FHistoricoMovimientos;
end;

procedure TfrViewHistoricoMovimientos.SetAlmacenes(const Value: IBizAlmacen);
var
  Nivel: TcxGridLevel;
begin
  FAlmacenes := Value;
{
  if Assigned(FAlmacenes) then
  begin
    if not FAlmacenes.DataTable.Active then
       FAlmacenes.DataTable.Active := True;

    FAlmacenes.First;
    while not FAlmacenes.EOF do
    begin
      Nivel := cxGrid.Levels.Add;
      Nivel.Caption := FAlmacenes.NOMBRE;
      Nivel.Tag := FAlmacenes.ID;
      FAlmacenes.Next;
    end;
  end;
}  
end;

procedure TfrViewHistoricoMovimientos.SetHistoricoMovimientos(const Value: IBizHistoricoMovimientos);
begin
  FHistoricoMovimientos := Value;
  if Assigned(FHistoricoMovimientos) then
     dsDataSource.DataTable := FHistoricoMovimientos.DataTable
  else
     dsDataSource.DataTable := Nil;
end;

end.
