FSN#39054 Budgetcontrole uitbreiding: BGT module - savepoint

svn path=/Website/trunk/; revision=33395
This commit is contained in:
Peter Feij
2017-04-03 16:47:58 +00:00
parent ebc540dca0
commit d1e8105dbc

View File

@@ -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
});