unit uPluginContabilidad;

interface

uses
  uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList,
  ImgList, Controls, PngImageList;

type
  IMCContabilidad = interface(IInterface)
    ['{A88ED1C0-8E93-4721-9B8B-7268F13155B3}']
  end;

  TPluginContabilidad = class(TModuleController, IMCContabilidad)
    actEpigrafes: TAction;
    ExtraImages: TPngImageList;
    LargeImages: TPngImageList;
    MainMenu: TMainMenu;
    ModuleActionList: TActionList;
    SmallImages: TPngImageList;
    Contabilidad1: TMenuItem;
    Epigrafes1: TMenuItem;
    N1: TMenuItem;
    actBalances: TAction;
    actCuentasEspeciales: TAction;
    Contabilidad2: TMenuItem;
    Balances1: TMenuItem;
    Cuentasespeciales1: TMenuItem;
    actCuentas: TAction;
    Cuentas1: TMenuItem;
    actSubCuentas: TAction;
    Subcuentas1: TMenuItem;
    actDiario: TAction;
    Asientos1: TMenuItem;
    actCajasBancos: TAction;
    CajasBancos1: TMenuItem;
    N2: TMenuItem;
    procedure actEpigrafesExecute(Sender: TObject);
    procedure actBalancesExecute(Sender: TObject);
    procedure actCuentasEspecialesExecute(Sender: TObject);
    procedure actCuentasExecute(Sender: TObject);
    procedure actSubCuentasExecute(Sender: TObject);
    procedure actDiarioExecute(Sender: TObject);
    procedure actCuentasUpdate(Sender: TObject);
    procedure actEpigrafesUpdate(Sender: TObject);
    procedure actBalancesUpdate(Sender: TObject);
    procedure actCuentasEspecialesUpdate(Sender: TObject);
    procedure actSubCuentasUpdate(Sender: TObject);
    procedure actDiarioUpdate(Sender: TObject);
    procedure actCajasBancosExecute(Sender: TObject);
    procedure actCajasBancosUpdate(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

implementation

{$R *.dfm}

uses
  Forms, Dialogs, SysUtils, uFactuGES_App,
  uEpigrafesController, uBalancesController, uCuentasEspecialesController,
  uCuentasController, uSubCuentasController, uAsientosController,
  uBizEpigrafes, uBizBalances, uBizCuentasEspeciales, uBizCuentas, uBizSubCuentas,
  uBizAsientos, uBizDiario,
  uContabilidadViewRegister;

function GetModule : TModuleController;
begin
  Result := TPluginContabilidad.Create(NIL);
end;

exports
  GetModule name GET_MODULE_FUNC;

procedure TPluginContabilidad.actDiarioExecute(Sender: TObject);
var
  AAsientosController : IAsientosController;
  ADiario : IBizDiario;
begin
  AAsientosController := TAsientosController.Create;
  ADiario := (AAsientosController.BuscarAsientos as IBizDiario);
  AAsientosController.VerDiario(ADiario);
end;

procedure TPluginContabilidad.actDiarioUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(AppFactuGES.EjercicioActivo);
end;

procedure TPluginContabilidad.actBalancesExecute(Sender: TObject);
var
  ABalancesController : IBalancesController;
  ABalances : IBizBalance;
begin
  ABalancesController := TBalancesController.Create;
  ABalances := (ABalancesController.BuscarTodos as IBizBalance);
  ABalancesController.VerTodos(ABalances);
end;

procedure TPluginContabilidad.actBalancesUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(AppFactuGES.EjercicioActivo);
end;

procedure TPluginContabilidad.actCajasBancosExecute(Sender: TObject);
var
  AAsientosController : IAsientosController;
//  ADiario : IBizDiario;
begin
  AAsientosController := TAsientosController.Create;
//  ADiario := (AAsientosController.BuscarAsientos as IBizDiario);
  AAsientosController.VerExtracto; //(ADiario);
end;

procedure TPluginContabilidad.actCajasBancosUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(AppFactuGES.EjercicioActivo);
end;

procedure TPluginContabilidad.actCuentasEspecialesExecute(Sender: TObject);
var
  ACuentasEspecialesController : ICuentasEspecialesController;
  ACuentasEspeciales : IBizCuentaEspecial;
begin
  ACuentasEspecialesController := TCuentasEspecialesController.Create;
  ACuentasEspeciales := (ACuentasEspecialesController.BuscarTodos as IBizCuentaEspecial);
  ACuentasEspecialesController.VerTodos(ACuentasEspeciales);
end;

procedure TPluginContabilidad.actCuentasEspecialesUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(AppFactuGES.EjercicioActivo);
end;

procedure TPluginContabilidad.actCuentasExecute(Sender: TObject);
var
  ACuentasController : ICuentasController;
  ACuentas : IBizCuenta;
begin
  ACuentasController := TCuentasController.Create;
  ACuentas := (ACuentasController.BuscarTodos as IBizCuenta);
  ACuentasController.VerTodos(ACuentas);
end;

procedure TPluginContabilidad.actCuentasUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(AppFactuGES.EjercicioActivo);
end;

procedure TPluginContabilidad.actEpigrafesExecute(Sender: TObject);
var
  AEpigrafesController : IEpigrafesController;
  AEpigrafes : IBizEpigrafe;
begin
  AEpigrafesController := TEpigrafesController.Create;
  AEpigrafes := (AEpigrafesController.BuscarTodos as IBizEpigrafe);
  AEpigrafesController.VerTodos(AEpigrafes);
end;

procedure TPluginContabilidad.actEpigrafesUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(AppFactuGES.EjercicioActivo);
end;

procedure TPluginContabilidad.actSubCuentasExecute(Sender: TObject);
var
  ASubCuentasController : ISubCuentasController;
  ASubCuentas : IBizSubCuenta;
begin
  ASubCuentasController := TSubcuentasController.Create;
  ASubCuentas := (ASubCuentasController.BuscarTodos as IBizSubCuenta);
  ASubCuentasController.VerTodos(ASubCuentas);
end;

procedure TPluginContabilidad.actSubCuentasUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(AppFactuGES.EjercicioActivo);
end;

constructor TPluginContabilidad.Create(AOwner: TComponent);
begin
  inherited;
  uContabilidadViewRegister.RegisterViews;

  //Solo lo verá el perfil Administrador
  if (AppFactuGES.UsuarioActivo.ID_PERFIL <> CTE_PERFIL_ADMINISTRADOR) then
  begin
     actSubCuentas.Visible := False;
     actCuentas.Visible := False;
  end;

  //El usuario vendedor y logistica será restringido
  if ((AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PREFIL_LOGISTICA) OR (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_VENDEDOR)) then
  begin
     actCuentasEspeciales.Visible := False;
     actBalances.Visible := False;
  end;

end;

destructor TPluginContabilidad.Destroy;
begin
  uContabilidadViewRegister.UnregisterViews;
  inherited;
end;

initialization
  RegisterModuleClass(TPluginContabilidad);

finalization
  UnRegisterModuleClass(TPluginContabilidad);

end.
