From 16ac8007527b48519ef68e1acea4cfb91cbe9573 Mon Sep 17 00:00:00 2001 From: david Date: Wed, 6 Feb 2008 19:16:50 +0000 Subject: [PATCH] =?UTF-8?q?Presupuestos=20de=20cliente:=20mejoras=20en=20l?= =?UTF-8?q?as=20generaci=C3=B3n=20a=20Word=20del=20informe:=20rellena=20lo?= =?UTF-8?q?s=20datos=20de=20la=20empresa,=20limpieza=20de=20c=C3=B3digo=20?= =?UTF-8?q?y=20ficheros=20auxiliares.?= 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.Tecsitel_FactuGES2/trunk@256 0c75b7a4-871f-7646-8a2f-f78d34cc349f --- Build/Build.fbp5 | 104 +++-- .../Empresas/Servidor/srvEmpresas_Impl.dfm | 1 + .../Empresas/Servidor/srvEmpresas_Impl.pas | 71 ++- .../Controladores/uControllerDetallesBase.pas | 2 +- Source/Base/Utiles/uSistemaFunc.pas | 13 + Source/Base/Utiles/uStringsUtils.pas | 3 + Source/GUIBase/uViewDetallesBase.pas | 31 +- .../Model/uBizDetallesPresupuestoCliente.pas | 12 +- .../Reports/Literales.pas | 408 ------------------ .../Reports/uRptWordPresupuestoCliente.dfm | 19 + .../Reports/uRptWordPresupuestoCliente.pas | 169 ++------ Source/Servicios/FactuGES.RODL | 2 +- Source/Servidor/FactuGES_Server.RES | Bin 23212 -> 23212 bytes Source/Servidor/FactuGES_Server.dpr | 1 - Source/Servidor/FactuGES_Server.dproj | 1 - Source/Servidor/FactuGES_Server.rc | 2 +- 16 files changed, 224 insertions(+), 615 deletions(-) delete mode 100644 Source/Modulos/Presupuestos de cliente/Reports/Literales.pas diff --git a/Build/Build.fbp5 b/Build/Build.fbp5 index 7bc76529..04d2d6d4 100644 --- a/Build/Build.fbp5 +++ b/Build/Build.fbp5 @@ -625,9 +625,9 @@ LegalCopyright= LegalTrademarks= OriginalFilename= ProductName= -ProductVersion=3.0.0.0 +ProductVersion= Comments= -CompileDate=lunes, 19 de noviembre de 2007 18:58 +CompileDate= ]]> @@ -670,7 +670,7 @@ CompileDate=lunes, 19 de noviembre de 2007 18:58 True %output_path%\Servidor False - + vcl;rtl;vclx;vclactnband;dbrtl;vcldb;vcldbx;bdertl;dsnap;dsnapcon;teeui;teedb;tee;adortl;vclib;ibxpress;dbxcds;dbexpress;dbxcommondriver;indycore;indysystem;indyprotocols;vclsmp;vclie;webdsnap;xmlrtl;inet;inetdbbde;inetdbxpress;remobjects_bpdx_d11;remobjects_rodx_d11;remobjects_indy_d11;remobjects_synapse_d11;remobjects_webbroker_d11;dataabstract_core_d11;dataabstract_dbxdriver_d11;dataabstract_ide_d11;dataabstract_scripting_d11;dataabstract_sdacdriver_d11;sdac105;dac105;dataabstract_sqlitedriver_d11;cxeditorsd10;cxlibraryd10;dxthemed10;cxdatad10;cxexteditorsd10;cxgridd10;cxpagecontrold10;cxschedulerd10;cxtreelistd10;cxverticalgridd10;dxbard10;dxcomnd10;dxbardbnavd10;dxbarextdbitemsd10;dxbarextitemsd10;dxdockingd10;dxlayoutcontrold10;dxnavbard10;dxpscored10;dxsbd10;dxpscxcommond10;dxpslnksd10;vclshlctrls;dxpscxextcommond10;dxpscxgridlnkd10;dxpscxpcprodd10;dxpscxscheduler2lnkd10;dxpscxtllnkd10;dxpsdxlclnkd10;dxpsprvwadvd10;pckmd5;pckucdataconnector;pckusercontrol_rt;pluginsdk_d10r;png_d10;pngcomponentsd10;tb2k_d10;tbx_d10;jclvcl;jcl;jvxpctrlsd11r;jvcored11r;jvsystemd11r;jvstdctrlsd11r;jvappfrmd11r;jvbandsd11r;jvdbd11r;jvdlgsd11r;jvbded11r;jvcmpd11r;jvcryptd11r;jvctrlsd11r;jvcustomd11r;jvdockingd11r;jvdotnetctrlsd11r;jvedid11r;jvglobusd11r;jvhmid11r;jvinterpreterd11r;jvjansd11r;jvmanagedthreadsd11r;jvmmd11r;jvnetd11r;jvpagecompsd11r;jvplugind11r;jvprintpreviewd11r;jvruntimedesignd11r;jvtimeframeworkd11r;jvuibd11r;jvvalidatorsd11r;jvwizardd11r;pckucadoconn;pckucbdeconn;pckucibxconn;pckucmidasconn;cxintlprintsys3d10;cxexportd10;cxintl5d10;guisdk_d11;ccpackd11;jsdialog100;fstee11;fs11;frx11;frxado11;frxbde11;frxdb11;frxdbx11;frxe11;frxibx11;frxtee11;fsado11;fsbde11;fsdb11;fsibx11;websnap;soaprtl;intrawebdb_90_100;intraweb_90_100 False fa8 False @@ -3261,7 +3261,7 @@ Comments= %library_path% 0 False - 0 + 3 1048576 16384 @@ -3389,7 +3389,7 @@ Comments= %library_path% 0 False - 0 + 3 1048576 16384 @@ -5249,7 +5249,7 @@ Comments= False False False - False + True True False False @@ -5259,7 +5259,7 @@ Comments= False False False - 3081 + 3082 1 @@ -5282,7 +5282,16 @@ Comments= [usPackages,usCompiler,usLinker,usVersionInfo] False False - @@ -5485,7 +5494,7 @@ Comments= False False False - False + True True False False @@ -5495,7 +5504,7 @@ Comments= False False False - 3081 + 3082 1 @@ -5518,7 +5527,16 @@ Comments= [usPackages,usCompiler,usLinker,usVersionInfo] False False - @@ -6876,7 +6894,7 @@ Comments= False 3081 - 0 + 1 0 0 @@ -6898,16 +6916,7 @@ Comments= [usPackages,usCompiler,usLinker,usVersionInfo] False False - @@ -6920,17 +6929,14 @@ Comments= False False %package_path% - + False %modules_dcp_path% - True + False - True + False False True @@ -6944,8 +6950,8 @@ Comments= True %library_path% 0 - True - 3 + False + 0 1048576 16384 @@ -6956,7 +6962,7 @@ Comments= False fa8 - True + False False True @@ -7783,7 +7789,7 @@ Comments= False False False - False + True True False False @@ -7793,7 +7799,7 @@ Comments= False False False - 3081 + 3082 1 @@ -7817,7 +7823,16 @@ Comments= [usPackages,usCompiler,usLinker,usVersionInfo] False False - @@ -8835,7 +8850,7 @@ Comments= True True - False + True True False @@ -9766,7 +9781,7 @@ Comments= False False False - False + True True False False @@ -9776,7 +9791,7 @@ Comments= False False False - 3081 + 3082 1 @@ -9800,7 +9815,16 @@ Comments= [usPackages,usCompiler,usLinker,usVersionInfo] False False - @@ -16130,8 +16154,8 @@ InternalName=FactuGES LegalCopyright= LegalTrademarks= OriginalFilename= -ProductName=FactuGES -ProductVersion=2.1.4 +ProductName= +ProductVersion= Comments= ]]> diff --git a/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm b/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm index 9089fece..e4b69f10 100644 --- a/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm +++ b/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.dfm @@ -5,6 +5,7 @@ object srvEmpresas: TsrvEmpresas ConnectionName = 'IBX' ServiceSchema = schEmpresas ServiceDataStreamer = DABin2DataStreamer + AllowWhereSQL = True ExportedDataTables = <> BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection BeforeGetDatasetData = DataAbstractServiceBeforeGetDatasetData diff --git a/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.pas b/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.pas index 68407ec0..a066dd8c 100644 --- a/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.pas +++ b/Source/ApplicationBase/Empresas/Servidor/srvEmpresas_Impl.pas @@ -15,8 +15,9 @@ uses {Ancestor Implementation:} DataAbstractService_Impl, {Used RODLs:} DataAbstract4_Intf, {Generated:} FactuGES_Intf, uDAScriptingProvider, uDABusinessProcessor, - uDABin2DataStreamer, uDADataStreamer, uDAClasses, uDAInterfaces; - + uDABin2DataStreamer, uDADataStreamer, uDAClasses, uDAInterfaces, + uDADataTable; + type { TsrvEmpresas } TsrvEmpresas = class(TDataAbstractService, IsrvEmpresas) @@ -32,8 +33,11 @@ type const aMaxRecords: Integer); private protected + function DarDatosEmpresa(const EmpresaID: Integer; AEmpresaDataSet: IDADataset): Boolean; end; +function RecuperarEmpresa(const AID: Integer; AEmpresaDataSet: IDADataset): Boolean; + implementation {$R *.dfm} @@ -41,14 +45,75 @@ uses {Generated:} FactuGES_Invk, uDataModuleServer, uRORemoteDataModule, uDatabaseUtils, Dialogs, Variants, uROStreamSerializer, uROBinaryHelpers, uSesionesUtils, schEmpresasClient_Intf, uUsersManager, - uRestriccionesUsuarioUtils; + uRestriccionesUsuarioUtils, uROClasses; procedure Create_srvEmpresas(out anInstance : IUnknown); begin anInstance := TsrvEmpresas.Create(NIL); end; +function RecuperarEmpresa(const AID: Integer; AEmpresaDataSet: IDADataset): Boolean; +begin + with TsrvEmpresas.Create(NIL) do + try + Result := DarDatosEmpresa(AID, AEmpresaDataSet); + finally + Free; + end; +end; + + { srvEmpresas } +function TsrvEmpresas.DarDatosEmpresa(const EmpresaID: Integer; AEmpresaDataSet: IDADataset): Boolean; +var + ASchema : TDASchema; + AConn : IDAConnection; + dsData: IDADataset; + + AWhere : TDAWhereExpression; + ABinary : Binary; +begin + { + Construir la expresión del Where a partir de los parámetros + que se reciban. + } + { ************ NO SÉ POR QUÉ NO FUNCIONA EL DYNAMICWHERE AQUI + with TDAWhereBuilder.Create do + try + AWhere := NewBinaryExpression(NewField('EMPRESAS', 'ID'), NewConstant(EmpresaID, datInteger), dboEqual); + finally + Free; + end; + ************** } + + ASchema := schEmpresas; + AConn := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionManager.GetDefaultConnectionName); + + try + try + dsData := ASchema.NewDataset(AConn, 'Empresas', '', False); + dsData.Where.AddText('EMPRESAS.ID = ' + IntToStr(EmpresaID)); + except + RaiseError('No existe la tabla EMPRESAS'); + end; + + dsData.Active := True; + + ABinary := Binary.Create; + try + ServiceDataStreamer.WriteDataset(ABinary, dsData, [woSchema, woRows]); + ServiceDataStreamer.Initialize(ABinary, aiReadFromBeginning); + ServiceDataStreamer.ReadDataset('Empresas', AEmpresaDataSet, True, True); + Result := True; + finally + FreeAndNIL(ABinary); + end; + finally + dsData := NIL; + AConn := NIL; + end; +end; + procedure TsrvEmpresas.DARemoteServiceCreate(Sender: TObject); begin SessionManager := dmServer.SessionManager; diff --git a/Source/Base/Controladores/uControllerDetallesBase.pas b/Source/Base/Controladores/uControllerDetallesBase.pas index 371f0ac9..790b07b3 100644 --- a/Source/Base/Controladores/uControllerDetallesBase.pas +++ b/Source/Base/Controladores/uControllerDetallesBase.pas @@ -117,7 +117,7 @@ begin DataTable.Insert; DataTable.FieldByName(CAMPO_POSICION).AsInteger := AuxNumOrden; DataTable.FieldByName(CAMPO_TIPO).AsVariant := TipoConcepto; - DataTable.post; + DataTable.Post; end; finally EndUpdate(ADataTable); diff --git a/Source/Base/Utiles/uSistemaFunc.pas b/Source/Base/Utiles/uSistemaFunc.pas index 27d0474e..e47008ec 100644 --- a/Source/Base/Utiles/uSistemaFunc.pas +++ b/Source/Base/Utiles/uSistemaFunc.pas @@ -27,6 +27,7 @@ interface { Funciones del sistema } function Ejecutar (const LineaComando: String; Oculto, Esperar: Boolean) : Boolean; +procedure EscribirEnFichero (NombreFichero, Texto : string); function DarRutaTemporal : String; function DarFicheroTemporal : String; function DarFicheroJPGTemporal : String; @@ -47,6 +48,18 @@ uses Messages, Classes, Graphics, Controls, Forms, StdCtrls; +procedure EscribirEnFichero (NombreFichero, Texto : string); +var + FicheroAux : TextFile; +begin + SysUtils.DeleteFile(NombreFichero); + AssignFile(FicheroAux, NombreFichero); + Rewrite(FicheroAux); + WriteLn(FicheroAux, Texto); + CloseFile(FicheroAux); +end; + + function Ejecutar (const LineaComando: String; Oculto, Esperar: Boolean): Boolean; var StartupInfo : TStartupInfo; diff --git a/Source/Base/Utiles/uStringsUtils.pas b/Source/Base/Utiles/uStringsUtils.pas index 1d85dea2..5ef88025 100644 --- a/Source/Base/Utiles/uStringsUtils.pas +++ b/Source/Base/Utiles/uStringsUtils.pas @@ -5,6 +5,9 @@ interface uses Classes; +const + DISPLAY_EUROS2 = '#,0.00 €'; + procedure StringToStrings(Source:string; Delimiter:char; Target:TStrings); function StringsToString(Source:TStrings; Delimiter:char):string; function EsCadenaVacia(const S: AnsiString): Boolean; overload; diff --git a/Source/GUIBase/uViewDetallesBase.pas b/Source/GUIBase/uViewDetallesBase.pas index b147544f..c293dd46 100644 --- a/Source/GUIBase/uViewDetallesBase.pas +++ b/Source/GUIBase/uViewDetallesBase.pas @@ -163,7 +163,6 @@ type procedure actAnadirTituloExecute(Sender: TObject); procedure actAnadirSubtotalExecute(Sender: TObject); procedure actAnadirDescuentoExecute(Sender: TObject); - private FController : IControllerDetallesBase; FDetalles: IDAStronglyTypedDataTable; @@ -307,9 +306,8 @@ begin if cxGridView.Controller.EditingController.IsEditing then cxGridView.Controller.EditingController.Edit.PostEditValue; - if Assigned(Controller) - and Assigned(FDetalles) then - Controller.add(FDetalles, TIPO_DETALLE_CONCEPTO); + if Assigned(Controller) and Assigned(FDetalles) then + Controller.Add(FDetalles, TIPO_DETALLE_CONCEPTO); finally cxGridView.EndUpdate; @@ -526,6 +524,7 @@ begin //ADone := True ; end; + {var ATipo : String; begin @@ -625,7 +624,7 @@ begin if Sender.Controller.EditingController.IsEditing then Sender.Controller.EditingController.Edit.PostEditValue; - Controller.actualizarTotales(Detalles); + Controller.ActualizarTotales(Detalles); end; finally cxGridView.EndUpdate; @@ -647,12 +646,15 @@ begin //dando un pete. if not Assigned(CurEdit) then begin - FontEdit1.Enabled := True; - // UpDown1.Enabled := True; - // FontSize.Enabled := True; - // FontName.Enabled := True; - CurEdit := TcxRichEdit(AEdit); + FontEdit1.Enabled := True; + RichEditBold1.Enabled := True; + RichEditItalic1.Enabled := True; + RichEditUnderline1.Enabled := True; + RichEditAlignLeft1.Enabled := True; + RichEditAlignRight1.Enabled := True; + RichEditAlignCenter1.Enabled := True; + if length(CurEdit.Text) = 0 then CurEdit.DefAttributes.Assign(FuentePorDefecto) end @@ -666,9 +668,12 @@ begin begin CurEdit := Nil; FontEdit1.Enabled := False; -// UpDown1.Enabled := False; -// FontSize.Enabled := False; -// FontName.Enabled := False; + RichEditBold1.Enabled := False; + RichEditItalic1.Enabled := False; + RichEditUnderline1.Enabled := False; + RichEditAlignLeft1.Enabled := False; + RichEditAlignRight1.Enabled := False; + RichEditAlignCenter1.Enabled := False; end; end; diff --git a/Source/Modulos/Presupuestos de cliente/Model/uBizDetallesPresupuestoCliente.pas b/Source/Modulos/Presupuestos de cliente/Model/uBizDetallesPresupuestoCliente.pas index 91ca044a..6c07b4e6 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/uBizDetallesPresupuestoCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/uBizDetallesPresupuestoCliente.pas @@ -17,6 +17,7 @@ type protected procedure OnNewRecord(Sender: TDADataTable); override; procedure BeforeInsert(Sender: TDADataTable); override; + procedure BeforePost(Sender: TDADataTable); override; end; @@ -25,8 +26,10 @@ implementation { TBizDetallesPresupuestoCliente } uses - DB; + Dialogs, DB, SysUtils; +const + SaltoLinea = #13#10; //--> #$D#$A procedure TBizDetallesPresupuestoCliente.BeforeInsert(Sender: TDADataTable); var @@ -38,6 +41,13 @@ begin AMasterTable.Post; end; +procedure TBizDetallesPresupuestoCliente.BeforePost(Sender: TDADataTable); +begin + inherited; + // Hay que quitar los saltos de línea que puedan estar en CONCEPTO + CONCEPTO := StringReplace(CONCEPTO, SaltoLinea, '', [rfReplaceAll]); +end; + procedure TBizDetallesPresupuestoCliente.OnNewRecord(Sender: TDADataTable); begin inherited; diff --git a/Source/Modulos/Presupuestos de cliente/Reports/Literales.pas b/Source/Modulos/Presupuestos de cliente/Reports/Literales.pas deleted file mode 100644 index 087555de..00000000 --- a/Source/Modulos/Presupuestos de cliente/Reports/Literales.pas +++ /dev/null @@ -1,408 +0,0 @@ -{ -=============================================================================== - Copyright (©) 2002. Rodax Software. -=============================================================================== - Los contenidos de este fichero son propiedad de Rodax Software titular del - copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, - en su totalidad o en parte, con el permiso escrito de Rodax Software, o de - acuerdo con los términos y condiciones establecidas en el acuerdo/contrato - bajo el que se suministra. - ----------------------------------------------------------------------------- - Web: www.rodax-software.com -=============================================================================== - Fecha primera versión: 09-04-2003 - Versión actual: 1.0.0 - Fecha versión actual: 09-04-2003 -=============================================================================== - Modificaciones: - - Fecha Comentarios - --------------------------------------------------------------------------- -=============================================================================== -} - -unit Literales; - -interface - -resourcestring -//////////////////////////////////////////////////////////////////////////////// -// Comunes -//////////////////////////////////////////////////////////////////////////////// - msgDeseaSalir = '¿Desea salir de FactuGES?'; - msgUsuarioInc = 'El usuario no tiene privilegios para la empresa seleccionada.'; - msgFacSitDistinta = 'Todas las facturas seleccionadas deben tener la misma situación.'; - msgIntervaloObligatorio = 'Debe seleccionar un intervalo.'; - msgIntervaloIniMenor = 'Debe seleccionar un intervalo válido.'; - msgIntervaloNombre = 'desde el nombre %s hasta el %s'; - msgFaltaNombreFichero = 'Debe introducir un nombre de fichero'; - msgSinProvincia = 'Antes de poder elegir una población debe indicar a qué provincia pertenece.'; - msgListaProvincias = 'Lista de provincias'; - msgListaPoblaciones = 'Lista de poblaciones de %s.'; - msgFechaIniMayor = 'La fecha inicial tiene que ser anterior a la fecha final.'; - msgCantidadNoValida = 'La cantidad introducida no es un valor correcto.'; - msgPrecioNoValido = 'El precio unidad introducido no es un valor correcto.'; - msgDtoNoValido = 'El descuento introducido no es un valor correcto.'; - msgIVANoValido = '%s no es un valor para el IVA válido.'; - msgFaltaFormaPago = 'Es necesario indicar la forma de pago.'; - msgIrInicio = 'Se ha llegado al final de la lista, ¿desea ir al inicio?'; - msgNoParametros = 'Debe introducir algún valor para poder realizar la búsqueda.'; - msgDeseaBorrar = '¿Desea eliminar este concepto?'; - msgDeseaBorrarConceptos = '¿Desea eliminar estos conceptos?'; - msgDeseaBorrarTodo = '¿Desea eliminar todos los conceptos?'; - msgGuardarCambios = '¿Desea guardar los cambios?'; - -//////////////////////////////////////////////////////////////////////////////// -// Datos -//////////////////////////////////////////////////////////////////////////////// - msgFabPagFaltaDes = 'Es necesario que introduzca el nombre del fabricante, o en su defecto que elimine la fila.'; - msgFabPagTablaBloq = 'Los fabricantes están siendo modificados por otro usuario, intentelo más tarde.'; - msgFabExisteenArt = 'El fabricante tiene asignados artículos, por lo que no puede ser eliminado.'; - - msgDatBancoRepetido = 'Ya existe el banco %s. Cambie el banco por otro que no exista.'; - msgDatBancoFaltaDes = 'Es necesario que introduzca los datos de la cuenta bancaria, o en su defecto que elimine la fila.'; - msgDatBancoTablaBloq = 'Los bancos están siendo modificados por otro usuario, intentelo más tarde.'; - - msgForPagRepetida = 'Ya existe la forma de pago %s. Cambie la forma de pago por otra que no exista.'; - msgForPagFaltaDes = 'Es necesario que introduzca el nombre de la forma de pago, o en su defecto que elimine la fila.'; - msgForPagTablaBloq = 'Las formas de pago están siendo modificadas por otro usuario, intentelo más tarde.'; - - msgFamRepetida = 'Ya existe la familia %s. Cambie la familia por otra que no exista.'; - msgFamFaltaDes = 'Es necesario que introduzca el nombre de la familia, o en su defecto que elimine la fila.'; - msgFamTablaBloq = 'Las familias están siendo modificadas por otro usuario, intentelo más tarde.'; - - msgUniMedRepetida = 'Ya existe la unidad de medida %s. Cambie la unidad de medida por otra que no exista.'; - msgUniMedFaltaDes = 'Es necesario que introduzca el nombre de la unidad de medida, o en su defecto que elimine la fila.'; - msgUniMedTablaBloq = 'Las unidades de medida están siendo modificadas por otro usuario, intentelo más tarde.'; - - msgTipCliFaltaDes = 'Es necesario que introduzca el nombre del tipo de cliente, o en su defecto que elimine la fila.'; - msgTipCliTablaBloq = 'Los tipos de cliente están siendo modificados por otro usuario, intentelo más tarde.'; - -//////////////////////////////////////////////////////////////////////////////// -// Cartas -//////////////////////////////////////////////////////////////////////////////// - msgCarFirma = '¿Desea firmar la carta?'; - msgCarFaltaProv = 'Falta indicar el proveedor al que va dirigida la carta.'; - msgCarFaltaCli = 'Falta indicar el cliente al que va dirigida la carta.'; - msgCarFaltaDir = 'Falta indicar la dirección a la que va dirigida la carta'; - msgCarFaltaPob = 'Falta indicar la población a la que va dirigida la carta'; - msgCarFaltaCP = 'Falta indicar el código postal al que va dirigida la carta'; - msgCarFaltaCarta = 'Debe escribir algo en la carta'; - -//////////////////////////////////////////////////////////////////////////////// -// Articulos -//////////////////////////////////////////////////////////////////////////////// - msgArtCodArtNoExiste = 'No existe el artículo %s. Introduzca un codigo de artículo que sí exista.'; - msgArtCodArtIncorrecto = '%s no es un código de artículo correcto. Cambie el codigo del artículo por otro e inténtelo de nuevo.'; - msgArtCodArtRepetido = 'Ya existe el artículo %s. Cambie el código del artículo por otro que no exista.'; - msgArtExisteArtEnAlm = 'El artículo a eliminar existe en algún almacén, por lo tanto no puede ser eliminado.'; - msgArtExisteArtEnPed = 'El artículo a eliminar existe en algún pedido de proveedor pendiente de recibir, por lo que no puede ser eliminado.'; - msgArtNoExisteArt = 'El artículo %s no existe.'; - msgArtBloqueado = 'El artículo %s está siendo modificado por otro usuario.'; - msgArtFaltaDesArt = 'Es obligatorio introducir la descripción del artículo.'; - msgArtTieneExistencias = 'El artículo a eliminar tiene todavía existencias, por lo tanto no puede ser eliminado.'; - msgArtNoExisteArtAlm = 'El artículo %s no existe en el almacén.'; - msgArtNoHayArt = 'No hay articulos dados de alta, por lo tanto no es posible seleccionar.'; - msgArtNoHayArtAlm = 'No hay articulos en el almacén, por lo tanto no es posible seleccionar'; - - -//////////////////////////////////////////////////////////////////////////////// -// Instaladores -//////////////////////////////////////////////////////////////////////////////// - msgInsFaltaCodigo = 'Debe introducir un código de instalador para poder realizar el listado.'; - msgInsCodInsNoExiste = 'No existe el instalador %s. Cambie el codigo del instalador por otro que sí exista.'; - msgInsCodInsIncorrecto = '%s no es un código de instalador correcto. Cambie el codigo del instalador por otro e inténtelo de nuevo.'; - msgInsCodInsRepetido = 'Ya existe el instalador %s. Cambie el codigo del instalador por otro que no exista.'; - msgInsFaltaNombre = 'Es obligatorio introducir el nombre del instalador.'; - msgInsNoExiste = 'El instalador %s no existe.'; - msgInsBloqueado = 'El instalador %s está siendo modificado por otro usuario.'; - msgInsNoHayInstaladores = 'No hay instaladores dados de alta, por lo tanto no es posible seleccionar.'; - - -//////////////////////////////////////////////////////////////////////////////// -// Proveedores -//////////////////////////////////////////////////////////////////////////////// - msgProFaltaCodigo = 'Debe introducir un código de proveedor para poder realizar el listado.'; - msgProCodProvNoExiste = 'No existe el proveedor %s. Cambie el codigo del proveedor por otro que sí exista.'; - msgProCodProvIncorrecto = '%s no es un código de proveedor correcto. Cambie el codigo del proveedor por otro e inténtelo de nuevo.'; - msgProCodProvRepetido = 'Ya existe el proveedor %s. Cambie el codigo del proveedor por otro que no exista.'; - msgProFaltaNombreProv = 'Es obligatorio introducir el nombre del proveedor.'; - msgProvNoExisteProv = 'El proveedor %s no existe.'; - msgProvBloqueado = 'El proveedor %s está siendo modificado por otro usuario.'; - - -//////////////////////////////////////////////////////////////////////////////// -// Pedidos de proveedor -//////////////////////////////////////////////////////////////////////////////// - msgPedYaFacturado = 'El pedido %s ya está facturado.'; - msgPedidoYaRecibido = 'El movimiento no se ha podido realizar, asegúrese que el pedido no esté ya totalmente recibido.'; - msgPedidoNoModificar = 'Este pedido no se puede modificar porque está %s.'; - msgPedidoNoEliminar = 'Este pedido no se puede eliminar porque está %s.'; - msgPedidoNoEmitir = 'Este pedido no se puede emitir porque está %s.'; - msgPedidoNoRecibir = 'Este pedido no se puede recibir porque está %s.'; - msgPedidoNoDevolver = 'Este pedido no se puede devolver porque está %s.'; - msgPedidoNoCancelar = 'Este pedido no se puede cancelar porque está %s.'; - msgPedidoNoFacturar = 'Este pedido no se puede facturar porque está %s.'; - msgCancelarPedido = '¿Desea cancelar el pedido %s?'; - msgPedCodPedRepetido = 'Ya existe el pedido %s. Cambie el codigo del pedido por otro que no exista.'; - msgPedCodPedIncorrecto = '%s no es un código correcto para un pedido a proveedor. Cambie el codigo del pedido por otro e inténtelo de nuevo.'; - msgPedPedProvNoExiste = 'El pedido a proveedor %s no existe. Cambie el codigo del pedido por otro que sí exista.'; - msgPedFaltaNombreProv = 'Es obligatorio introducir los datos del proveedor al que va dirigido este pedido.'; - msgPedFaltaFecAlta = 'Debe indicar la fecha de alta del pedido a proveedor.'; - msgPedFaltaFecRecepcion = 'Es obligatorio indicar la fecha de recepción del pedido.'; - msgPedFaltaFecEmision = 'Para poder emitir el pedido, debe indicar la fecha de emisión del pedido.'; - msgPedFaltaAlmDes = 'Es obligatorio introducir el código del almacén destino.'; - msgPedProvBloqueado = 'El pedido a proveedor %s está siendo modificado por otro usuario.'; - msgPedFaltaArticulos = 'Es obligatorio introducir al menos un artículo al pedido.'; - msgPedProvNotaPorDef = 'FECHA DE ENTREGA: INMEDIATA.'; - msgPedProvCodCliFinalIncorrecto = '%s no es un código de obra correcto. Cambie el codigo de la obra para el cliente final.'; - msgPedProvCodCliFinalNoExiste = 'No existe la obra %s. Introduzca un codigo de obra que sí exista.'; - -//////////////////////////////////////////////////////////////////////////////// -// Facturas de proveedor -//////////////////////////////////////////////////////////////////////////////// - mFacturaNoModificar = 'Esta factura no se puede modificar porque ya ha sido pagada.'; - mFacturaNoEliminar = 'Esta factura no se puede eliminar porque ya ha sido pagada.'; - msgFacProCodFacRepetido = 'Ya existe la factura de proveedor %s. Cambie el codigo de la factura por otro que no exista.'; - msgFacProCodFacIncorrecto = '%s no es un código correcto para una factura de proveedor. Cambie el codigo de la factura por otro e inténtelo de nuevo.'; - msgFacProFaltaNombreProv = 'Es obligatorio introducir los datos del proveedor al que pertenece esta factura.'; - msgFacProNoExiste = 'La factura de proveedor %s no existe. Cambie el codigo de la factura por otra que sí exista'; - msgFacProBloqueada = 'La factura de proveedor %s está siendo modificada por otro usuario.'; - msgFacProPedNoPro = 'El pedido %s no pertenece al proveedor de la factura.'; - msgFacProCodPedRepetido = 'El código de pedido %s ya existe en la lista de pedidos de la factura.'; - msgFacProFaltaFecha = 'La factura de proveedor debe tener fecha de alta.'; - msgFacProFaltaFechaVto = 'La factura de proveedor debe tener fecha de vencimiento.'; - msgFacProFechaVtoAnterior = 'La fecha de vencimiento no puede ser anterior a la fecha de alta de la factura.'; - msgFacProFaltanDetalles = 'Es necesario introducir al menos un pedido en la factura de proveedor.'; - msgFacProBorrarFacPed = 'Si elimina esta factura, los pedidos que contiene dejarán de estar facturados. ¿Desea continuar?'; - msgFacProSitPedInc = 'No se puede añadir el pedido %s porque está %s y la factura es %s.'; - msgFacProErrorFacPed = 'Error. No se ha podido añadir el pedido %s a la factura.'; - -//////////////////////////////////////////////////////////////////////////////// -// Clientes -//////////////////////////////////////////////////////////////////////////////// - msgCliFaltaNombreCli = 'Es obligatorio introducir el nombre del cliente.'; - msgCliFaltaCodigo = 'Debe introducir un código de cliente para poder realizar el listado.'; - msgCliCodCliNoExiste = 'No existe el cliente %s. Cambie el codigo del cliente por otro que sí exista.'; - msgCliCodCliIncorrecto = '%s no es un código de cliente correcto. Cambie el codigo del cliente por otro e inténtelo de nuevo.'; - msgCliCodCliRepetido = 'Ya existe el cliente %s. Cambie el codigo del cliente por otro que no exista.'; - msgCliFaltaCalle = 'Es obligatorio introducir la dirección principal del cliente.'; - msgCliNoExiste = 'El cliente %s no existe.'; - msgCliBloqueado = 'El cliente %s está siendo modificado por otro usuario.'; - msgCliConAlmAso = 'El cliente %s tiene almacenes u obras asociadas. No se puede eliminar el cliente.'; - -//////////////////////////////////////////////////////////////////////////////// -// Presupuestos de cliente -//////////////////////////////////////////////////////////////////////////////// - msgPreYaFacturado = 'El presupuesto %s ya está facturado.'; - msgPreYaAceptado = 'El presupuesto %s ya ha sido aceptado.'; - msgPreYaAnulado = 'El presupuesto %s ya ha sido anulado.'; - msgCambiarAAceptar = 'El presupuesto %s está anulado. ¿Desea aceptarlo?'; - msgCambiarAAnular = 'El presupuesto %s está aceptado. ¿Desea anularlo?'; - msgPreNoSePuedeFacturar = 'El presupuesto %s no se puede facturar porque no está aceptado.'; - msgPreNoModificar = 'Este presupuesto no se puede modificar porque está %s.'; - msgPreNoEliminar = 'Este presupuesto no se puede eliminar porque está %s.'; - msgPreNoExistePre = 'No existe el presupuesto %s. Cambie el codigo del presupuesto por otro que sí exista.'; - msgPreCodPreIncorrecto = '%s no es un código correcto para un presupuesto de cliente. Cambie el codigo del presupuesto por otro e inténtelo de nuevo.'; - msgPreCodPreRepetido = 'Ya existe el presupuesto %s. Cambie el codigo del presupuesto por otro que no exista.'; - msgPreFaltaNombreCli = 'Es obligatorio introducir los datos del cliente al que pertenece este presupuesto.'; - msgPreFaltaFecAlta = 'Debe indicar la fecha de alta del presupuesto.'; - msgPreFaltaFecDecision = 'Para poder aceptar o anular el presupuesto, debe indicar la fecha de decisión del presupuesto.'; - msgPreSobraFecDecision = 'El presupuesto está pendiente de decisión por lo que todavía no puede tener fecha de decisión. Por favor, borre la fecha de decisión o modifique la situación del presupuesto.'; - msgPreFaltaArticulos = 'Es obligatorio introducir al menos un concepto en el presupuesto.'; - msgPreBloqueado = 'El presupuesto %s está siendo modificado por otro usuario.'; - msgPreNotaPorDefecto = '16% IVA NO INCLUIDO.' + #13 + 'FORMA DE PAGO:'; - msgPreNoEliminarEnObra = 'Este presupuesto no se puede eliminar porque está asociado a una obra.'; - msgPreFaltasDatosBoni = 'Si el presupuesto tiene bonificación, es obligatorio la descripción e importe de la misma.'; - -//////////////////////////////////////////////////////////////////////////////// -// Albaranes de cliente -//////////////////////////////////////////////////////////////////////////////// - msgAlbCodAlbRepetido = 'Ya existe el albarán de cliente %s. Cambie el codigo del albarán por otro que no exista.'; - msgAlbCodAlbIncorrecto = '%s no es un código correcto para un albarán de cliente. Cambie el codigo del albarán por otro e inténtelo de nuevo.'; - msgAlbYaFacturado = 'El albarán %s ya está facturado.'; - msgAlbNoModificar = 'Este albarán no se puede modificar porque está facturado.'; - msgAlbNoEliminar = 'Este albarán no se puede eliminar porque está facturado.'; - msgAlbFaltaNombreCli = 'Es obligatorio introducir los datos del cliente al que pertenece este albarán.'; - msgAlbFaltaArticulos = 'Es obligatorio introducir al menos un concepto en el albarán.'; - msgAlbFaltaFechaAlta = 'Debe indicar la fecha de alta del albarán.'; - msgAlbNoExisteAlb = 'El albarán de cliente %s no existe. Cambie el codigo del albarán por otro que sí exista.'; - msgAlbBloqueado = 'El albarán de cliente %s está siendo modificado por otro usuario.'; - -//////////////////////////////////////////////////////////////////////////////// -// Facturas de cliente -//////////////////////////////////////////////////////////////////////////////// - msgClaseFacDistinta = 'Sólo se pueden abonar facturas de cargo. La factura elegida es un abono.'; - msgFacTotalmenteAbonada = 'La factura de cargo ya está abonada totalmente. No se pueden hacer más abonos.'; - msgFacCliCodFacRepetido = 'Ya existe la factura de cliente %s. Cambie el codigo de la factura por otro que no exista.'; - msgFacCliCodFacIncorrecto = '%s no es un código correcto para una factura de cliente. Cambie el codigo de la factura por otro e inténtelo de nuevo.'; - msgFacCliCodPreAlbInvalido = 'No se puede determinar el tipo de factura (libre, presupuesto, albaran o abono). Datos erróneos.'; - msgFacCliCodFacCargoNoExiste = 'No existe la factura de cargo %s. Cambie el codigo de la factura por otro que sí exista.'; - msgFacCliCodFacCargoIncorrecto = '%s no es un código correcto para una factura de cargo. Cambie el codigo de la factura por otro e inténtelo de nuevo.'; - msgFacCliFacConAbonos = 'Esta factura tiene al menos un abono. No se puede eliminar.'; - msgFacCliImpAbonoSuperior = 'El importe de este abono es superior al importe de la factura de cargo.'; - msgFacCliImpAbonadoSuperior = 'El importe de todos los abonos es superior al importe de la factura de cargo.'; - msgFacCliNoExisteFac = 'La factura de cliente %s no existe.'; - msgFacCliBloqueado = 'La factura de cliente %s está siendo modificada por otro usuario.'; - msgFacCliCopiarConPre = '¿Desea copiar todos los conceptos del presupuesto %s a la factura?'; - msgFacCliFaltaFechaAlta = 'Debe indicar la fecha de alta de la factura de cliente.'; - msgFacCliDesFacPre = 'Importe de factura por trabajos realizados según indicaciones de nuestro presupuesto %s con fecha %s.'; - msgFacCliBorrarFacPre = 'Si elimina esta factura, el presupuesto %s dejará de estar facturado. ¿Desea continuar?'; - msgFacCliBorrarFacAlb = 'Si elimina esta factura, el albarán %s dejará de estar facturado. ¿Desea continuar?'; - msgFacCliFaltaArticulos = 'Es obligatorio introducir al menos un concepto en la factura de cliente.'; - msgFacCliFaltaFecVto = 'La factura de cliente debe tener fecha de vencimiento.'; - msgFacCliFecVtoMenorFecAlta = 'La fecha de vencimiento tiene que ser posterior a la fecha de alta de la factura de cliente.'; - msgFacCliClaseFacDistinta = 'Sólo se pueden abonar facturas de cargo. La factura %s es un abono.'; - msgFacCliImpDebeSerNeg = 'El importe de este abono debe ser negativo.'; - -//////////////////////////////////////////////////////////////////////////////// -// Almacenes -//////////////////////////////////////////////////////////////////////////////// - msgAlmCodAlmRepetido = 'Ya existe el almacén %s. Cambie el codigo del almacén por otro que no exista.'; - msgAlmCodAlmIncorrecto = '%s no es un código de almacén correcto. Cambie el codigo del almacén por otro e inténtelo de nuevo.'; - msgAlmTieneExis = 'El almacén a eliminar tiene existencias por lo que no puede ser eliminado.'; - msgAlmFaltaNombre = 'Es obligatorio introducir el nombre del almacén.'; - msgAlmNoExisteAlm = 'El almacén %s no existe.'; - msgAlmBloqueado = 'El almacén %s está siendo modificado por otro usuario.'; - msgAlmCodAlmTienePedido = 'El pedido %s en situación de %s tiene este almacén como almacén destino y en caso de devolución será almacén origen, por lo que no puede ser eliminado.'; - msgAlmCodAlmTienePedidoPendiente = 'El pedido %s en situación de %s tiene este almacén como almacén destino, por lo que no puede ser eliminado.'; - msgAlmNoHayAlm = 'No hay almacenes dados de alta, por lo tanto no es posible seleccionar'; - msgAlmCodAlmNoExiste = 'No existe el almacén %s. Introduzca un codigo de almacén que sí exista.'; - msgAlmDeseaFinObra = 'Al finalizar una obra, todos los materiales existentes en la misma serán borrados, ¿esta seguro de querer finalizar la obra " %s "?'; - msgAlmDeseaRellCli = '¿Desea asignar los datos del cliente al almacén u obra?'; - -//////////////////////////////////////////////////////////////////////////////// -// Movimientos -//////////////////////////////////////////////////////////////////////////////// - msgMovNoExiste = 'El movimiento no existe.'; - msgMovMismoAlmacen = 'El almacén origen y el almacén destino deben de ser distintos'; - msgMovStockNoValido = 'El stock introducido no es un valor correcto.'; - msgMovNoArticulos = 'Debe haber algún artículo en la lista para poder hacer el movimiento.'; - msgMovNoExistencias = 'No hay suficientes existencias'; - msgMovNoExistePedido = 'El pedido %s ya no existe.'; - msgMovCodArtAlmNoExiste = 'El artículo con código %s y nombre %s no existe en el almacen %s. Introduzca un código de artículo que sí exista.'; - msgMovFaltaAlmacenOrigen = 'Es necesario que introduzca un almacén origen existente en la aplicación.'; - msgMovFaltaAlmacenDestino = 'Es necesario que introduzca un almacén destino existente en la aplicación.'; - msgMovCantMayorCero = 'La cantidad de unidades de Entrada/Salida debe de ser siempre positiva'; - msgMovStockMayorCero = 'El stock máximo y mínimo debe de ser siempre positivo'; - msgMovCantRecibidaMayor = 'La cantidad recibida debe ser menor o igual a la cantidad pedida, en este caso restan por recibir %s unidades'; - msgMovPedidoRecibido = 'El pedido %s ya ha sido recibido totalmente'; - msgMovPedidoDevuelto = 'El pedido %s ya ha sido devuelto'; - msgMovNoRealizado = 'El movimiento no se ha podido realizar, compruebe que el almacén y los materiales existan'; - msgMovArtAlmIncorrecto = 'Este árticulo no se añadirá a la lista ya que pertenece a un almacen distinto que el establecido como origen'; - msgMovNoExisteArtExistencias = 'Asegurese que todos los artículos del movimiento existen en el almacén seleccionado, y que las cantidades no sean mayores que las existencias'; - msgMovNoExisteArticulo = 'El artículo %s ya no existe en la aplicación, y por tanto no se realizará el movimiento.'; - msgMovNoExisteAlmacen = 'El almacén %s ya no existe en la aplicación, y por tanto no se realizará el movimiento.'; - - etiMovEntrada = 'Entrada'; - etiMovSalida = 'Salida'; - etiMovTraslado = 'Traslado'; - etiMovPedido = 'Pedido'; - etiMovDevolucion = 'Devolucion'; - etiMovEntradaSalida = 'Entrada/Salida'; - etiMovEntSalTraslado = 'Entrada/Salida por traslado'; - etiMovRegularizacion = 'Regularización'; - etiMovEntRegularizacion = 'Entrada por regularizacion'; - etiMovEntradaPedido = 'Entrada por pedido a proveedor '; - etiMovSalidaRegularizacion = 'Salida por regularizacion'; - etiMovSalidaDevolucion = 'Salida por devolucion a proveedor '; - etiMovCodigoAlmObrDestino ='Cód. de almacén/obra destino:'; - etiMovNombreAlmObrDestino = 'Nombre del almacén/obra destino:'; - etiMovCodigoAlmObrOrigen = 'Cód. de almacén/obra origen:'; - etiMovNombreAlmObrOrigen = 'Nombre del almacén/obra origen:'; - etiMovIniTrasladoEnt = 'Entrada por traslado desde el almacén con código "'; - etiMovIniTrasladoSal = 'Salida por traslado al almacén con código "'; - etiMovMedTraslado = '" y nombre "'; - etiMovFinTraslado = '"'; - -//////////////////////////////////////////////////////////////////////////////// -// Historicos -//////////////////////////////////////////////////////////////////////////////// - msgHisYaExisteObraHistorica = 'Ya existe una obra historica con el mismo nombre y misma fecha de finalización'; - -//////////////////////////////////////////////////////////////////////////////// -// Empresas -//////////////////////////////////////////////////////////////////////////////// - msgEmpBorrarEmp = '¿Esta seguro de desear eliminar eliminar la empresa?, a su vez se eliminará toda la informacion relacionada con dicha empresa'; - msgEmpBorrarAb = 'No se puede eliminar una empresa si está abierta'; - msgEmpCodEmpRepetido = 'Ya existe la empresa %s.'; - msgEmpEmpBloqueado = 'La empresa ''%s'' está siendo modificada por otro usuario.'; - msgEmpNoExisteEmp = 'No exista la empresa %s.'; - msgEmpFaltaAlgo = 'Es obligatorio introducir %s de la empresa.'; - msgEmpNombre = 'el nombre'; - -//////////////////////////////////////////////////////////////////////////////// -// Informes -//////////////////////////////////////////////////////////////////////////////// - msgInfDeseaImportes = '¿Desea imprimir los importes?'; - msgInfArticuloIniMayor = 'La descripción del artículo inicial debe ser alfabéticamente anterior al artículo final.'; - msgInfFamiliaIniMayor = 'La familia inicial debe ser alfabéticamente anterior a la familia final.'; - msgInfClienteIniMayor = 'El cliente inicial debe ser alfabéticamente anterior al cliente final.'; - msgInfProveedorIniMayor = 'El proveedor inicial debe ser alfabéticamente anterior al proveedor final.'; - msgInfFaltaAlmacen = 'Falta indicar el almacén que se utilizará para el listado.'; - msgInfTextoListarFacturasCli = 'Introduzca la fecha de vencimiento que desea utilizar para generar el listado de facturas de cliente pendientes.'; - msgInfTextoListarFacturasCliIVA = 'Introduzca la fecha de vencimiento que desea utilizar para generar el listado de IVA de las facturas de cliente.'; - msgInfTextoListarFacturasProv = 'Introduzca la fecha de vencimiento que desea utilizar para generar el listado de facturas de proveedores pendientes.'; - msgInfTextoListarFacturasProvIVA = 'Introduzca la fecha de vencimiento que desea utilizar para generar el listado de IVA de las facturas de proveedor.'; - msgInfIntervaloTodosArt = 'Todos los artículos'; - msgInfIntervaloTodosCli = 'Todos los clientes.'; - msgInfIntervaloTodosPro = 'Todos los proveedores'; - msgInfIntervaloTodosMov = 'Todos los movimientos'; - msgInfIntervaloDesArt = 'Desde el material ''%s'' hasta el ''%s'''; - msgInfIntervaloFam = 'Desde la familia ''%s'' hasta ''%s'''; - msgInfIntervaloCod = 'Desde el código %s hasta el %s'; - msgInfIntervaloCli = 'Desde el cliente ''%s'' hasta el cliente ''%s''.'; - msgInfIntervaloFec = 'Desde el %s hasta el %s.'; - msgInfIntervaloPro = 'Desde el proveedor ''%s'' hasta el proveedor ''%s''.'; - msgInfFaltaCodPre = 'Falta indicar el código del presupuesto a generar.'; - msgInfFaltaCodAlb = 'Falta indicar el código del albarán de cliente a generar.'; - msgInfFaltaCodFac = 'Falta indicar el código de la factura de cliente a generar.'; - msgInfFaltaCodPed = 'Falta indicar el código del pedido a proveedor a generar.'; - msgInfFaltaFicheroListado = 'Falta indicar el fichero donde se exportará el listado.'; - msgInfFalloRellenarCabecera = 'Se producido un error al generar la cabecera del informe en MS Word.'; - msgInfFalloRellenarInforme = 'Se producido un error al generar el informe en MS Word.'; - msgInfFalloRellenarPortada = 'Se producido un error al generar la portada del informe en MS Word.'; - msgInfFalloRellenarResumen = 'Se producido un error al generar el resumen en MS Word.'; - -//Estadisticas - msgInfEstPreGeneral = 'Informe de presupuestos'; - msgInfEstPreResumen1 = 'Clientes con mayor capital en presupuestos'; - msgInfEstPreResumen2 = 'Clientes con más presupuestos aceptados'; - msgInfEstPreResumen3 = 'Clientes con más presupuestos anulados'; - - msgInfEstFacCliGeneral = 'Informe de facturación anual'; - msgInfEstFacCliResumen1 = 'Clientes con mayor capital facturado'; - msgInfEstFacCliResumen2 = 'Clientes con más descuento aplicado'; - - msgInfEstFacProGeneral = 'Informe de facturación anual'; - msgInfEstFacProResumen1 = 'Proveedores con mayor capital facturado'; - msgInfEstFacProResumen2 = 'Proveedores con más descuento aplicado'; - - msgInfEstBeneficios = 'Informe de beneficios'; - - msgInfEstTit31 = 'Comparativa del año '; - msgInfEstTit32 = ' respecto al año '; - -//////////////////////////////////////////////////////////////////////////////// -// Opciones -//////////////////////////////////////////////////////////////////////////////// - -// CONTADORES - msgOpcTablaContBloqueada = 'Los valores de los contadores están siendo modificados por otro usuario. Inténtelo más tarde.'; - msgOpcContadoresInc = 'Todos los contadores deben de ser números enteros.'; - -//////////////////////////////////////////////////////////////////////////////// -// Excepciones -//////////////////////////////////////////////////////////////////////////////// - msgExcIBGeneral = 'SQLCode: %d'+ #10#13 + 'IBNumber: %d' + #10#13 + '%s'; - msgExcIBEspecifico = '%s' + #10#13 + #10#13 + 'SQLCode: %d'+ #10#13 + 'IBNumber: %d' + #10#13 + '%s'; - msgExcErrorConexion = 'No se puede establecer conexión con el servidor.'; - msgExcLoginIncorrecto = 'No se puede iniciar la sesión. Compruebe que su nombre de usuario y su contraseña con correctos y repita la operacion.'; - msgExcBDSoloLectura = 'Esta base de datos es sólo de lectura. No se puede realizar ninguna modificación en los datos.'; - msgExcFichBDSoloLectura = 'No se puede iniciar la sesión. El fichero de la base de datos tiene activado el atributo de sólo lectura.'; - msgExcClavePrimaria = 'Ya existe otro registro con el mismo código.'; - - msgFunRangoNoValido = '%s no es un valor válido. Debe estar en el rango de 0 a 100.'; - -implementation -end. diff --git a/Source/Modulos/Presupuestos de cliente/Reports/uRptWordPresupuestoCliente.dfm b/Source/Modulos/Presupuestos de cliente/Reports/uRptWordPresupuestoCliente.dfm index a6d73965..3629d66e 100644 --- a/Source/Modulos/Presupuestos de cliente/Reports/uRptWordPresupuestoCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Reports/uRptWordPresupuestoCliente.dfm @@ -643,4 +643,23 @@ object RptWordPresupuestosCliente: TRptWordPresupuestosCliente Left = 264 Top = 16 end + object tbl_Empresa: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = < + item + Name = 'ID' + Value = '31' + ParamType = daptInput + end> + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Empresa' + IndexDefs = <> + Left = 168 + Top = 80 + end end diff --git a/Source/Modulos/Presupuestos de cliente/Reports/uRptWordPresupuestoCliente.pas b/Source/Modulos/Presupuestos de cliente/Reports/uRptWordPresupuestoCliente.pas index f396178c..b48607f9 100644 --- a/Source/Modulos/Presupuestos de cliente/Reports/uRptWordPresupuestoCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Reports/uRptWordPresupuestoCliente.pas @@ -21,6 +21,7 @@ type tbl_Detalles: TDAMemDataTable; schReport: TDASchema; DataDictionary: TDADataDictionary; + tbl_Empresa: TDAMemDataTable; procedure DataModuleCreate(Sender: TObject); private FConnection: IDAConnection; @@ -55,120 +56,11 @@ implementation {$R *.dfm} uses - Windows, Variants, Dialogs, uDataModuleServer, Literales; + Windows, Variants, Dialogs, uDataModuleServer, uStringsUtils, uSistemaFunc, + srvEmpresas_Impl, uROTypes; const rptInforme = 'Presupuesto.rdx'; - DISPLAY_EUROS2 = '#,0.00 €'; - -type - TCharSet = set of Char; - -procedure VerMensaje(const A : String); -begin - ShowMessage(A); -end; - -function DarRutaTemporal: String; -var - nBufferLength : DWORD; // size, in characters, of the buffer - lpBuffer : PChar; // address of buffer for temp. path -begin - nBufferLength := MAX_PATH + 1; // initialize - GetMem( lpBuffer, nBufferLength ); - try - if GetTempPath( nBufferLength, lpBuffer ) <> 0 then - Result := StrPas( lpBuffer ) - else - Result := ''; - finally - FreeMem( lpBuffer ); - end; -end; - -function DarFicheroTemporal : String; -var - Buf: array [0..MAX_PATH] of Char; - RutaTmp : string; -begin - RutaTmp := DarRutaTemporal; - if GetTempFileName(PChar(RutaTmp), 'tmp', 0, Buf) <> 0 then - SetString(Result, Buf, StrLen(Buf)) - else - Result := ''; -end; - -function DarFicheroBMPTemporal : String; -var - Cadena : String; -begin - Cadena := DarFicheroTemporal; - Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'bmp'; -end; - -function DarFicheroExportar (var Fichero : String) : Boolean; -var - DialogoSalvar : TSaveDialog; -begin - Result := False; - DialogoSalvar := TSaveDialog.Create(NIL); - try - with DialogoSalvar do - begin - DefaultExt := 'doc'; - Filter := 'Documento de Word (*.doc)|*.doc'; - FilterIndex := 0; - Options := [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofEnableSizing]; - end; - Result := DialogoSalvar.Execute; - if Result then - Fichero := DialogoSalvar.FileName; - finally - DialogoSalvar.Free; - end; -end; - - -procedure EscribirEnFichero (NombreFichero, Texto : string); -var - FicheroAux : TextFile; -begin - SysUtils.DeleteFile(NombreFichero); - AssignFile(FicheroAux, NombreFichero); - Rewrite(FicheroAux); - WriteLn(FicheroAux, Texto); - CloseFile(FicheroAux); -end; - - -function EsCadenaVacia(const S: AnsiString): Boolean; overload; -begin - Result := (Length(Trim(S)) = 0) -end; - -function EsCadenaVacia(const S: Variant): Boolean; overload; -begin - Result := True; - if VarIsNull(S) then - Exit; - Result := EsCadenaVacia(VarToStr(S)); -end; - -function EsCadenaVacia(const S: AnsiString; const EmptyChars: TCharSet): Boolean; overload; -var - I, SLen: Integer; -begin - SLen := Length(S); - I := 1; - while I <= SLen do begin - if not (S[I] in EmptyChars) then begin - Result := False; - Exit; - end - else Inc(I); - end; - Result := True; -end; constructor TRptWordPresupuestosCliente.Create(AOwner: TComponent); @@ -201,7 +93,7 @@ begin if EsCadenaVacia(Fichero) then begin Result := False; - raise Exception.Create(msgInfFaltaFicheroListado); + raise Exception.Create('Falta indicar el fichero donde se exportará el listado.'); end; FNombreFichero := Fichero; @@ -225,30 +117,18 @@ begin FWordApp.ScreenUpdating := False; try if not RellenarPortada then - begin - VerMensaje(msgInfFalloRellenarPortada); - Exit; - end; + raise Exception.Create('Se producido un error al generar la portada del informe en MS Word.'); if not RellenarCabecera then - begin - VerMensaje(msgInfFalloRellenarCabecera); - Exit; - end; + raise Exception.Create('Se producido un error al generar la cabecera del informe en MS Word.'); if not RellenarInforme then - begin - VerMensaje(msgInfFalloRellenarInforme); - Exit; - end; + raise Exception.Create('Se producido un error al generar el informe en MS Word.'); if (FNumCapitulos <> 0) and (FNumCapOpc < FNumCapitulos) then begin if not RellenarResumen then - begin - VerMensaje(msgInfFalloRellenarResumen); - Exit; - end; + raise Exception.Create('Se producido un error al generar el resumen en MS Word.'); end else begin FDocumento.Document.Tables.Item(FDocumento.Document.Tables.Count-1).Delete; @@ -392,26 +272,24 @@ begin FWordApp.InsertFile(NombreFichero, 'Notas'); SysUtils.DeleteFile(NombreFichero); - { ----------------------------------------- pendiente - ReplaceBookmark('NombreEmpresaPortada', EmpresaActiva.Nombre); + ReplaceBookmark('NombreEmpresaPortada', tbl_Empresa.FieldByName('NOMBRE').AsString); ReplaceBookmark('DireccionEmpresaPortada', - Format('%s, %s. %s %s', [EmpresaActiva.Calle, EmpresaActiva.Numero, - EmpresaActiva.CodigoPostal, EmpresaActiva.Poblacion])); - ReplaceBookmark('TelefonoEmpresaPortada', EmpresaActiva.Telefono); - ReplaceBookmark('FaxEmpresaPortada', EmpresaActiva.Fax); - ReplaceBookmark('CorreoEmpresaPortada', EmpresaActiva.Correo); + Format('%s. %s %s', [tbl_Empresa.FieldByName('CALLE').AsString, + tbl_Empresa.FieldByName('CODIGO_POSTAL').AsString, tbl_Empresa.FieldByName('POBLACION').AsString])); + ReplaceBookmark('TelefonoEmpresaPortada', tbl_Empresa.FieldByName('TELEFONO_1').AsString); + ReplaceBookmark('FaxEmpresaPortada', tbl_Empresa.FieldByName('FAX').AsString); + ReplaceBookmark('CorreoEmpresaPortada', tbl_Empresa.FieldByName('EMAIL_1').AsString); - ReplaceBookmark('NombreEmpresa', EmpresaActiva.Nombre); - ReplaceBookmark('CifEmpresa', EmpresaActiva.NifCif); + ReplaceBookmark('NombreEmpresa', tbl_Empresa.FieldByName('NOMBRE').AsString); + ReplaceBookmark('CifEmpresa', tbl_Empresa.FieldByName('NIF_CIF').AsString); ReplaceBookmark('DireccionEmpresa', - Format('%s, %s. %s %s', [EmpresaActiva.Calle, EmpresaActiva.Numero, - EmpresaActiva.CodigoPostal, EmpresaActiva.Poblacion])); - ReplaceBookmark('TelefonoEmpresa', EmpresaActiva.Telefono); - ReplaceBookmark('FaxEmpresa', EmpresaActiva.Fax); - ReplaceBookmark('CorreoEmpresa', EmpresaActiva.Correo); + Format('%s. %s %s', [tbl_Empresa.FieldByName('CALLE').AsString, + tbl_Empresa.FieldByName('CODIGO_POSTAL').AsString, tbl_Empresa.FieldByName('POBLACION').AsString])); + ReplaceBookmark('TelefonoEmpresa', tbl_Empresa.FieldByName('TELEFONO_1').AsString); + ReplaceBookmark('FaxEmpresa', tbl_Empresa.FieldByName('FAX').AsString); + ReplaceBookmark('CorreoEmpresa', tbl_Empresa.FieldByName('EMAIL_1').AsString); - ReplaceBookmark('NombreEmpresaFirma', EmpresaActiva.Nombre); - --------------------------------------------- } + ReplaceBookmark('NombreEmpresaFirma', tbl_Empresa.FieldByName('NOMBRE').AsString); end; Result := True; @@ -627,7 +505,8 @@ begin tbl_Detalles.Active := True; FCodigoPresupuesto := AID; - Generar; + if RecuperarEmpresa(tbl_Cabecera.FieldByName('ID_EMPRESA').AsInteger, tbl_Empresa) then + Generar; end; end. diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL index 2cea59d7..6ea01b5b 100644 --- a/Source/Servicios/FactuGES.RODL +++ b/Source/Servicios/FactuGES.RODL @@ -267,7 +267,7 @@ - + diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES index ce4b0c1b07cb462bba4ce12fedde5ccc38185fce..34c7ec5e015f6831cfeb9ece7744b0b082fcb711 100644 GIT binary patch delta 23 dcmZ3pm2u5h#tl(XoJI@=3|2sFJUKba698VA2Fd^c delta 23 dcmZ3pm2u5h#tl(XoQ4dh3|2sFFgZEO698V;2G9Ti diff --git a/Source/Servidor/FactuGES_Server.dpr b/Source/Servidor/FactuGES_Server.dpr index d69d1d93..d600bb46 100644 --- a/Source/Servidor/FactuGES_Server.dpr +++ b/Source/Servidor/FactuGES_Server.dpr @@ -104,7 +104,6 @@ uses FactuGES_Intf in '..\Servicios\FactuGES_Intf.pas', FactuGES_Invk in '..\Servicios\FactuGES_Invk.pas', uRptWordPresupuestoCliente in '..\Modulos\Presupuestos de cliente\Reports\uRptWordPresupuestoCliente.pas' {RptWordPresupuestosCliente: TDataModule}, - Literales in '..\Modulos\Presupuestos de cliente\Reports\Literales.pas', AHWord97 in 'Utiles\AHWord97.pas', uSistemaFunc in '..\Base\Utiles\uSistemaFunc.pas', schArticulosClient_Intf in '..\Modulos\Articulos\Model\schArticulosClient_Intf.pas', diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj index d9864ad0..ab57fb12 100644 --- a/Source/Servidor/FactuGES_Server.dproj +++ b/Source/Servidor/FactuGES_Server.dproj @@ -142,7 +142,6 @@ -
RptPresupuestosCliente
diff --git a/Source/Servidor/FactuGES_Server.rc b/Source/Servidor/FactuGES_Server.rc index 059f07d7..85e76762 100644 --- a/Source/Servidor/FactuGES_Server.rc +++ b/Source/Servidor/FactuGES_Server.rc @@ -14,7 +14,7 @@ BEGIN BEGIN VALUE "FileVersion", "1.0.0.0\0" VALUE "ProductVersion", "1.0.0.0\0" - VALUE "CompileDate", "miércoles, 06 de febrero de 2008 15:50\0" + VALUE "CompileDate", "miércoles, 06 de febrero de 2008 20:03\0" END END BLOCK "VarFileInfo"