PCHD#31238: Vervanger van budgethouder kan geen factuur goedkeuren.

svn path=/Website/trunk/; revision=24468
This commit is contained in:
Maykel Geerdink
2015-03-16 14:22:29 +00:00
parent 65aa534607
commit fd284e3546
6 changed files with 28 additions and 61 deletions

View File

@@ -35,15 +35,18 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
{
var fin_status = -1;
var kpverantwoordelijke = -1;
var goedkeurder = -1;
if (pfin_key > 0)
{
var fsql = "SELECT f.fin_factuur_statuses_key,"
+ " prs.getkpverantwoordelijke(fin.getfactuurkostenplaats(f.fin_factuur_key), "+S("prs_approvemethod")+", -1) kpverantwoordelijke"
var fsql = "SELECT f.fin_factuur_statuses_key"
+ " , prs.getkpverantwoordelijke(fin.getfactuurkostenplaats(f.fin_factuur_key), "+S("prs_approvemethod")+", -1) kpverantwoordelijke"
+ " , prs_perslid_key_goedkeur"
+ " FROM fin_factuur f"
+ " WHERE fin_factuur_key = " + pfin_key
var foRs = Oracle.Execute(fsql);
fin_status = foRs("fin_factuur_statuses_key").Value;
kpverantwoordelijke = foRs("kpverantwoordelijke").Value;
goedkeurder = foRs("prs_perslid_key_goedkeur").Value;
foRs.Close();
}
@@ -60,7 +63,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
}
var fresult = user.func_enabled2("FIN", { alg_key: alg_key, loc_key: loc_key, prs_key: user_key,
isOptional: (kpverantwoordelijke == user_key || user.isCollega(kpverantwoordelijke)) }); // optional als ik hier budgethouder
isOptional: user.isCollega(kpverantwoordelijke) }); // optional als ik hier budgethouder
fresult.fin_key = pfin_key;
if (pfin_key > 0)
@@ -80,7 +83,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
fresult.canReadAny = (fresult.canRead("WEB_FINUSE") && isContactpersoon) ||
fresult.canRead("WEB_FINFOF") ||
fresult.canRead("WEB_FINBOF") ||
(kpverantwoordelijke == user_key || user.isCollega(kpverantwoordelijke));
user.isCollega(kpverantwoordelijke);
fresult.canFEread = fresult.canRead("WEB_FINUSE") && isContactpersoon;
fresult.canFOread = fresult.canRead("WEB_FINFOF");
fresult.canBOread = fresult.canRead("WEB_FINBOF");
@@ -117,30 +120,30 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
break;
case 1: // Afgewezen
fresult.canUnReject = (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || (kpverantwoordelijke == user_key || user.isCollega(kpverantwoordelijke))) && (kpverantwoordelijke > 0);
fresult.canUnReject = (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || user.isCollega(kpverantwoordelijke)) && (kpverantwoordelijke > 0);
break;
case -1: // Nieuwe factuur
case 2: // Ingevoerd
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) ||
fresult.canWrite("WEB_FINFOF") ||
(fresult.canWrite("WEB_FINBOF") && S("fin_bof_mag_editen") == 1);
fresult.canAccept = (fresult.canWrite("WEB_FINBOF") || (kpverantwoordelijke == user_key || user.isCollega(kpverantwoordelijke))) && (kpverantwoordelijke > 0);
fresult.canAccept = (fresult.canWrite("WEB_FINBOF") || user.isCollega(kpverantwoordelijke)) && (kpverantwoordelijke > 0);
fresult.canDelete = fresult.canWrite("WEB_FINFOF");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
break;
case 5: // Financieel goedgekeurd
fresult.canUnapprove = fresult.canWrite("WEB_FINGOE") || (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || (kpverantwoordelijke == user_key || user.isCollega(kpverantwoordelijke))) && (kpverantwoordelijke > 0);
fresult.canUnapprove = fresult.canWrite("WEB_FINGOE") || (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || user.isCollega(kpverantwoordelijke)) && (kpverantwoordelijke > 0);
// Maar na wijzigen moet er opnieuw gefiatteed worden door BO.
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canGoedkeur = fresult.canWrite("WEB_FINGOE") && S("fin_enable_goedkeuren") == 1;
fresult.canGoedkeur = fresult.canWrite("WEB_FINGOE") && user.isCollega(goedkeurder) && S("fin_enable_goedkeuren") == 1;
break;
case 6: // Akkoord
fresult.canUnapprove = (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || (kpverantwoordelijke == user_key || user.isCollega(kpverantwoordelijke))) && (kpverantwoordelijke > 0);
fresult.canUnapprove = (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || user.isCollega(kpverantwoordelijke)) && (kpverantwoordelijke > 0);
// Maar na wijzigen moet er opnieuw gefiatteed worden door BO.
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");

View File

@@ -50,17 +50,13 @@ var sql = "SELECT fin_factuur_key"
+ " FROM fin_factuur f"
+ " WHERE fin_factuur_key IN (" + fin_key_arr.join(",") + ")"
+ " AND fin_factuur_verwijder IS NULL"
+ " AND prs.getkpverantwoordelijke(fin.getfactuurkostenplaats(f.fin_factuur_key), " + S("prs_approvemethod") + ", -1) IN (" + prsKeys + ")" // Kpverantwoordelijke IN (user_key, vervangers).
+ " AND fin_factuur_statuses_key IN (2, 5)"; // Status "Ingevoerd(2)" of "Ter goedkeuring(5)".
oRs = Oracle.Execute(sql);
var this_fin;
while (!oRs.eof)
{
this_fin = fin.func_enabled_factuur(oRs("fin_factuur_key").Value);
var finbof = this_fin.canBOwrite;
var kpverantwoordelijke = oRs("kpverantwoordelijke").Value;
if (finbof || (kpverantwoordelijke == user_key || user.isCollega(kpverantwoordelijke)))
var this_fin = fin.func_enabled_factuur(oRs("fin_factuur_key").Value);
if (this_fin.canBOwrite || user.isCollega(oRs("kpverantwoordelijke").Value))
{
ingesloten.push ({ factuur_key: oRs("fin_factuur_key").Value,
prs_key_goedkeur: oRs("prs_perslid_key_goedkeur").Value

View File

@@ -48,17 +48,13 @@ var sql = "SELECT fin_factuur_key"
+ " FROM fin_factuur f"
+ " WHERE fin_factuur_key IN (" + fin_key_arr.join(",") + ")"
+ " AND fin_factuur_verwijder IS NULL"
+ " AND prs_perslid_key_goedkeur IN (" + prsKeys + ")" // Goedkeurder IN (user_key, vervangers).
+ " AND fin_factuur_statuses_key = 5"; // Status Financieel goedgekeurd(5).
oRs = Oracle.Execute(sql);
var this_fin;
while (!oRs.eof)
{
this_fin = fin.func_enabled_factuur(oRs("fin_factuur_key").Value);
var fingoe = this_fin.canGOEwrite;
var goedkeurder = oRs("prs_perslid_key_goedkeur").Value;
if (fingoe && (goedkeurder == user_key || user.isCollega(goedkeurder)))
var this_fin = fin.func_enabled_factuur(oRs("fin_factuur_key").Value);
if (this_fin.canGOEwrite && user.isCollega(oRs("prs_perslid_key_goedkeur").Value))
{
ingesloten.push (oRs("fin_factuur_key").Value);
tobevalidated++;

View File

@@ -144,21 +144,7 @@ function fin_list (params)
+ " FROM prs_perslid p"
+ " WHERE prs_perslid_key = budgethouder) budgethoudernaam"
+ " , c.prs_perslid_key_eig"
+ " , CASE" // Contracteigenaar IN (user_key, vervangers).
+ " WHEN prs_perslid_key_eig IN (" + prsKeys + ")"
+ " THEN 1"
+ " ELSE 0"
+ " END inCList"
+ " , CASE" // Budgethouder IN (user_key, vervangers).
+ " WHEN budgethouder IN (" + prsKeys + ")"
+ " THEN 1"
+ " ELSE 0"
+ " END inBList"
+ " , CASE" // Goedkeurder IN (user_key, vervangers).
+ " WHEN prs_perslid_key_goedkeur IN (" + prsKeys + ")"
+ " THEN 1"
+ " ELSE 0"
+ " END inGList"
+ " , prs_perslid_key_goedkeur"
+ " , (SELECT max(fin_factuur_note_aanmaak)"
+ " FROM fin_factuur_note fn"
+ " WHERE fn.fin_factuur_key = f.fin_factuur_key) notitie";
@@ -593,19 +579,16 @@ function fin_list (params)
var besmldfiat_write = false;
var cntfiat_write = false;
var fiat_write = false;
var inBList = (oRs("inBList").Value == 1); // In de lijst van budgethouder en vervangers. Budgethouder IN (user_key, vervangers).
var inGList = (oRs("inGList").Value == 1); // In de lijst van goedkeurder en vervangers. Goedkeurder IN (user_key, vervangers).
var inCList = (oRs("inCList").Value == 1); // In de lijst van contracteigenaar en vervangers. Contracteigenaar IN (user_key, vervangers).
if (oRs("bes_bestelopdr_key").Value)
besmldfiat_write = (oRs("bes_fiat_write").Value == 1) // Ik heb write rechten op de locatie van het afleveradres
else if (oRs("mld_opdr_key").Value)
besmldfiat_write = (oRs("mld_fiat_write").Value == 1) // Ik heb write rechten op de plaats van de bijbehorende melding
else if (oRs("cnt_contract_key").Value) // Contract
cntfiat_write = inCList; // Contracteigenaar IN (user_key, vervangers).
cntfiat_write = user.isCollega(oRs("prs_perslid_key_eig").Value); // Contracteigenaar IN (user_key, vervangers).
else // opd_cnt_bes_type is nog niet bekend/gekozen, dan moet ik volledig rechten hebben
fiat_write = (authparamsFINBOF && authparamsFINBOF.ALGwritelevel == -1);
var canapprove = (inBList || cntfiat_write || besmldfiat_write || fiat_write) && !deleted;
var canapprove = (user.isCollega(oRs("budgethouder").Value) || cntfiat_write || besmldfiat_write || fiat_write) && !deleted; // Budgethouder IN (user_key, vervangers).
var eDelete = !embedded &&
(authparamsFINFOF &&
@@ -636,7 +619,7 @@ function fin_list (params)
S("fin_enable_goedkeuren") == 1 &&
authparamsFINGOE &&
authparamsFINGOE.PRSwritelevel < 9 &&
inGList && // Goedkeurder IN (user_key, vervangers).
user.isCollega(oRs("prs_perslid_key_goedkeur").Value) && // Goedkeurder IN (user_key, vervangers).
oRs("fin_factuur_statuses_key").Value == 5;
var data = {eEdit: eEdit, eOrder: eOrder, eApprove: eApprove, eUnapprove: eUnapprove, eReject: eReject, eUnreject: eUnreject, eDelete: eDelete, eGoedkeur: eGoedkeur};

View File

@@ -35,28 +35,21 @@ var prsKeys = user.collegakeylist(); // "user_key, vervangers"
var ingesloten = [];
// Bepaal de facturen in de selectie die
// ook echt gefiatteerd kunnen of mogen worden.
var sql = "SELECT fin_factuur_key,"
+ " prs.getkpverantwoordelijke(fin.getfactuurkostenplaats(f.fin_factuur_key), " + S("prs_approvemethod") + ", -1) kpverantwoordelijke"
var sql = "SELECT fin_factuur_key"
+ " , prs.getkpverantwoordelijke(fin.getfactuurkostenplaats(f.fin_factuur_key), " + S("prs_approvemethod") + ", -1) kpverantwoordelijke"
+ " , prs_perslid_key_goedkeur"
+ " , fin_factuur_statuses_key"
+ " FROM fin_factuur f"
+ " WHERE fin_factuur_key IN (" + fin_key_arr.join(",") + ")"
+ " AND fin_factuur_verwijder IS NULL"
+ " AND prs.getkpverantwoordelijke(fin.getfactuurkostenplaats(f.fin_factuur_key), " + S("prs_approvemethod") + ", -1) IN (" + prsKeys + ")" // Kpverantwoordelijke IN (user_key, vervangers).
+ " AND fin_factuur_statuses_key IN (5, 6)"; // Status Financieel goedgekeurd(5) of Akkoord(6).
oRs = Oracle.Execute(sql);
var this_fin;
while (!oRs.eof)
{
this_fin = fin.func_enabled_factuur(oRs("fin_factuur_key").Value);
var finbof = this_fin.canBOwrite;
var finfof = this_fin.canFOwrite;
var fingoe = this_fin.canGOEwrite;
var kpverantwoordelijke = oRs("kpverantwoordelijke").Value;
var goedkeurder = oRs("prs_perslid_key_goedkeur").Value;
if ((finfof || finbof || (kpverantwoordelijke == user_key || user.isCollega(kpverantwoordelijke))) ||
(fingoe && (goedkeurder == user_key || user.isCollega(goedkeurder)) && S("fin_enable_goedkeuren") == 1))
var this_fin = fin.func_enabled_factuur(oRs("fin_factuur_key").Value);
if ((this_fin.canFOwrite || this_fin.canBOwrite || user.isCollega(oRs("kpverantwoordelijke").Value)) ||
(this_fin.canGOEwrite && user.isCollega(oRs("prs_perslid_key_goedkeur").Value) && S("fin_enable_goedkeuren") == 1))
{
ingesloten.push ({ factuur_key: oRs("fin_factuur_key").Value,
fin_status: oRs("fin_factuur_statuses_key").Value

View File

@@ -35,12 +35,11 @@ var prsKeys = user.collegakeylist(); // "user_key, vervangers"
var ingesloten = [];
// Bepaal de facturen in de selectie die
// ook echt gefiatteerd kunnen of mogen worden.
var sql = "SELECT fin_factuur_key,"
+ " prs.getkpverantwoordelijke(fin.getfactuurkostenplaats(f.fin_factuur_key), " + S("prs_approvemethod") + ", -1) kpverantwoordelijke"
var sql = "SELECT fin_factuur_key"
+ " , prs.getkpverantwoordelijke(fin.getfactuurkostenplaats(f.fin_factuur_key), " + S("prs_approvemethod") + ", -1) kpverantwoordelijke"
+ " FROM fin_factuur f"
+ " WHERE fin_factuur_key IN (" + fin_key_arr.join(",") + ")"
+ " AND fin_factuur_verwijder IS NULL"
+ " AND prs.getkpverantwoordelijke(fin.getfactuurkostenplaats(f.fin_factuur_key), " + S("prs_approvemethod") + ", -1) IN (" + prsKeys + ")" // Kpverantwoordelijke IN (user_key, vervangers).
+ " AND fin_factuur_statuses_key = 1";
oRs = Oracle.Execute(sql);
@@ -48,10 +47,7 @@ var this_fin;
while (!oRs.eof)
{
this_fin = fin.func_enabled_factuur(oRs("fin_factuur_key").value);
var finbof = this_fin.canBOwrite;
var finfof = this_fin.canFOwrite;
var kpverantwoordelijke = oRs("kpverantwoordelijke").value;
if (finfof || finbof || (kpverantwoordelijke == user_key || user.isCollega(kpverantwoordelijke)))
if (this_fin.canFOwrite || this_fin.canBOwrite || user.isCollega(oRs("kpverantwoordelijke").Value))
{
ingesloten.push (oRs("fin_factuur_key").value);
tobeunrejected++;