USING Progress.Json.ObjectModel.JsonObject FROM PROPATH. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH. USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH. DEFINE INPUT PARAMETER iplcJson AS LONGCHAR NO-UNDO. DEFINE OUTPUT PARAMETER opcMessage AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER oplRetVal AS LOGICAL NO-UNDO. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO. DEFINE VARIABLE cField AS CHARACTER NO-UNDO. DEFINE VARIABLE cValue AS CHARACTER NO-UNDO. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO. DEFINE VARIABLE iStufe AS INTEGER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE iPos AS INTEGER NO-UNDO. DEFINE VARIABLE cNames AS CHARACTER EXTENT 100. DEFINE VARIABLE cFullName AS CHARACTER NO-UNDO. DEFINE VARIABLE iZeile AS INTEGER NO-UNDO. DEFINE VARIABLE lArray AS LOGICAL NO-UNDO. DEFINE VARIABLE lArrayBeginn AS LOGICAL NO-UNDO. DEFINE VARIABLE iArrayStufe AS INTEGER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO. DEFINE VARIABLE nKredTot AS DECIMAL NO-UNDO. DEFINE BUFFER bDebst FOR Debst. DEFINE BUFFER bAufko FOR Aufko. DEFINE TEMP-TABLE tTables FIELD iStufe AS INTEGER FIELD cFileName AS CHARACTER FIELD cFieldName AS CHARACTER FIELD cValue AS CHARACTER . DEFINE TEMP-TABLE tAufko LIKE Aufko. DEFINE TEMP-TABLE tAUfze LIKE Aufze. DEFINE VARIABLE htAufko AS HANDLE NO-UNDO. DEFINE VARIABLE htAufze AS HANDLE NO-UNDO. htAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE. htAufze = TEMP-TABLE tAufze:DEFAULT-BUFFER-HANDLE. { propertiesYBM.i } { funktionen.i } cString = iplcJson. RUN writeLogfile.r ( ENTRY(1, THIS-PROCEDURE:NAME, '.'), cLogFileName, (SUBSTITUTE('&1&2', CHR(10), cString))). ASSIGN iArrayStufe = 0 lArray = FALSE lArrayBeginn = FALSE. DO ii = 1 TO NUM-ENTRIES(cString, CHR(10)): cZeile = TRIM(ENTRY(ii, cString, CHR(10) )). IF cZeile = ']' OR cZeile = '],' THEN DO: lArray = FALSE. iArrayStufe = 0. IF iStufe > 0 THEN iStufe = iStufe - 1. IF iStufe > 1 THEN cFileName = cNames[iStufe]. NEXT. END. IF cZeile = CHR(125) OR cZeile = '},' THEN DO: IF lArray AND iStufe = iArrayStufe THEN NEXT. IF iStufe > 0 THEN iStufe = iStufe - 1. IF iStufe > 1 THEN cFileName = cNames[iStufe]. NEXT. END. iPos = INDEX(cZeile, ':'). IF iPos = 0 THEN NEXT. cValue = TRIM(SUBSTRING(cZeile, iPos + 1)). IF SUBSTRING(cValue, LENGTH(cValue),01) = ',' THEN cValue = SUBSTRING(cValue,01,LENGTH(cValue) - 1). cField = TRIM(REPLACE(ENTRY(1, cZeile, ':'), '"', '')). IF cValue = '[' THEN DO: lArray = TRUE. lArrayBeginn = TRUE. iStufe = iStufe + 1. iArrayStufe = iStufe. cFileName = cField. cNames[iStufe] = cFileName. NEXT. END. IF cValue = '' OR cValue = CHR(123) THEN DO: IF lArrayBeginn THEN DO: /* iTitel = iTitel + 1.*/ lArrayBeginn = FALSE. NEXT. END. iStufe = iStufe + 1. cFileName = cField. cNames[iStufe] = cFileName. NEXT. END. IF cFileName = '' THEN DO: iStufe = iStufe + 1. cFileName = 'Auftrag'. cNames[iStufe] = cFileName. /* iTitel = iTitel + 1.*/ END. lArrayBeginn = FALSE. cFullName = ''. DO ix = 1 TO iStufe: cFullName = cFullName + (IF cFullName = '' THEN '' ELSE ':') + cNames[ix]. END. iZeile = iZeile + 1. CREATE tTables. ASSIGN tTables.iStufe = iZeile tTables.cFileName = cFullName tTables.cFieldName = cField tTables.cValue = cValue. END. opcMessage = ''. oplRetVal = TRUE. OUTPUT TO 'C:\LogFiles\YourBarMate\tTables.csv' NO-MAP NO-CONVERT. FOR EACH tTables BY tTables.iStufe BY tTables.cFileName BY tTables.cFieldName: EXPORT DELIMITER ';' tTables. END. OUTPUT CLOSE. opcMessage = ''. oplRetVal = FALSE. cString = SUBSTITUTE('&1&4&2&4&3', cYBMBenutzer, cYBMPassword, cYBMFirma, CHR(01)). RUN ANMELDUNG ( cString ) NO-ERROR. REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FIND FIRST tTables WHERE tTables.cFileName = 'Auftrag' AND tTables.cField = 'type' NO-ERROR. IF NOT AVAILABLE tTables OR tTables.cValue <> 'request-delivery' THEN DO: opcMessage = 'Request-Type "request-delivery" fehlt '. LEAVE. END. FIND FIRST tTables WHERE tTables.cFileName = 'Auftrag:data:customer' AND tTables.cField = 'id' NO-ERROR. IF NOT AVAILABLE tTables THEN DO: opcMessage = 'Kundennummer fehlt '. LEAVE. END. iKnr = INTEGER(tTables.cValue) NO-ERROR. FIND FIRST Debst NO-LOCK WHERE Debst.Firma = cYBMFirma AND Debst.Knr = iKnr NO-ERROR. IF NOT AVAILABLE Debst THEN DO: opcMessage = SUBSTITUTE('Kundennummer &1 nicht geefunden', iKnr). LEAVE. END. CREATE tAufko. ASSIGN tAufko.Firma = Debst.Firma tAufko.Aufnr = -1 tAufko.Knr = iKnr tAufko.Abhol = FALSE tAufko.Lager = 0 . htAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE. DYNAMIC-FUNCTION('fillAufko':U, 0, INPUT-OUTPUT htAufko ). FIND FIRST tAufko. tAufko.Aufnr = 0. FIND bDebst NO-LOCK WHERE bDebst.Firma = Debst.Firma AND bDebst.Knr = tAufko.Fak_Knr NO-ERROR. IF bDebst.Kred_Lim > 0 THEN DO: nKredTot = bDebst.Saldo. FOR EACH bAufko NO-LOCK WHERE bAufko.Firma = Firma AND bAufko.Fak_Knr = bDebst.Knr: nKredTot = nKredTot + bAufko.Auf_Tot. END. IF nKredTot >= bDebst.Kred_Lim THEN DO: opcMessage = SUBSTITUTE('Kreditlimite von &1 ist mit &2 überschritten', bDebst.Kred_Lim, nKredTot). LEAVE. END. END. RUN NUMMER_LOESEN ( 1, OUTPUT tAufko.Aufnr ) NO-ERROR. REPEAT TRANSACTION ON ERROR UNDO, RETRY: CREATE bAufko. BUFFER-COPY tAufko TO bAufko. RELEASE bAufko. LEAVE. END. LEAVE. END. /* DO ii = 1 TO 100 ON ERROR UNDO, NEXT: IF cNames[ii] = '' THEN LEAVE. MESSAGE cNames[ii] VALID-HANDLE(htTempTable[ii]) VIEW-AS ALERT-BOX. htTable = htTempTable[ii]. htTable:WRITE-XML('FILE', SUBSTITUTE('C:\LogFiles\ERP\&1.xml', cNames[ii]), TRUE, /* Formatted */ "UTF-8", /* encoding */ ?, /* schema-location */ ?, /* write-xml-schema */ ?, /* min-xmlschema */ ?, /* write-before-image */ TRUE). /* ommit-initial-values */ END. */ /* MESSAGE cString VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. cNames = oJsonObject:GetNames(). DO ii = 1 TO EXTENT(cNames): cFeld = oJsonObject:GetJsonText(cNames[ii]). MESSAGE cNames[ii] '/' cFeld VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. END. oJsonObject:WRITE(cString, TRUE). MESSAGE cString VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. */