Files
Facilitor/APPL/CAD/rap_alg.asp
Koen Reefman 2793ebb6dd Merge 2024.2 Gold D patches
svn path=/Website/trunk/; revision=66313
2024-09-25 09:11:11 +00:00

199 lines
8.8 KiB
Plaintext

<%@ language="javascript"%>
<% /*
$Revision$
$Id$
File: CAD/rap_alg.asp
Description: Inhoud van het ALG-tabblad van FG
Parameters: floorKey (required)
highlight (optional list of room-keys to filter)
Context: -
*/%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<%
var floorKey = getQParamInt("vKey", -1);
var highlight_arr = getQParamIntArray("highlight", []); // Comma-separated room_key_list (terrains). Optional
var outputmode = getQParam("outputmode", 0);
var showall = getQParam("showall", 0) == 1;
var sql = "";
if (floorKey != -1)
{
sql = "WITH current_ruimteafdeling AS"
+ " (SELECT prs_ruimteafdeling_key"
+ " , alg_ruimte_key"
+ " , prs_afdeling_key"
+ " , prs_ruimteafdeling_bezetting"
+ " , prs_ruimteafdeling_ingangsdatum"
+ " , prs_ruimteafdeling_einddatum"
+ " FROM prs_ruimteafdeling ra"
+ " WHERE ra.prs_ruimteafdeling_verwijder IS NULL"
+ " AND ra.prs_ruimteafdeling_ingangsdatum < SYSDATE"
+ " AND (ra.prs_ruimteafdeling_einddatum > SYSDATE OR ra.prs_ruimteafdeling_einddatum IS NULL)"
+ " )"
+ " , ruimte_perc_som AS"
+ " (SELECT alg_ruimte_key"
+ " , COALESCE(SUM(prs_ruimteafdeling_bezetting), 1) som_bezetting"
+ " FROM current_ruimteafdeling"
+ " GROUP BY alg_ruimte_key"
+ ")"
+ " , ruimte AS"
+ " (SELECT alg_r.alg_ruimte_key alg_ruimte_key"
+ " , alg_r.alg_ruimte_omschrijving alg_ruimte_omschrijving"
+ " , " + lcl.xsqla("alg_s.alg_srtruimte_omschrijving", "alg_s.alg_srtruimte_key")
+ " , alg_r.alg_ruimte_bruto_vloeropp"
+ " , alg_r.alg_ruimte_opp_alt1"
+ " , alg_r.alg_ruimte_opp_alt2"
+ " , alg_g.alg_gebouw_code"
+ " || '-'"
+ " || TO_CHAR (alg_v.alg_verdieping_code)"
+ " || '-'"
+ " || alg_r.alg_ruimte_nr alg_ruimte_aanduiding"
+ " FROM alg_gebouw alg_g"
+ " , alg_verdieping alg_v"
+ " , alg_v_aanwezigruimte alg_r"
+ " , alg_srtruimte alg_s"
+ " WHERE alg_v.alg_verdieping_key = " + floorKey
+ " AND alg_v.alg_verdieping_key = alg_r.alg_verdieping_key"
+ " AND alg_g.alg_gebouw_key = alg_v.alg_gebouw_key"
+ " AND alg_r.alg_ruimte_nr NOT LIKE '\\_%' ESCAPE '\\' " // suppress virtual rooms
+ " AND alg_r.alg_srtruimte_key = alg_s.alg_srtruimte_key(+)"
+ " )"
+ "SELECT cr.prs_ruimteafdeling_key"
+ " , r.alg_ruimte_key"
+ " , r.alg_ruimte_aanduiding"
+ " , r.alg_srtruimte_omschrijving"
+ " , r.alg_ruimte_bruto_vloeropp"
+ " , r.alg_ruimte_omschrijving"
+ " , r.alg_ruimte_opp_alt1"
+ " , r.alg_ruimte_opp_alt2"
+ " , (100 * cr.prs_ruimteafdeling_bezetting / rp.som_bezetting) bezet_perc"
+ " , r.alg_ruimte_bruto_vloeropp * (cr.prs_ruimteafdeling_bezetting / rp.som_bezetting) bezet_vloeropp"
+ " , (SELECT " + S("prs_dep_string")
+ " FROM prs_v_afdeling d"
+ " WHERE d.prs_afdeling_key = cr.prs_afdeling_key"
+ " ) afdeling"
+ " FROM current_ruimteafdeling cr"
+ " , ruimte r"
+ " , ruimte_perc_som rp"
+ " WHERE cr.alg_ruimte_key = rp.alg_ruimte_key(+)"
+ " AND cr.alg_ruimte_key(+) = r.alg_ruimte_key"
+ (highlight_arr.length > 0 && highlight_arr.join(",").indexOf("-1") == -1
? " AND r.alg_ruimte_key IN (" + highlight_arr.join(",") + ")"
: "")
+ " ORDER BY r.alg_ruimte_aanduiding, afdeling";
}
else
{ // Er is (nog) geen verdieping bekend
sql = "SELECT * FROM DUAL WHERE 1 = 0";
}
%>
<html>
<head>
<% FCLTHeader.Generate({outputmode: outputmode}); %>
<script type="text/javascript">
function onClickRuimte(row)
{
FcltMgr.openDetail("appl/alg/alg_ruimte.asp?key=" + row.getAttribute("ROWKEY"));
}
</script>
</head>
<body class="tabpage">
<%
var summaryParams = {selectedopp: 0, selectedoppAlt1: 0, selectedoppAlt2: 0}
function fnsummaryCalc(oRs)
{
with (summaryParams)
{
// oRs("bezetting").value is null of heeft een waarde van 0 t/m 100
if (oRs("bezet_perc").value || oRs("bezet_perc").value == 0)
{ // Voor de ruimte is er ten minste 1 bezetting gedefinineerd (prs_ruimteafdeling)
// Totale bezetting per ruimte opgeteld is 100%
// Bezetting is in procenten.
var bezetting = oRs("bezet_perc").value / 100;
}
else
{ // Voor de ruimte is er geen bezetting gedefinineerd (prs_ruimteafdeling)
// Dan telt deze voor 100% mee voor de berekening van het totale oppervlak.
var bezetting = 1;
}
selectedopp = selectedopp + (oRs("alg_ruimte_bruto_vloeropp").value != null? oRs("alg_ruimte_bruto_vloeropp").value * bezetting: 0);
selectedoppAlt1 = selectedoppAlt1 + (oRs("alg_ruimte_opp_alt1").value != null? oRs("alg_ruimte_opp_alt1").value * bezetting: 0);
selectedoppAlt2 = selectedoppAlt2 + (oRs("alg_ruimte_opp_alt2").value != null? oRs("alg_ruimte_opp_alt2").value * bezetting: 0);
}
return;
}
function fnsummaryShow()
{
var status_row = "<span class='algsumm'>" + L("lcl_estate_totaal_opp") + " "
+ L("lcl_estate_ruimte_bruto_vloeropp") + ": " + safe.showFloat(summaryParams.selectedopp) + " " + L("lcl_estate_ruimte_opp_m2");
if (S("fg_contourlayers_alt1") != "" && S("fg_labellayers_alt1") != "")
status_row += ", " + L("lcl_estate_ruimte_opp_alt1") + ": " + safe.showFloat(summaryParams.selectedoppAlt1) + " " + L("lcl_estate_ruimte_opp_m2");
if (S("fg_contourlayers_alt2") != "" && S("fg_labellayers_alt2") != "")
status_row += ", " + L("lcl_estate_ruimte_opp_alt2") + ": " + safe.showFloat(summaryParams.selectedoppAlt2) + " " + L("lcl_estate_ruimte_opp_m2");
status_row += "</span>";
return status_row;
}
var lastValue = null;
function showRoomDesc(oRs)
{ // leek leuk om herhalingen te onderdrukken, maar sorteren maakt het waardeloos
if (false && outputmode == 0 && safe.htmlattr(oRs("alg_ruimte_aanduiding").value) == lastValue)
var result = null;
else
var result = safe.htmlattr(oRs("alg_ruimte_aanduiding").value);
lastValue = result;
return result;
}
function fnOpp(oRs)
{
return (oRs("alg_ruimte_bruto_vloeropp").value != null? safe.displayfloat(oRs("alg_ruimte_bruto_vloeropp").value, 2) : "-");
}
function fnOppAlt1(oRs)
{
return (oRs("alg_ruimte_opp_alt1").value != null? safe.displayfloat(oRs("alg_ruimte_opp_alt1").value, 2) : "-");
}
function fnOppAlt2(oRs)
{
return (oRs("alg_ruimte_opp_alt2").value != null? safe.displayfloat(oRs("alg_ruimte_opp_alt2").value, 2) : "-");
}
var rst = new ResultsetTable({ ID : "cadalgtable",
keyColumn: "alg_ruimte_key",
title: L("lcl_space_manage_h"),
sql: sql,
outputmode: outputmode,
showAll: showall,
summaryCalc: fnsummaryCalc,
summaryShow: fnsummaryShow
});
rst.addColumn(new Column({caption: L("lcl_obj_inf_room"), content: showRoomDesc}));
rst.addColumn(new Column({caption: L("lcl_fg_func_names"), content: "alg_srtruimte_omschrijving"}));
rst.addColumn(new Column({caption: L("lcl_descr"), content: "alg_ruimte_omschrijving"}));
rst.addColumn(new Column({caption: L("lcl_department"), content: "afdeling"}));
rst.addColumn(new Column({caption: L("lcl_procent"), content: "bezet_perc", datatype: "float"}));
rst.addColumn(new Column({caption: L("lcl_estate_ruimte_bruto_vloeropp"), content: fnOpp, datatype: "float"}));
rst.addColumn(new Column({caption: L("lcl_estate_ruimte_opp_alt1"), content: fnOppAlt1, datatype: "float"}));
rst.addColumn(new Column({caption: L("lcl_estate_ruimte_opp_alt2"), content: fnOppAlt2, datatype: "float"}));
rst.addAction({ action: "onClickRuimte", caption: L("lcl_edit"), isDefault: true } );
var cnt = rst.processResultset();
%>
</body>
</html>
<% ASPPAGE_END(); %>