unit uPluginPedidosCliente;

interface

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

type
  TPluginPedidosCliente = class(TModuleController, IMCPedidosCliente)
    actPedidosCliente: TAction;
    ExtraImages: TPngImageList;
    LargeImages: TPngImageList;
    MainMenu: TMainMenu;
    ModuleActionList: TActionList;
    SmallImages: TPngImageList;
    Ventas1: TMenuItem;
    PedidosdeCliente1: TMenuItem;
    actInfPedidos: TAction;
    procedure actPedidosClienteExecute(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure VerPedidos(const ID_Cliente: Integer;
      const ANombreCliente : String = '');
    procedure VerPedidosVendedor(const ID_Vendedor: Integer;
      const ANombreVendedor : String = '');

  end;

implementation

{$R *.dfm}

uses
  Forms, Dialogs, SysUtils, cxControls,
  uPedidosClienteController, uBizPedidosCliente, uPedidosClienteViewRegister;

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

exports
  GetModule name GET_MODULE_FUNC;

procedure TPluginPedidosCliente.actPedidosClienteExecute(Sender: TObject);
var
  APedidosClienteController : IPedidosClienteController;
  APedidosCliente : IBizPedidoCliente;

begin
  APedidosClienteController := TPedidosClienteController.Create;
  APedidosCliente := (APedidosClienteController.BuscarTodos as IBizPedidoCliente);
  APedidosClienteController.VerTodos(APedidosCliente);
end;

constructor TPluginPedidosCliente.Create(AOwner: TComponent);
begin
  inherited;
  ModuleName := MODULENAME_PEDIDOS_CLIENTE;
  uPedidosClienteViewRegister.RegisterViews;
end;

destructor TPluginPedidosCliente.Destroy;
begin
  uPedidosClienteViewRegister.UnregisterViews;
  inherited;
end;

procedure TPluginPedidosCliente.VerPedidos(const ID_Cliente: Integer;
  const ANombreCliente: String);
var
  APedidosClienteController : IPedidosClienteController;
  APedidosCliente : IBizPedidoCliente;
  AText : String;
begin
  AText := Format('Lista de pedidos del cliente %s', [ANombreCliente]);
  APedidosClienteController := TPedidosClienteController.Create;
  try
    ShowHourglassCursor;
    try
      APedidosCliente := APedidosClienteController.BuscarTodos(ID_Cliente);
    finally
      HideHourglassCursor;
    end;
    APedidosClienteController.VerTodosPedidos(APedidosCliente, True, AText);
  finally
    APedidosCliente := NIL;
    APedidosClienteController := NIL;
  end;
end;

procedure TPluginPedidosCliente.VerPedidosVendedor(const ID_Vendedor: Integer;
  const ANombreVendedor: String);
var
  APedidosClienteController : IPedidosClienteController;
  APedidosVendedor : IBizPedidoCliente;
  AText : String;
begin
  AText := Format('Lista de pedidos del vendedor %s', [ANombreVendedor]);
  APedidosClienteController := TPedidosClienteController.Create;
  try
    ShowHourglassCursor;
    try
      APedidosVendedor := APedidosClienteController.BuscarTodosVendedor(ID_Vendedor);
    finally
      HideHourglassCursor;
    end;
    APedidosClienteController.VerTodosPedidos(APedidosVendedor, True, AText);
  finally
    APedidosVendedor := NIL;
    APedidosClienteController := NIL;
  end;
end;

initialization
  RegisterModuleClass(TPluginPedidosCliente);

finalization
  UnRegisterModuleClass(TPluginPedidosCliente);

end.
