Correct export of Delivery Unit EON_XSJSFRAMEWORK (36 files, replaces incomplete initial export)
This commit is contained in:
@@ -169,3 +169,4 @@ mCardCode = $.request.parameters.get('cardcode');
|
||||
copyBPlib();
|
||||
//PutBPDataInTable();
|
||||
//ende org
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
// initialize the ushell sandbox component
|
||||
sap.ushell.Container.createRenderer().placeAt("app");
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -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);
|
||||
@@ -80,6 +79,8 @@ function checkvatid(vatid,country,schemaname)
|
||||
|
||||
|
||||
|
||||
|
||||
return returnmessage;
|
||||
|
||||
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -20,6 +20,7 @@ var service_version = '1.4';
|
||||
|
||||
|
||||
|
||||
|
||||
function copyBP(ParDebug,mCardCode) {
|
||||
|
||||
var SESSIONID = "";
|
||||
@@ -105,6 +106,7 @@ function copyBP(ParDebug,mCardCode) {
|
||||
|
||||
|
||||
|
||||
|
||||
//consBPObject = bpmaplib.buildBPObj(customerObject.BP,vendorObject.BP);
|
||||
//myDebug.mappedUPDBPObj = consBPObject;
|
||||
if (customerObject.Status == "exists" && vendorObject.Status == "exists") {
|
||||
|
||||
@@ -1,28 +1,21 @@
|
||||
{
|
||||
"exposed": true,
|
||||
"authentication": [
|
||||
{
|
||||
"authentication": [{
|
||||
"method": "Form"
|
||||
}
|
||||
],
|
||||
"mime_mapping": [
|
||||
{
|
||||
}],
|
||||
|
||||
"mime_mapping": [{
|
||||
"extension": "jpg",
|
||||
"mimetype": "image/jpeg"
|
||||
}
|
||||
],
|
||||
}],
|
||||
"force_ssl": false,
|
||||
"enable_etags": true,
|
||||
"prevent_xsrf": true,
|
||||
"anonymous_connection": null,
|
||||
"cors": [
|
||||
{
|
||||
"cors": [{
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"allowOrigin": [
|
||||
"*"
|
||||
],
|
||||
}],
|
||||
"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
@@ -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
|
||||
|
||||
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
+482
-43
@@ -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,13 +79,36 @@ 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);
|
||||
@@ -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,17 +453,24 @@ 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)
|
||||
{
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -212,11 +490,14 @@ function buildBPObj(JbpObj, SBOOBJ) {
|
||||
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;
|
||||
|
||||
bpObj.BPAddresses = [];
|
||||
// bpObj.BPAddresses[0].AddressName = 'test';
|
||||
for (var g in SBOOBJ.BPAddresses) {
|
||||
@@ -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[
|
||||
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;
|
||||
}
|
||||
@@ -261,14 +544,22 @@ function buildBPObj(JbpObj, SBOOBJ) {
|
||||
mybpAdresses.AddressType = 'bo_ShipTo';
|
||||
}
|
||||
*/
|
||||
if (JbpObj.group == 'B2B' || JbpObj.group == 'B2M') {
|
||||
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,9 +689,23 @@ 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);
|
||||
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 = {};
|
||||
@@ -405,11 +715,21 @@ function buildBPObj(JbpObj, SBOOBJ) {
|
||||
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();
|
||||
@@ -423,13 +743,17 @@ function buildBPObj(JbpObj, SBOOBJ) {
|
||||
}
|
||||
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;
|
||||
@@ -455,11 +779,17 @@ function buildBPObj(JbpObj, SBOOBJ) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
@@ -864,4 +1297,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);
|
||||
}
|
||||
*/
|
||||
@@ -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 = {};
|
||||
@@ -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,24 +182,17 @@ 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'])) {
|
||||
if (JbpObj.shipping_type)
|
||||
{
|
||||
bpObj.U_UO_OUTPUT_VSARTAR = JbpObj.shipping_type.toString();
|
||||
}
|
||||
|
||||
@@ -448,10 +216,6 @@ function buildBPObj(JbpObj, SBOOBJ) {
|
||||
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';
|
||||
for (var g in SBOOBJ.BPAddresses) {
|
||||
@@ -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[
|
||||
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;
|
||||
}
|
||||
@@ -498,31 +260,30 @@ function buildBPObj(JbpObj, SBOOBJ) {
|
||||
mybpAdresses.AddressType = 'bo_ShipTo';
|
||||
}
|
||||
*/
|
||||
if (JbpObj.group === 'B2B' || JbpObj.group === 'B2M') {
|
||||
if (JbpObj.group == 'B2B' || JbpObj.group == 'B2M') {
|
||||
//mybpAdresses.AddressName2 = mycardname;
|
||||
mybpAdresses.AddressName2 = myaddress23[0];
|
||||
//mybpAdresses.AddressName3 = myaddress23[1];
|
||||
mybpAdresses.U_CompanyName2 = myaddress23[1];
|
||||
}
|
||||
if (JbpObj.addresses[h].address2) {
|
||||
mybpAdresses.BuildingFloorRoom = JbpObj.addresses[h].address2.toString();
|
||||
mybpAdresses.AddressName3 = myaddress23[1];
|
||||
}
|
||||
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,14 +318,10 @@ 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];
|
||||
}
|
||||
if (JbpObj.addresses[h].address2) {
|
||||
myaddbpAdresses.BuildingFloorRoom = JbpObj.addresses[h].address2.toString();
|
||||
myaddbpAdresses.AddressName3 = myaddress23[1];
|
||||
}
|
||||
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,23 +392,9 @@ 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 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 = {};
|
||||
@@ -662,21 +404,11 @@ function buildBPObj(JbpObj, SBOOBJ) {
|
||||
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();
|
||||
@@ -690,17 +422,13 @@ function buildBPObj(JbpObj, SBOOBJ) {
|
||||
}
|
||||
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;
|
||||
@@ -726,17 +454,11 @@ function buildBPObj(JbpObj, SBOOBJ) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
*/
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
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();
|
||||
|
||||
setOutputMessage();
|
||||
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);
|
||||
}
|
||||
*/
|
||||
@@ -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();
|
||||
Reference in New Issue
Block a user