240 lines
13 KiB
C++
240 lines
13 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: budget.inc
|
|
Description: Generieke functies die door BES en MLD module gebruikt worden.
|
|
Parameters:
|
|
Context: Vanuit asp bestand
|
|
Note:
|
|
|
|
*/ %>
|
|
<%
|
|
var budget = {
|
|
// Geeft true als het bestelde bedrag boven de profiel-limiet van prs_key komt
|
|
// en dus goedkeuring vereist zal zijn.
|
|
exceeds_profiel: function(bestelbedrag, prs_key, dis_key)
|
|
{
|
|
var exceed = true; // geen profiel is altijd te hoog.
|
|
var sql = "SELECT prs.getprofiellimiet(" + prs_key + ", " + dis_key + ") limiet FROM DUAL";
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
if (oRs("limiet").value != null)
|
|
{
|
|
exceed = (oRs("limiet").value < bestelbedrag);
|
|
}
|
|
oRs.Close();
|
|
return exceed;
|
|
},
|
|
|
|
// Geeft true als het bestelde bedrag boven de profiel-limiet van prs_key komt
|
|
// en dus goedkeuring vereist zal zijn.
|
|
exceeds_limietagb: function(bestelbedrag, kp_key, dis_key)
|
|
{
|
|
var exceed = true; // geen profiel is altijd te hoog.
|
|
var sql = "SELECT prs.getlimietagb(" + kp_key + ", " + S("prs_approvemethod") + ", " + dis_key + ") limiet FROM DUAL";
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
if (oRs("limiet").value != null)
|
|
{
|
|
exceed = (oRs("limiet").value < bestelbedrag);
|
|
}
|
|
oRs.Close();
|
|
return exceed;
|
|
},
|
|
|
|
besteed_budget_pgb: function (prs_key, dis_key, params)
|
|
{ // Besteed budget van meegegeven persoon dit jaar voor de meegegeven discipline i.v.m. Persoons Gebonden Budget (PGB).
|
|
// Eventueel uitgezonderd (huidige) bestellingkey bes_key en meldingopdrachtkey opdr_key.
|
|
var budgetbesteld = 0;
|
|
// De discipline instelling disc_params_pgb moet 1 of 3 zijn. Afhankelijk van deze instelling roep je de pgb of agb versie aan. Hier opnieuw controleren is niet nodig.
|
|
// Totaalbedrag van eerdere bestellingen en meldingopdrachten dit jaar van de besteller en behandelaar i.v.m. Persoons Gebonden Budget (PGB).
|
|
var sql = "SELECT SUM(totaalbedrag) totaalbedrag"
|
|
+ " , SUM(b.bes_bestelling_korting) korting"
|
|
+ " , SUM(b.bes_bestelling_levkosten) levkosten"
|
|
+ " FROM (SELECT SUM (boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_prijs) totaalbedrag"
|
|
+ " , b.bes_bestelling_key"
|
|
+ " FROM bes_bestelling b"
|
|
+ " , bes_bestelling_item bi"
|
|
+ " , bes_bestelopdr_item boi"
|
|
+ " , bes_bestelopdr bo"
|
|
+ " , bes_srtdeel isd"
|
|
+ " , bes_srtgroep isg"
|
|
+ " WHERE b.bes_bestelling_key = bi.bes_bestelling_key"
|
|
+ " AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key"
|
|
+ " AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key"
|
|
+ " AND bi.bes_srtdeel_key = isd.bes_srtdeel_key"
|
|
+ " AND isd.bes_srtgroep_key = isg.bes_srtgroep_key"
|
|
+ " AND b.prs_perslid_key = " + prs_key
|
|
+ " AND isg.ins_discipline_key = " + dis_key
|
|
// Alleen bestellingopdrachten in de behandelings fase (In bestelling (Bevestigd)(4)) en in de gereed fase (Geleverd(6) en Verwerkt(7)).
|
|
// Afgewezen(1), In behandeling(3), Ter bevestiging(5) en Geannuleerd(8) doen niet mee in de bepaling van geraamde en definitieve kosten.
|
|
+ " AND bo.bes_bestelopdr_status IN (4, 6, 7)"
|
|
+ (params && params.bes_key > -1
|
|
? " AND b.bes_bestelling_key <> " + params.bes_key
|
|
: "")
|
|
+ " AND b.bes_bestelling_datum >= TRUNC (SYSDATE, 'YEAR')"
|
|
+ " GROUP BY b.bes_bestelling_key) tot"
|
|
+ " , bes_bestelling b"
|
|
+ " WHERE b.bes_bestelling_key = tot.bes_bestelling_key"
|
|
+ " UNION "
|
|
+ "SELECT SUM (totaalbedrag) totaalbedrag"
|
|
+ " , 0 korting"
|
|
+ " , 0 levkosten"
|
|
+ " FROM (SELECT SUM (o.mld_opdr_kosten) totaalbedrag"
|
|
+ " , o.mld_opdr_key"
|
|
+ " FROM mld_opdr o"
|
|
+ " , mld_melding m"
|
|
+ " , mld_stdmelding sm"
|
|
+ " WHERE o.mld_melding_key = m.mld_melding_key"
|
|
+ " AND m.mld_stdmelding_key = sm.mld_stdmelding_key"
|
|
+ " AND o.prs_perslid_key = " + prs_key
|
|
+ " AND sm.mld_ins_discipline_key = " + dis_key
|
|
// Alleen meldingopdrachten in de actieve opdracht fase (Uitgegeven(5) en Geaccepteerd(8)),
|
|
// in de afhandelings fase (Technisch voltooid(6) en Kosten voltooid(9)) en in de gereed fase (Verwerkt(7)).
|
|
+ " AND o.mld_statusopdr_key IN (5, 6, 7, 8, 9)"
|
|
+ (params && params.opdr_key > -1
|
|
? " AND o.mld_opdr_key <> " + params.opdr_key
|
|
: "")
|
|
+ " AND o.mld_opdr_datumbegin >= TRUNC (SYSDATE, 'YEAR')"
|
|
+ " GROUP BY o.mld_opdr_key) tot"
|
|
+ " , mld_opdr o"
|
|
+ " WHERE o.mld_opdr_key = tot.mld_opdr_key";
|
|
sql = "SELECT SUM(totaalbedrag) totaalbedrag"
|
|
+ " , SUM(korting) korting"
|
|
+ " , SUM(levkosten) levkosten"
|
|
+ " FROM (" + sql + ")";
|
|
oRs = Oracle.Execute(sql);
|
|
var prstotaalbesteld = oRs("totaalbedrag").Value || 0;
|
|
var korting = oRs("korting").Value || 0;
|
|
var levkosten = oRs("levkosten").Value || 0;
|
|
var budgetbesteld = prstotaalbesteld - korting + levkosten;
|
|
oRs.close();
|
|
return budgetbesteld;
|
|
},
|
|
|
|
besteed_budget_agb: function (kp_key, params)
|
|
{ // Besteed budget van meegegeven persoon afgelopen periode i.v.m. Afdelings Gebonden Budget (AGB).
|
|
// Eventueel uitgezonderd (huidige) bestellingkey bes_key en meldingopdrachtkey opdr_key.
|
|
var budgetbesteld = 0;
|
|
// De discipline instelling disc_params_pgb moet 1 of 3 zijn. Afhankelijk van deze instelling roep je de pgb of agb versie aan. Hier opnieuw controleren is niet nodig.
|
|
// Totaalbedrag van eerdere bestellingen en meldingopdrachten van afgelopen periode van de besteller en behandeaar i.v.m. Afdelings Gebonden Budget (AGB).
|
|
|
|
// Limietperiode kostenplaats (prs_kostenplaats_limietperiode): 0(of NULL)=geen(oneindig) (default), 1=maand, 2=jaar.
|
|
if (kp_key > 0)
|
|
{ // Er is een kostenplaats gevonden.
|
|
// De limiet periode van de kostenplaatsgroep overruled die van de kostenplaats indien ingevuld.
|
|
sql = "SELECT CASE COALESCE(kg.prs_kostenplaatsgrp_limperiode, 0)" // Indien kostenplaats geen kostenplaatsgroep heeft dan ook "Geen" en eigen limietperiode van de kostenplaats nemen.
|
|
+ " WHEN 0" // Geen.
|
|
+ " THEN k.prs_kostenplaats_limietperiode"
|
|
+ " ELSE kg.prs_kostenplaatsgrp_limperiode" // Maand of Jaar.
|
|
+ " END limietperiode"
|
|
+ " FROM prs_kostenplaats k"
|
|
+ " , prs_kostenplaatsgrp kg"
|
|
+ " WHERE k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key(+)"
|
|
+ " AND k.prs_kostenplaats_key = " + kp_key;
|
|
oRs = Oracle.Execute(sql);
|
|
var kp_limietperiode = oRs("limietperiode").Value;
|
|
var periode;
|
|
if (kp_limietperiode == 1)
|
|
periode = "MM"; // Maandelijks budget.
|
|
else if (kp_limietperiode == 2)
|
|
periode = "YYYY"; // Jaarlijks budget.
|
|
|
|
sql = "SELECT SUM(totaalbedrag) totaalbedrag"
|
|
+ " , SUM(b.bes_bestelling_korting) korting"
|
|
+ " , SUM(b.bes_bestelling_levkosten) levkosten"
|
|
+ " FROM (SELECT SUM (boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_prijs) totaalbedrag"
|
|
+ " , b.bes_bestelling_key"
|
|
+ " FROM bes_bestelling b"
|
|
+ " , bes_bestelling_item bi"
|
|
+ " , bes_bestelopdr_item boi"
|
|
+ " , bes_bestelopdr bo"
|
|
+ " , bes_srtdeel bsd"
|
|
+ " , bes_srtgroep bsg"
|
|
+ " , bes_discipline bd"
|
|
+ " , bes_disc_params bdp"
|
|
+ " WHERE b.bes_bestelling_key = bi.bes_bestelling_key"
|
|
+ " AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key"
|
|
+ " AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key"
|
|
+ " AND bi.bes_srtdeel_key = bsd.bes_srtdeel_key"
|
|
+ " AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key"
|
|
+ " AND bsg.ins_discipline_key = bd.ins_discipline_key"
|
|
+ " AND bsg.ins_discipline_key = bdp.bes_ins_discipline_key"
|
|
+ " AND bdp.bes_disc_params_pgb IN (2, 3)" // Alleenn agb meetellen: 2 = Alleen agb, 3 = Beiden, pgb en agb.
|
|
+ " AND b.prs_kostenplaats_key = " + kp_key
|
|
// Alleen bestellingopdrachten in de behandelings fase (In bestelling (Bevestigd)(4)) en in de gereed fase (Geleverd(6) en Verwerkt(7)).
|
|
// Afgewezen(1), In behandeling(3), Ter bevestiging(5) en Geannuleerd(8) doen niet mee in de bepaling van geraamde en definitieve kosten.
|
|
+ " AND bo.bes_bestelopdr_status IN (4, 6, 7)"
|
|
+ (params && params.bes_key > -1
|
|
? " AND b.bes_bestelling_key <> " + params.bes_key
|
|
: "")
|
|
+ (kp_limietperiode && kp_limietperiode > 0
|
|
? " AND b.bes_bestelling_datum >= TRUNC (SYSDATE, " + safe.quoted_sql(periode) + ")" // De eerste van de deze maand of 1 januari dit jaar
|
|
: "")
|
|
+ " GROUP BY b.bes_bestelling_key) tot"
|
|
+ " , bes_bestelling b"
|
|
+ " WHERE b.bes_bestelling_key = tot.bes_bestelling_key"
|
|
+ " UNION "
|
|
+ "SELECT SUM (totaalbedrag) totaalbedrag"
|
|
+ " , 0 korting"
|
|
+ " , 0 levkosten"
|
|
+ " FROM (SELECT SUM (o.mld_opdr_kosten) totaalbedrag"
|
|
+ " , o.mld_opdr_key"
|
|
+ " FROM mld_opdr o"
|
|
+ " , mld_melding m"
|
|
+ " , mld_stdmelding sm"
|
|
+ " , mld_discipline md"
|
|
+ " , mld_disc_params mdp"
|
|
+ " WHERE o.mld_melding_key = m.mld_melding_key"
|
|
+ " AND m.mld_stdmelding_key = sm.mld_stdmelding_key"
|
|
+ " AND sm.mld_ins_discipline_key = md.ins_discipline_key"
|
|
+ " AND md.ins_discipline_key = mdp.mld_ins_discipline_key"
|
|
+ " AND mdp.mld_disc_params_pgb IN (2,3)" // Alleenn agb meetellen: 2 = Alleen agb, 3 = Beiden, pgb en agb.
|
|
+ " AND o.prs_kostenplaats_key = " + kp_key
|
|
// Alleen meldingopdrachten in de actieve opdracht fase (Uitgegeven(5) en Geaccepteerd(8)),
|
|
// in de afhandelings fase (Technisch voltooid(6) en Kosten voltooid(9)) en in de gereed fase (Verwerkt(7)).
|
|
+ " AND o.mld_statusopdr_key IN (5, 6, 7, 8, 9)"
|
|
+ (params && params.opdr_key > -1
|
|
? " AND o.mld_opdr_key <> " + params.opdr_key
|
|
: "")
|
|
+ (kp_limietperiode && kp_limietperiode > 0
|
|
? " AND o.mld_opdr_datumbegin >= TRUNC (SYSDATE, " + safe.quoted_sql(periode) + ")" // De eerste van de deze maand of 1 januari dit jaar
|
|
: "")
|
|
+ " GROUP BY o.mld_opdr_key) tot"
|
|
+ " , mld_opdr o "
|
|
+ " WHERE o.mld_opdr_key = tot.mld_opdr_key";
|
|
sql = "SELECT SUM(totaalbedrag) totaalbedrag"
|
|
+ " , SUM(korting) korting"
|
|
+ " , SUM(levkosten) levkosten"
|
|
+ " FROM (" + sql + ")";
|
|
oRs = Oracle.Execute(sql);
|
|
var prstotaalbesteld = oRs("totaalbedrag").Value || 0;
|
|
var korting = oRs("korting").Value || 0;
|
|
var levkosten = oRs("levkosten").Value || 0;
|
|
var budgetbesteld = prstotaalbesteld - korting + levkosten;
|
|
oRs.close();
|
|
}
|
|
return budgetbesteld;
|
|
},
|
|
|
|
get_pgblimiet: function(prs_key, dis_key)
|
|
{ // Bepaal PGB limiet
|
|
var sql = "SELECT prs.getprofiellimiet(" + prs_key + ", " + dis_key + ") pgblimiet FROM DUAL";
|
|
var oRs = Oracle.Execute(sql);
|
|
var pgblimiet = oRs("pgblimiet").Value;
|
|
oRs.close();
|
|
return pgblimiet;
|
|
},
|
|
|
|
get_agblimiet: function(kp_key, dis_key)
|
|
{ // Bepaal AGB limiet
|
|
var sql = "SELECT prs.getlimietagb(" + kp_key + ", " + S("prs_approvemethod") + ", " + dis_key + ") agblimiet FROM DUAL";
|
|
var oRs = Oracle.Execute(sql);
|
|
var agblimiet = oRs("agblimiet").Value;
|
|
oRs.close();
|
|
return agblimiet;
|
|
}
|
|
}
|
|
%>
|