diff --git a/APPL/API2/api2.inc b/APPL/API2/api2.inc index 64ed51574a..3b5bee96bd 100644 --- a/APPL/API2/api2.inc +++ b/APPL/API2/api2.inc @@ -1604,6 +1604,8 @@ function generic_REST_PUT(model, gparams) var err = Oracle.Execute(xxxUpd.sql, true); if (err.friendlyMsg) abort_with_warning(err.friendlyMsg); + if (model.trackcode) + shared.trackaction(model.trackcode, the_key, xxxUpd.trackarray.join("\n")); } var inctrack = api2.process_includes(params, model, jsondata, the_key); diff --git a/APPL/MGT/mgt_generic.asp b/APPL/MGT/mgt_generic.asp index 5b19bf7fb9..68a38bfecd 100644 --- a/APPL/MGT/mgt_generic.asp +++ b/APPL/MGT/mgt_generic.asp @@ -19,16 +19,75 @@ <% user.checkAutorisation("WEB_FACFAC"); + var edit_fields = { "bes_bestelopdr": { "track": null, + "fields": ["bes_bestelopdr_status"] + }, + "cnt_contract": { "track": "#CNTUPD", + "fields": ["cnt_contract_status", + "ins_discipline_key", + "cnt_contract_teverzenden"] + }, + "fac_tracking": { "track": null, + "fields": ["fac_tracking_datum", + "name", + "fac_tracking_oms", + "prs_perslid_key"] + }, + "fin_factuur": { "track": "#FINUPD", + "fields": ["prs_kostensoort_key", + "fin_factuur_statuses_key"] + }, + "mld_melding": { "track": "#MLDUPD", + "fields": ["mld_melding_status", + "prs_perslid_key", + "prs_kostenplaats_key"] + }, + "mld_opdr": { "track": "#ORDUPD", + "fields": ["mld_typeopdr_key", + "mld_statusopdr_key", + "mld_opdr_teverzenden", + "mld_opdr_verzonden"] + }, + "res_rsv_ruimte": { "track": "#RESUPD", + "fields": ["res_status_fo_key", + "res_status_bo_key"] + }, + "res_rsv_deel": { "track": "#RESUPD", + "fields": ["res_status_bo_key"] + }, + "res_rsv_artikel": { "track": "#RESUPD", + "fields": ["res_status_bo_key"] + } + } + var table = getQParam("table").toUpperCase(); var model = model_generic(table, "WEB_FACFAC"); - if (mode == "show") - delete model.soft_delete; var params = { "transit": { "table": table }, "show": {} // zodat je kunt doorklikken }; + // Meeste velden geforceerd readonly + for (var fld in model.fields) + { + var exception = edit_fields[table.toLowerCase()]; + if (fld == model.soft_delete || + exception && inArray(fld, exception.fields)) + { + model.fields[fld].multiedit = !model.fields[fld].foreign; + model.fields[fld].track = true; + model.trackcode = exception.track; + continue; + } + // Anders altijd: + model.fields[fld].readonly = true; + + } + + if (mode == "show" || mode == "edit" ) + delete model.soft_delete; + params.search = {}; if ("id" in model.fields) { @@ -57,13 +116,11 @@ if ("estimated_rows" in model && model.estimated_rows < S("qp_maxrows")) params.search.autosearch = true; - if (model.nrfields > 10) + if (getQParamInt("scf_multi", 0) == 0 && model.nrfields > 10) params.multicolumn = true; - model.REST_GET = generic_REST_GET(model); - // geforceerd readonly + // Toevoegen en delete staan we niet toe model.REST_POST = null; - model.REST_PUT = null; model.REST_DELETE = null; scaffolding(model, params); diff --git a/APPL/SCF/scaffolding.inc b/APPL/SCF/scaffolding.inc index 9a1080cdf6..e67367c486 100644 --- a/APPL/SCF/scaffolding.inc +++ b/APPL/SCF/scaffolding.inc @@ -582,6 +582,7 @@ function scf_RWFIELDTR(model, fld, val, key, params) { switch (field.typ) { + case "key": params.datatype = "number"; break; // Voor mgt_generic soms case "varchar": params.datatype = "text"; break; case "number": case "float": params.datatype = field.typ; break; diff --git a/APPL/SCF/scaffolding_edit.inc b/APPL/SCF/scaffolding_edit.inc index e654b4bacb..7e552b9359 100644 --- a/APPL/SCF/scaffolding_edit.inc +++ b/APPL/SCF/scaffolding_edit.inc @@ -183,6 +183,9 @@ function scaffolding_edit(model, scf_params) params.checkNot = []; $("input[type=text],input[type=checkbox],input[type=number],select").not("[name^=scf_multi]").each(function() { var thisname = $(this).attr("name"); + if (!thisname) // Veel te ingewikkeld met datumvelden, die controleren we multi nooit + return; + var cb_name = "scf_multi_" + thisname; if (!$("input[name=" + cb_name + "]").is(":checked")) params.checkNot.push(thisname); @@ -283,8 +286,11 @@ function scaffolding_edit(model, scf_params) <% if (multi) { // Overal een vinkje voorzetten %> - $("input[type=text],input[type=checkbox],input[type=number],select").each(function() { - var cb_name = "scf_multi_" + $(this).attr("name"); + $("input[type=text],input[type=checkbox],input[type=number],select").not(".fldtime").each(function() { + if ($(this).hasClass('flddate')) + var cb_name = "scf_multi_" + $(this).attr("id").substr("show_".length); + else + var cb_name = "scf_multi_" + $(this).attr("name"); var cb = $("").attr("name", cb_name); var td = $("