CreateTempTableAusJson.p 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
  2. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
  3. USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
  4. DEFINE INPUT PARAMETER iplcJson AS LONGCHAR NO-UNDO.
  5. DEFINE OUTPUT PARAMETER opcMessage AS CHARACTER NO-UNDO.
  6. DEFINE OUTPUT PARAMETER oplRetVal AS LOGICAL NO-UNDO.
  7. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  8. DEFINE VARIABLE cField AS CHARACTER NO-UNDO.
  9. DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
  10. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
  11. DEFINE VARIABLE iStufe AS INTEGER NO-UNDO.
  12. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  13. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  14. DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
  15. DEFINE VARIABLE cNames AS CHARACTER EXTENT 100.
  16. DEFINE VARIABLE cFullName AS CHARACTER NO-UNDO.
  17. DEFINE VARIABLE iZeile AS INTEGER NO-UNDO.
  18. DEFINE VARIABLE lArray AS LOGICAL NO-UNDO.
  19. DEFINE VARIABLE lArrayBeginn AS LOGICAL NO-UNDO.
  20. DEFINE VARIABLE iArrayStufe AS INTEGER NO-UNDO.
  21. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  22. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO.
  23. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  24. DEFINE VARIABLE nKredTot AS DECIMAL NO-UNDO.
  25. DEFINE BUFFER bDebst FOR Debst.
  26. DEFINE BUFFER bAufko FOR Aufko.
  27. DEFINE TEMP-TABLE tTables
  28. FIELD iStufe AS INTEGER
  29. FIELD cFileName AS CHARACTER
  30. FIELD cFieldName AS CHARACTER
  31. FIELD cValue AS CHARACTER
  32. .
  33. DEFINE TEMP-TABLE tAufko LIKE Aufko.
  34. DEFINE TEMP-TABLE tAUfze LIKE Aufze.
  35. DEFINE VARIABLE htAufko AS HANDLE NO-UNDO.
  36. DEFINE VARIABLE htAufze AS HANDLE NO-UNDO.
  37. htAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
  38. htAufze = TEMP-TABLE tAufze:DEFAULT-BUFFER-HANDLE.
  39. { propertiesYBM.i }
  40. { funktionen.i }
  41. cString = iplcJson.
  42. RUN writeLogfile.r ( ENTRY(1, THIS-PROCEDURE:NAME, '.'), cLogFileName, (SUBSTITUTE('&1&2', CHR(10), cString))).
  43. ASSIGN
  44. iArrayStufe = 0
  45. lArray = FALSE
  46. lArrayBeginn = FALSE.
  47. DO ii = 1 TO NUM-ENTRIES(cString, CHR(10)):
  48. cZeile = TRIM(ENTRY(ii, cString, CHR(10) )).
  49. IF cZeile = ']' OR
  50. cZeile = '],' THEN
  51. DO:
  52. lArray = FALSE.
  53. iArrayStufe = 0.
  54. IF iStufe > 0 THEN iStufe = iStufe - 1.
  55. IF iStufe > 1 THEN cFileName = cNames[iStufe].
  56. NEXT.
  57. END.
  58. IF cZeile = CHR(125) OR
  59. cZeile = '},' THEN
  60. DO:
  61. IF lArray AND
  62. iStufe = iArrayStufe THEN NEXT.
  63. IF iStufe > 0 THEN iStufe = iStufe - 1.
  64. IF iStufe > 1 THEN cFileName = cNames[iStufe].
  65. NEXT.
  66. END.
  67. iPos = INDEX(cZeile, ':').
  68. IF iPos = 0 THEN NEXT.
  69. cValue = TRIM(SUBSTRING(cZeile, iPos + 1)).
  70. IF SUBSTRING(cValue, LENGTH(cValue),01) = ',' THEN cValue = SUBSTRING(cValue,01,LENGTH(cValue) - 1).
  71. cField = TRIM(REPLACE(ENTRY(1, cZeile, ':'), '"', '')).
  72. IF cValue = '[' THEN
  73. DO:
  74. lArray = TRUE.
  75. lArrayBeginn = TRUE.
  76. iStufe = iStufe + 1.
  77. iArrayStufe = iStufe.
  78. cFileName = cField.
  79. cNames[iStufe] = cFileName.
  80. NEXT.
  81. END.
  82. IF cValue = '' OR
  83. cValue = CHR(123) THEN
  84. DO:
  85. IF lArrayBeginn THEN
  86. DO:
  87. /* iTitel = iTitel + 1.*/
  88. lArrayBeginn = FALSE.
  89. NEXT.
  90. END.
  91. iStufe = iStufe + 1.
  92. cFileName = cField.
  93. cNames[iStufe] = cFileName.
  94. NEXT.
  95. END.
  96. IF cFileName = '' THEN
  97. DO:
  98. iStufe = iStufe + 1.
  99. cFileName = 'Auftrag'.
  100. cNames[iStufe] = cFileName.
  101. /* iTitel = iTitel + 1.*/
  102. END.
  103. lArrayBeginn = FALSE.
  104. cFullName = ''.
  105. DO ix = 1 TO iStufe:
  106. cFullName = cFullName
  107. + (IF cFullName = '' THEN '' ELSE ':')
  108. + cNames[ix].
  109. END.
  110. iZeile = iZeile + 1.
  111. CREATE tTables.
  112. ASSIGN
  113. tTables.iStufe = iZeile
  114. tTables.cFileName = cFullName
  115. tTables.cFieldName = cField
  116. tTables.cValue = cValue.
  117. END.
  118. opcMessage = ''.
  119. oplRetVal = TRUE.
  120. OUTPUT TO 'C:\LogFiles\YourBarMate\tTables.csv' NO-MAP NO-CONVERT.
  121. FOR EACH tTables BY tTables.iStufe BY tTables.cFileName BY tTables.cFieldName:
  122. EXPORT DELIMITER ';' tTables.
  123. END.
  124. OUTPUT CLOSE.
  125. opcMessage = ''.
  126. oplRetVal = FALSE.
  127. cString = SUBSTITUTE('&1&4&2&4&3', cYBMBenutzer, cYBMPassword, cYBMFirma, CHR(01)).
  128. RUN ANMELDUNG ( cString ) NO-ERROR.
  129. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  130. FIND FIRST tTables
  131. WHERE tTables.cFileName = 'Auftrag'
  132. AND tTables.cField = 'type' NO-ERROR.
  133. IF NOT AVAILABLE tTables OR
  134. tTables.cValue <> 'request-delivery' THEN
  135. DO:
  136. opcMessage = 'Request-Type "request-delivery" fehlt '.
  137. LEAVE.
  138. END.
  139. FIND FIRST tTables
  140. WHERE tTables.cFileName = 'Auftrag:data:customer'
  141. AND tTables.cField = 'id' NO-ERROR.
  142. IF NOT AVAILABLE tTables THEN
  143. DO:
  144. opcMessage = 'Kundennummer fehlt '.
  145. LEAVE.
  146. END.
  147. iKnr = INTEGER(tTables.cValue) NO-ERROR.
  148. FIND FIRST Debst NO-LOCK
  149. WHERE Debst.Firma = cYBMFirma
  150. AND Debst.Knr = iKnr NO-ERROR.
  151. IF NOT AVAILABLE Debst THEN
  152. DO:
  153. opcMessage = SUBSTITUTE('Kundennummer &1 nicht geefunden', iKnr).
  154. LEAVE.
  155. END.
  156. CREATE tAufko.
  157. ASSIGN
  158. tAufko.Firma = Debst.Firma
  159. tAufko.Aufnr = -1
  160. tAufko.Knr = iKnr
  161. tAufko.Abhol = FALSE
  162. tAufko.Lager = 0
  163. .
  164. htAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
  165. DYNAMIC-FUNCTION('fillAufko':U, 0, INPUT-OUTPUT htAufko ).
  166. FIND FIRST tAufko.
  167. tAufko.Aufnr = 0.
  168. FIND bDebst NO-LOCK
  169. WHERE bDebst.Firma = Debst.Firma
  170. AND bDebst.Knr = tAufko.Fak_Knr NO-ERROR.
  171. IF bDebst.Kred_Lim > 0 THEN
  172. DO:
  173. nKredTot = bDebst.Saldo.
  174. FOR EACH bAufko NO-LOCK
  175. WHERE bAufko.Firma = Firma
  176. AND bAufko.Fak_Knr = bDebst.Knr:
  177. nKredTot = nKredTot + bAufko.Auf_Tot.
  178. END.
  179. IF nKredTot >= bDebst.Kred_Lim THEN
  180. DO:
  181. opcMessage = SUBSTITUTE('Kreditlimite von &1 ist mit &2 überschritten', bDebst.Kred_Lim, nKredTot).
  182. LEAVE.
  183. END.
  184. END.
  185. RUN NUMMER_LOESEN ( 1, OUTPUT tAufko.Aufnr ) NO-ERROR.
  186. REPEAT TRANSACTION ON ERROR UNDO, RETRY:
  187. CREATE bAufko.
  188. BUFFER-COPY tAufko TO bAufko.
  189. RELEASE bAufko.
  190. LEAVE.
  191. END.
  192. LEAVE.
  193. END.
  194. /*
  195. DO ii = 1 TO 100 ON ERROR UNDO, NEXT:
  196. IF cNames[ii] = '' THEN LEAVE.
  197. MESSAGE cNames[ii] VALID-HANDLE(htTempTable[ii])
  198. VIEW-AS ALERT-BOX.
  199. htTable = htTempTable[ii].
  200. htTable:WRITE-XML('FILE', SUBSTITUTE('C:\LogFiles\ERP\&1.xml', cNames[ii]),
  201. TRUE, /* Formatted */
  202. "UTF-8", /* encoding */
  203. ?, /* schema-location */
  204. ?, /* write-xml-schema */
  205. ?, /* min-xmlschema */
  206. ?, /* write-before-image */
  207. TRUE). /* ommit-initial-values */
  208. END.
  209. */
  210. /*
  211. MESSAGE cString
  212. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  213. cNames = oJsonObject:GetNames().
  214. DO ii = 1 TO EXTENT(cNames):
  215. cFeld = oJsonObject:GetJsonText(cNames[ii]).
  216. MESSAGE cNames[ii] '/' cFeld
  217. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  218. END.
  219. oJsonObject:WRITE(cString, TRUE).
  220. MESSAGE cString
  221. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  222. */