batchDrucken.p 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  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. { super/funktionen.i }
  17. DEF VAR cUser AS CHAR NO-UNDO.
  18. DEF VAR cBenutzer AS CHAR NO-UNDO.
  19. DEF VAR cPasswort AS CHAR NO-UNDO.
  20. DEF VAR cFirma AS CHAR NO-UNDO.
  21. DEF VAR cLogName AS CHAR NO-UNDO.
  22. DEF VAR cParam AS CHAR NO-UNDO.
  23. DEF VAR Progname AS CHAR NO-UNDO.
  24. DEF VAR iJobNr AS INT NO-UNDO.
  25. DEF STREAM LogFile.
  26. /* _UIB-CODE-BLOCK-END */
  27. &ANALYZE-RESUME
  28. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  29. /* ******************** Preprocessor Definitions ******************** */
  30. &Scoped-define PROCEDURE-TYPE Procedure
  31. &Scoped-define DB-AWARE no
  32. /* _UIB-PREPROCESSOR-BLOCK-END */
  33. &ANALYZE-RESUME
  34. /* ************************ Function Prototypes ********************** */
  35. &IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
  36. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD writeLogFile Procedure
  37. FUNCTION writeLogFile RETURNS LOGICAL
  38. ( ipText AS CHAR ) FORWARD.
  39. /* _UIB-CODE-BLOCK-END */
  40. &ANALYZE-RESUME
  41. &ENDIF
  42. /* *********************** Procedure Settings ************************ */
  43. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  44. /* Settings for THIS-PROCEDURE
  45. Type: Procedure
  46. Allow:
  47. Frames: 0
  48. Add Fields to: Neither
  49. Other Settings: CODE-ONLY COMPILE
  50. */
  51. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  52. /* ************************* Create Window ************************** */
  53. &ANALYZE-SUSPEND _CREATE-WINDOW
  54. /* DESIGN Window definition (used by the UIB)
  55. CREATE WINDOW Procedure ASSIGN
  56. HEIGHT = 15
  57. WIDTH = 60.
  58. /* END WINDOW DEFINITION */
  59. */
  60. &ANALYZE-RESUME
  61. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
  62. /* *************************** Main Block *************************** */
  63. DEF VAR iTime AS INT NO-UNDO.
  64. DEF VAR iRecId AS RECID NO-UNDO.
  65. DEF VAR iTrnr AS INT INIT 0 NO-UNDO.
  66. DEF VAR lReorg AS LOG INIT FALSE NO-UNDO.
  67. DEF VAR iHH AS INT NO-UNDO.
  68. DEF VAR cCommand AS CHAR NO-UNDO.
  69. DEF VAR cString AS CHAR NO-UNDO.
  70. DEF VAR iAnzInstanz AS INT INIT 0 NO-UNDO.
  71. DEF VAR iMaxInstanz AS INT INIT 1 NO-UNDO.
  72. DEF VAR iAnzJobs AS INT NO-UNDO.
  73. DEF VAR iMaxJobs AS INT INIT 4 NO-UNDO.
  74. DEF VAR ii AS INT NO-UNDO.
  75. DEF VAR jj AS INT NO-UNDO.
  76. Progname = 'batchdrucken'.
  77. iJobNr = TIME.
  78. cLogName = SUBSTITUTE('&1BatchDrucken.Log', SESSION:TEMP-DIR ).
  79. cString = 'Start mit Parameter -> ' + SESSION:PARAMETER + ' in Logfile ' + cLogName.
  80. DYNAMIC-FUNCTION('writeLogFile':U, cString ) NO-ERROR.
  81. DO WHILE SESSION:PARAMETER <> '':
  82. cBenutzer = ENTRY(1, SESSION:PARAMETER, ';') NO-ERROR.
  83. cPasswort = ENTRY(2, SESSION:PARAMETER, ';') NO-ERROR.
  84. cFirma = ENTRY(3, SESSION:PARAMETER, ';') NO-ERROR.
  85. LEAVE.
  86. END.
  87. cParam = SUBSTITUTE('&1&4&2&4&3', cBenutzer, cPasswort, cFirma, CHR(01) ).
  88. RUN ANMELDUNG ( cParam ).
  89. RUN REORG_ASMUTATION.
  90. RUN REORG_TABELLEN.
  91. iTime = ETIME(TRUE).
  92. MAIN-BLOCK:
  93. REPEAT:
  94. FIND FIRST ASMutation NO-lOCK USE-INDEX ASMutation-k2
  95. WHERE ASMutation.Aktiv = TRUE
  96. AND ASMutation.asmutation_id > iTrnr
  97. AND ASMutation.cStatus = ''
  98. AND ASMutation.MutArt <> 'MAIL' NO-ERROR.
  99. IF NOT AVAILABLE ASMutation THEN DO:
  100. ASSIGN iTrnr = 0.
  101. iAnzInstanz = 0.
  102. IF (ETIME(FALSE) - iTime) >= 600000 THEN PAUSE 10 NO-MESSAGE.
  103. ELSE PAUSE 2 NO-MESSAGE.
  104. iHH = INTEGER(SUBSTRING(STRING(TIME,'HH:MM:SS'),01,02)).
  105. IF iHH <> 04 AND
  106. iHH <> 12 THEN lReorg = FALSE.
  107. IF lReorg THEN NEXT MAIN-BLOCK.
  108. RUN REORG_TABELLEN.
  109. RUN REORG_ASMUTATION.
  110. lReorg = TRUE.
  111. NEXT MAIN-BLOCK.
  112. END.
  113. REPEAT TRANSACTION:
  114. IF ASMutation.MutArt <> 'ENDE' THEN LEAVE.
  115. FIND CURRENT ASMutation.
  116. DELETE ASMutation.
  117. LEAVE MAIN-BLOCK.
  118. END.
  119. iTime = ETIME(TRUE).
  120. iTrnr = ASMutation.asmutation_id.
  121. iAnzJobs = 0.
  122. FOR EACH ASMutation NO-LOCK
  123. WHERE ASMutation.Aktiv = TRUE
  124. AND ASMutation.cStatus = 'A'
  125. AND ASMutation.Datum >= TODAY - 1
  126. AND ASMutation.MutArt <> 'MAIL' :
  127. iAnzJobs = iAnzJobs + 1.
  128. END.
  129. IF iAnzJobs >= iMaxJobs THEN NEXT.
  130. IF iAnzInstanz < iMaxInstanz THEN DO:
  131. iAnzInstanz = iAnzInstanz + 1.
  132. cCommand = 'C:\windows\system32\schtasks /run /tn "DruckenAuftragsPapiere" '.
  133. DYNAMIC-FUNCTION('writeLogFile':U, cCommand ) NO-ERROR.
  134. OS-COMMAND SILENT VALUE(cCommand).
  135. PAUSE 2 NO-MESSAGE.
  136. END.
  137. DO WHILE iAnzJobs > 0:
  138. PAUSE 10 NO-MESSAGE.
  139. ii = 0.
  140. FOR EACH ASMutation NO-LOCK
  141. WHERE ASMutation.Aktiv = TRUE
  142. AND ASMutation.cStatus = 'A'
  143. AND ASMutation.Datum = TODAY - 1
  144. AND ASMutation.MutArt <> 'MAIL' :
  145. ii = ii + 1.
  146. END.
  147. IF ii = 0 THEN LEAVE.
  148. IF ii = iAnzJobs THEN jj = jj + 1.
  149. IF jj = 10 THEN DO: /* Immer die gleiche Anzahl aktiver Jobs = "Hängende" */
  150. RUN REORG_ASMUTATION.
  151. RUN REORG_TABELLEN.
  152. iAnzInstanz = iAnzInstanz - 1.
  153. LEAVE.
  154. END.
  155. END.
  156. iTrnr = 0.
  157. END.
  158. QUIT.
  159. /* _UIB-CODE-BLOCK-END */
  160. &ANALYZE-RESUME
  161. /* ********************** Internal Procedures *********************** */
  162. &IF DEFINED(EXCLUDE-REORG_ASMUTATION) = 0 &THEN
  163. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_ASMUTATION Procedure
  164. PROCEDURE REORG_ASMUTATION :
  165. /*------------------------------------------------------------------------------
  166. Purpose:
  167. Parameters: <none>
  168. Notes:
  169. ------------------------------------------------------------------------------*/
  170. DEF VAR aRecid AS RECID NO-UNDO.
  171. DEF BUFFER bASMut FOR ASMutation.
  172. FOR EACH ASMutation NO-LOCK
  173. WHERE ASMutation.Aktiv = FALSE
  174. AND ASMutation.cStatus = 'E'
  175. AND ASMutation.Datum < (TODAY - 7) TRANSACTION:
  176. aRecid = RECID(ASMutation).
  177. FIND bASMut EXCLUSIVE-LOCK WHERE RECID(bASMut) = aRecid NO-WAIT NO-ERROR.
  178. IF LOCKED bASMut THEN NEXT.
  179. DELETE bASMut.
  180. END.
  181. FOR EACH ASMutation NO-LOCK
  182. WHERE ASMutation.Aktiv = TRUE
  183. AND ASMutation.cStatus <> ''
  184. AND ASMutation.Datum < (TODAY - 7) TRANSACTION:
  185. aRecid = RECID(ASMutation).
  186. FIND bASMut EXCLUSIVE-LOCK WHERE RECID(bASMut) = aRecid NO-WAIT NO-ERROR.
  187. IF LOCKED bASMut THEN NEXT.
  188. DELETE bASMut.
  189. END.
  190. FOR EACH ASMutation NO-LOCK
  191. WHERE ASMutation.Aktiv = TRUE
  192. AND ASMutation.cStatus = 'A'
  193. AND ASMutation.Datum >= TODAY - 1 TRANSACTION:
  194. aRecid = RECID(ASMutation).
  195. FIND bASMut EXCLUSIVE-LOCK WHERE RECID(bASMut) = aRecid NO-WAIT NO-ERROR.
  196. IF LOCKED bASMut THEN NEXT.
  197. ASSIGN bASMut.cStatus = ''.
  198. END.
  199. FOR EACH Tabel
  200. WHERE Tabel.Firma = cFirma
  201. AND Tabel.RecArt = 'GERUEST':
  202. FIND Aufko NO-LOCK
  203. WHERE Aufko.Firma = Tabel.Firma
  204. AND Aufko.Aufnr = Tabel.CodeI NO-ERROR.
  205. IF AVAILABLE Aufko THEN NEXT.
  206. DELETE Tabel.
  207. END.
  208. END PROCEDURE.
  209. /* _UIB-CODE-BLOCK-END */
  210. &ANALYZE-RESUME
  211. &ENDIF
  212. &IF DEFINED(EXCLUDE-REORG_TABELLEN) = 0 &THEN
  213. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_TABELLEN Procedure
  214. PROCEDURE REORG_TABELLEN :
  215. /*------------------------------------------------------------------------------
  216. Purpose:
  217. Parameters: <none>
  218. Notes:
  219. ------------------------------------------------------------------------------*/
  220. DEF VAR iRecid AS RECID NO-UNDO.
  221. DEF VAR iAnz AS INT NO-UNDO.
  222. DEF BUFFER bRuestAuf FOR RuestAuf.
  223. DEF BUFFER bTabel FOR Tabel.
  224. iAnz = 0.
  225. FOR EACH RuestAuf NO-LOCK
  226. WHERE RuestAuf.Firma = cFirma
  227. AND iAnz < 100:
  228. FIND Aufko NO-LOCK
  229. WHERE Aufko.Firma = RuestAuf.Firma
  230. AND Aufko.Aufnr = RuestAuf.Aufnr NO-ERROR.
  231. IF AVAILABLE Aufko THEN NEXT.
  232. FIND bRuestAuf WHERE RECID(bRuestAuf) = RECID(RuestAuf).
  233. DELETE RuestAuf.
  234. iAnz = iAnz + 1.
  235. END.
  236. RELEASE bRuestAuf.
  237. FOR EACH Tabel NO-LOCK
  238. WHERE Tabel.Firma = cFirma
  239. AND Tabel.RecArt = 'AUFDRUCK'
  240. AND iAnz < 100:
  241. iRecid = Tabel.Int_3.
  242. FIND Aufko NO-LOCK WHERE RECID(Aufko) = iRecid NO-ERROR.
  243. IF AVAILABLE Aufko THEN NEXT.
  244. FIND bTabel WHERE RECID(bTabel) = RECID(Tabel).
  245. DELETE bTabel.
  246. iAnz = iAnz + 1.
  247. END.
  248. RELEASE bTabel.
  249. END PROCEDURE.
  250. /* _UIB-CODE-BLOCK-END */
  251. &ANALYZE-RESUME
  252. &ENDIF
  253. /* ************************ Function Implementations ***************** */
  254. &IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
  255. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION writeLogFile Procedure
  256. FUNCTION writeLogFile RETURNS LOGICAL
  257. ( ipText AS CHAR ) :
  258. /*------------------------------------------------------------------------------
  259. Purpose:
  260. Notes:
  261. ------------------------------------------------------------------------------*/
  262. DEF VAR cTime AS CHAR NO-UNDO.
  263. DEF VAR iHH AS INT NO-UNDO.
  264. DEF VAR iMM AS INT NO-UNDO.
  265. DEF VAR iSS AS INT NO-UNDO.
  266. IF ipText = '' THEN RETURN FALSE.
  267. /*
  268. OUTPUT STREAM LogFile TO VALUE(cLogName) APPEND NO-MAP NO-CONVERT.
  269. PUT STREAM LogFile CONTROL '--> '
  270. STRING(TODAY,'99.99.9999')
  271. ' '
  272. STRING(TIME ,'HH:MM:SS')
  273. ' -> '
  274. ipText
  275. CHR(13) CHR(10).
  276. OUTPUT STREAM LogFile CLOSE.
  277. */
  278. cTime = STRING(TIME,'HH:MM:SS').
  279. iHH = INTEGER(SUBSTRING(cTime,01,02)).
  280. iMM = INTEGER(SUBSTRING(cTime,04,02)).
  281. iSS = INTEGER(SUBSTRING(cTime,07,02)).
  282. REPEAT TRANSACTION:
  283. CREATE LogDatei.
  284. ASSIGN LogDatei.Firma = cFirma
  285. LogDatei.Log_Id = NEXT-VALUE(Log_Id)
  286. LogDatei.JobId = iJobNr
  287. LogDatei.DatumZeit = DATETIME(MONTH(TODAY), DAY(TODAY), YEAR(TODAY), iHH, iMM, iSS, 0)
  288. LogDatei.LogProg = Progname
  289. LogDatei.LogText = ipText.
  290. RELEASE LogDatei.
  291. LEAVE.
  292. END.
  293. RETURN TRUE.
  294. END FUNCTION.
  295. /* _UIB-CODE-BLOCK-END */
  296. &ANALYZE-RESUME
  297. &ENDIF