git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
396 lines
12 KiB
ObjectPascal
396 lines
12 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-2004
|
|
Versión actual: 1.0.0
|
|
Fecha versión actual: 08-06-2004
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
===============================================================================
|
|
}
|
|
|
|
unit Obras;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
Grids, DBGrids, ComCtrls, RdxBotones, ToolWin, ExtCtrls,
|
|
Menus, am2000menuitem, am2000popupmenu, am2000, Db, DBTables,
|
|
RXDBCtrl, RdxPaneles, RdxBarras, TablaClientes,
|
|
RdxDBFrame, RdxFrameObras, RdxFrame, cxStyles, cxCustomData, cxGraphics,
|
|
cxFilter, cxData, cxEdit, cxDBData, cxGridTableView,
|
|
cxGridCustomTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls,
|
|
cxGridCustomView, cxGrid, Configuracion, StdCtrls, Buttons,
|
|
AdvPanel, cxContainer, cxTextEdit,
|
|
cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit,
|
|
cxDBLookupComboBox, ActnList, am2000utils, cxDataStorage, cxDBEdit,
|
|
cxSplitter, CalendarioPagos;
|
|
|
|
type
|
|
TfrObras = class(TRdxFrameObras)
|
|
dsObras: TDataSource;
|
|
brSeleccion: TRdxBarraInferior;
|
|
bSeleccionar: TRdxBoton;
|
|
bCancelar: TRdxBoton;
|
|
BarraClientes: TRdxBarraSuperior;
|
|
bAnadir: TRdxBotonSuperior;
|
|
bEliminar: TRdxBotonSuperior;
|
|
gridObrasDBTableView1: TcxGridDBTableView;
|
|
gridObrasLevel1: TcxGridLevel;
|
|
gridObras: TcxGrid;
|
|
pnlCuerpo: TPanel;
|
|
Acciones: TActionList;
|
|
actAnadir: TAction;
|
|
actModificar: TAction;
|
|
actEliminar: TAction;
|
|
actConsultar: TAction;
|
|
actSeleccionar: TAction;
|
|
actCancelar: TAction;
|
|
actImprimir: TAction;
|
|
imgSombra: TImage;
|
|
pnlExtra: TRdxBarraSuperior;
|
|
pnlCuerpo2: TRdxPanel;
|
|
bRefrescar: TRdxBoton;
|
|
actConsultarCobros: TAction;
|
|
pnlBusqueda: TPanel;
|
|
Buscar: TcxTextEdit;
|
|
bLimpiar: TRdxBoton;
|
|
eNombre: TLabel;
|
|
actAbrirObra: TAction;
|
|
actCerrarObra: TAction;
|
|
RdxBoton1: TRdxBoton;
|
|
RdxBoton2: TRdxBoton;
|
|
bImprimir: TRdxBotonSuperior;
|
|
pnlObra: TPanel;
|
|
cxSplitter1: TcxSplitter;
|
|
RdxBotonSuperior1: TRdxBotonSuperior;
|
|
actVistaPrevia: TAction;
|
|
procedure cxLookupComboBox1PropertiesEditValueChanged(Sender: TObject);
|
|
procedure actSeleccionarExecute(Sender: TObject);
|
|
procedure actCancelarExecute(Sender: TObject);
|
|
procedure actRefrescarDatosExecute(Sender: TObject);
|
|
procedure Edit1Change(Sender: TObject);
|
|
procedure bLimpiarClick(Sender: TObject);
|
|
procedure RdxFrameObrasShow(Sender: TObject);
|
|
|
|
procedure actAnadirExecute(Sender: TObject);
|
|
procedure actEliminarExecute(Sender: TObject);
|
|
procedure actImprimirExecute(Sender: TObject);
|
|
procedure gridObrasDBTableView1DblClick(Sender: TObject);
|
|
procedure actAbrirObraExecute(Sender: TObject);
|
|
procedure actCerrarObraExecute(Sender: TObject);
|
|
procedure gridObrasDBTableView1CustomDrawCell(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
|
procedure actCerrarObraUpdate(Sender: TObject);
|
|
procedure actAbrirObraUpdate(Sender: TObject);
|
|
procedure gridObrasDBTableView1FocusedRecordChanged(
|
|
Sender: TcxCustomGridTableView; APrevFocusedRecord,
|
|
AFocusedRecord: TcxCustomGridRecord;
|
|
ANewItemRecordFocusingChanged: Boolean);
|
|
procedure actImprimirUpdate(Sender: TObject);
|
|
procedure actEliminarUpdate(Sender: TObject);
|
|
procedure actVistaPreviaExecute(Sender: TObject);
|
|
private
|
|
FCodigoContrato : Variant;
|
|
FFrameObra : TRdxFrameObras;
|
|
procedure ActualizarBotones;
|
|
protected
|
|
procedure BuscarObra; override;
|
|
procedure FreeContenido; override;
|
|
procedure SetContenido (NuevoFrame : TRdxFrame); override;
|
|
procedure VerModal; override;
|
|
public
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
published
|
|
property TablaObras;
|
|
property Entidad;
|
|
end;
|
|
|
|
var
|
|
frObras: TfrObras;
|
|
|
|
implementation
|
|
{$R *.DFM}
|
|
uses
|
|
IBCustomDataSet, BaseDatos, Entidades, Cliente, Variants, ListadoClientes,
|
|
ListadoPagosCliente, TablaFacturasCliente, TablaPagosCliente, Mensajes, Literales,
|
|
TablaObras, RdxFrameContratos, ContratosClientes, strFunc, CerrarObra, Constantes;
|
|
|
|
constructor TfrObras.Create (AOwner : TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
FCodigoContrato := Null;
|
|
Entidad := entObraCliente;
|
|
|
|
BaseDatos := dmBaseDatos.BD;
|
|
Transaccion := dmBaseDatos.Transaccion;
|
|
TablaObras := TIBDataSet.Create(Self);
|
|
dsObras.DataSet := TablaObras;
|
|
|
|
with TablaObras do
|
|
begin
|
|
DisableControls;
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
SelectSQL.Assign(dmTablaObras.sqlGrid);
|
|
Prepare;
|
|
Open;
|
|
ActualizarBotones;
|
|
EnableControls;
|
|
end;
|
|
|
|
dmTablaObras.InicializarGridObras(gridObrasDBTableView1);
|
|
gridObrasDBTableView1.Controller.GoToFirst;
|
|
FCodigoObra := TablaObras.fieldbyname('CODIGOCONTRATO').AsString;
|
|
|
|
gridObras.Height := (pnlCuerpo.Height - pnlBusqueda.Height - cxSplitter1.Height) div 2;
|
|
FFrameObra := TfrObra2.Create(Self);
|
|
FFrameObra.Parent := pnlObra;
|
|
FFrameObra.CodigoObra := CodigoObra;
|
|
end;
|
|
|
|
procedure TfrObras.BuscarObra;
|
|
begin
|
|
with TablaObras do
|
|
begin
|
|
DisableControls;
|
|
Close;
|
|
Open;
|
|
ActualizarBotones;
|
|
EnableControls;
|
|
if not Locate('CODIGOCONTRATO', CodigoObra, []) then
|
|
gridObrasDBTableView1.Controller.GoToFirst
|
|
else
|
|
gridObrasDBTableView1.Controller.TopRowIndex := gridObrasDBTableView1.Controller.FocusedRowIndex;
|
|
FFrameObra.CodigoObra := CodigoObra;
|
|
end;
|
|
end;
|
|
|
|
destructor TfrObras.Destroy;
|
|
begin
|
|
FFrameObra.CloseFrame;
|
|
FreeAndNil(FFrameObra);
|
|
|
|
TablaObras.Close;
|
|
TablaObras.Unprepare;
|
|
TablaObras.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrObras.FreeContenido;
|
|
begin
|
|
if (ContenidoModal is TRdxFrameContratos) then
|
|
FCodigoContrato := (ContenidoModal as TRdxFrameContratos).CodigoContrato;
|
|
|
|
if (Contenido is TRdxFrameObras) then
|
|
CodigoObra := (Contenido as TRdxFrameObras).CodigoObra;
|
|
|
|
inherited FreeContenido;
|
|
gridObras.SetFocus;
|
|
end;
|
|
|
|
procedure TfrObras.ActualizarBotones;
|
|
begin
|
|
if BaseDatos.IsReadOnly then
|
|
begin
|
|
actAnadir.Enabled := False;
|
|
actModificar.Enabled := False;
|
|
actEliminar.Enabled := False;
|
|
actConsultar.Enabled := True;
|
|
actImprimir.Enabled := True;
|
|
Exit;
|
|
end;
|
|
|
|
if TablaObras.RecordCount = 0 then
|
|
begin
|
|
actAnadir.Enabled := True;
|
|
actModificar.Enabled := False;
|
|
actEliminar.Enabled := False;
|
|
actConsultar.Enabled := False;
|
|
actImprimir.Enabled := False;
|
|
end
|
|
else begin
|
|
actAnadir.Enabled := True;
|
|
actModificar.Enabled := True;
|
|
actEliminar.Enabled := True;
|
|
actConsultar.Enabled := True;
|
|
actImprimir.Enabled := True;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrObras.cxLookupComboBox1PropertiesEditValueChanged(
|
|
Sender: TObject);
|
|
begin
|
|
TablaObras.Locate('CODIGOCONTRATO', (Sender as TcxLookupComboBox).EditValue, [loCaseInsensitive]);
|
|
end;
|
|
|
|
procedure TfrObras.actAnadirExecute(Sender: TObject);
|
|
begin
|
|
// Mostrar la lista de contratos sin obras abiertas
|
|
CaptionModal := msgObrElijaContrago;
|
|
ContenidoModal := TfrContratosClientes.Create(Self);
|
|
|
|
if (not EsCadenaVacia(FCodigoContrato)) then
|
|
if dmTablaObras.CrearObra(FCodigoContrato) then
|
|
begin
|
|
Commit;
|
|
VerMensajeFmt(msgObrAnadida,[FCodigoContrato]);
|
|
end;
|
|
|
|
CodigoObra := FCodigoContrato;
|
|
end;
|
|
|
|
procedure TfrObras.actEliminarExecute(Sender: TObject);
|
|
begin
|
|
(FFrameObra as TfrObra2).EliminarDatos;
|
|
BuscarObra;
|
|
end;
|
|
|
|
procedure TfrObras.gridObrasDBTableView1DblClick(Sender: TObject);
|
|
begin
|
|
{ if Modo = Seleccionar then
|
|
actSeleccionar.Execute
|
|
else
|
|
actModificar.Execute;}
|
|
end;
|
|
|
|
procedure TfrObras.actSeleccionarExecute(Sender: TObject);
|
|
begin
|
|
CodigoObra := TablaObras.FieldByName('CODIGOCONTRATO').AsString;
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrObras.actCancelarExecute(Sender: TObject);
|
|
begin
|
|
FCodigoObra := NULL;
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrObras.actImprimirExecute(Sender: TObject);
|
|
begin
|
|
(FFrameObra as TfrObra2).Imprimir;
|
|
end;
|
|
|
|
procedure TfrObras.actRefrescarDatosExecute(Sender: TObject);
|
|
begin
|
|
FCodigoObra := TablaObras.FieldByName('CODIGOCONTRATO').AsString;
|
|
BuscarObra;
|
|
end;
|
|
|
|
procedure TfrObras.SetContenido(NuevoFrame: TRdxFrame);
|
|
begin
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrObras.Edit1Change(Sender: TObject);
|
|
begin
|
|
FiltrarGrid(gridObras, Buscar.Text);
|
|
end;
|
|
|
|
procedure TfrObras.bLimpiarClick(Sender: TObject);
|
|
begin
|
|
Buscar.Text := '';
|
|
end;
|
|
|
|
procedure TfrObras.RdxFrameObrasShow(Sender: TObject);
|
|
begin
|
|
gridObras.SetFocus;
|
|
end;
|
|
|
|
procedure TfrObras.VerModal;
|
|
begin
|
|
if (ContenidoModal is TRdxFrameContratos) then
|
|
(ContenidoModal as TRdxFrameContratos).Modo := AbrirObra;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrObras.actAbrirObraExecute(Sender: TObject);
|
|
begin
|
|
if dmTablaObras.AbrirObra(TablaObras.FieldByName('CODIGOCONTRATO').AsString) then
|
|
Commit;
|
|
//Refrescamos
|
|
CodigoObra := TablaObras.FieldByName('CODIGOCONTRATO').AsString;
|
|
end;
|
|
|
|
procedure TfrObras.actCerrarObraExecute(Sender: TObject);
|
|
var
|
|
fCerrarObra : TfrCerrarObra;
|
|
begin
|
|
fCerrarObra := TfrCerrarObra.Create(Self);
|
|
fCerrarObra.CodigoObra := TablaObras.FieldByName('CODIGOCONTRATO').AsString;
|
|
fCerrarObra.ShowModal;
|
|
CodigoObra := TablaObras.FieldByName('CODIGOCONTRATO').AsString;
|
|
end;
|
|
|
|
procedure TfrObras.gridObrasDBTableView1CustomDrawCell(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
|
var
|
|
IndiceCol : Integer;
|
|
begin
|
|
if not AViewInfo.Selected then
|
|
begin
|
|
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('FECHAFIN').Index;
|
|
if not esCadenaVacia(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) then
|
|
ACanvas.Canvas.Font.Color := clGray;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrObras.actCerrarObraUpdate(Sender: TObject);
|
|
begin
|
|
(Sender as TAction).Enabled := esCadenaVacia(TablaObras.FieldByName('FECHAFIN').AsString);
|
|
end;
|
|
|
|
procedure TfrObras.actAbrirObraUpdate(Sender: TObject);
|
|
begin
|
|
(Sender as TAction).Enabled := not esCadenaVacia(TablaObras.FieldByName('FECHAFIN').AsString);
|
|
end;
|
|
|
|
procedure TfrObras.gridObrasDBTableView1FocusedRecordChanged(
|
|
Sender: TcxCustomGridTableView; APrevFocusedRecord,
|
|
AFocusedRecord: TcxCustomGridRecord;
|
|
ANewItemRecordFocusingChanged: Boolean);
|
|
begin
|
|
if Assigned(FFrameObra) then
|
|
begin
|
|
FFrameObra.CodigoObra := TablaObras.FieldByName('CODIGOCONTRATO').AsString;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrObras.actImprimirUpdate(Sender: TObject);
|
|
begin
|
|
(Sender as TAction).Enabled := (TablaObras.RecordCount > 0);
|
|
end;
|
|
|
|
procedure TfrObras.actEliminarUpdate(Sender: TObject);
|
|
begin
|
|
(Sender as TAction).Enabled := (TablaObras.RecordCount > 0);
|
|
pnlObra.Visible := (Sender as TAction).Enabled;
|
|
if pnlObra.Visible then
|
|
pnlObra.Height := (Self.Height div 2)
|
|
else
|
|
pnlObra.Height := 0;
|
|
end;
|
|
|
|
procedure TfrObras.actVistaPreviaExecute(Sender: TObject);
|
|
begin
|
|
(FFrameObra as TfrObra2).VistaPrevia;
|
|
end;
|
|
|
|
end.
|