176 lines
8.0 KiB
Plaintext
176 lines
8.0 KiB
Plaintext
<%@ language = "JavaScript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: api_cntsoap.asp
|
|
Description: API voor CNT-soap berichten
|
|
Interpreteert een bericht zodanig dat contractgegevens worden aangepast.
|
|
Dat is: qua ingangsdatum, contractbedrag of termijnbedrag.
|
|
|
|
Parameters: Een xml
|
|
Status:
|
|
Context:
|
|
*/
|
|
DOCTYPE_Disable = 1;
|
|
THIS_FILE = "appl/api/api_cntsoap.asp";
|
|
%>
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/xml_converter.inc" -->
|
|
<!-- #include file="../Shared/save2db.inc" -->
|
|
<!-- #include file="../api/api.inc" -->
|
|
<!-- #include file="../cnt/cnt.inc" -->
|
|
<%
|
|
// We sturen het antwoord in UTF-8.
|
|
Session.Codepage = 65001;
|
|
Response.Charset = 'utf-8';
|
|
|
|
var APIname = getQParam("API");
|
|
var APIKEY = getQParam("APIKEY");
|
|
var API = new API_func(APIname, APIKEY);
|
|
var tsql = "-"; // Voor tijdelijke statement(s)
|
|
var sql = "-"; // De uiteindelijke insert/update-sql
|
|
var resultcode = -1; /* Zolang deze -1 is, is het nog goed. Uiteindelijk eindigt het met 0 (als goed). */
|
|
var resulttekst = "";
|
|
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
|
xmlReq.load(Request);
|
|
|
|
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
|
xmlResp.appendChild(xmlResp.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""))
|
|
|
|
// The response.
|
|
var FCLTElement = xmlResp.createElement("facilitor");
|
|
// The response header.
|
|
var now = new Date();
|
|
var nowtxt = now.getFullYear()+'-'+padout(now.getMonth()+1) +'-'+padout(now.getDate()) +' '
|
|
+padout(now.getHours()) +':'+padout(now.getMinutes())+':'+padout(now.getSeconds());
|
|
var elmHeader = xmlResp.createElement("header");
|
|
var headerinfo = {
|
|
// file: String(Request.ServerVariables("SCRIPT_NAME")).toLowerCase(),
|
|
datum: nowtxt,
|
|
naam: user.naam(),
|
|
custId: customerId,
|
|
language: user.lang()
|
|
}
|
|
for (param in headerinfo)
|
|
{
|
|
var FCLTdata = xmlResp.createElement(param);
|
|
FCLTdata.appendChild(xmlResp.createTextNode(headerinfo[param]));
|
|
elmHeader.appendChild(FCLTdata);
|
|
}
|
|
FCLTElement.appendChild(elmHeader);
|
|
|
|
// Hier zou het echte werk moeten gebeuren nav. xmlReq
|
|
// en FCLTElement moeten we uitbreiden met antwoorden.
|
|
var detected ="?";
|
|
// xmlReq.setProperty("SelectionLanguage", "XPath"); // Weet niet of noodzakelijk
|
|
|
|
// Is hiermee voldoende gecheckt op rechten?
|
|
var authparams = user.checkAutorisation("WEB_CNTMAN");// Dit is nog ongeacht het contract
|
|
|
|
// Dit is de contractenloop (mochten er ooit nog anderen gaan volgen).
|
|
var contracten = xmlReq.getElementsByTagName("contract");
|
|
for (i=0; i < contracten.length; i++)
|
|
{
|
|
// Lees per node de (optionele) tages en waarden
|
|
var fields = []; // Bij te werken velden
|
|
var cntid = contracten[i].getAttribute("key");
|
|
var cntaction = contracten[i].getAttribute("type").toLowerCase();
|
|
var mut_datum = XMLval(contracten[i], "datum"); // Unsupported yet (misschien eigenlijk zelfs overbodig).
|
|
var van_datum = XMLval(contracten[i], "ingangsdatum");
|
|
var contractbedrag = XMLval(contracten[i], "contractbedrag");
|
|
var termijnbedrag = XMLval(contracten[i], "termijnbedrag");
|
|
//var cntkenmerken = (contracten[i].getElementsByTagName("kenmerk"))[0].childNodes[0].nodeValue; // Unsupported yet
|
|
var cnt_key = -1; // Bepaald op basis van cntid
|
|
|
|
if (cntid == null) {
|
|
resultcode = 1;
|
|
resulttekst = "Undefined contract ID (key)";
|
|
} else if (cntaction != 'update') {
|
|
resultcode = 2;
|
|
resulttekst = "Invalid action (type="+ cntaction +")";
|
|
} else {
|
|
tsql = "SELECT c.cnt_contract_key, TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyymmdd') tot_datum "
|
|
+ " FROM cnt_contract c"
|
|
+ " WHERE c.cnt_contract_nummer_intern="+ safe.quoted_sql(cntid)
|
|
+ " AND NOT EXISTS"
|
|
+ " (SELECT 1 FROM cnt_contract"
|
|
+ " WHERE cnt_contract_nummer_intern=c.cnt_contract_nummer_intern"
|
|
+ " AND cnt_contract_versie > c.cnt_contract_versie)";
|
|
var oRs = Oracle.Execute(tsql);
|
|
if (oRs.eof) {
|
|
resultcode = 3;
|
|
resulttekst = "Unknown contract";
|
|
} else {
|
|
// Hier heb ik een geldige cnt_contract_key.
|
|
cnt_key = oRs("cnt_contract_key").value;
|
|
tot_datum = oRs("tot_datum").value;
|
|
|
|
this_cnt = cnt.func_enabled_contract(cnt_key); // Wat heb ik zoal aan rechten op dit contract?
|
|
if (this_cnt.canChange) {
|
|
// Bepaal de door te voeren wijzigingen.
|
|
if (van_datum != null) {
|
|
var looptijd_van = XMLtoJsDate(van_datum);
|
|
var looptijd_tot = XMLtoJsDate(tot_datum);
|
|
if (looptijd_van <= looptijd_tot) {
|
|
fields.push({ dbs: "cnt_contract_looptijd_van", typ: "date", val: looptijd_van, track: L("lcl_cnt_date_start") });
|
|
}
|
|
else {
|
|
resultcode = 4;
|
|
resulttekst = "Invalid datum (ingangsdatum)";
|
|
}
|
|
}
|
|
if (contractbedrag != null)
|
|
fields.push({ dbs: "cnt_contract_kosten", typ: "float", val: contractbedrag, track: L("lcl_cnt_contract_sum") });
|
|
if (termijnbedrag != null)
|
|
fields.push({ dbs: "cnt_contract_termijnkosten", typ: "float", val: termijnbedrag, track: L("lcl_cnt_period_sum") });
|
|
|
|
// We weten de updates, nu nog uitvoeren; rechten voldoende afgedekt via CNTMAN-check hierboven?
|
|
if (resultcode == -1) { // Nog steeds geen fouten.
|
|
if (fields.length > 0) {
|
|
// Construct/uitvoeren update.
|
|
var cntUpd = buildTrackingUpdate("cnt_contract", "cnt_contract_key = " + cnt_key, fields, { noValidateToken: true });
|
|
oRs = Oracle.Execute(cntUpd.sql);
|
|
|
|
// Tot slot nog de tracking toevoegen.
|
|
if (cntUpd.trackarray.length)
|
|
shared.trackaction("CNTUPD", cnt_key, L("lcl_cnt_is_cntupd") + "\n" + cntUpd.trackarray.join("\n"));
|
|
}
|
|
resultcode = 0; // Ik heb gedaan wat ik moest en mocht doen voor dit contract.
|
|
}
|
|
}
|
|
else {
|
|
// Wat als geen rechten; melden of niets doen (resultcode = -1)?
|
|
resultcode = 5;
|
|
resulttekst = "Not authorized";
|
|
}
|
|
} // end geldige cnt_key
|
|
} // end geldige cntid
|
|
|
|
var binfo = {
|
|
returncode: resultcode,
|
|
returntekst: resulttekst,
|
|
// executed:sql, // debug
|
|
datum: nowtxt
|
|
}
|
|
|
|
var FCLTBody = xmlResp.createElement("contract"); // type=response
|
|
FCLTBody.setAttribute('key', cntid);
|
|
FCLTBody.setAttribute('type', 'response');
|
|
for (param in binfo)
|
|
{
|
|
var FCLTdata = xmlResp.createElement(param);
|
|
FCLTdata.appendChild(xmlResp.createTextNode(binfo[param]));
|
|
FCLTBody.appendChild(FCLTdata);
|
|
}
|
|
|
|
FCLTElement.appendChild(FCLTBody);
|
|
} // end for
|
|
// Alle contract-nodes zijn behandeld.
|
|
|
|
xmlResp.appendChild(FCLTElement);
|
|
|
|
Response.ContentType = "text/xml";
|
|
Response.Write(xmlResp.xml)
|
|
%>
|