MailVersandVerbuchteRechnungen.p 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. DEFINE VARIABLE cBody AS CHARACTER NO-UNDO.
  2. DEFINE VARIABLE cMailBody AS CHARACTER NO-UNDO.
  3. DEFINE VARIABLE cAnrede AS CHARACTER NO-UNDO.
  4. DEFINE VARIABLE cMailTo AS CHARACTER NO-UNDO.
  5. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO.
  6. DEFINE VARIABLE iAnzMail AS INTEGER NO-UNDO.
  7. DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO INIT 'huber'.
  8. DEFINE VARIABLE Firma AS CHARACTER NO-UNDO INIT '1000'.
  9. DEFINE TEMP-TABLE tSendMail
  10. FIELD iKnr AS INTEGER
  11. FIELD cKunde AS CHARACTER
  12. FIELD cMail AS CHARACTER
  13. FIELD iFaknr AS INTEGER
  14. .
  15. { properties.i }
  16. { ttsendmail.i }
  17. FOR EACH Debop NO-LOCK
  18. WHERE Debop.Firma = '1000'
  19. AND Debop.Fakdat = 06/10/2021,
  20. FIRST Debst NO-LOCK
  21. WHERE Debst.Firma = Debop.Firma
  22. AND Debst.Knr = Debop.Knr
  23. AND Debst.DokumentStatus > 0,
  24. FIRST Savko NO-LOCK
  25. WHERE Savko.Firma = Debop.Firma
  26. AND Savko.Faknr = Debop.Faknr:
  27. ASSIGN
  28. cMailTo = ''
  29. cAnrede = ''.
  30. FIND Adresse NO-LOCK
  31. WHERE Adresse.Firma = Debop.Firma
  32. AND Adresse.Knr = Debop.Knr.
  33. FOR EACH Ansprech NO-LOCK
  34. WHERE Ansprech.Firma = Firma
  35. AND Ansprech.Knr = Debst.Knr
  36. AND Ansprech.Debitoren = TRUE
  37. AND Ansprech.Mail <> '':
  38. cMailTo = cMailTo
  39. + (IF cMailTo = '' THEN '' ELSE ';')
  40. + Ansprech.Mail.
  41. cAnrede = cAnrede
  42. + (IF cAnrede = '' THEN '' ELSE ', ')
  43. + Ansprech.BriefAnr.
  44. END.
  45. IF cMailTo = '' THEN
  46. DO:
  47. cMailTo = Adresse.Mail.
  48. cAnrede = Adresse.BriefAnr.
  49. END.
  50. RUN getMailBody ( TRIM(STRING(Adresse.Sprcd,'>9')), OUTPUT cMailBody ).
  51. cMailBody = SUBSTITUTE(cMailBody, Adresse.BriefAnr, Debop.Faknr).
  52. CREATE tSendMail.
  53. ASSIGN
  54. tSendMail.iKnr = Debst.Knr
  55. tSendMail.cKunde = Adresse.Anzeig_Br
  56. tSendMail.cMail = (IF cMailTo = '' THEN 'Keine Mailadresse' ELSE cMailTo)
  57. tSendmail.iFaknr = Debop.Faknr.
  58. IF cMailTo = '' THEN NEXT.
  59. cDateiName = SUBSTITUTE(cMailVersandPath,
  60. STRING(Debop.Knr ,'999999'),
  61. STRING(Debop.Faknr,'9999999'),
  62. DYNAMIC-FUNCTION('getDokumentArt':U, Savko.Fak_Art) ).
  63. CREATE ASMutation.
  64. ASSIGN
  65. ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
  66. ASMutation.MutArt = 'MAIL'
  67. ASMutation.Aktiv = TRUE
  68. ASMutation.cStatus = ''
  69. ASMutation.Datum = TODAY
  70. ASMutation.Firma = Firma
  71. ASMutation.cFeld_1 = SUBSTITUTE('TO:&1;CC:&2', cMailTo, cKopieRechnung)
  72. ASMutation.cFeld_2 = SUBSTITUTE('Rechnung Nr &1', Savko.Faknr )
  73. ASMutation.cFeld_3 = cMailBody
  74. ASMutation.cKey_1 = STRING(Savko.Fak_Art,'99')
  75. ASMutation.cKey_2 = cDateiName.
  76. RELEASE ASMutation.
  77. iAnzMail = iAnzMail + 1.
  78. END.
  79. RUN createMailBodyProtokoll ( OUTPUT cMailBody ).
  80. REPEAT TRANSACTION:
  81. CREATE ASMutation.
  82. ASSIGN
  83. ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
  84. ASMutation.MutArt = 'MAIL'
  85. ASMutation.Aktiv = TRUE
  86. ASMutation.cStatus = ''
  87. ASMutation.Datum = TODAY
  88. ASMutation.Firma = Firma
  89. ASMutation.cFeld_1 = SUBSTITUTE('TO:&1', cProtokollRechnungen)
  90. ASMutation.cFeld_2 = SUBSTITUTE('Protokoll Mailversand Rechnung &1 &2', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS') )
  91. ASMutation.cFeld_3 = cMailBody
  92. ASMutation.cKey_1 = 'Protokoll'
  93. ASMutation.cKey_2 = ''.
  94. RELEASE ASMutation.
  95. LEAVE.
  96. END.
  97. /* RUN 'SendMailStart.p'. */
  98. PROCEDURE getMailBody :
  99. DEFINE INPUT PARAMETER ipcSprcd AS CHARACTER NO-UNDO.
  100. DEFINE OUTPUT PARAMETER opcBody AS CHARACTER NO-UNDO.
  101. DEFINE VARIABLE cBodyDatei AS CHARACTER INIT ? NO-UNDO.
  102. DEFINE VARIABLE cBody AS CHARACTER INIT '' NO-UNDO.
  103. DEFINE VARIABLE lBody AS LONGCHAR NO-UNDO.
  104. DO WHILE cBodyDatei = ?:
  105. cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Rechnung-&2.html', cInstallation, ipcSprcd).
  106. cBodyDatei = SEARCH(cBodyDatei).
  107. LEAVE.
  108. END.
  109. IF cBodydatei = ? THEN cBody = ''.
  110. ELSE
  111. DO:
  112. FILE-INFO:FILE-NAME = cBodyDatei.
  113. cBodyDatei = FILE-INFO:FULL-PATHNAME.
  114. COPY-LOB FILE cBodydatei TO lBody NO-CONVERT.
  115. cBody = lBody.
  116. END.
  117. opcBody = cBody.
  118. END PROCEDURE.
  119. PROCEDURE createMailBodyProtokoll :
  120. /*------------------------------------------------------------------------------
  121. Purpose:
  122. Parameters: <none>
  123. Notes:
  124. ------------------------------------------------------------------------------*/
  125. DEFINE OUTPUT PARAMETER opcBody AS CHARACTER NO-UNDO.
  126. DEFINE VARIABLE cBodyDatei AS CHARACTER INIT ? NO-UNDO.
  127. DEFINE VARIABLE cBody AS CHARACTER INIT '' NO-UNDO.
  128. DEFINE VARIABLE cBodyProtokoll AS CHARACTER INIT '' NO-UNDO.
  129. DEFINE VARIABLE cString AS CHARACTER INIT '' NO-UNDO.
  130. DEFINE VARIABLE lBody AS LONGCHAR NO-UNDO.
  131. DO WHILE cBodyDatei = ?:
  132. cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Protokoll.html', cInstallation).
  133. cBodyDatei = SEARCH(cBodyDatei).
  134. IF cBodyDatei <> ? THEN LEAVE.
  135. END.
  136. IF cBodydatei = ? THEN cBody = ''.
  137. ELSE
  138. DO:
  139. FILE-INFO:FILE-NAME = cBodyDatei.
  140. cBodyDatei = FILE-INFO:FULL-PATHNAME.
  141. COPY-LOB FILE cBodydatei TO lBody NO-CONVERT.
  142. cBody = lBody.
  143. END.
  144. cBodyDatei = ?.
  145. DO WHILE cBodyDatei = ?:
  146. cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Protokoll-Tabelle.html', cInstallation).
  147. cBodyDatei = SEARCH(cBodyDatei).
  148. LEAVE.
  149. END.
  150. IF cBodydatei = ? THEN cBody = ''.
  151. ELSE
  152. DO:
  153. /* FILE-INFO:FILE-NAME = cBodyDatei. */
  154. /* cBodyDatei = FILE-INFO:FULL-PATHNAME.*/
  155. COPY-LOB FILE cBodydatei TO lBody NO-CONVERT.
  156. cBodyProtokoll = lBody.
  157. END.
  158. FOR EACH tSendMail:
  159. cString = cString
  160. /* + (IF cString = '' THEN '' ELSE CHR(10)) */
  161. + SUBSTITUTE(cBodyProtokoll, tSendMail.iKnr, tSendMail.cKunde, tSendMail.cMail, tSendMail.iFaknr).
  162. END.
  163. cBody = SUBSTITUTE(cBody, cString).
  164. opcBody = cBody.
  165. END PROCEDURE.
  166. FUNCTION getDokumentArt RETURNS CHARACTER
  167. ( ipFakart AS INTEGER ) :
  168. /*------------------------------------------------------------------------------*/
  169. /* Purpose: */
  170. /* Parameters: <none> */
  171. /* Notes: */
  172. /*------------------------------------------------------------------------------*/
  173. FIND Tabel NO-LOCK USE-INDEX Tabel-k2
  174. WHERE Tabel.Firma = Firma
  175. AND Tabel.RecArt = 'FAKART'
  176. AND Tabel.CodeI = ipFakart
  177. AND Tabel.CodeC = ''
  178. AND Tabel.Sprcd = 1 NO-ERROR.
  179. IF AVAILABLE Tabel THEN RETURN Tabel.Bez2.
  180. ELSE RETURN "??????????".
  181. END FUNCTION.