git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@1016 0c75b7a4-871f-7646-8a2f-f78d34cc349f
270 lines
7.9 KiB
ObjectPascal
270 lines
7.9 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;
|
||
FIDProvincia : Integer; //Almacenar<61> la provincia que hay seleccionada para no cargar las poblaciones si no es necesario
|
||
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;
|
||
|
||
begin
|
||
if (FIDProvincia <> StrToInt(FProvincias.Values[cbProvincia.Text])) then
|
||
Begin
|
||
FIDProvincia := StrToInt(FProvincias.Values[cbProvincia.Text]);
|
||
|
||
with TProvinciasPoblacionesController.Create do
|
||
try
|
||
FPoblaciones := DarListaPoblaciones(FIDProvincia);
|
||
|
||
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;
|
||
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;
|
||
FIDProvincia := 0;
|
||
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.
|
||
|