478 lines
23 KiB
C++
478 lines
23 KiB
C++
<%
|
|
/*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: prs.inc
|
|
Description: Ophalen van prs om client-side allerlei interactie te bieden
|
|
Parameters: prs_perslid_key
|
|
|
|
Context: get_prs_info_ajax.asp
|
|
diverse andere bestanden die ook dynamisch info ophalen via get_prs_info_ajax.asp
|
|
Note:
|
|
|
|
*/ %>
|
|
|
|
<%
|
|
prs =
|
|
{ // params.withWP: voeg werkplek info to.
|
|
prs_perslid: function _prs_perslid(prs_perslid_key, params)
|
|
{
|
|
params = params || {};
|
|
var prs = new Perslid(prs_perslid_key);
|
|
|
|
var result = { prs_perslid_key : prs_perslid_key,
|
|
prs_afdeling_key : prs.prs_afdeling_key(),
|
|
prs_afdeling_naam : prs.afdeling().naam(),
|
|
naam : prs.naam(),
|
|
prs_perslid_geslacht : prs.prs_perslid_geslacht(),
|
|
prs_perslid_telefoonnr : prs.prs_perslid_telefoonnr(),
|
|
fac_profiel_key : prs.fac_profiel_key(),
|
|
prs_perslid_email : prs.prs_perslid_email(),
|
|
kostenplaats_key : prs.afdeling().prs_kostenplaats_key()||-1,
|
|
kpn_string : prs.kpn_string(),
|
|
kpn_module : prs.afdeling().kpn_module(),
|
|
prs_perslid_mobiel : prs.prs_perslid_mobiel(),
|
|
prs_perslid_achternaam : prs.prs_perslid_achternaam(),
|
|
prs_perslid_tussenvoegsel: prs.prs_perslid_tussenvoegsel(),
|
|
prs_perslid_voorletters : prs.prs_perslid_voorletters(),
|
|
prs_perslid_voornaam : prs.prs_perslid_voornaam(),
|
|
prs_perslid_titel : prs.prs_perslid_titel(),
|
|
prs_srtperslid : prs.prs_srtperslid(),
|
|
alg_onroerendgoed_keys : prs.alg_onroerendgoed_keys(),
|
|
alg_onroerendgoed_type : prs.alg_onroerendgoed_type(),
|
|
prs_perslid_bezetdatum : prs.prs_perslid_bezetdatum()
|
|
};
|
|
if (params.withWP)
|
|
{
|
|
result.werkplekken = [];
|
|
var i;
|
|
for (i = 0; i < prs.werkplekken().length; i++)
|
|
{
|
|
var wp = prs.werkplekken()[i];
|
|
if (!params.onlyBezoekbaar || (params.onlyBezoekbaar && wp.alg_gebouw_bezoekbaar()))
|
|
//result.prs_perslidwerkplek_bezetting = { prs_perslidwerkplek_bezetting: prs.prs_perslidwerkplek_bezetting()};
|
|
result.werkplekken.push({ prs_werkplek_key: wp.prs_werkplek_key(),
|
|
alg_locatie_key: wp.alg_locatie_key(),
|
|
alg_locatie_naam: wp.alg_locatie_naam(),
|
|
alg_locatie_string: wp.alg_locatie_string(),
|
|
alg_gebouw_key: wp.alg_gebouw_key(),
|
|
alg_gebouw_naam: wp.alg_gebouw_naam(),
|
|
alg_gebouw_code: wp.alg_gebouw_code(),
|
|
prs_kostenplaats_key: wp.prs_kostenplaats_key() || -1, // van het gebouw
|
|
kpn_naam: wp.kpn_naam(), // van het gebouw
|
|
alg_verdieping_key: wp.alg_verdieping_key(),
|
|
alg_verdieping_naam: wp.alg_verdieping_naam(),
|
|
alg_verdieping_code: wp.alg_verdieping_code(),
|
|
alg_ruimte_key: wp.alg_ruimte_key(),
|
|
alg_ruimte_naam: wp.alg_ruimte_naam(),
|
|
naam: wp.naam(),
|
|
isVirtueel: wp.isVirtueel(),
|
|
prs_werkplek_volgnr: wp.prs_werkplek_volgnr(),
|
|
prs_werkplek_aanduiding: wp.prs_werkplek_aanduiding(),
|
|
prs_perslidwerkplek_bezetting: wp.bezetting(),
|
|
prs_perslidwerkplek_key: wp.prs_perslidwerkplek_key(),
|
|
alg_gebouw_bezoekbaar: wp.alg_gebouw_bezoekbaar()
|
|
}
|
|
)
|
|
}
|
|
}
|
|
var wplocatie_key = -1;
|
|
if (params.withAflever)
|
|
{
|
|
var wp = prs.werkplekken();
|
|
for (i in wp)
|
|
{
|
|
var wp0 = prs.werkplekken()[i];
|
|
if (!wp0.isVirtueel())
|
|
{
|
|
result.afleverruimte = wp0.deliveryPlace();
|
|
wplocatie_key = wp0.alg_locatie_key();
|
|
break; // stop bij de eerste
|
|
}
|
|
}
|
|
// Nu Afleveradres bepalen
|
|
// 1) Afleveradres van de persoon.
|
|
// 2) Afleveradres van de persoon zijn/haar afdeling.
|
|
// 3) Afleveradres van het gebouw van de persoon zijn/haar werkplek.
|
|
// 4) Afleveradres van het bedrijf van de persoon zijn/haar afdeling.
|
|
// 5) Afleveradres behorend bij de locatie van de persoon zijn/haar werkplek (via mld_adres tabel)
|
|
if (prs.mld_adres_key())
|
|
result.mld_adres_key = prs.mld_adres_key();
|
|
else if (prs.afdeling().mld_adres_key())
|
|
result.mld_adres_key = prs.afdeling().mld_adres_key();
|
|
else if (wp.length > 0 && prs.gebouw().mld_adres_key())
|
|
result.mld_adres_key = prs.gebouw().mld_adres_key();
|
|
else
|
|
{
|
|
var sql = "SELECT mld_adres_key_lev FROM prs_bedrijf"
|
|
+ " WHERE prs_bedrijf_key = " + prs.afdeling().prs_bedrijf_key();
|
|
var oRs = Oracle.Execute(sql);
|
|
result.mld_adres_key = oRs("mld_adres_key_lev").Value;
|
|
|
|
if (!result.mld_adres_key && wplocatie_key > 0)
|
|
{
|
|
var sql = "SELECT COUNT(*) aantal_adressen"
|
|
+ " , MIN(ma.mld_adres_key) mld_adres_key"
|
|
+ " FROM mld_adres ma"
|
|
+ " WHERE ma.alg_locatie_key = " + wplocatie_key
|
|
+ " AND ma.mld_adres_afleveradres = 1"
|
|
+ " AND ma.mld_adres_verwijder IS NULL";
|
|
var oRs = Oracle.Execute(sql);
|
|
// Alleen als er 1 afleveradres op de betreffende locatie is kan ik een goede keuze maken.
|
|
// Zijn er meerdere, dan zijn er waarschijnlijk meerdere gebouwen. Dan weet ik niet welke ik moet kiezen.
|
|
if (oRs("aantal_adressen").Value == 1)
|
|
result.mld_adres_key = oRs("mld_adres_key").Value;
|
|
oRs.Close();
|
|
}
|
|
}
|
|
if (result.mld_adres_key)
|
|
{
|
|
var oRs = Oracle.Execute("SELECT mld_adres_naam FROM mld_adres WHERE mld_adres_key = " + result.mld_adres_key);
|
|
result.mld_adres_naam = oRs("mld_adres_naam").Value;
|
|
oRs.Close();
|
|
}
|
|
};
|
|
if (params.withWL)
|
|
{ // werklocatie
|
|
// LET OP: prs.gebouw({withcurrent: true}) wordt misschien niet meer uitgevoerd omdat hierboven prs.gebouw() misschien al is uitgevoerd.
|
|
// Daarom prsWL hier gedefinieerd voor werklocaties.
|
|
var prsWL = new Perslid(prs_perslid_key);
|
|
result.werklocatie = {};
|
|
var wl_key = prsWL.alg_locatie_key({withcurrent: true})
|
|
if (wl_key > 0)
|
|
{
|
|
var wl = prsWL.locatie({withcurrent: true});
|
|
result.werklocatie = {alg_locatie_key: wl.alg_locatie_key(),
|
|
alg_locatie_naam: wl.naam(),
|
|
alg_locatie_string: wl.locatie_string(),
|
|
alg_locatie_code: wl.alg_locatie_code()
|
|
};
|
|
}
|
|
var wg_key = prsWL.alg_gebouw_key({withcurrent: true})
|
|
if (wg_key > 0)
|
|
{
|
|
var wg = prsWL.gebouw({withcurrent: true});
|
|
result.werklocatie.alg_gebouw_key = wg.alg_gebouw_key();
|
|
result.werklocatie.alg_gebouw_naam = wg.naam();
|
|
result.werklocatie.alg_gebouw_code = wg.alg_gebouw_code();
|
|
result.werklocatie.alg_gebouw_omschrijving = wg.alg_gebouw_omschrijving();
|
|
result.werklocatie.alg_gebouw_kpn_naam = wg.kpn_naam(); // van het gebouw
|
|
result.werklocatie.alg_gebouw_kp_key = wg.prs_kostenplaats_key(); // van het gebouw
|
|
result.werklocatie.alg_gebouw_mld_adres_key = wg.mld_adres_key(); // van het gebouw
|
|
}
|
|
var wv_key = prsWL.alg_verdieping_key({withcurrent: true})
|
|
if (wv_key > 0)
|
|
{
|
|
var wv = prsWL.verdieping({withcurrent: true});
|
|
result.werklocatie.alg_verdieping_key = wv.alg_verdieping_key();
|
|
result.werklocatie.alg_verdieping_naam = wv.naam();
|
|
result.werklocatie.alg_verdieping_code = wv.alg_verdieping_code();
|
|
}
|
|
var wr_key = prsWL.alg_ruimte_key({withcurrent: true})
|
|
if (wr_key > 0)
|
|
{
|
|
var wr = prsWL.ruimte({withcurrent: true});
|
|
result.werklocatie.alg_ruimte_key = wr.alg_ruimte_key();
|
|
result.werklocatie.alg_ruimte_naam = wr.naam();
|
|
result.werklocatie.alg_ruimte_nr = wr.alg_ruimte_nr();
|
|
}
|
|
var ww_key = prsWL.prs_werkplek_key({withcurrent: true})
|
|
if (ww_key > 0)
|
|
{
|
|
var ww = prsWL.werkplek({withcurrent: true});
|
|
result.werklocatie.prs_werkplek_key = ww.prs_werkplek_key();
|
|
result.werklocatie.prs_werkplek_naam = ww.naam();
|
|
result.werklocatie.prs_werkplek_volgnr = ww.prs_werkplek_volgnr();
|
|
result.werklocatie.prs_werkplek_aanduiding = ww.prs_werkplek_aanduiding();
|
|
result.werklocatie.prs_werkplek_bezetting = ww.bezetting();
|
|
}
|
|
result.werklocatie.aanduiding = (!result.werklocatie.alg_gebouw_key? result.werklocatie.alg_locatie_code : "")
|
|
+ (result.werklocatie.alg_gebouw_key? result.werklocatie.alg_gebouw_code : "")
|
|
+ (result.werklocatie.alg_verdieping_key? "-" + result.werklocatie.alg_verdieping_code : "")
|
|
+ (result.werklocatie.alg_ruimte_key? "-" + result.werklocatie.alg_ruimte_nr: "")
|
|
+ (result.werklocatie.prs_werkplek_key? "/" + result.werklocatie.prs_werkplek_volgnr: "");
|
|
}
|
|
if (params.withPhoto)
|
|
{
|
|
result.photomap = prs.photoinfo().photomap;
|
|
result.photopath = prs.photoinfo().photopath;
|
|
result.photopaththumb = prs.photoinfo().photopaththumb;
|
|
}
|
|
|
|
if (params.withProfiel_fordisc>0) // withProfiel_fordisc is een disc_key
|
|
{
|
|
var sql = "SELECT prs.getprofiellimiet(" + prs_perslid_key + ", " + params.withProfiel_fordisc +") limiet FROM DUAL";
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
result.profiel_limiet = oRs("limiet").Value || ""; // zou alsnog leeg kunnen zijn
|
|
oRs.Close();
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
// Levert de prs_perslid_key op van de budgethouder van een kostenplaats.
|
|
// Kijkt dus niet naar limiet oid, gewoon de budgethouder zoeken volgens de door ons gedefinieerde regels.
|
|
// Indien geen verantwoordelijke wordt gevonden levert de functie -1 op.
|
|
getKpVerantwoordelijke: function(kp_key, totaalbedrag, prs_key)
|
|
{
|
|
// Kan prs_key (aanmaker) zelf fiatteren?: true: totaalbedrag <= can_selfapprove
|
|
// false totaalbedrag > can_selfapprove => prs_key als exclude key meegeven.
|
|
var sql = "SELECT prs.getkpverantwoordelijke (" + kp_key + ", " + S("prs_approvemethod") + ", " + (prs_key && prs_key > 0 && totaalbedrag > S("can_selfapprove")? prs_key : -1) + ") FROM DUAL";
|
|
return Oracle.Execute(sql)(0).Value;
|
|
},
|
|
|
|
// zelfde, maar nu als ik expliciet iemand uit wil sluiten, bijvoorbeeld een budgethouder met te laag profiel
|
|
// en moet dan de kpngroepverantwoordelijke opleveren
|
|
getKpVerantwoordelijkeExcept: function(kp_key, p_key)
|
|
{
|
|
var sql = "SELECT prs.getkpverantwoordelijke (" + kp_key + ", " + S("prs_approvemethod") + ", " + p_key + ") FROM DUAL";
|
|
return Oracle.Execute(sql)(0).Value;
|
|
},
|
|
|
|
getLocationSql: function(loc_key, alias)
|
|
{
|
|
var sql = " (prs_bedrijfdienstlocatie.alg_locatie_key IN (" + loc_key + ")"
|
|
+ " OR prs_bedrijfdienstlocatie.alg_locatie_key IS NULL"
|
|
+ " OR prs_bedrijfdienstlocatie.alg_gebouw_key IN (SELECT alg_gebouw_key"
|
|
+ " FROM alg_gebouw"
|
|
+ " WHERE alg_locatie_key IN (" + loc_key + ")))";
|
|
return sql;
|
|
},
|
|
|
|
exceeds_budgetkps: function(kpg_key, bedrag)
|
|
{
|
|
sql = "SELECT SUM(k.prs_kostenplaats_limiet) totaal_kp_budget"
|
|
+ " FROM prs_kostenplaatsgrp kpg"
|
|
+ " , prs_kostenplaats k"
|
|
+ " WHERE kpg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key"
|
|
+ " AND kpg.prs_kostenplaatsgrp_key = " + kpg_key;
|
|
oRs = Oracle.Execute(sql);
|
|
var totaal_kp_budget = oRs("totaal_kp_budget").Value || 0;
|
|
oRs.Close();
|
|
|
|
return bedrag < totaal_kp_budget;
|
|
},
|
|
|
|
exceeds_budgetkpg: function(kpg_key, kp_key, bedrag)
|
|
{
|
|
var sql = "SELECT kpg.prs_kostenplaatsgrp_limiet kpg_limiet"
|
|
+ " FROM prs_kostenplaats k"
|
|
+ " , prs_kostenplaatsgrp kpg"
|
|
+ " WHERE kpg.prs_kostenplaatsgrp_key(+) = k.prs_kostenplaatsgrp_key"
|
|
+ " AND k.prs_kostenplaatsgrp_key = " + kpg_key;
|
|
oRs = Oracle.Execute(sql);
|
|
var kpg_limiet;
|
|
if (!oRs.eof)
|
|
kpg_limiet = oRs("kpg_limiet").Value;
|
|
if (kpg_limiet == null) return false; // Geen kostenplaatsgroep limiet. Dus altijd goed.
|
|
|
|
sql = "SELECT SUM(k.prs_kostenplaats_limiet) totaal_kp_budget"
|
|
+ " FROM prs_kostenplaatsgrp kpg"
|
|
+ " , prs_kostenplaats k"
|
|
+ " WHERE kpg.prs_kostenplaatsgrp_key(+) = k.prs_kostenplaatsgrp_key"
|
|
+ (kp_key > 0
|
|
? " AND k.prs_kostenplaats_key <> " + kp_key
|
|
: "")
|
|
+ " AND kpg.prs_kostenplaatsgrp_key = " + kpg_key;
|
|
oRs = Oracle.Execute(sql);
|
|
var totaal_kp_budget = oRs("totaal_kp_budget").Value || 0;
|
|
oRs.Close();
|
|
|
|
return kpg_limiet < (totaal_kp_budget + bedrag);
|
|
},
|
|
|
|
prs_bedrijfinfo: function _prs_bedrijfinfo(prs_bedrijf_key)
|
|
{
|
|
var sql = "SELECT b.prs_bedrijf_key"
|
|
+ " , b.prs_bedrijf_naam"
|
|
+ " , b.prs_bedrijf_naam_upper"
|
|
+ " , b.prs_bedrijf_post_adres"
|
|
+ " , b.prs_bedrijf_post_postcode"
|
|
+ " , b.prs_bedrijf_post_plaats"
|
|
+ " , b.prs_bedrijf_post_land"
|
|
+ " , b.prs_bedrijf_bezoek_adres"
|
|
+ " , b.prs_bedrijf_bezoek_postcode"
|
|
+ " , b.prs_bedrijf_bezoek_plaats"
|
|
+ " , b.prs_bedrijf_bezoek_land"
|
|
+ " , b.prs_bedrijf_telefoon"
|
|
+ " , b.prs_bedrijf_fax"
|
|
+ " , b.prs_bedrijf_telefoon2"
|
|
+ " , b.prs_bedrijf_contact_persoon"
|
|
+ " , b.prs_bedrijf_contact_telefoon"
|
|
+ " , b.prs_bedrijf_contact_fax"
|
|
+ " , b.prs_bedrijf_opmerking"
|
|
+ " , b.prs_bedrijf_opmerking2"
|
|
+ " , b.prs_bedrijf_uurloon"
|
|
+ " , b.prs_leverancier_nr"
|
|
+ " , b.prs_overeenkomst_nr"
|
|
+ " , b.prs_overeenkomst_datum"
|
|
+ " , b.prs_bedrijf_aanmaak"
|
|
+ " , b.prs_bedrijf_verwijder"
|
|
+ " , b.prs_bedrijf_leverancier"
|
|
+ " , b.prs_bedrijf_uitvoerende"
|
|
+ " , b.prs_bedrijf_contract"
|
|
+ " , b.prs_bedrijf_intern"
|
|
+ " , b.prs_bedrijf_huurder"
|
|
+ " , b.prs_bedrijf_email"
|
|
+ " , b.prs_bedrijf_image_loc"
|
|
+ " , b.prs_bedrijf_details_loc"
|
|
+ " , b.mld_adres_key_lev"
|
|
+ " , b.mld_adres_key_fac"
|
|
+ " , b.prs_bedrijf_ingids"
|
|
+ " , b.prs_bedrijf_xmldetails_loc"
|
|
+ " , b.prs_bedrijf_xmlcatalogus_loc"
|
|
+ " , b.prs_bedrijf_bes_limiet"
|
|
+ " , b.prs_bedrijf_bes_kosten"
|
|
+ " , b.fin_btwtabel_key"
|
|
+ " , b.prs_bedrijf_bes_factor"
|
|
+ " , b.prs_bedrijf_order_confirm"
|
|
+ " , b.prs_bedrijf_bezoeker"
|
|
+ " , b.prs_bedrijf_t_uitvoertijd.tijdsduur"
|
|
+ " , b.prs_bedrijf_t_uitvoertijd.eenheid"
|
|
+ " , b.prs_relatietype_key"
|
|
+ " FROM prs_bedrijf b"
|
|
+ " WHERE b.prs_bedrijf_key = " + prs_bedrijf_key
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
var result = { key: oRs("prs_bedrijf_key").Value,
|
|
naam: oRs("prs_bedrijf_naam").Value,
|
|
naam_upper: oRs("prs_bedrijf_naam_upper").Value,
|
|
post_adres: oRs("prs_bedrijf_post_adres").Value,
|
|
post_postcode: oRs("prs_bedrijf_post_postcode").Value,
|
|
post_plaats: oRs("prs_bedrijf_post_plaats").Value,
|
|
post_land: oRs("prs_bedrijf_post_land").Value,
|
|
bezoek_adres: oRs("prs_bedrijf_bezoek_adres").Value,
|
|
bezoek_postcode: oRs("prs_bedrijf_bezoek_postcode").Value,
|
|
bezoek_plaats: oRs("prs_bedrijf_bezoek_plaats").Value,
|
|
bezoek_land: oRs("prs_bedrijf_bezoek_land").Value,
|
|
telefoon: oRs("prs_bedrijf_telefoon").Value,
|
|
fax: oRs("prs_bedrijf_fax").Value,
|
|
telefoon2: oRs("prs_bedrijf_telefoon2").Value,
|
|
contact_persoon: oRs("prs_bedrijf_contact_persoon").Value,
|
|
contact_telefoon: oRs("prs_bedrijf_contact_telefoon").Value,
|
|
contact_fax: oRs("prs_bedrijf_contact_fax").Value,
|
|
opmerking: oRs("prs_bedrijf_opmerking").Value,
|
|
opmerking2: oRs("prs_bedrijf_opmerking2").Value,
|
|
uurloon: oRs("prs_bedrijf_uurloon").Value,
|
|
prs_leverancier_nr: oRs("prs_leverancier_nr").Value,
|
|
prs_overeenkomst_nr: oRs("prs_overeenkomst_nr").Value,
|
|
prs_overeenkomst_datum: oRs("prs_overeenkomst_datum").Value!=null?new Date(oRs("prs_overeenkomst_datum").Value):null,
|
|
aanmaak: oRs("prs_bedrijf_aanmaak").Value!=null?new Date(oRs("prs_bedrijf_aanmaak").Value):null,
|
|
verwijderd: oRs("prs_bedrijf_verwijder").Value != null,
|
|
leverancier: oRs("prs_bedrijf_leverancier").Value,
|
|
uitvoerende: oRs("prs_bedrijf_uitvoerende").Value,
|
|
contract: oRs("prs_bedrijf_contract").Value,
|
|
intern: oRs("prs_bedrijf_intern").Value,
|
|
huurder: oRs("prs_bedrijf_huurder").Value,
|
|
email: oRs("prs_bedrijf_email").Value,
|
|
image_loc: oRs("prs_bedrijf_image_loc").Value,
|
|
details_loc: oRs("prs_bedrijf_details_loc").Value,
|
|
mld_adres_key_lev: oRs("mld_adres_key_lev").Value,
|
|
mld_adres_key_fac: oRs("mld_adres_key_fac").Value,
|
|
ingids: oRs("prs_bedrijf_ingids").Value,
|
|
xmldetails_loc: oRs("prs_bedrijf_xmldetails_loc").Value,
|
|
xmlcatalogus_loc: oRs("prs_bedrijf_xmlcatalogus_loc").Value,
|
|
bes_limiet: oRs("prs_bedrijf_bes_limiet").Value,
|
|
bes_kosten: oRs("prs_bedrijf_bes_kosten").Value,
|
|
fin_btwtabel_key: oRs("fin_btwtabel_key").Value,
|
|
bes_factor: oRs("prs_bedrijf_bes_factor").Value,
|
|
order_confirm: oRs("prs_bedrijf_order_confirm").Value,
|
|
bezoeker: oRs("prs_bedrijf_bezoeker").Value,
|
|
uitvoertijd: oRs("prs_bedrijf_t_uitvoertijd.tijdsduur").Value? oRs("prs_bedrijf_t_uitvoertijd.tijdsduur").Value : "",
|
|
uitvoertijd_eenheid: oRs("prs_bedrijf_t_uitvoertijd.eenheid").Value || 'D',
|
|
prs_relatietype_key: oRs("prs_relatietype_key").Value
|
|
};
|
|
oRs.Close();
|
|
|
|
return result;
|
|
},
|
|
|
|
canWriteAfdeling: function(pafdeling_key, autfunction)
|
|
{
|
|
var authparams = user.checkAutorisation(autfunction);
|
|
|
|
if (authparams.PRSwritelevel <= -1)
|
|
{
|
|
return true;
|
|
}
|
|
else if (authparams.PRSwritelevel == 0)
|
|
{
|
|
var sql = "SELECT a.prs_afdeling_key"
|
|
+ " FROM prs_v_afdeling a "
|
|
+ " WHERE a.prs_bedrijf_key = " + user.afdeling().prs_bedrijf_key()
|
|
+ " AND prs_afdeling_key = " + pafdeling_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
var canWriteAfd = (!oRs.eof);
|
|
oRs.Close();
|
|
return canWriteAfd;
|
|
}
|
|
else
|
|
{
|
|
var sql = "SELECT prs_afdeling_key FROM prs_v_afdeling_familie a"
|
|
+ " WHERE a.prs_afdeling_elder_key IN"
|
|
+ " (SELECT aa.prs_afdeling_elder_key"
|
|
+ " FROM prs_v_afdeling_familie aa"
|
|
+ " WHERE aa.prs_afdeling_key = " + user.prs_afdeling_key()
|
|
+ " AND aa.niveau = " + authparams.PRSwritelevel + ")";
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
var canWriteAfd = (!oRs.eof);
|
|
oRs.Close();
|
|
return canWriteAfd;
|
|
}
|
|
},
|
|
// oude shared/prsautlevel.inc
|
|
checkAutorisation: function(prs_key)
|
|
{
|
|
// FSN#18265: user.func_enabled maakt geen uitzondering voor prs_key==-1
|
|
// maar wel voor prs_key==null. Daarom de vertaling
|
|
// (intrigeren: alg_key==-1 wordt er wel apart behandeld)
|
|
var xfunc = user.func_enabled("PRS", null, null, prs_key>0?prs_key:null);
|
|
if (xfunc.canWrite("WEB_PRSMAN"))
|
|
{
|
|
var result = xfunc.authparams("WEB_PRSMAN"); // Man telt zwaarder
|
|
}
|
|
else
|
|
{
|
|
if (xfunc.canWrite("WEB_PRSUSE"))
|
|
var result = xfunc.authparams("WEB_PRSUSE");
|
|
else
|
|
var result = xfunc.authparams("WEB_PROFIL") || {};
|
|
}
|
|
|
|
result.readman = xfunc.canRead("WEB_PRSMAN");
|
|
result.writeman = xfunc.canWrite("WEB_PRSMAN");
|
|
result.readuse = xfunc.canRead("WEB_PRSUSE");
|
|
result.writeuse = xfunc.canWrite("WEB_PRSUSE");
|
|
result.readself = prs_key==user_key && xfunc.canRead("WEB_PROFIL");
|
|
result.writeself= prs_key==user_key && xfunc.canWrite("WEB_PROFIL");
|
|
|
|
result.writesys = user.checkAutorisation("WEB_PRSSYS", true)!=null;
|
|
if (result.writesys)
|
|
result.writetab = user.checkAutorisation("WEB_FACTAB", true)!=null;
|
|
|
|
return result;
|
|
},
|
|
|
|
set_flag: function(prs_key, flagbit)
|
|
{
|
|
var sql = "UPDATE prs_perslid"
|
|
+ " SET prs_perslid_flags = prs_perslid_flags + " + flagbit // Kan omdat we verderop afdwingen dat flag 0 was
|
|
+ " WHERE prs_perslid_key = " + prs_key
|
|
+ " AND BITAND(prs_perslid_flags, " + flagbit + ") = 0";
|
|
Oracle.Execute(sql);
|
|
},
|
|
clear_flag: function(prs_key, flagbit)
|
|
{
|
|
var sql = "UPDATE prs_perslid"
|
|
+ " SET prs_perslid_flags = BITAND(prs_perslid_flags, 255-" + flagbit + ")"
|
|
+ " WHERE prs_perslid_key = " + prs_key
|
|
+ " AND BITAND(prs_perslid_flags, " + flagbit + ") = " + flagbit;
|
|
Oracle.Execute(sql);
|
|
}
|
|
}
|
|
|
|
%>
|