git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@433 f4e31baf-9722-1c47-927c-6f952f962d4b
452 lines
14 KiB
ObjectPascal
452 lines
14 KiB
ObjectPascal
unit uViewDatosYSeleccionClienteContrato;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, uViewBase, StdCtrls, cxControls, cxContainer, cxEdit, cxLabel,
|
||
cxDBLabel, ExtCtrls, DB, uDADataTable, uBizContactos,
|
||
ComCtrls, ToolWin, ActnList, ImgList, PngImageList, cxTextEdit, cxDBEdit,
|
||
pngimage, JvExControls, JvComponent, JvButton, JvTransparentButton, Mask,
|
||
DBCtrls, uClientesController, dxLayoutControl, Buttons, uDAInterfaces,
|
||
cxMaskEdit, cxButtonEdit, uBizContratosCliente, uBizDireccionesContacto,
|
||
uDireccionesContactoController, Menus, cxLookAndFeelPainters, cxButtons,
|
||
cxMemo;
|
||
|
||
type
|
||
IViewDatosYSeleccionClienteContrato = interface(IViewBase)
|
||
['{18A4627C-9E15-404A-ACAC-6A41D729F89B}']
|
||
function GetContrato: IBizContratoCliente;
|
||
procedure SetContrato(const Value: IBizContratoCliente);
|
||
property Contrato: IBizContratoCliente read GetContrato write SetContrato;
|
||
|
||
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;
|
||
procedure RefrescarDireccion;
|
||
end;
|
||
|
||
TfrViewDatosYSeleccionClienteContrato = class(TfrViewBase, IViewDatosYSeleccionClienteContrato)
|
||
dsCliente: TDADataSource;
|
||
ActionList1: TActionList;
|
||
actElegirContacto: TAction;
|
||
actAnadirContacto: TAction;
|
||
actVerContacto: TAction;
|
||
PngImageList: TPngImageList;
|
||
dxLayoutControl1Group_Root: TdxLayoutGroup;
|
||
dxLayoutControl1: TdxLayoutControl;
|
||
dxLayoutControl1Item1: TdxLayoutItem;
|
||
edtlNombre: TcxDBTextEdit;
|
||
dxLayoutControl1Item2: TdxLayoutItem;
|
||
edtNIFCIF: TcxDBTextEdit;
|
||
Button1: TBitBtn;
|
||
dxLayoutControl1Item7: TdxLayoutItem;
|
||
Button2: TBitBtn;
|
||
dxLayoutControl1Item8: TdxLayoutItem;
|
||
Button3: TBitBtn;
|
||
dxLayoutControl1Item9: TdxLayoutItem;
|
||
dxLayoutControl1Group1: TdxLayoutGroup;
|
||
dxLayoutControl1Group2: TdxLayoutGroup;
|
||
dsContrato: TDADataSource;
|
||
actElegirDireccion: TAction;
|
||
actElegirPersonaContacto: TAction;
|
||
dxLayoutControl1Item3: TdxLayoutItem;
|
||
edtPersonaContacto: TcxDBTextEdit;
|
||
dxLayoutControl1Group4: TdxLayoutGroup;
|
||
dxLayoutControl1Item4: TdxLayoutItem;
|
||
edtDireccion: TcxMemo;
|
||
Button4: TButton;
|
||
dxLayoutControl1Item5: TdxLayoutItem;
|
||
dxLayoutControl1Group3: TdxLayoutGroup;
|
||
dxLayoutControl1Item6: TdxLayoutItem;
|
||
Button5: TButton;
|
||
dxLayoutControl1Group5: TdxLayoutGroup;
|
||
procedure actElegirContactoExecute(Sender: TObject);
|
||
procedure actAnadirContactoExecute(Sender: TObject);
|
||
procedure actVerContactoUpdate(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;
|
||
protected
|
||
FClientesController : IClientesController;
|
||
FDireccionesController : IDireccionesContactoController;
|
||
FContrato : IBizContratoCliente;
|
||
FCliente : IBizCliente;
|
||
FDireccion : IBizDireccionesContacto;
|
||
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;
|
||
function GetContrato: IBizContratoCliente;
|
||
procedure SetContrato(const Value: IBizContratoCliente);
|
||
procedure EscribirTextoDireccion;
|
||
public
|
||
constructor Create(AOwner: TComponent); override;
|
||
destructor Destroy; override;
|
||
procedure ElegirPersonaContacto;
|
||
procedure ElegirDireccionCliente;
|
||
procedure ElegirCliente;
|
||
procedure VerFichaCliente;
|
||
procedure AnadirNuevoCliente;
|
||
procedure RefrescarDireccion;
|
||
property Contrato: IBizContratoCliente read GetContrato write SetContrato;
|
||
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, uBizContactosPersonal, uDialogUtils;
|
||
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.actElegirContactoExecute(Sender: TObject);
|
||
begin
|
||
ElegirCliente;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.actElegirDireccionExecute(
|
||
Sender: TObject);
|
||
begin
|
||
inherited;
|
||
ElegirDireccionCliente;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.actElegirDireccionUpdate(
|
||
Sender: TObject);
|
||
begin
|
||
inherited;
|
||
(Sender as TAction).Enabled := Assigned(FCliente.Direcciones) and
|
||
(FCliente.Direcciones.Active) and (FCliente.Direcciones.RecordCount > 0);
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.actElegirPersonaContactoExecute(
|
||
Sender: TObject);
|
||
begin
|
||
inherited;
|
||
ElegirPersonaContacto;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.actElegirPersonaContactoUpdate(
|
||
Sender: TObject);
|
||
begin
|
||
inherited;
|
||
(Sender as TAction).Enabled := Assigned(FCliente.Personal) and
|
||
(FCliente.Personal.Active) and (FCliente.Personal.RecordCount > 0);
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.actAnadirContactoExecute(
|
||
Sender: TObject);
|
||
begin
|
||
AnadirNuevoCliente;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.actVerContactoExecute(
|
||
Sender: TObject);
|
||
begin
|
||
inherited;
|
||
VerFichaCliente;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.actVerContactoUpdate(Sender: TObject);
|
||
begin
|
||
inherited;
|
||
(Sender as TAction).Enabled := (Length(edtlNombre.Text) > 0);
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.AnadirNuevoCliente;
|
||
var
|
||
ACliente : IBizCliente;
|
||
begin
|
||
inherited;
|
||
ACliente := (FClientesController.Nuevo as IBizCliente);
|
||
FClientesController.Ver(ACliente);
|
||
Self.Cliente := ACliente;
|
||
end;
|
||
|
||
constructor TfrViewDatosYSeleccionClienteContrato.Create(AOwner: TComponent);
|
||
begin
|
||
inherited;
|
||
FMsgElegirCliente := 'Elija el cliente al que se le realizar<61> el Contrato.';
|
||
FClientesController := TClientesController.Create;
|
||
FDireccionesController := TDireccionesContactoController.Create;
|
||
FDireccion := FDireccionesController.Nuevo;
|
||
|
||
edtlNombre.Enabled := False;
|
||
edtNIFCIF.Enabled := False;
|
||
edtDireccion.Enabled := False;
|
||
edtPersonaContacto.Enabled := False;
|
||
|
||
Button5.Visible := False;
|
||
end;
|
||
|
||
destructor TfrViewDatosYSeleccionClienteContrato.Destroy;
|
||
begin
|
||
FDireccion := NIL;
|
||
FClientesController := NIL;
|
||
FDireccionesController := NIL;
|
||
inherited;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.edtDireccionPropertiesButtonClick(
|
||
Sender: TObject; AButtonIndex: Integer);
|
||
begin
|
||
inherited;
|
||
ElegirDireccionCliente;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.edtPersonaContactoPropertiesButtonClick(
|
||
Sender: TObject; AButtonIndex: Integer);
|
||
begin
|
||
inherited;
|
||
ElegirPersonaContacto;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.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 TfrViewDatosYSeleccionClienteContrato.ElegirDireccionCliente;
|
||
var
|
||
ADireccion : IBizDireccionesContacto;
|
||
begin
|
||
inherited;
|
||
|
||
ADireccion := FClientesController.ElegirDireccionEntrega(FCliente, ' ');
|
||
|
||
if Assigned(ADireccion) then
|
||
begin
|
||
FDireccion := ADireccion;
|
||
EscribirTextoDireccion;
|
||
|
||
if FDireccion.IDIsNull then
|
||
begin
|
||
// FContrato.ClearField('ID_DIRECCION');
|
||
FContrato.ClearField('IMPORTE_PORTE');
|
||
end
|
||
else begin
|
||
// FContrato.ID_DIRECCION := FDireccion.ID;
|
||
FContrato.IMPORTE_PORTE := FDireccion.PORTE;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.ElegirPersonaContacto;
|
||
var
|
||
APersona : IBizContactoPersonal;
|
||
begin
|
||
inherited;
|
||
APersona := FClientesController.ElegirPersonaContacto(FCliente.Personal, 'El cliente dispone de personas de contacto dadas de alta en su ficha. Seleccione la que quiere utilizar.');
|
||
if Assigned(APersona) then
|
||
begin
|
||
FContrato.Edit;
|
||
FContrato.PERSONA_CONTACTO := APersona.NOMBRE;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.EscribirTextoDireccion;
|
||
var
|
||
ACadena : String;
|
||
begin
|
||
ACadena := '';
|
||
|
||
//Siempre asignaremos la direccion y persona de contacto ya sea de las direcciones del contacto o la ID_Direccion=0 que es la principal de la ficha
|
||
FContrato.Edit;
|
||
FContrato.CALLE := FDireccion.CALLE;
|
||
FContrato.POBLACION := FDireccion.POBLACION;
|
||
FContrato.PROVINCIA := FDireccion.PROVINCIA;
|
||
FContrato.CODIGO_POSTAL := FDireccion.CODIGO_POSTAL;
|
||
FContrato.PERSONA_CONTACTO := FDireccion.PERSONA_CONTACTO;
|
||
|
||
if Assigned(FDireccion) then
|
||
ACadena := Format('%s %s %s %s',
|
||
[FDireccion.CALLE, FDireccion.POBLACION,
|
||
FDireccion.CODIGO_POSTAL, FDireccion.PROVINCIA]);
|
||
|
||
edtDireccion.Text := ACadena;
|
||
end;
|
||
|
||
function TfrViewDatosYSeleccionClienteContrato.GetCliente: IBizCliente;
|
||
begin
|
||
Result := FCliente;
|
||
end;
|
||
|
||
function TfrViewDatosYSeleccionClienteContrato.GetID_Cliente: integer;
|
||
begin
|
||
Result := -1;
|
||
if Assigned(FCliente) then
|
||
Result := FCliente.ID;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.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;
|
||
|
||
//Solo podremos establecer persona de contacto si se ha asignado un cliente
|
||
if FCliente.ID > 0 then
|
||
edtPersonaContacto.Enabled := True;
|
||
|
||
if FCliente.Direcciones.RecordCount > 0 then
|
||
ElegirDireccionCliente
|
||
else begin
|
||
FDireccionesController.CopiarDireccionFiscal(FCliente, FDireccion);
|
||
EscribirTextoDireccion;
|
||
end;
|
||
end
|
||
else begin
|
||
dsCliente.DataTable := NIL;
|
||
FCliente := NIL;
|
||
FDireccion := NIL;
|
||
edtPersonaContacto.Enabled := False;
|
||
end;
|
||
|
||
if Assigned(FOnClienteChanged) then
|
||
FOnClienteChanged(Self);
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.SetID_Cliente(const Value: integer);
|
||
begin
|
||
Self.Cliente := IBizCliente(FClientesController.Buscar(Value));
|
||
end;
|
||
|
||
function TfrViewDatosYSeleccionClienteContrato.GetOnClienteChanged: TNotifyEvent;
|
||
begin
|
||
Result := FOnClienteChanged;
|
||
end;
|
||
|
||
function TfrViewDatosYSeleccionClienteContrato.GetContrato: IBizContratoCliente;
|
||
begin
|
||
Result := FContrato;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.RefrescarDireccion;
|
||
begin
|
||
// FDireccion := FDireccionesController.Nuevo;
|
||
|
||
// if (not FContrato.ID_DIRECCIONIsNull) and
|
||
// (FDireccionesController.Localizar(FCliente.Direcciones, FContrato.ID_DIRECCION)) then
|
||
// FDireccionesController.CopiarDireccion(FCliente.Direcciones, FDireccion)
|
||
// else
|
||
// FDireccionesController.CopiarDireccionFiscal(FCliente, FDireccion);
|
||
|
||
// EscribirTextoDireccion;
|
||
|
||
FDireccion.Active := True;
|
||
FDireccion.DataTable.Insert;
|
||
try
|
||
with FDireccion do
|
||
begin
|
||
NOMBRE := FContrato.NOMBRE;
|
||
CALLE := FContrato.CALLE;
|
||
POBLACION := FContrato.POBLACION;
|
||
PROVINCIA := FContrato.PROVINCIA;
|
||
CODIGO_POSTAL := FContrato.CODIGO_POSTAL;
|
||
PERSONA_CONTACTO := FContrato.PERSONA_CONTACTO;
|
||
end;
|
||
finally
|
||
FDireccion.DataTable.Post;
|
||
end;
|
||
EscribirTextoDireccion;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.SetOnClienteChanged(
|
||
const Value: TNotifyEvent);
|
||
begin
|
||
FOnClienteChanged := Value;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.SetContrato(
|
||
const Value: IBizContratoCliente);
|
||
begin
|
||
FContrato := Value;
|
||
if Assigned(FContrato) then
|
||
begin
|
||
dsContrato.DataTable := FContrato.DataTable;
|
||
|
||
FCliente := FContrato.Cliente;
|
||
dsCliente.DataTable := FCliente.DataTable;
|
||
|
||
if not FCliente.DataTable.Active then
|
||
FCliente.DataTable.Active := True;
|
||
|
||
//Solo podremos establecer persona de contacto si se ha asignado un cliente
|
||
if FCliente.ID > 0 then
|
||
edtPersonaContacto.Enabled := True;
|
||
|
||
RefrescarDireccion;
|
||
end
|
||
else begin
|
||
dsContrato.DataTable := NIL;
|
||
FCliente := NIL;
|
||
FDireccion := NIL;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.SetReadOnly(Value: Boolean);
|
||
begin
|
||
inherited;
|
||
|
||
if (csLoading in Self.ComponentState) then
|
||
Exit;
|
||
|
||
actAnadirContacto.Enabled := not ReadOnly;
|
||
actElegirContacto.Enabled := not ReadOnly;
|
||
end;
|
||
|
||
procedure TfrViewDatosYSeleccionClienteContrato.VerFichaCliente;
|
||
begin
|
||
if not Assigned(Cliente) then
|
||
ShowErrorMessage('No se ha indicado un cliente', 'El Contrato no tiene ning<6E>n cliente asociado a mostrar.')
|
||
else begin
|
||
FClientesController.Ver(Cliente);
|
||
end;
|
||
end;
|
||
|
||
end.
|