Files
Facilitor/APPL/INS/ins_xcp_save.asp
2016-11-10 09:54:58 +00:00

217 lines
10 KiB
Plaintext

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: ins_xcp_save.asp
Description: Inspectie kenmerken (parameters) opslaan
Parameters: ins_keys of ins_key (geen verschil)
Context: Vanuit ins_xcp.asp
Note: Resultaat van een submit is een json object
*/
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/kenmerk_common.inc" -->
<!-- #include file="ins.inc" -->
<%
var ins_key = getQParamInt("ins_key");
var srtcontrole_key = getFParamInt("sel_srtcontrole"); // ins_srtcontrole_key.
var this_ins = ins.func_enabled_deel(ins_key, {srtcont_key: srtcontrole_key});
// Ophalen standaard waarden.
var sql = "SELECT isc.ins_srtcontrole_eenheid"
+ " , isc.ins_srtcontrole_periode"
+ " , isc.ins_srtcontrole_bits"
+ " , isc.ins_srtcontrole_kosten"
+ " , isc.ins_srtcontrole_kosten2"
+ " , isc.ins_srtcontrole_kosten3"
+ " , isc.ins_srtcontrole_uren"
+ " , isc.ins_srtcontrole_materiaal"
+ " , isc.ins_srtcontrole_percentage"
+ " , ins_srtcontrole_groep"
+ " , isc.ins_srtcontrole_eind"
+ " , isc.ins_srtcontrole_opmerking"
+ " , isc.ctr_discipline_key"
+ " FROM ins_srtcontrole isc"
+ " , ins_deel d"
+ " , ins_srtdeel sd"
+ " WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key"
+ " AND (isc.ins_srtcontrole_niveau = 'S'"
+ " AND isc.ins_srtinstallatie_key = d.ins_srtdeel_key"
+ " OR isc.ins_srtcontrole_niveau = 'G'"
+ " AND isc.ins_srtinstallatie_key = sd.ins_srtgroep_key"
+ " OR isc.ins_srtcontrole_niveau = 'D'"
+ " AND isc.ins_srtinstallatie_key = d.ins_discipline_key)"
+ " AND d.ins_deel_key = " + ins_key
+ " AND isc.ins_srtcontrole_key = " + srtcontrole_key;
var oRs = Oracle.Execute(sql);
lcl.set_dialect(oRs("ctr_discipline_key").Value, "INS_TAB_DISCIPLINE_KEY");
var eenheid_std = oRs("ins_srtcontrole_eenheid").Value;
var periode_std = oRs("ins_srtcontrole_periode").Value;
var bits_std = oRs("ins_srtcontrole_bits").Value;
var kosten1_std = oRs("ins_srtcontrole_kosten").Value;
var kosten2_std = oRs("ins_srtcontrole_kosten2").Value;
var kosten3_std = oRs("ins_srtcontrole_kosten3").Value;
var uren_std = oRs("ins_srtcontrole_uren").Value;
var materiaal_std = oRs("ins_srtcontrole_materiaal").Value;
var perc_std = oRs("ins_srtcontrole_percentage").Value;
var groep_std = oRs("ins_srtcontrole_groep").Value;
var opmerk_std = oRs("ins_srtcontrole_opmerking").Value;
var vervaldatum_std = new Date(oRs("ins_srtcontrole_eind").Value);
oRs.Close();
// Mag ik de parameters van het inspectie object aanpassen?
user.anything_todo_or_abort(this_ins.canChangeXcp);
var xcp_key = getFParamInt("xcp_key"); // ins_srtcontroledl_xcp_key.
var mode = getFParamInt("mode"); // ins_srtcontrole_mode.
var eenheid = getFParamInt("eenheid"); // ins_srtcontroledl_xcp_eenheid.
if (!(eenheid >= 0)) // uurlijks is 0
eenheid = eenheid_std;
var periode = null;
if (eenheid > -1)
periode = getFParamInt("periode", null); // ins_srtcontroledl_xcp_periode.
var kosten1 = getFParamFloat("kosten1", null); // ins_srtcontroledl_xcp_kosten.
var kosten2 = getFParamFloat("kosten2", null); // ins_srtcontroledl_xcp_kosten2.
var kosten3 = getFParamFloat("kosten3", null); // ins_srtcontroledl_xcp_kosten3.
var uren = getFParamFloat("uren") || null; // ins_srtcontroledl_xcp_uren.
var materiaal = getFParamFloat("materiaal", null); // ins_srtcontroledl_xcp_materia.
var perc = getFParamInt("perc", null); // ins_srtcontroledl_xcp_perc.
var groep = getFParam("groep", null); // ins_srtcontroledl_xcp_groep.
var startdatum = getFParamDate("startdatum", null); // ins_srtcontroledl_xcp_startdat.
var vervaldatum = getFParamDate("vervaldatum", null); // ins_srtcontroledl_xcp_eind.
var opmerk = getFParam("opmerk", null); // ins_srtcontroledl_xcp_opmerk.
var bits = 0;
// De betekenis van bits is afhankelijk van de mode en eenheid.
// Alleen in de mode 0 (moment modus) heeft bits betekenis.
if (mode == 0)
{
var noHoliday = getFParamInt("insInspNoHoli", 0); // Vinkje "Niet op feestdagen"
switch (eenheid)
{
case -1: // Nooit
case 0: // Uurlijks
case 1: // Dagelijks
bits = noHoliday * 128;
break;
case 2: // Wekelijks
bits = getFParamInt("insInspZo", 0) * 1 // Vinkje "Zondag"
+ getFParamInt("insInspMa", 0) * 2 // Vinkje "Maandag"
+ getFParamInt("insInspDi", 0) * 4 // Vinkje "Dinsdag"
+ getFParamInt("insInspWo", 0) * 8 // Vinkje "Woensdag"
+ getFParamInt("insInspDo", 0) * 16 // Vinkje "Dondersdag"
+ getFParamInt("insInspVr", 0) * 32 // Vinkje "Vrijdag"
+ getFParamInt("insInspZa", 0) * 64 // Vinkje "Zaterdag"
+ noHoliday * 128;
break;
case 3: // Maandelijks
var dagbits = getFParamInt("dagbits");
var weekbits = getFParamInt("weekbits");
bits = dagbits + weekbits + noHoliday * 128;
break;
case 4: // Jaarlijks
var bits = getFParamInt("maandbits");
break;
}
}
else
// Interval modus
bits = null;
// Als de nieuwe waarde gelijk is aan de standaard waarden dan deze niet opslaan.
var datumdiffer = vervaldatum != null && (vervaldatum? vervaldatum.getTime() : null) != (vervaldatum_std? vervaldatum_std.getTime() : null)
var paramsdiffer = ((eenheid != -1 && (eenheid != eenheid_std || (periode != null && periode != periode_std) || (bits != null && bits != bits_std))) ||
(kosten1 != null && kosten1 != kosten1_std) ||
(kosten2 != null && kosten2 != kosten2_std) ||
(kosten3 != null && kosten3 != kosten3_std) ||
(uren != null && uren != uren_std) ||
(materiaal != null && materiaal != materiaal_std) ||
(perc != null && perc != perc_std) ||
(groep != "" && groep != groep_std) ||
(opmerk != "" && opmerk != opmerk_std) ||
datumdiffer || startdatum != null);
var deactivate = periode_std == 0 && (periode == null || periode == 0); // Beide periodes zijn 0. Controle wordt inactief. Uitzonderings regel kan weg in ins_srtcontroledl_xcp.
if (paramsdiffer && !deactivate)
{ // parameters wijken af van de standaard of er is een startdatum ingevuld.
var result = { success: true, srtcontroledl_xcp_key: xcp_key };
var fields = [ { dbs: "ins_deel_key", typ: "key", val: ins_key },
{ dbs: "ins_srtcontrole_key", typ: "key", frm: "sel_srtcontrole" },
{ dbs: "ins_srtcontroledl_xcp_eenheid", typ: "number", val: (eenheid == -1 || eenheid == eenheid_std || eenheid < 0? null : eenheid) }, // Waarde gelijk aan standaard niet opslaan.
{ dbs: "ins_srtcontroledl_xcp_periode", typ: "number", val: (periode == null || periode == periode_std? null : periode) }, // Waarde gelijk aan standaard niet opslaan.
{ dbs: "ins_srtcontroledl_xcp_bits", typ: "number", val: (bits == null || bits == bits_std? null : bits) }, // Waarde gelijk aan standaard niet opslaan.
{ dbs: "ins_srtcontroledl_xcp_uren", typ: "float", val: (uren == null || uren == uren_std? null : uren) },
{ dbs: "ins_srtcontroledl_xcp_perc", typ: "float", val: (perc == null || perc == perc_std? null : perc) },
{ dbs: "ins_srtcontroledl_xcp_groep", typ: "varchar", val: (groep == "" || groep == groep_std? null : groep) },
{ dbs: "ins_srtcontroledl_xcp_opmerk", typ: "varchar", val: (opmerk == "" || opmerk == opmerk_std? null : opmerk) },
{ dbs: "ins_srtcontroledl_xcp_startdat", typ: "datetime", frm: "startdatum" },
{ dbs: "ins_srtcontroledl_xcp_eind", typ: "datetime", val: (datumdiffer? vervaldatum : null) }
];
var ins_xcp_active_cost = S("ins_xcp_active_cost");
if (ins_xcp_active_cost & 1)
fields.push({ dbs: "ins_srtcontroledl_xcp_kosten", typ: "float", val: (kosten1 == null || kosten1 == kosten1_std? null : kosten1) });
if (ins_xcp_active_cost & 2)
fields.push({ dbs: "ins_srtcontroledl_xcp_kosten2", typ: "float", val: (kosten2 == null || kosten2 == kosten2_std? null : kosten2) });
if (ins_xcp_active_cost & 4)
fields.push({ dbs: "ins_srtcontroledl_xcp_kosten3", typ: "float", val: (kosten3 == null || kosten3 == kosten3_std? null : kosten3) });
if (ins_xcp_active_cost & 8)
fields.push({ dbs: "ins_srtcontroledl_xcp_materia", typ: "float", val: (materiaal == null || materiaal == materiaal_std? null : materiaal) });
if (xcp_key < 0) // Nieuwe inspectie
{
fields.push({ dbs: "ins_srtcontroledl_xcp_key", typ: "key", seq: "ins_s_srtcontroledl_xcp_key" });
var insIns = buildInsert("ins_srtcontroledl_xcp", fields);
result.srtcontroledl_xcp_key = insIns.sequences["ins_srtcontroledl_xcp_key"];
var err = Oracle.Execute(insIns.sql, true);
}
else
{
var sql = buildUpdate("ins_srtcontroledl_xcp", fields) + " ins_srtcontroledl_xcp_key = " + xcp_key;
var err = Oracle.Execute(sql, true);
}
}
else
{
// Deactiveren of alle parameter waarden zijn identiek aan de standaard waarden en er is geen groep ingevuld.
if (xcp_key < 0) // Nieuwe inspectie.
{ // Geen nieuw record aanmaken.
var result = { success: true, srtcontroledl_xcp_key: xcp_key, toaster: L("lcl_ins_controle_identical_values") };
}
else
{ // Dan kan het record verwijderd worden.
var result = { success: true, srtcontroledl_xcp_key: xcp_key, toaster: (deactivate? L("lcl_ins_controle_deactivated") : L("lcl_ins_controle_identical_values")) };
// Record verwijderen.
var sql = "DELETE FROM ins_srtcontroledl_xcp"
+ " WHERE ins_deel_key = " + ins_key
+ " AND ins_srtcontrole_key = " + srtcontrole_key;
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
result.message += " " + err.friendlyMsg;
}
}
if (err && err.friendlyMsg)
{
result.warning = err.friendlyMsg;
result.success = false;
}
Response.Write(JSON.stringify(result));
Response.End();
%>