DJIN#35660: Rebound: Behandelaar van opdrachten bij "groepswerkwijze" kiezen/zien.

svn path=/Website/trunk/; revision=31298
This commit is contained in:
Maykel Geerdink
2016-11-01 07:43:08 +00:00
parent 837f7fcdae
commit 8579da83bb
7 changed files with 147 additions and 92 deletions

View File

@@ -15,6 +15,7 @@
<!-- #include file="./iface.inc" -->
<!-- #include file="../Shared/uitvoerendeselector.inc" -->
<!-- #include file="../Shared/contactpersoonselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<%
FCLTHeader.Requires({ js: ["./modernizr-3.3.0.custom.min.js"] });
@@ -328,14 +329,18 @@ else
if (opdr_key > -1)
{
FCLTcontactpersoonselector("contactpers",
"sgCntPersUitv",
{ contactpersoonKey: mld_opdr.contactpersuitv_key,
label: L("lcl_contact_pers"),
filtercode: "U",
suppressEmpty: true,
readonly: true
});
if (mld_opdr.uitv_type == 'B' && !mld_opdr.uitv_intern)
FCLTcontactpersoonselector("contactpers",
"sgCntPersUitv",
{ contactpersoonKey: mld_opdr.contactpersuitv_key,
label: L("lcl_contact_pers"),
filtercode: "U",
suppressEmpty: true,
readonly: true
});
else if (mld_opdr.uitv_type == 'B' && mld_opdr.uitv_intern)
// (INTERN) BEHANDELAAR
ROFIELD ("fldpers", L("lcl_mld_behandelaar"), mld_opdr.contactpers_naam, {suppressEmpty: true});
if (this_opdr.canRead("WEB_ORDBOF"))
{

View File

@@ -130,7 +130,11 @@ var verdieping_key = getQParamInt("verdieping_key", user.alg_verdieping_key({wit
+ " , o.mld_opdr_omschrijving "
+ " , o.mld_opdr_bedrijfopdr_volgnr "
+ " , o.mld_statusopdr_key "
+ " , mu.naam "
+ " , (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"
+ " , mu.naam"
+ " , mu.type"
+ " , mu.intern"
+ " FROM mld_opdr o "
+ " , mld_melding m "
+ " , mld_stdmelding std "
@@ -203,6 +207,15 @@ var verdieping_key = getQParamInt("verdieping_key", user.alg_verdieping_key({wit
+ " OR EXISTS (SELECT 'X' " // Toegekend aan een persoon
+ " FROM prs_perslid"
+ " WHERE prs_perslid_key = o.mld_uitvoerende_keys)"
+ " OR EXISTS (SELECT 'X'" // Toegekend aan het EIGEN interne bedrijf
+ " FROM prs_bedrijf b"
+ " , prs_perslid p"
+ " , prs_v_afdeling a"
+ " WHERE b.prs_bedrijf_key = a.prs_bedrijf_key"
+ " AND p.prs_afdeling_key = a.prs_afdeling_key"
+ " AND b.prs_bedrijf_intern = 1"
+ " AND b.prs_bedrijf_key = o.mld_uitvoerende_keys"
+ " AND p.prs_perslid_key = " + user_key + ")"
//+ " OR EXISTS (SELECT 'X' " // Ben ik contactpersoon van het uitvoerende externe bedrijf
//+ " FROM prs_contactpersoon"
//+ " WHERE prs_perslid_key = " + user_key
@@ -258,11 +271,21 @@ var verdieping_key = getQParamInt("verdieping_key", user.alg_verdieping_key({wit
function fncolaside(oRs)
{
return status.getopdrstatustext(oRs("mld_statusopdr_key").value);
var behandelaar = oRs("behandelaar").Value;
var contactpersoon = oRs("contactpersoon").Value;
var intern = oRs("intern").Value == 1;
var PBtype = oRs("type").Value;
var opdrstatus = oRs("mld_statusopdr_key").Value;
if (PBtype == 'B' && intern && behandelaar != null)
return behandelaar;
else if (PBtype == 'B' && !intern && contactpersoon != null)
return contactpersoon;
}
function fncolSubHeader(oRs)
{
return "<div class='listbodykop'>" + (oRs("plaatsmelding").Value? safe.html(oRs("plaatsmelding").Value) + "<br>" : "")
+ status.getopdrstatustext(oRs("mld_statusopdr_key").Value) + "<br>"
+ L("lcl_mld_enddate") + ": " + toDateTimeString(oRs("mld_opdr_einddatum").Value, false, false, true) + "</div>"
+ "<div class='listbodytext'>" + safe.html(shorttxt(oRs("mld_opdr_omschrijving").Value, S("rs_mobile_maxchar"))) + "</div>";
};

View File

@@ -63,7 +63,9 @@ if (filtcode == "BEHF" || filtcode == "BEHB")
}
else if (filtcode == "OCP")
{ // Verplichte parameters
var params = { disc_key : getQParamInt("disc_key") };
var params = { disc_key: getQParamInt("disc_key"),
pbtype: getQParam("pbtype")
};
}
else if (filtcode == "SUBS")
{ // Verplichte parameters
@@ -85,7 +87,7 @@ if (autlevel == 0 && filtcode != "KP") // Bedrijf niveau zit niet in prs_v_afdel
{
filtClause += " AND p.prs_afdeling_key IN"
+ " (SELECT a.prs_afdeling_key FROM prs_v_afdeling a"
+ " WHERE a.prs_bedrijf_key = " + user.afdeling().prs_bedrijf_key() + " )"
+ " WHERE a.prs_bedrijf_key = " + user.afdeling().prs_bedrijf_key() + " )";
}
// PRS autorisatie
@@ -97,7 +99,7 @@ if (autlevel > 0 && filtcode != "KP") // Efficiente versie van FAC_V_MY_PRS_AFDE
+ " (SELECT aa.prs_afdeling_elder_key"
+ " FROM prs_v_afdeling_familie aa"
+ " WHERE aa.prs_afdeling_key = " + user.prs_afdeling_key()
+ " AND aa.niveau = " + autlevel + "))"
+ " AND aa.niveau = " + autlevel + "))";
}
if (isNaN(parseInt(chars, 10)))
@@ -105,11 +107,11 @@ if (isNaN(parseInt(chars, 10)))
// Merk op dat we de 'upper' weglaten omdat we later BINARY_AI hebben
if (S("prs_pers_string").substring(0, 19) != ' p.prs_perslid_naam' || chars.match(/[^A-Z]/i))
{ // rare S("prs_pers_string") of niet alleen letters
var like = " (" + S("prs_pers_string") + " LIKE " + safe.quoted_sql_wild(chars + "%")+ ")"
var like = " (" + S("prs_pers_string") + " LIKE " + safe.quoted_sql_wild(chars + "%")+ ")";
}
else // uitsluitend A-Z, zoek alleen op achternaam. Is twee keer zo snel bij BINARY_AI
{
var like = " (prs_perslid_naam LIKE " + safe.quoted_sql_wild(chars + "%")+ ")"
var like = " (prs_perslid_naam LIKE " + safe.quoted_sql_wild(chars + "%")+ ")";
}
sql = "SELECT p.prs_perslid_key"
+ ", " + S("prs_pers_string") + " naam"
@@ -126,7 +128,7 @@ if (isNaN(parseInt(chars, 10)))
+ " AND (prs_perslid_oslogin IS NULL OR prs_perslid_oslogin NOT LIKE '\\_%' ESCAPE '\\')"
+ " AND BITAND(prs_perslid_flags, 2) = 0"
+ extraInf.wherestr
+ " ORDER BY 2"
+ " ORDER BY 2";
var matchsql = "utl_match.jaro_winkler(SUBSTR(UPPER(" + S("prs_pers_string") + "),1,"+chars.length+"), "+safe.quoted_sql_upper(chars)+")"
Simsql = "SELECT p.prs_perslid_key"
@@ -145,7 +147,7 @@ if (isNaN(parseInt(chars, 10)))
+ " AND BITAND(prs_perslid_flags, 2) = 0"
+ extraInf.wherestr
+ " AND " + matchsql + " > 0.75"
+ " ORDER BY " + matchsql + " desc, 2" // best match bovenaan
+ " ORDER BY " + matchsql + " desc, 2"; // best match bovenaan
// Maakt dat Andr<64> ook gevonden wordt als je Andre tikt. Wel iets langzamer
// Echter mogen we de UPPER weglaten in de query, dat scheelt weer
@@ -180,7 +182,7 @@ else // Telefoonnummer zoeken
+ " AND (prs_perslid_oslogin IS NULL OR prs_perslid_oslogin NOT LIKE '\\_%' ESCAPE '\\')"
+ " AND BITAND(prs_perslid_flags, 2) = 0"
+ extraInf.wherestr
+ " ORDER BY 3,2"
+ " ORDER BY 3,2";
WriteResult(sql, bAll, "prs_perslid_telefoonnr", "prs_perslid_key", "naam", "extra", "afdeling", true);
}

View File

@@ -74,22 +74,26 @@ else // lutype == "B"
// Geen autorisatie bij externe bedrijven (prs_bedrijf met prs_bedrijf_uitvoerende = 1 of prs_bedrijf_leverancier = 1)
// Niet persoon of plaats afhankelijk
sqlD = " SELECT b.prs_bedrijf_key uitv_key"
+ ", " + safe.quoted_sql(L("lcl_mld_bedrijf_prefix")) + " || b.prs_bedrijf_naam naam"
+ ", '' dienst"
+ ", 'B' extra"
+ ", 10"
+ ", prs_bedrijf_naam_upper"
+ " , " + safe.quoted_sql(L("lcl_mld_bedrijf_prefix")) + " || b.prs_bedrijf_naam naam"
+ " , '' dienst"
+ " , CASE"
+ " WHEN prs_bedrijf_intern = 1"
+ " THEN 'BI'"
+ " ELSE 'BE'"
+ " END extra"
+ " , 10"
+ " , prs_bedrijf_naam_upper"
+ " FROM " + uitvtabel + " b"
+ " WHERE 1 = 1"
+ filtClause.bedrijf
+ " AND UPPER(b.prs_bedrijf_naam) LIKE " + safe.quoted_sql_wild("%" + chars + "%");
sqlP = " SELECT p.prs_perslid_key uitv_key"
+ ", " + safe.quoted_sql(L("lcl_mld_person_prefix")) + " || " + S("prs_pers_string") + " naam"
+ ", " + safe.quoted_sql(L("lcl_mld_intern")) + " dienst"
+ ", 'P' extra"
+ ", 99"
+ ", prs_perslid_upper"
+ " , " + safe.quoted_sql(L("lcl_mld_person_prefix")) + " || " + S("prs_pers_string") + " naam"
+ " , " + safe.quoted_sql(L("lcl_mld_intern")) + " dienst"
+ " , 'P' extra"
+ " , 99"
+ " , prs_perslid_upper"
+ " FROM prs_v_aanwezigperslid p"
+ " WHERE (UPPER(" + safe.quoted_sql(L("lcl_mld_person_prefix")) + " || " + S("prs_pers_string") + ") LIKE " + safe.quoted_sql_wild(chars + "%")
+ " OR UPPER(" + safe.quoted_sql(L("lcl_mld_intern")) + ") LIKE " + safe.quoted_sql_wild(chars + "%")+")"

View File

@@ -167,7 +167,12 @@ function getFiltClausePersoon(pfiltcode, params)
+ ", fac_functie ff"
+ " WHERE f.fac_functie_key = ff.fac_functie_key"
+ " AND ins_discipline_key = " + params.disc_key
+ " AND (fac_functie_code = 'WEB_MLDBOF' OR fac_functie_code = 'WEB_MLDBO3' OR fac_functie_code = 'WEB_ORDBOF')" //(vermoeden is dat MLDBOx hier eigenlijk niet bij hoort)
+ " AND (fac_functie_code = 'WEB_MLDBOF'"
+ " OR fac_functie_code = 'WEB_MLDBO3'"
+ (params.pbtype == "BI"
? " OR fac_functie_code = 'WEB_ORDBO2'"
: "")
+ " OR fac_functie_code = 'WEB_ORDBOF')" //(vermoeden is dat MLDBOx hier eigenlijk niet bij hoort)
+ " AND f.fac_gebruiker_prs_level_write <9"
+ " AND f.fac_gebruiker_alg_level_write <9)";
break;

View File

@@ -16,30 +16,30 @@ function getFiltClauseUitvoerende(pfiltcode, params)
if (params.onrgoed_key && params.onrgoed_key > 0)
{
sql = " SELECT alg_regio_key"
+ ", d.alg_district_key"
+ ", l.alg_locatie_key"
+ ", alg_gebouw_key"
+ ", alg_verdieping_key"
+ ", alg_ruimte_key"
+ " FROM alg_v_allonroerendgoed aog"
+ ", alg_locatie l"
+ ", alg_district d"
+ " WHERE aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = d.alg_district_key"
+ " AND aog.alg_onroerendgoed_keys = " + params.onrgoed_key;
+ " , d.alg_district_key"
+ " , l.alg_locatie_key"
+ " , alg_gebouw_key"
+ " , alg_verdieping_key"
+ " , alg_ruimte_key"
+ " FROM alg_v_allonroerendgoed aog"
+ " , alg_locatie l"
+ " , alg_district d"
+ " WHERE aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = d.alg_district_key"
+ " AND aog.alg_onroerendgoed_keys = " + params.onrgoed_key;
}
else
{
sql = " SELECT alg_regio_key"
+ ", d.alg_district_key"
+ ", l.alg_locatie_key"
+ ", null alg_gebouw_key"
+ ", null alg_verdieping_key"
+ ", null alg_ruimte_key"
+ " FROM alg_locatie l"
+ ", alg_district d"
+ " WHERE l.alg_district_key = d.alg_district_key"
+ " AND l.alg_locatie_key = "
+ " , d.alg_district_key"
+ " , l.alg_locatie_key"
+ " , null alg_gebouw_key"
+ " , null alg_verdieping_key"
+ " , null alg_ruimte_key"
+ " FROM alg_locatie l"
+ " , alg_district d"
+ " WHERE l.alg_district_key = d.alg_district_key"
+ " AND l.alg_locatie_key = "
+ (params.loc_key && params.loc_key > 0
? params.loc_key
: "-1");
@@ -47,14 +47,14 @@ function getFiltClauseUitvoerende(pfiltcode, params)
oRs = Oracle.Execute(sql);
sql_web_ordbof = " SELECT prs_perslid_key"
+ " FROM fac_gebruikersgroep gg"
+ ", fac_groeprechten gr"
+ ", fac_functie f"
+ " WHERE gg.fac_groep_key = gr.fac_groep_key"
+ " AND gr.fac_functie_key = f.fac_functie_key"
+ " AND f.fac_functie_code = 'WEB_MLDORD'"
+ " FROM fac_gebruikersgroep gg"
+ " , fac_groeprechten gr"
+ " , fac_functie f"
+ " WHERE gg.fac_groep_key = gr.fac_groep_key"
+ " AND gr.fac_functie_key = f.fac_functie_key"
+ " AND f.fac_functie_code = 'WEB_MLDORD'"
+ (params.disc_key && params.disc_key > 0
? " AND gr.ins_discipline_key = " + params.disc_key
? " AND gr.ins_discipline_key = " + params.disc_key
: "");
if (!oRs.eof)
@@ -133,16 +133,16 @@ function getFiltClauseUitvoerende(pfiltcode, params)
// Als bld_key bekend
sqlG0 =" SELECT dl.prs_bedrijf_key"
+ ", dl.prs_dienst_key"
+ ", 2 niveau"
+ " , dl.prs_dienst_key"
+ " , 2 niveau"
+ " FROM prs_bedrijfdienstlocatie dl"
+ " WHERE dl.alg_gebouw_key = " + params.bld_key
+ " UNION" // geen ALL */
+ " SELECT cc.cnt_prs_bedrijf_key"
+ ", cc.prs_dienst_key"
+ ", 2 niveau"
+ " , cc.prs_dienst_key"
+ " , 2 niveau"
+ " FROM cnt_contract cc"
+ ", cnt_contract_plaats ccp"
+ " , cnt_contract_plaats ccp"
+ " WHERE cc.cnt_contract_key = ccp.cnt_contract_key"
+ " AND sysdate BETWEEN cnt_contract_looptijd_van AND cnt_contract_looptijd_tot"
+ " AND ccp.cnt_alg_plaats_key = " + params.bld_key
@@ -150,35 +150,39 @@ function getFiltClauseUitvoerende(pfiltcode, params)
// Als loc_key bekend
sqlL0 = " SELECT dl.prs_bedrijf_key"
+ ", dl.prs_dienst_key"
+ ", 3 niveau"
+ " FROM prs_bedrijfdienstlocatie dl"
+ " WHERE dl.alg_locatie_key = " + params.loc_key
+ " UNION" // geen ALL */
+ " SELECT cc.cnt_prs_bedrijf_key"
+ ", cc.prs_dienst_key"
+ ", 3 niveau"
+ " FROM cnt_contract cc"
+ ", cnt_contract_plaats ccp"
+ " WHERE cc.cnt_contract_key = ccp.cnt_contract_key"
+ " AND sysdate BETWEEN cnt_contract_looptijd_van AND cnt_contract_looptijd_tot"
+ " AND ccp.cnt_alg_plaats_key = " + params.loc_key
+ " AND ccp.cnt_alg_plaats_code = 'L'";
+ " , dl.prs_dienst_key"
+ " , 3 niveau"
+ " FROM prs_bedrijfdienstlocatie dl"
+ " WHERE dl.alg_locatie_key = " + params.loc_key
+ " UNION" // geen ALL */
+ " SELECT cc.cnt_prs_bedrijf_key"
+ " , cc.prs_dienst_key"
+ " , 3 niveau"
+ " FROM cnt_contract cc"
+ " , cnt_contract_plaats ccp"
+ " WHERE cc.cnt_contract_key = ccp.cnt_contract_key"
+ " AND sysdate BETWEEN cnt_contract_looptijd_van AND cnt_contract_looptijd_tot"
+ " AND ccp.cnt_alg_plaats_key = " + params.loc_key
+ " AND ccp.cnt_alg_plaats_code = 'L'";
function fsql(ster, sql)
{ return " SELECT b.prs_bedrijf_key uitv_key"
+ ", " + safe.quoted_sql(L("lcl_mld_bedrijf_prefix") + ster) + " || b.prs_bedrijf_naam naam"
+ ", " + lcl.xsql('d.prs_dienst_omschrijving', 'd.prs_dienst_key') + " dienst"
+ ", 'B' extra"
+ ", niveau"
+ ", prs_bedrijf_naam_upper"
+ " FROM " + uitvtabel + " b"
+ ", (" + sql + ") dl"
+ ", prs_dienst d"
+ " WHERE b.prs_bedrijf_key = dl.prs_bedrijf_key"
+ " AND dl.prs_dienst_key = d.prs_dienst_key"
+ " AND (UPPER(" + safe.quoted_sql(L("lcl_mld_bedrijf_prefix")) + " || b.prs_bedrijf_naam) LIKE " + safe.quoted_sql_wild("%" + params.chars + "%")
+ " OR UPPER(" + lcl.xsql('d.prs_dienst_omschrijving', 'd.prs_dienst_key') + ") LIKE " + safe.quoted_sql_wild("%" + params.chars + "%") + ")"
+ " , " + safe.quoted_sql(L("lcl_mld_bedrijf_prefix") + ster) + " || b.prs_bedrijf_naam naam"
+ " , " + lcl.xsql('d.prs_dienst_omschrijving', 'd.prs_dienst_key') + " dienst"
+ " , CASE"
+ " WHEN b.prs_bedrijf_intern = 1"
+ " THEN 'BI'"
+ " ELSE 'BE'"
+ " END extra"
+ " , niveau"
+ " , prs_bedrijf_naam_upper"
+ " FROM " + uitvtabel + " b"
+ " , (" + sql + ") dl"
+ " , prs_dienst d"
+ " WHERE b.prs_bedrijf_key = dl.prs_bedrijf_key"
+ " AND dl.prs_dienst_key = d.prs_dienst_key"
+ " AND (UPPER(" + safe.quoted_sql(L("lcl_mld_bedrijf_prefix")) + " || b.prs_bedrijf_naam) LIKE " + safe.quoted_sql_wild("%" + params.chars + "%")
+ " OR UPPER(" + lcl.xsql('d.prs_dienst_omschrijving', 'd.prs_dienst_key') + ") LIKE " + safe.quoted_sql_wild("%" + params.chars + "%") + ")"
+ sql_dienst;
}
sqlL = fsql("*", sqlL0);

View File

@@ -55,7 +55,11 @@ function FCLTuitvoerendeselector(fieldName, objectName, params)
var filtClause = getFiltClauseUitvoerende(params.filtercode, params);
sql = "SELECT prs_bedrijf_naam uitv_naam"
+ ", 'B' pbtype"
+ " , CASE"
+ " WHEN prs_bedrijf_intern = 1"
+ " THEN 'BI'"
+ " ELSE 'BE'"
+ " END pbtype"
+ " FROM prs_v_aanwezigbedrijf b"
+ " WHERE b.prs_bedrijf_key = " + params.uitvoerendekey
+ filtClause.bedrijf
@@ -72,7 +76,11 @@ function FCLTuitvoerendeselector(fieldName, objectName, params)
{ // Probeer dan maar zonder extra 'where's
isBad = true;
sql = " SELECT prs_bedrijf_naam uitv_naam"
+ ", 'B' pbtype"
+ ", CASE"
+ " WHEN prs_bedrijf_intern = 1"
+ " THEN 'BI'"
+ " ELSE 'BE'"
+ " END pbtype"
+ " FROM prs_bedrijf b"
+ " WHERE b.prs_bedrijf_key = " + params.uitvoerendekey
//+ filtClause.bedrijf
@@ -103,7 +111,11 @@ function FCLTuitvoerendeselector(fieldName, objectName, params)
var filtClause = getFiltClauseUitvoerende(params.filtercode, params);
sqlBP = " SELECT prs_bedrijf_key uitv_key"
+ " , prs_bedrijf_naam uitv_naam"
+ " , 'B' pbtype"
+ " , CASE"
+ " WHEN prs_bedrijf_intern = 1"
+ " THEN 'BI'"
+ " ELSE 'BE'"
+ " END pbtype"
+ " FROM prs_bedrijf b"
+ " WHERE 1 = 1"
+ filtClause.bedrijf
@@ -182,7 +194,7 @@ function FCLTuitvoerendeselector(fieldName, objectName, params)
if (pkey != -1) {
if ($('#pbtype')[0].value == "P")
FcltMgr.openDetail("appl/fac/fac_user.asp?prs_key=" + pkey, pname); // Overweeg een specifiekere, met planningsinfo
else if ($('#pbtype')[0].value == "B")
else if ($('#pbtype')[0].value == "BI" || $('#pbtype')[0].value == "BE")
FcltMgr.openDetail("appl/prs/prs_bedrijf.asp?bedrijf_key=" + pkey, pname);
} else {
// alert("Kies eerst een persoon?");
@@ -211,7 +223,7 @@ function FCLTuitvoerendeselector(fieldName, objectName, params)
queryUrl: "<%=uitvoerendeQueryUrl%>",
initKey: <%=params.uitvoerendekey? params.uitvoerendekey : -1%>,
keyField: $("#<%=fieldName%>")[0],
extraParamField: $("#pbtype")[0], // geeft aan of het een persoon 'P' of bedrijf 'B' is
extraParamField: $("#pbtype")[0], // geeft aan of het een persoon 'P' of intern/extern bedrijf 'BI'/'BE' is.
initExtraParam: "<%=lpbtype%>"
<%=params.urlAdd? ", urlAdd: " + urlAddTxt : ""%>
<%=params.isBad? ", isBad: true": ""%>