1306 lines
43 KiB
JavaScript
1306 lines
43 KiB
JavaScript
//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 = {};
|
|
var outMessages = [];
|
|
var outErrorMessages = [];
|
|
var outMsg = {};
|
|
var outStatus = "success";
|
|
var myDebug = {};
|
|
var UserName = slDest.uniorg_eon_nice_v1_UserName;
|
|
var UserPass = slDest.uniorg_eon_nice_v1_UserPass;
|
|
var UserComp = slDest.uniorg_eon_nice_v1_UserComp;
|
|
var series_b2c = 68;
|
|
var series_b2b = 69;
|
|
var series_b2m = 70;
|
|
var groupcode_b2c = 100;
|
|
var groupcode_b2b = 102;
|
|
var groupcode_b2m = 103;
|
|
var cmpprivate_b2c = "cPrivate";
|
|
var cmpprivate_b2b = "cCompany";
|
|
var cmpprivate_b2m = "cCompany";
|
|
var use_iban = false;
|
|
var service_version = '9.7';
|
|
|
|
function setOutputMessage() {
|
|
|
|
$.response.contentType = "application/json";
|
|
$.response.setBody(JSON.stringify(output));
|
|
$.response.status = $.net.http.OK;
|
|
}
|
|
|
|
function pad(number) {
|
|
var r = String(number);
|
|
if (r.length === 1) {
|
|
r = '0' + r;
|
|
}
|
|
return r;
|
|
}
|
|
|
|
function convertToISODate(dateString) {
|
|
try {
|
|
//var options = { year: 'numeric', month: '2-digit', day: '2-digit' };
|
|
var d = new Date(dateString);
|
|
if (!isNaN(d)) {
|
|
//var convDate = d.toLocaleDateString('de-DE', options);
|
|
var convDate = d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate());
|
|
return convDate;
|
|
} else {
|
|
return dateString;
|
|
}
|
|
|
|
} catch (err) {
|
|
return (err);
|
|
}
|
|
}
|
|
|
|
function 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);
|
|
pstmt = conn.prepareStatement(query);
|
|
|
|
pstmt.setString(1, custpgnr);
|
|
|
|
var rs = pstmt.executeQuery();
|
|
if (!rs.next()) {
|
|
// outMsg = {};
|
|
// outMsg.method = "getnexval from sequence error";
|
|
// outMsg.status = "error";
|
|
// outMsg.message = e.message;
|
|
//outMessages.push(outMsg);
|
|
} else {
|
|
return rs.getString(1);
|
|
}
|
|
rs.close();
|
|
pstmt.close();
|
|
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) {
|
|
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 convertAdrType(adrtype) {
|
|
switch (adrtype) {
|
|
case '1':
|
|
case 'S':
|
|
return 'bo_ShipTo';
|
|
case '2':
|
|
case '3':
|
|
case 'B':
|
|
return 'bo_BillTo';
|
|
default:
|
|
return 'bo_BillTo';
|
|
}
|
|
}
|
|
|
|
function getnextvalsepaid() {
|
|
var conn = $.db.getConnection();
|
|
var pstmt;
|
|
var query = "select lpad(\"NICEPORTAL\".\"SEQ_MAND_ID\".NEXTVAL ,10,'0') 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 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 = '';
|
|
var mycardname = '';
|
|
var mycmpprivate = '';
|
|
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();
|
|
myseries = series_b2c;
|
|
mygroupcode = groupcode_b2c;
|
|
mycmpprivate = cmpprivate_b2c;
|
|
break;
|
|
case 'B2B':
|
|
//mycardname = JbpObj.name.toString();
|
|
mycardname = JbpObj.addresses[0].address.toString();
|
|
mybpcontactname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
|
|
myseries = series_b2b;
|
|
mygroupcode = groupcode_b2b;
|
|
mycmpprivate = cmpprivate_b2b;
|
|
break;
|
|
case 'B2M':
|
|
//mycardname = JbpObj.name.toString();
|
|
mycardname = JbpObj.addresses[0].address.toString();
|
|
mybpcontactname = JbpObj.name.toString().trim() + ' ' + JbpObj.surname.toString().trim();
|
|
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();
|
|
myseries = series_b2c;
|
|
mygroupcode = groupcode_b2c;
|
|
mycmpprivate = cmpprivate_b2c;
|
|
}
|
|
|
|
var myaddress23 = splitcardname(mycardname);
|
|
|
|
var bpObj = {};
|
|
bpObj.Series = myseries;
|
|
bpObj.CompanyPrivate = mycmpprivate; // JbpObj.type.toString();
|
|
bpObj.CardName = mycardname;
|
|
bpObj.CardType = 'C';
|
|
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') {
|
|
bpObj.PayTermsGrpCode = 13;
|
|
}
|
|
else if (JbpObj.payment_term)
|
|
{
|
|
bpObj.PayTermsGrpCode = getPaymentTerm(JbpObj.payment_term);
|
|
}
|
|
|
|
bpObj.EmailAddress = JbpObj.email.toString();
|
|
bpObj.U_EON_ID_CRM = JbpObj.id_crm.toString();
|
|
bpObj.U_EON_ID_CRM_INTERNAL = JbpObj.id_msd.toString();
|
|
|
|
if (JbpObj.shipping_type && !(SBOOBJ.U_UO_OUTPUT_VSARTAR && SBOOBJ.U_UO_OUTPUT_VSARTAR in ['CSV'])) {
|
|
bpObj.U_UO_OUTPUT_VSARTAR = JbpObj.shipping_type.toString();
|
|
}
|
|
|
|
if (!JbpObj.pgnr) {
|
|
bpObj.U_EON_ASSU = 'N';
|
|
bpObj.Affiliate = 'tNO';
|
|
}
|
|
|
|
if (JbpObj.pgnr) {
|
|
bpObj.U_EON_PGN = JbpObj.pgnr.toString();
|
|
bpObj.DebitorAccount = getCustRECACC(JbpObj.pgnr.toString());
|
|
bpObj.U_EON_ASSU = 'Y';
|
|
bpObj.Affiliate = 'tYES';
|
|
}
|
|
|
|
if (JbpObj.res_prop === true) {
|
|
bpObj.U_EON_WVB = 'Y';
|
|
}
|
|
|
|
if (JbpObj.res_prop === false) {
|
|
bpObj.U_EON_WVB = 'N';
|
|
}
|
|
|
|
bpObj.U_UO_EDI_BUYER_ID = JbpObj.e_invoice_buyerid;
|
|
bpObj.U_UO_EDI_SELLER_ID = JbpObj.e_invoice_sellerid;
|
|
bpObj.U_UO_EDI_ROUTING_ID = JbpObj.e_invoice_routingid;
|
|
|
|
bpObj.BPAddresses = [];
|
|
// bpObj.BPAddresses[0].AddressName = 'test';
|
|
for (var g in SBOOBJ.BPAddresses) {
|
|
|
|
for (var h in JbpObj.addresses) {
|
|
var mybpAdresses = {};
|
|
// mybpAdresses.g = g;
|
|
// mybpAdresses.h = h;
|
|
var myaddressbpname = JbpObj.addresses[h].street.toString() + ' ' + JbpObj.addresses[h].street_no.toString();
|
|
//var myaddressbpname = JbpObj.addresses[h].addressid.toString();
|
|
mybpAdresses.AddressName = SBOOBJ.BPAddresses[g].AddressName;
|
|
mybpAdresses.AddressType = SBOOBJ.BPAddresses[g].AddressType;
|
|
mybpAdresses.BPCode = SBOOBJ.BPAddresses[g].BPCode;
|
|
mybpAdresses.RowNum = SBOOBJ.BPAddresses[g].RowNum;
|
|
if (SBOOBJ.BPAddresses[g].U_EON_EXT_ID === JbpObj.addresses[h].addressid.toString() && SBOOBJ.BPAddresses[g].AddressType ===
|
|
convertAdrType(JbpObj.addresses[
|
|
h].type)) {
|
|
|
|
//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 (convertAdrType(JbpObj.addresses[h].type) === 'bo_BillTo') {
|
|
bpObj.BilltoDefault = myaddressbpname;
|
|
}
|
|
if (convertAdrType(JbpObj.addresses[h].type) === 'bo_ShipTo') {
|
|
bpObj.ShipToDefault = myaddressbpname;
|
|
}
|
|
}
|
|
|
|
//mybpAdresses.State = 'test';
|
|
//mybpAdresses.FederalTaxID = 'test';
|
|
//mybpAdresses.TaxCode = 'test';
|
|
//mybpAdresses.BuildingFloorRoom = 'test';
|
|
/*
|
|
if (JbpObj.addresses[h].type === 'B') {
|
|
mybpAdresses.AddressType = 'bo_BillTo';
|
|
} else {
|
|
mybpAdresses.AddressType = 'bo_ShipTo';
|
|
}
|
|
*/
|
|
if (JbpObj.group === 'B2B' || JbpObj.group === 'B2M') {
|
|
//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();
|
|
}
|
|
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 nichzt ergänzen
|
|
|
|
for (var h in JbpObj.addresses) {
|
|
var myfound = false;
|
|
var myaddbpAdresses = {};
|
|
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)) {
|
|
myfound = true;
|
|
}
|
|
}
|
|
|
|
if (myfound === false) {
|
|
myaddbpAdresses.AddressName = myaddbpname; //JbpObj.addresses[h].address.toString();
|
|
myaddbpAdresses.Street = JbpObj.addresses[h].street.toString();
|
|
//myaddbpAdresses.Block = 'test';
|
|
myaddbpAdresses.ZipCode = JbpObj.addresses[h].zip_code.toString();
|
|
myaddbpAdresses.City = JbpObj.addresses[h].city.toString();
|
|
//myaddbpAdresses.County = 'test';
|
|
myaddbpAdresses.Country = JbpObj.addresses[h].country.toString();
|
|
//myaddbpAdresses.State = 'test';
|
|
//myaddbpAdresses.FederalTaxID = 'test';
|
|
//myaddbpAdresses.TaxCode = 'test';
|
|
//myaddbpAdresses.BuildingFloorRoom = 'test';
|
|
if (JbpObj.addresses[h].standard === 'yes') {
|
|
if (convertAdrType(JbpObj.addresses[h].type) === 'bo_BillTo') {
|
|
bpObj.BilltoDefault = myaddbpname;
|
|
}
|
|
if (convertAdrType(JbpObj.addresses[h].type) === 'bo_ShipTo') {
|
|
bpObj.ShipToDefault = myaddbpname;
|
|
}
|
|
}
|
|
|
|
myaddbpAdresses.AddressType = convertAdrType(JbpObj.addresses[h].type);
|
|
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();
|
|
}
|
|
if (JbpObj.addresses[h].address3) {
|
|
myaddbpAdresses.AddressName3 = JbpObj.addresses[h].address3.toString();
|
|
}
|
|
//myaddbpAdresses.TypeOfAddress = 'test';
|
|
myaddbpAdresses.StreetNo = JbpObj.addresses[h].street_no.toString();
|
|
myaddbpAdresses.U_EON_EXT_ID = JbpObj.addresses[h].addressid.toString();
|
|
|
|
bpObj.BPAddresses.push(myaddbpAdresses);
|
|
|
|
}
|
|
}
|
|
|
|
// var myaddbpAdresses = {};
|
|
// //for (var i in bpObj.BPAddresses) {
|
|
// var myfound = false;
|
|
// for (var j in JbpObj.addresses) {
|
|
// // console.log("i=" + i + "Name:" + bpObj.BPAddresses[i].AddressName);
|
|
// console.log("j=" + j + "Name:" + JbpObj.addresses[j].address);
|
|
// console.log(bpObj.BPAddresses.(Addressname, 0, JbpObj.addresses[j].address));
|
|
// // if (bpObj.BPAddresses[i].AddressName == JbpObj.addresses[j].address) {
|
|
// if (bpObj.BPAddresses.indexOf(JbpObj.addresses[j].address) > 0) {
|
|
// console.log("FOUND");
|
|
// myfound = true;
|
|
// //((myaddbpAdresses.found = myfound;
|
|
// //myaddbpAdresses.i = i;
|
|
// //myaddbpAdresses.j = j;
|
|
|
|
// //bpObj.BPAddresses.push(myaddbpAdresses);
|
|
// }
|
|
// else {
|
|
// myfound = false
|
|
// console.log("NOT FOUND");
|
|
//// myaddbpAdresses.found = myfound;
|
|
// //bpObj.BPAddresses.push(myaddbpAdresses);
|
|
// }
|
|
// }
|
|
// //}
|
|
|
|
bpObj.ContactEmployees = [];
|
|
var myfoundCP = false;
|
|
for (var cpB1 in SBOOBJ.ContactEmployees) {
|
|
var mybpContactEmployees = {};
|
|
mybpContactEmployees.Name = SBOOBJ.ContactEmployees[cpB1].Name;
|
|
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.Title = JbpObj.title.toString();
|
|
mybpContactEmployees.U_EON_SALUTATION = JbpObj.salutation.toString();
|
|
bpObj.ContactPerson = mybpcontactname;
|
|
myfoundCP = true;
|
|
}
|
|
bpObj.ContactEmployees.push(mybpContactEmployees);
|
|
}
|
|
if (myfoundCP == false) {
|
|
mybpContactEmployees = {};
|
|
mybpContactEmployees.Name = mybpcontactname; //mycardname;
|
|
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;
|
|
bpObj.ContactEmployees.push(mybpContactEmployees);
|
|
}
|
|
|
|
bpObj.BPBankAccounts = [];
|
|
var myfoundBank = false;
|
|
var myIBAN = JbpObj.bank_account.iban.toString().replace(/ /g, '');
|
|
if (myIBAN !== '') {
|
|
use_iban = true;
|
|
} else {
|
|
use_iban = false;
|
|
}
|
|
|
|
if (use_iban) {
|
|
|
|
var bankDetails = parseIBAN(myIBAN);
|
|
|
|
if (bankDetails === false) {;
|
|
} else {
|
|
|
|
var myCountry = bankDetails.BankCountry;
|
|
var myBankCode = bankDetails.BankCode;
|
|
var myAccountNo = bankDetails.AccountNo;
|
|
var mySwiftNo = bankDetails.SwiftNo;
|
|
var mySignatureDate = convertToISODate(JbpObj.bank_account.signature_date);
|
|
for (var ba in SBOOBJ.BPBankAccounts) {
|
|
var myBPBankAccounts = {};
|
|
myBPBankAccounts.BPCode = SBOOBJ.BPBankAccounts[ba].BPCode;
|
|
myBPBankAccounts.InternalKey = SBOOBJ.BPBankAccounts[ba].InternalKey;
|
|
myBPBankAccounts.Country = SBOOBJ.BPBankAccounts[ba].Country;
|
|
myBPBankAccounts.BankCode = SBOOBJ.BPBankAccounts[ba].BankCode;
|
|
myBPBankAccounts.AccountNo = SBOOBJ.BPBankAccounts[ba].AccountNo;
|
|
myBPBankAccounts.IBAN = SBOOBJ.BPBankAccounts[ba].IBAN;
|
|
myBPBankAccounts.MandateID = SBOOBJ.BPBankAccounts[ba].MandateID;
|
|
myBPBankAccounts.SEPASeqType = SBOOBJ.BPBankAccounts[ba].SEPASeqType;
|
|
if (SBOOBJ.BPBankAccounts[ba].IBAN.replace(/ /g, '') === myIBAN) {
|
|
myfoundBank = true;
|
|
if (JbpObj.bank_account.bic.toString() !== '') {
|
|
myBPBankAccounts.BICSwiftCode = JbpObj.bank_account.bic.toString();
|
|
}
|
|
else if (mySwiftNo.toString() !== '')
|
|
{
|
|
myBPBankAccounts.BICSwiftCode = mySwiftNo.toString();
|
|
}
|
|
|
|
myBPBankAccounts.Country = myCountry;
|
|
myBPBankAccounts.BankCode = myBankCode;
|
|
myBPBankAccounts.AccountNo = myAccountNo;
|
|
myBPBankAccounts.AccountName = JbpObj.bank_account.account_owner.toString();
|
|
myBPBankAccounts.Street = JbpObj.bank_account.street.toString() + " " + JbpObj.bank_account.street_no.toString();
|
|
myBPBankAccounts.ZipCode = JbpObj.bank_account.zip_code.toString();
|
|
myBPBankAccounts.City = JbpObj.bank_account.city.toString();
|
|
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
|
|
myBPBankAccounts.SignatureDate = mySignatureDate;
|
|
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
|
|
if (SBOOBJ.BPBankAccounts[ba].MandateID == null) //|| SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10) > JbpObj.id_crm )
|
|
{
|
|
myBPBankAccounts.MandateID = JbpObj.id_crm + getnextvalsepaid();
|
|
}
|
|
bpObj.CollectionAuthorization = 'tYES';
|
|
}
|
|
//22.07.2024 BUS-7580
|
|
if (JbpObj.bank_account.sepa_mandate.toString() == 'Nein') {
|
|
bpObj.CollectionAuthorization = 'tNO';
|
|
}
|
|
}
|
|
bpObj.BankCountry = myCountry;
|
|
bpObj.DefaultBankCode = myBankCode;
|
|
bpObj.DefaultAccount = myAccountNo;
|
|
bpObj.BPBankAccounts.push(myBPBankAccounts);
|
|
}
|
|
|
|
if (myfoundBank === false) {
|
|
myBPBankAccounts = {};
|
|
myBPBankAccounts.IBAN = myIBAN;
|
|
myBPBankAccounts.Country = myCountry;
|
|
myBPBankAccounts.BankCode = myBankCode;
|
|
myBPBankAccounts.AccountNo = myAccountNo;
|
|
if (JbpObj.bank_account.bic.toString() !== '') {
|
|
myBPBankAccounts.BICSwiftCode = JbpObj.bank_account.bic.toString();
|
|
}
|
|
myBPBankAccounts.AccountName = JbpObj.bank_account.account_owner.toString();
|
|
myBPBankAccounts.Street = JbpObj.bank_account.street.toString() + " " + JbpObj.bank_account.street_no.toString();
|
|
myBPBankAccounts.ZipCode = JbpObj.bank_account.zip_code.toString();
|
|
myBPBankAccounts.City = JbpObj.bank_account.city.toString();
|
|
// myBPBankAccounts.MandateID = JbpObj.bank_account.sepa_mandate_id.toString();
|
|
myBPBankAccounts.SignatureDate = mySignatureDate;
|
|
|
|
if (JbpObj.bank_account.sepa_mandate.toString() == 'Ja') {
|
|
// myBPBankAccounts.MandateID = SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10);
|
|
// if (SBOOBJ.BPBankAccounts[ba].MandateID.IsNullOrEmpty ) //|| SBOOBJ.BPBankAccounts[ba].MandateID.substring(0,10) > JbpObj.id_crm
|
|
//{
|
|
myBPBankAccounts.MandateID = JbpObj.id_crm + getnextvalsepaid();
|
|
bpObj.CollectionAuthorization = 'tYES';
|
|
myBPBankAccounts.SEPASeqType = 'sstFRST';
|
|
//}
|
|
}
|
|
//23.07.2024 BUS-7580
|
|
if (JbpObj.bank_account.sepa_mandate.toString() == 'Nein') {
|
|
bpObj.CollectionAuthorization = 'tNO';
|
|
}
|
|
bpObj.BankCountry = myCountry;
|
|
bpObj.DefaultBankCode = myBankCode;
|
|
bpObj.DefaultAccount = myAccountNo;
|
|
bpObj.BPBankAccounts.push(myBPBankAccounts);
|
|
}
|
|
}
|
|
}
|
|
|
|
return bpObj;
|
|
}
|
|
|
|
function mockbuildBPObj() {
|
|
var bpObj = {};
|
|
bpObj.Series = series_b2b;
|
|
bpObj.CompanyPrivate = "I"; // JbpObj.type.toString();
|
|
bpObj.CardName = 'Burgmueller';
|
|
//bpObj.CardType = 'C';
|
|
//bpObj.GroupCode = 100; // JbpObj.group.toString();
|
|
//bpObj.Phone1 = JbpObj.phone.toString();
|
|
//bpObj.Cellular = JbpObj.mobile_phone.toString();
|
|
//bpObj.EmailAddress = JbpObj.email.toString();
|
|
bpObj.U_EON_ID_CRM = 'BP777888999';
|
|
bpObj.U_EON_ASSU = 'N';
|
|
return bpObj;
|
|
}
|
|
|
|
function upsBP(searchparam, JbpObj) {
|
|
|
|
var SESSIONID = "";
|
|
var NODEID = "";
|
|
|
|
// SL credentials
|
|
var loginInfo = {};
|
|
loginInfo.UserName = UserName;
|
|
loginInfo.Password = UserPass;
|
|
loginInfo.CompanyDB = UserComp;
|
|
|
|
var slError;
|
|
|
|
// 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;
|
|
}
|
|
}
|
|
output.loginInfo = loginInfo;
|
|
// output.loginResponse = JSON.parse(response.body.asString());
|
|
var loginResponse;
|
|
try {
|
|
loginResponse = JSON.parse(response.body.asString());
|
|
} catch (e) {
|
|
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;
|
|
outMessages.push(outMsg);
|
|
outStatus = "error";
|
|
}
|
|
|
|
if (JbpObj.vatid) {
|
|
var checkmyvatid = bpbl.checkvatid(JbpObj.vatid, JbpObj.vatid.substring(0, 2).toUpperCase(), UserComp);
|
|
if (checkmyvatid != "true") {
|
|
outMsg = {};
|
|
outMsg.method = "checkVATID";
|
|
outMsg.status = "error";
|
|
outMsg.message = checkmyvatid;
|
|
outStatus = "error";
|
|
outMessages.push(outMsg);
|
|
}
|
|
}
|
|
|
|
// 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 = {};
|
|
outMsg.method = "checkExists";
|
|
//Add BP
|
|
//response = slib.createBusinessPartner(BPObject, SESSIONID,NODEID);
|
|
var responseGet = slib.getBusinessPartner(searchparam, SESSIONID, NODEID);
|
|
//var logoutresponse = slib.SLLogout(JSON.stringify(loginInfo), null, null);
|
|
//Parse response body
|
|
|
|
// Removes metadata
|
|
//delete body["odata.metadata"];
|
|
|
|
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;
|
|
if (responseGet.status >= 200 && responseGet.status < 300) {
|
|
outMsg.status = "success";
|
|
outMsg.message = "exists";
|
|
} else if (responseGet.status === 404) {
|
|
outMsg.status = "success";
|
|
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;
|
|
outStatus = "error";
|
|
}
|
|
outMessages.push(outMsg);
|
|
|
|
var CardCode = "";
|
|
var bodyGetFull = {};
|
|
if (bodyGet.value[0]) {
|
|
CardCode = 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;
|
|
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);
|
|
myDebug.BPObj = consBPObject;
|
|
|
|
if (CardCode !== "") {
|
|
output.method = "updateBP";
|
|
var responseUpdate = slib.updateBusinessPartner(CardCode, JSON.stringify(consBPObject), SESSIONID, NODEID);
|
|
outMsg = {};
|
|
outMsg.method = "update";
|
|
myDebug.statusUpdate = responseUpdate.status;
|
|
outMsg.statuscode = responseUpdate.status;
|
|
if (responseUpdate.status >= 200 && responseUpdate.status < 300) {
|
|
myDebug.Updatemessage = "Update sucessfull";
|
|
outMsg.status = "success";
|
|
} else {
|
|
myDebug.message = "Update error occured";
|
|
outMsg.status = "error";
|
|
if (responseUpdate.body) {
|
|
myDebug.responseUpdate = JSON.parse(responseUpdate.body.asString());
|
|
//outMsg.message = myDebug.responseUpdate;
|
|
slError = myDebug.responseUpdate.error;
|
|
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
|
|
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
|
|
} else {
|
|
outMsg.message = JSON.stringify(myDebug.responseUpdate);
|
|
}
|
|
outMsg.response = myDebug.responseUpdate;
|
|
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";
|
|
outMsg = {};
|
|
outMsg.method = "create";
|
|
var responseCreate = slib.createBusinessPartner(JSON.stringify(consBPObject), SESSIONID, NODEID);
|
|
myDebug.statusCreate = responseCreate.status;
|
|
outMsg.statuscode = responseCreate.status;
|
|
myDebug.responseCreate = JSON.parse(responseCreate.body.asString());
|
|
if (responseCreate.status >= 200 && responseCreate.status < 300) {
|
|
myDebug.Createmessage = "Create sucessfull";
|
|
outMsg.status = "success";
|
|
var createJbpObj = JSON.parse(responseCreate.body.asString());
|
|
CardCode = createJbpObj.CardCode;
|
|
} else {
|
|
myDebug.Createmessage = "Create error occured";
|
|
output.errorCreatestatus = myDebug.Createmessage;
|
|
outMsg.status = "error";
|
|
//outMsg.message = myDebug.responseCreate;
|
|
outStatus = "error";
|
|
slError = myDebug.responseCreate.error;
|
|
if (slError && slError.hasOwnProperty("code") && slError.message && slError.message.value) {
|
|
outMsg.message = slError.message.value + " (Code: " + slError.code.toString() + ")";
|
|
} else {
|
|
outMsg.message = JSON.stringify(myDebug.responseCreate);
|
|
}
|
|
outMsg.response = myDebug.responseCreate;
|
|
outErrorMessages.push(outMsg);
|
|
}
|
|
outMessages.push(outMsg);
|
|
}
|
|
|
|
}
|
|
output.CardCode = CardCode;
|
|
//output.CardName = body.CardName;
|
|
|
|
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_CRMBP_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_BP\" 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();
|
|
myDebug.UpdateQuery = query;
|
|
|
|
pstmt.close();
|
|
conn.commit();
|
|
conn.close();
|
|
|
|
}
|
|
|
|
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;
|
|
pstmt = conn.prepareStatement(query);
|
|
pstmt.setString(1, respstatus.toString());
|
|
pstmt.setString(2, respmessage.toString());
|
|
pstmt.setString(3, errormessage.toString());
|
|
var rs = pstmt.executeUpdate();
|
|
myDebug.UpdateQuery = query;
|
|
|
|
pstmt.close();
|
|
conn.commit();
|
|
conn.close();
|
|
|
|
}
|
|
|
|
function PutBPDataInTable() {
|
|
var 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: [] };
|
|
var mynextval = getnextval();
|
|
myDebug.mynextval = mynextval;
|
|
try {
|
|
|
|
// 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_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 (" +
|
|
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.id_msd.toString());
|
|
pstmt.setString(2, JbpObj.id_crm.toString());
|
|
pstmt.setString(3, JbpObj.type.toString());
|
|
pstmt.setString(4, JbpObj.group.toString());
|
|
pstmt.setString(5, JbpObj.salutation.toString());
|
|
pstmt.setString(6, JbpObj.title.toString());
|
|
pstmt.setString(7, JbpObj.name.toString());
|
|
pstmt.setString(8, JbpObj.surname.toString());
|
|
pstmt.setString(9, JbpObj.phone.toString());
|
|
pstmt.setString(10, JbpObj.mobile_phone.toString());
|
|
pstmt.setString(11, JbpObj.email.toString());
|
|
pstmt.setString(12, JSON.stringify(JbpObj.addresses));
|
|
pstmt.setString(13, JbpObj.bank_account.iban.toString());
|
|
pstmt.setString(14, JbpObj.bank_account.bic.toString());
|
|
pstmt.setString(15, JbpObj.bank_account.sepa_mandate_id.toString());
|
|
pstmt.setString(16, JbpObj.bank_account.signature_date.toString());
|
|
pstmt.setString(17, JbpObj.bank_account.account_owner.toString());
|
|
pstmt.setString(18, JbpObj.bank_account.street.toString());
|
|
pstmt.setString(19, JbpObj.bank_account.street_no.toString());
|
|
pstmt.setString(20, JbpObj.bank_account.zip_code.toString());
|
|
pstmt.setString(21, JbpObj.bank_account.city.toString());
|
|
pstmt.setString(22, JSON.stringify(JbpObj));
|
|
|
|
var rs = pstmt.executeUpdate();
|
|
pstmt.close();
|
|
conn.commit();
|
|
conn.close();
|
|
|
|
outMsg = {};
|
|
outMsg.method = "insertDB";
|
|
outMsg.status = "success";
|
|
outMessages.push(outMsg);
|
|
|
|
var searchparam = {};
|
|
searchparam.key = "U_EON_ID_CRM_INTERNAL";
|
|
searchparam.value = JbpObj.id_msd.toString();
|
|
|
|
//var bpObj = buildBPObj(JbpObj);
|
|
|
|
var retUpsertBP = upsBP(searchparam, JbpObj);
|
|
//var retUpsertBP = upsBP(searchparam, JSON.stringify(bpObj),JbpObj);
|
|
//var retUpsertBP = upsertBP(searchparam, JSON.stringify(bpObj));
|
|
//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";
|
|
outMsg.message = e.toString();
|
|
if (ParDebug) {
|
|
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;
|
|
vals.debugInfo = myDebug;
|
|
}
|
|
|
|
// 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);
|
|
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;
|
|
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) {
|
|
vals.debug = retUpsertBP;
|
|
}
|
|
//vals.mode = JSON.stringify(retUpsertBP.mode);
|
|
data.push(vals);
|
|
var okbody = JSON.stringify(data);
|
|
setRESPONSE(mynextval, outMsg.status, okbody, JSON.stringify(outErrorMessages));
|
|
//var body = JSON.stringify(test);
|
|
$.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();
|
|
}
|
|
|
|
//testmain();
|
|
|
|
// begin org
|
|
|
|
var content = $.request.body.asString();
|
|
ParDebug = $.request.parameters.get('debug') && $.request.parameters.get('debug').toLowerCase() === "true";
|
|
|
|
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);
|
|
}
|
|
*/ |