264 lines
7.7 KiB
ObjectPascal
264 lines
7.7 KiB
ObjectPascal
|
|
unit uViewObra;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|||
|
|
Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable,
|
|||
|
|
DBCtrls, Grids, DBGrids, uBizObras, Mask, ComCtrls, uCustomView,
|
|||
|
|
JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit,
|
|||
|
|
cxDBEdit, dxLayoutControl, uDAInterfaces, uViewDatosYSeleccionCliente, cxMemo,
|
|||
|
|
uViewDatosYSeleccionProveedor, uViewSubcontrataObra, uViewClienteAsociadoObra,
|
|||
|
|
cxGraphics, cxMaskEdit, cxDropDownEdit,
|
|||
|
|
uObrasController;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
IViewObra = interface(IViewBase)
|
|||
|
|
['{D8669267-CAC9-468E-9923-2D3B2DD30CED}']
|
|||
|
|
function GetObra: IBizObra;
|
|||
|
|
procedure SetObra(const Value: IBizObra);
|
|||
|
|
property Obra: IBizObra read GetObra write SetObra;
|
|||
|
|
function GetController : IObrasController;
|
|||
|
|
procedure SetController (const Value : IObrasController);
|
|||
|
|
property Controller: IObrasController read GetController write SetController;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
TfrViewObra = class(TfrViewBase, IViewObra)
|
|||
|
|
DADataSource: TDADataSource;
|
|||
|
|
ePersonaContacto: TcxDBTextEdit;
|
|||
|
|
eTlfTelefono: TcxDBTextEdit;
|
|||
|
|
eTlfMovil: TcxDBTextEdit;
|
|||
|
|
eFax: TcxDBTextEdit;
|
|||
|
|
dxLayoutControlObraGroup_Root: TdxLayoutGroup;
|
|||
|
|
dxLayoutControlObra: TdxLayoutControl;
|
|||
|
|
dxLayoutControlObraGroup1: TdxLayoutGroup;
|
|||
|
|
dxLayoutControlObraItem3: TdxLayoutItem;
|
|||
|
|
eNombre: TcxDBTextEdit;
|
|||
|
|
dxLayoutControlObraItem4: TdxLayoutItem;
|
|||
|
|
dxLayoutControlObraItem1: TdxLayoutItem;
|
|||
|
|
dxLayoutControlObraItem5: TdxLayoutItem;
|
|||
|
|
dxLayoutControlObraItem6: TdxLayoutItem;
|
|||
|
|
dxLayoutControlObraGroup3: TdxLayoutGroup;
|
|||
|
|
dxLayoutControlObraItem10: TdxLayoutItem;
|
|||
|
|
eCalle: TcxDBTextEdit;
|
|||
|
|
dxLayoutControlObraItem2: TdxLayoutItem;
|
|||
|
|
cbPoblacion: TcxDBComboBox;
|
|||
|
|
dxLayoutControlObraItem7: TdxLayoutItem;
|
|||
|
|
dxLayoutControlObraGroup5: TdxLayoutGroup;
|
|||
|
|
eCodigoPostal: TcxDBTextEdit;
|
|||
|
|
dxLayoutControlObraItem9: TdxLayoutItem;
|
|||
|
|
cbProvincia: TcxDBComboBox;
|
|||
|
|
dxLayoutControlObraGroup7: TdxLayoutGroup;
|
|||
|
|
dxLayoutControlObraGroup4: TdxLayoutGroup;
|
|||
|
|
dxLayoutControlObraItem11: TdxLayoutItem;
|
|||
|
|
eObservaciones: TcxDBMemo;
|
|||
|
|
dxLayoutControlObraGroup2: TdxLayoutGroup;
|
|||
|
|
dxLayoutControlObraGroup8: TdxLayoutGroup;
|
|||
|
|
frViewClienteAsociadoObra1: TfrViewClienteAsociadoObra;
|
|||
|
|
dxLayoutControlObraItem12: TdxLayoutItem;
|
|||
|
|
dxLayoutControlObraItem13: TdxLayoutItem;
|
|||
|
|
dxLayoutControlObraGroup11: TdxLayoutGroup;
|
|||
|
|
procedure cbPoblacionPropertiesInitPopup(Sender: TObject);
|
|||
|
|
procedure cbProvinciaPropertiesInitPopup(Sender: TObject);
|
|||
|
|
protected
|
|||
|
|
FObra: IBizObra;
|
|||
|
|
FController : IObrasController;
|
|||
|
|
FProvincias : TStringList;
|
|||
|
|
FPoblaciones : TStringList;
|
|||
|
|
procedure CargarProvincias;
|
|||
|
|
procedure CargarPoblaciones;
|
|||
|
|
function GetObra: IBizObra;
|
|||
|
|
procedure SetObra(const Value: IBizObra);
|
|||
|
|
procedure OnClienteChanged(Sender : TObject);
|
|||
|
|
function GetController : IObrasController;
|
|||
|
|
procedure SetController (const Value : IObrasController); virtual;
|
|||
|
|
public
|
|||
|
|
constructor Create(AOwner : TComponent); override;
|
|||
|
|
destructor Destroy; override;
|
|||
|
|
property Obra: IBizObra read GetObra write SetObra;
|
|||
|
|
property Controller: IObrasController read GetController write SetController;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
uDataModuleObras, uProvinciasPoblacionesController, uStringsUtils,
|
|||
|
|
uClientesController, uBizDireccionesContacto, uDialogUtils;
|
|||
|
|
|
|||
|
|
{$R *.dfm}
|
|||
|
|
|
|||
|
|
{ TfrViewObras }
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
******************************* TfrViewObras ********************************
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
procedure TfrViewObra.CargarPoblaciones;
|
|||
|
|
var
|
|||
|
|
i : integer;
|
|||
|
|
AID : Integer;
|
|||
|
|
begin
|
|||
|
|
AID := StrToInt(FProvincias.Values[cbProvincia.Text]);
|
|||
|
|
with TProvinciasPoblacionesController.Create do
|
|||
|
|
try
|
|||
|
|
FPoblaciones := DarListaPoblaciones(AID);
|
|||
|
|
|
|||
|
|
with cbPoblacion.Properties.Items do
|
|||
|
|
begin
|
|||
|
|
BeginUpdate;
|
|||
|
|
try
|
|||
|
|
Clear;
|
|||
|
|
for i := 0 to FPoblaciones.Count - 1 do
|
|||
|
|
Add(FPoblaciones.Names[i]);
|
|||
|
|
finally
|
|||
|
|
EndUpdate;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewObra.CargarProvincias;
|
|||
|
|
var
|
|||
|
|
i : integer;
|
|||
|
|
begin
|
|||
|
|
with TProvinciasPoblacionesController.Create do
|
|||
|
|
try
|
|||
|
|
FProvincias := DarListaProvincias;
|
|||
|
|
|
|||
|
|
with cbProvincia.Properties.Items do
|
|||
|
|
begin
|
|||
|
|
BeginUpdate;
|
|||
|
|
try
|
|||
|
|
Clear;
|
|||
|
|
for i := 0 to FProvincias.Count - 1 do
|
|||
|
|
Add(FProvincias.Names[i]);
|
|||
|
|
finally
|
|||
|
|
EndUpdate;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewObra.cbPoblacionPropertiesInitPopup(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
FreeANDNIL(FPoblaciones);
|
|||
|
|
if not Assigned(FProvincias) then
|
|||
|
|
CargarProvincias;
|
|||
|
|
if not EsCadenaVacia(cbProvincia.Text) and (FProvincias.IndexOfName(cbProvincia.Text) <> -1) then
|
|||
|
|
CargarPoblaciones
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewObra.cbProvinciaPropertiesInitPopup(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
if not Assigned(FProvincias) then
|
|||
|
|
CargarProvincias;
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
constructor TfrViewObra.Create(AOwner: TComponent);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
FProvincias := NIL;
|
|||
|
|
FPoblaciones := NIL;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
destructor TfrViewObra.Destroy;
|
|||
|
|
begin
|
|||
|
|
if Assigned(FProvincias) then
|
|||
|
|
FreeANDNIL(FProvincias);
|
|||
|
|
|
|||
|
|
if Assigned(FPoblaciones) then
|
|||
|
|
FreeANDNIL(FPoblaciones);
|
|||
|
|
|
|||
|
|
FObra := Nil;
|
|||
|
|
FController := Nil;
|
|||
|
|
inherited;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrViewObra.GetController: IObrasController;
|
|||
|
|
begin
|
|||
|
|
Result := FController;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrViewObra.GetObra: IBizObra;
|
|||
|
|
begin
|
|||
|
|
Result := FObra;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewObra.OnClienteChanged(Sender: TObject);
|
|||
|
|
var
|
|||
|
|
AClientesController : IClientesController;
|
|||
|
|
ADireccion : IBizDireccionesContacto;
|
|||
|
|
begin
|
|||
|
|
if Assigned(FObra) then
|
|||
|
|
begin
|
|||
|
|
FObra.Edit;
|
|||
|
|
FObra.ID_CLIENTE := frViewClienteAsociadoObra1.ID_Cliente;
|
|||
|
|
|
|||
|
|
AClientesController := TClientesController.Create;
|
|||
|
|
try
|
|||
|
|
{ // Esto podr<64>a ser configurable en el programa
|
|||
|
|
if not AClientesController.TieneDatosBancarios(FPresupuesto.Cliente) then
|
|||
|
|
MessageBox(0, 'Este cliente no tiene datos bancarios en su ficha', 'Atenci<63>n', MB_ICONWARNING or MB_OK);}
|
|||
|
|
|
|||
|
|
case frViewClienteAsociadoObra1.Cliente.Direcciones.RecordCount of
|
|||
|
|
0 : begin
|
|||
|
|
FController.CopiarDireccion(frViewClienteAsociadoObra1.Cliente, FObra);
|
|||
|
|
ShowInfoMessage('Direcci<63>n de la obra actualizada.', 'Se ha actualizado los datos de la direcci<63>n de la obra con los datos del cliente.');
|
|||
|
|
end;
|
|||
|
|
else begin
|
|||
|
|
ADireccion := AClientesController.ElegirDireccionEntrega(frViewClienteAsociadoObra1.Cliente, '');
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
if Assigned(ADireccion) then
|
|||
|
|
FController.CopiarDireccion(ADireccion, FObra);
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
ADireccion := NIL;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
AClientesController := NIL;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewObra.SetController(const Value: IObrasController);
|
|||
|
|
begin
|
|||
|
|
FController := Value;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrViewObra.SetObra(const Value: IBizObra);
|
|||
|
|
begin
|
|||
|
|
FObra := Value;
|
|||
|
|
frViewClienteAsociadoObra1.OnClienteChanged := NIL;
|
|||
|
|
|
|||
|
|
if Assigned(FObra) then
|
|||
|
|
begin
|
|||
|
|
DADataSource.DataTable := FObra.DataTable;
|
|||
|
|
if not FObra.ID_CLIENTEIsNull then
|
|||
|
|
frViewClienteAsociadoObra1.ID_Cliente := FObra.ID_CLIENTE;
|
|||
|
|
|
|||
|
|
frViewClienteAsociadoObra1.OnClienteChanged := OnClienteChanged;
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
DADataSource.DataTable := NIL;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|
|||
|
|
|