diff --git a/Source/Modulos/Contabilidad ejercicios/Controller/uEjerciciosController.pas b/Source/Modulos/Contabilidad ejercicios/Controller/uEjerciciosController.pas
index df3adb8f..a68ae403 100644
--- a/Source/Modulos/Contabilidad ejercicios/Controller/uEjerciciosController.pas
+++ b/Source/Modulos/Contabilidad ejercicios/Controller/uEjerciciosController.pas
@@ -14,8 +14,9 @@ type
procedure VerTodos(AEjercicios: IBizEjercicio);
procedure Ver(AEjercicio: IBizEjercicio);
procedure Anadir(AEjercicio : IBizEjercicio);
- function Eliminar(AEjercicio : IBizEjercicio): Boolean;
+ function Eliminar(AEjercicio : IBizEjercicio): Boolean;
function Guardar(AEjercicio : IBizEjercicio): Boolean;
+ function GenerarPCG(IdEjercicioCopia, IdEjercicio: Integer): Boolean;
procedure DescartarCambios(AEjercicio : IBizEjercicio);
function Localizar(AEjercicios: IBizEjercicio; ADescripcion:String): Boolean;
function DarListaEjercicios: TStringList;
@@ -46,6 +47,7 @@ type
function Buscar(ID: Integer): IBizEjercicio;
procedure VerTodos(AEjercicios: IBizEjercicio);
procedure Ver(AEjercicio: IBizEjercicio);
+ function GenerarPCG(IdEjercicioCopia, IdEjercicio: Integer): Boolean;
function Localizar(AEjercicios: IBizEjercicio; ADescripcion:String): Boolean;
function DarListaEjercicios: TStringList;
end;
@@ -56,7 +58,7 @@ uses
cxControls, DB, uEditorRegistryUtils, schEjerciciosClient_Intf,
uIEditorEjercicios, uIEditorEjercicio, uDataModuleEjercicios,
uDAInterfaces, uDataTableUtils, uDialogUtils, uFactuGES_App,
- uDateUtils, uROTypes, DateUtils, Controls, Windows;
+ uDateUtils, uROTypes, DateUtils, Controls, Windows, Dialogs;
@@ -167,6 +169,10 @@ begin
if (AEjercicio.DataTable.State in dsEditModes) then
AEjercicio.DataTable.Post;
+ if (AEjercicio.DataTable.RecordCount = 1)
+ and (AEjercicio.ACTIVO = 0) then
+ raise Exception.Create('Debe existir un ejercicio activo.');
+
if Length(AEjercicio.NOMBRE) = 0 then
raise Exception.Create('Debe indicar un nombre para este ejercicio.');
@@ -228,6 +234,8 @@ begin
if (AEjercicio.State in dsEditModes) then
AEjercicio.Cancel;
+ //ATENCIÓN!! Debe haber claves foraneas en las tablas de CONT_EPIGRAFES, CONT_CUENTAS, CONT_SUBCUENTAS
+ //con el fin de que al borrar un ejercicio se borren todos sus datos correspondientes
AEjercicio.Delete;
AEjercicio.DataTable.ApplyUpdates;
HideHourglassCursor;
@@ -263,6 +271,16 @@ begin
//
end;
+function TEjerciciosController.GenerarPCG(IdEjercicioCopia, IdEjercicio: Integer): Boolean;
+begin
+ ShowHourglassCursor;
+ try
+ Result := FDataModule.GenerarPGC(IdEjercicioCopia, IdEjercicio);
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
function TEjerciciosController.Guardar(AEjercicio: IBizEjercicio): Boolean;
begin
Result := False;
diff --git a/Source/Modulos/Contabilidad ejercicios/Data/uDataModuleEjercicios.dfm b/Source/Modulos/Contabilidad ejercicios/Data/uDataModuleEjercicios.dfm
index 33ea566c..e1fe0821 100644
--- a/Source/Modulos/Contabilidad ejercicios/Data/uDataModuleEjercicios.dfm
+++ b/Source/Modulos/Contabilidad ejercicios/Data/uDataModuleEjercicios.dfm
@@ -90,6 +90,12 @@ inherited DataModuleEjercicios: TDataModuleEjercicios
DataType = datInteger
DisplayLabel = 'Ejercicios_ID_ASIENTO_CIERRE'
DictionaryEntry = 'Ejercicios_ID_ASIENTO_CIERRE'
+ end
+ item
+ Name = 'ACTIVO'
+ DataType = datSmallInt
+ DisplayLabel = 'Ejercicios_ACTIVO'
+ DictionaryEntry = 'Ejercicios_ACTIVO'
end>
Params = <>
StreamingOptions = [soDisableEventsWhileStreaming]
diff --git a/Source/Modulos/Contabilidad ejercicios/Data/uDataModuleEjercicios.pas b/Source/Modulos/Contabilidad ejercicios/Data/uDataModuleEjercicios.pas
index b147b311..f87491fb 100644
--- a/Source/Modulos/Contabilidad ejercicios/Data/uDataModuleEjercicios.pas
+++ b/Source/Modulos/Contabilidad ejercicios/Data/uDataModuleEjercicios.pas
@@ -19,6 +19,7 @@ type
procedure DAClientDataModuleCreate(Sender: TObject);
public
function GetItems: IBizEjercicio;
+ function GenerarPGC(const IdEjercicioCopia: Integer; const IdEjercicio: Integer): Boolean;
end;
implementation
@@ -37,6 +38,11 @@ begin
RORemoteService.Message := dmConexion.Message;
end;
+function TDataModuleEjercicios.GenerarPGC(const IdEjercicioCopia, IdEjercicio: Integer): Boolean;
+begin
+ Result := (RORemoteService as IsrvEjercicios).GenerarPGC(IdEjercicioCopia, IdEjercicio);
+end;
+
function TDataModuleEjercicios.GetItems: IBizEjercicio;
var
AContabilidadEjercicio : TDAMemDataTable;
diff --git a/Source/Modulos/Contabilidad ejercicios/Ejercicios_Group.groupproj b/Source/Modulos/Contabilidad ejercicios/Ejercicios_Group.groupproj
index 3a59410c..0205269c 100644
--- a/Source/Modulos/Contabilidad ejercicios/Ejercicios_Group.groupproj
+++ b/Source/Modulos/Contabilidad ejercicios/Ejercicios_Group.groupproj
@@ -9,6 +9,7 @@
+
@@ -39,15 +40,6 @@
-
-
-
-
-
-
-
-
-
@@ -57,6 +49,15 @@
+
+
+
+
+
+
+
+
+
@@ -111,14 +112,23 @@
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/Source/Modulos/Contabilidad ejercicios/Model/Data/uIDataModuleEjercicios.pas b/Source/Modulos/Contabilidad ejercicios/Model/Data/uIDataModuleEjercicios.pas
index b8ede895..21d3859f 100644
--- a/Source/Modulos/Contabilidad ejercicios/Model/Data/uIDataModuleEjercicios.pas
+++ b/Source/Modulos/Contabilidad ejercicios/Model/Data/uIDataModuleEjercicios.pas
@@ -9,6 +9,7 @@ type
IDataModuleEjercicios = interface(IInterface)
['{E32DF99C-8AA1-42E5-84C0-198205BD2A90}']
function GetItems: IBizEjercicio;
+ function GenerarPGC(const IdEjercicioCopia: Integer; const IdEjercicio: Integer): Boolean;
end;
implementation
diff --git a/Source/Modulos/Contabilidad ejercicios/Model/schEjerciciosClient_Intf.pas b/Source/Modulos/Contabilidad ejercicios/Model/schEjerciciosClient_Intf.pas
index 0774393d..083293a0 100644
--- a/Source/Modulos/Contabilidad ejercicios/Model/schEjerciciosClient_Intf.pas
+++ b/Source/Modulos/Contabilidad ejercicios/Model/schEjerciciosClient_Intf.pas
@@ -3,13 +3,13 @@ unit schEjerciciosClient_Intf;
interface
uses
- Classes, DB, schBase_Intf, SysUtils, uROClasses, uDADataTable, FmtBCD, uROXMLIntf;
+ Classes, DB, SysUtils, uROClasses, uDADataTable, FmtBCD, uROXMLIntf;
const
{ Data table rules ids
Feel free to change them to something more human readable
but make sure they are unique in the context of your application }
- RID_Ejercicios = '{AAFD894C-D2DD-4A0B-8B34-3A56CEDF05A4}';
+ RID_Ejercicios = '{773C8468-2B44-4968-A704-E0A34C02F5CA}';
{ Data table names }
nme_Ejercicios = 'Ejercicios';
@@ -25,6 +25,7 @@ const
fld_EjerciciosID_ASIENTO_APERTURA = 'ID_ASIENTO_APERTURA';
fld_EjerciciosID_ASIENTO_PERYGAN = 'ID_ASIENTO_PERYGAN';
fld_EjerciciosID_ASIENTO_CIERRE = 'ID_ASIENTO_CIERRE';
+ fld_EjerciciosACTIVO = 'ACTIVO';
{ Ejercicios field indexes }
idx_EjerciciosID = 0;
@@ -37,11 +38,12 @@ const
idx_EjerciciosID_ASIENTO_APERTURA = 7;
idx_EjerciciosID_ASIENTO_PERYGAN = 8;
idx_EjerciciosID_ASIENTO_CIERRE = 9;
+ idx_EjerciciosACTIVO = 10;
type
{ IEjercicios }
IEjercicios = interface(IDAStronglyTypedDataTable)
- ['{2FF2B490-6E03-43F9-BC35-C7E2C02D900C}']
+ ['{911EC4DB-1692-4398-AAA2-3127E0B1239C}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -83,6 +85,10 @@ type
procedure SetID_ASIENTO_CIERREValue(const aValue: Integer);
function GetID_ASIENTO_CIERREIsNull: Boolean;
procedure SetID_ASIENTO_CIERREIsNull(const aValue: Boolean);
+ function GetACTIVOValue: SmallInt;
+ procedure SetACTIVOValue(const aValue: SmallInt);
+ function GetACTIVOIsNull: Boolean;
+ procedure SetACTIVOIsNull(const aValue: Boolean);
{ Properties }
@@ -106,10 +112,12 @@ type
property ID_ASIENTO_PERYGANIsNull: Boolean read GetID_ASIENTO_PERYGANIsNull write SetID_ASIENTO_PERYGANIsNull;
property ID_ASIENTO_CIERRE: Integer read GetID_ASIENTO_CIERREValue write SetID_ASIENTO_CIERREValue;
property ID_ASIENTO_CIERREIsNull: Boolean read GetID_ASIENTO_CIERREIsNull write SetID_ASIENTO_CIERREIsNull;
+ property ACTIVO: SmallInt read GetACTIVOValue write SetACTIVOValue;
+ property ACTIVOIsNull: Boolean read GetACTIVOIsNull write SetACTIVOIsNull;
end;
{ TEjerciciosDataTableRules }
- TEjerciciosDataTableRules = class(TIntfObjectDADataTableRules, IEjercicios)
+ TEjerciciosDataTableRules = class(TDADataTableRules, IEjercicios)
private
protected
{ Property getters and setters }
@@ -153,6 +161,10 @@ type
procedure SetID_ASIENTO_CIERREValue(const aValue: Integer); virtual;
function GetID_ASIENTO_CIERREIsNull: Boolean; virtual;
procedure SetID_ASIENTO_CIERREIsNull(const aValue: Boolean); virtual;
+ function GetACTIVOValue: SmallInt; virtual;
+ procedure SetACTIVOValue(const aValue: SmallInt); virtual;
+ function GetACTIVOIsNull: Boolean; virtual;
+ procedure SetACTIVOIsNull(const aValue: Boolean); virtual;
{ Properties }
property ID: Integer read GetIDValue write SetIDValue;
@@ -175,6 +187,8 @@ type
property ID_ASIENTO_PERYGANIsNull: Boolean read GetID_ASIENTO_PERYGANIsNull write SetID_ASIENTO_PERYGANIsNull;
property ID_ASIENTO_CIERRE: Integer read GetID_ASIENTO_CIERREValue write SetID_ASIENTO_CIERREValue;
property ID_ASIENTO_CIERREIsNull: Boolean read GetID_ASIENTO_CIERREIsNull write SetID_ASIENTO_CIERREIsNull;
+ property ACTIVO: SmallInt read GetACTIVOValue write SetACTIVOValue;
+ property ACTIVOIsNull: Boolean read GetACTIVOIsNull write SetACTIVOIsNull;
public
constructor Create(aDataTable: TDADataTable); override;
@@ -407,6 +421,27 @@ begin
DataTable.Fields[idx_EjerciciosID_ASIENTO_CIERRE].AsVariant := Null;
end;
+function TEjerciciosDataTableRules.GetACTIVOValue: SmallInt;
+begin
+ result := DataTable.Fields[idx_EjerciciosACTIVO].AsSmallInt;
+end;
+
+procedure TEjerciciosDataTableRules.SetACTIVOValue(const aValue: SmallInt);
+begin
+ DataTable.Fields[idx_EjerciciosACTIVO].AsSmallInt := aValue;
+end;
+
+function TEjerciciosDataTableRules.GetACTIVOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_EjerciciosACTIVO].IsNull;
+end;
+
+procedure TEjerciciosDataTableRules.SetACTIVOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_EjerciciosACTIVO].AsVariant := Null;
+end;
+
initialization
RegisterDataTableRules(RID_Ejercicios, TEjerciciosDataTableRules);
diff --git a/Source/Modulos/Contabilidad ejercicios/Model/schEjerciciosServer_Intf.pas b/Source/Modulos/Contabilidad ejercicios/Model/schEjerciciosServer_Intf.pas
index 138201ce..4cd11fe6 100644
--- a/Source/Modulos/Contabilidad ejercicios/Model/schEjerciciosServer_Intf.pas
+++ b/Source/Modulos/Contabilidad ejercicios/Model/schEjerciciosServer_Intf.pas
@@ -9,12 +9,12 @@ const
{ Delta rules ids
Feel free to change them to something more human readable
but make sure they are unique in the context of your application }
- RID_EjerciciosDelta = '{4E3D133D-FB17-4ACA-AC5A-D0512C58A233}';
+ RID_EjerciciosDelta = '{CDD1664B-E7FC-4A22-B77D-7FE7419A3314}';
type
{ IEjerciciosDelta }
IEjerciciosDelta = interface(IEjercicios)
- ['{4E3D133D-FB17-4ACA-AC5A-D0512C58A233}']
+ ['{CDD1664B-E7FC-4A22-B77D-7FE7419A3314}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer;
@@ -26,6 +26,7 @@ type
function GetOldID_ASIENTO_APERTURAValue : Integer;
function GetOldID_ASIENTO_PERYGANValue : Integer;
function GetOldID_ASIENTO_CIERREValue : Integer;
+ function GetOldACTIVOValue : SmallInt;
{ Properties }
property OldID : Integer read GetOldIDValue;
@@ -38,6 +39,7 @@ type
property OldID_ASIENTO_APERTURA : Integer read GetOldID_ASIENTO_APERTURAValue;
property OldID_ASIENTO_PERYGAN : Integer read GetOldID_ASIENTO_PERYGANValue;
property OldID_ASIENTO_CIERRE : Integer read GetOldID_ASIENTO_CIERREValue;
+ property OldACTIVO : SmallInt read GetOldACTIVOValue;
end;
{ TEjerciciosBusinessProcessorRules }
@@ -105,6 +107,12 @@ type
function GetOldID_ASIENTO_CIERREIsNull: Boolean; virtual;
procedure SetID_ASIENTO_CIERREValue(const aValue: Integer); virtual;
procedure SetID_ASIENTO_CIERREIsNull(const aValue: Boolean); virtual;
+ function GetACTIVOValue: SmallInt; virtual;
+ function GetACTIVOIsNull: Boolean; virtual;
+ function GetOldACTIVOValue: SmallInt; virtual;
+ function GetOldACTIVOIsNull: Boolean; virtual;
+ procedure SetACTIVOValue(const aValue: SmallInt); virtual;
+ procedure SetACTIVOIsNull(const aValue: Boolean); virtual;
{ Properties }
property ID : Integer read GetIDValue write SetIDValue;
@@ -147,6 +155,10 @@ type
property ID_ASIENTO_CIERREIsNull : Boolean read GetID_ASIENTO_CIERREIsNull write SetID_ASIENTO_CIERREIsNull;
property OldID_ASIENTO_CIERRE : Integer read GetOldID_ASIENTO_CIERREValue;
property OldID_ASIENTO_CIERREIsNull : Boolean read GetOldID_ASIENTO_CIERREIsNull;
+ property ACTIVO : SmallInt read GetACTIVOValue write SetACTIVOValue;
+ property ACTIVOIsNull : Boolean read GetACTIVOIsNull write SetACTIVOIsNull;
+ property OldACTIVO : SmallInt read GetOldACTIVOValue;
+ property OldACTIVOIsNull : Boolean read GetOldACTIVOIsNull;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
@@ -480,6 +492,37 @@ begin
BusinessProcessor.CurrentChange.NewValueByName[fld_EjerciciosID_ASIENTO_CIERRE] := Null;
end;
+function TEjerciciosBusinessProcessorRules.GetACTIVOValue: SmallInt;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_EjerciciosACTIVO];
+end;
+
+function TEjerciciosBusinessProcessorRules.GetACTIVOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_EjerciciosACTIVO]);
+end;
+
+function TEjerciciosBusinessProcessorRules.GetOldACTIVOValue: SmallInt;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_EjerciciosACTIVO];
+end;
+
+function TEjerciciosBusinessProcessorRules.GetOldACTIVOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_EjerciciosACTIVO]);
+end;
+
+procedure TEjerciciosBusinessProcessorRules.SetACTIVOValue(const aValue: SmallInt);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EjerciciosACTIVO] := aValue;
+end;
+
+procedure TEjerciciosBusinessProcessorRules.SetACTIVOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_EjerciciosACTIVO] := Null;
+end;
+
initialization
RegisterBusinessProcessorRules(RID_EjerciciosDelta, TEjerciciosBusinessProcessorRules);
diff --git a/Source/Modulos/Contabilidad ejercicios/Model/uBizEjercicios.pas b/Source/Modulos/Contabilidad ejercicios/Model/uBizEjercicios.pas
index ec35e9f0..adb0599f 100644
--- a/Source/Modulos/Contabilidad ejercicios/Model/uBizEjercicios.pas
+++ b/Source/Modulos/Contabilidad ejercicios/Model/uBizEjercicios.pas
@@ -37,6 +37,7 @@ end;
procedure TBizEjercicio.IniciarValoresEjercicioNueva;
begin
ID_EMPRESA := AppFactuGES.EmpresaActiva.ID;
+ ACTIVO := 1;
end;
procedure TBizEjercicio.OnNewRecord(Sender: TDADataTable);
diff --git a/Source/Modulos/Contabilidad ejercicios/Model/uBizEjerciciosServer.pas b/Source/Modulos/Contabilidad ejercicios/Model/uBizEjerciciosServer.pas
new file mode 100644
index 00000000..b80b68d9
--- /dev/null
+++ b/Source/Modulos/Contabilidad ejercicios/Model/uBizEjerciciosServer.pas
@@ -0,0 +1,57 @@
+unit uBizEjerciciosServer;
+
+interface
+
+uses
+ uDAInterfaces, uDADelta, uDABusinessProcessor,
+ schEjerciciosServer_Intf;
+
+const
+ BIZ_SERVER_EJERCICIOS = 'Server.Ejercicios';
+
+type
+ TBizEjerciciosServer = class(TEjerciciosBusinessProcessorRules)
+ protected
+ procedure BeforeProcessDelta(Sender: TDABusinessProcessor; const aDelta: IDADelta); override;
+ end;
+
+implementation
+
+uses
+ Variants, uDAClasses, uReferenciasUtils, uBusinessUtils, uROClasses, uDataModuleServer,
+ schEjerciciosClient_Intf;
+
+{ TBizEjerciciosServer }
+
+procedure TBizEjerciciosServer.BeforeProcessDelta(Sender: TDABusinessProcessor; const aDelta: IDADelta);
+var
+ ASchema : TDASchema;
+ ACurrentConn : IDAConnection;
+ Empresa : Variant;
+
+begin
+ inherited;
+ case Sender.CurrentChange.ChangeType of
+ ctInsert, ctUpdate: begin
+ //Si el ejercicio es activo debemos poner los demas ejercicios de la empresa a no activos
+ if (Sender.CurrentChange.NewValueByName[fld_EjerciciosACTIVO] = 1) then
+ begin
+ ASchema := BusinessProcessor.Schema;
+ ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
+
+ try
+ //Siempre va a estar rellena
+ Empresa := Sender.CurrentChange.NewValueByName[fld_EjerciciosID_EMPRESA];
+ ASchema.NewCommand(ACurrentConn, 'SetEjerciciosNoActivos', ['ID_EMPRESA'], [Empresa])
+ except
+ RaiseError('Error al desactivar los ejercicios de la empresa');
+ end;
+ end;
+ end;
+ end;
+end;
+
+initialization
+ RegisterBusinessProcessorRules(BIZ_SERVER_EJERCICIOS, TBizEjerciciosServer);
+
+end.
diff --git a/Source/Modulos/Contabilidad ejercicios/Servidor/srvEjercicios_Impl.dfm b/Source/Modulos/Contabilidad ejercicios/Servidor/srvEjercicios_Impl.dfm
index 018e1074..f362cbf2 100644
--- a/Source/Modulos/Contabilidad ejercicios/Servidor/srvEjercicios_Impl.dfm
+++ b/Source/Modulos/Contabilidad ejercicios/Servidor/srvEjercicios_Impl.dfm
@@ -7,7 +7,7 @@ object srvEjercicios: TsrvEjercicios
ExportedDataTables = <>
BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection
Height = 181
- Width = 282
+ Width = 350
object Diagrams: TDADiagrams
Left = 150
Top = 90
@@ -68,6 +68,11 @@ object srvEjercicios: TsrvEjercicios
item
Name = 'Ejercicios_ID_EMPRESA'
DataType = datInteger
+ end
+ item
+ Name = 'Ejercicios_ACTIVO'
+ DataType = datSmallInt
+ ServerAutoRefresh = True
end>
Left = 150
Top = 24
@@ -124,6 +129,10 @@ object srvEjercicios: TsrvEjercicios
item
DatasetField = 'ID_ASIENTO_CIERRE'
TableField = 'ID_ASIENTO_CIERRE'
+ end
+ item
+ DatasetField = 'ACTIVO'
+ TableField = 'ACTIVO'
end>
end>
Name = 'Ejercicios'
@@ -182,11 +191,58 @@ object srvEjercicios: TsrvEjercicios
Name = 'ID_ASIENTO_CIERRE'
DataType = datInteger
DictionaryEntry = 'Ejercicios_ID_ASIENTO_CIERRE'
+ end
+ item
+ Name = 'ACTIVO'
+ DataType = datSmallInt
+ DictionaryEntry = 'Ejercicios_ACTIVO'
end>
end>
JoinDataTables = <>
UnionDataTables = <>
- Commands = <>
+ Commands = <
+ item
+ Params = <
+ item
+ Name = 'id_empresa'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL = 'execute procedure proc_set_ejercicios_noactivos :id_empresa'#10
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'SetEjerciciosNoActivos'
+ end
+ item
+ Params = <
+ item
+ Name = 'id_ejercicio_copia'
+ Value = ''
+ end
+ item
+ Name = 'id_ejercicio'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'execute procedure proc_new_pgc :id_ejercicio_copia, :id_ejercici' +
+ 'o'#10
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'GenerarPGC'
+ end>
RelationShips = <>
UpdateRules = <>
Version = 0
@@ -197,4 +253,12 @@ object srvEjercicios: TsrvEjercicios
Left = 48
Top = 88
end
+ object bpEjercicios: TDABusinessProcessor
+ Schema = schEjercicios
+ ReferencedDataset = 'Ejercicios'
+ ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete, poAutoGenerateRefreshDataset, poPrepareCommands]
+ UpdateMode = updWhereKeyOnly
+ Left = 248
+ Top = 24
+ end
end
diff --git a/Source/Modulos/Contabilidad ejercicios/Servidor/srvEjercicios_Impl.pas b/Source/Modulos/Contabilidad ejercicios/Servidor/srvEjercicios_Impl.pas
index 3aadff46..96e8265c 100644
--- a/Source/Modulos/Contabilidad ejercicios/Servidor/srvEjercicios_Impl.pas
+++ b/Source/Modulos/Contabilidad ejercicios/Servidor/srvEjercicios_Impl.pas
@@ -23,20 +23,22 @@ type
TsrvEjercicios = class(TDataAbstractService, IsrvEjercicios)
Diagrams: TDADiagrams;
Bin2DataStreamer: TDABin2DataStreamer;
+ bpEjercicios: TDABusinessProcessor;
schEjercicios: TDASchema;
DataDictionary: TDADataDictionary;
procedure DARemoteServiceCreate(Sender: TObject);
- procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject;
- var aConnectionName: string);
- private
+ procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; var aConnectionName: string);
+
protected
+ function GenerarPGC(const ID_EJERCICIO_COPIA: Integer; const ID_EJERCICIO: Integer): Boolean;
+
end;
implementation
{$R *.dfm}
uses
- {Generated:} FactuGES_Invk, uDataModuleServer,
+ {Generated:} FactuGES_Invk, uBizEjerciciosServer, uDataModuleServer, uROClasses,
uDatabaseUtils;
procedure Create_srvEjercicios(out anInstance : IUnknown);
@@ -48,6 +50,7 @@ end;
procedure TsrvEjercicios.DARemoteServiceCreate(Sender: TObject);
begin
SessionManager := dmServer.SessionManager;
+ bpEjercicios.BusinessRulesID := BIZ_SERVER_EJERCICIOS;
end;
procedure TsrvEjercicios.DataAbstractServiceBeforeAcquireConnection(
@@ -56,6 +59,21 @@ begin
ConnectionName := dmServer.ConnectionName;
end;
+function TsrvEjercicios.GenerarPGC(const ID_EJERCICIO_COPIA, ID_EJERCICIO: Integer): Boolean;
+begin
+ Result := False;
+
+ try
+ Connection.BeginTransaction;
+ schEjercicios.NewCommand(Connection, 'GenerarPGC', ['ID_EJERCICIO_COPIA', 'ID_EJERCICIO'], [ID_EJERCICIO_COPIA, ID_EJERCICIO]);
+ Connection.CommitTransaction;
+ Result := True;
+ except
+ Connection.RollbackTransaction;
+ RaiseError('Error al generar el PGC');
+ end;
+end;
+
initialization
TROClassFactory.Create('srvEjercicios', Create_srvEjercicios, TsrvEjercicios_Invoker);
diff --git a/Source/Modulos/Contabilidad ejercicios/Views/uEditorEjercicio.dfm b/Source/Modulos/Contabilidad ejercicios/Views/uEditorEjercicio.dfm
index 5fdec1e4..9883458b 100644
--- a/Source/Modulos/Contabilidad ejercicios/Views/uEditorEjercicio.dfm
+++ b/Source/Modulos/Contabilidad ejercicios/Views/uEditorEjercicio.dfm
@@ -141,4 +141,318 @@ inherited fEditorEjercicio: TfEditorEjercicio
GroupOptions.CaptionOptions.UseDefaultFont = False
end
end
+ object JsNuevoEjercicioDialog: TJSDialog
+ DialogOptions = [doCommandLinks, doModal]
+ Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Glyph.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14
+ 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD
+ 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2
+ 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD
+ B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010
+ 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3
+ 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045
+ A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8
+ 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281
+ 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87
+ A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F
+ 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B
+ EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F
+ 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8
+ 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10
+ 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8
+ CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF
+ 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32
+ F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF
+ 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165
+ 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF
+ 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2
+ ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312
+ FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312
+ 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA
+ 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
+ Instruction.Icon = tdiCustom
+ CustomButtons = <
+ item
+ Caption = 'Crear nuevo Plan General Contable'
+ Value = 100
+ Default = True
+ end
+ item
+ Caption =
+ 'Seleccionar un ejercicio anterior y copiar su Plan General Conta' +
+ 'ble'
+ Value = 200
+ end
+ item
+ Caption = 'No crear Plan General Contable'
+ Value = 300
+ end>
+ ButtonBar.Buttons = [cbCancel]
+ MainIcon = tdiCustom
+ Title = 'FactuGES'
+ Position = dpMainFormCenter
+ Icon.Data = {
+ 0000010003002020100001000400E8020000360000002020000001000800A808
+ 00001E0300002020000001002000A8100000C60B000028000000200000004000
+ 0000010004000000000000020000000000000000000000000000000000000000
+ 000000008000008000000080800080000000800080008080000080808000C0C0
+ C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000
+ 0000000000000000000000000000000008777777777777777777777700000000
+ 0877767777677776777767760000000008F88888888888888888888700000000
+ 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000
+ 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000
+ 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000
+ 08F8676767677677677658E50000000008FF8888888887878787888700000000
+ 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000
+ 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000
+ 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000
+ 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7
+ 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087
+ B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB
+ B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008
+ B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B
+ B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0
+ 08BB883B78888788787700000000000000B9000000000000000000000000FFFF
+ FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000
+ 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800
+ 0000200000004000000001000800000000000004000000000000000000000001
+ 00000001000000000000694731007C5D49007E604C0081635000826451008567
+ 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72
+ 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84
+ 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A
+ 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A
+ E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC
+ FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6
+ F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE
+ C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD
+ E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC
+ F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8
+ F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE
+ FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8
+ F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1
+ F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A
+ 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4
+ 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8
+ 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF
+ A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC
+ 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5
+ AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4
+ 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6
+ BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8
+ B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7
+ F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9
+ C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1
+ C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA
+ D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2
+ DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3
+ FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE
+ EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4
+ F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D
+ 0D0D0000000000000000009C9C19191919191919191919191919191919191919
+ 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0
+ 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB
+ 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0
+ 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0
+ 9007000000000000000000AFF0D5017783838386868686869099909999907BB0
+ 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA
+ 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0
+ 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3
+ 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB
+ 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2
+ 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2
+ 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5
+ 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5
+ 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2
+ 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2
+ 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5
+ 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2
+ 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5
+ 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA
+ 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5
+ 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675
+ 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101
+ 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0
+ A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB
+ 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514
+ 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F
+ 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300
+ 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000
+ 0000000000000000000000003227000000000000000000000000000000000000
+ 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800
+ 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000
+ 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800
+ 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007067
+ 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355
+ 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB
+ A070000000000000000000000000000000000000000000000000000000005E54
+ 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A
+ 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1
+ 967F000000000000000000000000000000000000000000000000000000006055
+ 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7
+ BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC
+ B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006056
+ 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE
+ D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB
+ C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006155
+ 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0
+ DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD
+ C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006157
+ 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3
+ CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4
+ B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3
+ 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8
+ 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2
+ CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006256
+ 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE
+ C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006257
+ 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60
+ 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C
+ 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1
+ A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4
+ 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006357
+ 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4
+ 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1
+ DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7
+ 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1
+ DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006458
+ 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5
+ F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3
+ DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006459
+ 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED
+ EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE
+ D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D
+ 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C
+ 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1
+ 967E000000000000000000000000000000000000000000000000000000006559
+ 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC
+ C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6
+ F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000000000000000000000685A
+ 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD
+ C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1
+ 967E00000000000000000000000000000000007792910072A7A3001E33366957
+ 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C
+ A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85
+ 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90
+ A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4
+ CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99
+ 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0
+ FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA
+ B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6
+ F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1
+ 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE
+ F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB
+ 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6
+ F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1
+ 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB
+ FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8
+ FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7
+ F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1
+ 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD
+ FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0
+ FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA
+ F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3
+ 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD
+ FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1
+ F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC
+ FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2
+ 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8
+ FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2
+ FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE
+ FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985
+ 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9
+ FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF
+ FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000
+ 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9
+ FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000
+ 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD
+ BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4
+ F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6
+ E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000
+ 0000000000000000000000000000000000000075B7AF0099C7C500323E425442
+ 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85
+ A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89
+ 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
+ 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000
+ 0007C0000007C000000700000007000000070000000700000007C000000FC000
+ 001F8000003F800000FFF8FFFFFF}
+ Width = 550
+ Left = 72
+ Top = 96
+ end
end
diff --git a/Source/Modulos/Contabilidad ejercicios/Views/uEditorEjercicio.pas b/Source/Modulos/Contabilidad ejercicios/Views/uEditorEjercicio.pas
index 846e463e..8daa0c64 100644
--- a/Source/Modulos/Contabilidad ejercicios/Views/uEditorEjercicio.pas
+++ b/Source/Modulos/Contabilidad ejercicios/Views/uEditorEjercicio.pas
@@ -13,12 +13,13 @@ uses
JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase,
uViewEjercicios, uIEditorEjercicio, uEjerciciosController, JvExComCtrls,
- JvStatusBar, dxLayoutLookAndFeels, uDAInterfaces;
+ JvStatusBar, dxLayoutLookAndFeels, uDAInterfaces, JSDialog;
type
TfEditorEjercicio = class(TfEditorDBItem, IEditorEjercicio)
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
+ JsNuevoEjercicioDialog: TJSDialog;
procedure FormShow(Sender: TObject);
procedure dsDataTableDataChange(Sender: TObject; Field: TField);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
@@ -89,9 +90,34 @@ begin
end;
procedure TfEditorEjercicio.GuardarInterno;
+var
+ bEsNuevo: Boolean;
+ Respuesta : Integer;
+
begin
inherited;
+ bEsNuevo := FEjercicio.EsNuevo;
FController.Guardar(FEjercicio);
+
+ //Si el ejercicio guardado es nuevo generamos el pgc
+ if bEsNuevo then
+ begin
+ Respuesta := JsNuevoEjercicioDialog.Execute;
+ if Respuesta <> IDCANCEL then
+ begin
+ case JsNuevoEjercicioDialog.CustomButtonResult of
+ 300 : begin // No generar PGC
+ end;
+ 200 : begin // Utilizar un ejercicio anterior para copiar el PGC
+ end;
+ 100 : begin // Utilizar el PGC base
+ FController.GenerarPCG(0, FEjercicio.ID);
+ end;
+ end;
+ end;
+ end;
+
+ RefrescarInterno; //Es necesario sino no se actualiza el campo ACTIVO de todas las tuplas
Modified := False;
end;
diff --git a/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicio.dfm b/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicio.dfm
index 2bc83dbc..02671d73 100644
--- a/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicio.dfm
+++ b/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicio.dfm
@@ -19,7 +19,7 @@ inherited frViewEjercicio: TfrViewEjercicio
304)
object eNombre: TcxDBTextEdit
Left = 86
- Top = 28
+ Top = 55
Anchors = [akLeft, akTop, akRight]
DataBinding.DataField = 'NOMBRE'
DataBinding.DataSource = DADataSource
@@ -32,35 +32,14 @@ inherited frViewEjercicio: TfrViewEjercicio
StyleDisabled.LookAndFeel.NativeStyle = True
StyleFocused.LookAndFeel.NativeStyle = True
StyleHot.LookAndFeel.NativeStyle = True
- TabOrder = 0
+ TabOrder = 1
Width = 204
end
object edtFechaIni: TcxDBDateEdit
- Left = 86
- Top = 55
- Anchors = [akLeft, akTop, akRight]
- DataBinding.DataField = 'FECHA_INICIO'
- DataBinding.DataSource = DADataSource
- Style.BorderColor = clWindowFrame
- Style.BorderStyle = ebs3D
- Style.Color = clInfoBk
- Style.HotTrack = False
- Style.LookAndFeel.NativeStyle = True
- Style.Shadow = False
- Style.ButtonStyle = bts3D
- Style.ButtonTransparency = ebtNone
- Style.PopupBorderStyle = epbsFrame3D
- StyleDisabled.LookAndFeel.NativeStyle = True
- StyleFocused.LookAndFeel.NativeStyle = True
- StyleHot.LookAndFeel.NativeStyle = True
- TabOrder = 1
- Width = 158
- end
- object edtFechaFin: TcxDBDateEdit
Left = 86
Top = 82
Anchors = [akLeft, akTop, akRight]
- DataBinding.DataField = 'FECHA_FIN'
+ DataBinding.DataField = 'FECHA_INICIO'
DataBinding.DataSource = DADataSource
Style.BorderColor = clWindowFrame
Style.BorderStyle = ebs3D
@@ -77,9 +56,30 @@ inherited frViewEjercicio: TfrViewEjercicio
TabOrder = 2
Width = 158
end
- object cbSituacion: TcxDBImageComboBox
+ object edtFechaFin: TcxDBDateEdit
Left = 86
Top = 109
+ Anchors = [akLeft, akTop, akRight]
+ DataBinding.DataField = 'FECHA_FIN'
+ DataBinding.DataSource = DADataSource
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.Color = clInfoBk
+ Style.HotTrack = False
+ Style.LookAndFeel.NativeStyle = True
+ Style.Shadow = False
+ Style.ButtonStyle = bts3D
+ Style.ButtonTransparency = ebtNone
+ Style.PopupBorderStyle = epbsFrame3D
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.NativeStyle = True
+ TabOrder = 3
+ Width = 158
+ end
+ object cbSituacion: TcxDBImageComboBox
+ Left = 86
+ Top = 136
DataBinding.DataField = 'ESTADO'
DataBinding.DataSource = DADataSource
Properties.Items = <
@@ -92,9 +92,34 @@ inherited frViewEjercicio: TfrViewEjercicio
Description = 'CERRADO'
Value = 'CERRADO'
end>
- TabOrder = 3
+ TabOrder = 4
Width = 158
end
+ object cxDBCheckBox2: TcxDBCheckBox
+ Left = 22
+ Top = 28
+ Caption = 'Ejercicio activo'
+ DataBinding.DataField = 'ACTIVO'
+ DataBinding.DataSource = DADataSource
+ Properties.Alignment = taRightJustify
+ Properties.ImmediatePost = True
+ Properties.NullStyle = nssUnchecked
+ Properties.ValueChecked = 1
+ Properties.ValueUnchecked = 0
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ TabOrder = 0
+ Width = 100
+ end
object dxLayoutControlEjercicioGroup_Root: TdxLayoutGroup
ShowCaption = False
Hidden = True
@@ -104,6 +129,12 @@ inherited frViewEjercicio: TfrViewEjercicio
AutoAligns = [aaVertical]
AlignHorz = ahClient
Caption = 'Datos del ejercicio'
+ object dxLayoutControlEjercicioItem4: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ ShowCaption = False
+ Control = cxDBCheckBox2
+ ControlOptions.ShowBorder = False
+ end
object dxLayoutControlEjercicioItem3: TdxLayoutItem
Caption = 'Descripci'#243'n:'
Control = eNombre
diff --git a/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicio.pas b/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicio.pas
index a76361d8..747be94e 100644
--- a/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicio.pas
+++ b/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicio.pas
@@ -8,7 +8,7 @@ uses
DBCtrls, Grids, DBGrids, uBizEjercicios, Mask, ComCtrls, uCustomView,
JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit,
cxDBEdit, dxLayoutControl, uDAInterfaces, cxGraphics, cxDropDownEdit,
- cxImageComboBox, cxMaskEdit, cxCalendar;
+ cxImageComboBox, cxMaskEdit, cxCalendar, cxCheckBox;
type
IViewEjercicio = interface(IViewBase)
@@ -31,6 +31,8 @@ type
edtFechaFin: TcxDBDateEdit;
dxLayoutControlEjercicioItem5: TdxLayoutItem;
cbSituacion: TcxDBImageComboBox;
+ dxLayoutControlEjercicioItem4: TdxLayoutItem;
+ cxDBCheckBox2: TcxDBCheckBox;
protected
FEjercicio: IBizEjercicio;
function GetEjercicio: IBizEjercicio;
diff --git a/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicios.dfm b/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicios.dfm
index 82a6274d..a84c2e12 100644
--- a/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicios.dfm
+++ b/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicios.dfm
@@ -18,6 +18,20 @@ inherited frViewEjercicios: TfrViewEjercicios
Width = 22
IsCaptionAssigned = True
end
+ object cxGridViewACTIVO: TcxGridDBColumn
+ DataBinding.FieldName = 'ACTIVO'
+ PropertiesClassName = 'TcxImageComboBoxProperties'
+ Properties.Items = <
+ item
+ Description = 'Activo'
+ ImageIndex = 0
+ Value = 1
+ end
+ item
+ Description = 'No activo'
+ Value = 0
+ end>
+ end
object cxGridViewNOMBRE: TcxGridDBColumn
DataBinding.FieldName = 'NOMBRE'
SortIndex = 0
@@ -70,9 +84,6 @@ inherited frViewEjercicios: TfrViewEjercicios
end
end
end
- inherited pnlAgrupaciones: TTBXDockablePanel
- ExplicitWidth = 554
- end
inherited dxComponentPrinter: TdxComponentPrinter
inherited dxComponentPrinterLink: TdxGridReportLink
ReportDocument.CreationDate = 38673.842406053240000000
diff --git a/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicios.pas b/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicios.pas
index 962597a3..9e8d3e39 100644
--- a/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicios.pas
+++ b/Source/Modulos/Contabilidad ejercicios/Views/uViewEjercicios.pas
@@ -31,6 +31,7 @@ type
cxGridViewID: TcxGridDBColumn;
PngImageList: TPngImageList;
cxGridViewESTADO: TcxGridDBColumn;
+ cxGridViewACTIVO: TcxGridDBColumn;
procedure cxGridViewIDCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);