This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES2/Source/Modulos/Facturas proforma/Views/uViewDatosYSeleccionClienteFacturaProforma.pas

385 lines
12 KiB
ObjectPascal
Raw Blame History

unit uViewDatosYSeleccionClienteFacturaProforma;
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, uBizFacturasProforma, uBizDireccionesContacto,
uDireccionesContactoController, Menus, cxLookAndFeelPainters, cxButtons,
cxMemo;
type
IViewDatosYSeleccionClienteFacturaProforma = interface(IViewBase)
['{B914EF6C-6E38-4850-A716-1214BDC128A4}']
function GetFactura: IBizFacturaProforma;
procedure SetFactura(const Value: IBizFacturaProforma);
property Factura: IBizFacturaProforma read GetFactura write SetFactura;
function GetCliente: IBizCliente;
procedure SetCliente(Value: IBizCliente);
property Cliente: IBizCliente read GetCliente write SetCliente;
function GetOnClienteChanged : TNotifyEvent;
procedure SetOnClienteChanged (const Value : TNotifyEvent);
property OnClienteChanged : TNotifyEvent read GetOnClienteChanged
write SetOnClienteChanged;
procedure ElegirDireccionCliente;
procedure ElegirCliente;
procedure VerFichaCliente;
procedure AnadirNuevoCliente;
procedure RefrescarDireccion;
end;
TfrViewDatosYSeleccionClienteFacturaProforma = class(TfrViewBase, IViewDatosYSeleccionClienteFacturaProforma)
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;
dsFactura: TDADataSource;
actElegirDireccion: TAction;
dxLayoutControl1Group4: TdxLayoutGroup;
Button4: TButton;
dxLayoutControl1Item5: TdxLayoutItem;
dxLayoutControl1Item3: TdxLayoutItem;
edtDireccion: TcxMemo;
dxLayoutControl1Group3: TdxLayoutGroup;
procedure actElegirContactoExecute(Sender: TObject);
procedure actAnadirContactoExecute(Sender: TObject);
procedure actVerContactoUpdate(Sender: TObject);
procedure edtDireccionPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure actVerContactoExecute(Sender: TObject);
procedure actElegirDireccionUpdate(Sender: TObject);
procedure actElegirDireccionExecute(Sender: TObject);
procedure actElegirPersonaContactoUpdate(Sender: TObject);
private
FOnClienteChanged : TNotifyEvent;
FMsgElegirCliente: String;
protected
FClientesController : IClientesController;
FDireccionesController : IDireccionesContactoController;
FFactura : IBizFacturaProforma;
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 GetFactura: IBizFacturaProforma;
procedure SetFactura(const Value: IBizFacturaProforma);
procedure EscribirTextoDireccion;
procedure CopiarDireccionAFactura;
procedure LimpiarDireccionDeFactura;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ElegirDireccionCliente;
procedure ElegirCliente;
procedure VerFichaCliente;
procedure AnadirNuevoCliente;
procedure RefrescarDireccion;
property Factura: IBizFacturaProforma read GetFactura write SetFactura;
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 TfrViewDatosYSeleccionClienteFacturaProforma.actElegirContactoExecute(Sender: TObject);
begin
ElegirCliente;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.actElegirDireccionExecute(
Sender: TObject);
begin
inherited;
ElegirDireccionCliente;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.actElegirDireccionUpdate(
Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := Assigned(FCliente.Direcciones) and
(FCliente.Direcciones.Active) and (FCliente.Direcciones.RecordCount > 0);
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.actElegirPersonaContactoUpdate(
Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := Assigned(FCliente.Personal) and
(FCliente.Personal.Active) and (FCliente.Personal.RecordCount > 0);
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.actAnadirContactoExecute(
Sender: TObject);
begin
AnadirNuevoCliente;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.actVerContactoExecute(
Sender: TObject);
begin
inherited;
VerFichaCliente;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.actVerContactoUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (Length(edtlNombre.Text) > 0);
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.AnadirNuevoCliente;
var
ACliente : IBizCliente;
begin
inherited;
ACliente := (FClientesController.Nuevo as IBizCliente);
FClientesController.Ver(ACliente);
Self.Cliente := ACliente;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.CopiarDireccionAFactura;
begin
FFactura.Edit;
FFactura.ID_DIRECCION := FDireccion.ID;
FFactura.CALLE := FDireccion.CALLE;
FFactura.POBLACION := FDireccion.POBLACION;
FFactura.CODIGO_POSTAL := FDireccion.CODIGO_POSTAL;
FFactura.PROVINCIA := FDireccion.PROVINCIA;
FFactura.PAIS := FDireccion.PAIS;
FFactura.IMPORTE_PORTE := FDireccion.PORTE;
end;
constructor TfrViewDatosYSeleccionClienteFacturaProforma.Create(AOwner: TComponent);
begin
inherited;
FMsgElegirCliente := 'Elija el cliente al que se le realizar<61> la factura.';
FClientesController := TClientesController.Create;
FDireccionesController := TDireccionesContactoController.Create;
edtlNombre.Enabled := False;
edtNIFCIF.Enabled := False;
edtDireccion.Enabled := False;
end;
destructor TfrViewDatosYSeleccionClienteFacturaProforma.Destroy;
begin
FClientesController := NIL;
FDireccionesController := NIL;
inherited;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.edtDireccionPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
inherited;
ElegirDireccionCliente;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.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 TfrViewDatosYSeleccionClienteFacturaProforma.ElegirDireccionCliente;
var
ADireccion : IBizDireccionesContacto;
begin
inherited;
FDireccionesController.CopiarDireccionFiscal(FCliente, FDireccion);
if FDireccion.IDIsNull then
LimpiarDireccionDeFactura
else
CopiarDireccionAFactura;
EscribirTextoDireccion;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.EscribirTextoDireccion;
var
ACadena : String;
begin
ACadena := '';
if Assigned(FDireccion) then
ACadena := Format('%s %s %s %s %s',
[FFactura.CALLE, FFactura.POBLACION,
FFactura.CODIGO_POSTAL, FFactura.PROVINCIA, FFACTURA.PAIS]);
edtDireccion.Text := ACadena;
end;
function TfrViewDatosYSeleccionClienteFacturaProforma.GetCliente: IBizCliente;
begin
Result := FCliente;
end;
function TfrViewDatosYSeleccionClienteFacturaProforma.GetID_Cliente: integer;
begin
Result := -1;
if Assigned(FCliente) then
Result := FCliente.ID;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.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;
if FCliente.Direcciones.RecordCount > 0 then
ElegirDireccionCliente
else
RefrescarDireccion;
end
else begin
dsCliente.DataTable := NIL;
FCliente := NIL;
FDireccion := NIL;
end;
if Assigned(FOnClienteChanged) then
FOnClienteChanged(Self);
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.SetID_Cliente(const Value: integer);
begin
Self.Cliente := IBizCliente(FClientesController.Buscar(Value));
end;
function TfrViewDatosYSeleccionClienteFacturaProforma.GetOnClienteChanged: TNotifyEvent;
begin
Result := FOnClienteChanged;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.LimpiarDireccionDeFactura;
begin
FFactura.Edit;
FFactura.ClearField('ID_DIRECCION');
FFactura.ClearField('CALLE');
FFactura.ClearField('POBLACION');
FFactura.ClearField('CODIGO_POSTAL');
FFactura.ClearField('PROVINCIA');
FFactura.ClearField('PAIS');
FFactura.ClearField('IMPORTE_PORTE');
end;
function TfrViewDatosYSeleccionClienteFacturaProforma.GetFactura: IBizFacturaProforma;
begin
Result := FFactura;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.RefrescarDireccion;
begin
FDireccion := FDireccionesController.Nuevo;
if (not FFactura.ID_DIRECCIONIsNull) and
(FDireccionesController.Localizar(FCliente.Direcciones, FFactura.ID_DIRECCION)) then
FDireccionesController.CopiarDireccion(FCliente.Direcciones, FDireccion)
else
FDireccionesController.CopiarDireccionFiscal(FCliente, FDireccion);
EscribirTextoDireccion;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.SetOnClienteChanged(
const Value: TNotifyEvent);
begin
FOnClienteChanged := Value;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.SetFactura(
const Value: IBizFacturaProforma);
begin
FFactura := Value;
if Assigned(FFactura) then
begin
dsFactura.DataTable := FFactura.DataTable;
FCliente := FFactura.Cliente;
dsCliente.DataTable := FCliente.DataTable;
if not FCliente.DataTable.Active then
FCliente.DataTable.Active := True;
RefrescarDireccion;
end
else begin
dsFactura.DataTable := NIL;
FCliente := NIL;
FDireccion := NIL;
end;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.SetReadOnly(Value: Boolean);
begin
inherited;
if (csLoading in Self.ComponentState) then
Exit;
actAnadirContacto.Enabled := not ReadOnly;
actElegirContacto.Enabled := not ReadOnly;
end;
procedure TfrViewDatosYSeleccionClienteFacturaProforma.VerFichaCliente;
begin
if not Assigned(Cliente) then
ShowErrorMessage('No se ha indicado un cliente', 'La factura no tiene ning<6E>n cliente asociado a mostrar.')
else begin
FClientesController.Ver(Cliente);
end;
end;
end.