FSN#39054 Budgetcontrole uitbreiding: BGT module savepoint

svn path=/Website/trunk/; revision=32901
This commit is contained in:
Peter Feij
2017-02-22 13:24:27 +00:00
parent 13e24a2ae4
commit 77ab684c0b
2 changed files with 301 additions and 62 deletions

View File

@@ -33,37 +33,12 @@ var bgtdisc_key = getQParamInt("dis_key"); // Project
var bgtproj_key = getQParamInt("bgtproj_key", -1); // Deelproject
var groupby = getQParamInt("groupby", -1); // Groepering
/*if (bgtdisc_key <= 0) // Als er maar eentje is selecteer die automatisch
{
var sql = "SELECT ins_discipline_key"
+ " FROM bgt_disc_params cdp, bgt_discipline cd"
+ " WHERE cdp.ctr_ins_discipline_key = cd.ins_discipline_key"
+ " AND cd.ins_discipline_verwijder IS NULL"
+ " AND cdp.ctr_disc_params_ismjob = 1";
var oRs = Oracle.Execute(sql);
if (!oRs.Eof)
{
var key = oRs("ins_discipline_key").Value;
oRs.MoveNext();
if (oRs.Eof)
bgtdisc_key = key;
}
oRs.Close();
}
*/
if (bgtdisc_key > 0)
lcl.set_dialect(bgtdisc_key, "INS_TAB_DISCIPLINE_KEY");
var autfunctionBGTUSE = "WEB_BGTUSE";
var authparamsBGTUSE = user.checkAutorisation("WEB_BGTUSE");
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
function doSubmit()
@@ -90,7 +65,8 @@ var authparamsBGTUSE = user.checkAutorisation("WEB_BGTUSE");
<%
var sql = "SELECT bgt_project_key, bgt_project_code||' '||bgt_project_omschrijving "
+ " FROM bgt_project"
+ " WHERE ins_discipline_key = "+ bgtdisc_key;
+ " WHERE ins_discipline_key = "+ bgtdisc_key
+ " ORDER BY bgt_project_volgnr";
FCLTselector("bgtproj_key",
sql,
@@ -102,10 +78,11 @@ var authparamsBGTUSE = user.checkAutorisation("WEB_BGTUSE");
initKey: bgtproj_key
}
);
sql = "SELECT "
+ " 1, " + safe.qL("lcl_fin_invoices") + ", 6 FROM DUAL"
+ " UNION SELECT 2, " + safe.qL("lcl_orders") + ", 5 FROM DUAL"
+ " UNION SELECT 3, " + safe.qL("prs_kostensoort") + ", 4 FROM DUAL"
+ " UNION SELECT 3, " + safe.qL("prs_kostensoort") + ", 4 FROM DUAL" // de default
+ " UNION SELECT 4, " + safe.qL("prs_kostensoortgrp") + ", 3 FROM DUAL"
+ " UNION SELECT 5, " + safe.qL("bgt_kostenrubriek") + ", 2 FROM DUAL"
+ " UNION SELECT 6, " + safe.qL("bgt_project") + ", 1 FROM DUAL"
@@ -122,7 +99,7 @@ var authparamsBGTUSE = user.checkAutorisation("WEB_BGTUSE");
</td><!-- end column 1 -->
<!-- Second column -->
<td valign=top>
<td>
</td><!-- end column 2-->
</tr>
@@ -131,7 +108,6 @@ var authparamsBGTUSE = user.checkAutorisation("WEB_BGTUSE");
CreateButtons(buttons, { entersubmit: true} );
%>
</form>
</div><!--search-->
<div id="result">

View File

@@ -50,7 +50,6 @@ var groupby = getQParamInt("groupby");
// -1. niks
// 1. facturen
// 2. opdrachten
// 3. kostensoort
// 4. kostensoortgrp
// 5. kostenrubriek
@@ -78,16 +77,25 @@ var transitParam = buildTransitParam([]);
var url = "appl/bgt/bgt_mutaties.asp?ks_key=" + ks_key ; // todo
FcltMgr.openDetail(url, $(deze).text());
}
function naaropdrachten(ks_key, deze)
function naaropdrachten(ks_key, o_key, deze)
{
// zoiets. Of naar opdr_list.asp waar dan kostensoort_key ook een nieuwe optie is?
var url = "appl/mld/opdr_search.asp?urole=bgt&ks_key="+ks_key; //todo
var url;
<% if (groupby==2) { %>
url = "appl/mld/mld_opdr.asp?urole=bgt&opdr_key="+ o_key;
<% } %>
<% if (groupby==3) { %>
url = "appl/mld/opdr_list.asp?urole=bgt&ks_key="+ ks_key;
<% } %>
FcltMgr.openDetail(url, $(deze).text());
}
function naarfacturen(ks_key, deze)
function naarfacturen(ks_key, f_key, deze)
{
// zoiets. Of naar fin_search.asp ?
<% if (groupby==3 || groupby==2) { %>
var url = "appl/fin/fin_list.asp?urole=bgt&ks_key="+ks_key; //todo
<% } %>
<% if (groupby==1) { %>
var url = "appl/fin/fin_factuur.asp?urole=bgt&fin_key="+f_key;
<% } %>
FcltMgr.openDetail(url, $(deze).text());
}
<%
@@ -101,16 +109,16 @@ var transitParam = buildTransitParam([]);
// zoiets moet het dan gaan worden. Vast nog wat verfijnder. UNIONs met reserve e.d. nodig?
if (groupby == 1) // facturen
{
// hier heeft elke factuur precies 1 regel
var sql ="SELECT"
+ " kr.bgt_kostenrubriek_oms rubriek,"
+ " ksg.prs_kostensoortgrp_oms groep,"
+ " ks.prs_kostensoort_opmerking onderdeel,"
// + " bud.bgt_budget_bedrag budget,"
+ " o.prs_kostensoort_key,"
+ " b.prs_bedrijf_naam uitvoerder,"
+ " o.mld_opdr_id opdrachtnr,"
//+ " o.mld_opdr_kosten gecontracteerd,"
// + " bud.bgt_budget_bedrag" + " - SUM (COALESCE(o.mld_opdr_kosten,0)) tecontracteren,"
+ " f.fin_factuur_nr factuur,"
+ " f.fin_factuur_key,"
+ " f.fin_factuur_datum factuurdatum,"
+ " f.fin_factuur_totaal gefactureerd,"
+ " bgt_project_omschrijving deelproject,"
@@ -124,7 +132,7 @@ var transitParam = buildTransitParam([]);
+ " bgt_project pr,"
+ " ins_tab_discipline id,"
+ " fin_factuur f"
+ " WHERE o.prs_kostensoort_key(+) = ks.prs_kostensoort_key"
+ " WHERE ks.prs_kostensoort_key = o.prs_kostensoort_key(+)" // outer niet nodig toch
+ " 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"
@@ -140,19 +148,24 @@ var transitParam = buildTransitParam([]);
+ ",kr.bgt_kostenrubriek_oms"
+ ",ksg.prs_kostensoortgrp_oms"
+ ",ks.prs_kostensoort_opmerking"
+ ",o.prs_kostensoort_key"
+ ",b.prs_bedrijf_naam"
+ ",f.fin_factuur_key"
+ ",f.fin_factuur_datum";
}
else if (groupby ==2) // opdrachten
{
// hier heeft elke opdracht precies 1 regel
var sql ="SELECT"
+ " kr.bgt_kostenrubriek_oms rubriek,"
+ " ksg.prs_kostensoortgrp_oms groep,"
+ " ks.prs_kostensoort_opmerking onderdeel,"
// + " bud.bgt_budget_bedrag budget,"
+ " b.prs_bedrijf_naam uitvoerder,"
+ " o.mld_opdr_key,"
+ " o.mld_opdr_id opdrachtnr,"
+ " o.mld_opdr_datumbegin opdrachtdatum,"
+ " o.prs_kostensoort_key,"
+ " o.mld_opdr_kosten gecontracteerd,"
// + " bud.bgt_budget_bedrag" + " - SUM (COALESCE(o.mld_opdr_kosten,0)) tecontracteren,"
+ " SUM (f.fin_factuur_totaal) gefactureerd,"
@@ -168,11 +181,11 @@ var transitParam = buildTransitParam([]);
+ " bgt_project pr,"
+ " ins_tab_discipline id,"
+ " fin_factuur f"
+ " WHERE o.prs_kostensoort_key(+) = ks.prs_kostensoort_key"
+ " 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 ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key"
+ " AND b.prs_bedrijf_key = o.mld_uitvoerende_keys"
+ " AND f.mld_opdr_key(+) = o.mld_opdr_key"
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
@@ -186,6 +199,8 @@ var transitParam = buildTransitParam([]);
+ " prs_bedrijf_naam,"
+ " mld_opdr_kosten,"
+ " mld_opdr_id,"
+ " o.mld_opdr_key,"
+ " o.prs_kostensoort_key,"
+ " mld_opdr_datumbegin,"
+ " bgt_project_omschrijving ,"
+ " ins_discipline_omschrijving";
@@ -196,16 +211,21 @@ var transitParam = buildTransitParam([]);
+ ",ksg.prs_kostensoortgrp_oms"
+ ",ks.prs_kostensoort_opmerking";
}
else // de rest
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"
+ (groupby >= 6 ? "" : " kr.bgt_kostenrubriek_oms rubriek,")
+ (groupby >= 5 ? "" : " ksg.prs_kostensoortgrp_oms groep,")
+ (groupby >= 4 ? "" : " ks.prs_kostensoort_opmerking onderdeel,")
+ (groupby >= 4 ? " SUM(bud.bgt_budget_bedrag)" : " bud.bgt_budget_bedrag") + " budget," // TODO: DIT IS ONJUIST bij hogere groeperingen
+ " kr.bgt_kostenrubriek_oms rubriek,"
+ " ksg.prs_kostensoortgrp_oms groep,"
+ " ks.prs_kostensoort_opmerking onderdeel,"
+ " bud.bgt_budget_bedrag budget,"
+ " SUM (o.mld_opdr_kosten) gecontracteerd,"
+ (groupby >= 4 ? " SUM(bud.bgt_budget_bedrag)" : " bud.bgt_budget_bedrag") + " - SUM (COALESCE(o.mld_opdr_kosten,0)) tecontracteren,"
+ " bud.bgt_budget_bedrag - SUM (COALESCE(o.mld_opdr_kosten,0)) tecontracteren,"
+ " ks.prs_kostensoort_key,"
+ " SUM (f.fin_factuur_totaal) gefactureerd,"
+ " SUM (COALESCE(o.mld_opdr_kosten,0)) - SUM (COALESCE(f.fin_factuur_totaal,0)) tefactureren,"
+ " bgt_project_omschrijving deelproject,"
@@ -218,28 +238,257 @@ var transitParam = buildTransitParam([]);
+ " bgt_project pr,"
+ " ins_tab_discipline id,"
+ " fin_factuur f"
+ " WHERE o.prs_kostensoort_key(+) = ks.prs_kostensoort_key"
+ " 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 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 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 "
+ (groupby >= 6 ? "" : " kr.bgt_kostenrubriek_oms,")
+ (groupby >= 5 ? "" : " ksg.prs_kostensoortgrp_oms,")
+ (groupby >= 4 ? "" : " ks.prs_kostensoort_opmerking,")
+ (groupby >= 4 ? "" : " bgt_budget_bedrag,")
+ " bgt_project_omschrijving ,"
+ " ins_discipline_omschrijving";
+ " kr.bgt_kostenrubriek_oms,"
+ " ksg.prs_kostensoortgrp_oms,"
+ " ks.prs_kostensoort_opmerking,"
+ " ks.prs_kostensoort_key,"
+ " bgt_budget_bedrag,"
+ " 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"
+ " kr.bgt_kostenrubriek_oms rubriek,"
+ " ksg.prs_kostensoortgrp_oms groep,"
+ " '"+ L("bgt_ksgbudget") +"' onderdeel,"
+ " 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 "
+ " 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"
+ " kr.bgt_kostenrubriek_oms rubriek,"
+ " '"+L("bgt_rubriekbudget")+"' groep,"
+ " '' onderdeel,"
+ " 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 "
+ " kr.bgt_kostenrubriek_oms,"
+ " bgt_budget_bedrag,"
+ " bgt_project_omschrijving ,"
+ " ins_discipline_omschrijving";
sql = "SELECT * FROM ("+sql+") ORDER BY deelproject, rubriek, groep, onderdeel";
}
else // de rest
{
// Hierbij gaat het juist w<>l om de consolidatie, bgt_budget is de centrale tabel hier (is it?)
// 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.
// 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.
if (groupby == 4) // 4. kostensoortgrp
{
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,"
+ " 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 bud.prs_kostensoortgrp_key = ksg.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;
sql1 += " GROUP BY "
+ " kr.bgt_kostenrubriek_oms,"
+ " ksg.prs_kostensoortgrp_oms,"
+ " bud.prs_kostensoortgrp_key,"
+ " pr.bgt_project_key,"
+ " bgt_project_omschrijving ,"
+ " ins_discipline_omschrijving";
// Hier ook de budgetten direct bij kostenrubriek, die komen immers bij de kostensoortgroep niet mee
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_budget_bedrag 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,"
+ " bgt_budget_bedrag,"
+ " bgt_project_omschrijving ,"
+ " ins_discipline_omschrijving";
}
if (groupby == 5) // 5. kostenrubriek
{
var sql1 ="SELECT"
+ " ins_discipline_omschrijving project,"
+ " bgt_project_omschrijving deelproject,"
+ " kr.bgt_kostenrubriek_oms rubriek,"
+ " kr.bgt_kostenrubriek_key,"
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
+ " FROM bgt_kostenrubriek kr,"
+ " bgt_budget bud,"
+ " bgt_project pr,"
+ " ins_tab_discipline id"
+ " WHERE bud.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_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;
sql1 += " GROUP BY "
+ " kr.bgt_kostenrubriek_oms,"
+ " kr.bgt_kostenrubriek_key,"
+ " bgt_project_omschrijving ,"
+ " ins_discipline_omschrijving";
}
if (groupby == 6) // 6. deelproject
{
var sql1 ="SELECT"
+ " ins_discipline_omschrijving project,"
+ " bgt_project_omschrijving deelproject,"
+ " pr.bgt_project_key,"
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
+ " FROM bgt_budget bud,"
+ " bgt_project pr,"
+ " ins_tab_discipline id"
+ " WHERE bud.bgt_project_key = pr.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 "
+ " pr.bgt_project_key,"
+ " bgt_project_omschrijving ,"
+ " ins_discipline_omschrijving";
}
// Vervolgens de besteding per kostensoort
var sql2 ="SELECT"
+ " id.ins_discipline_key,"
+ " pr.bgt_project_key,"
+ (groupby >= 6 ? "" : " kr.bgt_kostenrubriek_key,")
+ (groupby >= 5 ? "" : " ksg.prs_kostensoortgrp_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"
+ " FROM mld_opdr o,"
+ " prs_kostensoort ks,"
+ " prs_kostensoortgrp ksg,"
+ " bgt_kostenrubriek kr,"
+ " 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 ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key"
+ " AND pr.bgt_project_key = kr.bgt_project_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;
sql2+= " GROUP BY "
+ (groupby >= 7 ? "" : " pr.bgt_project_key,")
+ (groupby >= 6 ? "" : " kr.bgt_kostenrubriek_key,")
+ (groupby >= 5 ? "" : " ksg.prs_kostensoortgrp_key,")
+ " id.ins_discipline_key";
var sql ="SELECT"
+ " bud.project project,"
+ " bud.deelproject deelproject,"
+ (groupby >= 6 ? "" : " bud.rubriek rubriek,")
+ (groupby >= 5 ? "" : " bud.groep groep,")
+ (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"
+ " 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" : "");
sql += " ORDER BY "
+ (groupby >= 7 ? "" : "bgt_project_omschrijving")
+ (groupby >= 6 ? "" : ",kr.bgt_kostenrubriek_oms")
+ (groupby >= 5 ? "" : ",ksg.prs_kostensoortgrp_oms")
+ (groupby >= 4 ? "" : ",ks.prs_kostensoort_opmerking");
+ (groupby >= 7 ? "" : "project")
+ (groupby >= 6 ? "" : ",rubriek")
+ (groupby >= 5 ? "" : ",groep")
+ (groupby >= 4 ? "" : ",onderdeel");
}
var buttons = [];
@@ -261,9 +510,16 @@ var transitParam = buildTransitParam([]);
// KOLOM GECONTRACTEERD
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 (true) v = ("<span class='details' onclick='naaropdrachten({0}, this)'>" + v +"</span>").format(41); // todo ks_key uit query
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;
}
}
function ordersAmount(oRs)
{
@@ -288,9 +544,16 @@ var transitParam = buildTransitParam([]);
// KOLOM GEFACTUREERD
function invoicesShow(oRs)
{
// Alleen als er opdrachten (kunnen) zijn laten we wat zien
if (oRs("prs_kostensoort_key").Value)
{
var v = safe.curr(Math.round(oRs("gefactureerd").Value), true);
if (true) v = ("<span class='details' onclick='naarfacturen({0}, this)'>" + v +"</span>").format(41); // todo ks_key uit query
if (groupby==2 || groupby==3)
v = ("<span class='details' onclick='naarfacturen({0}, {1}, this)'>" + v +"</span>").format(0, null); // todo ks_key uit query
if (groupby==1)
v = ("<span class='details' onclick='naarfacturen({0}, {1}, this)'>" + v +"</span>").format(null, oRs("fin_factuur_key").Value); // todo ks_key uit query
return v;
}
}
function invoicesAmount(oRs)
{