From 2b9fc81f0247d465feb38b71f861b2ae161b2f13 Mon Sep 17 00:00:00 2001 From: david Date: Tue, 7 Feb 2017 15:04:25 +0000 Subject: [PATCH] =?UTF-8?q?Ampliacion=20Tarea=20#1425=20->=20A=C3=B1adir?= =?UTF-8?q?=20una=20columna=20en=20la=20lista=20de=20clientes=20para=20mos?= =?UTF-8?q?trar=20los=20nombres=20de=20la=20pesta=C3=B1a=20'Direcciones'.?= =?UTF-8?q?=20Disponible=20en=20clientes,=20presupuestos,=20contratos,=20a?= =?UTF-8?q?lbaranes=20de=20cliente,=20facturas=20de=20cliente=20y=20recibo?= =?UTF-8?q?s=20de=20cliente.?= 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@658 f4e31baf-9722-1c47-927c-6f952f962d4b --- Build/Build.release.fbpInf | 6 +- Build/Build.release.fbz6 | Bin 58315 -> 58274 bytes Database/scripts/factuges.sql | 44 +- Source/Base/Base.dproj | 96 +-- Source/Cliente/FactuGES.dproj | 3 +- Source/Cliente/FactuGES.rc | 8 +- Source/Cliente/FactuGES.res | Bin 171984 -> 171984 bytes Source/GUIBase/GUIBase.dproj | 56 +- Source/GUIBase/uViewGrid.dfm | 9 +- .../Data/uDataModuleAlbaranesCliente.dfm | 8 + .../Model/schAlbaranesClienteClient_Intf.pas | 47 +- .../Model/schAlbaranesClienteServer_Intf.pas | 55 +- .../Servidor/srvAlbaranesCliente_Impl.dfm | 16 + .../Views/uViewAlbaranesCliente.dfm | 26 +- .../Views/uViewAlbaranesCliente.pas | 1 + .../Data/uDataModuleContratosCliente.dfm | 8 +- .../Model/ContratosCliente_model.dproj | 24 +- .../Model/schContratosClienteClient_Intf.pas | 63 +- .../Model/schContratosClienteServer_Intf.pas | 71 ++- .../Servidor/srvContratosCliente_Impl.dfm | 22 + .../Views/uViewContratosCliente.dfm | 21 +- .../Views/uViewContratosCliente.pas | 1 + .../Data/uDataModuleFacturasCliente.dfm | 6 + .../Model/FacturasCliente_model.dproj | 8 +- .../Model/schFacturasClienteClient_Intf.pas | 47 +- .../Model/schFacturasClienteServer_Intf.pas | 55 +- .../Reports/uRptFacturasCliente_Server.dfm | 48 +- .../Servidor/srvFacturasCliente_Impl.dfm | 12 + .../Views/uViewFacturasCliente.dfm | 16 +- .../Views/uViewFacturasCliente.pas | 1 + .../Data/uDataModulePresupuestosCliente.dfm | 6 + .../schPresupuestosClienteClient_Intf.pas | 59 +- .../schPresupuestosClienteServer_Intf.pas | 67 +- .../Servidor/srvPresupuestosCliente_Impl.dfm | 20 +- .../Views/uViewPresupuestosCliente.dfm | 6 + .../Views/uViewPresupuestosCliente.pas | 1 + .../Data/uDataModuleRecibosCliente.dfm | 7 + .../Model/schRecibosClienteClient_Intf.pas | 53 +- .../Model/schRecibosClienteServer_Intf.pas | 59 +- .../Servidor/srvRecibosCliente_Impl.dfm | 81 ++- .../Views/uViewRecibosCliente.dfm | 16 +- .../Views/uViewRecibosCliente.pas | 1 + Source/Servidor/FactuGES_Server.dpr | 14 +- Source/Servidor/FactuGES_Server.dproj | 596 +++++++++--------- Source/Servidor/FactuGES_Server.rc | 10 +- Source/Servidor/FactuGES_Server.res | Bin 23352 -> 23556 bytes 46 files changed, 1163 insertions(+), 611 deletions(-) diff --git a/Build/Build.release.fbpInf b/Build/Build.release.fbpInf index e8457ee5..3fb40486 100644 --- a/Build/Build.release.fbpInf +++ b/Build/Build.release.fbpInf @@ -14,8 +14,8 @@ - 00:00:03 - 12/09/2016 11:17:57 - False + 00:02:57 + 06/02/2017 18:43:48 + True diff --git a/Build/Build.release.fbz6 b/Build/Build.release.fbz6 index 6b61b03f2e45f4b770cf34ed0221a7e3d2f506df..d6b071151e12dc3eca77e6230894b106e6f4c0ad 100644 GIT binary patch literal 58274 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

>Up1Z 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

R<6 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 literal 58315 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

8c8+~>La7lZxbw88R<%5q2=|77GVLz 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 L004XA00000*o>UC diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql index 8d7a5948..2f33a27e 100644 --- a/Database/scripts/factuges.sql +++ b/Database/scripts/factuges.sql @@ -1805,7 +1805,8 @@ CREATE VIEW V_ALBARANES_CLIENTE( FECHA_ENVIO, FECHA_RECEPCION, ID_TIENDA, - TIENDA) + TIENDA, + LISTA_NOMBRES) AS SELECT ALBARANES_CLIENTE.ID, @@ -1853,7 +1854,8 @@ SELECT ALBARANES_CLIENTE.FECHA_ENVIO, ALBARANES_CLIENTE.FECHA_RECEPCION, ALBARANES_CLIENTE.ID_TIENDA, - COALESCE(TIENDAS.NOMBRE, 'Todas') AS TIENDA + COALESCE(TIENDAS.NOMBRE, 'Todas') AS TIENDA, + TRIM(leading ', ' from V_CONTACTOS_NOMBRES.OTROS_NOMBRES) as LISTA_NOMBRES FROM ALBARANES_CLIENTE @@ -1864,6 +1866,7 @@ FROM LEFT OUTER JOIN FACTURAS_CLIENTE ON (FACTURAS_CLIENTE.ID = ALBARANES_CLIENTE.ID_FACTURA) LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_CLIENTE.ID_ALMACEN) LEFT OUTER JOIN TIENDAS ON (TIENDAS.ID = ALBARANES_CLIENTE.ID_TIENDA) + LEFT OUTER JOIN V_CONTACTOS_NOMBRES ON (ALBARANES_CLIENTE.ID_CLIENTE = V_CONTACTOS_NOMBRES.ID) ; @@ -2606,7 +2609,8 @@ CREATE VIEW V_CONTRATOS_CLIENTE( TIPO_CONTRATO, CONDICIONES, CALIDADES, - REFERENCIA_CLIENTE) + REFERENCIA_CLIENTE, + LISTA_NOMBRES) AS SELECT CONTRATOS_CLIENTE.ID, /* CONTRATOS_CLIENTE.ID_EMPRESA,*/ @@ -2656,7 +2660,8 @@ SELECT CONTRATOS_CLIENTE.ID, CONTRATOS_CLIENTE.TIPO_CONTRATO, CONTRATOS_CLIENTE.CONDICIONES, CONTRATOS_CLIENTE.CALIDADES, - CONTRATOS_CLIENTE.REFERENCIA_CLIENTE + CONTRATOS_CLIENTE.REFERENCIA_CLIENTE, + TRIM(leading ', ' from V_CONTACTOS_NOMBRES.OTROS_NOMBRES) as LISTA_NOMBRES FROM CONTRATOS_CLIENTE LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = CONTRATOS_CLIENTE.ID_CLIENTE) @@ -2664,8 +2669,10 @@ SELECT CONTRATOS_CLIENTE.ID, LEFT OUTER JOIN CONTACTOS CONTACTOS2 ON (CONTRATOS_CLIENTE.ID_VENDEDOR = CONTACTOS2.ID) INNER JOIN CLIENTES_DATOS ON (CLIENTES_DATOS.ID_CLIENTE = CONTRATOS_CLIENTE.ID_CLIENTE) LEFT JOIN TIENDAS ON (TIENDAS.ID = CONTRATOS_CLIENTE.ID_TIENDA) -; + LEFT OUTER JOIN V_CONTACTOS_NOMBRES ON (CONTRATOS_CLIENTE.ID_CLIENTE = V_CONTACTOS_NOMBRES.ID) +WHERE CONTRATOS_CLIENTE.fecha_contrato >= '01.01.2014' +; /* View: V_EMPRESAS_TIENDAS */ @@ -2903,8 +2910,10 @@ CREATE VIEW V_FACTURAS_CLIENTE( ASIENTO_PUNTEADO, ID_CONTRATO, REF_CONTRATO, + VENDEDOR, SIN_COMISION, - TIPO_FACTURA) + TIPO_FACTURA, + LISTA_NOMBRES) AS SELECT FACTURAS_CLIENTE.ID, FACTURAS_CLIENTE.ID_EMPRESA, @@ -2954,8 +2963,10 @@ SELECT FACTURAS_CLIENTE.ID, V_CONT_FAC_CLI_VENTAS.ASIENTO_PUNTEADO, FACTURAS_CLIENTE.ID_CONTRATO, CONTRATOS_CLIENTE.REFERENCIA, + VENDEDORES.NOMBRE as VENDEDOR, FACTURAS_CLIENTE.SIN_COMISION, - FACTURAS_CLIENTE.TIPO_FACTURA + FACTURAS_CLIENTE.TIPO_FACTURA, + V_CONTACTOS_NOMBRES.OTROS_NOMBRES as LISTA_NOMBRES FROM V_FAC_CLI_SITUACION LEFT JOIN FACTURAS_CLIENTE @@ -2967,6 +2978,8 @@ SELECT FACTURAS_CLIENTE.ID, LEFT JOIN TIENDAS ON (TIENDAS.ID = FACTURAS_CLIENTE.ID_TIENDA) LEFT JOIN V_CONT_FAC_CLI_VENTAS ON (V_CONT_FAC_CLI_VENTAS.ID_FACTURA = FACTURAS_CLIENTE.ID) LEFT JOIN CONTRATOS_CLIENTE ON (CONTRATOS_CLIENTE.ID = FACTURAS_CLIENTE.ID_CONTRATO) + LEFT JOIN CONTACTOS as VENDEDORES ON (CONTRATOS_CLIENTE.ID_VENDEDOR = VENDEDORES.ID) + LEFT OUTER JOIN V_CONTACTOS_NOMBRES ON (FACTURAS_CLIENTE.ID_CLIENTE = V_CONTACTOS_NOMBRES.ID) ; @@ -3951,7 +3964,8 @@ CREATE VIEW V_PRESUPUESTOS_CLIENTE( NO_VALORADO, TIPO_PRESUPUESTO, CALIDADES, - REFERENCIA_CLIENTE) + REFERENCIA_CLIENTE, + LISTA_NOMBRES) AS SELECT PRESUPUESTOS_CLIENTE.ID, @@ -3997,7 +4011,8 @@ SELECT PRESUPUESTOS_CLIENTE.NO_VALORADO, PRESUPUESTOS_CLIENTE.TIPO_PRESUPUESTO, PRESUPUESTOS_CLIENTE.CALIDADES, - PRESUPUESTOS_CLIENTE.REFERENCIA_CLIENTE + PRESUPUESTOS_CLIENTE.REFERENCIA_CLIENTE, + TRIM(leading ', ' from V_CONTACTOS_NOMBRES.OTROS_NOMBRES) as LISTA_NOMBRES FROM PRESUPUESTOS_CLIENTE @@ -4006,8 +4021,12 @@ FROM LEFT OUTER JOIN CONTACTOS CONTACTOS2 ON (PRESUPUESTOS_CLIENTE.ID_VENDEDOR = CONTACTOS2.ID) LEFT OUTER JOIN TIENDAS ON (TIENDAS.ID = PRESUPUESTOS_CLIENTE.ID_TIENDA) LEFT OUTER JOIN CONTRATOS_CLIENTE ON (CONTRATOS_CLIENTE.ID = PRESUPUESTOS_CLIENTE.ID_CONTRATO) + LEFT OUTER JOIN V_CONTACTOS_NOMBRES ON (PRESUPUESTOS_CLIENTE.ID_CLIENTE = V_CONTACTOS_NOMBRES.ID) +WHERE PRESUPUESTOS_CLIENTE.fecha_presupuesto >= '01.01.2014' ; + + /* View: V_PROVEEDORES */ CREATE VIEW V_PROVEEDORES( ID, @@ -4168,7 +4187,8 @@ CREATE VIEW V_RECIBOS_CLIENTE( FECHA_MODIFICACION, USUARIO, ID_TIENDA, - TIENDA) + TIENDA, + LISTA_NOMBRES) AS SELECT RECIBOS_CLIENTE.ID, RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO, @@ -4204,7 +4224,8 @@ SELECT RECIBOS_CLIENTE.ID, RECIBOS_CLIENTE.FECHA_MODIFICACION, RECIBOS_CLIENTE.USUARIO, RECIBOS_CLIENTE.ID_TIENDA, - COALESCE(TIENDAS.NOMBRE, 'Todas') AS TIENDA + COALESCE(TIENDAS.NOMBRE, 'Todas') AS TIENDA, + V_CONTACTOS_NOMBRES.OTROS_NOMBRES as LISTA_NOMBRES FROM RECIBOS_CLIENTE LEFT JOIN V_REC_CLI_SITUACION @@ -4227,6 +4248,7 @@ LEFT JOIN V_REC_CLI_SITUACION RECIBO_COMPENSADO2 ON (RECIBO_COMPENSADO2.ID_RECIBO = RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO) LEFT JOIN TIENDAS ON (TIENDAS.ID = RECIBOS_CLIENTE.ID_TIENDA) +LEFT OUTER JOIN V_CONTACTOS_NOMBRES ON (RECIBOS_CLIENTE.ID_CLIENTE = V_CONTACTOS_NOMBRES.ID) ; diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index bd1cde21..33b554c0 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -58,55 +58,55 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

fConfigurarConexion TForm diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj index 66003d38..14c3caf8 100644 --- a/Source/Cliente/FactuGES.dproj +++ b/Source/Cliente/FactuGES.dproj @@ -52,8 +52,7 @@ Delphi.Personality VCLApplication -FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2800FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.8.0.0FactuGESFactuGES2.8.0.0 - +FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2820FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.8.2.0FactuGESFactuGES2.8.2.0 File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found FactuGES.dprFalse diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc index a353b934..4956e262 100644 --- a/Source/Cliente/FactuGES.rc +++ b/Source/Cliente/FactuGES.rc @@ -1,7 +1,7 @@ MAINICON ICON "C:\Codigo Acana\Resources\Iconos\Factuges.ico" 1 VERSIONINFO -FILEVERSION 2,8,0,0 -PRODUCTVERSION 2,8,0,0 +FILEVERSION 2,8,2,0 +PRODUCTVERSION 2,8,2,0 FILEFLAGSMASK 0x3FL FILEFLAGS 0x00L FILEOS 0x40004L @@ -13,10 +13,10 @@ BEGIN BLOCK "0C0A04E4" BEGIN VALUE "CompanyName", "Rodax Software S.L.\0" - VALUE "FileVersion", "2.8.0.0\0" + VALUE "FileVersion", "2.8.2.0\0" VALUE "InternalName", "FactuGES\0" VALUE "ProductName", "FactuGES\0" - VALUE "ProductVersion", "2.8.0.0\0" + VALUE "ProductVersion", "2.8.2.0\0" END END BLOCK "VarFileInfo" diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res index 1caa999e735e64b81445223de749bb56248ec1b5..9c046f30c6cf8fef3a599a478b9f6f7f9000cbfa 100644 GIT binary patch delta 42 xcmcbxpXCs7?`HZ&tp2tXf*xhJf_(|s&zh-Hvk?a4FLcE delta 42 wcmcbxpXD MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fDialogBase
diff --git a/Source/GUIBase/uViewGrid.dfm b/Source/GUIBase/uViewGrid.dfm index 75548032..86c5518a 100644 --- a/Source/GUIBase/uViewGrid.dfm +++ b/Source/GUIBase/uViewGrid.dfm @@ -45,11 +45,10 @@ inherited frViewGrid: TfrViewGrid object cxGridViewICONO: TcxGridDBColumn Caption = 'Icono' OnCustomDrawCell = cxGridViewICONOCustomDrawCell - BestFitMaxWidth = 22 - MinWidth = 22 - Options.HorzSizing = False + BestFitMaxWidth = 18 + MinWidth = 18 Options.Sorting = False - Width = 22 + Width = 18 OnCustomDrawHeader = cxGridViewICONOCustomDrawHeader end end @@ -163,7 +162,7 @@ inherited frViewGrid: TfrViewGrid PrinterPage.ScaleMode = smFit PrinterPage._dxMeasurementUnits_ = 0 PrinterPage._dxLastMU_ = 2 - ReportDocument.CreationDate = 42299.692793553240000000 + ReportDocument.CreationDate = 42772.762583020830000000 StyleManager = dmBase.dxPrintStyleManager1 OptionsCards.Shadow.Depth = 0 OptionsExpanding.ExpandGroupRows = True diff --git a/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.dfm b/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.dfm index e3fb20bc..13a88c23 100644 --- a/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.dfm +++ b/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.dfm @@ -328,6 +328,14 @@ inherited DataModuleAlbaranesCliente: TDataModuleAlbaranesCliente DisplayLabel = 'AlbaranesCliente_TIENDA' ServerAutoRefresh = True DictionaryEntry = 'AlbaranesCliente_TIENDA' + end + item + Name = 'LISTA_NOMBRES' + DataType = datString + Size = 255 + DisplayLabel = 'Otros nombres' + ServerAutoRefresh = True + DictionaryEntry = 'AlbaranesCliente_LISTA_NOMBRES' end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] diff --git a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas index 1a5a0fdc..74d28779 100644 --- a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas +++ b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteClient_Intf.pas @@ -9,9 +9,9 @@ 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_ListaAnosAlbaranes = '{7EB3AC27-59E8-42B4-ADA3-CE4D9CAEB13C}'; - RID_AlbaranesCliente = '{D2DA1D56-1646-4F90-8DE9-D4B5FFE8B553}'; - RID_AlbaranesCliente_Detalles = '{BBD1F7AA-F56C-43AE-A7C7-0F58965BDF4A}'; + RID_ListaAnosAlbaranes = '{3BF46A2A-B09F-4966-80AC-36B91AB3F410}'; + RID_AlbaranesCliente = '{37A96813-FF20-4C48-8043-08624BDF1EEC}'; + RID_AlbaranesCliente_Detalles = '{7A054D7B-816E-40D3-8810-00601F96937D}'; { Data table names } nme_ListaAnosAlbaranes = 'ListaAnosAlbaranes'; @@ -71,6 +71,7 @@ const fld_AlbaranesClienteFECHA_RECEPCION = 'FECHA_RECEPCION'; fld_AlbaranesClienteID_TIENDA = 'ID_TIENDA'; fld_AlbaranesClienteTIENDA = 'TIENDA'; + fld_AlbaranesClienteLISTA_NOMBRES = 'LISTA_NOMBRES'; { AlbaranesCliente field indexes } idx_AlbaranesClienteID_CONTRATO = 0; @@ -119,6 +120,7 @@ const idx_AlbaranesClienteFECHA_RECEPCION = 43; idx_AlbaranesClienteID_TIENDA = 44; idx_AlbaranesClienteTIENDA = 45; + idx_AlbaranesClienteLISTA_NOMBRES = 46; { AlbaranesCliente_Detalles fields } fld_AlbaranesCliente_DetallesID = 'ID'; @@ -155,7 +157,7 @@ const type { IListaAnosAlbaranes } IListaAnosAlbaranes = interface(IDAStronglyTypedDataTable) - ['{203EE597-D0C7-4604-A953-891F0E3D98FF}'] + ['{0C7CD8C2-CB8B-4224-863B-760D2E239D64}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -190,7 +192,7 @@ type { IAlbaranesCliente } IAlbaranesCliente = interface(IDAStronglyTypedDataTable) - ['{D6D78EF6-CA78-4ED9-B294-D1D466E1726B}'] + ['{D3E1233E-BD17-40E1-B5B2-C8241F7BFF04}'] { Property getters and setters } function GetID_CONTRATOValue: Integer; procedure SetID_CONTRATOValue(const aValue: Integer); @@ -374,6 +376,10 @@ type procedure SetTIENDAValue(const aValue: String); function GetTIENDAIsNull: Boolean; procedure SetTIENDAIsNull(const aValue: Boolean); + function GetLISTA_NOMBRESValue: String; + procedure SetLISTA_NOMBRESValue(const aValue: String); + function GetLISTA_NOMBRESIsNull: Boolean; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); { Properties } @@ -469,6 +475,8 @@ type property ID_TIENDAIsNull: Boolean read GetID_TIENDAIsNull write SetID_TIENDAIsNull; property TIENDA: String read GetTIENDAValue write SetTIENDAValue; property TIENDAIsNull: Boolean read GetTIENDAIsNull write SetTIENDAIsNull; + property LISTA_NOMBRES: String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; end; { TAlbaranesClienteDataTableRules } @@ -662,6 +670,10 @@ type procedure SetTIENDAValue(const aValue: String); virtual; function GetTIENDAIsNull: Boolean; virtual; procedure SetTIENDAIsNull(const aValue: Boolean); virtual; + function GetLISTA_NOMBRESValue: String; virtual; + procedure SetLISTA_NOMBRESValue(const aValue: String); virtual; + function GetLISTA_NOMBRESIsNull: Boolean; virtual; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); virtual; { Properties } property ID_CONTRATO: Integer read GetID_CONTRATOValue write SetID_CONTRATOValue; @@ -756,6 +768,8 @@ type property ID_TIENDAIsNull: Boolean read GetID_TIENDAIsNull write SetID_TIENDAIsNull; property TIENDA: String read GetTIENDAValue write SetTIENDAValue; property TIENDAIsNull: Boolean read GetTIENDAIsNull write SetTIENDAIsNull; + property LISTA_NOMBRES: String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; public constructor Create(aDataTable: TDADataTable); override; @@ -765,7 +779,7 @@ type { IAlbaranesCliente_Detalles } IAlbaranesCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{020AD67D-D6F1-4E13-962A-E7B9FE5F4C5E}'] + ['{A6C61208-F037-4EFA-BBBF-1DBC79AF7C44}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -1980,6 +1994,27 @@ begin DataTable.Fields[idx_AlbaranesClienteTIENDA].AsVariant := Null; end; +function TAlbaranesClienteDataTableRules.GetLISTA_NOMBRESValue: String; +begin + result := DataTable.Fields[idx_AlbaranesClienteLISTA_NOMBRES].AsString; +end; + +procedure TAlbaranesClienteDataTableRules.SetLISTA_NOMBRESValue(const aValue: String); +begin + DataTable.Fields[idx_AlbaranesClienteLISTA_NOMBRES].AsString := aValue; +end; + +function TAlbaranesClienteDataTableRules.GetLISTA_NOMBRESIsNull: boolean; +begin + result := DataTable.Fields[idx_AlbaranesClienteLISTA_NOMBRES].IsNull; +end; + +procedure TAlbaranesClienteDataTableRules.SetLISTA_NOMBRESIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_AlbaranesClienteLISTA_NOMBRES].AsVariant := Null; +end; + { TAlbaranesCliente_DetallesDataTableRules } constructor TAlbaranesCliente_DetallesDataTableRules.Create(aDataTable: TDADataTable); diff --git a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas index 119cd060..b5c4de42 100644 --- a/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas +++ b/Source/Modulos/Albaranes de cliente/Model/schAlbaranesClienteServer_Intf.pas @@ -9,14 +9,14 @@ 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_ListaAnosAlbaranesDelta = '{B498D9C0-EE0A-46DA-A371-702D825BDB3A}'; - RID_AlbaranesClienteDelta = '{D704D54E-00E5-4A35-B737-A915BB515300}'; - RID_AlbaranesCliente_DetallesDelta = '{999E4300-FF31-4EA7-B81E-287E2000B1BD}'; + RID_ListaAnosAlbaranesDelta = '{8B568226-36B4-4CDC-BE4C-BD51DA29AEAF}'; + RID_AlbaranesClienteDelta = '{2EAD0C36-219E-47BB-8D37-78BD32D11744}'; + RID_AlbaranesCliente_DetallesDelta = '{2ACFBDE5-B171-408C-A739-A72B52566077}'; type { IListaAnosAlbaranesDelta } IListaAnosAlbaranesDelta = interface(IListaAnosAlbaranes) - ['{B498D9C0-EE0A-46DA-A371-702D825BDB3A}'] + ['{8B568226-36B4-4CDC-BE4C-BD51DA29AEAF}'] { Property getters and setters } function GetOldANOValue : String; @@ -50,7 +50,7 @@ type { IAlbaranesClienteDelta } IAlbaranesClienteDelta = interface(IAlbaranesCliente) - ['{D704D54E-00E5-4A35-B737-A915BB515300}'] + ['{2EAD0C36-219E-47BB-8D37-78BD32D11744}'] { Property getters and setters } function GetOldID_CONTRATOValue : Integer; function GetOldIDValue : Integer; @@ -98,6 +98,7 @@ type function GetOldFECHA_RECEPCIONValue : DateTime; function GetOldID_TIENDAValue : Integer; function GetOldTIENDAValue : String; + function GetOldLISTA_NOMBRESValue : String; { Properties } property OldID_CONTRATO : Integer read GetOldID_CONTRATOValue; @@ -146,6 +147,7 @@ type property OldFECHA_RECEPCION : DateTime read GetOldFECHA_RECEPCIONValue; property OldID_TIENDA : Integer read GetOldID_TIENDAValue; property OldTIENDA : String read GetOldTIENDAValue; + property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; end; { TAlbaranesClienteBusinessProcessorRules } @@ -431,6 +433,12 @@ type function GetOldTIENDAIsNull: Boolean; virtual; procedure SetTIENDAValue(const aValue: String); virtual; procedure SetTIENDAIsNull(const aValue: Boolean); virtual; + function GetLISTA_NOMBRESValue: String; virtual; + function GetLISTA_NOMBRESIsNull: Boolean; virtual; + function GetOldLISTA_NOMBRESValue: String; virtual; + function GetOldLISTA_NOMBRESIsNull: Boolean; virtual; + procedure SetLISTA_NOMBRESValue(const aValue: String); virtual; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); virtual; { Properties } property ID_CONTRATO : Integer read GetID_CONTRATOValue write SetID_CONTRATOValue; @@ -617,6 +625,10 @@ type property TIENDAIsNull : Boolean read GetTIENDAIsNull write SetTIENDAIsNull; property OldTIENDA : String read GetOldTIENDAValue; property OldTIENDAIsNull : Boolean read GetOldTIENDAIsNull; + property LISTA_NOMBRES : String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull : Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; + property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; + property OldLISTA_NOMBRESIsNull : Boolean read GetOldLISTA_NOMBRESIsNull; public constructor Create(aBusinessProcessor: TDABusinessProcessor); override; @@ -626,7 +638,7 @@ type { IAlbaranesCliente_DetallesDelta } IAlbaranesCliente_DetallesDelta = interface(IAlbaranesCliente_Detalles) - ['{999E4300-FF31-4EA7-B81E-287E2000B1BD}'] + ['{2ACFBDE5-B171-408C-A739-A72B52566077}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_ALBARANValue : Integer; @@ -2313,6 +2325,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteTIENDA] := Null; end; +function TAlbaranesClienteBusinessProcessorRules.GetLISTA_NOMBRESValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteLISTA_NOMBRES]; +end; + +function TAlbaranesClienteBusinessProcessorRules.GetLISTA_NOMBRESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteLISTA_NOMBRES]); +end; + +function TAlbaranesClienteBusinessProcessorRules.GetOldLISTA_NOMBRESValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranesClienteLISTA_NOMBRES]; +end; + +function TAlbaranesClienteBusinessProcessorRules.GetOldLISTA_NOMBRESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranesClienteLISTA_NOMBRES]); +end; + +procedure TAlbaranesClienteBusinessProcessorRules.SetLISTA_NOMBRESValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteLISTA_NOMBRES] := aValue; +end; + +procedure TAlbaranesClienteBusinessProcessorRules.SetLISTA_NOMBRESIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranesClienteLISTA_NOMBRES] := Null; +end; + { TAlbaranesCliente_DetallesBusinessProcessorRules } constructor TAlbaranesCliente_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); diff --git a/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm b/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm index 862e5d6b..dfadf209 100644 --- a/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm +++ b/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm @@ -231,6 +231,10 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente item DatasetField = 'REF_CONTRATO' TableField = 'REF_CONTRATO' + end + item + DatasetField = 'LISTA_NOMBRES' + TableField = 'LISTA_NOMBRES' end> end> Name = 'AlbaranesCliente' @@ -494,6 +498,12 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente Size = 255 ServerAutoRefresh = True DictionaryEntry = 'AlbaranesCliente_TIENDA' + end + item + Name = 'LISTA_NOMBRES' + DataType = datString + Size = 255 + DictionaryEntry = 'AlbaranesCliente_LISTA_NOMBRES' end> end item @@ -1731,6 +1741,12 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente item Name = 'AlbaranesCliente_ID_TIPO_IVA' DataType = datInteger + end + item + Name = 'AlbaranesCliente_LISTA_NOMBRES' + DataType = datString + Size = 255 + DisplayLabel = 'Otros nombres' end> Left = 48 Top = 136 diff --git a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.dfm b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.dfm index 123345bc..529452df 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.dfm +++ b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.dfm @@ -8,8 +8,8 @@ inherited frViewAlbaranesCliente: TfrViewAlbaranesCliente Height = 492 RootLevelOptions.DetailTabsPosition = dtpTop OnActiveTabChanged = cxGridActiveTabChanged - ExplicitWidth = 596 - ExplicitHeight = 351 + ExplicitWidth = 1121 + ExplicitHeight = 492 inherited cxGridView: TcxGridDBTableView OnMouseMove = cxGridViewMouseMove DataController.KeyFieldNames = 'ID' @@ -173,6 +173,10 @@ inherited frViewAlbaranesCliente: TfrViewAlbaranesCliente HeaderAlignmentHorz = taRightJustify Width = 78 end + object cxGridViewLISTA_NOMBRES: TcxGridDBColumn + Caption = 'Otros nombres' + DataBinding.FieldName = 'LISTA_NOMBRES' + end end inherited cxGridLevel: TcxGridLevel Caption = 'Todos' @@ -198,12 +202,12 @@ inherited frViewAlbaranesCliente: TfrViewAlbaranesCliente end inherited frViewFiltroBase1: TfrViewFiltroBase Width = 1121 - ExplicitWidth = 596 + ExplicitWidth = 1121 inherited TBXDockablePanel1: TTBXDockablePanel - ExplicitWidth = 596 + ExplicitWidth = 1121 inherited dxLayoutControl1: TdxLayoutControl Width = 1121 - ExplicitWidth = 596 + ExplicitWidth = 1121 inherited txtFiltroTodo: TcxTextEdit ExplicitWidth = 499 Width = 499 @@ -221,10 +225,10 @@ inherited frViewAlbaranesCliente: TfrViewAlbaranesCliente end inherited TBXAlignmentPanel1: TTBXAlignmentPanel Width = 1121 - ExplicitWidth = 596 + ExplicitWidth = 1121 inherited tbxBotones: TTBXToolbar Width = 1111 - ExplicitWidth = 586 + ExplicitWidth = 1111 end end end @@ -236,14 +240,14 @@ inherited frViewAlbaranesCliente: TfrViewAlbaranesCliente inherited pnlAgrupaciones: TTBXDockablePanel Top = 594 Visible = True - ExplicitTop = 453 - ExplicitWidth = 596 + ExplicitTop = 594 + ExplicitWidth = 1121 inherited TBXAlignmentPanel1: TTBXAlignmentPanel Width = 1121 - ExplicitWidth = 596 + ExplicitWidth = 1121 inherited TBXToolbar1: TTBXToolbar Width = 1111 - ExplicitWidth = 586 + ExplicitWidth = 1111 object TBXSeparatorItem1: TTBXSeparatorItem end object TBXItem3: TTBXItem diff --git a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.pas b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.pas index 7850955f..e8f1a703 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.pas +++ b/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.pas @@ -60,6 +60,7 @@ type cxStyleRETRASADOS: TcxStyle; cxGridViewTIENDA: TcxGridDBColumn; cxGridViewREF_CONTRATO: TcxGridDBColumn; + cxGridViewLISTA_NOMBRES: TcxGridDBColumn; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; diff --git a/Source/Modulos/Contratos de cliente/Data/uDataModuleContratosCliente.dfm b/Source/Modulos/Contratos de cliente/Data/uDataModuleContratosCliente.dfm index cfeaf6d9..ab4044af 100644 --- a/Source/Modulos/Contratos de cliente/Data/uDataModuleContratosCliente.dfm +++ b/Source/Modulos/Contratos de cliente/Data/uDataModuleContratosCliente.dfm @@ -106,7 +106,7 @@ inherited DataModuleContratosCliente: TDataModuleContratosCliente Name = 'PROVINCIA' DataType = datString Size = 255 - DisplayLabel = 'ContratosCliente_PROVINCIA' + DisplayLabel = 'Provincia' DictionaryEntry = 'ContratosCliente_PROVINCIA' end item @@ -337,6 +337,12 @@ inherited DataModuleContratosCliente: TDataModuleContratosCliente Name = 'REFERENCIA_CLIENTE' DataType = datString Size = 255 + end + item + Name = 'LISTA_NOMBRES' + DataType = datString + Size = 255 + DisplayLabel = 'Otros nombres' end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] diff --git a/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.dproj b/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.dproj index 4403e025..3aab6d3b 100644 --- a/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.dproj +++ b/Source/Modulos/Contratos de cliente/Model/ContratosCliente_model.dproj @@ -43,6 +43,8 @@ Package FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + RemObjects Pascal Script - RemObjects SDK 3.0 Integration EurekaLog 5.1.9 ContratosCliente_model.dpk @@ -52,23 +54,23 @@ MainSource - - - - - - - - - - - + + + + + + + + + + + \ No newline at end of file +EurekaLog Last Line --> diff --git a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas index 725d685f..c8fb1e5d 100644 --- a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas +++ b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas @@ -9,9 +9,9 @@ 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_ListaAnosFacturas = '{145AB429-AA3C-428B-862E-44860A53C63D}'; - RID_FacturasCliente = '{FB6656F1-09E4-4105-B0E9-4D9ADE60387B}'; - RID_FacturasCliente_Detalles = '{29D7E3D2-87AC-4F64-98AA-E4501188EB6B}'; + RID_ListaAnosFacturas = '{AC458C56-0773-4661-8AA4-2B189CB69716}'; + RID_FacturasCliente = '{0F0BF96C-EF73-4658-93A2-63D12D3DCAD2}'; + RID_FacturasCliente_Detalles = '{906608D3-E31F-41F1-AE03-8212770A53CA}'; { Data table names } nme_ListaAnosFacturas = 'ListaAnosFacturas'; @@ -76,6 +76,7 @@ const fld_FacturasClienteVENDEDOR = 'VENDEDOR'; fld_FacturasClienteSIN_COMISION = 'SIN_COMISION'; fld_FacturasClienteTIPO_FACTURA = 'TIPO_FACTURA'; + fld_FacturasClienteLISTA_NOMBRES = 'LISTA_NOMBRES'; { FacturasCliente field indexes } idx_FacturasClienteID = 0; @@ -129,6 +130,7 @@ const idx_FacturasClienteVENDEDOR = 48; idx_FacturasClienteSIN_COMISION = 49; idx_FacturasClienteTIPO_FACTURA = 50; + idx_FacturasClienteLISTA_NOMBRES = 51; { FacturasCliente_Detalles fields } fld_FacturasCliente_DetallesID = 'ID'; @@ -165,7 +167,7 @@ const type { IListaAnosFacturas } IListaAnosFacturas = interface(IDAStronglyTypedDataTable) - ['{9B736788-CB7F-4171-80FB-BB95F35FFF7B}'] + ['{06173361-C007-4344-A43F-5AF52B29F8B7}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -200,7 +202,7 @@ type { IFacturasCliente } IFacturasCliente = interface(IDAStronglyTypedDataTable) - ['{B69EA0DD-6019-492A-821A-0EE660AC366C}'] + ['{6E9D699F-963B-43BE-B76D-FB72A2674FDA}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -405,6 +407,10 @@ type procedure SetTIPO_FACTURAValue(const aValue: String); function GetTIPO_FACTURAIsNull: Boolean; procedure SetTIPO_FACTURAIsNull(const aValue: Boolean); + function GetLISTA_NOMBRESValue: String; + procedure SetLISTA_NOMBRESValue(const aValue: String); + function GetLISTA_NOMBRESIsNull: Boolean; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); { Properties } @@ -510,6 +516,8 @@ type property SIN_COMISIONIsNull: Boolean read GetSIN_COMISIONIsNull write SetSIN_COMISIONIsNull; property TIPO_FACTURA: String read GetTIPO_FACTURAValue write SetTIPO_FACTURAValue; property TIPO_FACTURAIsNull: Boolean read GetTIPO_FACTURAIsNull write SetTIPO_FACTURAIsNull; + property LISTA_NOMBRES: String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; end; { TFacturasClienteDataTableRules } @@ -722,6 +730,10 @@ type procedure SetTIPO_FACTURAValue(const aValue: String); virtual; function GetTIPO_FACTURAIsNull: Boolean; virtual; procedure SetTIPO_FACTURAIsNull(const aValue: Boolean); virtual; + function GetLISTA_NOMBRESValue: String; virtual; + procedure SetLISTA_NOMBRESValue(const aValue: String); virtual; + function GetLISTA_NOMBRESIsNull: Boolean; virtual; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); virtual; { Properties } property ID: Integer read GetIDValue write SetIDValue; @@ -826,6 +838,8 @@ type property SIN_COMISIONIsNull: Boolean read GetSIN_COMISIONIsNull write SetSIN_COMISIONIsNull; property TIPO_FACTURA: String read GetTIPO_FACTURAValue write SetTIPO_FACTURAValue; property TIPO_FACTURAIsNull: Boolean read GetTIPO_FACTURAIsNull write SetTIPO_FACTURAIsNull; + property LISTA_NOMBRES: String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; public constructor Create(aDataTable: TDADataTable); override; @@ -835,7 +849,7 @@ type { IFacturasCliente_Detalles } IFacturasCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{824CB867-0513-46EE-8E49-714506B6D7B0}'] + ['{276F9B23-EBA6-457E-AEEF-CEBBF244B602}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -2150,6 +2164,27 @@ begin DataTable.Fields[idx_FacturasClienteTIPO_FACTURA].AsVariant := Null; end; +function TFacturasClienteDataTableRules.GetLISTA_NOMBRESValue: String; +begin + result := DataTable.Fields[idx_FacturasClienteLISTA_NOMBRES].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetLISTA_NOMBRESValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasClienteLISTA_NOMBRES].AsString := aValue; +end; + +function TFacturasClienteDataTableRules.GetLISTA_NOMBRESIsNull: boolean; +begin + result := DataTable.Fields[idx_FacturasClienteLISTA_NOMBRES].IsNull; +end; + +procedure TFacturasClienteDataTableRules.SetLISTA_NOMBRESIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_FacturasClienteLISTA_NOMBRES].AsVariant := Null; +end; + { TFacturasCliente_DetallesDataTableRules } constructor TFacturasCliente_DetallesDataTableRules.Create(aDataTable: TDADataTable); diff --git a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas index 016301dd..deb727fd 100644 --- a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas +++ b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas @@ -9,14 +9,14 @@ 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_ListaAnosFacturasDelta = '{13B2244C-664D-4276-B52B-B4F0ADD71D74}'; - RID_FacturasClienteDelta = '{A39B6A48-A724-487A-AC10-ED6BF3D502CC}'; - RID_FacturasCliente_DetallesDelta = '{EC7C88A7-6AA6-4A0F-A760-A7FDCACB21A9}'; + RID_ListaAnosFacturasDelta = '{4F7128B4-BEAB-4EEA-A48D-6F47671DDA6E}'; + RID_FacturasClienteDelta = '{0D72186B-4364-45DB-B4CE-BC95F7C696C3}'; + RID_FacturasCliente_DetallesDelta = '{2BF7FECE-AC21-4D6D-80D0-79E75DBB6727}'; type { IListaAnosFacturasDelta } IListaAnosFacturasDelta = interface(IListaAnosFacturas) - ['{13B2244C-664D-4276-B52B-B4F0ADD71D74}'] + ['{4F7128B4-BEAB-4EEA-A48D-6F47671DDA6E}'] { Property getters and setters } function GetOldANOValue : String; @@ -50,7 +50,7 @@ type { IFacturasClienteDelta } IFacturasClienteDelta = interface(IFacturasCliente) - ['{A39B6A48-A724-487A-AC10-ED6BF3D502CC}'] + ['{0D72186B-4364-45DB-B4CE-BC95F7C696C3}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -103,6 +103,7 @@ type function GetOldVENDEDORValue : String; function GetOldSIN_COMISIONValue : SmallInt; function GetOldTIPO_FACTURAValue : String; + function GetOldLISTA_NOMBRESValue : String; { Properties } property OldID : Integer read GetOldIDValue; @@ -156,6 +157,7 @@ type property OldVENDEDOR : String read GetOldVENDEDORValue; property OldSIN_COMISION : SmallInt read GetOldSIN_COMISIONValue; property OldTIPO_FACTURA : String read GetOldTIPO_FACTURAValue; + property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; end; { TFacturasClienteBusinessProcessorRules } @@ -470,6 +472,12 @@ type function GetOldTIPO_FACTURAIsNull: Boolean; virtual; procedure SetTIPO_FACTURAValue(const aValue: String); virtual; procedure SetTIPO_FACTURAIsNull(const aValue: Boolean); virtual; + function GetLISTA_NOMBRESValue: String; virtual; + function GetLISTA_NOMBRESIsNull: Boolean; virtual; + function GetOldLISTA_NOMBRESValue: String; virtual; + function GetOldLISTA_NOMBRESIsNull: Boolean; virtual; + procedure SetLISTA_NOMBRESValue(const aValue: String); virtual; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); virtual; { Properties } property ID : Integer read GetIDValue write SetIDValue; @@ -676,6 +684,10 @@ type property TIPO_FACTURAIsNull : Boolean read GetTIPO_FACTURAIsNull write SetTIPO_FACTURAIsNull; property OldTIPO_FACTURA : String read GetOldTIPO_FACTURAValue; property OldTIPO_FACTURAIsNull : Boolean read GetOldTIPO_FACTURAIsNull; + property LISTA_NOMBRES : String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull : Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; + property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; + property OldLISTA_NOMBRESIsNull : Boolean read GetOldLISTA_NOMBRESIsNull; public constructor Create(aBusinessProcessor: TDABusinessProcessor); override; @@ -685,7 +697,7 @@ type { IFacturasCliente_DetallesDelta } IFacturasCliente_DetallesDelta = interface(IFacturasCliente_Detalles) - ['{EC7C88A7-6AA6-4A0F-A760-A7FDCACB21A9}'] + ['{2BF7FECE-AC21-4D6D-80D0-79E75DBB6727}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_FACTURAValue : Integer; @@ -2521,6 +2533,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteTIPO_FACTURA] := Null; end; +function TFacturasClienteBusinessProcessorRules.GetLISTA_NOMBRESValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteLISTA_NOMBRES]; +end; + +function TFacturasClienteBusinessProcessorRules.GetLISTA_NOMBRESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteLISTA_NOMBRES]); +end; + +function TFacturasClienteBusinessProcessorRules.GetOldLISTA_NOMBRESValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteLISTA_NOMBRES]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldLISTA_NOMBRESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteLISTA_NOMBRES]); +end; + +procedure TFacturasClienteBusinessProcessorRules.SetLISTA_NOMBRESValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteLISTA_NOMBRES] := aValue; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetLISTA_NOMBRESIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteLISTA_NOMBRES] := Null; +end; + { TFacturasCliente_DetallesBusinessProcessorRules } constructor TFacturasCliente_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); diff --git a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm index 83c077b2..5ce92526 100644 --- a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm +++ b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm @@ -506,10 +506,12 @@ object RptFacturasCliente: TRptFacturasCliente #39' || extract (year from fecha_factura)'#10'when extract (month from ' + 'fecha_factura) = 12 then '#39'DICIEMBRE - '#39' || extract (year from fe' + 'cha_factura)'#10'end as TITULO,'#10'REFERENCIA, TIPO_FACTURA, ID_CLIENTE' + - ', NOMBRE, SITUACION, REFERENCIA_CLIENTE, NIF_CIF, FECHA_FACTURA,' + - ' BASE_IMPONIBLE, IVA, IMPORTE_IVA, RE, IMPORTE_RE, IMPORTE_TOTAL' + - #10#10'from V_facturas_cliente'#10'where {where}'#10'order by ANO, MES, REFER' + - 'ENCIA'#10#10 + ','#10'v_facturas_cliente.NOMBRE || COALESCE(v_contactos_nombres.otro' + + 's_nombres, '#39#39') as NOMBRE,'#10'SITUACION, REFERENCIA_CLIENTE, NIF_CIF' + + ', FECHA_FACTURA, BASE_IMPONIBLE, IVA, IMPORTE_IVA, RE, IMPORTE_R' + + 'E, IMPORTE_TOTAL'#10'from v_facturas_cliente'#10'LEFT OUTER JOIN v_conta' + + 'ctos_nombres ON (v_contactos_nombres.id = v_facturas_cliente.id_' + + 'cliente)'#10'where {where}'#10'order by ANO, MES, REFERENCIA'#10#10 StatementType = stSQL ColumnMappings = < item @@ -689,23 +691,25 @@ object RptFacturasCliente: TRptFacturasCliente 'TE.RE, V_FACTURAS_CLIENTE.IMPORTE_RE,'#10' V_FACTURAS_CLIENTE.IMP' + 'ORTE_TOTAL,'#10' V_FACTURAS_CLIENTE.OBSERVACIONES, FORMAS_PAGO.DE' + 'SCRIPCION AS FORMA_PAGO, V_FACTURAS_CLIENTE.ID_CLIENTE,'#10' V_FA' + - 'CTURAS_CLIENTE.NIF_CIF, V_FACTURAS_CLIENTE.NOMBRE, V_FACTURAS_CL' + - 'IENTE.CALLE,'#10' V_FACTURAS_CLIENTE.PROVINCIA, V_FACTURAS_CLIENT' + - 'E.CODIGO_POSTAL, V_FACTURAS_CLIENTE.POBLACION,'#10' CONTACTOS_DAT' + - 'OS_BANCO.TITULAR,'#10' CONTACTOS_DATOS_BANCO.ENTIDAD,'#10' CONTACT' + - 'OS_DATOS_BANCO.SUCURSAL,'#10' CONTACTOS_DATOS_BANCO.DC,'#10' CONTA' + - 'CTOS_DATOS_BANCO.CUENTA,'#10' ID_EMPRESA, EMPRESAS.NIF_CIF as NIF' + - '_CIF_EMPRESA, EMPRESAS.RAZON_SOCIAL,'#10' EMPRESAS.CALLE as CALLE' + - '_EMPRESA, EMPRESAS.POBLACION as POBLACION_EMPRESA,'#10' EMPRESAS.' + - 'PROVINCIA as PROVINCIA_EMPRESA, EMPRESAS.CODIGO_POSTAL as CODIGO' + - '_POSTAL_EMPRESA,'#10' EMPRESAS.TELEFONO_1, EMPRESAS.FAX, EMPRESAS' + - '.MOVIL_1, EMPRESAS.EMAIL_1,'#10' EMPRESAS.PAGINA_WEB, EMPRESAS.RE' + - 'GISTRO_MERCANTIL, EMPRESAS.LOGOTIPO'#10'FROM V_FACTURAS_CLIENTE'#10'LEFT' + - ' JOIN EMPRESAS ON EMPRESAS.ID = ID_EMPRESA'#10'LEFT JOIN FORMAS_PAGO' + - ' ON (FORMAS_PAGO.ID = V_FACTURAS_CLIENTE.ID_FORMA_PAGO)'#10'LEFT JOI' + - 'N CONTACTOS_DATOS_BANCO ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = ' + - 'V_FACTURAS_CLIENTE.ID_CLIENTE)'#10'WHERE V_FACTURAS_CLIENTE.ID = :ID' + - #10 + 'CTURAS_CLIENTE.NIF_CIF,'#10' V_FACTURAS_CLIENTE.NOMBRE || COALESC' + + 'E(v_contactos_nombres.otros_nombres, '#39#39') as NOMBRE,'#10' V_FACTUR' + + 'AS_CLIENTE.CALLE,'#10' V_FACTURAS_CLIENTE.PROVINCIA, V_FACTURAS_C' + + 'LIENTE.CODIGO_POSTAL, V_FACTURAS_CLIENTE.POBLACION,'#10' CONTACTO' + + 'S_DATOS_BANCO.TITULAR,'#10' CONTACTOS_DATOS_BANCO.ENTIDAD,'#10' CO' + + 'NTACTOS_DATOS_BANCO.SUCURSAL,'#10' CONTACTOS_DATOS_BANCO.DC,'#10' ' + + 'CONTACTOS_DATOS_BANCO.CUENTA,'#10' ID_EMPRESA, EMPRESAS.NIF_CIF a' + + 's NIF_CIF_EMPRESA, EMPRESAS.RAZON_SOCIAL,'#10' EMPRESAS.CALLE as ' + + 'CALLE_EMPRESA, EMPRESAS.POBLACION as POBLACION_EMPRESA,'#10' EMPR' + + 'ESAS.PROVINCIA as PROVINCIA_EMPRESA, EMPRESAS.CODIGO_POSTAL as C' + + 'ODIGO_POSTAL_EMPRESA,'#10' EMPRESAS.TELEFONO_1, EMPRESAS.FAX, EMP' + + 'RESAS.MOVIL_1, EMPRESAS.EMAIL_1,'#10' EMPRESAS.PAGINA_WEB, EMPRES' + + 'AS.REGISTRO_MERCANTIL, EMPRESAS.LOGOTIPO'#10'FROM V_FACTURAS_CLIENTE' + + #10'LEFT JOIN EMPRESAS ON EMPRESAS.ID = ID_EMPRESA'#10'LEFT JOIN FORMAS' + + '_PAGO ON (FORMAS_PAGO.ID = V_FACTURAS_CLIENTE.ID_FORMA_PAGO)'#10'LEF' + + 'T JOIN CONTACTOS_DATOS_BANCO ON (CONTACTOS_DATOS_BANCO.ID_CONTAC' + + 'TO = V_FACTURAS_CLIENTE.ID_CLIENTE)'#10'LEFT OUTER JOIN v_contactos_' + + 'nombres ON (v_contactos_nombres.id = V_FACTURAS_CLIENTE.id_clien' + + 'te)'#10'WHERE V_FACTURAS_CLIENTE.ID = :ID'#10 StatementType = stSQL ColumnMappings = < item @@ -1488,7 +1492,7 @@ object RptFacturasCliente: TRptFacturasCliente PrintOptions.Printer = 'Por defecto' PrintOptions.PrintOnSheet = 0 ReportOptions.CreateDate = 37800.807714351900000000 - ReportOptions.LastChange = 41304.573816296300000000 + ReportOptions.LastChange = 42143.652865393500000000 ScriptLanguage = 'PascalScript' ShowProgress = False StoreInDFM = False diff --git a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm index bef2db9c..122d18c9 100644 --- a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm +++ b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm @@ -519,6 +519,12 @@ object srvFacturasCliente: TsrvFacturasCliente Name = 'TIPO_FACTURA' DataType = datString Size = 255 + end + item + Name = 'LISTA_NOMBRES' + DataType = datString + Size = 255 + DictionaryEntry = 'FacturasCliente_LISTA_NOMBRES' end> end item @@ -1469,6 +1475,12 @@ object srvFacturasCliente: TsrvFacturasCliente DataType = datInteger DisplayLabel = 'ID_CLIENTE' end + item + Name = 'FacturasCliente_LISTA_NOMBRES' + DataType = datString + Size = 255 + DisplayLabel = 'Otros nombres' + end item Name = 'FacturasCliente_NIF_CIF' DataType = datString diff --git a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm index fee359a8..0e41740b 100644 --- a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm +++ b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm @@ -165,6 +165,10 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente DataBinding.FieldName = 'VENDEDOR' Visible = False end + object cxGridViewLISTA_NOMBRES: TcxGridDBColumn + Caption = 'Otros nombres' + DataBinding.FieldName = 'LISTA_NOMBRES' + end end inherited cxGridLevel: TcxGridLevel Caption = 'Todas' @@ -188,27 +192,15 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente Width = 802 ExplicitWidth = 802 inherited txtFiltroTodo: TcxTextEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 434 Width = 434 end inherited edtFechaIniFiltro: TcxDateEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 144 Width = 144 end inherited edtFechaFinFiltro: TcxDateEdit Left = 367 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitLeft = 367 ExplicitWidth = 273 Width = 273 diff --git a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas index 2c9a26f6..1cd69c5b 100644 --- a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas +++ b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas @@ -64,6 +64,7 @@ type cxGridViewREF_CONTRATO: TcxGridDBColumn; cxGridViewTIPO_FACTURA: TcxGridDBColumn; cxGridViewVENDEDOR: TcxGridDBColumn; + cxGridViewLISTA_NOMBRES: TcxGridDBColumn; procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); diff --git a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm index 0a638737..97474119 100644 --- a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm @@ -297,6 +297,12 @@ inherited DataModulePresupuestosCliente: TDataModulePresupuestosCliente Name = 'REFERENCIA_CLIENTE' DataType = datString Size = 255 + end + item + Name = 'LISTA_NOMBRES' + DataType = datString + Size = 255 + DisplayLabel = 'Otros nombres' end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] diff --git a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas index fe630239..bc56a94a 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 = '{A5753DD4-D84A-4351-BC29-3B338F55A041}'; - RID_Propiedades = '{BEA5D369-3FF6-476F-BB9C-AFCE9DA1B2B6}'; - RID_ListaAnosPresupuestos = '{972E7C8B-FF56-4A25-885A-1154815BC103}'; - RID_PresupuestosCliente = '{B8A5C581-F50A-4023-90F7-8BD62CF17C4B}'; - RID_CapitulosPresupuesto = '{2EA00EAB-E78D-4D2B-88CF-61560814222A}'; - RID_PresupuestosCliente_Detalles = '{F838D06B-B2D9-4CD6-9B17-F07D762C23FC}'; + RID_Valores = '{69845B8B-862E-4186-A539-0491EC6224F3}'; + RID_Propiedades = '{895EC925-C718-4589-BD6E-3B98E68C7469}'; + RID_ListaAnosPresupuestos = '{4258D9C8-6F6E-4C32-B278-7DDE0FCE6843}'; + RID_PresupuestosCliente = '{52ACB41F-F244-4D13-9769-9202F76311C0}'; + RID_CapitulosPresupuesto = '{A1E223AB-6F46-437F-B40F-7CCF8AD46DEA}'; + RID_PresupuestosCliente_Detalles = '{BFF68D7B-A862-4E85-AA60-7BD45944AEC5}'; { Data table names } nme_Valores = 'Valores'; @@ -100,6 +100,7 @@ const fld_PresupuestosClienteTIPO_PRESUPUESTO = 'TIPO_PRESUPUESTO'; fld_PresupuestosClienteCALIDADES = 'CALIDADES'; fld_PresupuestosClienteREFERENCIA_CLIENTE = 'REFERENCIA_CLIENTE'; + fld_PresupuestosClienteLISTA_NOMBRES = 'LISTA_NOMBRES'; { PresupuestosCliente field indexes } idx_PresupuestosClienteID = 0; @@ -145,6 +146,7 @@ const idx_PresupuestosClienteTIPO_PRESUPUESTO = 40; idx_PresupuestosClienteCALIDADES = 41; idx_PresupuestosClienteREFERENCIA_CLIENTE = 42; + idx_PresupuestosClienteLISTA_NOMBRES = 43; { CapitulosPresupuesto fields } fld_CapitulosPresupuestoID = 'ID'; @@ -213,7 +215,7 @@ const type { IValores } IValores = interface(IDAStronglyTypedDataTable) - ['{C68B5E3B-7C25-40DB-BA71-461534ED307A}'] + ['{4A86E969-6E16-450C-A82B-D645B8E298C4}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -320,7 +322,7 @@ type { IPropiedades } IPropiedades = interface(IDAStronglyTypedDataTable) - ['{8D007D9A-95CD-48ED-B0FB-32C5632D2DCB}'] + ['{B33EF001-F0B3-4377-A019-646EB05608B0}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -367,7 +369,7 @@ type { IListaAnosPresupuestos } IListaAnosPresupuestos = interface(IDAStronglyTypedDataTable) - ['{651D3400-6969-4005-8674-F7E5937D797D}'] + ['{4F552890-7869-406F-B323-DDC2C6BBAABD}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -402,7 +404,7 @@ type { IPresupuestosCliente } IPresupuestosCliente = interface(IDAStronglyTypedDataTable) - ['{17B40030-2811-48A3-BDB0-91B68C2109FC}'] + ['{302CF5F9-CA89-4181-9EE0-29CE9C739B7E}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -571,6 +573,10 @@ type procedure SetREFERENCIA_CLIENTEValue(const aValue: String); function GetREFERENCIA_CLIENTEIsNull: Boolean; procedure SetREFERENCIA_CLIENTEIsNull(const aValue: Boolean); + function GetLISTA_NOMBRESValue: String; + procedure SetLISTA_NOMBRESValue(const aValue: String); + function GetLISTA_NOMBRESIsNull: Boolean; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); { Properties } @@ -660,6 +666,8 @@ type property CALIDADESIsNull: Boolean read GetCALIDADESIsNull write SetCALIDADESIsNull; property REFERENCIA_CLIENTE: String read GetREFERENCIA_CLIENTEValue write SetREFERENCIA_CLIENTEValue; property REFERENCIA_CLIENTEIsNull: Boolean read GetREFERENCIA_CLIENTEIsNull write SetREFERENCIA_CLIENTEIsNull; + property LISTA_NOMBRES: String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; end; { TPresupuestosClienteDataTableRules } @@ -844,6 +852,10 @@ type procedure SetREFERENCIA_CLIENTEValue(const aValue: String); virtual; function GetREFERENCIA_CLIENTEIsNull: Boolean; virtual; procedure SetREFERENCIA_CLIENTEIsNull(const aValue: Boolean); virtual; + function GetLISTA_NOMBRESValue: String; virtual; + procedure SetLISTA_NOMBRESValue(const aValue: String); virtual; + function GetLISTA_NOMBRESIsNull: Boolean; virtual; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); virtual; { Properties } property ID: Integer read GetIDValue write SetIDValue; @@ -932,6 +944,8 @@ type property CALIDADESIsNull: Boolean read GetCALIDADESIsNull write SetCALIDADESIsNull; property REFERENCIA_CLIENTE: String read GetREFERENCIA_CLIENTEValue write SetREFERENCIA_CLIENTEValue; property REFERENCIA_CLIENTEIsNull: Boolean read GetREFERENCIA_CLIENTEIsNull write SetREFERENCIA_CLIENTEIsNull; + property LISTA_NOMBRES: String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; public constructor Create(aDataTable: TDADataTable); override; @@ -941,7 +955,7 @@ type { ICapitulosPresupuesto } ICapitulosPresupuesto = interface(IDAStronglyTypedDataTable) - ['{F3216D59-B6FF-4EEB-9E6A-9AC425472CD5}'] + ['{1D0F3A1A-E5C1-487E-8EF0-0496F49E0D34}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -1096,7 +1110,7 @@ type { IPresupuestosCliente_Detalles } IPresupuestosCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{6ABABBED-D539-4A65-A815-551502FCB5ED}'] + ['{ECFB879A-6B6E-4125-A97B-14BA365AFB4E}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -2512,6 +2526,27 @@ begin DataTable.Fields[idx_PresupuestosClienteREFERENCIA_CLIENTE].AsVariant := Null; end; +function TPresupuestosClienteDataTableRules.GetLISTA_NOMBRESValue: String; +begin + result := DataTable.Fields[idx_PresupuestosClienteLISTA_NOMBRES].AsString; +end; + +procedure TPresupuestosClienteDataTableRules.SetLISTA_NOMBRESValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosClienteLISTA_NOMBRES].AsString := aValue; +end; + +function TPresupuestosClienteDataTableRules.GetLISTA_NOMBRESIsNull: boolean; +begin + result := DataTable.Fields[idx_PresupuestosClienteLISTA_NOMBRES].IsNull; +end; + +procedure TPresupuestosClienteDataTableRules.SetLISTA_NOMBRESIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PresupuestosClienteLISTA_NOMBRES].AsVariant := Null; +end; + { TCapitulosPresupuestoDataTableRules } constructor TCapitulosPresupuestoDataTableRules.Create(aDataTable: TDADataTable); diff --git a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas index 20643021..813b93cb 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 = '{35AAA8E7-2BB3-42AD-AC0D-6669188E315A}'; - RID_PropiedadesDelta = '{A051A8E9-5AAA-434A-BF25-B8A8903781B1}'; - RID_ListaAnosPresupuestosDelta = '{63C8F784-1AD1-4B5C-B82F-92AB7E63ABB0}'; - RID_PresupuestosClienteDelta = '{F86AA970-F689-43EE-95B7-E9C5294A5DE3}'; - RID_CapitulosPresupuestoDelta = '{3B220134-F9AE-4D78-96DF-6FFFE2A37F04}'; - RID_PresupuestosCliente_DetallesDelta = '{938FA165-8D1D-46EA-8817-C8FA05A3F3BB}'; + RID_ValoresDelta = '{687FCBCD-2F9D-4E98-8515-FD5E9FCEE32A}'; + RID_PropiedadesDelta = '{784A3DDA-A3AF-49BB-A49C-7EEF41AA4565}'; + RID_ListaAnosPresupuestosDelta = '{881F141B-82C6-448C-80E9-D26A157B293A}'; + RID_PresupuestosClienteDelta = '{C5E20CDB-A1E1-42F8-B46F-25C93C4957F6}'; + RID_CapitulosPresupuestoDelta = '{17439B2D-6084-4A58-8AB1-6437324028C0}'; + RID_PresupuestosCliente_DetallesDelta = '{D011385B-63AE-4484-AF6A-DE0CA4F3E913}'; type { IValoresDelta } IValoresDelta = interface(IValores) - ['{35AAA8E7-2BB3-42AD-AC0D-6669188E315A}'] + ['{687FCBCD-2F9D-4E98-8515-FD5E9FCEE32A}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -125,7 +125,7 @@ type { IPropiedadesDelta } IPropiedadesDelta = interface(IPropiedades) - ['{A051A8E9-5AAA-434A-BF25-B8A8903781B1}'] + ['{784A3DDA-A3AF-49BB-A49C-7EEF41AA4565}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldDESCRIPCIONValue : String; @@ -171,7 +171,7 @@ type { IListaAnosPresupuestosDelta } IListaAnosPresupuestosDelta = interface(IListaAnosPresupuestos) - ['{63C8F784-1AD1-4B5C-B82F-92AB7E63ABB0}'] + ['{881F141B-82C6-448C-80E9-D26A157B293A}'] { Property getters and setters } function GetOldANOValue : String; @@ -205,7 +205,7 @@ type { IPresupuestosClienteDelta } IPresupuestosClienteDelta = interface(IPresupuestosCliente) - ['{F86AA970-F689-43EE-95B7-E9C5294A5DE3}'] + ['{C5E20CDB-A1E1-42F8-B46F-25C93C4957F6}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -250,6 +250,7 @@ type function GetOldTIPO_PRESUPUESTOValue : String; function GetOldCALIDADESValue : IROStrings; function GetOldREFERENCIA_CLIENTEValue : String; + function GetOldLISTA_NOMBRESValue : String; { Properties } property OldID : Integer read GetOldIDValue; @@ -295,6 +296,7 @@ type property OldTIPO_PRESUPUESTO : String read GetOldTIPO_PRESUPUESTOValue; property OldCALIDADES : IROStrings read GetOldCALIDADESValue; property OldREFERENCIA_CLIENTE : String read GetOldREFERENCIA_CLIENTEValue; + property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; end; { TPresupuestosClienteBusinessProcessorRules } @@ -565,6 +567,12 @@ type function GetOldREFERENCIA_CLIENTEIsNull: Boolean; virtual; procedure SetREFERENCIA_CLIENTEValue(const aValue: String); virtual; procedure SetREFERENCIA_CLIENTEIsNull(const aValue: Boolean); virtual; + function GetLISTA_NOMBRESValue: String; virtual; + function GetLISTA_NOMBRESIsNull: Boolean; virtual; + function GetOldLISTA_NOMBRESValue: String; virtual; + function GetOldLISTA_NOMBRESIsNull: Boolean; virtual; + procedure SetLISTA_NOMBRESValue(const aValue: String); virtual; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); virtual; { Properties } property ID : Integer read GetIDValue write SetIDValue; @@ -739,6 +747,10 @@ type property REFERENCIA_CLIENTEIsNull : Boolean read GetREFERENCIA_CLIENTEIsNull write SetREFERENCIA_CLIENTEIsNull; property OldREFERENCIA_CLIENTE : String read GetOldREFERENCIA_CLIENTEValue; property OldREFERENCIA_CLIENTEIsNull : Boolean read GetOldREFERENCIA_CLIENTEIsNull; + property LISTA_NOMBRES : String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull : Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; + property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; + property OldLISTA_NOMBRESIsNull : Boolean read GetOldLISTA_NOMBRESIsNull; public constructor Create(aBusinessProcessor: TDABusinessProcessor); override; @@ -748,7 +760,7 @@ type { ICapitulosPresupuestoDelta } ICapitulosPresupuestoDelta = interface(ICapitulosPresupuesto) - ['{3B220134-F9AE-4D78-96DF-6FFFE2A37F04}'] + ['{17439B2D-6084-4A58-8AB1-6437324028C0}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldPOSICIONValue : Integer; @@ -902,7 +914,7 @@ type { IPresupuestosCliente_DetallesDelta } IPresupuestosCliente_DetallesDelta = interface(IPresupuestosCliente_Detalles) - ['{938FA165-8D1D-46EA-8817-C8FA05A3F3BB}'] + ['{D011385B-63AE-4484-AF6A-DE0CA4F3E913}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_PRESUPUESTOValue : Integer; @@ -2853,6 +2865,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteREFERENCIA_CLIENTE] := Null; end; +function TPresupuestosClienteBusinessProcessorRules.GetLISTA_NOMBRESValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteLISTA_NOMBRES]; +end; + +function TPresupuestosClienteBusinessProcessorRules.GetLISTA_NOMBRESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteLISTA_NOMBRES]); +end; + +function TPresupuestosClienteBusinessProcessorRules.GetOldLISTA_NOMBRESValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosClienteLISTA_NOMBRES]; +end; + +function TPresupuestosClienteBusinessProcessorRules.GetOldLISTA_NOMBRESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosClienteLISTA_NOMBRES]); +end; + +procedure TPresupuestosClienteBusinessProcessorRules.SetLISTA_NOMBRESValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteLISTA_NOMBRES] := aValue; +end; + +procedure TPresupuestosClienteBusinessProcessorRules.SetLISTA_NOMBRESIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteLISTA_NOMBRES] := Null; +end; + { TCapitulosPresupuestoBusinessProcessorRules } constructor TCapitulosPresupuestoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); diff --git a/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm b/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm index dc8ac39b..132e52d7 100644 --- a/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm +++ b/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm @@ -338,6 +338,10 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente item DatasetField = 'REFERENCIA_CLIENTE' TableField = 'REFERENCIA_CLIENTE' + end + item + DatasetField = 'LISTA_NOMBRES' + TableField = 'LISTA_NOMBRES' end> end> Name = 'PresupuestosCliente' @@ -565,12 +569,20 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente item Name = 'CALIDADES' DataType = datMemo - DisplayLabel = 'Calidades' + BlobType = dabtBlob + DictionaryEntry = 'PresupuestosCliente_CALIDADES' end item Name = 'REFERENCIA_CLIENTE' DataType = datString Size = 255 + DictionaryEntry = 'PresupuestosCliente_REFERENCIA_CLIENTE' + end + item + Name = 'LISTA_NOMBRES' + DataType = datString + Size = 255 + DictionaryEntry = 'PresupuestosCliente_LISTA_NOMBRES' end> end item @@ -2144,6 +2156,12 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente item Name = 'PresupuestosCliente_NO_VALORADO' DataType = datSmallInt + end + item + Name = 'PresupuestosCliente_LISTA_NOMBRES' + DataType = datString + Size = 255 + DisplayLabel = 'Otros nombres' end> Left = 48 Top = 152 diff --git a/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.dfm b/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.dfm index 4b875bd4..5ef218f6 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.dfm @@ -124,6 +124,12 @@ inherited frViewPresupuestosCliente: TfrViewPresupuestosCliente BestFitMaxWidth = 25 Width = 63 end + object cxGridViewLISTA_NOMBRES: TcxGridDBColumn + Caption = 'Otros nombres' + DataBinding.FieldName = 'LISTA_NOMBRES' + BestFitMaxWidth = 65 + Width = 65 + end end inherited cxGridLevel: TcxGridLevel Caption = 'Todos' diff --git a/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.pas b/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.pas index 898a1204..fbe48bc3 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.pas @@ -47,6 +47,7 @@ type cxStyleRECHAZADO: TcxStyle; cxGridViewTIPO: TcxGridDBColumn; cxGridViewColumn1: TcxGridDBColumn; + cxGridViewLISTA_NOMBRES: TcxGridDBColumn; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; diff --git a/Source/Modulos/Recibos de cliente/Data/uDataModuleRecibosCliente.dfm b/Source/Modulos/Recibos de cliente/Data/uDataModuleRecibosCliente.dfm index 095942a5..402ec03d 100644 --- a/Source/Modulos/Recibos de cliente/Data/uDataModuleRecibosCliente.dfm +++ b/Source/Modulos/Recibos de cliente/Data/uDataModuleRecibosCliente.dfm @@ -382,6 +382,13 @@ inherited DataModuleRecibosCliente: TDataModuleRecibosCliente ServerAutoRefresh = True DictionaryEntry = 'RecibosCliente_TIENDA' end + item + Name = 'LISTA_NOMBRES' + DataType = datString + Size = 255 + DisplayLabel = 'Otros nombres' + ServerAutoRefresh = True + end item Name = 'CUENTA_CONTABLE' DataType = datString diff --git a/Source/Modulos/Recibos de cliente/Model/schRecibosClienteClient_Intf.pas b/Source/Modulos/Recibos de cliente/Model/schRecibosClienteClient_Intf.pas index d676281a..594aad71 100644 --- a/Source/Modulos/Recibos de cliente/Model/schRecibosClienteClient_Intf.pas +++ b/Source/Modulos/Recibos de cliente/Model/schRecibosClienteClient_Intf.pas @@ -9,10 +9,10 @@ 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_ListaAnosRecibos = '{83EE4B73-468E-4522-9045-EB32E8876743}'; - RID_RecibosCliente = '{5A7D52CC-AC14-459B-8FFC-2EBB710C20FA}'; - RID_PagosCliente = '{BA9CFF7F-552C-47D4-BB2C-75A68BB06A1C}'; - RID_RecibosCompensadosCli = '{A1FB671D-EA16-4357-92F7-2C9F7D2C4433}'; + RID_ListaAnosRecibos = '{AE89E2C7-E725-49D7-923C-C31DB52289BC}'; + RID_RecibosCliente = '{EA2A5415-CD57-4A6D-B0ED-02C852CDF365}'; + RID_PagosCliente = '{91E0EB25-0D8D-49CC-BEE9-DDB4DC953232}'; + RID_RecibosCompensadosCli = '{8418F37E-CDF2-49D4-8EA6-458D5619E4D4}'; { Data table names } nme_ListaAnosRecibos = 'ListaAnosRecibos'; @@ -63,6 +63,7 @@ const fld_RecibosClienteUSUARIO = 'USUARIO'; fld_RecibosClienteID_TIENDA = 'ID_TIENDA'; fld_RecibosClienteTIENDA = 'TIENDA'; + fld_RecibosClienteLISTA_NOMBRES = 'LISTA_NOMBRES'; fld_RecibosClienteCUENTA_CONTABLE = 'CUENTA_CONTABLE'; { RecibosCliente field indexes } @@ -102,7 +103,8 @@ const idx_RecibosClienteUSUARIO = 33; idx_RecibosClienteID_TIENDA = 34; idx_RecibosClienteTIENDA = 35; - idx_RecibosClienteCUENTA_CONTABLE = 36; + idx_RecibosClienteLISTA_NOMBRES = 36; + idx_RecibosClienteCUENTA_CONTABLE = 37; { PagosCliente fields } fld_PagosClienteID = 'ID'; @@ -223,7 +225,7 @@ const type { IListaAnosRecibos } IListaAnosRecibos = interface(IDAStronglyTypedDataTable) - ['{79193CD1-BBC0-4BEE-9525-6395209D7766}'] + ['{FAC8D465-4E19-43A8-B172-67E80A7D2D39}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -258,7 +260,7 @@ type { IRecibosCliente } IRecibosCliente = interface(IDAStronglyTypedDataTable) - ['{E8C9C142-DC49-4341-8819-3FC9FFB74C3C}'] + ['{68685DBB-DED5-49DD-8E6F-844F238408B8}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -404,6 +406,10 @@ type procedure SetTIENDAValue(const aValue: String); function GetTIENDAIsNull: Boolean; procedure SetTIENDAIsNull(const aValue: Boolean); + function GetLISTA_NOMBRESValue: String; + procedure SetLISTA_NOMBRESValue(const aValue: String); + function GetLISTA_NOMBRESIsNull: Boolean; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); function GetCUENTA_CONTABLEValue: String; procedure SetCUENTA_CONTABLEValue(const aValue: String); function GetCUENTA_CONTABLEIsNull: Boolean; @@ -483,6 +489,8 @@ type property ID_TIENDAIsNull: Boolean read GetID_TIENDAIsNull write SetID_TIENDAIsNull; property TIENDA: String read GetTIENDAValue write SetTIENDAValue; property TIENDAIsNull: Boolean read GetTIENDAIsNull write SetTIENDAIsNull; + property LISTA_NOMBRES: String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; property CUENTA_CONTABLE: String read GetCUENTA_CONTABLEValue write SetCUENTA_CONTABLEValue; property CUENTA_CONTABLEIsNull: Boolean read GetCUENTA_CONTABLEIsNull write SetCUENTA_CONTABLEIsNull; end; @@ -636,6 +644,10 @@ type procedure SetTIENDAValue(const aValue: String); virtual; function GetTIENDAIsNull: Boolean; virtual; procedure SetTIENDAIsNull(const aValue: Boolean); virtual; + function GetLISTA_NOMBRESValue: String; virtual; + procedure SetLISTA_NOMBRESValue(const aValue: String); virtual; + function GetLISTA_NOMBRESIsNull: Boolean; virtual; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); virtual; function GetCUENTA_CONTABLEValue: String; virtual; procedure SetCUENTA_CONTABLEValue(const aValue: String); virtual; function GetCUENTA_CONTABLEIsNull: Boolean; virtual; @@ -714,6 +726,8 @@ type property ID_TIENDAIsNull: Boolean read GetID_TIENDAIsNull write SetID_TIENDAIsNull; property TIENDA: String read GetTIENDAValue write SetTIENDAValue; property TIENDAIsNull: Boolean read GetTIENDAIsNull write SetTIENDAIsNull; + property LISTA_NOMBRES: String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull: Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; property CUENTA_CONTABLE: String read GetCUENTA_CONTABLEValue write SetCUENTA_CONTABLEValue; property CUENTA_CONTABLEIsNull: Boolean read GetCUENTA_CONTABLEIsNull write SetCUENTA_CONTABLEIsNull; @@ -725,7 +739,7 @@ type { IPagosCliente } IPagosCliente = interface(IDAStronglyTypedDataTable) - ['{B0DE3F8D-7057-49AC-91D0-719C2C24E338}'] + ['{CFF8F00A-377F-4D2C-A75E-4B5E8B17F6F5}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -964,7 +978,7 @@ type { IRecibosCompensadosCli } IRecibosCompensadosCli = interface(IDAStronglyTypedDataTable) - ['{AC077764-D35C-477D-8FD8-2F68644F812C}'] + ['{241530CF-F60C-48CC-838B-F3F34C69347C}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -2221,6 +2235,27 @@ begin DataTable.Fields[idx_RecibosClienteTIENDA].AsVariant := Null; end; +function TRecibosClienteDataTableRules.GetLISTA_NOMBRESValue: String; +begin + result := DataTable.Fields[idx_RecibosClienteLISTA_NOMBRES].AsString; +end; + +procedure TRecibosClienteDataTableRules.SetLISTA_NOMBRESValue(const aValue: String); +begin + DataTable.Fields[idx_RecibosClienteLISTA_NOMBRES].AsString := aValue; +end; + +function TRecibosClienteDataTableRules.GetLISTA_NOMBRESIsNull: boolean; +begin + result := DataTable.Fields[idx_RecibosClienteLISTA_NOMBRES].IsNull; +end; + +procedure TRecibosClienteDataTableRules.SetLISTA_NOMBRESIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_RecibosClienteLISTA_NOMBRES].AsVariant := Null; +end; + function TRecibosClienteDataTableRules.GetCUENTA_CONTABLEValue: String; begin result := DataTable.Fields[idx_RecibosClienteCUENTA_CONTABLE].AsString; diff --git a/Source/Modulos/Recibos de cliente/Model/schRecibosClienteServer_Intf.pas b/Source/Modulos/Recibos de cliente/Model/schRecibosClienteServer_Intf.pas index 96d4e49c..0ca66e96 100644 --- a/Source/Modulos/Recibos de cliente/Model/schRecibosClienteServer_Intf.pas +++ b/Source/Modulos/Recibos de cliente/Model/schRecibosClienteServer_Intf.pas @@ -9,15 +9,15 @@ 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_ListaAnosRecibosDelta = '{0101D983-84D7-4B01-B359-32BE7D3A9CBE}'; - RID_RecibosClienteDelta = '{3A483FF6-4CAD-45BC-9638-78C3A876344F}'; - RID_PagosClienteDelta = '{0BE77245-6A46-42CA-A074-48D3C835D089}'; - RID_RecibosCompensadosCliDelta = '{EC39A7E1-7D7C-4F17-8C59-29D1E8BBB1C4}'; + RID_ListaAnosRecibosDelta = '{B3DE24BA-E4C3-4E3F-B165-880E87414EB2}'; + RID_RecibosClienteDelta = '{7241C382-E1CC-4FC6-A769-0EBA50663E8D}'; + RID_PagosClienteDelta = '{553625F5-33E4-4FB0-9C0D-EE9012E08F8E}'; + RID_RecibosCompensadosCliDelta = '{5AFBB5EF-8AA2-4DFA-805D-D09B444DE070}'; type { IListaAnosRecibosDelta } IListaAnosRecibosDelta = interface(IListaAnosRecibos) - ['{0101D983-84D7-4B01-B359-32BE7D3A9CBE}'] + ['{B3DE24BA-E4C3-4E3F-B165-880E87414EB2}'] { Property getters and setters } function GetOldANOValue : String; @@ -51,7 +51,7 @@ type { IRecibosClienteDelta } IRecibosClienteDelta = interface(IRecibosCliente) - ['{3A483FF6-4CAD-45BC-9638-78C3A876344F}'] + ['{7241C382-E1CC-4FC6-A769-0EBA50663E8D}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_RECIBO_COMPENSADOValue : Integer; @@ -89,6 +89,7 @@ type function GetOldUSUARIOValue : String; function GetOldID_TIENDAValue : Integer; function GetOldTIENDAValue : String; + function GetOldLISTA_NOMBRESValue : String; function GetOldCUENTA_CONTABLEValue : String; { Properties } @@ -128,6 +129,7 @@ type property OldUSUARIO : String read GetOldUSUARIOValue; property OldID_TIENDA : Integer read GetOldID_TIENDAValue; property OldTIENDA : String read GetOldTIENDAValue; + property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; property OldCUENTA_CONTABLE : String read GetOldCUENTA_CONTABLEValue; end; @@ -352,6 +354,12 @@ type function GetOldTIENDAIsNull: Boolean; virtual; procedure SetTIENDAValue(const aValue: String); virtual; procedure SetTIENDAIsNull(const aValue: Boolean); virtual; + function GetLISTA_NOMBRESValue: String; virtual; + function GetLISTA_NOMBRESIsNull: Boolean; virtual; + function GetOldLISTA_NOMBRESValue: String; virtual; + function GetOldLISTA_NOMBRESIsNull: Boolean; virtual; + procedure SetLISTA_NOMBRESValue(const aValue: String); virtual; + procedure SetLISTA_NOMBRESIsNull(const aValue: Boolean); virtual; function GetCUENTA_CONTABLEValue: String; virtual; function GetCUENTA_CONTABLEIsNull: Boolean; virtual; function GetOldCUENTA_CONTABLEValue: String; virtual; @@ -504,6 +512,10 @@ type property TIENDAIsNull : Boolean read GetTIENDAIsNull write SetTIENDAIsNull; property OldTIENDA : String read GetOldTIENDAValue; property OldTIENDAIsNull : Boolean read GetOldTIENDAIsNull; + property LISTA_NOMBRES : String read GetLISTA_NOMBRESValue write SetLISTA_NOMBRESValue; + property LISTA_NOMBRESIsNull : Boolean read GetLISTA_NOMBRESIsNull write SetLISTA_NOMBRESIsNull; + property OldLISTA_NOMBRES : String read GetOldLISTA_NOMBRESValue; + property OldLISTA_NOMBRESIsNull : Boolean read GetOldLISTA_NOMBRESIsNull; property CUENTA_CONTABLE : String read GetCUENTA_CONTABLEValue write SetCUENTA_CONTABLEValue; property CUENTA_CONTABLEIsNull : Boolean read GetCUENTA_CONTABLEIsNull write SetCUENTA_CONTABLEIsNull; property OldCUENTA_CONTABLE : String read GetOldCUENTA_CONTABLEValue; @@ -517,7 +529,7 @@ type { IPagosClienteDelta } IPagosClienteDelta = interface(IPagosCliente) - ['{0BE77245-6A46-42CA-A074-48D3C835D089}'] + ['{553625F5-33E4-4FB0-9C0D-EE9012E08F8E}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_RECIBOValue : Integer; @@ -755,7 +767,7 @@ type { IRecibosCompensadosCliDelta } IRecibosCompensadosCliDelta = interface(IRecibosCompensadosCli) - ['{EC39A7E1-7D7C-4F17-8C59-29D1E8BBB1C4}'] + ['{5AFBB5EF-8AA2-4DFA-805D-D09B444DE070}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_RECIBO_COMPENSADOValue : Integer; @@ -2382,6 +2394,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosClienteTIENDA] := Null; end; +function TRecibosClienteBusinessProcessorRules.GetLISTA_NOMBRESValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosClienteLISTA_NOMBRES]; +end; + +function TRecibosClienteBusinessProcessorRules.GetLISTA_NOMBRESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosClienteLISTA_NOMBRES]); +end; + +function TRecibosClienteBusinessProcessorRules.GetOldLISTA_NOMBRESValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RecibosClienteLISTA_NOMBRES]; +end; + +function TRecibosClienteBusinessProcessorRules.GetOldLISTA_NOMBRESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_RecibosClienteLISTA_NOMBRES]); +end; + +procedure TRecibosClienteBusinessProcessorRules.SetLISTA_NOMBRESValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosClienteLISTA_NOMBRES] := aValue; +end; + +procedure TRecibosClienteBusinessProcessorRules.SetLISTA_NOMBRESIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosClienteLISTA_NOMBRES] := Null; +end; + function TRecibosClienteBusinessProcessorRules.GetCUENTA_CONTABLEValue: String; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosClienteCUENTA_CONTABLE]; diff --git a/Source/Modulos/Recibos de cliente/Servidor/srvRecibosCliente_Impl.dfm b/Source/Modulos/Recibos de cliente/Servidor/srvRecibosCliente_Impl.dfm index 228043c7..f6a16894 100644 --- a/Source/Modulos/Recibos de cliente/Servidor/srvRecibosCliente_Impl.dfm +++ b/Source/Modulos/Recibos de cliente/Servidor/srvRecibosCliente_Impl.dfm @@ -48,13 +48,32 @@ object srvRecibosCliente: TsrvRecibosCliente Connection = 'IBX' TargetTable = 'V_RECIBOS_CLIENTE' SQL = - 'select v_recibos_cliente.*, cont_subcuentas.descripcion as CUENT' + - 'A_CONTABLE'#10'from v_recibos_cliente'#10' left outer join pagos_clie' + - 'nte pag on'#10' (pag.id_recibo = v_recibos_cliente.id)'#10' le' + - 'ft outer join pagos_cliente pag2 on'#10' ((pag2.id_recibo = p' + - 'ag.id_recibo) and (pag2.id > pag.id))'#10' left outer join cont_s' + - 'ubcuentas on'#10' (cont_subcuentas.id = pag.cuenta)'#10'where (pa' + - 'g2.id is null) and {Where}'#10 + 'select v_recibos_cliente.ID, v_recibos_cliente.ID_RECIBO_COMPENS' + + 'ADO, v_recibos_cliente.REFERENCIA_REC_COMPENSADO,'#10' v_recibos_' + + 'cliente.REFERENCIA, v_recibos_cliente.SITUACION, v_recibos_clien' + + 'te.ID_FACTURA, v_recibos_cliente.FECHA_FACTURA, v_recibos_client' + + 'e.FORMA_PAGO_FACTURA,'#10' v_recibos_cliente.IMPORTE_FACTURA, v_r' + + 'ecibos_cliente.ID_REMESA, v_recibos_cliente.REFERENCIA_REMESA, v' + + '_recibos_cliente.FECHA_EMISION,'#10' v_recibos_cliente.FECHA_VENC' + + 'IMIENTO, v_recibos_cliente.DESCRIPCION, v_recibos_cliente.OBSERV' + + 'ACIONES, v_recibos_cliente.IMPORTE,'#10' v_recibos_cliente.OTROS_' + + 'GASTOS, v_recibos_cliente.IMPORTE_TOTAL, v_recibos_cliente.ID_EM' + + 'PRESA, v_recibos_cliente.ID_CLIENTE,'#10' v_recibos_cliente.NOMBR' + + 'E_CLIENTE, v_recibos_cliente.ENTIDAD_CLIENTE, v_recibos_cliente.' + + 'SUCURSAL_CLIENTE,'#10' v_recibos_cliente.DC_CLIENTE, v_recibos_cl' + + 'iente.CUENTA_CLIENTE, v_recibos_cliente.NIF_CIF, v_recibos_clien' + + 'te.NOMBRE, v_recibos_cliente.CALLE,'#10' v_recibos_cliente.POBLAC' + + 'ION, v_recibos_cliente.CODIGO_POSTAL, v_recibos_cliente.PROVINCI' + + 'A, v_recibos_cliente.FECHA_ALTA, v_recibos_cliente.FECHA_MODIFIC' + + 'ACION, v_recibos_cliente.USUARIO,'#10' v_recibos_cliente.ID_TIEND' + + 'A, v_recibos_cliente.TIENDA, v_recibos_cliente.LISTA_NOMBRES,'#10' ' + + ' cont_subcuentas.descripcion as CUENTA_CONTABLE'#10'from v_recibos_' + + 'cliente'#10' left outer join pagos_cliente pag on'#10' (pag.id' + + '_recibo = v_recibos_cliente.id)'#10' left outer join pagos_client' + + 'e pag2 on'#10' ((pag2.id_recibo = pag.id_recibo) and (pag2.id' + + ' > pag.id))'#10' left outer join cont_subcuentas on'#10' (cont' + + '_subcuentas.id = pag.cuenta)'#10'where (pag2.id is null) and {Where}' + + #10 StatementType = stSQL ColumnMappings = < item @@ -157,18 +176,6 @@ object srvRecibosCliente: TsrvRecibosCliente DatasetField = 'CUENTA_CLIENTE' TableField = 'CUENTA_CLIENTE' end - item - DatasetField = 'FECHA_ALTA' - TableField = 'FECHA_ALTA' - end - item - DatasetField = 'FECHA_MODIFICACION' - TableField = 'FECHA_MODIFICACION' - end - item - DatasetField = 'USUARIO' - TableField = 'USUARIO' - end item DatasetField = 'ID_TIENDA' TableField = 'ID_TIENDA' @@ -205,6 +212,22 @@ object srvRecibosCliente: TsrvRecibosCliente DatasetField = 'CUENTA_CONTABLE' TableField = '' SQLOrigin = 'CUENTA_CONTABLE' + end + item + DatasetField = 'LISTA_NOMBRES' + TableField = 'LISTA_NOMBRES' + end + item + DatasetField = 'FECHA_ALTA' + TableField = 'FECHA_ALTA' + end + item + DatasetField = 'FECHA_MODIFICACION' + TableField = 'FECHA_MODIFICACION' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' end> end> Name = 'RecibosCliente' @@ -415,11 +438,17 @@ object srvRecibosCliente: TsrvRecibosCliente Size = 255 DictionaryEntry = 'RecibosCliente_TIENDA' end + item + Name = 'LISTA_NOMBRES' + DataType = datString + Size = 255 + DictionaryEntry = 'RecibosCliente_LISTA_NOMBRES' + end item Name = 'CUENTA_CONTABLE' DataType = datString Size = 255 - DisplayLabel = 'Cuenta contable' + DictionaryEntry = 'RecibosCliente_CUENTA_CONTABLE' end> end item @@ -1741,6 +1770,18 @@ object srvRecibosCliente: TsrvRecibosCliente DataType = datString Size = 255 ServerAutoRefresh = True + end + item + Name = 'RecibosCliente_LISTA_NOMBRES' + DataType = datString + Size = 255 + DisplayLabel = 'LISTA_NOMBRES' + end + item + Name = 'RecibosCliente_CUENTA_CONTABLE' + DataType = datString + Size = 255 + DisplayLabel = 'Cuenta contable' end> Left = 48 Top = 152 diff --git a/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.dfm b/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.dfm index 8bca77c3..2d5c5c83 100644 --- a/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.dfm +++ b/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.dfm @@ -195,6 +195,10 @@ inherited frViewRecibosCliente: TfrViewRecibosCliente DataBinding.FieldName = 'CODIGO_POSTAL' Visible = False end + object cxGridViewLISTA_NOMBRES: TcxGridDBColumn + Caption = 'Otros nombres' + DataBinding.FieldName = 'LISTA_NOMBRES' + end object cxGridViewCUENTA_CONTABLE: TcxGridDBColumn Caption = 'Cuenta contable' DataBinding.FieldName = 'CUENTA_CONTABLE' @@ -223,27 +227,15 @@ inherited frViewRecibosCliente: TfrViewRecibosCliente Width = 686 ExplicitWidth = 686 inherited txtFiltroTodo: TcxTextEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 434 Width = 434 end inherited edtFechaIniFiltro: TcxDateEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitWidth = 183 Width = 183 end inherited edtFechaFinFiltro: TcxDateEdit Left = 367 - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' ExplicitLeft = 367 ExplicitWidth = 234 Width = 234 diff --git a/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.pas b/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.pas index 0bcca75d..87a5064a 100644 --- a/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.pas +++ b/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.pas @@ -58,6 +58,7 @@ type cxGridViewPROVINCIA: TcxGridDBColumn; cxGridViewCODIGO_POSTAL: TcxGridDBColumn; cxGridViewCUENTA_CONTABLE: TcxGridDBColumn; + cxGridViewLISTA_NOMBRES: TcxGridDBColumn; procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); diff --git a/Source/Servidor/FactuGES_Server.dpr b/Source/Servidor/FactuGES_Server.dpr index a377cfbf..6243add6 100644 --- a/Source/Servidor/FactuGES_Server.dpr +++ b/Source/Servidor/FactuGES_Server.dpr @@ -115,20 +115,14 @@ uses schAlbaranesProveedorServer_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorServer_Intf.pas', schInventarioClient_Intf in '..\Modulos\Inventario\Model\schInventarioClient_Intf.pas', schInventarioServer_Intf in '..\Modulos\Inventario\Model\schInventarioServer_Intf.pas', - schRecibosClienteClient_Intf in '..\Modulos\Recibos de cliente\Model\schRecibosClienteClient_Intf.pas', - schRecibosClienteServer_Intf in '..\Modulos\Recibos de cliente\Model\schRecibosClienteServer_Intf.pas', schFacturasProveedorClient_Intf in '..\Modulos\Facturas de proveedor\Model\schFacturasProveedorClient_Intf.pas', schFacturasProveedorServer_Intf in '..\Modulos\Facturas de proveedor\Model\schFacturasProveedorServer_Intf.pas', schFamiliasClient_Intf in '..\Modulos\Familias\Model\schFamiliasClient_Intf.pas', schFamiliasServer_Intf in '..\Modulos\Familias\Model\schFamiliasServer_Intf.pas', schArticulosClient_Intf in '..\Modulos\Articulos\Model\schArticulosClient_Intf.pas', schArticulosServer_Intf in '..\Modulos\Articulos\Model\schArticulosServer_Intf.pas', - schAlbaranesClienteClient_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteClient_Intf.pas', - schAlbaranesClienteServer_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteServer_Intf.pas', schEmpresasClient_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasClient_Intf.pas', schEmpresasServer_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasServer_Intf.pas', - schFacturasClienteClient_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteClient_Intf.pas', - schFacturasClienteServer_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteServer_Intf.pas', schPresupuestosClienteClient_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteClient_Intf.pas', schPresupuestosClienteServer_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteServer_Intf.pas', schContratosClienteClient_Intf in '..\Modulos\Contratos de cliente\Model\schContratosClienteClient_Intf.pas', @@ -138,7 +132,13 @@ uses schContactosClient_Intf in '..\Modulos\Contactos\Model\schContactosClient_Intf.pas', schContactosServer_Intf in '..\Modulos\Contactos\Model\schContactosServer_Intf.pas', schPedidosProveedorClient_Intf in '..\Modulos\Pedidos a proveedor\Model\schPedidosProveedorClient_Intf.pas', - schPedidosProveedorServer_Intf in '..\Modulos\Pedidos a proveedor\Model\schPedidosProveedorServer_Intf.pas'; + schPedidosProveedorServer_Intf in '..\Modulos\Pedidos a proveedor\Model\schPedidosProveedorServer_Intf.pas', + schFacturasClienteClient_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteClient_Intf.pas', + schFacturasClienteServer_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteServer_Intf.pas', + schRecibosClienteClient_Intf in '..\Modulos\Recibos de cliente\Model\schRecibosClienteClient_Intf.pas', + schRecibosClienteServer_Intf in '..\Modulos\Recibos de cliente\Model\schRecibosClienteServer_Intf.pas', + schAlbaranesClienteClient_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteClient_Intf.pas', + schAlbaranesClienteServer_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteServer_Intf.pas'; {$R *.res} {$R ..\Servicios\RODLFile.res} diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj index b3038609..1b6ddfcc 100644 --- a/Source/Servidor/FactuGES_Server.dproj +++ b/Source/Servidor/FactuGES_Server.dproj @@ -1,298 +1,306 @@ - + - - {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} - FactuGES_Server.dpr - Debug - AnyCPU - DCC32 - ..\..\Output\Debug\Servidor\FactuGES_Server.exe - - - 7.0 - False - False - 0 - 3 - ..\..\Output\Release\Servidor - RELEASE - - - 7.0 - 3 - ..\..\Output\Debug\Servidor - DEBUG; - True - - - Delphi.Personality - - - FalseTrueFalseTrueFalse2800FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.8.0.0FactuGES (Servidor)2.8.0.0jueves, 10 de noviembre de 2016 12:55 - File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found - FactuGES_Server.dpr - - - - - MainSource - - - - - -
srvEjercicios
- TDataAbstractService -
- - - -
srvEmpresas
- TDARemoteService -
- -
srvProvinciasPoblaciones
- TRORemoteDataModule -
- - - - - - - - - - - -
srvAlbaranesCliente
- TDataAbstractService -
- - - - -
srvAlbaranesProveedor
- TDataAbstractService -
- - - -
srvAlmacenes
- TDARemoteService -
- - - - - - - -
RptComisiones
- TDataModule -
- -
srvComisiones
- TDataAbstractService -
- - - - -
srvContabilidad
- TDataAbstractService -
- - - - - - - -
RptListadosContactos
- TDataModule -
- -
srvContactos
- TDARemoteService -
- - - - -
RptContratosCliente
-
- -
srvContratosCliente
- TDataAbstractService -
- - - - -
RptFacturasCliente
- TDataModule -
- -
srvFacturasCliente
- TDataAbstractService -
- - - - -
RptFacturasProveedor
- TDataModule -
- -
srvFacturasProveedor
- TDataAbstractService -
- - - - - - - -
srvGestorDocumentos
- TDataAbstractService -
- -
srvGestorInformes
- TDataAbstractService -
- - - -
srvHistoricoMovimientos
- TDataAbstractService -
- - - -
srvInventario
- TDataAbstractService -
- - - - -
RptPedidosProveedor
- TDataModule -
- -
srvPedidosProveedor
- TDataAbstractService -
- - - - -
RptPresupuestosCliente
-
- -
srvPresupuestosCliente
- TDataAbstractService -
- - - - - -
RptRecibosCliente
- TDataModule -
- -
srvRecibosCliente
- TDataAbstractService -
- - - - - -
RptRecibosProveedor
- TDataModule -
- -
srvRecibosProveedor
- TDataAbstractService -
- - - -
srvReferencias
- TDataAbstractService -
- - - - -
srvRemesasCliente
- TDataAbstractService -
- - - - -
srvRemesasProveedor
- TDataAbstractService -
- - - - - - -
srvUnidadesMedida
- TDataAbstractService -
- - - -
srvConfiguracion
- TDataAbstractService -
- -
frConexionBD
- TFrame -
- -
frConfGeneral
- TFrame -
- -
fConfiguracion
- TForm -
- -
FrameConfiguracion
- TFrame -
- -
srvLogin
- TDARemoteService -
- -
fAcercaDe
-
- -
dmServer
- TDataModule -
- -
fServerForm
-
- - - - - - - - -
+ + {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} + FactuGES_Server.dpr + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Servidor\FactuGES_Server.exe + + + 7.0 + False + False + 0 + 3 + ..\..\Output\Release\Servidor + RELEASE + + + 7.0 + 3 + ..\..\Output\Debug\Servidor + DEBUG; + True + + + Delphi.Personality + + +FalseTrueFalseTrueFalse2820FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.8.2.0FactuGES (Servidor)2.8.2.0lunes, 06 de febrero de 2017 19:05 + + + + + + + + + File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found + FactuGES_Server.dpr + + + + + MainSource + + + + + +
srvEjercicios
+ TDataAbstractService +
+ + + +
srvEmpresas
+ TDARemoteService +
+ +
srvProvinciasPoblaciones
+ TRORemoteDataModule +
+ + + + + + + + + + + +
srvAlbaranesCliente
+ TDataAbstractService +
+ + + + +
srvAlbaranesProveedor
+ TDataAbstractService +
+ + + +
srvAlmacenes
+ TDARemoteService +
+ + + + + + + +
RptComisiones
+ TDataModule +
+ +
srvComisiones
+ TDataAbstractService +
+ + + + +
srvContabilidad
+ TDataAbstractService +
+ + + + + + + +
RptListadosContactos
+ TDataModule +
+ +
srvContactos
+ TDARemoteService +
+ + + + +
RptContratosCliente
+
+ +
srvContratosCliente
+ TDataAbstractService +
+ + + + +
RptFacturasCliente
+ TDataModule +
+ +
srvFacturasCliente
+ TDataAbstractService +
+ + + + +
RptFacturasProveedor
+ TDataModule +
+ +
srvFacturasProveedor
+ TDataAbstractService +
+ + + + + + + +
srvGestorDocumentos
+ TDataAbstractService +
+ +
srvGestorInformes
+ TDataAbstractService +
+ + + +
srvHistoricoMovimientos
+ TDataAbstractService +
+ + + +
srvInventario
+ TDataAbstractService +
+ + + + +
RptPedidosProveedor
+ TDataModule +
+ +
srvPedidosProveedor
+ TDataAbstractService +
+ + + + +
RptPresupuestosCliente
+
+ +
srvPresupuestosCliente
+ TDataAbstractService +
+ + + + + +
RptRecibosCliente
+ TDataModule +
+ +
srvRecibosCliente
+ TDataAbstractService +
+ + + + + +
RptRecibosProveedor
+ TDataModule +
+ +
srvRecibosProveedor
+ TDataAbstractService +
+ + + +
srvReferencias
+ TDataAbstractService +
+ + + + +
srvRemesasCliente
+ TDataAbstractService +
+ + + + +
srvRemesasProveedor
+ TDataAbstractService +
+ + + + + + +
srvUnidadesMedida
+ TDataAbstractService +
+ + + +
srvConfiguracion
+ TDataAbstractService +
+ +
frConexionBD
+ TFrame +
+ +
frConfGeneral
+ TFrame +
+ +
fConfiguracion
+ TForm +
+ +
FrameConfiguracion
+ TFrame +
+ +
srvLogin
+ TDARemoteService +
+ +
fAcercaDe
+
+ +
dmServer
+ TDataModule +
+ +
fServerForm
+
+ + + + + + + + +