FSN#39054 Budgetcontrole uitbreiding: BGT module - savepoint
svn path=/Website/trunk/; revision=33394
This commit is contained in:
@@ -84,17 +84,23 @@ var transitParam = buildTransitParam([]);
|
||||
<% } %>
|
||||
FcltMgr.openDetail(url);
|
||||
}
|
||||
function naaropdrachten(ks_key, o_key, deze)
|
||||
<% if (groupby > 2) { %>
|
||||
function naaropdrachten(pr_key, ru_key, gr_key, ks_key, deze)
|
||||
{
|
||||
var url;
|
||||
<% if (groupby==2) { %>
|
||||
url = "appl/mld/mld_opdr.asp?urole=bgt&opdr_key="+ o_key;
|
||||
<% } %>
|
||||
<% if (groupby==3) { %>
|
||||
// TODO. opdr_list kent deze parameters [nog] niet en willen we dat wel.
|
||||
url = "appl/mld/opdr_list.asp?urole=bgt&ks_key="+ ks_key;
|
||||
<% } %>
|
||||
FcltMgr.openDetail(url, $(deze).text());
|
||||
}
|
||||
<% } %>
|
||||
<% if (groupby == 2) { %>
|
||||
function naaropdracht(o_key, deze)
|
||||
{
|
||||
var url;
|
||||
url = "appl/mld/mld_opdr.asp?urole=bgt&opdr_key="+ o_key;
|
||||
FcltMgr.openDetail(url, $(deze).text());
|
||||
}
|
||||
<% } %>
|
||||
function naarfacturen(ks_key, o_key, f_key, deze)
|
||||
{
|
||||
<% if (groupby==3) { %>
|
||||
@@ -218,144 +224,135 @@ var transitParam = buildTransitParam([]);
|
||||
+ "bgt_project_omschrijving"
|
||||
+ ",ks.prs_kostensoort_oms";
|
||||
|
||||
}
|
||||
else if (groupby ==3) // kostensoort-budget
|
||||
{
|
||||
// hier komt elke kostensoort *met een budget*, waarbij 0 of meer opdrachten kunnen bestaan
|
||||
// Let op: er kunnen budgetten op kostensoortgroep en rubriek zijn gedefinieerd, die zijn dus niet van de kostensoort
|
||||
// en worden afzonderlijk bijgevoegd (UNION) om wel het totaal te krijgen.
|
||||
|
||||
// Eerst de budgetten direct bij kostensoort
|
||||
var sql ="SELECT"
|
||||
+ " bud.bgt_budget_key,"
|
||||
+ " kr.bgt_kostenrubriek_oms rubriek,"
|
||||
+ " ksg.prs_kostensoortgrp_oms groep,"
|
||||
+ " ks.prs_kostensoort_opmerking onderdeel,"
|
||||
+ " ks.prs_kostensoort_oms rcode,"
|
||||
+ " bud.bgt_budget_bedrag budget,"
|
||||
+ " o.mld_opdr_kosten gecontracteerd,"
|
||||
+ " bud.bgt_budget_bedrag - COALESCE(o.mld_opdr_kosten,0) tecontracteren,"
|
||||
+ " ks.prs_kostensoort_key,"
|
||||
+ " SUM (f.fin_factuur_totaal) gefactureerd,"
|
||||
+ " COALESCE(o.mld_opdr_kosten,0) - SUM (COALESCE(f.fin_factuur_totaal,0)) tefactureren,"
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " ins_discipline_omschrijving project"
|
||||
+ " FROM mld_opdr o,"
|
||||
+ " prs_kostensoort ks,"
|
||||
+ " prs_kostensoortgrp ksg,"
|
||||
+ " bgt_kostenrubriek kr,"
|
||||
+ " bgt_budget bud,"
|
||||
+ " bgt_project pr,"
|
||||
+ " ins_tab_discipline id,"
|
||||
+ " fin_factuur f"
|
||||
+ " WHERE ks.prs_kostensoort_key = o.prs_kostensoort_key(+)"
|
||||
+ " AND ksg.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_key"
|
||||
+ " AND ks.prs_kostensoort_key = bud.prs_kostensoort_key"
|
||||
+ " AND pr.bgt_project_key = kr.bgt_project_key"
|
||||
+ " AND ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key"
|
||||
+ " AND f.mld_opdr_key(+) = o.mld_opdr_key"
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
+ (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "")
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key;
|
||||
sql += " GROUP BY "
|
||||
+ " bud.bgt_budget_key,"
|
||||
+ " kr.bgt_kostenrubriek_oms,"
|
||||
+ " ksg.prs_kostensoortgrp_oms,"
|
||||
+ " ks.prs_kostensoort_opmerking,"
|
||||
+ " ks.prs_kostensoort_oms,"
|
||||
+ " ks.prs_kostensoort_key,"
|
||||
+ " bgt_budget_bedrag,"
|
||||
+ " o.mld_opdr_kosten,"
|
||||
+ " bgt_project_omschrijving ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
|
||||
// Dan de budgetten direct bij kostensoortgroep; daar kunnen geen opdrachten of facturen bij zijn (IS DIT DAN TOCH DE IMPLICIETE RESERVE?)
|
||||
// NB: dit is dus niet het consolidatie-niveau met de optelling van de onderliggende budgetten maar de op hoger niveau gedefinieerde budgetten
|
||||
sql += " UNION SELECT"
|
||||
+ " bud.bgt_budget_key,"
|
||||
+ " kr.bgt_kostenrubriek_oms rubriek,"
|
||||
+ " ksg.prs_kostensoortgrp_oms groep,"
|
||||
+ " '"+ L("bgt_ksgbudget") +"' onderdeel,"
|
||||
+ " '?' rcode,"
|
||||
+ " bud.bgt_budget_bedrag budget,"
|
||||
+ " NULL gecontracteerd,"
|
||||
+ " NULL tecontracteren,"
|
||||
+ " NULL prs_kostensoort_key,"
|
||||
+ " NULL gefactureerd,"
|
||||
+ " NULL tefactureren,"
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " ins_discipline_omschrijving project"
|
||||
+ " FROM prs_kostensoortgrp ksg,"
|
||||
+ " bgt_kostenrubriek kr,"
|
||||
+ " bgt_budget bud,"
|
||||
+ " bgt_project pr,"
|
||||
+ " ins_tab_discipline id"
|
||||
+ " WHERE ksg.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_key"
|
||||
+ " AND ksg.prs_kostensoortgrp_key = bud.prs_kostensoortgrp_key"
|
||||
+ " AND bud.prs_kostensoort_key IS NULL"
|
||||
+ " AND pr.bgt_project_key = kr.bgt_project_key"
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
+ (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "")
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key;
|
||||
sql += " GROUP BY "
|
||||
+ " bud.bgt_budget_key,"
|
||||
+ " kr.bgt_kostenrubriek_oms,"
|
||||
+ " ksg.prs_kostensoortgrp_oms,"
|
||||
+ " bgt_budget_bedrag,"
|
||||
+ " bgt_project_omschrijving ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
|
||||
// En tenslotte de budgetten direct bij kostenrubriek; daar kunnen ook geen opdrachten of facturen bij zijn (IS DIT DAN TOCH DE IMPLICIETE RESERVE?)
|
||||
// NB: ook dit is dus niet het consolidatie-niveau met de optelling van de onderliggende budgetten maar de op hoger niveau gedefinieerde budgetten
|
||||
sql += " UNION SELECT"
|
||||
+ " bud.bgt_budget_key,"
|
||||
+ " kr.bgt_kostenrubriek_oms rubriek,"
|
||||
+ " '"+L("bgt_rubriekbudget")+"' groep,"
|
||||
+ " '' onderdeel,"
|
||||
+ " '' rcode,"
|
||||
+ " bud.bgt_budget_bedrag budget,"
|
||||
+ " NULL gecontracteerd,"
|
||||
+ " NULL tecontracteren,"
|
||||
+ " NULL prs_kostensoort_key,"
|
||||
+ " NULL gefactureerd,"
|
||||
+ " NULL tefactureren,"
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " ins_discipline_omschrijving project"
|
||||
+ " FROM bgt_kostenrubriek kr,"
|
||||
+ " bgt_budget bud,"
|
||||
+ " bgt_project pr,"
|
||||
+ " ins_tab_discipline id"
|
||||
+ " WHERE kr.bgt_kostenrubriek_key = bud.bgt_kostenrubriek_key"
|
||||
+ " AND bud.prs_kostensoort_key IS NULL"
|
||||
+ " AND bud.prs_kostensoortgrp_key IS NULL"
|
||||
+ " AND pr.bgt_project_key = kr.bgt_project_key"
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
+ (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "")
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key;
|
||||
sql += " GROUP BY "
|
||||
+ " bud.bgt_budget_key,"
|
||||
+ " kr.bgt_kostenrubriek_oms,"
|
||||
+ " bgt_budget_bedrag,"
|
||||
+ " bgt_project_omschrijving ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
|
||||
sql = "SELECT * FROM ("+sql+") ORDER BY deelproject, rcode, rubriek, groep, onderdeel";
|
||||
|
||||
}
|
||||
else // de rest
|
||||
{
|
||||
// Hierbij gaat het juist w<>l om de consolidatie, bgt_budget is de centrale tabel hier (is it?)
|
||||
// 3. kostensoort
|
||||
// 4. kostensoortgrp
|
||||
// 5. kostenrubriek
|
||||
// 6. deelproject
|
||||
|
||||
// Moet in 2x: eerst de budgetten (van meerdere levels) bepalen, straks de uitnutting (op 1 level)
|
||||
// Budgetten kunnen aan rubriek, groep of onderdeel (prs_kostensoort) gekoppeld zijn
|
||||
// Uitnutting kan alleen op onderdeel [prs_kostensoort). Dan wordt het best ingewikkeld, vandaar.
|
||||
// Uitnutting kan alleen op onderdeel (prs_kostensoort). Dan wordt het best ingewikkeld, vandaar.
|
||||
|
||||
// We maken gebruik van dat bij een budget op een bepaald niveau ook de bovenliggende keys gevuld zijn
|
||||
|
||||
// Om het leesbaar te houden toch maar 3 x uitschrijven.
|
||||
// Om het leesbaar te houden toch maar 4 x uitschrijven.
|
||||
|
||||
if (groupby == 3) // 3. kostensoort
|
||||
{
|
||||
// hier komt elke kostensoort *met een budget*, waarbij 0 of meer opdrachten kunnen bestaan
|
||||
// Let op: er kunnen budgetten op kostensoortgroep en rubriek zijn gedefinieerd, die zijn dus niet van de kostensoort
|
||||
// en daar zijn dus ook niet direct opdrachten en facturen bij.
|
||||
// Die worden afzonderlijk bijgevoegd (UNION) om wel het totaal te krijgen qua budget
|
||||
|
||||
// Eerst de budgetten direct bij kostensoort
|
||||
var sql1 = "SELECT"
|
||||
+ " ins_discipline_omschrijving project,"
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " kr.bgt_kostenrubriek_oms rubriek,"
|
||||
+ " ksg.prs_kostensoortgrp_oms groep,"
|
||||
+ " bud.prs_kostensoortgrp_key,"
|
||||
+ " bud.bgt_kostenrubriek_key,"
|
||||
+ " ks.prs_kostensoort_key,"
|
||||
+ " ks.prs_kostensoort_opmerking onderdeel,"
|
||||
+ " ks.prs_kostensoort_oms rcode,"
|
||||
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
|
||||
+ " FROM prs_kostensoort ks,"
|
||||
+ " prs_kostensoortgrp ksg,"
|
||||
+ " bgt_kostenrubriek kr,"
|
||||
+ " bgt_budget bud,"
|
||||
+ " bgt_project pr,"
|
||||
+ " ins_tab_discipline id"
|
||||
+ " WHERE ksg.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_key"
|
||||
+ " AND ks.prs_kostensoort_key = bud.prs_kostensoort_key"
|
||||
+ " AND pr.bgt_project_key = kr.bgt_project_key"
|
||||
+ " AND ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key"
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
+ (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "")
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key;
|
||||
sql1 += " GROUP BY "
|
||||
+ " ksg.prs_kostensoortgrp_oms,"
|
||||
+ " ks.prs_kostensoort_key,"
|
||||
+ " ks.prs_kostensoort_opmerking ,"
|
||||
+ " ks.prs_kostensoort_oms,"
|
||||
+ " bud.prs_kostensoortgrp_key,"
|
||||
+ " kr.bgt_kostenrubriek_oms,"
|
||||
+ " bud.bgt_kostenrubriek_key,"
|
||||
+ " pr.bgt_project_key,"
|
||||
+ " bgt_project_omschrijving ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
|
||||
// Dan de budgetten direct bij kostensoortgroep; daar kunnen geen opdrachten of facturen bij zijn (IS DIT DAN TOCH DE IMPLICIETE RESERVE?)
|
||||
// NB: DIT IS DUS NIET HET CONSOLIDATIE-NIVEAU MET DE OPTELLING VAN DE ONDERLIGGENDE BUDGETTEN maar de op hoger niveau gedefinieerde budgetten
|
||||
sql1 += " UNION SELECT"
|
||||
+ " ins_discipline_omschrijving project,"
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " kr.bgt_kostenrubriek_oms rubriek,"
|
||||
+ " ksg.prs_kostensoortgrp_oms groep,"
|
||||
+ " bud.prs_kostensoortgrp_key,"
|
||||
+ " bud.bgt_kostenrubriek_key,"
|
||||
+ " NULL,"
|
||||
+ " '"+ L("bgt_ksgbudget") +"' onderdeel,"
|
||||
+ " ksg.prs_kostensoortgrp_altcode rcode,"
|
||||
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
|
||||
+ " FROM prs_kostensoortgrp ksg,"
|
||||
+ " bgt_kostenrubriek kr,"
|
||||
+ " bgt_budget bud,"
|
||||
+ " bgt_project pr,"
|
||||
+ " ins_tab_discipline id"
|
||||
+ " WHERE ksg.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_key"
|
||||
+ " AND ksg.prs_kostensoortgrp_key = bud.prs_kostensoortgrp_key"
|
||||
+ " AND bud.prs_kostensoort_key IS NULL"
|
||||
+ " AND pr.bgt_project_key = kr.bgt_project_key"
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
+ (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "")
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key;
|
||||
sql1 += " GROUP BY "
|
||||
+ " ksg.prs_kostensoortgrp_oms,"
|
||||
+ " ksg.prs_kostensoortgrp_altcode,"
|
||||
+ " bud.prs_kostensoortgrp_key,"
|
||||
+ " kr.bgt_kostenrubriek_oms,"
|
||||
+ " bud.bgt_kostenrubriek_key,"
|
||||
+ " pr.bgt_project_key,"
|
||||
+ " bgt_project_omschrijving ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
|
||||
// En tenslotte de budgetten direct bij kostenrubriek; daar kunnen ook geen opdrachten of facturen bij zijn (IS DIT DAN TOCH DE IMPLICIETE RESERVE?)
|
||||
// NB: OOK DIT IS DUS NIET HET CONSOLIDATIE-NIVEAU MET DE OPTELLING VAN DE ONDERLIGGENDE BUDGETTEN maar de op hoger niveau gedefinieerde budgetten
|
||||
sql1 += " UNION SELECT"
|
||||
+ " ins_discipline_omschrijving project,"
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " kr.bgt_kostenrubriek_oms rubriek,"
|
||||
+ " '"+L("bgt_rubriekbudget")+"' groep,"
|
||||
+ " NULL prs_kostensoortgrp_key,"
|
||||
+ " bud.bgt_kostenrubriek_key,"
|
||||
+ " NULL,"
|
||||
+ " NULL onderdeel,"
|
||||
+ " kr.bgt_kostenrubriek_code||'. "+L("bgt_rubriekbudget")+"' rcode,"
|
||||
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
|
||||
+ " FROM bgt_kostenrubriek kr,"
|
||||
+ " bgt_budget bud,"
|
||||
+ " bgt_project pr,"
|
||||
+ " ins_tab_discipline id"
|
||||
+ " WHERE kr.bgt_kostenrubriek_key = bud.bgt_kostenrubriek_key"
|
||||
+ " AND bud.prs_kostensoort_key IS NULL"
|
||||
+ " AND bud.prs_kostensoortgrp_key IS NULL"
|
||||
+ " AND pr.bgt_project_key = kr.bgt_project_key"
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
+ (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "")
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key;
|
||||
sql1 += " GROUP BY "
|
||||
+ " kr.bgt_kostenrubriek_oms,"
|
||||
+ " kr.bgt_kostenrubriek_code,"
|
||||
+ " bgt_budget_bedrag,"
|
||||
+ " kr.bgt_kostenrubriek_oms,"
|
||||
+ " bud.bgt_kostenrubriek_key,"
|
||||
+ " bgt_project_omschrijving ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
}
|
||||
|
||||
if (groupby == 4) // 4. kostensoortgrp
|
||||
{
|
||||
@@ -490,17 +487,47 @@ var transitParam = buildTransitParam([]);
|
||||
+ " ins_discipline_omschrijving";
|
||||
}
|
||||
|
||||
// Vervolgens de besteding per kostensoort TODO HIER MOET NOG E.E.A. MET GROEPERING
|
||||
var sql2 ="SELECT"
|
||||
|
||||
// Deel 1 klaar: hierboven zijn de budgetten bepaald. Nu de besteding
|
||||
|
||||
// Eerst maar de OPDRACHTEN PER KOSTENSOORT
|
||||
var sql2a ="SELECT"
|
||||
+ " id.ins_discipline_key,"
|
||||
+ " pr.bgt_project_key,"
|
||||
+ (groupby < 6 ? " kr.bgt_kostenrubriek_key," : "")
|
||||
+ (groupby < 5 ? " ksg.prs_kostensoortgrp_key," : "")
|
||||
+ (groupby < 4 ? " ks.prs_kostensoort_key," : "")
|
||||
// + " COALESCE(o.mld_opdr_kosten,0) gecontracteerd,"
|
||||
+ " kr.bgt_kostenrubriek_key,"
|
||||
+ " ksg.prs_kostensoortgrp_key,"
|
||||
+ " ks.prs_kostensoort_key,"
|
||||
+ " SUM (COALESCE(o.mld_opdr_kosten,0)) gecontracteerd,"
|
||||
+ " SUM (f.fin_factuur_totaal) gefactureerd,"
|
||||
+ " SUM(COALESCE(o.mld_opdr_kosten,0)) - SUM (COALESCE(f.fin_factuur_totaal,0)) tefactureren"
|
||||
+ " NULL gefactureerd"
|
||||
+ " FROM mld_opdr o," /* zonder de facturen, anders wordt verdubbeld */
|
||||
+ " prs_kostensoort ks,"
|
||||
+ " prs_kostensoortgrp ksg,"
|
||||
+ " bgt_kostenrubriek kr,"
|
||||
+ " bgt_project pr,"
|
||||
+ " ins_tab_discipline id"
|
||||
+ " WHERE ks.prs_kostensoort_key = o.prs_kostensoort_key(+)"
|
||||
+ " AND ksg.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_key"
|
||||
+ " AND ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key"
|
||||
+ " AND pr.bgt_project_key = kr.bgt_project_key"
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
+ (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "")
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key;
|
||||
sql2a+= " GROUP BY "
|
||||
+ " id.ins_discipline_key,"
|
||||
+ " pr.bgt_project_key,"
|
||||
+ " kr.bgt_kostenrubriek_key,"
|
||||
+ " ksg.prs_kostensoortgrp_key,"
|
||||
+ " ks.prs_kostensoort_key";
|
||||
|
||||
// Vervolgens de FACTURATIE PER KOSTENSOORT
|
||||
var sql2b ="SELECT"
|
||||
+ " id.ins_discipline_key,"
|
||||
+ " pr.bgt_project_key,"
|
||||
+ " kr.bgt_kostenrubriek_key,"
|
||||
+ " ksg.prs_kostensoortgrp_key,"
|
||||
+ " ks.prs_kostensoort_key,"
|
||||
+ " NULL gecontracteerd,"
|
||||
+ " SUM (f.fin_factuur_totaal) gefactureerd"
|
||||
+ " FROM fin_factuur f,"
|
||||
+ " mld_opdr o,"
|
||||
+ " prs_kostensoort ks,"
|
||||
@@ -516,30 +543,57 @@ var transitParam = buildTransitParam([]);
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
+ (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "")
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key;
|
||||
sql2+= " GROUP BY "
|
||||
+ (groupby < 4 ? " ks.prs_kostensoort_key," : "")
|
||||
+ (groupby < 5 ? " ksg.prs_kostensoortgrp_key," : "")
|
||||
+ (groupby < 6 ? " kr.bgt_kostenrubriek_key," : "")
|
||||
+ " pr.bgt_project_key,"
|
||||
+ " id.ins_discipline_key";
|
||||
sql2b+= " GROUP BY "
|
||||
+ " id.ins_discipline_key,"
|
||||
+ " pr.bgt_project_key,"
|
||||
+ " kr.bgt_kostenrubriek_key,"
|
||||
+ " ksg.prs_kostensoortgrp_key,"
|
||||
+ " ks.prs_kostensoort_key";
|
||||
|
||||
// BESTEDING nu bepaald uit combinatie van bovenstaande opdrachten en facturen
|
||||
var sql2 ="SELECT"
|
||||
+ " opdr.ins_discipline_key,"
|
||||
+ " opdr.bgt_project_key,"
|
||||
+ " opdr.bgt_kostenrubriek_key,"
|
||||
+ " opdr.prs_kostensoortgrp_key,"
|
||||
+ " opdr.prs_kostensoort_key prs_kostensoort_key,"
|
||||
+ " SUM(opdr.gecontracteerd) gecontracteerd,"
|
||||
+ " SUM (fact.gefactureerd) gefactureerd,"
|
||||
+ " SUM(opdr.gecontracteerd) - SUM (fact.gefactureerd) tefactureren"
|
||||
+ " FROM (" + sql2a + ") opdr, (" + sql2b + ") fact "
|
||||
+ " WHERE opdr.prs_kostensoort_key(+) = fact.prs_kostensoort_key"
|
||||
+ " GROUP BY "
|
||||
+ " opdr.ins_discipline_key,"
|
||||
+ " opdr.bgt_project_key,"
|
||||
+ " opdr.bgt_kostenrubriek_key,"
|
||||
+ " opdr.prs_kostensoortgrp_key,"
|
||||
+ " opdr.prs_kostensoort_key";
|
||||
|
||||
|
||||
// Hier komen ze bij elkaar: de budgetten en de besteding, met de respectievelijke groeperingen
|
||||
// sql1 heeft de benamingen en de budgetten met kostensoort_key (die NULL kan zijn!), sql2 de kostensoort_key en de bestedingen
|
||||
var sql ="SELECT"
|
||||
+ " bud.project project,"
|
||||
+ " bud.deelproject deelproject,"
|
||||
+ (groupby < 6 ? " bud.rubriek rubriek, bud.rcode rcode, bud.bgt_kostenrubriek_key," : "")
|
||||
+ (groupby < 5 ? " bud.groep groep, bud.prs_kostensoortgrp_key," : "")
|
||||
+ (groupby < 4 ? " bud.onderdeel onderdeel," : "")
|
||||
+ " bud.budget budget,"
|
||||
+ " besteding.gecontracteerd gecontracteerd,"
|
||||
+ " bud.budget - besteding.gecontracteerd tecontracteren,"
|
||||
+ " -1 prs_kostensoort_key,"
|
||||
+ " besteding.gefactureerd gefactureerd,"
|
||||
+ " besteding.tefactureren tefactureren"
|
||||
+ " besteding.bgt_project_key,"
|
||||
+ (groupby <= 5 ? " bud.rubriek rubriek, bud.rcode rcode, bud.bgt_kostenrubriek_key," : "")
|
||||
+ (groupby <= 4 ? " bud.groep groep, bud.prs_kostensoortgrp_key," : "")
|
||||
+ (groupby <= 3 ? " bud.onderdeel onderdeel, besteding.prs_kostensoort_key," : "")
|
||||
+ " MAX(bud.budget) budget," /* is voor alle regels hetzelfde, kies er maar eentje, als je maar niet optelt */
|
||||
+ " SUM(besteding.gecontracteerd) gecontracteerd,"
|
||||
+ " MAX(bud.budget) - SUM(besteding.gecontracteerd) tecontracteren,"
|
||||
+ " SUM(besteding.gefactureerd) gefactureerd,"
|
||||
+ " SUM(besteding.tefactureren) tefactureren"
|
||||
+ " FROM (" + sql1 + ") bud, (" + sql2 + ") besteding "
|
||||
+ " WHERE "
|
||||
+ (groupby == 4 ? "bud.prs_kostensoortgrp_key = besteding.prs_kostensoortgrp_key(+)" : "") // kan ook zonder key (-1) budget zijn
|
||||
+ (groupby == 5 ? "bud.bgt_kostenrubriek_key = besteding.bgt_kostenrubriek_key" : "")
|
||||
+ (groupby == 6 ? "bud.bgt_project_key = besteding.bgt_project_key" : "");
|
||||
+ (groupby == 3 ? " WHERE bud.prs_kostensoort_key = besteding.prs_kostensoort_key " : "")
|
||||
+ (groupby == 4 ? " WHERE bud.prs_kostensoortgrp_key = besteding.prs_kostensoortgrp_key " : "")
|
||||
+ (groupby == 5 ? " WHERE bud.bgt_kostenrubriek_key = besteding.bgt_kostenrubriek_key " : "")
|
||||
+ (groupby == 6 ? " WHERE bud.bgt_project_key = besteding.bgt_project_key " : "")
|
||||
+ "GROUP BY "
|
||||
+ " bud.project, bud.deelproject, besteding.bgt_project_key"
|
||||
+ (groupby <= 5 ? " ,bud.rubriek, bud.rcode, bud.bgt_kostenrubriek_key" : "")
|
||||
+ (groupby <= 4 ? " ,bud.groep, bud.prs_kostensoortgrp_key" : "")
|
||||
+ (groupby <= 3 ? " ,bud.onderdeel, besteding.prs_kostensoort_key" : "");
|
||||
|
||||
sql += " ORDER BY "
|
||||
+ "project"
|
||||
@@ -560,8 +614,8 @@ var transitParam = buildTransitParam([]);
|
||||
v = ("<span class='details"+ (v<0 ? " negative" : "") +"' onclick='naarbudgetmutaties({0},null,null,this)'>" + v +"</span>").format(oRs("bgt_kostenrubriek_key").Value);
|
||||
else if (groupby == 4)
|
||||
v = ("<span class='details"+ (v<0 ? " negative" : "") +"' onclick='naarbudgetmutaties({0},{1},null,this)'>" + v +"</span>").format(oRs("bgt_kostenrubriek_key").Value, oRs("prs_kostensoortgrp_key").Value);
|
||||
else if (groupby == 3)
|
||||
v = ("<span class='details"+ (v<0 ? " negative" : "") +"' onclick='naarbudgetmutaties(null,null,{0},this)'>" + v +"</span>").format(oRs("bgt_budget_key").Value);
|
||||
// else if (groupby == 3)
|
||||
//todo v = ("<span class='details"+ (v<0 ? " negative" : "") +"' onclick='naarbudgetmutaties(null,null,{0},this)'>" + v +"</span>").format(oRs("bgt_budget_key").Value);
|
||||
else
|
||||
v = ("<span class='details"+ (v<0 ? " negative" : "") +"'>" + v +"</span>");
|
||||
return v;
|
||||
@@ -576,15 +630,18 @@ var transitParam = buildTransitParam([]);
|
||||
function ordersShow(oRs)
|
||||
{
|
||||
// Alleen als er opdrachten (kunnen) zijn laten we wat zien
|
||||
if (oRs("prs_kostensoort_key").Value)
|
||||
{
|
||||
var v = safe.curr(Math.round(oRs("gecontracteerd").Value), true);
|
||||
if (groupby==3)
|
||||
v = ("<span class='details' onclick='naaropdrachten({0}, {1}, this)'>" + v +"</span>").format(oRs("prs_kostensoort_key").Value, null);
|
||||
if (groupby==2)
|
||||
v = ("<span class='details' onclick='naaropdrachten({0}, {1}, this)'>" + v +"</span>").format(oRs("prs_kostensoort_key").Value, oRs("mld_opdr_key").Value);
|
||||
return v;
|
||||
}
|
||||
var v = safe.curr(Math.round(oRs("gecontracteerd").Value), true);
|
||||
if (groupby==6) /* het totale opdrachtenoverzicht */
|
||||
v = ("<span class='details' onclick='naaropdrachten({0}, this)'>" + v +"</span>").format(oRs("bgt_project_key").Value);
|
||||
else if (groupby==5) /* opdrachten binnen de rubriek */
|
||||
v = ("<span class='details' onclick='naaropdrachten({0}, {1}, this)'>" + v +"</span>").format(oRs("bgt_project_key").Value, oRs("bgt_kostenrubriek_key").Value);
|
||||
else if (groupby==4) /* opdrachten binnen de groep */
|
||||
v = ("<span class='details' onclick='naaropdrachten({0}, {1}, {2}, this)'>" + v +"</span>").format(oRs("bgt_project_key").Value, oRs("bgt_kostenrubriek_key").Value, oRs("prs_kostensoortgrp_key").Value);
|
||||
else if (groupby==3) /* opdrachten binnen de kostensoort */
|
||||
v = ("<span class='details' onclick='naaropdrachten({0}, {1}, {2}, {3}, this)'>" + v +"</span>").format(oRs("bgt_project_key").Value, oRs("bgt_kostenrubriek_key").Value, oRs("prs_kostensoortgrp_key").Value, oRs("prs_kostensoort_key").Value);
|
||||
else if (groupby==2) /* de opdracht */
|
||||
v = ("<span class='details' onclick='naaropdracht({0}, this)'>" + v +"</span>").format(oRs("mld_opdr_key").Value);
|
||||
return v;
|
||||
}
|
||||
function ordersAmount(oRs)
|
||||
{
|
||||
@@ -609,18 +666,18 @@ var transitParam = buildTransitParam([]);
|
||||
// KOLOM GEFACTUREERD
|
||||
function invoicesShow(oRs)
|
||||
{
|
||||
var v = safe.curr(Math.round(oRs("gefactureerd").Value), true);
|
||||
// Alleen als er opdrachten (kunnen) zijn laten we wat zien
|
||||
if (oRs("prs_kostensoort_key").Value)
|
||||
if (groupby < 4 && oRs("prs_kostensoort_key").Value)
|
||||
{
|
||||
var v = safe.curr(Math.round(oRs("gefactureerd").Value), true);
|
||||
if (groupby==3)
|
||||
v = ("<span class='details' onclick='naarfacturen({0}, {1}, {2}, this)'>" + v +"</span>").format(oRs("prs_kostensoort_key").Value, null, null);
|
||||
if (groupby==2)
|
||||
v = ("<span class='details' onclick='naarfacturen({0}, {1}, {2}, this)'>" + v +"</span>").format(null, oRs("mld_opdr_key").Value, null);
|
||||
if (groupby==1)
|
||||
v = ("<span class='details' onclick='naarfacturen({0}, {1}, {2}, this)'>" + v +"</span>").format(null, null, oRs("fin_factuur_key").Value);
|
||||
return v;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
function invoicesAmount(oRs)
|
||||
{
|
||||
@@ -689,7 +746,7 @@ var transitParam = buildTransitParam([]);
|
||||
rst.addColumn(new Column({caption: L("lcl_fin_invoice"), content: "factuur"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_fin_findate"), content: "factuurdatum"}));
|
||||
}
|
||||
if (groupby != 1)
|
||||
if (groupby != 1) // denk ik
|
||||
rst.addColumn(new Column({caption: L("bgt_opdrachten"), content: ordersShow, fnAmount: ordersAmount, datatype: "currency", total: true }));
|
||||
if (groupby > 2) // denk ik
|
||||
rst.addColumn(new Column({caption: L("bgt_opdrachtentogo"), content: orderstogoShow, fnAmount: orderstogoAmount, datatype: "currency", total: true }));
|
||||
|
||||
Reference in New Issue
Block a user