diff --git a/Build/Build.fbl6 b/Build/Build.fbl6 index 7a363e3..6afb77f 100644 Binary files a/Build/Build.fbl6 and b/Build/Build.fbl6 differ diff --git a/Build/Build.fbpInf b/Build/Build.fbpInf index 6efef5e..f83afc9 100644 --- a/Build/Build.fbpInf +++ b/Build/Build.fbpInf @@ -15,7 +15,7 @@ 00:00:00 - 26/04/2013 13:00:52 + 29/04/2013 12:19:03 False diff --git a/Build/Build.fbz6 b/Build/Build.fbz6 index fa03048..f577a71 100644 Binary files a/Build/Build.fbz6 and b/Build/Build.fbz6 differ diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql index d6be5b1..bbf5c3d 100644 --- a/Database/scripts/factuges.sql +++ b/Database/scripts/factuges.sql @@ -3697,8 +3697,7 @@ CREATE VIEW V_PRESUPUESTOS_CLIENTE( AS SELECT PRESUPUESTOS_CLIENTE.ID, -/* PRESUPUESTOS_CLIENTE.ID_EMPRESA,*/ - EMPRESAS_CONTACTOS.ID_EMPRESA, + PRESUPUESTOS_CLIENTE.ID_EMPRESA, PRESUPUESTOS_CLIENTE.FECHA_PRESUPUESTO, PRESUPUESTOS_CLIENTE.FECHA_VIGENCIA, PRESUPUESTOS_CLIENTE.FECHA_DECISION, @@ -3742,7 +3741,6 @@ SELECT FROM PRESUPUESTOS_CLIENTE LEFT OUTER JOIN CONTACTOS ON (PRESUPUESTOS_CLIENTE.ID_CLIENTE = CONTACTOS.ID) - LEFT JOIN EMPRESAS_CONTACTOS ON (EMPRESAS_CONTACTOS.ID_CONTACTO = CONTACTOS.ID) LEFT OUTER JOIN CONTACTOS CONTACTOS2 ON (PRESUPUESTOS_CLIENTE.ID_VENDEDOR = CONTACTOS2.ID) LEFT OUTER JOIN EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = PRESUPUESTOS_CLIENTE.ID_TIENDA) LEFT OUTER JOIN CONTRATOS_CLIENTE ON (CONTRATOS_CLIENTE.ID = PRESUPUESTOS_CLIENTE.ID_CONTRATO) diff --git a/Source/ApplicationBase/Configuracion/Controller/uConfiguracionController.pas b/Source/ApplicationBase/Configuracion/Controller/uConfiguracionController.pas index 4426ab8..defc849 100644 --- a/Source/ApplicationBase/Configuracion/Controller/uConfiguracionController.pas +++ b/Source/ApplicationBase/Configuracion/Controller/uConfiguracionController.pas @@ -23,7 +23,8 @@ type procedure SalvarConfiguracion; procedure CargarConfiguracion; - function GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : String = ''): String; + function GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : String = ''): String; overload; + function GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; const ID_EMPRESA: integer; const ADefaultValue : String = ''): String; overload; function GetSettingAsInteger(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Integer = 0): Integer; function GetSettingAsFloat(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Float = 0): Float; function GetSettingAsBoolean(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Boolean = False): Boolean; @@ -44,7 +45,8 @@ type procedure CargarConfiguracion; procedure ConfigurarAplicacion; - function GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : String = ''): String; + function GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : String = ''): String; overload; + function GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; const ID_EMPRESA: integer; const ADefaultValue : String = ''): String; overload; function GetSettingAsInteger(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Integer = 0): Integer; function GetSettingAsFloat(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Float = 0): Float; function GetSettingAsBoolean(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Boolean = False): Boolean; @@ -166,6 +168,16 @@ begin end; end; +function TConfiguracionController.GetSettingAsString( + const AFuente: TEnumAlmacen; const ASettingName: String; + const ID_EMPRESA: integer; const ADefaultValue: String): String; +begin + case AFuente of +// teXML: Result := FAppXMLFileStorage.ReadStringParaEmpresa(ASettingName, ADefaultValue); + teBD: Result := FAppDBStorage.DarValorParaEmpresa(ASettingName, ID_EMPRESA); + end; +end; + function TConfiguracionController.GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName, ADefaultValue: String): String; begin diff --git a/Source/ApplicationBase/Empresas/Model/uBizEmpresas.pas b/Source/ApplicationBase/Empresas/Model/uBizEmpresas.pas index 07eb100..948745c 100644 --- a/Source/ApplicationBase/Empresas/Model/uBizEmpresas.pas +++ b/Source/ApplicationBase/Empresas/Model/uBizEmpresas.pas @@ -3,7 +3,7 @@ unit uBizEmpresas; interface uses - uDAInterfaces, uDADataTable, schEmpresasClient_Intf, + uDAInterfaces, uDADataTable, Classes, schEmpresasClient_Intf, uBizEmpresasDatosBancarios, uBizEmpresasTiendas; const @@ -20,6 +20,9 @@ type function GetTiendas : IBizEmpresaTienda; property Tiendas : IBizEmpresaTienda read GetTiendas write SetTiendas; + function GetEmpresasPresupuestosComunes : TStringList; + property EmpresasPresupuestosComunes: TStringList read GetEmpresasPresupuestosComunes; + function EsNuevo : Boolean; end; @@ -29,6 +32,7 @@ type FDatosBancariosLink : TDADataSource; FTiendas : IBizEmpresaTienda; FTiendasLink : TDADataSource; + FEmpresasPresupuestosComunes : TStringList; procedure OnNewRecord(Sender: TDADataTable); override; @@ -36,6 +40,7 @@ type function GetDatosBancarios : IBizEmpresasDatosBancarios; procedure SetTiendas(AValue : IBizEmpresaTienda); function GetTiendas : IBizEmpresaTienda; + function GetEmpresasPresupuestosComunes : TStringList; public function EsNuevo : Boolean; @@ -46,14 +51,15 @@ type property DatosBancarios : IBizEmpresasDatosBancarios read GetDatosBancarios write SetDatosBancarios; property Tiendas : IBizEmpresaTienda read GetTiendas write SetTiendas; + property EmpresasPresupuestosComunes: TStringList read GetEmpresasPresupuestosComunes; end; implementation uses - uDataTableUtils, Classes, DateUtils, SysUtils, Dialogs, - uFactuGES_App; + uDataTableUtils, DateUtils, SysUtils, Dialogs, + uFactuGES_App, uConfiguracionController; { TBizEmpresa } @@ -66,6 +72,8 @@ begin FTiendasLink := TDADataSource.Create(NIL); FTiendasLink.DataTable := aDataTable; + + FEmpresasPresupuestosComunes := TStringList.Create; end; destructor TBizEmpresa.Destroy; @@ -74,6 +82,7 @@ begin FDatosBancariosLink.Free; FTiendas := NIL; FTiendasLink.Free; + FreeANDNIL(FEmpresasPresupuestosComunes); inherited; end; @@ -87,6 +96,14 @@ begin Result := FDatosBancarios; end; +function TBizEmpresa.GetEmpresasPresupuestosComunes: TStringList; +begin + if (FEmpresasPresupuestosComunes.Count = 0) then + FEmpresasPresupuestosComunes.CommaText := AppFactuGES.Configuracion.GetSettingAsString(teBD,'EMPRESAS_PRESUPUESTOS_COMUNES', AppFactuGES.EmpresaActiva.ID); + + Result := FEmpresasPresupuestosComunes; +end; + function TBizEmpresa.GetTiendas: IBizEmpresaTienda; begin Result := FTiendas; diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index a68366d..9938269 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -44,13 +44,6 @@ Package FalseTrueFalseLibreria base de FactuGESFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 - - - - - - - VCL for the Web Design Package for CodeGear RAD Studio CodeGear WebSnap Components CodeGear SOAP Components @@ -65,54 +58,54 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fConfigurarConexion
diff --git a/Source/Base/Configuracion/uDataModuleConfiguracion.pas b/Source/Base/Configuracion/uDataModuleConfiguracion.pas index 6e6e73a..5c543dc 100644 --- a/Source/Base/Configuracion/uDataModuleConfiguracion.pas +++ b/Source/Base/Configuracion/uDataModuleConfiguracion.pas @@ -17,6 +17,7 @@ type FIniFile : TIniFile; public function DarValor(const CODIGO: String; const ValorPorDefecto: String = ''): Variant; + function DarValorParaEmpresa(const CODIGO: String; const ID_EMPRESA: Integer; const ValorPorDefecto: String = ''): Variant; procedure GuardarValor(const CODIGO: String; const Valor: Variant); procedure LeerConfiguracion; procedure SalvarConfiguracion; @@ -61,6 +62,14 @@ begin Result := (RORemoteService as IsrvConfiguracion).DarValor(CODIGO, ValorPorDefecto); end; +function TdmConfiguracion.DarValorParaEmpresa(const CODIGO: String; + const ID_EMPRESA: Integer; const ValorPorDefecto: String): Variant; +begin + RORemoteService.Channel := dmConexion.ROChannel; + RORemoteService.Message := dmConexion.ROMessage; + Result := (RORemoteService as IsrvConfiguracion).DarValorParaEmpresa(CODIGO, ID_EMPRESA, ValorPorDefecto); +end; + destructor TdmConfiguracion.Destroy; begin FreeAndNIL(FIniFile); diff --git a/Source/Informes/2/InfFacturaCliente.fr3 b/Source/Informes/2/InfFacturaCliente.fr3 index 89441ac..36c5815 100644 --- a/Source/Informes/2/InfFacturaCliente.fr3 +++ b/Source/Informes/2/InfFacturaCliente.fr3 @@ -1,5 +1,5 @@ - + @@ -31,7 +31,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/Source/Informes/3/InfFacturaCliente.fr3 b/Source/Informes/3/InfFacturaCliente.fr3 index 2b2e9b5..545036b 100644 --- a/Source/Informes/3/InfFacturaCliente.fr3 +++ b/Source/Informes/3/InfFacturaCliente.fr3 @@ -1,5 +1,5 @@ - + @@ -31,7 +31,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/Source/Informes/4/InfFacturaCliente.fr3 b/Source/Informes/4/InfFacturaCliente.fr3 index 2b2e9b5..6f26fae 100644 --- a/Source/Informes/4/InfFacturaCliente.fr3 +++ b/Source/Informes/4/InfFacturaCliente.fr3 @@ -1,5 +1,5 @@ - + @@ -12,16 +12,14 @@ - - - + - + @@ -68,7 +66,7 @@ - + diff --git a/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm index 6e878db..07af0d5 100644 --- a/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm +++ b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm @@ -3643,9 +3643,12 @@ object srvContactos: TsrvContactos Connection = 'IBX' TargetTable = 'EMPRESAS_CONTACTOS' SQL = - 'INSERT'#10' INTO EMPRESAS_CONTACTOS'#10' (ID, ID_EMPRESA, ID_CONTACT' + - 'O)'#10' VALUES'#10' ((SELECT GEN_ID(GEN_EMPRESAS_CONTACTOS_ID, 1) FR' + - 'OM RDB$DATABASE), :ID_EMPRESA, :ID_CONTACTO)'#10 + 'INSERT INTO EMPRESAS_CONTACTOS'#10' (ID, ID_EMPRESA, ID_CONTACTO)' + + #10#10'SELECT (SELECT GEN_ID(GEN_EMPRESAS_CONTACTOS_ID, 1) FROM RDB$D' + + 'ATABASE), ID, :ID_CONTACTO'#10'FROM'#10'('#10'SELECT EMPRESAS.ID as ID'#10'FROM ' + + 'EMPRESAS'#10'where id = :ID_EMPRESA'#10#10'union'#10#10'select valor as ID'#10'from ' + + 'configuracion'#10'where CODIGO = '#39'EMPRESAS_CONTACTOS_COMUNES'#39#10'and ID' + + '_EMPRESA = :ID_EMPRESA'#10')'#10 StatementType = stSQL ColumnMappings = <> end> diff --git a/Source/Modulos/Presupuestos de cliente/Controller/uPresupuestosClienteController.pas b/Source/Modulos/Presupuestos de cliente/Controller/uPresupuestosClienteController.pas index e386943..48019cc 100644 --- a/Source/Modulos/Presupuestos de cliente/Controller/uPresupuestosClienteController.pas +++ b/Source/Modulos/Presupuestos de cliente/Controller/uPresupuestosClienteController.pas @@ -968,7 +968,8 @@ end; procedure TPresupuestosClienteController.FiltrarEmpresa(APresupuesto: IBizPresupuestoCliente); var - Condicion: TDAWhereExpression; + i: Integer; + Condicion, Condicion2: TDAWhereExpression; begin if APresupuesto.DataTable.Active then APresupuesto.DataTable.Active := False; @@ -979,6 +980,13 @@ begin // (ID_EMPRESA >= ID) Condicion := NewBinaryExpression(NewField('', fld_PresupuestosClienteID_EMPRESA), NewConstant(AppFactuGES.EmpresaActiva.ID, datInteger), dboEqual); + for i:= 0 to AppFactuGES.EmpresaActiva.EmpresasPresupuestosComunes.Count - 1 do + begin + // (ID_EMPRESA >= ID) + Condicion2 := NewBinaryExpression(NewField('', fld_PresupuestosClienteID_EMPRESA), NewConstant(AppFactuGES.EmpresaActiva.EmpresasPresupuestosComunes.Strings[i], datString), dboEqual); + Condicion := NewBinaryExpression(Condicion, Condicion2, dboOR); + end; + if IsEmpty then Expression := Condicion else diff --git a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas index 1b7079f..574a6b9 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas @@ -9,12 +9,12 @@ const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_Valores = '{CC017935-A09E-4607-A480-A958DE5AF63D}'; - RID_Propiedades = '{C233C7CE-D1DF-4697-9666-FCED937B77BA}'; - RID_ListaAnosPresupuestos = '{6E6A0A4D-15B0-4565-9B08-40290AEF60D1}'; - RID_PresupuestosCliente = '{D3E682FA-3E0F-4FFD-AB60-938FFC382BB3}'; - RID_CapitulosPresupuesto = '{C1629A05-F793-43B7-9C93-A53ADDECCE34}'; - RID_PresupuestosCliente_Detalles = '{ED0B47EF-2164-4FC1-9BC2-C439761E6FE9}'; + RID_Valores = '{E7928204-C39F-4E07-9A3D-B32F3BB49D85}'; + RID_Propiedades = '{D1BE6EB5-260D-4A6B-ADEF-3FC1FB9CF572}'; + RID_ListaAnosPresupuestos = '{95229127-6332-428F-848D-966BCF5A39F6}'; + RID_PresupuestosCliente = '{E4555932-F890-4E53-8666-6E4A2B74D518}'; + RID_CapitulosPresupuesto = '{DBAF21E8-DB51-4BAD-94FF-4A20A2876FF2}'; + RID_PresupuestosCliente_Detalles = '{B7A19F6E-DAA5-4E16-9622-4D99F50E21CE}'; { Data table names } nme_Valores = 'Valores'; @@ -205,7 +205,7 @@ const type { IValores } IValores = interface(IDAStronglyTypedDataTable) - ['{681B40A3-5B11-4D32-923A-0631AA8CC5EE}'] + ['{93D9A956-9F9E-4D63-A10B-A172C285C94E}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -300,7 +300,7 @@ type { IPropiedades } IPropiedades = interface(IDAStronglyTypedDataTable) - ['{79BD7A07-B808-4907-850F-392DC2606391}'] + ['{59EB780A-FC81-43F6-9D5D-57B76B94C000}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -347,7 +347,7 @@ type { IListaAnosPresupuestos } IListaAnosPresupuestos = interface(IDAStronglyTypedDataTable) - ['{3AEB65F1-4948-4C06-BF1F-BA3060F0F06B}'] + ['{EBF28BF5-BC89-4C6F-AE66-B6D895A58A86}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -382,7 +382,7 @@ type { IPresupuestosCliente } IPresupuestosCliente = interface(IDAStronglyTypedDataTable) - ['{3AC483E0-CFFC-4406-9F09-E1DF675C2FC1}'] + ['{BC002141-E0CE-41CB-9AAA-85B093181284}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -897,7 +897,7 @@ type { ICapitulosPresupuesto } ICapitulosPresupuesto = interface(IDAStronglyTypedDataTable) - ['{2E0B5814-8B22-4C77-8C40-2162ED673F5D}'] + ['{A0E7A826-2872-426E-AD39-8FA97AAA61FE}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -1052,7 +1052,7 @@ type { IPresupuestosCliente_Detalles } IPresupuestosCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{B7CDAEEA-EF6A-484C-8CE9-D4E88ADA2ED1}'] + ['{81779950-8754-42C2-A214-1147561D7D56}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); diff --git a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas index 82f4d3e..08963fa 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas @@ -9,17 +9,17 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ValoresDelta = '{CD4A587B-3372-4134-BAA6-FBCFA402EBF6}'; - RID_PropiedadesDelta = '{EFB1E26D-524C-4CFF-8B3A-BDDBE36FB1EF}'; - RID_ListaAnosPresupuestosDelta = '{95421BAF-1534-4293-A6C1-EFD21D3FCF1F}'; - RID_PresupuestosClienteDelta = '{28A0A025-CFA6-4384-A8A2-CB211996955D}'; - RID_CapitulosPresupuestoDelta = '{B339485B-FE22-47B9-AE8F-5738FD52D310}'; - RID_PresupuestosCliente_DetallesDelta = '{974C10D0-CF61-4660-85DD-C0CB0DE6D669}'; + RID_ValoresDelta = '{13FFF203-FA71-4ED9-AC0A-643A9FE5CAD2}'; + RID_PropiedadesDelta = '{6B42D145-11AB-46D7-88D3-65F1BE9C982F}'; + RID_ListaAnosPresupuestosDelta = '{ABE39CA0-27B3-4D80-AED4-FE540C66D871}'; + RID_PresupuestosClienteDelta = '{717C84FB-EC16-47E3-BD56-A26B1170EF2E}'; + RID_CapitulosPresupuestoDelta = '{F39487EB-F059-40C3-ABB1-8B6B4B0E271E}'; + RID_PresupuestosCliente_DetallesDelta = '{FE4CE80E-1435-4867-91AC-081602D5BAA4}'; type { IValoresDelta } IValoresDelta = interface(IValores) - ['{CD4A587B-3372-4134-BAA6-FBCFA402EBF6}'] + ['{13FFF203-FA71-4ED9-AC0A-643A9FE5CAD2}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -113,7 +113,7 @@ type { IPropiedadesDelta } IPropiedadesDelta = interface(IPropiedades) - ['{EFB1E26D-524C-4CFF-8B3A-BDDBE36FB1EF}'] + ['{6B42D145-11AB-46D7-88D3-65F1BE9C982F}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldDESCRIPCIONValue : String; @@ -159,7 +159,7 @@ type { IListaAnosPresupuestosDelta } IListaAnosPresupuestosDelta = interface(IListaAnosPresupuestos) - ['{95421BAF-1534-4293-A6C1-EFD21D3FCF1F}'] + ['{ABE39CA0-27B3-4D80-AED4-FE540C66D871}'] { Property getters and setters } function GetOldANOValue : String; @@ -193,7 +193,7 @@ type { IPresupuestosClienteDelta } IPresupuestosClienteDelta = interface(IPresupuestosCliente) - ['{28A0A025-CFA6-4384-A8A2-CB211996955D}'] + ['{717C84FB-EC16-47E3-BD56-A26B1170EF2E}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -711,7 +711,7 @@ type { ICapitulosPresupuestoDelta } ICapitulosPresupuestoDelta = interface(ICapitulosPresupuesto) - ['{B339485B-FE22-47B9-AE8F-5738FD52D310}'] + ['{F39487EB-F059-40C3-ABB1-8B6B4B0E271E}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldPOSICIONValue : Integer; @@ -865,7 +865,7 @@ type { IPresupuestosCliente_DetallesDelta } IPresupuestosCliente_DetallesDelta = interface(IPresupuestosCliente_Detalles) - ['{974C10D0-CF61-4660-85DD-C0CB0DE6D669}'] + ['{FE4CE80E-1435-4867-91AC-081602D5BAA4}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_PRESUPUESTOValue : Integer; diff --git a/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm b/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm index a7c92a0..5459630 100644 --- a/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm +++ b/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm @@ -827,18 +827,17 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente Commands = < item Params = < - item - Name = 'TIPO_PRESUPUESTO' - DataType = datString - Size = 255 - Value = '' - end item Name = 'ID' DataType = datAutoInc GeneratorName = 'GEN_PRESUPUESTOS_CLI_ID' Value = '' end + item + Name = 'ID_EMPRESA' + DataType = datInteger + Value = '' + end item Name = 'FECHA_PRESUPUESTO' DataType = datDateTime @@ -997,6 +996,12 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente Name = 'NO_VALORADO' DataType = datSmallInt Value = '' + end + item + Name = 'TIPO_PRESUPUESTO' + DataType = datString + Size = 255 + Value = '' end> Statements = < item @@ -1004,24 +1009,24 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente Default = True TargetTable = 'PRESUPUESTOS_CLIENTE' SQL = - 'INSERT'#10' INTO PRESUPUESTOS_CLIENTE'#10' (ID,'#10' FECHA_PRESUPUES' + - 'TO, FECHA_VIGENCIA, FECHA_DECISION, REFERENCIA,'#10' SITUACION, ' + - 'ID_CLIENTE, ID_DIRECCION, PERSONA_CONTACTO,'#10' FORMA_PAGO, PLA' + - 'ZO_ENTREGA, OBSERVACIONES, INCIDENCIAS,'#10' INCIDENCIAS_ACTIVAS' + - ', FECHA_ALTA, USUARIO, IMPORTE_NETO, IMPORTE_PORTE,'#10' DESCUEN' + - 'TO, IMPORTE_DESCUENTO, BASE_IMPONIBLE, ID_TIPO_IVA, IVA, IMPORTE' + - '_IVA,'#10' RE, IMPORTE_RE, RECARGO_EQUIVALENCIA, IMPORTE_TOTAL, ' + - 'ID_FORMA_PAGO, ID_TIENDA, ID_VENDEDOR,'#10' ID_CONTRATO, NO_VALO' + - 'RADO, TIPO_PRESUPUESTO)'#10' VALUES'#10' (:ID,'#10' :FECHA_PRESUPUES' + - 'TO, :FECHA_VIGENCIA, :FECHA_DECISION, :REFERENCIA,'#10' :SITUACI' + - 'ON, :ID_CLIENTE, :ID_DIRECCION, :PERSONA_CONTACTO,'#10' :FORMA_P' + - 'AGO, :PLAZO_ENTREGA, :OBSERVACIONES, :INCIDENCIAS,'#10' :INCIDEN' + - 'CIAS_ACTIVAS, CURRENT_TIMESTAMP, :USUARIO, :IMPORTE_NETO, :IMPOR' + - 'TE_PORTE,'#10' :DESCUENTO, :IMPORTE_DESCUENTO, :BASE_IMPONIBLE, ' + - ':ID_TIPO_IVA, :IVA, :IMPORTE_IVA,'#10' :RE, :IMPORTE_RE, :RECARG' + - 'O_EQUIVALENCIA, :IMPORTE_TOTAL, :ID_FORMA_PAGO, :ID_TIENDA, :ID_' + - 'VENDEDOR,'#10' :ID_CONTRATO, :NO_VALORADO, :TIPO_PRESUPUESTO)'#10' ' + - ' '#10#10#10#10#10 + 'INSERT'#10' INTO PRESUPUESTOS_CLIENTE'#10' (ID, ID_EMPRESA,'#10' FEC' + + 'HA_PRESUPUESTO, FECHA_VIGENCIA, FECHA_DECISION, REFERENCIA,'#10' ' + + ' SITUACION, ID_CLIENTE, ID_DIRECCION, PERSONA_CONTACTO,'#10' FOR' + + 'MA_PAGO, PLAZO_ENTREGA, OBSERVACIONES, INCIDENCIAS,'#10' INCIDEN' + + 'CIAS_ACTIVAS, FECHA_ALTA, USUARIO, IMPORTE_NETO, IMPORTE_PORTE,'#10 + + ' DESCUENTO, IMPORTE_DESCUENTO, BASE_IMPONIBLE, ID_TIPO_IVA, ' + + 'IVA, IMPORTE_IVA,'#10' RE, IMPORTE_RE, RECARGO_EQUIVALENCIA, IMP' + + 'ORTE_TOTAL, ID_FORMA_PAGO, ID_TIENDA, ID_VENDEDOR,'#10' ID_CONTR' + + 'ATO, NO_VALORADO, TIPO_PRESUPUESTO)'#10' VALUES'#10' (:ID, :ID_EMPRE' + + 'SA,'#10' :FECHA_PRESUPUESTO, :FECHA_VIGENCIA, :FECHA_DECISION, :' + + 'REFERENCIA,'#10' :SITUACION, :ID_CLIENTE, :ID_DIRECCION, :PERSON' + + 'A_CONTACTO,'#10' :FORMA_PAGO, :PLAZO_ENTREGA, :OBSERVACIONES, :I' + + 'NCIDENCIAS,'#10' :INCIDENCIAS_ACTIVAS, CURRENT_TIMESTAMP, :USUAR' + + 'IO, :IMPORTE_NETO, :IMPORTE_PORTE,'#10' :DESCUENTO, :IMPORTE_DES' + + 'CUENTO, :BASE_IMPONIBLE, :ID_TIPO_IVA, :IVA, :IMPORTE_IVA,'#10' ' + + ':RE, :IMPORTE_RE, :RECARGO_EQUIVALENCIA, :IMPORTE_TOTAL, :ID_FOR' + + 'MA_PAGO, :ID_TIENDA, :ID_VENDEDOR,'#10' :ID_CONTRATO, :NO_VALORA' + + 'DO, :TIPO_PRESUPUESTO)'#10' '#10#10#10#10#10 StatementType = stSQL ColumnMappings = <> end> diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas index 7ccbdde..788d998 100644 --- a/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas @@ -26,7 +26,7 @@ uses uDetallesContratoClienteController, uControllerDetallesBase, uBizContactos, schPresupuestosClienteClient_Intf, schContratosClienteClient_Intf, uDireccionesContactoController, - uBizDireccionesContacto; + uBizDireccionesContacto, uFactuGES_App; var dmGenerarContratosCli: TdmGenerarContratosCli; @@ -251,6 +251,7 @@ begin try AContrato := AContratosClienteController.Nuevo; + AContrato.ID_EMPRESA := AppFactuGES.EmpresaActiva.ID; CopiarPresupuestoAContrato(APresupuesto, AContrato); CopiarDetallesAContrato(APresupuesto, AContrato, APresupuesto.Detalles); diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL index 05bb9ed..c3b7b1f 100644 --- a/Source/Servicios/FactuGES.RODL +++ b/Source/Servicios/FactuGES.RODL @@ -142,6 +142,18 @@ + + + + + + + + + + + + @@ -150,6 +162,16 @@ + + + + + + + + + + diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas index c6f39f9..6ddb12f 100644 --- a/Source/Servicios/FactuGES_Intf.pas +++ b/Source/Servicios/FactuGES_Intf.pas @@ -314,7 +314,9 @@ type IsrvConfiguracion = interface(IDataAbstractService) ['{0882B8A4-C8AA-424E-8FC1-C6226B670522}'] function darValor(const CODIGO: AnsiString; const ValorPorDefecto: AnsiString): AnsiString; + function darValorParaEmpresa(const CODIGO: AnsiString; const ID_EMPRESA: Integer; const ValorPorDefecto: AnsiString): AnsiString; procedure guardarValor(const CODIGO: AnsiString; const Valor: AnsiString); + procedure guardarValorParaEmpresa(const CODIGO: AnsiString; const ID_EMPRESA: Integer; const Valor: AnsiString); end; { CosrvConfiguracion } @@ -328,7 +330,9 @@ type function __GetInterfaceName:string; override; function darValor(const CODIGO: AnsiString; const ValorPorDefecto: AnsiString): AnsiString; + function darValorParaEmpresa(const CODIGO: AnsiString; const ID_EMPRESA: Integer; const ValorPorDefecto: AnsiString): AnsiString; procedure guardarValor(const CODIGO: AnsiString; const Valor: AnsiString); + procedure guardarValorParaEmpresa(const CODIGO: AnsiString; const ID_EMPRESA: Integer; const Valor: AnsiString); end; { IsrvFamilias } @@ -1553,6 +1557,24 @@ begin end end; +function TsrvConfiguracion_Proxy.darValorParaEmpresa(const CODIGO: AnsiString; const ID_EMPRESA: Integer; const ValorPorDefecto: AnsiString): AnsiString; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'darValorParaEmpresa'); + __Message.Write('CODIGO', TypeInfo(AnsiString), CODIGO, []); + __Message.Write('ID_EMPRESA', TypeInfo(Integer), ID_EMPRESA, []); + __Message.Write('ValorPorDefecto', TypeInfo(AnsiString), ValorPorDefecto, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(AnsiString), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + procedure TsrvConfiguracion_Proxy.guardarValor(const CODIGO: AnsiString; const Valor: AnsiString); begin try @@ -1569,6 +1591,23 @@ begin end end; +procedure TsrvConfiguracion_Proxy.guardarValorParaEmpresa(const CODIGO: AnsiString; const ID_EMPRESA: Integer; const Valor: AnsiString); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'guardarValorParaEmpresa'); + __Message.Write('CODIGO', TypeInfo(AnsiString), CODIGO, []); + __Message.Write('ID_EMPRESA', TypeInfo(Integer), ID_EMPRESA, []); + __Message.Write('Valor', TypeInfo(AnsiString), Valor, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + { CosrvFamilias } class function CosrvFamilias.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFamilias; diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas index ca1c966..04120ac 100644 --- a/Source/Servicios/FactuGES_Invk.pas +++ b/Source/Servicios/FactuGES_Invk.pas @@ -77,7 +77,9 @@ type constructor Create; override; published procedure Invoke_darValor(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_darValorParaEmpresa(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); procedure Invoke_guardarValor(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_guardarValorParaEmpresa(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); end; TsrvFamilias_Invoker = class(TDataAbstractService_Invoker) @@ -639,6 +641,30 @@ begin end; end; +procedure TsrvConfiguracion_Invoker.Invoke_darValorParaEmpresa(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function darValorParaEmpresa(const CODIGO: AnsiString; const ID_EMPRESA: Integer; const ValorPorDefecto: AnsiString): AnsiString; } +var + CODIGO: AnsiString; + ID_EMPRESA: Integer; + ValorPorDefecto: AnsiString; + lResult: AnsiString; +begin + try + __Message.Read('CODIGO', TypeInfo(AnsiString), CODIGO, []); + __Message.Read('ID_EMPRESA', TypeInfo(Integer), ID_EMPRESA, []); + __Message.Read('ValorPorDefecto', TypeInfo(AnsiString), ValorPorDefecto, []); + + lResult := (__Instance as IsrvConfiguracion).darValorParaEmpresa(CODIGO, ID_EMPRESA, ValorPorDefecto); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvConfiguracion', 'darValorParaEmpresaResponse'); + __Message.Write('Result', TypeInfo(AnsiString), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + procedure TsrvConfiguracion_Invoker.Invoke_guardarValor(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); { procedure guardarValor(const CODIGO: AnsiString; const Valor: AnsiString); } var @@ -661,6 +687,30 @@ begin end; end; +procedure TsrvConfiguracion_Invoker.Invoke_guardarValorParaEmpresa(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure guardarValorParaEmpresa(const CODIGO: AnsiString; const ID_EMPRESA: Integer; const Valor: AnsiString); } +var + CODIGO: AnsiString; + ID_EMPRESA: Integer; + Valor: AnsiString; +begin + try + __Message.Read('CODIGO', TypeInfo(AnsiString), CODIGO, []); + __Message.Read('ID_EMPRESA', TypeInfo(Integer), ID_EMPRESA, []); + __Message.Read('Valor', TypeInfo(AnsiString), Valor, []); + + (__Instance as IsrvConfiguracion).guardarValorParaEmpresa(CODIGO, ID_EMPRESA, Valor); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvConfiguracion', 'guardarValorParaEmpresaResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + { TsrvFamilias_Invoker } constructor TsrvFamilias_Invoker.Create; diff --git a/Source/Servicios/RODLFile.res b/Source/Servicios/RODLFile.res index 23e8f76..e207507 100644 Binary files a/Source/Servicios/RODLFile.res and b/Source/Servicios/RODLFile.res differ diff --git a/Source/Servidor/Configuracion/srvConfiguracion_Impl.dfm b/Source/Servidor/Configuracion/srvConfiguracion_Impl.dfm index 0475273..ff6051d 100644 --- a/Source/Servidor/Configuracion/srvConfiguracion_Impl.dfm +++ b/Source/Servidor/Configuracion/srvConfiguracion_Impl.dfm @@ -50,6 +50,49 @@ object srvConfiguracion: TsrvConfiguracion Name = 'VALOR_BLOB' DataType = datMemo end> + end + item + Params = < + item + Name = 'CODIGO' + DataType = datString + Size = 50 + Value = '' + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + Value = '' + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONFIGURACION' + SQL = + 'SELECT VALOR, VALOr_BLOB'#10'FROM CONFIGURACION'#10'WHERE CODIGO = :CODI' + + 'GO'#10'AND ID_EMPRESA = :ID_EMPRESA'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'VALOR' + TableField = 'VALOR' + end + item + DatasetField = 'VALOR_BLOB' + TableField = 'VALOR_BLOB' + end> + end> + Name = 'darValorParaEmpresa' + Fields = < + item + Name = 'VALOR' + DataType = datString + Size = 2000 + end + item + Name = 'VALOR_BLOB' + DataType = datMemo + end> end> JoinDataTables = <> UnionDataTables = <> @@ -115,6 +158,37 @@ object srvConfiguracion: TsrvConfiguracion ColumnMappings = <> end> Name = 'UpdateValor' + end + item + Params = < + item + Name = 'VALOR' + Value = '' + end + item + Name = 'VALOR_BLOB' + Value = '' + end + item + Name = 'CODIGO' + Value = '' + end + item + Name = 'ID_EMPRESA' + Value = '' + end> + Statements = < + item + Connection = 'IBX' + ConnectionType = 'Interbase' + Default = True + SQL = + 'update CONFIGURACION'#10'set'#10'VALOR = :VALOR,'#10'VALOR_BLOB = :VALOR_BLO' + + 'B'#10'where CODIGO = :CODIGO'#10'AND ID_EMPRESA = :ID_EMPRESA'#10#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'UpdateValorParaEmpresa' end> RelationShips = <> UpdateRules = <> diff --git a/Source/Servidor/Configuracion/srvConfiguracion_Impl.pas b/Source/Servidor/Configuracion/srvConfiguracion_Impl.pas index c8e2cb6..9d794c8 100644 --- a/Source/Servidor/Configuracion/srvConfiguracion_Impl.pas +++ b/Source/Servidor/Configuracion/srvConfiguracion_Impl.pas @@ -10,7 +10,7 @@ unit srvConfiguracion_Impl; interface uses - {vcl:} Classes, SysUtils, + {vcl:} Classes, SysUtils, {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, {Ancestor Implementation:} DataAbstractService_Impl, {Used RODLs:} DataAbstract4_Intf, @@ -27,8 +27,10 @@ type procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; var aConnectionName: string); protected { IsrvConfiguracion methods } - function DarValor(const CODIGO: String; Const ValorPorDefecto: String = ''): String; - procedure GuardarValor(const CODIGO: AnsiString; const Valor: AnsiString); + function darValor(const CODIGO: AnsiString; const ValorPorDefecto: String = ''): AnsiString; + function darValorParaEmpresa(const CODIGO: AnsiString; const ID_EMPRESA: Integer; const ValorPorDefecto: String = ''): AnsiString; + procedure guardarValor(const CODIGO: AnsiString; const Valor: String = ''); + procedure guardarValorParaEmpresa(const CODIGO: AnsiString; const ID_EMPRESA: Integer; const Valor: String = ''); end; implementation @@ -91,13 +93,51 @@ begin end; end; +function TsrvConfiguracion.darValorParaEmpresa(const CODIGO: AnsiString; + const ID_EMPRESA: Integer; const ValorPorDefecto: String): AnsiString; +var + ADataSet : IDADataset; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + try + ADataSet := schConfiguracion.NewDataset(Connection, 'darValorParaEmpresa', ['CODIGO','ID_EMPRESA'], [CODIGO, ID_EMPRESA]); + ADataSet.Open; + if ADataSet.Dataset.RecordCount > 0 then + Result := ADataSet.Dataset.Fields[0].AsVariant + else + 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 := ID_EMPRESA; + Execute; + ACurrentConn.CommitTransaction; + end; + except + ACurrentConn.RollbackTransaction; + end; + ACommand := NIL; +// RaiseError('Falta variable de configuracion: ' + CODIGO); + end; + finally + ADataSet.Close; + end; +end; + procedure TsrvConfiguracion.DataAbstractServiceBeforeAcquireConnection( aSender: TObject; var aConnectionName: string); begin ConnectionName := dmServer.ConnectionName; end; -procedure TsrvConfiguracion.GuardarValor(const CODIGO: AnsiString; const Valor: AnsiString); +procedure TsrvConfiguracion.GuardarValor(const CODIGO: AnsiString; const Valor: String = ''); var ACurrentConn : IDAConnection; ACommand : IDASQLCommand; @@ -136,6 +176,33 @@ begin ACommand := NIL; end; +procedure TsrvConfiguracion.guardarValorParaEmpresa(const CODIGO: AnsiString; + const ID_EMPRESA: Integer; const Valor: String); +var + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; + st: TStringStream; + st2: IROStream; + +begin + //Creamos la variable de configuración con su valor por defecto + ACurrentConn := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionManager.GetDefaultConnectionName); + ACommand := schConfiguracion.NewCommand(ACurrentConn, 'UpdateValorParaEmpresa'); + try + with ACommand do + begin + ParamByName('CODIGO').Value := CODIGO; + ParamByName('ID_EMPRESA').Value := ID_EMPRESA; + ParamByName('VALOR').Value := Valor; + Execute; + ACurrentConn.CommitTransaction; + end; + except + ACurrentConn.RollbackTransaction; + end; + ACommand := NIL; +end; + initialization TROClassFactory.Create('srvConfiguracion', Create_srvConfiguracion, TsrvConfiguracion_Invoker); diff --git a/Source/Servidor/FactuGES_Server.dpr b/Source/Servidor/FactuGES_Server.dpr index 3f7b9cf..0dc6ee7 100644 --- a/Source/Servidor/FactuGES_Server.dpr +++ b/Source/Servidor/FactuGES_Server.dpr @@ -131,15 +131,15 @@ uses schArticulosServer_Intf in '..\Modulos\Articulos\Model\schArticulosServer_Intf.pas', schContratosClienteClient_Intf in '..\Modulos\Contratos de cliente\Model\schContratosClienteClient_Intf.pas', schContratosClienteServer_Intf in '..\Modulos\Contratos de cliente\Model\schContratosClienteServer_Intf.pas', - schPresupuestosClienteClient_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteClient_Intf.pas', - schPresupuestosClienteServer_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteServer_Intf.pas', schEmpresasClient_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasClient_Intf.pas', schEmpresasServer_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasServer_Intf.pas', srvSubfamilias_Impl in '..\Modulos\Subfamilias\Servidor\srvSubfamilias_Impl.pas' {srvSubfamilias: TDataAbstractService}, schSubfamiliasClient_Intf in '..\Modulos\Subfamilias\Model\schSubfamiliasClient_Intf.pas', schSubfamiliasServer_Intf in '..\Modulos\Subfamilias\Model\schSubfamiliasServer_Intf.pas', schContactosClient_Intf in '..\Modulos\Contactos\Model\schContactosClient_Intf.pas', - schContactosServer_Intf in '..\Modulos\Contactos\Model\schContactosServer_Intf.pas'; + schContactosServer_Intf in '..\Modulos\Contactos\Model\schContactosServer_Intf.pas', + schPresupuestosClienteClient_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteClient_Intf.pas', + schPresupuestosClienteServer_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteServer_Intf.pas'; {$R *.res} {$R ..\Servicios\RODLFile.res} diff --git a/Source/Servidor/FactuGES_Server.res b/Source/Servidor/FactuGES_Server.res index b12e9da..5e0d07b 100644 Binary files a/Source/Servidor/FactuGES_Server.res and b/Source/Servidor/FactuGES_Server.res differ