Presupuestos de cliente: mejoras en las generación a Word del informe: rellena los datos de la empresa, limpieza de código y ficheros auxiliares.

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@256 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
David Arranz 2008-02-06 19:16:50 +00:00
parent 9da004e099
commit 16ac800752
16 changed files with 224 additions and 615 deletions

View File

@ -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=
]]>
</Property>
<Property MultiValue="0" name="VersionInfoPropertySetName" type="string"></Property>
@ -670,7 +670,7 @@ CompileDate=lunes, 19 de noviembre de 2007 18:58
<Property name="Optimisation" type="WordBool">True</Property>
<Property MultiValue="0" name="OutputDir" type="WideString">%output_path%\Servidor</Property>
<Property name="OverflowChecking" type="WordBool">False</Property>
<Property MultiValue="0" name="Packages" type="WideString"></Property>
<Property MultiValue="0" name="Packages" type="WideString">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</Property>
<Property name="RangeChecking" type="WordBool">False</Property>
<Property name="RecordFieldAlign" type="TFieldAlign">fa8</Property>
<Property name="ReferenceInfo" type="WordBool">False</Property>
@ -3261,7 +3261,7 @@ Comments=
<Property MultiValue="0" name="LibraryPath" type="WideString">%library_path%</Property>
<Property name="LinkerOutput" type="Integer">0</Property>
<Property name="LocalSymbols" type="WordBool">False</Property>
<Property name="Mapfile" type="Integer">0</Property>
<Property name="Mapfile" type="Integer">3</Property>
<Property name="MaxStackSize" type="Cardinal">1048576</Property>
<Property name="MinStackSize" type="Cardinal">16384</Property>
<Property MultiValue="0" name="NamespacePrefixes" type="string"></Property>
@ -3389,7 +3389,7 @@ Comments=
<Property MultiValue="0" name="LibraryPath" type="WideString">%library_path%</Property>
<Property name="LinkerOutput" type="Integer">0</Property>
<Property name="LocalSymbols" type="WordBool">False</Property>
<Property name="Mapfile" type="Integer">0</Property>
<Property name="Mapfile" type="Integer">3</Property>
<Property name="MaxStackSize" type="Cardinal">1048576</Property>
<Property name="MinStackSize" type="Cardinal">16384</Property>
<Property MultiValue="0" name="NamespacePrefixes" type="string"></Property>
@ -5249,7 +5249,7 @@ Comments=
<Property name="IgnoreFailure" type="WordBool">False</Property>
<Property name="IncludeCompileDate" type="WordBool">False</Property>
<Property name="IncludeManifest" type="Boolean">False</Property>
<Property name="IncludeVerInfo" type="WordBool">False</Property>
<Property name="IncludeVerInfo" type="WordBool">True</Property>
<Property name="IsAction" type="Boolean">True</Property>
<Property name="IsBreakPoint" type="WordBool">False</Property>
<Property name="IsDebug" type="WordBool">False</Property>
@ -5259,7 +5259,7 @@ Comments=
<Property name="IsSpecial" type="WordBool">False</Property>
<Property name="KeepCFG" type="Boolean">False</Property>
<Property name="LinkProductVersionToFileVersion" type="Boolean">False</Property>
<Property name="Locale" type="Integer">3081</Property>
<Property name="Locale" type="Integer">3082</Property>
<Property MultiValue="0" name="LogToVariable" type="string"></Property>
<Property name="MajorVersion" type="Integer">1</Property>
<Property MultiValue="0" name="ManifestFile" type="string"></Property>
@ -5282,7 +5282,16 @@ Comments=
<Property name="UseProjectSettings" type="TFBUseProjectSettings">[usPackages,usCompiler,usLinker,usVersionInfo]</Property>
<Property name="UsePropertySet" type="Boolean">False</Property>
<Property name="UseVersionFromDOF" type="Boolean">False</Property>
<Property MultiValue="1" name="VersionInfoKeys" type="WideString"><![CDATA[FileVersion=1.0.0.0
<Property MultiValue="1" name="VersionInfoKeys" type="WideString"><![CDATA[CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
]]>
</Property>
<Property MultiValue="0" name="VersionInfoPropertySetName" type="string"></Property>
@ -5485,7 +5494,7 @@ Comments=
<Property name="IgnoreFailure" type="WordBool">False</Property>
<Property name="IncludeCompileDate" type="WordBool">False</Property>
<Property name="IncludeManifest" type="Boolean">False</Property>
<Property name="IncludeVerInfo" type="WordBool">False</Property>
<Property name="IncludeVerInfo" type="WordBool">True</Property>
<Property name="IsAction" type="Boolean">True</Property>
<Property name="IsBreakPoint" type="WordBool">False</Property>
<Property name="IsDebug" type="WordBool">False</Property>
@ -5495,7 +5504,7 @@ Comments=
<Property name="IsSpecial" type="WordBool">False</Property>
<Property name="KeepCFG" type="Boolean">False</Property>
<Property name="LinkProductVersionToFileVersion" type="Boolean">False</Property>
<Property name="Locale" type="Integer">3081</Property>
<Property name="Locale" type="Integer">3082</Property>
<Property MultiValue="0" name="LogToVariable" type="string"></Property>
<Property name="MajorVersion" type="Integer">1</Property>
<Property MultiValue="0" name="ManifestFile" type="string"></Property>
@ -5518,7 +5527,16 @@ Comments=
<Property name="UseProjectSettings" type="TFBUseProjectSettings">[usPackages,usCompiler,usLinker,usVersionInfo]</Property>
<Property name="UsePropertySet" type="Boolean">False</Property>
<Property name="UseVersionFromDOF" type="Boolean">False</Property>
<Property MultiValue="1" name="VersionInfoKeys" type="WideString"><![CDATA[FileVersion=1.0.0.0
<Property MultiValue="1" name="VersionInfoKeys" type="WideString"><![CDATA[CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
]]>
</Property>
<Property MultiValue="0" name="VersionInfoPropertySetName" type="string"></Property>
@ -6876,7 +6894,7 @@ Comments=
<Property name="LinkProductVersionToFileVersion" type="Boolean">False</Property>
<Property name="Locale" type="Integer">3081</Property>
<Property MultiValue="0" name="LogToVariable" type="string"></Property>
<Property name="MajorVersion" type="Integer">0</Property>
<Property name="MajorVersion" type="Integer">1</Property>
<Property MultiValue="0" name="ManifestFile" type="string"></Property>
<Property name="MaxRetryAttempts" type="Cardinal">0</Property>
<Property name="MinorVersion" type="Integer">0</Property>
@ -6898,16 +6916,7 @@ Comments=
<Property name="UseProjectSettings" type="TFBUseProjectSettings">[usPackages,usCompiler,usLinker,usVersionInfo]</Property>
<Property name="UsePropertySet" type="Boolean">False</Property>
<Property name="UseVersionFromDOF" type="Boolean">False</Property>
<Property MultiValue="1" name="VersionInfoKeys" type="WideString"><![CDATA[CompanyName=
FileDescription=
FileVersion=0.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=0.0.0.0
Comments=
<Property MultiValue="1" name="VersionInfoKeys" type="WideString"><![CDATA[FileVersion=1.0.0.0
]]>
</Property>
<Property MultiValue="0" name="VersionInfoPropertySetName" type="string"></Property>
@ -6920,17 +6929,14 @@ Comments=
<Property name="AssignableConst" type="WordBool">False</Property>
<Property name="BoolEval" type="WordBool">False</Property>
<Property MultiValue="0" name="BPLOutputDir" type="WideString">%package_path%</Property>
<Property name="CompilerWarnings" type="TStrings"><![CDATA[-w-UNSAFE_TYPE=0
-w-UNSAFE_CODE=0
-w-UNSAFE_CAST=0
]]>
<Property name="CompilerWarnings" type="TStrings"><![CDATA[]]>
</Property>
<Property MultiValue="0" name="Conditionals" type="WideString"></Property>
<Property name="ConsoleApp" type="WordBool">False</Property>
<Property MultiValue="0" name="DCPOutputDir" type="WideString">%modules_dcp_path%</Property>
<Property name="DebugInfo" type="WordBool">True</Property>
<Property name="DebugInfo" type="WordBool">False</Property>
<Property MultiValue="0" name="DefaultNamespace" type="string"></Property>
<Property name="DefinitionsOnly" type="WordBool">True</Property>
<Property name="DefinitionsOnly" type="WordBool">False</Property>
<Property MultiValue="0" name="ExeDescription" type="WideString"></Property>
<Property name="ExportAllSymbols" type="WordBool">False</Property>
<Property name="ExtendedSyntax" type="WordBool">True</Property>
@ -6944,8 +6950,8 @@ Comments=
<Property name="IOChecking" type="WordBool">True</Property>
<Property MultiValue="0" name="LibraryPath" type="WideString">%library_path%</Property>
<Property name="LinkerOutput" type="Integer">0</Property>
<Property name="LocalSymbols" type="WordBool">True</Property>
<Property name="Mapfile" type="Integer">3</Property>
<Property name="LocalSymbols" type="WordBool">False</Property>
<Property name="Mapfile" type="Integer">0</Property>
<Property name="MaxStackSize" type="Cardinal">1048576</Property>
<Property name="MinStackSize" type="Cardinal">16384</Property>
<Property MultiValue="0" name="NamespacePrefixes" type="string"></Property>
@ -6956,7 +6962,7 @@ Comments=
<Property MultiValue="0" name="Packages" type="WideString"></Property>
<Property name="RangeChecking" type="WordBool">False</Property>
<Property name="RecordFieldAlign" type="TFieldAlign">fa8</Property>
<Property name="ReferenceInfo" type="WordBool">True</Property>
<Property name="ReferenceInfo" type="WordBool">False</Property>
<Property name="SafeDivide" type="WordBool">False</Property>
<Property MultiValue="0" name="SearchPath" type="WideString"></Property>
<Property name="ShowHints" type="WordBool">True</Property>
@ -7783,7 +7789,7 @@ Comments=
<Property name="IgnoreFailure" type="WordBool">False</Property>
<Property name="IncludeCompileDate" type="WordBool">False</Property>
<Property name="IncludeManifest" type="Boolean">False</Property>
<Property name="IncludeVerInfo" type="WordBool">False</Property>
<Property name="IncludeVerInfo" type="WordBool">True</Property>
<Property name="IsAction" type="Boolean">True</Property>
<Property name="IsBreakPoint" type="WordBool">False</Property>
<Property name="IsDebug" type="WordBool">False</Property>
@ -7793,7 +7799,7 @@ Comments=
<Property name="IsSpecial" type="WordBool">False</Property>
<Property name="KeepCFG" type="Boolean">False</Property>
<Property name="LinkProductVersionToFileVersion" type="Boolean">False</Property>
<Property name="Locale" type="Integer">3081</Property>
<Property name="Locale" type="Integer">3082</Property>
<Property MultiValue="0" name="LogToVariable" type="string"></Property>
<Property name="MajorVersion" type="Integer">1</Property>
<Property MultiValue="0" name="ManifestFile" type="string"></Property>
@ -7817,7 +7823,16 @@ Comments=
<Property name="UseProjectSettings" type="TFBUseProjectSettings">[usPackages,usCompiler,usLinker,usVersionInfo]</Property>
<Property name="UsePropertySet" type="Boolean">False</Property>
<Property name="UseVersionFromDOF" type="Boolean">False</Property>
<Property MultiValue="1" name="VersionInfoKeys" type="WideString"><![CDATA[FileVersion=1.0.0.0
<Property MultiValue="1" name="VersionInfoKeys" type="WideString"><![CDATA[CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
]]>
</Property>
<Property MultiValue="0" name="VersionInfoPropertySetName" type="string"></Property>
@ -8835,7 +8850,7 @@ Comments=
</Property>
<Property name="Enabled" type="WordBool">True</Property>
<Property name="ExpandActionLogTitle" type="Boolean">True</Property>
<Property name="IgnoreFailure" type="WordBool">False</Property>
<Property name="IgnoreFailure" type="WordBool">True</Property>
<Property name="IsAction" type="Boolean">True</Property>
<Property name="IsBreakPoint" type="WordBool">False</Property>
<Property MultiValue="0" name="LogToVariable" type="string"></Property>
@ -9766,7 +9781,7 @@ Comments=
<Property name="IgnoreFailure" type="WordBool">False</Property>
<Property name="IncludeCompileDate" type="WordBool">False</Property>
<Property name="IncludeManifest" type="Boolean">False</Property>
<Property name="IncludeVerInfo" type="WordBool">False</Property>
<Property name="IncludeVerInfo" type="WordBool">True</Property>
<Property name="IsAction" type="Boolean">True</Property>
<Property name="IsBreakPoint" type="WordBool">False</Property>
<Property name="IsDebug" type="WordBool">False</Property>
@ -9776,7 +9791,7 @@ Comments=
<Property name="IsSpecial" type="WordBool">False</Property>
<Property name="KeepCFG" type="Boolean">False</Property>
<Property name="LinkProductVersionToFileVersion" type="Boolean">False</Property>
<Property name="Locale" type="Integer">3081</Property>
<Property name="Locale" type="Integer">3082</Property>
<Property MultiValue="0" name="LogToVariable" type="string"></Property>
<Property name="MajorVersion" type="Integer">1</Property>
<Property MultiValue="0" name="ManifestFile" type="string"></Property>
@ -9800,7 +9815,16 @@ Comments=
<Property name="UseProjectSettings" type="TFBUseProjectSettings">[usPackages,usCompiler,usLinker,usVersionInfo]</Property>
<Property name="UsePropertySet" type="Boolean">False</Property>
<Property name="UseVersionFromDOF" type="Boolean">False</Property>
<Property MultiValue="1" name="VersionInfoKeys" type="WideString"><![CDATA[FileVersion=1.0.0.0
<Property MultiValue="1" name="VersionInfoKeys" type="WideString"><![CDATA[CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
]]>
</Property>
<Property MultiValue="0" name="VersionInfoPropertySetName" type="string"></Property>
@ -16130,8 +16154,8 @@ InternalName=FactuGES
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=FactuGES
ProductVersion=2.1.4
ProductName=
ProductVersion=
Comments=
]]>
</Property>

View File

@ -5,6 +5,7 @@ object srvEmpresas: TsrvEmpresas
ConnectionName = 'IBX'
ServiceSchema = schEmpresas
ServiceDataStreamer = DABin2DataStreamer
AllowWhereSQL = True
ExportedDataTables = <>
BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection
BeforeGetDatasetData = DataAbstractServiceBeforeGetDatasetData

View File

@ -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 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;

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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.

View File

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

View File

@ -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.

View File

@ -267,7 +267,7 @@
<Interface Name="Default" UID="{8A06D5A7-8461-4F6E-8A8B-EC49C84C45D1}">
<Operations>
<Operation Name="GenerateReport" UID="{4B11FE7D-44AE-4674-9DA7-6FB6B63FC620}">
<Documentation><![CDATA[]]></Documentation><Parameters>
<Parameters>
<Parameter Name="Result" DataType="Binary" Flag="Result">
</Parameter>
<Parameter Name="ListaID" DataType="String" Flag="In" >

Binary file not shown.

View File

@ -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',

View File

@ -142,7 +142,6 @@
<DCCReference Include="..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteClient_Intf.pas"/>
<DCCReference Include="..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteServer_Intf.pas"/>
<DCCReference Include="..\Modulos\Presupuestos de cliente\Model\uBizPresupuestosClienteServer.pas"/>
<DCCReference Include="..\Modulos\Presupuestos de cliente\Reports\Literales.pas"/>
<DCCReference Include="..\Modulos\Presupuestos de cliente\Reports\uRptPresupuestosCliente_Server.pas">
<Form>RptPresupuestosCliente</Form>
</DCCReference>

View File

@ -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"