xx.p 8.1 KB

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