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();
|
||||
},
|
||||
|
||||
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;
|
||||
sql = "SELECT ms.mld_stdmelding_vereisdienst"
|
||||
@@ -7064,7 +7064,12 @@ mld = {
|
||||
else if (locatiekey > 0) // <20>berhaupt plaatsgegevens?
|
||||
sql += " AND (bdl.alg_locatie_key = " + locatiekey + " OR bdl.alg_locatie_key IS NULL)";
|
||||
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.
|
||||
err_msg = (check_autoorder ? L("lcl_mld_dienst_noautoorder") : "")
|
||||
+ L("lcl_mld_dienstunavailablehere") + prs_dienst_desc;
|
||||
@@ -7072,42 +7077,83 @@ mld = {
|
||||
}
|
||||
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.
|
||||
// De niet uitgesloten ophalen.
|
||||
sql += " AND bdl.mld_autoorder = 1" // 0=Uitsluiten van automatische opdracht (vinkje AAN), 1=Autoorder van stdmelding gebruiken (vinkje UIT).
|
||||
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.
|
||||
prs_bedrijf_key = oRs2("prs_bedrijf_key").Value; // straks mogelijk vanzelf opdracht.
|
||||
prs_bedrijf_key = min_bedrijf_key2; // straks mogelijk vanzelf opdracht.
|
||||
}
|
||||
else
|
||||
{ // Bedrijf ophalen uit contractbeheer.
|
||||
// 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.
|
||||
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"
|
||||
+ " , cnt_contract_key"
|
||||
+ " , prio"
|
||||
+ " , COUNT(DISTINCT cnt_prs_bedrijf_key) aantal"
|
||||
+ " FROM (SELECT c.cnt_prs_bedrijf_key"
|
||||
+ " , c.cnt_contract_key"
|
||||
+ " , 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 + ")" : "")
|
||||
+ " )"
|
||||
+ " )"
|
||||
+ " FROM (" + sql_p
|
||||
+ (obj_key_arr.length ? " UNION " + sql_o : "")
|
||||
+ " )"
|
||||
+ " GROUP BY cnt_prs_bedrijf_key, cnt_contract_key, prio"
|
||||
+ " ORDER BY prio DESC"
|
||||
+ " FETCH FIRST 1 ROW ONLY";
|
||||
@@ -7118,7 +7164,6 @@ mld = {
|
||||
}
|
||||
oRs_c.Close();
|
||||
}
|
||||
oRs2.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -7126,11 +7171,10 @@ mld = {
|
||||
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)
|
||||
|
||||
@@ -317,12 +317,12 @@ if (savemode)
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
// 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.
|
||||
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");
|
||||
|
||||
@@ -76,6 +76,7 @@ else
|
||||
oRs = Oracle.Execute(sql);
|
||||
var t_opdr = oRs("mld_typeopdr_key").Value;
|
||||
var autoorderamount = oRs("mld_stdmelding_autoorderamount").Value;
|
||||
oRs.Close();
|
||||
if (!t_opdr)
|
||||
// Beter dan error in de IIS log. Zonder de alert blijft het scherm te klein?
|
||||
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;
|
||||
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)
|
||||
|
||||
@@ -64,7 +64,14 @@ if (locatiekey < 0 && mld_melding.deladdress_key > 0)
|
||||
locatiekey = oRs("alg_locatie_key").Value;
|
||||
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"
|
||||
+ " , m.mld_melding_spoed"
|
||||
|
||||
Reference in New Issue
Block a user