Files
Facilitor/APPL/CAD/contour_update.inc

194 lines
10 KiB
SQL

<% /*
$Revision$
$Id$
File: contour_update.inc
Description: Kopieert de oppervlaktes uit CAD_IMP_CONTOUR naar ALG_RUIMTE
en de tekening vanuit de conceptfolder 'omhoog'
Parameters:
location_key
building_key
floor_key
Context: include voor contour_update.asp en api_files.asp
Note:
*/
%>
<!-- #include file='../CAD/FGII.inc'-->
<!-- #include file='./cad_scan_dwf.inc' -->
<%
var contour = {
make_actual: function _make_actual(cad_tek_key, fname) {
var fullnameActual = S("flexfilespath") + "/cad/" + fname + ".dwf";
var fullnameConcept = S("flexfilespath") + "/cad/concept/" + fname + ".dwf";
var success = false;
var message;
try { // Moven van concept naar actual!
__Log("Ik probeer " + fullnameConcept + " te verplaatsen naar " + fullnameActual);
fso.CopyFile(fullnameConcept, fullnameActual, true/*overwrite*/);
fso.DeleteFile(fullnameConcept);
success = true;
} catch (e) {
__DoLog("Doorvoeren concept " + fullnameConcept + " mislukt: \n" + e.description + "<br>" + safe.UserContext(), "#ffff00");
message = "Doorvoeren concept /cad/concept/" + fname + ".dwf mislukt: \n" + e.description;
}
if (success) {
// Nieuwe scannen (zou vaak ook wel in de database kunnen)
message = scanDWF(cad_tek_key, 0);
// Oude contouren opruimen
Oracle.Execute("DELETE FROM CAD_IMP_CONTOUR"
+ " WHERE cad_tekening_key = " + cad_tek_key
+ " AND cad_imp_contour_concept = 1");
}
return { success: success, message: message };
},
doorvoeren_opp: function _doorvoeren_opp(isTerrein, params) {
params = params || {};
if (isTerrein) {
var sql_select = "(SELECT c.cad_imp_contour_opp "
+ " FROM " + S("fg_syncterreinview") + " r, "
+ " cad_imp_contour c, "
+ " cad_tekening t "
+ " WHERE t.alg_locatie_key = r.alg_locatie_key "
+ " AND c.cad_tekening_key = t.cad_tekening_key "
+ " AND c.cad_imp_contour_nr = r.cadlabel "
+ " AND r.alg_terreinsector_key = ru.alg_terreinsector_key "
+ " AND r.alg_locatie_key = " + params.location_key
+ ")";
var sql = "UPDATE alg_terreinsector ru "
+ " SET ru.alg_terreinsector_oppervlak = " + sql_select
+ " WHERE EXISTS " + sql_select;
oRs = Oracle.Execute(sql);
} else {
var sql_from = " FROM alg_verdieping v"
+ " , alg_gebouw g"
+ " , alg_locatie l"
+ " , cad_imp_contour c"
+ " , cad_tekening t";
var sql_where = " WHERE cad_imp_contour_concept = 0"
+ " AND g.alg_gebouw_key = v.alg_gebouw_key"
+ " AND l.alg_locatie_key = g.alg_locatie_key"
+ " AND c.cad_tekening_key = t.cad_tekening_key"
+ (params.location_key && params.location_key > -1
? " AND g.alg_locatie_key = " + params.location_key
: "")
+ (params.building_key && params.building_key > -1
? " AND v.alg_gebouw_key = " + params.building_key
: "")
+ (params.floor_key && params.floor_key > -1
? " AND v.alg_verdieping_key = " + params.floor_key
: "");
var sql_from_room = ", " + S("fg_syncruimteview") + " r";
var sql_where_room = " AND v.alg_verdieping_key = r.alg_verdieping_key"
+ " AND r.alg_ruimte_key = ru.alg_ruimte_key"
+ " AND c.cad_imp_contour_nr = r.cadlabel"
+ " AND t.alg_verdieping_key = r.alg_verdieping_key";
var sql_where_floor = " AND c.cad_imp_contour_nr = '" + L("lcl_floor") + " (' || v.alg_verdieping_code || ')'"
+ " AND t.alg_verdieping_key = v.alg_verdieping_key";
var sql_track_room = "SELECT ru.alg_ruimte_key"
+ " , r.cadlabel"
+ " , ru.alg_ruimte_bruto_vloeropp"
+ " , c.cad_imp_contour_opp"
+ " , ru.alg_ruimte_opp_alt1"
+ " , c.cad_imp_contour_opp_alt1"
+ " , ru.alg_ruimte_opp_alt2"
+ " , c.cad_imp_contour_opp_alt2"
+ sql_from
+ sql_from_room
+ " , alg_ruimte ru"
+ sql_where
+ sql_where_room;
var oRs_tracking = Oracle.Execute(sql_track_room);
/* Track ruimte updates */
var trackArray;
while (!oRs_tracking.EoF)
{
trackArray = [];
if (oRs_tracking("alg_ruimte_bruto_vloeropp").Value != oRs_tracking("cad_imp_contour_opp").Value) {
trackArray.push(L("lcl_estate_ruimte_bruto_vloeropp") + ": "
+ (oRs_tracking("alg_ruimte_bruto_vloeropp").Value === null ? L("lcl_trackfromempty") : oRs_tracking("alg_ruimte_bruto_vloeropp").Value)
+ " => " + oRs_tracking("cad_imp_contour_opp").Value);
}
if (S("fg_contourlayers_alt1") != "" && oRs_tracking("alg_ruimte_opp_alt1").Value != oRs_tracking("cad_imp_contour_opp_alt1").Value) {
trackArray.push(L("lcl_estate_ruimte_opp_alt1") + ": "
+ (oRs_tracking("alg_ruimte_opp_alt1").Value === null ? L("lcl_trackfromempty") : oRs_tracking("alg_ruimte_opp_alt1").Value)
+ " => " + oRs_tracking("cad_imp_contour_opp_alt1").Value);
}
if (S("fg_contourlayers_alt2") != "" && oRs_tracking("alg_ruimte_opp_alt2").Value != oRs_tracking("cad_imp_contour_opp_alt2").Value) {
trackArray.push(L("lcl_estate_ruimte_opp_alt2") + ": "
+ (oRs_tracking("alg_ruimte_opp_alt2").Value === null ? L("lcl_trackfromempty") : oRs_tracking("alg_ruimte_opp_alt2").Value)
+ " => " + oRs_tracking("cad_imp_contour_opp_alt2").Value);
}
if (trackArray.length > 0) { // Wijzigingen van deze ruimte tracken, elk record kan een andere ruimte zijn
shared.trackaction("ALGRUP",
oRs_tracking("alg_ruimte_key").Value,
L("lcl_alg_is_algrup") + "\n" + trackArray.join("\n"));
}
oRs_tracking.MoveNext();
}
oRs_tracking.Close();
/* Update ruimte oppervlakte(s) */
var sql_update_select_room = "SELECT c.cad_imp_contour_opp"
+ (S("fg_contourlayers_alt1") ? " , c.cad_imp_contour_opp_alt1" : "")
+ (S("fg_contourlayers_alt2") ? " , c.cad_imp_contour_opp_alt2" : "")
+ sql_from
+ sql_from_room
+ sql_where
+ sql_where_room;
var sql_room_update = "UPDATE alg_ruimte ru "
+ " SET (ru.alg_ruimte_bruto_vloeropp"
+ (S("fg_contourlayers_alt1") ? " , ru.alg_ruimte_opp_alt1" : "")
+ (S("fg_contourlayers_alt2") ? " , ru.alg_ruimte_opp_alt2" : "")
+ " ) = (" + sql_update_select_room + ")"
+ " WHERE EXISTS (" + sql_update_select_room + ")";
Oracle.Execute(sql_room_update);
/* Track verdieping update */
var sql_track_floor = "SELECT v.alg_verdieping_key"
+ " , v.alg_verdieping_bruto_vloeropp"
+ " , c.cad_imp_contour_opp"
+ sql_from
+ sql_where
+ sql_where_floor;
oRs_tracking = Oracle.Execute(sql_track_floor);
trackArray = [];
if (!oRs_tracking.EoF &&
oRs_tracking("alg_verdieping_bruto_vloeropp").Value != oRs_tracking("cad_imp_contour_opp").Value) { // Verdieping
shared.trackaction("ALGVUP",
oRs_tracking("alg_verdieping_key").Value,
L("lcl_alg_is_algvup") + "\n"
+ L("lcl_estate_verdieping_bruto_vloeropp") + ": "
+ (oRs_tracking("alg_verdieping_bruto_vloeropp").Value === null ? L("lcl_trackfromempty") : oRs_tracking("alg_verdieping_bruto_vloeropp").Value)
+ " => " + oRs_tracking("cad_imp_contour_opp").Value);
}
oRs_tracking.Close();
/* Update verdieping oppervlakte */
var sql_update_select_floor = "SELECT c.cad_imp_contour_opp"
+ sql_from
+ sql_where
+ sql_where_floor
+ " AND ver.alg_verdieping_key = v.alg_verdieping_key";
var sql_floor_update = "UPDATE alg_verdieping ver"
+ " SET (ver.alg_verdieping_bruto_vloeropp"
+ " ) = (" + sql_update_select_floor + ")"
+ " WHERE EXISTS (" + sql_update_select_floor + ")";
Oracle.Execute(sql_floor_update);
}
}
}
%>