VerbuchungsMailsNachsenden.p 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. { properties.i }
  2. DEF VAR cMailTo AS CHAR NO-UNDO.
  3. DEF VAR cAnrede AS CHAR NO-UNDO.
  4. DEF VAR Firma AS CHAR NO-UNDO INIT '1000'.
  5. DEF VAR dFakDat AS DATE NO-UNDO INIT 04/23/2021.
  6. DEF VAR cMailBody AS CHAR NO-UNDO.
  7. DEF VAR cDateiName AS CHAR NO-UNDO.
  8. DEF VAR cInstallation AS CHAR NO-UNDO INIT 'huber'.
  9. DEF BUFFER bAdresse FOR Adresse.
  10. DEF BUFFER bDebst FOR Debst.
  11. DEFINE TEMP-TABLE tSendMail
  12. FIELD iKnr AS INTEGER
  13. FIELD cKunde AS CHARACTER
  14. FIELD cMail AS CHARACTER
  15. FIELD iFaknr AS INTEGER
  16. FIELD rDebst AS RECID
  17. FIELD rAdresse AS RECID
  18. .
  19. FOR EACH Debop NO-LOCK
  20. WHERE Debop.Firma = Firma
  21. AND Debop.Fakdat = dFakDat:
  22. FIND Debst NO-LOCK
  23. WHERE Debst.Firma = Debop.Firma
  24. AND Debst.Knr = Debop.Knr.
  25. IF Debst.DokumentStatus = 0 THEN NEXT.
  26. FIND Adresse NO-LOCK
  27. WHERE Adresse.Firma = Debop.Firma
  28. AND Adresse.Knr = Debop.Knr.
  29. CREATE tSendMail.
  30. ASSIGN tSendMail.iKnr = Debop.KNr
  31. tSendMail.cKunde = Adresse.Anzeig_Br
  32. tSendMail.iFaknr = Debop.Faknr
  33. tSendMail.rDebst = RECID(Debst)
  34. tSendMail.rAdresse = RECID(Adresse)
  35. .
  36. END.
  37. FOR EACH tSendMail:
  38. ASSIGN
  39. cMailTo = ''
  40. cAnrede = ''.
  41. FIND bAdresse NO-LOCK WHERE RECID(bAdresse) = tSendMail.rAdresse.
  42. FIND bDebst NO-LOCK WHERE RECID(bDebst) = tSendMail.rDebst.
  43. FIND FIRST Savko NO-LOCK
  44. WHERE Savko.Firma = Debop.Firma
  45. AND Savko.Fak_Knr = Debop.Knr
  46. AND Savko.Faknr = Debop.Faknr.
  47. FOR EACH Ansprech NO-LOCK
  48. WHERE Ansprech.Firma = Firma
  49. AND Ansprech.Knr = bDebst.Knr
  50. AND Ansprech.Debitoren = TRUE
  51. AND Ansprech.Mail <> '':
  52. cMailTo = cMailTo
  53. + (IF cMailTo = '' THEN '' ELSE ';')
  54. + Ansprech.Mail.
  55. cAnrede = cAnrede
  56. + (IF cAnrede = '' THEN '' ELSE ', ')
  57. + Ansprech.BriefAnr.
  58. END.
  59. IF cMailTo = '' THEN
  60. DO:
  61. cMailTo = bAdresse.Mail.
  62. cAnrede = bAdresse.BriefAnr.
  63. END.
  64. RUN getMailBody ( bAdresse.Sprcd, OUTPUT cMailBody ).
  65. cMailBody = SUBSTITUTE(cMailBody, bAdresse.BriefAnr, tSendMail.iFaknr).
  66. cDateiName = SUBSTITUTE(cMailVersandPath,
  67. STRING(tSendMail.iKnr ,'999999'),
  68. STRING(tSendMail.iFaknr ,'9999999'),
  69. DYNAMIC-FUNCTION('getDokumentArt':U, Savko.Fak_Art) ).
  70. CREATE ASMutation.
  71. ASSIGN
  72. ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
  73. ASMutation.MutArt = 'MAIL'
  74. ASMutation.Aktiv = TRUE
  75. ASMutation.cStatus = ''
  76. ASMutation.Datum = 04/23/2021
  77. ASMutation.Firma = Firma
  78. ASMutation.cFeld_1 = SUBSTITUTE('TO:&1;CC:&2', cMailTo, cKopieRechnung)
  79. ASMutation.cFeld_2 = SUBSTITUTE('Rechnung Nr &1', tSendMail.iFaknr )
  80. ASMutation.cFeld_3 = cMailBody
  81. ASMutation.cKey_1 = STRING(Savko.Fak_Art,'99')
  82. ASMutation.cKey_2 = cDateiName.
  83. RELEASE ASMutation.
  84. END.
  85. PROCEDURE getMailBody :
  86. DEFINE INPUT PARAMETER ipiSprcd AS CHARACTER NO-UNDO.
  87. DEFINE OUTPUT PARAMETER opcBody AS CHARACTER NO-UNDO.
  88. DEFINE VARIABLE cBodyDatei AS CHARACTER INIT ? NO-UNDO.
  89. DEFINE VARIABLE cBody AS CHARACTER INIT '' NO-UNDO.
  90. DEFINE VARIABLE lBody AS LONGCHAR NO-UNDO.
  91. DO WHILE cBodyDatei = ?:
  92. cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Rechnung-&2.html', cInstallation, ipiSprcd).
  93. cBodyDatei = SEARCH(cBodyDatei).
  94. LEAVE.
  95. END.
  96. IF cBodydatei = ? THEN cBody = ''.
  97. ELSE
  98. DO:
  99. FILE-INFO:FILE-NAME = cBodyDatei.
  100. cBodyDatei = FILE-INFO:FULL-PATHNAME.
  101. COPY-LOB FILE cBodydatei TO lBody NO-CONVERT.
  102. cBody = lBody.
  103. END.
  104. opcBody = cBody.
  105. END PROCEDURE.
  106. FUNCTION getDokumentArt RETURNS CHARACTER
  107. ( ipFakart AS INTEGER ) :
  108. /*------------------------------------------------------------------------------
  109. Purpose:
  110. Notes:
  111. ------------------------------------------------------------------------------*/
  112. FIND Tabel NO-LOCK USE-INDEX Tabel-k2
  113. WHERE Tabel.Firma = Firma
  114. AND Tabel.RecArt = 'FAKART'
  115. AND Tabel.CodeI = ipFakart
  116. AND Tabel.CodeC = ''
  117. AND Tabel.Sprcd = 1 NO-ERROR.
  118. IF AVAILABLE Tabel THEN RETURN Tabel.Bez2.
  119. ELSE RETURN "??????????".
  120. END FUNCTION.