From f72e422930730d389d4af161ac5723e4a21a9ae2 Mon Sep 17 00:00:00 2001 From: david Date: Mon, 8 Sep 2008 16:58:59 +0000 Subject: [PATCH] =?UTF-8?q?Se=20incluye=20en=20presupuestos=20de=20cliente?= =?UTF-8?q?=20la=20gesti=C3=B3n=20de=20documentos?= 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@309 f4e31baf-9722-1c47-927c-6f952f962d4b --- Build/Build.fbp5 | 659 +++++++++++++++ Database/ACANA.FDB | Bin 3620864 -> 3620864 bytes .../uDataModuleConfiguracion.dfm | 21 +- .../uDataModuleConfiguracion.pas | 18 +- Source/Base/Utiles/uSistemaFunc.pas | 226 ++++- Source/Base/Utiles/uStringsUtils.pas | 1 + Source/GUIBase/GUIBase.dpk | Bin 2301 -> 2581 bytes Source/GUIBase/GUIBase.dproj | 55 +- Source/GUIBase/uViewDocumentos.dfm | 790 ++++++++++++++++++ Source/GUIBase/uViewDocumentos.pas | 338 ++++++++ .../GestorDocumentos_Controller.res | Bin 0 -> 384 bytes .../GestorDocumentos_controller.dpk | Bin 0 -> 632 bytes .../GestorDocumentos_controller.dproj | 540 ++++++++++++ .../GestorDocumentos_controller.drc | 16 + .../Controller/GestorDocumentos_controller.rc | 22 + .../uGestorDocumentosController.pas | 110 +++ .../Data/GestorDocumentos_data.dpk | Bin 0 -> 618 bytes .../Data/GestorDocumentos_data.dproj | 540 ++++++++++++ .../Data/GestorDocumentos_data.drc | 17 + .../Data/GestorDocumentos_data.rc | 22 + .../Data/GestorDocumentos_data.res | Bin 0 -> 384 bytes .../Data/uDataModuleGestorDocumentos.dfm | 16 + .../Data/uDataModuleGestorDocumentos.pas | 115 +++ .../Servidor/srvGestorDocumentos_Impl.dfm | 6 + .../Servidor/srvGestorDocumentos_Impl.pas | 222 +++++ .../PresupuestosCliente_controller.dpk | Bin 1511 -> 1543 bytes .../PresupuestosCliente_controller.dproj | 15 +- .../uPresupuestosClienteController.pas | 37 +- .../PresupuestosCliente_Group.groupproj | 26 +- .../Views/PresupuestosCliente_view.dpk | Bin 1884 -> 2158 bytes .../Views/PresupuestosCliente_view.dproj | 34 +- .../Views/uEditorPresupuestoCliente.dfm | 72 +- .../Views/uEditorPresupuestoCliente.pas | 21 +- .../uViewDocumentosPresupuestoCliente.dfm | 2 + .../uViewDocumentosPresupuestoCliente.pas | 100 +++ Source/Servicios/FactuGES.RODL | 75 ++ Source/Servicios/FactuGES_Intf.pas | 144 +++- Source/Servicios/FactuGES_Invk.pas | 161 +++- Source/Servicios/RODLFILE.res | Bin 28067 -> 31519 bytes .../Configuracion/srvConfiguracion_Impl.dfm | 32 +- .../Configuracion/srvConfiguracion_Impl.pas | 30 +- Source/Servidor/FactuGES_Server.RES | Bin 23344 -> 23352 bytes Source/Servidor/FactuGES_Server.dpr | 5 +- Source/Servidor/FactuGES_Server.dproj | 6 + Source/Servidor/FactuGES_Server.rc | 2 +- 45 files changed, 4362 insertions(+), 134 deletions(-) create mode 100644 Source/GUIBase/uViewDocumentos.dfm create mode 100644 Source/GUIBase/uViewDocumentos.pas create mode 100644 Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_Controller.res create mode 100644 Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_controller.dpk create mode 100644 Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_controller.dproj create mode 100644 Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_controller.drc create mode 100644 Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_controller.rc create mode 100644 Source/Modulos/Gestion de documentos/Controller/uGestorDocumentosController.pas create mode 100644 Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.dpk create mode 100644 Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.dproj create mode 100644 Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.drc create mode 100644 Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.rc create mode 100644 Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.res create mode 100644 Source/Modulos/Gestion de documentos/Data/uDataModuleGestorDocumentos.dfm create mode 100644 Source/Modulos/Gestion de documentos/Data/uDataModuleGestorDocumentos.pas create mode 100644 Source/Modulos/Gestion de documentos/Servidor/srvGestorDocumentos_Impl.dfm create mode 100644 Source/Modulos/Gestion de documentos/Servidor/srvGestorDocumentos_Impl.pas create mode 100644 Source/Modulos/Presupuestos de cliente/Views/uViewDocumentosPresupuestoCliente.dfm create mode 100644 Source/Modulos/Presupuestos de cliente/Views/uViewDocumentosPresupuestoCliente.pas diff --git a/Build/Build.fbp5 b/Build/Build.fbp5 index 25cac9af..7cfca2bf 100644 --- a/Build/Build.fbp5 +++ b/Build/Build.fbp5 @@ -6539,6 +6539,665 @@ Comments= + + + + 0 + + + + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + False + True + + False + + False + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 1 + + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + + False + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 1 + + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + + False + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 1 + + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + False + True + + False + + False + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 1 + + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + False + True + + False + + False + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 1 + + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + diff --git a/Database/ACANA.FDB b/Database/ACANA.FDB index b0490d4cee479d9878d2ab8abd904dcb68f83cd3..d684889bd039d20716db21992a8c71a63f04e608 100644 GIT binary patch delta 240 zcmYL;xlRI6008%aAc(l@ec!Hli`OQ$e!%>Tf3OtOdc@dorLi;tDfki!{{;#YCz)b0 zdHx&nv1y3z+k;{BPtwTCfA#(pMcwi1y{4^Fci2IKl%y;ZQjw}mN=@oAB@LODrp!nz ziOkBJ%*%o-%91S0imb|-tjmUM%9d=)j_k^w?8||qawsi1l4CiMQ#q4!xsXd~%avTq fjoivzkL>3;eD*6Z*;n?b delta 234 zcmYMnIZgs$06^h?KoCR)+;;^TaY4mx5-;%zZ(&JAMKTnxbt&knOe`(bt6)LRHKZ`{ zC13HZtxVsWE4X8HEw1mqdpQzMzS&^Imyec6r?C~Qj&RD zkVPp=MXItS%d#S?vL@@YA)B%#+p;6OvM2j;AT_DWp)@3xBWcR9oXDx1NlVVkaw~VABwx?b<9F^QdCz}z9*S?nWcUl#5Jvt0 diff --git a/Source/Base/Configuracion/uDataModuleConfiguracion.dfm b/Source/Base/Configuracion/uDataModuleConfiguracion.dfm index 1f45ec7f..2f98e4e8 100644 --- a/Source/Base/Configuracion/uDataModuleConfiguracion.dfm +++ b/Source/Base/Configuracion/uDataModuleConfiguracion.dfm @@ -1,27 +1,10 @@ object dmConfiguracion: TdmConfiguracion OldCreateOrder = False Height = 160 - Width = 220 - object ROChannel: TROWinInetHTTPChannel - UserAgent = 'RemObjects SDK' - TargetURL = 'http://localhost:8099/bin' - Login.Username = '123456' - Login.Password = 'sa' - KeepConnection = True - ServerLocators = <> - DispatchOptions = [] - Left = 42 - Top = 16 - end - object ROMessage: TROBinMessage - Left = 42 - Top = 88 - end + Width = 100 object RORemoteService: TRORemoteService - Message = ROMessage - Channel = ROChannel ServiceName = 'srvConfiguracion' - Left = 136 + Left = 24 Top = 16 end end diff --git a/Source/Base/Configuracion/uDataModuleConfiguracion.pas b/Source/Base/Configuracion/uDataModuleConfiguracion.pas index dda614ef..1ba6b9fd 100644 --- a/Source/Base/Configuracion/uDataModuleConfiguracion.pas +++ b/Source/Base/Configuracion/uDataModuleConfiguracion.pas @@ -4,7 +4,7 @@ interface uses SysUtils, Classes, uRORemoteService, uDADataTable, - uDABINAdapter, uROClient, uROBinMessage, uROWinInetHttpChannel, IniFiles, + uDABINAdapter, uROClient, IniFiles, uDADataStreamer; const @@ -12,13 +12,11 @@ const type TdmConfiguracion = class(TDataModule) - ROChannel: TROWinInetHTTPChannel; - ROMessage: TROBinMessage; RORemoteService: TRORemoteService; private FIniFile : TIniFile; public - function DarValor(const CODIGO: String): Variant; + function DarValor(const CODIGO: String; const ValorPorDefecto: String = ''): Variant; procedure LeerConfiguracion; procedure SalvarConfiguracion; constructor Create(AOwner: TComponent); override; @@ -47,17 +45,19 @@ var begin inherited; AIniFile := GetSpecialFolderPath(CSIDL_COMMON_APPDATA); //[All Users]\Application Data - AIniFile := AIniFile + PathDelim + 'Rodax Software' + PathDelim + GetAppName + PathDelim; + AIniFile := AIniFile + PathDelim + GetAppName + PathDelim; if not DirectoryExists(AIniFile) then - ForceDirectories(AIniFile); - + CreateDir(AIniFile); + FIniFile := TIniFile.Create(AIniFile + CONFIG_INI_FILE); end; -function TdmConfiguracion.DarValor(const CODIGO: String): Variant; +function TdmConfiguracion.DarValor(const CODIGO: String; const ValorPorDefecto: String = ''): Variant; begin - Result := (RORemoteService as IsrvConfiguracion).DarValor(CODIGO); + RORemoteService.Channel := dmConexion.ROChannel; + RORemoteService.Message := dmConexion.ROMessage; + Result := (RORemoteService as IsrvConfiguracion).DarValor(CODIGO, ValorPorDefecto); end; destructor TdmConfiguracion.Destroy; diff --git a/Source/Base/Utiles/uSistemaFunc.pas b/Source/Base/Utiles/uSistemaFunc.pas index 5d792e77..cb24ff97 100644 --- a/Source/Base/Utiles/uSistemaFunc.pas +++ b/Source/Base/Utiles/uSistemaFunc.pas @@ -20,33 +20,45 @@ --------------------------------------------------------------------------- =============================================================================== } - unit uSistemaFunc; interface +uses SysUtils, Classes; + { Funciones del sistema } function Ejecutar (const LineaComando: String; Oculto, Esperar: Boolean) : Boolean; +procedure EscribirEnFichero (NombreFichero, Texto : string); function DarRutaTemporal : String; +function DarDirectorioTemporal : String; function DarFicheroTemporal : String; function DarFicheroJPGTemporal : String; function DarFicheroBMPTemporal : String; function DarFicheroTIFFTemporal : String; -function DarFicheroExportar (var Fichero : String) : Boolean; -function PreguntarFicheroExcelExportar (var Fichero : String) : Boolean; +function DarFicheroHTMLTemporal : String; +function DarFicheroExcelTemporal : String; +function DarFicheroPDFTemporal : String; overload; +function DarFicheroPDFTemporal(const AFileName : String) : String; overload; function DarVersionFichero (Executable : String) : String; function DarFechaFichero (Executable : String) : String; procedure CopiarFichero(const Origen, Destino: string); -procedure DoDelTree( TheDir : String); procedure Deltree(DirToKill : String; KillChoosenDir : Boolean); -function GetSpecialFolderPath(folder : integer) : string; +function GetSpecialFolderPath(folder : integer) : string; +function PreguntarRuta(const ATitulo: String; const AComentario: String; var ARuta: String): Boolean; +function PreguntarFicheroWordExportar (var Fichero : String) : Boolean; +function PreguntarFicheroExcelExportar (var Fichero : String) : Boolean; +function EscapeIllegalChars(AFileName: string): string; +function FindFile(const filespec: TFileName; attributes: integer = faReadOnly Or faHidden Or faSysFile Or faArchive): TStringList; + implementation uses - SysUtils, Windows, Dialogs, JclFileUtils, - Messages, Classes, Graphics, Controls, Forms, - StdCtrls, SHFolder; + Windows, Dialogs, JclFileUtils, + Messages, Graphics, Controls, Forms, + StdCtrls, SHFolder, cxShellBrowserDialog, + cxLookAndFeels, uStringsUtils; + function GetSpecialFolderPath(folder : integer) : string; const @@ -60,6 +72,18 @@ begin Result := ''; end; +procedure EscribirEnFichero (NombreFichero, Texto : string); +var + FicheroAux : TextFile; +begin + SysUtils.DeleteFile(NombreFichero); + AssignFile(FicheroAux, NombreFichero); + Rewrite(FicheroAux); + WriteLn(FicheroAux, Texto); + CloseFile(FicheroAux); +end; + + function Ejecutar (const LineaComando: String; Oculto, Esperar: Boolean): Boolean; var StartupInfo : TStartupInfo; @@ -124,6 +148,30 @@ begin Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'tif'; end; +function DarFicheroPDFTemporal : String; +var + Cadena : String; +begin + Cadena := DarFicheroTemporal; + Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'pdf'; +end; + +function DarFicheroPDFTemporal(const AFileName : String) : String; +var + Cadena : String; + RutaTmp : string; +begin + if not EsCadenaVacia(AFileName) then + begin + RutaTmp := DarRutaTemporal; + Cadena := ExtractFileName(AFileName); + Cadena := StringReplace(Cadena, ExtractFileExt(Cadena), '', []); + Result := RutaTmp + Cadena + '.pdf'; + end + else + Result := DarFicheroPDFTemporal; +end; + function DarFicheroBMPTemporal : String; var Cadena : String; @@ -132,6 +180,22 @@ begin Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'bmp'; end; +function DarFicheroExcelTemporal : String; +var + Cadena : String; +begin + Cadena := DarFicheroTemporal; + Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'xls'; +end; + +function DarFicheroHTMLTemporal : String; +var + Cadena : String; +begin + Cadena := DarFicheroTemporal; + Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'html'; +end; + function DarFicheroJPGTemporal : String; var Cadena : String; @@ -140,7 +204,7 @@ begin Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'jpg'; end; -function DarFicheroExportar (var Fichero : String) : Boolean; +function PreguntarFicheroWordExportar (var Fichero : String) : Boolean; var DialogoSalvar : TSaveDialog; begin @@ -161,6 +225,28 @@ begin end; end; +function PreguntarFicheroExcelExportar (var Fichero : String) : Boolean; +var + DialogoSalvar : TSaveDialog; +begin + DialogoSalvar := TSaveDialog.Create(NIL); + try + with DialogoSalvar do + begin + DefaultExt := 'xls'; + Filter := 'Documento de Excel (*.xls)|*.xls'; + FilterIndex := 0; + Options := [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofEnableSizing]; + end; + Result := DialogoSalvar.Execute; + if Result then + Fichero := DialogoSalvar.FileName; + finally + DialogoSalvar.Free; + end; +end; + + function DarVersionFichero (Executable : String) : String; var Obj : TJclFileVersionInfo; @@ -173,27 +259,6 @@ begin end; end; -function PreguntarFicheroExcelExportar (var Fichero : String) : Boolean; -var - DialogoSalvar : TSaveDialog; -begin - DialogoSalvar := TSaveDialog.Create(NIL); - try - with DialogoSalvar do - begin - DefaultExt := 'xls'; - Filter := 'Documento de Excel (*.xls)|*.xls'; - FilterIndex := 0; - Options := [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofEnableSizing]; - end; - Result := DialogoSalvar.Execute; - if Result then - Fichero := DialogoSalvar.FileName; - finally - DialogoSalvar.Free; - end; -end; - function DarFechaFichero (Executable : String) : String; var FileTime, LocalFileTime : TFileTime; @@ -271,5 +336,104 @@ begin end; +function PreguntarRuta(const ATitulo: String; const AComentario: String; var ARuta: String): Boolean; +var + cxShellBrowserDialog1: TcxShellBrowserDialog; +begin + cxShellBrowserDialog1 := TcxShellBrowserDialog.Create(NIL); + try + with cxShellBrowserDialog1 do + begin + Name := 'cxShellBrowserDialog1'; + FolderLabelCaption := AComentario; + LookAndFeel.NativeStyle := True; + LookAndFeel.Kind := lfStandard; + Title := ATitulo; + + Result := cxShellBrowserDialog1.Execute; + ARuta := cxShellBrowserDialog1.Path; + end; + finally + FreeANDNIL(cxShellBrowserDialog1); + end; +end; + + +function EscapeIllegalChars(AFileName: string): string; +var + x: integer; +const + IllegalCharSet: set of char = + ['|','<','>','\','^','+','=','?','/','[',']','"',';',',','*']; +begin + for x := 1 to Length(AFileName) do + if AFileName[x] in IllegalCharSet then + AFileName[x] := '_'; + Result := AFileName; +end; + +function FindFile(const filespec: TFileName; attributes: integer): TStringList; +var + spec: string; + list: TStringList; + +procedure RFindFile(const folder: TFileName); +var + SearchRec: TSearchRec; +begin + // Locate all matching files in the current + // folder and add their names to the list + if FindFirst(folder + spec, attributes, SearchRec) = 0 then begin + try + repeat + if (SearchRec.Attr and faDirectory = 0) or + (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then + list.Add(folder + SearchRec.Name); + until FindNext(SearchRec) <> 0; + except + SysUtils.FindClose(SearchRec); + raise; + end; + SysUtils.FindClose(SearchRec); + end; + // Now search the subfolders + if FindFirst(folder + '*', attributes + Or faDirectory, SearchRec) = 0 then + begin + try + repeat + if ((SearchRec.Attr and faDirectory) <> 0) and + (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then + RFindFile(folder + SearchRec.Name + '\'); + until FindNext(SearchRec) <> 0; + except + SysUtils.FindClose(SearchRec); + raise; + end; + SysUtils.FindClose(SearchRec); + end; +end; // procedure RFindFile inside of FindFile + +begin // function FindFile + list := TStringList.Create; + try + spec := ExtractFileName(filespec); + RFindFile(ExtractFilePath(filespec)); + Result := list; + except + list.Free; + raise; + end; +end; + +function DarDirectorioTemporal : String; +var + Cadena: String; +begin + Cadena := ExtractFileName(DarFicheroTemporal); + Cadena := StringReplace(Cadena, ExtractFileExt(Cadena), '', []); + Result := DarRutaTemporal + Cadena + '\'; +end; + + end. - \ No newline at end of file diff --git a/Source/Base/Utiles/uStringsUtils.pas b/Source/Base/Utiles/uStringsUtils.pas index 5ef88025..68ad7557 100644 --- a/Source/Base/Utiles/uStringsUtils.pas +++ b/Source/Base/Utiles/uStringsUtils.pas @@ -7,6 +7,7 @@ uses const DISPLAY_EUROS2 = '#,0.00 €'; + DISPLAY_PORCENTAJE = '#,0.00%'; procedure StringToStrings(Source:string; Delimiter:char; Target:TStrings); function StringsToString(Source:TStrings; Delimiter:char):string; diff --git a/Source/GUIBase/GUIBase.dpk b/Source/GUIBase/GUIBase.dpk index 8e11d17baf0cf6e1eba09d9c684b2f5374d31724..d1bd8b57d4320c1e352e76decbf90524634663e7 100644 GIT binary patch delta 307 zcmZ8bJqp4w7!?PHLIX)X)~{{X0pNi4$^fLMG!amof^OFcSj8KXk}nN|NwhC=D@1HP?OrNz1$BFPfSu<>Nl+bwYwl*wFu2vQ?VB^RG=qyi|R{iKVw*}7U83qqzem)6v` zD&ykKA7$NZ#3olPC^-fk6{%jwb3hqr{b_y%^A(pNP C8CsVB delta 16 YcmbO#@>g)fU8c=znMK$pb8_(j06F&sb^rhX diff --git a/Source/GUIBase/GUIBase.dproj b/Source/GUIBase/GUIBase.dproj index 23343198..75f5b358 100644 --- a/Source/GUIBase/GUIBase.dproj +++ b/Source/GUIBase/GUIBase.dproj @@ -1,4 +1,5 @@ - + + {0ca27a95-0b81-4724-84bf-8f8ed4e421ae} GUIBase.dpk @@ -57,23 +58,32 @@ MainSource - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + +
fDialogBase
@@ -124,6 +134,10 @@
frViewDetallesGenerico
TFrame
+ +
frViewGrid
+ TFrame +
frViewFiltroBase
TFrame @@ -160,6 +174,11 @@
frViewTotales
TFrame
+ + + + +
diff --git a/Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_controller.drc b/Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_controller.drc new file mode 100644 index 00000000..f6a1d26a --- /dev/null +++ b/Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_controller.drc @@ -0,0 +1,16 @@ +/* VER185 + Generated by the CodeGear Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + +/* C:\Codigo Acana\Source\Modulos\Gestion de documentos\Controller\GestorDocumentos_Controller.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf36A.tmp */ diff --git a/Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_controller.rc b/Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_controller.rc new file mode 100644 index 00000000..153736af --- /dev/null +++ b/Source/Modulos/Gestion de documentos/Controller/GestorDocumentos_controller.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.0.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/Source/Modulos/Gestion de documentos/Controller/uGestorDocumentosController.pas b/Source/Modulos/Gestion de documentos/Controller/uGestorDocumentosController.pas new file mode 100644 index 00000000..5b46d02f --- /dev/null +++ b/Source/Modulos/Gestion de documentos/Controller/uGestorDocumentosController.pas @@ -0,0 +1,110 @@ +unit uGestorDocumentosController; + +interface + +uses + Classes, uROTypes, uControllerBase, uDataModuleGestorDocumentos; + +type + IGestorDocumentosController = interface(IControllerBase) + ['{75EC4D1B-A7A2-4C81-B2DA-8688240D6EC2}'] + function DarListaDocumentos(const ID: Integer): TStringList; + function DescargarFichero(const ID:Integer; const NombreFichero: String; const DestinoFichero: String): Boolean; + function SubirFichero(const ID:Integer; const NombreFichero: String; const Fichero: Binary): Boolean; + procedure SincronizarDocumentos(const ID: Integer; FListaDocumentos: TStringList; Directorio: String); + function EliminarDirectorio(const ID: Integer): Boolean; + end; + + TGestorDocumentosController = class(TControllerBase, IGestorDocumentosController) + protected + FDataModule : IDataModuleGestorDocumentos; + + //Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de + //este controller + procedure AsignarDataModule; virtual; + + public + constructor Create; override; + destructor Destroy; override; + + function DarListaDocumentos(const ID: Integer): TStringList; + function DescargarFichero(const ID:Integer; const NombreFichero: String; const DestinoFichero: String): Boolean; + function SubirFichero(const ID:Integer; const NombreFichero: String; const Fichero: Binary): Boolean; + procedure SincronizarDocumentos(const ID: Integer; FListaDocumentos: TStringList; Directorio: String); + function EliminarDirectorio(const ID: Integer): Boolean; + end; + +implementation +{ TGestorDocumentosController } + +uses SysUtils, Dialogs; + +procedure TGestorDocumentosController.AsignarDataModule; +begin + FDataModule := TDataModuleGestorDocumentos.Create(Nil); +end; + +constructor TGestorDocumentosController.Create; +begin + inherited; + AsignarDataModule; +end; + +function TGestorDocumentosController.DarListaDocumentos( + const ID: Integer): TStringList; +begin + Result := FDataModule.DarListaDocumentos(ID); +end; + +function TGestorDocumentosController.DescargarFichero(const ID: Integer; + const NombreFichero, DestinoFichero: String): Boolean; +begin + Result := FDataModule.DescargarFichero(ID, NombreFichero, DestinoFichero); +end; + +destructor TGestorDocumentosController.Destroy; +begin + FDataModule := Nil; + inherited; +end; + +function TGestorDocumentosController.EliminarDirectorio(const ID: Integer): Boolean; +begin + Result := FDataModule.EliminarID(ID); +end; + +procedure TGestorDocumentosController.SincronizarDocumentos(const ID: Integer; + FListaDocumentos: TStringList; Directorio: String); +var + ListaDocumentosServidor: TStringList; + ANombreFichero: String; + AFichero: Binary; + i, j: Integer; +begin + //Eliminamos todos los documentos del servidor que ya no existan en el cliente. + ListaDocumentosServidor := DarListaDocumentos(ID); + for i:= 0 to ListaDocumentosServidor.Count - 1 do + if not FListaDocumentos.Find(ListaDocumentosServidor.Strings[i], j) then + if not FDataModule.EliminarFichero(ID, ListaDocumentosServidor.Strings[i]) then + showmessage('Error al borrar fichero' + ListaDocumentosServidor.Strings[i]); + + //Subimos todos los ficheros que halla al servidor (de momento no se miran fechas) + for i := 0 to FListaDocumentos.Count - 1 do + begin + ANombreFichero := Directorio + FListaDocumentos.Strings[i]; + if FileExists(ANombreFichero) then + begin + AFichero := Binary.Create; + AFichero.LoadFromFile(ANombreFichero); + SubirFichero(ID, ExtractFileName(ANombreFichero), AFichero); + end; + end; +end; + +function TGestorDocumentosController.SubirFichero(const ID: Integer; + const NombreFichero: String; const Fichero: Binary): Boolean; +begin + Result := FDataModule.SubirFichero(ID, NombreFichero, Fichero); +end; + +end. diff --git a/Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.dpk b/Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.dpk new file mode 100644 index 0000000000000000000000000000000000000000..2e924952b6b1c8fcccf5a893e0f460c504e24ccf GIT binary patch literal 618 zcmaKqJ!``-5QaM&{2w#~0v$pN9SWV!*4aHGOGZ-MBug=gD50&L#`YBQ-|INB8&X;g z;&^oT-j}xd>OFsREOu30?s&OsK3!3l)$2O1^C#c)z5PhD+sV#VhocRGV#yv)wlSzJ zDQTFJ9SM{Yn1Ns_iaNkCn8hR`)qCLFqU6ZULRy&jl#*0wi=2anfvNBr!|9+cR0zT> zl0b + + + {38eef566-1895-4bdd-8007-f92f5e32cce6} + GestorDocumentos_data.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\GestorDocumentos_data.bpl + + + 7.0 + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + RELEASE + + + 7.0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0GestorDocumentos_data.dpk + + + + + MainSource + + + +
DataModuleGestorDocumentos
+
+
+
+ diff --git a/Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.drc b/Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.drc new file mode 100644 index 00000000..0febc65f --- /dev/null +++ b/Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.drc @@ -0,0 +1,17 @@ +/* VER185 + Generated by the CodeGear Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + +/* C:\Codigo Acana\Source\Modulos\Gestion de documentos\Data\uDataModuleGestorDocumentos.dfm */ +/* C:\Codigo Acana\Source\Modulos\Gestion de documentos\Data\GestorDocumentos_data.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf368.tmp */ diff --git a/Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.rc b/Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.rc new file mode 100644 index 00000000..153736af --- /dev/null +++ b/Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.0.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.res b/Source/Modulos/Gestion de documentos/Data/GestorDocumentos_data.res new file mode 100644 index 0000000000000000000000000000000000000000..8b251f312bcccec5485024f6fe8d80e1cdf25746 GIT binary patch literal 384 zcmZ9HOA3Ne6ox;+L5PEv(4cV`IIrjdPAV##hV&wc1g%+%X(R2Xc{`~7t6e0Ioa?#% zkMj%AQhz>WYy7LeWAUaqx~Kv?-;(-Hs4-^ATIZOBrid9+-6Ne7&88mi>kUR4lo#jxZ;#*s4zxg9yNlk=H9sqkCD2^cEXKpiTBNfgkKpXJBWWaLt(Qkv@0 w5yv*t82((Wlr2{_+FDoDHKW2QCXvc+s**ul{{$ + Height = 113 + Width = 254 +end diff --git a/Source/Modulos/Gestion de documentos/Servidor/srvGestorDocumentos_Impl.pas b/Source/Modulos/Gestion de documentos/Servidor/srvGestorDocumentos_Impl.pas new file mode 100644 index 00000000..d37745d4 --- /dev/null +++ b/Source/Modulos/Gestion de documentos/Servidor/srvGestorDocumentos_Impl.pas @@ -0,0 +1,222 @@ +unit srvGestorDocumentos_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} FactuGES_Intf; + +type + { TsrvGestorDocumentos } + TsrvGestorDocumentos = class(TDataAbstractService, IsrvGestorDocumentos) + private + function DarRutaDocumentos: string; + + protected + { IsrvGestorDocumentos methods } + function DarListaFicheros(const Almacen: TRdxAlmacenes; const ID: Integer): StringArray; + function DescargarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Binary; + function SubirFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String; const Fichero: Binary): Boolean; + function EliminarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Boolean; + function EliminarID(const Almacen: TRdxAlmacenes; const ID: Integer): Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, srvConfiguracion_Impl, uSistemaFunc, Dialogs, Forms; + +const + CTE_VALOR = 'RUTA_DOCUMENTOS'; + CTE_DOCUMENTOS = 'DOCUMENTOS'; + CTE_ALMACEN_PRESUPUESTOS = '\Presupuestos\'; + + +procedure Create_srvGestorDocumentos(out anInstance : IUnknown); +begin + anInstance := TsrvGestorDocumentos.Create(nil); +end; + +{ + +Sample call + +You can try this function placing a ListBox and a button on a form and adding this code to the OnClick event of the button: + +procedure TForm1.Button1Click(Sender: TObject); +var + list: TStringList; +begin + list := FindFile('C:\Delphi\*.pas'); + ListBox1.Items.Assign(list); + list.Free; +end; +} + +{ srvGestorDocumentos } +function TsrvGestorDocumentos.DarListaFicheros(const Almacen: TRdxAlmacenes; const ID: Integer): StringArray; +var + Ruta: String; + ListaFicheros: TStringList; + i: Integer; + +begin + Ruta := DarRutaDocumentos; + try + case Almacen of + TRdxAlmacenes_Presupuestos: + begin + Ruta := Ruta + CTE_ALMACEN_PRESUPUESTOS + IntToStr(ID) + '\*.*'; + ListaFicheros := FindFile(Ruta); + Result := StringArray.Create(); + for i := 0 to ListaFicheros.Count - 1 do + Result.Add(ExtractFileName(ListaFicheros.Strings[i])); + end; + end; + + finally + if Assigned(ListaFicheros) then + FreeAndNil(ListaFicheros); + end; +end; + +function TsrvGestorDocumentos.DarRutaDocumentos: string; +var + AConfiguracionService : IsrvConfiguracion; + Intf : IInterface; + AClientID : TGUID; + Ruta: String; + +begin + CreateGUID(AClientID); + try + GetClassFactory('srvConfiguracion').CreateInstance(AClientID, Intf); + AConfiguracionService := Intf as IsrvConfiguracion; + Result := AConfiguracionService.darValor(CTE_VALOR, (ExtractFilePath(Application.ExeName) + CTE_DOCUMENTOS)); + finally + AConfiguracionService := Nil; + end; +end; + +function TsrvGestorDocumentos.DescargarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Binary; +var + Ruta: String; + +begin + Result := Binary.Create; + + try + Ruta := DarRutaDocumentos; + case Almacen of + TRdxAlmacenes_Presupuestos: + begin + Ruta := Ruta + CTE_ALMACEN_PRESUPUESTOS + IntToStr(ID) + '\' + NombreFichero; + Result.LoadFromFile(Ruta); + end; + end; + finally + // + end; +end; + +function TsrvGestorDocumentos.EliminarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; +const NombreFichero: String): Boolean; +var + Ruta: String; + +begin + Result := False; + + try + Ruta := DarRutaDocumentos; + case Almacen of + TRdxAlmacenes_Presupuestos: + begin + Ruta := Ruta + CTE_ALMACEN_PRESUPUESTOS + IntToStr(ID) + '\' + NombreFichero; + if FileExists(Ruta) then + Result := DeleteFile(Ruta) + else + Result := True; //Ya ha sido borrado + end; + end; + finally + // + end; +end; + +function TsrvGestorDocumentos.EliminarID(const Almacen: TRdxAlmacenes; const ID: Integer): Boolean; +var + Ruta: String; + +begin + Result := False; + + try + Ruta := DarRutaDocumentos; + case Almacen of + TRdxAlmacenes_Presupuestos: + begin + Ruta := Ruta + CTE_ALMACEN_PRESUPUESTOS + IntToStr(ID); + if DirectoryExists(Ruta) then + Deltree(Ruta, True); + Result := True; + end; + end; + finally + // + end; +end; + +function TsrvGestorDocumentos.SubirFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String; + const Fichero: Binary): Boolean; +var + Ruta: String; + +begin + Result := False; + try + Ruta := DarRutaDocumentos; + if not DirectoryExists(Ruta) then + CreateDir(Ruta); + + case Almacen of + TRdxAlmacenes_Presupuestos: + begin + Ruta := Ruta + CTE_ALMACEN_PRESUPUESTOS; + if not DirectoryExists(Ruta) then + CreateDir(Ruta); + + Ruta := Ruta + IntToStr(ID); + if not DirectoryExists(Ruta) then + CreateDir(Ruta); + + Ruta := Ruta + '\' + NombreFichero; + Fichero.SaveToFile(Ruta); + Result := True; + end; + end; + finally + // + end; +end; + +initialization + TROClassFactory.Create('srvGestorDocumentos', Create_srvGestorDocumentos, TsrvGestorDocumentos_Invoker); + +finalization + +end. diff --git a/Source/Modulos/Presupuestos de cliente/Controller/PresupuestosCliente_controller.dpk b/Source/Modulos/Presupuestos de cliente/Controller/PresupuestosCliente_controller.dpk index d7b4e52d68ec2c92e82a7051ce5b85b5b8329148..8d51711b566cf35d6b8910550f5f92cfba4a1807 100644 GIT binary patch delta 45 zcmaFP-OjTilSx5`mrFsxJ+-(bzsMy&ximL5uOz=XJ~=Delphi.Personality Package -FalseTrueFalseTrueFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0PresupuestosCliente_controller.dpk +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0PresupuestosCliente_controller.dpk MainSource - - - - - + + + + + + @@ -548,4 +549,4 @@ mtException_AntiFreeze0="The application seems to be frozen." Count mtInvalidEmailMsg=1 mtInvalidEmailMsg0="Invalid email." TextsCollection=English -EurekaLog Last Line --> \ No newline at end of file +EurekaLog Last Line --> diff --git a/Source/Modulos/Presupuestos de cliente/Controller/uPresupuestosClienteController.pas b/Source/Modulos/Presupuestos de cliente/Controller/uPresupuestosClienteController.pas index bbc3e2b2..182aaac8 100644 --- a/Source/Modulos/Presupuestos de cliente/Controller/uPresupuestosClienteController.pas +++ b/Source/Modulos/Presupuestos de cliente/Controller/uPresupuestosClienteController.pas @@ -6,7 +6,8 @@ interface uses SysUtils, uDADataTable, uEditorDBItem, uControllerBase, uIDataModulePresupuestosCliente, uClientesController, - uDetallesPresupuestoClienteController, uBizPresupuestosCliente, uBizDireccionesContacto, + uDetallesPresupuestoClienteController, uGestorDocumentosController, + uBizPresupuestosCliente, uBizDireccionesContacto, uBizDetallesPresupuestoCliente; type @@ -20,6 +21,11 @@ type procedure SetDetallesController(const Value: IDetallesPresupuestoClienteController); property DetallesController: IDetallesPresupuestoClienteController read GetDetallesController write SetDetallesController; + //GESTION_DOCUMENTOS + function GetGestorDocumentosController: IGestorDocumentosController; + procedure SetGestorDocumentosController(const Value: IGestorDocumentosController); + property GestorDocumentosController: IGestorDocumentosController read GetGestorDocumentosController write SetGestorDocumentosController; + procedure RecuperarCliente(APresupuesto : IBizPresupuestoCliente); function Buscar(const ID: Integer): IBizPresupuestoCliente; function BuscarTodos: IBizPresupuestoCliente; @@ -58,12 +64,17 @@ type FDataModule : IDataModulePresupuestosCliente; FClienteController : IClientesController; FDetallesController : IDetallesPresupuestoClienteController; + FGestorDocumentosController : IGestorDocumentosController; function GetClienteController: IClientesController; procedure SetClienteController(const Value: IClientesController); function GetDetallesController: IDetallesPresupuestoClienteController; procedure SetDetallesController(const Value: IDetallesPresupuestoClienteController); + //GESTION_DOCUMENTOS + function GetGestorDocumentosController: IGestorDocumentosController; + procedure SetGestorDocumentosController(const Value: IGestorDocumentosController); + //Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de //este controller procedure AsignarDataModule; virtual; @@ -77,6 +88,7 @@ type public property ClienteController: IClientesController read GetClienteController write SetClienteController; property DetallesController: IDetallesPresupuestoClienteController read GetDetallesController write SetDetallesController; + property GestorDocumentosController: IGestorDocumentosController read GetGestorDocumentosController write SetGestorDocumentosController; constructor Create; override; destructor Destroy; override; @@ -222,6 +234,10 @@ begin FClienteController := TClientesController.Create; FDetallesController := TDetallesPresupuestoClienteController.Create; + + //GESTION_DOCUMENTOS + FGestorDocumentosController := TGestorDocumentosController.Create; + FDetallesController.addObservador(Self); end; @@ -252,6 +268,9 @@ begin FDataModule := Nil; FClienteController := Nil; FDetallesController := Nil; + + //GESTION_DOCUMENTOS + FGestorDocumentosController := Nil; inherited; end; @@ -477,6 +496,9 @@ begin //Siempre eliminaremos el seleccionado if EsEliminable(APresupuesto) then begin + //GESTION_DOCUMENTOS + FGestorDocumentosController.EliminarDirectorio(APresupuesto.ID); + APresupuesto.Delete; bEliminado := True; end; @@ -491,6 +513,9 @@ begin begin if EsEliminable(APresupuesto) then begin + //GESTION_DOCUMENTOS + FGestorDocumentosController.EliminarDirectorio(APresupuesto.ID); + APresupuesto.Delete; bEliminado := True end @@ -641,6 +666,11 @@ begin FDetallesController := Value; end; +procedure TPresupuestosClienteController.SetGestorDocumentosController(const Value: IGestorDocumentosController); +begin + FGestorDocumentosController := Value; +end; + {procedure TPresupuestosClienteController.SetID_Tienda(APresupuesto: IBizPresupuestoCliente; const ID_Tienda: Integer; Tienda: Variant); var EnEdicion: Boolean; @@ -846,4 +876,9 @@ begin Result := FDetallesController; end; +function TPresupuestosClienteController.GetGestorDocumentosController: IGestorDocumentosController; +begin + Result := FGestorDocumentosController; +end; + end. diff --git a/Source/Modulos/Presupuestos de cliente/PresupuestosCliente_Group.groupproj b/Source/Modulos/Presupuestos de cliente/PresupuestosCliente_Group.groupproj index 7940ae19..3aafe21f 100644 --- a/Source/Modulos/Presupuestos de cliente/PresupuestosCliente_Group.groupproj +++ b/Source/Modulos/Presupuestos de cliente/PresupuestosCliente_Group.groupproj @@ -14,6 +14,8 @@ + + @@ -107,6 +109,24 @@ + + + + + + + + + + + + + + + + + + @@ -162,13 +182,13 @@ - + - + - +
\ No newline at end of file diff --git a/Source/Modulos/Presupuestos de cliente/Views/PresupuestosCliente_view.dpk b/Source/Modulos/Presupuestos de cliente/Views/PresupuestosCliente_view.dpk index 818243b1e1839dae5430d51fd5d83b638f5b59e9..72f72c029090bebdc0a7216b86f42f2abed38e14 100644 GIT binary patch delta 253 zcmcb^_fB9#4pY4jFPDNsQArM%E=z{c$rV1CNkxf8l`e*cV2PB9kc`yaR0P-E#WNtM zv=}B3keBY9pIeZhmzq}s6f^*93h;A}hp~YsCnlHVB_-yiz-+1jF+>$gl8mzBQ=nQ( zk}5##%{fd@SVX`IOT#i#%U$x5OLKun=NC`rW09D=fQ6L + + {9e558626-cf49-4cff-a178-e12c186758ac} PresupuestosCliente_view.dpk @@ -41,9 +42,7 @@ Delphi.Personality Package -FalseTrueFalseTrueFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 - - +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 Intraweb 8.0 Design Package for Borland Development Studio 2006 PresupuestosCliente_view.dpk @@ -52,12 +51,23 @@ MainSource - - - - - - + + + + + + + + + + + + + + + + +
fEditorElegirArticulosPresupuestoCliente
TfEditorElegirArticulosPedidoCliente @@ -83,6 +93,10 @@
frViewDetallesPresupuestoCliente
TFrame
+ +
frViewDocumentosPresupuestoCliente
+ TFrame +
frViewElegirArticulosPresupuestosCliente
TFrame diff --git a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.dfm b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.dfm index 9151bac5..4d109859 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.dfm @@ -227,6 +227,7 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente inherited cxGrid: TcxGrid Width = 660 Height = 359 + ExplicitTop = 72 ExplicitWidth = 660 ExplicitHeight = 359 end @@ -243,10 +244,6 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente object pagInicidencias: TTabSheet Caption = 'Incidencias' ImageIndex = 2 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 inline frViewIncidenciasCli: TfrViewIncidencias Left = 0 Top = 0 @@ -320,6 +317,37 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente Width = 660 end end + object pagDocumentos: TTabSheet + Caption = 'Documentos' + ImageIndex = 5 + inline frViewDocumentosPresupuestoCliente1: TfrViewDocumentosPresupuestoCliente + Left = 0 + Top = 0 + Width = 660 + Height = 431 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 660 + ExplicitHeight = 431 + inherited TBXDock: TTBXDock + Width = 660 + ExplicitWidth = 660 + end + inherited ListView1: TListView + Width = 660 + Height = 408 + ExplicitWidth = 660 + ExplicitHeight = 408 + end + end + end end inherited StatusBar: TJvStatusBar Top = 612 @@ -386,8 +414,8 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente Style.IsFontAssigned = True ExplicitLeft = 164 ExplicitTop = 112 - ExplicitWidth = 93 - Width = 93 + ExplicitWidth = 153 + Width = 153 end inherited ImporteIVA: TcxDBCurrencyEdit Left = 521 @@ -395,8 +423,8 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente Style.IsFontAssigned = True ExplicitLeft = 521 ExplicitTop = 38 - ExplicitWidth = 137 - Width = 137 + ExplicitWidth = 142 + Width = 142 end inherited ImporteTotal: TcxDBCurrencyEdit Left = 451 @@ -404,8 +432,8 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente Style.IsFontAssigned = True ExplicitLeft = 451 ExplicitTop = 112 - ExplicitWidth = 137 - Width = 137 + ExplicitWidth = 212 + Width = 212 end inherited edtDescuento: TcxDBSpinEdit Left = 93 @@ -427,8 +455,8 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente Style.IsFontAssigned = True ExplicitLeft = 450 ExplicitTop = 11 - ExplicitWidth = 92 - Width = 92 + ExplicitWidth = 213 + Width = 213 end inherited edtRE: TcxDBSpinEdit Left = 450 @@ -447,8 +475,8 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente Style.IsFontAssigned = True ExplicitLeft = 521 ExplicitTop = 65 - ExplicitWidth = 56 - Width = 56 + ExplicitWidth = 142 + Width = 142 end inherited eImporteNeto: TcxDBCurrencyEdit Left = 93 @@ -456,8 +484,8 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente Style.IsFontAssigned = True ExplicitLeft = 93 ExplicitTop = 11 - ExplicitWidth = 147 - Width = 147 + ExplicitWidth = 224 + Width = 224 end inherited ePorte: TcxDBCurrencyEdit Left = 93 @@ -466,8 +494,8 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente Style.IsFontAssigned = True ExplicitLeft = 93 ExplicitTop = 139 - ExplicitWidth = 147 - Width = 147 + ExplicitWidth = 224 + Width = 224 end inherited eIVA: TcxDBLookupComboBox Left = 93 @@ -476,8 +504,8 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente DataBinding.DataSource = nil ExplicitLeft = 93 ExplicitTop = 38 - ExplicitWidth = 81 - Width = 81 + ExplicitWidth = 86 + Width = 86 end inherited bTiposIVA: TButton Left = 185 @@ -491,8 +519,8 @@ inherited fEditorPresupuestoCliente: TfEditorPresupuestoCliente DataBinding.DataField = '' ExplicitLeft = 93 ExplicitTop = 65 - ExplicitWidth = 219 - Width = 219 + ExplicitWidth = 224 + Width = 224 end inherited dxLayoutControl1Group_Root: TdxLayoutGroup inherited dxLayoutControl1Group1: TdxLayoutGroup diff --git a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.pas b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.pas index 32b0e0b4..fa1a30bd 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.pas @@ -16,7 +16,10 @@ uses dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar, uViewTotales, uIEditorPresupuestoCliente, uBizPresupuestosCliente, uViewPresupuestoCliente, uViewDetallesDTO, uViewDetallesArticulos, uViewDetallesPresupuestoCliente, - uDAInterfaces, cxRichEdit, cxDBRichEdit; + uDAInterfaces, cxRichEdit, cxDBRichEdit, dxSkinsCore, dxSkinBlack, dxSkinBlue, + dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green, + dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinSilver, + dxSkinsDefaultPainters, uViewDocumentos, uViewDocumentosPresupuestoCliente; type TfEditorPresupuestoCliente = class(TfEditorDBItem, IEditorPresupuestoCliente) @@ -31,6 +34,8 @@ type pagMemoria: TTabSheet; cxDBMemo1: TcxDBMemo; edtPortada: TcxDBRichEdit; + pagDocumentos: TTabSheet; + frViewDocumentosPresupuestoCliente1: TfrViewDocumentosPresupuestoCliente; procedure FormShow(Sender: TObject); procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); @@ -114,6 +119,9 @@ procedure TfEditorPresupuestoCliente.CustomEditorClose(Sender: TObject; var Action: TCloseAction); begin inherited; + //GESTION_DOCUMENTOS + //Este método eliminará el directorio temporal si se ha creado + frViewDocumentosPresupuestoCliente1.actEliminarTodo.Execute; FViewPresupuesto := NIL; FPresupuesto := NIL; end; @@ -186,6 +194,11 @@ begin frViewDetallesPresupuestoCliente1.BeginUpdate; try bEsNuevo := FPresupuesto.EsNuevo; + + //GESTION_DOCUMENTOS + if FController.Guardar(FPresupuesto) then + frViewDocumentosPresupuestoCliente1.actActualizarServidor.Execute; + FController.Guardar(FPresupuesto); finally frViewDetallesPresupuestoCliente1.EndUpdate; @@ -288,6 +301,9 @@ begin ViewPresupuesto.Controller := Controller; ViewPresupuesto.ViewClientePresupuesto.Controller := Controller.ClienteController; frViewDetallesPresupuestoCliente1.Controller := Controller.DetallesController; + + //GESTION_DOCUMENTOS + frViewDocumentosPresupuestoCliente1.Controller := Controller; end; end; @@ -307,6 +323,9 @@ begin ViewPresupuesto.ViewClientePresupuesto.OnClienteChanged := OnClienteChanged; frViewDetallesPresupuestoCliente1.Detalles := FPresupuesto.Detalles; frViewDetallesPresupuestoCliente1.Presupuesto := FPresupuesto; //Para poder sacar los descuento del articulos segun el cliente seleccionado + + //GESTION_DOCUMENTOS + frViewDocumentosPresupuestoCliente1.Presupuesto := FPresupuesto; end; end; end; diff --git a/Source/Modulos/Presupuestos de cliente/Views/uViewDocumentosPresupuestoCliente.dfm b/Source/Modulos/Presupuestos de cliente/Views/uViewDocumentosPresupuestoCliente.dfm new file mode 100644 index 00000000..2da44d07 --- /dev/null +++ b/Source/Modulos/Presupuestos de cliente/Views/uViewDocumentosPresupuestoCliente.dfm @@ -0,0 +1,2 @@ +inherited frViewDocumentosPresupuestoCliente: TfrViewDocumentosPresupuestoCliente +end diff --git a/Source/Modulos/Presupuestos de cliente/Views/uViewDocumentosPresupuestoCliente.pas b/Source/Modulos/Presupuestos de cliente/Views/uViewDocumentosPresupuestoCliente.pas new file mode 100644 index 00000000..381f6e1a --- /dev/null +++ b/Source/Modulos/Presupuestos de cliente/Views/uViewDocumentosPresupuestoCliente.pas @@ -0,0 +1,100 @@ +unit uViewDocumentosPresupuestoCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewDocumentos, ActnList, + TB2Item, TBX, TB2Dock, TB2Toolbar, cxControls, cxContainer, + uBizPresupuestosCliente, uPresupuestosClienteController, ImgList, + PngImageList, ComCtrls, Menus; + +type + IViewDocumentosPresupuestoCliente = interface + ['{564599A5-ECEB-4A1F-8791-22B37282A11C}'] + function GetController : IPresupuestosClienteController; + procedure SetController (const Value : IPresupuestosClienteController); + property Controller : IPresupuestosClienteController read GetController write SetController; + + function GetPresupuesto: IBizPresupuestoCliente; + procedure SetPresupuesto(const Value: IBizPresupuestoCliente); + property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto; + end; + + TfrViewDocumentosPresupuestoCliente = class(TfrViewDocumentos, IViewDocumentosPresupuestoCliente) + private + FController : IPresupuestosClienteController; + FPresupuesto: IBizPresupuestoCliente; + function GetController : IPresupuestosClienteController; + procedure SetController (const Value : IPresupuestosClienteController); + function GetPresupuesto: IBizPresupuestoCliente; + procedure SetPresupuesto(const Value: IBizPresupuestoCliente); + + protected + procedure Sincronizar; override; + function RecuperarFicheroServidor(const NombreFichero: String; const DirectorioDestino: String): Boolean; override; + + public + property Controller : IPresupuestosClienteController read GetController write SetController; + property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto; + + end; + +var + frViewDocumentosPresupuestoCliente: TfrViewDocumentosPresupuestoCliente; + +implementation +{$R *.dfm} + +{ TfrViewDocumentosPresupuesto } + +function TfrViewDocumentosPresupuestoCliente.GetController: IPresupuestosClienteController; +begin + Result := FController; +end; + +function TfrViewDocumentosPresupuestoCliente.GetPresupuesto: IBizPresupuestoCliente; +begin + Result := FPresupuesto; +end; + +function TfrViewDocumentosPresupuestoCliente.RecuperarFicheroServidor(const NombreFichero: String; const DirectorioDestino: String): Boolean; +begin + inherited; + Result := Controller.GestorDocumentosController.DescargarFichero(Presupuesto.ID, NombreFichero, DirectorioDestino); +end; + +procedure TfrViewDocumentosPresupuestoCliente.SetController(const Value: IPresupuestosClienteController); +begin + FController := Value; +end; + +procedure TfrViewDocumentosPresupuestoCliente.SetPresupuesto(const Value: IBizPresupuestoCliente); +begin + FPresupuesto := Value; + //Inicializamos la lista de documentos local con los ficheros del servidor + if Assigned(FPresupuesto) and Assigned(FController) then + ListaFicheros := Controller.GestorDocumentosController.DarListaDocumentos(Presupuesto.ID); + + RefrescarVisualizador; +end; + +procedure TfrViewDocumentosPresupuestoCliente.Sincronizar; +begin + inherited; + +//De momento el action actSincronizar con el servidor estará oculto y se activa, hay que tener en cuenta lo comentado +{ + if Presupuesto.EsNuevo then + begin + if (ShowConfirmMessage('Se han producido cambios', 'Se han producido cambios y no se puede sincronizar hasta que no se guarden.' + #10#13 + + '¿Desea guardarlos ahora?') = IDYES) then + actGuardar.Execute + else + ShowInfoMessage('Recuerde guardar los cambios si quiere previsualizar o imprimir.'); + end; +} + Controller.GestorDocumentosController.SincronizarDocumentos(Presupuesto.ID, ListaFicheros, Directorio); +end; + +end. diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL index 3b2a450e..2f17b084 100644 --- a/Source/Servicios/FactuGES.RODL +++ b/Source/Servicios/FactuGES.RODL @@ -118,6 +118,8 @@ + + @@ -507,6 +509,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -527,6 +596,12 @@ + + + + + + diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas index 25f3c52e..83ecea30 100644 --- a/Source/Servicios/FactuGES_Intf.pas +++ b/Source/Servicios/FactuGES_Intf.pas @@ -51,6 +51,7 @@ const IsrvUnidadesMedida_IID : TGUID = '{C1B36FAB-7514-40D2-A20C-04A86C9E71AB}'; IsrvComisiones_IID : TGUID = '{B600E9A1-28EC-484E-A74D-B5BB96FDF20A}'; IsrvProvinciasPoblaciones_IID : TGUID = '{C9925D63-0F5F-4546-8657-54F59FE51359}'; + IsrvGestorDocumentos_IID : TGUID = '{A057EA3B-F714-4899-B6DA-1E4C8696ADC7}'; { Event ID's } @@ -84,6 +85,7 @@ type IsrvUnidadesMedida = interface; IsrvComisiones = interface; IsrvProvinciasPoblaciones = interface; + IsrvGestorDocumentos = interface; TRdxEmpresasArray = class; @@ -92,6 +94,7 @@ type { Enumerateds } + TRdxAlmacenes = (TRdxAlmacenes_Presupuestos); { TRdxLoginInfo } TRdxLoginInfo = class(TROComplexType) @@ -263,7 +266,7 @@ type { IsrvConfiguracion } IsrvConfiguracion = interface(IDataAbstractService) ['{0882B8A4-C8AA-424E-8FC1-C6226B670522}'] - function darValor(const CODIGO: String): String; + function darValor(const CODIGO: String; const ValorPorDefecto: String): String; end; { CosrvConfiguracion } @@ -276,7 +279,7 @@ type protected function __GetInterfaceName:string; override; - function darValor(const CODIGO: String): String; + function darValor(const CODIGO: String; const ValorPorDefecto: String): String; end; { IsrvFamilias } @@ -700,6 +703,33 @@ type function DarListaPoblaciones(const ID_Provincia: Integer): Binary; end; + { IsrvGestorDocumentos } + IsrvGestorDocumentos = interface(IDataAbstractService) + ['{A057EA3B-F714-4899-B6DA-1E4C8696ADC7}'] + function DarListaFicheros(const Almacen: TRdxAlmacenes; const ID: Integer): StringArray; + function DescargarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Binary; + function SubirFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String; const Fichero: Binary): Boolean; + function EliminarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Boolean; + function EliminarID(const Almacen: TRdxAlmacenes; const ID: Integer): Boolean; + end; + + { CosrvGestorDocumentos } + CosrvGestorDocumentos = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvGestorDocumentos; + end; + + { TsrvGestorDocumentos_Proxy } + TsrvGestorDocumentos_Proxy = class(TDataAbstractService_Proxy, IsrvGestorDocumentos) + protected + function __GetInterfaceName:string; override; + + function DarListaFicheros(const Almacen: TRdxAlmacenes; const ID: Integer): StringArray; + function DescargarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Binary; + function SubirFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String; const Fichero: Binary): Boolean; + function EliminarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Boolean; + function EliminarID(const Almacen: TRdxAlmacenes; const ID: Integer): Boolean; + end; + implementation uses @@ -1170,11 +1200,12 @@ begin result := 'srvConfiguracion'; end; -function TsrvConfiguracion_Proxy.darValor(const CODIGO: String): String; +function TsrvConfiguracion_Proxy.darValor(const CODIGO: String; const ValorPorDefecto: String): String; begin try __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'darValor'); __Message.Write('CODIGO', TypeInfo(String), CODIGO, []); + __Message.Write('ValorPorDefecto', TypeInfo(String), ValorPorDefecto, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); @@ -1858,6 +1889,111 @@ begin end end; +{ CosrvGestorDocumentos } + +class function CosrvGestorDocumentos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvGestorDocumentos; +begin + result := TsrvGestorDocumentos_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvGestorDocumentos_Proxy } + +function TsrvGestorDocumentos_Proxy.__GetInterfaceName:string; +begin + result := 'srvGestorDocumentos'; +end; + +function TsrvGestorDocumentos_Proxy.DarListaFicheros(const Almacen: TRdxAlmacenes; const ID: Integer): StringArray; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarListaFicheros'); + __Message.Write('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []); + __Message.Write('ID', TypeInfo(Integer), ID, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(DataAbstract4_Intf.StringArray), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvGestorDocumentos_Proxy.DescargarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DescargarFichero'); + __Message.Write('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []); + __Message.Write('ID', TypeInfo(Integer), ID, []); + __Message.Write('NombreFichero', TypeInfo(String), NombreFichero, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvGestorDocumentos_Proxy.SubirFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String; const Fichero: Binary): Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'SubirFichero'); + __Message.Write('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []); + __Message.Write('ID', TypeInfo(Integer), ID, []); + __Message.Write('NombreFichero', TypeInfo(String), NombreFichero, []); + __Message.Write('Fichero', TypeInfo(Binary), Fichero, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvGestorDocumentos_Proxy.EliminarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'EliminarFichero'); + __Message.Write('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []); + __Message.Write('ID', TypeInfo(Integer), ID, []); + __Message.Write('NombreFichero', TypeInfo(String), NombreFichero, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvGestorDocumentos_Proxy.EliminarID(const Almacen: TRdxAlmacenes; const ID: Integer): Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'EliminarID'); + __Message.Write('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []); + __Message.Write('ID', TypeInfo(Integer), ID, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + initialization RegisterROClass(TRdxLoginInfo); RegisterROClass(TRdxEmpresasArray); @@ -1889,6 +2025,7 @@ initialization RegisterProxyClass(IsrvUnidadesMedida_IID, TsrvUnidadesMedida_Proxy); RegisterProxyClass(IsrvComisiones_IID, TsrvComisiones_Proxy); RegisterProxyClass(IsrvProvinciasPoblaciones_IID, TsrvProvinciasPoblaciones_Proxy); + RegisterProxyClass(IsrvGestorDocumentos_IID, TsrvGestorDocumentos_Proxy); finalization @@ -1922,5 +2059,6 @@ finalization UnregisterProxyClass(IsrvUnidadesMedida_IID); UnregisterProxyClass(IsrvComisiones_IID); UnregisterProxyClass(IsrvProvinciasPoblaciones_IID); + UnregisterProxyClass(IsrvGestorDocumentos_IID); end. diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas index c4891ba1..ec6a85ad 100644 --- a/Source/Servicios/FactuGES_Invk.pas +++ b/Source/Servicios/FactuGES_Invk.pas @@ -218,6 +218,17 @@ type procedure Invoke_DarListaPoblaciones(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); end; + TsrvGestorDocumentos_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_DarListaFicheros(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_DescargarFichero(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SubirFichero(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_EliminarFichero(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_EliminarID(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + implementation uses @@ -390,15 +401,17 @@ end; { TsrvConfiguracion_Invoker } procedure TsrvConfiguracion_Invoker.Invoke_darValor(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function darValor(const CODIGO: String): String; } +{ function darValor(const CODIGO: String; const ValorPorDefecto: String): String; } var CODIGO: String; + ValorPorDefecto: String; lResult: String; begin try __Message.Read('CODIGO', TypeInfo(String), CODIGO, []); + __Message.Read('ValorPorDefecto', TypeInfo(String), ValorPorDefecto, []); - lResult := (__Instance as IsrvConfiguracion).darValor(CODIGO); + lResult := (__Instance as IsrvConfiguracion).darValor(CODIGO, ValorPorDefecto); __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvConfiguracion', 'darValorResponse'); __Message.Write('Result', TypeInfo(String), lResult, []); @@ -1013,5 +1026,149 @@ begin end; end; +{ TsrvGestorDocumentos_Invoker } + +procedure TsrvGestorDocumentos_Invoker.Invoke_DarListaFicheros(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function DarListaFicheros(const Almacen: TRdxAlmacenes; const ID: Integer): StringArray; } +var + Almacen: FactuGES_Intf.TRdxAlmacenes; + ID: Integer; + lResult: DataAbstract4_Intf.StringArray; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []); + __Message.Read('ID', TypeInfo(Integer), ID, []); + + lResult := (__Instance as IsrvGestorDocumentos).DarListaFicheros(Almacen, ID); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvGestorDocumentos', 'DarListaFicherosResponse'); + __Message.Write('Result', TypeInfo(DataAbstract4_Intf.StringArray), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvGestorDocumentos_Invoker.Invoke_DescargarFichero(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function DescargarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Binary; } +var + Almacen: FactuGES_Intf.TRdxAlmacenes; + ID: Integer; + NombreFichero: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []); + __Message.Read('ID', TypeInfo(Integer), ID, []); + __Message.Read('NombreFichero', TypeInfo(String), NombreFichero, []); + + lResult := (__Instance as IsrvGestorDocumentos).DescargarFichero(Almacen, ID, NombreFichero); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvGestorDocumentos', 'DescargarFicheroResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvGestorDocumentos_Invoker.Invoke_SubirFichero(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SubirFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String; const Fichero: Binary): Boolean; } +var + Almacen: FactuGES_Intf.TRdxAlmacenes; + ID: Integer; + NombreFichero: String; + Fichero: Binary; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + Fichero := nil; + try + __Message.Read('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []); + __Message.Read('ID', TypeInfo(Integer), ID, []); + __Message.Read('NombreFichero', TypeInfo(String), NombreFichero, []); + __Message.Read('Fichero', TypeInfo(Binary), Fichero, []); + + lResult := (__Instance as IsrvGestorDocumentos).SubirFichero(Almacen, ID, NombreFichero, Fichero); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvGestorDocumentos', 'SubirFicheroResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(Fichero); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvGestorDocumentos_Invoker.Invoke_EliminarFichero(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function EliminarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Boolean; } +var + Almacen: FactuGES_Intf.TRdxAlmacenes; + ID: Integer; + NombreFichero: String; + lResult: Boolean; +begin + try + __Message.Read('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []); + __Message.Read('ID', TypeInfo(Integer), ID, []); + __Message.Read('NombreFichero', TypeInfo(String), NombreFichero, []); + + lResult := (__Instance as IsrvGestorDocumentos).EliminarFichero(Almacen, ID, NombreFichero); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvGestorDocumentos', 'EliminarFicheroResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TsrvGestorDocumentos_Invoker.Invoke_EliminarID(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function EliminarID(const Almacen: TRdxAlmacenes; const ID: Integer): Boolean; } +var + Almacen: FactuGES_Intf.TRdxAlmacenes; + ID: Integer; + lResult: Boolean; +begin + try + __Message.Read('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []); + __Message.Read('ID', TypeInfo(Integer), ID, []); + + lResult := (__Instance as IsrvGestorDocumentos).EliminarID(Almacen, ID); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvGestorDocumentos', 'EliminarIDResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + initialization end. diff --git a/Source/Servicios/RODLFILE.res b/Source/Servicios/RODLFILE.res index 6f5cfcae72eab555019f8d7232a4068316a28b4d..7efa5ce458e07c003f810ecdceb764b577a23b93 100644 GIT binary patch delta 1139 zcmbu8%}Z2K7>Ahz3sQ4hB#Mi1Pzdy`bIoBINof+nUVPb%_6t$ zq_c@O5&Z+oKGP}8B?;q~xlgt<~ zgxDA*;9^CA65>D!9fL&*C0v@=asAk%!HcbTnKvidY}&AeM!{|7b4zn}Cclj^)7&8o zl1T!T#sXx*65!gpNH9k!PyDOlvfu9c;CBYHIlEOUluO0s`)Mt`Ie$5yYyWR?Ya^Y> zFPB!+`ZIc|RqY+k_$R$t_{qVNCRp(pwB!b8gd9k%A`sZN@$FZCpoE_}q5Pws%m0G$ z@4E(CFZ%8dhq?Ms-6*VAYYWwyP4A_}M%71?&s!_wPl?~1$WG6u^+xzqEjG((rBSVS z(i_8+adEI0h5)J~1xhmpA|gD9b=KI#@8L23_2$~BMoc(O3?w27s-;q3xYZCj8cVK% zu~_(nTN5-X6@#6h6s#kBIP z+r{gvn}^S7-DgM6`SX)~{;eDHJGakGrS)Q=wpOSek~{Gj(wrNKKssuHDjNl`!ysb9 zqz#!(Oxw#n3Xu6PSG$iNf`a9FU+v9`=1S>LIHo!wSknMEQP4$s=vZ);7#T-IMFt}r zQdj;5j{L%fZ1)e{{+b!`gCl4B&InAo^-{T1`AY~FSXzV)IMUt(i^8=~A%HPPS(sKD zP5yVL`OwRL-Wg!dc9y}p5JtDl@8WQ20uj)fDqwNMm~>Ve%8tq&^LuBPTA%McI%!>{ zS$0@ diff --git a/Source/Servidor/Configuracion/srvConfiguracion_Impl.dfm b/Source/Servidor/Configuracion/srvConfiguracion_Impl.dfm index 95fac36b..8707eb17 100644 --- a/Source/Servidor/Configuracion/srvConfiguracion_Impl.dfm +++ b/Source/Servidor/Configuracion/srvConfiguracion_Impl.dfm @@ -38,12 +38,40 @@ object srvConfiguracion: TsrvConfiguracion item Name = 'VALOR' DataType = datString - Size = 100 + Size = 255 end> end> JoinDataTables = <> UnionDataTables = <> - Commands = <> + Commands = < + item + Params = < + item + Name = 'CODIGO' + Value = '' + end + item + Name = 'VALOR' + Value = '' + end + item + Name = 'ID_EMPRESA' + Value = '' + end> + Statements = < + item + Connection = 'IBX' + ConnectionType = 'Interbase' + Default = True + Name = 'IBX' + SQL = + 'insert into CONFIGURACION (ID, CODIGO, VALOR, ID_EMPRESA)'#10'values' + + '(GEN_ID(GEN_CONFIGURACION_ID, 1), :CODIGO, :VALOR, :ID_EMPRESA)'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'InsertarValor' + end> RelationShips = <> UpdateRules = <> Version = 0 diff --git a/Source/Servidor/Configuracion/srvConfiguracion_Impl.pas b/Source/Servidor/Configuracion/srvConfiguracion_Impl.pas index a1e1f1a1..5ec37ded 100644 --- a/Source/Servidor/Configuracion/srvConfiguracion_Impl.pas +++ b/Source/Servidor/Configuracion/srvConfiguracion_Impl.pas @@ -21,14 +21,14 @@ uses type { TsrvConfiguracion } TsrvConfiguracion = class(TDataAbstractService, IsrvConfiguracion) - schConfiguracion: TDASchema; Bin2DataStreamer: TDABin2DataStreamer; + schConfiguracion: TDASchema; procedure DARemoteServiceCreate(Sender: TObject); procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; var aConnectionName: string); protected { IsrvConfiguracion methods } - function DarValor(const CODIGO: String): String; + function DarValor(const CODIGO: String; const ValorPorDefecto: String = ''): String; end; implementation @@ -49,9 +49,12 @@ begin SessionManager := dmServer.SessionManager; end; -function TsrvConfiguracion.DarValor(const CODIGO: String): String; +function TsrvConfiguracion.DarValor(const CODIGO: String; const ValorPorDefecto: String = ''): String; var ADataSet : IDADataset; + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; begin try ADataSet := schConfiguracion.NewDataset(Connection, 'darValor', ['CODIGO'], [CODIGO]); @@ -59,7 +62,26 @@ begin if ADataSet.Dataset.RecordCount > 0 then Result := ADataSet.Dataset.Fields[0].AsVariant else - RaiseError('Falta variable de configuracion: ' + CODIGO); + begin + Result := ValorPorDefecto; + //Creamos la variable de configuración con su valor por defecto + ACurrentConn := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionManager.GetDefaultConnectionName); + ACommand := schConfiguracion.NewCommand(ACurrentConn, 'InsertarValor'); + try + with ACommand do + begin + ParamByName('CODIGO').Value := CODIGO; + ParamByName('VALOR').Value := ValorPorDefecto; + ParamByName('ID_EMPRESA').Value := Null; + Execute; + ACurrentConn.CommitTransaction; + end; + except + ACurrentConn.RollbackTransaction; + end; + ACommand := NIL; +// RaiseError('Falta variable de configuracion: ' + CODIGO); + end; finally ADataSet.Close; end; diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES index dc077af168a7d6a35ca956378bc1e255fd36b5f0..139a5bda6cae55783088f75806990f47aabb699f 100644 GIT binary patch delta 120 zcmdn6jd8~|#tnBO7;PrsjgSYDe + + @@ -138,6 +140,10 @@ + +
srvGestorDocumentos
+ TDataAbstractService +
diff --git a/Source/Servidor/FactuGES_Server.rc b/Source/Servidor/FactuGES_Server.rc index e9d1d545..bbf79d4f 100644 --- a/Source/Servidor/FactuGES_Server.rc +++ b/Source/Servidor/FactuGES_Server.rc @@ -16,7 +16,7 @@ BEGIN VALUE "FileVersion", "2.2.4.0\0" VALUE "ProductName", "FactuGES (Servidor)\0" VALUE "ProductVersion", "2.2.4.0\0" - VALUE "CompileDate", "jueves, 31 de julio de 2008 12:02\0" + VALUE "CompileDate", "lunes, 08 de septiembre de 2008 18:46\0" END END BLOCK "VarFileInfo"