Tecsitel_FactuGES2/Source/Modulos/Contactos/Views/uViewDatosYSeleccionClienteBase.pas

316 lines
9.3 KiB
ObjectPascal
Raw Normal View History

unit uViewDatosYSeleccionClienteBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, StdCtrls, cxControls, cxContainer, cxEdit, cxLabel,
cxDBLabel, ExtCtrls, DB, uDADataTable, uBizContactos, uClientesController,
uDAInterfaces, uBizDireccionesContacto,
uDireccionesContactoController, uBizContactosPersonal, ImgList, PngImageList,
ActnList, dxLayoutControl, Buttons;
type
IViewDatosYSeleccionClienteBase = interface(IViewBase)
['{EC1BAC23-95A7-469F-8E86-939C149C4528}']
function GetCliente: IBizCliente;
procedure SetCliente(Value: IBizCliente);
property Cliente: IBizCliente read GetCliente write SetCliente;
function GetID_Cliente: integer;
procedure SetID_Cliente(const Value: integer);
property ID_Cliente: integer read GetID_Cliente write SetID_Cliente;
function GetOnClienteChanged : TNotifyEvent;
procedure SetOnClienteChanged (const Value : TNotifyEvent);
property OnClienteChanged : TNotifyEvent read GetOnClienteChanged
write SetOnClienteChanged;
procedure ElegirPersonaContacto;
procedure ElegirDireccionCliente;
procedure ElegirCliente;
procedure VerFichaCliente;
procedure AnadirNuevoCliente;
end;
TfrViewDatosYSeleccionClienteBase = class(TfrViewBase, IViewDatosYSeleccionClienteBase)
dsCliente: TDADataSource;
ActionList1: TActionList;
actElegirContacto: TAction;
actAnadirContacto: TAction;
actVerContacto: TAction;
PngImageList: TPngImageList;
dxLayoutControl1Group_Root: TdxLayoutGroup;
dxLayoutControl1: TdxLayoutControl;
actElegirDireccion: TAction;
actElegirPersonaContacto: TAction;
Panel1: TPanel;
bElegirCliente: TBitBtn;
bNuevoCliente: TBitBtn;
bVerFicha: TBitBtn;
bvSeparador: TBevel;
procedure actElegirContactoExecute(Sender: TObject);
procedure actAnadirContactoExecute(Sender: TObject);
procedure edtPersonaContactoPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure edtDireccionPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure actVerContactoExecute(Sender: TObject);
procedure actElegirDireccionUpdate(Sender: TObject);
procedure actElegirDireccionExecute(Sender: TObject);
procedure actElegirPersonaContactoExecute(Sender: TObject);
procedure actElegirPersonaContactoUpdate(Sender: TObject);
private
FOnClienteChanged : TNotifyEvent;
FMsgElegirCliente: String;
FMsgElegirDireccion: String;
FMsgElegirPersonaContacto: String;
protected
FClientesController : IClientesController;
FDireccionesController : IDireccionesContactoController;
FCliente : IBizCliente;
FDireccion : IBizDireccionesContacto;
FPersonaContacto : IBizContactoPersonal;
function GetCliente: IBizCliente; virtual;
procedure SetCliente(Value: IBizCliente); virtual;
function GetOnClienteChanged : TNotifyEvent;
procedure SetOnClienteChanged (const Value : TNotifyEvent);
procedure SetReadOnly(Value: Boolean); override;
function GetID_Cliente: integer; virtual;
procedure SetID_Cliente(const Value: integer); virtual;
procedure InicializarMensajes; virtual;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ElegirPersonaContacto; virtual;
procedure ElegirDireccionCliente; virtual;
procedure ElegirCliente; virtual;
procedure VerFichaCliente; virtual;
procedure AnadirNuevoCliente; virtual;
property Cliente: IBizCliente read GetCliente write SetCliente;
property OnClienteChanged : TNotifyEvent read GetOnClienteChanged write SetOnClienteChanged;
property ID_Cliente: integer read GetID_Cliente write SetID_Cliente;
end;
implementation
{$R *.dfm}
uses
uDataModuleClientes, Math, uCustomView, uDialogUtils;
procedure TfrViewDatosYSeleccionClienteBase.actElegirContactoExecute(Sender: TObject);
begin
ElegirCliente;
end;
procedure TfrViewDatosYSeleccionClienteBase.actElegirDireccionExecute(
Sender: TObject);
begin
inherited;
ElegirDireccionCliente;
end;
procedure TfrViewDatosYSeleccionClienteBase.actElegirDireccionUpdate(
Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := Assigned(FCliente.Direcciones) and
(FCliente.Direcciones.Active) and (FCliente.Direcciones.RecordCount > 0);
end;
procedure TfrViewDatosYSeleccionClienteBase.actElegirPersonaContactoExecute(
Sender: TObject);
begin
inherited;
ElegirPersonaContacto;
end;
procedure TfrViewDatosYSeleccionClienteBase.actElegirPersonaContactoUpdate(
Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := Assigned(FCliente.Personal) and
(FCliente.Personal.Active) and (FCliente.Personal.RecordCount > 0);
end;
procedure TfrViewDatosYSeleccionClienteBase.actAnadirContactoExecute(
Sender: TObject);
begin
AnadirNuevoCliente;
end;
procedure TfrViewDatosYSeleccionClienteBase.actVerContactoExecute(
Sender: TObject);
begin
inherited;
VerFichaCliente;
end;
procedure TfrViewDatosYSeleccionClienteBase.AnadirNuevoCliente;
var
ACliente : IBizCliente;
begin
inherited;
ACliente := (FClientesController.Nuevo as IBizCliente);
FClientesController.Ver(ACliente);
Self.Cliente := ACliente;
end;
constructor TfrViewDatosYSeleccionClienteBase.Create(AOwner: TComponent);
begin
inherited;
FClientesController := TClientesController.Create;
FDireccionesController := TDireccionesContactoController.Create;
FPersonaContacto := NIL;
FDireccion := NIL;
FCliente := NIL;
end;
destructor TfrViewDatosYSeleccionClienteBase.Destroy;
begin
FPersonaContacto := NIL;
FDireccion := NIL;
FCliente := NIL;
FClientesController := NIL;
FDireccionesController := NIL;
inherited;
end;
procedure TfrViewDatosYSeleccionClienteBase.edtDireccionPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
inherited;
ElegirDireccionCliente;
end;
procedure TfrViewDatosYSeleccionClienteBase.edtPersonaContactoPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
inherited;
ElegirPersonaContacto;
end;
procedure TfrViewDatosYSeleccionClienteBase.ElegirCliente;
var
ACliente : IBizCliente;
begin
inherited;
ACliente := (FClientesController.ElegirContacto(FClientesController.BuscarTodos, FMsgElegirCliente, False) as IBizCliente);
if Assigned(ACliente) then
Self.Cliente := ACliente;
ACliente := Nil;
end;
procedure TfrViewDatosYSeleccionClienteBase.ElegirDireccionCliente;
var
ADireccion : IBizDireccionesContacto;
begin
inherited;
ADireccion := FClientesController.ElegirDireccionEntrega(FCliente, FMsgElegirDireccion);
if Assigned(ADireccion) then
FDireccion := ADireccion;
end;
procedure TfrViewDatosYSeleccionClienteBase.ElegirPersonaContacto;
var
APersona : IBizContactoPersonal;
begin
inherited;
APersona := FClientesController.ElegirPersonaContacto(FCliente.Personal, FMsgElegirPersonaContacto);
if Assigned(APersona) then
FPersonaContacto := APersona;
end;
function TfrViewDatosYSeleccionClienteBase.GetCliente: IBizCliente;
begin
Result := FCliente;
end;
function TfrViewDatosYSeleccionClienteBase.GetID_Cliente: integer;
begin
Result := -1;
if Assigned(FCliente) then
Result := FCliente.ID;
end;
procedure TfrViewDatosYSeleccionClienteBase.SetCliente(Value: IBizCliente);
begin
FCliente := Value;
if Assigned(FCliente) then
begin
dsCliente.DataTable := FCliente.DataTable;
if not FCliente.DataTable.Active then
FCliente.DataTable.Active := True;
end
else begin
dsCliente.DataTable := NIL;
FCliente := NIL;
FDireccion := NIL;
FPersonaContacto := NIL;
end;
if Assigned(FOnClienteChanged) then
FOnClienteChanged(Self);
end;
procedure TfrViewDatosYSeleccionClienteBase.SetID_Cliente(const Value: integer);
begin
Self.Cliente := IBizCliente(FClientesController.Buscar(Value));
end;
function TfrViewDatosYSeleccionClienteBase.GetOnClienteChanged: TNotifyEvent;
begin
Result := FOnClienteChanged;
end;
procedure TfrViewDatosYSeleccionClienteBase.InicializarMensajes;
begin
FMsgElegirCliente := 'Elija el cliente que desea utilizar.';
FMsgElegirPersonaContacto := 'El cliente dispone de personas de contacto dadas de alta en su ficha. Seleccione la que quiere utilizar.';
FMsgElegirDireccion := 'El cliente dispone de direcciones de contacto dadas de alta en su ficha. Seleccione la que quiere utilizar.';
end;
procedure TfrViewDatosYSeleccionClienteBase.SetOnClienteChanged(
const Value: TNotifyEvent);
begin
FOnClienteChanged := Value;
end;
procedure TfrViewDatosYSeleccionClienteBase.SetReadOnly(Value: Boolean);
begin
inherited;
if (csLoading in Self.ComponentState) then
Exit;
actAnadirContacto.Enabled := not ReadOnly;
actElegirContacto.Enabled := not ReadOnly;
actElegirDireccion.Enabled := not ReadOnly;
actElegirPersonaContacto.Enabled := not ReadOnly;
end;
procedure TfrViewDatosYSeleccionClienteBase.VerFichaCliente;
begin
if not Assigned(Cliente) then
ShowErrorMessage('No se ha indicado un cliente', '')
else begin
FClientesController.Ver(Cliente);
end;
end;
end.