UWVA#40986 mldsoap kan nu (ook) de volgende velden updaten: einddatum, kostenplaats, opmerking (afhandeling), flexkenmerken

svn path=/Website/branches/v2017.1/; revision=34392
This commit is contained in:
2017-06-22 08:09:58 +00:00
parent 96f5c6fddd
commit 726afdbd8f

View File

@@ -107,6 +107,8 @@ for (i = 0; i < meldingen.length; i++)
var plaats_key = -1; // Bepaald op basis van meldgeb/meldver/meldrnr
var meld_kpn = XMLval(meldingen[i], "kostenplaats");
var meld_oms = XMLval(meldingen[i], "omschrijving");
var meld_opm = XMLval(meldingen[i], "opmerking");
//var mldkenmerken = (meldingen[i].getElementsByTagName("kenmerk"))[0].childNodes[0].nodeValue; // Unsupported yet
var mldkenmerken = meldingen[i].getElementsByTagName("kenmerk");
var mld_key = -1; // Bepaald na insert
@@ -137,22 +139,15 @@ for (i = 0; i < meldingen.length; i++)
resultcode = 1;
resulttekst = "Undefined external ID (key)";
}
else if (meldaction == "update")
{
resultcode = 0;
// verder nog even kijken wat we willen doen.
// in ieder geval de omschrijving aanpassen
fields.push({ dbs: "mld_melding_omschrijving", typ: "varchar", val: meld_oms, track: L("lcl_mld_inf_Omschrijving"), len: 4000 });
var mldUpd = buildTrackingUpdate("mld_melding", "mld_melding_key = " + mld_key, fields, { noValidateToken: true });
Oracle.Execute(mldUpd.sql);
}
else if (meldaction != "insert")
else if (meldaction != "insert" && meldaction != "update")
{
resultcode = 2;
resulttekst = "Undefined operation (type)";
}
else
{
// voor zowel insert als update:
var voor_key = -1;
var perslid_key = -1;
if (voor_login != null)
@@ -196,9 +191,10 @@ for (i = 0; i < meldingen.length; i++)
}
}
tsql = "SELECT 1"
+ " FROM mld_stdmelding sm"
+ " WHERE sm.mld_stdmelding_key = " + stdmld_key
+ " WHERE sm.mld_stdmelding_key = " + (stdmld_key || -1)
+ " AND sm.mld_stdmelding_verwijder IS NULL";
var oRs = Oracle.Execute(tsql);
if (oRs.eof)
@@ -208,293 +204,224 @@ for (i = 0; i < meldingen.length; i++)
}
else
{ // Hier heb ik een geldige mld_stdmelding_key.
var stdm_info = mld.mld_stdmeldinginfo(stdmld_key);
var stdmld_sla_tijdsduur = stdm_info.prioriteiten[3].uitvoertijd;
var stdmld_sla_eenheid = stdm_info.prioriteiten[3].eenheid;
var stdmld_niveau = stdm_info.alg_onrgoed_niveau; // required niveau
var alglevel_ok = !stdm_info.ins_srtdiscipline_alg || !stdmld_niveau; // Zonder niveau altijd goed
fields.push({ dbs: "mld_stdmelding_key", typ: "key", val: stdmld_key });
fields.push({ dbs: "mld_melding_t_uitvoertijd.tijdsduur", typ: "number", val: stdmld_sla_tijdsduur, obj: "MLD_T_UITVOERTIJD" });
fields.push({ dbs: "mld_melding_t_uitvoertijd.eenheid", typ: "varchar", val: stdmld_sla_eenheid, obj: "MLD_T_UITVOERTIJD" });
if (melddatum != null)
// einde gezamelijke data (insert && update)
if (meldaction == "update")
{
try
if (mld_key == -1)
{
var meldaanmaakdate = XMLtoJsDate(melddatum);
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: meldaanmaakdate });
resultcode = 4;
resulttekst = "Undefined melding_key";
}
catch (e)
{ // Verkeerde datum-formaat, volgens spec. dan now gebruiken!
__DoLog("Formaat ontvangen XML-datum incorrect: "+ melddatum, "#00FF00");
meldaanmaakdate = now;
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: meldaanmaakdate });
}
}
else
{
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: now });
}
// De einddatum is de meegegeven einddatum, maar als die niet wordt meegegeven is het
// gewoon enddate_std en dat regelt de trigger wel, dus DAN MOET IK HEM NIET MEEGEVEN
if (einddatum != null)
{
try
else
{
var meldeinddate = XMLtoJsDate(einddatum);
if (meldeinddate > meldaanmaakdate)
if (einddatum != null)
{
fields.push({ dbs: "mld_melding_einddatum", typ: "datetime", val: meldeinddate });
var mld_datum;
tsql = "SELECT mld_melding_datum"
+ " FROM mld_melding"
+ " WHERE mld_melding_key = " + mld_key;
oRs = Oracle.Execute(tsql);
if (!oRs.EOF)
mld_datum = oRs("mld_melding_datum").value;
oRs.Close();
try
{
var meldeinddate = XMLtoJsDate(einddatum);
if (meldeinddate > mld_datum)
{
fields.push({ dbs: "mld_melding_einddatum", typ: "datetime", val: meldeinddate, track: L("lcl_mld_enddate") });
}
else
{
// Ontvangen XML-einddatum voor begindatum, dan later volgens SLA zetten!
__DoLog("Ontvangen XML-einddatum voor begindatum: "+ einddatum, "#00FF00");
}
}
catch (e)
{
// Verkeerde datum-formaat, dan later volgens SLA zetten!
__DoLog("Formaat ontvangen XML-einddatum incorrect: "+ einddatum, "#00FF00");
}
}
else
if (meld_kpn && meld_kpn != "")
{
// Ontvangen XML-einddatum voor begindatum, dan later volgens SLA zetten!
__DoLog("Ontvangen XML-einddatum voor begindatum: "+ einddatum, "#00FF00");
var kpn_key = getKpn(meld_kpn);
if (kpn_key != -1)
fields.push({ dbs: "prs_kostenplaats_key", typ: "key", val: kpn_key, track: L("lcl_mld_inf_Kostenplaats"), foreign: "prs_kostenplaats"});
}
fields.push({ dbs: "mld_melding_opmerking", typ: "varchar", val: meld_opm, track: L("lcl_mld_inf_Opmerking"), len: 4000 });
fields.push({ dbs: "mld_melding_omschrijving", typ: "varchar", val: meld_oms, track: L("lcl_mld_inf_Omschrijving"), len: 4000 });
var mldUpd = buildTrackingUpdate("mld_melding", "mld_melding_key = " + mld_key, fields, { noValidateToken: true });
Oracle.Execute(mldUpd.sql);
mld.trackmeldingupdate(mld_key, L("lcl_mld_is_updatedbysoap").format(mld_key) + "\n" + mldUpd.trackarray.join("\n"));
// De kenmerken.
upsertKenmerk(mldkenmerken, stdmld_key, mld_key);
}
resultcode = 0; // Ik heb gedaan wat ik moest en mocht doen voor deze melding.
} // einde update
else if (meldaction == "insert")
{
var stdm_info = mld.mld_stdmeldinginfo(stdmld_key);
var stdmld_sla_tijdsduur = stdm_info.prioriteiten[3].uitvoertijd;
var stdmld_sla_eenheid = stdm_info.prioriteiten[3].eenheid;
var stdmld_niveau = stdm_info.alg_onrgoed_niveau; // required niveau
var alglevel_ok = !stdm_info.ins_srtdiscipline_alg || !stdmld_niveau; // Zonder niveau altijd goed
fields.push({ dbs: "mld_stdmelding_key", typ: "key", val: stdmld_key });
fields.push({ dbs: "mld_melding_t_uitvoertijd.tijdsduur", typ: "number", val: stdmld_sla_tijdsduur, obj: "MLD_T_UITVOERTIJD" });
fields.push({ dbs: "mld_melding_t_uitvoertijd.eenheid", typ: "varchar", val: stdmld_sla_eenheid, obj: "MLD_T_UITVOERTIJD" });
if (melddatum != null)
{
try
{
var meldaanmaakdate = XMLtoJsDate(melddatum);
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: meldaanmaakdate });
}
catch (e)
{ // Verkeerde datum-formaat, volgens spec. dan now gebruiken!
__DoLog("Formaat ontvangen XML-datum incorrect: "+ melddatum, "#00FF00");
meldaanmaakdate = now;
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: meldaanmaakdate });
}
}
catch (e)
else
{
// Verkeerde datum-formaat, dan later volgens SLA zetten!
__DoLog("Formaat ontvangen XML-einddatum incorrect: "+ einddatum, "#00FF00");
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: now });
}
// De einddatum is de meegegeven einddatum, maar als die niet wordt meegegeven is het
// gewoon enddate_std en dat regelt de trigger wel, dus DAN MOET IK HEM NIET MEEGEVEN
if (einddatum != null)
{
try
{
var meldeinddate = XMLtoJsDate(einddatum);
if (meldeinddate > meldaanmaakdate)
{
fields.push({ dbs: "mld_melding_einddatum", typ: "datetime", val: meldeinddate });
}
else
{
// Ontvangen XML-einddatum voor begindatum, dan later volgens SLA zetten!
__DoLog("Ontvangen XML-einddatum voor begindatum: "+ einddatum, "#00FF00");
}
}
catch (e)
{
// Verkeerde datum-formaat, dan later volgens SLA zetten!
__DoLog("Formaat ontvangen XML-einddatum incorrect: "+ einddatum, "#00FF00");
}
}
}
tsql = "SELECT alg_locatie_key "
+ " FROM alg_v_aanweziglocatie"
+ " WHERE alg_locatie_code="+ safe.quoted_sql(meldloc);
var oRs = Oracle.Execute(tsql);
if (!oRs.eof)
{
alglevel_ok = alglevel_ok || stdmld_niveau == "L";
locatie_key = oRs("alg_locatie_key").value;
fields.push({ dbs: "mld_alg_locatie_key", typ: "key", val: locatie_key });
tsql = "SELECT alg_gebouw_key "
+ " FROM alg_v_aanweziggebouw"
+ " WHERE alg_locatie_key ="+ locatie_key
+ " AND alg_gebouw_code="+ safe.quoted_sql(meldgeb);
tsql = "SELECT alg_locatie_key "
+ " FROM alg_v_aanweziglocatie"
+ " WHERE alg_locatie_code="+ safe.quoted_sql(meldloc);
var oRs = Oracle.Execute(tsql);
if (!oRs.eof)
{
alglevel_ok = alglevel_ok || stdmld_niveau == "G";
plaats_key = oRs("alg_gebouw_key").value;
alglevel_ok = alglevel_ok || stdmld_niveau == "L";
locatie_key = oRs("alg_locatie_key").value;
fields.push({ dbs: "mld_alg_locatie_key", typ: "key", val: locatie_key });
tsql = "SELECT alg_verdieping_key "
+ " FROM alg_v_aanwezigverdieping"
+ " WHERE alg_gebouw_key ="+ plaats_key
+ " AND alg_verdieping_code="+ safe.quoted_sql(meldver);
tsql = "SELECT alg_gebouw_key "
+ " FROM alg_v_aanweziggebouw"
+ " WHERE alg_locatie_key ="+ locatie_key
+ " AND alg_gebouw_code="+ safe.quoted_sql(meldgeb);
var oRs = Oracle.Execute(tsql);
if (!oRs.eof)
{
alglevel_ok = alglevel_ok || stdmld_niveau == "V";
plaats_key = oRs("alg_verdieping_key").value;
alglevel_ok = alglevel_ok || stdmld_niveau == "G";
plaats_key = oRs("alg_gebouw_key").value;
tsql = "SELECT alg_ruimte_key "
+ " FROM alg_v_aanwezigruimte"
+ " WHERE alg_verdieping_key ="+ plaats_key
+ " AND alg_ruimte_nr="+ safe.quoted_sql(meldrnr);
tsql = "SELECT alg_verdieping_key "
+ " FROM alg_v_aanwezigverdieping"
+ " WHERE alg_gebouw_key ="+ plaats_key
+ " AND alg_verdieping_code="+ safe.quoted_sql(meldver);
var oRs = Oracle.Execute(tsql);
if (!oRs.eof) {
alglevel_ok = alglevel_ok || stdmld_niveau == "R";
plaats_key = oRs("alg_ruimte_key").value;
}
}
}
if (plaats_key != -1)
{
fields.push({ dbs: "mld_alg_onroerendgoed_keys", typ: "key", val: plaats_key });
}
}
if (!alglevel_ok)
{
resultcode = 4;
resulttekst = "Location not found";
__DoLog(resulttekst, "#00FF00");
}
var kpn_key = user.afdeling().prs_kostenplaats_key();
if (meld_kpn && meld_kpn != "")
{
tsql = "SELECT prs_kostenplaats_key"
+ " FROM prs_kostenplaats"
+ " WHERE prs_kostenplaats_verwijder IS NULL"
+ " AND (prs_kostenplaats_begin IS NULL"
+ " OR prs_kostenplaats_begin < SYSDATE)"
+ " AND (prs_kostenplaats_eind IS NULL"
+ " OR prs_kostenplaats_eind > SYSDATE)"
+ " AND prs_kostenplaats_upper = " + safe.quoted_sql_upper(meld_kpn); // Unique
oRs = Oracle.Execute(tsql);
if (!oRs.EoF)
{
var meld_kpn_key = oRs("prs_kostenplaats_key").Value;
tsql = "SELECT ''"
+ " FROM prs_perslidkostenplaats"
+ " WHERE prs_perslidkostenplaats_boeken = 1"
+ " AND (prs_kostenplaats_key = " + meld_kpn_key
+ " OR prs_kostenplaats_key IS NULL)" // Mandated for all
+ " AND prs_perslid_key = " + perslid_key;
oRs = Oracle.Execute(tsql);
if (!oRs.EoF) // persoon is gemandateerd voor gegeven kostenplaats
kpn_key = meld_kpn_key;
}
oRs.Close();
}
fields = fields.concat(
[ { dbs: "mld_melding_key", typ: "key", seq: "mld_s_mld_melding_key" },
{ dbs: "mld_melding_module", typ: "varchar", val: "MLD" },
{ dbs: "mld_meldbron_key", typ: "key", val: 6 }, // system
{ dbs: "mld_melding_omschrijving", typ: "varchar", val: meld_oms, len: 4000 },
{ dbs: "prs_kostenplaats_key", typ: "key", val: kpn_key },
{ dbs: "prs_perslid_key", typ: "key", val: perslid_key },
{ dbs: "prs_perslid_key_voor", typ: "key", val: voor_key },
{ dbs: "mld_melding_spoed", typ: "key", val: 3 }, // default (frontend) = 3
{ dbs: "mld_melding_externnr", typ: "varchar", val: ext_id, len: 30 }
]);
// We weten wat te inserten, nu nog uitvoeren; rechten voldoende afgedekt via MLDUSE-check hierboven?
if (resultcode == -1)
{ // nog steeds geen fouten
var mldIns = buildInsert("mld_melding", fields, { noValidateToken: true });
mld_key = mldIns.sequences["mld_melding_key"];
sql = mldIns.sql;
oRs = Oracle.Execute(sql);
// Zetten van de status op ingevoerd en afhandelen van de tracking.
mld.setmeldingstatus(mld_key, 2); // Zorgt ook voor tracking & daarmee notificatie.
// Eventuele (gewijzigde) objecten zijn nu ook opgeslagen. Nu kan de definitieve mld_melding.mld_melding_einddatum_std bepaald en gezet worden.
//mld.updatestdeinddatum(mld_key); // Unsupported yet. So update of mld_melding_einddatum_std not needed yet.
// De kenmerken.
for (j=0; j < mldkenmerken.length; j++)
{
var kenmerk_naam = mldkenmerken[j].getAttribute("naam");
if (mldkenmerken[j].childNodes.length > 0)
var kenmerk_waarde = mldkenmerken[j].childNodes[0].nodeValue;
else
var kenmerk_waarde = "";
//Response.Write(kenmerk_naam);
//Response.Write(kenmerk_waarde);
// Zoek het kenmerk op naam terug
ksql = "SELECT k.mld_kenmerk_key, sk.mld_srtkenmerk_kenmerktype, sk.mld_srtkenmerk_lengte "
+ " FROM mld_kenmerk k"
+ " , mld_srtkenmerk sk"
+ " , mld_stdmelding s"
+ " , mld_discipline d"
+ " WHERE s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key "
+ " AND k.mld_kenmerk_verwijder IS NULL "
+ " AND sk.mld_srtkenmerk_upper = " + safe.quoted_sql_upper(kenmerk_naam)
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND s.mld_stdmelding_key = " + stdmld_key
+ " AND ((k.mld_stdmelding_key = s.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')"
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key AND k.mld_kenmerk_niveau = 'D')"
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T'))";
var oRs = Oracle.Execute(ksql);
if (!oRs.eof)
{
var kenmerk_key = oRs("mld_kenmerk_key").value;
var kenmerk_type = oRs("mld_srtkenmerk_kenmerktype").value;
var kenmerk_lengte = oRs("mld_srtkenmerk_lengte").value;
ksql = "SELECT km.mld_kenmerkmelding_key "
+ " FROM mld_kenmerkmelding km "
+ " WHERE km.mld_melding_key = " + mld_key
+ " AND km.mld_kenmerk_key = " + kenmerk_key;
var oRs = Oracle.Execute(ksql);
switch (kenmerk_type)
if (!oRs.eof)
{
case 'C':
{
// we ondersteunen alleen nog maar karakter velden.
if (!oRs.eof)
{
var kenmerkmelding_key = oRs("mld_kenmerkmelding_key").value;
ksql = "UPDATE mld_kenmerkmelding"
+ " SET mld_kenmerkmelding_waarde = " + safe.quoted_sql(kenmerk_waarde)
+ " WHERE mld_kenmerkmelding_key = " + kenmerkmelding_key;
}
else
{
ksql = "INSERT INTO mld_kenmerkmelding (mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_waarde) "
+ "VALUES (" + kenmerk_key + ", " + mld_key + ", " + safe.quoted_sql(kenmerk_waarde) + ")";
}
Oracle.Execute(ksql);
break;
}
case 'N':
{
// we ondersteunen alleen nog maar karakter velden.
if (!oRs.eof)
{
var kenmerkmelding_key = oRs("mld_kenmerkmelding_key").value;
ksql = "UPDATE mld_kenmerkmelding"
+ " SET mld_kenmerkmelding_waarde = " + safe.quoted_sql(kenmerk_waarde)
+ " WHERE mld_kenmerkmelding_key = " + kenmerkmelding_key;
}
else
{
ksql = "INSERT INTO mld_kenmerkmelding (mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_waarde) "
+ "VALUES (" + kenmerk_key + ", " + mld_key + ", " + safe.quoted_sql(kenmerk_waarde) + ")";
}
Oracle.Execute(ksql);
break;
}
case "M": // Folder met bijlagen
{
//Response.Write(kenmerk_naam);
var bijlagen = mldkenmerken[j].getElementsByTagName("bijlage");
var bi;
for (bi = 0; bi < bijlagen.length; bi++)
{
var Attachment = XMLval(bijlagen[bi], "attachment");
var Name = XMLval(bijlagen[bi], "name");
var Size = XMLval(bijlagen[bi], "size");
//Response.Write("Name: " + Name + " size: " + Size);
if (Attachment && Name && Size)
{
var SafeName = safe.filename(Name);
var params = flexProps("MLD", mld_key, String(kenmerk_key), "M");
if (!params.isAllowedName(SafeName))
{
__DoLog("Unsafe SOAP file '{0}' ignored.".format(SafeName), "#FFFF00");
}
else
{
__Log("Start saving: " + params.AttachPath + SafeName);
CreateFullPath(params.AttachPath);
encodedString2File(params.AttachPath + SafeName, Attachment, "bin.hex");
__Log("Done saving: " + params.AttachPath + SafeName);
}
}
}
alglevel_ok = alglevel_ok || stdmld_niveau == "V";
plaats_key = oRs("alg_verdieping_key").value;
tsql = "SELECT alg_ruimte_key "
+ " FROM alg_v_aanwezigruimte"
+ " WHERE alg_verdieping_key ="+ plaats_key
+ " AND alg_ruimte_nr="+ safe.quoted_sql(meldrnr);
var oRs = Oracle.Execute(tsql);
if (!oRs.eof) {
alglevel_ok = alglevel_ok || stdmld_niveau == "R";
plaats_key = oRs("alg_ruimte_key").value;
}
}
oRs.Close();
}
if (plaats_key != -1)
{
fields.push({ dbs: "mld_alg_onroerendgoed_keys", typ: "key", val: plaats_key });
}
}
resultcode = 0; // Ik heb gedaan wat ik moest en mocht doen voor deze melding.
// En nog maar even de aanname dat een extern systeem niet aan workflows/ktos doet?
// Klantspecifieke check functie (hookfunction) voor de invoer
var pResult = new HookResult();
if (!custfunc.mld_postsave(mld_key, pResult))
if (!alglevel_ok)
{
__DoLog(pResult.errmsg, "#00FF00");
resultcode = 5;
resulttekst = "Location not found";
__DoLog(resulttekst, "#00FF00");
}
}
var kpn_key = user.afdeling().prs_kostenplaats_key();
if (meld_kpn && meld_kpn != "")
{
var tempKpn = getKpn(meld_kpn);
if (tempKpn != -1)
kpn_key = tempKpn;
}
fields = fields.concat(
[ { dbs: "mld_melding_key", typ: "key", seq: "mld_s_mld_melding_key" },
{ dbs: "mld_melding_module", typ: "varchar", val: "MLD" },
{ dbs: "mld_meldbron_key", typ: "key", val: 6 }, // system
{ dbs: "mld_melding_omschrijving", typ: "varchar", val: meld_oms, len: 4000 },
{ dbs: "prs_kostenplaats_key", typ: "key", val: kpn_key },
{ dbs: "prs_perslid_key", typ: "key", val: perslid_key },
{ dbs: "prs_perslid_key_voor", typ: "key", val: voor_key },
{ dbs: "mld_melding_spoed", typ: "key", val: 3 }, // default (frontend) = 3
{ dbs: "mld_melding_externnr", typ: "varchar", val: ext_id, len: 30 }
]);
// We weten wat te inserten, nu nog uitvoeren; rechten voldoende afgedekt via MLDUSE-check hierboven?
if (resultcode == -1)
{ // nog steeds geen fouten
var mldIns = buildInsert("mld_melding", fields, { noValidateToken: true });
mld_key = mldIns.sequences["mld_melding_key"];
sql = mldIns.sql;
oRs = Oracle.Execute(sql);
// Zetten van de status op ingevoerd en afhandelen van de tracking.
mld.setmeldingstatus(mld_key, 2); // Zorgt ook voor tracking & daarmee notificatie.
// Eventuele (gewijzigde) objecten zijn nu ook opgeslagen. Nu kan de definitieve mld_melding.mld_melding_einddatum_std bepaald en gezet worden.
//mld.updatestdeinddatum(mld_key); // Unsupported yet. So update of mld_melding_einddatum_std not needed yet.
// De kenmerken.
upsertKenmerk(mldkenmerken, stdmld_key, mld_key);
resultcode = 0; // Ik heb gedaan wat ik moest en mocht doen voor deze melding.
// En nog maar even de aanname dat een extern systeem niet aan workflows/ktos doet?
// Klantspecifieke check functie (hookfunction) voor de invoer
var pResult = new HookResult();
if (!custfunc.mld_postsave(mld_key, pResult))
{
__DoLog(pResult.errmsg, "#00FF00");
}
}
} // end insert
} // end geldige stdmld_key
} // end geldige ext_id
@@ -519,6 +446,150 @@ for (i = 0; i < meldingen.length; i++)
} // end for
// Alle melding-nodes zijn behandeld.
function getKpn(meld_kpn)
{
if (!meld_kpn)
return -1;
var temp_sql = "SELECT ''"
+ " FROM prs_perslidkostenplaats pkp"
+ " WHERE pkp.prs_perslidkostenplaats_boeken = 1"
+ " AND (pkp.prs_kostenplaats_key = kp.prs_kostenplaats_key"
+ " OR pkp.prs_kostenplaats_key IS NULL)" // Mandated for all
+ " AND pkp.prs_perslid_key = " + perslid_key;
temp_sql = "SELECT kp.prs_kostenplaats_key"
+ " FROM prs_kostenplaats kp"
+ " WHERE kp.prs_kostenplaats_verwijder IS NULL"
+ " AND (kp.prs_kostenplaats_begin IS NULL"
+ " OR kp.prs_kostenplaats_begin < SYSDATE)"
+ " AND (kp.prs_kostenplaats_eind IS NULL"
+ " OR kp.prs_kostenplaats_eind > SYSDATE)"
+ " AND EXISTS ("
+ temp_sql
+ " )"
+ " AND kp.prs_kostenplaats_upper = " + safe.quoted_sql_upper(meld_kpn); // Unique
var oRs = Oracle.Execute(temp_sql);
if (!oRs.EoF)
return oRs("prs_kostenplaats_key").Value;
oRs.Close();
return -1;
}
function upsertKenmerk(kenmerken, stdmld_key, mld_key)
{
for (j=0; j < kenmerken.length; j++)
{
var kenmerk_naam = kenmerken[j].getAttribute("naam");
if (kenmerken[j].childNodes.length > 0)
var kenmerk_waarde = kenmerken[j].childNodes[0].nodeValue;
else
var kenmerk_waarde = "";
// Zoek het kenmerk op naam terug
ksql = "SELECT k.mld_kenmerk_key, sk.mld_srtkenmerk_kenmerktype, sk.mld_srtkenmerk_lengte "
+ " FROM mld_kenmerk k"
+ " , mld_srtkenmerk sk"
+ " , mld_stdmelding s"
+ " , mld_discipline d"
+ " WHERE s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key "
+ " AND k.mld_kenmerk_verwijder IS NULL "
+ " AND sk.mld_srtkenmerk_upper = " + safe.quoted_sql_upper(kenmerk_naam)
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND s.mld_stdmelding_key = " + stdmld_key
+ " AND ((k.mld_stdmelding_key = s.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')"
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key AND k.mld_kenmerk_niveau = 'D')"
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T'))";
var oRs = Oracle.Execute(ksql);
if (!oRs.eof)
{
var kenmerk_key = oRs("mld_kenmerk_key").value;
var kenmerk_type = oRs("mld_srtkenmerk_kenmerktype").value;
// var kenmerk_lengte = oRs("mld_srtkenmerk_lengte").value; // unsupported yet?
var temp_sql = "SELECT km.mld_kenmerkmelding_key "
+ " FROM mld_kenmerkmelding km "
+ " WHERE km.mld_melding_key = " + mld_key
+ " AND km.mld_kenmerk_key = " + kenmerk_key;
var oRs = Oracle.Execute(temp_sql);
switch (kenmerk_type)
{
case 'C':
{
// we ondersteunen alleen nog maar karakter velden.
if (!oRs.eof)
{
var kenmerkmelding_key = oRs("mld_kenmerkmelding_key").value;
ksql = "UPDATE mld_kenmerkmelding"
+ " SET mld_kenmerkmelding_waarde = " + safe.quoted_sql(kenmerk_waarde)
+ " WHERE mld_kenmerkmelding_key = " + kenmerkmelding_key;
}
else
{
ksql = "INSERT INTO mld_kenmerkmelding (mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_waarde) "
+ "VALUES (" + kenmerk_key + ", " + mld_key + ", " + safe.quoted_sql(kenmerk_waarde) + ")";
}
Oracle.Execute(ksql);
break;
}
case 'N':
{
// we ondersteunen alleen nog maar karakter velden.
if (!oRs.eof)
{
var kenmerkmelding_key = oRs("mld_kenmerkmelding_key").value;
ksql = "UPDATE mld_kenmerkmelding"
+ " SET mld_kenmerkmelding_waarde = " + safe.quoted_sql(kenmerk_waarde)
+ " WHERE mld_kenmerkmelding_key = " + kenmerkmelding_key;
}
else
{
ksql = "INSERT INTO mld_kenmerkmelding (mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_waarde) "
+ "VALUES (" + kenmerk_key + ", " + mld_key + ", " + safe.quoted_sql(kenmerk_waarde) + ")";
}
Oracle.Execute(ksql);
break;
}
case "M": // Folder met bijlagen
{
//Response.Write(kenmerk_naam);
var bijlagen = kenmerken.getElementsByTagName("bijlage");
var bi;
for (bi = 0; bi < bijlagen.length; bi++)
{
var Attachment = XMLval(bijlagen[bi], "attachment");
var Name = XMLval(bijlagen[bi], "name");
var Size = XMLval(bijlagen[bi], "size");
//Response.Write("Name: " + Name + " size: " + Size);
if (Attachment && Name && Size)
{
var SafeName = safe.filename(Name);
var params = flexProps("MLD", mld_key, String(kenmerk_key), "M");
if (!params.isAllowedName(SafeName))
{
__DoLog("Unsafe SOAP file '{0}' ignored.".format(SafeName), "#FFFF00");
}
else
{
__Log("Start saving: " + params.AttachPath + SafeName);
CreateFullPath(params.AttachPath);
encodedString2File(params.AttachPath + SafeName, Attachment, "bin.hex");
__Log("Done saving: " + params.AttachPath + SafeName);
}
}
}
}
}
oRs.Close();
}
}
}
xmlResp.appendChild(FCLTElement);
if (API.apidata.stylesheet)