batchdruck_control.p 55 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12
  2. &ANALYZE-RESUME
  3. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure
  4. /*------------------------------------------------------------------------
  5. File :
  6. Purpose :
  7. Syntax :
  8. Description :
  9. Author(s) :
  10. Created :
  11. Notes :
  12. ----------------------------------------------------------------------*/
  13. /* This .W file was created with the Progress AppBuilder. */
  14. /*----------------------------------------------------------------------*/
  15. /* *************************** Definitions ************************** */
  16. DEFINE VARIABLE cUser AS CHARACTER NO-UNDO.
  17. DEFINE VARIABLE iBeg AS INTEGER NO-UNDO.
  18. DEFINE VARIABLE iAnzTrans AS INTEGER NO-UNDO.
  19. DEFINE VARIABLE lBatch AS LOG NO-UNDO INIT TRUE .
  20. DEFINE VARIABLE cLogFile AS CHARACTER NO-UNDO.
  21. DEFINE VARIABLE cProgramm AS CHARACTER NO-UNDO.
  22. DEFINE VARIABLE cDruckart AS CHARACTER NO-UNDO.
  23. DEFINE VARIABLE cLogFileProg AS CHARACTER NO-UNDO.
  24. DEFINE VARIABLE lAnmeldung AS LOGICAL NO-UNDO INIT FALSE.
  25. DEFINE VARIABLE cPasswort AS CHARACTER NO-UNDO.
  26. DEFINE VARIABLE cMandant AS CHARACTER NO-UNDO.
  27. DEFINE VARIABLE rASMut AS RECID NO-UNDO.
  28. DEFINE VARIABLE cMutArten AS CHARACTER NO-UNDO
  29. INIT 'RUESTDRUCK,wsLIEFERSCHEIN,wsLADEPAPIER,wsPALETT'.
  30. DEFINE STREAM Out_Stream.
  31. DEFINE STREAM LogStream.
  32. DEFINE BUFFER bASMutation FOR ASMutation.
  33. DEFINE BUFFER dASMutation FOR ASMutation.
  34. /*DEFINE TEMP-TABLE tRuestPos*/
  35. /* FIELD Aufnr AS INTEGER*/
  36. /* FIELD Pos AS INTEGER*/
  37. /* FIELD Zeit AS INTEGER*/
  38. /* FIELD lDruck AS LOGICAL*/
  39. /* FIELD rASMut AS RECID .*/
  40. { super/funktionen.i }
  41. { incl/windefinition.i }
  42. { incl/ttdruckparam.i }
  43. { incl/properties.i }
  44. /* _UIB-CODE-BLOCK-END */
  45. &ANALYZE-RESUME
  46. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  47. /* ******************** Preprocessor Definitions ******************** */
  48. &Scoped-define PROCEDURE-TYPE Procedure
  49. &Scoped-define DB-AWARE no
  50. /* _UIB-PREPROCESSOR-BLOCK-END */
  51. &ANALYZE-RESUME
  52. /* ************************ Function Prototypes ********************** */
  53. &IF DEFINED(EXCLUDE-checkIsEnde) = 0 &THEN
  54. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD checkIsEnde Procedure
  55. FUNCTION checkIsEnde RETURNS LOGICAL
  56. ( ) FORWARD.
  57. /* _UIB-CODE-BLOCK-END */
  58. &ANALYZE-RESUME
  59. &ENDIF
  60. &IF DEFINED(EXCLUDE-checkIsWorking) = 0 &THEN
  61. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD checkIsWorking Procedure
  62. FUNCTION checkIsWorking RETURNS LOGICAL
  63. ( ) FORWARD.
  64. /* _UIB-CODE-BLOCK-END */
  65. &ANALYZE-RESUME
  66. &ENDIF
  67. &IF DEFINED(EXCLUDE-clearControlFlags) = 0 &THEN
  68. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD clearControlFlags Procedure
  69. FUNCTION clearControlFlags RETURNS LOGICAL
  70. ( ) FORWARD.
  71. /* _UIB-CODE-BLOCK-END */
  72. &ANALYZE-RESUME
  73. &ENDIF
  74. &IF DEFINED(EXCLUDE-getDruckProgramm) = 0 &THEN
  75. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getDruckProgramm Procedure
  76. FUNCTION getDruckProgramm RETURNS CHARACTER
  77. ( ) FORWARD.
  78. /* _UIB-CODE-BLOCK-END */
  79. &ANALYZE-RESUME
  80. &ENDIF
  81. &IF DEFINED(EXCLUDE-getLogfileName) = 0 &THEN
  82. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getLogfileName Procedure
  83. FUNCTION getLogfileName RETURNS CHARACTER
  84. ( /* parameter-definitions */ ) FORWARD.
  85. /* _UIB-CODE-BLOCK-END */
  86. &ANALYZE-RESUME
  87. &ENDIF
  88. /* *********************** Procedure Settings ************************ */
  89. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  90. /* Settings for THIS-PROCEDURE
  91. Type: Procedure
  92. Allow:
  93. Frames: 0
  94. Add Fields to: Neither
  95. Other Settings: CODE-ONLY COMPILE
  96. */
  97. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  98. /* ************************* Create Window ************************** */
  99. &ANALYZE-SUSPEND _CREATE-WINDOW
  100. /* DESIGN Window definition (used by the UIB)
  101. CREATE WINDOW Procedure ASSIGN
  102. HEIGHT = 15
  103. WIDTH = 60.
  104. /* END WINDOW DEFINITION */
  105. */
  106. &ANALYZE-RESUME
  107. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
  108. /* *************************** Main Block *************************** */
  109. /* -------------------------------------------------------------- */
  110. /* Start lesen ASMutation */
  111. /* -------------------------------------------------------------- */
  112. DEFINE VARIABLE iTime AS INTEGER NO-UNDO.
  113. DEFINE VARIABLE cRetVal AS CHARACTER NO-UNDO.
  114. DEFINE VARIABLE iTrnr AS INTEGER NO-UNDO INIT 0.
  115. DEFINE VARIABLE iAblauf AS INTEGER NO-UNDO.
  116. DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO.
  117. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  118. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  119. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  120. RUN ANMELDEN.
  121. IF NOT lAnmeldung THEN QUIT.
  122. LEAVE.
  123. END.
  124. cLogFileProg = SEARCH ('writeLogFile.p').
  125. cProgramm = DYNAMIC-FUNCTION ('makeProgname':U, THIS-PROCEDURE:HANDLE) NO-ERROR.
  126. cLogFile = DYNAMIC-FUNCTION ('getLogFileName':U IN THIS-PROCEDURE) NO-ERROR.
  127. /*OUTPUT TO 'C:\LogFiles\xxxx.log'. */
  128. /*PUT CONTROL cLogFileProg CHR(10) cProgramm CHR(10) cLogFile.*/
  129. /*OUTPUT CLOSE. */
  130. SAktiv = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR.
  131. IF SAktiv = ? THEN SAktiv = FALSE.
  132. IF NOT sAktiv THEN
  133. DO:
  134. cMessage = 'Anmeldung nicht möglich / nicht geklappt '.
  135. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  136. QUIT.
  137. END.
  138. AdFirma = DYNAMIC-FUNCTION('getAdMandant':U) NO-ERROR.
  139. FBFirma = DYNAMIC-FUNCTION('getFBMandant':U) NO-ERROR.
  140. Firma = DYNAMIC-FUNCTION('getMandant':U) NO-ERROR.
  141. cUser = DYNAMIC-FUNCTION('getBenutzer') NO-ERROR.
  142. lBatch = DYNAMIC-FUNCTION('getBatch':U) NO-ERROR.
  143. cMessage = SUBSTITUTE('Programm &1 gestartet', cProgramm).
  144. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  145. iBeg = TIME.
  146. iTime = ETIME(TRUE).
  147. iTrnr = -1.
  148. iAnzTrans = 0.
  149. RUN REORG_ASMUTATION.
  150. RUN REORG_TABELLEN.
  151. RUN BEREINIGEN_BATCH.
  152. DYNAMIC-FUNCTION ('clearControlFlags':U).
  153. cMessage = 'Reorg ASMutation, Reorg Tabellen und Bereinigung Batch beendet'.
  154. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  155. MAIN-BLOCK:
  156. REPEAT ON ERROR UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK:
  157. FIND FIRST ASMutation NO-LOCK USE-INDEX ASMutation-k2
  158. WHERE ASMutation.Aktiv = TRUE
  159. AND ASMutation.asmutation_id > iTrnr
  160. AND ASMutation.cStatus = '' NO-ERROR.
  161. IF NOT AVAILABLE ASMutation THEN
  162. DO:
  163. iTrnr = -1.
  164. iAnzTrans = 0.
  165. PAUSE 2 NO-MESSAGE.
  166. lRetVal = DYNAMIC-FUNCTION ('checkIsWorking':U) NO-ERROR.
  167. IF lRetVal THEN NEXT MAIN-BLOCK.
  168. lRetVal = DYNAMIC-FUNCTION ('checkIsEnde':U) NO-ERROR.
  169. IF lRetVal THEN LEAVE MAIN-BLOCK.
  170. NEXT MAIN-BLOCK.
  171. END.
  172. IF LOOKUP(ASMutation.MutArt, cMutArten, ',') = 0 THEN
  173. DO:
  174. iTrnr = ASMutation.asmutation_id.
  175. NEXT MAIN-BLOCK.
  176. END.
  177. iTime = ETIME(TRUE).
  178. iTrnr = ASMutation.asmutation_id.
  179. iRecid = RECID(ASMutation).
  180. lRetVal = TRUE.
  181. /* -------------------------------------------------------------- */
  182. /* Druck aus TRIGGER t-aufze-write (Aenderung Auftrag) */
  183. /* -------------------------------------------------------------- */
  184. DO WHILE ASMutation.MutArt = 'RUESTDRUCK':
  185. /* Druck von Benutzer nach Mutation */
  186. IF ASMutation.cFeld_2 <> 'TRIGGER' THEN
  187. DO:
  188. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  189. FOR EACH bASMutation NO-LOCK USE-INDEX ASMutation-k2
  190. WHERE bASMutation.Aktiv = TRUE
  191. AND bASMutation.MutArt = ASMutation.MutArt
  192. AND bASMutation.iKey_1 = ASMutation.iKey_1
  193. AND bASMutation.cFeld_2 = 'TRIGGER':
  194. FIND dASMutation WHERE RECID(dASMutation) = RECID(bASMutation) EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
  195. IF AVAILABLE dASMutation THEN
  196. DO:
  197. DELETE dASMutation.
  198. RELEASE dASMutation.
  199. RELEASE bASMutation.
  200. NEXT.
  201. END.
  202. IF LOCKED dASMutation THEN
  203. DO:
  204. lRetVal = FALSE.
  205. RELEASE bASMutation.
  206. LEAVE.
  207. END.
  208. END.
  209. LEAVE.
  210. END.
  211. END.
  212. IF NOT lRetVal THEN LEAVE.
  213. /* ---------------------------------- */
  214. rASMut = ?.
  215. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  216. FOR EACH bASMutation NO-LOCK USE-INDEX ASMutation-k2
  217. WHERE bASMutation.Aktiv = TRUE
  218. AND bASMutation.MutArt = ASMutation.MutArt
  219. AND bASMutation.iKey_1 = ASMutation.iKey_1
  220. AND bASMutation.cFeld_2 = 'TRIGGER'
  221. BREAK BY bASMutation.iKey_1
  222. BY bASMutation.asmutation_id:
  223. IF LAST-OF (bASMutation.iKey_1) THEN
  224. DO:
  225. rAsMut = RECID(bASMutation).
  226. LEAVE.
  227. END.
  228. FIND dASMutation WHERE RECID(dASMutation) = RECID(bASMutation) EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
  229. IF AVAILABLE dASMutation THEN
  230. DO:
  231. DELETE dASMutation.
  232. RELEASE dASMutation.
  233. RELEASE bASMutation.
  234. NEXT.
  235. END.
  236. IF LOCKED dASMutation THEN
  237. DO:
  238. lRetVal = FALSE.
  239. RELEASE bASMutation.
  240. LEAVE.
  241. END.
  242. lRetVal = FALSE.
  243. DELETE bASMutation.
  244. END.
  245. LEAVE.
  246. END.
  247. IF rASMut = ? THEN LEAVE.
  248. FIND bASMutation NO-LOCK WHERE RECID(bASMutation) = rASMut.
  249. IF bASMutation.asmutation_id = ASMutation.asmutation_id AND
  250. bASMutation.iFeld_3 < (TIME - 120) THEN LEAVE.
  251. lRetVal = FALSE.
  252. LEAVE.
  253. END.
  254. /* -------------------------------------------------------------- */
  255. IF NOT lRetVal THEN NEXT.
  256. REPEAT TRANSACTION:
  257. FIND ASMutation EXCLUSIVE-LOCK
  258. WHERE RECID(ASMutation) = iRecid NO-WAIT NO-ERROR.
  259. IF NOT AVAILABLE ASMutation AND
  260. LOCKED ASMutation THEN NEXT MAIN-BLOCK.
  261. ASSIGN
  262. ASMutation.cStatus = 'A'.
  263. RELEASE ASMutation.
  264. LEAVE.
  265. END.
  266. cRetVal = 'NULL'.
  267. FIND ASMutation NO-LOCK WHERE RECID(ASMutation) = iRecid.
  268. CASE ASMutation.MutArt:
  269. WHEN 'RUESTDRUCK' THEN RUN DRUCKEN_RUESTSCHEIN ( iRecid ).
  270. WHEN 'wsLADEPAPIER' THEN RUN DRUCKEN_LADESCHEIN ( iRecid ).
  271. WHEN 'wsPALETT' THEN RUN DRUCKEN_PALETTENSCHEIN ( iRecid ).
  272. WHEN 'wsLIEFERSCHEIN' THEN RUN DRUCKEN_LIEFERSCHEIN ( iRecid ).
  273. END CASE.
  274. cRetVal = RETURN-VALUE.
  275. IF cRetVal BEGINS 'ERROR' THEN
  276. DO:
  277. cMessage = SUBSTITUTE('Fehler &1 beim Drucken von &2', ENTRY(2, cRetVal, ';'), ASMutation.MutArt).
  278. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  279. iAblauf = 0.
  280. REPEAT TRANSACTION:
  281. FIND ASMutation EXCLUSIVE-LOCK
  282. WHERE RECID(ASMutation) = iRecid NO-WAIT NO-ERROR.
  283. IF NOT AVAILABLE ASMutation AND
  284. LOCKED ASMutation THEN
  285. DO:
  286. PAUSE 1 NO-MESSAGE.
  287. iAblauf = iAblauf + 1.
  288. IF iAblauf >= 10 THEN NEXT MAIN-BLOCK.
  289. NEXT.
  290. END.
  291. CASE ASMutation.MutArt:
  292. WHEN 'wsLIEFERSCHEIN' THEN
  293. DO:
  294. ASSIGN
  295. ASMutation.Aktiv = FALSE
  296. ASMutation.cStatus = 'E'.
  297. END.
  298. OTHERWISE
  299. DO:
  300. ASSIGN
  301. ASMutation.cStatus = ''
  302. ASMutation.Aktiv = TRUE.
  303. END.
  304. END CASE.
  305. RELEASE ASMutation.
  306. LEAVE.
  307. END.
  308. NEXT MAIN-BLOCK.
  309. END.
  310. iAblauf = 0.
  311. REPEAT TRANSACTION:
  312. FIND ASMutation EXCLUSIVE-LOCK
  313. WHERE RECID(ASMutation) = iRecid NO-WAIT NO-ERROR.
  314. IF NOT AVAILABLE ASMutation AND
  315. LOCKED ASMutation THEN
  316. DO:
  317. PAUSE 1 NO-MESSAGE.
  318. iAblauf = iAblauf + 1.
  319. IF iAblauf >= 10 THEN LEAVE.
  320. NEXT.
  321. END.
  322. ASSIGN
  323. ASMutation.cStatus = 'E'
  324. ASMutation.Aktiv = FALSE.
  325. RELEASE ASMutation.
  326. LEAVE.
  327. END.
  328. iAnzTrans = iAnzTrans + 1.
  329. IF iAnzTrans <= 5 THEN NEXT.
  330. lRetVal = DYNAMIC-FUNCTION ('checkIsWorking':U) NO-ERROR.
  331. lRetVal = DYNAMIC-FUNCTION ('checkIsEnde':U) NO-ERROR.
  332. IF lRetVal THEN LEAVE MAIN-BLOCK.
  333. END.
  334. cMessage = SUBSTITUTE('Programm nach einer Laufzeit von &1 Sekunden beendet', (TIME - iBeg) ).
  335. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  336. /* _UIB-CODE-BLOCK-END */
  337. &ANALYZE-RESUME
  338. /* ************************ Function Implementations ***************** */
  339. &IF DEFINED(EXCLUDE-checkIsEnde) = 0 &THEN
  340. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION checkIsEnde Procedure
  341. FUNCTION checkIsEnde RETURNS LOGICAL
  342. ( ):
  343. /*------------------------------------------------------------------------------*/
  344. /* Purpose: */
  345. /* Parameters: <none> */
  346. /* Notes: */
  347. /*------------------------------------------------------------------------------*/
  348. DEFINE VARIABLE lOk AS LOGICAL NO-UNDO INIT FALSE.
  349. DEFINE BUFFER bTabel FOR Tabel.
  350. RELEASE Tabel .
  351. RELEASE bTabel.
  352. DO WHILE TRUE:
  353. FIND Tabel NO-LOCK
  354. WHERE Tabel.Firma = Firma
  355. AND Tabel.Recart = 'BATCHDRUCK'
  356. AND Tabel.CodeC = 'LAGER'
  357. AND Tabel.CodeI = 0
  358. AND Tabel.Sprcd = 0 NO-ERROR.
  359. IF NOT AVAILABLE Tabel THEN LEAVE.
  360. IF Tabel.Flag_2 = FALSE THEN LEAVE.
  361. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  362. FIND bTabel WHERE RECID(bTabel) = RECID(Tabel).
  363. ASSIGN
  364. bTabel.Flag_2 = FALSE.
  365. RELEASE bTabel.
  366. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, '' ) NO-ERROR.
  367. cMessage = 'eine ENDE-Anweisung erhalten'.
  368. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  369. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, '' ) NO-ERROR.
  370. LEAVE.
  371. END.
  372. lOK = TRUE.
  373. LEAVE.
  374. END.
  375. RETURN lOK.
  376. END FUNCTION.
  377. /* _UIB-CODE-BLOCK-END */
  378. &ANALYZE-RESUME
  379. &ENDIF
  380. &IF DEFINED(EXCLUDE-checkIsWorking) = 0 &THEN
  381. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION checkIsWorking Procedure
  382. FUNCTION checkIsWorking RETURNS LOGICAL
  383. ( ):
  384. /*------------------------------------------------------------------------------*/
  385. /* Purpose: */
  386. /* Parameters: <none> */
  387. /* Notes: */
  388. /*------------------------------------------------------------------------------*/
  389. DEFINE VARIABLE lOk AS LOGICAL NO-UNDO INIT FALSE.
  390. DEFINE BUFFER bTabel FOR Tabel.
  391. RELEASE Tabel .
  392. RELEASE bTabel.
  393. DO WHILE TRUE:
  394. FIND Tabel NO-LOCK
  395. WHERE Tabel.Firma = Firma
  396. AND Tabel.Recart = 'BATCHDRUCK'
  397. AND Tabel.CodeC = 'LAGER'
  398. AND Tabel.CodeI = 0
  399. AND Tabel.Sprcd = 0 NO-ERROR.
  400. IF NOT AVAILABLE Tabel THEN LEAVE.
  401. IF Tabel.Flag_1 = FALSE THEN LEAVE.
  402. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  403. FIND bTabel WHERE RECID(bTabel) = RECID(Tabel).
  404. ASSIGN
  405. bTabel.Flag_1 = FALSE.
  406. RELEASE bTabel.
  407. LEAVE.
  408. END.
  409. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, '' ) NO-ERROR.
  410. cMessage = 'eine isWorking-Anfrage erhalten'.
  411. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  412. lOK = TRUE.
  413. LEAVE.
  414. END.
  415. RETURN lOK.
  416. END FUNCTION.
  417. /* _UIB-CODE-BLOCK-END */
  418. &ANALYZE-RESUME
  419. &ENDIF
  420. &IF DEFINED(EXCLUDE-clearControlFlags) = 0 &THEN
  421. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION clearControlFlags Procedure
  422. FUNCTION clearControlFlags RETURNS LOGICAL
  423. ( ):
  424. /*------------------------------------------------------------------------------*/
  425. /* Purpose: */
  426. /* Parameters: <none> */
  427. /* Notes: */
  428. /*------------------------------------------------------------------------------*/
  429. DEFINE BUFFER bTabel FOR Tabel.
  430. DO WHILE TRUE:
  431. FIND Tabel NO-LOCK
  432. WHERE Tabel.Firma = Firma
  433. AND Tabel.Recart = 'BATCHDRUCK'
  434. AND Tabel.CodeC = 'LAGER'
  435. AND Tabel.CodeI = 0
  436. AND Tabel.Sprcd = 0 NO-ERROR.
  437. IF NOT AVAILABLE Tabel THEN
  438. DO:
  439. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  440. CREATE Tabel.
  441. ASSIGN
  442. Tabel.Firma = Firma
  443. Tabel.Recart = 'BATCHDRUCK'
  444. Tabel.CodeC = 'LAGER'
  445. Tabel.CodeI = 0
  446. Tabel.Sprcd = 0
  447. Tabel.Flag_1 = FALSE
  448. Tabel.Flag_2 = FALSE.
  449. RELEASE Tabel.
  450. LEAVE.
  451. END.
  452. NEXT.
  453. END.
  454. IF Tabel.Flag_1 = FALSE AND
  455. Tabel.Flag_2 = FALSE THEN LEAVE.
  456. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  457. FIND bTabel WHERE RECID(bTabel) = RECID(Tabel).
  458. ASSIGN
  459. bTabel.Flag_1 = FALSE
  460. bTabel.Flag_2 = FALSE.
  461. RELEASE bTabel.
  462. LEAVE.
  463. END.
  464. LEAVE.
  465. END.
  466. RETURN TRUE.
  467. END FUNCTION.
  468. /* _UIB-CODE-BLOCK-END */
  469. &ANALYZE-RESUME
  470. &ENDIF
  471. &IF DEFINED(EXCLUDE-getDruckProgramm) = 0 &THEN
  472. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getDruckProgramm Procedure
  473. FUNCTION getDruckProgramm RETURNS CHARACTER
  474. ( ):
  475. /*------------------------------------------------------------------------------*/
  476. /* Purpose: */
  477. /* Parameters: <none> */
  478. /* Notes: */
  479. /*------------------------------------------------------------------------------*/
  480. DEFINE VARIABLE cDruckProgramm AS CHARACTER NO-UNDO.
  481. DO WHILE TRUE:
  482. cDruckProgramm = SUBSTITUTE('DruckProgramme/&1/&2', cInstallation, cDruckart).
  483. cDruckProgramm = SEARCH(cDruckProgramm).
  484. LEAVE.
  485. END.
  486. IF cDruckProgramm = ? THEN cDruckProgramm = ''.
  487. RETURN cDruckProgramm.
  488. END FUNCTION.
  489. /* _UIB-CODE-BLOCK-END */
  490. &ANALYZE-RESUME
  491. &ENDIF
  492. &IF DEFINED(EXCLUDE-getLogfileName) = 0 &THEN
  493. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getLogfileName Procedure
  494. FUNCTION getLogfileName RETURNS CHARACTER
  495. ( /* parameter-definitions */ ) :
  496. /*------------------------------------------------------------------------------*/
  497. /* Purpose: */
  498. /* Parameters: <none> */
  499. /* Notes: */
  500. /*------------------------------------------------------------------------------*/
  501. DEFINE VARIABLE cPath AS CHARACTER NO-UNDO.
  502. cPath = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR.
  503. IF cPath = ? OR
  504. cPath = '' THEN cPath = SESSION:TEMP-DIRECTORY.
  505. cPath = cPath
  506. + cProgramm
  507. + '_'
  508. + REPLACE(STRING(TODAY,'99.99.9999'), '.', '')
  509. + '.Log'.
  510. RETURN cPath.
  511. END FUNCTION.
  512. /* _UIB-CODE-BLOCK-END */
  513. &ANALYZE-RESUME
  514. &ENDIF
  515. /* ********************** Internal Procedures *********************** */
  516. &IF DEFINED(EXCLUDE-ANMELDEN) = 0 &THEN
  517. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ANMELDEN Procedure
  518. PROCEDURE ANMELDEN:
  519. /*------------------------------------------------------------------------------*/
  520. /* Purpose: */
  521. /* Parameters: <none> */
  522. /* Notes: */
  523. /*------------------------------------------------------------------------------*/
  524. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  525. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  526. DO WHILE TRUE:
  527. IF ENTRY(1, SESSION:PARAMETER, ';') <> 'batch' THEN LEAVE.
  528. ASSIGN
  529. cBenutzer = ''
  530. cPasswort = ''
  531. cMandant = ''.
  532. DO ix = 1 TO NUM-ENTRIES(SESSION:PARAMETER, ';'):
  533. CASE ix:
  534. WHEN 2 THEN
  535. cBenutzer = ENTRY(ix, SESSION:PARAMETER, ';') NO-ERROR.
  536. WHEN 3 THEN
  537. cPasswort = ENTRY(ix, SESSION:PARAMETER, ';') NO-ERROR.
  538. WHEN 4 THEN
  539. cMandant = ENTRY(ix, SESSION:PARAMETER, ';') NO-ERROR.
  540. WHEN 5 THEN
  541. lBatch = FALSE NO-ERROR.
  542. END CASE.
  543. END.
  544. DYNAMIC-FUNCTION('setBatch':U, lBatch) NO-ERROR.
  545. FIND FIRST Benutzer NO-LOCK USE-INDEX Benutzer-k1
  546. WHERE Benutzer.Benutzer = cBenutzer
  547. AND Benutzer.Kennwort = cPasswort NO-ERROR.
  548. IF NOT AVAILABLE Benutzer THEN
  549. DO:
  550. cString = SUBSTITUTE('Benutzer &1 mit Kennwort &2 ungültig', cBenutzer, cPasswort).
  551. RUN VALUE(cLogFileProg) (cProgramm, cLogFile, cString) NO-ERROR.
  552. LEAVE.
  553. END.
  554. FIND Mandant NO-LOCK USE-INDEX Mandant-k1
  555. WHERE Mandant.Firma = cMandant NO-ERROR.
  556. IF NOT AVAILABLE Mandant THEN
  557. DO:
  558. cString = SUBSTITUTE('Mandat &1 ungültig', cMandant).
  559. RUN VALUE(cLogFileProg) (cProgramm, cLogFile, cString) NO-ERROR.
  560. LEAVE.
  561. END.
  562. cString = cBenutzer + CHR(01) + cPasswort + CHR(01) + cMandant.
  563. RUN ANMELDUNG ( INPUT cString ).
  564. RUN AUFTRAGFUNKTIONENINIT.
  565. cInstallation = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR.
  566. lAnmeldung = TRUE.
  567. LEAVE.
  568. END.
  569. END PROCEDURE.
  570. /* _UIB-CODE-BLOCK-END */
  571. &ANALYZE-RESUME
  572. &ENDIF
  573. &IF DEFINED(EXCLUDE-BEREINIGEN_BATCH) = 0 &THEN
  574. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BEREINIGEN_BATCH Procedure
  575. PROCEDURE BEREINIGEN_BATCH:
  576. /*------------------------------------------------------------------------------*/
  577. /* Purpose: */
  578. /* Parameters: <none> */
  579. /* Notes: */
  580. /*------------------------------------------------------------------------------*/
  581. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  582. DEFINE BUFFER bASMutation FOR ASMutation.
  583. BEREINIGEN:
  584. FOR EACH ASMutation NO-LOCK
  585. WHERE ASMutation.cStatus = 'A':
  586. iRecid = RECID(ASMutation).
  587. CASE ASMutation.MutArt:
  588. WHEN 'RUESTDRUCK' THEN RUN BEREINIGEN_RUESTDRUCK ( iRecid ).
  589. WHEN 'wsLADEPAPIER' THEN RUN BEREINIGEN_LADEPAPIER ( iRecid ).
  590. WHEN 'wsPALETT' THEN RUN BEREINIGEN_PALETTENDOKUMENT ( iRecid ).
  591. WHEN 'wsLIEFERSCHEIN' THEN RUN BEREINIGEN_LIEFERSCHEIN ( iRecid ).
  592. END.
  593. REPEAT TRANSACTION:
  594. FIND bASMutation EXCLUSIVE-LOCK
  595. WHERE RECID(bASMutation) = iRecid NO-WAIT NO-ERROR.
  596. IF LOCKED bASMutation THEN
  597. DO:
  598. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, 'ASMutation ist locked' ) NO-ERROR.
  599. NEXT BEREINIGEN.
  600. END.
  601. IF NOT AVAILABLE bASMutation THEN LEAVE.
  602. DELETE bASMutation.
  603. LEAVE.
  604. END.
  605. END.
  606. END PROCEDURE.
  607. /* _UIB-CODE-BLOCK-END */
  608. &ANALYZE-RESUME
  609. &ENDIF
  610. &IF DEFINED(EXCLUDE-BEREINIGEN_LADEPAPIER) = 0 &THEN
  611. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BEREINIGEN_LADEPAPIER Procedure
  612. PROCEDURE BEREINIGEN_LADEPAPIER:
  613. /*------------------------------------------------------------------------------*/
  614. /* Purpose: */
  615. /* Parameters: <none> */
  616. /* Notes: */
  617. /*------------------------------------------------------------------------------*/
  618. DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  619. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  620. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO.
  621. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO.
  622. DEFINE BUFFER bAS FOR ASMutation.
  623. DEFINE BUFFER bTabel FOR Tabel.
  624. FIND bAS NO-LOCK WHERE RECID(bAS) = ipRecid NO-ERROR.
  625. IF NOT AVAILABLE bAS THEN RETURN.
  626. IF bAS.cStatus = 'E' THEN RETURN.
  627. ASSIGN
  628. cBenutzer = bAS.cFeld_2
  629. iAufnr = bAS.iKey_1
  630. iRuestArt = bAS.iKey_2
  631. cFirma = bAS.Firma.
  632. FIND FIRST bTabel EXCLUSIVE-LOCK
  633. WHERE bTabel.Firma = cFirma
  634. AND bTabel.RecArt = 'wsLADEPAPIER'
  635. AND bTabel.Sprcd = 1
  636. AND bTabel.Int_1 = iAufnr
  637. AND bTabel.Int_3 = iRuestArt NO-WAIT NO-ERROR.
  638. IF NOT AVAILABLE bTabel THEN RETURN.
  639. DELETE bTabel.
  640. RETURN.
  641. END PROCEDURE.
  642. /* _UIB-CODE-BLOCK-END */
  643. &ANALYZE-RESUME
  644. &ENDIF
  645. &IF DEFINED(EXCLUDE-BEREINIGEN_LIEFERSCHEIN) = 0 &THEN
  646. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BEREINIGEN_LIEFERSCHEIN Procedure
  647. PROCEDURE BEREINIGEN_LIEFERSCHEIN:
  648. /*------------------------------------------------------------------------------*/
  649. /* Purpose: */
  650. /* Parameters: <none> */
  651. /* Notes: */
  652. /*------------------------------------------------------------------------------*/
  653. DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  654. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  655. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO.
  656. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO.
  657. DEFINE BUFFER bAS FOR ASMutation.
  658. DEFINE BUFFER bTabel FOR Tabel.
  659. FIND bAS NO-LOCK WHERE RECID(bAS) = ipRecid NO-ERROR.
  660. IF NOT AVAILABLE bAS THEN RETURN.
  661. IF bAS.cStatus = 'E' THEN RETURN.
  662. ASSIGN
  663. cBenutzer = bAS.cFeld_2
  664. iAufnr = bAS.iKey_1
  665. iRuestArt = bAS.iKey_2
  666. cFirma = bAS.Firma.
  667. FIND FIRST bTabel EXCLUSIVE-LOCK
  668. WHERE bTabel.Firma = cFirma
  669. AND bTabel.RecArt = 'wsLIEFERSCHEIN'
  670. AND bTabel.Sprcd = 1
  671. AND bTabel.Int_1 = iAufnr
  672. AND bTabel.Int_3 = iRuestArt NO-WAIT NO-ERROR.
  673. IF NOT AVAILABLE bTabel THEN RETURN.
  674. DELETE bTabel.
  675. RETURN.
  676. END PROCEDURE.
  677. /* _UIB-CODE-BLOCK-END */
  678. &ANALYZE-RESUME
  679. &ENDIF
  680. &IF DEFINED(EXCLUDE-BEREINIGEN_PALETTENDOKUMENT) = 0 &THEN
  681. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BEREINIGEN_PALETTENDOKUMENT Procedure
  682. PROCEDURE BEREINIGEN_PALETTENDOKUMENT:
  683. /*------------------------------------------------------------------------------*/
  684. /* Purpose: */
  685. /* Parameters: <none> */
  686. /* Notes: */
  687. /*------------------------------------------------------------------------------*/
  688. DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  689. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  690. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO.
  691. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO.
  692. DEFINE BUFFER bAS FOR ASMutation.
  693. DEFINE BUFFER bTabel FOR Tabel.
  694. FIND bAS NO-LOCK WHERE RECID(bAS) = ipRecid NO-ERROR.
  695. IF NOT AVAILABLE bAS THEN RETURN.
  696. IF bAS.cStatus = 'E' THEN RETURN.
  697. ASSIGN
  698. cBenutzer = bAS.cFeld_2
  699. iAufnr = bAS.iKey_1
  700. iRuestArt = bAS.iKey_2
  701. cFirma = bAS.Firma.
  702. FIND FIRST bTabel EXCLUSIVE-LOCK
  703. WHERE bTabel.Firma = cFirma
  704. AND bTabel.RecArt = 'wsPALETT'
  705. AND bTabel.Sprcd = 1
  706. AND bTabel.Int_1 = iAufnr
  707. AND bTabel.Int_3 = iRuestArt NO-WAIT NO-ERROR.
  708. IF NOT AVAILABLE bTabel THEN RETURN.
  709. DELETE bTabel.
  710. RETURN.
  711. END PROCEDURE.
  712. /* _UIB-CODE-BLOCK-END */
  713. &ANALYZE-RESUME
  714. &ENDIF
  715. &IF DEFINED(EXCLUDE-BEREINIGEN_RUESTDRUCK) = 0 &THEN
  716. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BEREINIGEN_RUESTDRUCK Procedure
  717. PROCEDURE BEREINIGEN_RUESTDRUCK:
  718. /*------------------------------------------------------------------------------*/
  719. /* Purpose: */
  720. /* Parameters: <none> */
  721. /* Notes: */
  722. /*------------------------------------------------------------------------------*/
  723. DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  724. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  725. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO.
  726. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO.
  727. DEFINE BUFFER bAS FOR ASMutation.
  728. DEFINE BUFFER bTabel FOR Tabel.
  729. FIND bAS NO-LOCK WHERE RECID(bAS) = ipRecid NO-ERROR.
  730. IF NOT AVAILABLE bAS THEN RETURN.
  731. IF bAS.cStatus = 'E' THEN RETURN.
  732. ASSIGN
  733. cBenutzer = bAS.cFeld_2
  734. iAufnr = bAS.iKey_1
  735. iRuestArt = bAS.iKey_2
  736. cFirma = bAS.Firma.
  737. FIND FIRST bTabel EXCLUSIVE-LOCK
  738. WHERE bTabel.Firma = cFirma
  739. AND bTabel.RecArt = 'AUFDRUCK'
  740. AND bTabel.Sprcd = 1
  741. AND bTabel.Int_1 = iAufnr
  742. AND bTabel.Int_3 = iRuestArt NO-WAIT NO-ERROR.
  743. IF NOT AVAILABLE bTabel THEN RETURN.
  744. DELETE bTabel.
  745. RETURN.
  746. END PROCEDURE.
  747. /* _UIB-CODE-BLOCK-END */
  748. &ANALYZE-RESUME
  749. &ENDIF
  750. &IF DEFINED(EXCLUDE-DRUCKEN_LADEPAPIER) = 0 &THEN
  751. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_LADEPAPIER Procedure
  752. PROCEDURE DRUCKEN_LADESCHEIN:
  753. /*------------------------------------------------------------------------------*/
  754. /* Purpose: */
  755. /* Parameters: <none> */
  756. /* Notes: */
  757. /*------------------------------------------------------------------------------*/
  758. DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  759. DEFINE VARIABLE cRuester AS CHARACTER NO-UNDO.
  760. DEFINE VARIABLE iKopien AS INTEGER NO-UNDO.
  761. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  762. DEFINE VARIABLE iPlatz AS INTEGER NO-UNDO.
  763. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO.
  764. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  765. DEFINE VARIABLE cStockwerk AS CHARACTER INIT ';;;;;;;;;;' NO-UNDO.
  766. DEFINE VARIABLE cDruckProgramm AS CHARACTER NO-UNDO.
  767. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  768. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  769. FIND ASMutation NO-LOCK
  770. WHERE RECID(ASMutation) = ipRecid.
  771. ASSIGN
  772. cRuester = ASMutation.cFeld_2
  773. iAufnr = ASMutation.iKey_1
  774. iRuestArt = ASMutation.iKey_2
  775. Firma = ASMutation.Firma.
  776. FIND Aufko NO-LOCK USE-INDEX Aufko-k1
  777. WHERE Aufko.Firma = Firma
  778. AND Aufko.Aufnr = iAufnr NO-ERROR.
  779. IF NOT AVAILABLE Aufko THEN RETURN ''.
  780. cDruckart = 'Ladeschein.r'.
  781. cDruckProgramm = DYNAMIC-FUNCTION('getDruckProgramm':U) NO-ERROR.
  782. IF cDruckProgramm = '' THEN RETURN 'ERROR;Fehler! Kein Programm für den Ausdruck gefunden'.
  783. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  784. FIND LAST Tabel NO-LOCK
  785. WHERE Tabel.Firma = Firma
  786. AND Tabel.RecArt = 'wsLADEPAPIER'
  787. AND Tabel.CodeC = cRuester
  788. AND Tabel.Sprcd = 1 NO-ERROR.
  789. IF NOT AVAILABLE Tabel THEN ix = 1.
  790. ELSE ix = Tabel.CodeI + 1.
  791. CREATE Tabel.
  792. ASSIGN
  793. Tabel.Firma = Firma
  794. Tabel.RecArt = 'wsLADEPAPIER'
  795. Tabel.CodeC = cRuester
  796. Tabel.CodeI = ix
  797. Tabel.Sprcd = 1
  798. Tabel.Int_1 = iAufnr
  799. Tabel.Int_2 = 3
  800. Tabel.Int_3 = iRuestArt
  801. Tabel.Dec_1 = ASMutation.iFeld_1
  802. Tabel.Dec_2 = 1
  803. Tabel.Bez2 = cRuester.
  804. iRecid = RECID(Tabel).
  805. RELEASE Tabel.
  806. LEAVE.
  807. END.
  808. cString = SUBSTITUTE('Programm &1/&2 gestartet mit Aufnr &3, Rüstart &4, Benutzer &5',
  809. cDruckProgramm, 'wsLADEPAPIER', iAufnr, iRuestArt, cRuester).
  810. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cString ) NO-ERROR.
  811. RUN VALUE(cDruckProgramm) NO-ERROR.
  812. RETURN RETURN-VALUE.
  813. END PROCEDURE.
  814. /* _UIB-CODE-BLOCK-END */
  815. &ANALYZE-RESUME
  816. &ENDIF
  817. &IF DEFINED(EXCLUDE-DRUCKEN_LIEFERSCHEIN) = 0 &THEN
  818. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_LIEFERSCHEIN Procedure
  819. PROCEDURE DRUCKEN_LIEFERSCHEIN:
  820. /*------------------------------------------------------------------------------*/
  821. /* Purpose: */
  822. /* Parameters: <none> */
  823. /* Notes: */
  824. /*------------------------------------------------------------------------------*/
  825. DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  826. DEFINE VARIABLE cRuester AS CHARACTER NO-UNDO.
  827. DEFINE VARIABLE iKopien AS INTEGER NO-UNDO.
  828. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  829. DEFINE VARIABLE iPlatz AS INTEGER NO-UNDO.
  830. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO.
  831. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  832. DEFINE VARIABLE cStockwerk AS CHARACTER INIT ';;;;;;;;;' NO-UNDO.
  833. DEFINE VARIABLE cDruckProgramm AS CHARACTER NO-UNDO.
  834. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  835. DEFINE VARIABLE lSammFak AS LOG NO-UNDO.
  836. DEFINE VARIABLE cResult AS CHARACTER NO-UNDO.
  837. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  838. DEFINE BUFFER bViperDoc FOR ViperDoc.
  839. FIND ASMutation NO-LOCK
  840. WHERE RECID(ASMutation) = ipRecid.
  841. ASSIGN
  842. cRuester = ASMutation.cFeld_2
  843. iAufnr = ASMutation.iKey_1
  844. iRuestArt = ASMutation.iKey_2
  845. Firma = ASMutation.Firma.
  846. FIND Aufko NO-LOCK USE-INDEX Aufko-k1
  847. WHERE Aufko.Firma = Firma
  848. AND Aufko.Aufnr = iAufnr NO-ERROR.
  849. IF NOT AVAILABLE Aufko THEN RETURN ''.
  850. EMPTY TEMP-TABLE tParam.
  851. CREATE tParam.
  852. FIND Steuer NO-LOCK
  853. WHERE Steuer.Firma = Firma.
  854. ASSIGN
  855. iRuestArt = Steuer.RuestArt.
  856. ASSIGN
  857. tParam.cFirma = Aufko.Firma
  858. tParam.iRecid = RECID(Aufko)
  859. tParam.iAufnr = iAufnr
  860. tParam.iKnr = Aufko.Knr
  861. tParam.iFak_Knr = Aufko.Fak_Knr
  862. tParam.iFakArt = Aufko.Fak_Art
  863. tParam.iAufSta = Aufko.Auf_Sta
  864. tParam.cBenutzer = DYNAMIC-FUNCTION('getBenutzer':U)
  865. tParam.cDBUser = DYNAMIC-FUNCTION('getDBUser':U)
  866. tParam.cWinUser = DYNAMIC-FUNCTION('getSysUser':U)
  867. tParam.cInstall = DYNAMIC-FUNCTION('getInstallation':U)
  868. tParam.lPreis = FALSE
  869. tParam.lBatch = TRUE
  870. tParam.Programm = ''.
  871. IF ASMutation.iFeld_1 = 1 THEN
  872. DO: /* Abschluss (Ablieferung Fahrer) */
  873. ASSIGN
  874. tParam.cBenutzer = 'Fahrer'
  875. tParam.cDBUser = 'Fahrer'
  876. tParam.cWinUser = 'Fahrer'.
  877. END.
  878. IF Aufko.AlsOfferte THEN RETURN 'Error;Offerte'.
  879. FIND FIRST Tabel NO-LOCK
  880. WHERE Tabel.Firma = tParam.cFirma
  881. AND Tabel.RecArt = 'FAKART'
  882. AND Tabel.CodeI = Aufko.Fak_Art NO-ERROR.
  883. IF NOT AVAILABLE Tabel THEN RETURN ''.
  884. tParam.cDokument = Tabel.Bez2.
  885. lSammFak = (IF Tabel.Int_3 = 4 THEN TRUE ELSE FALSE).
  886. IF lSammFak THEN RETURN 'Error;Sammelrechnung'.
  887. iVDRecid = ?.
  888. DO ix = 1 TO 3:
  889. CASE ix:
  890. WHEN 1 THEN
  891. cUser = tParam.cBenutzer.
  892. WHEN 2 THEN
  893. cUser = tParam.cDBUser.
  894. WHEN 3 THEN
  895. cUser = tParam.cWinUser.
  896. END CASE.
  897. FIND FIRST ViperDoc NO-LOCK
  898. WHERE ViperDoc.Firma = Aufko.Firma
  899. AND ViperDoc.Benutzer = cUser
  900. AND ViperDoc.Formular = tParam.cDokument
  901. AND ViperDoc.DokArt = 0 NO-ERROR.
  902. IF AVAILABLE ViperDoc THEN
  903. DO:
  904. iVDRecid = RECID(ViperDoc).
  905. LEAVE.
  906. END.
  907. END.
  908. DO WHILE iVDRecid = ?:
  909. FIND FIRST ViperDoc NO-LOCK
  910. WHERE ViperDoc.Firma = Aufko.Firma
  911. AND ViperDoc.Formular = tParam.cDokument
  912. AND ViperDoc.DokArt = 0 NO-ERROR.
  913. IF NOT AVAILABLE ViperDoc THEN RETURN ''.
  914. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  915. CREATE bViperDoc.
  916. BUFFER-COPY ViperDoc
  917. EXCEPT Benutzer
  918. TO bViperDoc
  919. ASSIGN
  920. bViperDoc.Benutzer = tParam.cBenutzer.
  921. iVDRecid = RECID(bViperDoc).
  922. RELEASE bViperDoc.
  923. RELEASE ViperDoc.
  924. LEAVE.
  925. END.
  926. LEAVE.
  927. END.
  928. FIND ViperDoc NO-LOCK WHERE RECID(ViperDoc) = iVDRecid.
  929. ASSIGN
  930. tParam.iVDRecid = iVDRecid
  931. tParam.Programm = ViperDoc.Programm
  932. tParam.Anzahl = ViperDoc.Anzahl
  933. tParam.Drucker = ViperDoc.Drucker
  934. tParam.lCreatePDF = ViperDoc.lCreatePDF
  935. tParam.lDokDruck = ViperDoc.lDokDruck
  936. tParam.lSendMail = FALSE.
  937. RELEASE Aufko.
  938. RELEASE ViperDoc.
  939. RELEASE Tabel.
  940. cDruckProgramm = SUBSTITUTE('DruckProgramme/&1/&2', tParam.cInstall, tParam.Programm ).
  941. cDruckProgramm = SEARCH(cDruckProgramm).
  942. IF cDruckProgramm = ? THEN RETURN 'ERROR;Fehler! Kein Programm für den Ausdruck gefunden'.
  943. cString = SUBSTITUTE('Programm &1 gestartet mit Aufnr &2, Benutzer &3',
  944. cDruckProgramm, tParam.iAufnr, tParam.cBenutzer).
  945. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cString ) NO-ERROR.
  946. RUN VALUE(cDruckProgramm) ( htParam, OUTPUT cResult ).
  947. IF cResult BEGINS 'ERROR' THEN RETURN cResult.
  948. IF ASMutation.iFeld_1 <> 1 THEN RETURN cResult.
  949. DO WHILE TRUE: /* Mailversand bei Nettokunden mit LS-Mailadresse */
  950. FIND FIRST tParam.
  951. FIND Aufko NO-LOCK
  952. WHERE Aufko.Firma = tParam.cFirma
  953. AND Aufko.Aufnr = tParam.iAufnr NO-ERROR.
  954. FIND FIRST Ansprech NO-LOCK
  955. WHERE Ansprech.Firma = AdFirma
  956. AND Ansprech.Knr = Aufko.Knr
  957. AND Ansprech.Lieferschein = TRUE NO-ERROR.
  958. IF NOT AVAILABLE Ansprech THEN LEAVE.
  959. FIND Debst NO-LOCK
  960. WHERE Debst.Firma = Aufko.Firma
  961. AND Debst.Knr = Aufko.Knr NO-ERROR.
  962. RUN FIND_PREISGRUPPE ( Debst.Preis_Grp, OUTPUT cString ) NO-ERROR.
  963. IF NUM-ENTRIES(cString, CHR(01)) < 4 THEN LEAVE.
  964. IF INTEGER(ENTRY(3, cString, CHR(01))) > 0 THEN LEAVE. /* 0 = Nettokunde (exkl. Mwst) */
  965. RUN SEND_MAIL ( Aufko.Knr, Aufko.Aufnr, Aufko.Lief_Datum, Ansprech.Mail, Ansprech.Sprcd ) NO-ERROR.
  966. RELEASE Aufko .
  967. RELEASE Ansprech.
  968. RELEASE Debst.
  969. LEAVE.
  970. END.
  971. RETURN cResult.
  972. END PROCEDURE.
  973. /* _UIB-CODE-BLOCK-END */
  974. &ANALYZE-RESUME
  975. &ENDIF
  976. &IF DEFINED(EXCLUDE-DRUCKEN_PALETTENDOKUMENT) = 0 &THEN
  977. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_PALETTENDOKUMENT Procedure
  978. PROCEDURE DRUCKEN_PALETTENSCHEIN:
  979. /*------------------------------------------------------------------------------*/
  980. /* Purpose: */
  981. /* Parameters: <none> */
  982. /* Notes: */
  983. /*------------------------------------------------------------------------------*/
  984. DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  985. DEFINE VARIABLE cRuester AS CHARACTER NO-UNDO.
  986. DEFINE VARIABLE iKopien AS INTEGER NO-UNDO.
  987. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  988. DEFINE VARIABLE iPlatz AS INTEGER NO-UNDO.
  989. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO.
  990. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  991. DEFINE VARIABLE cStockwerk AS CHARACTER INIT ';;;;;;;;;' NO-UNDO.
  992. DEFINE VARIABLE cDruckProgramm AS CHARACTER NO-UNDO.
  993. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  994. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  995. FIND ASMutation NO-LOCK
  996. WHERE RECID(ASMutation) = ipRecid.
  997. ASSIGN
  998. cRuester = ASMutation.cFeld_2
  999. iPlatz = ASMutation.iFeld_1
  1000. iKopien = ASMutation.iFeld_2
  1001. iAufnr = ASMutation.iKey_1
  1002. iRuestArt = ASMutation.iKey_2
  1003. Firma = ASMutation.Firma.
  1004. FIND Aufko NO-LOCK USE-INDEX Aufko-k1
  1005. WHERE Aufko.Firma = Firma
  1006. AND Aufko.Aufnr = iAufnr NO-ERROR.
  1007. IF NOT AVAILABLE Aufko THEN RETURN ''.
  1008. cDruckart = 'Palettenschein.r'.
  1009. cDruckProgramm = DYNAMIC-FUNCTION('getDruckProgramm':U) NO-ERROR.
  1010. IF cDruckProgramm = '' THEN RETURN 'ERROR;Fehler! Kein Programm für den Ausdruck gefunden'.
  1011. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  1012. FIND LAST Tabel NO-LOCK
  1013. WHERE Tabel.Firma = Firma
  1014. AND Tabel.RecArt = 'wsPALETT'
  1015. AND Tabel.CodeC = ASMutation.cFeld_2
  1016. AND Tabel.Sprcd = 1 NO-ERROR.
  1017. IF NOT AVAILABLE Tabel THEN ix = 1.
  1018. ELSE ix = Tabel.CodeI + 1.
  1019. CREATE Tabel.
  1020. ASSIGN
  1021. Tabel.Firma = Firma
  1022. Tabel.RecArt = 'wsPALETT'
  1023. Tabel.CodeC = ASMutation.cFeld_2
  1024. Tabel.CodeI = ix
  1025. Tabel.Sprcd = 1
  1026. Tabel.Int_1 = iAufnr
  1027. Tabel.Int_2 = 2
  1028. Tabel.Int_3 = iRuestArt
  1029. Tabel.Dec_1 = iPlatz
  1030. Tabel.Dec_2 = (IF iKopien > 10 THEN 1 ELSE iKopien)
  1031. Tabel.Bez2 = cRuester.
  1032. iRecid = RECID(Tabel).
  1033. RELEASE Tabel.
  1034. LEAVE.
  1035. END.
  1036. cString = SUBSTITUTE('Programm &1/&2 gestartet mit Aufnr &3, Rüstart &4, Rüstplatz &5, Benutzer &6',
  1037. cDruckProgramm, 'wsPALETT', iAufnr, iRuestArt, iPlatz, cRuester).
  1038. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cString ) NO-ERROR.
  1039. RUN VALUE(cDruckProgramm) NO-ERROR.
  1040. RETURN RETURN-VALUE.
  1041. END PROCEDURE.
  1042. /* _UIB-CODE-BLOCK-END */
  1043. &ANALYZE-RESUME
  1044. &ENDIF
  1045. &IF DEFINED(EXCLUDE-DRUCKEN_RUESTSCHEIN) = 0 &THEN
  1046. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUESTSCHEIN Procedure
  1047. PROCEDURE DRUCKEN_RUESTSCHEIN:
  1048. /*------------------------------------------------------------------------------*/
  1049. /* Purpose: */
  1050. /* Parameters: <none> */
  1051. /* Notes: */
  1052. /*------------------------------------------------------------------------------*/
  1053. DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  1054. DEFINE VARIABLE iKopien AS INTEGER NO-UNDO.
  1055. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  1056. DEFINE VARIABLE iPlatz AS INTEGER NO-UNDO.
  1057. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO.
  1058. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  1059. DEFINE VARIABLE cStockwerk AS CHARACTER INIT ';;;;;;;;;' NO-UNDO.
  1060. DEFINE VARIABLE cDruckProgramm AS CHARACTER NO-UNDO.
  1061. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  1062. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  1063. DEFINE VARIABLE cStatus AS CHARACTER NO-UNDO.
  1064. FIND ASMutation NO-LOCK
  1065. WHERE RECID(ASMutation) = ipRecid.
  1066. ASSIGN
  1067. cBenutzer = ASMutation.cFeld_2
  1068. iAufnr = ASMutation.iKey_1
  1069. iRuestArt = ASMutation.iKey_2
  1070. Firma = ASMutation.Firma
  1071. cStatus = ASMutation.cFeld_3.
  1072. FIND Aufko NO-LOCK USE-INDEX Aufko-k1
  1073. WHERE Aufko.Firma = Firma
  1074. AND Aufko.Aufnr = iAufnr NO-ERROR.
  1075. IF NOT AVAILABLE Aufko THEN RETURN ''.
  1076. cDruckart = 'Auftragsschein.r'.
  1077. cDruckProgramm = DYNAMIC-FUNCTION('getDruckProgramm':U) NO-ERROR.
  1078. IF cDruckProgramm = '' THEN RETURN 'ERROR;Fehler! Kein Programm für den Ausdruck gefunden'.
  1079. REPEAT TRANSACTION:
  1080. FIND LAST Tabel NO-LOCK
  1081. WHERE Tabel.Firma = Firma
  1082. AND Tabel.RecArt = 'AUFDRUCK'
  1083. AND Tabel.CodeC = cBenutzer
  1084. AND Tabel.Sprcd = 1 NO-ERROR.
  1085. IF NOT AVAILABLE Tabel THEN ix = 1.
  1086. ELSE ix = Tabel.CodeI + 1.
  1087. CREATE Tabel.
  1088. ASSIGN
  1089. Tabel.Firma = Firma
  1090. Tabel.RecArt = 'AUFDRUCK'
  1091. Tabel.CodeC = cBenutzer
  1092. Tabel.CodeI = ix
  1093. Tabel.Sprcd = 1
  1094. Tabel.Int_1 = iAufnr
  1095. Tabel.Int_2 = 1
  1096. Tabel.Int_3 = iRuestArt
  1097. Tabel.Dec_1 = 0
  1098. Tabel.Dec_2 = 1
  1099. Tabel.Bez2 = cBenutzer
  1100. Tabel.Flag_3 = (IF ASMutation.cFeld_2 = 'TRIGGER' THEN FALSE ELSE TRUE).
  1101. iRecid = RECID(Tabel).
  1102. RELEASE Tabel.
  1103. LEAVE.
  1104. END.
  1105. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, ASMutation.cFeld_2 ) NO-ERROR.
  1106. cString = SUBSTITUTE('Programm &1 (Auftragspapier/Rüstschein) gestartet mit Aufnr &2, Rüstart &3, Benutzer &4',
  1107. cDruckProgramm, iAufnr, iRuestArt, cBenutzer).
  1108. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cString ) NO-ERROR.
  1109. REPEAT TRANSACTION:
  1110. RUN VALUE(cDruckProgramm) NO-ERROR.
  1111. LEAVE.
  1112. END.
  1113. RETURN RETURN-VALUE.
  1114. END PROCEDURE.
  1115. /* _UIB-CODE-BLOCK-END */
  1116. &ANALYZE-RESUME
  1117. &ENDIF
  1118. &IF DEFINED(EXCLUDE-REORG_ASMUTATION) = 0 &THEN
  1119. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_ASMUTATION Procedure
  1120. PROCEDURE REORG_ASMUTATION:
  1121. /*------------------------------------------------------------------------------*/
  1122. /* Purpose: */
  1123. /* Parameters: <none> */
  1124. /* Notes: */
  1125. /*------------------------------------------------------------------------------*/
  1126. cMessage = 'Reorg ASMutation gestartet'.
  1127. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  1128. FOR EACH ASMutation
  1129. WHERE ASMutation.Datum = ? TRANSACTION:
  1130. ASMutation.Datum = TODAY.
  1131. END.
  1132. FOR EACH ASMutation
  1133. WHERE ASMutation.Aktiv = FALSE
  1134. AND ASMutation.cStatus = 'E'
  1135. AND ASMutation.Datum < (TODAY - 30) TRANSACTION:
  1136. DELETE ASMutation.
  1137. END.
  1138. FOR EACH ASMutation
  1139. WHERE ASMutation.Aktiv = TRUE
  1140. AND ASMutation.cStatus <> ''
  1141. AND ASMutation.Datum < (TODAY - 30) TRANSACTION:
  1142. DELETE ASMutation.
  1143. END.
  1144. FOR EACH ASMutation
  1145. WHERE ASMutation.Aktiv = TRUE
  1146. AND ASMutation.cStatus <> '' TRANSACTION:
  1147. ASMutation.cStatus = ''.
  1148. END.
  1149. FOR EACH Tabel
  1150. WHERE Tabel.Firma = Firma
  1151. AND Tabel.RecArt = 'GERUEST':
  1152. FIND Aufko NO-LOCK
  1153. WHERE Aufko.Firma = Tabel.Firma
  1154. AND Aufko.Aufnr = Tabel.CodeI NO-ERROR.
  1155. IF AVAILABLE Aufko THEN NEXT.
  1156. DELETE Tabel.
  1157. END.
  1158. cMessage = 'Reorg ASMutation beendet'.
  1159. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  1160. END PROCEDURE.
  1161. /* _UIB-CODE-BLOCK-END */
  1162. &ANALYZE-RESUME
  1163. &ENDIF
  1164. &IF DEFINED(EXCLUDE-REORG_TABELLEN) = 0 &THEN
  1165. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_TABELLEN Procedure
  1166. PROCEDURE REORG_TABELLEN:
  1167. /*------------------------------------------------------------------------------*/
  1168. /* Purpose: */
  1169. /* Parameters: <none> */
  1170. /* Notes: */
  1171. /*------------------------------------------------------------------------------*/
  1172. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  1173. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO.
  1174. DEFINE BUFFER bRuestAuf FOR RuestAuf.
  1175. DEFINE BUFFER bTabel FOR Tabel.
  1176. cMessage = 'Reorg Tabellen gestartet'.
  1177. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  1178. iAnz = 0.
  1179. FOR EACH RuestAuf NO-LOCK
  1180. WHERE RuestAuf.Firma = Firma
  1181. AND iAnz < 100:
  1182. FIND Aufko NO-LOCK
  1183. WHERE Aufko.Firma = RuestAuf.Firma
  1184. AND Aufko.Aufnr = RuestAuf.Aufnr NO-ERROR.
  1185. IF AVAILABLE Aufko THEN NEXT.
  1186. FIND bRuestAuf WHERE RECID(bRuestAuf) = RECID(RuestAuf).
  1187. DELETE RuestAuf.
  1188. iAnz = iAnz + 1.
  1189. END.
  1190. RELEASE bRuestAuf.
  1191. FOR EACH Tabel NO-LOCK
  1192. WHERE Tabel.Firma = Firma
  1193. AND Tabel.RecArt = 'AUFDRUCK'
  1194. AND iAnz < 100:
  1195. iRecid = Tabel.Int_3.
  1196. FIND Aufko NO-LOCK WHERE RECID(Aufko) = iRecid NO-ERROR.
  1197. IF AVAILABLE Aufko THEN NEXT.
  1198. FIND bTabel WHERE RECID(bTabel) = RECID(Tabel) NO-ERROR.
  1199. IF AVAILABLE bTabel THEN DELETE bTabel.
  1200. iAnz = iAnz + 1.
  1201. END.
  1202. RELEASE bTabel.
  1203. cMessage = 'Reorg Tabellen beendet'.
  1204. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, cMessage ) NO-ERROR.
  1205. END PROCEDURE.
  1206. /* _UIB-CODE-BLOCK-END */
  1207. &ANALYZE-RESUME
  1208. &ENDIF
  1209. &IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
  1210. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure
  1211. PROCEDURE SEND_MAIL:
  1212. /*------------------------------------------------------------------------------*/
  1213. /* Purpose: */
  1214. /* Parameters: <none> */
  1215. /* Notes: */
  1216. /*------------------------------------------------------------------------------*/
  1217. DEFINE INPUT PARAMETER ipiKnr AS INTEGER NO-UNDO.
  1218. DEFINE INPUT PARAMETER ipiAufnr AS INTEGER NO-UNDO.
  1219. DEFINE INPUT PARAMETER ipdDatum AS DATE NO-UNDO.
  1220. DEFINE INPUT PARAMETER ipcMail AS CHARACTER NO-UNDO.
  1221. DEFINE INPUT PARAMETER ipiSprcd AS INTEGER NO-UNDO.
  1222. DEFINE VARIABLE cTo AS CHARACTER NO-UNDO.
  1223. DEFINE VARIABLE cCC AS CHARACTER NO-UNDO.
  1224. DEFINE VARIABLE cFrom AS CHARACTER NO-UNDO.
  1225. DEFINE VARIABLE lRetValue AS LOG NO-UNDO.
  1226. DEFINE VARIABLE cMeldung AS CHARACTER NO-UNDO.
  1227. DEFINE VARIABLE cSubject AS CHARACTER NO-UNDO.
  1228. DEFINE VARIABLE cBody AS CHARACTER NO-UNDO.
  1229. DEFINE VARIABLE lBody AS LONGCHAR NO-UNDO.
  1230. DEFINE VARIABLE cBodyName AS CHARACTER NO-UNDO.
  1231. DEFINE VARIABLE cPDFName AS CHARACTER NO-UNDO.
  1232. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  1233. FIND FIRST tParam.
  1234. cTo = ipcMail.
  1235. cBodyName = SUBSTITUTE ('DruckProgramme/&1/Mail-Lieferschein-&2.html', cInstallation, ipiSprcd ).
  1236. cPDFName = SUBSTITUTE (cMailVersandPathLS, STRING(ipiKnr,'999999'), STRING(ipiAufnr,'9999999'), 'Lieferschein').
  1237. IF cTo = '' THEN RETURN.
  1238. IF INDEX(cTo, '@') = 0 THEN RETURN.
  1239. /* cFrom = cMailFromLS.*/
  1240. cSubject = SUBSTITUTE('Lieferschein &1 vom &2', ipiAufnr, STRING(ipdDatum,'99.99.9999') ).
  1241. COPY-LOB FROM FILE cBodyName TO lBody.
  1242. cBody = lBody.
  1243. ii = 0.
  1244. FOR EACH Ansprech NO-LOCK
  1245. WHERE Ansprech.Firma = AdFirma
  1246. AND Ansprech.Knr = tParam.iKnr
  1247. AND Ansprech.Lieferschein = TRUE
  1248. AND Ansprech.Mail <> ''
  1249. AND INDEX(Ansprech.Mail, '@') > 0 :
  1250. ii = ii + 1.
  1251. IF ii = 1 THEN
  1252. DO:
  1253. cBody = SUBSTITUTE(cBody, Ansprech.BriefAnr ) NO-ERROR.
  1254. cTo = Ansprech.Mail.
  1255. END.
  1256. ELSE
  1257. DO:
  1258. cCC = cCC
  1259. + (IF cCC = '' THEN '' ELSE ';')
  1260. + Ansprech.Mail.
  1261. END.
  1262. END.
  1263. cCC = cCC
  1264. + (IF cCC = '' THEN '' ELSE ';')
  1265. + cMailCCLS.
  1266. RUN VALUE(cLogFileProg) ( cProgramm, cLogFile, SUBSTITUTE ('Mail in ASMutation From &1 TO &2 CC &3 &5 Subject &4 ', cFrom, cTo, cCC, cSubject ) ).
  1267. FIND FIRST ASMutation NO-LOCK
  1268. WHERE ASMutation.Firma = Firma
  1269. AND ASMutation.Aktiv = TRUE
  1270. AND ASMutation.cStatus = ''
  1271. AND ASMutation.MutArt = 'MAIL'
  1272. AND ASMutation.cKey_2 = cPDFName
  1273. AND ASMutation.Aktiv = TRUE
  1274. AND ASMutation.cStatus = '' NO-ERROR.
  1275. IF AVAILABLE ASMutation THEN RETURN cMeldung.
  1276. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  1277. CREATE ASMutation.
  1278. ASSIGN
  1279. ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
  1280. ASMutation.MutArt = 'MAIL'
  1281. ASMutation.Aktiv = TRUE
  1282. ASMutation.cStatus = ''
  1283. ASMutation.Datum = TODAY
  1284. ASMutation.Firma = tParam.cFirma
  1285. ASMutation.cFeld_1 = SUBSTITUTE('TO:&1;CC:&2', cTo, cCC)
  1286. ASMutation.cFeld_2 = cSubject
  1287. ASMutation.cFeld_3 = cBody
  1288. ASMutation.cKey_1 = ''
  1289. ASMutation.cKey_2 = cPDFName
  1290. ASMutation.cKey_3 = 'LIEFERSCHEIN'
  1291. ASMutation.iFeld_1 = TIME.
  1292. RELEASE ASMutation.
  1293. LEAVE.
  1294. END.
  1295. RETURN cMeldung.
  1296. END PROCEDURE.
  1297. /* _UIB-CODE-BLOCK-END */
  1298. &ANALYZE-RESUME
  1299. &ENDIF