Files

527 lines
20 KiB
JavaScript

//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;