This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/_Obras_/Obra.pas
2007-06-26 08:08:27 +00:00

2483 lines
73 KiB
ObjectPascal

{
===============================================================================
Copyright (©) 2005. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versión: 08-06-2005
Versión actual: 1.0.0
Fecha versión actual: 08-06-2005
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit Obra;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
RdxFrameInformeTrimestral, Grids, DBGrids, ComCtrls, RdxBotones, ToolWin, ExtCtrls,
Menus, RXDBCtrl, Configuracion, RdxFrame,
Db, RdxPaneles, RdxBarras, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxEdit, cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid,
am2000menuitem, am2000popupmenu, am2000, cxContainer, cxTextEdit,
cxMaskEdit, cxDropDownEdit, StdCtrls, ActnList, StrUtils,
Entidades, InformeTrimestralVentas, InformeTrimestralCompras, vistaPrevia,
RdxTitulos, ImgList, RdxFrameObras, IBCustomDataSet, RxMemDS, InformeListadoPedidosObra,
InformeListadoTareasObra,
RdxEmpresaActiva, am2000utils, cxDataStorage, cxTL, cxInplaceContainer,
cxTLData, cxDBTL, cxCalendar, cxDBEdit, cxMemo, cxButtonEdit, AdvPanel,
cxCheckBox, cxCurrencyEdit;
type
TfrObra = class(TRdxFrameObras)
dsObras: TDataSource;
Acciones: TActionList;
actAnadirInstalador: TAction;
actAceptar: TAction;
brSalir: TRdxBarraInferior;
bSalir: TRdxBoton;
actCancelar: TAction;
brDoble: TRdxBarraInferior;
bGuardar: TRdxBoton;
bCancelar: TRdxBoton;
actEliminarInstalador: TAction;
actAnadirGasto: TAction;
actEliminarGasto: TAction;
dsObrasInstaladores: TDataSource;
dsObrasGastos: TDataSource;
actEliminarTodoIns: TAction;
actEliminarTodoGas: TAction;
dsObrasPedidos: TDataSource;
actAnadirPedido: TAction;
dsTareasObras: TDataSource;
actEliminarPedido: TAction;
actAnadirTareaObra: TAction;
actEliminarTareaObra: TAction;
actEliminarTodoTareaObra: TAction;
actSalir: TAction;
pnlCuerpo: TRdxPanel;
pnlTitulo: TRdxPanelTituloOperacion;
pnlContenido: TRdxPanel;
Splitter1: TSplitter;
pnlDetalleOtro: TRdxPanel;
pnlDatosOtro: TAdvPanel;
Panel1: TPanel;
pnlGridOtro: TPanel;
gridTareasObras: TcxGrid;
gridTareasObrasDBTableView1: TcxGridDBTableView;
gridTareasObrasLevel1: TcxGridLevel;
pnlBarraOtro: TPanel;
bEliminarTareaObra: TRdxBoton;
bAnadirTareaObra: TRdxBoton;
bEliminarTodoTareaObra: TRdxBoton;
pnlListaTrimestres: TRdxPanel;
tlApartadosObra: TcxTreeList;
ColPanel: TcxTreeListColumn;
ColDescripcion: TcxTreeListColumn;
ColCodigoPedido: TcxTreeListColumn;
ColEstadoPedido: TcxTreeListColumn;
pnlDetallePedidosOtros: TRdxPanel;
pnlVistaPrevia: TPanel;
pnlDetalleObra: TRdxPanel;
pnlObra: TRdxPanel;
pnlDatosObra: TAdvPanel;
eCodigo: TLabel;
eNombre: TLabel;
eProcedencia: TLabel;
eNIFCIF: TLabel;
eObservaciones: TLabel;
eProvincia: TLabel;
ePoblacion: TLabel;
eNumero: TLabel;
ePiso: TLabel;
Nombre: TcxDBTextEdit;
Calle: TcxDBTextEdit;
Observaciones: TcxDBMemo;
Provincia: TcxDBButtonEdit;
Poblacion: TcxDBButtonEdit;
Numero: TcxDBTextEdit;
Piso: TcxDBTextEdit;
FechaFin: TcxDBDateEdit;
CodigoContrato: TcxDBTextEdit;
pnlDatosContacto: TAdvPanel;
eTelefono1: TLabel;
eTelefono2: TLabel;
Label2: TLabel;
Label3: TLabel;
eFax: TLabel;
eCorreo: TLabel;
Label1: TLabel;
Telefono1: TcxDBTextEdit;
Telefono2: TcxDBTextEdit;
Movil1: TcxDBTextEdit;
Movil2: TcxDBTextEdit;
Fax: TcxDBTextEdit;
PersonaContacto: TcxDBTextEdit;
Correo: TcxDBTextEdit;
pnlOtrosDatos: TAdvPanel;
pnlInstaladores: TPanel;
pnlBarraInstaladores: TPanel;
bEliminar: TRdxBoton;
bAnadir: TRdxBoton;
bEliminarTodo: TRdxBoton;
pnlGridInstaladores: TPanel;
gridInstaladores: TcxGrid;
gridInstaladoresDBTableView1: TcxGridDBTableView;
gridInstaladoresLevel1: TcxGridLevel;
pnlTituloInstaladores: TPanel;
Label4: TLabel;
pnlOtrosGastos: TPanel;
pnlGridOtrosGastos: TPanel;
gridOtrosGastos: TcxGrid;
gridOtrosGastosDBTableView1: TcxGridDBTableView;
gridOtrosGastosLevel1: TcxGridLevel;
pnlBarraOtrosGastos: TPanel;
RdxBoton1: TRdxBoton;
RdxBoton2: TRdxBoton;
RdxBoton3: TRdxBoton;
pnlTituloOtrosGastos: TPanel;
Label5: TLabel;
pnlDetallePedido: TRdxScrollPanel;
pnlDatosProveedor: TAdvPanel;
Label9: TLabel;
Label11: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
eTelefono1Prov: TLabel;
eTelefono2Prov: TLabel;
eMovil1Prov: TLabel;
eMovil2Prov: TLabel;
eFaxProv: TLabel;
eCorreoProv: TLabel;
ePersonaContactoProv: TLabel;
NombreProv: TcxDBButtonEdit;
CodigoProv: TcxDBTextEdit;
pnlFasesPedido: TAdvPanel;
pnlFase1: TPanel;
Label6: TLabel;
Label8: TLabel;
Label7: TLabel;
eNum: TLabel;
ObservacionesPed: TcxMemo;
FechaPed: TcxDateEdit;
cxPed: TcxCheckBox;
pnlFase4: TPanel;
Label10: TLabel;
Label12: TLabel;
Label13: TLabel;
Label39: TLabel;
cxTra: TcxCheckBox;
FechaTra: TcxDateEdit;
ObservacionesTra: TcxMemo;
pnlFase3: TPanel;
Label33: TLabel;
Label34: TLabel;
Label35: TLabel;
Label36: TLabel;
Label38: TLabel;
ObservacionesEna: TcxMemo;
FechaEnaIni: TcxDateEdit;
cxEna: TcxCheckBox;
FechaEnaFin: TcxDateEdit;
pnlFase2: TPanel;
Label14: TLabel;
Label28: TLabel;
Label29: TLabel;
Label37: TLabel;
ObservacionesCon: TcxMemo;
FechaCon: TcxDateEdit;
cxCon: TcxCheckBox;
pnlFase5: TPanel;
Label30: TLabel;
Label31: TLabel;
Label32: TLabel;
Label40: TLabel;
cxEnt: TcxCheckBox;
FechaEnt: TcxDateEdit;
ObservacionesEnt: TcxMemo;
pnlDatosPedido: TAdvPanel;
Label41: TLabel;
Label48: TLabel;
Label42: TLabel;
DescripcionPed: TcxDBTextEdit;
CodigoPed: TcxDBTextEdit;
ReferenciaPed: TcxDBTextEdit;
pnlExtra: TRdxBarraSuperior;
RdxPanel1: TRdxPanel;
bAnadirPedido: TRdxBoton;
bEliminarPedido: TRdxBoton;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
//General
procedure actAceptarExecute(Sender: TObject);
procedure actCancelarExecute(Sender: TObject);
procedure actSalirExecute(Sender: TObject);
procedure tlApartadosObraFocusedNodeChanged(Sender: TObject;
APrevFocusedNode, AFocusedNode: TcxTreeListNode);
procedure ActivarInforme(Panel: Integer);
//Obra, Instaladores, Gastos
procedure actAnadirInstaladorExecute(Sender: TObject);
procedure actAnadirGastoExecute(Sender: TObject);
procedure actEliminarGastoExecute(Sender: TObject);
procedure actEliminarInstaladorExecute(Sender: TObject);
procedure actEliminarTodoGasExecute(Sender: TObject);
procedure actEliminarTodoInsExecute(Sender: TObject);
procedure ProvinciaPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure NombreProvPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure PoblacionPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
//Pedido
procedure actAnadirPedidoExecute(Sender: TObject);
procedure actEliminarPedidoExecute(Sender: TObject);
procedure pnlFasesPedidoExit(Sender: TObject);
procedure FechaEnaFinPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure FechaEnaIniPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
//Otras tareas obra
procedure actAnadirTareaObraExecute(Sender: TObject);
procedure actEliminarTareaObraExecute(Sender: TObject);
procedure actEliminarTodoTareaObraExecute(Sender: TObject);
procedure pnlOtrosDatosResize(Sender: TObject);
procedure actEliminarTareaObraUpdate(Sender: TObject);
procedure actEliminarTodoTareaObraUpdate(Sender: TObject);
procedure NombreProvPropertiesChange(Sender: TObject);
procedure DescripcionPedPropertiesChange(Sender: TObject);
procedure gridTareasObrasDBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
private
//Propiedades Obra
FCodigoProvincia : Variant;
FCodigoPoblacion : Variant;
FCodigoInstalador: Variant;
FContadorGastosAux: Integer;
FTablaObrasInstaladores : TIBDataSet;
FTablaObrasInstaladoresMem : TRxMemoryData;
FTablaObrasGastos : TIBDataSet;
FTablaObrasGastosMem : TRxMemoryData;
//Propiedades Pedidos obra y sus fases
FCodigoPedidoAux: Integer;
FCodigoPedido: Variant;
FCodigoProveedor: Variant;
FTablaObrasPedidos : TIBDataSet;
FTablaFases : TIBDataSet;
FTablaFasesMem : TRxMemoryData;
//Propiedades Otras tareas obra
FTipoTarea: Variant;
FContadorTareaObraAux: Integer;
FTablaTareasObras : TIBDataSet;
FTablaTareasObrasMem : TRxMemoryData;
//Informes de resumen pedidos y otros
FTablaInformePedidosMem : TRxMemoryData;
FVistaPrevia : TfrVistaPrevia;
FInformePedidos : TdmInformeListadoPedidosObra;
FTablaInformeTareasMem : TRxMemoryData;
FInformeOtros : TdmInformeListadoTareasObra;
procedure crearTablaInfPedidos;
procedure rellenarTablaInfPedidos;
procedure crearTablaInfTareas;
procedure rellenarTablaInfTareas;
procedure crearInformes;
procedure destruirInformes;
procedure HabilitarPanelInforme;
//Métodos General
procedure RefrescarListaApartadosObra;
procedure ActivarBarrasGrids;
procedure DesactivarBarrasGrids;
//Métodos Obra
procedure HabilitarPanelObra;
procedure crearTablasObra;
procedure destruirTablasObra;
procedure activarModoModificarTablasObra;
procedure activarModoConsultarTablasObra;
procedure CargarDatosInstaladores;
procedure BorrarDatosInstaladoresIB;
procedure SalvarDatosInstaladores;
procedure CargarDatosGastos;
procedure BorrarDatosGastosIB;
procedure SalvarDatosGastos;
procedure ProvinciaSetText(Sender: TField; const Text: String);
procedure SetCodigoProvincia (Value : Variant); virtual;
procedure SetCodigoPoblacion (Value : Variant); virtual;
procedure SetCodigoInstalador(const Value: Variant);
//Métodos Pedidos obra y sus fases
procedure HabilitarPanelPedido;
procedure crearTablasPedidos;
procedure destruirTablasPedidos;
procedure activarModoTablasPedidos;
procedure BuscarPedidoObra;
procedure CargarDatosFases;
procedure RefrescarDatosProveedor;
procedure InicializarFases;
procedure RefrescarFases;
procedure VolcarDatosFases;
procedure BorrarDatosFasesIB;
procedure SalvarDatosFases;
procedure EliminarPedido;
procedure SetCodigoProveedor(const Value: Variant);
procedure SetCodigoPedido(const Value: Variant);
procedure ActivarCamposPedido;
procedure DesactivarCamposPedido;
procedure refrescarNombrePedido;
//Métodos Otras tareas obra
procedure HabilitarPanelTareas;
procedure crearTablasTareas;
procedure destruirTablasTareas;
procedure activarModoModificarTablasTareas;
procedure activarModoConsultarTablasTareas;
procedure CargarDatosTareasObras;
procedure BorrarDatosTareasObrasIB;
procedure SalvarDatosTareasObras;
function existeInstaladorEnOtrasTareas: Boolean;
procedure AplicarFiltroGridTareasObras;
procedure SetTipoTarea(const Value: Variant);
protected
procedure ActivarModoModificar; override;
procedure ActivarModoConsultar; override;
procedure ActivarModoEliminar; override;
function ModificarDatos : Boolean; override;
function CancelarModificar : Boolean; override;
function EliminarDatos : Boolean; override;
function CancelarEliminar : Boolean; override;
function ComprobarDatos : Boolean; override;
procedure VerModal; override;
procedure FreeContenido; override;
procedure BuscarObra; override;
function CloseFrame : Boolean; override;
function TratarCambios : integer; override;
public
property CodigoProveedor : Variant read FCodigoProveedor write SetCodigoProveedor;
property CodigoPedido : Variant read FCodigoPedido write SetCodigoPedido;
property CodigoInstalador : Variant read FCodigoInstalador write SetCodigoInstalador;
property CodigoProvincia : Variant read FCodigoProvincia write SetCodigoProvincia;
property CodigoPoblacion : Variant read FCodigoPoblacion write SetCodigoPoblacion;
property TablaObrasInstaladores : TIBDataSet read FTablaObrasInstaladores write FTablaObrasInstaladores;
property TablaObrasInstaladoresMem : TRxMemoryData read FTablaObrasInstaladoresMem write FTablaObrasInstaladoresMem;
property TablaObrasGastos : TIBDataSet read FTablaObrasGastos write FTablaObrasGastos;
property TablaObrasGastosMem : TRxMemoryData read FTablaObrasGastosMem write FTablaObrasGastosMem;
property TablaObrasPedidos : TIBDataSet read FTablaObrasPedidos write FTablaObrasPedidos;
property TablaFases : TIBDataSet read FTablaFases write FTablaFases;
property TablaFasesMem : TRxMemoryData read FTablaFasesMem write FTablaFasesMem;
property TablaTareasObras : TIBDataSet read FTablaTareasObras write FTablaTareasObras;
property TablaTareasObrasMem : TRxMemoryData read FTablaTareasObrasMem write FTablaTareasObrasMem;
property TipoTarea : Variant read FTipoTarea write SetTipoTarea;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
property TablaObras;
property CodigoObra;
end;
var
frObra: TfrObra;
implementation
{$R *.DFM}
uses
BaseDatos, TablaFacturasCliente, TablaFacturasProveedor, IBDatabase, FacturaCliente,
Literales, Mensajes, Variants, ImprimirFacturasCliente,
Constantes, cxVariants, AsignarTrimestre, FacturaProveedor,
ImprimirInformeTrimestral, StrFunc, TablaEmpresas, TrimestrePredeterminado,
TablaObrasPedidos, TablaObras, IB, IBErrorCodes, Excepciones, TablaProvincias,
TablaPoblaciones, RdxFrameProvincias, Provincias, RdxFramePoblaciones, Poblaciones,
TablaSucursalesCliente, TablaObrasInstaladores, TablaObrasGastos, Instaladores, RdxFrameInstaladores,
TablaInstaladores, Proveedores, RdxFrameProveedores, TablaProveedores, TablaTareas,
DateUtils, cxDBLookupComboBox;
function GetDragSourceGridView(Source: TObject): TcxCustomGridView;
begin
if (TDragControlObject(Source).Control is TcxGridSite) then
Result := TcxGridSite(TDragControlObject(Source).Control).GridView
else
Result := nil;
end;
constructor TfrObra.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Entidad := entObraCliente;
FCodigoProvincia := NULL;
FCodigoPoblacion := NULL;
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
crearTablasObra;
crearTablasPedidos;
crearTablasTareas;
crearInformes;
end;
destructor TfrObra.Destroy;
begin
destruirTablasObra;
destruirTablasPedidos;
destruirTablasTareas;
destruirInformes;
inherited;
end;
procedure TfrObra.actAnadirInstaladorExecute(Sender: TObject);
begin
ContenidoModal := TfrInstaladores.Create(Self);
gridInstaladores.SetFocus;
end;
procedure TfrObra.actAceptarExecute(Sender: TObject);
begin
if (RealizarOperacion) then
CloseFrame;
end;
procedure TfrObra.refrescarListaApartadosObra;
var
lista : TcxTreeListNode;
listaAux : TcxTreeListNode;
listaAux2 : TcxTreeListNode;
ListaPedidos : TListaPedidos;
i : integer;
begin
tlApartadosObra.Clear;
//PanelObra
lista := tlApartadosObra.Add;
lista.Texts[CTE_COL_PANEL] := IntToStr(CTE_PNL_OBRA);
lista.Texts[CTE_COL_DESCRIPCION] := litObrObra + CodigoObra;
//PanelPedidos
listaAux := lista.AddChild;
listaAux.Texts[CTE_COL_PANEL] := IntToStr(CTE_PNL_PEDIDOS);
listaAux.Texts[CTE_COL_DESCRIPCION] := litObrPedidos;
//PanelPedido
//Rellenamos los pedidos de la obra
ListaPedidos := dmTablaObrasPedidos.darListaPedidos(CodigoObra);
for i:=0 to ListaPedidos.Count-1 do
begin
listaAux2 := listaAux.AddChild;
listaAux2.Texts[CTE_COL_PANEL] := IntToStr(CTE_PNL_PEDIDO);
listaAux2.Texts[CTE_COL_DESCRIPCION] := ListaPedidos.Pedido[i].Descripcion + ' - ' + ListaPedidos.Pedido[i].NombreProv;
listaAux2.Texts[CTE_COL_CODPEDIDO] := ListaPedidos.Pedido[i].Codigo;
end;
FCodigoPedidoAux := ListaPedidos.Count + 1;
FreeAndNil(ListaPedidos);
//PanelOtros
listaAux := lista.AddChild;
listaAux.Texts[CTE_COL_PANEL] := IntToStr(CTE_PNL_OTROS);
listaAux.Texts[CTE_COL_DESCRIPCION] := litObrOtros;
//PanelOtro
listaAux2 := listaAux.AddChild;
listaAux2.Texts[CTE_COL_PANEL] := IntToStr(CTE_PNL_OTRO);
listaAux2.Texts[CTE_COL_DESCRIPCION] := litObrEntregas;
listaAux2.Texts[CTE_COL_TIPO] := CTE_ENTREGA;
listaAux2 := listaAux.AddChild;
listaAux2.Texts[CTE_COL_PANEL] := IntToStr(CTE_PNL_OTRO);
listaAux2.Texts[CTE_COL_DESCRIPCION] := litObrMontajes;
listaAux2.Texts[CTE_COL_TIPO] := CTE_MONTAJE;
listaAux2 := listaAux.AddChild;
listaAux2.Texts[CTE_COL_PANEL] := IntToStr(CTE_PNL_OTRO);
listaAux2.Texts[CTE_COL_DESCRIPCION] := litObrRemates;
listaAux2.Texts[CTE_COL_TIPO] := CTE_REMATE;
tlApartadosObra.FullExpand;
tlApartadosObra.SetFocusedNode(lista,[]);
end;
procedure TfrObra.BuscarObra;
begin
RefrescarListaApartadosObra;
end;
procedure TfrObra.ActivarModoConsultar;
begin
dsObras.AutoEdit := False;
dsObrasInstaladores.AutoEdit := False;
dsObrasGastos.AutoEdit := False;
dsObrasPedidos.AutoEdit := False;
dsTareasObras.AutoEdit := False;
actAnadirPedido.Enabled := False;
actEliminarPedido.Enabled := False;
Provincia.Properties.Buttons[0].Visible := False;
Poblacion.Properties.Buttons[0].Visible := False;
NombreProv.Properties.Buttons[0].Visible := False;
DesactivarBarrasGrids;
DesactivarCamposPedido;
try
activarModoConsultarTablasObra;
activarModoTablasPedidos;
activarModoConsultarTablasTareas;
Visible := True;
FechaFin.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrObra.ActivarModoModificar;
begin
dsObras.AutoEdit := True;
dsObrasInstaladores.AutoEdit := True;
dsObrasGastos.AutoEdit := True;
dsObrasPedidos.AutoEdit := True;
dsTareasObras.AutoEdit := True;
actAnadirPedido.Enabled := True;
actEliminarPedido.Enabled := True;
// Para que no haga dos accesos a la tabla cuando es consulta
FCodigoProvincia := dmTablaProvincias.DarCodigoProvincia(Provincia.Text);
Provincia.Properties.Buttons[0].Visible := True;
Poblacion.Properties.Buttons[0].Visible := True;
NombreProv.Properties.Buttons[0].Visible := True;
ActivarBarrasGrids;
ActivarCamposPedido;
try
activarModoModificarTablasObra;
activarModoTablasPedidos;
activarModoModificarTablasTareas;
Visible := True;
FechaFin.SetFocus;
except
on E : EIBError do
begin
case E.IBErrorCode of
isc_lock_conflict : begin
VerMensajeFmt(msgObrObrBloqueado, [CodigoObra]);
CancelarModificar;
CloseFrame;
Exit;
end
else
TratarExcepcion(E);
end;
end;
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrObra.CancelarModificar: Boolean;
begin
Result := False;
try
RollBack;
TablaObras.Close;
TablaObrasInstaladores.Close;
TablaObrasInstaladoresMem.Close;
TablaObrasGastos.Close;
TablaObrasGastosMem.Close;
TablaObrasPedidos.Close;
TablaFases.Close;
TablaFasesMem.Close;
TablaTareasObras.Close;
TablaTareasObrasMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrObra.ComprobarDatos: Boolean;
begin
Result := True;
end;
function TfrObra.ModificarDatos: Boolean;
begin
Result := False;
try
if (TablaObras.State in [dsEdit, dsInsert]) then
TablaObras.Post;
if (TablaObrasPedidos.State in [dsEdit, dsInsert]) then
TablaObrasPedidos.Post;
BorrarDatosInstaladoresIB;
SalvarDatosInstaladores;
BorrarDatosGastosIB;
SalvarDatosGastos;
BorrarDatosFasesIB;
SalvarDatosFases;
BorrarDatosTareasObrasIB;
SalvarDatosTareasObras;
Commit;
TablaObras.Close;
TablaObrasInstaladores.Close;
TablaObrasInstaladoresMem.Close;
TablaObrasGastos.Close;
TablaObrasGastosMem.Close;
TablaObrasPedidos.Close;
TablaFases.Close;
TablaFasesMem.Close;
TablaTareasObras.Close;
TablaTareasObrasMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrObra.ProvinciaPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
begin
CaptionModal := msgListaProvincias;
WidthModal := 280;
HeightModal := 460;
ContenidoModal := TfrProvincias.Create(Self);
end;
procedure TfrObra.PoblacionPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
begin
if (EsCadenaVacia(CodigoProvincia)) then begin
VerMensaje(msgSinProvincia);
Provincia.SetFocus;
Exit;
end;
CaptionModal := Format(msgListaPoblaciones, [dmTablaProvincias.DarNombreProvincia(CodigoProvincia)]);
WidthModal := 280;
HeightModal := 460;
ContenidoModal := TfrPoblaciones.Create(Self);
end;
procedure TfrObra.SetCodigoPoblacion(Value: Variant);
begin
if (not EsCadenaVacia(Value)) then
begin
FCodigoPoblacion := Value;
Poblacion.DataBinding.Field.AsString := dmTablaPoblaciones.darNombrePoblacion(FCodigoProvincia, FCodigoPoblacion);
end;
end;
procedure TfrObra.SetCodigoProvincia(Value: Variant);
begin
if (not EsCadenaVacia(Value)) then
begin
FCodigoProvincia := Value;
Provincia.DataBinding.Field.AsString := dmTablaProvincias.DarNombreProvincia(FCodigoProvincia);
end;
end;
procedure TfrObra.FreeContenido;
begin
if (ContenidoModal is TRdxFrameProveedores) then
CodigoProveedor := (ContenidoModal as TRdxFrameProveedores).CodigoProveedor;
if (ContenidoModal is TRdxFrameInstaladores) then
CodigoInstalador := (ContenidoModal as TRdxFrameInstaladores).CodigoInstalador;
if (ContenidoModal is TRdxFrameProvincias) then
CodigoProvincia := (ContenidoModal as TRdxFrameProvincias).CodigoProvincia;
if (ContenidoModal is TRdxFramePoblaciones) then begin
CodigoProvincia := (ContenidoModal as TRdxFramePoblaciones).CodigoProvincia;
CodigoPoblacion := (ContenidoModal as TRdxFramePoblaciones).CodigoPoblacion;
end;
inherited FreeContenido;
end;
procedure TfrObra.VerModal;
begin
if (ContenidoModal is TRdxFramePoblaciones) then
(ContenidoModal as TRdxFramePoblaciones).CodigoProvincia := FCodigoProvincia;
inherited;
end;
procedure TfrObra.ProvinciaSetText(Sender: TField; const Text: String);
begin
FCodigoProvincia := dmTablaProvincias.darCodigoProvincia(Text);
Sender.AsString := Text;
end;
procedure TfrObra.actCancelarExecute(Sender: TObject);
begin
if (TratarCambios = IDOK) then
CloseFrame;
end;
procedure TfrObra.CargarDatosInstaladores;
var
iContador : Integer;
begin
with TablaObrasInstaladoresMem do
begin
if TablaObrasInstaladores.IsEmpty then
exit;
// Localizar la fila donde está la dirección principal
DisableControls;
TablaObrasInstaladores.First;
while not TablaObrasInstaladores.EOF do
begin
Append;
for iContador := 0 to TablaObrasInstaladores.FieldCount-1 do
Fields[iContador].Value := TablaObrasInstaladores.Fields[iContador].Value;
Post;
TablaObrasInstaladores.Next;
end;
First;
EnableControls;
end;
end;
procedure TfrObra.CargarDatosGastos;
var
iContador : Integer;
begin
with TablaObrasGastosMem do
begin
if TablaObrasGastos.IsEmpty then
exit;
// Localizar la fila donde está la dirección principal
DisableControls;
TablaObrasGastos.First;
while not TablaObrasGastos.EOF do
begin
Append;
for iContador := 0 to TablaObrasGastos.FieldCount-1 do
Fields[iContador].Value := TablaObrasGastos.Fields[iContador].Value;
Post;
TablaObrasGastos.Next;
end;
First;
EnableControls;
end;
end;
procedure TfrObra.actAnadirGastoExecute(Sender: TObject);
begin
try
with TablaObrasGastosMem do
begin
Next;
if EOF then Append
else begin
Prior;
Insert;
end;
TablaObrasGastosMem.FieldByName('CODIGOCONTRATO').AsString := CodigoObra;
TablaObrasGastosMem.FieldByName('CODIGO').AsInteger := FContadorGastosAux;
TablaObrasGastosMem.FieldByName('FECHAALTA').AsDateTime := dmBaseDatos.DarFecha;
TablaObrasGastosMem.FieldByName('USUARIO').AsString := dmBaseDatos.Usuario;
TablaObrasGastosMem.FieldByName('FECHA').AsDateTime := dmBaseDatos.DarFecha;
Inc(FContadorGastosAux);
end;
gridOtrosGastos.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrObra.actEliminarGastoExecute(Sender: TObject);
begin
if verMensajePregunta(msgObrEliminarDetalles) = mrYes then
begin
if TablaObrasGastos.RecordCount = 0 then begin
{ Hacemos un cancel de la tabla por si el registro actual estuviera
recien creado }
TablaObrasGastosMem.Cancel;
Exit
end;
try
TablaObrasGastosMem.Delete;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
end;
procedure TfrObra.BorrarDatosGastosIB;
begin
with TablaObrasGastos do
begin
if IsEmpty then
Exit;
Last;
while not BOF do
begin
Delete;
Prior;
end;
if not IsEmpty then
Delete;
end;
end;
procedure TfrObra.SalvarDatosGastos;
var
NumeroCampo : Integer;
Valor : Variant;
Contador : Integer;
begin
try
with TablaObrasGastosMem do
begin
if IsEmpty then
Exit;
DisableControls;
First;
TablaObrasGastos.First;
Contador := 0;
while not EOF do
begin
TablaObrasGastos.Insert;
for NumeroCampo := 0 to FieldCount-1 do
begin
Valor := Fields[NumeroCampo].AsVariant;
if (TablaObrasGastos.Fields[NumeroCampo].FieldName = 'CODIGO') then
Valor := Contador;
TablaObrasGastos.Fields[NumeroCampo].AsVariant := Valor;
end;
TablaObrasGastos.Post;
Inc(Contador);
Next;
end;
EnableControls;
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrObra.SetCodigoInstalador(const Value: Variant);
var
DatosInstalador : TDatosInstalador;
begin
if (EsCadenaVacia(Value)) then
Exit;
FCodigoInstalador := Value;
if not TablaObrasInstaladoresMem.Locate('CODIGOINSTALADOR', FCodigoInstalador,[]) then
begin
DatosInstalador := TDatosInstalador.Create;
DatosInstalador.Codigo := FCodigoInstalador;
dmTablaInstaladores.DarDatosInstalador(DatosInstalador);
with TablaObrasInstaladoresMem do
begin
Append;
FieldByName('CODIGOCONTRATO').AsString := CodigoObra;
FieldByName('CODIGOINSTALADOR').AsString := FCodigoInstalador;
FieldByName('NOMBRE').AsString := DatosInstalador.Nombre;
FieldByName('FECHAALTA').AsDateTime := dmBaseDatos.DarFecha;
FieldByName('USUARIO').AsString := dmBaseDatos.Usuario;
Post;
gridInstaladores.Refresh;
end;
FreeAndNil(DatosInstalador);
end
else verMensajeFmt(msgObrInsRepetido,[FCodigoInstalador]);
end;
procedure TfrObra.actEliminarInstaladorExecute(Sender: TObject);
begin
if verMensajePregunta(msgObrEliminarDetalles) = mrYes then
begin
//Comprobamos si el instalador a eliminar tiene asociado algún entrega, montaje o remate
if existeInstaladorEnOtrasTareas then
begin
VerMensaje(msgObrInsConOtrasTareas1);
exit;
end;
if TablaObrasInstaladores.RecordCount = 0 then begin
{ Hacemos un cancel de la tabla por si el registro actual estuviera
recien creado }
TablaObrasInstaladoresMem.Cancel;
Exit
end;
try
TablaObrasInstaladoresMem.Delete;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
end;
procedure TfrObra.actEliminarTodoGasExecute(Sender: TObject);
begin
if verMensajePregunta(msgObrEliminarTodosDetalles) = mrYes then
begin
TablaObrasGastosMem.EmptyTable;
end;
end;
procedure TfrObra.actEliminarTodoInsExecute(Sender: TObject);
begin
if verMensajePregunta(msgObrEliminarTodosDetalles) = mrYes then
begin
with TablaObrasInstaladoresMem do
begin
if IsEmpty then
Exit;
Last;
while not BOF do
begin
//Comprobamos si el instalador a eliminar tiene asociado algún entrega, montaje o remate
if not existeInstaladorEnOtrasTareas then
Delete;
Prior;
end;
if not IsEmpty then
//Comprobamos si el instalador a eliminar tiene asociado algún entrega, montaje o remate
if not existeInstaladorEnOtrasTareas then
Delete;
end;
if not TablaObrasInstaladoresMem.IsEmpty then
VerMensaje(msgObrInsConOtrasTareas2);
end;
end;
procedure TfrObra.tlApartadosObraFocusedNodeChanged(Sender: TObject;
APrevFocusedNode, AFocusedNode: TcxTreeListNode);
begin
if AFocusedNode = nil then
exit;
case StrToInt(AFocusedNode.Texts[0]) of
//PanelObra
CTE_PNL_OBRA: begin
HabilitarPanelObra;
end;
//PanelPedidos
CTE_PNL_PEDIDOS: begin
HabilitarPanelInforme;
rellenarTablaInfPedidos;
FInformePedidos.CodigoObra := CodigoObra;
FInformePedidos.NombreObra := TablaObras.FieldByName('NOMBRE').AsString;
FInformePedidos.setDatos(FTablaInformePedidosMem);
FInformePedidos.Previsualizar;
end;
//PanelPedido
CTE_PNL_PEDIDO: begin
HabilitarPanelPedido;
CodigoPedido := AFocusedNode.Texts[CTE_COL_CODPEDIDO];
end;
//PanelOtros
CTE_PNL_OTROS: begin
HabilitarPanelInforme;
rellenarTablaInfTareas;
FInformeOtros.CodigoObra := CodigoObra;
FInformeOtros.NombreObra := TablaObras.FieldByName('NOMBRE').AsString;
FInformeOtros.setDatos(FTablaInformeTareasMem);
FInformeOtros.Previsualizar;
end;
//PanelOtro
CTE_PNL_OTRO: begin
HabilitarPanelTareas;
TipoTarea := AFocusedNode.Texts[CTE_COL_TIPO];
end;
else
showmessage('Error: No existe panel');
end;
end;
procedure TfrObra.BorrarDatosInstaladoresIB;
begin
with TablaObrasInstaladores do
begin
if IsEmpty then
Exit;
Last;
while not BOF do
begin
Delete;
Prior;
end;
if not IsEmpty then
Delete;
end;
end;
procedure TfrObra.SalvarDatosInstaladores;
var
NumeroCampo : Integer;
Valor : Variant;
begin
try
with TablaObrasInstaladoresMem do
begin
if IsEmpty then
Exit;
DisableControls;
First;
TablaObrasInstaladores.First;
while not EOF do
begin
TablaObrasInstaladores.Insert;
for NumeroCampo := 0 to FieldCount-1 do
begin
Valor := Fields[NumeroCampo].AsVariant;
TablaObrasInstaladores.Fields[NumeroCampo].AsVariant := Valor;
end;
TablaObrasInstaladores.Post;
Next;
end;
EnableControls;
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrObra.actAnadirPedidoExecute(Sender: TObject);
var
Nodo : TcxTreeListNode;
begin
//Pedidos
Nodo := tlApartadosObra.FindNodeByText(IntToStr(CTE_PNL_PEDIDOS), tlApartadosObra.Columns[0]);
Nodo := Nodo.AddChild;
Nodo.Texts[CTE_COL_PANEL] := IntToStr(CTE_PNL_PEDIDO);
Nodo.Texts[CTE_COL_DESCRIPCION] := 'Nuevo pedido' + '- ';
Nodo.Texts[CTE_COL_CODPEDIDO] := IntToStr(FCodigoPedidoAux);
Inc(FCodigoPedidoAux);
tlApartadosObra.Refresh;
Nodo.Focused := True;
CodigoPedido := Nodo.Texts[CTE_COL_CODPEDIDO];
end;
procedure TfrObra.SetCodigoPedido(const Value: Variant);
begin
if (EsCadenaVacia(Value)) then
Exit;
if (FCodigoPedido <> Value) then
begin
FCodigoPedido := Value;
BuscarPedidoObra;
end;
end;
procedure TfrObra.NombreProvPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
begin
ContenidoModal := TfrProveedores.Create(Self);
end;
procedure TfrObra.SetCodigoProveedor(const Value: Variant);
var
DatosProveedor : TDatosProveedor;
begin
if (EsCadenaVacia(Value)) then
Exit;
if (FCodigoProveedor <> Value) then
begin
FCodigoProveedor := Value;
DatosProveedor := TDatosProveedor.Create(FCodigoProveedor);
with TablaObrasPedidos do
begin
if not (State in [dsEdit, dsInsert]) then
Edit;
FieldByName('CODIGOPROV').AsString := DatosProveedor.Codigo;
FieldByName('NOMBREPROV').AsString := DatosProveedor.Nombre;
FieldByName('TELEFONO1').AsString := DatosProveedor.Telefono1;
FieldByName('TELEFONO2').AsString := DatosProveedor.Telefono2;
FieldByName('MOVIL1').AsString := DatosProveedor.Movil1;
FieldByName('MOVIL2').AsString := DatosProveedor.Movil2;
FieldByName('FAX').AsString := DatosProveedor.Fax;
FieldByName('CORREO').AsString := DatosProveedor.Correo;
FieldByName('PERSONACONTACTO').AsString := DatosProveedor.PersonaContacto;
RefrescarDatosProveedor;
end;
FreeAndNil(DatosProveedor);
end;
end;
procedure TfrObra.BuscarPedidoObra;
begin
if not TablaObrasPedidos.Locate('CODIGO', FCodigoPedido, []) then
begin
//En el caso de no encontrarse el codigo de pedido es porque es nuevo y añadimos los datos base
TablaObrasPedidos.Insert;
TablaObrasPedidos.FieldByName('CODIGOCONTRATO').AsString := CodigoObra;
TablaObrasPedidos.FieldByName('CODIGO').AsString := FCodigoPedido;
TablaObrasPedidos.FieldByName('FECHAALTA').AsDateTime := dmBaseDatos.DarFecha;
TablaObrasPedidos.FieldByName('USUARIO').AsString := dmBaseDatos.Usuario;
TablaObrasPedidos.FieldByName('DESCRIPCION').AsString := 'Nuevo pedido';
//Insertamos en la tabla de memoria las fases correspondientes al nuevo pedido
InicializarFases;
DescripcionPed.SetFocus;
end;
//En caso de cambiar de pedido se refrescan los datos de proveedor y de las fases correspondientes
RefrescarDatosProveedor;
RefrescarFases;
end;
procedure TfrObra.RefrescarDatosProveedor;
begin
eTelefono1Prov.Caption := TablaObrasPedidos.FieldByName('TELEFONO1').AsString;
eTelefono2Prov.Caption := TablaObrasPedidos.FieldByName('TELEFONO2').AsString;
eMovil1Prov.Caption := TablaObrasPedidos.FieldByName('MOVIL1').AsString;
eMovil2Prov.Caption := TablaObrasPedidos.FieldByName('MOVIL2').AsString;
eFaxProv.Caption := TablaObrasPedidos.FieldByName('FAX').AsString;
eCorreoProv.Caption := TablaObrasPedidos.FieldByName('CORREO').AsString;
ePersonaContactoProv.Caption := TablaObrasPedidos.FieldByName('PERSONACONTACTO').AsString;
end;
procedure TfrObra.RefrescarFases;
begin
with TablaFasesMem do
begin
First;
Locate('CODIGOPEDIDO', CodigoPedido, []);
if (FieldByName('COMPLETADA').AsInteger = CTE_TRUE)
then cxPed.Checked := True
else cxPed.Checked := False;
if FieldByName('FECHAINI').AsVariant = Null
then FechaPed.Text := ''
else FechaPed.Date := FieldByName('FECHAINI').AsDateTime;
ObservacionesPed.Text := FieldByName('OBSERVACIONES').AsString;
Next;
if (FieldByName('COMPLETADA').AsInteger = CTE_TRUE)
then cxCon.Checked := True
else cxCon.Checked := False;
if FieldByName('FECHAINI').AsVariant = Null
then FechaCon.Text := ''
else FechaCon.Date := FieldByName('FECHAINI').AsDateTime;
ObservacionesCon.Text := FieldByName('OBSERVACIONES').AsString;
Next;
if (FieldByName('COMPLETADA').AsInteger = CTE_TRUE)
then cxEna.Checked := True
else cxEna.Checked := False;
if FieldByName('FECHAINI').AsVariant = Null
then FechaEnaIni.Text := ''
else FechaEnaIni.Date := FieldByName('FECHAINI').AsDateTime;
if FieldByName('FECHAFIN').AsVariant = Null
then FechaEnaFin.Text := ''
else FechaEnaFin.Date := FieldByName('FECHAFIN').AsDateTime;
ObservacionesEna.Text := FieldByName('OBSERVACIONES').AsString;
Next;
if (FieldByName('COMPLETADA').AsInteger = CTE_TRUE)
then cxTra.Checked := True
else cxTra.Checked := False;
if FieldByName('FECHAINI').AsVariant = Null
then FechaTra.Text := ''
else FechaTra.Date := FieldByName('FECHAINI').AsDateTime;
ObservacionesTra.Text := FieldByName('OBSERVACIONES').AsString;
Next;
if (FieldByName('COMPLETADA').AsInteger = CTE_TRUE)
then cxEnt.Checked := True
else cxEnt.Checked := False;
if FieldByName('FECHAINI').AsVariant = Null
then FechaEnt.Text := ''
else FechaEnt.Date := FieldByName('FECHAINI').AsDateTime;
ObservacionesEnt.Text := FieldByName('OBSERVACIONES').AsString;
end;
end;
procedure TfrObra.InicializarFases;
begin
dmTablaTareas.rellenarTareasFase(TablaFasesMem, CodigoPedido);
TablaFasesMem.Post;
end;
procedure TfrObra.CargarDatosFases;
var
iContador : Integer;
begin
with TablaFasesMem do
begin
if TablaFases.IsEmpty then
exit;
DisableControls;
TablaFases.First;
while not TablaFases.EOF do
begin
Append;
for iContador := 0 to TablaFases.FieldCount-1 do
Fields[iContador].Value := TablaFases.Fields[iContador].Value;
Post;
TablaFases.Next;
end;
First;
EnableControls;
end;
end;
procedure TfrObra.pnlFasesPedidoExit(Sender: TObject);
begin
VolcarDatosFases;
end;
procedure TfrObra.FechaEnaFinPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
begin
FechaEnaIni.Date := IncDay(FechaEnaFin.Date,-7);
end;
procedure TfrObra.FechaEnaIniPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
begin
FechaEnaFin.Date := IncDay(FechaEnaIni.Date,7);
end;
procedure TfrObra.VolcarDatosFases;
begin
//Salvamos los cambios realizados en tabla de memoria
with TablaFasesMem do
begin
First;
Locate('CODIGOPEDIDO', CodigoPedido, []);
//Fase 1.Pedido
Edit;
if cxPed.Checked
then FieldByName('COMPLETADA').AsInteger := CTE_TRUE
else FieldByName('COMPLETADA').AsInteger := CTE_FALSE;
if FechaPed.Text = ''
then FieldByName('FECHAINI').AsVariant := Null
else FieldByName('FECHAINI').AsDateTime := FechaPed.Date;
FieldByName('OBSERVACIONES').AsString := ObservacionesPed.Text;
FieldByName('FECHAFIN').AsString := FieldByName('FECHAINI').AsString;
FieldByName('HORAINI').AsString := CTE_HORAINI;
FieldByName('HORAFIN').AsString := CTE_HORAFIN;
Post;
//Fase 2.Confirmado
Next;
Edit;
if cxCon.Checked
then FieldByName('COMPLETADA').AsInteger := CTE_TRUE
else FieldByName('COMPLETADA').AsInteger := CTE_FALSE;
if FechaCon.Text = ''
then FieldByName('FECHAINI').AsVariant := Null
else FieldByName('FECHAINI').AsDateTime := FechaCon.Date;
FieldByName('OBSERVACIONES').AsString := ObservacionesCon.Text;
FieldByName('FECHAFIN').AsString := FieldByName('FECHAINI').AsString;
FieldByName('HORAINI').AsString := CTE_HORAINI;
FieldByName('HORAFIN').AsString := CTE_HORAFIN;
Post;
//Fase 3.En almacen
Next;
Edit;
if cxEna.Checked
then FieldByName('COMPLETADA').AsInteger := CTE_TRUE
else FieldByName('COMPLETADA').AsInteger := CTE_FALSE;
if FechaEnaIni.Text = ''
then FieldByName('FECHAINI').AsVariant := Null
else FieldByName('FECHAINI').AsDateTime := FechaEnaIni.Date;
if FechaEnaFin.Text = ''
then FieldByName('FECHAFIN').AsVariant := Null
else FieldByName('FECHAFIN').AsDateTime := FechaEnaFin.Date;
FieldByName('OBSERVACIONES').AsString := ObservacionesEna.Text;
FieldByName('HORAINI').AsString := CTE_HORAINI;
FieldByName('HORAFIN').AsString := CTE_HORAFIN;
Post;
//Fase 4.Aviso Trans.
Next;
Edit;
if cxTra.Checked
then FieldByName('COMPLETADA').AsInteger := CTE_TRUE
else FieldByName('COMPLETADA').AsInteger := CTE_FALSE;
if FechaTra.Text = ''
then FieldByName('FECHAINI').AsVariant := Null
else FieldByName('FECHAINI').AsDateTime := FechaTra.Date;
FieldByName('OBSERVACIONES').AsString := ObservacionesTra.Text;
FieldByName('FECHAFIN').AsString := FieldByName('FECHAINI').AsString;
FieldByName('HORAINI').AsString := CTE_HORAINI;
FieldByName('HORAFIN').AsString := CTE_HORAFIN;
Post;
//Fase 4.Entregado.
Next;
Edit;
if cxEnt.Checked
then FieldByName('COMPLETADA').AsInteger := CTE_TRUE
else FieldByName('COMPLETADA').AsInteger := CTE_FALSE;
if FechaEnt.Text = ''
then FieldByName('FECHAINI').AsVariant := Null
else FieldByName('FECHAINI').AsDateTime := FechaEnt.Date;
FieldByName('OBSERVACIONES').AsString := ObservacionesEnt.Text;
FieldByName('FECHAFIN').AsString := FieldByName('FECHAINI').AsString;
FieldByName('HORAINI').AsString := CTE_HORAINI;
FieldByName('HORAFIN').AsString := CTE_HORAFIN;
Post;
end;
end;
procedure TfrObra.BorrarDatosFasesIB;
begin
dmTablaTareas.eliminarTareasPedidoObra(CodigoObra);
with TablaFases do
begin
if IsEmpty then
Exit;
Last;
while not BOF do
begin
Delete;
Prior;
end;
if not IsEmpty then
Delete;
end;
end;
procedure TfrObra.SalvarDatosFases;
var
NumeroCampo : Integer;
Valor : Variant;
CodigoPedido : Variant;
CodigoTarea : Variant;
begin
try
with TablaFasesMem do
begin
if IsEmpty then
Exit;
DisableControls;
First;
TablaFases.First;
while not EOF do
begin
TablaFases.Insert;
for NumeroCampo := 0 to FieldCount-1 do
begin
Valor := Fields[NumeroCampo].AsVariant;
if (TablaFases.Fields[NumeroCampo].FieldName = 'CODIGOPEDIDO') then
begin
CodigoPedido := Valor;
Continue;
end;
if (TablaFases.Fields[NumeroCampo].FieldName = 'FECHAALTA') then
Valor := dmBaseDatos.DarFecha;
if (TablaFases.Fields[NumeroCampo].FieldName = 'USUARIOALTA')
or (TablaFases.Fields[NumeroCampo].FieldName = 'USUARIO') then
Valor := dmBaseDatos.Usuario;
if (TablaFases.Fields[NumeroCampo].FieldName = 'CODIGO') then
begin
if Valor < 10 then
begin
Valor := dmTablaTareas.darNuevoCodigo;
dmTablaTareas.IncrementarCodigo;
end;
CodigoTarea := Valor;
end;
TablaFases.Fields[NumeroCampo].AsVariant := Valor;
end;
TablaFases.Post;
dmTablaTareas.insertarTareaPedidoObra(CodigoObra, CodigoPedido, CodigoTarea);
Next;
end;
EnableControls;
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrObra.actEliminarPedidoExecute(Sender: TObject);
var
Nodo : TcxTreeListNode;
begin
Nodo := tlApartadosObra.FocusedNode;
if (StrToInt(Nodo.Texts[CTE_COL_PANEL]) = CTE_PNL_PEDIDO) then
begin
if VerMensajePreguntaFmt(msgObrPrePedBorrar, [Nodo.Texts[CTE_COL_DESCRIPCION]]) = mrYES then
begin
EliminarPedido;
RefrescarListaApartadosObra;
end
end
else
VerMensaje (msgObrPedSelec);
end;
procedure TfrObra.EliminarPedido;
begin
TablaObrasPedidos.Delete;
//Eliminamos tambien todas las fases correspondientes en la tabla de memoria de tareas
TablaFasesMem.First;
TablaFasesMem.Locate('CODIGOPEDIDO', CodigoPedido, []);
while (TablaFasesMem.FieldByName('CodigoPedido').AsString = CodigoPedido) do
TablaFasesMem.Delete;
end;
procedure TfrObra.CargarDatosTareasObras;
var
iContador : Integer;
begin
with TablaTareasObrasMem do
begin
if TablaTareasObras.IsEmpty then
exit;
DisableControls;
TablaTareasObras.First;
while not TablaTareasObras.EOF do
begin
Append;
for iContador := 0 to TablaTareasObras.FieldCount-1 do
Fields[iContador].Value := TablaTareasObras.Fields[iContador].Value;
Post;
TablaTareasObras.Next;
end;
First;
EnableControls;
end;
end;
function TfrObra.existeInstaladorEnOtrasTareas: Boolean;
begin
TablaTareasObrasMem.First;
Result := TablaTareasObrasMem.Locate('CODIGOINSTALADOR', TablaObrasInstaladoresMem.FieldByName('CODIGOINSTALADOR').AsString, []);
end;
procedure TfrObra.SetTipoTarea(const Value: Variant);
begin
if (EsCadenaVacia(Value)) then
Exit;
if (FTipoTarea <> Value) then
begin
FTipoTarea := Value;
if FTipoTarea = CTE_ENTREGA then
pnlDatosOtro.Caption.Text := litObrEntregas
else if FTipoTarea = CTE_MONTAJE then
pnlDatosOtro.Caption.Text := litObrMontajes
else if FTipoTarea = CTE_REMATE then
pnlDatosOtro.Caption.Text := litObrRemates
else VerMensaje('Error: Tipo no existente');
AplicarFiltroGridTareasObras;
end;
end;
procedure TfrObra.actAnadirTareaObraExecute(Sender: TObject);
begin
try
with TablaTareasObrasMem do
begin
Next;
if EOF then Append
else begin
Prior;
Insert;
end;
FieldByName('CODIGO').AsInteger := FContadorTareaObraAux;
FieldByName('TIPO').AsString := FTipoTarea;
FieldByName('COMPLETADA').AsInteger := 0;
FieldByName('CODIGOINSTALADOR').AsString := TablaObrasInstaladoresMem.FieldByName('CODIGOINSTALADOR').AsString;
FieldByName('FECHAINI').AsDateTime := dmBaseDatos.DarFecha;
FieldByName('DESCRIPCION').AsString := FTipoTarea;
Inc(FContadorTareaObraAux);
end;
gridTareasObrasDBTableView1.GetColumnByFieldName('DESCRIPCION').FocusWithSelection;
gridTareasObras.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrObra.actEliminarTareaObraExecute(Sender: TObject);
begin
if verMensajePregunta(msgObrEliminarDetalles) = mrYes then
begin
if TablaTareasObrasMem.RecordCount = 0 then begin
{ Hacemos un cancel de la tabla por si el registro actual estuviera
recien creado }
TablaTareasObrasMem.Cancel;
Exit
end;
try
TablaTareasObrasMem.Delete;
//Para que se posicione el el primer registro de la lista de tareas con el filtro determinado
gridTareasObrasDBTableView1.DataController.GotoFirst;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
end;
procedure TfrObra.actEliminarTodoTareaObraExecute(Sender: TObject);
begin
if verMensajePregunta(msgObrEliminarTodosDetalles) = mrYes then
begin
try
TablaTareasObrasMem.First;
while not TablaTareasObrasMem.EOF do
begin
if (TablaTareasObrasMem.FieldByName('TIPO').AsVariant = TipoTarea) then
TablaTareasObrasMem.Delete
else
TablaTareasObrasMem.Next;
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
end;
procedure TfrObra.BorrarDatosTareasObrasIB;
begin
dmTablaTareas.eliminarTareasInstaladorObra(CodigoObra);
with TablaTareasObras do
begin
if IsEmpty then
Exit;
Last;
while not BOF do
begin
Delete;
Prior;
end;
if not IsEmpty then
Delete;
end;
end;
procedure TfrObra.SalvarDatosTareasObras;
var
NumeroCampo : Integer;
Valor : Variant;
CodigoInstalador : Variant;
CodigoTarea : Variant;
begin
try
with TablaTareasObrasMem do
begin
if IsEmpty then
Exit;
DisableControls;
First;
TablaTareasObras.First;
while not EOF do
begin
TablaTareasObras.Insert;
for NumeroCampo := 0 to FieldCount-1 do
begin
Valor := Fields[NumeroCampo].AsVariant;
if (TablaTareasObras.Fields[NumeroCampo].FieldName = 'CODIGOINSTALADOR') then
begin
CodigoInstalador := Valor;
Continue;
end;
if (TablaFases.Fields[NumeroCampo].FieldName = 'FECHAALTA') then
Valor := dmBaseDatos.DarFecha;
if (TablaFases.Fields[NumeroCampo].FieldName = 'USUARIOALTA')
or (TablaFases.Fields[NumeroCampo].FieldName = 'USUARIO') then
Valor := dmBaseDatos.Usuario;
if (TablaTareasObras.Fields[NumeroCampo].FieldName = 'CODIGO') then
begin
if Valor < 500000 then
begin
Valor := dmTablaTareas.darNuevoCodigo;
dmTablaTareas.IncrementarCodigo;
end;
CodigoTarea := Valor;
end;
if (TablaFases.Fields[NumeroCampo].FieldName = 'FECHAFIN') then
Valor := TablaFases.FieldByName('FECHAINI').AsVariant;
if (TablaFases.Fields[NumeroCampo].FieldName = 'HORAINI') then
Valor := CTE_HORAINI;
if (TablaFases.Fields[NumeroCampo].FieldName = 'HORAFIN') then
Valor := CTE_HORAFIN;
TablaTareasObras.Fields[NumeroCampo].AsVariant := Valor;
end;
TablaTareasObras.Post;
dmTablaTareas.insertarTareaInstaladorObra(CodigoObra, CodigoInstalador, CodigoTarea);
Next;
end;
EnableControls;
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrObra.AplicarFiltroGridTareasObras;
begin
with gridTareasObras.ActiveView.DataController.Filter do
begin
BeginUpdate;
try
Root.Clear;
Root.AddItem((gridTareasObras.ActiveView as TcxGridDBTableView).GetColumnByFieldName('TIPO'), foLike, TipoTarea, 'Tipo');
Active := True;
finally
EndUpdate;
end;
end;
end;
procedure TfrObra.crearTablaInfPedidos;
begin
//Creamos la tabla con los campos que vamos a tener el informe
FTablaInformePedidosMem := TRxMemoryData.Create(Self);
with FTablaInformePedidosMem do
begin
FieldDefs.Add('CODIGOCONTRATO',ftString,12);
FieldDefs.Items[FieldDefs.IndexOf('CODIGOCONTRATO')].CreateField(Self);
FieldDefs.Add('CODIGOPEDIDO',ftString,10);
FieldDefs.Items[FieldDefs.IndexOf('CODIGOPEDIDO')].CreateField(Self);
FieldDefs.Add('DESCRIPCIONPROVEEDOR',ftString,200);
FieldDefs.Items[FieldDefs.IndexOf('DESCRIPCIONPROVEEDOR')].CreateField(Self);
FieldDefs.Add('CODIGOTAREA',ftString,10);
FieldDefs.Items[FieldDefs.IndexOf('CODIGOTAREA')].CreateField(Self);
FieldDefs.Add('DESCRIPCIONTAREA',ftString,2000);
FieldDefs.Items[FieldDefs.IndexOf('DESCRIPCIONTAREA')].CreateField(Self);
FieldDefs.Add('COMPLETADA',ftString,1);
FieldDefs.Items[FieldDefs.IndexOf('COMPLETADA')].CreateField(Self);
FieldDefs.Add('FECHAINI',ftString,50);
FieldDefs.Items[FieldDefs.IndexOf('FECHAINI')].CreateField(Self);
end;
end;
procedure TfrObra.rellenarTablaInfPedidos;
var
Nodo : TcxTreeListNode;
begin
FTablaInformePedidosMem.EmptyTable;
FTablaInformePedidosMem.Open;
TablaFasesMem.SortOnFields('CODIGOPEDIDO;CODIGO');
with TablaFasesMem do
begin
DisableControls;
First;
FTablaInformePedidosMem.First;
while not Eof do
begin
FTablaInformePedidosMem.Append;
FTablaInformePedidosMem.FieldByName('CODIGOCONTRATO').AsString := CodigoObra;
FTablaInformePedidosMem.FieldByName('CODIGOPEDIDO').AsString := FieldByName('CODIGOPEDIDO').AsString;
FTablaInformePedidosMem.FieldByName('CODIGOTAREA').AsString := FieldByName('CODIGO').AsString;
FTablaInformePedidosMem.FieldByName('COMPLETADA').AsString := FieldByName('COMPLETADA').AsString;
FTablaInformePedidosMem.FieldByName('FECHAINI').AsString := FieldByName('FECHAINI').AsString;
FTablaInformePedidosMem.FieldByName('DESCRIPCIONTAREA').AsString := FieldByName('DESCRIPCION').AsString;
//La descripción del pedido junto con el proveedor la sacamos de la lista desplegable
Nodo := tlApartadosObra.FindNodeByText(FieldByName('CODIGOPEDIDO').AsString,ColCodigoPedido);
if Nodo <> Nil
then FTablaInformePedidosMem.FieldByName('DESCRIPCIONPROVEEDOR').AsString := Nodo.Texts[CTE_COL_DESCRIPCION]
else FTablaInformePedidosMem.FieldByName('DESCRIPCIONPROVEEDOR').AsVariant := Null;
FTablaInformePedidosMem.Post;
FTablaInformePedidosMem.Next;
Next;
end;
EnableControls;
end;
end;
procedure TfrObra.crearTablaInfTareas;
begin
//Creamos la tabla con los campos que vamos a tener el informe
FTablaInformeTareasMem := TRxMemoryData.Create(Self);
with FTablaInformeTareasMem do
begin
FieldDefs.Add('CODIGOCONTRATO',ftString,12);
FieldDefs.Items[FieldDefs.IndexOf('CODIGOCONTRATO')].CreateField(Self);
FieldDefs.Add('CODIGOINSTALADOR',ftString,10);
FieldDefs.Items[FieldDefs.IndexOf('CODIGOINSTALADOR')].CreateField(Self);
FieldDefs.Add('INSTALADOR',ftString,200);
FieldDefs.Items[FieldDefs.IndexOf('INSTALADOR')].CreateField(Self);
FieldDefs.Add('CODIGOTAREA',ftString,10);
FieldDefs.Items[FieldDefs.IndexOf('CODIGOTAREA')].CreateField(Self);
FieldDefs.Add('TIPO',ftString,100);
FieldDefs.Items[FieldDefs.IndexOf('TIPO')].CreateField(Self);
FieldDefs.Add('DESCRIPCION',ftString,2000);
FieldDefs.Items[FieldDefs.IndexOf('DESCRIPCION')].CreateField(Self);
FieldDefs.Add('COMPLETADA',ftString,1);
FieldDefs.Items[FieldDefs.IndexOf('COMPLETADA')].CreateField(Self);
FieldDefs.Add('FECHAINI',ftString,50);
FieldDefs.Items[FieldDefs.IndexOf('FECHAINI')].CreateField(Self);
end;
end;
procedure TfrObra.rellenarTablaInfTareas;
begin
FTablaInformeTareasMem.EmptyTable;
FTablaInformeTareasMem.Open;
TablaTareasObrasMem.SortOnFields('CODIGOINSTALADOR;TIPO;FECHAINI');
with TablaTareasObrasMem do
begin
DisableControls;
First;
FTablaInformeTareasMem.First;
while not Eof do
begin
FTablaInformeTareasMem.Append;
FTablaInformeTareasMem.FieldByName('CODIGOCONTRATO').AsString := CodigoObra;
FTablaInformeTareasMem.FieldByName('CODIGOINSTALADOR').AsString := FieldByName('CODIGOINSTALADOR').AsString;
FTablaInformeTareasMem.FieldByName('INSTALADOR').AsString := FieldByName('CODIGOINSTALADOR').AsString;
FTablaInformeTareasMem.FieldByName('CODIGOTAREA').AsString := FieldByName('CODIGO').AsString;
FTablaInformeTareasMem.FieldByName('TIPO').AsString := FieldByName('TIPO').AsString;
FTablaInformeTareasMem.FieldByName('COMPLETADA').AsString := FieldByName('COMPLETADA').AsString;
FTablaInformeTareasMem.FieldByName('FECHAINI').AsString := FieldByName('FECHAINI').AsString;
FTablaInformeTareasMem.FieldByName('DESCRIPCION').AsString := FieldByName('DESCRIPCION').AsString;
//La descripción del pedido junto con el proveedor la sacamos de la lista desplegable
// FTablaInformePedidosMem.FieldByName('DESCRIPCIONPROVEEDOR').AsString := (tlApartadosObra.FindNodeByText(FieldByName('CODIGOPEDIDO').AsString,ColCodigoPedido)).Texts[CTE_COL_DESCRIPCION];
FTablaInformeTareasMem.Post;
FTablaInformeTareasMem.Next;
Next;
end;
EnableControls;
end;
end;
procedure TfrObra.activarModoModificarTablasObra;
begin
with TablaObras do
begin
ParamByName('CODIGOCONTRATO').AsString := CodigoObra;
Prepare;
Open;
FieldByName('PROVINCIA').OnSetText := ProvinciaSetText;
if RecordCount = 0 then
begin
VerMensajeFmt(msgObrNoExisteObr, [CodigoObra]);
CancelarModificar;
CloseFrame;
Exit;
end;
// Bloquear el Obra
Edit;
Post;
Edit;
end;
with TablaObrasInstaladores do
begin
Close;
Params.ByName('CODIGOCONTRATO').AsString := CodigoObra;
Prepare;
Open;
end;
with TablaObrasInstaladoresMem do
begin
Close;
Open;
CargarDatosInstaladores;
if not IsEmpty then
Edit;
end;
with TablaObrasGastos do
begin
Close;
Params.ByName('CODIGOCONTRATO').AsString := CodigoObra;
Prepare;
Open;
end;
with TablaObrasGastosMem do
begin
Close;
Open;
CargarDatosGastos;
if TablaObrasGastos.RecordCount = -1
then FContadorGastosAux := 0
else FContadorGastosAux := TablaObrasGastos.RecordCount;
if not IsEmpty then
Edit;
end;
end;
procedure TfrObra.activarModoConsultarTablasObra;
begin
with TablaObras do
begin
ParamByName('CODIGOCONTRATO').AsString := CodigoObra;
Prepare;
Open;
FieldByName('PROVINCIA').OnSetText := Nil;
if RecordCount = 0 then
begin
VerMensajeFmt(msgObrNoExisteObr, [CodigoObra]);
CancelarModificar;
CloseFrame;
Exit;
end;
end;
with TablaObrasInstaladores do
begin
Close;
Params.ByName('CODIGOCONTRATO').AsString := CodigoObra;
Prepare;
Open;
end;
with TablaObrasInstaladoresMem do
begin
Close;
Open;
CargarDatosInstaladores;
end;
with TablaObrasGastos do
begin
Close;
Params.ByName('CODIGOCONTRATO').AsString := CodigoObra;
Prepare;
Open;
end;
with TablaObrasGastosMem do
begin
Close;
Open;
CargarDatosGastos;
end;
end;
procedure TfrObra.activarModoTablasPedidos;
begin
with TablaObrasPedidos do
begin
Close;
Params.ByName('CODIGOCONTRATO').AsString := CodigoObra;
Prepare;
Open;
end;
with TablaFases do
begin
Close;
Params.ByName('CODIGOCONTRATO').AsString := CodigoObra;
Prepare;
Open;
end;
with TablaFasesMem do
begin
Close;
Open;
CargarDatosFases;
end;
end;
procedure TfrObra.activarModoConsultarTablasTareas;
begin
with TablaTareasObras do
begin
Close;
Params.ByName('CODIGOCONTRATO').AsString := CodigoObra;
Prepare;
Open;
end;
with TablaTareasObrasMem do
begin
Close;
Open;
CargarDatosTareasObras;
if TablaTareasObras.RecordCount = -1
then FContadorTareaObraAux := 0
else FContadorTareaObraAux := TablaTareasObras.RecordCount;
end;
end;
procedure TfrObra.activarModoModificarTablasTareas;
begin
with TablaTareasObras do
begin
Close;
Params.ByName('CODIGOCONTRATO').AsString := CodigoObra;
Prepare;
Open;
end;
with TablaTareasObrasMem do
begin
Close;
Open;
CargarDatosTareasObras;
if TablaTareasObras.RecordCount = -1
then FContadorTareaObraAux := 0
else FContadorTareaObraAux := TablaTareasObras.RecordCount;
if not IsEmpty then
Edit;
end;
end;
procedure TfrObra.ActivarBarrasGrids;
begin
pnlBarraInstaladores.Visible := True;
pnlBarraOtrosGastos.Visible := True;
pnlBarraOtro.Visible := True;
end;
procedure TfrObra.DesactivarBarrasGrids;
begin
pnlBarraInstaladores.Visible := False;
pnlBarraOtrosGastos.Visible := False;
pnlBarraOtro.Visible := False;
end;
procedure TfrObra.ActivarCamposPedido;
begin
cxPed.Properties.ReadOnly := False;
cxTra.Properties.ReadOnly := False;
cxCon.Properties.ReadOnly := False;
cxEnt.Properties.ReadOnly := False;
cxEna.Properties.ReadOnly := False;
FechaPed.Properties.ReadOnly := False;
FechaTra.Properties.ReadOnly := False;
FechaCon.Properties.ReadOnly := False;
FechaEnt.Properties.ReadOnly := False;
FechaEnaIni.Properties.ReadOnly := False;
FechaEnaFin.Properties.ReadOnly := False;
ObservacionesPed.Properties.ReadOnly := False;
ObservacionesTra.Properties.ReadOnly := False;
ObservacionesCon.Properties.ReadOnly := False;
ObservacionesEnt.Properties.ReadOnly := False;
ObservacionesEna.Properties.ReadOnly := False;
end;
procedure TfrObra.DesactivarCamposPedido;
begin
cxPed.Properties.ReadOnly := True;
cxTra.Properties.ReadOnly := True;
cxCon.Properties.ReadOnly := True;
cxEnt.Properties.ReadOnly := True;
cxEna.Properties.ReadOnly := True;
FechaPed.Properties.ReadOnly := True;
FechaTra.Properties.ReadOnly := True;
FechaCon.Properties.ReadOnly := True;
FechaEnt.Properties.ReadOnly := True;
FechaEnaIni.Properties.ReadOnly := True;
FechaEnaFin.Properties.ReadOnly := True;
ObservacionesPed.Properties.ReadOnly := True;
ObservacionesTra.Properties.ReadOnly := True;
ObservacionesCon.Properties.ReadOnly := True;
ObservacionesEnt.Properties.ReadOnly := True;
ObservacionesEna.Properties.ReadOnly := True;
end;
procedure TfrObra.crearTablasObra;
begin
TablaObras := TIBDataSet.Create(Self);
dsObras.DataSet := TablaObras;
with TablaObras do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaObras.sqlConsultar);
ModifySQL.Assign(dmTablaObras.sqlModificar);
DeleteSQL.Assign(dmTablaObras.sqlEliminar);
RefreshSQL.Assign(dmTablaObras.sqlConsultar);
end;
TablaObrasInstaladores := TIBDataSet.Create(Self);
TablaObrasInstaladoresMem := TRxMemoryData.Create(Self);
dsObrasInstaladores.DataSet := TablaObrasInstaladoresMem;
with TablaObrasInstaladores do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaObrasInstaladores.sqlGrid);
InsertSQL.Assign(dmTablaObrasInstaladores.sqlInsertar);
ModifySQL.Assign(dmTablaObrasInstaladores.sqlModificar);
DeleteSQL.Assign(dmTablaObrasInstaladores.sqlEliminar);
RefreshSQL.Assign(dmTablaObrasInstaladores.sqlConsultar);
end;
TablaObrasInstaladoresMem.CopyStructure(TablaObrasInstaladores);
dmTablaObrasInstaladores.InicializarGrid(gridInstaladoresDBTableView1);
TablaObrasGastos := TIBDataSet.Create(Self);
TablaObrasGastosMem := TRxMemoryData.Create(Self);
dsObrasGastos.DataSet := TablaObrasGastosMem;
with TablaObrasGastos do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaObrasGastos.sqlGrid);
InsertSQL.Assign(dmTablaObrasGastos.sqlInsertar);
ModifySQL.Assign(dmTablaObrasGastos.sqlModificar);
DeleteSQL.Assign(dmTablaObrasGastos.sqlEliminar);
RefreshSQL.Assign(dmTablaObrasGastos.sqlConsultar);
end;
TablaObrasGastosMem.CopyStructure(TablaObrasGastos);
dmTablaObrasGastos.InicializarGrid(gridOtrosGastosDBTableView1);
end;
procedure TfrObra.crearTablasPedidos;
begin
TablaObrasPedidos := TIBDataSet.Create(Self);
dsObrasPedidos.DataSet := TablaObrasPedidos;
with TablaObrasPedidos do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaObrasPedidos.sqlGrid);
InsertSQL.Assign(dmTablaObrasPedidos.sqlInsertar);
ModifySQL.Assign(dmTablaObrasPedidos.sqlModificar);
DeleteSQL.Assign(dmTablaObrasPedidos.sqlEliminar);
RefreshSQL.Assign(dmTablaObrasPedidos.sqlConsultar);
end;
TablaFases := TIBDataSet.Create(Self);
TablaFasesMem := TRxMemoryData.Create(Self);
with TablaFases do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaTareas.sqlGrid);
InsertSQL.Assign(dmTablaTareas.sqlInsertar);
ModifySQL.Assign(dmTablaTareas.sqlModificar);
DeleteSQL.Assign(dmTablaTareas.sqlEliminar);
RefreshSQL.Assign(dmTablaTareas.sqlConsultar);
end;
TablaFasesMem.CopyStructure(TablaFases);
DataSource1.DataSet := TablaFasesMem;
end;
procedure TfrObra.crearTablasTareas;
begin
TablaTareasObras := TIBDataSet.Create(Self);
TablaTareasObrasMem := TRxMemoryData.Create(Self);
dsTareasObras.DataSet := TablaTareasObrasMem;
with TablaTareasObras do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaTareas.sqlTareasObrasGrid);
InsertSQL.Assign(dmTablaTareas.sqlInsertar);
ModifySQL.Assign(dmTablaTareas.sqlModificar);
DeleteSQL.Assign(dmTablaTareas.sqlEliminar);
RefreshSQL.Assign(dmTablaTareas.sqlConsultar);
end;
TablaTareasObrasMem.CopyStructure(TablaTareasObras);
dmTablaTareas.InicializarGridTareasObras(gridTareasObrasDBTableView1);
with TcxLookupComboBoxProperties(gridTareasObrasDBTableView1.GetColumnByFieldName('CODIGOINSTALADOR').Properties) do
begin
ListSource := dsObrasInstaladores;
end;
end;
procedure TfrObra.crearInformes;
begin
FVistaPrevia := TfrVistaPrevia.Create(Self);
FVistaPrevia.Parent := pnlVistaPrevia;
FVistaPrevia.bCancelar.Visible := False;
crearTablaInfPedidos;
FInformePedidos := TdmInformeListadoPedidosObra.Create(Self);
FInformePedidos.Preview := FVistaPrevia.Preview;
crearTablaInfTareas;
FInformeOtros := TdmInformeListadoTareasObra.Create(Self);
FInformeOtros.Preview := FVistaPrevia.Preview;
end;
procedure TfrObra.destruirTablasObra;
begin
TablaObras.Close;
TablaObras.Unprepare;
TablaObras.Free;
TablaObras := Nil;
TablaObrasInstaladores.Close;
TablaObrasInstaladores.UnPrepare;
TablaObrasInstaladores.Free;
TablaObrasInstaladores := Nil;
TablaObrasInstaladoresMem.Free;
TablaObrasInstaladoresMem := Nil;
TablaObrasGastos.Close;
TablaObrasGastos.UnPrepare;
TablaObrasGastos.Free;
TablaObrasGastos := Nil;
TablaObrasGastosMem.Free;
TablaObrasGastosMem := Nil;
end;
procedure TfrObra.destruirTablasPedidos;
begin
TablaObrasPedidos.Close;
TablaObrasPedidos.UnPrepare;
TablaObrasPedidos.Free;
TablaObrasPedidos := Nil;
TablaFases.Close;
TablaFases.UnPrepare;
TablaFases.Free;
TablaFases := Nil;
TablaFasesMem.Free;
TablaFasesMem := Nil;
end;
procedure TfrObra.destruirTablasTareas;
begin
TablaTareasObras.Close;
TablaTareasObras.UnPrepare;
TablaTareasObras.Free;
TablaTareasObras := Nil;
TablaTareasObrasMem.Free;
TablaTareasObrasMem := Nil;
end;
procedure TfrObra.destruirInformes;
begin
FTablaInformePedidosMem.Free;
FTablaInformePedidosMem := Nil;
FTablaInformeTareasMem.Free;
FTablaInformeTareasMem := Nil;
FreeAndNil(FInformePedidos);
FreeAndNil(FInformeOtros);
end;
procedure TfrObra.ActivarModoEliminar;
begin
dsObras.AutoEdit := False;
dsObrasInstaladores.AutoEdit := False;
dsObrasGastos.AutoEdit := False;
dsObrasPedidos.AutoEdit := False;
dsTareasObras.AutoEdit := False;
actAnadirPedido.Enabled := False;
actEliminarPedido.Enabled := False;
Provincia.Properties.Buttons[0].Visible := False;
Poblacion.Properties.Buttons[0].Visible := False;
NombreProv.Properties.Buttons[0].Visible := False;
DesactivarBarrasGrids;
DesactivarCamposPedido;
try
activarModoConsultarTablasObra;
activarModoTablasPedidos;
activarModoConsultarTablasTareas;
Visible := True;
FechaFin.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrObra.CancelarEliminar: Boolean;
begin
Result := False;
try
RollBack;
TablaObras.Close;
TablaObrasInstaladores.Close;
TablaObrasInstaladoresMem.Close;
TablaObrasGastos.Close;
TablaObrasGastosMem.Close;
TablaObrasPedidos.Close;
TablaFases.Close;
TablaFasesMem.Close;
TablaTareasObras.Close;
TablaTareasObrasMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
function TfrObra.EliminarDatos: Boolean;
begin
Result := False;
try
TablaObras.Delete;
BorrarDatosFasesIB;
BorrarDatosTareasObrasIB;
Commit;
TablaObras.Close;
TablaObrasInstaladores.Close;
TablaObrasInstaladoresMem.Close;
TablaObrasGastos.Close;
TablaObrasGastosMem.Close;
TablaObrasPedidos.Close;
TablaFases.Close;
TablaFasesMem.Close;
TablaTareasObras.Close;
TablaTareasObrasMem.Close;
Result := True;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrObra.actSalirExecute(Sender: TObject);
begin
CloseFrame;
end;
function TfrObra.CloseFrame: Boolean;
begin
FInformePedidos.Preview := NIL;
FInformeOtros.Preview := NIL;
(FVistaPrevia as TRdxFrame).CloseFrame;
Result := inherited CloseFrame;
end;
function TfrObra.TratarCambios: integer;
begin
HabilitarPanelObra;
Result := inherited TratarCambios;
end;
procedure TfrObra.HabilitarPanelTareas;
begin
pnlDetalleObra.Visible := False;
pnlDetallePedidosOtros.Visible := False;
pnlDetallePedido.Visible := False;
pnlDetalleOtro.Visible := True;
end;
procedure TfrObra.HabilitarPanelPedido;
begin
pnlDetalleObra.Visible := False;
pnlDetallePedidosOtros.Visible := False;
pnlDetallePedido.Visible := True;
pnlDetalleOtro.Visible := False;
end;
procedure TfrObra.HabilitarPanelObra;
begin
pnlDetalleObra.Visible := True;
pnlDetallePedidosOtros.Visible := False;
pnlDetallePedido.Visible := False;
pnlDetalleOtro.Visible := False;
end;
procedure TfrObra.HabilitarPanelInforme;
begin
pnlDetalleObra.Visible := False;
pnlDetallePedidosOtros.Visible := True;
pnlDetallePedido.Visible := False;
pnlDetalleOtro.Visible := False;
end;
procedure TfrObra.pnlOtrosDatosResize(Sender: TObject);
begin
pnlInstaladores.Width := pnlOtrosDatos.Width div 2;
pnlOtrosGastos.Width := pnlOtrosDatos.Width div 2;
end;
procedure TfrObra.actEliminarTareaObraUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled := (gridTareasObrasDBTableView1.ViewData.RowCount <> 0);
end;
procedure TfrObra.actEliminarTodoTareaObraUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled := (gridTareasObrasDBTableView1.ViewData.RowCount <> 0);
end;
procedure TfrObra.NombreProvPropertiesChange(Sender: TObject);
begin
refrescarNombrePedido;
end;
procedure TfrObra.refrescarNombrePedido;
var
Nodo : TcxTreeListNode;
begin
Nodo := tlApartadosObra.FocusedNode;
Nodo.Texts[CTE_COL_DESCRIPCION] := DescripcionPed.Text + '- ' + NombreProv.Text;
end;
procedure TfrObra.DescripcionPedPropertiesChange(Sender: TObject);
begin
refrescarNombrePedido;
end;
procedure TfrObra.gridTareasObrasDBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
IndiceCol : Integer;
begin
if not AViewInfo.Selected then
begin
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('COMPLETADA').Index;
if StrToBool(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) then
begin
ACanvas.Canvas.Font.Color := clGray;
ACanvas.Canvas.Font.Style := [fsStrikeOut];
end
else
begin
ACanvas.Canvas.Font.Color := clWindowText;
ACanvas.Canvas.Font.Style := [];
end;
end;
end;
procedure TfrObra.ActivarInforme(Panel: Integer);
var
Nodo : TcxTreeListNode;
begin
Nodo := tlApartadosObra.FindNodeByText(IntToStr(Panel), ColPanel);
if Nodo <> Nil then
Nodo.Focused := True;
end;
end.