MDUX#38433: Aanpassing procedure vrije bestellingen.
svn path=/Website/trunk/; revision=32570
This commit is contained in:
@@ -122,6 +122,7 @@
|
||||
|
||||
var bes_info = bes.bestelling_info(bes_bestelling_key); // Globale variabele met alle bes_bestelling informatie
|
||||
var this_bes = bes.func_enabled_bestelling(bes_info); // Wat heb ik zoal aan rechten op deze specifieke reservering
|
||||
var bes_disc_info = bes.disc_info(bes_info.dis_key); // alle discipline informatie
|
||||
if(!this_bes.canChange) {
|
||||
resultcode = 9;
|
||||
resulttekst = "Niet geautoriseerd voor bestelling "+besid;
|
||||
@@ -129,8 +130,10 @@
|
||||
else {
|
||||
if (nwStatus != null) { // Bij update optioneel
|
||||
// statusdiagram afdwingen:
|
||||
// * BESFIT alleen vanuit status 2
|
||||
// * BESREJ alleen vanuit status 2 en 3
|
||||
// * BESFIT alleen vanuit status 2 als bes_disc_info.disc_params_fiatflow == 0.
|
||||
// vanuit sattus 4 als bes_disc_info.disc_params_fiatflow == 1.
|
||||
// * BESREJ alleen vanuit status 2 en 3 als bes_disc_info.disc_params_fiatflow == 0.
|
||||
// vanuit status 2 en 4 als bes_disc_info.disc_params_fiatflow == 1.
|
||||
sql = "SELECT bes_bestelling_status"
|
||||
+ " FROM bes_bestelling"
|
||||
+ " WHERE bes_bestelling_key="+bestelling_key;
|
||||
@@ -139,9 +142,12 @@
|
||||
curStatus = oRs("bes_bestelling_status").value;
|
||||
|
||||
// Feitelijke UPDATE status.
|
||||
// BESFIT: alleen vanuit status 2
|
||||
// BESFIT: alleen vanuit status 2 als bes_disc_info.disc_params_fiatflow == 0.
|
||||
// vanuit sattus 4 als bes_disc_info.disc_params_fiatflow == 1.
|
||||
if (nwStatus == "BESFIT") {
|
||||
if (curStatus == 2) {
|
||||
if ((bes_disc_info.disc_params_fiatflow == 0 && curStatus == 2) ||
|
||||
(bes_disc_info.disc_params_fiatflow == 1 && curStatus == 4))
|
||||
{
|
||||
bes.setbestellingstatus(bes_bestelling_key, 3); // Gefiatteerd
|
||||
sql = "SELECT bes_bestelling_status"
|
||||
+ " FROM bes_bestelling"
|
||||
@@ -172,9 +178,12 @@
|
||||
resultcode = 305;
|
||||
}
|
||||
}
|
||||
// BESREJ: alleen vanuit status 2 en 3
|
||||
// BESREJ: alleen vanuit status 2 en 3 als bes_disc_info.disc_params_fiatflow == 0.
|
||||
// vanuit status 2 en 4 als bes_disc_info.disc_params_fiatflow == 1.
|
||||
else if (nwStatus == "BESREJ") {
|
||||
if (curStatus == 2 || curStatus == 3) {
|
||||
if ((bes_disc_info.disc_params_fiatflow == 0 && (curStatus == 2 || curStatus == 3)) ||
|
||||
(bes_disc_info.disc_params_fiatflow == 1 && (curStatus == 2 || curStatus == 4)))
|
||||
{
|
||||
bes.setbestellingstatus(bes_bestelling_key, 1); // Afgewezen
|
||||
sql = "SELECT bes_bestelling_status"
|
||||
+ " FROM bes_bestelling"
|
||||
|
||||
@@ -34,6 +34,13 @@ model_bes_disc_params =
|
||||
"typ": "key",
|
||||
"hidden_fld": true
|
||||
},
|
||||
"fiatflow": {
|
||||
"dbs": "bes_disc_params_fiatflow",
|
||||
"label": L("bes_discipline_fiatflow"),
|
||||
"typ": "number",
|
||||
"LOV": L("bes_discipline_fiatflowLOV"),
|
||||
"emptyoption": null
|
||||
},
|
||||
"bestellimiet1": {
|
||||
"dbs": "bes_disc_params_bestellimiet",
|
||||
"label": L("bes_discipline_bestellimiet1"),
|
||||
|
||||
231
APPL/BES/bes.inc
231
APPL/BES/bes.inc
@@ -102,6 +102,7 @@
|
||||
disc_info: function _disc_info(disc_key, autfunction)
|
||||
{
|
||||
var sql = "SELECT " + lcl.xsqla('ins_discipline_omschrijving', 'bd.ins_discipline_key')
|
||||
+ " , bes_disc_params_fiatflow"
|
||||
+ " , bes_disc_params_retour"
|
||||
+ " , bes_disc_params_retour_url"
|
||||
+ " , bes_disc_params_levopm_url"
|
||||
@@ -140,6 +141,7 @@
|
||||
var result = { disc_key : disc_key,
|
||||
discipline_omschrijving : oRs("ins_discipline_omschrijving").Value,
|
||||
discipline_kpnverplicht : oRs("ins_discipline_kpnverplicht").Value == '1',
|
||||
disc_params_fiatflow : oRs("bes_disc_params_fiatflow").Value,
|
||||
disc_params_retour : oRs("bes_disc_params_retour").Value == '1',
|
||||
disc_params_retour_url : oRs("bes_disc_params_retour_url").Value,
|
||||
disc_params_levopm_url : oRs("bes_disc_params_levopm_url").Value,
|
||||
@@ -172,7 +174,7 @@
|
||||
return result;
|
||||
},
|
||||
|
||||
generateBesInfoBlock: function (bes_bestelling, show_leverancier, mode) //edit_leverancier)
|
||||
generateBesInfoBlock: function (bes_bestelling, bes_disc_info, show_leverancier, mode) //edit_leverancier)
|
||||
{
|
||||
if (bes_bestelling.bes_key == -1)
|
||||
{
|
||||
@@ -218,7 +220,9 @@
|
||||
ROTEXTAREATR("fldremark", bes_bestelling.rfoStatus == 1? L("lcl_bes_reject_remark") : L("lcl_bes_remark"), bes_bestelling.rfoOpmerking, {id: "opmerk", html: "rows='8'", suppressEmpty: true});
|
||||
|
||||
var fiat_key = bes_bestelling.bes_bestelling_fiat_user;
|
||||
if (bes_bestelling.rfoStatus == 2) // (nog) ter fiattering
|
||||
var hasToFiat = ((bes_disc_info.disc_params_fiatflow == 0 && bes_bestelling.rfoStatus == 2) ||
|
||||
(bes_disc_info.disc_params_fiatflow == 1 && bes_bestelling.rfoStatus == 4));
|
||||
if (hasToFiat) // (nog) ter fiattering
|
||||
{
|
||||
// Binnenkort eens uitwerken: deze zijn gelijk (onderscheid zou al eerder gemaakt moeten zijn
|
||||
// door de fiat_key uit te sluiten van nieuwe fiatteurs). Komt met 5.1.0 nader
|
||||
@@ -230,7 +234,7 @@
|
||||
"Fiatteur",
|
||||
"sgFiatteur",
|
||||
{ perslidKey: fiat_key,
|
||||
label: (bes_bestelling.rfoStatus == 2?L("lcl_bes_toapprove"):L("lcl_bes_approver")),
|
||||
label: (hasToFiat? L("lcl_bes_toapprove"):L("lcl_bes_approver")),
|
||||
readonly: true,
|
||||
moreinfo: !frontend
|
||||
});
|
||||
@@ -754,6 +758,7 @@
|
||||
var bes_disc_info = bes.disc_info(bes_bestelling.dis_key); // alle discipline informatie
|
||||
var _canRetour = (bes_disc_info.disc_params_retour == 1 && bes_bestelling.rfoRetourVan == null) &&
|
||||
(bresult.canWrite("WEB_BESUSE") || bresult.canWrite("WEB_BESFOF"));
|
||||
var fiatflow_std = bes_disc_info.disc_params_fiatflow == 0;
|
||||
bresult.canRetourURL = false; // (Deels) retour via site leverancier
|
||||
bresult.canRetourBES = false; // (Deels) retour via negatieve levering
|
||||
|
||||
@@ -769,6 +774,34 @@
|
||||
// 'laat' wordt er een annuleringsopdrachtaanvraag naar de leverancier gestuurd
|
||||
// Verder: FO mag eigenlijk heel lang wijzigen als bes_bestelling.wijzig_tot maar is gezet:
|
||||
// het is aan de leverancier om al dan niet te weigeren
|
||||
var t_cost = bes_bestelling.totaal - bes_bestelling.rfoBesKosten + bes_bestelling.rfoLevKosten;
|
||||
var bes_approved = bes_bestelling.approved;
|
||||
var bestellimiet = bes_disc_info.disc_params_bestellimiet;
|
||||
var bestellimiet2 = bes_disc_info.disc_params_bestellimiet2;
|
||||
var bestellimiet3 = bes_disc_info.disc_params_bestellimiet3;
|
||||
var bestellimiet4 = bes_disc_info.disc_params_bestellimiet4;
|
||||
var bestellimiet5 = bes_disc_info.disc_params_bestellimiet5;
|
||||
var canAccept = bresult.canWrite("WEB_BESBOF") && // Heb ik de rechten om goed te keuren op dit niveau 1?
|
||||
((S("bes_approval_all") == 0 && t_cost >= bestellimiet) || // Zijn de kosten hoger als de limiet
|
||||
(S("bes_approval_all") == 1 && t_cost <= bestellimiet2)) && // Zijn de kosten onder mijn limiet om volledig goed te keuren
|
||||
bes_approved <= bestellimiet; // Welke goedkeur? 1, 2, 3, 4 of 5?
|
||||
var canAccept2 = bresult.canWrite("WEB_BESGO2") &&
|
||||
// Setting bes_approval_all is
|
||||
// 0: Het approved bedrag is eigen bestellimiet of vorige goedkeur niveau rechten heb ik al (dan direct niveau hoger)
|
||||
// 1: Het approved bedrag is kleiner of gelijk aan eigen bestellimiet
|
||||
((S("bes_approval_all") == 0 && t_cost >= bestellimiet2 && (bes_approved == bestellimiet2 || bresult.canAccept)) ||
|
||||
(S("bes_approval_all") == 1 && t_cost <= bestellimiet3 && bes_approved <= bestellimiet2));
|
||||
var canAccept3 = bresult.canWrite("WEB_BESGO3") &&
|
||||
((S("bes_approval_all") == 0 && t_cost >= bestellimiet3 && (bes_approved == bestellimiet3 || bresult.canAccept2)) ||
|
||||
(S("bes_approval_all") == 1 && t_cost <= bestellimiet4 && bes_approved <= bestellimiet3));
|
||||
var canAccept4 = bresult.canWrite("WEB_BESGO4") &&
|
||||
((S("bes_approval_all") == 0 && t_cost >= bestellimiet4 && (bes_approved == bestellimiet4 || bresult.canAccept3)) ||
|
||||
(S("bes_approval_all") == 1 && t_cost <= bestellimiet5 && bes_approved <= bestellimiet4));
|
||||
var canAccept5 = bresult.canWrite("WEB_BESGO5") &&
|
||||
((S("bes_approval_all") == 0 && t_cost >= bestellimiet5 && (bes_approved >= bestellimiet5 || bresult.canAccept4)) ||
|
||||
(S("bes_approval_all") == 1 && t_cost > bestellimiet5 && bes_approved <= bestellimiet5)) &&
|
||||
t_cost > bes_approved;
|
||||
var canApprove = (bes_bestelling.bes_bestelling_fiat_user != user_key) && isVerantwoordelijke;
|
||||
switch (bes_bestelling.rfoStatus) // (*aanvraag* status)
|
||||
{
|
||||
case 1: // Afgewezen/verworpen. Je kunt hem effectie wijzigen en weer opnieuw aanbieden
|
||||
@@ -778,7 +811,21 @@
|
||||
bresult.canItemsChange = bresult.canMainChange && !isPunchout;
|
||||
break;
|
||||
case 2: // Nieuw, ter fiattering
|
||||
bresult.canApprove = (bes_bestelling.bes_bestelling_fiat_user != user_key) && isVerantwoordelijke;
|
||||
if (fiatflow_std)
|
||||
bresult.canApprove = canApprove;
|
||||
else
|
||||
{
|
||||
bresult.canAccept = canAccept;
|
||||
bresult.canAccept2 = canAccept2;
|
||||
bresult.canAccept3 = canAccept3;
|
||||
bresult.canAccept4 = canAccept4;
|
||||
bresult.canAccept5 = canAccept5;
|
||||
bresult.canReject = bresult.canAccept ||
|
||||
bresult.canAccept2 ||
|
||||
bresult.canAccept3 ||
|
||||
bresult.canAccept4 ||
|
||||
bresult.canAccept5;
|
||||
}
|
||||
bresult.canDelete = bresult.canWrite("WEB_BESBOF") ||
|
||||
(bresult.canWrite("WEB_BESFOF") && bes_bestelling.annuleer_tot) ||
|
||||
(eigenBestelling && voor_annuleer);
|
||||
@@ -789,41 +836,24 @@
|
||||
bresult.canItemsChange = bresult.canMainChange && !isPunchout;
|
||||
break;
|
||||
case 3: // Gefiatteerd
|
||||
var t_cost = bes_bestelling.totaal - bes_bestelling.rfoBesKosten + bes_bestelling.rfoLevKosten;
|
||||
var bes_approved = bes_bestelling.approved;
|
||||
var bestellimiet = bes_disc_info.disc_params_bestellimiet;
|
||||
var bestellimiet2 = bes_disc_info.disc_params_bestellimiet2;
|
||||
var bestellimiet3 = bes_disc_info.disc_params_bestellimiet3;
|
||||
var bestellimiet4 = bes_disc_info.disc_params_bestellimiet4;
|
||||
var bestellimiet5 = bes_disc_info.disc_params_bestellimiet5;
|
||||
bresult.canAccept = bresult.canWrite("WEB_BESBOF") && // Heb ik de rechten om goed te keuren op dit niveau 1?
|
||||
((S("bes_approval_all") == 0 && t_cost >= bestellimiet) || // Zijn de kosten hoger als de limiet
|
||||
(S("bes_approval_all") == 1 && t_cost <= bestellimiet2)) && // Zijn de kosten onder mijn limiet om volledig goed te keuren
|
||||
bes_approved <= bestellimiet; // Welke goedkeur? 1, 2, 3, 4 of 5?
|
||||
bresult.canAccept2 = bresult.canWrite("WEB_BESGO2") &&
|
||||
// Setting bes_approval_all is
|
||||
// 0: Het approved bedrag is eigen bestellimiet of vorige goedkeur niveau rechten heb ik al (dan direct niveau hoger)
|
||||
// 1: Het approved bedrag is kleiner of gelijk aan eigen bestellimiet
|
||||
((S("bes_approval_all") == 0 && t_cost >= bestellimiet2 && (bes_approved == bestellimiet2 || bresult.canAccept)) ||
|
||||
(S("bes_approval_all") == 1 && t_cost <= bestellimiet3 && bes_approved <= bestellimiet2));
|
||||
bresult.canAccept3 = bresult.canWrite("WEB_BESGO3") &&
|
||||
((S("bes_approval_all") == 0 && t_cost >= bestellimiet3 && (bes_approved == bestellimiet3 || bresult.canAccept2)) ||
|
||||
(S("bes_approval_all") == 1 && t_cost <= bestellimiet4 && bes_approved <= bestellimiet3));
|
||||
bresult.canAccept4 = bresult.canWrite("WEB_BESGO4") &&
|
||||
((S("bes_approval_all") == 0 && t_cost >= bestellimiet4 && (bes_approved == bestellimiet4 || bresult.canAccept3)) ||
|
||||
(S("bes_approval_all") == 1 && t_cost <= bestellimiet5 && bes_approved <= bestellimiet4));
|
||||
bresult.canAccept5 = bresult.canWrite("WEB_BESGO5") &&
|
||||
((S("bes_approval_all") == 0 && t_cost >= bestellimiet5 && (bes_approved >= bestellimiet5 || bresult.canAccept4)) ||
|
||||
(S("bes_approval_all") == 1 && t_cost > bestellimiet5 && bes_approved <= bestellimiet5)) &&
|
||||
t_cost > bes_approved;
|
||||
bresult.canDelete = bresult.canWrite("WEB_BESBOF")
|
||||
|| (bresult.canWrite("WEB_BESFOF") && bes_bestelling.annuleer_tot)
|
||||
|| (eigenBestelling && voor_annuleer);
|
||||
bresult.canReject = bresult.canAccept ||
|
||||
if (fiatflow_std)
|
||||
{
|
||||
bresult.canAccept = canAccept;
|
||||
bresult.canAccept2 = canAccept2;
|
||||
bresult.canAccept3 = canAccept3;
|
||||
bresult.canAccept4 = canAccept4;
|
||||
bresult.canAccept5 = canAccept5;
|
||||
bresult.canReject = bresult.canAccept ||
|
||||
bresult.canAccept2 ||
|
||||
bresult.canAccept3 ||
|
||||
bresult.canAccept4 ||
|
||||
bresult.canAccept5;
|
||||
}
|
||||
bresult.canDelete = bresult.canWrite("WEB_BESBOF") ||
|
||||
(bresult.canWrite("WEB_BESFOF") && bes_bestelling.annuleer_tot) ||
|
||||
(eigenBestelling && voor_annuleer);
|
||||
bresult.canSubmit = !fiatflow_std && bresult.canWrite("WEB_BESBOF") && !bes_bestelling.isordered;
|
||||
bresult.canRetourURL = !fiatflow_std && _canRetour && (bes_disc_info.disc_params_retour_url != null); // Zichtbaar indien bestelling naar de leverancier verzonden is.
|
||||
bresult.canMainChange = (bresult.canWrite("WEB_BESBOF") ||
|
||||
(bresult.canWrite("WEB_BESFOF") && bes_bestelling.wijzig_tot) ||
|
||||
(eigenBestelling && voor_wijzig))
|
||||
@@ -831,11 +861,13 @@
|
||||
bresult.canItemsChange = bresult.canMainChange && !isPunchout;
|
||||
break;
|
||||
case 4: // Geaccepteerd door BO
|
||||
if (!fiatflow_std)
|
||||
bresult.canApprove = canApprove;
|
||||
bresult.canDelete = bresult.canWrite("WEB_BESBOF") ||
|
||||
(bresult.canWrite("WEB_BESFOF") && bes_bestelling.annuleer_tot) ||
|
||||
(eigenBestelling && voor_annuleer);
|
||||
bresult.canSubmit = bresult.canWrite("WEB_BESBOF") && !bes_bestelling.isordered;
|
||||
bresult.canRetourURL = _canRetour && (bes_disc_info.disc_params_retour_url != null);
|
||||
bresult.canSubmit = fiatflow_std && bresult.canWrite("WEB_BESBOF") && !bes_bestelling.isordered;
|
||||
bresult.canRetourURL = fiatflow_std && _canRetour && (bes_disc_info.disc_params_retour_url != null); // Zichtbaar indien bestelling naar de leverancier verzonden is.
|
||||
bresult.canMainChange = (bresult.canWrite("WEB_BESBOF") ||
|
||||
(bresult.canWrite("WEB_BESFOF") && bes_bestelling.wijzig_tot) ||
|
||||
(eigenBestelling && voor_wijzig)) &&
|
||||
@@ -845,9 +877,9 @@
|
||||
case 5: // Besteld (lees: opdracht is aangemaakt/ligt bij leverancier)
|
||||
if (bes_bestelling.aantalontv == 0)// Als er artikelen ontvangen zijn houdt het op
|
||||
{
|
||||
bresult.canDelete = bresult.canWrite("WEB_BESBOF") ||
|
||||
(bresult.canWrite("WEB_BESFOF") && bes_bestelling.annuleer_tot) ||
|
||||
(eigenBestelling && voor_annuleer);
|
||||
bresult.canDelete = bresult.canWrite("WEB_BESBOF") ||
|
||||
(bresult.canWrite("WEB_BESFOF") && bes_bestelling.annuleer_tot) ||
|
||||
(eigenBestelling && voor_annuleer);
|
||||
bresult.canDelete &= bes_disc_info.can_concept;
|
||||
}
|
||||
bresult.canRetourURL = _canRetour && (bes_disc_info.disc_params_retour_url != null);
|
||||
@@ -1257,6 +1289,125 @@
|
||||
return true;
|
||||
},
|
||||
|
||||
checkFiat: function(bes_key, params)
|
||||
{ // Controleer of de bestelling gefiatteerd moet te worden.
|
||||
var prs_key = params.prs_key;
|
||||
var prs_key_voor = params.prs_key_voor;
|
||||
var dis_key = params.dis_key;
|
||||
var kp_key = params.kp_key;
|
||||
var totaalbedrag = params.totaalbedrag;
|
||||
|
||||
var bes_bestelling = params.bes_bestelling;
|
||||
var bes_disc_info = params.bes_disc_info;
|
||||
var pgb = bes_disc_info.disc_params_pgb;
|
||||
var autoacceptrfo = bes_disc_info.disc_params_autoacceptrfo;
|
||||
|
||||
var isFE = params.isFE;
|
||||
var oldStatus = params.oldStatus;
|
||||
var act_mode = params.act_mode;
|
||||
// Persoonlijk Gebonden Budget (PGB) en/of Afdeling Gebonden Budget (AGB) controle
|
||||
// bes_disc_info.disc_params_pgb: 0 = Geen van beiden
|
||||
// 1 = Alleen pgb
|
||||
// 2 = Alleen agb
|
||||
// 3 = Beiden, pgb en agb
|
||||
if (pgb > 0)
|
||||
{ // Persoonlijk Gebonden Budget (PGB) en Afdeling Gebonden Budget (AGB) controle
|
||||
// Fiatteringsproces moet gevolgd worden op de naam van
|
||||
// S("prs_dep_default_kpn_voor") == 0: de contactpersoon prs_key
|
||||
// S("prs_dep_default_kpn_voor") == 1: de "voor wie" (bestelling voor) prs_key_voor
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek
|
||||
var exceeds_pgb = bes.exceeds_pgb(totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key)
|
||||
var exceeds_agb = bes.exceeds_agb(totaalbedrag, kp_key, dis_key, bes_key)
|
||||
if (exceeds_pgb || exceeds_agb)
|
||||
{
|
||||
if (S("bes_pgb_fiattering") == 1 && !(isFE && S("bes_pgb_fe_fiat") == 1))
|
||||
// Algemene fiatterings proces noodzakelijk naast PGB fiatering
|
||||
return true;
|
||||
else
|
||||
{ // Fiatteringsproces moet gevolgd worden op de naam van.
|
||||
// S("prs_dep_default_kpn_voor") == 0: de contactpersoon prs_key.
|
||||
// S("prs_dep_default_kpn_voor") == 1: de "voor wie" (bestelling voor) prs_key_voor.
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek.
|
||||
var strState = (exceeds_pgb
|
||||
? L("lcl_bes_exceeds_pgb") + safe.curr(bes.get_pgb_exceed_amount(totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key, bes_key))
|
||||
: "")
|
||||
+ (exceeds_pgb && exceeds_agb
|
||||
? "\n" // Nieuwe regel.
|
||||
: "")
|
||||
+ (exceeds_agb
|
||||
? L("lcl_bes_exceeds_agb") + safe.curr(bes.get_agb_exceed_amount(totaalbedrag, kp_key, dis_key, bes_key))
|
||||
: "")
|
||||
+ "\n" + L("lcl_bes_adjust_order");
|
||||
abort_with_warning(strState);
|
||||
}
|
||||
}
|
||||
else if (isFE && S("bes_pgb_fe_fiat") == 1)
|
||||
{ // Onder PGB/AGB en bestelling van FE en moet zeker langs budgethouder
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Standaard fiatteringscontrole.
|
||||
// Fiatteringsproces moet gevolgd worden op de naam van
|
||||
// S("prs_dep_default_kpn_voor") == 0: de contactpersoon prs_key
|
||||
// S("prs_dep_default_kpn_voor") == 1: de "voor wie" (bestelling voor) prs_key_voor
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek.
|
||||
// Als orgineel nog gefiatteerd moet worden door budgethouder (status is 2) dan zeker eerst fiatteren.
|
||||
if (!act_mode
|
||||
&& !autoacceptrfo
|
||||
&& budget.exceeds_profiel(totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key)
|
||||
&& (bes_key == -1 || oldStatus == 2 || bes.herfiatteren(bes_bestelling, bes_disc_info, totaalbedrag)))
|
||||
// niet automatisch fiat(!)teren en profiel wordt overschreden.
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
},
|
||||
|
||||
getApprover: function(params)
|
||||
{ // Bepaalde de fiatteur (KP verantwoordelijke of KPG verantwoordlijke).
|
||||
var prs_key = params.prs_key;
|
||||
var prs_key_voor = params.prs_key_voor;
|
||||
var dis_key = params.dis_key;
|
||||
var kp_key = params.kp_key;
|
||||
var totaalbedrag = params.totaalbedrag;
|
||||
|
||||
var bes_bestelling = params.bes_bestelling;
|
||||
var bes_disc_info = params.bes_disc_info;
|
||||
var pgb = bes_disc_info.disc_params_pgb;
|
||||
var autoacceptrfo = bes_disc_info.disc_params_autoacceptrfo;
|
||||
|
||||
var isFE = params.isFE;
|
||||
var oldStatus = params.oldStatus;
|
||||
var act_mode = params.act_mode;
|
||||
|
||||
var approver_key = -1;
|
||||
if (prs_key > 0 && totaalbedrag > S("can_selfapprove"))
|
||||
approver_key = prs.getKpVerantwoordelijkeExcept(kp_key, prs_key);
|
||||
else
|
||||
approver_key = prs.getKpVerantwoordelijke(kp_key);
|
||||
__Log('Eerstgevonden fiatteur: ' + approver_key);
|
||||
if (approver_key == -1) {
|
||||
// geen fiatteur gevonden, bestellen niet mogelijk
|
||||
__Log('bestelling afgebroken');
|
||||
abort_with_warning(L("lcl_bes_no_fiatteur"));
|
||||
}
|
||||
if (budget.exceeds_profiel(totaalbedrag, approver_key, dis_key))
|
||||
{ // de gevonden fiatteur heeft onvoldoende profiel, is er een hogere (kpngroepverantwoordelijke)
|
||||
// Let wel: alleen controle of hij er bestaat. Wie het is doen we nog niets mee hier.
|
||||
__Log('voldoet niet');
|
||||
var nextapprover_key = prs.getKpVerantwoordelijkeExcept(kp_key, approver_key);
|
||||
__Log('Vervolgensgevonden fiatteur: ' + nextapprover_key);
|
||||
if (nextapprover_key == -1 || budget.exceeds_profiel(totaalbedrag, nextapprover_key, dis_key))
|
||||
{
|
||||
__Log('voldoet ook niet');
|
||||
abort_with_warning(L("lcl_bes_exceed_limit"));
|
||||
}
|
||||
}
|
||||
return approver_key;
|
||||
},
|
||||
|
||||
|
||||
// Levert de 'Is ter fiattering aangeboden bij approver' op.
|
||||
sendNeedApprovalNotification: function(bes_key, approver)
|
||||
{
|
||||
|
||||
@@ -18,6 +18,8 @@ var JSON_Result = true;
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="../Shared/budget.inc" -->
|
||||
<!-- #include file="../PRS/prs.inc" -->
|
||||
<!-- #include file="bes.inc" -->
|
||||
|
||||
<%
|
||||
@@ -39,8 +41,13 @@ for (var i = 0; i < bes_key_arr.length; i++)
|
||||
if (this_bes.canAccept || this_bes.canAccept2 || this_bes.canAccept3 || this_bes.canAccept4 || this_bes.canAccept5)
|
||||
{
|
||||
ingesloten.push({ bes_key: bes_key_arr[i],
|
||||
prs_key: bes_bestelling.perslid_key,
|
||||
prs_key_voor: bes_bestelling.perslid_key_voor,
|
||||
dis_key: bes_bestelling.dis_key,
|
||||
kp_key: bes_bestelling.kostenplaats_key,
|
||||
kosten: bes_bestelling.totaal - bes_bestelling.rfoBesKosten + bes_bestelling.rfoLevKosten,
|
||||
approved: bes_bestelling.approved,
|
||||
fiatflow: bes_disc_info.disc_params_fiatflow,
|
||||
bestellimiet: bes_disc_info.disc_params_bestellimiet,
|
||||
bestellimiet2: bes_disc_info.disc_params_bestellimiet2,
|
||||
bestellimiet3: bes_disc_info.disc_params_bestellimiet3,
|
||||
@@ -148,13 +155,47 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
}
|
||||
|
||||
if (setnextstatus)
|
||||
{ // Nu naar status 4 (Geaccepteerd) of opdrachten aanmaken en naar status 5 (Besteld).
|
||||
{ // Nu naar status Geaccepteerd(4).
|
||||
bes.setbestellingstatus(bes_key, 4); // Geaccepteerd BO
|
||||
|
||||
if (bes_disc_info.disc_params_auto_order == "1")
|
||||
// Afhankelijk van de fiatterings/acceptatie flow zijn dit de acties:
|
||||
// 1) "Fiatteur -> "BESBOF": bes_disc_params_fiatflow = 0 (fiatteren en dan accepteren).
|
||||
// De eventuele fiattering heeft al plaatsgevonden. De status kan naar "Besteld(5)" als de setting auto_order is gezet.
|
||||
// Dit is de standaard flow.
|
||||
// 2) "BESBOF -> Fiatteur": bes_disc_params_fiatflow = 1 (accepteren en dan fiatteren).
|
||||
// Check of er nog gefiatteerd moet worden.
|
||||
// Als er niet gefiatteerd hoeft te worden kan de status naar status "Besteld(5)" als de setting auto_order is gezet.
|
||||
var ter_finfiattering = false;
|
||||
var apprmessage = "";
|
||||
if (ingesloten[i].fiatflow == 1)
|
||||
{
|
||||
var params = {prs_key: ingesloten[i].prs_key,
|
||||
prs_key_voor: ingesloten[i].prs_key_voor,
|
||||
dis_key: ingesloten[i].dis_key,
|
||||
kp_key: ingesloten[i].kp_key,
|
||||
totaalbedrag: ingesloten[i].kosten,
|
||||
bes_bestelling: bes_bestelling,
|
||||
bes_disc_info: bes_disc_info,
|
||||
isNew: false,
|
||||
isFE: false,
|
||||
oldStatus: false,
|
||||
act_mode: false};
|
||||
ter_finfiattering = bes.checkFiat(bes_key, params);
|
||||
if (ter_finfiattering)
|
||||
{
|
||||
var approver_key = bes.getApprover(params);
|
||||
__Log("Fiatteur: " + approver_key);
|
||||
apprmessage = bes.sendNeedApprovalNotification(bes_key, approver_key);
|
||||
}
|
||||
}
|
||||
|
||||
// Nu eventueel opdrachten aanmaken en naar status 5 (Besteld).
|
||||
if (ingesloten[i].fiatflow == 0 || // "Fiatteur -> "BESBOF"
|
||||
(ingesloten[i].fiatflow == 1 && !ter_finfiattering && bes_disc_info.disc_params_auto_order == "1")) // "BESBOF -> Fiatteur"
|
||||
bes.makeOrders(user_key, bes_key);
|
||||
|
||||
result.message = tobeaccepted + " " + (tobeaccepted == 1 ? L("lcl_bes_accepted1") : L("lcl_bes_accepted"));
|
||||
result.message = tobeaccepted + " " + (tobeaccepted == 1 ? L("lcl_bes_accepted1") : L("lcl_bes_accepted"))
|
||||
+ (apprmessage != ""? "\n" + apprmessage : "");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ for (var i = 0; i < bes_key_arr.length; i++)
|
||||
fiatteur_key: bes_bestelling.fiatteur_key, // LET OP: De huidige fiatteur wordt opgehaald (Ook als de user_key een vervanger is).
|
||||
dis_key: bes_bestelling.dis_key,
|
||||
perslid_key_voor: bes_bestelling.perslid_key_voor,
|
||||
disc_params_fiatflow: bes_disc_info.disc_params_fiatflow,
|
||||
disc_params_bestellimiet: bes_disc_info.disc_params_bestellimiet,
|
||||
disc_params_auto_order: bes_disc_info.disc_params_auto_order
|
||||
});
|
||||
@@ -66,40 +67,54 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
// als het valt binnen onze limiet (of eigenlijk: degene die nu moet fiatteren als we vervanger zijn) dan zijn we klaar
|
||||
// TODO in de volgende versie (zie docu PF) meerlaags fiattering met prs.getfiatteur() vgl opdr_approve.asp
|
||||
if (!budget.exceeds_profiel(totaal, ingesloten[i].fiatteur_key, ingesloten[i].dis_key))
|
||||
{
|
||||
bes.setbestellingstatus(ingesloten[i].bes_key, 3); // helemaal Gefiatteerd
|
||||
{ // Klaar met fiatteren.
|
||||
bes.setbestellingstatus(ingesloten[i].bes_key, 3); // helemaal Gefiatteerd
|
||||
|
||||
// Afhankelijk van de fiatterings/acceptatie flow zijn dit de acties:
|
||||
// 1) "Fiatteur -> "BESBOF": bes_disc_params_fiatflow = 0 (fiatteren en dan accepteren).
|
||||
// Als het totaalbedrag onder de eerste bestellimiet is hoeft niet geaccepteerd te worden.
|
||||
// De status kan dan naar "Geaccepteerd(4)" of naar status "Besteld(5)" als de setting auto_order is gezet.
|
||||
// Dit is de standaard flow.
|
||||
// 2) "BESBOF -> Fiatteur": bes_disc_params_fiatflow = 1 (accepteren en dan fiatteren).
|
||||
// De eventuele acceptatie heeft al plaatsgevonden. De status kan naar "Besteld(5)" als de setting auto_order is gezet.
|
||||
if (ingesloten[i].disc_params_fiatflow == 0)
|
||||
{ // "Fiatteur -> "BESBOF"
|
||||
if (ingesloten[i].totaal <= ingesloten[i].disc_params_bestellimiet)
|
||||
{
|
||||
bes.setbestellingstatus(ingesloten[i].bes_key, 4); // Geaccepteerd door BO
|
||||
if (ingesloten[i].disc_params_auto_order == "1") // direct opdracht aanmaken
|
||||
{
|
||||
bes.makeOrders(user_key, ingesloten[i].bes_key); // opdracht aanmaken en status naar besteld (5)
|
||||
}
|
||||
bes.setbestellingstatus(ingesloten[i].bes_key, 4); // Geaccepteerd door BO
|
||||
if (ingesloten[i].disc_params_auto_order == "1") // direct opdracht aanmaken
|
||||
bes.makeOrders(user_key, ingesloten[i].bes_key); // opdracht aanmaken en status naar besteld (5)
|
||||
}
|
||||
}
|
||||
else // ingesloten[i].disc_params_fiatflow == 1
|
||||
{ // "BESBOF -> Fiatteur"
|
||||
if (ingesloten[i].disc_params_auto_order == "1") // direct opdracht aanmaken
|
||||
bes.makeOrders(user_key, ingesloten[i].bes_key); // opdracht aanmaken en status naar besteld (5)
|
||||
}
|
||||
}
|
||||
else // (verder/hogerop) fiatteren
|
||||
{
|
||||
// Nog wel even tracken
|
||||
shared.trackaction("BESFIT", ingesloten[i].bes_key);
|
||||
// Nog wel even tracken
|
||||
shared.trackaction("BESFIT", ingesloten[i].bes_key);
|
||||
|
||||
// vervolgens naar kostenplaatsgroep fiatteur sturen
|
||||
// Fiatteringsproces moet gevolgd worden op de naam van de "voor wie" (bestelling voor)
|
||||
// Als bes_disc_params_for_others niet is gezet zijn perslid_key en perslid_key_voor identiek
|
||||
// Haal de kostenplaatsgroep verantwoordelijke/fiatteur op. De kolom b.bes_bestelling_fiat_user is gevuld met de user_key).
|
||||
sql = "SELECT prs.getkpverantwoordelijke (b.prs_kostenplaats_key, 1, COALESCE (b.bes_bestelling_fiat_user, -1)) kpg_fiatteur_key"
|
||||
+ " FROM bes_bestelling b"
|
||||
+ " WHERE b.bes_bestelling_key = " + ingesloten[i].bes_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var nextapprover_key = oRs("kpg_fiatteur_key").Value;
|
||||
if (nextapprover_key == -1 || budget.exceeds_profiel(totaal, nextapprover_key, ingesloten[i].dis_key))
|
||||
{ // Deze bestelling overschrijdt het mandaat van de budgethouder (kostenplaatsgroep verantwoordelijke/fiatteur) van de opgegeven kostenplaats en/of de budgethouder is onbekend.
|
||||
result.message = L("lcl_bes_exceed_limit");
|
||||
}
|
||||
else
|
||||
{
|
||||
result.message = bes.sendNeedApprovalNotification(ingesloten[i].bes_key, nextapprover_key);
|
||||
}
|
||||
oRs.close();
|
||||
// vervolgens naar kostenplaatsgroep fiatteur sturen
|
||||
// Fiatteringsproces moet gevolgd worden op de naam van de "voor wie" (bestelling voor)
|
||||
// Als bes_disc_params_for_others niet is gezet zijn perslid_key en perslid_key_voor identiek
|
||||
// Haal de kostenplaatsgroep verantwoordelijke/fiatteur op. De kolom b.bes_bestelling_fiat_user is gevuld met de user_key).
|
||||
sql = "SELECT prs.getkpverantwoordelijke (b.prs_kostenplaats_key, 1, COALESCE (b.bes_bestelling_fiat_user, -1)) kpg_fiatteur_key"
|
||||
+ " FROM bes_bestelling b"
|
||||
+ " WHERE b.bes_bestelling_key = " + ingesloten[i].bes_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var nextapprover_key = oRs("kpg_fiatteur_key").Value;
|
||||
if (nextapprover_key == -1 || budget.exceeds_profiel(totaal, nextapprover_key, ingesloten[i].dis_key))
|
||||
{ // Deze bestelling overschrijdt het mandaat van de budgethouder (kostenplaatsgroep verantwoordelijke/fiatteur) van de opgegeven kostenplaats en/of de budgethouder is onbekend.
|
||||
result.message = L("lcl_bes_exceed_limit");
|
||||
}
|
||||
else
|
||||
{
|
||||
result.message = bes.sendNeedApprovalNotification(ingesloten[i].bes_key, nextapprover_key);
|
||||
}
|
||||
oRs.close();
|
||||
}
|
||||
result.success = true;
|
||||
}
|
||||
|
||||
@@ -706,8 +706,8 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
%><input type='hidden' name='deliveryAddr' value='<%=bes_bestelling.mld_adres_key%>'><%
|
||||
}
|
||||
*/
|
||||
FCLTadresselector("deliveryAddr", "sgAdres",
|
||||
{
|
||||
FCLTadresselector("deliveryAddr", "sgAdres",
|
||||
{
|
||||
label: L("lcl_delivery_address"),
|
||||
adresKey: bes_bestelling.mld_adres_key,
|
||||
emptyOption: "",
|
||||
@@ -716,7 +716,7 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
onChange: "onChangeAdres",
|
||||
readonly: (bes_key > 0 && aflever_readonly),
|
||||
required: true
|
||||
}) ;
|
||||
}) ;
|
||||
RWFIELDTR("delivery_place", "fld", L("lcl_bes_del_room"), bes_bestelling.afleverruimte,
|
||||
{
|
||||
required: S("bes_afleverruimte_verplicht") == 1,
|
||||
@@ -727,7 +727,7 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
|
||||
|
||||
var show_leverancier = !(backo && bes_disc_info.isFreeArticle);
|
||||
bes.generateBesInfoBlock(bes_bestelling, show_leverancier, "RW");
|
||||
bes.generateBesInfoBlock(bes_bestelling, bes_disc_info, show_leverancier, "RW");
|
||||
|
||||
BLOCK_START("besFlex"+(S("bes_flexcolumns")!=1?"2":"") , L("lcl_bes_flexblok"));
|
||||
%><tr><td class="besflex"><%
|
||||
|
||||
@@ -157,101 +157,36 @@ if (!isCorrectie)
|
||||
var UseRemoteApproval = custfunc.bes_hasremoteapproval(dis_key, pResult) && pResult.value;
|
||||
if (UseRemoteApproval)
|
||||
{
|
||||
// De fiattering voor deze catalogus ligt helemaal buiten FACILITOR
|
||||
ter_finfiattering = true;
|
||||
// De fiattering voor deze catalogus ligt helemaal buiten FACILITOR
|
||||
ter_finfiattering = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Persoonlijk Gebonden Budget (PGB) en/of Afdeling Gebonden Budget (AGB) controle
|
||||
// bes_disc_info.disc_params_pgb: 0 = Geen van beiden
|
||||
// 1 = Alleen pgb
|
||||
// 2 = Alleen agb
|
||||
// 3 = Beiden, pgb en agb
|
||||
if (bes_disc_info.disc_params_pgb > 0)
|
||||
{ // Persoonlijk Gebonden Budget (PGB) en Afdeling Gebonden Budget (AGB) controle
|
||||
// Fiatteringsproces moet gevolgd worden op de naam van
|
||||
// S("prs_dep_default_kpn_voor") == 0: de contactpersoon prs_key
|
||||
// S("prs_dep_default_kpn_voor") == 1: de "voor wie" (bestelling voor) prs_key_voor
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek
|
||||
var exceeds_pgb = bes.exceeds_pgb(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key)
|
||||
var exceeds_agb = bes.exceeds_agb(staffel_info.totaalbedrag, kostenplaats_key, dis_key, bes_key)
|
||||
if (exceeds_pgb || exceeds_agb)
|
||||
{
|
||||
if (S("bes_pgb_fiattering") == 1 && !(isFE && S("bes_pgb_fe_fiat") == 1))
|
||||
// Algemene fiatterings proces noodzakelijk naast PGB fiatering
|
||||
ter_finfiattering = true;
|
||||
else
|
||||
{ // Fiatteringsproces moet gevolgd worden op de naam van.
|
||||
// S("prs_dep_default_kpn_voor") == 0: de contactpersoon prs_key.
|
||||
// S("prs_dep_default_kpn_voor") == 1: de "voor wie" (bestelling voor) prs_key_voor.
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek.
|
||||
var strState = (exceeds_pgb
|
||||
? L("lcl_bes_exceeds_pgb") + safe.curr(bes.get_pgb_exceed_amount(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key, bes_key))
|
||||
: "")
|
||||
+ (exceeds_pgb && exceeds_agb
|
||||
? "\n" // Nieuwe regel.
|
||||
: "")
|
||||
+ (exceeds_agb
|
||||
? L("lcl_bes_exceeds_agb") + safe.curr(bes.get_agb_exceed_amount(staffel_info.totaalbedrag, kostenplaats_key, dis_key, bes_key))
|
||||
: "")
|
||||
+ "\n" + L("lcl_bes_adjust_order");
|
||||
abort_with_warning(strState);
|
||||
}
|
||||
}
|
||||
else if (isFE && S("bes_pgb_fe_fiat") == 1)
|
||||
{ // Onder PGB/AGB en bestelling van FE en moet zeker langs budgethouder
|
||||
ter_finfiattering = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Standaard fiatteringscontrole.
|
||||
// Fiatteringsproces moet gevolgd worden op de naam van
|
||||
// S("prs_dep_default_kpn_voor") == 0: de contactpersoon prs_key
|
||||
// S("prs_dep_default_kpn_voor") == 1: de "voor wie" (bestelling voor) prs_key_voor
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek.
|
||||
// Als orgineel nog gefiatteerd moet worden door budgethouder (status is 2) dan zeker eerst fiatteren.
|
||||
if (!act_mode
|
||||
&& !bes_disc_info.disc_params_autoacceptrfo
|
||||
&& budget.exceeds_profiel(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key)
|
||||
&& (isNew || oldStatus == 2 || bes.herfiatteren(bes_bestelling, bes_disc_info, staffel_info.totaalbedrag)))
|
||||
// niet automatisch fiat(!)teren en profiel wordt overschreden.
|
||||
ter_finfiattering = true;
|
||||
}
|
||||
var params = {prs_key: prs_key,
|
||||
prs_key_voor: prs_key_voor,
|
||||
dis_key: dis_key,
|
||||
kp_key: kostenplaats_key,
|
||||
totaalbedrag: staffel_info.totaalbedrag,
|
||||
bes_bestelling: bes_bestelling,
|
||||
bes_disc_info: bes_disc_info,
|
||||
isNew: isNew,
|
||||
isFE: isFE,
|
||||
oldStatus: oldStatus,
|
||||
act_mode: act_mode};
|
||||
ter_finfiattering = bes.checkFiat(bes_key, params);
|
||||
|
||||
// Als het boven mijn profiel is, of ik -als ik budgethouder ben/zou zijn- niet zelf mag goedkeuren.
|
||||
// Gaan we kijken wie dan wel.
|
||||
// Kan prs_key (aanmaker) zelf fiatteren?: true: totaalbedrag <= can_selfapprove
|
||||
// false totaalbedrag > can_selfapprove => prs_key als exclude key meegeven.
|
||||
if (ter_finfiattering || staffel_info.totaalbedrag > S("can_selfapprove"))
|
||||
{ // Wie moet dit (als eerste) goedkeuren voor deze kostenplaats?
|
||||
// De melder van de melding (prs_key) mag niet zelf goedkeuren boven het bedrag can_selfapprove.
|
||||
// staffel_info.totaalbedrag > can_selfapprove => prs_key als exclude key meegeven.
|
||||
// prs_key heeft altijd een waarde (prs_key > 0) (required).
|
||||
if (prs_key > 0 && staffel_info.totaalbedrag > S("can_selfapprove"))
|
||||
approver_key = prs.getKpVerantwoordelijkeExcept(kostenplaats_key, prs_key);
|
||||
else
|
||||
approver_key = prs.getKpVerantwoordelijke(kostenplaats_key);
|
||||
__Log('Eerstgevonden fiatteur: '+approver_key);
|
||||
if (approver_key == -1) {
|
||||
// geen fiatteur gevonden, bestellen niet mogelijk
|
||||
__Log('bestelling afgebroken');
|
||||
abort_with_warning(L("lcl_bes_no_fiatteur"));
|
||||
}
|
||||
if (budget.exceeds_profiel(staffel_info.totaalbedrag, approver_key, dis_key))
|
||||
{ // de gevonden fiatteur heeft onvoldoende profiel, is er een hogere (kpngroepverantwoordelijke)
|
||||
// Let wel: alleen controle of hij er bestaat. Wie het is doen we nog niets mee hier.
|
||||
__Log('voldoet niet');
|
||||
var nextapprover_key = prs.getKpVerantwoordelijkeExcept(kostenplaats_key, approver_key);
|
||||
__Log('Vervolgensgevonden fiatteur: ' + nextapprover_key);
|
||||
if (nextapprover_key == -1 || budget.exceeds_profiel(staffel_info.totaalbedrag, nextapprover_key, dis_key))
|
||||
{
|
||||
__Log('voldoet ook niet');
|
||||
abort_with_warning(L("lcl_bes_exceed_limit"));
|
||||
}
|
||||
}
|
||||
// Er is nu een altijd een eerste approver_key gevonden (met of zonder voldoende fiatteringsrechten. Anders al een abort.
|
||||
// approver_key is oke of indien -1 dan is er geen approval meer nodig (is al geabort hierboven anders)
|
||||
}
|
||||
|
||||
// Als het boven mijn profiel is, of ik -als ik budgethouder ben/zou zijn- niet zelf mag goedkeuren.
|
||||
// Gaan we kijken wie dan wel.
|
||||
// Kan prs_key (aanmaker) zelf fiatteren?: true: totaalbedrag <= can_selfapprove
|
||||
// false totaalbedrag > can_selfapprove => prs_key als exclude key meegeven.
|
||||
if (ter_finfiattering || staffel_info.totaalbedrag > S("can_selfapprove"))
|
||||
{ // Wie moet dit (als eerste) goedkeuren voor deze kostenplaats?
|
||||
// De melder van de melding (prs_key) mag niet zelf goedkeuren boven het bedrag can_selfapprove.
|
||||
// staffel_info.totaalbedrag > can_selfapprove => prs_key als exclude key meegeven.
|
||||
// prs_key heeft altijd een waarde (prs_key > 0) (required).
|
||||
approver_key = bes.getApprover(params);
|
||||
}
|
||||
}
|
||||
}
|
||||
// JGL: 5.1.2: er is besloten dat een concept/embargo alleen (en altijd)
|
||||
@@ -406,7 +341,7 @@ if (!isNew && !makechange) // update nog tracken
|
||||
// ======================================================
|
||||
|
||||
// 1=afgewezen, 2=nieuw, 3=Gefiatteerd, 4=Geaccepteerd, 5=Besteld
|
||||
if (status == 1 || status == 2|| status == 3 || status == 4 || status == 5)
|
||||
if (status == 1 || status == 2 || status == 3 || status == 4 || status == 5)
|
||||
{ // In deze mode kunnen er regels bij of afkomen. We gooien alles weg en inserten opnieuw
|
||||
// Delete all objects if updating
|
||||
if (vervang)
|
||||
@@ -477,39 +412,82 @@ if (status == 1 || status == 2|| status == 3 || status == 4 || status == 5)
|
||||
|
||||
if (UseRemoteApproval)
|
||||
{
|
||||
__Log("Requesting remote approval");
|
||||
var remoteResult = custfunc.bes_getremoteapproval(getQParamInt("bes_key", pResult)); // dis_key ook meegeven?
|
||||
// Track dat fiattering gevraagd wordt aan extern systeem (custfunc.bes_remoteapprovalSystemName(dis_key)?)
|
||||
// En wat bij fail?
|
||||
// shared.trackaction("BESAP2", bes_key, remoteResult);
|
||||
// var corsaResult = false;
|
||||
// var corsaError = "";
|
||||
// corsaResult = corsaConnect();
|
||||
// if (!corsaResult)
|
||||
// strState = "Resultaat Corsa/Webservice: "+corsaError;
|
||||
__Log("Requesting remote approval");
|
||||
var remoteResult = custfunc.bes_getremoteapproval(getQParamInt("bes_key", pResult)); // dis_key ook meegeven?
|
||||
// Track dat fiattering gevraagd wordt aan extern systeem (custfunc.bes_remoteapprovalSystemName(dis_key)?)
|
||||
// En wat bij fail?
|
||||
// shared.trackaction("BESAP2", bes_key, remoteResult);
|
||||
// var corsaResult = false;
|
||||
// var corsaError = "";
|
||||
// corsaResult = corsaConnect();
|
||||
// if (!corsaResult)
|
||||
// strState = "Resultaat Corsa/Webservice: "+corsaError;
|
||||
//
|
||||
// var xmlTableDef = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
// var docNr = corsaCreateDoc(bes_key);
|
||||
// var caseID = corsaGetCase(docNr);
|
||||
// xmlTableDef = corsaVarTabGet(caseID);
|
||||
// corsaVarTabSet(bes_key, caseID, xmlTableDef);
|
||||
// corsaDisconnect();
|
||||
// var xmlTableDef = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
// var docNr = corsaCreateDoc(bes_key);
|
||||
// var caseID = corsaGetCase(docNr);
|
||||
// xmlTableDef = corsaVarTabGet(caseID);
|
||||
// corsaVarTabSet(bes_key, caseID, xmlTableDef);
|
||||
// corsaDisconnect();
|
||||
|
||||
// sql = "UPDATE bes_bestelling"
|
||||
// + " SET bes_bestelling_opmerking = 'CORSA: " + docNr + " (" + caseID + ")'"
|
||||
// + " WHERE bes_bestelling_key = " + bes_key;
|
||||
// Oracle.Execute(sql);
|
||||
// sql = "UPDATE bes_bestelling"
|
||||
// + " SET bes_bestelling_opmerking = 'CORSA: " + docNr + " (" + caseID + ")'"
|
||||
// + " WHERE bes_bestelling_key = " + bes_key;
|
||||
// Oracle.Execute(sql);
|
||||
}
|
||||
else
|
||||
{ // internal approval mechanism
|
||||
// Nu kan daadwerkelijk de juiste status gezet worden.
|
||||
|
||||
} else { // internal approval mechanism
|
||||
// Afhankelijk van de fiatterings/acceptatie flow zijn dit de acties:
|
||||
// 1) "Fiatteur -> "BESBOF": bes_disc_params_fiatflow = 0 (fiatteren en dan accepteren).
|
||||
// Als er gefiatter moet worden dan kostenplaats verantwoordelijke een notificatie sturen. De status blijft "Nieuw(2)".
|
||||
// Als er niet meer gefiatteerd moet worden, moet er gekeken worden of er geaccepteerd dient te worden.
|
||||
// Als er geaccepteerd dient te worden moet de status naar "Gefiatteerd(3)".
|
||||
// Als er niet meer geaccepteerd hoeft te worden kan de status dan naar "Geaccepteerd(4)" of naar status "Besteld(5)" als de setting auto_order is gezet.
|
||||
// Dit is de standaard flow.
|
||||
// 2) "BESBOF -> Fiatteur": bes_disc_params_fiatflow = 1 (accepteren en dan fiatteren).
|
||||
// Als er geaccepteerd moet worden blijft de status "Nieuw(2)".
|
||||
// Als er niet meer geaccepteerd moet worden, moet er gekeken worden of er gefiatteerd dient te worden.
|
||||
// Als er gefiatteerd dient te worden moet de status naar "Geaccepteerd(4)". Dan de kostenplaats verantwoordelijke een notificatie sturen.
|
||||
// Als er niet meer gefiatteerd hoeft te worden kan de status dan naar "Gefiatteerd(3)" of naar status "Besteld(5)" als de setting auto_order is gezet.
|
||||
// Moet er finanicieel gefiatteerd worden?
|
||||
var hasToApprove = approver_key > 0;
|
||||
// Moet de BackoOffice (BO) nog accepteren?
|
||||
var hasToAccept = ((oldStatus == (bes_disc_info.disc_params_fiatflow == 0? 3 : 4) &&
|
||||
staffel_info.totaalbedrag > bes_bestelling.approved &&
|
||||
staffel_info.totaalbedrag > bes_disc_info.disc_params_bestellimiet) ||
|
||||
((staffel_info.totaalbedrag > bes_disc_info.disc_params_bestellimiet) &&
|
||||
(isNew || bes.herfiatteren(bes_bestelling, bes_disc_info, staffel_info.totaalbedrag))));
|
||||
|
||||
// Nu kan daadwerkelijk de juiste status gezet worden.
|
||||
if (approver_key == -1) // No fin-approval required
|
||||
{
|
||||
// Als orgineel nog gefiatteerd moet worden door BO (status is 3) dan zeker eerst fiatteren.
|
||||
if (bes_disc_info.disc_params_fiatflow == 0)
|
||||
{
|
||||
if (hasToApprove)
|
||||
{ // Deze bestelling moet financieel gefiatteerd worden.
|
||||
// Send de fiatteur een notificatie.
|
||||
// Niet uitvoeren bij bestelling voor geplande actie
|
||||
if (!act_mode)
|
||||
{
|
||||
if (vervang)
|
||||
{
|
||||
// Bij wijzigen i.v.m herfiattering/heraccepteren de fiatteur/het accepteer bedrag op null zetten zodat het fiatteren/accepteren opnieuw kan beginnen.
|
||||
var sql = "UPDATE bes_bestelling"
|
||||
+ " SET bes_bestelling_fiat_user = NULL"
|
||||
+ " , bes_bestelling_approved = NULL"
|
||||
+ " , bes_bestelling_status = 2"
|
||||
+ " WHERE bes_bestelling_key = " + bes_key;
|
||||
Oracle.Execute(sql);
|
||||
// AP2 notificatie wordt al door sendNeedApprovalNotification gedaan
|
||||
// bes.setbestellingstatus(bes_key, 2); // terug naar Nieuw/ter acceptering
|
||||
}
|
||||
strState = bes.sendNeedApprovalNotification(bes_key, approver_key);
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Geen financieele fiattering nodig.
|
||||
// Als orgineel nog geaccepteerd moet worden door BO (status is 3) dan zeker eerst accepteren.
|
||||
// Tenzij het bedrag is verlaagd tot onder het approved bedrag of eerste bestellimiet bedrag. Dan kan naar de volgende status worden gegaan.
|
||||
if ((oldStatus == 3 && staffel_info.totaalbedrag > bes_bestelling.approved && staffel_info.totaalbedrag > bes_disc_info.disc_params_bestellimiet) ||
|
||||
((staffel_info.totaalbedrag > bes_disc_info.disc_params_bestellimiet) &&
|
||||
(isNew || bes.herfiatteren(bes_bestelling, bes_disc_info, staffel_info.totaalbedrag)))) // should BO approve?
|
||||
if (hasToAccept) // Moet BO nog accepteren?
|
||||
{
|
||||
bes.setbestellingstatus(bes_key, 3, L("lcl_bes_fiatbyrules")); // finanicieel gefiatteerd, BO moet nog wel
|
||||
// Bij wijzigen i.v.m herfiattering/heraccepteren het approved bedrag op null zetten zodat het accepteren opnieuw kan beginnen.
|
||||
@@ -520,10 +498,10 @@ if (status == 1 || status == 2|| status == 3 || status == 4 || status == 5)
|
||||
+ " WHERE bes_bestelling_key = " + bes_key;
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bes.setbestellingstatus(bes_key, 4); // Geaccepteerd
|
||||
bes.setbestellingstatus(bes_key, 4); // Geaccepteerd(4).
|
||||
|
||||
if (bes_disc_info.disc_params_auto_order == "1") // direct opdracht aanmaken
|
||||
{
|
||||
@@ -534,28 +512,57 @@ if (status == 1 || status == 2|| status == 3 || status == 4 || status == 5)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Deze bestelling moet gefiatteerd worden
|
||||
// Inform approver that they have something to do
|
||||
// Niet uitvoeren bij bestelling voor geplande actie
|
||||
}
|
||||
else // bes_disc_info.disc_params_fiatflow == 1
|
||||
{
|
||||
if (hasToAccept)
|
||||
{
|
||||
// Bij wijzigen i.v.m herfiattering/heraccepteren de fiatteur/het accepteer bedrag op null zetten zodat het fiatteren/accepteren opnieuw kan beginnen.
|
||||
if (!act_mode)
|
||||
{
|
||||
if (vervang)
|
||||
{
|
||||
var sql = "UPDATE bes_bestelling"
|
||||
+ " SET bes_bestelling_fiat_user = NULL"
|
||||
+ " , bes_bestelling_approved = NULL"
|
||||
+ " , bes_bestelling_status = 2"
|
||||
+ " WHERE bes_bestelling_key = " + bes_key;
|
||||
Oracle.Execute(sql);
|
||||
// AP2 notificatie wordt al door sendNeedApprovalNotification gedaan
|
||||
// bes.setbestellingstatus(bes_key, 2); // terug naar Nieuw/ter acceptering
|
||||
var sql = "UPDATE bes_bestelling"
|
||||
+ " SET bes_bestelling_fiat_user = NULL"
|
||||
+ " , bes_bestelling_approved = NULL"
|
||||
+ " , bes_bestelling_status = 2"
|
||||
+ " WHERE bes_bestelling_key = " + bes_key;
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
strState = bes.sendNeedApprovalNotification(bes_key, approver_key);
|
||||
// De eerste niveau accepteerders (BESBOF) hoeven geen notificaties te ontvangen.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Geen BO acceptatie nodig.
|
||||
// Als orgineel nog financieel gefiatteerd moet worden (status is 4) dan zeker eerst financieel fiatteren.
|
||||
if (hasToApprove) // Moet nog financieel gefiatteerd worden?
|
||||
{
|
||||
bes.setbestellingstatus(bes_key, 4, L("lcl_bes_acceptbyrules")); // BO heeft geaccepteerd, finanicieel fiatteren moet nog wel.
|
||||
// Bij wijzigen i.v.m herfiattering/heraccepteren de fiatteur op null zetten zodat het fiatteren opnieuw kan beginnen.
|
||||
if (vervang)
|
||||
{
|
||||
var sql = "UPDATE bes_bestelling"
|
||||
+ " SET bes_bestelling_fiat_user = NULL"
|
||||
+ " WHERE bes_bestelling_key = " + bes_key;
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bes.setbestellingstatus(bes_key, 3); // Gefiatteerd(3).
|
||||
|
||||
if (bes_disc_info.disc_params_auto_order == "1") // direct opdracht aanmaken
|
||||
{
|
||||
if (oldStatus == 5 && opdrStatus == 1) // afgewezen opdrachten vervangen we gewoon
|
||||
bes.changeOrders(user_key, bes_key);
|
||||
else
|
||||
bes.makeOrders(user_key, bes_key);
|
||||
}
|
||||
} // !hasToApprove
|
||||
} // !hasToAccept
|
||||
} // bes_disc_info.disc_params_fiatflow == 1.
|
||||
} // internal approval mechanism.
|
||||
} // Status 1 t/m 5.
|
||||
else if (oldStatus == 6) // 6=geleverd
|
||||
{ // er kunnen/zullen ook al bes_bestelopdr_item's bestaan
|
||||
// er zullen nooit regels bijkomen/weggaan, hoogstens aantallen gewijzigd
|
||||
|
||||
@@ -194,7 +194,7 @@ function bes_list (pautfunction, params)
|
||||
|
||||
function fncolBesNr(oRs)
|
||||
{ // Eigenlijk wil je een markering bij de parent, niet bij het child TODO
|
||||
return S("bes_bestelling_prefix") + (oRs.fields("bes_bestelling_parentkey").value > 0 ? oRs.fields("bes_bestelling_parentkey").value + "*" : oRs.fields("bes_bestelling_key").value);
|
||||
return S("bes_bestelling_prefix") + (oRs.fields("bes_bestelling_parentkey").Value > 0 ? oRs.fields("bes_bestelling_parentkey").Value + "*" : oRs.fields("bes_bestelling_key").Value);
|
||||
}
|
||||
|
||||
function fncolOordeel(oRs)
|
||||
@@ -429,7 +429,7 @@ function bes_list (pautfunction, params)
|
||||
function fnrowDataRFO(oRs)
|
||||
{
|
||||
var eSubmit = false;
|
||||
var besType = oRs("bes_bestelling_module").value;
|
||||
var besType = oRs("bes_bestelling_module").Value;
|
||||
|
||||
var data = {eSubmit:eSubmit, besType:besType};
|
||||
return JSON.stringify(data);
|
||||
@@ -438,9 +438,9 @@ function bes_list (pautfunction, params)
|
||||
function fnrowDataOrder(oRs)
|
||||
{
|
||||
var eSubmit = false;
|
||||
var besOpdrKey = oRs("bes_bestelopdr_key").value;
|
||||
var besOpdrType = oRs("bes_bestelopdr_module").value;
|
||||
var besOpdrId = oRs("bes_bestelopdr_id").value;
|
||||
var besOpdrKey = oRs("bes_bestelopdr_key").Value;
|
||||
var besOpdrType = oRs("bes_bestelopdr_module").Value;
|
||||
var besOpdrId = oRs("bes_bestelopdr_id").Value;
|
||||
|
||||
var data = {eSubmit:eSubmit, besOpdrKey:besOpdrKey, besOpdrType:besOpdrType, besOpdrId: besOpdrId};
|
||||
return JSON.stringify(data);
|
||||
@@ -448,22 +448,22 @@ function bes_list (pautfunction, params)
|
||||
|
||||
function fncolBesOpdrNr(oRs)
|
||||
{
|
||||
return S("bes_bestelopdr_prefix") + oRs.fields("bes_bestelopdr_id").value;
|
||||
return S("bes_bestelopdr_prefix") + oRs.fields("bes_bestelopdr_id").Value;
|
||||
}
|
||||
|
||||
function fncolStatusOmschr(oRs)
|
||||
{
|
||||
return ((oRs("bes_bestelling_status").value == 6
|
||||
&& (oRs("bes_bestelling_retourvan_key").value
|
||||
&& oRs("bes_bestelling_retourvan_key").value > 0))
|
||||
return ((oRs("bes_bestelling_status").Value == 6
|
||||
&& (oRs("bes_bestelling_retourvan_key").Value
|
||||
&& oRs("bes_bestelling_retourvan_key").Value > 0))
|
||||
? L("lcl_bes_collected")
|
||||
: bes.getbesbestellingstatustext(oRs("bes_bestelling_status").value))
|
||||
: bes.getbesbestellingstatustext(oRs("bes_bestelling_status").Value))
|
||||
}
|
||||
|
||||
function fncolOrderVoorMI(oRs)
|
||||
{
|
||||
var bestellingvoor = oRs("ordervoor").value
|
||||
if (!excel && oRs("requestor").value == bestellingvoor)
|
||||
var bestellingvoor = oRs("ordervoor").Value
|
||||
if (!excel && oRs("requestor").Value == bestellingvoor)
|
||||
bestellingvoor = "";
|
||||
return safe.html(bestellingvoor);
|
||||
}
|
||||
@@ -1542,7 +1542,7 @@ function bes_list (pautfunction, params)
|
||||
sql = "SELECT b.bes_bestelling_key"
|
||||
+ ", b.bes_bestelling_parentkey"
|
||||
+ ", b.bes_bestelling_datum datum"
|
||||
+ ", bes_bestelling_leverdatum leverdatum"
|
||||
+ ", bes_bestelling_leverdatum leverdatum"
|
||||
+ ", bes_bestelling_retourvan_key"
|
||||
+ ", b.bes_bestelling_module"
|
||||
+ ", ma.mld_adres_naam"
|
||||
@@ -1587,7 +1587,7 @@ function bes_list (pautfunction, params)
|
||||
+ " b.bes_bestelling_key"
|
||||
+ ", b.bes_bestelling_parentkey"
|
||||
+ ", b.bes_bestelling_datum"
|
||||
+ ", bes_bestelling_leverdatum"
|
||||
+ ", bes_bestelling_leverdatum"
|
||||
+ ", bes_bestelling_status"
|
||||
+ ", b.bes_bestelling_retourvan_key"
|
||||
+ ", b.bes_bestelling_module"
|
||||
@@ -1606,7 +1606,7 @@ function bes_list (pautfunction, params)
|
||||
|
||||
function fnrowDataFE(oRs)
|
||||
{
|
||||
var besType = oRs("bes_bestelling_module").value;
|
||||
var besType = oRs("bes_bestelling_module").Value;
|
||||
var data = {besType:besType};
|
||||
|
||||
return JSON.stringify(data);
|
||||
@@ -1614,9 +1614,6 @@ function bes_list (pautfunction, params)
|
||||
|
||||
function fnrowActionEnablerFE(oRs)
|
||||
{
|
||||
var m_stat = oRs("bes_bestelling_status").value;
|
||||
var besType = oRs("bes_bestelling_module").value;
|
||||
|
||||
var eEdit = true; // Altijd aanwezig
|
||||
var data = { eEdit: eEdit };
|
||||
|
||||
@@ -1625,8 +1622,8 @@ function bes_list (pautfunction, params)
|
||||
|
||||
function fncolOrderVoorFE(oRs)
|
||||
{
|
||||
var bestellingvoor = oRs("ordervoor").value
|
||||
if (!excel && oRs("naam").value == bestellingvoor)
|
||||
var bestellingvoor = oRs("ordervoor").Value
|
||||
if (!excel && oRs("naam").Value == bestellingvoor)
|
||||
bestellingvoor = "";
|
||||
return safe.html(bestellingvoor);
|
||||
}
|
||||
@@ -1686,52 +1683,55 @@ function bes_list (pautfunction, params)
|
||||
+ " END)";
|
||||
|
||||
sql = "SELECT b.bes_bestelling_key"
|
||||
+ ", bes_bestelling_parentkey"
|
||||
+ ", bes_bestelling_datum datum"
|
||||
+ ", bes_bestelling_leverdatum leverdatum"
|
||||
+ ", bes_bestelling_retourvan_key"
|
||||
+ ", (SELECT " + S("prs_pers_string")
|
||||
+ " FROM prs_perslid p"
|
||||
+ " WHERE p.prs_perslid_key = b.prs_perslid_key_voor) ordervoor"
|
||||
+ ", " + S("prs_pers_string") + " prs_string"
|
||||
+ ", m.mld_adres_naam"
|
||||
+ ", b.bes_bestelling_plaats"
|
||||
+ ", bes_bestelling_opmerking"
|
||||
+ ", b.bes_bestelling_status"
|
||||
+ ", b.bes_bestelling_module"
|
||||
+ ", MAX("+ lcl.xsql('bd.ins_discipline_omschrijving','bd.ins_discipline_key') +") categorie"
|
||||
+ ", UPPER(MAX("+ lcl.xsql('bd.ins_discipline_omschrijving','bd.ins_discipline_key') +")) uppercategorie"
|
||||
+ ", SUM(i.bes_bestelling_item_aantal * COALESCE(i.bes_bestelling_item_prijs, 0)) bedrag"
|
||||
+ ", (SELECT k.prs_perslid_key"
|
||||
+ " FROM prs_kostenplaats k"
|
||||
+ " WHERE k.prs_kostenplaats_key = b.prs_kostenplaats_key) budgethouder"
|
||||
+ ", SUM(i.bes_bestelling_item_aantal) aantal"
|
||||
+ ", MAX(bes_bestelopdr_item_key) isordered"
|
||||
+ ", (SELECT " + S("prs_pers_string")
|
||||
+ " FROM prs_perslid p"
|
||||
+ " WHERE p.prs_perslid_key = prs.getkpverantwoordelijke (b.prs_kostenplaats_key, " + S("prs_approvemethod") + ", " + exclude_fiatter + ")) fiatteur"
|
||||
+ ", (SELECT " + S("prs_pers_string")
|
||||
+ " FROM prs_perslid p"
|
||||
+ " WHERE p.prs_perslid_key = b.bes_bestelling_fiat_user) fiat_user"
|
||||
+ ", bd.ins_discipline_key"
|
||||
+ ", l.alg_locatie_key"
|
||||
+ " , bes_bestelling_parentkey"
|
||||
+ " , bes_bestelling_datum datum"
|
||||
+ " , bes_bestelling_leverdatum leverdatum"
|
||||
+ " , bes_bestelling_retourvan_key"
|
||||
+ " , (SELECT " + S("prs_pers_string")
|
||||
+ " FROM prs_perslid p"
|
||||
+ " WHERE p.prs_perslid_key = b.prs_perslid_key_voor) ordervoor"
|
||||
+ " , " + S("prs_pers_string") + " prs_string"
|
||||
+ " , m.mld_adres_naam"
|
||||
+ " , b.bes_bestelling_plaats"
|
||||
+ " , bes_bestelling_opmerking"
|
||||
+ " , b.bes_bestelling_status"
|
||||
+ " , b.bes_bestelling_module"
|
||||
+ " , MAX("+ lcl.xsql('bd.ins_discipline_omschrijving','bd.ins_discipline_key') +") categorie"
|
||||
+ " , UPPER(MAX("+ lcl.xsql('bd.ins_discipline_omschrijving','bd.ins_discipline_key') +")) uppercategorie"
|
||||
+ " , SUM(i.bes_bestelling_item_aantal * COALESCE(i.bes_bestelling_item_prijs, 0)) bedrag"
|
||||
+ " , (SELECT k.prs_perslid_key"
|
||||
+ " FROM prs_kostenplaats k"
|
||||
+ " WHERE k.prs_kostenplaats_key = b.prs_kostenplaats_key) budgethouder"
|
||||
+ " , SUM(i.bes_bestelling_item_aantal) aantal"
|
||||
+ " , MAX(bes_bestelopdr_item_key) isordered"
|
||||
+ " , (SELECT " + S("prs_pers_string")
|
||||
+ " FROM prs_perslid p"
|
||||
+ " WHERE p.prs_perslid_key = prs.getkpverantwoordelijke (b.prs_kostenplaats_key, " + S("prs_approvemethod") + ", " + exclude_fiatter + ")) fiatteur"
|
||||
+ " , (SELECT " + S("prs_pers_string")
|
||||
+ " FROM prs_perslid p"
|
||||
+ " WHERE p.prs_perslid_key = b.bes_bestelling_fiat_user) fiat_user"
|
||||
+ " , bd.ins_discipline_key"
|
||||
+ " , l.alg_locatie_key"
|
||||
+ " , dp.bes_disc_params_fiatflow"
|
||||
+ " FROM bes_bestelling b"
|
||||
+ ", bes_bestelling_item i"
|
||||
+ ", bes_srtdeel isd"
|
||||
+ ", bes_srtgroep isg"
|
||||
+ ", bes_v_aanwezigdiscipline bd" // UWV heeft verwijderde disciplines met bestellingen
|
||||
+ ", prs_perslid p"
|
||||
+ ", mld_adres m"
|
||||
+ ", prs_v_afdeling_boom boom"
|
||||
+ ", prs_kostenplaats k"
|
||||
+ ", alg_locatie l"
|
||||
+ ", alg_district di"
|
||||
+ " , bes_bestelling_item i"
|
||||
+ " , bes_srtdeel isd"
|
||||
+ " , bes_srtgroep isg"
|
||||
+ " , bes_v_aanwezigdiscipline bd" // UWV heeft verwijderde disciplines met bestellingen
|
||||
+ " , bes_disc_params dp"
|
||||
+ " , prs_perslid p"
|
||||
+ " , mld_adres m"
|
||||
+ " , prs_v_afdeling_boom boom"
|
||||
+ " , prs_kostenplaats k"
|
||||
+ " , alg_locatie l"
|
||||
+ " , alg_district di"
|
||||
+ " WHERE b.mld_adres_key_lev = m.mld_adres_key"
|
||||
+ " AND b.bes_bestelling_key = i.bes_bestelling_key"
|
||||
+ " AND b.fac_activiteit_key IS NULL"
|
||||
+ " AND i.bes_srtdeel_key = isd.bes_srtdeel_key"
|
||||
+ " AND isd.bes_srtgroep_key = isg.bes_srtgroep_key"
|
||||
+ " AND isg.ins_discipline_key = bd.ins_discipline_key"
|
||||
+ " AND bd.ins_discipline_key = dp.bes_ins_discipline_key"
|
||||
+ " AND p.prs_perslid_key = b.prs_perslid_key"
|
||||
// Only orders for persons in my organisation as determined by 3D authorization are visible
|
||||
// See NOTE B
|
||||
@@ -1790,25 +1790,26 @@ function bes_list (pautfunction, params)
|
||||
}
|
||||
|
||||
var sql_group_by = " GROUP BY b.bes_bestelling_key"
|
||||
+ ", bes_bestelling_parentkey"
|
||||
+ ", bes_bestelling_datum"
|
||||
+ ", bes_bestelling_leverdatum"
|
||||
+ ", bd.ins_discipline_key"
|
||||
+ " , bes_bestelling_parentkey"
|
||||
+ " , bes_bestelling_datum"
|
||||
+ " , bes_bestelling_leverdatum"
|
||||
+ " , bd.ins_discipline_key"
|
||||
+ (excel? ", UPPER("+ lcl.xsql('bd.ins_discipline_omschrijving','bd.ins_discipline_key') +")" : "")
|
||||
+ ", b.bes_bestelling_retourvan_key"
|
||||
+ ", " + S("prs_pers_string")
|
||||
+ ", m.mld_adres_naam"
|
||||
+ ", b.bes_bestelling_plaats"
|
||||
+ ", bes_bestelling_opmerking"
|
||||
+ ", b.bes_bestelling_status"
|
||||
+ ", b.bes_bestelling_module"
|
||||
+ ", b.prs_kostenplaats_key"
|
||||
+ ", b.prs_perslid_key"
|
||||
+ ", k.prs_perslid_key"
|
||||
+ ", k.prs_kostenplaatsgrp_key"
|
||||
+ ", b.bes_bestelling_fiat_user"
|
||||
+ ", l.alg_locatie_key"
|
||||
+ ", prs_perslid_key_voor";
|
||||
+ " , b.bes_bestelling_retourvan_key"
|
||||
+ " , " + S("prs_pers_string")
|
||||
+ " , m.mld_adres_naam"
|
||||
+ " , b.bes_bestelling_plaats"
|
||||
+ " , bes_bestelling_opmerking"
|
||||
+ " , b.bes_bestelling_status"
|
||||
+ " , b.bes_bestelling_module"
|
||||
+ " , b.prs_kostenplaats_key"
|
||||
+ " , b.prs_perslid_key"
|
||||
+ " , k.prs_perslid_key"
|
||||
+ " , k.prs_kostenplaatsgrp_key"
|
||||
+ " , b.bes_bestelling_fiat_user"
|
||||
+ " , l.alg_locatie_key"
|
||||
+ " , prs_perslid_key_voor"
|
||||
+ " , dp.bes_disc_params_fiatflow";
|
||||
|
||||
sql = discx3d (sql,
|
||||
"bd.ins_discipline_key",
|
||||
@@ -1835,11 +1836,11 @@ function bes_list (pautfunction, params)
|
||||
function fnrowClassFOBO(oRs)
|
||||
{
|
||||
var rowclass = '';
|
||||
var m_stat = oRs("bes_bestelling_status").value;
|
||||
if (backo && m_stat == 2)
|
||||
rowclass = 'vervallen';
|
||||
var m_stat = oRs("bes_bestelling_status").Value;
|
||||
if (backo && m_stat == 1)
|
||||
rowclass = 'vervallen'; // Afgewezen(1).
|
||||
|
||||
if (oRs("aantal").value < 0)
|
||||
if (oRs("aantal").Value < 0)
|
||||
rowclass = 'retour'; // ipv selectable
|
||||
|
||||
return rowclass;
|
||||
@@ -1848,8 +1849,8 @@ function bes_list (pautfunction, params)
|
||||
// Extra data voor de client om daar dynamisch buttons te kunnen activeren.
|
||||
function fnrowData(oRs)
|
||||
{
|
||||
var besKey = oRs("bes_bestelling_key").value;
|
||||
var besType = oRs("bes_bestelling_module").value;
|
||||
var besKey = oRs("bes_bestelling_key").Value;
|
||||
var besType = oRs("bes_bestelling_module").Value;
|
||||
var data = {besKey: besKey, besType: besType};
|
||||
|
||||
return JSON.stringify(data);
|
||||
@@ -1858,8 +1859,10 @@ function bes_list (pautfunction, params)
|
||||
function fnrowActionEnablerFOBO(oRs)
|
||||
{
|
||||
var eEdit = true; // Altijd aanwezig
|
||||
var m_stat = oRs("bes_bestelling_status").value;
|
||||
if (m_stat == 3) // func_enabled_bestelling is traag, alleen als echt noodzakelijk
|
||||
var m_stat = oRs("bes_bestelling_status").Value;
|
||||
var fiatflow = oRs("bes_disc_params_fiatflow").Value;
|
||||
// Bepalen of Backoffice mag accepteren.
|
||||
if ((fiatflow == 0 && m_stat == 3) || (fiatflow == 1 && m_stat == 2)) // func_enabled_bestelling is traag, alleen als echt noodzakelijk
|
||||
{
|
||||
// We weten al dat we mogen lezen. Geef dat mee aan func_enabled_bestelling, die wordt daar efficienter van
|
||||
var bes_bestelling = bes.bestelling_info(oRs("bes_bestelling_key").Value);
|
||||
@@ -1867,7 +1870,8 @@ function bes_list (pautfunction, params)
|
||||
var eAccept = this_bes.canAccept || this_bes.canAccept2 || this_bes.canAccept3 || this_bes.canAccept4 || this_bes.canAccept5;
|
||||
var eReject = this_bes.canReject;
|
||||
}
|
||||
var eSubmit = (m_stat == 4 && !oRs("isordered").value); // eigenlijk this_bes.canSubmit maar we hebben niet
|
||||
var eSubmit = (((fiatflow == 0 && m_stat == 4) || (fiatflow == 1 && m_stat == 3)) &&
|
||||
!oRs("isordered").Value); // eigenlijk this_bes.canSubmit maar we hebben niet
|
||||
// altijd bes.func_enabled_bestelling gedaan
|
||||
|
||||
var data = {eAccept: eAccept, eReject: eReject, eEdit: eEdit, eSubmit: eSubmit};
|
||||
@@ -1879,31 +1883,34 @@ function bes_list (pautfunction, params)
|
||||
{ // in 5.0 is het onafhankelijk van bedragen, zie ../fac/fac_fiatttering_list voor meer uitleg
|
||||
// als hij nog niet volledig is gefiatteerd tonen we de eerstevolgende fiatteur
|
||||
// als hij wel volledig is gefiatteerd tonen we de laatste fiatteur
|
||||
var m_stat = oRs("bes_bestelling_status").value;
|
||||
if (m_stat == 2) // we zijn nog niet klaar met fiatteren
|
||||
var m_stat = oRs("bes_bestelling_status").Value;
|
||||
var fiatflow = oRs("bes_disc_params_fiatflow").Value;
|
||||
if ((fiatflow == 0 && m_stat == 2) || (fiatflow == 1 && m_stat == 4)) // we zijn nog niet klaar met fiatteren
|
||||
{
|
||||
approver = oRs.fields("fiatteur").value;
|
||||
approver = oRs.fields("fiatteur").Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
approver = oRs.fields("fiat_user").value; // die heeft eventueel gefiatteerd
|
||||
approver = oRs.fields("fiat_user").Value; // die heeft eventueel gefiatteerd
|
||||
}
|
||||
return safe.html(approver);
|
||||
}
|
||||
|
||||
function fncolStatus(oRs)
|
||||
{
|
||||
var m_stat = oRs("bes_bestelling_status").value;
|
||||
if (m_stat == 4 && !oRs("isordered").value)
|
||||
return fncolStatusOmschr(oRs) + "\nNog geen opdracht";
|
||||
var m_stat = oRs("bes_bestelling_status").Value;
|
||||
var fiatflow = oRs("bes_disc_params_fiatflow").Value;
|
||||
if (((fiatflow == 0 && m_stat == 4) || (fiatflow == 1 && m_stat == 3)) &&
|
||||
!oRs("isordered").Value)
|
||||
return fncolStatusOmschr(oRs) + "\n" + L("lcl_bes_no_order_yet");
|
||||
else
|
||||
return fncolStatusOmschr(oRs);
|
||||
}
|
||||
|
||||
function fncolOrderVoorFOBO(oRs)
|
||||
{
|
||||
var bestellingvoor = oRs("ordervoor").value
|
||||
if (!excel && oRs("prs_string").value == bestellingvoor)
|
||||
var bestellingvoor = oRs("ordervoor").Value
|
||||
if (!excel && oRs("prs_string").Value == bestellingvoor)
|
||||
bestellingvoor = "";
|
||||
return safe.html(bestellingvoor);
|
||||
}
|
||||
|
||||
@@ -213,7 +213,7 @@ IFRAMER_HEADER((bes_bestelling.fac_activiteit_key > 0? L("lcl_bes_frame_algemeen
|
||||
}
|
||||
BLOCK_END();
|
||||
|
||||
bes.generateBesInfoBlock(bes_bestelling, true, "RO");
|
||||
bes.generateBesInfoBlock(bes_bestelling, bes_disc_info, true, "RO");
|
||||
|
||||
BLOCK_START("besFlex"+(S("bes_flexcolumns")!=1?"2":"") , L("lcl_bes_flexblok"));
|
||||
%><tr><td class="besflex"><%
|
||||
|
||||
Reference in New Issue
Block a user