unit uPluginContactos;

interface

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

type
  TPluginContactos = class(TModuleController, IMCContactos)
    actClientes: TAction;
    actProveedores: TAction;
    Compras1: TMenuItem;
    ExtraImages: TPngImageList;
    LargeImages: TPngImageList;
    MainMenu: TMainMenu;
    ModuleActionList: TActionList;
    Proveedores1: TMenuItem;
    Resumen1: TMenuItem;
    SmallImages: TPngImageList;
    Ventas1: TMenuItem;
    actEmpleados: TAction;
    Vendedores1: TMenuItem;
    actGruposCliente: TAction;
    actGruposProveedor: TAction;
    actGruposEmpleado: TAction;
    Categoriasdeempleado1: TMenuItem;
    Gruposdeproveedor1: TMenuItem;
    Da1: TMenuItem;
    Empresa1: TMenuItem;
    actVendedores: TAction;
    Vendedores2: TMenuItem;
    procedure actClientesExecute(Sender: TObject);
    procedure actProveedoresExecute(Sender: TObject);
    procedure actEmpleadosExecute(Sender: TObject);
    procedure actGruposClienteExecute(Sender: TObject);
    procedure actGruposProveedorExecute(Sender: TObject);
    procedure actGruposEmpleadoExecute(Sender: TObject);
    procedure actEmpleadosUpdate(Sender: TObject);
    procedure actVendedoresExecute(Sender: TObject);
    procedure actVendedoresUpdate(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure VerClientesVendedor(const ID_Vendedor: Integer;
      const ANombreVendedor : String = '');
  end;

implementation

{$R *.dfm}

uses
  Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, uContactosController,
  uClientesController, uProveedoresController, uEmpleadosController, cxControls,
  uVendedoresController, uGruposClienteController, uBizGruposCliente,
  uGruposProveedorController, uBizGruposProveedor, uGruposEmpleadoController,
  uBizGruposEmpleado, uContactosViewRegister, uBizContactos, uFactuGES_App;

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

exports
  GetModule name GET_MODULE_FUNC;

{
******************************* TModuleContactos *******************************
}
procedure TPluginContactos.actClientesExecute(Sender: TObject);
var
  AClientesController : IClientesController;
  AClientes : IBizCliente;
begin
  try
  AClientesController := TClientesController.Create;
  AClientes := (AClientesController.BuscarTodos as IBizCliente);
  AClientesController.VerTodos(AClientes);
  finally
    AClientes := Nil;
    AClientesController := Nil; 
  end;
end;

procedure TPluginContactos.actGruposClienteExecute(Sender: TObject);
var
  AGruposClienteController : IGruposClienteController;
  AGruposCliente : IBizGrupoCliente;
begin
  AGruposClienteController := TGruposClienteController.Create;
  AGruposCliente := (AGruposClienteController.BuscarTodos as IBizGrupoCliente);
  AGruposClienteController.VerTodos(AGruposCliente);
end;

procedure TPluginContactos.actGruposEmpleadoExecute(Sender: TObject);
var
  AGruposEmpleadoController : IGruposEmpleadoController;
  AGruposEmpleado : IBizGrupoEmpleado;
begin
  AGruposEmpleadoController := TGruposEmpleadoController.Create;
  AGruposEmpleado := (AGruposEmpleadoController.BuscarTodos as IBizGrupoEmpleado);
  AGruposEmpleadoController.VerTodos(AGruposEmpleado);
end;

procedure TPluginContactos.actGruposProveedorExecute(Sender: TObject);
var
  AGruposProveedorController : IGruposProveedorController;
  AGruposProveedor : IBizGrupoProveedor;
begin
  AGruposProveedorController := TGruposProveedorController.Create;
  AGruposProveedor := (AGruposProveedorController.BuscarTodos as IBizGrupoProveedor);
  AGruposProveedorController.VerTodos(AGruposProveedor);
end;

procedure TPluginContactos.actProveedoresExecute(Sender: TObject);
var
  AProveedoresController : IProveedoresController;
  AProveedores : IBizProveedor;
begin
  AProveedoresController := TProveedoresController.Create;
  AProveedores := (AProveedoresController.BuscarTodos as IBizProveedor);
  AProveedoresController.VerTodos(AProveedores);
end;

procedure TPluginContactos.actVendedoresExecute(Sender: TObject);
var
  AVendedoresController : IVendedoresController;
  AVendedores : IBizVendedor;
begin
  AVendedoresController := TVendedoresController.Create;
  AVendedores := (AVendedoresController.BuscarTodos as IBizVendedor);
  AVendedoresController.VerTodos(AVendedores);
end;

procedure TPluginContactos.actVendedoresUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(AppFactuGES.EmpresaActiva)
end;

procedure TPluginContactos.actEmpleadosExecute(Sender: TObject);
var
  AEmpleadosController : IEmpleadosController;
  AEmpleados : IBizEmpleado;
begin
  AEmpleadosController := TEmpleadosController.Create;
  AEmpleados := (AEmpleadosController.BuscarTodos as IBizEmpleado);
  AEmpleadosController.VerTodos(AEmpleados);
end;

procedure TPluginContactos.actEmpleadosUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := Assigned(AppFactuGES.EmpresaActiva);
end;

constructor TPluginContactos.Create(AOwner: TComponent);
begin
  inherited;
  ModuleName := MODULENAME_CONTACTOS;
  uContactosViewRegister.RegisterViews;
end;

destructor TPluginContactos.Destroy;
begin
  uContactosViewRegister.UnregisterViews;
  inherited;
end;

procedure TPluginContactos.VerClientesVendedor(const ID_Vendedor: Integer;
  const ANombreVendedor: String);
var
  AClientesController : IClientesController;
  AClientesVendedor : IBizCliente;
  AText : String;
begin
  AText := Format('Lista de clientes del vendedor %s', [ANombreVendedor]);
  AClientesController := TClientesController.Create;
  try
    ShowHourglassCursor;
    try
      AClientesVendedor := AClientesController.BuscarTodosVendedor(ID_Vendedor);
    finally
      HideHourglassCursor;
    end;
    AClientesController.VerTodos(AClientesVendedor, True, AText);
  finally
    AClientesVendedor := NIL;
    AClientesController := NIL;
  end;
end;

initialization
  uHostManager.RegisterModuleClass(TPluginContactos);

finalization
  uHostManager.UnRegisterModuleClass(TPluginContactos);

end.
