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

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

unit BarraAlmacenes;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  RDXFRAME, RdxBotones, ExtCtrls, RdxBarras, RdxPaneles, pngimage,
  StdCtrls;

type
  TfrBarraAlmacenes = class(TRdxFrame)
    Panel2: TPanel;
    pnlBarraLateral: TPanel;
    imgFondo: TImage;
    bHistoricoMovimientos: TRdxBotonLateral;
    pnlTitulo: TPanel;
    eTitulo: TLabel;
    imgSombra: TImage;
    shSeparador: TShape;
    bEstadoAlmacenObra: TRdxBotonLateral;
    bAlmacenObra: TRdxBotonLateral;
    bHistoricoObras: TRdxBotonLateral;
    Panel1: TPanel;
    bAlmacenFisico: TRdxBotonLateral;
    Panel3: TPanel;
    procedure bAlmacenFisicoClick(Sender: TObject);
    procedure bEstadoAlmacenFisicoClick(Sender: TObject);
    procedure bHistoricoMovimientosClick(Sender: TObject);
    procedure bEstadoAlmacenObraClick(Sender: TObject);
    procedure bAlmacenObraClick(Sender: TObject);
    procedure bHistoricoObrasClick(Sender: TObject);
  protected
    FCodigoAlmacen : Variant;
    procedure FreeContenido; override;
  public
    constructor Create (AOwner: TComponent); override;
  end;

var
  frBarraAlmacenes: TfrBarraAlmacenes;

implementation
{$R *.DFM}
uses
  Almacenes, {ArticulosAlmacen, MovimientoAlmacenes, HistoricoMovimientos,}
  ArticulosObraHistorica, RdxFrameAlmacenes,
  RdxFrameArticulosAlmacen, RdxFrameHistoricoMovimientos,
  RdxFrameArticulosObraHistorica, Configuracion, Variants, Entidades,
  ArticulosAlmacen, HistoricoMovimientos;


constructor TfrBarraAlmacenes.Create (AOwner: TComponent);
begin
  inherited Create(AOwner);
  FCodigoAlmacen := NULL;
  Entidad := entAlmacen;
  ConfigurarBarraLateral(Self, Self.Entidad);

  bAlmacenFisicoClick(nil);
end;

procedure TfrBarraAlmacenes.bAlmacenFisicoClick(Sender: TObject);
begin
  Contenido := TfrAlmacenes.Create(Self);
  {Por defecto Almacenes se inicializa con la entidad entAlmacen, es decir,
   todos los almacenes tanto fisicos como de obras}
  if (Contenido is TRdxFrameAlmacenes) then
  begin
    Contenido.Entidad := entAlmacenFisico;
    Contenido.Visible := True;
  end;
end;

procedure TfrBarraAlmacenes.bEstadoAlmacenFisicoClick(Sender: TObject);
var
  EntidadAnterior : TRdxEntidad;
begin
  EntidadAnterior := Contenido.Entidad;

  Contenido := TfrArticulosAlmacen.Create(Self);
  //Misma explicación que en apartado anterior
  if (Contenido is TRdxFrameArticulosAlmacen) then
  begin
    Contenido.Entidad := entArticulosAlmacenFisico;
    if EntidadAnterior = entAlmacenFisico then
      (Contenido as TfrArticulosAlmacen).CodigoAlmacen := FCodigoAlmacen;
    Contenido.Visible := True;
  end;
end;

procedure TfrBarraAlmacenes.FreeContenido;
begin
   if (Contenido is TRdxFrameAlmacenes) then
     FCodigoAlmacen := (Contenido as TRdxFrameAlmacenes).CodigoAlmacen;
   if (Contenido is TRdxFrameArticulosAlmacen) then
     FCodigoAlmacen := (Contenido as TRdxFrameArticulosAlmacen).CodigoAlmacen;
   inherited;
end;

procedure TfrBarraAlmacenes.bHistoricoMovimientosClick(Sender: TObject);
begin
  Contenido := TfrHistoricoMovimientos.Create(Self);
  if (Contenido is TRdxFrameHistoricoMovimientos) then
    (Contenido as TfrHistoricoMovimientos).CodigoAlmacen := FCodigoAlmacen;
end;

procedure TfrBarraAlmacenes.bEstadoAlmacenObraClick(Sender: TObject);
var
  EntidadAnterior : TRdxEntidad;
begin
  EntidadAnterior := Contenido.Entidad;

  Contenido := TfrArticulosAlmacen.Create(Self);
  if (Contenido is TRdxFrameArticulosAlmacen) then
  begin
    Contenido.Entidad := entArticulosAlmacenObra;
    if EntidadAnterior = entAlmacenObra then
      (Contenido as TfrArticulosAlmacen).CodigoAlmacen := FCodigoAlmacen;
    Contenido.Visible := True;
  end;
end;

procedure TfrBarraAlmacenes.bAlmacenObraClick(Sender: TObject);
begin
  inherited;
  Contenido := TfrAlmacenes.Create(Self);
  {Preguntamos si el cambio de contenido se ha producido realmente, porque
   sino no ponemos nada al contenido porque realmente el contenido anterior
   no se ha liberado, bien porque al salir la pregunta de tratarcambios se
   ha contestado cancelar y por tanto continuar la operacion que se estubiese
   haciendo}
  if (Contenido is TRdxFrameAlmacenes) then
  begin
    Contenido.Entidad := entAlmacenObra;
    Contenido.Visible := True;
  end;
end;

procedure TfrBarraAlmacenes.bHistoricoObrasClick(Sender: TObject);
begin
  inherited;
  Contenido := TfrArticulosObraHistorica.Create(Self);
  Contenido.Visible := True;

//  Contenido := TfrHistoricoMovimientos.Create(Self);
//  if (Contenido is TRdxFrameHistoricoMovimientos) then
//    (Contenido as TfrHistoricoMovimientos).CodigoAlmacen := FCodigoAlmacen;
end;

end.
