Export from HANA XS Repository - Complete DU2 with all services and metadata
This commit is contained in:
@@ -0,0 +1,437 @@
|
||||
var slib = $.import("uniorg.ServiceLayer", "B1SLLogic");
|
||||
var slDest = $.import("uniorg.destinations", "uodestlib");
|
||||
var copybplib = $.import("uniorg.eon.libs", "copybp");
|
||||
|
||||
var ParDebug = false;
|
||||
var ParRecallIdList = "";
|
||||
var ParRecallMode = false;
|
||||
var outMessages = [];
|
||||
var outMsg = {};
|
||||
var outStatus = "success";
|
||||
var globalDebug = {};
|
||||
var UserName = slDest.uniorg_eon_nice_v1_UserName;
|
||||
var UserPass = slDest.uniorg_eon_nice_v1_UserPass;
|
||||
var UserComp = slDest.uniorg_eon_nice_v1_UserComp;
|
||||
var ContractUDOID = "EON_CONTR";
|
||||
|
||||
var series_b2c = 68;
|
||||
var series_b2b = 69;
|
||||
var series_b2m = 70;
|
||||
var groupcode_b2c = 100;
|
||||
var groupcode_b2b = 102;
|
||||
var groupcode_b2m = 103;
|
||||
var cmpprivate_b2c = "cPrivate";
|
||||
var cmpprivate_b2b = "cCompany";
|
||||
var cmpprivate_b2m = "cCompany";
|
||||
var service_version = '3.4';
|
||||
// 03.11.2020 U_ORDER_ID (262)
|
||||
// last changes: 31.03.2020 eoperate Felder
|
||||
// Mapping Verträge 19.05.2020
|
||||
// Mapping evdriver undefined 12.08.2020
|
||||
//17.08.2020 Parameter können nun auch ohne evdriver gesnedet werden.
|
||||
//16.09.2020 Erweiterung Aktivierungsgebühr
|
||||
//Mazda 6 monatige RabattGebühr
|
||||
//19.01.2021 duplicatebp lib Implementierung bei BFV Verträgen
|
||||
|
||||
//logininfo auskommentiert
|
||||
|
||||
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 > 1) {
|
||||
globalDebug.requestParams = $.request.parameters;
|
||||
}
|
||||
|
||||
function setOutputMessage() {
|
||||
|
||||
$.response.contentType = "application/json";
|
||||
$.response.setBody(JSON.stringify(output));
|
||||
$.response.status = $.net.http.OK;
|
||||
}
|
||||
|
||||
function pad(number) {
|
||||
var r = String(number);
|
||||
if (r.length === 1) {
|
||||
r = '0' + r;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
function convertToISODate(dateString) {
|
||||
try {
|
||||
//var options = { year: 'numeric', month: '2-digit', day: '2-digit' };
|
||||
var d = new Date(dateString);
|
||||
if (!isNaN(d)) {
|
||||
//var convDate = d.toLocaleDateString('de-DE', options);
|
||||
var convDate = d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate());
|
||||
return convDate;
|
||||
} else {
|
||||
return dateString;
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
return (err);
|
||||
}
|
||||
}
|
||||
|
||||
function getProductId(prodID) {
|
||||
/* switch (prodID) {
|
||||
case "E.ON Drive Business ohne Grundgebühr":
|
||||
prodID='E.ON Drive Business Comfort';
|
||||
break;
|
||||
|
||||
case "LT_E.ON Drive ElectricFleet E.ON Konzern Ladetarif":
|
||||
prodID='LT_E.ON DRIVE ELECTRICFLEET E.ON KONZERN LADETARIF';
|
||||
break;
|
||||
|
||||
case "LT_E.ON Drive ElectricFleet Ladetarif":
|
||||
prodID='E.ON DRIVE ELECTRICFLEET LADETARIF';
|
||||
break;
|
||||
|
||||
case "BMW Group Corporate Charging CCA Ladetarif":
|
||||
prodID='BMW GROUP CORPORATE CHARGING CCA LADETARIF';
|
||||
break;
|
||||
case "LT_BMW Group Corporate Charging MA Ladetarif":
|
||||
prodID='BMW GROUP CORPORATE CHARGING MA LADETARIF';
|
||||
break;
|
||||
|
||||
default:
|
||||
prodID = prodID;
|
||||
}*/
|
||||
var conn = $.db.getConnection();
|
||||
var pstmt;
|
||||
var query =
|
||||
"SELECT MIN(T1.\"Code\") as \"Code\", T0.\"U_BILLING_MODE\" FROM \"XXREPXX\".\"@EON_PRODUCT\" T0 INNER JOIN \"XXREPXX\".\"@EON_PRODUCT_PARAM\" T1 ON T0.\"Code\"=T1.\"Code\" " +
|
||||
"WHERE T1.U_COMPONENT = 'CRM_PRODUCT_ID' AND UPPER(T1.\"U_ITEM\") = UPPER('" +
|
||||
prodID + "') GROUP BY T0.\"U_BILLING_MODE\"";
|
||||
query = query.replace(/XXREPXX/g, UserComp);
|
||||
pstmt = conn.prepareStatement(query);
|
||||
//pstmt.setString(1, prodID);
|
||||
var rs = pstmt.executeQuery();
|
||||
if (!rs.next()) {
|
||||
outMsg = {};
|
||||
outMsg.method = "getProductId";
|
||||
outMsg.message = "wrong ProductID - not exists in Table Product Param. ProductID: " + prodID;
|
||||
if (debugLevel > 0) {
|
||||
outMsg.message += " / Query: " + query;
|
||||
}
|
||||
outMsg.status = "error";
|
||||
outStatus = "error";
|
||||
// outMsg.message = e.message;
|
||||
outMessages.push(outMsg);
|
||||
} else {
|
||||
var prodList = [];
|
||||
do {
|
||||
prodList.push({
|
||||
Code: rs.getNString(1),
|
||||
BillingMode: rs.getString(2)
|
||||
});
|
||||
} while (rs.next());
|
||||
return prodList;
|
||||
}
|
||||
rs.close();
|
||||
pstmt.close();
|
||||
conn.close();
|
||||
}
|
||||
|
||||
function getProductComponents(prodCode, component) {
|
||||
var prodComponents = [];
|
||||
var conn = $.db.getConnection();
|
||||
var pstmt;
|
||||
var query =
|
||||
"SELECT \"LineId\", \"U_COMPONENT\", \"U_DESCRIPTION\", \"U_RULE\", \"U_ITEM\", \"U_VALID_FROM\", \"U_VALID_TO\", \"U_DATA_TEXT\", \"U_DATA_NUMERIC\", \"U_DATA_TEXT2\", \"U_DATA_NUMERIC2\" FROM \"XXREPXX\".\"@EON_PRODUCT_PARAM\" WHERE \"Code\"= ? AND \"U_COMPONENT\" = ?";
|
||||
query = query.replace(/XXREPXX/g, UserComp);
|
||||
pstmt = conn.prepareStatement(query);
|
||||
pstmt.setNString(1, prodCode);
|
||||
pstmt.setNString(2, component);
|
||||
globalDebug.getProductComponents = {
|
||||
query: query,
|
||||
prodCode: prodCode,
|
||||
component: component
|
||||
};
|
||||
var rs = pstmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
prodComponents.push({
|
||||
LineId: rs.getInteger(1),
|
||||
U_COMPONENT: rs.getNString(2),
|
||||
U_DESCRIPTION: rs.getNString(3),
|
||||
U_RULE: rs.getNString(4),
|
||||
U_ITEM: rs.getNString(5),
|
||||
U_VALID_FROM: rs.getDate(6),
|
||||
U_VALID_TO: rs.getDate(7),
|
||||
U_DATA_TEXT: rs.getNString(8),
|
||||
U_DATA_NUMERIC: rs.getInteger(9),
|
||||
U_DATA_TEXT2: rs.getNString(10),
|
||||
U_DATA_NUMERIC2: rs.getInteger(11)
|
||||
});
|
||||
}
|
||||
rs.close();
|
||||
pstmt.close();
|
||||
conn.close();
|
||||
return prodComponents;
|
||||
}
|
||||
|
||||
function getCardcodebyCRMID(mycrmid) {
|
||||
var conn = $.db.getConnection();
|
||||
try {
|
||||
var pstmt;
|
||||
//var query = "select CARDCODE from TEST.OCRD WHERE U_EON_CRM_ID = " + crmid;
|
||||
var query = "SELECT T0.\"CardCode\" FROM " + UserComp + ".\"OCRD\" T0 WHERE T0.\"CardType\" = 'C' AND T0.\"U_EON_ID_CRM\" = '" + mycrmid +
|
||||
"'";
|
||||
pstmt = conn.prepareStatement(query);
|
||||
var rs = pstmt.executeQuery();
|
||||
if (!rs.next()) {
|
||||
outMsg = {};
|
||||
outMsg.method = "getCardCodebyCRMID";
|
||||
outMsg.message = "not found. CRM ID: " + mycrmid;
|
||||
if (debugLevel > 0) {
|
||||
outMsg.message += " / Query: " + query;
|
||||
}
|
||||
outMsg.status = "error";
|
||||
outStatus = "error";
|
||||
// outMsg.message = e.message;
|
||||
outMessages.push(outMsg);
|
||||
} else {
|
||||
return rs.getString(1);
|
||||
}
|
||||
rs.close();
|
||||
pstmt.close();
|
||||
} catch (e) {
|
||||
$.trace.error(e.message);
|
||||
outMsg = {};
|
||||
outMsg.method = "getCardCodebyCRMID";
|
||||
outMsg.message = "getcardcodebycrmid error: " + query;
|
||||
outMsg.status = "error";
|
||||
// outMsg.message = e.message;
|
||||
outMessages.push(outMsg);
|
||||
throw e;
|
||||
} finally {
|
||||
conn.close();
|
||||
}
|
||||
}
|
||||
|
||||
function convertAdrType(adrtype) {
|
||||
switch (adrtype) {
|
||||
case '1':
|
||||
case 'S':
|
||||
return 'bo_ShipTo';
|
||||
case '2':
|
||||
case '3':
|
||||
case 'B':
|
||||
return 'bo_BillTo';
|
||||
default:
|
||||
return 'bo_BillTo';
|
||||
}
|
||||
}
|
||||
|
||||
function buildContractObj(InObj, SBOOBJ, billingMode) {
|
||||
var isAO = billingMode === 'AO';
|
||||
|
||||
var UDOObj = {};
|
||||
UDOObj.U_VALID_FROM = isAO ? InObj.implementation_date : InObj.begin_date;
|
||||
UDOObj.U_VALID_TO = InObj.end_date;
|
||||
UDOObj.U_EXT_ID_CRM = InObj.contract_id;
|
||||
UDOObj.U_EXT_ID_PREBILLING = InObj.c_id;
|
||||
UDOObj.U_PROJECT = InObj.project;
|
||||
UDOObj.U_ORDER_ID = InObj.orderid;
|
||||
|
||||
var productCode = getProductId(InObj.product).find(function(p) {
|
||||
return p.BillingMode === billingMode;
|
||||
}).Code;
|
||||
UDOObj.U_PRODUCT = productCode;
|
||||
if (InObj.product_customer_name) {
|
||||
UDOObj.U_ORDER_ID = InObj.product_customer_name;
|
||||
}
|
||||
if (isAO) {
|
||||
UDOObj.U_CUSTOMER = getCardcodebyCRMID(InObj.bp_crm) + '-L';
|
||||
/*} else if (InObj.ev_drivers != undefined) {
|
||||
if (InObj.ev_drivers[0].parameters[0].component === "RFID_CARD") {
|
||||
UDOObj.U_CUSTOMER = getCardcodebyCRMID(InObj.bp_crm);
|
||||
}*/
|
||||
} else {
|
||||
UDOObj.U_CUSTOMER = getCardcodebyCRMID(InObj.bp_crm);
|
||||
}
|
||||
|
||||
UDOObj.U_SIGNATURE_DATE = (InObj.signature_date === null) ? SBOOBJ.U_SIGNATURE_DATE : InObj.signature_date;
|
||||
|
||||
// Price Collection
|
||||
|
||||
UDOObj.EON_CONTRACT_PRICECollection = [];
|
||||
|
||||
for (var g in SBOOBJ.EON_CONTRACT_PRICECollection) {
|
||||
var myPrice = {};
|
||||
// copy existing
|
||||
myPrice = SBOOBJ.EON_CONTRACT_PRICECollection[g];
|
||||
|
||||
for (var h in InObj.prices) {
|
||||
|
||||
if (SBOOBJ.EON_CONTRACT_PRICECollection[g].U_ITEM === InObj.prices[h].item) {
|
||||
myPrice.U_VALID_FROM = (InObj.prices[h].valid_from === null) ? SBOOBJ.EON_CONTRACT_PRICECollection[g].U_VALID_FROM : InObj.prices[h].valid_from;
|
||||
myPrice.U_VALID_TO = (InObj.prices[h].valid_to === null) ? SBOOBJ.EON_CONTRACT_PRICECollection[g].U_VALID_TO : InObj.prices[h].valid_to;
|
||||
myPrice.U_PRICE = (InObj.prices[h].price === null) ? SBOOBJ.EON_CONTRACT_PRICECollection[g].U_PRICE : InObj.prices[h].price;
|
||||
break;
|
||||
}
|
||||
}
|
||||
UDOObj.EON_CONTRACT_PRICECollection.push(myPrice);
|
||||
|
||||
}
|
||||
|
||||
var prodComponentsTP_DISCOUNT_MONTH = getProductComponents(productCode, "TP_DISCOUNT_MONTH");
|
||||
prodComponentsTP_DISCOUNT_MONTH.forEach(function(pc) {
|
||||
if (SBOOBJ.EON_CONTRACT_PRICECollection === undefined || SBOOBJ.EON_CONTRACT_PRICECollection.findIndex(function(x) {
|
||||
return x.U_ITEM === pc.U_ITEM;
|
||||
}) === -1) {
|
||||
var connection = $.hdb.getConnection();
|
||||
var validToDate = connection.executeQuery('SELECT ADD_MONTHS(?,?) FROM DUMMY', InObj.begin_date, pc.U_DATA_NUMERIC)[0][0];
|
||||
connection.close();
|
||||
UDOObj.EON_CONTRACT_PRICECollection.push({
|
||||
U_ITEM: pc.U_ITEM,
|
||||
U_VALID_FROM: InObj.begin_date,
|
||||
U_VALID_TO: validToDate,
|
||||
U_PRICE: parseFloat(pc.U_DATA_TEXT2.replace(/,/g, '.'))
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//Suche ob Objekte vorhanden wenn nicht ergänzen
|
||||
|
||||
for (var h in InObj.prices) {
|
||||
var myfound = false;
|
||||
for (var g in SBOOBJ.EON_CONTRACT_PRICECollection) {
|
||||
if (SBOOBJ.EON_CONTRACT_PRICECollection[g].U_ITEM === InObj.prices[h].item) {
|
||||
myfound = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (myfound === false) {
|
||||
var myPrice = {};
|
||||
|
||||
myPrice.U_VALID_FROM = InObj.prices[h].valid_from;
|
||||
myPrice.U_VALID_TO = InObj.prices[h].valid_to;
|
||||
myPrice.U_PRICE = InObj.prices[h].price;
|
||||
myPrice.U_ITEM = InObj.prices[h].item;
|
||||
|
||||
UDOObj.EON_CONTRACT_PRICECollection.push(myPrice);
|
||||
}
|
||||
}
|
||||
|
||||
// REMOVE PRICES SONDERFUNKTION:
|
||||
UDOObj.EON_CONTRACT_PRICECollection = [];
|
||||
|
||||
//EV Drivers neu 4.2.2019
|
||||
// EVDRIVERS Collection
|
||||
|
||||
UDOObj.EON_CONTRACT_EVDRVCollection = [];
|
||||
|
||||
for (var g in SBOOBJ.EON_CONTRACT_EVDRVCollection) {
|
||||
var myEVDRV = {};
|
||||
// copy existing
|
||||
myEVDRV = SBOOBJ.EON_CONTRACT_EVDRVCollection[g];
|
||||
|
||||
for (var h in InObj.ev_drivers) {
|
||||
|
||||
if (myEVDRV.U_EV_DRIVERID === InObj.ev_drivers[h].ev_driverid) {
|
||||
UDOObj.U_EXT_ID_PREBILLING = InObj.ev_drivers[h].c_id;
|
||||
myEVDRV.U_EV_DRIVER = InObj.ev_drivers[h].ev_driver;
|
||||
myEVDRV.U_NICE_ID = InObj.ev_drivers[h].c_id;
|
||||
myEVDRV.U_FIRSTNAME = (InObj.ev_drivers[h].firstname === null) ? myEVDRV.U_FIRSTNAME : InObj.ev_drivers[h].firstname;
|
||||
myEVDRV.U_LASTNAME = (InObj.ev_drivers[h].lastname === null) ? myEVDRV.U_LASTNAME : InObj.ev_drivers[h].lastname;
|
||||
// myEVDRV.U_EMAIL = (InObj.ev_drivers[h].email === null) ? myEVDRV.U_EMAIL : InObj.ev_drivers[h].email;
|
||||
myEVDRV.U_LICENSE_PLATE = (InObj.ev_drivers[h].license_plate === null) ? myEVDRV.U_LICENSE_PLATE : InObj.ev_drivers[h].license_plate;
|
||||
myEVDRV.U_VIRTA_ID = (InObj.ev_drivers[h].virta_id === null) ? myEVDRV.U_VIRTA_ID : InObj.ev_drivers[h].virta_id;
|
||||
myEVDRV.U_VIRTA_VALID_FROM = (InObj.ev_drivers[h].virta_valid_from === null) ? myEVDRV.U_VIRTA_VALID_FROM : InObj.ev_drivers[h].virta_valid_from;
|
||||
myEVDRV.U_VIRTA_VALID_TO = (InObj.ev_drivers[h].virta_valid_to === null) ? myEVDRV.U_VIRTA_VALID_TO : InObj.ev_drivers[h].virta_valid_to;
|
||||
|
||||
myEVDRV.U_NICE_VALID_FROM = (InObj.ev_drivers[h].nice_valid_from === null) ? myEVDRV.U_NICE_VALID_FROM : InObj.ev_drivers[h].nice_valid_from;
|
||||
myEVDRV.U_NICE_VALID_TO = (InObj.ev_drivers[h].nice_valid_to === null) ? myEVDRV.U_NICE_VALID_TO : InObj.ev_drivers[h].nice_valid_to;
|
||||
//neu 31.03.2020 eoperate Felder
|
||||
myEVDRV.U_EOPERATE_ID = (InObj.ev_drivers[h].eoperate_ID === null) ? myEVDRV.U_EOPERATE_ID : InObj.ev_drivers[h].eoperate_ID;
|
||||
myEVDRV.U_EOPERATE_VALID_FROM = (InObj.ev_drivers[h].eoperate_valid_from === null) ? myEVDRV.U_EOPERATE_VALID_FROM : InObj.ev_drivers[h]
|
||||
.eoperate_valid_from;
|
||||
myEVDRV.U_EOPERATE_VALID_TO = (InObj.ev_drivers[h].eoperate_valid_to === null) ? myEVDRV.U_EOPERATE_VALID_TO : InObj.ev_drivers[h].eoperate_valid_to;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
UDOObj.EON_CONTRACT_EVDRVCollection.push(myEVDRV);
|
||||
|
||||
}
|
||||
|
||||
//Suche ob Objekte vorhanden wenn nicht ergänzen
|
||||
|
||||
for (var h in InObj.ev_drivers) {
|
||||
var myfound = false;
|
||||
for (var g in SBOOBJ.EON_CONTRACT_EVDRVCollection) {
|
||||
if (SBOOBJ.EON_CONTRACT_EVDRVCollection[g].U_EV_DRIVERID === InObj.ev_drivers[h].ev_driverid) {
|
||||
myfound = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (myfound === false) {
|
||||
var myEVDRV = {};
|
||||
UDOObj.U_EXT_ID_PREBILLING = InObj.ev_drivers[h].c_id;
|
||||
myEVDRV.U_EV_DRIVER = InObj.ev_drivers[h].ev_driver;
|
||||
myEVDRV.U_NICE_ID = InObj.ev_drivers[h].c_id;
|
||||
myEVDRV.U_EV_DRIVERID = InObj.ev_drivers[h].ev_driverid;
|
||||
myEVDRV.U_FIRSTNAME = InObj.ev_drivers[h].firstname;
|
||||
myEVDRV.U_LASTNAME = InObj.ev_drivers[h].lastname;
|
||||
// myEVDRV.U_EMAIL = InObj.ev_drivers[h].email;
|
||||
myEVDRV.U_LICENSE_PLATE = InObj.ev_drivers[h].license_plate;
|
||||
myEVDRV.U_VIRTA_ID = InObj.ev_drivers[h].virta_id;
|
||||
myEVDRV.U_VIRTA_VALID_TO = InObj.ev_drivers[h].virta_valid_to;
|
||||
myEVDRV.U_VIRTA_VALID_FROM = InObj.ev_drivers[h].virta_valid_from;
|
||||
myEVDRV.U_NICE_VALID_FROM = InObj.ev_drivers[h].nice_valid_from;
|
||||
myEVDRV.U_NICE_VALID_TO = InObj.ev_drivers[h].nice_valid_to;
|
||||
//neu 31.03.2020 eoperate Felder
|
||||
myEVDRV.U_EOPERATE_ID = InObj.ev_drivers[h].eoperate_ID;
|
||||
myEVDRV.U_EOPERATE_VALID_FROM = InObj.ev_drivers[h].eoperate_valid_from;
|
||||
myEVDRV.U_EOPERATE_VALID_TO = InObj.ev_drivers[h].eoperate_valid_to;
|
||||
|
||||
UDOObj.EON_CONTRACT_EVDRVCollection.push(myEVDRV);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Param Collection
|
||||
|
||||
UDOObj.EON_CONTRACT_PARAMCollection = [];
|
||||
|
||||
return UDOObj;
|
||||
}
|
||||
|
||||
function mockbuildBPObj() {
|
||||
var bpObj = {};
|
||||
bpObj.Series = series_b2b;
|
||||
bpObj.CompanyPrivate = "I"; // JbpObj.type.toString();
|
||||
bpObj.CardName = 'Burgmueller';
|
||||
//bpObj.CardType = 'C';
|
||||
//bpObj.GroupCode = 100; // JbpObj.group.toString();
|
||||
//bpObj.Phone1 = JbpObj.phone.toString();
|
||||
//bpObj.Cellular = JbpObj.mobile_phone.toString();
|
||||
//bpObj.EmailAddress = JbpObj.email.toString();
|
||||
bpObj.U_EON_ID_CRM = 'BP777888999';
|
||||
bpObj.U_EON_ASSU = 'N';
|
||||
return bpObj;
|
||||
}
|
||||
|
||||
//testmain();
|
||||
|
||||
// begin org
|
||||
|
||||
var content = $.request.body.asString();
|
||||
|
||||
setOutputMessage();
|
||||
//ende org
|
||||
|
||||
//SlLogin();
|
||||
Reference in New Issue
Block a user