//eoperate Chargedata Interface // 09.03.2020 // Erweiterung 29.6.2019 //16. und 17.11.2021 Abschalten der Plausi Prüfung Anpassung auf setnull //20.09.2022 Anpassung User Felder Update und Insert Statements TS //04.05.2023 Anpassung Validation Felder //12.07.2023 Nur CUS Preiselemente //07.08.2023 Erweiterung Dezimalgenauigkeit Preise (EMPEPI1-296) + NOT_BILLABLE_REASON var ServiceVersion = "1.6"; var ParDebug = false; var output = {}; var outMessages = []; var outErrorMessages = []; var outMsg = {}; var outStatus = "success"; var myDebug = {}; var debugLevel = 0; switch ($.request.parameters.get("debug")) { case "true": case "yes": case "1": debugLevel = 1; break; case "full": case "2": debugLevel = 2; break; } if (debugLevel > 0) { output.requestParams = $.request.parameters; } function setOutputMessage() { output.status = outStatus; if (debugLevel > 0) { output.debugInfos = myDebug; } output.messages = outMessages; $.response.contentType = "application/json"; $.response.setBody(JSON.stringify(output)); //$.response.status = $.net.http.OK; } function roundTo(n, digits) { var negative = false; if (digits === undefined) { digits = 0; } if (n < 0) { negative = true; n = n * -1; } var multiplicator = Math.pow(10, digits); n = parseFloat((n * multiplicator).toFixed(11)); n = (Math.round(n) / multiplicator).toFixed(digits); if (negative) { n = (n * -1).toFixed(digits); } return n; } function checkBDRID(myBDRID) { var exists = false; var conn = $.db.getConnection(); var pstmt; var query = "select \"BDR_ID\" from \"EOPERATE\".\"CHARGEDATA\" where BDR_ID = ?"; pstmt = conn.prepareStatement(query); pstmt.setNString(1, myBDRID); var rs = pstmt.executeQuery(); if (rs.next()) { exists = true; } rs.close(); pstmt.close(); conn.close(); return exists; } /*function getnextval() { var conn = $.db.getConnection(); var pstmt; var query = "select \"EOPERATE\".\"SEQ_TRANSACTIONDATA_ID\".NEXTVAL from dummy"; pstmt = conn.prepareStatement(query); var rs = pstmt.executeQuery(); if (!rs.next()) { outMsg = {}; outMsg.method = "getnexval from sequence error"; outMsg.status = "error"; // outMsg.message = e.message; outMessages.push(outMsg); } else { return rs.getString(1); } rs.close(); pstmt.close(); conn.close(); }*/ function exceptionHandler(ex) { outMsg = {}; outMsg.method = "exceptionHandler"; outMsg.status = "error"; outMsg.message = ex.toString(); if (debugLevel > 0) { outMsg.exceptionInfo = {}; outMsg.exceptionInfo.name = ex.name; outMsg.exceptionInfo.message = ex.message; outMsg.exceptionInfo.fileName = ex.fileName; outMsg.exceptionInfo.lineNumber = ex.lineNumber; outMsg.exceptionInfo.columnNumber = ex.columnNumber; outMsg.exceptionInfo.stack = ex.stack; //outMsg.exceptionInfo.source = ex.toSource(); } outMessages.push(outMsg); outStatus = "error"; output.status = outStatus; if (debugLevel > 0) { output.debugInfos = myDebug; } output.messages = outMessages; var errbody = JSON.stringify(output); $.response.contentType = 'application/json'; $.response.setBody(errbody); $.response.status = $.net.http.INTERNAL_SERVER_ERROR; } function checkPayload(inObj) { var isValid = true; var reason = ""; try { var aCDR = JSON.parse(inObj); if (Array.isArray(aCDR)) { aCDR.forEach(function(cdrObj) { if (!cdrObj.hasOwnProperty('BDR_ID') || !cdrObj.hasOwnProperty('EMAID') || !cdrObj.hasOwnProperty('CREATION_DATE_UTC') || !cdrObj.hasOwnProperty( 'CHARGEPOINT') || !cdrObj.CHARGEPOINT.hasOwnProperty('ID') || !cdrObj.CHARGEPOINT.hasOwnProperty('TYPE') || !cdrObj.CHARGEPOINT.hasOwnProperty( 'METER_ID') || !cdrObj.CHARGEPOINT.hasOwnProperty('ADDRESS') || !cdrObj.CHARGEPOINT.ADDRESS.hasOwnProperty('COUNTRY') || !cdrObj.CHARGEPOINT .ADDRESS.hasOwnProperty('POSTALCODE') || !cdrObj.CHARGEPOINT.ADDRESS.hasOwnProperty('CITY') || !cdrObj.CHARGEPOINT.ADDRESS.hasOwnProperty( 'STREET') || !cdrObj.hasOwnProperty('CHARGEPOINT_OPERATOR') || !cdrObj.CHARGEPOINT_OPERATOR.hasOwnProperty('ID') || !cdrObj.CHARGEPOINT_OPERATOR .hasOwnProperty('NAME') || !cdrObj.hasOwnProperty('EMOBILITY_PROVIDER') || !cdrObj.EMOBILITY_PROVIDER.hasOwnProperty('ID') || !cdrObj .EMOBILITY_PROVIDER.hasOwnProperty('NAME') || !cdrObj.hasOwnProperty('CHARGE_DATA') || !cdrObj.CHARGE_DATA.hasOwnProperty( 'AUTHORIZATION_TYPE') || !cdrObj.CHARGE_DATA.hasOwnProperty('CONSUMPTION_KWH') || !cdrObj.CHARGE_DATA.hasOwnProperty('BEGIN_UTC') || !cdrObj.CHARGE_DATA.hasOwnProperty('END_UTC') || !cdrObj.CHARGE_DATA.hasOwnProperty('TIME_ZONE') || !cdrObj.hasOwnProperty('PRICING') || !cdrObj.PRICING.hasOwnProperty('ITEMS') || !Array.isArray(cdrObj.PRICING.ITEMS) ) { isValid = false; reason = " (mandatory properties are: BDR_ID, EMAID, CREATION_DATE_UTC, CHARGEPOINT.ID, CHARGEPOINT.TYPE, \ CHARGEPOINT.METER_ID, CHARGEPOINT.ADDRESS.COUNTRY, CHARGEPOINT.ADDRESS.POSTALCODE, CHARGEPOINT.ADDRESS.CITY, \ CHARGEPOINT.ADDRESS.COUNTRY, CHARGEPOINT_OPERATOR.ID, CHARGEPOINT_OPERATOR.NAME, EMOBILITY_PROVIDER.ID, \ EMOBILITY_PROVIDER.NAME, CHARGE_DATA.AUTHORIZATION_TYPE, CHARGE_DATA.CONSUMPTION_KWH, CHARGE_DATA.BEGIN_UTC, \ CHARGE_DATA.END_UTC, CHARGE_DATA.TIME_ZONE, PRICING.ITEMS[])"; } else { cdrObj.PRICING.ITEMS.forEach(function(pricingItem) { if (!pricingItem.hasOwnProperty('TYPE') || !pricingItem.hasOwnProperty('UNIT') || !pricingItem.hasOwnProperty('UNIT_PRICE') || ! pricingItem.hasOwnProperty('QUANTITY') || !pricingItem.hasOwnProperty('NET_AMOUNT') || !pricingItem.hasOwnProperty('CURRENCY') ) { isValid = false; reason = " (mandatory properties for PRICING.ITEMS Array are: TYPE, UNIT, UNIT_PRICE, QUANTITY, NET_AMOUNT, CURRENCY)"; } }); } }); } else { isValid = false; reason = " (payload is not an array)"; } } catch (e) { exceptionHandler(e); isValid = false; } if (!isValid) { outMsg = {}; outMsg.method = "checkPayload"; outMsg.status = "error"; outStatus = "error"; $.response.status = $.net.http.BAD_REQUEST; outMsg.message = "invalid payload structure" + reason; outMessages.push(outMsg); } return isValid; } function PutDataInTable() { outMsg = {}; outMsg.method = "saveData"; var pdcontent = $.request.body.asString(); // pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:"); var pdcdrObj = JSON.parse(pdcontent); var conn = $.db.getConnection(); var pstmt; var rs; var test; var query; var vals = {}; var data = []; var isUpdateMode = false; // var query2; // var output = {results: [] }; // var mynextval = getnextval(); // myDebug.mynextval = mynextval; try { var myBDRID = pdcdrObj[0].BDR_ID.toString(); isUpdateMode = checkBDRID(myBDRID); if (isUpdateMode) { // "UPDATE \"EOPERATE\".\"CHARGEDATA\" SET BDR_ID = ?,EMAID =? ,UNIQUE_ID = ?, CREATION_DATE_UTC = ?,CHARGEPOINT_ID= ?,CHARGEPOINT_TYPE= ?,CHARGEPOINT_METER_ID= ?,CHARGEPOINT_ADDRESS_COUNTRY= ?,CHARGEPOINT_ADDRESS_POSTALCODE= ?,CHARGEPOINT_ADDRESS_CITY= ?,CHARGEPOINT_ADDRESS_STREET= ?,CHARGEPOINT_OPERATOR_ID= ?,CHARGEPOINT_OPERATOR_NAME= ?,EMOBILITY_PROVIDER_ID= ?,EMOBILITY_PROVIDER_NAME= ?,CHARGE_DATA_AUTHORIZATION_TYPE= ?,CHARGE_DATA_CONSUMPTION_KWH= ?,CHARGE_DATA_BEGIN_UTC= ?,CHARGE_DATA_END_UTC= ?,CHARGE_DATA_TIME_ZONE= ?,CHARGE_DATA_EKA_STATUS= ?,PRICING_ITEMS_1_TYPE= ?,PRICING_ITEMS_1_UNIT= ?,PRICING_ITEMS_1_UNIT_PRICE= ?,PRICING_ITEMS_1_QUANTITY= ?,PRICING_ITEMS_1_NET_AMOUNT= ?,PRICING_ITEMS_1_CURRENCY= ?,PRICING_ITEMS_2_TYPE= ?,PRICING_ITEMS_2_UNIT= ?,PRICING_ITEMS_2_UNIT_PRICE= ?,PRICING_ITEMS_2_QUANTITY= ?,PRICING_ITEMS_2_NET_AMOUNT= ?,PRICING_ITEMS_2_CURRENCY= ?,PRICING_ITEMS_3_TYPE= ?,PRICING_ITEMS_3_UNIT= ?,PRICING_ITEMS_3_UNIT_PRICE= ?,PRICING_ITEMS_3_QUANTITY= ?,PRICING_ITEMS_3_NET_AMOUNT= ?,PRICING_ITEMS_3_CURRENCY= ?,PRICING_ITEMS_4_TYPE= ?,PRICING_ITEMS_4_UNIT= ?,PRICING_ITEMS_4_UNIT_PRICE= ?,PRICING_ITEMS_4_QUANTITY= ?,PRICING_ITEMS_4_NET_AMOUNT= ?,PRICING_ITEMS_4_CURRENCY= ?,SUBSCRIPTION_ID= ?,JSONRAW= ?,UPDATE_TS= CURRENT_TIMESTAMP,UPDATE_USER= CURRENT_USER)"; query = "UPDATE \"EOPERATE\".\"CHARGEDATA\" SET BDR_ID = ?,EMAID =? ,UNIQUE_ID = ?, CREATION_DATE_UTC = ?,CHARGEPOINT_ID= ?,CHARGEPOINT_TYPE= ?,CHARGEPOINT_METER_ID= ?,CHARGEPOINT_ADDRESS_COUNTRY= ?,CHARGEPOINT_ADDRESS_POSTALCODE= ?,CHARGEPOINT_ADDRESS_CITY= ?,CHARGEPOINT_ADDRESS_STREET= ?,CHARGEPOINT_OPERATOR_ID= ?,CHARGEPOINT_OPERATOR_NAME= ?,EMOBILITY_PROVIDER_ID= ?,EMOBILITY_PROVIDER_NAME= ?,CHARGE_DATA_AUTHORIZATION_TYPE= ?,CHARGE_DATA_CONSUMPTION_KWH= ?,CHARGE_DATA_BEGIN_UTC= ?,CHARGE_DATA_END_UTC= ?,CHARGE_DATA_TIME_ZONE= ?,CHARGE_DATA_EKA_STATUS= ?,PRICING_ITEMS_1_TYPE= ?,PRICING_ITEMS_1_UNIT= ?,PRICING_ITEMS_1_UNIT_PRICE= ?,PRICING_ITEMS_1_QUANTITY= ?,PRICING_ITEMS_1_NET_AMOUNT= ?,PRICING_ITEMS_1_CURRENCY= ?,PRICING_ITEMS_2_TYPE= ?,PRICING_ITEMS_2_UNIT= ?,PRICING_ITEMS_2_UNIT_PRICE= ?,PRICING_ITEMS_2_QUANTITY= ?,PRICING_ITEMS_2_NET_AMOUNT= ?,PRICING_ITEMS_2_CURRENCY= ?,PRICING_ITEMS_3_TYPE= ?,PRICING_ITEMS_3_UNIT= ?,PRICING_ITEMS_3_UNIT_PRICE= ?,PRICING_ITEMS_3_QUANTITY= ?,PRICING_ITEMS_3_NET_AMOUNT= ?,PRICING_ITEMS_3_CURRENCY= ?,PRICING_ITEMS_4_TYPE= ?,PRICING_ITEMS_4_UNIT= ?,PRICING_ITEMS_4_UNIT_PRICE= ?,PRICING_ITEMS_4_QUANTITY= ?,PRICING_ITEMS_4_NET_AMOUNT= ?,PRICING_ITEMS_4_CURRENCY= ?,SUBSCRIPTION_ID= ?,JSONRAW= ?,UPDATE_TS= CURRENT_TIMESTAMP,UPDATE_USER= CURRENT_USER,BUSINESSVALIDATIONRESULT=?,TECHVALIDATIONRESULT=?,NOTBILLABLEREASON=? where BDR_ID = ?"; outMsg.method = "Update Data BDR_ID: " + myBDRID; } else { query = "INSERT INTO \"EOPERATE\".\"CHARGEDATA\" (BDR_ID,EMAID,UNIQUE_ID,CREATION_DATE_UTC,CHARGEPOINT_ID,CHARGEPOINT_TYPE,CHARGEPOINT_METER_ID,CHARGEPOINT_ADDRESS_COUNTRY,CHARGEPOINT_ADDRESS_POSTALCODE,CHARGEPOINT_ADDRESS_CITY,CHARGEPOINT_ADDRESS_STREET,CHARGEPOINT_OPERATOR_ID,CHARGEPOINT_OPERATOR_NAME,EMOBILITY_PROVIDER_ID,EMOBILITY_PROVIDER_NAME,CHARGE_DATA_AUTHORIZATION_TYPE,CHARGE_DATA_CONSUMPTION_KWH,CHARGE_DATA_BEGIN_UTC,CHARGE_DATA_END_UTC,CHARGE_DATA_TIME_ZONE,CHARGE_DATA_EKA_STATUS,PRICING_ITEMS_1_TYPE,PRICING_ITEMS_1_UNIT,PRICING_ITEMS_1_UNIT_PRICE,PRICING_ITEMS_1_QUANTITY,PRICING_ITEMS_1_NET_AMOUNT,PRICING_ITEMS_1_CURRENCY,PRICING_ITEMS_2_TYPE,PRICING_ITEMS_2_UNIT,PRICING_ITEMS_2_UNIT_PRICE,PRICING_ITEMS_2_QUANTITY,PRICING_ITEMS_2_NET_AMOUNT,PRICING_ITEMS_2_CURRENCY,PRICING_ITEMS_3_TYPE,PRICING_ITEMS_3_UNIT,PRICING_ITEMS_3_UNIT_PRICE,PRICING_ITEMS_3_QUANTITY,PRICING_ITEMS_3_NET_AMOUNT,PRICING_ITEMS_3_CURRENCY,PRICING_ITEMS_4_TYPE,PRICING_ITEMS_4_UNIT,PRICING_ITEMS_4_UNIT_PRICE,PRICING_ITEMS_4_QUANTITY,PRICING_ITEMS_4_NET_AMOUNT,PRICING_ITEMS_4_CURRENCY,SUBSCRIPTION_ID,JSONRAW,UPDATE_TS,UPDATE_USER,BUSINESSVALIDATIONRESULT,TECHVALIDATIONRESULT,NOTBILLABLEREASON) values (" + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP, CURRENT_USER,?,?,?)"; outMsg.method = "Insert DataBDR_ID: " + myBDRID; } myDebug.query = query; /* outMsg = {}; outMsg.method = "query"; outMsg.status = "info"; outStatus = "info"; outMsg.message = query; outMessages.push(outMsg); */ pstmt = conn.prepareStatement(query); pstmt.setNString(1, pdcdrObj[0].BDR_ID.toString()); if (pdcdrObj[0].EMAID) { pstmt.setNString(2, pdcdrObj[0].EMAID.toString()); } else { pstmt.setNull(2); } if (pdcdrObj[0].UNIQUE_ID) { pstmt.setNString(3, pdcdrObj[0].UNIQUE_ID.toString()); } else { pstmt.setNString(3, ''); } if (pdcdrObj[0].CREATION_DATE_UTC) { pstmt.setNString(4, pdcdrObj[0].CREATION_DATE_UTC.toString()); } else { pstmt.setNull(4); } if (pdcdrObj[0].CHARGEPOINT.ID) { pstmt.setNString(5, pdcdrObj[0].CHARGEPOINT.ID.toString()); } else { pstmt.setNull(5); } if (pdcdrObj[0].CHARGEPOINT.TYPE) { pstmt.setNString(6, pdcdrObj[0].CHARGEPOINT.TYPE.toString()); } else { pstmt.setNull(6); } if (pdcdrObj[0].CHARGEPOINT.METER_ID) { pstmt.setNString(7, pdcdrObj[0].CHARGEPOINT.METER_ID.toString()); } else { pstmt.setNull(7); } if (pdcdrObj[0].CHARGEPOINT.ADDRESS.COUNTRY) { pstmt.setNString(8, pdcdrObj[0].CHARGEPOINT.ADDRESS.COUNTRY.toString()); } else { pstmt.setNull(8); } if (pdcdrObj[0].CHARGEPOINT.ADDRESS.POSTALCODE) { pstmt.setNString(9, pdcdrObj[0].CHARGEPOINT.ADDRESS.POSTALCODE.toString()); } else { pstmt.setNull(9); } if (pdcdrObj[0].CHARGEPOINT.ADDRESS.CITY) { pstmt.setNString(10, pdcdrObj[0].CHARGEPOINT.ADDRESS.CITY.toString()); } else { pstmt.setNull(10); } if (pdcdrObj[0].CHARGEPOINT.ADDRESS.STREET) { pstmt.setNString(11, pdcdrObj[0].CHARGEPOINT.ADDRESS.STREET.toString()); } else { pstmt.setNull(11); } if (pdcdrObj[0].CHARGEPOINT_OPERATOR.ID) { pstmt.setNString(12, pdcdrObj[0].CHARGEPOINT_OPERATOR.ID.toString()); } else { pstmt.setNull(12); } if (pdcdrObj[0].CHARGEPOINT_OPERATOR.NAME) { pstmt.setNString(13, pdcdrObj[0].CHARGEPOINT_OPERATOR.NAME.toString()); } else { pstmt.setNull(13); } if (pdcdrObj[0].EMOBILITY_PROVIDER.ID) { pstmt.setNString(14, pdcdrObj[0].EMOBILITY_PROVIDER.ID.toString()); } else { pstmt.setNull(14); } if (pdcdrObj[0].EMOBILITY_PROVIDER.NAME) { pstmt.setNString(15, pdcdrObj[0].EMOBILITY_PROVIDER.NAME.toString()); } else { pstmt.setNull(15); } if (pdcdrObj[0].CHARGE_DATA.AUTHORIZATION_TYPE) { pstmt.setNString(16, pdcdrObj[0].CHARGE_DATA.AUTHORIZATION_TYPE.toString()); } else { pstmt.setNull(16); } if (pdcdrObj[0].CHARGE_DATA.CONSUMPTION_KWH) { pstmt.setDecimal(17, roundTo(pdcdrObj[0].CHARGE_DATA.CONSUMPTION_KWH, 3)); //TODO: clarify rounding } else { pstmt.setNull(17); } if (pdcdrObj[0].CHARGE_DATA.BEGIN_UTC) { pstmt.setNString(18, pdcdrObj[0].CHARGE_DATA.BEGIN_UTC.toString()); } else { pstmt.setNull(18); } if (pdcdrObj[0].CHARGE_DATA.END_UTC) { pstmt.setNString(19, pdcdrObj[0].CHARGE_DATA.END_UTC.toString()); } else { pstmt.setNull(19); } if (pdcdrObj[0].CHARGE_DATA.TIME_ZONE) { pstmt.setNString(20, pdcdrObj[0].CHARGE_DATA.TIME_ZONE.toString()); } else { pstmt.setNull(20); } if (pdcdrObj[0].CHARGE_DATA.EKA_STATUS) { pstmt.setNString(21, pdcdrObj[0].CHARGE_DATA.EKA_STATUS.toString()); } else { pstmt.setNull(21); } if (pdcdrObj[0].PRICING && pdcdrObj[0].PRICING.ITEMS) { var pricingItemsCUS = pdcdrObj[0].PRICING.ITEMS.filter(function(pricingItem) { return pricingItem.TYPE === "CUS"; }); if (pricingItemsCUS[0]) { pstmt.setNString(22, pricingItemsCUS[0].TYPE.toString()); pstmt.setNString(23, pricingItemsCUS[0].UNIT.toString()); pstmt.setDecimal(24, roundTo(pricingItemsCUS[0].UNIT_PRICE, 4)); pstmt.setDecimal(25, roundTo(pricingItemsCUS[0].QUANTITY, 3)); //TODO: clarify rounding pstmt.setDecimal(26, roundTo(pricingItemsCUS[0].NET_AMOUNT, 3)); //TODO: clarify rounding pstmt.setNString(27, pricingItemsCUS[0].CURRENCY.toString()); } else { pstmt.setNull(22); pstmt.setNull(23); pstmt.setNull(24); pstmt.setNull(25); pstmt.setNull(26); pstmt.setNull(27); } if (pricingItemsCUS[1]) { pstmt.setNString(28, pricingItemsCUS[1].TYPE.toString()); pstmt.setNString(29, pricingItemsCUS[1].UNIT.toString()); pstmt.setDecimal(30, roundTo(pricingItemsCUS[1].UNIT_PRICE, 4)); pstmt.setDecimal(31, roundTo(pricingItemsCUS[1].QUANTITY, 3)); //TODO: clarify rounding pstmt.setDecimal(32, roundTo(pricingItemsCUS[1].NET_AMOUNT, 3)); //TODO: clarify rounding pstmt.setNString(33, pricingItemsCUS[1].CURRENCY.toString()); } else { pstmt.setNull(28); pstmt.setNull(29); pstmt.setNull(30); pstmt.setNull(31); pstmt.setNull(32); pstmt.setNull(33); } if (pricingItemsCUS[2]) { pstmt.setNString(34, pricingItemsCUS[2].TYPE.toString()); pstmt.setNString(35, pricingItemsCUS[2].UNIT.toString()); pstmt.setDecimal(36, roundTo(pricingItemsCUS[2].UNIT_PRICE, 4)); pstmt.setDecimal(37, roundTo(pricingItemsCUS[2].QUANTITY, 3)); //TODO: clarify rounding pstmt.setDecimal(38, roundTo(pricingItemsCUS[2].NET_AMOUNT, 3)); //TODO: clarify rounding pstmt.setNString(39, pricingItemsCUS[2].CURRENCY.toString()); } else { pstmt.setNull(34); pstmt.setNull(35); pstmt.setNull(36); pstmt.setNull(37); pstmt.setNull(38); pstmt.setNull(39); } if (pricingItemsCUS[3]) { pstmt.setNString(40, pricingItemsCUS[3].TYPE.toString()); pstmt.setNString(41, pricingItemsCUS[3].UNIT.toString()); pstmt.setDecimal(42, roundTo(pricingItemsCUS[3].UNIT_PRICE, 4)); pstmt.setDecimal(43, roundTo(pricingItemsCUS[3].QUANTITY, 3)); //TODO: clarify rounding pstmt.setDecimal(44, roundTo(pricingItemsCUS[3].NET_AMOUNT, 3)); //TODO: clarify rounding pstmt.setNString(45, pricingItemsCUS[3].CURRENCY.toString()); } else { pstmt.setNull(40); pstmt.setNull(41); pstmt.setNull(42); pstmt.setNull(43); pstmt.setNull(44); pstmt.setNull(45); } } else { pstmt.setNull(22); pstmt.setNull(23); pstmt.setNull(24); pstmt.setNull(25); pstmt.setNull(26); pstmt.setNull(27); pstmt.setNull(28); pstmt.setNull(29); pstmt.setNull(30); pstmt.setNull(31); pstmt.setNull(32); pstmt.setNull(33); pstmt.setNull(34); pstmt.setNull(35); pstmt.setNull(36); pstmt.setNull(37); pstmt.setNull(38); pstmt.setNull(39); pstmt.setNull(40); pstmt.setNull(41); pstmt.setNull(42); pstmt.setNull(43); pstmt.setNull(44); pstmt.setNull(45); } if (pdcdrObj[0].CHARGE_DATA.SUBSCRIPTION_ID) { pstmt.setNString(46, pdcdrObj[0].CHARGE_DATA.SUBSCRIPTION_ID); } else { pstmt.setNull(46); } pstmt.setNClob(47, pdcontent); //pstmt.setString(37, pdcdrObj.chargeData[0].operatorSubmandant.toString()); //pstmt.setString(38, pdcdrObj.chargeData[0].freeCharge.toString()); // pstmt.setString(7, JSON.stringify(pdcdrObj.chargeData[0].cdrId)); // pstmt.setString(8, JSON.stringify(pdcdrObj.chargeData[0].cdrId)); // pstmt.setString(3, JSON.stringify(pdcdrObj.evseID)); //04.05.2023 Erweiterung PlausiheckFelder if (pdcdrObj[0].BUSINESS_VALIDATION_RESULT) { pstmt.setNString(48, pdcdrObj[0].BUSINESS_VALIDATION_RESULT.toString()); } else { pstmt.setNull(48); } if (pdcdrObj[0].TECH_VALIDATION_RESULT) { pstmt.setNString(49, pdcdrObj[0].TECH_VALIDATION_RESULT.toString()); } else { pstmt.setNull(49); } if (pdcdrObj[0].NOT_BILLABLE_REASON) { pstmt.setNString(50, pdcdrObj[0].NOT_BILLABLE_REASON.toString()); } else { pstmt.setNull(50); } if (isUpdateMode) { pstmt.setNString(51, myBDRID); } rs = pstmt.executeUpdate(); myDebug.result = rs; pstmt.close(); conn.commit(); conn.close(); //disabled 31.01.2018 für C.Schmidt // doHTTPCall (pdcdrObj.callId.toString()); // while (rs.next()) { // var record = {}; // record.productId = rs.getString(1); // record.productName = rs.getString(2); // record.supplierCountry = rs.getString(3); // output.results.push(record); // } // rs.close(); // pstmt.close(); // conn.close(); } catch (e) { outMsg.status = "error"; outMessages.push(outMsg); exceptionHandler(e); /*vals.status = 'error'; vals.description = e.message; data.push(vals); var errbody = JSON.stringify(data); $.response.contentType = 'application/json'; $.response.setBody(errbody); $.response.status = $.net.http.INTERNAL_SERVER_ERROR;*/ return; } outMsg.status = 'success'; // vals.description = 'Data accepted and proceeded with ID:' + mynextval; // data.push(vals); // var okbody = JSON.stringify(data); //var body = JSON.stringify(test); // $.response.contentType = 'application/json'; // $.response.setBody(okbody); // $.response.status = $.net.http.OK; outMessages.push(outMsg); return; } var content = $.request.body.asString(); //var cdrObj = JSON.parse(content); //var ChargeDataObj = cdrObj.chargeData[0].cdrId; // doHTTPCall("4aa9b243be184a4abdb4179f375459be"); // 16:11:2021 Validierung nicht mehr gewünscht //if (checkPayload(content)) { PutDataInTable(); //} setOutputMessage(); // var result = JSON.stringify(cdrObj.callId); // var result = JSON.stringify(ChargeDataObj); // $.response.contentType = 'application/json'; // $.response.setBody(result); // $.response.status = $.net.http.OK;