Correct export of Delivery Unit EON_XSJSFRAMEWORK (36 files, replaces incomplete initial export)

This commit is contained in:
Thorsten Schmitz
2026-07-09 02:02:07 +02:00
parent 997ad1c8f6
commit e5d9482cf1
35 changed files with 3067 additions and 918 deletions
+1
View File
@@ -169,3 +169,4 @@ mCardCode = $.request.parameters.get('cardcode');
copyBPlib();
//PutBPDataInTable();
//ende org
+6 -5
View File
@@ -49,18 +49,19 @@
<script type="text/javascript">
sap.ui.getCore().attachInit(function() {
sap.ui.getCore().attachInit(function() {
//Fake LREP
jQuery.sap.require("sap.ui.fl.FakeLrepConnector");
sap.ui.fl.FakeLrepConnector.enableFakeConnector("fakeLRep.json");
// initialize the ushell sandbox component
sap.ushell.Container.createRenderer().placeAt("app");
// initialize the ushell sandbox component
sap.ushell.Container.createRenderer().placeAt("app");
});
</script>
});
</script>
</head>
+11 -10
View File
@@ -9,7 +9,6 @@ function checkvatid(vatid,country,schemaname)
var searchvalue = country;
var LimitRecords = 1;
var UserComp = schemaname;
var conn = $.db.getConnection();
var pstmt;
//var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"A19753_P01_TEST03\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
@@ -19,7 +18,7 @@ function checkvatid(vatid,country,schemaname)
if (searchkey && searchvalue)
{
var query2 ="";
query = query + " WHERE T0.\"XXREP2XX\" = 'XXREP3XX'";
query = query + " WHERE T0.\"XXREP2XX\" = \'XXREP3XX\'";
query = query.replace(/XXREP2XX/g, searchkey);
@@ -66,20 +65,22 @@ function checkvatid(vatid,country,schemaname)
returnmessage = "vatid is too long";
}
if (mystringlength-2 < taxiddigits )
{
returnmessage = "vatid is too short";
}
var checkisnum = vatid.substring(2,taxiddigits);
if (isNaN(checkisnum) && searchvalue == 'DE')
{
returnmessage = "Number Part is not a number";
}
{
returnmessage = "vatid is too short";
}
var checkisnum = vatid.substring(2,taxiddigits);
if (isNaN(checkisnum) && searchvalue == 'DE')
{
returnmessage = "Number Part is not a number";
}
}
}
return returnmessage;
}
+33 -32
View File
@@ -55,6 +55,7 @@ function getVendorRECACC(custpgnr)
function buildBPObj(cSBOOBJ, vSBOOBJ) {
var groupcode_default = 101; // GroupCode Lieferanten
var groupnum_default = 13; // 2 Tage Netto sepa
@@ -63,35 +64,35 @@ function buildBPObj(cSBOOBJ, vSBOOBJ) {
vSBOOBJ = {};
}
// switch (JbpObj.group) {
// case 'B2C':
// mycardname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// myseries = series_b2c;
// mygroupcode = groupcode_b2c;
// mycmpprivate = cmpprivate_b2c;
// break;
// case 'B2B':
// //mycardname = JbpObj.name.toString();
// mycardname = JbpObj.addresses[0].address.toString();
// mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// myseries = series_b2b;
// mygroupcode = groupcode_b2b;
// mycmpprivate = cmpprivate_b2b;
// break;
// case 'B2M':
// //mycardname = JbpObj.name.toString();
// mycardname = JbpObj.addresses[0].address.toString();
// mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// myseries = series_b2m;
// mygroupcode = groupcode_b2m;
// mycmpprivate = cmpprivate_b2m;
// break;
// default:
// mycardname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// myseries = series_b2c;
// mygroupcode = groupcode_b2c;
// mycmpprivate = cmpprivate_b2c;
// case 'B2C':
// mycardname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// myseries = series_b2c;
// mygroupcode = groupcode_b2c;
// mycmpprivate = cmpprivate_b2c;
// break;
// case 'B2B':
// //mycardname = JbpObj.name.toString();
// mycardname = JbpObj.addresses[0].address.toString();
// mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// myseries = series_b2b;
// mygroupcode = groupcode_b2b;
// mycmpprivate = cmpprivate_b2b;
// break;
// case 'B2M':
// //mycardname = JbpObj.name.toString();
// mycardname = JbpObj.addresses[0].address.toString();
// mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// myseries = series_b2m;
// mygroupcode = groupcode_b2m;
// mycmpprivate = cmpprivate_b2m;
// break;
// default:
// mycardname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
// myseries = series_b2c;
// mygroupcode = groupcode_b2c;
// mycmpprivate = cmpprivate_b2c;
// }
var bpObj = {};
@@ -275,7 +276,7 @@ function buildBPObj(cSBOOBJ, vSBOOBJ) {
myBPBankAccounts.City = cSBOOBJ.BPBankAccounts[bac].City;
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
myBPBankAccounts.SignatureDate = cSBOOBJ.BPBankAccounts[bac].SignatureDate;
// if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
// if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
myBPBankAccounts.MandateID = cSBOOBJ.BPBankAccounts[bac].MandateID;
// bpObj.CollectionAuthorization = 'tYES';
@@ -306,10 +307,10 @@ function buildBPObj(cSBOOBJ, vSBOOBJ) {
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
myBPBankAccounts.SignatureDate = cSBOOBJ.BPBankAccounts[bac].SignatureDate;
// if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
// if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
myBPBankAccounts.MandateID = cSBOOBJ.BPBankAccounts[bac].MandateID;
myBPBankAccounts.SEPASeqType = cSBOOBJ.BPBankAccounts[bac].SEPASeqType;
// }
// }
bpObj.BPBankAccounts.push(myBPBankAccounts);
}
+60 -58
View File
@@ -20,6 +20,7 @@ var service_version = '1.4';
function copyBP(ParDebug,mCardCode) {
var SESSIONID = "";
@@ -105,69 +106,70 @@ function copyBP(ParDebug,mCardCode) {
//consBPObject = bpmaplib.buildBPObj(customerObject.BP,vendorObject.BP);
//consBPObject = bpmaplib.buildBPObj(customerObject.BP,vendorObject.BP);
//myDebug.mappedUPDBPObj = consBPObject;
if (customerObject.Status == "exists" && vendorObject.Status == "exists") {
consBPObject = bpmaplib.buildBPObj(customerObject.BP,vendorObject.BP);
if (customerObject.Status == "exists" && vendorObject.Status == "exists") {
consBPObject = bpmaplib.buildBPObj(customerObject.BP,vendorObject.BP);
myDebug.mappedUPDBPObj = consBPObject;
output.method = "updateVendor";
var responseUpdate = slib.updateBusinessPartner(vendorObject.BP.CardCode, JSON.stringify(consBPObject), SESSIONID, NODEID);
outMsg = {};
outMsg.method = "update";
myDebug.statusUpdate = responseUpdate.status;
outMsg.statuscode = responseUpdate.status;
if (responseUpdate.status >= 200 && responseUpdate.status < 300) {
myDebug.Updatemessage = "Update sucessfull";
outMsg.status = "success";
} else {
myDebug.message = "Update error occured";
outMsg.status = "error";
if (responseUpdate.body) {
myDebug.responseUpdate = JSON.parse(responseUpdate.body.asString());
//outMsg.message = myDebug.responseUpdate;
slError = myDebug.responseUpdate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value ) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responseUpdate);
}
outMsg.response = myDebug.responseUpdate;
}
outStatus = "error";
}
outMessages.push(outMsg);
}
if (customerObject.Status == "exists" && vendorObject.Status == "not exists") {
consBPObject = bpmaplib.buildBPObj(customerObject.BP);
myDebug.mappedCreateBPObj = consBPObject;
output.method = "createVendor";
outMsg = {};
outMsg.method = "create";
var responseCreate = slib.createBusinessPartner(JSON.stringify(consBPObject), SESSIONID, NODEID);
myDebug.statusCreate = responseCreate.status;
outMsg.statuscode = responseCreate.status;
myDebug.responseCreate = JSON.parse(responseCreate.body.asString());
if (responseCreate.status >= 200 && responseCreate.status < 300) {
myDebug.Createmessage = "Create sucessfull";
outMsg.status = "success";
} else {
myDebug.Createmessage = "Create error occured";
output.errorCreatestatus = myDebug.Createmessage;
outMsg.status = "error";
//outMsg.message = myDebug.responseCreate;
outStatus = "error";
slError = myDebug.responseCreate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value ) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
output.method = "updateVendor";
var responseUpdate = slib.updateBusinessPartner(vendorObject.BP.CardCode, JSON.stringify(consBPObject), SESSIONID, NODEID);
outMsg = {};
outMsg.method = "update";
myDebug.statusUpdate = responseUpdate.status;
outMsg.statuscode = responseUpdate.status;
if (responseUpdate.status >= 200 && responseUpdate.status < 300) {
myDebug.Updatemessage = "Update sucessfull";
outMsg.status = "success";
} else {
outMsg.message = JSON.stringify(myDebug.responseCreate);
myDebug.message = "Update error occured";
outMsg.status = "error";
if (responseUpdate.body) {
myDebug.responseUpdate = JSON.parse(responseUpdate.body.asString());
//outMsg.message = myDebug.responseUpdate;
slError = myDebug.responseUpdate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value ) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responseUpdate);
}
outMsg.response = myDebug.responseUpdate;
}
outStatus = "error";
}
outMsg.response = myDebug.responseCreate;
outMessages.push(outMsg);
}
if (customerObject.Status == "exists" && vendorObject.Status == "not exists") {
consBPObject = bpmaplib.buildBPObj(customerObject.BP);
myDebug.mappedCreateBPObj = consBPObject;
output.method = "createVendor";
outMsg = {};
outMsg.method = "create";
var responseCreate = slib.createBusinessPartner(JSON.stringify(consBPObject), SESSIONID, NODEID);
myDebug.statusCreate = responseCreate.status;
outMsg.statuscode = responseCreate.status;
myDebug.responseCreate = JSON.parse(responseCreate.body.asString());
if (responseCreate.status >= 200 && responseCreate.status < 300) {
myDebug.Createmessage = "Create sucessfull";
outMsg.status = "success";
} else {
myDebug.Createmessage = "Create error occured";
output.errorCreatestatus = myDebug.Createmessage;
outMsg.status = "error";
//outMsg.message = myDebug.responseCreate;
outStatus = "error";
slError = myDebug.responseCreate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value ) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responseCreate);
}
outMsg.response = myDebug.responseCreate;
}
outMessages.push(outMsg);
}
outMessages.push(outMsg);
}
//output.CardCode = CardCode;
+19 -26
View File
@@ -1,28 +1,21 @@
{
"exposed": true,
"authentication": [
{
"method": "Form"
}
],
"mime_mapping": [
{
"extension": "jpg",
"mimetype": "image/jpeg"
}
],
"force_ssl": false,
"enable_etags": true,
"prevent_xsrf": true,
"anonymous_connection": null,
"cors": [
{
"enabled": true
}
],
"allowOrigin": [
"*"
],
"cache_control": "no-cache, no-store",
"default_file": "index.html"
"exposed": true,
"authentication": [{
"method": "Form"
}],
"mime_mapping": [{
"extension": "jpg",
"mimetype": "image/jpeg"
}],
"force_ssl": false,
"enable_etags": true,
"prevent_xsrf": true,
"anonymous_connection": null,
"cors": [{
"enabled": true
}],
"allowOrigin": ["*"],
"cache_control": "no-cache, no-store",
"default_file": "index.html"
}
@@ -0,0 +1,244 @@
{
"openapi": "3.0.0",
"info": {
"version": "1.0-oas3",
"title": "E.ON CRM Contract API ",
"description": "Mit dieser Schnittstelle werden die Vertragsobjekt-Tabellen (UDO - User Defined Object) in SAP Business One gepflegt. Neue Verträge werden angelegt, existierende Verträg erhalten ein Update. Der Kunde muss in SAP Business One bereits vorhanden sein, dieser wird anhand der CRM-ID gesucht.",
"contact": {
"email": "t.schmitz@uniorg.de",
"name": "Thorsten Schmitz"
},
"license": {
"name": "(C) UNIORG Services GmbH",
"url": "https://www.uniorg.de"
}
},
"servers": [
{
"url": "https://xs-eon.rz4u.de/uniorg/eon/nice/v1",
"description": "productive"
},
{
"url": "https://xs-test-eon.rz4u.de/uniorg/eon/nice/v1",
"description": "development"
}
],
"security": [
{
"basicAuth": []
}
],
"paths": {
"/setcontract.xsjs": {
"post": {
"tags": [
"Contract"
],
"summary": "Pflege Verträge",
"operationId": "setContract",
"description": "Hinzufügen oder Aktualisieren eines Vertrags in SAP Business One.",
"responses": {
"200": {
"description": "successfully received data"
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Contract"
}
}
},
"description": "Contract object"
}
}
}
},
"components": {
"schemas": {
"Contract": {
"type": "object",
"properties": {
"begin_date": {
"type": "string",
"example": "2021-09-06T00:00:00.0000000"
},
"bp_crm": {
"type": "string",
"example": "10077777"
},
"contract_id": {
"type": "string",
"example": "40022222"
},
"end_date": {
"type": "string",
"example": ""
},
"ev_drivers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"c_id": {
"type": "string",
"example": ""
},
"email": {
"type": "string",
"example": "foo@foo.com"
},
"eoperate_ID": {
"type": "string",
"example": ""
},
"eoperate_valid_from": {
"type": "string",
"example": ""
},
"eoperate_valid_to": {
"type": "string",
"example": ""
},
"ev_driver": {
"type": "string",
"example": "20099999"
},
"ev_driverid": {
"type": "string",
"example": "38f56277-a20e-0000-0000-000d3ad88589",
"maxLength": 36,
"minLength": 36
},
"firstname": {
"type": "string",
"example": "Foo"
},
"lastname": {
"type": "string",
"example": "Foo"
},
"license_plate": {
"type": "string",
"example": ""
},
"nice_valid_from": {
"type": "string",
"example": ""
},
"nice_valid_to": {
"type": "string",
"example": ""
},
"parameters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"component": {
"type": "string",
"example": "RFID_CARD"
},
"numeric1": {
"type": "integer",
"format": "int32",
"example": "0"
},
"numeric2": {
"type": "integer",
"format": "int32",
"example": "0"
},
"text1": {
"type": "string",
"example": "n/a"
},
"text2": {
"type": "string",
"example": ""
},
"valid_from": {
"type": "string",
"example": ""
},
"valid_to": {
"type": "string",
"example": ""
}
}
}
},
"virta_id": {
"type": "string",
"example": "1509999"
},
"virta_valid_from": {
"type": "string",
"example": "2021-09-05T00:00:00.0000000"
},
"virta_valid_to": {
"type": "string",
"example": ""
}
}
}
},
"orderid": {
"type": "string",
"example": ""
},
"prices": {
"type": "array",
"nullable": true,
"items": {
"type": "object",
"properties": {
"factor": {
"type": "number",
"example": "0.1"
},
"item": {
"type": "string",
"example": "BV_COMPENSATION_AC"
},
"price": {
"type": "integer",
"format": "int32",
"example": "0"
},
"valid_from": {
"type": "string",
"example": "2021-11-14T23:00:00.0000000"
},
"valid_to": {
"type": "string",
"example": "9999-12-31T00:00:00.000Z"
}
}
}
},
"product": {
"type": "string",
"example": "E.ON Drive Easy"
},
"projectid": {
"type": "string",
"example": ""
},
"signature_date": {
"type": "string",
"example": "2021-09-06T00:00:00.0000000"
}
}
}
},
"securitySchemes": {
"basicAuth": {
"type": "http",
"scheme": "basic"
}
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

@@ -0,0 +1,16 @@
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
@@ -0,0 +1,19 @@
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" />
<link rel="stylesheet" type="text/css" href="index.css" />
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="./swagger-ui-bundle.js" charset="UTF-8"> </script>
<script src="./swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
<script src="./swagger-initializer.js" charset="UTF-8"> </script>
</body>
</html>
@@ -0,0 +1,79 @@
<!doctype html>
<html lang="en-US">
<head>
<title>Swagger UI: OAuth2 Redirect</title>
</head>
<body>
<script>
'use strict';
function run () {
var oauth2 = window.opener.swaggerUIRedirectOauth2;
var sentState = oauth2.state;
var redirectUrl = oauth2.redirectUrl;
var isValid, qp, arr;
if (/code|token|error/.test(window.location.hash)) {
qp = window.location.hash.substring(1).replace('?', '&');
} else {
qp = location.search.substring(1);
}
arr = qp.split("&");
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';});
qp = qp ? JSON.parse('{' + arr.join() + '}',
function (key, value) {
return key === "" ? value : decodeURIComponent(value);
}
) : {};
isValid = qp.state === sentState;
if ((
oauth2.auth.schema.get("flow") === "accessCode" ||
oauth2.auth.schema.get("flow") === "authorizationCode" ||
oauth2.auth.schema.get("flow") === "authorization_code"
) && !oauth2.auth.code) {
if (!isValid) {
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "warning",
message: "Authorization may be unsafe, passed state was changed in server. The passed state wasn't returned from auth server."
});
}
if (qp.code) {
delete oauth2.state;
oauth2.auth.code = qp.code;
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
} else {
let oauthErrorMsg;
if (qp.error) {
oauthErrorMsg = "["+qp.error+"]: " +
(qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
(qp.error_uri ? "More info: "+qp.error_uri : "");
}
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "error",
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server."
});
}
} else {
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
}
window.close();
}
if (document.readyState !== 'loading') {
run();
} else {
document.addEventListener('DOMContentLoaded', function () {
run();
});
}
</script>
</body>
</html>
@@ -0,0 +1,20 @@
window.onload = function() {
//<editor-fold desc="Changeable Configuration Block">
// the following lines will be replaced by docker/configurator, when it runs in a docker-container
window.ui = SwaggerUIBundle({
url: "eon_CRM_Contract_API.json",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
});
//</editor-fold>
};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -83,12 +83,12 @@ BEGIN
RETURN
SELECT :IBAN as IBAN,
:IBAN_COUNTRY as COUNTRY,
:IBAN_BANKCODE AS BANKCODE,
LEFT(:BANKNAMEPARAM, 250) as BANKNAME,
:SWIFTNOPARAM as SWIFTNO,
:ACCOUNT_PARAM as ACCOUNT
FROM DUMMY;
:IBAN_COUNTRY as COUNTRY,
:IBAN_BANKCODE AS BANKCODE,
LEFT(:BANKNAMEPARAM, 250) as BANKNAME,
:SWIFTNOPARAM as SWIFTNO,
:ACCOUNT_PARAM as ACCOUNT
FROM DUMMY;
@@ -97,3 +97,33 @@ END;
/*
--SELECT * FROM "INTEGRATION_DATA".EON_BP_GETBANKDETAILS('GB19 REVO 00997000245823');
-- select * FROM "A19753_EON_P01".ODSC WHERE "CountryCod" = 'AT'-- "BankCode" = '60000';
SELECT * FROM "INTEGRATION_DATA".EON_BP_GETBANKDETAILS('AT026000000001349870');
https://de.wikipedia.org/wiki/Internationale_Bankkontonummer#IBAN-Struktur_in_verschiedenen_L%C3%A4ndern
DEpp bbbb bbbb kkkk kkkk kk
Österreich ATpp bbbb bkkk kkkk kkkk
Schweiz CHpp bbbb bkkk kkkk kkkk k
Dänemark DKpp bbbb kkkk kkkk kK
Niederlande NLpp bbbb kkkk kkkk kk
Belgien BEpp bbbk kkkk kkKK
Italien ITpp Kbbb bbss sssk kkkk kkkk kkk
Luxemburg LUpp bbbk kkkk kkkk kkkk
Tschechien CZpp bbbb kkkk kkkk kkkk kkkk
Polen PLpp bbbs sssK kkkk kkkk kkkk kkkk
Schweden SEpp bbbk kkkk kkkk kkkk kkkK
Frankreich FRpp bbbb bsss sskk kkkk kkkk kKK
LT Litauen 20 LTpp bbbb bkkk kkkk kkkk
Vereinigtes Königreich (GB) GBpp bbbb ssss sskk kkkk kk
*/
+159
View File
@@ -0,0 +1,159 @@
//HTTP CALL
function doHTTPCall(oCdrCallId) {
//http://172.17.12.201:8080/B1iXcellerator/exec/ipo/vP.0010000104.in_HCSX/com.sap.b1i.vplatform.runtime/INB_HT_CALL_SYNC_XPT/INB_HT_CALL_SYNC_XPT.ipo/proc?biu=uni.eon.emob.addcdr&SysId=0010000100&CdrCallId=4aa9b243be184a4abdb4179f375459be
var destn_pkg = "eon.ServiceLayer";
var dest_name = "B1I";
try
{
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.GET, "");
var oSysId = "0010000100";
// oCdrCallId = "4aa9b243be184a4abdb4179f375459be";
req.parameters.set("biu", "uni.eon.emob.addcdr");
req.parameters.set("msglog", "true");
req.parameters.set("SysId", oSysId);
req.parameters.set("CdrCallId", oCdrCallId);
//, "/httpdest.png");
client.request(req, dest);
var response = client.getResponse();
var b1iResp = response.body.asString()
$.response.status = $.net.http.OK;
$.response.contentType = "text/xml";
$.response.setBody(b1iResp);
} catch (e) {
$.response.contentType = "text/plain";
$.response.setBody(e.message);
}
}
function PutDataInTable() {
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 query2;
// var output = {results: [] };
try {
query =
"INSERT INTO \"NICEPORTAL\".\"CHARGEDATA\" (ID,CALLID,CDRID,EVSEID,CONTRACTID,INSTANCE,TOKENTYPE,CONSUMEDENERGY,OPERATORID,OPERATORNAME,CHARGEPOINTTYPE,MAXSOCKETPOWER,ADDRESS,ZIP,CITY,COUNTRY,PROVIDERID,PROVIDERNAME,CHARGINGSTARTTIME,CHARGINGSTOPTIME,PARKINGSTARTTIME,PARKINGSTOPTIME,METERSTART,METERSTOP,TARIFF,CURRENCY,VAT,BILLINGVALUEBRUTTO,BILLINGVALUENETTO,PARKINGTIMEPRICEBRUTTO,PARKINGTIMEPRICENETTO,ADITIONALPRICEBRUTTO,ADITIONALPRICENETTO,B2CPRICING,ASSETOWNERPRICING,CPOPRICING,JSONRAW,OPERATORSUBMANDANT,FREECHARGE,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_TRANSACTIONDATA_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
//query = "INSERT INTO \"NICEPORTAL\".\"CHARGEDATA\" (ID,CALLID,CDRID,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_TRANSACTIONDATA_ID\".NEXTVAL,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
pstmt = conn.prepareStatement(query);
pstmt.setString(1, pdcdrObj.callId.toString());
pstmt.setString(2, pdcdrObj.chargeData[0].cdrId.toString());
pstmt.setString(3, pdcdrObj.chargeData[0].evseID.toString());
pstmt.setString(4, pdcdrObj.chargeData[0].contractId.toString());
pstmt.setString(5, pdcdrObj.chargeData[0].emt.instance.toString());
pstmt.setString(6, pdcdrObj.chargeData[0].emt.tokenType.toString());
pstmt.setString(7, pdcdrObj.chargeData[0].consumedEnergy.toString());
pstmt.setString(8, pdcdrObj.chargeData[0].evseDetails.operatorId.toString());
pstmt.setString(9, pdcdrObj.chargeData[0].evseDetails.operatorName.toString());
pstmt.setString(10, pdcdrObj.chargeData[0].evseDetails.connectorType.chargePointType.toString());
pstmt.setString(11, pdcdrObj.chargeData[0].evseDetails.connectorType.maxSocketPower.toString());
pstmt.setString(12, pdcdrObj.chargeData[0].evseDetails.location.address.toString());
pstmt.setString(13, pdcdrObj.chargeData[0].evseDetails.location.zip.toString());
pstmt.setString(14, pdcdrObj.chargeData[0].evseDetails.location.city.toString());
pstmt.setString(15, pdcdrObj.chargeData[0].evseDetails.location.country.toString());
pstmt.setString(16, pdcdrObj.chargeData[0].contractDetails.providerID.toString());
pstmt.setString(17, pdcdrObj.chargeData[0].contractDetails.providerName.toString());
pstmt.setString(18, pdcdrObj.chargeData[0].sessionDetails.chargingSession.startTime.toString());
pstmt.setString(19, pdcdrObj.chargeData[0].sessionDetails.chargingSession.stopTime.toString());
pstmt.setString(20, pdcdrObj.chargeData[0].sessionDetails.parkingSession.startTime.toString());
pstmt.setString(21, pdcdrObj.chargeData[0].sessionDetails.parkingSession.stopTime.toString());
pstmt.setString(22, pdcdrObj.chargeData[0].meterValueDetails.meterStart.toString());
pstmt.setString(23, pdcdrObj.chargeData[0].meterValueDetails.meterStop.toString());
//test = JSON.stringify(pdcdrObj.callId.toString());
pstmt.setString(24, pdcdrObj.chargeData[0].b2cPricing.tariff.toString());
pstmt.setString(25, pdcdrObj.chargeData[0].b2cPricing.currency.toString());
pstmt.setString(26, pdcdrObj.chargeData[0].b2cPricing.vat.toString());
pstmt.setString(27, pdcdrObj.chargeData[0].b2cPricing.billingValueBrutto.toString());
pstmt.setString(28, pdcdrObj.chargeData[0].b2cPricing.billingValueNetto.toString());
pstmt.setString(29, pdcdrObj.chargeData[0].b2cPricing.billingItems[0].itemPriceBrutto.toString());
pstmt.setString(30, pdcdrObj.chargeData[0].b2cPricing.billingItems[0].itemPriceNetto.toString());
pstmt.setString(31, pdcdrObj.chargeData[0].b2cPricing.billingItems[1].itemPriceBrutto.toString());
pstmt.setString(32, pdcdrObj.chargeData[0].b2cPricing.billingItems[1].itemPriceNetto.toString());
pstmt.setString(33, JSON.stringify(pdcdrObj.chargeData[0].b2cPricing));
pstmt.setString(34, JSON.stringify(pdcdrObj.chargeData[0].assetOwnerPricing));
pstmt.setString(35, JSON.stringify(pdcdrObj.chargeData[0].cpoPricing));
pstmt.setString(36, JSON.stringify(pdcdrObj));
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));
rs = pstmt.executeUpdate();
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) {
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;
}
vals.status = 'success'
vals.description = 'Data accepted and proceeded'
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;
}
var content = $.request.body.asString();
//var cdrObj = JSON.parse(content);
//var ChargeDataObj = cdrObj.chargeData[0].cdrId;
// doHTTPCall("4aa9b243be184a4abdb4179f375459be");
PutDataInTable();
// var result = JSON.stringify(cdrObj.callId);
// var result = JSON.stringify(ChargeDataObj);
// $.response.contentType = 'application/json';
// $.response.setBody(result);
// $.response.status = $.net.http.OK;
+559 -120
View File
@@ -1,6 +1,29 @@
//Letzte Änderung 08.12.2020 (v6.3) Achtung nun Adressmapping über CRM ID
//Letzte Änderung 11.01.2021 v6.4 Implementier duplicatebp für BFV Verträge
// 07.02.2022 Anpassung IT IBAN
// 16.02.2022 IBAN Update nur noch wenn IBAN in Payload vorhanden
// 01.06.2022 Language Code Implementierung
// 19.09.2022 Adress2 Mapping
// 18.10.2022 Versandart wird Pflichtfeld in der GP SST (CBU)
// https://jira.eon.com/browse/EMPEPI1-124
// 18.11.2022 8.2 CBU Banken aus IBAN ableiten
// https://jira.eon.com/browse/EMPEPI1-130
// 24.01.2023 CBU: Existenz einer E-Mail-Adresse bei Versandart M prüfen
// https://jira.eon.com/browse/EMPEPI1-130
// 29.06.2023 https://jira.eon.com/browse/EMPEPI1-281 Prüfung ob Lieferant exisitiert und Update BP -L
// 03.11.2023 Bugfix copybp -L (TS)
// 09.11.2023 fix B2B Adress BuildingFloorRoom
// 25.01.2024 CSV Versandart soll nicht überschrieben werden
// 23.07.2024 BUS-7580 Anpassung Einzugsermächtigung auch auf tNO
// 13.11.2024 BUS-9352 Anpassung Zahlungsbedingung
// 28.11.2024 Beim GP muss der Firmenname > 50 Zeichen angepasst werden, das alles >50Zeichen künfitg in Firmenname 2 statt Adresszeile 3
// 14.03.2025 BUS-11342 SwiftNo/BIC im Update BankAccounts ergänzt
// 23.05.2025 BUS-12158 Erweiterung der Geschäftspartner-API um Parameter f. Buyer/Seller/Leitweg-ID
var slib = $.import("uniorg.ServiceLayer", "B1SLLogic");
var slDest = $.import("uniorg.destinations", "uodestlib");
var bpbl = $.import("uniorg.eon.libs", "bp_businesslogic");
var copybplib = $.import("uniorg.eon.libs", "copybp");
var ParDebug = false;
var output = {};
@@ -21,7 +44,8 @@ var groupcode_b2m = 103;
var cmpprivate_b2c = "cPrivate";
var cmpprivate_b2b = "cCompany";
var cmpprivate_b2m = "cCompany";
var service_version = '6.2';
var use_iban = false;
var service_version = '9.7';
function setOutputMessage() {
@@ -55,23 +79,46 @@ function convertToISODate(dateString) {
}
}
function checkSupplierExist(cardcode) {
var suppcardcode = cardcode + '-L';
var conn = $.db.getConnection();
var pstmt;
var exists = false;
//var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"A19753_P01_TEST03\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
//vendeor var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"XXREPXX\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
var query = "SELECT T0.\"CardCode\" FROM \"XXREPXX\".\"OCRD\" T0 WHERE T0.\"CardCode\" = ?";
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setString(1, suppcardcode);
var rs = pstmt.executeQuery();
exists = rs.next();
rs.close();
pstmt.close();
conn.close();
return exists;
}
function getCustRECACC(custpgnr) {
var conn = $.db.getConnection();
var pstmt;
//var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"A19753_P01_TEST03\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
//vendeor var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"XXREPXX\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
var query = "SELECT T0.\"U_EON_RECACC_PAY\" FROM \"XXREPXX\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
query = query.replace(/XXREPXX/g, UserComp)
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setString(1, custpgnr);
var rs = pstmt.executeQuery();
if (!rs.next()) {
// outMsg = {};
// outMsg.method = "getnexval from sequence error";
// outMsg.status = "error";
//outMsg.message = e.message;
// outMsg = {};
// outMsg.method = "getnexval from sequence error";
// outMsg.status = "error";
// outMsg.message = e.message;
//outMessages.push(outMsg);
} else {
return rs.getString(1);
@@ -81,6 +128,54 @@ function getCustRECACC(custpgnr) {
conn.close();
}
function getLanguageCode(ISOCODE) {
var conn = $.db.getConnection();
var pstmt;
//var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"A19753_P01_TEST03\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
//vendeor var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"XXREPXX\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
var query = 'SELECT T0."Code" FROM "XXREPXX".OLNG T0 WHERE upper(T0."ShortName") = upper(?)';
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setString(1, ISOCODE);
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 getPaymentTerm(PaymentName) {
var conn = $.db.getConnection();
var pstmt;
//var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"A19753_P01_TEST03\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
//vendeor var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"XXREPXX\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
var query = 'SELECT T0."GroupNum" FROM "XXREPXX".OCTG T0 WHERE upper(T0."PymntGroup") = upper(?)';
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setString(1, PaymentName);
var rs = pstmt.executeQuery();
if (!rs.next()) {
throw new Error(PaymentName + " not found in SAP B1 Payment Terms(OCTG).");
} else {
return rs.getInteger(1);
}
rs.close();
pstmt.close();
conn.close();
}
function splitcardname(mycardname) {
var mycardnamenew = [];
if (mycardname.length > 50) {
@@ -134,6 +229,182 @@ function getnextvalsepaid() {
conn.close();
}
function parseIBAN(iban) {
var conn = $.hdb.getConnection();
try {
var myCountry = iban.substring(0, 2);
var rs1 = conn.executeQuery('SELECT COUNT(\'A\') as COUNT_COUNTRY FROM "INTEGRATION_DATA".BANKS_SCHEMA WHERE COUNTRY = ? ; ', myCountry);
if (rs1[0].COUNT_COUNTRY == 0) {
throw new Error(myCountry + " IBAN currently not supported.");
}
var rs2 = conn.executeQuery('SELECT FULLLENGHTH FROM "INTEGRATION_DATA".BANKS_SCHEMA WHERE COUNTRY = ? ; ', myCountry);
if (rs2[0].FULLLENGHTH !== iban.length) {
throw new Error(myCountry + " IBAN length invalid.");
}
var rs = conn.executeQuery('SELECT * FROM "INTEGRATION_DATA".EON_BP_GETBANKDETAILS(?); ', iban);
var bankDetails = {
BankCountry: rs[0].COUNTRY,
BankCode: rs[0].BANKCODE,
AccountNo: rs[0].ACCOUNT,
SwiftNo: rs[0].SWIFTNO,
BankName: rs[0].BANKNAME
};
return bankDetails;
} catch (error) {
outMsg = {};
outMsg.method = "parseIBAN";
outMsg.status = "error";
outMsg.message = error.message;
outMessages.push(outMsg);
outStatus = "error";
return false;
} finally {
conn.close();
}
// throw new Error(myCountry + " IBAN currently not supported.")
/*
var myCountry = iban.substring(0, 2);
switch (myCountry) {
case 'DE':
return {
BankCountry: myCountry,
BankCode: iban.substring(4, 12),
AccountNo: iban.substring(12, 23)
};
case 'IT':
return {
BankCountry: myCountry,
BankCode: iban.substring(5, 10),
Branch: iban.substring(10, 15),
AccountNo: iban.substring(15, 27)
};
default:
throw new Error(myCountry + " IBAN currently not supported.")
}
*/
}
function checkShippingType(_shippingType, _schema) {
var conn = $.hdb.getConnection();
try {
conn.executeUpdate("SET SCHEMA \"" + _schema + "\"");
// TODO: Umstellen auf "@UO_SPOOL_TYPES"
var rs = conn.executeQuery('SELECT "Code" FROM "@UO_OUTPUT_RULES" WHERE "Code"=? ', _shippingType);
myDebug.checkShippingType = rs;
return rs.length > 0;
} catch (error) {
outMsg = {};
outMsg.method = "checkShippingType";
outMsg.status = "error";
outMsg.message = error.message;
outMessages.push(outMsg);
return false;
} finally {
conn.close();
}
}
function checkShippingTypeMail(_email) {
if (_email !== undefined) {
if (_email.length === 0) {
outMsg = {};
outMsg.method = "checkShippingTypeMail";
outMsg.status = "error";
outMsg.message = "E-mail address is missing but shipping type is Mail.";
outMessages.push(outMsg);
outStatus = "error";
}
} else {
outMsg = {};
outMsg.method = "checkShippingTypeMail";
outMsg.status = "error";
outMsg.message = "E-mail address is missing but shipping type is Mail.";
outMessages.push(outMsg);
outStatus = "error";
}
}
function createBankIfMissing(iban, SESSIONID, NODEID) {
outMsg = {};
outMsg.method = "checkBank";
outMsg.status = "error";
if (iban) {
var bankDetails = parseIBAN(iban);
if (bankDetails === false) {
return;
}
var conn = $.hdb.getConnection();
conn.executeUpdate("SET SCHEMA \"" + UserComp + "\"");
var rs = conn.executeQuery('SELECT "AbsEntry" FROM ODSC WHERE "BankCode"=? AND "CountryCod"=?', bankDetails.BankCode, bankDetails.BankCountry);
myDebug.queryBankResult = rs;
if (rs.length === 0) {
outMsg.status = "success";
outMsg.message = "not exists";
outMessages.push(outMsg);
outMsg = {};
outMsg.method = "createBank";
var bankObj = {
"BankCode": bankDetails.BankCode,
"CountryCode": bankDetails.BankCountry,
"BankName": bankDetails.BankName,
"SwiftNo": bankDetails.SwiftNo
};
myDebug.createBankObj = bankObj;
var responseCreate = slib.postDynamicEntity("Banks", JSON.stringify(bankObj), SESSIONID, NODEID);
outMsg.statuscode = responseCreate.status;
myDebug.responseBankCreate = JSON.parse(responseCreate.body.asString());
if (responseCreate.status >= 200 && responseCreate.status < 300) {
outMsg.status = "success";
outMessages.push(outMsg);
} else {
outMsg.status = "error";
//outMsg.message = myDebug.responseBankCreate;
outStatus = "error";
var slError = myDebug.responseBankCreate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responseBankCreate);
}
outMsg.response = myDebug.responseBankCreate;
outErrorMessages.push(outMsg);
}
} else {
outMsg.status = "success";
outMsg.message = "exists";
outMessages.push(outMsg);
}
conn.close();
} else {
outMsg.status = "error";
outStatus = "error";
outMsg.message = "IBAN is missing";
outMessages.push(outMsg);
}
}
function buildBPObj(JbpObj, SBOOBJ) {
var myseries = '';
var mygroupcode = '';
@@ -142,8 +413,8 @@ function buildBPObj(JbpObj, SBOOBJ) {
var mybpcontactname = '';
switch (JbpObj.group) {
case 'B2C':
mycardname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
mycardname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
mybpcontactname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
myseries = series_b2c;
mygroupcode = groupcode_b2c;
mycmpprivate = cmpprivate_b2c;
@@ -151,7 +422,7 @@ function buildBPObj(JbpObj, SBOOBJ) {
case 'B2B':
//mycardname = JbpObj.name.toString();
mycardname = JbpObj.addresses[0].address.toString();
mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
mybpcontactname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
myseries = series_b2b;
mygroupcode = groupcode_b2b;
mycmpprivate = cmpprivate_b2b;
@@ -159,14 +430,14 @@ function buildBPObj(JbpObj, SBOOBJ) {
case 'B2M':
//mycardname = JbpObj.name.toString();
mycardname = JbpObj.addresses[0].address.toString();
mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
mybpcontactname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
myseries = series_b2m;
mygroupcode = groupcode_b2m;
mycmpprivate = cmpprivate_b2m;
break;
default:
mycardname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
mycardname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
mybpcontactname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
myseries = series_b2c;
mygroupcode = groupcode_b2c;
mycmpprivate = cmpprivate_b2c;
@@ -182,18 +453,25 @@ function buildBPObj(JbpObj, SBOOBJ) {
bpObj.GroupCode = mygroupcode; // JbpObj.group.toString();
bpObj.Phone1 = JbpObj.phone.toString();
bpObj.Cellular = JbpObj.mobile_phone.toString();
// To Do: Language Übersetzen
bpObj.LanguageCode = getLanguageCode(JbpObj.language_code.toString());
if (JbpObj.vatid) {
bpObj.FederalTaxID = JbpObj.vatid.toString();
}
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
if (JbpObj.bank_account.sepa_mandate.toString() === 'Ja') {
bpObj.PayTermsGrpCode = 13;
}
else if (JbpObj.payment_term)
{
bpObj.PayTermsGrpCode = getPaymentTerm(JbpObj.payment_term);
}
bpObj.EmailAddress = JbpObj.email.toString();
bpObj.U_EON_ID_CRM = JbpObj.id_crm.toString();
bpObj.U_EON_ID_CRM_INTERNAL = JbpObj.id_msd.toString();
if (JbpObj.shipping_type)
{
bpObj.U_UO_OUTPUT_VSARTAR = JbpObj.shipping_type.toString();
if (JbpObj.shipping_type && !(SBOOBJ.U_UO_OUTPUT_VSARTAR && SBOOBJ.U_UO_OUTPUT_VSARTAR in ['CSV'])) {
bpObj.U_UO_OUTPUT_VSARTAR = JbpObj.shipping_type.toString();
}
if (!JbpObj.pgnr) {
@@ -208,14 +486,17 @@ function buildBPObj(JbpObj, SBOOBJ) {
bpObj.Affiliate = 'tYES';
}
if (JbpObj.res_prop===true) {
bpObj.U_EON_WVB = 'Y';
}
if (JbpObj.res_prop === true) {
bpObj.U_EON_WVB = 'Y';
}
if (JbpObj.res_prop === false) {
bpObj.U_EON_WVB = 'N';
}
if (JbpObj.res_prop===false) {
bpObj.U_EON_WVB = 'N';
}
bpObj.U_UO_EDI_BUYER_ID = JbpObj.e_invoice_buyerid;
bpObj.U_UO_EDI_SELLER_ID = JbpObj.e_invoice_sellerid;
bpObj.U_UO_EDI_ROUTING_ID = JbpObj.e_invoice_routingid;
bpObj.BPAddresses = [];
// bpObj.BPAddresses[0].AddressName = 'test';
@@ -226,22 +507,24 @@ function buildBPObj(JbpObj, SBOOBJ) {
// mybpAdresses.g = g;
// mybpAdresses.h = h;
var myaddressbpname = JbpObj.addresses[h].street.toString() + ' ' + JbpObj.addresses[h].street_no.toString();
//var myaddressbpname = JbpObj.addresses[h].addressid.toString();
mybpAdresses.AddressName = SBOOBJ.BPAddresses[g].AddressName;
mybpAdresses.AddressType = SBOOBJ.BPAddresses[g].AddressType;
mybpAdresses.BPCode = SBOOBJ.BPAddresses[g].BPCode;
mybpAdresses.RowNum = SBOOBJ.BPAddresses[g].RowNum;
if (SBOOBJ.BPAddresses[g].AddressName === myaddressbpname && SBOOBJ.BPAddresses[g].AddressType === convertAdrType(JbpObj.addresses[
h].type)) {
if (SBOOBJ.BPAddresses[g].U_EON_EXT_ID === JbpObj.addresses[h].addressid.toString() && SBOOBJ.BPAddresses[g].AddressType ===
convertAdrType(JbpObj.addresses[
h].type)) {
//mybpAdresses.AddressName = JbpObj.addresses[h].address.toString();
mybpAdresses.AddressName = myaddressbpname;
mybpAdresses.Street = JbpObj.addresses[h].street.toString();
//mybpAdresses.Block = 'test';
mybpAdresses.ZipCode = JbpObj.addresses[h].zip_code.toString();
mybpAdresses.City = JbpObj.addresses[h].city.toString();
//mybpAdresses.County = 'test';
mybpAdresses.Country = JbpObj.addresses[h].country.toString();
if (JbpObj.addresses[h].standard = 'ja') {
if (JbpObj.addresses[h].standard === 'yes') {
if (convertAdrType(JbpObj.addresses[h].type) === 'bo_BillTo') {
bpObj.BilltoDefault = myaddressbpname;
}
@@ -255,20 +538,28 @@ function buildBPObj(JbpObj, SBOOBJ) {
//mybpAdresses.TaxCode = 'test';
//mybpAdresses.BuildingFloorRoom = 'test';
/*
if (JbpObj.addresses[h].type === 'B') {
mybpAdresses.AddressType = 'bo_BillTo';
} else {
mybpAdresses.AddressType = 'bo_ShipTo';
}
*/
if (JbpObj.group == 'B2B' || JbpObj.group == 'B2M') {
if (JbpObj.addresses[h].type === 'B') {
mybpAdresses.AddressType = 'bo_BillTo';
} else {
mybpAdresses.AddressType = 'bo_ShipTo';
}
*/
if (JbpObj.group === 'B2B' || JbpObj.group === 'B2M') {
//mybpAdresses.AddressName2 = mycardname;
mybpAdresses.AddressName2 = myaddress23[0];
mybpAdresses.AddressName3 = myaddress23[1];
//mybpAdresses.AddressName3 = myaddress23[1];
mybpAdresses.U_CompanyName2 = myaddress23[1];
}
if (JbpObj.addresses[h].address2) {
mybpAdresses.BuildingFloorRoom = JbpObj.addresses[h].address2.toString();
}
if (JbpObj.addresses[h].address3) {
mybpAdresses.AddressName3 = JbpObj.addresses[h].address3.toString();
}
// if (JbpObj.addresses[h].address2) {
// mybpAdresses.AddressName2 = JbpObj.addresses[h].address2.toString();
// }
//mybpAdresses.TypeOfAddress = 'test';
mybpAdresses.StreetNo = JbpObj.addresses[h].street_no.toString();
mybpAdresses.U_EON_EXT_ID = JbpObj.addresses[h].addressid.toString();
@@ -292,12 +583,13 @@ function buildBPObj(JbpObj, SBOOBJ) {
var myaddbpname = JbpObj.addresses[h].street.toString() + ' ' + JbpObj.addresses[h].street_no.toString();
for (var g in SBOOBJ.BPAddresses) {
if (SBOOBJ.BPAddresses[g].AddressName === myaddbpname && SBOOBJ.BPAddresses[g].AddressType === convertAdrType(JbpObj.addresses[h].type)) {
if (SBOOBJ.BPAddresses[g].U_EON_EXT_ID === JbpObj.addresses[h].addressid.toString() && SBOOBJ.BPAddresses[g].AddressType ===
convertAdrType(JbpObj.addresses[h].type)) {
myfound = true;
}
}
if (myfound == false) {
if (myfound === false) {
myaddbpAdresses.AddressName = myaddbpname; //JbpObj.addresses[h].address.toString();
myaddbpAdresses.Street = JbpObj.addresses[h].street.toString();
//myaddbpAdresses.Block = 'test';
@@ -309,7 +601,7 @@ function buildBPObj(JbpObj, SBOOBJ) {
//myaddbpAdresses.FederalTaxID = 'test';
//myaddbpAdresses.TaxCode = 'test';
//myaddbpAdresses.BuildingFloorRoom = 'test';
if (JbpObj.addresses[h].standard = 'ja') {
if (JbpObj.addresses[h].standard === 'yes') {
if (convertAdrType(JbpObj.addresses[h].type) === 'bo_BillTo') {
bpObj.BilltoDefault = myaddbpname;
}
@@ -319,10 +611,14 @@ function buildBPObj(JbpObj, SBOOBJ) {
}
myaddbpAdresses.AddressType = convertAdrType(JbpObj.addresses[h].type);
if (JbpObj.group == 'B2B' || JbpObj.group == 'B2M') {
if (JbpObj.group === 'B2B' || JbpObj.group === 'B2M') {
//myaddbpAdresses.AddressName2 = mycardname;
myaddbpAdresses.AddressName2 = myaddress23[0];
myaddbpAdresses.AddressName3 = myaddress23[1];
//myaddbpAdresses.AddressName3 = myaddress23[1];
myaddbpAdresses.U_CompanyName2 = myaddress23[1];
}
if (JbpObj.addresses[h].address2) {
myaddbpAdresses.BuildingFloorRoom = JbpObj.addresses[h].address2.toString();
}
if (JbpObj.addresses[h].address3) {
myaddbpAdresses.AddressName3 = JbpObj.addresses[h].address3.toString();
@@ -370,8 +666,8 @@ function buildBPObj(JbpObj, SBOOBJ) {
mybpContactEmployees.CardCode = SBOOBJ.ContactEmployees[cpB1].CardCode;
mybpContactEmployees.InternalCode = SBOOBJ.ContactEmployees[cpB1].InternalCode;
if (SBOOBJ.ContactEmployees[cpB1].Name == mybpcontactname) {
mybpContactEmployees.FirstName = JbpObj.name.toString();
mybpContactEmployees.LastName = JbpObj.surname.toString();
mybpContactEmployees.FirstName = JbpObj.name.toString().trim();
mybpContactEmployees.LastName = JbpObj.surname.toString().trim();
mybpContactEmployees.Title = JbpObj.title.toString();
mybpContactEmployees.U_EON_SALUTATION = JbpObj.salutation.toString();
bpObj.ContactPerson = mybpcontactname;
@@ -382,8 +678,8 @@ function buildBPObj(JbpObj, SBOOBJ) {
if (myfoundCP == false) {
mybpContactEmployees = {};
mybpContactEmployees.Name = mybpcontactname; //mycardname;
mybpContactEmployees.FirstName = JbpObj.name.toString();
mybpContactEmployees.LastName = JbpObj.surname.toString();
mybpContactEmployees.FirstName = JbpObj.name.toString().trim();
mybpContactEmployees.LastName = JbpObj.surname.toString().trim();
mybpContactEmployees.Title = JbpObj.title.toString();
mybpContactEmployees.U_EON_SALUTATION = JbpObj.salutation.toString();
bpObj.ContactPerson = mybpcontactname;
@@ -393,72 +689,106 @@ function buildBPObj(JbpObj, SBOOBJ) {
bpObj.BPBankAccounts = [];
var myfoundBank = false;
var myIBAN = JbpObj.bank_account.iban.toString().replace(/ /g, '');
var myCountry = myIBAN.substring(0, 2);
var myBankCode = myIBAN.substring(4, 12);
var myAccountNo = myIBAN.substring(12, 23);
var mySignatureDate = convertToISODate(JbpObj.bank_account.signature_date);
for (var ba in SBOOBJ.BPBankAccounts) {
var myBPBankAccounts = {};
myBPBankAccounts.BPCode = SBOOBJ.BPBankAccounts[ba].BPCode;
myBPBankAccounts.InternalKey = SBOOBJ.BPBankAccounts[ba].InternalKey;
myBPBankAccounts.Country = SBOOBJ.BPBankAccounts[ba].Country;
myBPBankAccounts.BankCode = SBOOBJ.BPBankAccounts[ba].BankCode;
myBPBankAccounts.AccountNo = SBOOBJ.BPBankAccounts[ba].AccountNo;
myBPBankAccounts.IBAN = SBOOBJ.BPBankAccounts[ba].IBAN;
if (SBOOBJ.BPBankAccounts[ba].IBAN.replace(/ /g, '') === myIBAN) {
myfoundBank = true;
if (JbpObj.bank_account.bic.toString() !== '') {
myBPBankAccounts.BICSwiftCode = JbpObj.bank_account.bic.toString();
}
myBPBankAccounts.AccountName = JbpObj.bank_account.account_owner.toString();
myBPBankAccounts.Street = JbpObj.bank_account.street.toString() + " " + JbpObj.bank_account.street_no.toString();
myBPBankAccounts.ZipCode = JbpObj.bank_account.zip_code.toString();
myBPBankAccounts.City = JbpObj.bank_account.city.toString();
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
myBPBankAccounts.SignatureDate = mySignatureDate;
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
if (SBOOBJ.BPBankAccounts[ba].MandateID == null) //|| SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10) > JbpObj.id_crm )
{
myBPBankAccounts.MandateID = JbpObj.id_crm + getnextvalsepaid();
}
bpObj.CollectionAuthorization = 'tYES';
}
}
bpObj.BankCountry = myCountry;
bpObj.DefaultBankCode = myBankCode;
bpObj.DefaultAccount = myAccountNo;
bpObj.BPBankAccounts.push(myBPBankAccounts);
if (myIBAN !== '') {
use_iban = true;
} else {
use_iban = false;
}
if (myfoundBank === false) {
myBPBankAccounts = {};
myBPBankAccounts.IBAN = myIBAN;
myBPBankAccounts.Country = myCountry;
myBPBankAccounts.BankCode = myBankCode;
myBPBankAccounts.AccountNo = myAccountNo;
if (JbpObj.bank_account.bic.toString() !== '') {
myBPBankAccounts.BICSwiftCode = JbpObj.bank_account.bic.toString();
}
myBPBankAccounts.AccountName = JbpObj.bank_account.account_owner.toString();
myBPBankAccounts.Street = JbpObj.bank_account.street.toString() + " " + JbpObj.bank_account.street_no.toString();
myBPBankAccounts.ZipCode = JbpObj.bank_account.zip_code.toString();
myBPBankAccounts.City = JbpObj.bank_account.city.toString();
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
myBPBankAccounts.SignatureDate = mySignatureDate;
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
// myBPBankAccounts.MandateID = SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10);
// if (SBOOBJ.BPBankAccounts[ba].MandateID.IsNullOrEmpty ) //|| SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10) > JbpObj.id_crm
//{
myBPBankAccounts.MandateID = JbpObj.id_crm + getnextvalsepaid();
bpObj.CollectionAuthorization = 'tYES';
myBPBankAccounts.SEPASeqType = 'sstFRST';
//}
if (use_iban) {
var bankDetails = parseIBAN(myIBAN);
if (bankDetails === false) {;
} else {
var myCountry = bankDetails.BankCountry;
var myBankCode = bankDetails.BankCode;
var myAccountNo = bankDetails.AccountNo;
var mySwiftNo = bankDetails.SwiftNo;
var mySignatureDate = convertToISODate(JbpObj.bank_account.signature_date);
for (var ba in SBOOBJ.BPBankAccounts) {
var myBPBankAccounts = {};
myBPBankAccounts.BPCode = SBOOBJ.BPBankAccounts[ba].BPCode;
myBPBankAccounts.InternalKey = SBOOBJ.BPBankAccounts[ba].InternalKey;
myBPBankAccounts.Country = SBOOBJ.BPBankAccounts[ba].Country;
myBPBankAccounts.BankCode = SBOOBJ.BPBankAccounts[ba].BankCode;
myBPBankAccounts.AccountNo = SBOOBJ.BPBankAccounts[ba].AccountNo;
myBPBankAccounts.IBAN = SBOOBJ.BPBankAccounts[ba].IBAN;
myBPBankAccounts.MandateID = SBOOBJ.BPBankAccounts[ba].MandateID;
myBPBankAccounts.SEPASeqType = SBOOBJ.BPBankAccounts[ba].SEPASeqType;
if (SBOOBJ.BPBankAccounts[ba].IBAN.replace(/ /g, '') === myIBAN) {
myfoundBank = true;
if (JbpObj.bank_account.bic.toString() !== '') {
myBPBankAccounts.BICSwiftCode = JbpObj.bank_account.bic.toString();
}
else if (mySwiftNo.toString() !== '')
{
myBPBankAccounts.BICSwiftCode = mySwiftNo.toString();
}
myBPBankAccounts.Country = myCountry;
myBPBankAccounts.BankCode = myBankCode;
myBPBankAccounts.AccountNo = myAccountNo;
myBPBankAccounts.AccountName = JbpObj.bank_account.account_owner.toString();
myBPBankAccounts.Street = JbpObj.bank_account.street.toString() + " " + JbpObj.bank_account.street_no.toString();
myBPBankAccounts.ZipCode = JbpObj.bank_account.zip_code.toString();
myBPBankAccounts.City = JbpObj.bank_account.city.toString();
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
myBPBankAccounts.SignatureDate = mySignatureDate;
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
if (SBOOBJ.BPBankAccounts[ba].MandateID == null) //|| SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10) > JbpObj.id_crm )
{
myBPBankAccounts.MandateID = JbpObj.id_crm + getnextvalsepaid();
}
bpObj.CollectionAuthorization = 'tYES';
}
//22.07.2024 BUS-7580
if (JbpObj.bank_account.sepa_mandate.toString() == 'Nein') {
bpObj.CollectionAuthorization = 'tNO';
}
}
bpObj.BankCountry = myCountry;
bpObj.DefaultBankCode = myBankCode;
bpObj.DefaultAccount = myAccountNo;
bpObj.BPBankAccounts.push(myBPBankAccounts);
}
if (myfoundBank === false) {
myBPBankAccounts = {};
myBPBankAccounts.IBAN = myIBAN;
myBPBankAccounts.Country = myCountry;
myBPBankAccounts.BankCode = myBankCode;
myBPBankAccounts.AccountNo = myAccountNo;
if (JbpObj.bank_account.bic.toString() !== '') {
myBPBankAccounts.BICSwiftCode = JbpObj.bank_account.bic.toString();
}
myBPBankAccounts.AccountName = JbpObj.bank_account.account_owner.toString();
myBPBankAccounts.Street = JbpObj.bank_account.street.toString() + " " + JbpObj.bank_account.street_no.toString();
myBPBankAccounts.ZipCode = JbpObj.bank_account.zip_code.toString();
myBPBankAccounts.City = JbpObj.bank_account.city.toString();
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
myBPBankAccounts.SignatureDate = mySignatureDate;
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
// myBPBankAccounts.MandateID = SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10);
// if (SBOOBJ.BPBankAccounts[ba].MandateID.IsNullOrEmpty ) //|| SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10) > JbpObj.id_crm
//{
myBPBankAccounts.MandateID = JbpObj.id_crm + getnextvalsepaid();
bpObj.CollectionAuthorization = 'tYES';
myBPBankAccounts.SEPASeqType = 'sstFRST';
//}
}
//23.07.2024 BUS-7580
if (JbpObj.bank_account.sepa_mandate.toString() == 'Nein') {
bpObj.CollectionAuthorization = 'tNO';
}
bpObj.BankCountry = myCountry;
bpObj.DefaultBankCode = myBankCode;
bpObj.DefaultAccount = myAccountNo;
bpObj.BPBankAccounts.push(myBPBankAccounts);
}
}
bpObj.BankCountry = myCountry;
bpObj.DefaultBankCode = myBankCode;
bpObj.DefaultAccount = myAccountNo;
bpObj.BPBankAccounts.push(myBPBankAccounts);
}
return bpObj;
@@ -490,6 +820,8 @@ function upsBP(searchparam, JbpObj) {
loginInfo.Password = UserPass;
loginInfo.CompanyDB = UserComp;
var slError;
// SL LOGIN
var response = slib.SLLogin(JSON.stringify(loginInfo), null, null);
@@ -505,22 +837,31 @@ function upsBP(searchparam, JbpObj) {
}
output.loginInfo = loginInfo;
// output.loginResponse = JSON.parse(response.body.asString());
var loginResponse;
try {
output.loginResponse = JSON.parse(response.body.asString());
loginResponse = JSON.parse(response.body.asString());
} catch (e) {
output.loginResponse = response.body.asString();
loginResponse = response.body.asString();
}
output.loginResponse = loginResponse;
if (response.status !== 200) {
outMsg = {};
outMsg.method = "login";
outMsg.status = "error";
outMsg.message = output.loginResponse;
//outMsg.message = output.loginResponse;
slError = loginResponse.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(loginResponse);
}
outMsg.response = loginResponse;
outMessages.push(outMsg);
outStatus = "error";
}
if (JbpObj.vatid) {
var checkmyvatid = bpbl.checkvatid(JbpObj.vatid, JbpObj.addresses[0].country.toUpperCase(), UserComp)
var checkmyvatid = bpbl.checkvatid(JbpObj.vatid, JbpObj.vatid.substring(0, 2).toUpperCase(), UserComp);
if (checkmyvatid != "true") {
outMsg = {};
outMsg.method = "checkVATID";
@@ -531,6 +872,42 @@ function upsBP(searchparam, JbpObj) {
}
}
// CBU 18.10.2022 Prüfung Versandart
if (JbpObj.shipping_type) {
var checkShippingTypeResult = checkShippingType(JbpObj.shipping_type, UserComp);
if (!checkShippingTypeResult) {
outMsg = {};
outMsg.method = "shipping_type";
outMsg.status = "error";
outMsg.message = "Shippingtype not valid: " + JbpObj.shipping_type;
outStatus = "error";
outMessages.push(outMsg);
} else {
// CBU 24.01.2023
if (JbpObj.shipping_type === "M") {
checkShippingTypeMail(JbpObj.email);
}
}
} else {
outMsg = {};
outMsg.method = "shipping_type";
outMsg.status = "error";
outMsg.message = "Shipping Type missing";
outStatus = "error";
outMessages.push(outMsg);
}
/*
CBU 25.11.2022
if (outStatus !== "error") {
if (JbpObj.bank_account.iban.toString().replace(/ /g, '') !== '') {
createBankIfMissing(JbpObj.bank_account.iban.toString().replace(/ /g, ''), SESSIONID, NODEID);
}
}
*/
if (outStatus !== "error") {
outMsg = {};
@@ -544,7 +921,12 @@ function upsBP(searchparam, JbpObj) {
// Removes metadata
//delete body["odata.metadata"];
var bodyGet = JSON.parse(responseGet.body.asString());
var bodyGet;
try {
bodyGet = JSON.parse(responseGet.body.asString());
} catch (e) {
bodyGet = response.responseGet.asString();
}
myDebug.statusGet = responseGet.status;
myDebug.responseGet = bodyGet;
outMsg.statuscode = responseGet.status;
@@ -556,7 +938,14 @@ function upsBP(searchparam, JbpObj) {
outMsg.message = "not exists";
} else {
outMsg.status = "error";
outMsg.message = bodyGet;
//outMsg.message = bodyGet;
slError = bodyGet.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(bodyGet);
}
outMsg.response = bodyGet;
outStatus = "error";
}
outMessages.push(outMsg);
@@ -578,12 +967,26 @@ function upsBP(searchparam, JbpObj) {
outMsg.status = "success";
} else {
outMsg.status = "error";
outMsg.message = bodyGetFull;
//outMsg.message = bodyGetFull;
slError = bodyGetFull.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(bodyGetFull);
}
outMsg.response = bodyGetFull;
outStatus = "error";
}
outMessages.push(outMsg);
}
// CBU 25.11.2022
if (outStatus !== "error") {
if (JbpObj.bank_account.iban.toString().replace(/ /g, '') !== '') {
createBankIfMissing(JbpObj.bank_account.iban.toString().replace(/ /g, ''), SESSIONID, NODEID);
}
}
if (outStatus !== "error") {
var consBPObject = buildBPObj(JbpObj, bodyGetFull);
@@ -604,12 +1007,26 @@ function upsBP(searchparam, JbpObj) {
outMsg.status = "error";
if (responseUpdate.body) {
myDebug.responseUpdate = JSON.parse(responseUpdate.body.asString());
outMsg.message = myDebug.responseUpdate;
//outMsg.message = myDebug.responseUpdate;
slError = myDebug.responseUpdate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responseUpdate);
}
outMsg.response = myDebug.responseUpdate;
outErrorMessages.push(outMsg);
}
outStatus = "error";
}
outMessages.push(outMsg);
if (outStatus !== "error" && checkSupplierExist(CardCode)) {
outMsg.method = "copyBP";
outMsg.paramCardCode = CardCode;
var bpoutput = copybplib.copyBP(ParDebug, CardCode);
outMsg.result = bpoutput;
outMessages.push(outMsg);
}
} else {
output.method = "createBP";
@@ -628,8 +1045,15 @@ function upsBP(searchparam, JbpObj) {
myDebug.Createmessage = "Create error occured";
output.errorCreatestatus = myDebug.Createmessage;
outMsg.status = "error";
outMsg.message = myDebug.responseCreate;
//outMsg.message = myDebug.responseCreate;
outStatus = "error";
slError = myDebug.responseCreate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responseCreate);
}
outMsg.response = myDebug.responseCreate;
outErrorMessages.push(outMsg);
}
outMessages.push(outMsg);
@@ -672,7 +1096,8 @@ function getnextval() {
function setBPCardCode(tableid, bpcardcode) {
var conn = $.db.getConnection();
var pstmt;
var query = "update \"NICEPORTAL\".\"UO_CRM_DATA_BP\" set B1_CARDCODE = '" + bpcardcode + "', UPDATE_TS = CURRENT_TIMESTAMP where ID =" + tableid;
var query = "update \"NICEPORTAL\".\"UO_CRM_DATA_BP\" set B1_CARDCODE = '" + bpcardcode + "', UPDATE_TS = CURRENT_TIMESTAMP where ID =" +
tableid;
pstmt = conn.prepareStatement(query);
// pstmt.setString(1,bpcardcode);
// pstmt.setString(2,tableid);
@@ -704,7 +1129,7 @@ function setRESPONSE(tableid, respstatus, respmessage, errormessage) {
function PutBPDataInTable() {
var pdcontent = $.request.body.asString();
// pdcontent = pdcontent.replace(/\"([^(\")\"]+)\":/g,"$1:\");
// pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:");
var JbpObj = JSON.parse(pdcontent);
var conn = $.db.getConnection();
var pstmt;
@@ -769,6 +1194,11 @@ function PutBPDataInTable() {
//var retUpsertBP = addBP(JSON.stringify(bpObj));
} catch (e) {
// push last outMsg if missing
if (outMsg.method && outMessages.indexOf(outMsg) === -1) {
outMsg.status = "canceled";
outMessages.push(outMsg);
}
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
@@ -792,6 +1222,7 @@ function PutBPDataInTable() {
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
vals.debugInfo = myDebug;
}
// vals.group = JbpObj.group.toString();
@@ -805,7 +1236,9 @@ function PutBPDataInTable() {
setRESPONSE(mynextval, outMsg.status, errbody, outErrorMessages);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
//$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
// auch bei Fehler HTTP Status 200, da der Response im CRM sonst evtl. nicht sauber verarbeitet wird
$.response.status = $.net.http.OK;
return;
}
vals.status = outStatus;
@@ -863,5 +1296,11 @@ if (!req){
output.error = "Invalid BP Request - " + req;
$.response.status = $.net.http.OK;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
}else{\n \n //addBP(JSON.stringify(bpObj));\n //updBP(JSON.stringify(bpObj));\n //GetOrders(req); \n}\n*/
$.response.setBody(JSON.stringify(output));
}else{
//addBP(JSON.stringify(bpObj));
//updBP(JSON.stringify(bpObj));
//GetOrders(req);
}
*/
+130 -528
View File
@@ -1,7 +1,6 @@
var slib = $.import("uniorg.ServiceLayer", "B1SLLogic");
var slDest = $.import("uniorg.destinations", "uodestlib");
var bpbl = $.import("uniorg.eon.libs", "bp_businesslogic");
var copybplib = $.import("uniorg.eon.libs", "copybp");
var ParDebug = false;
var output = {};
@@ -69,10 +68,10 @@ function getCustRECACC(custpgnr) {
var rs = pstmt.executeQuery();
if (!rs.next()) {
// outMsg = {};
// outMsg.method = "getnexval from sequence error";
// outMsg.status = "error";
//outMsg.message = e.message;
// outMsg = {};
// outMsg.method = "getnexval from sequence error";
// outMsg.status = "error";
// outMsg.message = e.message;
//outMessages.push(outMsg);
} else {
return rs.getString(1);
@@ -82,54 +81,6 @@ function getCustRECACC(custpgnr) {
conn.close();
}
function getLanguageCode(ISOCODE) {
var conn = $.db.getConnection();
var pstmt;
//var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"A19753_P01_TEST03\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
//vendeor var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"XXREPXX\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
var query = 'SELECT T0."Code" FROM "XXREPXX".OLNG T0 WHERE upper(T0."ShortName") = upper(?)';
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setString(1, ISOCODE);
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 getPaymentTerm(PaymentName) {
var conn = $.db.getConnection();
var pstmt;
//var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"A19753_P01_TEST03\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
//vendeor var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"XXREPXX\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
var query = 'SELECT T0."GroupNum" FROM "XXREPXX".OCTG T0 WHERE upper(T0."PymntGroup") = upper(?)';
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setString(1, PaymentName);
var rs = pstmt.executeQuery();
if (!rs.next()) {
throw new Error(PaymentName + " not found in SAP B1 Payment Terms(OCTG).");
} else {
return rs.getInteger(1);
}
rs.close();
pstmt.close();
conn.close();
}
function splitcardname(mycardname) {
var mycardnamenew = [];
if (mycardname.length > 50) {
@@ -183,182 +134,6 @@ function getnextvalsepaid() {
conn.close();
}
function parseIBAN(iban) {
var conn = $.hdb.getConnection();
try {
var myCountry = iban.substring(0, 2);
var rs1 = conn.executeQuery('SELECT COUNT(\'A\') as COUNT_COUNTRY FROM "INTEGRATION_DATA".BANKS_SCHEMA WHERE COUNTRY = ? ; ', myCountry);
if (rs1[0].COUNT_COUNTRY == 0) {
throw new Error(myCountry + " IBAN currently not supported.");
}
var rs2 = conn.executeQuery('SELECT FULLLENGHTH FROM "INTEGRATION_DATA".BANKS_SCHEMA WHERE COUNTRY = ? ; ', myCountry);
if (rs2[0].FULLLENGHTH !== iban.length) {
throw new Error(myCountry + " IBAN length invalid.");
}
var rs = conn.executeQuery('SELECT * FROM "INTEGRATION_DATA".EON_BP_GETBANKDETAILS(?); ', iban);
var bankDetails = {
BankCountry: rs[0].COUNTRY,
BankCode: rs[0].BANKCODE,
AccountNo: rs[0].ACCOUNT,
SwiftNo: rs[0].SWIFTNO,
BankName: rs[0].BANKNAME
};
return bankDetails;
} catch (error) {
outMsg = {};
outMsg.method = "parseIBAN";
outMsg.status = "error";
outMsg.message = error.message;
outMessages.push(outMsg);
outStatus = "error";
return false;
} finally {
conn.close();
}
// throw new Error(myCountry + " IBAN currently not supported.")
/*
var myCountry = iban.substring(0, 2);
switch (myCountry) {
case 'DE':
return {
BankCountry: myCountry,
BankCode: iban.substring(4, 12),
AccountNo: iban.substring(12, 23)
};
case 'IT':
return {
BankCountry: myCountry,
BankCode: iban.substring(5, 10),
BankBranch: iban.substring(10, 15),
AccountNo: iban.substring(15, 27)
};
default:
throw new Error(myCountry + " IBAN currently not supported.")
}
*/
}
function checkShippingType(_shippingType, _schema) {
var conn = $.hdb.getConnection();
try {
conn.executeUpdate("SET SCHEMA \"" + _schema + "\"");
// TODO: Umstellen auf "@UO_SPOOL_TYPES"
var rs = conn.executeQuery('SELECT "Code" FROM "@UO_OUTPUT_RULES" WHERE "Code"=? ', _shippingType);
myDebug.checkShippingType = rs;
return rs.length > 0;
} catch (error) {
outMsg = {};
outMsg.method = "checkShippingType";
outMsg.status = "error";
outMsg.message = error.message;
outMessages.push(outMsg);
return false;
} finally {
conn.close();
}
}
function checkShippingTypeMail(_email) {
if (_email !== undefined) {
if (_email.length === 0) {
outMsg = {};
outMsg.method = "checkShippingTypeMail";
outMsg.status = "error";
outMsg.message = "E-mail address is missing but shipping type is Mail.";
outMessages.push(outMsg);
outStatus = "error";
}
} else {
outMsg = {};
outMsg.method = "checkShippingTypeMail";
outMsg.status = "error";
outMsg.message = "E-mail address is missing but shipping type is Mail.";
outMessages.push(outMsg);
outStatus = "error";
}
}
function createBankIfMissing(iban, SESSIONID, NODEID) {
outMsg = {};
outMsg.method = "checkBank";
outMsg.status = "error";
if (iban) {
var bankDetails = parseIBAN(iban);
if (bankDetails === false) {
return;
}
var conn = $.hdb.getConnection();
conn.executeUpdate("SET SCHEMA \"" + UserComp + "\"");
var rs = conn.executeQuery('SELECT "AbsEntry" FROM ODSC WHERE "BankCode"=? AND "CountryCod"=?', bankDetails.BankCode, bankDetails.BankCountry);
myDebug.queryBankResult = rs;
if (rs.length === 0) {
outMsg.status = "success";
outMsg.message = "not exists";
outMessages.push(outMsg);
outMsg = {};
outMsg.method = "createBank";
var bankObj = {
"BankCode": bankDetails.BankCode,
"CountryCode": bankDetails.BankCountry,
"BankName": bankDetails.BankName,
"SwiftNo": bankDetails.SwiftNo
};
myDebug.createBankObj = bankObj;
var responseCreate = slib.postDynamicEntity("Banks", JSON.stringify(bankObj), SESSIONID, NODEID);
outMsg.statuscode = responseCreate.status;
myDebug.responseBankCreate = JSON.parse(responseCreate.body.asString());
if (responseCreate.status >= 200 && responseCreate.status < 300) {
outMsg.status = "success";
outMessages.push(outMsg);
} else {
outMsg.status = "error";
//outMsg.message = myDebug.responseBankCreate;
outStatus = "error";
var slError = myDebug.responseBankCreate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responseBankCreate);
}
outMsg.response = myDebug.responseBankCreate;
outErrorMessages.push(outMsg);
}
} else {
outMsg.status = "success";
outMsg.message = "exists";
outMessages.push(outMsg);
}
conn.close();
} else {
outMsg.status = "error";
outStatus = "error";
outMsg.message = "IBAN is missing";
outMessages.push(outMsg);
}
}
function buildBPObj(JbpObj, SBOOBJ) {
var myseries = '';
var mygroupcode = '';
@@ -367,8 +142,8 @@ function buildBPObj(JbpObj, SBOOBJ) {
var mybpcontactname = '';
switch (JbpObj.group) {
case 'B2C':
mycardname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
mybpcontactname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
mycardname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
myseries = series_b2c;
mygroupcode = groupcode_b2c;
mycmpprivate = cmpprivate_b2c;
@@ -376,7 +151,7 @@ function buildBPObj(JbpObj, SBOOBJ) {
case 'B2B':
//mycardname = JbpObj.name.toString();
mycardname = JbpObj.addresses[0].address.toString();
mybpcontactname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
myseries = series_b2b;
mygroupcode = groupcode_b2b;
mycmpprivate = cmpprivate_b2b;
@@ -384,14 +159,14 @@ function buildBPObj(JbpObj, SBOOBJ) {
case 'B2M':
//mycardname = JbpObj.name.toString();
mycardname = JbpObj.addresses[0].address.toString();
mybpcontactname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
myseries = series_b2m;
mygroupcode = groupcode_b2m;
mycmpprivate = cmpprivate_b2m;
break;
default:
mycardname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
mybpcontactname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
mycardname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
mybpcontactname = JbpObj.name.toString() + ' ' + JbpObj.surname.toString();
myseries = series_b2c;
mygroupcode = groupcode_b2c;
mycmpprivate = cmpprivate_b2c;
@@ -407,25 +182,18 @@ function buildBPObj(JbpObj, SBOOBJ) {
bpObj.GroupCode = mygroupcode; // JbpObj.group.toString();
bpObj.Phone1 = JbpObj.phone.toString();
bpObj.Cellular = JbpObj.mobile_phone.toString();
// To Do: Language Übersetzen
bpObj.LanguageCode = getLanguageCode(JbpObj.language_code.toString());
if (JbpObj.vatid) {
bpObj.FederalTaxID = JbpObj.vatid.toString();
}
if (JbpObj.bank_account.sepa_mandate.toString() === 'Ja') {
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
bpObj.PayTermsGrpCode = 13;
}
else if (JbpObj.payment_term)
{
bpObj.PayTermsGrpCode = getPaymentTerm(JbpObj.payment_term);
}
bpObj.EmailAddress = JbpObj.email.toString();
bpObj.U_EON_ID_CRM = JbpObj.id_crm.toString();
bpObj.U_EON_ID_CRM_INTERNAL = JbpObj.id_msd.toString();
if (JbpObj.shipping_type && !(SBOOBJ.U_UO_OUTPUT_VSARTAR && SBOOBJ.U_UO_OUTPUT_VSARTAR in ['CSV'])) {
bpObj.U_UO_OUTPUT_VSARTAR = JbpObj.shipping_type.toString();
if (JbpObj.shipping_type)
{
bpObj.U_UO_OUTPUT_VSARTAR = JbpObj.shipping_type.toString();
}
if (!JbpObj.pgnr) {
@@ -440,17 +208,13 @@ function buildBPObj(JbpObj, SBOOBJ) {
bpObj.Affiliate = 'tYES';
}
if (JbpObj.res_prop === true) {
bpObj.U_EON_WVB = 'Y';
}
if (JbpObj.res_prop===true) {
bpObj.U_EON_WVB = 'Y';
}
if (JbpObj.res_prop === false) {
bpObj.U_EON_WVB = 'N';
}
bpObj.U_UO_EDI_BUYER_ID = JbpObj.e_invoice_buyerid;
bpObj.U_UO_EDI_SELLER_ID = JbpObj.e_invoice_sellerid;
bpObj.U_UO_EDI_ROUTING_ID = JbpObj.e_invoice_routingid;
if (JbpObj.res_prop===false) {
bpObj.U_EON_WVB = 'N';
}
bpObj.BPAddresses = [];
// bpObj.BPAddresses[0].AddressName = 'test';
@@ -461,24 +225,22 @@ function buildBPObj(JbpObj, SBOOBJ) {
// mybpAdresses.g = g;
// mybpAdresses.h = h;
var myaddressbpname = JbpObj.addresses[h].street.toString() + ' ' + JbpObj.addresses[h].street_no.toString();
//var myaddressbpname = JbpObj.addresses[h].addressid.toString();
mybpAdresses.AddressName = SBOOBJ.BPAddresses[g].AddressName;
mybpAdresses.AddressType = SBOOBJ.BPAddresses[g].AddressType;
mybpAdresses.BPCode = SBOOBJ.BPAddresses[g].BPCode;
mybpAdresses.RowNum = SBOOBJ.BPAddresses[g].RowNum;
if (SBOOBJ.BPAddresses[g].U_EON_EXT_ID === JbpObj.addresses[h].addressid.toString() && SBOOBJ.BPAddresses[g].AddressType ===
convertAdrType(JbpObj.addresses[
h].type)) {
if (SBOOBJ.BPAddresses[g].AddressName === myaddressbpname && SBOOBJ.BPAddresses[g].AddressType === convertAdrType(JbpObj.addresses[
h].type)) {
//mybpAdresses.AddressName = JbpObj.addresses[h].address.toString();
mybpAdresses.AddressName = myaddressbpname;
mybpAdresses.Street = JbpObj.addresses[h].street.toString();
//mybpAdresses.Block = 'test';
mybpAdresses.ZipCode = JbpObj.addresses[h].zip_code.toString();
mybpAdresses.City = JbpObj.addresses[h].city.toString();
//mybpAdresses.County = 'test';
mybpAdresses.Country = JbpObj.addresses[h].country.toString();
if (JbpObj.addresses[h].standard === 'yes') {
if (JbpObj.addresses[h].standard = 'ja') {
if (convertAdrType(JbpObj.addresses[h].type) === 'bo_BillTo') {
bpObj.BilltoDefault = myaddressbpname;
}
@@ -492,37 +254,36 @@ function buildBPObj(JbpObj, SBOOBJ) {
//mybpAdresses.TaxCode = 'test';
//mybpAdresses.BuildingFloorRoom = 'test';
/*
if (JbpObj.addresses[h].type === 'B') {
mybpAdresses.AddressType = 'bo_BillTo';
} else {
mybpAdresses.AddressType = 'bo_ShipTo';
}
*/
if (JbpObj.group === 'B2B' || JbpObj.group === 'B2M') {
if (JbpObj.addresses[h].type === 'B') {
mybpAdresses.AddressType = 'bo_BillTo';
} else {
mybpAdresses.AddressType = 'bo_ShipTo';
}
*/
if (JbpObj.group == 'B2B' || JbpObj.group == 'B2M') {
//mybpAdresses.AddressName2 = mycardname;
mybpAdresses.AddressName2 = myaddress23[0];
//mybpAdresses.AddressName3 = myaddress23[1];
mybpAdresses.U_CompanyName2 = myaddress23[1];
mybpAdresses.AddressName3 = myaddress23[1];
}
if (JbpObj.addresses[h].address2) {
mybpAdresses.BuildingFloorRoom = JbpObj.addresses[h].address2.toString();
}
if (JbpObj.addresses[h].address3) {
mybpAdresses.AddressName3 = JbpObj.addresses[h].address3.toString();
}
// if (JbpObj.addresses[h].address2) {
// mybpAdresses.AddressName2 = JbpObj.addresses[h].address2.toString();
// }
//mybpAdresses.TypeOfAddress = 'test';
mybpAdresses.StreetNo = JbpObj.addresses[h].street_no.toString();
mybpAdresses.U_EON_EXT_ID = JbpObj.addresses[h].addressid.toString();
break;
}
}
//mybpAdresses.BPCode = 'test';
//mybpAdresses.RowNum = 'test';
//mybpAdresses.GlobalLocationNumber = 'test';
//mybpAdresses.Nationality = 'test';
//mybpAdresses.TaxOffice = 'test';
bpObj.BPAddresses.push(mybpAdresses);
}
//Suche ob Objekte vorhanden wenn nicht ergänzen
//Suche ob Objekte vorhanden wenn nichzt ergänzen
for (var h in JbpObj.addresses) {
var myfound = false;
@@ -530,13 +291,12 @@ function buildBPObj(JbpObj, SBOOBJ) {
var myaddbpname = JbpObj.addresses[h].street.toString() + ' ' + JbpObj.addresses[h].street_no.toString();
for (var g in SBOOBJ.BPAddresses) {
if (SBOOBJ.BPAddresses[g].U_EON_EXT_ID === JbpObj.addresses[h].addressid.toString() && SBOOBJ.BPAddresses[g].AddressType ===
convertAdrType(JbpObj.addresses[h].type)) {
if (SBOOBJ.BPAddresses[g].AddressName === myaddbpname && SBOOBJ.BPAddresses[g].AddressType === convertAdrType(JbpObj.addresses[h].type)) {
myfound = true;
}
}
if (myfound === false) {
if (myfound == false) {
myaddbpAdresses.AddressName = myaddbpname; //JbpObj.addresses[h].address.toString();
myaddbpAdresses.Street = JbpObj.addresses[h].street.toString();
//myaddbpAdresses.Block = 'test';
@@ -548,7 +308,7 @@ function buildBPObj(JbpObj, SBOOBJ) {
//myaddbpAdresses.FederalTaxID = 'test';
//myaddbpAdresses.TaxCode = 'test';
//myaddbpAdresses.BuildingFloorRoom = 'test';
if (JbpObj.addresses[h].standard === 'yes') {
if (JbpObj.addresses[h].standard = 'ja') {
if (convertAdrType(JbpObj.addresses[h].type) === 'bo_BillTo') {
bpObj.BilltoDefault = myaddbpname;
}
@@ -558,15 +318,11 @@ function buildBPObj(JbpObj, SBOOBJ) {
}
myaddbpAdresses.AddressType = convertAdrType(JbpObj.addresses[h].type);
if (JbpObj.group === 'B2B' || JbpObj.group === 'B2M') {
if (JbpObj.group == 'B2B' || JbpObj.group == 'B2M') {
//myaddbpAdresses.AddressName2 = mycardname;
myaddbpAdresses.AddressName2 = myaddress23[0];
//myaddbpAdresses.AddressName3 = myaddress23[1];
myaddbpAdresses.U_CompanyName2 = myaddress23[1];
myaddbpAdresses.AddressName3 = myaddress23[1];
}
if (JbpObj.addresses[h].address2) {
myaddbpAdresses.BuildingFloorRoom = JbpObj.addresses[h].address2.toString();
}
if (JbpObj.addresses[h].address3) {
myaddbpAdresses.AddressName3 = JbpObj.addresses[h].address3.toString();
}
@@ -613,8 +369,8 @@ function buildBPObj(JbpObj, SBOOBJ) {
mybpContactEmployees.CardCode = SBOOBJ.ContactEmployees[cpB1].CardCode;
mybpContactEmployees.InternalCode = SBOOBJ.ContactEmployees[cpB1].InternalCode;
if (SBOOBJ.ContactEmployees[cpB1].Name == mybpcontactname) {
mybpContactEmployees.FirstName = JbpObj.name.toString().trim();
mybpContactEmployees.LastName = JbpObj.surname.toString().trim();
mybpContactEmployees.FirstName = JbpObj.name.toString();
mybpContactEmployees.LastName = JbpObj.surname.toString();
mybpContactEmployees.Title = JbpObj.title.toString();
mybpContactEmployees.U_EON_SALUTATION = JbpObj.salutation.toString();
bpObj.ContactPerson = mybpcontactname;
@@ -625,8 +381,8 @@ function buildBPObj(JbpObj, SBOOBJ) {
if (myfoundCP == false) {
mybpContactEmployees = {};
mybpContactEmployees.Name = mybpcontactname; //mycardname;
mybpContactEmployees.FirstName = JbpObj.name.toString().trim();
mybpContactEmployees.LastName = JbpObj.surname.toString().trim();
mybpContactEmployees.FirstName = JbpObj.name.toString();
mybpContactEmployees.LastName = JbpObj.surname.toString();
mybpContactEmployees.Title = JbpObj.title.toString();
mybpContactEmployees.U_EON_SALUTATION = JbpObj.salutation.toString();
bpObj.ContactPerson = mybpcontactname;
@@ -636,106 +392,72 @@ function buildBPObj(JbpObj, SBOOBJ) {
bpObj.BPBankAccounts = [];
var myfoundBank = false;
var myIBAN = JbpObj.bank_account.iban.toString().replace(/ /g, '');
if (myIBAN !== '') {
use_iban = true;
} else {
use_iban = false;
}
if (use_iban) {
var bankDetails = parseIBAN(myIBAN);
if (bankDetails === false) {;
} else {
var myCountry = bankDetails.BankCountry;
var myBankCode = bankDetails.BankCode;
var myAccountNo = bankDetails.AccountNo;
var mySwiftNo = bankDetails.SwiftNo;
var mySignatureDate = convertToISODate(JbpObj.bank_account.signature_date);
for (var ba in SBOOBJ.BPBankAccounts) {
var myBPBankAccounts = {};
myBPBankAccounts.BPCode = SBOOBJ.BPBankAccounts[ba].BPCode;
myBPBankAccounts.InternalKey = SBOOBJ.BPBankAccounts[ba].InternalKey;
myBPBankAccounts.Country = SBOOBJ.BPBankAccounts[ba].Country;
myBPBankAccounts.BankCode = SBOOBJ.BPBankAccounts[ba].BankCode;
myBPBankAccounts.AccountNo = SBOOBJ.BPBankAccounts[ba].AccountNo;
myBPBankAccounts.IBAN = SBOOBJ.BPBankAccounts[ba].IBAN;
myBPBankAccounts.MandateID = SBOOBJ.BPBankAccounts[ba].MandateID;
myBPBankAccounts.SEPASeqType = SBOOBJ.BPBankAccounts[ba].SEPASeqType;
if (SBOOBJ.BPBankAccounts[ba].IBAN.replace(/ /g, '') === myIBAN) {
myfoundBank = true;
if (JbpObj.bank_account.bic.toString() !== '') {
myBPBankAccounts.BICSwiftCode = JbpObj.bank_account.bic.toString();
}
else if (mySwiftNo.toString() !== '')
{
myBPBankAccounts.BICSwiftCode = mySwiftNo.toString();
}
myBPBankAccounts.Country = myCountry;
myBPBankAccounts.BankCode = myBankCode;
myBPBankAccounts.AccountNo = myAccountNo;
myBPBankAccounts.AccountName = JbpObj.bank_account.account_owner.toString();
myBPBankAccounts.Street = JbpObj.bank_account.street.toString() + " " + JbpObj.bank_account.street_no.toString();
myBPBankAccounts.ZipCode = JbpObj.bank_account.zip_code.toString();
myBPBankAccounts.City = JbpObj.bank_account.city.toString();
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
myBPBankAccounts.SignatureDate = mySignatureDate;
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
if (SBOOBJ.BPBankAccounts[ba].MandateID == null) //|| SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10) > JbpObj.id_crm )
{
myBPBankAccounts.MandateID = JbpObj.id_crm + getnextvalsepaid();
}
bpObj.CollectionAuthorization = 'tYES';
}
//22.07.2024 BUS-7580
if (JbpObj.bank_account.sepa_mandate.toString() == 'Nein') {
bpObj.CollectionAuthorization = 'tNO';
}
}
bpObj.BankCountry = myCountry;
bpObj.DefaultBankCode = myBankCode;
bpObj.DefaultAccount = myAccountNo;
bpObj.BPBankAccounts.push(myBPBankAccounts);
var myCountry = myIBAN.substring(0, 2);
var myBankCode = myIBAN.substring(4, 12);
var myAccountNo = myIBAN.substring(12, 23);
var mySignatureDate = convertToISODate(JbpObj.bank_account.signature_date);
for (var ba in SBOOBJ.BPBankAccounts) {
var myBPBankAccounts = {};
myBPBankAccounts.BPCode = SBOOBJ.BPBankAccounts[ba].BPCode;
myBPBankAccounts.InternalKey = SBOOBJ.BPBankAccounts[ba].InternalKey;
myBPBankAccounts.Country = SBOOBJ.BPBankAccounts[ba].Country;
myBPBankAccounts.BankCode = SBOOBJ.BPBankAccounts[ba].BankCode;
myBPBankAccounts.AccountNo = SBOOBJ.BPBankAccounts[ba].AccountNo;
myBPBankAccounts.IBAN = SBOOBJ.BPBankAccounts[ba].IBAN;
if (SBOOBJ.BPBankAccounts[ba].IBAN.replace(/ /g, '') === myIBAN) {
myfoundBank = true;
if (JbpObj.bank_account.bic.toString() !== '') {
myBPBankAccounts.BICSwiftCode = JbpObj.bank_account.bic.toString();
}
if (myfoundBank === false) {
myBPBankAccounts = {};
myBPBankAccounts.IBAN = myIBAN;
myBPBankAccounts.Country = myCountry;
myBPBankAccounts.BankCode = myBankCode;
myBPBankAccounts.AccountNo = myAccountNo;
if (JbpObj.bank_account.bic.toString() !== '') {
myBPBankAccounts.BICSwiftCode = JbpObj.bank_account.bic.toString();
}
myBPBankAccounts.AccountName = JbpObj.bank_account.account_owner.toString();
myBPBankAccounts.Street = JbpObj.bank_account.street.toString() + " " + JbpObj.bank_account.street_no.toString();
myBPBankAccounts.ZipCode = JbpObj.bank_account.zip_code.toString();
myBPBankAccounts.City = JbpObj.bank_account.city.toString();
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
myBPBankAccounts.SignatureDate = mySignatureDate;
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
// myBPBankAccounts.MandateID = SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10);
// if (SBOOBJ.BPBankAccounts[ba].MandateID.IsNullOrEmpty ) //|| SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10) > JbpObj.id_crm
//{
myBPBankAccounts.AccountName = JbpObj.bank_account.account_owner.toString();
myBPBankAccounts.Street = JbpObj.bank_account.street.toString() + " " + JbpObj.bank_account.street_no.toString();
myBPBankAccounts.ZipCode = JbpObj.bank_account.zip_code.toString();
myBPBankAccounts.City = JbpObj.bank_account.city.toString();
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
myBPBankAccounts.SignatureDate = mySignatureDate;
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
if (SBOOBJ.BPBankAccounts[ba].MandateID == null) //|| SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10) > JbpObj.id_crm )
{
myBPBankAccounts.MandateID = JbpObj.id_crm + getnextvalsepaid();
bpObj.CollectionAuthorization = 'tYES';
myBPBankAccounts.SEPASeqType = 'sstFRST';
//}
}
//23.07.2024 BUS-7580
if (JbpObj.bank_account.sepa_mandate.toString() == 'Nein') {
bpObj.CollectionAuthorization = 'tNO';
}
bpObj.BankCountry = myCountry;
bpObj.DefaultBankCode = myBankCode;
bpObj.DefaultAccount = myAccountNo;
bpObj.BPBankAccounts.push(myBPBankAccounts);
bpObj.CollectionAuthorization = 'tYES';
}
}
bpObj.BankCountry = myCountry;
bpObj.DefaultBankCode = myBankCode;
bpObj.DefaultAccount = myAccountNo;
bpObj.BPBankAccounts.push(myBPBankAccounts);
}
if (myfoundBank === false) {
myBPBankAccounts = {};
myBPBankAccounts.IBAN = myIBAN;
myBPBankAccounts.Country = myCountry;
myBPBankAccounts.BankCode = myBankCode;
myBPBankAccounts.AccountNo = myAccountNo;
if (JbpObj.bank_account.bic.toString() !== '') {
myBPBankAccounts.BICSwiftCode = JbpObj.bank_account.bic.toString();
}
myBPBankAccounts.AccountName = JbpObj.bank_account.account_owner.toString();
myBPBankAccounts.Street = JbpObj.bank_account.street.toString() + " " + JbpObj.bank_account.street_no.toString();
myBPBankAccounts.ZipCode = JbpObj.bank_account.zip_code.toString();
myBPBankAccounts.City = JbpObj.bank_account.city.toString();
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
myBPBankAccounts.SignatureDate = mySignatureDate;
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
// myBPBankAccounts.MandateID = SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10);
// if (SBOOBJ.BPBankAccounts[ba].MandateID.IsNullOrEmpty ) //|| SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10) > JbpObj.id_crm
//{
myBPBankAccounts.MandateID = JbpObj.id_crm + getnextvalsepaid();
bpObj.CollectionAuthorization = 'tYES';
myBPBankAccounts.SEPASeqType = 'sstFRST';
//}
}
bpObj.BankCountry = myCountry;
bpObj.DefaultBankCode = myBankCode;
bpObj.DefaultAccount = myAccountNo;
bpObj.BPBankAccounts.push(myBPBankAccounts);
}
return bpObj;
@@ -767,8 +489,6 @@ function upsBP(searchparam, JbpObj) {
loginInfo.Password = UserPass;
loginInfo.CompanyDB = UserComp;
var slError;
// SL LOGIN
var response = slib.SLLogin(JSON.stringify(loginInfo), null, null);
@@ -784,31 +504,22 @@ function upsBP(searchparam, JbpObj) {
}
output.loginInfo = loginInfo;
// output.loginResponse = JSON.parse(response.body.asString());
var loginResponse;
try {
loginResponse = JSON.parse(response.body.asString());
output.loginResponse = JSON.parse(response.body.asString());
} catch (e) {
loginResponse = response.body.asString();
output.loginResponse = response.body.asString();
}
output.loginResponse = loginResponse;
if (response.status !== 200) {
outMsg = {};
outMsg.method = "login";
outMsg.status = "error";
//outMsg.message = output.loginResponse;
slError = loginResponse.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(loginResponse);
}
outMsg.response = loginResponse;
outMsg.message = output.loginResponse;
outMessages.push(outMsg);
outStatus = "error";
}
if (JbpObj.vatid) {
var checkmyvatid = bpbl.checkvatid(JbpObj.vatid, JbpObj.vatid.substring(0, 2).toUpperCase(), UserComp);
var checkmyvatid = bpbl.checkvatid(JbpObj.vatid, JbpObj.addresses[0].country.toUpperCase(), UserComp)
if (checkmyvatid != "true") {
outMsg = {};
outMsg.method = "checkVATID";
@@ -819,42 +530,6 @@ function upsBP(searchparam, JbpObj) {
}
}
// CBU 18.10.2022 Prüfung Versandart
if (JbpObj.shipping_type) {
var checkShippingTypeResult = checkShippingType(JbpObj.shipping_type, UserComp);
if (!checkShippingTypeResult) {
outMsg = {};
outMsg.method = "shipping_type";
outMsg.status = "error";
outMsg.message = "Shippingtype not valid: " + JbpObj.shipping_type;
outStatus = "error";
outMessages.push(outMsg);
} else {
// CBU 24.01.2023
if (JbpObj.shipping_type === "M") {
checkShippingTypeMail(JbpObj.email);
}
}
} else {
outMsg = {};
outMsg.method = "shipping_type";
outMsg.status = "error";
outMsg.message = "Shipping Type missing";
outStatus = "error";
outMessages.push(outMsg);
}
/*
CBU 25.11.2022
if (outStatus !== "error") {
if (JbpObj.bank_account.iban.toString().replace(/ /g, '') !== '') {
createBankIfMissing(JbpObj.bank_account.iban.toString().replace(/ /g, ''), SESSIONID, NODEID);
}
}
*/
if (outStatus !== "error") {
outMsg = {};
@@ -868,12 +543,7 @@ CBU 25.11.2022
// Removes metadata
//delete body["odata.metadata"];
var bodyGet;
try {
bodyGet = JSON.parse(responseGet.body.asString());
} catch (e) {
bodyGet = response.responseGet.asString();
}
var bodyGet = JSON.parse(responseGet.body.asString());
myDebug.statusGet = responseGet.status;
myDebug.responseGet = bodyGet;
outMsg.statuscode = responseGet.status;
@@ -885,14 +555,7 @@ CBU 25.11.2022
outMsg.message = "not exists";
} else {
outMsg.status = "error";
//outMsg.message = bodyGet;
slError = bodyGet.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(bodyGet);
}
outMsg.response = bodyGet;
outMsg.message = bodyGet;
outStatus = "error";
}
outMessages.push(outMsg);
@@ -914,26 +577,12 @@ CBU 25.11.2022
outMsg.status = "success";
} else {
outMsg.status = "error";
//outMsg.message = bodyGetFull;
slError = bodyGetFull.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(bodyGetFull);
}
outMsg.response = bodyGetFull;
outMsg.message = bodyGetFull;
outStatus = "error";
}
outMessages.push(outMsg);
}
// CBU 25.11.2022
if (outStatus !== "error") {
if (JbpObj.bank_account.iban.toString().replace(/ /g, '') !== '') {
createBankIfMissing(JbpObj.bank_account.iban.toString().replace(/ /g, ''), SESSIONID, NODEID);
}
}
if (outStatus !== "error") {
var consBPObject = buildBPObj(JbpObj, bodyGetFull);
@@ -954,26 +603,12 @@ CBU 25.11.2022
outMsg.status = "error";
if (responseUpdate.body) {
myDebug.responseUpdate = JSON.parse(responseUpdate.body.asString());
//outMsg.message = myDebug.responseUpdate;
slError = myDebug.responseUpdate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responseUpdate);
}
outMsg.response = myDebug.responseUpdate;
outMsg.message = myDebug.responseUpdate;
outErrorMessages.push(outMsg);
}
outStatus = "error";
}
outMessages.push(outMsg);
if (outStatus !== "error" && checkSupplierExist(CardCode)) {
outMsg.method = "copyBP";
outMsg.paramCardCode = CardCode;
var bpoutput = copybplib.copyBP(ParDebug, CardCode);
outMsg.result = bpoutput;
outMessages.push(outMsg);
}
} else {
output.method = "createBP";
@@ -992,15 +627,8 @@ CBU 25.11.2022
myDebug.Createmessage = "Create error occured";
output.errorCreatestatus = myDebug.Createmessage;
outMsg.status = "error";
//outMsg.message = myDebug.responseCreate;
outMsg.message = myDebug.responseCreate;
outStatus = "error";
slError = myDebug.responseCreate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responseCreate);
}
outMsg.response = myDebug.responseCreate;
outErrorMessages.push(outMsg);
}
outMessages.push(outMsg);
@@ -1020,28 +648,6 @@ CBU 25.11.2022
}
function checkSupplierExist(cardcode) {
var suppcardcode = cardcode + '-L';
var conn = $.db.getConnection();
var pstmt;
//var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"A19753_P01_TEST03\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
//vendeor var query = "SELECT T0.\"U_EON_RECACC_REC\" FROM \"XXREPXX\".\"@EON_PGN\" T0 WHERE T0.\"Code\" = ?";
var query = "SELECT T0.\"CardCode\" FROM \"XXREPXX\".\"OCRD\" T0 WHERE T0.\"CardCode\" = ?";
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setString(1, suppcardcode);
var rs = pstmt.executeQuery();
exists = rs.next();
rs.close();
pstmt.close();
conn.close();
return exists;
}
function getnextval() {
var conn = $.db.getConnection();
var pstmt;
@@ -1065,8 +671,7 @@ function getnextval() {
function setBPCardCode(tableid, bpcardcode) {
var conn = $.db.getConnection();
var pstmt;
var query = "update \"NICEPORTAL\".\"UO_CRM_DATA_BP\" set B1_CARDCODE = '" + bpcardcode + "', UPDATE_TS = CURRENT_TIMESTAMP where ID =" +
tableid;
var query = "update \"NICEPORTAL\".\"UO_CRM_DATA_BP\" set B1_CARDCODE = '" + bpcardcode + "', UPDATE_TS = CURRENT_TIMESTAMP where ID =" + tableid;
pstmt = conn.prepareStatement(query);
// pstmt.setString(1,bpcardcode);
// pstmt.setString(2,tableid);
@@ -1082,8 +687,7 @@ function setBPCardCode(tableid, bpcardcode) {
function setRESPONSE(tableid, respstatus, respmessage, errormessage) {
var conn = $.db.getConnection();
var pstmt;
var query =
"update \"NICEPORTAL\".\"UO_CRM_DATA_BP\" set RESPONSE_STATUS = ? , RESPONSE_MESSAGE =?, ERROR_MESSAGE=? where ID =" + tableid;
var query = "update \"NICEPORTAL\".\"UO_CRM_DATA_BP\" set RESPONSE_STATUS = ? , RESPONSE_MESSAGE =?, ERROR_MESSAGE=? where ID =" + tableid;
pstmt = conn.prepareStatement(query);
pstmt.setString(1, respstatus.toString());
pstmt.setString(2, respmessage.toString());
@@ -1099,7 +703,7 @@ function setRESPONSE(tableid, respstatus, respmessage, errormessage) {
function PutBPDataInTable() {
var pdcontent = $.request.body.asString();
// pdcontent = pdcontent.replace(/\"([^(\")\"]+)\":/g,"$1:\");
// pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:");
var JbpObj = JSON.parse(pdcontent);
var conn = $.db.getConnection();
var pstmt;
@@ -1164,11 +768,6 @@ function PutBPDataInTable() {
//var retUpsertBP = addBP(JSON.stringify(bpObj));
} catch (e) {
// push last outMsg if missing
if (outMsg.method && outMessages.indexOf(outMsg) === -1) {
outMsg.status = "canceled";
outMessages.push(outMsg);
}
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
@@ -1192,7 +791,6 @@ function PutBPDataInTable() {
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
vals.debugInfo = myDebug;
}
// vals.group = JbpObj.group.toString();
@@ -1206,9 +804,7 @@ function PutBPDataInTable() {
setRESPONSE(mynextval, outMsg.status, errbody, outErrorMessages);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
//$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
// auch bei Fehler HTTP Status 200, da der Response im CRM sonst evtl. nicht sauber verarbeitet wird
$.response.status = $.net.http.OK;
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
return;
}
vals.status = outStatus;
@@ -1267,4 +863,10 @@ if (!req){
$.response.status = $.net.http.OK;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
}else{\n \n //addBP(JSON.stringify(bpObj));\n //updBP(JSON.stringify(bpObj));\n //GetOrders(req); \n}\n*/
}else{
//addBP(JSON.stringify(bpObj));
//updBP(JSON.stringify(bpObj));
//GetOrders(req);
}
*/
+22 -22
View File
@@ -1,4 +1,4 @@
var slib = $.import("uniorg.ServiceLayer", "B1SLLogic");
var slib = $.import("uniorg.ServiceLayer", "B1SLLogic");
var slDest = $.import("uniorg.destinations", "uodestlib");
var copybplib = $.import("uniorg.eon.libs", "copybp");
var dateTimeLib = $.import("uniorg.libs", "datetime");
@@ -27,23 +27,23 @@ var cmpprivate_b2m = "cCompany";
var service_version = '5.2';
// 03.11.2020 U_ORDER_ID (262)
// last changes: 31.03.2020 eoperate Felder
// Mapping Verträge 19.05.2020
// 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
//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
//06.10.2021 GP_DISCOUNT_MONTH
//22.11.2021 Factor für BFV Verträge in Price Kollektion implementiert
//29.11.2022 EMPEPI1-145: Erweiterung Contract SST/ Prüfung alte Projektnummern
//23.06.2023 EMPEPI1-277: Validierungsprüfung BV ohne Chargepoint Parameter / Paramater ohne valid_from
//18.09.2023 EMPEPI1-316: zeitl. Abgrenzung für AG Flag
//22.11.2021 Factor für BFV Verträge in Price Kollektion implementiert
//29.11.2022 EMPEPI1-145: Erweiterung Contract SST/ Prüfung alte Projektnummern
//23.06.2023 EMPEPI1-277: Validierungsprüfung BV ohne Chargepoint Parameter / Paramater ohne valid_from
//18.09.2023 EMPEPI1-316: zeitl. Abgrenzung für AG Flag
//15.12.2023 EMPEPI1-327: Fehlerbehandlung bei leerem valid_from in prices
//05.03.2024 EMPEPI1-347: BMW: PO-No. Zeitscheibensystem
//19.07.2024 BUS-7346: Error message for contract transmission to B1
//19.07.2024 BUS-7579: BMW-CCA-Abrechnung eoperate_valid_to < eoperate_valid_from
//01.08.2024 Implementierung Rechnungsadresse
//13.12.2024 BUS-9963: Bestellnummern am E.ON-Vertrag "einfach" überschreiben
//13.12.2024 BUS-9963: Bestellnummern am E.ON-Vertrag "einfach" überschreiben
//11.02.2025 BUS-10922: RFID_CARD ohne Text1 und Text2 ablehnen
var debugLevel = 0;
@@ -97,7 +97,7 @@ function convertToISODate(dateString) {
function getProductId(prodID) {
/* switch (prodID) {
case "E.ON Drive Business ohne Grundgebühr":
case "E.ON Drive Business ohne Grundgebühr":
prodID='E.ON Drive Business Comfort';
break;
@@ -368,7 +368,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
}
// Sonderpreise für Rabattmonate
// Sonderpreise für Rabattmonate
prodComponentsGP_DISCOUNT_MONTH.concat(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;
@@ -385,7 +385,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
}
});
// Sonderpreise für kostenfreie Monate BFV BFV_BILLING
// Sonderpreise für kostenfreie Monate BFV BFV_BILLING
if (InObj.costfree_months && InObj.costfree_months > 0) {
prodComponentsBFV_BILLING.forEach(function(pc) {
var connection = $.hdb.getConnection();
@@ -412,7 +412,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
}
});
}
// bestehenden Sonderpreis entfernen, falls kostenfreie Monate auf 0 geändert werden
// bestehenden Sonderpreis entfernen, falls kostenfreie Monate auf 0 geändert werden
if (InObj.hasOwnProperty('costfree_months') && InObj.costfree_months === 0 && UDOObj.EON_CONTRACT_PRICECollection.length > 0) {
prodComponentsBFV_BILLING.forEach(function(pc) {
for (var x = UDOObj.EON_CONTRACT_PRICECollection.length - 1; x >= 0; x--) {
@@ -424,7 +424,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
});
}
//Suche ob Objekte vorhanden wenn nicht ergänzen
//Suche ob Objekte vorhanden wenn nicht ergänzen
for (var h in InObj.prices) {
var myfound = false;
@@ -492,7 +492,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
}
//Suche ob Objekte vorhanden wenn nicht ergänzen
//Suche ob Objekte vorhanden wenn nicht ergänzen
for (var h in InObj.ev_drivers) {
var myfound = false;
@@ -599,7 +599,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
UDOObj.EON_CONTRACT_PARAMCollection.push(myParam2);
}
// neue Aktivierungsgebühr hinzufügen
// neue Aktivierungsgebühr hinzufügen
if (prodComponentsAG.length > 0 && (SBOOBJ.EON_CONTRACT_PARAMCollection === undefined || SBOOBJ.EON_CONTRACT_PARAMCollection.findIndex(
function(x) {
return x.U_COMPONENT === "AG";
@@ -614,7 +614,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
});
}
// neue Rabattmonate hinzufügen
// neue Rabattmonate hinzufügen
prodComponentsTP_DISCOUNT_MONTH.forEach(function(pc) {
if (SBOOBJ.EON_CONTRACT_PARAMCollection === undefined || SBOOBJ.EON_CONTRACT_PARAMCollection.findIndex(function(x) {
return x.U_COMPONENT === pc.U_DATA_TEXT;
@@ -633,7 +633,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
}
});
// neue Grundpreis Rabattmonate hinzufügen
// neue Grundpreis Rabattmonate hinzufügen
prodComponentsGP_DISCOUNT_MONTH.forEach(function(pc) {
if (SBOOBJ.EON_CONTRACT_PARAMCollection === undefined || SBOOBJ.EON_CONTRACT_PARAMCollection.findIndex(function(x) {
return x.U_COMPONENT === pc.U_DATA_TEXT;
@@ -652,7 +652,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
}
});
// neue Parameter aus ev_drivers.parameters hinzufügen
// neue Parameter aus ev_drivers.parameters hinzufügen
for (var h in InObj.ev_drivers) {
for (var k in InObj.ev_drivers[h].parameters) {
var myfound2 = false;
@@ -684,7 +684,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
}
}
}
// neue Parameter aus Kopfebene hinzufügen
// neue Parameter aus Kopfebene hinzufügen
for (var k in InObj.parameters) {
var myfound3 = false;
for (var l in SBOOBJ.EON_CONTRACT_PARAMCollection) {
+2 -2
View File
@@ -239,8 +239,8 @@ function repairContractHistory() {
U_OBJTYPE: row.ObjType,
U_DOCENTRY: row.DocEntry,
U_DOCNUM: row.DocNum
}
]
}
]
};
result.slContractObj = slContractObj;
var responseContract = slLib.patchDynamicEntity('EON_CONTR', row.U_EON_CONTRACT, JSON.stringify(slContractObj), SESSIONID, NODEID,
+652 -6
View File
@@ -112,7 +112,7 @@ function getProductId(prodID) {
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('" +
"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);
@@ -346,7 +346,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
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;
// myParam.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;
@@ -386,7 +386,7 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
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;
// myParam.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;
@@ -407,6 +407,162 @@ function buildContractObj(InObj, SBOOBJ, billingMode) {
UDOObj.EON_CONTRACT_PARAMCollection = [];
//LOOP durch existierende Parameter
loopParamsB1: for (var i in SBOOBJ.EON_CONTRACT_PARAMCollection) {
var myParam2 = {};
// copy existing
myParam2 = SBOOBJ.EON_CONTRACT_PARAMCollection[i];
// Abgleich mit Parameters aus ev_drivers.parameters
loopEVDriversInObj: for (var h in InObj.ev_drivers) {
loopParamsInObj: for (var j in InObj.ev_drivers[h].parameters) {
if (myParam2.U_DATA_TEXT === InObj.ev_drivers[h].parameters[j].text1) {
//myParam.DocEntry=SBOOBJ.EON_CONTRACT_PARAMCollection[g].DocEntry;
//myParam.LineId=SBOOBJ.EON_CONTRACT_PARAMCollection[g].LineId;
//myParam.VisOrder=SBOOBJ.EON_CONTRACT_PARAMCollection[g].VisOrder;
//myParam.Object=SBOOBJ.EON_CONTRACT_PARAMCollection[g].Object;
myParam2.U_COMPONENT = (InObj.ev_drivers[h].parameters[j].component === null) ? myParam2.U_COMPONENT :
InObj.ev_drivers[h].parameters[j].component;
//myParam.U_DESCRIPTION=SBOOBJ.EON_CONTRACT_PARAMCollection[g].U_DESCRIPTION;
//myParam.U_RULE=SBOOBJ.EON_CONTRACT_PARAMCollection[g].U_RULE;
myParam2.U_DATA_TEXT = (InObj.ev_drivers[h].parameters[j].text1 === null) ? myParam2.U_DATA_TEXT :
InObj.ev_drivers[h].parameters[j].text1;
myParam2.U_DATA_NUMERIC = (InObj.ev_drivers[h].parameters[j].numeric1 === null) ? myParam2.U_DATA_NUMERIC :
InObj.ev_drivers[h].parameters[j].numeric1;
myParam2.U_DATA_TEXT2 = (InObj.ev_drivers[h].parameters[j].text2 === null) ? myParam2.U_DATA_TEXT2 :
InObj.ev_drivers[h].parameters[j].text2;
myParam2.U_DATE_NUMERIC2 = (InObj.ev_drivers[h].parameters[j].numeric2 === null) ? myParam2.U_DATE_NUMERIC2 :
InObj.ev_drivers[h].parameters[j].numeric2;
myParam2.U_VALID_FROM = (InObj.ev_drivers[h].parameters[j].valid_from === null) ? myParam2.U_VALID_FROM :
InObj.ev_drivers[h].parameters[j].valid_from;
myParam2.U_VALID_TO = (InObj.ev_drivers[h].parameters[j].valid_to === null) ? myParam2.U_VALID_TO :
InObj.ev_drivers[h].parameters[j].valid_to;
//myParam.U_ITEM=SBOOBJ.EON_CONTRACT_PARAMCollection[g].U_ITEM;
myParam2.U_DATA_TEXT3 = (InObj.ev_drivers[h].ev_driverid === null) ? myParam2.U_DATA_TEXT3 : InObj.ev_drivers[h].ev_driverid;
break loopEVDriversInObj;
}
}
}
// Abgleich mit Parametern aus Kopfebene
for (var j in InObj.parameters) {
if (myParam2.U_DATA_TEXT === InObj.parameters[j].text1) {
myParam2.U_COMPONENT = (InObj.parameters[j].component === null) ? myParam2.U_COMPONENT :
InObj.parameters[j].component;
myParam2.U_RULE = "data";
//myParam.U_DESCRIPTION=SBOOBJ.EON_CONTRACT_PARAMCollection[g].U_DESCRIPTION;
//myParam.U_RULE=SBOOBJ.EON_CONTRACT_PARAMCollection[g].U_RULE;
myParam2.U_DATA_TEXT = (InObj.parameters[j].text1 === null) ? myParam2.U_DATA_TEXT :
InObj.parameters[j].text1;
myParam2.U_DATA_NUMERIC = (InObj.parameters[j].numeric1 === null) ? myParam2.U_DATA_NUMERIC :
InObj.parameters[j].numeric1;
myParam2.U_DATA_TEXT2 = (InObj.parameters[j].text2 === null) ? myParam2.U_DATA_TEXT2 :
InObj.parameters[j].text2;
myParam2.U_DATA_NUMERIC2 = (InObj.parameters[j].numeric2 === null) ? myParam2.U_DATA_NUMERIC2 :
InObj.parameters[j].numeric2;
myParam2.U_VALID_FROM = (InObj.parameters[j].valid_from === null) ? myParam2.U_VALID_FROM :
InObj.parameters[j].valid_from;
myParam2.U_VALID_TO = (InObj.parameters[j].valid_to === null) ? myParam2.U_VALID_TO :
InObj.parameters[j].valid_to;
myParam2.U_DATA_PRICE1 = (InObj.parameters[j].price1 === null) ? myParam2.U_DATA_PRICE1 :
InObj.parameters[j].price1;
//myParam.U_ITEM=SBOOBJ.EON_CONTRACT_PARAMCollection[g].U_ITEM;
myParam2.U_DATA_TEXT3 = (InObj.parameters[j].text3 === null) ? myParam2.U_DATA_TEXT3 :
InObj.parameters[j].text3;
}
}
UDOObj.EON_CONTRACT_PARAMCollection.push(myParam2);
}
// neue Aktivierungsgebühr hinzufügen
var prodComponentsAG = getProductComponents(productCode, "AG");
if (prodComponentsAG.length > 0 && (SBOOBJ.EON_CONTRACT_PARAMCollection === undefined || SBOOBJ.EON_CONTRACT_PARAMCollection.findIndex(
function(x) {
return x.U_COMPONENT === "AG";
}) === -1)) {
UDOObj.EON_CONTRACT_PARAMCollection.push({
U_COMPONENT: prodComponentsAG[0].U_COMPONENT,
U_DESCRIPTION: prodComponentsAG[0].U_DESCRIPTION,
U_RULE: "const1",
U_ITEM: prodComponentsAG[0].U_ITEM,
U_VALID_FROM: InObj.begin_date,
U_VALID_TO: InObj.begin_date
});
}
// neue Rabattmonate hinzufügen
var prodComponentsTP_DISCOUNT_MONTH = getProductComponents(productCode, "TP_DISCOUNT_MONTH");
prodComponentsTP_DISCOUNT_MONTH.forEach(function(pc) {
if (SBOOBJ.EON_CONTRACT_PARAMCollection === undefined || SBOOBJ.EON_CONTRACT_PARAMCollection.findIndex(function(x) {
return x.U_COMPONENT === pc.U_DATA_TEXT;
}) === -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_PARAMCollection.push({
U_COMPONENT: pc.U_DATA_TEXT,
U_DESCRIPTION: pc.U_DESCRIPTION,
U_RULE: "QxP",
U_ITEM: pc.U_ITEM,
U_VALID_FROM: InObj.begin_date,
U_VALID_TO: validToDate
});
}
});
// neue Parameter aus ev_drivers.parameters hinzufügen
for (var h in InObj.ev_drivers) {
for (var k in InObj.ev_drivers[h].parameters) {
var myfound2 = false;
for (var l in SBOOBJ.EON_CONTRACT_PARAMCollection) {
if (SBOOBJ.EON_CONTRACT_PARAMCollection[l].U_DATA_TEXT === InObj.ev_drivers[h].parameters[k].text1) {
myfound2 = true;
}
}
if (myfound2 === false) {
var myParam3 = {};
myParam3.U_COMPONENT = InObj.ev_drivers[h].parameters[k].component;
//myParam.U_DESCRIPTION="";
myParam3.U_RULE = "data";
myParam3.U_DATA_TEXT = InObj.ev_drivers[h].parameters[k].text1;
myParam3.U_DATA_NUMERIC = InObj.ev_drivers[h].parameters[k].numeric1;
myParam3.U_DATA_TEXT2 = InObj.ev_drivers[h].parameters[k].text2;
myParam3.U_DATE_NUMERIC2 = InObj.ev_drivers[h].parameters[k].numeric2;
myParam3.U_VALID_FROM = InObj.ev_drivers[h].parameters[k].valid_from;
myParam3.U_VALID_TO = InObj.ev_drivers[h].parameters[k].valid_to;
myParam3.U_DATA_TEXT3 = InObj.ev_drivers[h].ev_driverid;
//myParam.U_ITEM="";
UDOObj.EON_CONTRACT_PARAMCollection.push(myParam3);
}
}
}
// neue Parameter aus Kopfebene hinzufügen
for (var k in InObj.parameters) {
var myfound3 = false;
for (var l in SBOOBJ.EON_CONTRACT_PARAMCollection) {
if (SBOOBJ.EON_CONTRACT_PARAMCollection[l].U_DATA_TEXT === InObj.parameters[k].text1) {
myfound3 = true;
}
}
if (myfound3 === false) {
var myParam4 = {};
myParam4.U_COMPONENT = InObj.parameters[k].component;
//myParam.U_DESCRIPTION="";
myParam4.U_RULE = "data";
myParam4.U_DATA_TEXT = InObj.parameters[k].text1;
myParam4.U_DATA_NUMERIC = InObj.parameters[k].numeric1;
myParam4.U_DATA_TEXT2 = InObj.parameters[k].text2;
myParam4.U_DATE_NUMERIC2 = InObj.parameters[k].numeric2;
myParam4.U_VALID_FROM = InObj.parameters[k].valid_from;
myParam4.U_VALID_TO = InObj.parameters[k].valid_to;
myParam4.U_DATA_PRICE1 = InObj.parameters[k].price1;
myParam4.U_DATA_TEXT3 = InObj.parameters[k].text3;
//myParam.U_ITEM="";
UDOObj.EON_CONTRACT_PARAMCollection.push(myParam4);
}
}
return UDOObj;
}
@@ -425,13 +581,503 @@ function mockbuildBPObj() {
return bpObj;
}
function upsContract(searchparam, InObj, billingMode) {
var output = {};
var myDebug = {
billingMode: billingMode,
searchparam: searchparam
};
var SESSIONID = "";
var NODEID = "";
// SL credentials
var loginInfo = {};
loginInfo.UserName = UserName;
loginInfo.Password = UserPass;
loginInfo.CompanyDB = UserComp;
//getProductId(InObj.product);
if (outStatus !== "error") {
// SL LOGIN
var response = slib.SLLogin(JSON.stringify(loginInfo), null, null);
// B1SESSION and ROUTEID cookies returned by Login
for (var j in response.cookies) {
if (response.cookies[j].name == "B1SESSION") {
SESSIONID = response.cookies[j].value;
output.SessionID = SESSIONID;
} else if (response.cookies[j].name == "ROUTEID") {
NODEID = response.cookies[j].value;
output.NodeID = NODEID;
}
}
if (ParDebug) {
//output.loginInfo = loginInfo;
}
// output.loginResponse = JSON.parse(response.body.asString());
try {
output.loginResponse = JSON.parse(response.body.asString());
} catch (e) {
output.loginResponse = response.body.asString();
}
if (response.status !== 200) {
outMsg = {};
outMsg.method = "login";
outMsg.status = "error";
outMsg.message = output.loginResponse;
outMessages.push(outMsg);
outStatus = "error";
}
if (outStatus !== "error") {
outMsg = {};
if (ParRecallMode) {
outMsg.id = globalDebug.mynextval;
}
outMsg.method = "check " + ContractUDOID + " Exists";
//Add BP
//response = slib.createBusinessPartner(BPObject, SESSIONID,NODEID);
//var responseGet = slib.getBusinessPartner(searchparam, SESSIONID, NODEID);
var responseGet = slib.getDocUDO(ContractUDOID, searchparam, SESSIONID, NODEID);
//var logoutresponse = slib.SLLogout(JSON.stringify(loginInfo), null, null);
//Parse response body
// Removes metadata
//delete body["odata.metadata"];
var DocEntry = 0;
var bodyGetFull = {};
var bodyGet = JSON.parse(responseGet.body.asString());
myDebug.statusGet = responseGet.status;
myDebug.responseGet = bodyGet;
outMsg.statuscode = responseGet.status;
if (responseGet.status >= 200 && responseGet.status < 300) {
outMsg.status = "success";
if (bodyGet.value[0]) {
DocEntry = bodyGet.value[0].DocEntry;
bodyGetFull = bodyGet.value[0];
outMsg.message = "exists";
} else {
outMsg.message = "not exists";
}
} else if (responseGet.status === 404) {
outMsg.status = "success";
outMsg.message = "not exists";
} else {
outMsg.status = "error";
outMsg.message = bodyGet;
outStatus = "error";
}
outMessages.push(outMsg);
/* if (DocEntry > 0) {
outMsg = {};
outMsg.method = "get";
outMsg.status = "success";
outMsg.message = bodyGetFull;
outMessages.push(outMsg);
}*/
/* var Code = "";
var bodyGetFull = {};
if (bodyGet.value[0]) {
//Code = bodyGet.value[0].CardCode;
outMsg = {};
outMsg.method = "get";
var responseGetFull = slib.getBusinessPartnerFull(CardCode, SESSIONID, NODEID);
myDebug.statusGetFull = responseGetFull.status;
// bodyGetFull = JSON.parse(responseGetFull.body.asString());
myDebug.responseGetFull = bodyGetFull;
outMsg.statuscode = responseGetFull.status;
if (responseGetFull.status >= 200 && responseGetFull.status < 300) {
outMsg.status = "success";
} else {
outMsg.status = "error";
outMsg.message = bodyGetFull;
outStatus = "error";
}
outMessages.push(outMsg);
}*/
if (outStatus !== "error") {
var consContractObject = buildContractObj(InObj, bodyGetFull, billingMode);
myDebug.ContractObj = consContractObject;
if (DocEntry > 0) {
output.method = "update";
var responseUpdate = slib.updateDocUDO(ContractUDOID, DocEntry, JSON.stringify(consContractObject), SESSIONID, NODEID);
outMsg = {};
if (ParRecallMode) {
outMsg.id = globalDebug.mynextval;
}
outMsg.method = "update";
myDebug.statusUpdate = responseUpdate.status;
outMsg.statuscode = responseUpdate.status;
if (responseUpdate.status >= 200 && responseUpdate.status < 300) {
myDebug.Updatemessage = "Update sucessfull";
outMsg.status = "success";
} else {
myDebug.message = "Update error occured";
outMsg.status = "error";
if (responseUpdate.body) {
myDebug.responseUpdate = JSON.parse(responseUpdate.body.asString());
outMsg.message = myDebug.responseUpdate;
}
outStatus = "error";
}
outMessages.push(outMsg);
} else {
outMsg = {};
if (ParRecallMode) {
outMsg.id = globalDebug.mynextval;
}
outMsg.method = "create";
var responseCreate = slib.createDocUDO(ContractUDOID, JSON.stringify(consContractObject), SESSIONID, NODEID);
myDebug.statusCreate = responseCreate.status;
outMsg.statuscode = responseCreate.status;
myDebug.responseCreate = JSON.parse(responseCreate.body.asString());
if (responseCreate.status >= 200 && responseCreate.status < 300) {
myDebug.Createmessage = "Create sucessfull";
outMsg.status = "success";
var createUDOObj = JSON.parse(responseCreate.body.asString());
DocEntry = createUDOObj.DocEntry;
} else {
myDebug.Createmessage = "Create error occured";
output.errorCreatestatus = myDebug.Createmessage;
outMsg.status = "error";
outMsg.message = myDebug.responseCreate;
outStatus = "error";
}
outMessages.push(outMsg);
}
}
output.DocEntry = DocEntry;
slib.SLLogout(SESSIONID, NODEID);
}
}
output.debug = myDebug;
//$.trace.debug("DEBUG body.Get: " + JSON.stringify(myDebug));
return output;
//setOutputMessage();
//return 0;
}
function getnextval() {
var conn = $.db.getConnection();
var pstmt;
var query = "select \"NICEPORTAL\".\"SEQ_CONTRACT_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 setBPCardCode(tableid, bpcardcode) {
var conn = $.db.getConnection();
var pstmt;
var query = "update \"NICEPORTAL\".\"UO_CRM_DATA_CONTRACTS\" set B1_CARDCODE = '" + bpcardcode +
"', UPDATE_TS = CURRENT_TIMESTAMP where ID =" + tableid;
pstmt = conn.prepareStatement(query);
// pstmt.setString(1,bpcardcode);
// pstmt.setString(2,tableid);
var rs = pstmt.executeUpdate();
globalDebug.UpdateQuery = query;
pstmt.close();
conn.commit();
conn.close();
}
function setRESPONSE(tableid, respstatus, respmessage) {
var conn = $.db.getConnection();
var pstmt;
var query =
"update \"NICEPORTAL\".\"UO_CRM_DATA_CONTRACTS\" set RESPONSE_STATUS = ? , RESPONSE_MESSAGE =?, UPDATE_TS = CURRENT_TIMESTAMP where ID =" +
tableid;
pstmt = conn.prepareStatement(query);
pstmt.setString(1, respstatus.toString());
pstmt.setString(2, respmessage.toString());
var rs = pstmt.executeUpdate();
globalDebug.UpdateQuery = query;
pstmt.close();
conn.commit();
conn.close();
}
function PutBPDataInTable(recalljsonRaw, id) {
var mynextval;
var pdcontent = ""
if (ParRecallMode) {
pdcontent = recalljsonRaw;
mynextval = id;
globalDebug.mynextval = mynextval;
} else {
mynextval = getnextval();
globalDebug.mynextval = mynextval;
pdcontent = $.request.body.asString();
}
// pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:");
var JbpObj = JSON.parse(pdcontent);
var conn = $.db.getConnection();
var pstmt;
var query;
var vals = {};
var data = [];
// var query2;
// var output = {results: [] };
try {
if (!ParRecallMode) {
// query = "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,TYPE,GROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
query =
"INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_CONTRACTS\" (ID,ID_MSD,ID_CRM,JSONRAW,B1_CODE,CREATE_TS,UPDATE_TS) values (" + mynextval +
",?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
// "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,ID_CRM,TYPE,BPGROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
pstmt = conn.prepareStatement(query);
pstmt.setString(1, JbpObj.contract_id.toString());
pstmt.setString(2, JbpObj.bp_crm.toString());
pstmt.setString(3, JSON.stringify(JbpObj));
pstmt.setString(4, getCardcodebyCRMID(JbpObj.bp_crm));
var rs = pstmt.executeUpdate();
pstmt.close();
conn.commit();
conn.close();
outMsg = {};
outMsg.method = "insertDB";
outMsg.status = "success";
outMessages.push(outMsg);
}
var cardCode = getCardcodebyCRMID(JbpObj.bp_crm);
if (cardCode) {
var productList = getProductId(JbpObj.product);
var retUpsertContract = [];
if (productList) {
productList.forEach(function(p) {
if (p.BillingMode === 'AO') {
outMsg = {};
if (ParRecallMode) {
outMsg.id = globalDebug.mynextval;
}
outMsg.method = "copyBP";
var bpoutput = copybplib.copyBP(cardCode);
outMsg.result = bpoutput;
outMessages.push(outMsg);
var searchparam2 = {};
searchparam2.key = "U_CUSTOMER eq '" + cardCode + "-L' and " + "U_EXT_ID_CRM";
searchparam2.value = JbpObj.contract_id.toString();
retUpsertContract.push(upsContract(searchparam2, JbpObj, p.BillingMode));
} else {
var searchparam1 = {};
searchparam1.key = "U_CUSTOMER eq '" + cardCode + "' and " + "U_EXT_ID_CRM";
searchparam1.value = JbpObj.contract_id.toString();
retUpsertContract.push(upsContract(searchparam1, JbpObj, p.BillingMode));
}
});
}
}
//var retUpsertBP = upsBP(searchparam, JSON.stringify(bpObj),JbpObj);
//var retUpsertBP = upsertBP(searchparam, JSON.stringify(bpObj));
//var retUpsertBP = addBP(JSON.stringify(bpObj));
} catch (e) {
$.trace.error(e.message);
outMsg = {};
if (ParRecallMode) {
outMsg.id = globalDebug.mynextval;
}
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = e.message;
if (debugLevel > 0) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = e.name;
outMsg.exceptionInfo.message = e.message;
outMsg.exceptionInfo.fileName = e.fileName;
outMsg.exceptionInfo.lineNumber = e.lineNumber;
outMsg.exceptionInfo.columnNumber = e.columnNumber;
outMsg.exceptionInfo.stack = e.stack;
//outMsg.exceptionInfo.source = e.toSource();
}
outMessages.push(outMsg);
vals.status = 'error';
//vals.description = e.message;
vals.messages = outMessages;
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
}
if (debugLevel > 0) {
vals.debugInfos = globalDebug;
}
// vals.group = JbpObj.group.toString();
// vals.bpobjekt = JSON.stringify(JbpObj);
// vals.SLBPObj = JSON.stringify(bpObj);
// vals.ResponsUPSER = JSON.stringify(retUpsertBP);
// vals.CardCode = retUpsertBP.CardCode;
//vals.mode = JSON.stringify(retUpsertBP.mode);
data.push(vals);
var errbody = JSON.stringify(data);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
return;
}
vals.status = outStatus;
//vals.description = 'Data accepted and proceeded';
// vals.id_crm = JbpObj.id_crm.toString();
//vals.id_msd = JbpObj.id_msd.toString();
//vals.id_b1 = retUpsertBP.CardCode;
//vals.CardCode = retUpsertBP.CardCode;
vals.messages = outMessages;
//setBPCardCode(mynextval,retUpsertBP.CardCode);
//vals.RespnUPSERJ = JSON.stringify(retUpsertBP);
if (ParDebug) {
if (debugLevel > 0) {
vals.debugInfos = globalDebug;
}
vals.debug = {
productList: productList,
upsert: retUpsertContract
};
}
//vals.mode = JSON.stringify(retUpsertBP.mode);
data.push(vals);
var okbody = JSON.stringify(data);
//var body = JSON.stringify(test);
setRESPONSE(mynextval, outMsg.status, okbody);
$.response.contentType = 'application/json';
$.response.setBody(okbody);
$.response.status = $.net.http.OK;
}
function testmain() {
var searchparam = {};
searchparam.key = "U_EON_ID_CRM";
searchparam.value = 'BP777888999x';
var bpObj = mockbuildBPObj();
var retUpsertBP = upsBP(searchparam, JSON.stringify(bpObj));
// setOutputMessage();
}
function recallJSONRAW(idList) {
var vals = {};
var data = [];
var conn = $.db.getConnection();
var pstmt;
var query = "SELECT \"JSONRAW\",\"ID\" FROM \"NICEPORTAL\".\"UO_CRM_DATA_CONTRACTS\" WHERE ID IN ( " + idList + ")";
pstmt = conn.prepareStatement(query);
//pstmt.setString(1, prodID);
var rs = pstmt.executeQuery();
if (!rs.next()) {
outMsg = {};
outMsg.method = "recallJSONRAW";
outMsg.message = "Empty ID List Parameter: " + idList;
if (debugLevel > 0) {
outMsg.message += " / Query: " + query;
}
outMsg.status = "error";
outStatus = "error";
// outMsg.message = e.message;
outMessages.push(outMsg);
vals.status = 'error';
//vals.description = e.message;
vals.messages = outMessages;
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
}
if (debugLevel > 0) {
vals.debugInfos = globalDebug;
}
data.push(vals);
var errbody = JSON.stringify(data);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
} else {
do {
PutBPDataInTable(rs.getNString(1), rs.getInteger(2));
} while (rs.next());
}
// }
rs.close();
pstmt.close();
conn.close();
}
//testmain();
// begin org
var content = $.request.body.asString();
setOutputMessage();
ParDebug = $.request.parameters.get('debug') && $.request.parameters.get('debug').toLowerCase() === "true";
ParRecallIdList = $.request.parameters.get('recallidlist');
if (ParRecallIdList) {
ParRecallMode = true;
recallJSONRAW(ParRecallIdList);
} else {
var content = $.request.body.asString();
PutBPDataInTable();
}
//ende org
//SlLogin();
/*var req = 0;
req = $.request.parameters.get('crmid');
if (!req){
output.error = "Invalid BP Request - " + req;
$.response.status = $.net.http.OK;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
}else{
//addBP(JSON.stringify(bpObj));
//updBP(JSON.stringify(bpObj));
//GetOrders(req);
}
*/
+873
View File
@@ -200,3 +200,876 @@ function slLogin() {
}
return loginResult;
}
function checkItemCode(inItemCode) {
var ItemCode = ""; // return value if document doesn't exist
outMsg = {};
outMsg.method = "checkItemCodeExistsinSAP";
outMsg.ItemCode = inItemCode;
outMsg.status = "success";
outMsg.message = "not exists";
if (inItemCode !== "") {
var conn = $.db.getConnection();
var pstmt;
var query =
"SELECT T0.\"ItemCode\" FROM \"XXREPXX\".\"OITM\" T0 WHERE T0.\"ItemCode\"= ?";
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setNString(1, inItemCode);
try {
var rs = pstmt.executeQuery();
var Documents = [];
while (rs.next()) {
var Document = {};
Document.ItemCode = rs.getNString(1);
Documents.push(Document);
// return AbsId from last result
ItemCode = Document.ItemCode;
outMsg.ItemCode = ItemCode;
outMsg.message = "exists";
}
outMsg.Document = Documents;
rs.close();
} finally {
pstmt.close();
conn.close();
if (debugLevel > 0) {
outMsg.Query = query;
outMessages.push(outMsg);
}
}
} else {
outStatus = "error";
outMsg.status = "error";
outMsg.message = "ItemCode: " + inItemCode + " not exists in SAP (OITM)";
outMessages.push(outMsg);
}
return ItemCode;
}
function getItemCode(product_id) {
var ItemCode = ""; // return value if product doesn't exist
outMsg = {};
outMsg.method = "checkProductIdExistsinMappingTable";
outMsg.product_id = product_id;
outMsg.status = "error";
outMsg.message = "not exists";
if (product_id) {
var conn = $.db.getConnection();
var pstmt;
var query =
"SELECT T0.\"U_ITEMCODE\" FROM \"XXREPXX\".\"@UO_CRM_PRODUCT\" T0 WHERE T0.\"U_CRM_PRODUCT_ID\"= ?";
query = query.replace(/XXREPXX/g, UserComp);
if (debugLevel > 0) {
outMsg.Query = query;
}
pstmt = conn.prepareStatement(query);
pstmt.setNString(1, product_id);
try {
var rs = pstmt.executeQuery();
var Products = [];
while (rs.next()) {
var Product = {};
Product.ItemCode = rs.getNString(1);
Products.push(Product);
ItemCode = Product.ItemCode;
outMsg.ItemCode = ItemCode;
outMsg.status = "success";
outMsg.message = "exists";
}
if (debugLevel > 0) {
outMsg.Products = Products;
}
rs.close();
} finally {
pstmt.close();
conn.close();
if (outMsg.status === 'error') {
throw new Error("Product not found in mapping table: " + product_id);
}
if (debugLevel > 0) {
outMessages.push(outMsg);
}
}
} else {
outStatus = "error";
outMsg.status = "error";
outMsg.message = "Mandatory parameter is missing in payload (product_id)";
//outMessages.push(outMsg);
throw new Error(outMsg.message);
}
checkItemCode(ItemCode);
return ItemCode;
}
function getDocEntry(invoiceGUID) {
var DocEntry = -1; // return value if document doesn't exist
outMsg = {};
outMsg.method = "checkDocumentExists";
outMsg.invoiceGUID = invoiceGUID;
//outMsg.CardCode = CardCode;
outMsg.status = "success";
outMsg.message = "not exists";
if (invoiceGUID) {
var conn = $.db.getConnection();
var pstmt;
var query =
"SELECT T0.\"DocEntry\", T0.\"DocNum\", T0.\"NumAtCard\", T0.\"CardCode\", T0.\"DocStatus\", T0.\"U_EON_SRC_ID\" FROM \"XXREPXX\".\"OINV\" T0 WHERE T0.\"U_EON_SRC_GUID\"= ? AND T0.\"U_EON_SRC_SYSTEM\"= 'crm' ";
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setNString(1, invoiceGUID);
//pstmt.setNString(2, CardCode.toString());
try {
var rs = pstmt.executeQuery();
var Documents = [];
while (rs.next()) {
var Document = {};
Document.DocEntry = rs.getInteger(1);
Document.DocNum = rs.getNString(2);
Document.NumAtCard = rs.getNString(3);
Document.CardCode = rs.getNString(4);
Document.DocStatus = rs.getNString(5);
Document.U_EON_SRC_ID = rs.getNString(6);
Document.U_EON_SRC_GUID = invoiceGUID;
Documents.push(Document);
// return AbsId from last result
DocEntry = Document.DocEntry;
outMsg.DocEntry = DocEntry;
outMsg.message = "exists";
outMsg.status = "error";
outStatus = "error";
}
outMsg.Document = Documents;
rs.close();
} finally {
pstmt.close();
conn.close();
if (debugLevel > 0 || outMsg.status === "error") {
//outMsg.Query = query;
outMessages.push(outMsg);
}
}
} else {
outStatus = "error";
outMsg.status = "error";
outMsg.message = "Mandatory parameter is missing in payload (invoice_crm_guid)";
outMessages.push(outMsg);
}
return DocEntry;
}
function getCardCode(CRMID) {
var CardCode = ""; // return value if customer doesn't exist
outMsg = {};
outMsg.method = "getCardCode";
outMsg.CRMID = CRMID;
outMsg.status = "error";
outMsg.message = "customer not found";
if (CRMID) {
var conn = $.db.getConnection();
var pstmt;
var query =
"SELECT T0.\"CardCode\",T0.\"U_EON_PGN\" FROM \"XXREPXX\".\"OCRD\" T0 WHERE T0.\"CardType\"=\'C\' AND T0.\"U_EON_ID_CRM\"= ?";
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setNString(1, CRMID);
try {
var rs = pstmt.executeQuery();
while (rs.next()) {
CardCode = rs.getNString(1);
outMsg.CardCode = CardCode;
outMsg.U_EON_PGN = rs.getNString(2);
outMsg.status = "success";
outMsg.message = "exists";
}
rs.close();
} finally {
pstmt.close();
conn.close();
if (debugLevel > 0 || CardCode === "") {
if (debugLevel > 0) {
outMsg.Query = query;
}
outMessages.push(outMsg);
}
}
} else {
//outStatus = "error";
outMsg.status = "error";
outMsg.message = "Mandatory parameter is missing in payload (CRM ID)";
outMessages.push(outMsg);
}
if (CardCode === "") {
outStatus = "error";
}
return CardCode;
}
function getSignatureDate(ContractID) {
var sigdate;
outMsg = {};
outMsg.method = "getSignatureDate";
outMsg.ContractID = ContractID;
outMsg.status = "error";
outMsg.message = "invalid ContractID";
if (ContractID) {
var conn = $.db.getConnection();
var pstmt;
var query =
"SELECT T0.\"U_SIGNATURE_DATE\" FROM \"XXREPXX\".\"@EON_CONTRACT\" T0 WHERE T0.\"U_EXT_ID_CRM\"= ?";
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setNString(1, ContractID);
try {
var rs = pstmt.executeQuery();
while (rs.next()) {
sigdate = rs.getNString(1);
outMsg.sigdate = sigdate;
outMsg.ContractID = ContractID;
outMsg.status = "success";
outMsg.message = "exists";
}
rs.close();
} finally {
pstmt.close();
conn.close();
if (debugLevel > 0 || sigdate === "") {
if (debugLevel > 0) {
outMsg.Query = query;
}
outMessages.push(outMsg);
}
}
} else {
//outStatus = "error";
outMsg.status = "error";
outMsg.message = "Mandatory parameter is missing in payload (ContractID)";
outMessages.push(outMsg);
}
if (sigdate === "") {
outStatus = "error";
}
return sigdate;
}
function getSeries(objectCode, seriesName) {
var series = 0; // return value if series doesn't exist
outMsg = {};
outMsg.method = "getSeries";
outMsg.seriesName = seriesName;
outMsg.status = "error";
outMsg.message = "invalid document series";
if (seriesName) {
var conn = $.db.getConnection();
var pstmt;
var query =
"SELECT T0.\"Series\" FROM \"XXREPXX\".\"NNM1\" T0 WHERE T0.\"ObjectCode\"= ? AND T0.\"SeriesName\"= ?";
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
pstmt.setNString(1, objectCode);
pstmt.setNString(2, seriesName);
try {
var rs = pstmt.executeQuery();
while (rs.next()) {
series = rs.getInteger(1);
outMsg.series = series;
outMsg.status = "success";
outMsg.message = "exists";
}
rs.close();
} finally {
pstmt.close();
conn.close();
if (debugLevel > 0 || series === 0) {
if (debugLevel > 0) {
outMsg.Query = query;
}
outMessages.push(outMsg);
}
}
} else {
//outStatus = "error";
outMsg.status = "error";
outMsg.message = "Mandatory parameter is missing in payload (OrderType)";
outMessages.push(outMsg);
}
if (series === 0) {
outStatus = "error";
}
return series;
}
function getDocDates() {
var docDate, taxDate;
outMsg = {};
outMsg.method = "getDocDates";
outMsg.status = "error";
var conn = $.db.getConnection();
var pstmt;
var query =
'with currentPeriod as (select * from "XXREPXX".OFPR where current_date between "F_RefDate" and "T_RefDate"), \
nextPeriod as (select top 1 * from "XXREPXX".OFPR where "F_RefDate" > current_date order by "F_RefDate") \
select case when currentPeriod."PeriodStat"=\'N\' then current_date \
else to_date(nextPeriod."F_RefDate") end "DocDate", current_date as "TaxDate" \
from currentPeriod left join nextPeriod on 1=1';
query = query.replace(/XXREPXX/g, UserComp);
pstmt = conn.prepareStatement(query);
try {
var rs = pstmt.executeQuery();
while (rs.next()) {
docDate = rs.getDate(1);
taxDate = rs.getDate(2);
outMsg.docDate = docDate;
outMsg.taxDate = taxDate;
outMsg.status = "success";
}
rs.close();
} finally {
pstmt.close();
conn.close();
if (debugLevel > 0) {
if (debugLevel > 0) {
outMsg.Query = query;
}
outMessages.push(outMsg);
}
}
return {
docDate: docDate,
taxDate: taxDate
};
}
function splitcardname(mycardname) {
var mycardnamenew = [];
if (mycardname.length > 50) {
var mycardname1 = mycardname.substring(0, 50);
var mylastindex1 = mycardname1.lastIndexOf(' ');
var mylastindex2 = mycardname1.lastIndexOf('-');
var mylastindex3 = mycardname1.lastIndexOf('&');
var mylastindex = Math.max(mylastindex1, mylastindex2, mylastindex3);
mycardname1 = mycardname.substring(0, mylastindex);
var mycardname2 = mycardname.substring(mylastindex + 1, 100);
mycardnamenew.push(mycardname1);
mycardnamenew.push(mycardname2);
} else {
mycardnamenew.push(mycardname);
mycardnamenew.push("");
}
return mycardnamenew;
}
function buildDocument(DocumentIn, AttachmentEntry) {
var DocumentNew = {};
draftMode = DocumentIn.draft_state;
myDebug.draftMode = draftMode;
if (draftMode) {
DocumentNew.DocObjectCode = objecttype;
}
myDebug.MapperMode = "CREATE";
DocumentNew.CardCode = getCardCode(DocumentIn.account.gp_number);
const {
docDate, taxDate
} = getDocDates();
DocumentNew.DocDate = datetimelib.convertToISODate(docDate);
DocumentNew.TaxDate = datetimelib.convertToISODate(taxDate);
DocumentNew.NumAtCard = DocumentIn.web_orderid;
//: DocumentIn.invoice_crm_id;
DocumentNew.DocCurrency = DocumentIn.CurrencyISOCode;
DocumentNew.Comments = DocumentIn.ShippingComments;
DocumentNew.U_EON_CRM_REF = DocumentIn.contract_id;
DocumentNew.TransportationCode = DocumentIn.TransportMethod;
if (DocumentIn.invoicetype === 'Sammelrechnung') {
DocumentNew.U_EON_PERIOD_FROM = datetimelib.convertToISODate(DocumentIn.billing_period.start);
DocumentNew.U_EON_PERIOD_TO = datetimelib.convertToISODate(DocumentIn.billing_period.end);
//Muss aus Vertrag gezogen werden...
//DocumentNew.U_EON_SIGNATURE_DATE = datetimelib.convertToISODate(new Date());
DocumentNew.U_EON_SIGNATURE_DATE = getSignatureDate(DocumentIn.contract_id);
DocumentNew.U_EON_CRM_REF = DocumentIn.contract_id;
} else {
DocumentNew.U_EON_PERIOD_FROM = DocumentIn.order_completed.substring(0, 10);
DocumentNew.U_EON_PERIOD_TO = DocumentIn.order_completed.substring(0, 10);
DocumentNew.U_EON_SIGNATURE_DATE = datetimelib.convertToISODate(DocumentIn.signature_date);
}
DocumentNew.U_EON_SRC_SYSTEM = 'crm';
DocumentNew.U_EON_SRC_ID = DocumentIn.invoice_crm_id;
DocumentNew.U_EON_SRC_GUID = DocumentIn.invoice_crm_guid;
DocumentNew.AttachmentEntry = AttachmentEntry;
var invoiceAddressExists = DocumentIn.invoice_address && DocumentIn.invoice_address.address && DocumentIn.invoice_address.address.city;
var shippingAddressExists = DocumentIn.shipping_address && DocumentIn.shipping_address.address && DocumentIn.shipping_address.address.city;
if (invoiceAddressExists && DocumentIn.invoice_address.person.name) {
DocumentNew.ContactPersonCode = 0;
}
if (DocumentIn.description) {
DocumentNew.Comments = DocumentIn.description.substring(0, 254);
}
DocumentNew.DocumentReferences = [
{
RefObjType: 'rot_ExternalDocument',
ExtDocNum: logTableId.toString(),
Remark: 'UO_DOCUMENTS_RAWCALL'
}
];
if (invoiceAddressExists || shippingAddressExists) {
DocumentNew.AddressExtension = {};
if (invoiceAddressExists) {
DocumentNew.AddressExtension.BillToAddress2 = splitcardname(DocumentIn.invoice_address.person.company_name)[0];
DocumentNew.AddressExtension.U_CompanyName2B = splitcardname(DocumentIn.invoice_address.person.company_name)[1].substring(0, 50);
DocumentNew.AddressExtension.BillToBuilding = DocumentIn.invoice_address.address.street_addon;
DocumentNew.AddressExtension.BillToAddress3 = DocumentIn.invoice_address.person.salutation + " " + DocumentIn.invoice_address.person.name;
DocumentNew.AddressExtension.BillToStreet = DocumentIn.invoice_address.address.street_name;
DocumentNew.AddressExtension.BillToStreetNo = DocumentIn.invoice_address.address.housenumber;
DocumentNew.AddressExtension.BillToZipCode = DocumentIn.invoice_address.address.postalcode;
DocumentNew.AddressExtension.BillToCity = DocumentIn.invoice_address.address.city;
DocumentNew.AddressExtension.BillToCountry = DocumentIn.invoice_address.address.country;
}
if (shippingAddressExists) {
DocumentNew.AddressExtension.ShipToAddress2 = splitcardname(DocumentIn.shipping_address.person.company_name)[0];
DocumentNew.AddressExtension.U_CompanyName2S = splitcardname(DocumentIn.shipping_address.person.company_name)[1].substring(0, 50);
DocumentNew.AddressExtension.ShipToAddress3 = DocumentIn.shipping_address.person.salutation + " " + DocumentIn.shipping_address.person.name;
DocumentNew.AddressExtension.ShipToStreet = DocumentIn.shipping_address.address.street_name;
DocumentNew.AddressExtension.ShipToStreetNo = DocumentIn.shipping_address.address.housenumber;
DocumentNew.AddressExtension.ShipToZipCode = DocumentIn.shipping_address.address.postalcode;
DocumentNew.AddressExtension.ShipToCity = DocumentIn.shipping_address.address.city;
DocumentNew.AddressExtension.ShipToCountry = DocumentIn.shipping_address.address.country;
DocumentNew.AddressExtension.ShipToBuilding = DocumentIn.shipping_address.address.street_addon;
}
}
DocumentNew.DocumentLines = [];
var needsSpecialLines = DocumentIn.products.findIndex(function(p) {
return p.product_crm_title && p.product_crm_title.startsWith('IN_ZUS');
}) > -1;
if (needsSpecialLines) {
DocumentNew.DocumentSpecialLines = [];
DocumentNew.DocumentSpecialLines.push({
AfterLineNumber: -1,
LineType: "dslt_Text",
LineText: "Im Paket enthalten:"
});
}
// Hauptprodukte
for (var g in DocumentIn.products) {
var myItemLines = {};
if (!(DocumentIn.products[g].product_crm_title && DocumentIn.products[g].product_crm_title.startsWith('IN_ZUS'))) {
myItemLines.ItemCode = getItemCode(DocumentIn.products[g].product_id);
myItemLines.ItemDescription = DocumentIn.products[g].product_invoice_title;
myItemLines.Quantity = DocumentIn.products[g].amount;
// myItemLines.WarehouseCode = DocumentIn.products[g].Warehouse;
myItemLines.UnitPrice = DocumentIn.products[g].discounted_single_price;
myItemLines.U_EON_PERIOD_FROM = DocumentIn.invoicetype === 'Sammelrechnung' ? datetimelib.convertToISODate(DocumentIn.billing_period.start) :
DocumentIn.order_completed.substring(0, 10);
myItemLines.U_EON_PERIOD_TO = DocumentIn.invoicetype === 'Sammelrechnung' ? datetimelib.convertToISODate(DocumentIn.billing_period.end) :
DocumentIn.order_completed.substring(0, 10);
// myItemLines.DiscountPercent = DocumentIn.OrderLineItems[g].RowDiscount;
myItemLines.ProjectCode = DocumentIn.products[g].orderid;
/*var locationsAdressExists = DocumentIn.locations && DocumentIn.locations[0].address && DocumentIn.locations[0].address.city;
// myItemLines.U_KU_SONumber = DocumentIn.OrderLineItems[g].RelatedSalesOrder ? DocumentIn.OrderLineItems[g].RelatedSalesOrder : null;
if (g==='0' && locationsAdressExists)
{
var locationsText = "Standort:";
DocumentIn.locations.forEach(function (loc) {
locationsText += "\n" + loc.address.street_name + " " + loc.address.housenumber + "\n" + loc.address.postalcode + " " + loc.address.city;
});
myItemLines.ItemDetails = locationsText;
}*/
if (DocumentIn.products[g].service_description) {
myItemLines.ItemDetails = DocumentIn.products[g].service_description;
}
DocumentNew.DocumentLines.push(myItemLines);
}
}
if (needsSpecialLines) {
DocumentNew.DocumentSpecialLines.push({
AfterLineNumber: DocumentNew.DocumentLines.length - 1,
LineType: "dslt_Subtotal",
LineText: "Zwischensumme"
});
DocumentNew.DocumentSpecialLines.push({
AfterLineNumber: DocumentNew.DocumentLines.length - 1,
LineType: "dslt_Text",
LineText: "Zusatzleistungen:"
});
}
// Zusatzprodukte
for (var g in DocumentIn.products) {
var myItemLines = {};
if (DocumentIn.products[g].product_crm_title && DocumentIn.products[g].product_crm_title.startsWith('IN_ZUS')) {
myItemLines.ItemCode = getItemCode(DocumentIn.products[g].product_id);
myItemLines.ItemDescription = DocumentIn.products[g].product_invoice_title;
myItemLines.Quantity = DocumentIn.products[g].amount;
// myItemLines.WarehouseCode = DocumentIn.products[g].Warehouse;
myItemLines.UnitPrice = DocumentIn.products[g].discounted_single_price;
myItemLines.U_EON_PERIOD_FROM = DocumentIn.invoicetype === 'Sammelrechnung' ? datetimelib.convertToISODate(DocumentIn.billing_period.start) :
DocumentIn.order_completed.substring(0, 10);
myItemLines.U_EON_PERIOD_TO = DocumentIn.invoicetype === 'Sammelrechnung' ? datetimelib.convertToISODate(DocumentIn.billing_period.end) :
DocumentIn.order_completed.substring(0, 10);
// myItemLines.DiscountPercent = DocumentIn.OrderLineItems[g].RowDiscount;
myItemLines.ProjectCode = DocumentIn.products[g].orderid;
/*var locationsAdressExists = DocumentIn.locations && DocumentIn.locations[0].address && DocumentIn.locations[0].address.city;
// myItemLines.U_KU_SONumber = DocumentIn.OrderLineItems[g].RelatedSalesOrder ? DocumentIn.OrderLineItems[g].RelatedSalesOrder : null;
if (g==='0' && locationsAdressExists)
{
var locationsText = "Standort:";
DocumentIn.locations.forEach(function (loc) {
locationsText += "\n" + loc.address.street_name + " " + loc.address.housenumber + "\n" + loc.address.postalcode + " " + loc.address.city;
});
myItemLines.ItemDetails = locationsText;
}*/
if (DocumentIn.products[g].service_description) {
myItemLines.ItemDetails = DocumentIn.products[g].service_description;
}
DocumentNew.DocumentLines.push(myItemLines);
}
}
if (needsSpecialLines) {
DocumentNew.DocumentSpecialLines.push({
AfterLineNumber: DocumentNew.DocumentLines.length - 1,
LineType: "dslt_Subtotal",
LineText: "Zwischensumme"
});
}
return DocumentNew;
}
function setAperiodicAccounts(createBody) {
var newBody = JSON.parse(JSON.stringify(createBody));
var accountList = [];
var aperiodicAccountAssignment = [];
outMsg = {};
outMsg.method = "setAperiodicAccounts.previewInvoice";
outMsg.status = "error";
//create preview invoice
var responsePreview = slib.previewInvoice(JSON.stringify({
Document: createBody
}), SESSIONID, NODEID);
myDebug.statusPreview = responsePreview.status;
outMsg.statuscode = responsePreview.status;
myDebug.responsePreview = JSON.parse(responsePreview.body.asString());
if (responsePreview.status >= 200 && responsePreview.status < 300) {
outMsg.status = "success";
var previewInvObj = JSON.parse(responsePreview.body.asString());
// erstelle eine eindeutige Liste von Konten, basierend auf Zeilen mit aperiodischem Zeitraum
accountList = previewInvObj.DocumentLines.filter(function(dl) {
return dl.U_EON_PERIOD_TO.substring(0, 4) < createBody.DocDate.substring(0, 4)
})
.map(function(al) {
return al.AccountCode
})
.filter(function(account, index, inputArray) {
return inputArray.indexOf(account) == index;
});
myDebug.accountListOfAperiodicLines = accountList;
if (debugLevel > 0) {
outMessages.push(outMsg);
}
//lookup aperiodic accounts
outMsg = {};
outMsg.method = "setAperiodicAccounts.lookupAccounts";
outMsg.status = "error";
//"SELECT T0.\"U_EON_ACCAPER\", T0.\"AcctName\" FROM OACT T0 WHERE T0.\"AcctCode\" = ?
var conn = $.hdb.getConnection();
accountList.forEach(function(accountCode) {
var rs = conn.executeQuery('SELECT T0."U_EON_ACCAPER", T0."AcctCode", T0."AcctName" FROM "' + UserComp +
'".OACT T0 WHERE T0."AcctCode" = ?', accountCode);
if (rs[0].U_EON_ACCAPER) {
aperiodicAccountAssignment.push({
accountCode: rs[0].AcctCode,
aperiodicAccountCode: rs[0].U_EON_ACCAPER
})
}
});
conn.close();
outMsg.aperiodicAccountAssignment = aperiodicAccountAssignment;
// aperiodische Konten in Belegzeilen setzen
for (var i = 0; i < previewInvObj.DocumentLines.length; i++) {
var oldAccount = previewInvObj.DocumentLines[i].AccountCode;
var accountMapping = aperiodicAccountAssignment.find(function(a) {
return a.accountCode === oldAccount
});
if (accountMapping && accountMapping.aperiodicAccountCode) {
newBody.DocumentLines[i].AccountCode = accountMapping.aperiodicAccountCode;
}
}
outMsg.status = "success";
} else {
outMsg.status = "error";
//outMsg.message = myDebug.responsePreview;
outStatus = "error";
var slError = myDebug.responsePreview.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responsePreview);
}
outMsg.response = myDebug.responsePreview;
}
if (debugLevel > 0 || outMsg.status == "error") {
outMessages.push(outMsg);
}
return newBody;
}
function buildFilesObj(crmAttachments) {
var filesObj;
outMsg = {};
outMsg.method = "lookup MIME Types";
outMsg.status = 'success';
var conn = $.hdb.getConnection();
filesObj = crmAttachments.map(function(a) {
var rs = conn.executeQuery('SELECT T0."Code", T0."Name" FROM "' + UserComp + '"."@UO_MIME_TYPES" T0 WHERE T0."Code" = ?', a.document_mime_type);
if (rs.length > 0) {
return {
contentType: rs[0].Name,
fileName: $.util.createUuid() + "_" + a.document_name,
b64Content: a.document_content
}
} else {
outMsg.status = "error";
outStatus = "error";
outMsg.message = "MIME Type '" + a.document_mime_type + "' not found";
}
});
conn.close();
if (debugLevel > 0) {
outMsg.filesObj = filesObj;
}
if (debugLevel > 0 || outMsg.status == "error") {
outMessages.push(outMsg);
}
return filesObj;
}
function upsertDocument(inObj) {
try {
var DocumentIn = JSON.parse(inObj);
var DocEntry = getDocEntry(DocumentIn.invoice_crm_guid);
var attachmentEntry = -1;
if (outStatus !== "error") {
slLoggedIn = slLogin();
if (outStatus !== "error" && outStatus !== "exists" && DocumentIn.attachments) {
// Erstellung des Attachments Objekt inkl. Hochladen der Dateien - POST /b1s/v1/Attachments2
var filesObj = buildFilesObj(DocumentIn.attachments);
if (outStatus !== "error") {
outMsg = {};
outMsg.method = "uploadAttachments";
outMsg.status = "error";
var response = slib.callServiceLayerFileUpload('/b1s/v1/Attachments2', $.net.http.POST, filesObj, SESSIONID, NODEID);
outMsg.statuscode = response.status;
var parsedResponseUpload = response.body ? JSON.parse(response.body.asString()) : {};
if (response.status >= 200 && response.status < 300) {
outMsg.status = "success";
var attachmentObjResponse = parsedResponseUpload;
// attachmentEntry = AbsoluteEntry aus Response
if (attachmentObjResponse.AbsoluteEntry > 0) {
attachmentEntry = attachmentObjResponse.AbsoluteEntry;
outMsg.AttachmentEntry = attachmentEntry;
}
} else if (response.exception) {
outStatus = "error";
outMsg.status = "error";
outMsg.message = response.exception;
} else {
outStatus = "error";
outMsg.status = "error";
var slError = parsedResponseUpload.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(parsedResponseUpload);
}
}
if (debugLevel > 0 || outMsg.status == "error") {
outMessages.push(outMsg);
}
}
// Anreicherung der UDFs - PATCH /b1s/v1/Attachments2
if (outStatus !== 'error') {
outMsg = {};
outMsg.method = "updateAttachments";
outMsg.status = "error";
var attachmentPatchBody = {
AbsoluteEntry: attachmentEntry,
Attachments2_Lines: DocumentIn.attachments.map(function(a, idx) {
return {
AbsoluteEntry: attachmentEntry,
LineNum: idx + 1,
Override: 'tYES',
U_EON_EDOC_REL: 'Y',
U_EON_ORIG_FILE: a.document_name,
U_EON_MIME_TYPE: a.document_mime_type,
U_EON_DOC_GUID: a.document_guid,
U_EON_TRANS_KEY: a.transmission_key
};
})
};
if (debugLevel > 0) {
outMsg.requestBody = attachmentPatchBody;
}
var response = slib.patchDynamicEntity('Attachments2', attachmentEntry, JSON.stringify(attachmentPatchBody), SESSIONID, NODEID, false);
outMsg.statuscode = response.status;
var parsedResponseUpdate = response.body ? JSON.parse(response.body.asString()) : {};
if (response.status >= 200 && response.status < 300) {
outMsg.status = "success";
} else if (response.exception) {
outStatus = "error";
outMsg.status = "error";
outMsg.message = response.exception;
} else {
outStatus = "error";
outMsg.status = "error";
var slError = parsedResponseUpdate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(parsedResponseUpdate);
}
}
if (debugLevel > 0 || outMsg.status == "error") {
outMessages.push(outMsg);
}
}
}
if (outStatus !== "error" && outStatus !== "exists") {
//myDebug.CreateCode = "activated";
var createBody = buildDocument(DocumentIn, attachmentEntry);
myDebug.CreateObj = createBody;
var aperiodicLines = createBody.DocumentLines.filter(function(dl) {
return dl.U_EON_PERIOD_TO.substring(0, 4) < createBody.DocDate.substring(0, 4)
});
if (aperiodicLines.length > 0) {
createBody = setAperiodicAccounts(createBody);
}
// EMPEPI1-141: Ablehnung von Rechnungen im Entwurfsmodus ab 25.11.2022
const today = new Date();
const draftNotAllowedFrom = new Date('2022-11-28T00:00:00+01:00');
const draftNotAllowedUntil = new Date('2022-12-06T23:59:59+01:00');
if (draftMode && today >= draftNotAllowedFrom && today <= draftNotAllowedUntil) {
outMsg = {};
outMsg.method = "checkDraft";
outMsg.status = "error";
outMsg.message = "Draft documents are currently not allowed";
outMessages.push(outMsg);
outStatus = "error";
} else {
outMsg = {};
outMsg.method = "create";
//consDoc = buildSCObj(jsonSFCall, currentSC, addrObj, output.method);
//outMsg.CreateObj = createBody;
var responseCreate;
if (draftMode) {
responseCreate = slib.createDraft(JSON.stringify(createBody), SESSIONID, NODEID);
} else {
responseCreate = slib.createInvoice(JSON.stringify(createBody), SESSIONID, NODEID);
}
myDebug.statusCreate = responseCreate.status;
outMsg.statuscode = responseCreate.status;
myDebug.responseCreate = JSON.parse(responseCreate.body.asString());
if (responseCreate.status >= 200 && responseCreate.status < 300) {
myDebug.Createmessage = "Create sucessfull";
outMsg.status = "success";
var createdInvObj = JSON.parse(responseCreate.body.asString());
outMsg.DocEntry = createdInvObj.DocEntry;
logDocEntry = createdInvObj.DocEntry;
outMsg.DocNum = createdInvObj.DocNum;
//outMsg.currentOBJECT = createdInvObj;
} else {
myDebug.Createmessage = "Create error occured";
//output.errorCreatestatus = myDebug.Createmessage;
outStatus = "error";
outMsg.status = "error";
var slError = myDebug.responseCreate.error;
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
} else {
outMsg.message = JSON.stringify(myDebug.responseCreate);
}
outMsg.response = myDebug.responseCreate;
}
outMessages.push(outMsg);
}
}
}
// }
} catch (e) {
exceptionHandler(e);
return;
}
if (slLoggedIn) {
slib.SLLogout(SESSIONID, NODEID);
}
}
var content = $.request.body.asString();
try {
outMsg = {};
outMsg.method = "logRequest";
outMsg.status = "error";
logTableId = logginglib.logCall2Table(content, "UO_DOCUMENTS_RAWCALL", objecttype, serviceName, true);
outMsg.logTableId = logTableId;
if (logTableId > 0) {
outMsg.status = "success";
}
if (debugLevel > 0) {
outMessages.push(outMsg);
}
} catch (e) {
outStatus = "error";
exceptionHandler(e);
}
setConnectionParams(content);
if (outStatus !== "error") {
upsertDocument(content);
}
updateLogEntry(logTableId, logDocEntry, draftMode ? '112' : objecttype);
setOutputMessage();