diff --git a/Build/Build.fbl6 b/Build/Build.fbl6 index f6d7a9c..f13133b 100644 Binary files a/Build/Build.fbl6 and b/Build/Build.fbl6 differ diff --git a/Database/udfs/funciones.pas b/Database/udfs/funciones.pas index 557fd62..9bd0c51 100644 --- a/Database/udfs/funciones.pas +++ b/Database/udfs/funciones.pas @@ -8,290 +8,27 @@ implementation uses Forms, Classes, SysUtils, StdCtrls, ComCtrls, - RVRTF, RVRTFErr, Menus, RVTypes; - -type - TConversor = class(TObject) - private - FirstLine: Boolean; - procedure DoReaderText(Sender: TRVRTFReader; const Text: TRVAnsiString; - Position: TRVRTFPosition); - public - RTFText: TRVAnsiString; - function ExtractTextFromRTF(const AStream: TStream): Boolean; - end; - -{ TConversor } - -procedure TConversor.DoReaderText(Sender: TRVRTFReader; - const Text: TRVAnsiString; Position: TRVRTFPosition); -begin - if (Position <> rtf_ts_ContinuePara) and not FirstLine then - RTFText := RTFText+#13#10; - FirstLine := False; - RTFText := RTFText+Text; -end; - -function TConversor.ExtractTextFromRTF(const AStream: TStream): Boolean; -var - Parser: TRVRTFReader; -begin - {FirstLine := True;} - parser := TRVRTFReader.Create(nil); - try - Parser.OnNewText := DoReaderText; - Result := (Parser.ReadFromStream(AStream) = rtf_ec_OK); - finally - Parser.Free; - end; -end; + Menus, Windows; function RtfToText(Cadena: PChar): PChar; var AStream : TStringStream; - AConversor : TConversor; + ARichEdit: TRichEdit; begin - AStream := TStringStream.Create(Cadena); - AConversor := TConversor.Create; + ARichEdit := TRichEdit.CreateParented(HWND_MESSAGE); try - AConversor.ExtractTextFromRTF(AStream); - Result := PChar(AConversor.RTFText); + AStream := TStringStream.Create(Cadena); + try + ARichEdit.SelectAll; + ARichEdit.SelText := StrPas(Cadena); + Result := PChar(ARichEdit.Text); + finally + FreeAndNIL(AStream); + end; finally - FreeAndNil(AConversor); - FreeAndNIL(AStream); + FreeAndNIL(ARichEdit); end; end; - - - - - - - -// NO USAR LAS FUNCIONES QUE VIENEN A CONTINUACIÓN - - -// Esta función falla cuando hay caracteres especiales en el texto (ñ, por ejemplo). -// Mejor la de abajo. - -function RtfToText2(Cadena: PChar): PChar; -var - i: integer; - CadenaAux1: String; - -begin - //Si no tiene ninguna llave no esta guardado como rtf - if (Pos('{', Cadena) = 0) then - Result := Cadena - else - //Esta guardado con rtf - begin - //Quitamos todo lo que está antes de \fs1x - i := Pos('\fs', Cadena); - CadenaAux1 := Copy(Cadena, i, StrLen(Cadena)-1); - - //Quitamos la parte de delante \fs1x - i:= Pos(' ', CadenaAux1); - CadenaAux1 := Copy(PChar(CadenaAux1), i+1, StrLen(PChar(CadenaAux1))-1); - - //Quitamos todo lo de la parte de atras a partir de la primera barra \ que tengamos - i:= Pos('\', CadenaAux1); - CadenaAux1 := Copy(PChar(CadenaAux1), 0, i-1); - - Result := PChar(CadenaAux1); - end; -end; - - -{ - Convert RTF enabled text to plain. - http://www.delphipraxis.net/topic45179.html -} - -// Esta función falla porque se come letras del final de cada línea (¿?) - -// HAY QUE LIMPIAR LA CADENA DE ENTRADA DE SALTOS DE LÍNEA (#$D#$A) POR QUE -// SI NO, NO ES UNA CADENA CON TEXTO RTF VÁLIDO - -function RtfToText3(Cadena: PChar): PChar; -const - SaltoLinea = #13#10; //--> #$D#$A -var - aSource: string; // <- Para almacenar la cadena de entrada sin saltos de línea - Source: string; - NChar: Integer; - - function ProcessGroupRecursevly: string; - - function HexToInt(HexStr: String): Integer; - begin - result := StrToInt('$' + HexStr); - end; - - procedure SkipStar; - var - BracesOpened: Integer; - Escaped: Boolean; - begin - BracesOpened:=1; - Escaped:=false; - while BracesOpened>0 - do begin - Inc (NChar); - case Source [NChar] of - '{': if Escaped - then Escaped:=false - else Inc (BracesOpened); - '}': if Escaped - then Escaped:=false - else Dec (BracesOpened); - '\': Escaped:=not Escaped; - else Escaped:=false; - end; - end; - end; - - function UnicodeCharCode2ANSIChar (aCode: LongInt): Char; - type - TUnicode2ANSITable=array [$0410..$044f] of Char; - const - Unicode2ANSITable: TUnicode2AnsiTable=('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', - 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ'); - begin - if (Low (Unicode2ANSITable)<=aCode) and (aCode<=High (Unicode2ANSITable)) then - UnicodeCharCode2ANSIChar:=Unicode2ANSITable [aCode] - else UnicodeCharCode2ANSIChar:='?'; - end; - - var - Control, NumericValue, TextValue: string; - begin - Result:=''; - Inc (NChar); - while NChar<=Length (Source) - do case Source [NChar] of - '{': Result:=Result+ProcessGroupRecursevly; - '}': begin - Inc (NChar); - Break; - end; - '\': begin - Inc (NChar); - case Source [NChar] of - '''': begin - Result:=Result+Chr (HexToInt (Copy (Source, NChar+1, 2))); - Inc (NChar, 3); - end; - '~': Result:=Result+#$20; - '*': SkipStar; - 'a'..'z': begin - Control:=''; - while Source [NChar] in ['a'..'z'] - do begin - Control:=Control+Source [NChar]; - Inc (NChar); - end; - if Source [NChar]='-' - then begin - NumericValue:=Source [NChar]; - Inc (NChar); - end - else NumericValue:=''; - while Source [NChar] in ['0'..'9'] - do begin - NumericValue:=NumericValue+Source [NChar]; - Inc (NChar); - end; - if Source [NChar]='{' - then ProcessGroupRecursevly; - TextValue:=''; - if not (Source [NChar] in ['a'..'z', '{', '}', '\']) - then begin - Inc (NChar); - while not (Source [NChar] in ['{', '}', '\']) - do begin - TextValue:=TextValue+Source [NChar]; - Inc (NChar); - end; - end; - if (Control='line') or (Control='par') - then Result:=Result+#$0D#$0A - else if Control='tab' - then Result:=Result+#$09 - else if Control='u' - then Result:=Result+UnicodeCharCode2ANSIChar (StrToInt (NumericValue)) - else if Control='colortbl' - then TextValue:=''; - if Length (TextValue)>0 - then if (not ((TextValue [Length (TextValue)]=';') and (Source [NChar]='}'))) - then begin - Result:=Result+TextValue; - TextValue:=''; - end; - end; - else begin - Result:=Result+Source [NChar]; - Inc (NChar); - end; - end; - end; - else begin - Result:=Result+Source [NChar]; - Inc (NChar); - end; - end; - end; - - function InitSource: Boolean; - var - BracesCount: Integer; - Escaped: Boolean; - begin - if Copy (aSource, 1, 5) <> '{\rtf' then - InitSource:=false - else begin - Source:=''; - BracesCount:=0; - Escaped:=false; - NChar:=1; - while (NChar<=Length (aSource)) and (BracesCount>=0) - do begin - if not (aSource [NChar] in [#$0D, #$0A]) - then begin - Source:=Source+aSource [NChar]; - case aSource [NChar] of - '{': if not Escaped - then Inc (BracesCount) - else Escaped:=false; - '}': if not Escaped - then Dec (BracesCount) - else Escaped:=false; - '\': Escaped:=true; - else Escaped:=false; - end; - end; - Inc (NChar); - end; - InitSource:=BracesCount=0; - end; - end; - -begin - // Hay que quitar el salto de línea al final de la aSource RTF - aSource := Copy(Cadena, 1, length(Cadena)-2); - - // Cambiar los saltos de línea que no son de RTF por un caracter para - // que se limpien. -// aSource := StringReplace(aSource, SaltoLinea, '^', [rfreplaceall]); - - if InitSource then - begin - NChar:=1; - Result:= PChar(ProcessGroupRecursevly); - end - else - Result := PChar(aSource); -end; - end. + diff --git a/Database/udfs/udf_RtfToText.dll b/Database/udfs/udf_RtfToText.dll index 5f0c6b0..d4aa640 100644 Binary files a/Database/udfs/udf_RtfToText.dll and b/Database/udfs/udf_RtfToText.dll differ diff --git a/Database/udfs/udf_RtfToText.drc b/Database/udfs/udf_RtfToText.drc index 95b9fbb..0cf17f5 100644 --- a/Database/udfs/udf_RtfToText.drc +++ b/Database/udfs/udf_RtfToText.drc @@ -8,243 +8,243 @@ resources were bound to the produced executable. */ -#define Consts_SDockZoneHasNoCtl 65296 -#define Consts_SDockZoneVersionConflict 65297 -#define Consts_SANSIEncoding 65298 -#define Consts_SASCIIEncoding 65299 -#define Consts_SUnicodeEncoding 65300 -#define Consts_SBigEndianEncoding 65301 -#define Consts_SUTF8Encoding 65302 -#define Consts_SUTF7Encoding 65303 -#define JConsts_sChangeJPGSize 65304 -#define JConsts_sJPEGError 65305 -#define JConsts_sJPEGImageFile 65306 -#define Consts_SmkcLeft 65312 -#define Consts_SmkcUp 65313 -#define Consts_SmkcRight 65314 -#define Consts_SmkcDown 65315 -#define Consts_SmkcIns 65316 -#define Consts_SmkcDel 65317 -#define Consts_SmkcShift 65318 -#define Consts_SmkcCtrl 65319 -#define Consts_SmkcAlt 65320 -#define Consts_SInvalidClipFmt 65321 -#define Consts_SIconToClipboard 65322 -#define Consts_SCannotOpenClipboard 65323 -#define Consts_SDuplicateMenus 65324 -#define Consts_SDockedCtlNeedsName 65325 -#define Consts_SDockTreeRemoveError 65326 -#define Consts_SDockZoneNotFound 65327 -#define Consts_SMsgDlgHelp 65328 -#define Consts_SMsgDlgAbort 65329 -#define Consts_SMsgDlgRetry 65330 -#define Consts_SMsgDlgIgnore 65331 -#define Consts_SMsgDlgAll 65332 -#define Consts_SMsgDlgNoToAll 65333 -#define Consts_SMsgDlgYesToAll 65334 -#define Consts_SmkcBkSp 65335 -#define Consts_SmkcTab 65336 -#define Consts_SmkcEsc 65337 -#define Consts_SmkcEnter 65338 -#define Consts_SmkcSpace 65339 -#define Consts_SmkcPgUp 65340 -#define Consts_SmkcPgDn 65341 -#define Consts_SmkcEnd 65342 -#define Consts_SmkcHome 65343 -#define Consts_SRetryButton 65344 -#define Consts_SAbortButton 65345 -#define Consts_SAllButton 65346 -#define Consts_SCannotDragForm 65347 -#define Consts_SVMetafiles 65348 -#define Consts_SVEnhMetafiles 65349 -#define Consts_SVIcons 65350 -#define Consts_SVBitmaps 65351 -#define Consts_SMsgDlgWarning 65352 -#define Consts_SMsgDlgError 65353 -#define Consts_SMsgDlgInformation 65354 -#define Consts_SMsgDlgConfirm 65355 -#define Consts_SMsgDlgYes 65356 -#define Consts_SMsgDlgNo 65357 -#define Consts_SMsgDlgOK 65358 -#define Consts_SMsgDlgCancel 65359 -#define Consts_SVisibleChanged 65360 -#define Consts_SCannotShowModal 65361 -#define Consts_SMenuIndexError 65362 -#define Consts_SMenuReinserted 65363 -#define Consts_SMenuNotFound 65364 -#define Consts_SNoTimers 65365 -#define Consts_SGroupIndexTooLow 65366 -#define Consts_SNoMDIForm 65367 -#define Consts_SControlParentSetToSelf 65368 -#define Consts_SOKButton 65369 -#define Consts_SCancelButton 65370 -#define Consts_SYesButton 65371 -#define Consts_SNoButton 65372 -#define Consts_SHelpButton 65373 -#define Consts_SCloseButton 65374 -#define Consts_SIgnoreButton 65375 -#define Consts_SScanLine 65376 -#define Consts_SChangeIconSize 65377 -#define Consts_SUnknownExtension 65378 -#define Consts_SUnknownClipboardFormat 65379 -#define Consts_SOutOfResources 65380 -#define Consts_SNoCanvasHandle 65381 -#define Consts_SInvalidImageSize 65382 -#define Consts_SInvalidImageList 65383 -#define Consts_SImageIndexError 65384 -#define Consts_SImageReadFail 65385 -#define Consts_SImageWriteFail 65386 -#define Consts_SWindowDCError 65387 -#define Consts_SWindowClass 65388 -#define Consts_SCannotFocus 65389 -#define Consts_SParentRequired 65390 -#define Consts_SMDIChildNotVisible 65391 -#define RTLConsts_SSeekNotImplemented 65392 -#define RTLConsts_SSortedListError 65393 -#define RTLConsts_SUnknownGroup 65394 -#define RTLConsts_SUnknownProperty 65395 -#define RTLConsts_SWriteError 65396 -#define RTLConsts_SThreadCreateError 65397 -#define RTLConsts_SThreadError 65398 -#define HelpIntfs_hNoTableOfContents 65399 -#define HelpIntfs_hNothingFound 65400 -#define HelpIntfs_hNoContext 65401 -#define HelpIntfs_hNoContextFound 65402 -#define HelpIntfs_hNoTopics 65403 -#define Consts_SInvalidBitmap 65404 -#define Consts_SInvalidIcon 65405 -#define Consts_SInvalidMetafile 65406 -#define Consts_SInvalidPixelFormat 65407 -#define RTLConsts_SFOpenErrorEx 65408 -#define RTLConsts_SInvalidImage 65409 -#define RTLConsts_SInvalidName 65410 -#define RTLConsts_SInvalidProperty 65411 -#define RTLConsts_SInvalidPropertyPath 65412 -#define RTLConsts_SInvalidPropertyValue 65413 -#define RTLConsts_SInvalidRegType 65414 -#define RTLConsts_SListCapacityError 65415 -#define RTLConsts_SListCountError 65416 -#define RTLConsts_SListIndexError 65417 -#define RTLConsts_SMemoryStreamError 65418 -#define RTLConsts_SPropertyException 65419 -#define RTLConsts_SReadError 65420 -#define RTLConsts_SReadOnlyProperty 65421 -#define RTLConsts_SRegGetDataFailed 65422 -#define RTLConsts_SResNotFound 65423 -#define ComConst_SVarNotObject 65424 -#define ComConst_STooManyParams 65425 -#define ComConst_SAutomationWarning 65426 -#define ComConst_SNoCloseActiveServer1 65427 -#define ComConst_SNoCloseActiveServer2 65428 -#define RTLConsts_SAncestorNotFound 65429 -#define RTLConsts_SAssignError 65430 -#define RTLConsts_SBitsIndexError 65431 -#define RTLConsts_SCantWriteResourceStreamError 65432 -#define RTLConsts_SCheckSynchronizeError 65433 -#define RTLConsts_SClassNotFound 65434 -#define RTLConsts_SDuplicateClass 65435 -#define RTLConsts_SDuplicateItem 65436 -#define RTLConsts_SDuplicateName 65437 -#define RTLConsts_SDuplicateString 65438 -#define RTLConsts_SFCreateErrorEx 65439 -#define SysConst_SShortDayNameSun 65440 -#define SysConst_SShortDayNameMon 65441 -#define SysConst_SShortDayNameTue 65442 -#define SysConst_SShortDayNameWed 65443 -#define SysConst_SShortDayNameThu 65444 -#define SysConst_SShortDayNameFri 65445 -#define SysConst_SShortDayNameSat 65446 -#define SysConst_SLongDayNameSun 65447 -#define SysConst_SLongDayNameMon 65448 -#define SysConst_SLongDayNameTue 65449 -#define SysConst_SLongDayNameWed 65450 -#define SysConst_SLongDayNameThu 65451 -#define SysConst_SLongDayNameFri 65452 -#define SysConst_SLongDayNameSat 65453 -#define ComConst_SOleError 65454 -#define ComConst_SNoMethod 65455 -#define SysConst_SShortMonthNameSep 65456 -#define SysConst_SShortMonthNameOct 65457 -#define SysConst_SShortMonthNameNov 65458 -#define SysConst_SShortMonthNameDec 65459 -#define SysConst_SLongMonthNameJan 65460 -#define SysConst_SLongMonthNameFeb 65461 -#define SysConst_SLongMonthNameMar 65462 -#define SysConst_SLongMonthNameApr 65463 -#define SysConst_SLongMonthNameMay 65464 -#define SysConst_SLongMonthNameJun 65465 -#define SysConst_SLongMonthNameJul 65466 -#define SysConst_SLongMonthNameAug 65467 -#define SysConst_SLongMonthNameSep 65468 -#define SysConst_SLongMonthNameOct 65469 -#define SysConst_SLongMonthNameNov 65470 -#define SysConst_SLongMonthNameDec 65471 -#define SysConst_SAssertionFailed 65472 -#define SysConst_SIntfCastError 65473 -#define SysConst_SSafecallException 65474 -#define SysConst_SAssertError 65475 -#define SysConst_SAbstractError 65476 -#define SysConst_SModuleAccessViolation 65477 -#define SysConst_SOSError 65478 -#define SysConst_SUnkOSError 65479 -#define SysConst_SShortMonthNameJan 65480 -#define SysConst_SShortMonthNameFeb 65481 -#define SysConst_SShortMonthNameMar 65482 -#define SysConst_SShortMonthNameApr 65483 -#define SysConst_SShortMonthNameMay 65484 -#define SysConst_SShortMonthNameJun 65485 -#define SysConst_SShortMonthNameJul 65486 -#define SysConst_SShortMonthNameAug 65487 -#define SysConst_SWriteAccess 65488 -#define SysConst_SVarArrayCreate 65489 -#define SysConst_SVarArrayBounds 65490 -#define SysConst_SVarArrayLocked 65491 -#define SysConst_SInvalidVarCast 65492 -#define SysConst_SInvalidVarOp 65493 -#define SysConst_SInvalidVarNullOp 65494 -#define SysConst_SInvalidVarOpWithHResultWithPrefix 65495 -#define SysConst_SVarTypeCouldNotConvert 65496 -#define SysConst_SVarTypeConvertOverflow 65497 -#define SysConst_SVarOverflow 65498 -#define SysConst_SVarInvalid 65499 -#define SysConst_SVarBadType 65500 -#define SysConst_SVarNotImplemented 65501 -#define SysConst_SVarUnexpected 65502 -#define SysConst_SExternalException 65503 -#define SysConst_SOverflow 65504 -#define SysConst_SUnderflow 65505 -#define SysConst_SInvalidPointer 65506 -#define SysConst_SInvalidCast 65507 -#define SysConst_SAccessViolationArg3 65508 -#define SysConst_SAccessViolationNoArg 65509 -#define SysConst_SStackOverflow 65510 -#define SysConst_SControlC 65511 -#define SysConst_SPrivilege 65512 -#define SysConst_SOperationAborted 65513 -#define SysConst_SException 65514 -#define SysConst_SExceptTitle 65515 -#define SysConst_SInvalidFormat 65516 -#define SysConst_SArgumentMissing 65517 -#define SysConst_SDispatchError 65518 -#define SysConst_SReadAccess 65519 +#define ComStrs_sRichEditLoadFail 65296 +#define ComStrs_sRichEditSaveFail 65297 +#define Consts_SIconToClipboard 65312 +#define Consts_SInvalidMemoSize 65313 +#define Consts_SNoDefaultPrinter 65314 +#define Consts_SDuplicateMenus 65315 +#define Consts_SDockedCtlNeedsName 65316 +#define Consts_SDockTreeRemoveError 65317 +#define Consts_SDockZoneNotFound 65318 +#define Consts_SDockZoneHasNoCtl 65319 +#define Consts_SDockZoneVersionConflict 65320 +#define Consts_SANSIEncoding 65321 +#define Consts_SASCIIEncoding 65322 +#define Consts_SUnicodeEncoding 65323 +#define Consts_SBigEndianEncoding 65324 +#define Consts_SUTF8Encoding 65325 +#define Consts_SUTF7Encoding 65326 +#define ComStrs_sRichEditInsertError 65327 +#define Consts_SmkcEsc 65328 +#define Consts_SmkcEnter 65329 +#define Consts_SmkcSpace 65330 +#define Consts_SmkcPgUp 65331 +#define Consts_SmkcPgDn 65332 +#define Consts_SmkcEnd 65333 +#define Consts_SmkcHome 65334 +#define Consts_SmkcLeft 65335 +#define Consts_SmkcUp 65336 +#define Consts_SmkcRight 65337 +#define Consts_SmkcDown 65338 +#define Consts_SmkcIns 65339 +#define Consts_SmkcDel 65340 +#define Consts_SmkcShift 65341 +#define Consts_SmkcCtrl 65342 +#define Consts_SmkcAlt 65343 +#define Consts_SMsgDlgError 65344 +#define Consts_SMsgDlgInformation 65345 +#define Consts_SMsgDlgConfirm 65346 +#define Consts_SMsgDlgYes 65347 +#define Consts_SMsgDlgNo 65348 +#define Consts_SMsgDlgOK 65349 +#define Consts_SMsgDlgCancel 65350 +#define Consts_SMsgDlgHelp 65351 +#define Consts_SMsgDlgAbort 65352 +#define Consts_SMsgDlgRetry 65353 +#define Consts_SMsgDlgIgnore 65354 +#define Consts_SMsgDlgAll 65355 +#define Consts_SMsgDlgNoToAll 65356 +#define Consts_SMsgDlgYesToAll 65357 +#define Consts_SmkcBkSp 65358 +#define Consts_SmkcTab 65359 +#define Consts_SDeviceOnPort 65360 +#define Consts_SGroupIndexTooLow 65361 +#define Consts_SNoMDIForm 65362 +#define Consts_SControlParentSetToSelf 65363 +#define Consts_SOKButton 65364 +#define Consts_SCancelButton 65365 +#define Consts_SYesButton 65366 +#define Consts_SNoButton 65367 +#define Consts_SHelpButton 65368 +#define Consts_SCloseButton 65369 +#define Consts_SIgnoreButton 65370 +#define Consts_SRetryButton 65371 +#define Consts_SAbortButton 65372 +#define Consts_SAllButton 65373 +#define Consts_SCannotDragForm 65374 +#define Consts_SMsgDlgWarning 65375 +#define Consts_SImageWriteFail 65376 +#define Consts_SWindowDCError 65377 +#define Consts_SWindowClass 65378 +#define Consts_SCannotFocus 65379 +#define Consts_SParentRequired 65380 +#define Consts_SParentGivenNotAParent 65381 +#define Consts_SMDIChildNotVisible 65382 +#define Consts_SVisibleChanged 65383 +#define Consts_SCannotShowModal 65384 +#define Consts_SMenuIndexError 65385 +#define Consts_SMenuReinserted 65386 +#define Consts_SMenuNotFound 65387 +#define Consts_SNoTimers 65388 +#define Consts_SNotPrinting 65389 +#define Consts_SPrinting 65390 +#define Consts_SInvalidPrinter 65391 +#define RTLConsts_SWriteError 65392 +#define HelpIntfs_hNoTableOfContents 65393 +#define HelpIntfs_hNothingFound 65394 +#define HelpIntfs_hNoContext 65395 +#define HelpIntfs_hNoContextFound 65396 +#define HelpIntfs_hNoTopics 65397 +#define Consts_SInvalidBitmap 65398 +#define Consts_SInvalidIcon 65399 +#define Consts_SChangeIconSize 65400 +#define Consts_SUnknownClipboardFormat 65401 +#define Consts_SOutOfResources 65402 +#define Consts_SNoCanvasHandle 65403 +#define Consts_SInvalidImageSize 65404 +#define Consts_SInvalidImageList 65405 +#define Consts_SImageIndexError 65406 +#define Consts_SImageReadFail 65407 +#define RTLConsts_SInvalidPropertyPath 65408 +#define RTLConsts_SInvalidPropertyValue 65409 +#define RTLConsts_SInvalidRegType 65410 +#define RTLConsts_SListCapacityError 65411 +#define RTLConsts_SListCountError 65412 +#define RTLConsts_SListIndexError 65413 +#define RTLConsts_SMemoryStreamError 65414 +#define RTLConsts_SPropertyException 65415 +#define RTLConsts_SReadError 65416 +#define RTLConsts_SReadOnlyProperty 65417 +#define RTLConsts_SRegGetDataFailed 65418 +#define RTLConsts_SResNotFound 65419 +#define RTLConsts_SSeekNotImplemented 65420 +#define RTLConsts_SSortedListError 65421 +#define RTLConsts_SUnknownGroup 65422 +#define RTLConsts_SUnknownProperty 65423 +#define ComConst_SNoCloseActiveServer1 65424 +#define ComConst_SNoCloseActiveServer2 65425 +#define RTLConsts_SAncestorNotFound 65426 +#define RTLConsts_SAssignError 65427 +#define RTLConsts_SBitsIndexError 65428 +#define RTLConsts_SCantWriteResourceStreamError 65429 +#define RTLConsts_SCheckSynchronizeError 65430 +#define RTLConsts_SClassNotFound 65431 +#define RTLConsts_SDuplicateClass 65432 +#define RTLConsts_SDuplicateItem 65433 +#define RTLConsts_SDuplicateName 65434 +#define RTLConsts_SDuplicateString 65435 +#define RTLConsts_SFCreateErrorEx 65436 +#define RTLConsts_SFOpenErrorEx 65437 +#define RTLConsts_SInvalidImage 65438 +#define RTLConsts_SInvalidName 65439 +#define SysConst_SShortDayNameWed 65440 +#define SysConst_SShortDayNameThu 65441 +#define SysConst_SShortDayNameFri 65442 +#define SysConst_SShortDayNameSat 65443 +#define SysConst_SLongDayNameSun 65444 +#define SysConst_SLongDayNameMon 65445 +#define SysConst_SLongDayNameTue 65446 +#define SysConst_SLongDayNameWed 65447 +#define SysConst_SLongDayNameThu 65448 +#define SysConst_SLongDayNameFri 65449 +#define SysConst_SLongDayNameSat 65450 +#define ComConst_SOleError 65451 +#define ComConst_SNoMethod 65452 +#define ComConst_SVarNotObject 65453 +#define ComConst_STooManyParams 65454 +#define ComConst_SAutomationWarning 65455 +#define SysConst_SShortMonthNameDec 65456 +#define SysConst_SLongMonthNameJan 65457 +#define SysConst_SLongMonthNameFeb 65458 +#define SysConst_SLongMonthNameMar 65459 +#define SysConst_SLongMonthNameApr 65460 +#define SysConst_SLongMonthNameMay 65461 +#define SysConst_SLongMonthNameJun 65462 +#define SysConst_SLongMonthNameJul 65463 +#define SysConst_SLongMonthNameAug 65464 +#define SysConst_SLongMonthNameSep 65465 +#define SysConst_SLongMonthNameOct 65466 +#define SysConst_SLongMonthNameNov 65467 +#define SysConst_SLongMonthNameDec 65468 +#define SysConst_SShortDayNameSun 65469 +#define SysConst_SShortDayNameMon 65470 +#define SysConst_SShortDayNameTue 65471 +#define SysConst_SAssertError 65472 +#define SysConst_SAbstractError 65473 +#define SysConst_SModuleAccessViolation 65474 +#define SysConst_SOSError 65475 +#define SysConst_SUnkOSError 65476 +#define SysConst_SShortMonthNameJan 65477 +#define SysConst_SShortMonthNameFeb 65478 +#define SysConst_SShortMonthNameMar 65479 +#define SysConst_SShortMonthNameApr 65480 +#define SysConst_SShortMonthNameMay 65481 +#define SysConst_SShortMonthNameJun 65482 +#define SysConst_SShortMonthNameJul 65483 +#define SysConst_SShortMonthNameAug 65484 +#define SysConst_SShortMonthNameSep 65485 +#define SysConst_SShortMonthNameOct 65486 +#define SysConst_SShortMonthNameNov 65487 +#define SysConst_SVarArrayBounds 65488 +#define SysConst_SVarArrayLocked 65489 +#define SysConst_SInvalidVarCast 65490 +#define SysConst_SInvalidVarOp 65491 +#define SysConst_SInvalidVarOpWithHResultWithPrefix 65492 +#define SysConst_SVarTypeCouldNotConvert 65493 +#define SysConst_SVarTypeConvertOverflow 65494 +#define SysConst_SVarOverflow 65495 +#define SysConst_SVarInvalid 65496 +#define SysConst_SVarBadType 65497 +#define SysConst_SVarNotImplemented 65498 +#define SysConst_SVarUnexpected 65499 +#define SysConst_SExternalException 65500 +#define SysConst_SAssertionFailed 65501 +#define SysConst_SIntfCastError 65502 +#define SysConst_SSafecallException 65503 +#define SysConst_SUnderflow 65504 +#define SysConst_SInvalidPointer 65505 +#define SysConst_SInvalidCast 65506 +#define SysConst_SAccessViolationArg3 65507 +#define SysConst_SAccessViolationNoArg 65508 +#define SysConst_SStackOverflow 65509 +#define SysConst_SControlC 65510 +#define SysConst_SPrivilege 65511 +#define SysConst_SException 65512 +#define SysConst_SExceptTitle 65513 +#define SysConst_SInvalidFormat 65514 +#define SysConst_SArgumentMissing 65515 +#define SysConst_SDispatchError 65516 +#define SysConst_SReadAccess 65517 +#define SysConst_SWriteAccess 65518 +#define SysConst_SVarArrayCreate 65519 #define SysConst_SInvalidInteger 65520 -#define SysConst_SInvalidFloat 65521 -#define SysConst_SOutOfMemory 65522 -#define SysConst_SInOutError 65523 -#define SysConst_SFileNotFound 65524 -#define SysConst_SInvalidFilename 65525 -#define SysConst_STooManyOpenFiles 65526 -#define SysConst_SAccessDenied 65527 -#define SysConst_SEndOfFile 65528 -#define SysConst_SDiskFull 65529 -#define SysConst_SInvalidInput 65530 -#define SysConst_SDivByZero 65531 -#define SysConst_SRangeError 65532 -#define SysConst_SIntOverflow 65533 -#define SysConst_SInvalidOp 65534 -#define SysConst_SZeroDivide 65535 +#define SysConst_SOutOfMemory 65521 +#define SysConst_SInOutError 65522 +#define SysConst_SFileNotFound 65523 +#define SysConst_SInvalidFilename 65524 +#define SysConst_STooManyOpenFiles 65525 +#define SysConst_SAccessDenied 65526 +#define SysConst_SEndOfFile 65527 +#define SysConst_SDiskFull 65528 +#define SysConst_SInvalidInput 65529 +#define SysConst_SDivByZero 65530 +#define SysConst_SRangeError 65531 +#define SysConst_SIntOverflow 65532 +#define SysConst_SInvalidOp 65533 +#define SysConst_SZeroDivide 65534 +#define SysConst_SOverflow 65535 STRINGTABLE BEGIN + ComStrs_sRichEditLoadFail, "Failed to Load Stream" + ComStrs_sRichEditSaveFail, "Failed to Save Stream" + Consts_SIconToClipboard, "Clipboard does not support Icons" + Consts_SInvalidMemoSize, "Text exceeds memo capacity" + Consts_SNoDefaultPrinter, "There is no default printer currently selected" + Consts_SDuplicateMenus, "Menu '%s' is already being used by another form" + Consts_SDockedCtlNeedsName, "Docked control must have a name" + Consts_SDockTreeRemoveError, "Error removing control from dock tree" + Consts_SDockZoneNotFound, " - Dock zone not found" Consts_SDockZoneHasNoCtl, " - Dock zone has no control" Consts_SDockZoneVersionConflict, "Error loading dock zone from the stream. Expecting version %d, but found %d." Consts_SANSIEncoding, "ANSI" @@ -253,9 +253,14 @@ BEGIN Consts_SBigEndianEncoding, "Big Endian Unicode" Consts_SUTF8Encoding, "UTF-8" Consts_SUTF7Encoding, "UTF-7" - JConsts_sChangeJPGSize, "Cannot change the size of a JPEG image" - JConsts_sJPEGError, "JPEG error #%d" - JConsts_sJPEGImageFile, "JPEG Image File" + ComStrs_sRichEditInsertError, "RichEdit line insertion error" + Consts_SmkcEsc, "Esc" + Consts_SmkcEnter, "Enter" + Consts_SmkcSpace, "Space" + Consts_SmkcPgUp, "PgUp" + Consts_SmkcPgDn, "PgDn" + Consts_SmkcEnd, "End" + Consts_SmkcHome, "Home" Consts_SmkcLeft, "Left" Consts_SmkcUp, "Up" Consts_SmkcRight, "Right" @@ -265,13 +270,13 @@ BEGIN Consts_SmkcShift, "Shift+" Consts_SmkcCtrl, "Ctrl+" Consts_SmkcAlt, "Alt+" - Consts_SInvalidClipFmt, "Invalid clipboard format" - Consts_SIconToClipboard, "Clipboard does not support Icons" - Consts_SCannotOpenClipboard, "Cannot open clipboard" - Consts_SDuplicateMenus, "Menu '%s' is already being used by another form" - Consts_SDockedCtlNeedsName, "Docked control must have a name" - Consts_SDockTreeRemoveError, "Error removing control from dock tree" - Consts_SDockZoneNotFound, " - Dock zone not found" + Consts_SMsgDlgError, "Error" + Consts_SMsgDlgInformation, "Information" + Consts_SMsgDlgConfirm, "Confirm" + Consts_SMsgDlgYes, "&Yes" + Consts_SMsgDlgNo, "&No" + Consts_SMsgDlgOK, "OK" + Consts_SMsgDlgCancel, "Cancel" Consts_SMsgDlgHelp, "&Help" Consts_SMsgDlgAbort, "&Abort" Consts_SMsgDlgRetry, "&Retry" @@ -281,35 +286,7 @@ BEGIN Consts_SMsgDlgYesToAll, "Yes to &All" Consts_SmkcBkSp, "BkSp" Consts_SmkcTab, "Tab" - Consts_SmkcEsc, "Esc" - Consts_SmkcEnter, "Enter" - Consts_SmkcSpace, "Space" - Consts_SmkcPgUp, "PgUp" - Consts_SmkcPgDn, "PgDn" - Consts_SmkcEnd, "End" - Consts_SmkcHome, "Home" - Consts_SRetryButton, "&Retry" - Consts_SAbortButton, "Abort" - Consts_SAllButton, "&All" - Consts_SCannotDragForm, "Cannot drag a form" - Consts_SVMetafiles, "Metafiles" - Consts_SVEnhMetafiles, "Enhanced Metafiles" - Consts_SVIcons, "Icons" - Consts_SVBitmaps, "Bitmaps" - Consts_SMsgDlgWarning, "Warning" - Consts_SMsgDlgError, "Error" - Consts_SMsgDlgInformation, "Information" - Consts_SMsgDlgConfirm, "Confirm" - Consts_SMsgDlgYes, "&Yes" - Consts_SMsgDlgNo, "&No" - Consts_SMsgDlgOK, "OK" - Consts_SMsgDlgCancel, "Cancel" - Consts_SVisibleChanged, "Cannot change Visible in OnShow or OnHide" - Consts_SCannotShowModal, "Cannot make a visible window modal" - Consts_SMenuIndexError, "Menu index out of range" - Consts_SMenuReinserted, "Menu inserted twice" - Consts_SMenuNotFound, "Sub-menu is not in menu" - Consts_SNoTimers, "Not enough timers available" + Consts_SDeviceOnPort, "%s on %s" Consts_SGroupIndexTooLow, "GroupIndex cannot be less than a previous menu item's GroupIndex" Consts_SNoMDIForm, "Cannot create form. No MDI forms are currently active" Consts_SControlParentSetToSelf, "A control cannot have itself as its parent" @@ -320,29 +297,28 @@ BEGIN Consts_SHelpButton, "&Help" Consts_SCloseButton, "&Close" Consts_SIgnoreButton, "&Ignore" - Consts_SScanLine, "Scan line index out of range" - Consts_SChangeIconSize, "Cannot change the size of an icon" - Consts_SUnknownExtension, "Unknown picture file extension (.%s)" - Consts_SUnknownClipboardFormat, "Unsupported clipboard format" - Consts_SOutOfResources, "Out of system resources" - Consts_SNoCanvasHandle, "Canvas does not allow drawing" - Consts_SInvalidImageSize, "Invalid image size" - Consts_SInvalidImageList, "Invalid ImageList" - Consts_SImageIndexError, "Invalid ImageList Index" - Consts_SImageReadFail, "Failed to read ImageList data from stream" + Consts_SRetryButton, "&Retry" + Consts_SAbortButton, "Abort" + Consts_SAllButton, "&All" + Consts_SCannotDragForm, "Cannot drag a form" + Consts_SMsgDlgWarning, "Warning" Consts_SImageWriteFail, "Failed to write ImageList data to stream" Consts_SWindowDCError, "Error creating window device context" Consts_SWindowClass, "Error creating window class" Consts_SCannotFocus, "Cannot focus a disabled or invisible window" Consts_SParentRequired, "Control '%s' has no parent window" + Consts_SParentGivenNotAParent, "Parent given is not a parent of '%s'" Consts_SMDIChildNotVisible, "Cannot hide an MDI Child Form" - RTLConsts_SSeekNotImplemented, "%s.Seek not implemented" - RTLConsts_SSortedListError, "Operation not allowed on sorted list" - RTLConsts_SUnknownGroup, "%s not in a class registration group" - RTLConsts_SUnknownProperty, "Property %s does not exist" + Consts_SVisibleChanged, "Cannot change Visible in OnShow or OnHide" + Consts_SCannotShowModal, "Cannot make a visible window modal" + Consts_SMenuIndexError, "Menu index out of range" + Consts_SMenuReinserted, "Menu inserted twice" + Consts_SMenuNotFound, "Sub-menu is not in menu" + Consts_SNoTimers, "Not enough timers available" + Consts_SNotPrinting, "Printer is not currently printing" + Consts_SPrinting, "Printing in progress" + Consts_SInvalidPrinter, "Printer selected is not valid" RTLConsts_SWriteError, "Stream write error" - RTLConsts_SThreadCreateError, "Thread creation error: %s" - RTLConsts_SThreadError, "Thread Error: %s (%d)" HelpIntfs_hNoTableOfContents, "Unable to find a Table of Contents" HelpIntfs_hNothingFound, "No help found for %s" HelpIntfs_hNoContext, "No context-sensitive help installed" @@ -350,12 +326,14 @@ BEGIN HelpIntfs_hNoTopics, "No topic-based help system installed" Consts_SInvalidBitmap, "Bitmap image is not valid" Consts_SInvalidIcon, "Icon image is not valid" - Consts_SInvalidMetafile, "Metafile is not valid" - Consts_SInvalidPixelFormat, "Invalid pixel format" - RTLConsts_SFOpenErrorEx, "Cannot open file \"%s\". %s" - RTLConsts_SInvalidImage, "Invalid stream format" - RTLConsts_SInvalidName, "''%s'' is not a valid component name" - RTLConsts_SInvalidProperty, "Invalid property value" + Consts_SChangeIconSize, "Cannot change the size of an icon" + Consts_SUnknownClipboardFormat, "Unsupported clipboard format" + Consts_SOutOfResources, "Out of system resources" + Consts_SNoCanvasHandle, "Canvas does not allow drawing" + Consts_SInvalidImageSize, "Invalid image size" + Consts_SInvalidImageList, "Invalid ImageList" + Consts_SImageIndexError, "Invalid ImageList Index" + Consts_SImageReadFail, "Failed to read ImageList data from stream" RTLConsts_SInvalidPropertyPath, "Invalid property path" RTLConsts_SInvalidPropertyValue, "Invalid property value" RTLConsts_SInvalidRegType, "Invalid data type for '%s'" @@ -368,9 +346,10 @@ BEGIN RTLConsts_SReadOnlyProperty, "Property is read-only" RTLConsts_SRegGetDataFailed, "Failed to get data for '%s'" RTLConsts_SResNotFound, "Resource %s not found" - ComConst_SVarNotObject, "Variant does not reference an automation object" - ComConst_STooManyParams, "Dispatch methods do not support more than 64 parameters" - ComConst_SAutomationWarning, "COM Server Warning" + RTLConsts_SSeekNotImplemented, "%s.Seek not implemented" + RTLConsts_SSortedListError, "Operation not allowed on sorted list" + RTLConsts_SUnknownGroup, "%s not in a class registration group" + RTLConsts_SUnknownProperty, "Property %s does not exist" ComConst_SNoCloseActiveServer1, "There are still active COM objects in this application. One or more clients may have references to these objects, so manually closing " ComConst_SNoCloseActiveServer2, "this application may cause those client application(s) to fail.\r\n\r\nAre you sure you want to close this application?" RTLConsts_SAncestorNotFound, "Ancestor for '%s' not found" @@ -384,9 +363,9 @@ BEGIN RTLConsts_SDuplicateName, "A component named %s already exists" RTLConsts_SDuplicateString, "String list does not allow duplicates" RTLConsts_SFCreateErrorEx, "Cannot create file \"%s\". %s" - SysConst_SShortDayNameSun, "Sun" - SysConst_SShortDayNameMon, "Mon" - SysConst_SShortDayNameTue, "Tue" + RTLConsts_SFOpenErrorEx, "Cannot open file \"%s\". %s" + RTLConsts_SInvalidImage, "Invalid stream format" + RTLConsts_SInvalidName, "''%s'' is not a valid component name" SysConst_SShortDayNameWed, "Wed" SysConst_SShortDayNameThu, "Thu" SysConst_SShortDayNameFri, "Fri" @@ -400,9 +379,9 @@ BEGIN SysConst_SLongDayNameSat, "Saturday" ComConst_SOleError, "OLE error %.8x" ComConst_SNoMethod, "Method '%s' not supported by automation object" - SysConst_SShortMonthNameSep, "Sep" - SysConst_SShortMonthNameOct, "Oct" - SysConst_SShortMonthNameNov, "Nov" + ComConst_SVarNotObject, "Variant does not reference an automation object" + ComConst_STooManyParams, "Dispatch methods do not support more than 64 parameters" + ComConst_SAutomationWarning, "COM Server Warning" SysConst_SShortMonthNameDec, "Dec" SysConst_SLongMonthNameJan, "January" SysConst_SLongMonthNameFeb, "February" @@ -416,9 +395,9 @@ BEGIN SysConst_SLongMonthNameOct, "October" SysConst_SLongMonthNameNov, "November" SysConst_SLongMonthNameDec, "December" - SysConst_SAssertionFailed, "Assertion failed" - SysConst_SIntfCastError, "Interface not supported" - SysConst_SSafecallException, "Exception in safecall method" + SysConst_SShortDayNameSun, "Sun" + SysConst_SShortDayNameMon, "Mon" + SysConst_SShortDayNameTue, "Tue" SysConst_SAssertError, "%s (%s, line %d)" SysConst_SAbstractError, "Abstract Error" SysConst_SModuleAccessViolation, "Access violation at address %p in module '%s'. %s of address %p" @@ -432,13 +411,13 @@ BEGIN SysConst_SShortMonthNameJun, "Jun" SysConst_SShortMonthNameJul, "Jul" SysConst_SShortMonthNameAug, "Aug" - SysConst_SWriteAccess, "Write" - SysConst_SVarArrayCreate, "Error creating variant or safe array" + SysConst_SShortMonthNameSep, "Sep" + SysConst_SShortMonthNameOct, "Oct" + SysConst_SShortMonthNameNov, "Nov" SysConst_SVarArrayBounds, "Variant or safe array index out of bounds" SysConst_SVarArrayLocked, "Variant or safe array is locked" SysConst_SInvalidVarCast, "Invalid variant type conversion" SysConst_SInvalidVarOp, "Invalid variant operation" - SysConst_SInvalidVarNullOp, "Invalid NULL variant operation" SysConst_SInvalidVarOpWithHResultWithPrefix, "Invalid variant operation (%s%.8x)\n%s" SysConst_SVarTypeCouldNotConvert, "Could not convert variant of type (%s) into type (%s)" SysConst_SVarTypeConvertOverflow, "Overflow while converting variant of type (%s) into type (%s)" @@ -448,7 +427,9 @@ BEGIN SysConst_SVarNotImplemented, "Operation not supported" SysConst_SVarUnexpected, "Unexpected variant error" SysConst_SExternalException, "External exception %x" - SysConst_SOverflow, "Floating point overflow" + SysConst_SAssertionFailed, "Assertion failed" + SysConst_SIntfCastError, "Interface not supported" + SysConst_SSafecallException, "Exception in safecall method" SysConst_SUnderflow, "Floating point underflow" SysConst_SInvalidPointer, "Invalid pointer operation" SysConst_SInvalidCast, "Invalid class typecast" @@ -457,15 +438,15 @@ BEGIN SysConst_SStackOverflow, "Stack overflow" SysConst_SControlC, "Control-C hit" SysConst_SPrivilege, "Privileged instruction" - SysConst_SOperationAborted, "Operation aborted" SysConst_SException, "Exception %s in module %s at %p.\r\n%s%s\r\n" SysConst_SExceptTitle, "Application Error" SysConst_SInvalidFormat, "Format '%s' invalid or incompatible with argument" SysConst_SArgumentMissing, "No argument for format '%s'" SysConst_SDispatchError, "Variant method calls not supported" SysConst_SReadAccess, "Read" + SysConst_SWriteAccess, "Write" + SysConst_SVarArrayCreate, "Error creating variant or safe array" SysConst_SInvalidInteger, "'%s' is not a valid integer value" - SysConst_SInvalidFloat, "'%s' is not a valid floating point value" SysConst_SOutOfMemory, "Out of memory" SysConst_SInOutError, "I/O error %d" SysConst_SFileNotFound, "File not found" @@ -480,12 +461,11 @@ BEGIN SysConst_SIntOverflow, "Integer overflow" SysConst_SInvalidOp, "Invalid floating point operation" SysConst_SZeroDivide, "Floating point division by zero" + SysConst_SOverflow, "Floating point overflow" END /* c:\archivos de programa\codegear\rad studio\5.0\Lib\Controls.res */ /* c:\archivos de programa\codegear\rad studio\5.0\Lib\Buttons.res */ /* c:\archivos de programa\codegear\rad studio\5.0\Lib\ExtDlgs.res */ -/* C:\TRichView\Units\D2007\RVTable.res */ -/* C:\TRichView\Units\D2007\RVStyle.RES */ -/* C:\Codigo Acana\Database\udfs\udf_RtfToText.RES */ -/* C:\Codigo Acana\Database\udfs\udf_RtfToText.drf */ +/* C:\Codigo\Database\udfs\udf_RtfToText.RES */ +/* C:\Codigo\Database\udfs\udf_RtfToText.drf */ diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj index e1bb0b4..9041542 100644 --- a/Source/Cliente/FactuGES.dproj +++ b/Source/Cliente/FactuGES.dproj @@ -51,7 +51,7 @@ Delphi.Personality VCLApplication -FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse3010FalseFalseFalseFalseFalse30821252Rodax Software S.L.3.0.1.0FactuGESFactuGES3.0.1.0 +FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse3020FalseFalseFalseFalseFalse30821252Rodax Software S.L.3.0.2.0FactuGESFactuGES3.0.2.0 File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found FactuGES.dprFalse diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res index 01f6a28..bc652b0 100644 Binary files a/Source/Cliente/FactuGES.res and b/Source/Cliente/FactuGES.res differ diff --git a/Source/GUIBase/GUIBase.res b/Source/GUIBase/GUIBase.res index 1641339..8b251f3 100644 Binary files a/Source/GUIBase/GUIBase.res and b/Source/GUIBase/GUIBase.res differ diff --git a/Source/Informes/1/InformeIVAClientes.fr3 b/Source/Informes/1/InformeIVAClientes.fr3 index e1e278e..a7dc26b 100644 --- a/Source/Informes/1/InformeIVAClientes.fr3 +++ b/Source/Informes/1/InformeIVAClientes.fr3 @@ -1,5 +1,5 @@ - + @@ -17,47 +17,48 @@ - - - - + + + + - - + + + - + - - - - + + + - - + + + + - - - - - - + + + + + - + - + - + @@ -74,7 +75,7 @@ - + diff --git a/Source/Informes/1/InformeIVAClientesDesglosado.fr3 b/Source/Informes/1/InformeIVAClientesDesglosado.fr3 index 1f4ce4a..c39a39e 100644 --- a/Source/Informes/1/InformeIVAClientesDesglosado.fr3 +++ b/Source/Informes/1/InformeIVAClientesDesglosado.fr3 @@ -1,5 +1,5 @@ - + @@ -16,35 +16,36 @@ - - - - - - + + + + + + - - + + + - - - - - - - + + + + + + + - - + + + - - - - - - + + + + + @@ -55,13 +56,13 @@ - + - - + + @@ -75,7 +76,7 @@ - + diff --git a/Source/Informes/1/InformeIVAProveedores.fr3 b/Source/Informes/1/InformeIVAProveedores.fr3 index 4c11c66..9a5973d 100644 --- a/Source/Informes/1/InformeIVAProveedores.fr3 +++ b/Source/Informes/1/InformeIVAProveedores.fr3 @@ -1,5 +1,5 @@ - + @@ -13,28 +13,28 @@ - - - - - - - + + + + + + + - - - - - + + + + + - - + + - + @@ -42,62 +42,62 @@ - - - - - + + + + + - + - + - + - - - - - - - - + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - + + - + - - - - - + + + + + diff --git a/Source/Informes/1/InformeIVAProveedoresDesglosado.fr3 b/Source/Informes/1/InformeIVAProveedoresDesglosado.fr3 index caa1303..72a690c 100644 --- a/Source/Informes/1/InformeIVAProveedoresDesglosado.fr3 +++ b/Source/Informes/1/InformeIVAProveedoresDesglosado.fr3 @@ -1,5 +1,5 @@ - + @@ -15,14 +15,14 @@ - - + + - + @@ -30,81 +30,81 @@ - - - - - + + + + + - + - + - + - - - - - - - - + + + + + + + + - - - - - + + + + + - - - - - + + + + + - - + + - + - - - - - + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/Source/Informes/1/InformeListadoFacturasCliente.fr3 b/Source/Informes/1/InformeListadoFacturasCliente.fr3 index 10cc1ec..f700127 100644 --- a/Source/Informes/1/InformeListadoFacturasCliente.fr3 +++ b/Source/Informes/1/InformeListadoFacturasCliente.fr3 @@ -1,5 +1,5 @@ - + @@ -30,10 +30,10 @@ - + - + @@ -50,13 +50,13 @@ - + - + diff --git a/Source/Informes/1/InformeListadoFacturasClienteDesglosado.fr3 b/Source/Informes/1/InformeListadoFacturasClienteDesglosado.fr3 index b4c1e6f..dcb2eee 100644 --- a/Source/Informes/1/InformeListadoFacturasClienteDesglosado.fr3 +++ b/Source/Informes/1/InformeListadoFacturasClienteDesglosado.fr3 @@ -1,5 +1,5 @@ - + @@ -27,10 +27,10 @@ - + - + @@ -54,11 +54,11 @@ - + - + diff --git a/Source/Informes/1/InformeListadoFacturasClientePendientes.fr3 b/Source/Informes/1/InformeListadoFacturasClientePendientes.fr3 index 0303978..d673393 100644 --- a/Source/Informes/1/InformeListadoFacturasClientePendientes.fr3 +++ b/Source/Informes/1/InformeListadoFacturasClientePendientes.fr3 @@ -1,5 +1,5 @@ - + @@ -16,17 +16,17 @@ - + - + - + - + @@ -38,13 +38,13 @@ - + - + - + diff --git a/Source/Informes/1/InformeListadoFacturasClientePendientesDesglosado.fr3 b/Source/Informes/1/InformeListadoFacturasClientePendientesDesglosado.fr3 index f26bcae..43d2133 100644 --- a/Source/Informes/1/InformeListadoFacturasClientePendientesDesglosado.fr3 +++ b/Source/Informes/1/InformeListadoFacturasClientePendientesDesglosado.fr3 @@ -1,5 +1,5 @@ - + @@ -16,17 +16,17 @@ - + - + - + - + @@ -42,13 +42,13 @@ - + - + - + diff --git a/Source/Informes/1/InformeListadoFacturasProveedor.fr3 b/Source/Informes/1/InformeListadoFacturasProveedor.fr3 index 18d074f..4ecc85e 100644 --- a/Source/Informes/1/InformeListadoFacturasProveedor.fr3 +++ b/Source/Informes/1/InformeListadoFacturasProveedor.fr3 @@ -1,5 +1,5 @@ - + @@ -13,37 +13,37 @@ - - - - - - - + + + + + + + - + - - - - - - - - - + + + + + + + + + - - - - + + + + - + @@ -53,19 +53,19 @@ - - - - - - - + + + + + + + - - - - + + + + diff --git a/Source/Informes/InfEtiquetasAlbaranCliente.fr3 b/Source/Informes/InfEtiquetasAlbaranCliente.fr3 index 9c9f623..2d94b93 100644 --- a/Source/Informes/InfEtiquetasAlbaranCliente.fr3 +++ b/Source/Informes/InfEtiquetasAlbaranCliente.fr3 @@ -1,11 +1,11 @@ - + - - + + - + diff --git a/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj b/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj index 8e0d25c..47cfcd0 100644 --- a/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj +++ b/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj @@ -9,6 +9,7 @@ + @@ -311,14 +312,23 @@ + + + + + + + + + - + - + - + \ No newline at end of file diff --git a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas index 2246971..288218e 100644 --- a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas +++ b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas @@ -8,10 +8,10 @@ uses uControllerBase, uIDataModuleContratosCliente, uClientesController, uDetallesContratoClienteController, uGestorDocumentosController, uBizContratosCliente, uBizDireccionesContacto, uBizDetallesContratoCliente, - uIntegerListUtils; + uIntegerListUtils, uBizPresupuestosCliente; type - TEnumTiposContrato = (teCocina, teArmario, teBano, teElectrodomestico, teVarios); + TEnumTiposContrato = (teVacio, teCocina, teArmario, teBano, teElectrodomestico, teVarios); IContratosClienteController = interface(IControllerBase) ['{D6544299-A233-4FF0-BDA4-328DA06DCFD8}'] @@ -38,8 +38,9 @@ type procedure VerTodos(AContratos: IBizContratoCliente; const AVerModal : Boolean = False; const AWindowCaption: String = ''; const AHeaderText: String = ''); - function Nuevo : IBizContratoCliente; - function Anadir(AContrato : IBizContratoCliente; const ATipo: TEnumTiposContrato = teVarios) : Boolean; + function Nuevo (WithInsert: Boolean = True): IBizContratoCliente; + function Anadir(AContrato : IBizContratoCliente; const ATipo: TEnumTiposContrato = teVarios) : Boolean; overload; + function Anadir(AContratos : IBizContratoCliente; AListaPresupuestos : IBizPresupuestoCliente): Boolean; overload; function Eliminar(const ID : Integer): Boolean; overload; function Eliminar(AContrato : IBizContratoCliente; AllItems: Boolean = false): Boolean; overload; function Guardar(AContrato : IBizContratoCliente): Boolean; @@ -114,12 +115,13 @@ type function Guardar(AContrato : IBizContratoCliente): Boolean; procedure DescartarCambios(AContrato : IBizContratoCliente); virtual; function Existe(const ID: Integer) : Boolean; virtual; - function Anadir(AContrato : IBizContratoCliente; const ATipo: TEnumTiposContrato = teVarios) : Boolean; + function Anadir(AContrato : IBizContratoCliente; const ATipo: TEnumTiposContrato = teVarios) : Boolean; overload; + function Anadir(AContratos : IBizContratoCliente; AListaPresupuestos : IBizPresupuestoCliente): Boolean; overload; function Buscar(const ListaID: TIntegerList): IBizContratoCliente; overload; function Buscar(const ID: Integer): IBizContratoCliente; overload; function BuscarTodos: IBizContratoCliente; overload; function BuscarTodos(const ID_Cliente: Integer): IBizContratoCliente; overload; - function Nuevo : IBizContratoCliente; + function Nuevo (WithInsert: Boolean = True): IBizContratoCliente; procedure Ver(AContrato : IBizContratoCliente); procedure VerTodos(AContratos: IBizContratoCliente; const AVerModal : Boolean = False; const AWindowCaption: String = ''; @@ -151,7 +153,7 @@ type implementation uses - Controls, cxControls, DB, uEditorRegistryUtils, uEditorPreview, DateUtils, + Forms, Controls, cxControls, DB, uEditorRegistryUtils, uEditorPreview, DateUtils, uIEditorContratosCliente, uDataModuleContratosCliente, Variants, uBizContactos, uDataTableUtils, uDataModuleUsuarios, uFactuGES_App, schContratosClienteClient_Intf, uDAInterfaces, uDateUtils, uIEditorContratoCliente, @@ -160,10 +162,61 @@ uses uFormasPagoController, uBizFormasPago, uTiposIVAController, uBizTiposIVA, uSistemaFunc, uEMailUtils, uDialogElegirEMail, Dialogs, uStringsUtils, uIEditorContratosClienteBeneficios, uPresupuestosClienteController, - uConfiguracionController, uBizDetallesPresupuestoCliente; + uConfiguracionController, uBizDetallesPresupuestoCliente, schPresupuestosClienteClient_Intf, + uControllerDetallesBase; { TContratosClienteController } +procedure CopiarArticulosPresupuesto(AOrigen: IBizDetallesPresupuestoCliente; ADestino: IBizDetallesContratoCliente); +var + i : integer; + ADetallesController : IDetallesContratoClienteController; +begin + if not Assigned(AOrigen) then + raise Exception.Create ('Origen no asignado (CopiarArticulosAlbaran)'); + + if not Assigned(ADestino) then + raise Exception.Create ('Destino no asignado (CopiarArticulosAlbaran)'); + + if not AOrigen.DataTable.Active then + AOrigen.DataTable.Active := True; + + if not ADestino.DataTable.Active then + ADestino.DataTable.Active := True; + + ADetallesController := TDetallesContratoClienteController.Create; + try + //OJO IMPORTANTE + //Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para + //obligarle siempre a recalcular los detalles una sola vez + ADetallesController.BeginUpdate(ADestino); + + AOrigen.DataTable.First; + for i := 0 to AOrigen.DataTable.RecordCount - 1 do + begin + ADetallesController.Add(ADestino, AOrigen.TIPO_DETALLE); + ADestino.Edit; + ADestino.ID_ARTICULO := AOrigen.ID_ARTICULO; + ADestino.TIPO_ARTICULO := AOrigen.TIPO_ARTICULO; + ADestino.PROPIEDAD := AOrigen.PROPIEDAD; + ADestino.CONCEPTO := AOrigen.CONCEPTO; + ADestino.CANTIDAD := AOrigen.CANTIDAD; + ADestino.IMPORTE_UNIDAD := AOrigen.IMPORTE_UNIDAD; + ADestino.IMPORTE_TOTAL := AOrigen.IMPORTE_TOTAL; + ADestino.DESCUENTO := AOrigen.DESCUENTO; + ADestino.IMPORTE_PORTE := AOrigen.IMPORTE_PORTE; + ADestino.VISIBLE := AOrigen.VISIBLE; + ADestino.VALORADO := AOrigen.VALORADO; + ADestino.Post; + AOrigen.Next; + end; + finally + ADetallesController.EndUpdate(ADestino); + ADestino.DataTable.Last; + ADetallesController := NIL; + end; +end; + procedure TContratosClienteController.ActualizarFormaDePago( AContrato: IBizContratoCliente; ID_FORMA_PAGO: Integer); var @@ -209,7 +262,8 @@ begin if not Assigned(AContrato) then raise Exception.Create ('Contrato no asignado (Anadir)'); AContrato.Insert; - RellenarValoresDefecto(AContrato, ATipo); + if not (ATipo = teVacio) then + RellenarValoresDefecto(AContrato, ATipo); Result := True; end; @@ -242,6 +296,179 @@ begin end; } +function TContratosClienteController.Anadir(AContratos: IBizContratoCliente; AListaPresupuestos: IBizPresupuestoCliente): Boolean; +var + AContratoActual : IBizContratoCliente; + APresupuestosController : IPresupuestosClienteController; + ACadena: String; + I, x: Integer; + bEnEdicion : Boolean; + +begin + Result := False; + + // ATENCIÓN!!! AContratos tiene que estar vacio para no pisar contratos + // ya generados. + if not Assigned(AContratos) then + raise Exception.Create ('Contrato no asignado (Anadir)'); + + if not Assigned(AListaPresupuestos) then + raise Exception.Create ('Presupeustos no asignados (Anadir)'); + + if not AContratos.DataTable.Active then + AContratos.DataTable.Active := True; + + if not AListaPresupuestos.DataTable.Active then + AListaPresupuestos.DataTable.Active := True; + + ShowHourglassCursor; + Application.ProcessMessages; + + APresupuestosController := TPresupuestosClienteController.Create; + try + // Ordenar por fecha de presupuesto + AListaPresupuestos.DataTable.Sort([fld_PresupuestosClienteFECHA_DECISION], [uDADataTable.sdAscending]); + AListaPresupuestos.First; + for I := 0 to AListaPresupuestos.DataTable.RecordCount - 1 do + begin + AListaPresupuestos._Cliente := NIL; + AContratoActual := NIL; + + // Busco si hay algun contrato ya hecho de ese Cliente + AContratos.DataTable.First; + if AContratos.DataTable.Locate(fld_PresupuestosClienteID_CLIENTE, AListaPresupuestos.ID_Cliente, []) then + begin + AContratoActual := AContratos; + RecuperarCliente(AContratoActual); + AContratoActual.Cliente.DataTable.Active := True; + end + else begin + // No hay contrato de ese cliente. Creo uno nuevo + Anadir(AContratos, teVacio); + APresupuestosController.RecuperarCliente(AListaPresupuestos); + AListaPresupuestos.Cliente.DataTable.Active := True; + AContratos.Cliente := AListaPresupuestos.Cliente; + + //Establecemos la forma de pago establecido en la ficha del cliente + if AContratos.Cliente.ID_FORMA_PAGO > 0 then + begin + bEnEdicion := (AContratos.DataTable.State in dsEditModes); + if not bEnEdicion then + AContratos.Edit; + AContratos.ID_FORMA_PAGO := AContratos.Cliente.ID_FORMA_PAGO; +// if AFacturas.Cliente.ID_TIPO_IVA > 0 then +// AFacturas.ID_TIPO_IVA := AFacturas.Cliente.ID_TIPO_IVA; + AContratos.Post; + if bEnEdicion then + AContratos.Edit; + end; + + //En este caso no queremos el descuento general del cliente asociado a su ficha, ya que partimos del valor que tengan los presupuestos + bEnEdicion := (AContratos.DataTable.State in dsEditModes); + if not bEnEdicion then + AContratos.Edit; + AContratos.DESCUENTOIsNull := True; + AContratos.Post; + if bEnEdicion then + AContratos.Edit; + + AContratoActual := AContratos; + end; + + // Ya tengo el contrato. Le añado los conceptos del presupuesto + AContratoActual.Detalles.DataTable.Sort([fld_PresupuestosCliente_DetallesPOSICION], [uDADataTable.sdAscending]); + AContratoActual.Detalles.DataTable.Last; + +//Es de tipo TITULO para que salga en el informe ya que se agrupa por capitulos + Self.DetallesController.Add(AContratoActual.Detalles, TIPO_DETALLE_TITULO); + with AContratoActual.Detalles do + begin + ACadena := ''; + ACadena := 'Presupuesto ' + AListaPresupuestos.REFERENCIA + ' con fecha ' + DateToStr(AListaPresupuestos.FECHA_PRESUPUESTO) +' aceptado el ' + DateToStr(AListaPresupuestos.FECHA_DECISION); + ACadena := ACadena + #13 + ' referencia: ' + AListaPresupuestos.REFERENCIA_CLIENTE; + Edit; + CONCEPTO := ACadena; + Post; + end; + + // Añado el contenido del presupuesto + CopiarArticulosPresupuesto(AListaPresupuestos.Detalles, AContratoActual.Detalles); + +//MUCHO CUIDADO NOS TENEMOS QUE ASEGURAR DE AÑADIR AL FINAL DEL TODO, podría calcular mal los descuentos de capitulo del presupuesto si los hubiera + AContratoActual.Detalles.DataTable.Sort([fld_PresupuestosCliente_DetallesPOSICION], [uDADataTable.sdAscending]); + AContratoActual.Detalles.DataTable.Last; + + //Sacamos el descuento total del presupuesto en el caso de tener + if (AListaPresupuestos.IMPORTE_DESCUENTO > 0) then + begin + Self.DetallesController.Add(AContratoActual.Detalles, TIPO_DETALLE_TITULO); + with AContratoActual.Detalles do + begin + ACadena := ''; + ACadena := 'Descuento presupuesto ' + AListaPresupuestos.REFERENCIA + ' con fecha ' + DateToStr(AListaPresupuestos.FECHA_PRESUPUESTO); + Edit; + CONCEPTO := ACadena; + Post; + end; + + Self.DetallesController.Add(AContratoActual.Detalles, TIPO_DETALLE_CONCEPTO); + with AContratoActual.Detalles do + begin + Edit; + CONCEPTO := 'Descuento del presupuesto ' + AListaPresupuestos.REFERENCIA + ' - ' + AListaPresupuestos.DataTable.FieldByName(fld_PresupuestosClienteDESCUENTO).AsString + '%'; + CANTIDAD := -1; + IMPORTE_UNIDAD := AListaPresupuestos.IMPORTE_DESCUENTO; + Post; + end; + + Self.DetallesController.Add(AContratoActual.Detalles, TIPO_DETALLE_SUBTOTAL); + with AContratoActual.Detalles do + begin + ACadena := ''; + ACadena := 'Total Descuento presupuesto ' + AListaPresupuestos.REFERENCIA + ' con fecha ' + DateToStr(AListaPresupuestos.FECHA_PRESUPUESTO); + Edit; + CONCEPTO := ACadena; + Post; + end; + + end; + + // Añado el resumen +{ Self.DetallesController.Add(AContratoActual.Detalles, TIPO_DETALLE_SUBTOTAL); + with AContratoActual.Detalles do + begin + Edit; + CONCEPTO := 'Total del presupuesto ' + AListapresupuestos.REFERENCIA; + Post; + end; +} + // Añado una línea en blanco + Self.DetallesController.Add(AContratoActual.Detalles, TIPO_DETALLE_CONCEPTO); + with AContratoActual.Detalles do + begin + Edit; + CONCEPTO := ''; + Post; + end; + + // Guardo el conrato que acabo de generar o editar + AContratoActual.CalcularImporteTotal; + Self.Guardar(AContratoActual); + // Asocio el contrato con el presupuesto + AListaPresupuestos.Edit; + AListaPresupuestos.ID_CONTRATO := AContratoActual.ID; + AListaPresupuestos.Post; + APresupuestosController.Guardar(AListaPresupuestos); + + AListaPresupuestos.Next; + end; + Result := True; + finally + APresupuestosController := NIL; + HideHourglassCursor + end; +end; + procedure TContratosClienteController.AsignarDataModule; begin FDataModule := TDataModuleContratosCliente.Create(Nil); @@ -1035,14 +1262,15 @@ begin end; end; -function TContratosClienteController.Nuevo: IBizContratoCliente; +function TContratosClienteController.Nuevo(WithInsert: Boolean): IBizContratoCliente; var AContrato : IBizContratoCliente; begin AContrato := FDataModule.NewItem; FiltrarEmpresa(AContrato); AContrato.DataTable.Active := True; - AContrato.Insert; + if WithInsert then + AContrato.Insert; Result := AContrato; end; diff --git a/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.RES b/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.RES index 1641339..8b251f3 100644 Binary files a/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.RES and b/Source/Modulos/Contratos de cliente/Views/ContratosCliente_view.RES differ diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas index 00dc58c..ba704d7 100644 --- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas +++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas @@ -170,13 +170,26 @@ begin // ADestino.REFERENCIA := AOrigen.REFERENCIA; if AOrigen.ID_ARTICULO > 0 then ADestino.ID_ARTICULO := AOrigen.ID_ARTICULO; - ADestino.CONCEPTO := AOrigen.CONCEPTO; - ADestino.CANTIDAD := AOrigen.CANTIDAD; - ADestino.IMPORTE_UNIDAD := AOrigen.IMPORTE_UNIDAD; +//En el caso de descuento de capitulo debemos añadirlo como una linea detalle con un descuento + if (AOrigen.TIPO_DETALLE = TIPO_DETALLE_DESCUENTO) + and (AOrigen.DESCUENTO > 0) then + begin + ADestino.CONCEPTO := AOrigen.CONCEPTO + AOrigen.DataTable.FieldByName(fld_AlbaranesCliente_DetallesDESCUENTO).AsString + ' %'; + ADestino.CANTIDAD := 1; + ADestino.IMPORTE_UNIDAD := AOrigen.IMPORTE_TOTAL; + end + else + begin + ADestino.CONCEPTO := AOrigen.CONCEPTO; + ADestino.CANTIDAD := AOrigen.CANTIDAD; + ADestino.DESCUENTO := AOrigen.DESCUENTO; + ADestino.IMPORTE_UNIDAD := AOrigen.IMPORTE_UNIDAD; + end; + ADestino.IMPORTE_TOTAL := AOrigen.IMPORTE_TOTAL; - ADestino.DESCUENTO := AOrigen.DESCUENTO; ADestino.IMPORTE_PORTE := AOrigen.IMPORTE_PORTE; ADestino.VISIBLE := AOrigen.VISIBLE; + ADestino.VALORADO := AOrigen.VALORADO; // ADestino.REFERENCIA_PROVEEDOR := AOrigen.REFERENCIA_PROVEEDOR; ADestino.Post; AOrigen.Next; @@ -249,7 +262,7 @@ var AFacturaActual : IBizFacturaCliente; AAlbaranesController : IAlbaranesClienteController; ACadena: String; - I: Integer; + I, x: Integer; bEnEdicion : Boolean; begin Result := False; @@ -287,7 +300,6 @@ begin begin AFacturaActual := AFacturas; RecuperarCliente(AFacturaActual); - AFacturaActual.Cliente.DataTable.Active := True; //En este caso no queremos el descuento general del cliente asociado a su ficha, ya que partimos del valor que tengan las olbaranes bEnEdicion := (AFacturaActual.DataTable.State in dsEditModes); @@ -336,8 +348,10 @@ begin end; // Ya tengo la factura. Le añado los conceptos del albarán + AFacturaActual.Detalles.DataTable.Sort([fld_FacturasCliente_DetallesPOSICION], [uDADataTable.sdAscending]); AFacturaActual.Detalles.DataTable.Last; + // Añado el título, se cambia a petición por linea de concepto con resumen del albaran correspondiente, SE SOLICITA QUITAR POR MÓNICA 16/06/2020 Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO); with AFacturaActual.Detalles do @@ -348,9 +362,14 @@ begin CONCEPTO := ACadena; Post; end; + // Añado el contenido del albarán CopiarArticulosAlbaran(AListaAlbaranes.Detalles, AFacturaActual.Detalles); +//MUCHO CUIDADO NOS TENEMOS QUE ASEGURAR DE AÑADIR AL FINAL DEL TODO, podría calcular mal los descuentos de capitulo de la factura si los hubiera + AFacturaActual.Detalles.DataTable.Sort([fld_FacturasCliente_DetallesPOSICION], [uDADataTable.sdAscending]); + AFacturaActual.Detalles.DataTable.Last; + //Sacamos el importe del porte en el caso de tener if (AListaAlbaranes.IMPORTE_PORTE > 0) then begin @@ -372,7 +391,7 @@ begin with AFacturaActual.Detalles do begin Edit; - CONCEPTO := 'Descuento del albarán'; + CONCEPTO := 'Descuento del albarán ' + AListaAlbaranes.REFERENCIA + ' - ' + AListaAlbaranes.DataTable.FieldByName(fld_AlbaranesClienteDESCUENTO).AsString + '%'; CANTIDAD := -1; IMPORTE_UNIDAD := AListaAlbaranes.IMPORTE_DESCUENTO; Post; diff --git a/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas b/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas index f5d8f21..3850112 100644 --- a/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas +++ b/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas @@ -1365,7 +1365,7 @@ begin end; end; - ARecibos.DESCRIPCION := 'Pago de factura ' + AFactura.REFERENCIA + '- ' + ARecibos.NOMBRE; // CifraToLetras(ARecibos.IMPORTE); + ARecibos.DESCRIPCION := 'Pago de factura ' + AFactura.REFERENCIA + ' - ' + ARecibos.NOMBRE + ' - Ref. ' + AFactura.REFERENCIA_PROVEEDOR; // CifraToLetras(ARecibos.IMPORTE); ARecibosProveedorController.Guardar(ARecibos); end; @@ -1393,7 +1393,7 @@ begin ARecibos.FECHA_EMISION := AFactura.FECHA_FACTURA; ARecibos.FECHA_VENCIMIENTO := AFactura.FECHA_RETENCION; ARecibos.IMPORTE := AFactura.IMPORTE_RETENCION; - ARecibos.DESCRIPCION := 'Pago de factura de retención ' + AFactura.REFERENCIA + ': son ' + CifraToLetras(ARecibos.IMPORTE); + ARecibos.DESCRIPCION := 'Pago de factura de retención ' + AFactura.REFERENCIA + ': son ' + //CifraToLetras(ARecibos.IMPORTE); ARecibosProveedorController.Guardar(ARecibos); end; } diff --git a/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas b/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas index 5cb753d..cfdf84c 100644 --- a/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas +++ b/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas @@ -820,11 +820,11 @@ begin ANuevoReciboProveedor.Edit; ANuevoReciboProveedor.REFERENCIA := DarNuevaReferencia(ARecibosProveedor.ID_FACTURA, ARecibosProveedor.REFERENCIA); ANuevoReciboProveedor.IMPORTE := ImporteRestante; - ANuevoReciboProveedor.DESCRIPCION := 'RECIBO ' + ANuevoReciboProveedor.REFERENCIA + ' - ' + ANuevoReciboProveedor.Nombre; // CifraToLetras(ImporteRestante); + ANuevoReciboProveedor.DESCRIPCION := 'RECIBO ' + ANuevoReciboProveedor.REFERENCIA + ' - ' + ANuevoReciboProveedor.Nombre + ' - Ref. ' + ANuevoReciboProveedor.REFERENCIA_PROVEEDOR; // CifraToLetras(ImporteRestante); ANuevoReciboProveedor.Post; ARecibosProveedor.Edit; - ARecibosProveedor.DESCRIPCION := 'RECIBO ' + ARecibosProveedor.REFERENCIA + ' - ' + ArecibosProveedor.Nombre; //CifraToLetras(ARecibosProveedor.IMPORTE); + ARecibosProveedor.DESCRIPCION := 'RECIBO ' + ARecibosProveedor.REFERENCIA + ' - ' + ArecibosProveedor.Nombre + ' - Ref. ' + ARecibosProveedor.REFERENCIA_PROVEEDOR; //CifraToLetras(ARecibosProveedor.IMPORTE); ARecibosProveedor.Post; end; diff --git a/Source/Modulos/Relaciones/Pedidos de proveedor - Albaranes de proveedor/uGenerarAlbaranesProvUtils.pas b/Source/Modulos/Relaciones/Pedidos de proveedor - Albaranes de proveedor/uGenerarAlbaranesProvUtils.pas index 48e1812..56d4d95 100644 --- a/Source/Modulos/Relaciones/Pedidos de proveedor - Albaranes de proveedor/uGenerarAlbaranesProvUtils.pas +++ b/Source/Modulos/Relaciones/Pedidos de proveedor - Albaranes de proveedor/uGenerarAlbaranesProvUtils.pas @@ -255,7 +255,7 @@ begin Inicializar; if not Assigned(APedidos) then - raise Exception.Create('Pedidos de proveedor no asignado (GenerarAlbaranProv)'); + raise Exception.Create('Pedidos de proveedor no asignado (GenerarAlbaranesProv)'); if not APedidos.DataTable.Active then APedidos.DataTable.Active := True; diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas index 3186f72..950ef20 100644 --- a/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Contratos de cliente/uGenerarContratosCliUtils.pas @@ -12,8 +12,8 @@ type end; function GenerarContratoCli(const IDPresupuesto : Integer; const APreguntaMostrarContrato : Boolean = True) : Boolean; overload; - function GenerarContratoCli(APresupuesto : IBizPresupuestoCliente; var AContrato: IBizContratoCliente; - const APreguntaMostrarContrato : Boolean = True) : Boolean; overload; +// function GenerarContratoCli(APresupuesto : IBizPresupuestoCliente; var AContrato: IBizContratoCliente; +// const APreguntaMostrarContrato : Boolean = True) : Boolean; overload; function GenerarContratosCli : Boolean; overload; function GenerarContratosCli(APresupuestos : IBizPresupuestoCliente) : Boolean; overload; // function ElegirPedidoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean; @@ -234,13 +234,16 @@ begin APresupuesto := APresupuestosClienteController.Buscar(IDPresupuesto); if Assigned(APresupuesto) then - Result := GenerarContratoCli(APresupuesto, AContrato); + Result := GenerarContratosCli(APresupuesto); //, AContrato); finally if Assigned(APresupuestosClienteController) then Finalizar; end; end; +//Desactivamos la creación de contrato anterior +//UN UNICO CONTRATO POR PRESUPUESTO +{ function GenerarContratoCli(APresupuesto : IBizPresupuestoCliente; var AContrato: IBizContratoCliente; const APreguntaMostrarContrato : Boolean = True) : Boolean; overload; begin AContrato := NIL; @@ -283,6 +286,8 @@ begin Finalizar; end; end; +} + { function ElegirPedidoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean; overload; var @@ -329,7 +334,7 @@ begin , True); if Assigned(APresupuestos) then - Result := true; // GenerarContratosCli(APresupuestos); + Result := GenerarContratosCli(APresupuestos); finally if Assigned(APresupuestosClienteController) then @@ -337,4 +342,72 @@ begin end; end; +function GenerarContratosCli(APresupuestos : IBizPresupuestoCliente) : Boolean; overload; +var + AContratosNuevos : IBizContratoCliente; + i: Integer; + ARespuesta : Integer; + +begin + Result := False; + + if not Assigned(APresupuestosClienteController) then + Inicializar; + + if not Assigned(APresupuestos) then + raise Exception.Create('Presupuestos de cliente no asignado (GenerarContratosCli)'); + + if not APresupuestos.DataTable.Active then + APresupuestos.DataTable.Active := True; + + try + AContratosNuevos := AContratosClienteController.Nuevo(False); + if AContratosClienteController.Anadir(AContratosNuevos, APresupuestos) then + begin + if AContratosNuevos.DataTable.RecordCount = 1 then + begin + + with dmGenerarContratosCli.JsListaContratosGenerados do + begin + Instruction.Text := 'Se ha generado el contrato'; + + Content.Clear; + Content.Add(Format('Se ha generado correctamente el contrato %s a partir del presupuesto de cliente seleccionado' + #10#13, + [AContratosNuevos.REFERENCIA])); + end; + + end + else begin + dmGenerarContratosCli.JsListaContratosGenerados.CustomButtons[0].Destroy; + with dmGenerarContratosCli.JsListaContratosGenerados.Content do + begin + Clear; + AContratosNuevos.DataTable.Last; + for i := 0 to AContratosNuevos.DataTable.RecordCount - 1 do + begin + if Length(AContratosNuevos.REFERENCIA) > 0 then + Add(AContratosNuevos.REFERENCIA + ': ' + AContratosNuevos.NOMBRE); + AContratosNuevos.DataTable.Prior; + end; + end; + end; + + + dmGenerarContratosCli.JsListaContratosGenerados.Execute; + ARespuesta := dmGenerarContratosCli.JsListaContratosGenerados.CustomButtonResult; + case ARespuesta of + 100 : begin + // Ver el contrato + AContratosClienteController.Ver(AContratosNuevos); + end; + 200 : // Continuar; + end; + end; + + finally + AContratosNuevos := NIL; + end; +end; + + end. diff --git a/Source/Modulos/Tarifas/Controller/Tarifas_controller.dcu b/Source/Modulos/Tarifas/Controller/Tarifas_controller.dcu index 999bff8..bd76987 100644 Binary files a/Source/Modulos/Tarifas/Controller/Tarifas_controller.dcu and b/Source/Modulos/Tarifas/Controller/Tarifas_controller.dcu differ diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj index 09d7edd..976e430 100644 --- a/Source/Servidor/FactuGES_Server.dproj +++ b/Source/Servidor/FactuGES_Server.dproj @@ -28,7 +28,7 @@ Delphi.Personality - FalseTrueFalseTrueFalse3010FalseFalseFalseFalseFalse30821252Rodax Software S.L.3.0.1.0FactuGES (Servidor)3.0.1.0viernes, 05 de febrero de 2021 18:49 + FalseTrueFalseTrueFalse3020FalseFalseFalseFalseFalse30821252Rodax Software S.L.3.0.2.0FactuGES (Servidor)3.0.2.0miércoles, 24 de febrero de 2021 19:15 File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found FactuGES_Server.dpr diff --git a/Source/Servidor/FactuGES_Server.res b/Source/Servidor/FactuGES_Server.res index c3ff0f2..b8e0fe9 100644 Binary files a/Source/Servidor/FactuGES_Server.res and b/Source/Servidor/FactuGES_Server.res differ diff --git a/Tools/Firebird/Firebird-2.1.7.18553_0_Win32.exe b/Tools/Firebird/Firebird-2.1.7.18553_0_Win32.exe new file mode 100644 index 0000000..7e716c8 Binary files /dev/null and b/Tools/Firebird/Firebird-2.1.7.18553_0_Win32.exe differ