unit uEditorCliente;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  uEditorContacto, ImgList, PngImageList, StdActns, ActnList, SpTBXItem,
  TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent,
  JvNavigationPane, uViewCliente, uBizContactos, DB, uDADataTable,
  JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, uCustomView,
  uViewBase, JvAppStorage, JvAppRegistryStorage,
  JvFormPlacement, ExtCtrls, pngimage, JvComponentBase, uViewContacto, StdCtrls,

  uIEditorCliente,  JvExComCtrls, JvStatusBar, uViewEmpleado,
  uViewDireccionesEntrega, uViewDetallesGenerico, uViewClienteDescuentos,
  uViewContactoDatosBancarios, dxLayoutLookAndFeels,
  uViewClienteDatosComerciales, uDAInterfaces, uViewContactoListaDatosBancarios,
  uViewPersonalContacto, cxControls, cxContainer, cxEdit, cxLabel, cxGraphics,
  cxLookAndFeels, cxLookAndFeelPainters;

type
  TfEditorCliente = class(TfEditorContacto, IEditorCliente)
    frViewCliente1: TfrViewCliente;
    pagDirecciones: TTabSheet;
    frViewDireccionesEntrega1: TfrViewDireccionesEntrega;
    actGruposCliente: TAction;
    TBXItem7: TSpTBXItem;
    pagDescuentos: TTabSheet;
    frViewClienteDescuentos1: TfrViewClienteDescuentos;
    pagDatosComerciales: TTabSheet;
    frViewClienteDatosComerciales1: TfrViewClienteDatosComerciales;
    TBXSubmenuItem2: TSpTBXSubmenuItem;
    TBXSubmenuItem3: TSpTBXSubmenuItem;
    TBXItem33: TSpTBXItem;
    TBXSeparatorItem6: TSpTBXSeparatorItem;
    actDocumentosPresupuestos: TAction;
    actDocumentosAlbaranes: TAction;
    actDocumentosFacturas: TAction;
    TBXSubmenuItem8: TSpTBXSubmenuItem;
    TBXItem34: TSpTBXItem;
    TBXItem35: TSpTBXItem;
    TBXItem36: TSpTBXItem;
    TBXItem37: TSpTBXItem;
    TBXItem38: TSpTBXItem;
    TBXItem39: TSpTBXItem;
    TBXItem40: TSpTBXItem;
    actDocumentosRecibos: TAction;
    TBXItem41: TSpTBXItem;
    procedure FormShow(Sender: TObject);
    procedure actGruposClienteExecute(Sender: TObject);
    procedure actDocumentosFacturasExecute(Sender: TObject);
    procedure actDocumentosPresupuestosExecute(Sender: TObject);
    procedure actDocumentosAlbaranesExecute(Sender: TObject);
    procedure actDocumentosRecibosExecute(Sender: TObject);
  protected
    procedure EliminarInterno; override;
    procedure SetContacto(const Value: IBizContacto); override;
  public
    constructor Create(AOwner: TComponent); override;
    procedure PonerTitulos(const ATitulo: string = ''); override;
  end;

implementation

uses
  uEditorItem, uEditorBase, uDataModuleUsuarios, uEditorDBItem,
  uGruposClienteController, uBizGruposCliente, uEditorDBBase, uDialogUtils,
  uClientesController;


{$R *.dfm}

procedure TfEditorCliente.actDocumentosAlbaranesExecute(Sender: TObject);
begin
  inherited;
  (FController as IClientesController).VerAlbaranesDeCliente(IBizCliente(FContacto));
end;

procedure TfEditorCliente.actDocumentosFacturasExecute(Sender: TObject);
begin
  inherited;
  (FController as IClientesController).VerFacturasDeCliente(IBizCliente(FContacto));
end;

procedure TfEditorCliente.actDocumentosPresupuestosExecute(Sender: TObject);
begin
  inherited;
  (FController as IClientesController).VerPresupuestosDeCliente(IBizCliente(FContacto));
end;

procedure TfEditorCliente.actDocumentosRecibosExecute(Sender: TObject);
begin
  inherited;
  (FController as IClientesController).VerRecibosDeCliente(IBizCliente(FContacto));
end;

procedure TfEditorCliente.actGruposClienteExecute(Sender: TObject);
var
  AGruposController : IGruposClienteController;
  AGrupos : IBizGrupoCliente;
begin
  AGruposController := TGruposClienteController.Create;
  try
    AGrupos := (AGruposController.BuscarTodos as IBizGrupoCliente);
    AGruposController.VerTodos(AGrupos);
  finally
    AGrupos := NIL;
    AGruposController := NIL;
  end;
end;

constructor TfEditorCliente.Create(AOwner: TComponent);
begin
  inherited;
  ViewContacto := frViewCliente1;
end;

procedure TfEditorCliente.EliminarInterno;
begin
  if (ShowConfirmMessage('¿Desea borrar este cliente?', '') = IDYES) then
    inherited;
end;

procedure TfEditorCliente.FormShow(Sender: TObject);
begin
  inherited;
  pgPaginas.ActivePageIndex := 0;
end;

procedure TfEditorCliente.PonerTitulos(const ATitulo: string);
var
  FTitulo : String;
begin
  if Assigned(Contacto) then
  begin
    if Contacto.EsNuevo then
      FTitulo := 'Nuevo cliente'
    else
      FTitulo := 'Cliente';
  end;

  inherited PonerTitulos(FTitulo);

  if (Contacto as IBizCliente).BLOQUEADO = 1 then
    JvNavPanelHeader.Caption := JvNavPanelHeader.Caption + ' (Bloqueado)'; 
end;

procedure TfEditorCliente.SetContacto(const Value: IBizContacto);
begin
  inherited;
  if Assigned(Contacto) then
  begin
    frViewDireccionesEntrega1.dsDetalles.DataTable := Contacto.Direcciones.DataTable;
    frViewClienteDescuentos1.dsDetalles.DataTable := (Contacto as IBizCliente).Descuentos.DataTable;
    frViewClienteDatosComerciales1.Contacto := Contacto;
  end
  else begin
    frViewDireccionesEntrega1.dsDetalles.DataTable := NIL;
    frViewClienteDescuentos1.dsDetalles.DataTable := NIL;
    frViewClienteDatosComerciales1.Contacto := NIL;
  end;
end;

end.
