TDNL#89081 Automatische storingsmelding per object naar juiste leverancier regelen
svn path=/Website/trunk/; revision=70619
This commit is contained in:
100
APPL/MLD/mld.inc
100
APPL/MLD/mld.inc
@@ -7017,7 +7017,7 @@ mld = {
|
|||||||
oRs.close();
|
oRs.close();
|
||||||
},
|
},
|
||||||
|
|
||||||
dienst_controle: function (stdm_key, locatiekey, gebouwkey, ruimtekey, prs_key_voor, check_autoorder)
|
dienst_controle: function (stdm_key, locatiekey, gebouwkey, ruimtekey, obj_key_arr, prs_key_voor, check_autoorder)
|
||||||
{
|
{
|
||||||
var sql;
|
var sql;
|
||||||
sql = "SELECT ms.mld_stdmelding_vereisdienst"
|
sql = "SELECT ms.mld_stdmelding_vereisdienst"
|
||||||
@@ -7064,7 +7064,12 @@ mld = {
|
|||||||
else if (locatiekey > 0) // <20>berhaupt plaatsgegevens?
|
else if (locatiekey > 0) // <20>berhaupt plaatsgegevens?
|
||||||
sql += " AND (bdl.alg_locatie_key = " + locatiekey + " OR bdl.alg_locatie_key IS NULL)";
|
sql += " AND (bdl.alg_locatie_key = " + locatiekey + " OR bdl.alg_locatie_key IS NULL)";
|
||||||
oRs = Oracle.Execute(sql);
|
oRs = Oracle.Execute(sql);
|
||||||
if (vereisdienst && oRs("aantal").Value == 0)
|
var bedrijf_aantal = oRs("aantal").Value;
|
||||||
|
var min_bedrijf_key = oRs("prs_bedrijf_key").Value;
|
||||||
|
var has_autoorder = oRs("autoorder").Value;
|
||||||
|
oRs.Close();
|
||||||
|
|
||||||
|
if (vereisdienst && bedrijf_aantal == 0)
|
||||||
{ // Er is geen enkele dienst gevonden.
|
{ // Er is geen enkele dienst gevonden.
|
||||||
err_msg = (check_autoorder ? L("lcl_mld_dienst_noautoorder") : "")
|
err_msg = (check_autoorder ? L("lcl_mld_dienst_noautoorder") : "")
|
||||||
+ L("lcl_mld_dienstunavailablehere") + prs_dienst_desc;
|
+ L("lcl_mld_dienstunavailablehere") + prs_dienst_desc;
|
||||||
@@ -7072,42 +7077,83 @@ mld = {
|
|||||||
}
|
}
|
||||||
else if (check_autoorder)
|
else if (check_autoorder)
|
||||||
{
|
{
|
||||||
if (oRs("autoorder").Value == 1)
|
if (has_autoorder == 1)
|
||||||
{ // Er is tenminste <20><>n autoorder waarde gevonden die niet is uitgesloten van automatische opdracht.
|
{ // Er is tenminste <20><>n autoorder waarde gevonden die niet is uitgesloten van automatische opdracht.
|
||||||
// De niet uitgesloten ophalen.
|
// De niet uitgesloten ophalen.
|
||||||
sql += " AND bdl.mld_autoorder = 1" // 0=Uitsluiten van automatische opdracht (vinkje AAN), 1=Autoorder van stdmelding gebruiken (vinkje UIT).
|
sql += " AND bdl.mld_autoorder = 1" // 0=Uitsluiten van automatische opdracht (vinkje AAN), 1=Autoorder van stdmelding gebruiken (vinkje UIT).
|
||||||
oRs2 = Oracle.Execute(sql);
|
oRs2 = Oracle.Execute(sql);
|
||||||
if (oRs2("aantal").Value == 1)
|
var bedrijf_aantal2 = oRs2("aantal").Value;
|
||||||
|
var min_bedrijf_key2 = oRs2("prs_bedrijf_key").Value;
|
||||||
|
oRs2.Close();
|
||||||
|
if (bedrijf_aantal2 == 1)
|
||||||
{ // Bedrijf ophalen uit relatiebeheer.
|
{ // Bedrijf ophalen uit relatiebeheer.
|
||||||
prs_bedrijf_key = oRs2("prs_bedrijf_key").Value; // straks mogelijk vanzelf opdracht.
|
prs_bedrijf_key = min_bedrijf_key2; // straks mogelijk vanzelf opdracht.
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // Bedrijf ophalen uit contractbeheer.
|
{ // Bedrijf ophalen uit contractbeheer.
|
||||||
// Zoekt naar de best passende plaats: Als er een ruimtekey wordt meegegeven maar daarvoor bestaat geen cnt_contract_plaats
|
// Zoekt naar de best passende plaats: Als er een ruimtekey wordt meegegeven maar daarvoor bestaat geen cnt_contract_plaats
|
||||||
// dan wordt er gekeken of er wel een contract_plaats voor gebouw of locatie voor deze ruimte bestaat.
|
// dan wordt er gekeken of er wel een contract_plaats voor gebouw of locatie voor deze ruimte bestaat.
|
||||||
|
var sql_p = " SELECT c.cnt_prs_bedrijf_key"
|
||||||
|
+ " , c.cnt_contract_key"
|
||||||
|
+ " , CASE cp.cnt_alg_plaats_code"
|
||||||
|
+ " WHEN 'R' THEN 5"
|
||||||
|
+ " WHEN 'V' THEN 4"
|
||||||
|
+ " WHEN 'G' THEN 3"
|
||||||
|
+ " WHEN 'T' THEN 2"
|
||||||
|
+ " ELSE 1"
|
||||||
|
+ " END prio"
|
||||||
|
+ " FROM cnt_contract c"
|
||||||
|
+ " , cnt_disc_params cd"
|
||||||
|
+ " , cnt_contract_plaats cp"
|
||||||
|
+ " WHERE c.ins_discipline_key = cd.cnt_ins_discipline_key"
|
||||||
|
+ " AND c.cnt_contract_verwijder IS NULL"
|
||||||
|
+ " AND c.cnt_contract_status != 1" // niet inactief
|
||||||
|
+ " AND SYSDATE BETWEEN c.cnt_contract_looptijd_van"
|
||||||
|
+ " AND c.cnt_contract_looptijd_tot"
|
||||||
|
+ " AND c.prs_dienst_key = " + prs_dienst_key
|
||||||
|
+ " AND cd.cnt_srtcontract_type IN (3,5)"
|
||||||
|
+ " AND c.cnt_contract_key = cp.cnt_contract_key"
|
||||||
|
+ " AND (" + (locatiekey > 0 ? " (cp.cnt_alg_plaats_code = 'L' AND cp.cnt_alg_plaats_key = " + locatiekey + ")" : "(1=1)")
|
||||||
|
+ " " + (gebouwkey > 0 ? "OR (cp.cnt_alg_plaats_code = 'G' AND cp.cnt_alg_plaats_key = " + gebouwkey + ")" : "")
|
||||||
|
+ " " + (ruimtekey > 0 ? "OR (cp.cnt_alg_plaats_code = 'R' AND cp.cnt_alg_plaats_key = " + ruimtekey + ")" : "")
|
||||||
|
+ " )";
|
||||||
|
|
||||||
|
var sql_o = " SELECT c.cnt_prs_bedrijf_key"
|
||||||
|
+ " , c.cnt_contract_key"
|
||||||
|
+ " , CASE WHEN co.cnt_ins_deel_key IS NULL"
|
||||||
|
+ " THEN 6"
|
||||||
|
+ " ELSE 7"
|
||||||
|
+ " END prio"
|
||||||
|
+ " FROM cnt_contract c"
|
||||||
|
+ " , cnt_disc_params cd"
|
||||||
|
+ " , cnt_contract_object co"
|
||||||
|
+ " WHERE c.ins_discipline_key = cd.cnt_ins_discipline_key"
|
||||||
|
+ " AND c.cnt_contract_verwijder IS NULL"
|
||||||
|
+ " AND c.cnt_contract_status != 1" // niet inactief
|
||||||
|
+ " AND SYSDATE BETWEEN c.cnt_contract_looptijd_van"
|
||||||
|
+ " AND c.cnt_contract_looptijd_tot"
|
||||||
|
+ " AND c.prs_dienst_key = " + prs_dienst_key
|
||||||
|
+ " AND cd.cnt_srtcontract_type IN (1,3)"
|
||||||
|
+ " AND c.cnt_contract_key = co.cnt_contract_key"
|
||||||
|
+ " AND ( ( co.cnt_ins_deel_key IS NOT NULL"
|
||||||
|
+ " AND co.cnt_ins_deel_key IN (" + obj_key_arr.join(",") + ")"
|
||||||
|
+ " )"
|
||||||
|
+ " OR ( co.cnt_ins_deel_key IS NULL"
|
||||||
|
+ " AND co.cnt_ins_srtdeel_key IN"
|
||||||
|
+ " (SELECT i.ins_srtdeel_key"
|
||||||
|
+ " FROM ins_deel i"
|
||||||
|
+ " WHERE i.ins_deel_key IN (" + obj_key_arr.join(",") + ")"
|
||||||
|
+ " )"
|
||||||
|
+ " )"
|
||||||
|
+ " )";
|
||||||
|
|
||||||
var sql_c = "SELECT cnt_prs_bedrijf_key"
|
var sql_c = "SELECT cnt_prs_bedrijf_key"
|
||||||
+ " , cnt_contract_key"
|
+ " , cnt_contract_key"
|
||||||
+ " , prio"
|
+ " , prio"
|
||||||
+ " , COUNT(DISTINCT cnt_prs_bedrijf_key) aantal"
|
+ " , COUNT(DISTINCT cnt_prs_bedrijf_key) aantal"
|
||||||
+ " FROM (SELECT c.cnt_prs_bedrijf_key"
|
+ " FROM (" + sql_p
|
||||||
+ " , c.cnt_contract_key"
|
+ (obj_key_arr.length ? " UNION " + sql_o : "")
|
||||||
+ " , CASE cp.cnt_alg_plaats_code WHEN 'R' THEN 3 WHEN 'G' THEN 2 ELSE 1 END prio"
|
+ " )"
|
||||||
+ " FROM cnt_contract c"
|
|
||||||
+ " , cnt_contract_plaats cp"
|
|
||||||
+ " , cnt_disc_params cd"
|
|
||||||
+ " WHERE cd.cnt_ins_discipline_key = c.ins_discipline_key"
|
|
||||||
+ " AND SYSDATE BETWEEN c.cnt_contract_looptijd_van"
|
|
||||||
+ " AND c.cnt_contract_looptijd_tot"
|
|
||||||
+ " AND c.cnt_contract_verwijder IS NULL"
|
|
||||||
+ " AND c.cnt_contract_status != 1" // niet inactief
|
|
||||||
+ " AND cd.cnt_srtcontract_type IN (3,5)"
|
|
||||||
+ " AND c.prs_dienst_key = " + prs_dienst_key
|
|
||||||
+ " AND c.cnt_contract_key = cp.cnt_contract_key"
|
|
||||||
+ " AND (" + (locatiekey > 0 ? " (cp.cnt_alg_plaats_code = 'L' AND cp.cnt_alg_plaats_key = " + locatiekey + ")" : "(1=1)")
|
|
||||||
+ " " + (gebouwkey > 0 ? "OR (cp.cnt_alg_plaats_code = 'G' AND cp.cnt_alg_plaats_key = " + gebouwkey + ")" : "")
|
|
||||||
+ " " + (ruimtekey > 0 ? "OR (cp.cnt_alg_plaats_code = 'R' AND cp.cnt_alg_plaats_key = " + ruimtekey + ")" : "")
|
|
||||||
+ " )"
|
|
||||||
+ " )"
|
|
||||||
+ " GROUP BY cnt_prs_bedrijf_key, cnt_contract_key, prio"
|
+ " GROUP BY cnt_prs_bedrijf_key, cnt_contract_key, prio"
|
||||||
+ " ORDER BY prio DESC"
|
+ " ORDER BY prio DESC"
|
||||||
+ " FETCH FIRST 1 ROW ONLY";
|
+ " FETCH FIRST 1 ROW ONLY";
|
||||||
@@ -7118,7 +7164,6 @@ mld = {
|
|||||||
}
|
}
|
||||||
oRs_c.Close();
|
oRs_c.Close();
|
||||||
}
|
}
|
||||||
oRs2.Close();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -7126,11 +7171,10 @@ mld = {
|
|||||||
prs_bedrijf_key = -2;
|
prs_bedrijf_key = -2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (oRs("aantal").Value == 1)
|
else if (bedrijf_aantal == 1)
|
||||||
{
|
{
|
||||||
prs_bedrijf_key = oRs("prs_bedrijf_key").Value;
|
prs_bedrijf_key = min_bedrijf_key;
|
||||||
}
|
}
|
||||||
oRs.Close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (locatiekey > 0 || gebouwkey > 0 || ruimtekey > 0)
|
if (locatiekey > 0 || gebouwkey > 0 || ruimtekey > 0)
|
||||||
|
|||||||
@@ -317,12 +317,12 @@ if (savemode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (multi)
|
if (multi)
|
||||||
var prs_bedrijf_key = mld.dienst_controle(stdm_key, user.alg_locatie_key(), user.alg_gebouw_key(), user.alg_ruimte_key(), user_key);
|
var prs_bedrijf_key = mld.dienst_controle(stdm_key, user.alg_locatie_key(), user.alg_gebouw_key(), user.alg_ruimte_key(), obj_arr, user_key);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Als we geen locatiekey hadden dan is hierboven al via afleveradres naar locatiekey gezocht.
|
// Als we geen locatiekey hadden dan is hierboven al via afleveradres naar locatiekey gezocht.
|
||||||
// Indien de gebouwkey een terrein is, gaan we kijken naar de locatie. Terrein heeft geen diensten. De ruimtekey is dan al null.
|
// Indien de gebouwkey een terrein is, gaan we kijken naar de locatie. Terrein heeft geen diensten. De ruimtekey is dan al null.
|
||||||
var prs_bedrijf_key = mld.dienst_controle(stdm_key, locatiekey, (bttype == "B"? gebouwkey : null), ruimtekey, prs_key_voor);
|
var prs_bedrijf_key = mld.dienst_controle(stdm_key, locatiekey, (bttype == "B"? gebouwkey : null), ruimtekey, obj_arr, prs_key_voor);
|
||||||
}
|
}
|
||||||
|
|
||||||
lcl.set_dialect(stdm_info.ins_srtdiscipline_key, "MLD_SRTDISCIPLINE_KEY");
|
lcl.set_dialect(stdm_info.ins_srtdiscipline_key, "MLD_SRTDISCIPLINE_KEY");
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ else
|
|||||||
oRs = Oracle.Execute(sql);
|
oRs = Oracle.Execute(sql);
|
||||||
var t_opdr = oRs("mld_typeopdr_key").Value;
|
var t_opdr = oRs("mld_typeopdr_key").Value;
|
||||||
var autoorderamount = oRs("mld_stdmelding_autoorderamount").Value;
|
var autoorderamount = oRs("mld_stdmelding_autoorderamount").Value;
|
||||||
|
oRs.Close();
|
||||||
if (!t_opdr)
|
if (!t_opdr)
|
||||||
// Beter dan error in de IIS log. Zonder de alert blijft het scherm te klein?
|
// Beter dan error in de IIS log. Zonder de alert blijft het scherm te klein?
|
||||||
shared.simpel_page(L("lcl_orders_no_ordertype"));
|
shared.simpel_page(L("lcl_orders_no_ordertype"));
|
||||||
@@ -122,7 +123,14 @@ if (isNew && uitvoerende < 0 && copyorder_key < 0)
|
|||||||
locatiekey = oRs("alg_locatie_key").Value;
|
locatiekey = oRs("alg_locatie_key").Value;
|
||||||
oRs.Close();
|
oRs.Close();
|
||||||
}
|
}
|
||||||
uitvoerende = mld.dienst_controle(mld_info.stdm_key, locatiekey, (mld_info.bttype == "B"? mld_info.bld_key : null), mld_info.room_key, mld_info.perslid_key_voor, true);
|
|
||||||
|
// Zijn er objecten aan de melding gekoppeld? Zet de ins_deel_keys in een array.
|
||||||
|
var obj_key_arr = [];
|
||||||
|
for (var i=0; i<mld_info.room_obj_arr.length; i++)
|
||||||
|
{
|
||||||
|
obj_key_arr.push(mld_info.room_obj_arr[i].ins_key);
|
||||||
|
}
|
||||||
|
uitvoerende = mld.dienst_controle(mld_info.stdm_key, locatiekey, (mld_info.bttype == "B"? mld_info.bld_key : null), mld_info.room_key, obj_key_arr, mld_info.perslid_key_voor, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNew && copyorder_key < 0 && mld_typeopdr_isofferte == 1)
|
if (isNew && copyorder_key < 0 && mld_typeopdr_isofferte == 1)
|
||||||
|
|||||||
@@ -64,7 +64,14 @@ if (locatiekey < 0 && mld_melding.deladdress_key > 0)
|
|||||||
locatiekey = oRs("alg_locatie_key").Value;
|
locatiekey = oRs("alg_locatie_key").Value;
|
||||||
oRs.Close();
|
oRs.Close();
|
||||||
}
|
}
|
||||||
var prs_bedrijf_key = mld.dienst_controle(new_stdm, locatiekey, (mld_melding.bttype == "B"? mld_melding.bld_key : null), mld_melding.room_key, mld_melding.perslid_key_voor);
|
|
||||||
|
// Zijn er objecten aan de melding gekoppeld? Zet de ins_deel_keys in een array.
|
||||||
|
var obj_key_arr = [];
|
||||||
|
for (var i=0; i<mld_info.room_obj_arr.length; i++)
|
||||||
|
{
|
||||||
|
obj_key_arr.push(mld_info.room_obj_arr[i].ins_key);
|
||||||
|
}
|
||||||
|
var prs_bedrijf_key = mld.dienst_controle(new_stdm, locatiekey, (mld_melding.bttype == "B"? mld_melding.bld_key : null), mld_melding.room_key, obj_key_arr, mld_melding.perslid_key_voor);
|
||||||
|
|
||||||
var sql = "SELECT m.mld_melding_opmerking"
|
var sql = "SELECT m.mld_melding_opmerking"
|
||||||
+ " , m.mld_melding_spoed"
|
+ " , m.mld_melding_spoed"
|
||||||
|
|||||||
Reference in New Issue
Block a user