diff --git a/APPL/PDA/orders_list.asp b/APPL/PDA/orders_list.asp index a58f6bb22a..e19630640c 100644 --- a/APPL/PDA/orders_list.asp +++ b/APPL/PDA/orders_list.asp @@ -32,7 +32,14 @@ var own = getQParamInt("own", 0) == 1; var klus = getQParamInt("klus", 0) == 1; var disc_type = getQParamInt("grpby", 1); // 1 = Vakgroep (default), 2 = Behandelteam var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // nieuwe melding vanuit een controletaak -var self = getQParamInt("self", -1); + +/* Self; + -2: Opdrachten zonder actieve behandelaar + 0/null: Alle opdrachten, ongeacht actieve behandelaar + 1: Opdrachten waarbij ik de actieve behandelaar ben + 2: -2 & 1 (Dus; Geen actieve behandelaar, of ik ben de actieve behandelaar) +*/ +var self = getQParamInt("self", null); function getDistrictKey() { @@ -150,8 +157,14 @@ if (!hasParamFlag) // Op mobile een dag(en)overzicht tonen van opdrachten op basis van een from en een to datum, voor mij als contactpersoon van de uitvoerende. // Die datums zijn dan gebaseerd op de plandatum. - var plandatefrom = getQParamDate("plandate_from", null); - var plandateto = getQParamDate("plandate_to", null); + var plandatefrom = getQParamDate("plandate_from", getQParamDate("plandate", null)); + var plandateto = getQParamDate("plandate_to", plandatefrom); + plandatefrom = plandatefrom || plandateto; + // Nu zijn ze altijd allebei wel of allebei niet gedefinieerd + + if (self === null) { // Default van self bij listmode = 1 + self = 1; + } } else { // b. heb ik dan opdrachtrechten binnen een scope, dat is ORDBOF of ORDBO2? Dan mag ik opdrachten binnen de scope zien. @@ -184,10 +197,10 @@ if (!hasParamFlag) // Wel, afhankelijk van mijn bepaalde rol kan ik mijn overzicht anders willen, // toegespitster op mijn behoefte (listmode): - // 1. alle opdrachten, met de naam van de contactpersoon erbij (ik of mijn collega, leeg als ik) - // 2. alle opdrachten per uitvoerder, kan ik makkelijk afmelden - // 3. al mijn opdrachten, mijn todolijst - // 4. alle opdracht van de meegegeven melding + // 1. Alle opdrachten, met de naam van de contactpersoon erbij (ik of mijn collega, leeg als ik) + // 2. Alle opdrachten per uitvoerder, kan ik makkelijk afmelden + // 3. Al mijn opdrachten, mijn todolijst + // 4. Alle opdracht van de meegegeven melding function grp_sel_listmode2(grp) { @@ -215,7 +228,7 @@ if (!hasParamFlag) + " , o.mld_opdr_bedrijfopdr_volgnr" + " , o.mld_statusopdr_key" + " , (SELECT p.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all p WHERE p.prs_perslid_key = o.prs_perslid_key) behandelaar" - + " , (SELECT " + S("prs_contactpers_string") + " FROM prs_contactpersoon cp WHERE cp.prs_contactpersoon_key = o.prs_contactpersoon_key) contactpersoon" + + " , " + S("prs_contactpers_string") + " contactpersoon" + " , mu.naam" + " , mu.type" + " , mu.intern" @@ -276,11 +289,13 @@ if (!hasParamFlag) + " , alg_locatie l" + " , alg_district di" + " , mld_v_uitvoerende mu" + + " , prs_contactpersoon cp" + " WHERE o.mld_melding_key = m.mld_melding_key (+)" + " AND m.mld_stdmelding_key = std.mld_stdmelding_key (+)" + " AND std.mld_ins_discipline_key = d.ins_discipline_key (+)" + " AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key (+)" + " AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key" // type b of p toch nog ergens doen@? + + " AND cp.prs_contactpersoon_key(+) = o.prs_contactpersoon_key" + (grp_sel=="" ? "" : (listmode == 2 @@ -325,56 +340,19 @@ if (!hasParamFlag) if (listmode == 1) { - var sql_plandate = ""; - var ora_date1; - var ora_date2; - var day_is_the_same = false; - if (plandatefrom && plandateto) - { - ora_date1 = plandatefrom.beginToSQL(); - ora_date2 = plandateto.endToSQL(); - day_is_the_same = (plandatefrom.midnight().getTime() == plandateto.midnight().getTime()) + var plandate_where = ""; + var oneday = false; + if (plandatefrom || plandateto) { + var oneday = plandatefrom.midnight().getTime() == plandateto.midnight().getTime(); + plandate_where = " AND o.mld_opdr_plandatum BETWEEN " + plandatefrom.beginToSQL() + " AND " + plandateto.endToSQL(); } - else if (plandatefrom) - { - ora_date1 = plandatefrom.beginToSQL(); - ora_date2 = plandatefrom.endToSQL(); - day_is_the_same = true; - } - else if (plandateto) - { - ora_date1 = plandateto.beginToSQL(); - ora_date2 = plandateto.endToSQL(); - day_is_the_same = true; - } - - if (day_is_the_same) - { // ora_date1 en ora_date2 zijn op dezelfde dag. - var sqld = "SELECT fac.datumtijdplusuitvoertijd (" + ora_date1 + ", 0, 'DAGEN') date1 FROM DUAL"; - var oRsd = Oracle.Execute(sqld); - var ora_date1 = new Date(oRsd("date1").Value).beginToSQL(); - var ora_date2 = new Date(oRsd("date1").Value).endToSQL(); - oRsd.close(); - } - - // Op mobile een dag(en)overzicht tonen van opdrachten op basis van een from en een to datum, voor mij als contactpersoon van de uitvoerende. - // Die datums zijn dan gebaseerd op de plandatum en binnen die datums gesorteerd op tijd (van diezelfde plandatum). - // Ook evt. opdrachten die aan geen contactpersoon zijn toegekend (dus leeg zijn), wil ik in dat dagoverzicht kunnen bekijken. - if (ora_date1 && ora_date2) - sql_plandate = " AND o.mld_opdr_plandatum BETWEEN " + ora_date1 + " AND " + ora_date2; - + " AND ((SELECT prs_contactpersoon_key" - + " FROM prs_contactpersoon" - + " WHERE prs_perslid_key = " + user_key - + " AND prs_contactpersoon_verwijder IS NULL" - + " AND prs_bedrijf_key = o.mld_uitvoerende_keys) = o.prs_contactpersoon_key" - + " OR o.prs_contactpersoon_key IS NULL)" sql += " AND EXISTS (SELECT 'X' " // Ben ik contactpersoon van het uitvoerende externe bedrijf. + " FROM prs_contactpersoon" + " WHERE prs_perslid_key = " + user_key + " AND prs_contactpersoon_verwijder is null " + " AND prs_bedrijf_key = o.mld_uitvoerende_keys)" - + sql_plandate; + + plandate_where; } if (listmode == 3) @@ -394,6 +372,27 @@ if (!hasParamFlag) + " , prs_v_aanwezigafdeling a" + " WHERE p.prs_afdeling_key = a.prs_afdeling_key" + " AND p.prs_perslid_key = " + user_key + ")"; + if (self) { + // Self heeft betrekking op de actieve behandelaar, dat kan zowel de contactpersoon als de behandelaar zijn + // -2: Opdrachten zonder actieve behandelaar + // 0/null: Alle opdrachten, ongeacht actieve behandelaar + // 1: Opdrachten waarbij ik de actieve behandelaar ben + // 2: -2 & 1 (Dus; Geen actieve behandelaar, of ik ben de actieve behandelaar) + switch (self) { + case -2: + sql += " AND COALESCE(o.prs_contactpersoon_key, o.prs_perslid_key) IS NULL"; + break; + case 1: + sql += " AND ( cp.prs_perslid_key = " + user_key + + " OR o.prs_perslid_key = " + user_key + ")"; + break; + case 2: + sql += " AND ( COALESCE(o.prs_contactpersoon_key, o.prs_perslid_key) IS NULL" + + " OR cp.prs_perslid_key = " + user_key + + " OR o.prs_perslid_key = " + user_key + ")"; + break; + } + } // Een afmelder (ORDBO2 of EXTORD) mag externe opdrachten zien/afmelden onder bepaalde voorwaarden: // EXTORD: Hij mag opdrachten zien/afmelden van externe bedrijven waar hij contactpersoon van is, @@ -455,8 +454,7 @@ if (!hasParamFlag) sql = "SELECT * FROM (" + sqlA + ") ORDER BY " + ((grp_sel == "" && listmode == 2) ? " naam, mld_opdr_datumbegin" - : (listmode == 1 && ora_date1 && ora_date2? " mld_opdr_plandatum," : "") + " actief DESC, halted, einddatum, opdracht") - + : (listmode == 1 && plandatefrom ? " mld_opdr_plandatum," : "") + " actief DESC, halted, einddatum, opdracht"); function fncolLink(oRs) { @@ -516,7 +514,7 @@ if (!hasParamFlag) + (actiecode & 4 ? "" + I("fa-comment-smile fa-flip-horizontal", { fastyle: "far" }) + " " + L("lcl_mld_actiecodeUITV") + "
" : "") + (oRs("plaatsmelding").Value? "" + I("fa-map-marker", { fastyle: "far" }) + " "+safe.html(oRs("plaatsmelding").Value) + "
" : "") + (safeuitv != "" ? safeuitv + "
" : "") - + "" + I("fa-clock", { fastyle: "far" }) + " " + toDateTimeString(oRs("mld_opdr_einddatum").Value, false, false, true) + + "" + I("fa-clock", { fastyle: "far" }) + " " + toDateTimeString(oRs("einddatum").Value, false, false, true, true) + (flagkey ? "
 " + I("fa-fclt-flag", { fastyle: "far" }) + " " + L("lcl_opdr_flag" + flagkey) : "") + "" + "
" + safe.html(shorttxt(oRs("mld_opdr_omschrijving").Value, S("rs_mobile_maxchar"))) + "
"; @@ -527,11 +525,23 @@ if (!hasParamFlag) // Om wat explicieter te zijn in wat we zien specifieke titels per mode var listtitle = L("lcl_mobile_opdrachten"); switch (listmode) { - case 1: listtitle = L("lcl_mobile_opdrachten1"); break; + case 1: + if (plandatefrom) { + var datefrom_str = toDateString(plandatefrom, true, true).toLowerCase(); + if (oneday) { + listtitle = "Planning van {0}".format(datefrom_str); + } else { + listtitle = "Planning van {0} t/m {1}".format(datefrom_str, toDateString(plandateto, true, true).toLowerCase()); + } + } else { + listtitle = L("lcl_mobile_opdrachten1"); + } + break; case 2: listtitle = L("lcl_mobile_opdrachten2") + " " + CurrentPositionMinus1; break; /* is niveau hoger */ case 3: listtitle = L("lcl_mobile_opdrachten3") + " " + CurrentPositionMinus1; break; /* is niveau hoger */ case 4: listtitle = L("lcl_mobile_opdrachten") + " " + L("lcl_mobile_objbijmelding") + " " + meldingNr; break; } + var addaction = (addAllowed? "../pda/order.asp?mld_key=" + mld_key : ""); PAGE_START({datacache:false});