FSN#39054 Budgetcontrole uitbreiding: BGT module savepoint
svn path=/Website/trunk/; revision=32901
This commit is contained in:
@@ -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">
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user