217 lines
10 KiB
Plaintext
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();
|
|
%> |