From 423818ddfc4e125d19e501dbd2b330a1f05e31c9 Mon Sep 17 00:00:00 2001 From: roberto Date: Tue, 3 Feb 2009 19:11:42 +0000 Subject: [PATCH] =?UTF-8?q?Subida=20operacion=20de=20cierre=20de=20ejercic?= =?UTF-8?q?ios=20=20en=20m=C3=B3dulo=20de=20contabilidad?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@392 f4e31baf-9722-1c47-927c-6f952f962d4b --- Database/scripts/factuges.sql | 5 + Source/ApplicationBase/ApplicationBase.dpk | 13 +- Source/ApplicationBase/ApplicationBase.dproj | 47 +- .../View/uIEditorElegirEjercicios.pas | 26 + .../Controller/uEjerciciosController.pas | 78 ++- .../Ejercicios/Data/uDataModuleEjercicios.pas | 7 +- .../Model/Data/uIDataModuleEjercicios.pas | 1 + .../Ejercicios/Model/uBizEjercicios.pas | 21 +- .../Servidor/srvEjercicios_Impl.dfm | 21 + .../Servidor/srvEjercicios_Impl.pas | 16 + .../Ejercicios/Views/uEditorEjercicio.dfm | 14 +- .../Ejercicios/Views/uEditorEjercicio.pas | 20 +- .../Ejercicios/Views/uEditorEjercicios.dfm | 30 +- .../Ejercicios/Views/uEditorEjercicios.pas | 50 +- .../Views/uEditorElegirEjercicios.dfm | 217 +++++++ .../Views/uEditorElegirEjercicios.pas | 124 ++++ .../Views/uEjerciciosViewRegister.pas | 4 +- Source/Base/Base.res | Bin 4748 -> 384 bytes Source/Cliente/FactuGES.rc | 8 +- Source/Cliente/FactuGES.res | Bin 172156 -> 171984 bytes Source/GUIBase/uViewTotales.dfm | 223 ++++--- Source/GUIBase/uViewTotales.pas | 4 +- .../Views/uEditorElegirSubCuentas.dfm | 100 ++-- .../Views/uEditorElegirSubCuentas.pas | 2 +- Source/Servicios/FactuGES.RODL | 10 + Source/Servicios/FactuGES_Intf.pas | 19 + Source/Servicios/FactuGES_Invk.pas | 23 + Source/Servicios/RODLFILE.res | Bin 40197 -> 40565 bytes Source/Servidor/FactuGES_Server.RES | Bin 23552 -> 23348 bytes Source/Servidor/FactuGES_Server.dproj | 562 +++++++++--------- Source/Servidor/FactuGES_Server.rc | 10 +- 31 files changed, 1158 insertions(+), 497 deletions(-) create mode 100644 Source/ApplicationBase/Ejercicios/Controller/View/uIEditorElegirEjercicios.pas create mode 100644 Source/ApplicationBase/Ejercicios/Views/uEditorElegirEjercicios.dfm create mode 100644 Source/ApplicationBase/Ejercicios/Views/uEditorElegirEjercicios.pas diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql index 2f59f05f..2f7941d3 100644 --- a/Database/scripts/factuges.sql +++ b/Database/scripts/factuges.sql @@ -463,6 +463,11 @@ begin end num_orden = num_orden + 1; end + + /*Finalmente cambiamos de estado los ejercicio cerrado*/ + update cont_ejercicios + set ESTADO = 'CERRADO' + where id = :id_ejercicio_cierre; end suspend; diff --git a/Source/ApplicationBase/ApplicationBase.dpk b/Source/ApplicationBase/ApplicationBase.dpk index 99a906ee..108f1088 100644 --- a/Source/ApplicationBase/ApplicationBase.dpk +++ b/Source/ApplicationBase/ApplicationBase.dpk @@ -41,7 +41,14 @@ requires dxThemeD11, dxGDIPlusD11, dxNavBarD11, - vcljpg; + vcljpg, + GUISDK_D11, + xmlrtl, + cfpack_d11, + vclx, + vclactnband, + designide, + ccpackD11; contains uFactuGES_App in 'uFactuGES_App.pas', @@ -109,6 +116,8 @@ contains uViewConfiguracionGeneral in 'Configuracion\Views\uViewConfiguracionGeneral.pas' {frViewConfiguracionGeneral: TFrame}, uIViewConfiguracionBase in 'Configuracion\Controller\Views\uIViewConfiguracionBase.pas', schUsuariosClient_Intf in 'Usuarios\Model\schUsuariosClient_Intf.pas', - schUsuariosServer_Intf in 'Usuarios\Model\schUsuariosServer_Intf.pas'; + schUsuariosServer_Intf in 'Usuarios\Model\schUsuariosServer_Intf.pas', + uEditorElegirEjercicios in 'Ejercicios\Views\uEditorElegirEjercicios.pas' {fEditorElegirEjercicios: TCustomEditor}, + uIEditorElegirEjercicios in 'Ejercicios\Controller\View\uIEditorElegirEjercicios.pas'; end. diff --git a/Source/ApplicationBase/ApplicationBase.dproj b/Source/ApplicationBase/ApplicationBase.dproj index be86c29a..81b5e95b 100644 --- a/Source/ApplicationBase/ApplicationBase.dproj +++ b/Source/ApplicationBase/ApplicationBase.dproj @@ -46,6 +46,9 @@ Package FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + + RemObjects Data Abstract - SQLite Driver Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components @@ -70,8 +73,32 @@ TFrame + + + + + + + + + + + + + + + + + + + + + + + +
DataModuleEjercicios
@@ -87,6 +114,10 @@
fEditorEjercicios
TCustomEditor
+ +
fEditorElegirEjercicios
+ TCustomEditor +
frViewEjercicio
@@ -154,26 +185,10 @@
DataModuleUsuarios
- - - - - - - - - - - - - - - -
fEditorCambiarPassword
TCustomEditor diff --git a/Source/ApplicationBase/Ejercicios/Controller/View/uIEditorElegirEjercicios.pas b/Source/ApplicationBase/Ejercicios/Controller/View/uIEditorElegirEjercicios.pas new file mode 100644 index 00000000..65c82bd3 --- /dev/null +++ b/Source/ApplicationBase/Ejercicios/Controller/View/uIEditorElegirEjercicios.pas @@ -0,0 +1,26 @@ +unit uIEditorElegirEjercicios; + +interface + +uses + uIEditorEjercicios, uBizEjercicios, uGUIBase; + +type + IEditorElegirEjercicios = interface(IEditorEjercicios) + ['{4A5003AE-BF4E-466A-9C9D-FECDD69454D2}'] + function GetEjerciciosSeleccionados: IBizEjercicio; + property EjerciciosSeleccionados: IBizEjercicio read GetEjerciciosSeleccionados; + + procedure SetMultiSelect (AValue : Boolean); + function GetMultiSelect : Boolean; + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + + procedure SetMensaje (const AValue: String); + function GetMensaje: String; + property Mensaje : String read GetMensaje write SetMensaje; + end; + + +implementation + +end. diff --git a/Source/ApplicationBase/Ejercicios/Controller/uEjerciciosController.pas b/Source/ApplicationBase/Ejercicios/Controller/uEjerciciosController.pas index 113bbdef..e1fe47bd 100644 --- a/Source/ApplicationBase/Ejercicios/Controller/uEjerciciosController.pas +++ b/Source/ApplicationBase/Ejercicios/Controller/uEjerciciosController.pas @@ -21,6 +21,9 @@ type procedure DescartarCambios(AEjercicio : IBizEjercicio); function Localizar(AEjercicios: IBizEjercicio; ADescripcion:String): Boolean; function DarListaEjercicios: TStringList; + function ElegirEjercicio(AEjercicios : IBizEjercicio): IBizEjercicio; + function ExtraerSeleccionados(AEjercicios: IBizEjercicio) : IBizEjercicio; + function CerrarEjercicio(AEjercicio: IBizEjercicio): Boolean; end; TEjerciciosController = class(TControllerBase, IEjerciciosController) @@ -52,6 +55,9 @@ type function GenerarPCG(IdEjercicioCopia, IdEjercicio: Integer): Boolean; function Localizar(AEjercicios: IBizEjercicio; ADescripcion:String): Boolean; function DarListaEjercicios: TStringList; + function ElegirEjercicio(AEjercicios : IBizEjercicio): IBizEjercicio; + function ExtraerSeleccionados(AEjercicios: IBizEjercicio) : IBizEjercicio; + function CerrarEjercicio(AEjercicio: IBizEjercicio): Boolean; end; implementation @@ -60,29 +66,15 @@ uses cxControls, DB, uEditorRegistryUtils, schEjerciciosClient_Intf, uIEditorEjercicios, uIEditorEjercicio, uDataModuleEjercicios, uDAInterfaces, uDataTableUtils, uDialogUtils, uFactuGES_App, - uDateUtils, uROTypes, DateUtils, Controls, Windows, Dialogs; + uDateUtils, uROTypes, DateUtils, Controls, Windows, Dialogs, uIEditorElegirEjercicios; { TEjerciciosController } procedure TEjerciciosController.Anadir(AEjercicio: IBizEjercicio); -{var - FechaInicio: TDate; - FechaFin: TDate;} begin AEjercicio.Insert; - - //Asignar fecha de inicio y fin siguientes - ShowHourglassCursor; - try -// FDataModule.DarAnoSiguiente(FechaInicio, FechaFin); -// AEjercicio.FECHA_INICIO := - - finally - HideHourglassCursor; - end; - end; procedure TEjerciciosController.AsignarDataModule; @@ -144,6 +136,32 @@ begin FiltrarEmpresa(Result); end; +function TEjerciciosController.CerrarEjercicio(AEjercicio: IBizEjercicio): Boolean; +var + IdEjercicioCierre: Integer; + AFechaInicioApertura: TDate; + AFechaFinApertura: TDate; + +begin + Result := False; + + if Assigned(AEjercicio) then + begin + IdEjercicioCierre := AEjercicio.ID; + AFechaInicioApertura := StartOfAYear((YearOf(AEjercicio.FECHA_INICIO)+1)); + AFechaFinApertura := EndOfAYear((YearOf(AEjercicio.FECHA_INICIO)+1)); + + Anadir(AEjercicio); + AEjercicio.FECHA_INICIO := AFechaInicioApertura; + AEjercicio.FECHA_FIN := AFechaFinApertura; + AEjercicio.NOMBRE := 'Ejercicio ' + IntToStr(YearOf(AFechaInicioApertura)); + AEjercicio.ESTADO := CTE_ABIERTO; + Guardar(AEjercicio); + GenerarPCG(IdEjercicioCierre, AEjercicio.ID); + Result := FDataModule.CerrarEjercicio(IdEjercicioCierre, AEjercicio.ID); + end; +end; + constructor TEjerciciosController.Create; begin inherited; @@ -253,6 +271,27 @@ begin end; end; +function TEjerciciosController.ElegirEjercicio(AEjercicios: IBizEjercicio): IBizEjercicio; +var + AEditor : IEditorElegirEjercicios; +begin + Result := NIL; + + CreateEditor('EditorElegirEjercicios', IEditorElegirEjercicios, AEditor); + if Assigned(AEditor) then + try + AEditor.Ejercicios := AEjercicios; + AEditor.Controller := Self; + AEditor.MultiSelect := False; + AEditor.Mensaje := 'Seleccione el ejercicio de la empresa activa que desee:'; + if IsPositiveResult(AEditor.ShowModal) then + Result := AEditor.EjerciciosSeleccionados; + finally + AEditor.Release; + AEditor := NIL; + end; +end; + function TEjerciciosController.Eliminar(AEjercicio: IBizEjercicio): Boolean; begin if not Assigned(AEjercicio) then @@ -275,6 +314,15 @@ begin end; end; +function TEjerciciosController.ExtraerSeleccionados(AEjercicios: IBizEjercicio): IBizEjercicio; +var + ASeleccionados : IBizEjercicio; +begin + ASeleccionados := Self.Buscar(ID_NULO); + CopyDataTableDA5(AEjercicios.DataTable, ASeleccionados.DataTable, True); + Result := ASeleccionados; +end; + procedure TEjerciciosController.FiltrarEmpresa(AEjercicio: IBizEjercicio); var Condicion: TDAWhereExpression; diff --git a/Source/ApplicationBase/Ejercicios/Data/uDataModuleEjercicios.pas b/Source/ApplicationBase/Ejercicios/Data/uDataModuleEjercicios.pas index 7ecfea17..17db1e45 100644 --- a/Source/ApplicationBase/Ejercicios/Data/uDataModuleEjercicios.pas +++ b/Source/ApplicationBase/Ejercicios/Data/uDataModuleEjercicios.pas @@ -20,7 +20,7 @@ type public function GetItems: IBizEjercicio; function GenerarPGC(const IdEjercicioCopia: Integer; const IdEjercicio: Integer): Boolean; -// function DarAnoSiguiente(var FechaInicio: TDate; var FechaFin: TDate): Boolean; + function CerrarEjercicio(const IdEjercicioCierre: Integer; const IdEjercicioApertura: Integer): Boolean; end; implementation @@ -33,6 +33,11 @@ uses { TdmEjercicios } +function TDataModuleEjercicios.CerrarEjercicio(const IdEjercicioCierre, IdEjercicioApertura: Integer): Boolean; +begin + Result := (RORemoteService as IsrvEjercicios).CerrarEjercicio(IdEjercicioCierre, IdEjercicioApertura); +end; + procedure TDataModuleEjercicios.DAClientDataModuleCreate(Sender: TObject); begin RORemoteService.Channel := dmConexion.Channel; diff --git a/Source/ApplicationBase/Ejercicios/Model/Data/uIDataModuleEjercicios.pas b/Source/ApplicationBase/Ejercicios/Model/Data/uIDataModuleEjercicios.pas index 21d3859f..2f6855aa 100644 --- a/Source/ApplicationBase/Ejercicios/Model/Data/uIDataModuleEjercicios.pas +++ b/Source/ApplicationBase/Ejercicios/Model/Data/uIDataModuleEjercicios.pas @@ -10,6 +10,7 @@ type ['{E32DF99C-8AA1-42E5-84C0-198205BD2A90}'] function GetItems: IBizEjercicio; function GenerarPGC(const IdEjercicioCopia: Integer; const IdEjercicio: Integer): Boolean; + function CerrarEjercicio(const IdEjercicioCierre: Integer; const IdEjercicioApertura: Integer): Boolean; end; implementation diff --git a/Source/ApplicationBase/Ejercicios/Model/uBizEjercicios.pas b/Source/ApplicationBase/Ejercicios/Model/uBizEjercicios.pas index 2e3a40d8..83c510c3 100644 --- a/Source/ApplicationBase/Ejercicios/Model/uBizEjercicios.pas +++ b/Source/ApplicationBase/Ejercicios/Model/uBizEjercicios.pas @@ -3,7 +3,7 @@ unit uBizEjercicios; interface uses - uDAInterfaces, uDADataTable, schEjerciciosClient_Intf; + uDAInterfaces, uDADataTable, uDBSelectionListUtils, schEjerciciosClient_Intf; const BIZ_CLIENT_Ejercicio = 'Client.Ejercicio'; @@ -16,10 +16,15 @@ type function EsNuevo : Boolean; end; - TBizEjercicio = class(TEjerciciosDataTableRules, IBizEjercicio) + TBizEjercicio = class(TEjerciciosDataTableRules, IBizEjercicio, ISeleccionable) protected + FSeleccionableInterface: ISeleccionable; procedure OnNewRecord(Sender: TDADataTable); override; public + property SeleccionableInterface : ISeleccionable read FSeleccionableInterface write FSeleccionableInterface implements ISeleccionable; + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + procedure IniciarValoresEjercicioNueva; function EsNuevo : Boolean; end; @@ -31,6 +36,18 @@ implementation uses SysUtils, uDataTableUtils, uDateUtils, uFactuGES_App; +constructor TBizEjercicio.Create(aDataTable: TDADataTable); +begin + inherited; + FSeleccionableInterface := TSeleccionable.Create(aDataTable); +end; + +destructor TBizEjercicio.Destroy; +begin + FSeleccionableInterface := NIL; + inherited; +end; + function TBizEjercicio.EsNuevo: Boolean; begin Result := (ID < 0); diff --git a/Source/ApplicationBase/Ejercicios/Servidor/srvEjercicios_Impl.dfm b/Source/ApplicationBase/Ejercicios/Servidor/srvEjercicios_Impl.dfm index 3c8abd9e..f7e6acd4 100644 --- a/Source/ApplicationBase/Ejercicios/Servidor/srvEjercicios_Impl.dfm +++ b/Source/ApplicationBase/Ejercicios/Servidor/srvEjercicios_Impl.dfm @@ -292,6 +292,27 @@ object srvEjercicios: TsrvEjercicios ColumnMappings = <> end> Name = 'GenerarPGC' + end + item + Params = < + item + Name = 'id_ejercicio_cierre' + Value = '' + end + item + Name = 'id_ejercicio_apertura' + Value = '' + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'execute procedure PROC_CIERRE_APERTURA :id_ejercicio_cierre, :id' + + '_ejercicio_apertura'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'CerrarEjercicio' end> RelationShips = <> UpdateRules = <> diff --git a/Source/ApplicationBase/Ejercicios/Servidor/srvEjercicios_Impl.pas b/Source/ApplicationBase/Ejercicios/Servidor/srvEjercicios_Impl.pas index 49684377..0a6e2af9 100644 --- a/Source/ApplicationBase/Ejercicios/Servidor/srvEjercicios_Impl.pas +++ b/Source/ApplicationBase/Ejercicios/Servidor/srvEjercicios_Impl.pas @@ -31,6 +31,7 @@ type protected function GenerarPGC(const ID_EJERCICIO_COPIA: Integer; const ID_EJERCICIO: Integer): Boolean; + function CerrarEjercicio(const ID_EJERCICIO_CIERRE: Integer; const ID_EJERCICIO_APERTURA: Integer): Boolean; public function DarEjercicioActivo(const ID_EMPRESA: Integer): Integer; end; @@ -48,6 +49,21 @@ begin end; { srvEjercicios } +function TsrvEjercicios.CerrarEjercicio(const ID_EJERCICIO_CIERRE, ID_EJERCICIO_APERTURA: Integer): Boolean; +begin + Result := False; + + Connection.BeginTransaction; + try + schEjercicios.NewCommand(Connection, 'CerrarEjercicio', ['ID_EJERCICIO_CIERRE', 'ID_EJERCICIO_APERTURA'], [ID_EJERCICIO_CIERRE, ID_EJERCICIO_APERTURA]); + Connection.CommitTransaction; + Result := True; + except + Connection.RollbackTransaction; + RaiseError('Error al cerrar el ejercicio'); + end; +end; + function TsrvEjercicios.DarEjercicioActivo(const ID_EMPRESA: Integer): Integer; var AConn : IDAConnection; diff --git a/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicio.dfm b/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicio.dfm index c8940510..81dbdda7 100644 --- a/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicio.dfm +++ b/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicio.dfm @@ -15,7 +15,7 @@ inherited fEditorEjercicio: TfEditorEjercicio inherited JvNavPanelHeader: TJvNavPanelHeader Width = 519 Caption = 'Ejercicio' - ExplicitWidth = 632 + ExplicitWidth = 519 inherited Image1: TImage Left = 492 Picture.Data = { @@ -58,7 +58,7 @@ inherited fEditorEjercicio: TfEditorEjercicio end inherited TBXDock: TTBXDock Width = 519 - ExplicitWidth = 632 + ExplicitWidth = 519 inherited tbxMain: TTBXToolbar ExplicitWidth = 330 inherited TBXItem2: TTBXItem @@ -115,13 +115,13 @@ inherited fEditorEjercicio: TfEditorEjercicio Height = 344 ExplicitLeft = 3 ExplicitTop = 79 - ExplicitWidth = 626 - ExplicitHeight = 360 + ExplicitWidth = 513 + ExplicitHeight = 344 inherited pagGeneral: TTabSheet ExplicitLeft = 4 ExplicitTop = 24 - ExplicitWidth = 618 - ExplicitHeight = 332 + ExplicitWidth = 505 + ExplicitHeight = 316 end end inherited StatusBar: TJvStatusBar @@ -132,7 +132,7 @@ inherited fEditorEjercicio: TfEditorEjercicio Width = 200 end> ExplicitTop = 426 - ExplicitWidth = 632 + ExplicitWidth = 519 end inherited EditorActionList: TActionList Top = 128 diff --git a/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicio.pas b/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicio.pas index c3398c06..d063b59b 100644 --- a/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicio.pas +++ b/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicio.pas @@ -93,11 +93,12 @@ procedure TfEditorEjercicio.GuardarInterno; var bEsNuevo: Boolean; Respuesta : Integer; + AEjercicio: IBizEjercicio; + begin inherited; bEsNuevo := FEjercicio.EsNuevo; - FController.Guardar(FEjercicio); //Si el ejercicio guardado es nuevo generamos el pgc if bEsNuevo then @@ -107,15 +108,26 @@ begin begin case JsNuevoEjercicioDialog.CustomButtonResult of 300 : begin // No generar PGC + FController.Guardar(FEjercicio); end; - 200 : begin // Utilizar un ejercicio anterior para copiar el PGC + 200 : begin // Utilizar un ejercicio anterior para copiar el PGC, OJO ORDEN MUY IMPORTANTE + + AEjercicio := FController.ElegirEjercicio(FController.BuscarTodos); + if Assigned(AEjercicio) then + begin + FController.Guardar(FEjercicio); + FController.GenerarPCG(AEjercicio.ID, FEjercicio.ID); + end; end; - 100 : begin // Utilizar el PGC base + 100 : begin // Utilizar el PGC base OJO ORDEN MUY IMPORTANTE + FController.Guardar(FEjercicio); FController.GenerarPCG(0, FEjercicio.ID); end; end; end; - end; + end + //Es una modificación + else FController.Guardar(FEjercicio); Modified := False; RefrescarInterno; //Es necesario sino no se actualiza el campo ACTIVO de todas las tuplas diff --git a/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicios.dfm b/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicios.dfm index 9278adb2..14fb9326 100644 --- a/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicios.dfm +++ b/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicios.dfm @@ -45,9 +45,6 @@ inherited fEditorEjercicios: TfEditorEjercicios end end inherited TBXDock: TTBXDock - inherited tbxMain: TTBXToolbar - ExplicitWidth = 474 - end inherited tbxFiltro: TTBXToolbar ExplicitWidth = 269 inherited tbxEditFiltro: TTBXEditItem @@ -60,7 +57,12 @@ inherited fEditorEjercicios: TfEditorEjercicios inherited TBXTMain2: TTBXToolbar Left = 275 DockPos = 275 + Visible = True ExplicitLeft = 275 + ExplicitWidth = 96 + object TBXItem38: TTBXItem + Action = actCerrarEjercicio + end end end inline frViewEjercicios1: TfrViewEjercicios [3] @@ -106,15 +108,27 @@ inherited fEditorEjercicios: TfEditorEjercicios Width = 543 ExplicitWidth = 543 inherited txtFiltroTodo: TcxTextEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 273 Width = 273 end inherited edtFechaIniFiltro: TcxDateEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 121 Width = 121 end inherited edtFechaFinFiltro: TcxDateEdit Left = 337 + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' ExplicitLeft = 337 ExplicitWidth = 121 Width = 121 @@ -162,6 +176,16 @@ inherited fEditorEjercicios: TfEditorEjercicios inherited actNuevo: TAction ImageIndex = 23 end + inherited actDuplicar: TAction + Enabled = False + Visible = False + end + object actCerrarEjercicio: TAction + Category = 'AccionesExtra' + Caption = 'Cerrar ejercicio' + OnExecute = actCerrarEjercicioExecute + OnUpdate = actCerrarEjercicioUpdate + end end inherited SmallImages: TPngImageList [5] PngImages = < diff --git a/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicios.pas b/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicios.pas index b0a021c5..b7d589ce 100644 --- a/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicios.pas +++ b/Source/ApplicationBase/Ejercicios/Views/uEditorEjercicios.pas @@ -17,7 +17,11 @@ uses type TfEditorEjercicios = class(TfEditorGridBase, IEditorEjercicios) frViewEjercicios1: TfrViewEjercicios; + actCerrarEjercicio: TAction; + TBXItem38: TTBXItem; procedure FormShow(Sender: TObject); + procedure actCerrarEjercicioExecute(Sender: TObject); + procedure actCerrarEjercicioUpdate(Sender: TObject); private FEjercicios: IBizEjercicio; FController : IEjerciciosController; @@ -30,10 +34,9 @@ type procedure NuevoInterno; override; procedure EliminarInterno; override; procedure ModificarInterno; override; - procedure DuplicarInterno; override; public - procedure PonerTitulos(const ATitulo: string = ''); override; + procedure PonerTitulos(const ATitulo: string = ''); override; property Ejercicios: IBizEjercicio read GetEjercicios write SetEjercicios; property Controller : IEjerciciosController read GetController write SetController; constructor Create(AOwner: TComponent); override; @@ -45,7 +48,7 @@ implementation uses uCustomEditor, uDataModuleEjercicios, uDataModuleUsuarios, uDialogUtils, uEditorEjercicio, uEditorDBBase, uFactuGES_App, - cxGrid, cxGridCustomTableView; //, uListaEjercicios; + cxGrid, cxGridCustomTableView, DateUtils; {$R *.dfm} @@ -116,22 +119,6 @@ begin inherited; end; -procedure TfEditorEjercicios.DuplicarInterno; -{var - AEjercicio : IBizEjercicio;} -begin -AppFactuGES.ShowCapado; -{ - inherited; - AEjercicio := FController.Duplicar(Ejercicios); - try - FController.Ver(AEjercicio); - finally - actRefrescar.Execute; - end; -} -end; - procedure TfEditorEjercicios.EliminarInterno; begin if (ShowConfirmMessage('Eliminar un ejercicio', Format('¿Desea borrar el ejercicio ''%s''?' + #10#13 + 'Tenga en cuenta que se eliminará también todo el plan general contable asociado al ejercicio.', [Ejercicios.NOMBRE])) = IDYES) then @@ -144,6 +131,31 @@ begin end; end; +procedure TfEditorEjercicios.actCerrarEjercicioExecute(Sender: TObject); +var + Cadena: String; + Ano: Integer; +begin + inherited; + Ano := YearOf(Ejercicios.FECHA_INICIO); + Cadena := 'Se creará un nuevo ejercicio ( Ejercicio ' + InttoStr(Ano + 1) + ' ) con los asientos de apertura correspondientes a los asientos de cierre del ejercicio seleccionado. ¿Desea continuar?'; + + if (Application.MessageBox(PChar(Cadena), 'Atención', MB_YESNO) = IDYES) then + if Controller.CerrarEjercicio(Ejercicios) then + begin + Ejercicios.DataTable.Refresh; + Cadena := 'Se ha cerrado correctamente el ejercicio ' + IntToStr(Ano) + '. El ejercicio ' + IntToStr(Ano + 1) + ' será el nuevo ejercicio activo'; + Application.MessageBox(PChar(Cadena), 'FactuGES', MB_OK); + end; +end; + +procedure TfEditorEjercicios.actCerrarEjercicioUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := HayDatos + and (FEjercicios.ESTADO = CTE_ABIERTO); +end; + constructor TfEditorEjercicios.Create(AOwner: TComponent); begin inherited; diff --git a/Source/ApplicationBase/Ejercicios/Views/uEditorElegirEjercicios.dfm b/Source/ApplicationBase/Ejercicios/Views/uEditorElegirEjercicios.dfm new file mode 100644 index 00000000..a13405fd --- /dev/null +++ b/Source/ApplicationBase/Ejercicios/Views/uEditorElegirEjercicios.dfm @@ -0,0 +1,217 @@ +inherited fEditorElegirEjercicios: TfEditorElegirEjercicios + Caption = 'fEditorElegirEjercicios' + ClientHeight = 533 + ExplicitHeight = 567 + PixelsPerInch = 96 + TextHeight = 13 + object JvgWizardHeader1: TJvgWizardHeader [0] + Left = 0 + Top = 27 + Width = 543 + Height = 60 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'Tahoma' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'Tahoma' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Seleccione la subcuenta') + Comments.Strings = ( + ' ') + Gradient.FromColor = clHighlight + Gradient.ToColor = clWindow + Gradient.Active = False + Gradient.Orientation = fgdVertical + BufferedDraw = False + ExplicitLeft = -113 + ExplicitWidth = 656 + end + inherited TBXDock: TTBXDock + Top = 87 + ExplicitTop = 87 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 269 + inherited TBXItem36: TTBXItem + Action = actAnchoAuto2 + end + end + inherited tbxFiltro: TTBXToolbar + inherited TBXItem34: TTBXItem + Action = actQuitarFiltro2 + end + end + end + inherited StatusBar: TJvStatusBar + Top = 514 + ExplicitTop = 514 + end + inherited frViewEjercicios1: TfrViewEjercicios + Top = 162 + Height = 303 + ExplicitTop = 162 + ExplicitHeight = 303 + inherited cxGrid: TcxGrid + Height = 175 + ExplicitHeight = 175 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 ejercicios' + Kind = skCount + Column = frViewEjercicios1.cxGridViewNOMBRE + end> + inherited cxGridViewID: TcxGridDBColumn + IsCaptionAssigned = True + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + end + inherited edtFechaIniFiltro: TcxDateEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + end + inherited edtFechaFinFiltro: TcxDateEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + end + end + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + Top = 277 + ExplicitTop = 277 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + BuiltInReportLink = True + end + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewEjercicios1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end + end + inline frViewBarraSeleccion1: TfrViewBarraSeleccion [5] + Left = 0 + Top = 465 + Width = 543 + Height = 49 + Align = alBottom + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + ExplicitTop = 465 + ExplicitWidth = 543 + inherited JvFooter1: TJvFooter + Width = 543 + ExplicitWidth = 543 + inherited bSeleccionar: TJvFooterBtn + Left = 331 + ExplicitLeft = 444 + end + inherited bCancelar: TJvFooterBtn + Left = 435 + ExplicitLeft = 435 + end + end + inherited BarraSeleccionActionList: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccion1actSeleccionarExecute + OnUpdate = frViewBarraSeleccion1actSeleccionarUpdate + end + inherited actCancelar: TAction + OnExecute = frViewBarraSeleccion1actCancelarExecute + end + end + end + inherited EditorActionList: TActionList [6] + inherited actNuevo: TAction + Enabled = False + Visible = False + end + inherited actModificar: TAction + Enabled = False + Visible = False + end + inherited actGuardarCerrar: TAction + Visible = False + end + inherited actGuardar: TAction + Visible = False + end + inherited actEliminar: TAction + Enabled = False + Visible = False + end + inherited actRefrescar: TAction + Enabled = False + Visible = False + end + end + inherited SmallImages: TPngImageList [7] + end + inherited LargeImages: TPngImageList [8] + end + inherited JvFormStorage: TJvFormStorage [9] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [10] + end + inherited dsDataTable: TDADataSource [11] + end + inherited StatusBarImages: TPngImageList [12] + end + object EditorSeleccionActionList: TActionList + Images = SmallImages + Left = 112 + Top = 152 + object actBuscar2: TAction + Category = 'Buscar' + Caption = 'Buscar' + ImageIndex = 10 + ShortCut = 114 + end + object actQuitarFiltro2: TAction + Category = 'Buscar' + Caption = 'Quitar filtro y ver todo' + ImageIndex = 19 + OnExecute = actQuitarFiltro2Execute + end + object actAnchoAuto2: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 21 + OnExecute = actAnchoAuto2Execute + end + end +end diff --git a/Source/ApplicationBase/Ejercicios/Views/uEditorElegirEjercicios.pas b/Source/ApplicationBase/Ejercicios/Views/uEditorElegirEjercicios.pas new file mode 100644 index 00000000..4ea754db --- /dev/null +++ b/Source/ApplicationBase/Ejercicios/Views/uEditorElegirEjercicios.pas @@ -0,0 +1,124 @@ +unit uEditorElegirEjercicios; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorEjercicios, Menus, DB, uDAInterfaces, uDADataTable, + JvAppStorage, JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, uCustomView, uViewBase, uViewGridBase, + uViewGrid, uViewEjercicios, ComCtrls, JvExComCtrls, JvStatusBar, TBX, + TB2ExtItems, TBXExtItems, TB2Item, TB2Dock, TB2Toolbar, dxGDIPlusClasses, + ExtCtrls, JvExControls, JvNavigationPane, uViewBarraSeleccion, uIEditorElegirEjercicios, + UBizEjercicios, JvgWizardHeader; + +type + TfEditorElegirEjercicios = class(TfEditorEjercicios, IEditorElegirEjercicios) + frViewBarraSeleccion1: TfrViewBarraSeleccion; + JvgWizardHeader1: TJvgWizardHeader; + EditorSeleccionActionList: TActionList; + actBuscar2: TAction; + actQuitarFiltro2: TAction; + actAnchoAuto2: TAction; + procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject); + procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject); + procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure actAnchoAuto2Execute(Sender: TObject); + procedure actQuitarFiltro2Execute(Sender: TObject); + private + + protected + procedure SetMultiSelect (AValue : Boolean); + function GetMultiSelect : Boolean; + function GetEjerciciosSeleccionados: IBizEjercicio; + procedure SetViewGrid(const Value: IViewGridBase); override; + procedure SetMensaje (const AValue: String); + function GetMensaje: String; + public + property Mensaje : String read GetMensaje write SetMensaje; + property EjerciciosSeleccionados: IBizEjercicio read GetEjerciciosSeleccionados; + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + end; + + +implementation +{$R *.dfm} + +uses uGridUtils, uDBSelectionListUtils, uEjerciciosController; + +{ TfEditorElegirEjercicios } + +procedure TfEditorElegirEjercicios.actAnchoAuto2Execute(Sender: TObject); +begin + inherited; + actAnchoAuto.Execute; +end; + +procedure TfEditorElegirEjercicios.actQuitarFiltro2Execute(Sender: TObject); +begin + inherited; + actQuitarFiltro.Execute; +end; + +procedure TfEditorElegirEjercicios.FormShow(Sender: TObject); +begin + inherited; + EditorActionList.State := asSuspended; +end; + +procedure TfEditorElegirEjercicios.frViewBarraSeleccion1actCancelarExecute( + Sender: TObject); +begin + inherited; + Close; +end; + +procedure TfEditorElegirEjercicios.frViewBarraSeleccion1actSeleccionarExecute( + Sender: TObject); +begin + inherited; + ModalResult := mrOk; +end; + +procedure TfEditorElegirEjercicios.frViewBarraSeleccion1actSeleccionarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0) +end; + +function TfEditorElegirEjercicios.GetEjerciciosSeleccionados: IBizEjercicio; +begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Ejercicios as ISeleccionable).SelectedRecords); + // En SelectedRecords tengo los ID de las filas seleccionadas del grid + Result := (Controller as IEjerciciosController).ExtraerSeleccionados(Ejercicios) as IBizEjercicio; +end; + +function TfEditorElegirEjercicios.GetMensaje: String; +begin + Result := JvgWizardHeader1.Comments.Text; +end; + +function TfEditorElegirEjercicios.GetMultiSelect: Boolean; +begin + Result := ViewGrid.MultiSelect; +end; + +procedure TfEditorElegirEjercicios.SetMensaje(const AValue: String); +begin + JvgWizardHeader1.Comments.Text := AValue; +end; + +procedure TfEditorElegirEjercicios.SetMultiSelect(AValue: Boolean); +begin + ViewGrid.MultiSelect := AValue; +end; + +procedure TfEditorElegirEjercicios.SetViewGrid(const Value: IViewGridBase); +begin + inherited; + ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute; +end; + +end. diff --git a/Source/ApplicationBase/Ejercicios/Views/uEjerciciosViewRegister.pas b/Source/ApplicationBase/Ejercicios/Views/uEjerciciosViewRegister.pas index 7b493654..5673c489 100644 --- a/Source/ApplicationBase/Ejercicios/Views/uEjerciciosViewRegister.pas +++ b/Source/ApplicationBase/Ejercicios/Views/uEjerciciosViewRegister.pas @@ -8,18 +8,20 @@ procedure UnregisterViews; implementation uses - uEditorRegistryUtils, uEditorEjercicio, uEditorEjercicios; + uEditorRegistryUtils, uEditorEjercicio, uEditorEjercicios, uEditorElegirEjercicios; procedure RegisterViews; begin EditorRegistry.RegisterClass(TfEditorEjercicios, 'EditorEjercicios'); EditorRegistry.RegisterClass(TfEditorEjercicio, 'EditorEjercicio'); + EditorRegistry.RegisterClass(TfEditorElegirEjercicios, 'EditorElegirEjercicios'); end; procedure UnregisterViews; begin EditorRegistry.UnRegisterClass(TfEditorEjercicios); EditorRegistry.UnRegisterClass(TfEditorEjercicio); + EditorRegistry.UnRegisterClass(TfEditorElegirEjercicios); end; end. diff --git a/Source/Base/Base.res b/Source/Base/Base.res index 1641339fcc482e7e3492d1b45813a86619622c33..8b251f312bcccec5485024f6fe8d80e1cdf25746 100644 GIT binary patch delta 11 ScmeBCZD5|Duvteife`=|>;pCc literal 4748 zcmbW5&ub)A5XUPdpe&2#;C*uNAUVhgd+&(4um@dnom`vXF9g}ZuHJ;se=<3UNdFJg zbCw+UD9j$byGIXV`~6hC>h4S?F|k9X-j90q{Z_qtZ<;nUJCO8!h?p${kR>3GhM`oH*q zk=UsjOCIgA_4!`B+Gb&`I84R)bT4dy-BQV<-SyFz?R8ILEQ(+JB$u{sEXE@j@B*7W zT;iZH#|OJ<&DO$RCkM6VbK3(B(k{nbdv1lpc;E$xz9as|v3uE1V{hw2w~g3eD0an7 z{BT%G%irdMe*|oDJmgvJaA2`9B<6Xi*?M~Q;)@Sbfwf3uf zVaWkbUjU=;sL{BlYemIZXv%qZ{SZw{-TCU+;!nH6KDDIJumU+9{E0zXW4>7T)y|>$DQlv zRJe?TjSp{c!DqeayAnSMTtZZT;>LN7J0Rls+5m@q)MbyB*eL%Eu@(+$Cw}Pd@q7N| z%Q0*AHpCP^b9v`@jx-l_FD>khpW2W8(OU2&V5TrnoAY-m_hlcV?zq3;7{2gF{J#Hc z6R+o~mVenX?>@W0@_DVzyOFs(5464CY{!q9ChoF#_*eXi@4gFuV8?vhl=_w5$iKL0 zEV0nMBcN08xtRmsgJrqjh@s#|{?*ssnsG)mH*wa6{efF0JFWHok@kA5%b661{B38= zCcgJ|*ZFTpV$8<-&+AWpa)Q8*`wL&hMeNQ^v6I7$HSdLZhZ^&+6<@Uw_Zsml9^v3W zVvPDBKHh;i=RU4J_ta3E;)Mn>Y+L zKLZ0UQ+*km9FO-b?U4gmn-62iwzH6&*duKGo~aUV)bYDla8wWZ9+^7p-F<8lP@i!m z@vhbD_${F}h>^T;C(?(b*OJDk?{dEXB?nuehoON3HAb!7Mr7-ls!84-5V-jJugbu<_$}mU=Yd9!?TOX;|B-#B)+0x#9q*yqJiqS!`49d=7ztk$O+9=1i;?K_|J<8T z?0b7=-`Z3A#vV$4XJ5(lQ~TOZHUFdA%oWvK5zg&_IKXIbughQBA8XAsd#=@|TFLXC zy(^m((;DnQmDQKatmw!@c`| G?EMQ&4NnpP diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc index b6f095d7..833e7417 100644 --- a/Source/Cliente/FactuGES.rc +++ b/Source/Cliente/FactuGES.rc @@ -1,7 +1,7 @@ MAINICON ICON "C:\Codigo Acana\Resources\Iconos\Factuges.ico" 1 VERSIONINFO -FILEVERSION 2,2,7,0 -PRODUCTVERSION 2,2,7,0 +FILEVERSION 2,2,8,0 +PRODUCTVERSION 2,2,8,0 FILEFLAGSMASK 0x3FL FILEFLAGS 0x00L FILEOS 0x40004L @@ -13,10 +13,10 @@ BEGIN BLOCK "0C0A04E4" BEGIN VALUE "CompanyName", "Rodax Software S.L.\0" - VALUE "FileVersion", "2.2.7.0\0" + VALUE "FileVersion", "2.2.8.0\0" VALUE "InternalName", "FactuGES\0" VALUE "ProductName", "FactuGES\0" - VALUE "ProductVersion", "2.2.7.0\0" + VALUE "ProductVersion", "2.2.8.0\0" END END BLOCK "VarFileInfo" diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res index 0f6f3dd9f99c25d7f8038783a6e1bf48e28cd343..50b6bf30c188b19c851efbb80590f66a171b750a 100644 GIT binary patch delta 284 zcmY+9u?m7v6o$Wh(^8WVS{#K48XA0oK$;vI+AC=2Eplk^0fIYeYeQpujg3A-b3+dh z)D=bPhr{9HKj(1%&)q3*PI3@eX=MA*b6gq;Ts#j1K0CAQ4H+Qu{mOfEq0>-mgFz5f z-q`}PC4H?+7}nkZdM%AvVG%`@Ihlh^99NVs!C}3w7mv^ilR>W142=e41!DdHmD>;tEIX)HG@NcfRLrFYZfmAo6~5nG^X zG>rCHg|(7-jB8-wc}B}@sFchjlWA3aztlEiy=08