|
|
@@ -246,12 +246,14 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
|
|
|
DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.
|
|
|
DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
|
|
|
DEFINE VARIABLE iIndex AS INTEGER NO-UNDO.
|
|
|
DEFINE VARIABLE cWordIndex AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE cField AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE hField AS HANDLE NO-UNDO.
|
|
|
DEFINE VARIABLE htField AS HANDLE NO-UNDO.
|
|
|
DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cFieldValue AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE rBuffer AS RECID NO-UNDO.
|
|
|
DEFINE VARIABLE cUniqueWhere AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE hUniqueBuffer AS HANDLE NO-UNDO.
|
|
|
@@ -291,21 +293,20 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
|
|
|
CREATE BUFFER hBuffer FOR TABLE cFileName.
|
|
|
|
|
|
-/* CASE cFileName: */
|
|
|
-/* WHEN 'xxxxxxx' THEN */
|
|
|
-/* httTable::xxxxx_id = NEXT-VALUE(masterdata_id).*/
|
|
|
-/* END CASE. */
|
|
|
-// MESSAGE httTable::xxxxx_id.
|
|
|
+ /* CASE cFileName: */
|
|
|
+ /* WHEN 'xxxxxxx' THEN */
|
|
|
+ /* httTable::xxxxx_id = NEXT-VALUE(masterdata_id).*/
|
|
|
+ /* END CASE. */
|
|
|
|
|
|
createUniqueWhere(
|
|
|
INPUT httTable,
|
|
|
- OUTPUT cWhere
|
|
|
+ OUTPUT cUniqueWhere
|
|
|
).
|
|
|
- cUniqueWhere = cWhere.
|
|
|
+ cWhere = cUniqueWhere.
|
|
|
|
|
|
lRetVal = FALSE.
|
|
|
REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
|
|
|
- lOK = hBuffer:FIND-UNIQUE(cWhere) NO-ERROR.
|
|
|
+ lOK = hBuffer:FIND-UNIQUE(cUniqueWhere, NO-LOCK) NO-ERROR.
|
|
|
IF lOK THEN
|
|
|
DO:
|
|
|
outilitiesHandler:createErrorBox(
|
|
|
@@ -332,15 +333,24 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
//
|
|
|
hBuffer:BUFFER-CREATE ().
|
|
|
DO ii = 1 TO httTable:NUM-FIELDS:
|
|
|
- hField = hBuffer:BUFFER-FIELD(ii):HANDLE NO-ERROR.
|
|
|
- IF ERROR-STATUS:ERROR OR
|
|
|
- NOT VALID-HANDLE(hField) THEN NEXT.
|
|
|
-
|
|
|
htField = httTable:BUFFER-FIELD(ii):HANDLE NO-ERROR.
|
|
|
+ cField = htField:NAME.
|
|
|
+ hField = hBuffer:BUFFER-FIELD(cField):HANDLE NO-ERROR.
|
|
|
IF ERROR-STATUS:ERROR OR
|
|
|
NOT VALID-HANDLE(hField) THEN NEXT.
|
|
|
|
|
|
- hField:BUFFER-VALUE = htField:BUFFER-VALUE.
|
|
|
+ IF hField:EXTENT > 0 THEN
|
|
|
+ DO:
|
|
|
+ cFieldValue = htField:BUFFER-VALUE.
|
|
|
+ DO i1 = 1 TO hField:EXTENT:
|
|
|
+ hField:BUFFER-VALUE(i1) = ENTRY(i1, cFieldValue, CHR(10)) NO-ERROR.
|
|
|
+ END.
|
|
|
+ END.
|
|
|
+ ELSE
|
|
|
+ DO:
|
|
|
+ IF htField:BUFFER-VALUE = hField:BUFFER-VALUE THEN NEXT.
|
|
|
+ hField:BUFFER-VALUE = htField:BUFFER-VALUE.
|
|
|
+ END.
|
|
|
END.
|
|
|
|
|
|
htField = hBuffer:BUFFER-FIELD('active'):HANDLE NO-ERROR.
|
|
|
@@ -350,6 +360,9 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
htField = hBuffer:BUFFER-FIELD('created_at'):HANDLE NO-ERROR.
|
|
|
IF NOT ERROR-STATUS:ERROR AND
|
|
|
VALID-HANDLE(htField) THEN htField:BUFFER-VALUE = NOW.
|
|
|
+ htField = hBuffer:BUFFER-FIELD('created_by'):HANDLE NO-ERROR.
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND
|
|
|
+ VALID-HANDLE(htField) THEN htField:BUFFER-VALUE = oJsonIdent:GetCharacter('H_display_name').
|
|
|
|
|
|
htField = hBuffer:BUFFER-FIELD('wordindex'):HANDLE NO-ERROR.
|
|
|
IF NOT ERROR-STATUS:ERROR AND
|
|
|
@@ -361,6 +374,7 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
htField:BUFFER-VALUE = cWordIndex.
|
|
|
END.
|
|
|
rBuffer = hBuffer:RECID.
|
|
|
+ oJsonIdent:ADD('rBuffer', INT64(rBuffer)) NO-ERROR.
|
|
|
|
|
|
hBuffer:BUFFER-RELEASE ().
|
|
|
|
|
|
@@ -381,11 +395,14 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
INPUT cFileName ,
|
|
|
OUTPUT cWhere
|
|
|
).
|
|
|
+ MESSAGE 'LAST cWhere =' cWHere.
|
|
|
outilitiesHandler:evaluatePageNumber(
|
|
|
INPUT-OUTPUT oJsonIdent ,
|
|
|
INPUT cWhere ,
|
|
|
INPUT rBuffer
|
|
|
- ).
|
|
|
+ ).
|
|
|
+
|
|
|
+ httTable:EMPTY-TEMP-TABLE ().
|
|
|
createTempTable(
|
|
|
INPUT oJsonIdent
|
|
|
).
|
|
|
@@ -398,7 +415,9 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
|
|
|
hUniqueBuffer:FIND-UNIQUE (cUniqueWhere, NO-LOCK) NO-ERROR.
|
|
|
outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE).
|
|
|
- oJsonIdent:SET('language_id', hUniqueBuffer::language_id).
|
|
|
+ hField = hUniqueBuffer:BUFFER-FIELD('language_id'):HANDLE NO-ERROR.
|
|
|
+ IF VALID-HANDLE(hField) AND
|
|
|
+ NOT ERROR-STATUS:ERROR THEN oJsonIdent:SET('language_id', hField:BUFFER-VALUE).
|
|
|
|
|
|
oselectboxHandler:getVariableSelectBoxes(
|
|
|
INPUT oJsonIdent ,
|
|
|
@@ -409,7 +428,8 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
lRetVal = TRUE.
|
|
|
LEAVE.
|
|
|
END.
|
|
|
- DELETE OBJECT hBuffer NO-ERROR.
|
|
|
+ DELETE OBJECT hBuffer NO-ERROR.
|
|
|
+ DELETE OBJECT hUniqueBuffer NO-ERROR.
|
|
|
|
|
|
IF lRetVal THEN
|
|
|
DO:
|
|
|
@@ -419,7 +439,8 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
INPUT '' ,
|
|
|
OUTPUT oJsonMessageBox
|
|
|
) NO-ERROR.
|
|
|
- oJsonReturn:ADD('showMessage' , oJsonMessageBox).
|
|
|
+ oJsonReturn:ADD('showMessage', oJsonMessageBox).
|
|
|
+ oJsonReturn:ADD('success', TRUE ).
|
|
|
RETURN lRetVal.
|
|
|
END.
|
|
|
|
|
|
@@ -479,6 +500,8 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
cttName = 'record'.
|
|
|
WHEN 'create' THEN
|
|
|
cttName = 'record'.
|
|
|
+ WHEN 'loaddataunique' THEN
|
|
|
+ cttName = 'record'.
|
|
|
OTHERWISE
|
|
|
cttName = 'records'.
|
|
|
END CASE.
|
|
|
@@ -491,11 +514,6 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
CASE httTable:BUFFER-FIELD(ii):NAME:
|
|
|
WHEN 'active' THEN
|
|
|
cSerializeName = 'active'.
|
|
|
-/* WHEN 'address' THEN */
|
|
|
-/* DO: */
|
|
|
-/* httTable:BUFFER-FIELD(ii):SERIALIZE-HIDDEN.*/
|
|
|
-/* NEXT. */
|
|
|
-/* END. */
|
|
|
OTHERWISE
|
|
|
cSerializeName = cFileName + '_' + httTable:BUFFER-FIELD(ii):NAME.
|
|
|
END CASE.
|
|
|
@@ -550,20 +568,23 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
OUTPUT oJsonReturn AS JsonObject
|
|
|
):
|
|
|
|
|
|
- DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
|
|
|
- DEFINE VARIABLE oJsonMessageBox AS JsonObject NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonMessageBox AS JsonObject NO-UNDO.
|
|
|
|
|
|
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
|
|
|
- DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.
|
|
|
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
- DEFINE VARIABLE hField AS HANDLE NO-UNDO.
|
|
|
- DEFINE VARIABLE htField AS HANDLE NO-UNDO.
|
|
|
- DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
|
|
|
- DEFINE VARIABLE rBuffer AS RECID NO-UNDO.
|
|
|
- DEFINE VARIABLE cQueryWhere AS CHARACTER NO-UNDO.
|
|
|
- DEFINE VARIABLE iAnzRecords AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
|
|
|
+ DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.
|
|
|
+ DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE hField AS HANDLE NO-UNDO.
|
|
|
+ DEFINE VARIABLE htField AS HANDLE NO-UNDO.
|
|
|
+ DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE rBuffer AS RECID NO-UNDO.
|
|
|
+ DEFINE VARIABLE cQueryWhere AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE iAnzRecords AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE oRecord AS JsonObject NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonSelectBoxes AS JsonObject NO-UNDO.
|
|
|
|
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
|
+ oselectboxHandler = NEW selectboxHandler().
|
|
|
|
|
|
httKeyFields = TEMP-TABLE ttKeyFields :DEFAULT-BUFFER-HANDLE.
|
|
|
httPrimaryIndex = TEMP-TABLE ttPrimaryIndex:DEFAULT-BUFFER-HANDLE.
|
|
|
@@ -596,24 +617,10 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
//
|
|
|
// Erzeugen von Where-Statement für UNIQUE-Find
|
|
|
//
|
|
|
- cWhere = ''.
|
|
|
- cString = 'WHERE'.
|
|
|
- FOR EACH ttPrimaryIndex NO-LOCK:
|
|
|
- hField = httTable:BUFFER-FIELD(ttPrimaryIndex.cFieldName):HANDLE.
|
|
|
- CASE ttPrimaryIndex.cDataType:
|
|
|
- WHEN 'character' THEN
|
|
|
- cValue = QUOTER(hField:BUFFER-VALUE).
|
|
|
- WHEN 'logical' THEN
|
|
|
- cValue = STRING(hField:BUFFER-VALUE,"true/false").
|
|
|
- WHEN 'date' THEN
|
|
|
- cValue = STRING(DATE(hField:BUFFER-VALUE)).
|
|
|
- OTHERWISE
|
|
|
- cValue = hField:BUFFER-VALUE.
|
|
|
- END CASE.
|
|
|
- cWhere = cWhere + cString
|
|
|
- + SUBSTITUTE(' &1.&2 = &3 ', ttPrimaryIndex.cFileName, ttPrimaryIndex.cFieldName, cValue).
|
|
|
- cString = 'AND'.
|
|
|
- END.
|
|
|
+ createUniqueWhere(
|
|
|
+ INPUT httTable,
|
|
|
+ OUTPUT cWhere
|
|
|
+ ).
|
|
|
|
|
|
lRetVal = FALSE.
|
|
|
REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
|
|
|
@@ -658,6 +665,9 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
hField = hBuffer:BUFFER-FIELD('updated_at'):HANDLE NO-ERROR.
|
|
|
IF NOT ERROR-STATUS:ERROR AND
|
|
|
VALID-HANDLE(hField) THEN hField:BUFFER-VALUE = NOW.
|
|
|
+ hField = hBuffer:BUFFER-FIELD('updated_by'):HANDLE NO-ERROR.
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND
|
|
|
+ VALID-HANDLE(hField) THEN hField:BUFFER-VALUE = oJsonIdent:GetCharacter('H_display_name').
|
|
|
|
|
|
httTable:BUFFER-COPY(hBuffer).
|
|
|
|
|
|
@@ -671,44 +681,44 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
lRetVal = hBuffer:BUFFER-DELETE ().
|
|
|
hBuffer:BUFFER-RELEASE ().
|
|
|
|
|
|
- IF iIndex > 0 THEN iIndex = iIndex - 1.
|
|
|
-
|
|
|
LEAVE.
|
|
|
END.
|
|
|
-
|
|
|
//
|
|
|
- // Anzahl Records in der Tabellenanzeige ermitteln
|
|
|
+ // Letzte Abfrage wiederholen und Temp-Tabelle füllen
|
|
|
//
|
|
|
outilitiesHandler:readLastcWhere(
|
|
|
INPUT oJsonIdent,
|
|
|
INPUT cFileName,
|
|
|
OUTPUT cQueryWhere) NO-ERROR.
|
|
|
outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE).
|
|
|
- cQueryWhere = REPLACE(cQueryWhere, 'FOR', 'PRESELECT').
|
|
|
+
|
|
|
+ httTable:EMPTY-TEMP-TABLE ().
|
|
|
+ createTempTable(
|
|
|
+ INPUT oJsonIdent
|
|
|
+ ).
|
|
|
+
|
|
|
+ fillTemptableFromTable(
|
|
|
+ INPUT oJsonIdent ,
|
|
|
+ INPUT cQueryWhere ,
|
|
|
+ OUTPUT oJsonReturn
|
|
|
+ ).
|
|
|
|
|
|
- CREATE QUERY hQuery.
|
|
|
- hQuery:SET-BUFFERS(hBuffer).
|
|
|
- hQuery:QUERY-PREPARE (cQueryWhere).
|
|
|
- hQuery:QUERY-OPEN ().
|
|
|
- iAnzRecords = hQuery:NUM-RESULTS.
|
|
|
- hQuery:QUERY-CLOSE ().
|
|
|
+ oRecords = NEW JsonArray().
|
|
|
+ oRecords = oJsonReturn:GetJsonArray('records').
|
|
|
+ oRecord = NEW JsonObject().
|
|
|
+ oRecord = oRecords:GetJsonObject(iIndex + 1).
|
|
|
|
|
|
+ oselectboxHandler:getVariableSelectBoxes(
|
|
|
+ INPUT oJsonIdent,
|
|
|
+ OUTPUT oJsonSelectBoxes
|
|
|
+ ).
|
|
|
+ IF VALID-OBJECT(oJsonSelectBoxes) THEN oJsonReturn:ADD('selectOptions', oJsonSelectBoxes).
|
|
|
LEAVE.
|
|
|
END.
|
|
|
|
|
|
IF lRetVal THEN
|
|
|
DO:
|
|
|
- oJsonReturn = NEW JsonObject().
|
|
|
oJsonReturn:ADD('success', TRUE).
|
|
|
-
|
|
|
- oJsonPosition = NEW JsonObject().
|
|
|
- oJsonPosition:ADD('page' , iStartPage ).
|
|
|
- oJsonPosition:ADD('index' , iIndex ).
|
|
|
- oJsonPosition:ADD('totalRecords', iAnzRecords).
|
|
|
-
|
|
|
- oJsonReturn:ADD('position', oJsonPosition).
|
|
|
- // oJsonReturn:WriteFile('C:\TEMP\adminprog_DELETE_Respons.json', TRUE).
|
|
|
-
|
|
|
RETURN lRetVal.
|
|
|
END.
|
|
|
|
|
|
@@ -755,12 +765,18 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
DEFINE VARIABLE cAddress AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
|
|
|
DEFINE VARIABLE cUniqueWHere AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE rBuffer AS RECID NO-UNDO.
|
|
|
|
|
|
DEFINE VARIABLE oRecords AS JsonArray NO-UNDO.
|
|
|
|
|
|
- iStartPage = 1.
|
|
|
- iMaxRecords = 25.
|
|
|
- cFileName = oJsonIdent:GetCharacter('file_name').
|
|
|
+ outilitiesHandler = NEW utilitiesHandler().
|
|
|
+ oselectboxHandler = NEW selectboxHandler().
|
|
|
+
|
|
|
+ iStartPage = 1.
|
|
|
+ iMaxRecords = 25.
|
|
|
+ iIndex = 0.
|
|
|
+ cFileName = oJsonIdent:GetCharacter('file_name').
|
|
|
+ rBuffer = (IF oJsonIdent:HAS('rBuffer') THEN oJsonIdent:GetInt64('rBuffer') ELSE ?).
|
|
|
//
|
|
|
// Manchmal kommen die Werte als Integer, manchmal als character
|
|
|
//
|
|
|
@@ -780,7 +796,6 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
//
|
|
|
// Für das Dynamische Query wird PRESELECT verwendet für die Pagination
|
|
|
//
|
|
|
-// MESSAGE '-> MaxRecords =' iMaxRecords SKIP 'Startpage =' iStartPage SKIP 'Index =' iIndex SKIP 'Startrecord =' iStartRecord.
|
|
|
cWhere = REPLACE(cWhere, 'FOR', 'PRESELECT').
|
|
|
CREATE QUERY hQuery.
|
|
|
CREATE BUFFER hBuffer FOR TABLE cFileName.
|
|
|
@@ -791,24 +806,28 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
hQuery:QUERY-OPEN ().
|
|
|
|
|
|
iTotalRecords = hQuery:NUM-RESULTS.
|
|
|
-// MESSAGE 'Total Query Result =' iTotalRecords.
|
|
|
hQuery:REPOSITION-FORWARD(iStartRecord - 1) NO-ERROR.
|
|
|
hQuery:GET-NEXT ().
|
|
|
iCurrentPosition = 0.
|
|
|
iAnzahlRecords = 0.
|
|
|
-// MESSAGE 'Start query mit StartRecord ' iStartRecord 'und cWhere ' cWhere.
|
|
|
+
|
|
|
DO WHILE NOT hQuery:QUERY-OFF-END:
|
|
|
IF iCurrentPosition = 0 THEN iCurrentPosition = iStartRecord.
|
|
|
iAnzahlRecords = iAnzahlRecords + 1.
|
|
|
httTable:BUFFER-CREATE().
|
|
|
httTable:BUFFER-COPY(hBuffer, 'address').
|
|
|
|
|
|
- hFeld = hBuffer:BUFFER-FIELD('address'):HANDLE.
|
|
|
- cAddress = ''.
|
|
|
- DO i1 = 1 TO hFeld:EXTENT:
|
|
|
- cAddress = cAddress + (IF i1 > 1 THEN CHR(10) ELSE '') + hFeld:BUFFER-VALUE(i1).
|
|
|
- END.
|
|
|
- httTable:BUFFER-FIELD('address'):BUFFER-VALUE = cAddress.
|
|
|
+ hFeld = hBuffer:BUFFER-FIELD('address'):HANDLE NO-ERROR.
|
|
|
+ IF VALID-HANDLE(hFeld) AND
|
|
|
+ NOT ERROR-STATUS:ERROR THEN
|
|
|
+ DO:
|
|
|
+ cAddress = ''.
|
|
|
+ DO i1 = 1 TO hFeld:EXTENT:
|
|
|
+ cAddress = cAddress + (IF i1 > 1 THEN CHR(10) ELSE '') + hFeld:BUFFER-VALUE(i1).
|
|
|
+ END.
|
|
|
+ httTable:BUFFER-FIELD('address'):BUFFER-VALUE = cAddress.
|
|
|
+ END.
|
|
|
+ IF rBuffer <> ? AND hBuffer:RECID = rBuffer THEN iIndex = iAnzahlRecords - 1.
|
|
|
IF iAnzahlRecords >= iMaxRecords THEN LEAVE.
|
|
|
hQuery:GET-NEXT ().
|
|
|
END.
|
|
|
@@ -830,7 +849,8 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
oJsonReturn:ADD('recordCount' , iAnzahlRecords).
|
|
|
oJsonReturn:ADD('currentIndex', iIndex ).
|
|
|
|
|
|
- IF iAnzahlRecords > 0 THEN
|
|
|
+ IF iAnzahlRecords > 0 AND
|
|
|
+ rBuffer = ? THEN
|
|
|
DO:
|
|
|
httTable:FIND-FIRST('', NO-LOCK) NO-ERROR.
|
|
|
createUniqueWhere(
|
|
|
@@ -843,7 +863,7 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
).
|
|
|
END.
|
|
|
|
|
|
-// oJsonReturn:WriteFile('C:\TEMP\addresses_getData_messages.json', TRUE).
|
|
|
+// oJsonReturn:WriteFile(SUBSTITUTE('C:\TEMP\adminprogs_fillTemptablefrom_table_&1.json', ETIME), TRUE).
|
|
|
|
|
|
lRetVal = (IF iAnzahlRecords = 0 THEN FALSE ELSE TRUE).
|
|
|
RETURN lRetVal.
|
|
|
@@ -880,6 +900,8 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
DEFINE VARIABLE cReplace AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE lNew AS LOGICAL NO-UNDO.
|
|
|
DEFINE VARIABLE iType AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cUniqueWhere AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cChangeAction AS CHARACTER NO-UNDO.
|
|
|
|
|
|
DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
|
|
|
|
|
|
@@ -888,7 +910,7 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
DEFINE VARIABLE oJsonArray AS JsonArray NO-UNDO.
|
|
|
|
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
|
-
|
|
|
+
|
|
|
httKeyFields = TEMP-TABLE ttKeyFields :DEFAULT-BUFFER-HANDLE.
|
|
|
httPrimaryIndex = TEMP-TABLE ttPrimaryIndex:DEFAULT-BUFFER-HANDLE.
|
|
|
//
|
|
|
@@ -903,7 +925,7 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
INPUT-OUTPUT httKeyFields ,
|
|
|
INPUT-OUTPUT httPrimaryIndex
|
|
|
).
|
|
|
-
|
|
|
+
|
|
|
cFunction = oJsonIdent:GetCharacter('function').
|
|
|
CREATE BUFFER hBuffer FOR TABLE cFileName.
|
|
|
|
|
|
@@ -913,21 +935,19 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
|
|
|
oJsonRecord = NEW JsonObject().
|
|
|
oJsonRecord = oJsonData:GetJsonObject('record').
|
|
|
- oJsonRecord:WriteFile('C:\TEMP\adminprogsHandler_JsonRecord.json', TRUE ).
|
|
|
|
|
|
httTable:BUFFER-CREATE().
|
|
|
- cReplace = SUBSTITUTE('&1_', cFileName).
|
|
|
+ cReplace = SUBSTITUTE('&1_', cFileName).
|
|
|
cFieldNames = oJsonRecord:GetNames().
|
|
|
-
|
|
|
DO ii = 1 TO EXTENT(cFieldNames):
|
|
|
cField = cFieldNames[ii].
|
|
|
- MESSAGE 'cField =' cField 'cFileName =' cFileName.
|
|
|
IF NOT cField BEGINS cFileName THEN NEXT.
|
|
|
cBufferField = REPLACE(cField, cReplace, '').
|
|
|
hField = httTable:BUFFER-FIELD(cBufferField):HANDLE NO-ERROR.
|
|
|
- lOk = outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE).
|
|
|
- IF lOk THEN NEXT.
|
|
|
-
|
|
|
+ IF ERROR-STATUS:ERROR THEN NEXT.
|
|
|
+ IF NOT VALID-HANDLE (hField) THEN NEXT.
|
|
|
+ IF hField:DATA-TYPE = 'date' THEN cValue = outilitiesHandler:iso2date(INPUT cValue).
|
|
|
+
|
|
|
iType = oJsonRecord:getType(cField).
|
|
|
CASE iType:
|
|
|
WHEN 2 THEN
|
|
|
@@ -950,33 +970,25 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
lOk = outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE).
|
|
|
IF lOk THEN NEXT.
|
|
|
END.
|
|
|
- httTable:WRITE-JSON ('FILE', 'C:\TEMP\ttTable_Inhalt.json', TRUE).
|
|
|
- oJsonData:WriteFile('C:\TEMP\adminprogshandler_getChanges.json', TRUE).
|
|
|
-
|
|
|
+// httTable:WRITE-JSON ('FILE', 'C:\TEMP\ttTable_Inhalt.json', TRUE).
|
|
|
//
|
|
|
// Erzeugen von Where-Statement für UNIQUE-Find
|
|
|
//
|
|
|
httTable:FIND-FIRST('', NO-LOCK) NO-ERROR.
|
|
|
- cWhere = ''.
|
|
|
- cString = 'WHERE'.
|
|
|
- FOR EACH ttPrimaryIndex NO-LOCK:
|
|
|
- hField = httTable:BUFFER-FIELD(ttPrimaryIndex.cFieldName):HANDLE.
|
|
|
- CASE ttPrimaryIndex.cDataType:
|
|
|
- WHEN 'character' THEN
|
|
|
- cValue = QUOTER(hField:BUFFER-VALUE).
|
|
|
- WHEN 'logical' THEN
|
|
|
- cValue = STRING(hField:BUFFER-VALUE,"true/false").
|
|
|
- WHEN 'date' THEN
|
|
|
- cValue = STRING(DATE(hField:BUFFER-VALUE)).
|
|
|
- OTHERWISE
|
|
|
- cValue = hField:BUFFER-VALUE.
|
|
|
- END CASE.
|
|
|
- cWhere = cWhere + cString
|
|
|
- + SUBSTITUTE(' &1.&2 = &3 ', ttPrimaryIndex.cFileName, ttPrimaryIndex.cFieldName, cValue).
|
|
|
- cString = 'AND'.
|
|
|
- END.
|
|
|
- lOK = hBuffer:FIND-UNIQUE(cWhere, NO-LOCK) NO-ERROR.
|
|
|
+ createUniqueWhere(
|
|
|
+ INPUT httTable,
|
|
|
+ OUTPUT cUniqueWhere
|
|
|
+ ).
|
|
|
+ cWhere = cUniqueWhere.
|
|
|
+
|
|
|
+ lOK = hBuffer:FIND-UNIQUE(cUniqueWhere, NO-LOCK) NO-ERROR.
|
|
|
IF NOT lOK THEN lNew = TRUE.
|
|
|
+
|
|
|
+ oJsonReturn = NEW JsonObject().
|
|
|
+ oJsonReturn:ADD('success', TRUE).
|
|
|
+
|
|
|
+ cChangeAction = oJsonIdent:GetCharacter('changeAction').
|
|
|
+
|
|
|
DO WHILE NOT lNew:
|
|
|
cField = oJsonData:GetCharacter('changedField').
|
|
|
cValue = oJsonData:GetCharacter('changedValue').
|
|
|
@@ -998,9 +1010,6 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
LEAVE.
|
|
|
END.
|
|
|
|
|
|
- oJsonReturn = NEW JsonObject().
|
|
|
- oJsonReturn:ADD('success', TRUE).
|
|
|
-
|
|
|
oJsonRecord = NEW JsonObject().
|
|
|
oJsonArray = NEW JsonArray ().
|
|
|
|
|
|
@@ -1026,85 +1035,84 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
OUTPUT oJsonReturn AS JsonObject
|
|
|
):
|
|
|
|
|
|
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
- DEFINE VARIABLE iAnzRec AS INTEGER NO-UNDO.
|
|
|
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
|
|
|
- DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.
|
|
|
- DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE iAnzRec AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
|
|
|
+ DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.
|
|
|
+ DEFINE VARIABLE cAddress AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
|
|
|
+ DEFINE VARIABLE cFormId AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cFormUser AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
|
|
|
|
|
|
- //DEFINE VARIABLE oRecords AS JsonArray NO-UNDO.
|
|
|
+ DEFINE VARIABLE oRecords AS JsonArray NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonEditable AS JsonArray NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonSelectBoxes AS JsonObject NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonMessageBox AS JsonObject NO-UNDO.
|
|
|
|
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
|
+ oselectboxHandler = NEW selectboxHandler().
|
|
|
|
|
|
cFunction = oJsonIdent:GetCharacter('function').
|
|
|
+ cCompany = oJsonIdent:GetCharacter('company').
|
|
|
+ cFileName = oJsonIdent:GetCharacter('file_name').
|
|
|
|
|
|
httKeyFields = TEMP-TABLE ttKeyFields :DEFAULT-BUFFER-HANDLE.
|
|
|
httPrimaryIndex = TEMP-TABLE ttPrimaryIndex:DEFAULT-BUFFER-HANDLE.
|
|
|
-
|
|
|
- IF cFunction <> 'rebuild' THEN
|
|
|
- DO:
|
|
|
- iIndex = 0.
|
|
|
- buildWhere(
|
|
|
- INPUT oJsonIdent
|
|
|
- ).
|
|
|
- END.
|
|
|
+// oJsonIdent:WriteFile('C:\Temp\adminprogs_getdata_jsoniden.json', TRUE).
|
|
|
+ iIndex = 0.
|
|
|
+ buildWhere(
|
|
|
+ INPUT oJsonIdent
|
|
|
+ ).
|
|
|
|
|
|
ii = 0.
|
|
|
iAnzRec = 0.
|
|
|
ttTable:EMPTY-TEMP-TABLE ().
|
|
|
CREATE QUERY hQuery.
|
|
|
- IF cFunction = 'loaddata' THEN
|
|
|
+ cWhere = SUBSTITUTE('FOR EACH &1 NO-LOCK &2 ', cFileName, cWhere) NO-ERROR.
|
|
|
+// MESSAGE 'cWhere loaddate for adminprogs ' cWhere.
|
|
|
+// oJsonIdent:WriteFile('C:\TEMP\adminprogs_getData_oJsonIdent.json', TRUE ).
|
|
|
+ IF NOT oJsonIdent:HAS('search') THEN
|
|
|
DO:
|
|
|
- cWhere = SUBSTITUTE('FOR EACH &1 NO-LOCK &2 ', cFileName, cWhere) NO-ERROR.
|
|
|
- IF NOT oJsonIdent:HAS('search') THEN
|
|
|
- DO:
|
|
|
- outilitiesHandler:writeLastcWhere(
|
|
|
- INPUT oJsonIdent ,
|
|
|
- INPUT cFileName ,
|
|
|
- INPUT cWhere
|
|
|
- ).
|
|
|
- END.
|
|
|
+ outilitiesHandler:writeLastcWhere(
|
|
|
+ INPUT oJsonIdent ,
|
|
|
+ INPUT cFileName ,
|
|
|
+ INPUT cWhere
|
|
|
+ ).
|
|
|
END.
|
|
|
//
|
|
|
// Für das Dynamische Query wird PRESELECT verwendet für die Pagination
|
|
|
//
|
|
|
- cWhere = REPLACE(cWhere, 'FOR', 'PRESELECT').
|
|
|
- hQuery:SET-BUFFERS (hBuffer) NO-ERROR.
|
|
|
- outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE).
|
|
|
- hQuery:QUERY-PREPARE (cWhere) NO-ERROR.
|
|
|
- outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE).
|
|
|
- hQuery:QUERY-OPEN ().
|
|
|
-
|
|
|
- ii = hQuery:NUM-RESULTS.
|
|
|
- hQuery:REPOSITION-FORWARD(iStartRecord - 1) NO-ERROR.
|
|
|
- hQuery:GET-NEXT ().
|
|
|
- iCurrentPosition = 0.
|
|
|
- // MESSAGE 'Start query mit StartRecord ' iStartRecord 'und cWhere ' cWhere.
|
|
|
- DO WHILE NOT hQuery:QUERY-OFF-END:
|
|
|
- IF iCurrentPosition = 0 THEN iCurrentPosition = iStartRecord.
|
|
|
- iAnzRec = iAnzRec + 1.
|
|
|
- httTable:BUFFER-CREATE().
|
|
|
- httTable:BUFFER-COPY(hBuffer).
|
|
|
- IF iAnzRec >= iMaxRecords THEN LEAVE.
|
|
|
- hQuery:GET-NEXT ().
|
|
|
+ lRetVal = fillTemptableFromTable(
|
|
|
+ INPUT oJsonIdent ,
|
|
|
+ INPUT cWhere ,
|
|
|
+ OUTPUT oJsonReturn
|
|
|
+ ).
|
|
|
+
|
|
|
+ IF NOT lRetVal THEN
|
|
|
+ DO:
|
|
|
+ outilitiesHandler:createInfoBox(
|
|
|
+ INPUT oJsonIdent ,
|
|
|
+ INPUT '2009' ,
|
|
|
+ INPUT '' ,
|
|
|
+ OUTPUT oJsonMessageBox
|
|
|
+ ).
|
|
|
+ oJsonReturn:ADD('success', FALSE).
|
|
|
+ oJsonReturn:ADD('showMessage', oJsonMessageBox).
|
|
|
+ RETURN lRetVal.
|
|
|
END.
|
|
|
- hQuery:QUERY-CLOSE ().
|
|
|
- DELETE OBJECT hQuery NO-ERROR.
|
|
|
- DELETE OBJECT hBuffer NO-ERROR.
|
|
|
-
|
|
|
- iPageCounter = ii / iMaxRecords.
|
|
|
- IF (iPageCounter * iMaxRecords) < ii THEN iPageCounter = iPageCounter + 1.
|
|
|
- // MESSAGE 'iAnzahl Records =' iAnzRec 'Pagecounter =' iPageCounter 'Max Records =' ii 'MaxRecords =' iMaxRecords.
|
|
|
- oRecords = NEW JsonArray().
|
|
|
- httTable:WRITE-JSON('JsonArray', oRecords).
|
|
|
-
|
|
|
- oJsonReturn = NEW JsonObject().
|
|
|
- oJsonReturn:ADD('records' , oRecords ).
|
|
|
- oJsonReturn:ADD('currentPage' , iStartPage ).
|
|
|
- oJsonReturn:ADD('maxRecords' , ii ).
|
|
|
- oJsonReturn:ADD('pageCount' , iPageCounter ).
|
|
|
- oJsonReturn:ADD('recordCount' , iAnzRec ).
|
|
|
- oJsonReturn:ADD('currentIndex', iIndex ).
|
|
|
+
|
|
|
+ lRetVal = httTable:FIND-FIRST('', NO-LOCK).
|
|
|
+ hFeld = httTable:BUFFER-FIELD('language_id'):HANDLE NO-ERROR.
|
|
|
+ IF VALID-HANDLE(hFeld) AND
|
|
|
+ NOT ERROR-STATUS:ERROR THEN oJsonIdent:SET('language_id', hFeld:BUFFER-VALUE).
|
|
|
+ oselectboxHandler:getVariableSelectBoxes(
|
|
|
+ INPUT oJsonIdent ,
|
|
|
+ OUTPUT oJsonSelectBoxes
|
|
|
+ ).
|
|
|
+ IF VALID-OBJECT(oJsonSelectBoxes) THEN oJsonReturn:ADD('selectOptions', oJsonSelectBoxes).
|
|
|
|
|
|
outilitiesHandler:writePosition(
|
|
|
INPUT oJsonIdent ,
|
|
|
@@ -1113,10 +1121,9 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
INPUT iStartPage ,
|
|
|
INPUT iMaxRecords
|
|
|
).
|
|
|
-
|
|
|
- // oJsonReturn:WriteFile('C:\TEMP\getData_messages.json', TRUE).
|
|
|
+// oJsonReturn:WriteFile('C:\TEMP\addresses_getData_messages.json', TRUE).
|
|
|
|
|
|
- lRetVal = TRUE.
|
|
|
+ lRetVal = TRUE.
|
|
|
RETURN lRetVal.
|
|
|
|
|
|
END METHOD.
|
|
|
@@ -1131,38 +1138,68 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
OUTPUT oJsonReturn AS JsonObject
|
|
|
):
|
|
|
|
|
|
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
|
|
|
- DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
|
|
|
- DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.
|
|
|
- DEFINE VARIABLE rBuffer AS RECID NO-UNDO.
|
|
|
+ DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
|
|
|
+ DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.
|
|
|
+ DEFINE VARIABLE rBuffer AS RECID NO-UNDO.
|
|
|
+ DEFINE VARIABLE iTotalRecords AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
|
|
|
+ DEFINE VARIABLE cAddress AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cUniqueWhere AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE hUniqueBuffer AS HANDLE NO-UNDO.
|
|
|
+
|
|
|
+ DEFINE VARIABLE oJsonSelectBoxes AS JsonObject NO-UNDO.
|
|
|
|
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
|
-
|
|
|
- cFileName = oJsonIdent:GetCharacter('file_name').
|
|
|
- iStartPage = 1.
|
|
|
- iMaxRecords = 25.
|
|
|
- IF oJsonIdent:HAS('limit') THEN iMaxRecords = INTEGER(oJsonIdent:GetCharacter('limit')) NO-ERROR.
|
|
|
- iStartRecord = ((iStartPage - 1) * iMaxRecords) + 1.
|
|
|
+ oselectboxHandler = NEW selectboxHandler().
|
|
|
|
|
|
+ cFileName = oJsonIdent:GetCharacter('file_name').
|
|
|
+ outilitiesHandler:readLastRecord(
|
|
|
+ INPUT oJsonIdent ,
|
|
|
+ OUTPUT cUniqueWhere
|
|
|
+ ).
|
|
|
+// MESSAGE 'cUniqueWhere fuer UNIQE-FIND' cUniqueWhere.
|
|
|
+ CREATE BUFFER hUniqueBuffer FOR TABLE cFileName.
|
|
|
+ hUniqueBuffer:FIND-UNIQUE (cUniqueWhere, NO-LOCK).
|
|
|
+ rBuffer = hUniqueBuffer:RECID.
|
|
|
+ oJsonIdent:ADD('rBuffer', INT64(rBuffer)).
|
|
|
+// MESSAGE hUniqueBuffer::address_id '-' rBuffer.
|
|
|
outilitiesHandler:readLastcWhere(
|
|
|
INPUT oJsonIdent,
|
|
|
INPUT cFileName ,
|
|
|
- OUTPUT cWhere).
|
|
|
-
|
|
|
- CREATE BUFFER hBuffer FOR TABLE cFileName.
|
|
|
-
|
|
|
+ OUTPUT cWhere
|
|
|
+ ).
|
|
|
+ outilitiesHandler:evaluatePageNumber(
|
|
|
+ INPUT-OUTPUT oJsonIdent ,
|
|
|
+ INPUT cWhere ,
|
|
|
+ INPUT rBuffer
|
|
|
+ ).
|
|
|
+// oJsonIdent:WriteFile('C:\TEMP\adminprog_rebuildData_JsonIdent.json', TRUE).
|
|
|
+// MESSAGE 'LAST-WHERE' cWhere.
|
|
|
+
|
|
|
createTempTable(
|
|
|
INPUT oJsonIdent
|
|
|
).
|
|
|
|
|
|
- oJsonIdent:SET('function', 'rebuild').
|
|
|
-
|
|
|
- lRetVal = getData(
|
|
|
- INPUT oJsonIdent ,
|
|
|
+ fillTemptableFromTable(
|
|
|
+ INPUT oJsonIdent ,
|
|
|
+ INPUT cWhere ,
|
|
|
OUTPUT oJsonReturn
|
|
|
).
|
|
|
|
|
|
+ hUniqueBuffer:FIND-UNIQUE (cUniqueWhere, NO-LOCK) NO-ERROR.
|
|
|
+ outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE).
|
|
|
+ oJsonIdent:SET('language_id', hUniqueBuffer::language_id).
|
|
|
+
|
|
|
+ oselectboxHandler:getVariableSelectBoxes(
|
|
|
+ INPUT oJsonIdent ,
|
|
|
+ OUTPUT oJsonSelectBoxes
|
|
|
+ ).
|
|
|
+ IF VALID-OBJECT(oJsonSelectBoxes) THEN oJsonReturn:ADD('selectOptions', oJsonSelectBoxes).
|
|
|
+
|
|
|
+ lRetVal = TRUE.
|
|
|
RETURN lRetVal.
|
|
|
|
|
|
END METHOD.
|
|
|
@@ -1172,6 +1209,114 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
Notes:
|
|
|
------------------------------------------------------------------------------*/
|
|
|
|
|
|
+ METHOD PUBLIC LOGICAL recordChange(
|
|
|
+ INPUT oJsonIdent AS JsonObject ,
|
|
|
+ INPUT oJsonData AS JsonObject ,
|
|
|
+ OUTPUT oJsonReturn AS JsonObject
|
|
|
+ ):
|
|
|
+
|
|
|
+ DEFINE VARIABLE cReplace AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cField AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cBufferField AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.
|
|
|
+ DEFINE VARIABLE cCompany AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cFormId AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cFormUser AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cUniqueWhere AS CHARACTER NO-UNDO.
|
|
|
+
|
|
|
+ DEFINE VARIABLE hField AS HANDLE NO-UNDO.
|
|
|
+
|
|
|
+ DEFINE VARIABLE oJsonRecord AS JsonObject NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonSelectBoxes AS JsonObject NO-UNDO.
|
|
|
+
|
|
|
+ outilitiesHandler = NEW utilitiesHandler().
|
|
|
+ oselectboxHandler = NEW selectboxHandler().
|
|
|
+
|
|
|
+ httKeyFields = TEMP-TABLE ttKeyFields :DEFAULT-BUFFER-HANDLE.
|
|
|
+ httPrimaryIndex = TEMP-TABLE ttPrimaryIndex:DEFAULT-BUFFER-HANDLE.
|
|
|
+ //
|
|
|
+ // Ermitteln des Tabellennamens, ob die Tabelle das Feld "company" und/oder das Feld "active" enthält
|
|
|
+ //
|
|
|
+ outilitiesHandler:evaluateFile(
|
|
|
+ INPUT-OUTPUT oJsonIdent ,
|
|
|
+ OUTPUT cFileName ,
|
|
|
+ OUTPUT lCompany ,
|
|
|
+ OUTPUT lActive ,
|
|
|
+ OUTPUT lWordindex ,
|
|
|
+ INPUT-OUTPUT httKeyFields ,
|
|
|
+ INPUT-OUTPUT httPrimaryIndex
|
|
|
+ ).
|
|
|
+
|
|
|
+ cFunction = oJsonIdent:GetCharacter('function').
|
|
|
+ cCompany = oJsonIdent:GetCharacter('company').
|
|
|
+ cFormId = oJsonIdent:GetCharacter('formId').
|
|
|
+ cFormUser = oJsonIdent:GetCharacter('formUser').
|
|
|
+
|
|
|
+ CREATE BUFFER hBuffer FOR TABLE cFileName.
|
|
|
+ createTempTable(
|
|
|
+ INPUT oJsonIdent
|
|
|
+ ).
|
|
|
+
|
|
|
+ oJsonRecord = NEW JsonObject().
|
|
|
+ oJsonRecord = oJsonData:GetJsonObject('record').
|
|
|
+// oJsonRecord:WriteFile('C:\Temp\oJsonRecord.json', TRUE).
|
|
|
+
|
|
|
+ httTable:READ-JSON('JsonObject', oJsonRecord) NO-ERROR.
|
|
|
+ outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE).
|
|
|
+
|
|
|
+// httTable:WRITE-JSON ('FILE', 'C:\TEMP\ttTable_RecordChange_Inhalt.json', TRUE).
|
|
|
+ //
|
|
|
+ // den ersten Datensatz in der TEMP-TABLE lesen
|
|
|
+ //
|
|
|
+ httTable:FIND-FIRST('', NO-LOCK) NO-ERROR.
|
|
|
+ hField = httTable:BUFFER-FIELD('language_id'):HANDLE NO-ERROR.
|
|
|
+ IF VALID-HANDLE(hField) AND
|
|
|
+ NOT ERROR-STATUS:ERROR THEN oJsonIdent:SET('language_id', httTable::language_id).
|
|
|
+ //
|
|
|
+ // Erzeugen von Where-Statement für UNIQUE-Find
|
|
|
+ //
|
|
|
+ createUniqueWhere(
|
|
|
+ INPUT httTable,
|
|
|
+ OUTPUT cUniqueWhere
|
|
|
+ ).
|
|
|
+// MESSAGE 'Where-Statement von Primary-Index =' cUniqueWhere.
|
|
|
+ outilitiesHandler:writeLastRecord(
|
|
|
+ INPUT oJsonIdent ,
|
|
|
+ INPUT cUniqueWhere
|
|
|
+ ).
|
|
|
+
|
|
|
+ outilitiesHandler:readLastcWhere(
|
|
|
+ INPUT oJsonIdent,
|
|
|
+ INPUT cFileName ,
|
|
|
+ OUTPUT cWhere ).
|
|
|
+// MESSAGE 'Filename =' cFileName 'Aktuelle Adress_Id =' httTable::address_id 'Last Where =' cWhere.
|
|
|
+ oJsonIdent:WRITE(lcString, TRUE).
|
|
|
+// MESSAGE 'oJsonIdent = ' STRING(lcString).
|
|
|
+ oselectboxHandler:getVariableSelectBoxes(
|
|
|
+ INPUT oJsonIdent ,
|
|
|
+ OUTPUT oJsonSelectBoxes
|
|
|
+ ).
|
|
|
+ lOk = TRUE.
|
|
|
+ oJsonReturn = NEW JsonObject().
|
|
|
+ oJsonReturn:ADD('success', lOK ).
|
|
|
+ oJsonReturn:ADD('record' , oJsonRecord).
|
|
|
+ IF VALID-OBJECT(oJsonSelectBoxes) THEN oJsonReturn:ADD('selectOptions', oJsonSelectBoxes).
|
|
|
+
|
|
|
+// oJsonReturn:WriteFile('C:\Temp\RecordChange_return.json', TRUE).
|
|
|
+
|
|
|
+ RETURN lOK.
|
|
|
+
|
|
|
+ END METHOD.
|
|
|
+
|
|
|
+ /*------------------------------------------------------------------------------
|
|
|
+ Purpose:
|
|
|
+ Notes:
|
|
|
+ ------------------------------------------------------------------------------*/
|
|
|
+
|
|
|
METHOD PUBLIC LOGICAL updateBegin(
|
|
|
INPUT oJsonIdent AS JsonObject ,
|
|
|
INPUT oJsonData AS JsonObject ,
|
|
|
@@ -1210,23 +1355,30 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
|
|
|
METHOD PUBLIC LOGICAL updateData(
|
|
|
INPUT oJsonIdent AS JsonObject,
|
|
|
- INPUT oJsonRecord AS jsonObject,
|
|
|
+ INPUT oJsonData AS jsonObject,
|
|
|
OUTPUT oJsonReturn AS JsonObject
|
|
|
):
|
|
|
|
|
|
- DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
|
|
|
- DEFINE VARIABLE oJsonMessageBox AS JsonObject NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonMessageBox AS JsonObject NO-UNDO.
|
|
|
|
|
|
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
|
|
|
- DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.
|
|
|
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
- DEFINE VARIABLE hField AS HANDLE NO-UNDO.
|
|
|
- DEFINE VARIABLE htField AS HANDLE NO-UNDO.
|
|
|
- DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
|
|
|
- DEFINE VARIABLE cWordIndex AS CHARACTER NO-UNDO.
|
|
|
- DEFINE VARIABLE rBuffer AS RECID NO-UNDO.
|
|
|
+ DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
|
|
|
+ DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.
|
|
|
+ DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
|
|
|
+ DEFINE VARIABLE hField AS HANDLE NO-UNDO.
|
|
|
+ DEFINE VARIABLE htField AS HANDLE NO-UNDO.
|
|
|
+ DEFINE VARIABLE CField AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cWordIndex AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE rBuffer AS RECID NO-UNDO.
|
|
|
+ DEFINE VARIABLE cUniqueWhere AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE cFieldValue AS CHARACTER NO-UNDO.
|
|
|
|
|
|
- DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
|
|
|
+ DEFINE VARIABLE oJsonRecord AS JsonObject NO-UNDO.
|
|
|
+ DEFINE VARIABLE oMasterKeyFields AS JsonObject NO-UNDO.
|
|
|
+
|
|
|
+ DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
|
|
|
|
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
|
|
|
|
@@ -1245,6 +1397,12 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
INPUT-OUTPUT httPrimaryIndex
|
|
|
).
|
|
|
|
|
|
+ oJsonRecord = NEW JsonObject().
|
|
|
+ oJsonRecord = oJsonData:GetJsonObject('record') NO-ERROR.
|
|
|
+
|
|
|
+ oMasterKeyFields = NEW JsonObject().
|
|
|
+ oMasterKeyFields = oJsonData:GetJsonObject('masterKeyFields') NO-ERROR.
|
|
|
+
|
|
|
cFunction = oJsonIdent:GetCharacter('function').
|
|
|
CREATE BUFFER hBuffer FOR TABLE cFileName.
|
|
|
|
|
|
@@ -1259,39 +1417,27 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
//
|
|
|
// Erzeugen von Where-Statement für UNIQUE-Find
|
|
|
//
|
|
|
- cWhere = ''.
|
|
|
- cString = 'WHERE'.
|
|
|
- FOR EACH ttPrimaryIndex NO-LOCK:
|
|
|
- hField = httTable:BUFFER-FIELD(ttPrimaryIndex.cFieldName):HANDLE.
|
|
|
- CASE ttPrimaryIndex.cDataType:
|
|
|
- WHEN 'character' THEN
|
|
|
- cValue = QUOTER(hField:BUFFER-VALUE).
|
|
|
- WHEN 'logical' THEN
|
|
|
- cValue = STRING(hField:BUFFER-VALUE,"true/false").
|
|
|
- WHEN 'date' THEN
|
|
|
- cValue = STRING(DATE(hField:BUFFER-VALUE)).
|
|
|
- OTHERWISE
|
|
|
- cValue = hField:BUFFER-VALUE.
|
|
|
- END CASE.
|
|
|
- cWhere = cWhere + cString
|
|
|
- + SUBSTITUTE(' &1.&2 = &3 ', ttPrimaryIndex.cFileName, ttPrimaryIndex.cFieldName, cValue).
|
|
|
- cString = 'AND'.
|
|
|
- END.
|
|
|
+ createUniqueWhere(
|
|
|
+ INPUT httTable,
|
|
|
+ OUTPUT cUniqueWhere
|
|
|
+ ).
|
|
|
|
|
|
lRetVal = FALSE.
|
|
|
REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
|
|
|
- lOK = hBuffer:FIND-UNIQUE(cWhere, EXCLUSIVE-LOCK, NO-WAIT) NO-ERROR.
|
|
|
+ lOK = hBuffer:FIND-UNIQUE(cUniqueWhere, EXCLUSIVE-LOCK, NO-WAIT) NO-ERROR.
|
|
|
IF hBuffer:LOCKED THEN
|
|
|
DO:
|
|
|
- hBuffer:FIND-UNIQUE(cWhere, NO-LOCK) NO-ERROR.
|
|
|
+ hBuffer:FIND-UNIQUE(cUniqueWhere, NO-LOCK) NO-ERROR.
|
|
|
rBuffer = hBuffer:RECID.
|
|
|
outilitiesHandler:createLockMessage(
|
|
|
INPUT oJsonIdent,
|
|
|
INPUT rBuffer ,
|
|
|
OUTPUT oJsonMessageBox
|
|
|
).
|
|
|
- lcMessage = oJsonMessageBox:GetLongchar('message').
|
|
|
- LEAVE.
|
|
|
+ oJsonReturn = NEW JsonObject().
|
|
|
+ oJsonReturn:ADD('success' , FALSE ).
|
|
|
+ oJsonReturn:ADD('showMessage', oJsonMessageBox).
|
|
|
+ RETURN TRUE.
|
|
|
END.
|
|
|
IF NOT hBuffer:AVAILABLE THEN
|
|
|
DO:
|
|
|
@@ -1335,17 +1481,32 @@ CLASS admin.adminprogsHandler FINAL:
|
|
|
END.
|
|
|
|
|
|
DO ii = 1 TO httTable:NUM-FIELDS:
|
|
|
- hField = hBuffer:BUFFER-FIELD(ii):HANDLE NO-ERROR.
|
|
|
+ htField = httTable:BUFFER-FIELD(ii):HANDLE NO-ERROR.
|
|
|
+ cField = htField:NAME.
|
|
|
+ hField = hBuffer:BUFFER-FIELD(cField):HANDLE NO-ERROR.
|
|
|
+
|
|
|
IF ERROR-STATUS:ERROR OR
|
|
|
NOT VALID-HANDLE(hField) THEN NEXT.
|
|
|
- htField = httTable:BUFFER-FIELD(ii):HANDLE NO-ERROR.
|
|
|
- IF htField:BUFFER-VALUE = hField:BUFFER-VALUE THEN NEXT.
|
|
|
- hField:BUFFER-VALUE = htField:BUFFER-VALUE.
|
|
|
+ IF hField:EXTENT > 0 THEN
|
|
|
+ DO:
|
|
|
+ cFieldValue = htField:BUFFER-VALUE.
|
|
|
+ DO i1 = 1 TO hField:EXTENT:
|
|
|
+ hField:BUFFER-VALUE(i1) = ENTRY(i1, cFieldValue, CHR(10)) NO-ERROR.
|
|
|
+ END.
|
|
|
+ END.
|
|
|
+ ELSE
|
|
|
+ DO:
|
|
|
+ IF COMPARE(htField:BUFFER-VALUE, '=', hField:BUFFER-VALUE, 'CASE-SENSITIVE') THEN NEXT.
|
|
|
+ hField:BUFFER-VALUE = htField:BUFFER-VALUE.
|
|
|
+ END.
|
|
|
END.
|
|
|
|
|
|
hField = hBuffer:BUFFER-FIELD('updated_at'):HANDLE NO-ERROR.
|
|
|
IF NOT ERROR-STATUS:ERROR AND
|
|
|
VALID-HANDLE(hField) THEN hField:BUFFER-VALUE = NOW.
|
|
|
+ hField = hBuffer:BUFFER-FIELD('updated_by'):HANDLE NO-ERROR.
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND
|
|
|
+ VALID-HANDLE(hField) THEN hField:BUFFER-VALUE = oJsonIdent:GetCharacter('H_display_name').
|
|
|
|
|
|
hField = hBuffer:BUFFER-FIELD('wordindex'):HANDLE NO-ERROR.
|
|
|
IF NOT ERROR-STATUS:ERROR AND
|