diff --git a/Source/Modulos/Obras/Controller/Obras_controller.dpk b/Source/Modulos/Obras/Controller/Obras_controller.dpk
index 901b7049..76843361 100644
Binary files a/Source/Modulos/Obras/Controller/Obras_controller.dpk and b/Source/Modulos/Obras/Controller/Obras_controller.dpk differ
diff --git a/Source/Modulos/Obras/Controller/Obras_controller.dproj b/Source/Modulos/Obras/Controller/Obras_controller.dproj
index 398943a7..9f80d81d 100644
--- a/Source/Modulos/Obras/Controller/Obras_controller.dproj
+++ b/Source/Modulos/Obras/Controller/Obras_controller.dproj
@@ -39,17 +39,18 @@
Delphi.Personality
Package
-FalseTrueFalseTrueFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Obras_controller.dpk
+FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Obras_controller.dpk
MainSource
-
-
-
-
+
+
+
+
+
diff --git a/Source/Modulos/Obras/Controller/Obras_controller.res b/Source/Modulos/Obras/Controller/Obras_controller.res
index 8b251f31..1641339f 100644
Binary files a/Source/Modulos/Obras/Controller/Obras_controller.res and b/Source/Modulos/Obras/Controller/Obras_controller.res differ
diff --git a/Source/Modulos/Obras/Controller/uObrasController.pas b/Source/Modulos/Obras/Controller/uObrasController.pas
index d575a94c..1a707854 100644
--- a/Source/Modulos/Obras/Controller/uObrasController.pas
+++ b/Source/Modulos/Obras/Controller/uObrasController.pas
@@ -5,7 +5,7 @@ interface
uses
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
- uIDataModuleObras, uBizObras;
+ uIDataModuleObras, uBizObras, uBizDireccionesContacto;
type
IObrasController = interface(IObservador)
@@ -25,6 +25,9 @@ type
function Duplicar(AObra: IBizObra): IBizObra;
procedure Preview(AObra : IBizObra);
procedure Print(AObra : IBizObra);
+
+ procedure QuitarDireccion(AObra: IBizObra);
+ procedure CopiarDireccion (const ADireccionEnvio: IBizDireccionesContacto; AObra: IBizObra);
end;
TObrasController = class(TObservador, IObrasController)
@@ -66,6 +69,9 @@ type
function Duplicar(AObra: IBizObra): IBizObra;
procedure Preview(AObra : IBizObra);
procedure Print(AObra : IBizObra);
+
+ procedure QuitarDireccion(AObra: IBizObra);
+ procedure CopiarDireccion (const ADireccionEnvio: IBizDireccionesContacto; AObra: IBizObra);
end;
implementation
@@ -120,6 +126,44 @@ begin
FiltrarEmpresa(Result);
end;
+procedure TObrasController.CopiarDireccion(const ADireccionEnvio: IBizDireccionesContacto; AObra: IBizObra);
+var
+ bEnEdicion : Boolean;
+begin
+ if not Assigned(AObra) then
+ raise Exception.Create ('Obra no asignada (CopiarDireccion)');
+
+ if not Assigned(ADireccionEnvio) then
+ raise Exception.Create ('No se ha indicado la dirección (CopiarDireccionEnvio)');
+
+ if AObra.DataTable.Active then
+ AObra.DataTable.Active := True;
+
+ if ADireccionEnvio.DataTable.Active then
+ ADireccionEnvio.DataTable.Active := True;
+
+
+ bEnEdicion := (AObra.DataTable.State in dsEditModes);
+ if not bEnEdicion then
+ AObra.Edit;
+
+ ShowHourglassCursor;
+ AObra.Edit;
+ try
+ AObra.CALLE := ADireccionEnvio.CALLE;
+ AObra.POBLACION := ADireccionEnvio.POBLACION;
+ AObra.CODIGO_POSTAL := ADireccionEnvio.CODIGO_POSTAL;
+ AObra.PROVINCIA := ADireccionEnvio.PROVINCIA;
+ AObra.TELEFONO := ADireccionEnvio.TELEFONO;
+ AObra.PERSONA_CONTACTO := ADireccionEnvio.PERSONA_CONTACTO;
+
+ if not bEnEdicion then
+ AObra.Post;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
constructor TObrasController.Create;
begin
inherited;
@@ -413,4 +457,35 @@ begin
}
end;
+procedure TObrasController.QuitarDireccion(AObra: IBizObra);
+var
+ bEnEdicion : Boolean;
+begin
+ if not Assigned(AObra) then
+ raise Exception.Create ('Obra no asignada (QuitarDireccion)');
+
+ if AObra.DataTable.Active then
+ AObra.DataTable.Active := True;
+
+ bEnEdicion := (AObra.DataTable.State in dsEditModes);
+ if not bEnEdicion then
+ AObra.Edit;
+
+ ShowHourglassCursor;
+ AObra.Edit;
+ try
+ AObra.DataTable.FieldByName(fld_ObrasCALLE).Clear;
+ AObra.DataTable.FieldByName(fld_ObrasPOBLACION).Clear;
+ AObra.DataTable.FieldByName(fld_ObrasCODIGO_POSTAL).Clear;
+ AObra.DataTable.FieldByName(fld_ObrasPROVINCIA).Clear;
+ AObra.DataTable.FieldByName(fld_ObrasTELEFONO).Clear;
+ AObra.DataTable.FieldByName(fld_ObrasPERSONA_CONTACTO).Clear;
+
+ if not bEnEdicion then
+ AObra.Post;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
end.
diff --git a/Source/Modulos/Obras/Obras_Group.groupproj b/Source/Modulos/Obras/Obras_Group.groupproj
index e18054ed..a9b568d1 100644
--- a/Source/Modulos/Obras/Obras_Group.groupproj
+++ b/Source/Modulos/Obras/Obras_Group.groupproj
@@ -9,6 +9,7 @@
+
@@ -111,14 +112,23 @@
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/Source/Modulos/Obras/Views/Obras_view.dpk b/Source/Modulos/Obras/Views/Obras_view.dpk
index df631a54..c22ed4f7 100644
Binary files a/Source/Modulos/Obras/Views/Obras_view.dpk and b/Source/Modulos/Obras/Views/Obras_view.dpk differ
diff --git a/Source/Modulos/Obras/Views/Obras_view.dproj b/Source/Modulos/Obras/Views/Obras_view.dproj
index 64da4634..c579ccb9 100644
--- a/Source/Modulos/Obras/Views/Obras_view.dproj
+++ b/Source/Modulos/Obras/Views/Obras_view.dproj
@@ -40,19 +40,21 @@
Delphi.Personality
Package
-FalseTrueFalseTrueFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Obras_view.dpk
+FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Obras_view.dpk
MainSource
-
-
-
-
-
-
+
+
+
+
+
+
+
+
TfListaObras
diff --git a/Source/Modulos/Obras/Views/Obras_view.res b/Source/Modulos/Obras/Views/Obras_view.res
index 8b251f31..1641339f 100644
Binary files a/Source/Modulos/Obras/Views/Obras_view.res and b/Source/Modulos/Obras/Views/Obras_view.res differ
diff --git a/Source/Modulos/Obras/Views/uEditorObra.pas b/Source/Modulos/Obras/Views/uEditorObra.pas
index 051af9b7..bec96ba7 100644
--- a/Source/Modulos/Obras/Views/uEditorObra.pas
+++ b/Source/Modulos/Obras/Views/uEditorObra.pas
@@ -122,6 +122,8 @@ end;
procedure TfEditorObra.SetController(const Value: IObrasController);
begin
FController := Value;
+ if Assigned(FViewObra) and Assigned(FController) then
+ FViewObra.Controller := FController;
end;
procedure TfEditorObra.SetViewObra(const Value: IViewObra);
diff --git a/Source/Modulos/Obras/Views/uViewClienteAsociadoObra.pas b/Source/Modulos/Obras/Views/uViewClienteAsociadoObra.pas
index f3da308c..98c4b4dd 100644
--- a/Source/Modulos/Obras/Views/uViewClienteAsociadoObra.pas
+++ b/Source/Modulos/Obras/Views/uViewClienteAsociadoObra.pas
@@ -12,7 +12,7 @@ uses
dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinSilver, dxSkinStardust,
dxSkinsDefaultPainters, dxSkinValentine, dxSkinXmas2008Blue,
- dxSkinsdxLCPainter;
+ dxSkinsdxLCPainter, dxSkinBlack;
type
TfrViewClienteAsociadoObra = class(TfrViewDatosYSeleccionCliente)
diff --git a/Source/Modulos/Obras/Views/uViewObra.dfm b/Source/Modulos/Obras/Views/uViewObra.dfm
index 45358316..982ddd8a 100644
--- a/Source/Modulos/Obras/Views/uViewObra.dfm
+++ b/Source/Modulos/Obras/Views/uViewObra.dfm
@@ -1,6 +1,6 @@
inherited frViewObra: TfrViewObra
- Width = 661
- Height = 479
+ Width = 451
+ Height = 304
Align = alClient
AutoSize = True
ExplicitWidth = 451
@@ -8,18 +8,16 @@ inherited frViewObra: TfrViewObra
object dxLayoutControlObra: TdxLayoutControl
Left = 0
Top = 0
- Width = 661
- Height = 479
+ Width = 451
+ Height = 304
Align = alClient
ParentBackground = True
TabOrder = 0
TabStop = False
AutoContentSizes = [acsWidth, acsHeight]
- ExplicitWidth = 451
- ExplicitHeight = 304
DesignSize = (
- 661
- 479)
+ 451
+ 304)
object eNombre: TcxDBTextEdit
Left = 130
Top = 34
@@ -141,10 +139,10 @@ inherited frViewObra: TfrViewObra
StyleHot.LookAndFeel.Kind = lfStandard
StyleHot.LookAndFeel.NativeStyle = True
TabOrder = 5
- Width = 205
+ Width = 116
end
object eCodigoPostal: TcxDBTextEdit
- Left = 234
+ Left = 189
Top = 145
DataBinding.DataField = 'CODIGO_POSTAL'
DataBinding.DataSource = DADataSource
@@ -185,7 +183,7 @@ inherited frViewObra: TfrViewObra
StyleHot.LookAndFeel.Kind = lfStandard
StyleHot.LookAndFeel.NativeStyle = True
TabOrder = 3
- Width = 65
+ Width = 20
end
object eObservaciones: TcxDBMemo
Left = 22
@@ -208,7 +206,7 @@ inherited frViewObra: TfrViewObra
Width = 390
end
inline frViewSubcontrataObra1: TfrViewSubcontrataObra
- Left = 321
+ Left = 276
Top = 283
Width = 136
Height = 150
@@ -220,13 +218,13 @@ inherited frViewObra: TfrViewObra
ParentFont = False
TabOrder = 10
ReadOnly = False
- ExplicitLeft = 321
+ ExplicitLeft = 276
ExplicitTop = 283
ExplicitWidth = 136
ExplicitHeight = 150
inherited dxLayoutControl1: TdxLayoutControl
Width = 136
- ExplicitWidth = 173
+ ExplicitWidth = 136
inherited edtlNombre: TcxDBTextEdit
ExplicitWidth = 213
Width = 213
@@ -282,9 +280,9 @@ inherited frViewObra: TfrViewObra
end
end
inline frViewClienteAsociadoObra1: TfrViewClienteAsociadoObra
- Left = 321
+ Left = 276
Top = 34
- Width = 351
+ Width = 136
Height = 213
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
@@ -294,15 +292,15 @@ inherited frViewObra: TfrViewObra
ParentFont = False
TabOrder = 9
ReadOnly = False
- ExplicitLeft = 321
+ ExplicitLeft = 276
ExplicitTop = 34
- ExplicitWidth = 351
+ ExplicitWidth = 136
ExplicitHeight = 213
inherited dxLayoutControl1: TdxLayoutControl
- Width = 351
+ Width = 136
Height = 213
- ExplicitWidth = 405
- ExplicitHeight = 159
+ ExplicitWidth = 351
+ ExplicitHeight = 213
inherited edtlNombre: TcxDBTextEdit
ExplicitWidth = 210
Width = 210
@@ -324,12 +322,12 @@ inherited frViewObra: TfrViewObra
Width = 210
end
inherited edtCodigoPostal: TcxDBTextEdit
- Left = 209
- ExplicitLeft = 209
+ Left = 192
+ ExplicitLeft = 192
end
inherited Button3: TBitBtn
- Left = 99
- ExplicitLeft = 99
+ Left = 82
+ ExplicitLeft = 82
end
end
end
diff --git a/Source/Modulos/Obras/Views/uViewObra.pas b/Source/Modulos/Obras/Views/uViewObra.pas
index ec1bcf58..da6d1d8c 100644
--- a/Source/Modulos/Obras/Views/uViewObra.pas
+++ b/Source/Modulos/Obras/Views/uViewObra.pas
@@ -14,7 +14,8 @@ uses
dxSkinMcSkin, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue,
dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver,
dxSkinSilver, dxSkinStardust, dxSkinsDefaultPainters, dxSkinValentine,
- dxSkinXmas2008Blue, dxSkinsdxLCPainter, cxGraphics, cxMaskEdit, cxDropDownEdit;
+ dxSkinXmas2008Blue, dxSkinsdxLCPainter, cxGraphics, cxMaskEdit, cxDropDownEdit,
+ dxSkinBlack, uObrasController;
type
IViewObra = interface(IViewBase)
@@ -22,8 +23,11 @@ type
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;
@@ -59,7 +63,7 @@ type
dxLayoutControlObraGroup10: TdxLayoutGroup;
dxLayoutControlObraItem8: TdxLayoutItem;
frViewSubcontrataObra1: TfrViewSubcontrataObra;
- frViewClienteAsociadoObra1: TfrViewClienteAsociadoObra;
+ frViewClienteAsociadoObra1: TfrViewClienteAsociadoObra;
dxLayoutControlObraItem12: TdxLayoutItem;
dxLayoutControlObraItem13: TdxLayoutItem;
dxLayoutControlObraGroup11: TdxLayoutGroup;
@@ -67,6 +71,7 @@ type
procedure cbProvinciaPropertiesInitPopup(Sender: TObject);
protected
FObra: IBizObra;
+ FController : IObrasController;
FProvincias : TStringList;
FPoblaciones : TStringList;
procedure CargarProvincias;
@@ -74,17 +79,21 @@ type
function GetObra: IBizObra;
procedure SetObra(const Value: IBizObra);
procedure OnClienteChanged(Sender : TObject);
- procedure OnSubcontrataChanged(Sender : TObject);
+ procedure OnSubcontrataChanged(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;
+ uDataModuleObras, uProvinciasPoblacionesController, uStringsUtils,
+ uClientesController, uBizDireccionesContacto;
{$R *.dfm}
@@ -184,20 +193,60 @@ begin
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í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ón', MB_ICONWARNING or MB_OK);}
+
+ case frViewClienteAsociadoObra1.Cliente.Direcciones.RecordCount of
+ 0 : begin
+ FController.QuitarDireccion(FObra);
+ end;
+ 1 : begin
+ FController.CopiarDireccion(frViewClienteAsociadoObra1.Cliente.Direcciones, FObra);
+ end
+ else begin
+ ADireccion := AClientesController.ElegirDireccionEntrega(frViewClienteAsociadoObra1.Cliente.Direcciones, '');
+ ShowHourglassCursor;
+ try
+ if Assigned(ADireccion) then
+ FController.CopiarDireccion(ADireccion, FObra);
+ finally
+ HideHourglassCursor;
+ ADireccion := NIL;
+ end;
+ end;
+ end;
+ finally
+ AClientesController := NIL;
+ end;
end;
end;
@@ -210,6 +259,11 @@ begin
end;
end;
+procedure TfrViewObra.SetController(const Value: IObrasController);
+begin
+ FController := Value;
+end;
+
procedure TfrViewObra.SetObra(const Value: IBizObra);
begin
FObra := Value;
diff --git a/Source/Modulos/Obras/Views/uViewSubcontrataObra.pas b/Source/Modulos/Obras/Views/uViewSubcontrataObra.pas
index c8cff2b0..290b898c 100644
--- a/Source/Modulos/Obras/Views/uViewSubcontrataObra.pas
+++ b/Source/Modulos/Obras/Views/uViewSubcontrataObra.pas
@@ -12,7 +12,7 @@ uses
dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinSilver, dxSkinStardust,
dxSkinsDefaultPainters, dxSkinValentine, dxSkinXmas2008Blue,
- dxSkinsdxLCPainter;
+ dxSkinsdxLCPainter, dxSkinBlack;
type
TfrViewSubcontrataObra = class(TfrViewDatosYSeleccionProveedor)