FSN#39054 Budgetcontrole uitbreiding: BGT module - savepoint
svn path=/Website/trunk/; revision=33395
This commit is contained in:
@@ -131,6 +131,7 @@ var transitParam = buildTransitParam([]);
|
||||
+ " ksg.prs_kostensoortgrp_oms groep,"
|
||||
+ " ks.prs_kostensoort_opmerking onderdeel,"
|
||||
+ " ks.prs_kostensoort_oms rcode,"
|
||||
+ " ks.prs_kostensoort_oms sortcode,"
|
||||
+ " o.prs_kostensoort_key,"
|
||||
+ " b.prs_bedrijf_naam uitvoerder,"
|
||||
+ " o.mld_opdr_id opdrachtnr,"
|
||||
@@ -174,6 +175,7 @@ var transitParam = buildTransitParam([]);
|
||||
+ " ksg.prs_kostensoortgrp_oms groep,"
|
||||
+ " ks.prs_kostensoort_opmerking onderdeel,"
|
||||
+ " ks.prs_kostensoort_oms rcode,"
|
||||
+ " ks.prs_kostensoort_oms sortcode,"
|
||||
// + " bud.bgt_budget_bedrag budget,"
|
||||
+ " b.prs_bedrijf_naam uitvoerder,"
|
||||
+ " o.mld_opdr_key,"
|
||||
@@ -259,6 +261,7 @@ var transitParam = buildTransitParam([]);
|
||||
+ " ks.prs_kostensoort_key,"
|
||||
+ " ks.prs_kostensoort_opmerking onderdeel,"
|
||||
+ " ks.prs_kostensoort_oms rcode,"
|
||||
+ " ks.prs_kostensoort_oms sortcode,"
|
||||
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
|
||||
+ " FROM prs_kostensoort ks,"
|
||||
+ " prs_kostensoortgrp ksg,"
|
||||
@@ -297,7 +300,8 @@ var transitParam = buildTransitParam([]);
|
||||
+ " NULL,"
|
||||
+ " '"+ L("bgt_ksgbudget") +"' onderdeel,"
|
||||
+ " ksg.prs_kostensoortgrp_altcode rcode,"
|
||||
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
|
||||
+ " ksg.prs_kostensoortgrp_altcode sortcode,"
|
||||
+ " SUM(bud.bgt_budget_bedrag) budget"
|
||||
+ " FROM prs_kostensoortgrp ksg,"
|
||||
+ " bgt_kostenrubriek kr,"
|
||||
+ " bgt_budget bud,"
|
||||
@@ -332,6 +336,7 @@ var transitParam = buildTransitParam([]);
|
||||
+ " NULL,"
|
||||
+ " NULL onderdeel,"
|
||||
+ " kr.bgt_kostenrubriek_code||'. "+L("bgt_rubriekbudget")+"' rcode,"
|
||||
+ " kr.bgt_kostenrubriek_code||'. "+L("bgt_rubriekbudget")+"' sortcode,"
|
||||
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
|
||||
+ " FROM bgt_kostenrubriek kr,"
|
||||
+ " bgt_budget bud,"
|
||||
@@ -361,6 +366,7 @@ var transitParam = buildTransitParam([]);
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " kr.bgt_kostenrubriek_oms rubriek,"
|
||||
+ " ksg.prs_kostensoortgrp_altcode rcode,"
|
||||
+ " ksg.prs_kostensoortgrp_altcode sortcode,"
|
||||
+ " ksg.prs_kostensoortgrp_oms groep,"
|
||||
+ " bud.prs_kostensoortgrp_key,"
|
||||
+ " bud.bgt_kostenrubriek_key,"
|
||||
@@ -392,6 +398,7 @@ var transitParam = buildTransitParam([]);
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " kr.bgt_kostenrubriek_oms rubriek,"
|
||||
+ " kr.bgt_kostenrubriek_code||'. "+L("bgt_rubriekbudget")+"' rcode,"
|
||||
+ " kr.bgt_kostenrubriek_code||'. "+L("bgt_rubriekbudget")+"' sortcode,"
|
||||
+ " '"+L("bgt_rubriekbudget")+"' groep,"
|
||||
+ " NULL prs_kostensoortgrp_key,"
|
||||
+ " bud.bgt_kostenrubriek_key,"
|
||||
@@ -424,6 +431,7 @@ var transitParam = buildTransitParam([]);
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " kr.bgt_kostenrubriek_oms rubriek,"
|
||||
+ " kr.bgt_kostenrubriek_code rcode,"
|
||||
+ " kr.bgt_kostenrubriek_code sortcode,"
|
||||
+ " kr.bgt_kostenrubriek_key,"
|
||||
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
|
||||
+ " FROM bgt_kostenrubriek kr,"
|
||||
@@ -435,35 +443,53 @@ var transitParam = buildTransitParam([]);
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
+ " AND bud.bgt_budget_isreserve = 0" // reserve afzonderlijk
|
||||
+ (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 ,"
|
||||
+ " bgt_kostenrubriek_code ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key
|
||||
+ " GROUP BY "
|
||||
+ " kr.bgt_kostenrubriek_oms,"
|
||||
+ " kr.bgt_kostenrubriek_key,"
|
||||
+ " bgt_project_omschrijving ,"
|
||||
+ " bgt_kostenrubriek_code ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
// RESERVE
|
||||
sql1 +=" UNION SELECT"
|
||||
+ " ins_discipline_omschrijving project,"
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " 'Reserve' rubriek,"
|
||||
+ " 'R' rcode,"
|
||||
+ " MAX(kr.bgt_kostenrubriek_key),"
|
||||
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
|
||||
+ " FROM bgt_kostenrubriek kr,"
|
||||
+ " bgt_budget bud,"
|
||||
+ " '91' sortcode,"
|
||||
+ " -1 bgt_kostenrubriek_key,"
|
||||
+ " SUM(bud.bgt_budget_bedrag) budget"
|
||||
+ " FROM 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"
|
||||
+ " WHERE pr.bgt_project_key = bud.bgt_project_key"
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
+ " AND bud.bgt_budget_isreserve = 1" // reserve afzonderlijk
|
||||
+ (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 "
|
||||
+ " bgt_project_omschrijving ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key
|
||||
+ " GROUP BY "
|
||||
+ " bgt_project_omschrijving ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
//BTW
|
||||
sql1 +=" UNION SELECT"
|
||||
+ " ins_discipline_omschrijving project,"
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " 'BTW' rubriek,"
|
||||
+ " 'B' rcode,"
|
||||
+ " '92' sortcode,"
|
||||
+ " -3 bgt_kostenrubriek_key,"
|
||||
+ " SUM(bud.bgt_budget_btwbedrag) budget"
|
||||
+ " FROM bgt_budget bud,"
|
||||
+ " bgt_project pr,"
|
||||
+ " ins_tab_discipline id"
|
||||
+ " WHERE pr.bgt_project_key = bud.bgt_project_key"
|
||||
+ " AND id.ins_discipline_key = pr.ins_discipline_key"
|
||||
// ongeacht reserve
|
||||
+ (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "")
|
||||
+ " AND pr.ins_discipline_key =" + bgtdisc_key
|
||||
+ " GROUP BY "
|
||||
+ " bgt_project_omschrijving ,"
|
||||
+ " ins_discipline_omschrijving";
|
||||
}
|
||||
|
||||
if (groupby == 6) // 6. deelproject
|
||||
@@ -472,7 +498,7 @@ var transitParam = buildTransitParam([]);
|
||||
+ " ins_discipline_omschrijving project,"
|
||||
+ " bgt_project_omschrijving deelproject,"
|
||||
+ " pr.bgt_project_key,"
|
||||
+ " SUM(COALESCE(bud.bgt_budget_bedrag,0)) budget"
|
||||
+ " SUM(bud.bgt_budget_bedrag) budget"
|
||||
+ " FROM bgt_budget bud,"
|
||||
+ " bgt_project pr,"
|
||||
+ " ins_tab_discipline id"
|
||||
@@ -489,6 +515,10 @@ var transitParam = buildTransitParam([]);
|
||||
|
||||
|
||||
// Deel 1 klaar: hierboven zijn de budgetten bepaald. Nu de besteding
|
||||
// MERK OP: hier zouden in het algemeen ook andere verplichtingen bij moeten (bestellingen, contracten, reserveringen)
|
||||
// zoals die via de kostensoort kunnen worden bijgevonden. Dat is voor een latere versie.
|
||||
|
||||
// TODO: de besteding van de BTW moet er op een of andere manier bijgejoined worden.
|
||||
|
||||
// Eerst maar de OPDRACHTEN PER KOSTENSOORT
|
||||
var sql2a ="SELECT"
|
||||
@@ -497,7 +527,7 @@ var transitParam = buildTransitParam([]);
|
||||
+ " kr.bgt_kostenrubriek_key,"
|
||||
+ " ksg.prs_kostensoortgrp_key,"
|
||||
+ " ks.prs_kostensoort_key,"
|
||||
+ " SUM (COALESCE(o.mld_opdr_kosten,0)) gecontracteerd,"
|
||||
+ " SUM (o.mld_opdr_kosten) gecontracteerd,"
|
||||
+ " NULL gefactureerd"
|
||||
+ " FROM mld_opdr o," /* zonder de facturen, anders wordt verdubbeld */
|
||||
+ " prs_kostensoort ks,"
|
||||
@@ -559,7 +589,7 @@ var transitParam = buildTransitParam([]);
|
||||
+ " opdr.prs_kostensoort_key prs_kostensoort_key,"
|
||||
+ " SUM(opdr.gecontracteerd) gecontracteerd,"
|
||||
+ " SUM (fact.gefactureerd) gefactureerd,"
|
||||
+ " SUM(opdr.gecontracteerd) - SUM (fact.gefactureerd) tefactureren"
|
||||
+ " SUM(COALESCE(opdr.gecontracteerd,0)) - SUM (COALESCE(fact.gefactureerd,0)) tefactureren"
|
||||
+ " FROM (" + sql2a + ") opdr, (" + sql2b + ") fact "
|
||||
+ " WHERE opdr.prs_kostensoort_key(+) = fact.prs_kostensoort_key"
|
||||
+ " GROUP BY "
|
||||
@@ -569,9 +599,10 @@ var transitParam = buildTransitParam([]);
|
||||
+ " 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,"
|
||||
@@ -581,23 +612,23 @@ var transitParam = buildTransitParam([]);
|
||||
+ (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,"
|
||||
+ " MAX(bud.budget) - SUM(COALESCE(besteding.gecontracteerd,0)) tecontracteren,"
|
||||
+ " SUM(besteding.gefactureerd) gefactureerd,"
|
||||
+ " SUM(besteding.tefactureren) tefactureren"
|
||||
+ " FROM (" + sql1 + ") bud, (" + sql2 + ") besteding "
|
||||
+ (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 == 5 ? " WHERE bud.bgt_kostenrubriek_key = besteding.bgt_kostenrubriek_key(+) " : "") // de reserve en BTW hebben geen echte rubriek_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 <= 5 ? " ,bud.rubriek, bud.rcode, bud.sortcode, bud.bgt_kostenrubriek_key" : "")
|
||||
+ (groupby <= 4 ? " ,bud.groep, bud.prs_kostensoortgrp_key" : "")
|
||||
+ (groupby <= 3 ? " ,bud.onderdeel, besteding.prs_kostensoort_key" : "");
|
||||
|
||||
sql += " ORDER BY "
|
||||
+ "project"
|
||||
+ (groupby < 6 ? ",rcode, rubriek" : "")
|
||||
+ (groupby < 6 ? ",sortcode, rubriek" : "")
|
||||
+ (groupby < 5 ? ",groep" : "")
|
||||
+ (groupby < 4 ? ",onderdeel" : "");
|
||||
|
||||
@@ -716,6 +747,7 @@ var transitParam = buildTransitParam([]);
|
||||
outputmode: outputmode,
|
||||
title: L("bgt_totaaloverzicht"),
|
||||
showAll: true,
|
||||
//suppressKeyRepeat: "groep", // kunnen we hier wat mee?
|
||||
buttons: buttons
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user