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

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

unit Principal;

interface

uses
  Windows, ComCtrls, ToolWin, Graphics, Controls,
  ExtCtrls, Classes, sysutils, forms, Menus, StdCtrls,
  am2000menuitem, am2000popupmenu, am2000, RdxBotones, RdxPaneles,
  RdxFrame, ActnList, FthImage, pngimage, am2000utils;

type
  TfrPrincipal = class(TRdxFrame)
    BarraEstado: TStatusBar;
    Acciones: TActionList;
    actArticulosModelo: TAction;
    actDatos: TAction;
    actCompras: TAction;
    actVentas: TAction;
    actContabilidad: TAction;
    actInformes: TAction;
    MenuOpciones: TPopupMenu2000;
    MenuItem20001: TMenuItem2000;
    mnuDocumentos: TMenuItem2000;
    MenuItem20002: TMenuItem2000;
    MenuItem20003: TMenuItem2000;
    MenuItem20004: TMenuItem2000;
    MenuItem20005: TMenuItem2000;
    actHacerCopia: TAction;
    actRestaurarCopia: TAction;
    actDocumentos: TAction;
    pnlBarraSuperior: TRdxGradientePanel;
    imgFondo: TImage;
    bEmpresas: TFourthImage;
    JzLabel1: TLabel;
    bProveedores: TFourthImage;
    bClientes: TFourthImage;
    bContabilidad: TFourthImage;
    bDatos: TFourthImage;
    bOpciones: TFourthImage;
    JzLabel7: TLabel;
    JzLabel8: TLabel;
    JzLabel9: TLabel;
    JzLabel10: TLabel;
    JzLabel11: TLabel;
    JzLabel12: TLabel;
    bInformes: TFourthImage;
    actEmpresas: TAction;
    eNombreEmpresa: TLabel;
    ConfiguracinPropiedades1: TMenuItem2000;
    actPropiedades: TAction;
    MenuItem1: TMenuItem2000;
    actContadores: TAction;
    bSincronizacion: TFourthImage;
    Label1: TLabel;
    actSincronizacion: TAction;
    bAgenda: TFourthImage;
    eAgenda: TLabel;
    actAgenda: TAction;
    actActualizar: TAction;
    actConfigActualizazion: TAction;
    MenuItem5: TMenuItem2000;
    MenuItem6: TMenuItem2000;
    MenuItem7: TMenuItem2000;
    procedure LogotipoClick(Sender: TObject);

    procedure actDatosExecute(Sender: TObject);
    procedure actComprasExecute(Sender: TObject);
    procedure actVentasExecute(Sender: TObject);
    procedure actContabilidadExecute(Sender: TObject);
    procedure actInformesExecute(Sender: TObject);
    procedure actArticulosModeloExecute(Sender: TObject);
    procedure actHacerCopiaExecute(Sender: TObject);
    procedure actRestaurarCopiaExecute(Sender: TObject);
    procedure actDocumentosExecute(Sender: TObject);
    procedure bOpcionesClick(Sender: TObject);
    procedure actEmpresasExecute(Sender: TObject);
    procedure actDatosUpdate(Sender: TObject);
    procedure RdxFrameResize(Sender: TObject);
    procedure actPropiedadesExecute(Sender: TObject);
    procedure actContadoresExecute(Sender: TObject);
    procedure actSincronizacionExecute(Sender: TObject);
    procedure actAgendaExecute(Sender: TObject);
    procedure actConfigActualizazionExecute(Sender: TObject);
    procedure actActualizarExecute(Sender: TObject);
  private
  public
    Version : String;
    constructor Create(AOwner : TComponent); override;
    procedure ManejadorExcepciones(Sender: TObject; E: Exception);

  published
    procedure OnCloseApp (Sender: TObject; var Action: TCloseAction);
  end;

var
  frPrincipal: TfrPrincipal;

implementation

{$R *.DFM}

uses
  ContenidoPrincipal, Mensajes, SysFunc, Propiedades,
  Excepciones, BaseDatos, BarraDatos, DatosContadores,
  BarraClientes, BarraProveedores, BarraLibros, BarraInformes,
  HacerCopiaSeguridad, RestaurarCopiaSeguridad, Documentos, ArticulosModelo,
  TablaEmpresas, RdxEmpresaActiva, Literales, Configuracion,
  ElegirEmpresa, Variants, Entidades, Sincronizacion, BarraAgenda,
  Actualizacion;

{ TfrPrincipal }

constructor TfrPrincipal.Create(AOwner: TComponent);
begin
  inherited;
  ConfigurarVentanaPrincipal(Self);
  if PuedeSincronizar then
    actSincronizacion.OnUpdate := actDatosUpdate
  else begin
    actSincronizacion.Enabled := False;
    actSincronizacion.OnUpdate := NIL;
  end;
  Contenido := TfrContenidoPrincipal.Create(Self);
end;

procedure TfrPrincipal.LogotipoClick(Sender: TObject);
begin
  Contenido := TfrContenidoPrincipal.Create(Self);
end;

procedure TfrPrincipal.OnCloseApp(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caNone;
  if VerMensajePregunta(msgDeseaSalir) = mrYES then
    if CloseFrame then Action := caFree;
end;

procedure TfrPrincipal.ManejadorExcepciones(Sender: TObject; E: Exception);
begin
  TratarExcepcion(E);
end;

procedure TfrPrincipal.actArticulosModeloExecute(Sender: TObject);
begin
  HeightModal := 600;
  WidthModal := 750;
  ContenidoModal := TfrArticulosModelo.Create(Self);
end;

procedure TfrPrincipal.actDatosExecute(Sender: TObject);
begin
  Contenido := TfrBarraDatos.Create(Self);
end;

procedure TfrPrincipal.actComprasExecute(Sender: TObject);
begin
  Contenido := TfrBarraProveedores.Create(Self);
end;

procedure TfrPrincipal.actVentasExecute(Sender: TObject);
begin
  Contenido := TfrBarraClientes.Create(Self);
end;

procedure TfrPrincipal.actContabilidadExecute(Sender: TObject);
begin
  Contenido := TfrBarraLibros.Create(Self);
end;

procedure TfrPrincipal.actInformesExecute(Sender: TObject);
begin
  Contenido := TfrBarraInformes.Create(Self);
end;

procedure TfrPrincipal.actHacerCopiaExecute(Sender: TObject);
begin
  LogotipoClick(Sender);
  HeightModal := 340;
  WidthModal := 412;
  EntidadModal := entOpciones;
  ModoModal := Consultar;
  ContenidoModal := TfrHacerCopiaSeguridad.Create(Self);
end;

procedure TfrPrincipal.actRestaurarCopiaExecute(Sender: TObject);
begin
  LogotipoClick(Sender);
  if Contenido.Name <> 'TfrContenidoPrincipal' then
    Exit;

  HeightModal := 340;
  WidthModal := 412;
  EntidadModal := entOpciones;
  ModoModal := Consultar;
  ContenidoModal := TfrRestaurarCopiaSeguridad.Create(Self);
end;

procedure TfrPrincipal.actDocumentosExecute(Sender: TObject);
begin
  frDocumentos := TfrDocumentos.Create(Self);
  try
    frDocumentos.ShowModal;
  finally
    frDocumentos.Free;
  end;
end;

procedure TfrPrincipal.bOpcionesClick(Sender: TObject);
var
  P : TPoint;
begin
  if (Sender as TImage).PopupMenu <> NIL then
  begin
    P.X := (Sender as TImage).Left;
    P.Y := pnlBarraSuperior.Top + pnlBarraSuperior.Height;
    P := ClientToScreen(P);
    (Sender as TImage).PopupMenu.Popup(P.X, P.Y);
  end;
end;

procedure TfrPrincipal.actEmpresasExecute(Sender: TObject);
var
  EmpresaAnterior : Variant;
begin
  if (Contenido <> NIL) then
    Contenido := TfrContenidoPrincipal.Create(Self);

  if (Contenido is TfrContenidoPrincipal) then
  begin
    EmpresaAnterior := EmpresaActiva.Codigo;
    HeightModal := 370;
    WidthModal := 594;
    ContenidoModal := TfrElegirEmpresa.Create(Self);
    if (EmpresaAnterior <> EmpresaActiva.Codigo) then
    begin
      if EmpresaActiva.Codigo <> -1 then
      begin
        eNombreEmpresa.Caption := EmpresaActiva.NombreComercial;
        BarraEstado.Panels[0].Text := 'Empresa: ' + EmpresaActiva.NombreComercial;
        Application.MainForm.Caption := 'FactuGES v' + Version + ' - ' + EmpresaActiva.NombreComercial;
        actAgenda.Execute;
      end
      else
      begin
        eNombreEmpresa.Caption := '';
        BarraEstado.Panels[0].Text := '';
        Application.MainForm.Caption := '';
      end;
    end;
  end;
end;

procedure TfrPrincipal.actDatosUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := (EmpresaActiva.Codigo <> -1);
end;

procedure TfrPrincipal.RdxFrameResize(Sender: TObject);
begin
  inherited;
  eNombreEmpresa.Left := pnlBarraSuperior.Width - eNombreEmpresa.Width - 10;
end;

procedure TfrPrincipal.actPropiedadesExecute(Sender: TObject);
begin
  ModoModal := Anadir;
  WidthModal := 800;
  ContenidoModal := TfrPropiedades.Create(Self);
end;

procedure TfrPrincipal.actContadoresExecute(Sender: TObject);
begin
  ModoModal := Anadir;
  WidthModal := 400;
  ContenidoModal := TfrDatosContadores.Create(Self);
end;

procedure TfrPrincipal.actSincronizacionExecute(Sender: TObject);
begin
  inherited;
  Contenido := TfrContenidoPrincipal.Create(Self);
  fSincronizacion := TfSincronizacion.Create(Self);
  try
    fSincronizacion.ShowModal;
  finally
    fSincronizacion.Free;
  end;
end;

procedure TfrPrincipal.actAgendaExecute(Sender: TObject);
begin
  Contenido := TfrBarraAgenda.Create(Self);
end;

procedure TfrPrincipal.actConfigActualizazionExecute(Sender: TObject);
begin
  fConfiguracion := TfConfiguracion.Create(Self);
  try
    fConfiguracion.ShowModal;
  finally
    FreeAndNil(fConfiguracion);
  end;
end;

procedure TfrPrincipal.actActualizarExecute(Sender: TObject);
begin
  fConfiguracion := TfConfiguracion.Create(Self);
  try
    if not fConfiguracion.HayConfiguracion then
    begin
      if (VerMensajePregunta('Todavía no se ha indicado la configuración para las actualizaciones automáticas.' +
        #10#13 + '¿Desea hacerlo ahora?') = IDYES) then
      begin
        actConfigActualizazion.Execute;
        actActualizar.Execute; // Reintentar;
      end
      else
        VerMensaje('No se pueden consultar las actualizaciones hasta que no se configuren.');
    end
    else
      fConfiguracion.Actualizar;
  finally
    FreeAndNil(fConfiguracion);
  end;
end;

end.
