15 Commits

Author SHA1 Message Date
80792b1cc5 FCLT#84767 revert van revision 67892 (dd 6-2-2025)
svn path=/Website/branches/v2024.3/; revision=68058
2025-02-18 19:14:59 +00:00
Erik Groener
e19ecee669 FCLT#84767 savepoint
svn path=/Website/branches/v2024.3/; revision=67894
2025-02-06 14:52:10 +00:00
Erik Groener
4e5fcc0f79 FCLT#84767 savepoint
svn path=/Website/branches/v2024.3/; revision=67892
2025-02-06 14:47:46 +00:00
Jos Groot Lipman
f6952b9b79 Release 2024.3 Gold D
svn path=/Website/branches/v2024.3/; revision=67891
2025-02-06 14:32:35 +00:00
Jos Groot Lipman
8877559b2a FCLT#87155 Bij een error op Oracle.ExecuteParam ook __DoLogForm doen voor troubleshooting
svn path=/Website/branches/v2024.3/; revision=67888
2025-02-06 14:18:40 +00:00
Jos Groot Lipman
33000d92a3 VNOG#87360 Aiai-foutmelding bij fiatteringsverzoeken zelfservice
svn path=/Website/branches/v2024.3/; revision=67882
2025-02-06 11:27:13 +00:00
Jos Groot Lipman
6bd3dd6577 FMHN#87507 Timeout probleem SuggestPerslid.asp na FMHN update
svn path=/Website/branches/v2024.3/; revision=67864
2025-02-05 12:25:12 +00:00
Jos Groot Lipman
4f655adc29 FMHN#87507 Timeout probleem SuggestPerslid.asp na FMHN update
svn path=/Website/branches/v2024.3/; revision=67859
2025-02-05 11:42:40 +00:00
Jos Groot Lipman
43c1c71a97 FCLT#87155 Bij refresh accept omgeving werd uitgepakte DMP-file niet verwijderd door readonlybitje. Die er af halen.
svn path=/Website/branches/v2024.3/; revision=67820
2025-02-03 10:48:30 +00:00
Jos Groot Lipman
153065c47c FCLT#87155 prs_perslid_lang via elke tabel bewerkbaar
svn path=/Website/branches/v2024.3/; revision=67778
2025-01-29 10:55:27 +00:00
Jos Groot Lipman
330258b994 VNOG#87360
SKHF#85468 Aiai-foutmelding bij fiatteringsverzoeken zelfservice

svn path=/Website/branches/v2024.3/; revision=67743
2025-01-27 13:16:13 +00:00
00bc9ae677 FMHN#87358 De juiste sequence gebruiken
svn path=/Website/branches/v2024.3/; revision=67741
2025-01-27 10:42:05 +00:00
3bff33c4a8 FMHN#87358 model_ins_srtdeel ook (regulier) via API2 beschikbaar stellen & +bugfixes
svn path=/Website/branches/v2024.3/; revision=67739
2025-01-27 10:14:18 +00:00
Erik Groener
30634d82b0 FCLT#84767 savepoint
svn path=/Website/branches/v2024.3/; revision=67678
2025-01-22 08:18:53 +00:00
Maykel Geerdink
b926422969 NOUR#87131: Onjuiste bestanden gekoppeld aan objecten in systeem.
svn path=/Website/branches/v2024.3/; revision=67666
2025-01-21 15:33:27 +00:00
1104 changed files with 81586 additions and 38370 deletions

2
APPL/.gitignore vendored
View File

@@ -1,2 +0,0 @@
/.vscode
.vs

View File

@@ -99,6 +99,13 @@ alg = {
var autfunctionMAN = "WEB_ALGMAN";
var autfunctionUSE = "WEB_ALGUSE";
// Met ALG* bepaal je wat je ziet (Read).
rresult.readman = rresult.canRead (autfunctionMAN);
if (onrgoedlvl != "T")
rresult.readuse = rresult.canRead (autfunctionUSE);
// Met RUI* en TER* bepaal je wat je kunt wijzigen (Write).
switch (onrgoedlvl)
{
case "T": autfunctionMAN = "WEB_TERMAN";
@@ -107,15 +114,14 @@ alg = {
autfunctionUSE = "WEB_RUIUSE";
break;
}
// Met ALG* bepaal je wat je ziet (Read).
rresult.readman = rresult.canRead (autfunctionMAN);
rresult.readuse = rresult.canRead (autfunctionUSE);
// Met RUI* en TER* bepaal je wat je kunt wijzigen (Write).
rresult.readmgt = rresult.canRead("WEB_ALGMGT");
rresult.writemgt = rresult.canWrite("WEB_ALGMGT");
rresult.writeman = rresult.canWrite(autfunctionMAN);
rresult.writeuse = rresult.canWrite(autfunctionUSE);
if (onrgoedlvl != "T")
rresult.writeuse = rresult.canWrite(autfunctionUSE);
else
rresult.writeuse = false;
}
else // iets meer werk
{
@@ -137,7 +143,7 @@ alg = {
+ "WHERE prs_perslid_key = " + user_key
+ " AND alg_district_key = " + alg_key;
break;
case "E":
case "RG":
sql = "SELECT MAX(niveau) FROM fac_v_my_regions "
+ "WHERE prs_perslid_key = " + user_key
+ " AND alg_regio_key = " + alg_key;
@@ -478,7 +484,7 @@ alg = {
if (!oRs.eof)
{
multiflex = true;
v_flexParams.flexlabel = L("lcl_flexlist_alg_" + p_niveau.toLowerCase());
v_flexParams.flexlabel = L("lcl_flexlist_alg_b");
while (!oRs.eof)
{
if (oRs("alg_kenmerk_kenmerktype").Value == "M")
@@ -492,7 +498,6 @@ alg = {
var onrgoed_fld = "";
switch (p_niveau)
{
case "E": onrgoed_fld = "e.alg_regio_key"; break;
case "D": onrgoed_fld = "d.alg_district_key"; break;
case "L": onrgoed_fld = "l.alg_locatie_key"; break;
case "T": onrgoed_fld = "g.alg_terreinsector_key"; break;

View File

@@ -47,7 +47,7 @@ FCLTHeader.Requires({ plugins:["jQuery"] });
var data = { key: disKeyString,
level: "D"
};
<% protectRequest.dataToken("data"); %>
<% protectRequest.dataToken("data"); %>+
$.post("alg_delete.asp", data, FcltCallbackRefresh, "json");
}
);

View File

@@ -240,7 +240,6 @@ else
, { label: L("lcl_calendar")
, initKey: kalender_id
, emptyOption: ""
, emptyKey: ""
, readonly: !this_alg.writeman
}
);

View File

@@ -77,7 +77,7 @@ user.auth_required_or_abort(ingesloten.length); // We klagen niet over enkele we
</script>
</head>
<body class="fclt-modal" id="mod_algmultiedit">
<body class="modal" id="mod_algmultiedit">
<% MODAL_START(); %>
<form name="u2" action="alg_edit_gebouw_multi_save.asp?bld_keys=<%=ingesloten.join(",")%>" method="post">
<%

View File

@@ -37,6 +37,14 @@ var fields = [ /* { dbs: "alg_gebouw_getekend", typ: "date", frm: "bld
{ dbs: "alg_gebouw_dwgy", typ: "float", frm: "bld_dwgy" }, Deze 3 velden worden nergens meegegeven? */
];
if (this_alg.writeuse)
{
fields.push({ dbs: "mld_dienstniveau_key", typ: "key", frm: "dienstniveau", track: L("lcl_mld_dienst_niveau"), foreign: "mld_dienstniveau" },
// De gebouwverantwoordelijke(n) moeten eigenlijk nog een PRS-scope test ondergaan alvorens opgeslagen te worden, maar dat is voor nu teveel eer
{ dbs: "prs_perslid_key_verantw", typ: "key", frm: "verantw", track: L("lcl_alg_verantw"), foreign: "prs_perslid" },
{ dbs: "prs_perslid_key_verantw2", typ: "key", frm: "verantw2", track: L("lcl_alg_verantw2"), foreign: "prs_perslid" });
}
if (user.checkAutorisation("WEB_BEZMGT", true))
{
fields.push({ dbs: "alg_gebouw_toon_telefoon", typ: "number", frm: "toon_telefoon", track: L("lcl_estate_gebouw_toon_telefoon") },
@@ -64,16 +72,12 @@ if (this_alg.writeman)
{ dbs: "alg_gebouw_image", typ: "varchar", frm: "bld_image", track: L("lcl_alg_gebouw_image") },
{ dbs: "mld_adres_key", typ: "key", frm: "mld_adres", track: L("lcl_delivery_address"), foreign: "mld_v_factuuradres" },
{ dbs: "prs_kostenplaats_key", typ: "key", frm: "prs_kstpl", track: L("lcl_prs_dept_kosten"), foreign: "prs_kostenplaats" },
{ dbs: "mld_dienstniveau_key", typ: "key", frm: "dienstniveau", track: L("lcl_mld_dienst_niveau"), foreign: "mld_dienstniveau" },
{ dbs: "alg_gebouw_bez", typ: "check", frm: "bld_bez", track: L("lcl_estate_gebouw_bez") },
{ dbs: "alg_gebouw_mld", typ: "check", frm: "bld_mld", track: L("lcl_estate_gebouw_mld") },
{ dbs: "alg_gebouw_werkdagen", typ: "check0", frm: "bld_werkdagen", track: L("lcl_estate_gebouw_werkdagen") },
{ dbs: "alg_gebouw_vervaldatum", typ: "date", frm: "vervaldatum", track: L("lcl_alg_vervaldatum") },
{ dbs: "bez_actie_groep_key", typ: "key", frm: "group", track: L("bez_actie_groep"), foreign: "bez_actie_groep" },
{ dbs: "mld_vrije_dagen_id", typ: "varchar", frm: "cal_id", track: L("lcl_calendar")},
// De gebouwverantwoordelijke(n) moeten eigenlijk nog een PRS-scope test ondergaan alvorens opgeslagen te worden, maar dat is voor nu teveel eer
{ dbs: "prs_perslid_key_verantw", typ: "key", frm: "verantw", track: L("lcl_alg_verantw"), foreign: "prs_perslid" },
{ dbs: "prs_perslid_key_verantw2", typ: "key", frm: "verantw2", track: L("lcl_alg_verantw2"), foreign: "prs_perslid" });
{ dbs: "mld_vrije_dagen_id", typ: "varchar", frm: "cal_id", track: L("lcl_calendar")});
if (beginuur != -2)
fields.push({ dbs: "alg_gebouw_beginuur", typ: "float", val: beginuur, track: L("lcl_estate_gebouw_beginuur") });

View File

@@ -11,12 +11,12 @@
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!--#include file="../Shared/common.inc" -->
<!--#include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/timezoneselector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!--#include file="../Shared/selector.inc" -->
<!--#include file="../Shared/plaatsselector.inc" -->
<!-- #include file="alg_flexkenmerk.inc" -->
<!-- #include file="alg.inc" -->
@@ -59,7 +59,6 @@ if (loc_key > 0)
var dienstniveau = oRs("mld_dienstniveau_key").Value;
var loc_score1 = oRs("alg_locatie_mjb_score1").Value;
var vervaldatum = oRs("alg_locatie_vervaldatum").Value != null ? new Date(oRs("alg_locatie_vervaldatum").Value) : null;
var alg_tz = oRs("alg_locatie_timezone").Value;
oRs.Close();
}
@@ -132,7 +131,6 @@ BLOCK_END();
BLOCK_START("facFM", L("lcl_operations_block"), {icon: "fa-users-cog"});
manRWFIELD("loc_volgnr", "fld", L("lcl_alg_locatie_volgnr"), loc_volgnr, {maxlength: 3});
FCLTtimezoneselector("alg_tz", { initVal: alg_tz });
FCLTcalendar("vervaldatum",
{ datum: vervaldatum,
initEmpty: vervaldatum==null,

View File

@@ -74,7 +74,7 @@ user.auth_required_or_abort(ingesloten.length); // We klagen niet over enkele we
</script>
</head>
<body class="fclt-modal" id="mod_algmultiedit">
<body class="modal" id="mod_algmultiedit">
<% MODAL_START(); %>
<form name="u2" action="alg_edit_locatie_multi_save.asp?loc_keys=<%=ingesloten.join(",")%>" method="post">
<%

View File

@@ -49,9 +49,7 @@ if (this_alg.writeman)
{ dbs: "alg_locatie_vervaldatum", typ: "date", frm: "vervaldatum", track: L("lcl_alg_vervaldatum") },
{ dbs: "alg_locatie_email", typ: "varchar", frm: "loc_mail", track: L("lcl_noti_email") },
{ dbs: "alg_locatie_image", typ: "varchar", frm: "loc_image", track: L("lcl_alg_locatie_image") },
{ dbs: "alg_locatie_volgnr", typ: "number", frm: "loc_volgnr", track: L("lcl_alg_locatie_volgnr") },
{ dbs: "alg_locatie_timezone", typ: "varchar", frm: "alg_tz", track: L("lcl_timezone") }
);
{ dbs: "alg_locatie_volgnr", typ: "number", frm: "loc_volgnr", track: L("lcl_alg_locatie_volgnr") });
if (alg.canWriteDistrict(dis_key, this_alg.authparams("WEB_ALGMAN").ALGwritelevel))
fields.push({ dbs: "alg_district_key", typ: "key", val: dis_key });

View File

@@ -18,14 +18,12 @@
FCLTHeader.Requires({plugins:["suggest","jQuery"], js: []})
var regio_key = getQParamInt("regio_key");
var onrgoedlvl = "E";
var params = { filter: { id: regio_key,
isNew: (regio_key == -1 ? true : false)
}
};
var model = new model_regions();
var regio_array = model.REST_GET(params); // Roep de API2 GET aan
var regio_array = model_regions.REST_GET(params); // Roep de API2 GET aan
var regio_data = (regio_array[0] ? regio_array[0] : {id: -1}); // GET kan meerdere records opleveren, maar we verwachten hier maar 1.
var this_alg = params.func_enabled; // params bevat nu ook waarden die in API2 zijn bepaald.
var action = (regio_key == -1 ? "I" : "U");
@@ -78,14 +76,6 @@ var action = (regio_key == -1 ? "I" : "U");
manRWFIELD("reg_oms", "fld", L("lcl_name"), regio_data.name, {required: true, maxlength: 30});
BLOCK_END();
generateFlexKenmerkBlock ({
onrgoed_key : regio_key,
onrgoed_niveau : onrgoedlvl,
reado : false,
this_alg : this_alg
});
IFACE.FORM_END();
%>
</form>

View File

@@ -18,7 +18,7 @@ protectRequest.validateToken();
var regio_key = getQParamInt("regio_key");
var action = getQParam("action", "");
var onrgoedlvl = "E";
var onrgoedlvl = "RG";
var this_alg = alg.func_enabled(regio_key, onrgoedlvl);
user.auth_required_or_abort(this_alg.writeman || (regio_key > 0 && this_alg.writeuse));
@@ -26,22 +26,21 @@ var formfields = [];
if (this_alg.writeman)
formfields.push({ name: "name", frm: "reg_oms" });
var params = { filter: { "id": regio_key }};
var model = new model_regions();
var jsondata = api2.form2JSONdata(model, params, formfields);
var jsondata = api2.form2JSONdata(model_regions, params, formfields);
switch (action)
{
case "I":
var regio_array = model.REST_POST(params, jsondata);
var regio_array = model_regions.REST_POST(params, jsondata);
regio_key = regio_array.key;
break;
case "U":
if (regio_key > 0)
var regio_array = model.REST_PUT(params, jsondata, params.filter.id);
var regio_array = model_regions.REST_PUT(params, jsondata, params.filter.id);
break;
case "D":
if (regio_key > 0)
var regio_array = model.REST_DELETE(params, params.filter.id);
var regio_array = model_regions.REST_DELETE(params, params.filter.id);
break;
default :
var regio_array = {warning: L("lcl_cnt_Del_Fails_Auth")};
@@ -52,34 +51,5 @@ var result = { regio_key: regio_key,
warning: warning,
keepForm: !!warning,
success: true };
if (!warning)
{
currentKenmerkenSQL = "SELECT k.alg_kenmerk_key"
+ " , ok.alg_onrgoedkenmerk_waarde"
+ " , k.alg_kenmerk_toonbaar"
+ " , k.fac_functie_key"
+ " FROM alg_onrgoedkenmerk ok"
+ " , alg_kenmerk k"
+ " WHERE k.alg_kenmerk_key = ok.alg_kenmerk_key"
+ " AND alg_onrgoedkenmerk_verwijder IS NULL"
+ " AND alg_onrgoed_niveau = 'E'"
+ " AND alg_onrgoed_key = " + regio_key;
saveFlexKenmerken(regio_key,
{ kenmerkTable: "alg_onrgoedkenmerk",
kenmerkParentKey : "alg_onrgoed_key",
kenmerkWaarde: "alg_onrgoedkenmerk_waarde",
kenmerkKey: "alg_kenmerk_key",
kenmerkToonbaar: "alg_kenmerk_toonbaar",
currentKenmerkenSQL: currentKenmerkenSQL,
requestQF: Request.Form,
flexPath: "ALG/E",
module: "ALG",
moduleName: "alg_onrgoed_niveau",
moduleVal: "E",
isNew: regio_key < 0
});
}
Response.Write(JSON.stringify(result));
%><% ASPPAGE_END(); %>

View File

@@ -111,7 +111,7 @@ oRs.Close();
</script>
</head>
<body class="fclt-modal" id="mod_algmultiedit">
<body class="modal" id="mod_algmultiedit">
<% MODAL_START(); %>
<form name="u2" action="alg_edit_ruimte_multi_save.asp?alg_level=<%=safe.htmlattr(alg_level)%>&alg_keys=<%=ingesloten.join(",")%>" method="post">
<%

View File

@@ -54,7 +54,6 @@ if (ter_key > 0)
+ ", prs_afdeling_key"
+ ", prs_perslid_key_verantw"
+ ", prs_perslid_key_verantw2"
+ ", mld_dienstniveau_key"
+ " FROM alg_terreinsector "
+ " WHERE alg_terreinsector_key = " + ter_key;
@@ -78,7 +77,6 @@ if (ter_key > 0)
var toon_email = oRs("alg_terreinsector_toon_email").Value;
var toon_kenteken = oRs("alg_terreinsector_toon_kentk").Value;
var vervaldatum = oRs("alg_terreinsector_vervaldatum").Value != null ? new Date(oRs("ALG_TERREINSECTOR_VERVALDATUM").Value) : null;
var dienstniveau = oRs("mld_dienstniveau_key").Value;
oRs.Close();
}
@@ -215,20 +213,6 @@ BLOCK_START("algter3", L("lcl_alg_gebouw_administr"), {icon: "fa-clipboard"});
FILEPICKERTR("ter_image", L("lcl_alg_terreinsector_image"), ter_image, { "key": ter_key, "module": "ALGPHT", "readonly": !this_alg.writeman });
BLOCK_END();
BLOCK_START("algter4", L("lcl_alg_gebouw_facilitair"), {icon: "fa-users-cog"});
sql = "SELECT mld_dienstniveau_key"
+ " , " + lcl.xsqla("mld_dienstniveau_omschr", "mld_dienstniveau_key")
+ " FROM mld_dienstniveau"
+ " ORDER BY UPPER(" + lcl.xsql("mld_dienstniveau_omschr", "mld_dienstniveau_key") + ")";
FCLTselector("dienstniveau",
sql,
{ label: L("lcl_mld_dienst_niveau"),
initKey: dienstniveau,
emptyOption: "",
readonly: !this_alg.writeman
});
BLOCK_END();
BLOCK_START("algter4", L("lcl_alg_gebouw_fysiek"), {icon: "fa-ruler-combined"});
RWFIELDTR("ter_opp", "fldshort", L("lcl_estate_terreinsector_man_oppervlak"), ter_opp, {maxlength: 15});

View File

@@ -78,7 +78,7 @@ user.auth_required_or_abort(tobeedited > 0); // We klagen niet over enkele wel e
</script>
</head>
<body class="fclt-modal" id="mod_algmultiedit">
<body class="modal" id="mod_algmultiedit">
<% MODAL_START(); %>
<form name="u2" action="alg_edit_terreinsector_multi_save.asp?ter_keys=<%=ingesloten.join(",")%>" method="post">
<%
@@ -145,17 +145,6 @@ user.auth_required_or_abort(tobeedited > 0); // We klagen niet over enkele wel e
emptyOption: "",
initEmpty: true
});
sql = "SELECT mld_dienstniveau_key"
+ " , " + lcl.xsqla("mld_dienstniveau_omschr", "mld_dienstniveau_key")
+ " FROM mld_dienstniveau"
+ " ORDER BY UPPER(" + lcl.xsql("mld_dienstniveau_omschr", "mld_dienstniveau_key") + ")";
FCLTselector("dienstniveau",
sql,
{ label: L("lcl_mld_dienst_niveau"),
emptyOption: "",
initEmpty: true,
readonly: !this_alg.writeuse
});
MODAL_BLOCK_END();

View File

@@ -49,8 +49,6 @@ if (Request.Form("toon_kenteken").Count == 1 && getFParam("check_toon_kenteken",
{ var toon_k = (getFParam("toon_kenteken") ? getFParam("toon_kenteken") : 0);
fields.push({ dbs: "alg_terreinsector_toon_kentk", typ: "number", val: toon_k, track: L("lcl_estate_gebouw_toon_kenteken")});
}
if (Request.Form("dienstniveau").Count == 1 && getFParam("check_dienstniveau", "off") == "on")
fields.push({ dbs: "mld_dienstniveau_key", typ: "key", frm: "dienstniveau", track: L("lcl_mld_dienst_niveau"), foreign: "mld_dienstniveau" });
for (var i = 0; i < ter_key_arr.length; i++)

View File

@@ -37,8 +37,7 @@ var fields = [{ dbs: "alg_terreinsector_omschrijving", typ: "varchar", frm: "ter
{ dbs: "prs_kostenplaats_key", typ: "key", frm: "prs_kstn", track: L("lcl_prs_dept_kosten"), foreign: "PRS_KOSTENPLAATS" },
{ dbs: "prs_afdeling_key", typ: "key", frm: "prs_afd", track: L("lcl_dep_name_level2"), foreign: "PRS_AFDELING" },
{ dbs: "prs_perslid_key_verantw", typ: "key", frm: "verantw", track: L("lcl_alg_verantw"), foreign: "PRS_PERSLID" },
{ dbs: "prs_perslid_key_verantw2", typ: "key", frm: "verantw2", track: L("lcl_alg_verantw2"), foreign: "PRS_PERSLID" },
{ dbs: "mld_dienstniveau_key", typ: "key", frm: "dienstniveau", track: L("lcl_mld_dienst_niveau"), foreign: "MLD_DIENSTNIVEAU" }];
{ dbs: "prs_perslid_key_verantw2", typ: "key", frm: "verantw2", track: L("lcl_alg_verantw2"), foreign: "PRS_PERSLID" }];
if (this_alg.writeman)
{

View File

@@ -74,7 +74,7 @@ user.auth_required_or_abort(ingesloten.length); // We klagen niet over enkele we
</script>
</head>
<body class="fclt-modal" id="mod_algmultiedit">
<body class="modal" id="mod_algmultiedit">
<% MODAL_START(); %>
<form name="u2" action="alg_edit_verdieping_multi_save.asp?flr_keys=<%=ingesloten.join(",")%>" method="post">
<%

View File

@@ -25,27 +25,22 @@ function generateFlexKenmerkBlock(params)
var advanced = params.advanced; // Geavanceerd
var hasfilter = params.hasfilter? params.hasfilter : null;
function isReadonly (oRs)
function isReadonly (volgnummer)
{
if (reado)
return true;
var rolcode = oRs("kenmerk_rolcode").value;
var canWrite = (params.this_alg.writeman && (rolcode&1)) || (params.this_alg.writeuse && (rolcode&2));
return !canWrite; // readonly
if (volgnummer < 100 && !params.this_alg.writeman)
return true;
if (volgnummer > 100 && !params.this_alg.writeuse)
return true;
}
function isInvisible(oRs)
function isInvisible(volgnummer, ktype)
{
var ktype = oRs("kenmerk_kenmerktype").value;
if (params.multi)
return (ktype == 'M' || ktype == 'F' || ktype == 'E'); // onzichtbaar bij multi
}
// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
var myreadrolcode = 0 + (params.this_alg.readman ? 1 : 0)
+ (params.this_alg.readuse ? 2 : 0);
var sql = "SELECT k.alg_kenmerk_key kenmerk_key"
+ " , 1 kenmerk_key_count"
+ " , NULL srtkenmerk_key"
@@ -70,7 +65,6 @@ function generateFlexKenmerkBlock(params)
: " , " + lcl.xsql("k.alg_kenmerk_default", "k.alg_kenmerk_key")
) + " kenmerk_waarde"
+ " , k.alg_kenmerk_volgnr kenmerk_volgnr"
+ " , k.alg_kenmerk_rolcode kenmerk_rolcode"
+ " , " + lcl.xsql("k.alg_kenmerk_dimensie", "k.alg_kenmerk_key") +" kenmerk_dimensie"
+ " , " + lcl.xsql("k.alg_kenmerk_hint", "k.alg_kenmerk_key") +" kenmerk_hint"
+ " , " + lcl.xsql("k.alg_kenmerk_default", "k.alg_kenmerk_key") + " kenmerk_default"
@@ -85,11 +79,12 @@ function generateFlexKenmerkBlock(params)
+ " FROM alg_kenmerk k "
+ " WHERE k.alg_kenmerk_niveau = " + safe.quoted_sql(onrgoed_niveau)
+ " AND k.alg_kenmerk_verwijder IS NULL "
+ " AND BITAND(alg_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
+ (!params.this_alg.readman? " AND alg_kenmerk_volgnr >= 100" : "")
+ (!params.this_alg.readuse? " AND alg_kenmerk_volgnr <= 100" : "")
+ " ORDER BY k.alg_kenmerk_volgnr"
+ " , " + lcl.xsql("k.alg_kenmerk_omschrijving", "k.alg_kenmerk_key");
var trn = 0; // fijn, maar waarom?
var trn = 0;
listKenmerk(sql,
"ALG", //module

View File

@@ -125,7 +125,7 @@ sql0 = "SELECT {0} id, " // 1 query voor beide
+ " '{2}' lbl, "
+ " COUNT (*) val, "
+ " '' det "
+ " FROM ins_v_deelenonderdeel i, ins_srtdeel sd "
+ " FROM ins_deel i, ins_srtdeel sd "
+ " WHERE i.ins_deel_verwijder IS NULL "
+ " AND i.ins_srtdeel_key = sd.ins_srtdeel_key"
+ " AND sd.ins_srtdeel_verwijder IS NULL "
@@ -139,7 +139,7 @@ sql0 = "SELECT {0} id, " // 1 query voor beide
+ " AND r.res_ins_deel_key = i.ins_deel_key) ";
sql1 = "SELECT {0} id, '> ' || ins_discipline_omschrijving lbl, COUNT (*) val, '' det "
+ " FROM ins_v_deelenonderdeel i, ins_discipline rd, ins_srtdeel sd "
+ " FROM ins_deel i, ins_discipline rd, ins_srtdeel sd "
+ " WHERE i.ins_discipline_key = rd.ins_discipline_key "
+ " AND i.ins_deel_verwijder IS NULL "
+ " AND sd.ins_srtdeel_verwijder IS NULL "

View File

@@ -17,6 +17,19 @@
<%
FCLTHeader.Requires({ plugins:["jQuery"] });
function fnrowData(oRs)
{
var detail_key = oRs.Fields("id").Value;
var key = oRs.Fields("id").Value;
var oms = oRs.Fields("name").Value;
var data = {detail_key: detail_key, key: key, oms: oms};
return JSON.stringify(data);
}
%>
<script type="text/javascript">
@@ -29,7 +42,7 @@ FCLTHeader.Requires({ plugins:["jQuery"] });
FcltMgr.openDetail(url, L("lcl_district"));
}
function districtEdit(row)
function districtEdit(row)
{
var algData = JSON.parse(row.getAttribute("ROWDATA"));
var url = "appl/ALG/alg_regio.asp?mode=viewUpdate&key=" + algData.key;
@@ -41,13 +54,13 @@ FCLTHeader.Requires({ plugins:["jQuery"] });
FcltMgr.confirm(L("lcl_alg_del_txt_regio"), { autoconfirm: isMulti }, function() {
var regKeyString = getKeyString(rowArray);
var data = { key: regKeyString,
level: "E"
level: "RE"
};
<% protectRequest.dataToken("data"); %>
$.post("alg_delete.asp", data, FcltCallbackRefresh, "json");
});
}
</script>
</script>
<%
function regio_list(pautfunction, params)
@@ -62,45 +75,13 @@ function regio_list(pautfunction, params)
var showall = params.showall;
var reg_key = params.reg_key;
function fnrowData(oRs)
{
var detail_key = oRs.Fields("id").Value;
var key = oRs.Fields("id").Value;
var oms = oRs.Fields("name").Value;
var data = {detail_key: detail_key, key: key, oms: oms};
return JSON.stringify(data);
}
function fnrowActionEnabler(oRs)
{
var eDelete = false;
if (alg.canWriteRegio(oRs.Fields("id").Value, authparams.mALGwritelevel))
eDelete = true;
return ({eDelete: eDelete});
var eDelete = false;
if (alg.canWriteRegio(oRs.Fields("id").Value, authparams.mALGwritelevel))
eDelete = true;
return ({eDelete: eDelete})
}
function fnrowFlexParams(oRs)
{
var reg_key = oRs.Fields("id").Value;
var this_alg = alg.func_enabled(reg_key, "E");
var flexParams = { readman: this_alg.readman, readuse: this_alg.readuse};
return flexParams;
}
function fncolFlexBijlagen(oRs)
{
var flexval = oRs.Fields("algflex").Value;
var alg_key = oRs.Fields("id").Value;
var result = ( flexval
? safe.html(flexval.replace(/\r/g, "\n")+ "\n")
: ""
);
if (flexParams.bijlageflex)
{
result += alg.alg_onroerendgoed_flex_bijlagen("E", alg_key);
}
return result;
}
%>
<html>
<head>
@@ -109,30 +90,16 @@ function regio_list(pautfunction, params)
<body id="listbody">
<%
// Ophalen regio`s
var flexParams = alg.alg_onroerendgoed_flex_params("E");
var regio_key = getQParamInt("regiokey");
var filter = {};
if (regio_key > -1)
filter = {id: regio_key};
else
{
var kenmerk_sql = getKenmerkSql("ALG", "alg_regio.alg_regio_key");
if (kenmerk_sql)
filter = {kenmerk_sql: kenmerk_sql.substr(4)}; // De "AND" aan het begin eraf halen.
}
var params = { filter: filter // Alle regio`s ophalen, behalve de verwijderde.
, flexparams: { anyflex: flexParams.anyflex
, bijlageflex: flexParams.bijlageflex
, sql: flexParams.sql.substr(1).replace("e.", "alg_regio.")
, algflex: {"dbs": "algflex", "typ": "varchar"}
}
};
var model = new model_regions();
var regio_array = model.REST_GET(params); // Roep de API2 GET aan
var filter = {id: regio_key};
var params = { filter: filter }; // Alle regio`s ophalen, behalve de verwijderde.
var regio_array = model_regions.REST_GET(params); // Roep de API2 GET aan
//
var addurl = "appl/alg/alg_regio.asp";
// addurl += buildTransitParam(["loc_key", "bld_key", "flo_key", "room_key"], params) // TODO: welke allemaal?
if (canAdd)
{
@@ -145,17 +112,13 @@ function regio_list(pautfunction, params)
showAll: showall,
rowData: fnrowData,
rowActionEnabler: fnrowActionEnabler,
flexModule: "ALG",
flexId: "alg_regio_key",
flexParams: fnrowFlexParams,
outputmode: outputmode,
filterParams: params,
buttons: addButton
});
rst.addColumn(new Column({caption: L("lcl_estate_regio_descr"), content: "name"}));
if (flexParams.anyflex)
rst.addColumn(new Column({caption: flexParams.flexlabel, content: fncolFlexBijlagen, colName: "fncolFlexBijlagen"}));
rst.addAction({ action: "districtEdit", caption: L("lcl_edit"), isDefault: true});
rst.addAction({ action: "doDelete", caption: L("lcl_delete"), enabler: "eDelete", multi: true, multiOnce: true});

View File

@@ -24,31 +24,7 @@ var authparams = alg.checkAutorisation();
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
function doSubmit()
{
// Submitten met kenmerken
doSubmitWithKenmerken();
}
async function myModal(init)
{
var lvl = "E";
var key = 0;
var bld_key = "";
var url = "load_kenmerk.asp?disc="
+ "&urole=bo"
+ "&advanced=1"
+ "&hasFilter=1"
+ "&onrgoed_key=" +bld_key
+ "&onrgoed_niveau=" + lvl;
var titel = L("lcl_properties");
await showKenmerkModal(url, titel, init);
}
$(function() {
<% if (autosearch) { %>
document.forms.u2.submit();
<% } %>
});
$(function() {<% if (autosearch) { %> document.forms.u2.submit(); <%}%> });
</script>
</head>
<body id="searchbody">
@@ -63,10 +39,8 @@ var authparams = alg.checkAutorisation();
whenEmpty: L("lcl_search_generic")
});
SEARCH_BLOCK_END();
var buttons = [{title: L("lcl_overview_list"), action: "document.forms.u2.submit();", id: "bSearch", icon: "fa-clipboard-list" }];
SIMPLE_BLOCK_START();
var buttons = [ {title: L("lcl_overview_list"), action: "doSubmit();", id: "bSearch", icon: "fa-clipboard-list" }
, {title: L("lcl_shared_advanced"), action: "myModal()", id: "bAdvanced", importance: 3, icon: "fa-filter" }
];
CreateButtons(buttons, { entersubmit: true, showIcons: true });
SIMPLE_BLOCK_END();
SEARCH_PAGE_END(); %>

View File

@@ -19,6 +19,7 @@ FCLTHeader.Requires({ plugins:["jQuery", "suggest"], js: ["jQuery-ui.js"] });
function ruimte_list(pautfunction, params)
{
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
var addButton = [];
var authparams = alg.checkAutorisation();
// Met ALG* bepaal je wat je ziet (Read), met RUI* en TER* bepaal je wat je kunt wijzigen (Write).
var canAdd = (authparams.rmALGwritelevel < 9);
@@ -41,19 +42,6 @@ function ruimte_list(pautfunction, params)
var expalgincl = params.expalgincl;
var chkgeb = params.chkgeb;
var cnt_full = params.cnt_full;
var usingoccupationsensors = params.sensorstats;
// Het lijkt zinvol, ook voor onnodig performanceverlies, dat we deze alleen doen als we autorisatie hebben voor WEB_RESBAC of WEB_RESMSU
var showdeskreservationstats = params.resstats && (user.has("WEB_RESBAC") || user.has("WEB_RESMSU"))
var showroomreservationstats = params.resstats && (user.has("WEB_RESBAC") || user.has("WEB_RESMSU"));
if (showdeskreservationstats) {
// Fast check to see if we do have werkplekdisciplines
sql= "SELECT 1 FROM res_discipline WHERE ins_discipline_min_level = 5 AND ins_discipline_verwijder IS NULL AND ROWNUM = 1";
oRs = Oracle.Execute(sql);
showdeskreservationstats = !oRs.eof;
oRs.close();
}
%>
<html>
@@ -153,29 +141,11 @@ function ruimte_list(pautfunction, params)
+ " AND sn.fac_srtnotificatie_xmlnode = 'ruimte'"
+ " ) recentdatum"
+ flexParams.sql
+ (usingoccupationsensors
? ", sstats.total_person_hours"
+ ", sstats.avg_utilization_pct"
+ ", sstats.peak_occupied_desks"
: "")
+ (showdeskreservationstats
? ", dstats.total_reserved_hours_desk"
+ ", dstats.avg_reserved_count_desk"
+ ", dstats.peak_reserved_count_desk"
: "")
+ (showroomreservationstats
? ", rstats.total_reserved_hours_room" // hoeveel uur in de afgelopen 90 dagen
+ ", rstats.avg_persons_per_reservation" // gemiddeld aantal deelnemers per reservering
+ ", rstats.avg_reservation_duration_hours" // gemiddelde reserveringsduur
: "")
+ " FROM alg_ruimte r"
+ ", alg_verdieping v"
+ ", alg_gebouw g"
+ ", alg_locatie l"
+ ", alg_srtruimte s"
+ (usingoccupationsensors ? ", ins_v_room_occupancy_kpis sstats" : "")
+ (showdeskreservationstats ? ", res_v_desk_reservation_kpis dstats" : "")
+ (showroomreservationstats ? ", res_v_room_simple_kpis rstats" : "")
+ " WHERE v.alg_verdieping_key = r.alg_verdieping_key "
+ " AND g.alg_gebouw_key = v.alg_gebouw_key "
+ " AND l.alg_locatie_key(+) = g.alg_locatie_key "
@@ -189,9 +159,6 @@ function ruimte_list(pautfunction, params)
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparams.ALGreadlevel + ")";
}
sqln += (usingoccupationsensors ? " AND r.alg_ruimte_key = sstats.alg_ruimte_key(+)" : "")
sqln += (showdeskreservationstats ? " AND r.alg_ruimte_key = dstats.alg_ruimte_key(+)" : "")
sqln += (showroomreservationstats ? " AND r.alg_ruimte_key = rstats.alg_ruimte_key(+)" : "")
sqln += getKenmerkSql("ALG", "r.alg_ruimte_key");
@@ -253,13 +220,11 @@ function ruimte_list(pautfunction, params)
var addurl = "appl/alg/alg_ruimte.asp?a=1";
addurl += buildTransitParam(["locatiekey", "gebouwkey", "verdiepingkey", "ruimtekey"], params) // TODO: welke allemaal?
var buttons = [];
var adButton = [];
if (canAdd)
{
buttons.push({ icon: "fa-plus", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + safe.jsstring(L("lcl_add")) + "')" });
addButton.push({ icon: "fa-plus", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + safe.jsstring(L("lcl_add")) + "')" });
}
buttons.push({ icon: "fa-columns", title: L("lcl_scf_columns"), action: "openColumns()"});
/**********************************
* Callback functies ResultsetTable
@@ -353,7 +318,6 @@ function ruimte_list(pautfunction, params)
keyColumn: "alg_ruimte_key",
ID: "algtable",
title: L("lcl_menu_alg_ruimte"),
tabs_code: "algruimte_list-x",
showAll: showall,
rowData: fnrowData,
rowClass: fnrowClass,
@@ -363,7 +327,7 @@ function ruimte_list(pautfunction, params)
flexId: "alg_ruimte_key",
flexParams: fnrowFlexParams,
filterParams: params,
buttons: buttons,
buttons: addButton,
roundtripCode: (canImport ? "ONRGOED2" : "")
});
@@ -392,25 +356,6 @@ function ruimte_list(pautfunction, params)
if (flexParams.anyflex)
rst.addColumn(new Column({caption: flexParams.flexlabel, content: fncolFlexBijlagen, colName: "fncolFlexBijlagen"}));
if (usingoccupationsensors)
{
rst.addColumn(new Column({caption: I("fa-sensor")+"&nbsp;"+L("lcl_alg_occupationsensor_ph"), content: "total_person_hours", datatype: "float"}));
rst.addColumn(new Column({caption: I("fa-sensor")+"&nbsp;"+L("lcl_alg_occupationsensor_au"), content: "avg_utilization_pct", datatype: "float"}));
rst.addColumn(new Column({caption: I("fa-sensor")+"&nbsp;"+L("lcl_alg_occupationsensor_po"), content: "peak_occupied_desks", datatype: "number"}));
}
if (showroomreservationstats)
{
rst.addColumn(new Column({caption: I("fa-calendar")+"&nbsp;"+L("lcl_alg_resstats_trhr"), content: "total_reserved_hours_room", datatype: "float"}));
rst.addColumn(new Column({caption: I("fa-calendar")+"&nbsp;"+L("lcl_alg_resstats_appr"), content: "avg_persons_per_reservation", datatype: "float"}));
rst.addColumn(new Column({caption: I("fa-calendar")+"&nbsp;"+L("lcl_alg_resstats_ardh"), content: "avg_reservation_duration_hours", datatype: "float"}));
}
if (showdeskreservationstats)
{
rst.addColumn(new Column({caption: I("fa-chair-office")+"&nbsp;"+L("lcl_alg_wpresstats_trh"), content: "total_reserved_hours_desk", datatype: "float"}));
rst.addColumn(new Column({caption: I("fa-chair-office")+"&nbsp;"+L("lcl_alg_wpresstats_arc"), content: "avg_reserved_count_desk", datatype: "float"}));
rst.addColumn(new Column({caption: I("fa-chair-office")+"&nbsp;"+L("lcl_alg_wpresstats_prc"), content: "peak_reserved_count_desk", datatype: "number"}));
}
rst.addAction({ action: "ruimteEdit", caption: L("lcl_edit"), isDefault: true });
rst.addAction({ action: "ruimteEditMulti", caption: L("lcl_alg_multi_edit"), multi: true, multiOnce: true, single: false, enabler: "eEditMulti"});
rst.addAction({ action: "doDelete", caption: L("lcl_delete"), multi: true, single: !noref, enabler: "eDelete" });

View File

@@ -14,7 +14,6 @@
<%
FCLTHeader.Requires({ plugins:["jQuery", "kenmerk"] });
// pre-filters
var locatie_key = getQParamInt("locatie_key", -1); // Locatie
var gebouw_key = getQParamInt("gebouw_key", -1); // Gebouw
var verdieping_key = getQParamInt("verdieping_key", -1); // Verdieping
@@ -22,15 +21,12 @@ var ruimte_key = getQParamInt("ruimte_key", -1); // ruimte
var ruimte_nr = getQParam("ruimte_nr", "");
var ruimte_use = getQParamInt("ruimte_use", -1); // Ruimtefunctie
var ruimte_descr = getQParam("ruimte_descr", "");
// behaviour
var autosearch = getQParamInt("autosearch", 0) == 1;
var alg_startlevel = getQParamInt("alg_startlevel", 2); // Startlevel van plaatsselector, default Locatie
var chkgeb = getQParamInt("chkgeb", 0) == 1; // Controleer tegen de vervallenstatus van het bovenliggende gebouw (vertrouw lvl_key/geb_key niet)
var chkgeb = getQParamInt("chkgeb", 0) == 1;
var cnt_full = getQParamInt("cnt_full", 1);
var sensorstats = getQParamInt("nosensorstats", 0) == 0;
var resstats = getQParamInt("noresstats", 0) == 0;
var authparams = alg.checkAutorisation();
%>
<html>
<head>
@@ -83,7 +79,6 @@ var authparams = alg.checkAutorisation();
filtercode: "INCVR",
whenEmpty: L("lcl_search_generic") // want filter
});
RWCHECKBOXTR("expAlgIncl", "fld", L("lcl_alg_ruimte_vervallen_incl"), false, { html: " value='1' ", boxfirst: true, twocols: true});
SEARCH_BLOCK_END();
SEARCH_BLOCK_START();
%>
@@ -93,7 +88,7 @@ var authparams = alg.checkAutorisation();
</tr>
<tr class="primsearch">
<td class="label"><label for="descr"><%=L("lcl_estate_ruimte_man_descr")%></label></td>
<td><input type="text" class="fldsrch fld" name="descr" value="<%=safe.htmlattr(ruimte_descr)%>"></td>
<td><input type="text" class="fldsrch fldshort" name="descr" value="<%=safe.htmlattr(ruimte_descr)%>"></td>
</tr>
<%
@@ -125,14 +120,16 @@ var authparams = alg.checkAutorisation();
filtercode: "AR"
});
}
if (sensorstats && (S("ins_occupationsensors_srtgroep_key") > 0))
{
RWCHECKBOXTR("sensorstats", "fld", L("lcl_alg_sensorstats"), false, { html: " value='1' ", boxfirst: true, twocols: true});
}
if (resstats && (user.has("WEB_RESBAC") || user.has("WEB_RESMSU")))
{
RWCHECKBOXTR("resstats", "fld", L("lcl_alg_resstats"), false, { html: " value='1' ", boxfirst: true, twocols: true});
}
%>
<!-- Vervallen ruimten -->
<tr class="primsearch">
<td></td>
<td align=left>
<input type="checkbox" class="fld" name="expAlgIncl" id="expAlgIncl" value="1" >
<label for="expAlgIncl"><%=L("lcl_alg_ruimte_vervallen_incl")%></label>
</td>
</tr>
<%
SEARCH_BLOCK_END();
SIMPLE_BLOCK_START();

View File

@@ -52,8 +52,6 @@ ruimte_list ( "*",
dept_key_arr: dept_key_arr,
noref: (noref != -1? noref : null),
expalgincl: expalgincl,
sensorstats: getQParamInt("sensorstats", 0) == 1,
resstats: getQParamInt("resstats", 0) == 1,
chkgeb: chkgeb
}
);

View File

@@ -201,7 +201,7 @@ else
</script>
</head>
<body class="fclt-modal" id="mod_ruimteafdeling">
<body class="modal" id="mod_ruimteafdeling">
<% MODAL_START(); %>
<form name="u2" method="post" action="alg_ruimteafdeling.asp?submit=1&ruimte_keys=<%=ruimte_key_arr.join(",")%>">
<% MODAL_BLOCK_START("alg_ruimteafdeling", L("lcl_alg_geselecteerde_ruimten") + ": " + ruimte_key_arr.length, { icon: "fa-map-marker" }); %>
@@ -298,4 +298,4 @@ IFACE.FORM_END();
</html>
<%
}
ASPPAGE_END(); %>
ASPPAGE_END(); %>

View File

@@ -51,7 +51,7 @@ FCLTHeader.Requires({plugins:["suggest","jQuery"], js: ["jQuery-ui.js"]})
</script>
</head>
<body class="fclt-modal" id="mod_ruimtefunctie">
<body class="modal" id="mod_ruimtefunctie">
<% MODAL_START(); %>
<%
var page="alg_edit_ruimtefunctie.asp?srtruimte_lg_key=" + srtruimte_lg_key; // Edit
@@ -65,4 +65,4 @@ FCLTHeader.Requires({plugins:["suggest","jQuery"], js: ["jQuery-ui.js"]})
<% MODAL_END(); %>
</body>
</html>
<% ASPPAGE_END(); %>
<% ASPPAGE_END(); %>

View File

@@ -41,7 +41,7 @@ var ruimte_key_arr = getQParamIntArray("ruimte_keys");
</script>
</head>
<body class="fclt-modal" id="mod_ruimteresscope">
<body class="modal" id="mod_ruimteresscope">
<% MODAL_START(); %>
<form name="u2" method="post" action="alg_ruimteresscope_save.asp?ruimte_keys=<%=ruimte_key_arr.join(",")%>">
<% MODAL_BLOCK_START("alg_ruimteresscope", L("lcl_alg_geselecteerde_ruimten") + ": " + ruimte_key_arr.length, { icon: "fa-map-marker" }); %>
@@ -74,4 +74,4 @@ var ruimte_key_arr = getQParamIntArray("ruimte_keys");
<% MODAL_END(); %>
</body>
</html>
<% ASPPAGE_END(); %>
<% ASPPAGE_END(); %>

View File

@@ -11,7 +11,6 @@
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../Shared/timezoneselector.inc" -->
<!-- #include file="alg_flexkenmerk.inc" -->
<!-- #include file="alg.inc" -->
@@ -50,8 +49,6 @@ var pst_land = oRs("alg_locatie_post_land").Value;
var loc_deleted = oRs("alg_locatie_verwijder").Value != null;
var vervaldatum = oRs("alg_locatie_vervaldatum").Value;
var dienstniveau_key = oRs("mld_dienstniveau_key").Value;
var alg_tz = oRs("alg_locatie_timezone").Value;
oRs.Close();
%>
<html>
@@ -139,7 +136,6 @@ oRs.Close();
BLOCK_START("facFM", L("lcl_operations_block"), {icon: "fa-users-cog"});
ROFIELDTR("fld", L("lcl_alg_locatie_volgnr"), loc_volgnr, {suppressEmpty: true});
FCLTtimezoneselector("", {initVal: alg_tz, readonly: true, suppressEmpty: true});
var fldcls = "fld";
if (vervaldatum <= new Date())
fldcls += " expired2";

View File

@@ -47,16 +47,14 @@ var afgehandeld = false;
var kenmerk_key = -1;
if (alg_key > 0)
{
// Als ik canReadNotes heb dan heb ik canUSEread en/of canMANread rechten.
// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
var myreadrolcode = 0 + (this_alg.canMANread ? 1 : 0)
+ (this_alg.canUSEread ? 2 : 0);
// Is er een bijlage kenmerk?
var sql = "SELECT k.alg_kenmerk_key"
+ " FROM alg_kenmerk k"
+ " WHERE k.alg_kenmerk_niveau IN ('R','V','G','T','L')"
+ " AND k.alg_kenmerk_verwijder IS NULL"
+ " AND BITAND(k.alg_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
// Als ik canReadNotes heb dan heb ik canUSEread en/of canMANread rechten.
+ (!this_alg.canMANread ? " AND k.alg_kenmerk_volgnr >= 100" : "")
+ (!this_alg.canUSEread ? " AND k.alg_kenmerk_volgnr <= 100" : "")
+ " AND ( k.alg_kenmerk_verplicht IS NULL"
+ " OR k.alg_kenmerk_verplicht = 0)"
+ " AND k.alg_kenmerk_kenmerktype = 'M'"

View File

@@ -5,7 +5,7 @@
File: alg_show_regio.asp
Status:
Description:
Description:
Parameters: regio_key
*/ %>
@@ -21,14 +21,11 @@
FCLTHeader.Requires({plugins:["jQuery"], js: []})
var regio_key = getQParamInt("regio_key");
var onrgoedlvl = "E";
var regio_params = { filter: { id: regio_key
, show_deleted: true // Ook indien verwijderd ophalen.
}};
//var regio_array = model_regions.REST_GET(regio_params); // Roep de API2 GET aan
var model = new model_regions();
var regio_array = model.REST_GET(regio_params);
var regio_array = model_regions.REST_GET(regio_params); // Roep de API2 GET aan
var regio_data = (regio_array[0] ? regio_array[0] : {id: -1}); // GET kan meerdere records opleveren, maar we verwachten hier maar 1.
var this_alg = regio_params.func_enabled; // regio_params bevat nu ook waarden die in API2 zijn bepaald.
@@ -49,8 +46,11 @@ var regio_deleted = regio_exists && !!regio_data.deleted;
function reg_delete()
{
FcltMgr.confirm(L("lcl_alg_del_txt_regio"), function() {
var data = $("[name=u2]").serialize();
$.post("alg_edit_regio_save.asp?regio_key=<%=regio_data.id%>&action=D",
var data = {
action: "D"
};
<% protectRequest.dataToken("data"); %>
$.post($("form[name=u2]")[0].action,
data,
FcltCallbackClose,
"json");
@@ -60,8 +60,8 @@ var regio_deleted = regio_exists && !!regio_data.deleted;
</head>
<body class="showmode">
<%
SUBFRAME_START();
<%
SUBFRAME_START();
var buttons = [];
if (!regio_deleted)
{
@@ -85,14 +85,9 @@ var regio_deleted = regio_exists && !!regio_data.deleted;
<% BLOCK_START("algInfo", L("lcl_region"), {icon: "fa-globe"});
ROFIELDTR("fld", L("lcl_name"), regio_data.name);
BLOCK_END();
generateFlexKenmerkBlock ({ onrgoed_key : regio_key,
onrgoed_niveau : onrgoedlvl,
reado : true,
this_alg : this_alg });
IFACE.FORM_END();
%> </form><%
SUBFRAME_END(); %>
%>
</form>
<% SUBFRAME_END(); %>
</body>
</html>
<% ASPPAGE_END(); %>
<% ASPPAGE_END(); %>

View File

@@ -41,6 +41,7 @@ var sql = "SELECT ts.alg_locatie_key"
+ " , ts.alg_terreinsector_oppervlak"
+ " , ts.alg_terreinsector_omtrek"
+ " , ts.alg_terreinsector_aanmaak"
+ " , ts.alg_terreinsector_omschrijving"
+ " , ts.alg_terreinsector_ordernr"
+ " , ts.alg_terreinsector_image"
+ " , ts.alg_terreinsector_toon_telef"
@@ -58,7 +59,6 @@ var sql = "SELECT ts.alg_locatie_key"
+ " , prs_perslid_key_verantw2"
+ " , ts.alg_terreinsector_vervaldatum"
+ " , ts.alg_terreinsector_verwijder"
+ " , ts.mld_dienstniveau_key"
+ " FROM alg_terreinsector ts"
+ " WHERE ts.alg_terreinsector_key = " + ter_key;
var oRs = Oracle.Execute(sql);
@@ -71,6 +71,7 @@ var ter_sroms = oRs("srtterreinsector_oms").Value;
var ter_opp = oRs("alg_terreinsector_oppervlak").Value;
var ter_omt = oRs("alg_terreinsector_omtrek").Value;
var ter_aanmk = oRs("alg_terreinsector_aanmaak").Value;
var ter_oms = oRs("alg_terreinsector_omschrijving").Value;
var ter_ordnr = oRs("alg_terreinsector_ordernr").Value;
var ter_image = oRs("alg_terreinsector_image").Value;
var toon_telefoon = oRs("alg_terreinsector_toon_telef").Value;
@@ -84,7 +85,6 @@ var verantw_key = oRs("prs_perslid_key_verantw").Value;
var verantw2_key = oRs("prs_perslid_key_verantw2").Value;
var ter_deleted = oRs("alg_terreinsector_verwijder").Value != null;
var vervaldatum = oRs("alg_terreinsector_vervaldatum").Value;
var dienstniveau_key = oRs("mld_dienstniveau_key").Value;
oRs.Close();
%>
@@ -215,20 +215,6 @@ oRs.Close();
FILEPICKERTR("ter_image", L("lcl_alg_terreinsector_image"), ter_image, { "key": ter_key, "module": "ALGPHT", "readonly": true });
BLOCK_END();
BLOCK_START("algter4", L("lcl_alg_gebouw_facilitair"), {icon: "fa-users-cog"});
if (dienstniveau_key)
{
sql = "SELECT mld_dienstniveau_key"
+ " , " + lcl.xsqla("mld_dienstniveau_omschr", "mld_dienstniveau_key")
+ " FROM mld_dienstniveau"
+ " WHERE mld_dienstniveau_key = " + dienstniveau_key;
oRs = Oracle.Execute(sql);
ROFIELDTR("fld", L("lcl_mld_dienst_niveau"), oRs("mld_dienstniveau_omschr").value);
oRs.Close();
}
BLOCK_END();
if (!(ter_opp == null && ter_omt == null && vervaldatum == null))
{
BLOCK_START("algter4", L("lcl_alg_gebouw_fysiek"), {icon: "fa-ruler-combined"});

View File

@@ -31,7 +31,7 @@ if (ter_key > 0)
var loc_code = oRs("alg_locatie_code").value;
var ter_code = oRs("alg_terreinsector_code").value;
oRs.Close();
var ter_naam = " " + loc_code + "-" + ter_code;
}
else

View File

@@ -1,148 +0,0 @@
<%@ language = "JavaScript" %>
<% /*
$Revision$
$Id$
File: default.asp
Description: Test-pagina om in Exchange te kunnen kijken
Parameters:
Status:
Context:
Notes:
*/
THIS_FILE = "../api/default.asp";
%>
<!-- #include file="../../Shared/common.inc" -->
<!-- #include file="../../Shared/iface.inc" -->
<!-- #include file="../../Shared/calendar.inc" -->
<%
FCLTHeader.Requires({
plugins: ["jQuery"]
});
user.checkAutorisation("WEB_FACTAB");
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
body, #result {
display: grid;
grid-template-rows: auto 1fr;
font-size: 13px;
}
.captions, .content {
display: flex;
flex-wrap: wrap;
}
.attention-bar {
flex-basis: 100%;
font-size: 1.25em;
font-weight: bold;
text-align: center;
}
.inform {
background-color: orange;
color: white;
}
.captions > span {
height: 2em;
flex-basis: 50%;
text-align: center;
}
textarea {
overflow: auto;
white-space: pre;
padding: .5em;
flex-basis: 50%;
}
</style>
<script>
function doSubmit() {
$.post(
"get_exchange_info.asp",
$("[name=exchange]").serialize(),
FcltCallbackAndThenAlways(exc_submit_callback),
"json"
);
}
function exc_submit_callback(json) {
$(".host, .room").val("");
$(".attention-bar").remove();
if (json.success) {
if (json.info?.length) { // Als json.success === false, dan wordt de json.info al in een popup weergegeven
for (var i = 0; i < json.info.length; i++) {
$(".captions > .host").before("<div class='attention-bar inform'>" + I("fa-circle-info fa-lg") + " " + safe.html(json.info) + "</div>");
}
}
$(".host").val(json.host ? JSON.stringify(json.host, null, 4) : "N/A");
$(".room").val(json.room ? JSON.stringify(json.room, null, 4) : "N/A");
}
}
</script>
</head>
<body id="searchbody">
<form name="exchange" onsubmit="doSubmit(); return false;">
<% SEARCH_PAGE_START({ header: L("lcl_filterblok") });
SEARCH_BLOCK_START();
RWFIELDTR("reservering", null, L("lcl_res_number"));
RWCHECKBOXTR("compact", null, "Compact", true);
SEARCH_BLOCK_END();
SEARCH_BLOCK_START();
RWFIELDTR("userPrincipalName", null, "Eigenaar van de Exchange agenda", null, { "placeholder": "prs_perslid_email of res_ruimte_extern_id" });
FCLTcalendar("date_from", {
label: L("lcl_period_from"),
initEmpty: true,
volgnr: 1
});
FCLTcalendar("date_to", {
label: L("lcl_period_to"),
initEmpty: true,
volgnr: 2
});
SEARCH_BLOCK_END();
var buttons = [{ title: L("lcl_search"), action: "doSubmit()", importance: 1, icon: "fa-search" }];
SIMPLE_BLOCK_START();
CreateButtons(buttons, { "entersubmit": true });
SIMPLE_BLOCK_END();
SEARCH_PAGE_END();
IFACE.FORM_END();
%> </form>
<div id="result">
<div class="captions">
<span class="host">Hieronder het Exchange event uit de agenda van de <i>Gastheer</i></span>
<span class="room">Hieronder het Exchange event uit de agenda van de <i>Ruimte</i></span>
</div>
<div class="content">
<textarea class="host"></textarea>
<textarea class="room"></textarea>
</div>
</div>
</body>
</html>
<%
ASPPAGE_END();
%>

View File

@@ -1,243 +0,0 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: get_exchange_info.asp
Description: Haalt events uit Exchange op en geeft deze terug
Parameters:
Context:
Note:
*/
var JSON_Result = true;
%>
<!-- #include file="../../Shared/common.inc" -->
<%
Session.Codepage = 65001; // We doen *uitsluitend* utf-8
Response.Charset = "UTF-8";
protectRequest.validateToken();
user.checkAutorisation("WEB_FACTAB");
function early_exit(err) {
result.success = false;
result.warning = err;
ASPPAGE_END();
Response.Write(JSON.stringify(result));
Response.End;
}
function verifyMSGraphResult(response) {
if (response === false || response === null) {
early_exit("MS Graph [Generic Error] - Zie Logging voor details");
}
}
// Minimaliseer het resultaat door alleen zeer relevante velden over te nemen
function strip(result) {
function _minify(event) {
return {
"createdDateTime": event.createdDateTime,
"id": event.id,
"iCalUId": event.iCalUId,
"subject": event.subject,
"isCancelled": event.isCancelled,
"sensitivity": event.sensitivity,
"isOnlineMeeting": event.isOnlineMeeting,
"responseStatus": event.responseStatus,
"start": event.start,
"end": event.end,
// "locations": event.locations,
"attendees": event.attendees
}
}
if (result.host) {
if (result.host instanceof Array) {
for (var i = 0; i < result.host.length; i++) {
result.host[i] = _minify(result.host[i]);
}
} else {
result.host = _minify(result.host);
}
}
if (result.room) {
if (result.room instanceof Array) {
for (var i = 0; i < result.room.length; i++) {
result.room[i] = _minify(result.room[i]);
}
} else {
result.room = _minify(result.room);
}
}
return result;
}
// Polyfill
if (!Date.prototype.toISOString) {
Date.prototype.toISOString = function () {
function pad(n) { return n < 10 ? '0' + n : n }
return this.getUTCFullYear() + '-'
+ pad(this.getUTCMonth() + 1) + '-'
+ pad(this.getUTCDate()) + 'T'
+ pad(this.getUTCHours()) + ':'
+ pad(this.getUTCMinutes()) + ':'
+ pad(this.getUTCSeconds()) + 'Z';
};
}
var result = {
info: []
};
if (!(S("msgraph_sync_level") > 0)) {
result.info = ["S(\"msgraph_sync_level\") staat op '0'"];
}
// Initialize hook
var hook = hookfunc.gethook("UTILS/Exchange/res_to_graph.wsc");
var DEZE = this;
try {
var init = hook.initialize({
DEZE: DEZE,
custabspath: Server.MapPath(custpath)
});
if (init === null) { // Is alleen null als de exchange.config ontbreekt
early_exit("Geen exchange.config aangetroffen");
}
} catch (e) {
early_exit("Hook error: " + e.description);
}
var host_id = null;
var room_id = null;
var host_email = null;
var room_email = null;
var res_rsv_ruimte_key = null;
var fallback_user = false;
var compact = getFParam("compact", "off") == "on";
var reservering_nr = getFParam("reservering", "");
var userPrincipalName = getFParam("userPrincipalName", null);
var date_from = getFParamDate("date_from", null);
var date_to = getFParamDate("date_to", null);
if (reservering_nr != "") {
// We gaan het event ophalen met een reserveringsnr als informatie
var res_reservering_key = parseInt(reservering_nr.split("/")[0], 10);
var res_rsv_ruimte_volgnr = parseInt((reservering_nr.split("/")[1] || 1), 10);
if (isNaN(res_reservering_key) || isNaN(res_rsv_ruimte_volgnr)) {
early_exit("Ongeldig reserveringsnr, verwachte formaat; 12345/1");
}
var sql = "SELECT rrr.res_rsv_ruimte_externnr2 host_id,"
+ " rrr.res_rsv_ruimte_externnr room_id,"
+ " p_host.prs_perslid_email host_email,"
+ " rr.res_ruimte_extern_id room_email,"
+ " rrr.res_rsv_ruimte_key res_rsv_ruimte_key,"
+ " p_host.prs_perslid_oslogin host_login"
+ " FROM res_rsv_ruimte rrr"
+ " JOIN prs_perslid p_host"
+ " ON p_host.prs_perslid_key = rrr.res_rsv_ruimte_host_key"
+ " JOIN res_ruimte_opstelling rro"
+ " ON rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key"
+ " JOIN res_ruimte rr ON rr.res_ruimte_key = rro.res_ruimte_key"
+ " WHERE rrr.res_reservering_key = " + res_reservering_key
+ " AND rrr.res_rsv_ruimte_volgnr = " + res_rsv_ruimte_volgnr;
var oRs = Oracle.Execute(sql);
if (!oRs.EoF) {
host_id = oRs("host_id").Value;
room_id = oRs("room_id").Value;
host_email = oRs("host_email").Value;
room_email = oRs("room_email").Value;
res_rsv_ruimte_key = oRs("res_rsv_ruimte_key").Value;
fallback_user = oRs("host_login").Value === null ? false : !!oRs("host_login").Value.match(/^_MSGRAPH_FALLBACK_/);
} else {
early_exit("Reservering niet in Facilitor gevonden");
}
oRs.Close();
// Wat error-handling
if (host_id === null && room_id === null) {
if (room_email === null) {
early_exit("Ruimte is geen Exchange-gekoppelde ruimte");
} else {
early_exit("Reservering is niet aan Exchange gekoppeld");
}
} else if (fallback_user) {
early_exit("Deze reservering is geboekt op een fallback user, we kunnen hiervan niets uitlezen op basis van de reservering. Probeer de reservering zelf op te zoeken mbv een datum bereik");
}
// Haal nu de eigenlijke Exchange-events op
if (host_id && host_id != "##PENDING##" && host_email) {
var method = host_id.match(/^##iCalUId##/) ? "iCalUId" : "id";
result.host = hook.getCalendarEvent(method, host_email, host_id);
verifyMSGraphResult(result.host);
}
if (room_id && room_email) {
room_id = room_id.split("|")[1] || room_id.split("|")[0];
var method = room_id.match(/^##iCalUId##/) ? "iCalUId" : "id";
if (method == "iCalUId") {
room_id = room_id.slice(11); // Strip de '##iCalUId##'
}
result.room = hook.getCalendarEvent(method, room_email, room_id);
verifyMSGraphResult(result.room);
}
// Niet gevonden, nog eens proberen obv res_rsv_ruimte_key
if (!result.host && !result.room) {
if (host_id == "##PENDING##" && host_email) {
result.info.push("Deze reservering heeft nog geen antwoord van MSGraph ontvangen");
result.host = hook.getCalendarEvent("res_rsv_ruimte_key", host_email, res_rsv_ruimte_key);
verifyMSGraphResult(result.host);
if (!result.host) {
early_exit("Reservering niet in Exchange gevonden op basis van res_rsv_ruimte_key");
}
} else {
result.info.push("Reservering niet in Exchange gevonden");
}
if (!result.host) {
early_exit("Reservering niet in Exchange gevonden");
}
}
// Klaar
} else if (userPrincipalName && date_from != null && date_to != null) {
// We gaan het event ophalen met een (ruimte of gastheer)email en een datum bereik
var id = date_from.toISOString() + "##" + date_to.toISOString();
var response = hook.getCalendarEvent("date", userPrincipalName, id);
verifyMSGraphResult(response);
// Verwerk het resultaat
if (response.value) {
// Convert een javascript Array naar een JSON Array
var events = [];
for (var x in response.value) {
events.push(response.value[x]);
}
if (events.length != 1) {
result.info.push("Er zijn " + events.length + " events gevonden");
}
var sql = "SELECT 1"
+ " FROM res_ruimte"
+ " WHERE UPPER(res_ruimte_extern_id) = " + safe.quoted_sql_upper(userPrincipalName);
var oRs = Oracle.Execute(sql);
if (oRs.EoF) {
result.host = events;
} else {
result.room = events;
}
oRs.Close();
}
} else {
early_exit("Onvoldoende parameters meegegeven; zoek op reserveringsnr, of de combinatie; email/datum-van/datum-tot");
}
result.success = true;
// Strip onnodige velden
if (compact) {
result = strip(result);
};
Response.Write(JSON.stringify(result));
Response.End;
%>
<% ASPPAGE_END(); %>

View File

@@ -306,6 +306,7 @@ try
var xml_content = oRs("xml_blob").Value;
oRs.Close();
__Log("XML blob is {0} karakters.".format(xml_content.length));
Oracle.Execute("BEGIN DBMS_SESSION.free_unused_user_memory; END;");
if (API.apidata.loglevel) __Log2File(xml_content, API.APIname + "_DATA");

View File

@@ -44,9 +44,9 @@
var result = api_gen_import(API, Request.BinaryRead(bytes));
xmlResp = result.xmldom;
if (API.apidata.errorhandling == 1 && user.errorhandling() == 1)
if (API.apidata.errorhandling == 1)
{
if (result.anyError) // een 'E' in imp_log
if (result.anyError) // een 'E' in imp_log
{
Response.Status = '400 Bad Request';
}

View File

@@ -198,36 +198,16 @@ function getEmailSetting(xmlReq, xmlParameters)
return senderResult;
}
// Check the subject against general rules (emlSetting null) or some defined
// regular expression from the configuration in emlSetting
// return .success true if the subject is okay, false else
// If false, a reason is given in .message
function checkSubject(emlSetting, xmlParameters)
function checkSubject(xmlParameters)
{
var subjectResult = { success: true };
if (emlSetting == null)
var v_subject_undeliverable = new RegExp(S("mail_subject_undeliverable")).test(xmlParameters.Subject);
var v_subject_ignore = new RegExp(S("mail_subject_ignore")).test(xmlParameters.Subject);
var senderResult = null;
if (v_subject_undeliverable || v_subject_ignore)
{
// generieke onderwerpcheck tegen rubbish
var v_subject_undeliverable = new RegExp(S("mail_subject_undeliverable")).test(xmlParameters.Subject);
var v_subject_ignore = new RegExp(S("mail_subject_ignore")).test(xmlParameters.Subject);
var senderResult = null;
if (v_subject_undeliverable || v_subject_ignore)
{
subjectResult.success = false;
subjectResult.message = ( v_subject_undeliverable ? S("mail_subject_undeliverable") : S("mail_subject_ignore"));
}
} else {
// matcht het mailonderwerp wellicht met een specifieke configuratie?
if (emlSetting.text)
{
subjectResult.success = new RegExp(emlSetting.text, "ig").test(xmlParameters.Subject);
subjectResult.message = "Subject " + xmlParameters.Subject + (subjectResult.success ? " matches " : " does not match ") + emlSetting.text
__Log(subjectResult.message);
}
else // geen voorwaarde is altijd goed
subjectResult.success = true;
senderResult = ( v_subject_undeliverable ? S("mail_subject_undeliverable") : S("mail_subject_ignore"));
}
return subjectResult;
return senderResult;
}
function setPath(attachpath)
@@ -250,23 +230,17 @@ function getEmailSetting(xmlReq, xmlParameters)
+ " fac_email_setting_volgnr,"
+ " fac_email_setting_action,"
+ " fac_email_setting_expire,"
+ " fac_email_setting_from," // optioneel: waar de afzender aan moet voldoen
+ " fac_email_setting_from,"
+ " fac_email_setting_frommode,"
+ " fac_email_setting_text," // optioneel: waar het onderwerp aan moet voldoen
+ " fac_email_setting_attachpath,"
+ " fac_email_setting_attachext,"
+ " fac_email_setting_reqattachext," // optioneel: extensie van de bijlage die verplicht is
+ " fac_email_setting_reqattachext,"
+ " fac_email_setting_attachmaxkb,"
+ " fac_email_setting_loglevel,"
+ " prs_perslid_key_auth"
+ " FROM fac_email_setting"
+ " WHERE upper(fac_email_setting_user) = UPPER("+safe.quoted_sql(xmlParameters.mailuser)+")"
+ " ORDER BY fac_email_setting_volgnr";
// Als je het zo zou doen vind je organischer de meest specifieke match, met volgnummer slechts beslissend als er meerdere zouden zijn
// Het lijkt echter safer om datr aan de gebruiker over te laten en die dat met volgnummer expliciet te kunnen laten definieren.
//+ " ORDER BY fac_email_setting_reqattachext NULLS LAST, fac_email_setting_from NULLS LAST, fac_email_setting_text NULLS LAST, fac_email_setting_volgnr";
var oRs = Oracle.Execute(sql);
if (oRs.eof)
{ // Er is geen fac_email_setting record gevonden.
@@ -277,22 +251,11 @@ function getEmailSetting(xmlReq, xmlParameters)
};
}
else
{ // Er bestaat minimaal 1 fac_email_setting record voor deze ontvanger.
{ // Er bestaat minimaal 1 fac_email_setting record.
var allowedSetting = {};
var rejectedAttach = [];
var hasRequiredAttachment = false;
var hasMatchingFrom = false;
var hasMatchingSubject = false;
// Loop door de fac_email_setting records en bepaal welke het beste past bij deze e-mail
// Dat is de eerste match op basis van het volgnummer, waarbij de 3 criteria niet conflicteren.
// - de afzender matcht of is niet specifiek gedefinieerd
// - het onderwerp matcht de conditie of is niet specifiek gedefinieerd
// - de verplichte bijlage is present of is niet specifiek gedefinieerd
// Het gevonden record levert de aan te roepen mailprocessor en
// (bij de default fac.processemail) de aan te maken standaardmelding
while (!oRs.eof && !(hasRequiredAttachment && hasMatchingFrom && hasMatchingSubject))
while (!oRs.eof && !hasRequiredAttachment)
{
var emlSetting = {
key: oRs("fac_email_setting_key").Value,
@@ -306,29 +269,21 @@ function getEmailSetting(xmlReq, xmlParameters)
attach_maxkb: oRs("fac_email_setting_attachmaxkb").Value,
fromMode: oRs("fac_email_setting_frommode").Value,
from: oRs("fac_email_setting_from").Value,
text: oRs("fac_email_setting_text").Value,
loglevel: oRs("fac_email_setting_loglevel").Value
};
emlSetting.path = setPath(emlSetting.attachpath);
__Log("Scanning e-mail setting: "+emlSetting.key + " (volgnr "+emlSetting.volgnr+")");
__Log("Scanning e-mail setting: "+emlSetting.volgnr);
var expireResult = checkExpire(emlSetting.expire);
var senderResult = checkSender(emlSetting, xmlParameters);
var subjectResult = checkSubject(emlSetting, xmlParameters);
var expireResult = checkExpire(emlSetting.expire);
var senderResult = checkSender(emlSetting, xmlParameters);
hasMatchingFrom = senderResult.success;
hasMatchingSubject = subjectResult.success;
__Log('hasMatchingFrom '+ hasMatchingFrom);
__Log('hasMatchingSubject '+ hasMatchingSubject);
// als fron en subject okay zijn, dan kijken we of er een verplicht kenmerk is
if (expireResult.success && hasMatchingFrom && hasMatchingSubject)
if (expireResult.success && senderResult.success)
{
emlSetting.theFrom = senderResult.theFrom; // verbeter na de uitgevoerde controle
emlSetting.theFrom = senderResult.theFrom;
var attachResult = checkAttach(xmlReq, xmlParameters, emlSetting);
emlSetting.allowedFiles = attachResult.allowedFiles;
emlSetting.requiredFound = attachResult.requiredFound;
hasRequiredAttachment = emlSetting.required_attachext == null || attachResult.requiredFound;
hasRequiredAttachment = attachResult.requiredFound;
allowedSetting = emlSetting;
if (attachResult.rejectedFiles.tekst != "")
{
@@ -346,12 +301,11 @@ function getEmailSetting(xmlReq, xmlParameters)
result.rejectMail = (!expireResult.success ? expireResult.rejectMail : senderResult.rejectMail);
}
}
__Log("hasRequiredAttachment: " + hasRequiredAttachment);
oRs.MoveNext();
}
__Log("Done looking for matching e-mail settings");
result.emlSetting = allowedSetting;
result.silentignoreemail = checkSubject(null, xmlParameters).message;
result.silentignoreemail = checkSubject(xmlParameters);
}
oRs.Close();
return result;
@@ -373,11 +327,11 @@ function emailAction(emlSetting, xmlParam, resultParam)
}
var actionsql =
"BEGIN " + emlSetting.action + " (" + safe.quoted_sql(emlSetting.theFrom) + ", "
+ safe.quoted_sql(xmlParam.toAddr) + ", "
+ safe.quoted_sql(xmlParam.Subject || L("lcl_fac_hmail_no_subject")) + ", " // de actions kunnen slecht tegen lege subject
"BEGIN " + emlSetting.action + " (" + safe.quoted_sql(emlSetting.theFrom) + ","
+ safe.quoted_sql(xmlParam.toAddr) + ","
+ safe.quoted_sql(xmlParam.Subject || L("lcl_fac_hmail_no_subject")) + "," // de actions kunnen slecht tegen lege subject
+ "?, "
+ safe.quoted_sql(xmlParam.sessionId) + ", "
+ safe.quoted_sql(xmlParam.sessionId) + ","
+ emlSetting.key + ");"
+ "END;";
@@ -476,7 +430,6 @@ function emailAction(emlSetting, xmlParam, resultParam)
return result;
}
//
function checkAttach(xmlReq, xmlParameter, emlSetting)
{
var requiredFound = false;
@@ -497,14 +450,10 @@ function checkAttach(xmlReq, xmlParameter, emlSetting)
{ // Waarschijnlijk een FACILITOR bon gereply'd
__Log("Bijlage {0} genegeerd.".format(safefilename));
}
else if (attsize < S("flex_min_size")) // sowieso te klein
else if (attsize < S("flex_min_size"))
{
__Log("Bijlage {0} genegeerd, te klein met {1} bytes.".format(safefilename, attsize));
}
else if (attsize < S("flex_min_imgsize") && new RegExp(S("flex_min_imgsize_ext"), "ig").test(safefilename)) // plaatje te klein (facebook, twitter, X)
{
__Log("Plaatje {0} genegeerd, te klein met {1} bytes.".format(safefilename, attsize));
}
else if ( emlSetting.attach_maxkb && emlSetting.attach_maxkb > 0 // Er is een maximum bestandsgrootte ingesteld
&& parseFloat(filesize_MB) > parseFloat(maxsize_MB)) // En die is overschreden
{
@@ -514,7 +463,7 @@ function checkAttach(xmlReq, xmlParameter, emlSetting)
}
else if (!new RegExp(S("flexallowedext"), "ig").test(safefilename))
{ // Niet ondersteunde bestandstype
__Log("Onbekende extensie e-mail bijlage: {0} ({1} bytes) van {2}. Bestand is niet opgeslagen.".format(safefilename, attsize, emlSetting.theFrom));
__DoLog("Onbekende extensie e-mail bijlage: {0} ({1} bytes) van {2}. Bestand is niet opgeslagen.".format(safefilename, attsize, emlSetting.theFrom));
}
else if (emlSetting.allowed_attachext && !new RegExp(emlSetting.allowed_attachext, "ig").test(safefilename))
{ // bestand is niet van het opgegeven type
@@ -728,7 +677,7 @@ if (emlResult.emlSetting && !emlResult.rejectMail)
__Log("htmlBody: " + xmlParameters.htmlBody);
__Log("body: " + xmlParameters.Body);
__Log("E-mail user ontvankelijk: " + xmlParameters.mailuser);
__Log("gebruikt email setting: " + emlSetting.key);
__Log("gebruikt email setting: " + emlSetting.volgnr);
if (emlResult.silentignoreemail)
{

View File

@@ -733,7 +733,7 @@ function upsertKenmerk(kenmerken, stdmld_key, mld_key)
xmlResp.appendChild(FCLTElement);
if (API.apidata.errorhandling == 1 && user.errorhandling() == 1)
if (API.apidata.errorhandling == 1)
{
if (resultcode > 0) // -1 en 0 zijn 'goed'
{

View File

@@ -23,12 +23,52 @@ var API = new API_func();
// Bij aanmaken van de subscription doet Graph direct aan validatie-aanroep
// De token parameter moet je teruggeven.
var validationToken = getQParam("validationToken", "");
if (validationToken) {
if (validationToken)
{
__Log("Subscribtion validated: " + validationToken);
Response.ContentType = "text/plain";
Response.Write(validationToken);
Response.End;
}
else
{ // We hebben een notificatie ontvangen, stuur direct een 202 conform specificatie
Response.Status = "202 - Accepted";
Response.Write("");
Response.Flush;
}
function _cleanIncomingOutlookQueue() {
Application.Lock();
var incomingOutlookQueue = JSON.parse(Application(customerId + "_incomingOutlookQueue") || "{}");
for (var x in incomingOutlookQueue) {
if (incomingOutlookQueue[x] < new Date().getTime()) { // Verwijder verlopen changes die hier nog in staan
delete incomingOutlookQueue[x];
}
}
Application(customerId + "_incomingOutlookQueue") = JSON.stringify(incomingOutlookQueue);
Application.UnLock();
}
function _updateIncomingOutlookQueue(etag, CRUD) { // etag = 'The HTTP entity tag that represents the version of the object'
Application.Lock();
var incomingOutlookQueue = JSON.parse(Application(customerId + "_incomingOutlookQueue") || "{}");
if (CRUD == "C") {
if (etag in incomingOutlookQueue) { // We hebben deze al ontvangen en zijn begonnen met verwerken
__Log("MS Graph, duplicate notification ignored", "#FFFF44");
Application.UnLock();
Response.End;
}
incomingOutlookQueue[etag] = new Date().getTime() + 4 * 60 * 60 * 1000; // Expired in 4 uur
} else if (CRUD == "D") {
// delete incomingOutlookQueue[etag];
// ipv deleten laten we deze expiren over 3s zodat we reeds verwerkte notificaties niet nog eens gaan verwerken als het HTTP verkeer elkaar kruist
if (etag in incomingOutlookQueue) {
incomingOutlookQueue[etag] = new Date().getTime() + 3 * 1000;
}
}
Application(customerId + "_incomingOutlookQueue") = JSON.stringify(incomingOutlookQueue);
Application.UnLock();
}
// Als we hier komen hebben we een echte notificatie binnengekregen
var notidata = RequestJSON(API.apidata.loglevel).value;
@@ -43,10 +83,12 @@ try {
} catch (e) {
__DoLog("Malformed MS Graph notification received:", "#FF0000");
__DoLog(notidata, "#FF0000");
Response.Status = "400 - Bad Request";
Response.End;
}
_cleanIncomingOutlookQueue();
_updateIncomingOutlookQueue(etag, "C");
// {
// "value": [
// {
@@ -68,10 +110,8 @@ try {
// We hebben res_ruimte_key meegegeven in de hookurl. Er zijn meer manieren
// om de ruimte te achterhalen maar deze is het snelst/ simpelst
var res_ruimte_key = getQParamInt("res_ruimte", -1);
if (res_ruimte_key == -1) {
Response.Status = "422 - Unprocessable Content";
Response.End;
}
if (res_ruimte_key == -1)
Response.End; // even geen errors
var sql = "SELECT res_ruimte_extern_id,"
+ " res_ruimte_graphhooksecret"
+ " FROM res_ruimte"
@@ -90,51 +130,20 @@ if (zaalemail == null || oRs("res_ruimte_graphhooksecret").Value != notidata.cli
notidata.subscriptionExpirationDateTime));
}
oRs.Close();
Response.Status = "422 - Unprocessable Content";
Response.End;
}
oRs.Close();
var fso = Server.CreateObject("Scripting.FileSystemObject");
var tempFolder = shared.tempFolder();
if (!fso.FolderExists(tempFolder)) {
fso.CreateFolder(tempFolder);
}
var exchangeFolder = tempFolder + "/exchange";
if (!fso.FolderExists(exchangeFolder)) {
fso.CreateFolder(exchangeFolder);
}
var logfile_path = exchangeFolder + "/" + safe.filename(etag) + ".data";
if (fso.FileExists(logfile_path)) { // Notificaties zijn uniek obv etag, deze is dus dubbel
__Log("MS Graph, duplicate notification ignored", "#FFFF44");
} else {
try {
var ts = fso.CreateTextFile(logfile_path, true);
ts.Write(JSON.stringify(notidata, null, 2));
ts.Close();
} catch (e) {
__DoLog("Failed writing to {0}\n{1}".format(logfile_path, e.description));
}
sql = "INSERT INTO fac_notificatie (fac_srtnotificatie_key,"
+ " fac_notificatie_queue,"
+ " fac_notificatie_refkey,"
+ " fac_notificatie_attachments,"
+ " fac_notificatie_naam,"
+ " fac_notificatie_notbefore,"
+ " fac_notificatie_status)"
+ " SELECT fac_srtnotificatie_key"
+ " , 'EXCHANGE'"
+ " , " + res_ruimte_key
+ " , " + safe.quoted_sql(logfile_path)
+ " , " + safe.quoted_sql(zaalemail)
+ " , SYSDATE"
+ " , 1" // Met 1 omzeilen we fac.cleannotifications en zorgen we dat fac_t_fac_notificatie_A_IU niet de PUTORDERS inschiet (Wij doen er verder niets mee)
+ " FROM fac_srtnotificatie"
+ " WHERE fac_srtnotificatie_code = 'RESUPD'";
Oracle.Execute(sql);
}
var DEZE = this;
var hook = hookfunc.gethook("utils/exchange/process_webhook.wsc");
hook.initialize({
DEZE: DEZE,
custabspath: Server.MapPath(custpath)
});
hook.process_webhook(res_ruimte_key, zaalemail, notidata);
hook = null;
Response.Status = "202 - Accepted";
_updateIncomingOutlookQueue(etag, "D"); // En verwijder hem maar weer
Response.Write("");
ASPPAGE_END();
Response.End;
%>

View File

@@ -121,7 +121,6 @@ for (var i = 0; i < opdrachten.length; i++)
var onderwerp = XMLval(opdrachten[i], "onderwerp"); // NEW
var opdr_kpn = XMLval(opdrachten[i], "kostenplaats");
var flag = parseInt(XMLval(opdrachten[i], "flag"), 10);
var actiecode = parseInt(XMLval(opdrachten[i], "actiecode"), 10);
var txt_mut_datum = XMLval(opdrachten[i], "mut_datum"); // UPD
var opdrstatus = XMLval(opdrachten[i], "status"); // UPD
@@ -883,12 +882,6 @@ for (var i = 0; i < opdrachten.length; i++)
if (oRs("lopend").Value == 0)
{ // Er zijn alleen opdrachten met status 1 (Afgewezen) of 6/9 (Afgemeld/Afgerond)
// Check of setting bij opdrachttype automatisch sluiten ALTIJD (= 2) toestaat.
// Ondertussen kan de status van de opdracht aangepast zijn.
// De waarde this_mld.canClose kan daarom niet meer juist zijn omdat deze van de status afhankelijk is.
// Daarom moet de waarde opnieuw bepaald worden (PROR#90212 / PROR#90706).
var this_mld2 = mld.func_enabled_melding(mld_opdr.mld_key);
tsql = "SELECT mld_typeopdr_sluitmelding FROM mld_typeopdr"
+ " WHERE mld_typeopdr_key = " + topdr_key;
var oRs = Oracle.Execute(tsql);
@@ -896,7 +889,7 @@ for (var i = 0; i < opdrachten.length; i++)
// Afhankelijk van sluitmelding nu melding status zetten (0=nooit, 1=vragen en 2=altijd)
// Als de laatste opdracht een cancel was dan wordt de melding niet afgemeld.
if ((oRs("mld_typeopdr_sluitmelding").Value == 2 || oRs("mld_typeopdr_sluitmelding").Value == 1)
&& this_mld2.canClose
&& this_mld.canClose
&& opdrstatus != 'ORDCAN')
{
mld.setmeldingstatus (mld_key, 5); // Afgemeld
@@ -923,48 +916,17 @@ for (var i = 0; i < opdrachten.length; i++)
if (resultcode == -1) // Nog steeds geen fouten.
{
var tracking_key = coalesce(coalesce(status_tracking_key, datum_tracking_key), update_tracking_key); // volgorde van belangrijkheid
add_note(tracking_key); // voor als nog niet eerder gebeurd
// Alleen als er een notitie is aangemaakt mag ik de actiecode ook aanpassen.
if (note_key > 0)
{ // Er is een notitie aangemaakt.
// Actie bij +1=FOBO behandelaar, +2=melder, +4=uitvoerende, +128=attentie FOBO, +512=attentie uitvoerende.
if (resultcode == -1 && !isNaN(actiecode) && actiecode >= 0)
{ // Actie code.
var newActiecode = 0;
if ((actiecode & 128) == 128)
{
newActiecode += 128; // BO attentie
}
var BOactie = false;
if (S("mld_opdr_actiecode") > 0 && ((actiecode & 1) == 1))
{
newActiecode += 1; // + BO actie
BOactie = true;
}
var sql = "UPDATE mld_opdr"
+ " SET mld_opdr_actiecode = mld_opdr_actiecode" // Bestaande bitjes zoals 512 mag niet verloren gaan.
+ " + " + newActiecode
+ " - BITAND(mld_opdr_actiecode, " + newActiecode + ")" // Als het bitje 1 of 128 al gezet was dan deze waarde weer in minderinig brengen.
+ (BOactie
? " - BITAND(mld_opdr_actiecode, 6)" // Van de bitjes 1+2+4 (=7) moet er altijd 1 aan staan. Als we bitje 1 zetten, dan moeten we bitjes 2 of 4 wissen.
: "") // Bitje 1 is niet gezet. Bitjes 2 en 4 ongemoeit laten.
+ " WHERE mld_opdr_key = " + mld_opdr.opdr_key;
Oracle.Execute(sql);
}
}
resultcode = 0; // Ik heb gedaan wat ik moest en mocht doen voor deze opdracht.
}
else if (resultcode > 0)
{
var logtxt = "api_opdrsoap fail.\nResultcode: {0}\nReturntekst: {1}\nOpdracht: {2}\nOldstatus: {3}".format(resultcode, resulttekst, opdrid, oldstatus);
if (resulttekst.match(/^Not authorized/)) // Dit komt heel vaak voor door updates op gesloten opdrachten.
__Log(logtxt); // Het vervuilt de logfile veel te veel
__Log(logtxt); // Het vervuilt de logfile veel te veel
else
__DoLog(logtxt, "#00FF00");
}
@@ -1218,7 +1180,7 @@ function upsertKenmerk(kenmerken, topdr_key, opdr_key)
function isGoodCurrency(str)
{
var anum = /^([-\+]?\d{1,6}[.,]?|[-\+]?\d{0,6}[.,]\d{1,7})$/
var anum = /^([-\+]?\d{1,6}[.,]?|[-\+]?\d{0,6}[.,]\d{1,2})$/
return anum.test(str);
}
@@ -1226,7 +1188,6 @@ function upsertOpdrRegels(regels, mld_opdr)
{
var opdr_key = mld_opdr.opdr_key;
var mat_key_list = [];
var mat_tracking_arr = [];
var tracking_key = -1;
for (var r = 0; r < regels.length; r++)
{
@@ -1362,18 +1323,18 @@ function upsertOpdrRegels(regels, mld_opdr)
// Aantal is groter dan 0. Opdrachtregel toevoegen (Update).
// Als aantal 0 is dan is de materiaalregel al verwijderd en kom je hier niet.
mat_fields = mat_fields.concat(
[ { dbs: "mld_opdr_materiaal_aantal", typ: "float", savewhen: aantal !== null, track: L("lcl_mld_opdr_aantal"), val: aantalval },
{ dbs: "mld_opdr_materiaal_eenheidcode", typ: "varchar", savewhen: eenheidcode !== null, track: L("lcl_mld_opdr_eenheidcode"), val: eenheidcode, len: 10 },
{ dbs: "mld_opdr_materiaal_eenheid", typ: "varchar", savewhen: eenheid !== null, track: L("lcl_mld_opdr_eenheid"), val: eenheid, len: 30 },
{ dbs: "mld_opdr_materiaal_prijs", typ: "float", savewhen: prijs !== null, track: L("lcl_mld_opdr_prijs"), val: (prijs? prijsval : null) },
{ dbs: "mld_opdr_materiaal_code", typ: "varchar", savewhen: matcode !== null, track: L("lcl_mld_opdr_code"), val: matcode, len: 30 },
{ dbs: "mld_opdr_materiaal_omschr", typ: "varchar", savewhen: omschr !== null, track: L("lcl_mld_opdr_omschr"), val: omschr, len: 255 },
{ dbs: "mld_opdr_materiaal_info", typ: "varchar", savewhen: info !== null, track: L("lcl_mld_opdr_info"), val: info, len: 4000 },
{ dbs: "mld_opdr_materiaal_groep", typ: "varchar", savewhen: groep !== null, track: L("lcl_mld_opdr_groep"), val: groep, len: 60 },
{ dbs: "mld_opdr_materiaal_extra1", typ: "varchar", savewhen: extra1 !== null, track: L("lcl_mld_opdr_extra1"), val: extra1, len: 60 },
{ dbs: "mld_opdr_materiaal_extra2", typ: "varchar", savewhen: extra2 !== null, track: L("lcl_mld_opdr_extra2"), val: extra2, len: 60 },
{ dbs: "mld_opdr_materiaal_extra3", typ: "varchar", savewhen: extra3 !== null, track: L("lcl_mld_opdr_extra3"), val: extra3, len: 4000 },
{ dbs: "mld_opdr_materiaal_extra4", typ: "varchar", savewhen: extra4 !== null, track: L("lcl_mld_opdr_extra4"), val: extra4, len: 4000 }
[ { dbs: "mld_opdr_materiaal_aantal", typ: "float", savewhen: aantal !== null, val: aantalval },
{ dbs: "mld_opdr_materiaal_eenheidcode", typ: "varchar", savewhen: eenheidcode !== null, val: eenheidcode, len: 10 },
{ dbs: "mld_opdr_materiaal_eenheid", typ: "varchar", savewhen: eenheid !== null, val: eenheid, len: 30 },
{ dbs: "mld_opdr_materiaal_prijs", typ: "float", savewhen: prijs !== null, val: (prijs? prijsval : null) },
{ dbs: "mld_opdr_materiaal_code", typ: "varchar", savewhen: matcode !== null, val: matcode, len: 30 },
{ dbs: "mld_opdr_materiaal_omschr", typ: "varchar", savewhen: omschr !== null, val: omschr, len: 255 },
{ dbs: "mld_opdr_materiaal_info", typ: "varchar", savewhen: info !== null, val: info, len: 4000 },
{ dbs: "mld_opdr_materiaal_groep", typ: "varchar", savewhen: groep !== null, val: groep, len: 60 },
{ dbs: "mld_opdr_materiaal_extra1", typ: "varchar", savewhen: extra1 !== null, val: extra1, len: 60 },
{ dbs: "mld_opdr_materiaal_extra2", typ: "varchar", savewhen: extra2 !== null, val: extra2, len: 60 },
{ dbs: "mld_opdr_materiaal_extra3", typ: "varchar", savewhen: extra3 !== null, val: extra3, len: 4000 },
{ dbs: "mld_opdr_materiaal_extra4", typ: "varchar", savewhen: extra4 !== null, val: extra4, len: 4000 }
]);
if ((btw || btw == 0) && (!isNaN (btwval) && btwval >= 0))
@@ -1403,14 +1364,20 @@ function upsertOpdrRegels(regels, mld_opdr)
var matUpd = buildTrackingUpdate("mld_opdr_materiaal", "mld_opdr_materiaal_key = " + materiaal_key, mat_fields, { noValidateToken: true });
// Zijn er velden die gewijzigd moeten worden? Als matUpd null is, dan waren alle savewhen condities false en hoeft er niets geupdate te worden.
if (matUpd && matUpd.sql && matUpd.trackarray.length) { // Als trackarray.length === 0 dan is er effectief niets aangepast (we tracken alles)
if (matUpd && matUpd.sql)
{ // Er zijn wijzigingen.
Oracle.Execute(matUpd.sql);
mat_tracking_arr.push(L("lcl_ord_is_upd_material").format(id) + "\n" + matUpd.trackarray.join("\n"));
updatetracking_key = mld.trackopdrachtupdate(opdr_key, L("lcl_ord_is_updatedbysoap") + "\n" + L("lcl_ord_is_upd_material").format(id) + "\n" + matUpd.trackarray.join("\n"));
}
}
}
oRs.Close();
var sql_del = "DELETE mld_opdr_materiaal"
+ " WHERE mld_opdr_key = " + opdr_key
+ " AND mld_opdr_materiaal_key NOT IN (" + mat_key_list.join(",") + ")";
Oracle.Execute(sql_del);
// 1) Nieuwe materiaalbedrag in de opdracht opslaan.
// 2) De totaalwaarde opnieuw berekenen want het materiaalbedrag is aangepast.
// Dan hebben we het correctie bedrag ook nodig. Dit correctie bedrag moet hetzelfde blijven.
@@ -1427,25 +1394,12 @@ function upsertOpdrRegels(regels, mld_opdr)
+ " WHERE mld_opdr_key = " + opdr_key
Oracle.Execute(sql_total);
}
if (mat_tracking_arr.length)
{ // Er zijn wijzigingen.
tracking_key = mld.trackopdrachtupdate(opdr_key, L("lcl_ord_is_updatedbysoap") + "\n" + mat_tracking_arr.join("\n"));
}
if (mat_key_list.length) {
var sql_del = "DELETE mld_opdr_materiaal"
+ " WHERE mld_opdr_key = " + opdr_key
+ " AND mld_opdr_materiaal_key NOT IN (" + mat_key_list.join(",") + ")";
Oracle.Execute(sql_del);
}
return tracking_key;
}
xmlResp.appendChild(FCLTElement);
if (API.apidata.errorhandling == 1 && user.errorhandling() == 1)
if (API.apidata.errorhandling == 1)
{
if (resultcode > 0) // -1 en 0 zijn 'goed'
{

View File

@@ -91,10 +91,10 @@ function L(p_lcl)
toonFoto: true,
detailurl: "appl/fac/fac_user_info.asp",
deeplinkurl: "<%=safe.jsstring(site)%>/?nomenu=1&noheader=1&ihatetabs=1&JumpTo=",
fields: [ { lbl: L("lcl_prs_email"), val: "prs_perslid_email" },
{ lbl: L("lcl_pb_phone"), val: "prs_perslid_telefoonnr" },
{ lbl: L("lcl_pb_mobile"), val: "prs_perslid_mobiel" },
{ lbl: L("lcl_pb_afdeling"), val: "afdeling" }
fields: [ { lbl: "<%=L("lcl_prs_email")%>", val: "prs_perslid_email" },
{ lbl: "<%=L("lcl_pb_phone")%>", val: "prs_perslid_telefoonnr" },
{ lbl: "<%=L("lcl_pb_mobile")%>", val: "prs_perslid_mobiel" },
{ lbl: "<%=L("lcl_pb_afdeling")%>", val: "afdeling" }
]
};
<%
@@ -110,7 +110,7 @@ function L(p_lcl)
window.facilitor.show_phonebook = function(data, textStatus)
{
// Alle styling moet nog via classes
var closer = "<span onclick='$(\"#phonebookdetails\").hide()' style='float: right; cursor: pointer' title='<%=safe.htmlattr(L("lcl_close_window"))%>'>x</span>"
var closer = "<span onclick='$(\"#phonebookdetails\").hide()' style='float: right; cursor: pointer' title='<%=L("lcl_close_window")%>'>x</span>"
if (window.facilitor.phonebook_options.detailurl)
{
var jumpto = window.facilitor.phonebook_options.detailurl;

View File

@@ -0,0 +1,201 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: phonebook_js.asp
Description: Phonebook API
Levert een JavaScript bestand op.
Parameters:
Context:
Note:
*/
DOCTYPE_Disable = 1;
FCLTEXPIRES = 8*60; // geen database interactie tenslotte
THIS_FILE = "appl/api/phonebook_js.asp";
var EXPIRED_PASSWORD_OK = true; // performance
%>
<!-- #include file="../Shared/common.inc"-->
<!-- #include file="../api/api.inc" -->
<%
var API = new API_func();
var nojQuery = getQParam("nojQuery", 0)==1;
var suggesticon = getQParam("suggesticon", "");
var transitParam = "&fac_id="+Session("customerId") + buildTransitParam(["API", "APIKEY", "charset"]);
var proto = (Request.ServerVariables("SERVER_PORT") == "443")?"https":"http";
var sitenoroot = proto + "://" + Request.ServerVariables("SERVER_NAME");
var site = sitenoroot + rooturl;
Response.ContentType = "application/javascript";
//lcl.buildClientLCL();
// LET OP: Geen FcltMgr.js en dus niet (clientside) zelflerend
%>
window.facilitor = window.facilitor || {};
window.facilitor.LCL = {};
window.facilitor.LCL["lcl_shared_suggest_hint"] = "<%=safe.jsstring(L("lcl_shared_suggest_hint"))%>";
window.facilitor.LCL["lcl_shared_suggest_huidig"] = "<%=safe.jsstring(L("lcl_shared_suggest_huidig"))%>";
facilitor.phonebook = facilitor.phonebook || {};
function L(p_lcl)
{
if (p_lcl in window.facilitor.LCL)
return window.facilitor.LCL[p_lcl];
return "??" + p_lcl + "??";
}
(function() {
function getScript(src) {
document.write('<' + 'script src="<%=site%>/' + src + '"' +
' type="text/javascript"><' + '/script>');
}
function getCSS(src) {
document.write('<' + 'link rel="stylesheet" href="<%=site%>/' + src + '"' +
' type="text/css">');
}
var loadScriptTime = (new Date).getTime();
getCSS("appl/shared/suggest/suggest.css");
getCSS("appl/api/api.css");
<% if (!nojQuery) { /* kan conflicteren */ %>
getScript("appl/localscripts/jquery.min.js");
<% } %>
getScript("appl/shared/suggest/suggest_IE11.js?v=<%=safe.url(FCLTVersion)%>"); // FCLTVersion voor anti-caching. Timestamp is me te veel werk
<% if (API.apidata.cust_js) { %>
getScript("<%=API.apidata.cust_js%>");
<% } %>
window.facilitor.open_phonebook = function(key, naam)
{
if (key > 0)
jQuery.ajax({ type: "GET",
url: "<%=safe.jsstring(site)%>/appl/api/get_phonebook_info.asp?req_info=prs_perslid&prs_perslid_key=" + key + "<%=transitParam%>",
dataType: "jsonp",
success: window.facilitor.show_phonebook
});
else
$("#phonebookdetails").hide()
}
// De default waarden, werkt nog niet TODO
window.facilitor.phonebook_options =
{ detailWidth : 450,
toonFoto: true,
detailurl: "appl/fac/fac_user_info.asp",
deeplinkurl: "<%=safe.jsstring(site)%>/?nomenu=1&noheader=1&ihatetabs=1&JumpTo=",
fields: [ { lbl: "<%=L("lcl_prs_email")%>", val: "prs_perslid_email" },
{ lbl: "<%=L("lcl_pb_phone")%>", val: "prs_perslid_telefoonnr" },
{ lbl: "<%=L("lcl_pb_mobile")%>", val: "prs_perslid_mobiel" },
{ lbl: "<%=L("lcl_pb_afdeling")%>", val: "afdeling" }
]
};
<%
// kopieer de serverside overrules naar clientside
for (opt in API.apidata.options)
{
Response.Write("\nwindow.facilitor.phonebook_options['"+opt+"'] = "
+ "JSON.parse('"+ safe.jsstring(JSON.stringify(API.apidata.options[opt])) +"')");
}
%>
window.facilitor.show_phonebook = function(data, textStatus)
{
// Alle styling moet nog via classes
var closer = "<span onclick='$(\"#phonebookdetails\").hide()' style='float: right; cursor: pointer' title='<%=L("lcl_close_window")%>'>x</span>"
if (window.facilitor.phonebook_options.detailurl)
{
var jumpto = window.facilitor.phonebook_options.detailurl;
jumpto += (jumpto.indexOf("?")>=0)?"&":"?";
jumpto += "prs_key="+data.prs_perslid_key;
var link = window.facilitor.phonebook_options.deeplinkurl + escape(jumpto) + "&fac_id=<%=Session("customerId")%>";
var ahref = "<a href='"+link+"' target='_new'>"+data.naam+"</a>"
}
else
ahref=date.naam;
var trh = "<tr><td></td><th colspan='2' class='title'>"+ahref+"</a></th><th></th></tr>"
var trs = "";
if (window.facilitor.phonebook_options.toonFoto && data.photopath)
{
trs += "<tr><td></td><td></td><td rowspan='50'><img alt='<%=safe.htmlattr(L("lcl_menu_prs_phonebook"))%>' src='<%=safe.jsstring(sitenoroot)%>" + data.photopaththumb.replace(/\'/g,'&#39;').replace(/\"/g,'&quot;') +"'></td></tr>";
}
var fld;
for (fld in window.facilitor.phonebook_options.fields)
{
var field = window.facilitor.phonebook_options.fields[fld];
if (field.val && data[field.val])
{
trs += "<tr><td class='label'>"+field.lbl+"</td>";
trs += " <td>"+data[field.val]+"</td></tr>";
}
if (field.fun)
trs += eval(field.fun + "(data)");
}
if (!document.getElementById("phonebookdetails"))
{
// Alle esthetische styling verloopt via de css
var dd = document.createElement('div');
dd.id = "phonebookdetails";
dd.style.position = "absolute";
dd.style.top = $("#sName_key_show").position().top+20 + "px";
dd.style.width = window.facilitor.phonebook_options.detailWidth + "px";
var newLeft = $("#sName_key_show").position().left;
if (newLeft + window.facilitor.phonebook_options.detailWidth > document.body.offsetWidth)
{ // Wel in beeld houden
newLeft = document.body.offsetWidth - window.facilitor.phonebook_options.detailWidth
}
dd.style.left = newLeft + "px";
document.body.appendChild(dd);
if (0)$("body").click // even niet, hij is te agressief
(
function(e)
{
if($(e.target).closest("#phonebookdetails").length==0)
{
$("#phonebookdetails").hide();
}
}
);
}
var dd = document.getElementById("phonebookdetails");
dd.innerHTML = ""+closer+"<table width='100%'>"+trh + trs+"</table>";
dd.style.display = "block";
}
window.facilitor.phonebook = function (elm, options)
{
var opt;
for (opt in options)
{
window.facilitor.phonebook_options[opt] = options[opt];
}
$(elm).append('<input id="sName_key_show" sgonChange="window.facilitor.open_phonebook" class="fldpers" value="">')
$(elm).append('<input type="hidden" id="sName_key" name="sName_key" value="-1">');
sgPerson = new Suggest({ objectName: "sgPerson",
queryField: $("#sName_key_show")[0],
queryUrl: "<%=safe.jsstring(site)%>/appl/shared/suggest/SuggestPerslid.asp?filtcode=PHB<%=transitParam%>",
initKey: -1,
noJustOne: true,
keyField: $("#sName_key")[0],
JSONP: true,
embedded: true,
suggesticon: "<%=safe.jsstring(suggesticon)%>",
site: "<%=safe.jsstring(site)%>"
});
};
})();
<% ASPPAGE_END(); %>

View File

@@ -212,7 +212,7 @@ __Log("== Entering shorturl.asp ==");
if (bookmark_naam != 'faclikedeeplink' && new Perslid(falluser_key).checkAutorisation("WEB_PRSSYS", true))
{
INTERNAL_ERROR_FALLBACK_CANNOT_HAVE_PRSSYS;
// fac_like_deep.asp & fac_like.asp staan we wel toe, die hebben een Session.Abandon();
// fac_like_deep.asp staan we wel toe, die heeft een Session.Abandon();
}
Session("fallback_user_key") = falluser_key; // wordt opgepikt door loginTry.asp
}

View File

@@ -808,10 +808,7 @@ api2 = {
tables.push(tablesql);
}
else
{
if (!inc.isdetailfor)
tables = tables.concat (incquery.tables);
}
tables = tables.concat (incquery.tables);
wheres = wheres.concat (incquery.wheres);
if (inc.model.gparams && inc.model.gparams.GET.tables)
@@ -1239,10 +1236,7 @@ api2 = {
var spl = api2.splitLOV(LOV);
var result = [];
for (var f in filter)
{
if ( filter[f] in spl)
result.push(filter[f] + ";" + spl[filter[f]]);
}
result.push(filter[f] + ";" + spl[filter[f]]);
return result.join(";");
},
splitLOV: function _splitLOV(LOV, nameprefix)
@@ -1460,21 +1454,7 @@ api2 = {
}
}
if (!incfound)
{
var data2 = api2.sql2jsonfields(params, oRs, incmodel)
if (model.includes[incname].isdetailfor)
{
for (detail in data2)
{
record[model.includes[incname].isdetailfor][detail] = data2[detail];
}
delete record[incname]; // niet meer nodig
}
else
{
record[incname].push(data2);
}
}
record[incname].push(api2.sql2jsonfields(params, oRs, incmodel));
}
else if (model.includes[incname].func) // include via callback functie zoals reservablerooms/occupation
{

View File

@@ -89,7 +89,6 @@ var api2_mapper = {
"disciplinetypes" : { "filename": "appl/mgt/mld_srtdiscipline.asp" },
"issuepropertytypes" : { "filename": "appl/mgt/mld_srtkenmerk.asp" },
"callgroups" : { "filename": "appl/mgt/mld_stdmeldinggroep.asp" },
"issuetags" : { "filename": "appl/mgt/mld_melding_tag.asp" },
"issueordertypes" : { "filename": "appl/mgt/mld_typeopdr.asp" },
"daysoff" : { "filename": "appl/mgt/mld_vrije_dagen.asp" },
"workflows" : { "filename": "appl/mgt/mld_workflow.asp" },
@@ -147,7 +146,6 @@ var api2_mapper = {
"reportsx" : { "filename": "appl/api2/api_reportsx.asp", "module": "FAC" },
"reports" : { "filename": "appl/api2/api_reports.asp", "module": "FAC", "nodoc": true },
"invoices" : { "filename": "appl/api2/api_invoices.asp", "module": "FIN" },
"invoicelines" : { "filename": "appl/api2/api_invoicelines.asp", "module": "FIN" },
"objects" : { "filename": "appl/api2/api_objects.asp", "module": "INS" },
"inspections" : { "filename": "appl/api2/api_ins_deelsrtcontrole.asp", "module": "INS" },
"statehistory" : { "filename": "appl/mgt/ins_deel_state_history.asp", "module": "INS" },
@@ -159,13 +157,8 @@ var api2_mapper = {
"purchaseorder" : { "filename": "appl/api2/api_purchaseorder.asp", "module": "BES" },
"purchaseorderitem" : { "filename": "appl/api2/api_purchaseorderitem.asp", "module": "BES" },
"messages" : { "filename": "appl/mgt/msg_message.asp", "module": "MSG" },
"generictables" : { "filename": "appl/mgt/mgt_generic.asp", "hidden": true },
"genericselect" : { "filename": "appl/mgt/mgt_generic_select.asp", "hidden": true },
"fclttasks" : { "filename": "appl/mgt/fac_task.asp", "hidden": true },
"notifications" : { "filename": "appl/mgt/fac_notificatie.asp", "hidden": true },
"bestpractices" : { "filename": "appl/mgt/fac_bestpractices.asp", "hidden": true },
"systemtables" : { "filename": "appl/mgt/user_tables.asp", "hidden": true },
"workflowexpressions" : { "filename": "appl/mgt/mld_workflow_expression.asp", "hidden": true } // dit is geen model

View File

@@ -372,11 +372,7 @@ api2_rest = {
jsondata["custom_fields"][0]["attachments"][0].datastream = bodyStream;
if (key == 0) // new record
{
var result = model.includes["custom_fields"].model.REST_POST(requestparams, jsondata.custom_fields[0], -1);
var token = result.token;
// Bestandsnaam kan aangepast zijn.
jsondata.custom_fields[0].value = result.jsondata.value;
jsondata.custom_fields[0].attachments[0] = result.jsondata.attachments[0];
var token = model.includes["custom_fields"].model.REST_POST(requestparams, jsondata.custom_fields[0], -1);
var record = { xflexparentkey: -1, propertyid: jsondata.custom_fields[0].propertyid};
var fileparams = { getFile: jsondata["custom_fields"][0].value, api2name: null, tmpfolder: token };
}
@@ -390,7 +386,7 @@ api2_rest = {
var data = model.includes["custom_fields"].model.get_file_info(requestparams, record, fileparams );
api2_rest.deliver(data, /* dummy model */ { record_name: "attachment" }, outputformat, true);
return jsondata; // Attachment data teruggeven. Bestandsnaam kan aangepast zijn.
return;
}
// Geen atachment dus door met de reguliere code
var data = model["REST_" + method](requestparams, jsondata, key);

View File

@@ -13,92 +13,6 @@
*/
%>
<%
function buildKenmerkRoleCodeLOV(params)
{
var kenmerkRoleCodeLOV = "";
switch (params.module)
{
case "ALG":
kenmerkRoleCodeLOV = "3;"+ L("mgt_kenmerkrolcodealg_3") + ";" // alles
+ "2;"+ L("mgt_kenmerkrolcodealg_2") + ";" // ALGUSE
+ "1;"+ L("mgt_kenmerkrolcodealg_1"); // ALGMAN
break;
case "BES":
kenmerkRoleCodeLOV = "5;"+ L("mgt_kenmerkrolcodebes_5") + ";" // alles
+ "4;"+ L("mgt_kenmerkrolcodebes_4") + ";" // ORDSUP
+ "1;"+ L("mgt_kenmerkrolcodebes_1"); // BES*
break;
case "BESI":
kenmerkRoleCodeLOV = "1;"+ L("mgt_kenmerkrolcodebes_1"); // geen onderscheid in regels
break;
case "BEZ":
kenmerkRoleCodeLOV = "7;"+ L("mgt_kenmerkrolcodebez_7") + ";" // alles
+ "4;"+ L("mgt_kenmerkrolcodebez_4") + ";" // BEZBOF only
+ "2;"+ L("mgt_kenmerkrolcodebez_2") + ";" // BEZFOF only
+ "3;"+ L("mgt_kenmerkrolcodebez_3"); // BEZFOF/BEZUSE only
break;
case "CNT":
kenmerkRoleCodeLOV = "3;"+ L("mgt_kenmerkrolcodecnt_3") + ";" // alles
+ "2;"+ L("mgt_kenmerkrolcodecnt_2") + ";" // CNTUSE
+ "1;"+ L("mgt_kenmerkrolcodecnt_1"); // CNTMAN
break;
case "CTR":
kenmerkRoleCodeLOV = "1;"+ L("mgt_kenmerkrolcodectr_1"); // alles (geen onderscheid)
break;
case "FAQ":
kenmerkRoleCodeLOV = "1;"+ L("mgt_kenmerkrolcodefaq_1"); // alles (geen onderscheid)
break;
case "FIN":
kenmerkRoleCodeLOV = "1;"+ L("mgt_kenmerkrolcodefin_1"); // alles (geen onderscheid)
break;
case "INS":
kenmerkRoleCodeLOV = "7;"+ L("mgt_kenmerkrolcodeins_7") + ";" // alles
+ "4;"+ L("mgt_kenmerkrolcodeins_4") + ";" // INSFOF (uitlenen)
+ "2;"+ L("mgt_kenmerkrolcodeins_2") + ";" // INSUSE
+ "1;"+ L("mgt_kenmerkrolcodeins_1"); // INSMAN
break;
case "MLD":
kenmerkRoleCodeLOV = "7;"+ L("mgt_kenmerkrolcodemld_7") + ";" // alles
+ "6;"+ L("mgt_kenmerkrolcodemld_6") + ";" // MLDBOF+MLDFOF
+ "3;"+ L("mgt_kenmerkrolcodemld_3") + ";" // MLDUSE+MLDBOF
+ "4;"+ L("mgt_kenmerkrolcodemld_4") + ";" // MLDBOF
+ "2;"+ L("mgt_kenmerkrolcodemld_2"); // MLDFOF
break;
case "OPD":
kenmerkRoleCodeLOV = "7;"+ L("mgt_kenmerkrolcodeopd_7") + ";" // alles
+ "5;"+ L("mgt_kenmerkrolcodeopd_5") + ";"
+ "4;"+ L("mgt_kenmerkrolcodeopd_4") + ";" // ORDSUPonly
+ "3;"+ L("mgt_kenmerkrolcodeopd_3") + ";" // beide
+ "2;"+ L("mgt_kenmerkrolcodeopd_2") + ";" // Afmelden? opdrachtnemer
+ "1;"+ L("mgt_kenmerkrolcodeopd_1"); // ORDBOF opdrachtgever
break;
case "PRS":
kenmerkRoleCodeLOV = "7;"+ L("mgt_kenmerkrolcodeprs_7") + ";" // alles
+ "6;"+ L("mgt_kenmerkrolcodeprs_6") + ";" // PRSUSE+PROFIL
+ "3;"+ L("mgt_kenmerkrolcodeprs_3") + ";" // PRSMAN+PRSUSE
+ "2;"+ L("mgt_kenmerkrolcodeprs_2") + ";" // PRSUSE
+ "1;"+ L("mgt_kenmerkrolcodeprs_1"); // PRSMAN
break;
case "REL":
kenmerkRoleCodeLOV = "7;"+ L("mgt_kenmerkrolcoderel_7") + ";" // alles
+ "6;"+ L("mgt_kenmerkrolcoderel_6") + ";" // RELUSE+EXTREL
+ "3;"+ L("mgt_kenmerkrolcoderel_3") + ";" // RELMAN+RELUSE
+ "2;"+ L("mgt_kenmerkrolcoderel_2") + ";" // RELUSE
+ "1;"+ L("mgt_kenmerkrolcoderel_1"); // RELMAN
break;
case "RES": // dit lijkt technisch een grappige volgorde, maar is logischer
kenmerkRoleCodeLOV = "7;"+ L("mgt_kenmerkrolcoderes_7") + ";" // iedereen
+ "4;"+ L("mgt_kenmerkrolcoderes_4") + ";" // RESBOF only, afhandelkenmerken
+ "2;"+ L("mgt_kenmerkrolcoderes_2") + ";" // RESFOF ony, professionele kenmerken
+ "3;"+ L("mgt_kenmerkrolcoderes_3"); // RESFOF+RESUSE (d.i. geen RESBOF)
//+ "1;"+ L("mgt_kenmerkrolcoderes_1"); // RESUSE, algemene kenmerken
break;
default:
kenmerkRoleCodeLOV = "?";
}
return kenmerkRoleCodeLOV;
}
function buildKenmerktypeLOV(kenmerktype, params)
{
var kenmerktypeLOV = "";
@@ -145,13 +59,13 @@
break;
case "L":
kenmerktypeLOV = "L;" + L("mgt_srtkenmerk_label") + ";"
+ "l;" + L("mgt_srtkenmerk_label_i")
+ (params && params.module == "MLD"? ";b;" + L("mgt_srtkenmerk_label_ii") : "")
+ "l;" + L("mgt_srtkenmerk_label_i") + ";"
+ (params && params.module == "MLD"? "b;" + L("mgt_srtkenmerk_label_ii") : "")
break;
case "l":
kenmerktypeLOV = "l;" + L("mgt_srtkenmerk_label_i") + ";"
+ "L;" + L("mgt_srtkenmerk_label")
+ (params && params.module == "MLD"? ";b;" + L("mgt_srtkenmerk_label_ii") : "")
+ "L;" + L("mgt_srtkenmerk_label") + ";"
+ (params && params.module == "MLD"? "b;" + L("mgt_srtkenmerk_label_ii") : "")
break;
case "b":
kenmerktypeLOV = "b;" + L("mgt_srtkenmerk_label_ii") + ";"
@@ -199,7 +113,7 @@
function buildGroepsverplichtingList()
{ // LOV waarden voor xxx_kenmerk_groep.
var s = "0;" + L("mgt_kenmerk_groep0") ;
var s = "0;<" + L("lcl_none") + ">";
for (var i=1; i<=9; i++)
{
s = s + ";" + i + ";" + L("mgt_kenmerk_groep") + " " + i;
@@ -437,9 +351,9 @@ function buildStatusList(pniveau)
function buildHltPropList()
{
var hltPropList = "0;" + L("mld_kenmerk_onderbreken0")
+ ";1;" + L("mld_kenmerk_onderbreken1")
+ ";2;" + L("mld_kenmerk_onderbreken2");
var hltPropList = "0;" + L("lcl_No")
+ ";1;" + L("lcl_Yes")
+ ";2;" + L("lcl_mld_delete_on_resume");
return hltPropList;
}

View File

@@ -1,26 +0,0 @@
<%@ language = "JavaScript" %>
<% /*
$Revision$
$Id$
File: api_invoicelines.asp
Description: Bestelling API
Parameters:
Context:
Notes: We ondersteunen alleen (nog) het opvragen van de bestelling
*/
DOCTYPE_Disable = true;
ANONYMOUS_Allowed = 1; // Eigenlijk niet waar. We regelen echter alles zelf
THIS_FILE = "appl/api2/api_invoicelines.asp";
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="./api2_rest.inc" -->
<!-- #include file="./model_invoicelines.inc" -->
<%
api2_rest.process(model_invoicelines);
%>
<% ASPPAGE_END(); %>

View File

@@ -13,7 +13,7 @@
*/
DOCTYPE_Disable = true;
ANONYMOUS_Allowed = 1; // Eigenlijk niet waar. We regelen echter alles zelf
THIS_FILE = "appl/api2/api_invoices.asp";
THIS_FILE = "appl/api/api_invoices.asp";
%>
<!-- #include file="../Shared/common.inc" -->
@@ -21,4 +21,4 @@
<!-- #include file="./model_invoices.inc" -->
<%
api2_rest.process(model_invoices);
%><% ASPPAGE_END(); %>
%><% ASPPAGE_END(); %>

View File

@@ -20,7 +20,5 @@
<!-- #include file="./api2_rest.inc" -->
<!-- #include file="./model_objects.inc" -->
<%
var mode = "xxxx"; // mode must be defined because of use in model_ins_kenmerk.inc
api2_rest.process(model_objects);
%><% ASPPAGE_END(); %>

View File

@@ -20,8 +20,6 @@
<!-- #include file="./api2_rest.inc" -->
<!-- #include file="./model_reservations.inc" -->
<%
var mode = "xxxx"; // mode must be defined because of use in model_res_kenmerk.inc
api2_rest.process(model_reservations);
ASPPAGE_END();

View File

@@ -26,8 +26,8 @@ function model_alg_kenmerk(niveau, params)
this.module = "ALG";
// overrule titel voor schermen.
this.record_title = L("mgt_kenmerk_of") + " " + get_real_estate_name(niveau);
this.records_title = L("mgt_kenmerk_m_of") + " " + get_real_estate_name(niveau);
this.record_title = L("mgt_kenmerk") + " " + get_real_estate_name(niveau);
this.records_title = L("mgt_kenmerk_m") + " " + get_real_estate_name(niveau);
this.fields = {
@@ -50,16 +50,7 @@ function model_alg_kenmerk(niveau, params)
"dbs": "alg_kenmerk_volgnr",
"label": L("mgt_kenmerk_volgnummer"),
"typ": "number",
"len": 3,
"required": true // deze zou er straks weer af mogen
},
"rolecode": {
"dbs": "alg_kenmerk_rolcode",
"label": L("mgt_kenmerk_rolcode"),
"typ": "number",
"LOV": buildKenmerkRoleCodeLOV({ module: "ALG" }),
"required": true,
"multiedit": true
"required": true
},
"name": {
"dbs": "alg_kenmerk_omschrijving",
@@ -95,7 +86,6 @@ function model_alg_kenmerk(niveau, params)
"label": L("mgt_kenmerk_verplicht"),
"typ": "key",
"LOV": buildVerplichtingList(),
"emptyisrealvalue": true,
"emptyoption": null
},
"group": {
@@ -114,8 +104,7 @@ function model_alg_kenmerk(niveau, params)
"system": {
"dbs": "alg_kenmerk_systeem",
"label": L("mgt_srtkenmerk_systeem"),
"typ": "check",
"readonly": !user.has("WEB_PRSSYS")
"typ": "check"
},
"inlist": {
"dbs": "alg_kenmerk_inlijst",
@@ -125,14 +114,12 @@ function model_alg_kenmerk(niveau, params)
{
"name": "",
"label": "",
"showasgroup": false,
"typ": "check",
"mask": 1,
"radios": [
{
"name": "inplan",
//"label": (niveau == "G"? L("mgt_kenmerk_systeem_overview_bui") + " " : "") + L("mgt_kenmerk_systeem_overview"),
"label": L("mgt_kenmerk_systeem_overview"),
"label": (niveau == "G"? L("mgt_kenmerk_systeem_overview_bui") : ""),
"mask": 1,
"defaultvalue": 0
}
@@ -186,9 +173,9 @@ function model_alg_kenmerk(niveau, params)
},
"code": {
"dbs": "alg_kenmerk_code",
"label": L("mgt_kenmerk_code"),
"label": L("lcl_alg_code"),
"typ": "varchar",
"readonly": !user.has("WEB_PRSSYS")
"readonly": !user.has("WEB_FACTAB")
},
"authorization": {
"dbs": "fac_functie_key",
@@ -217,7 +204,7 @@ function model_alg_kenmerk(niveau, params)
gparams.GET = { wheres: [ "alg_kenmerk.alg_kenmerk_niveau = " + safe.quoted_sql(niveau) ] };
}
if (niveau == "G") // en dan ook nog alleen als je MJOB hebt/gebruikt lijkt me TODO?
if (niveau == "G")
{
this.fields.inlist.bits[0].mask = 3;
this.fields.inlist.bits[0].radios.push({ "name": "start",
@@ -237,7 +224,6 @@ function model_alg_kenmerk(niveau, params)
var naam = "";
switch (niveau)
{
case "E": naam = L("lcl_region"); break;
case "D": naam = L("lcl_district"); break;
case "L": naam = L("lcl_location"); break;
case "T": naam = L("lcl_terra"); break;
@@ -250,8 +236,7 @@ function model_alg_kenmerk(niveau, params)
function fill_real_estate_level_LOV()
{
return "E;"+L("lcl_region")
+ ";D;"+L("lcl_district")
return "D;"+L("lcl_district")
+ ";L;"+L("lcl_location")
+ ";G;"+L("lcl_building")
+ ";R;"+L("lcl_room"); // Moet hier T en V ook nog bij?

View File

@@ -61,7 +61,6 @@ function model_aut_idp_map(params)
+ ";11;" + L("lcl_prs_person_mobile")
+ ";12;" + L("prs_perslid_externid")
+ ";13;" + L("prs_perslid_externid") + " (case insensitive)"
+ ";14;" + L("lcl_prs_person_nr")
// De foreign's
+ ";20;" + L("lcl_prs_person_function")

View File

@@ -315,12 +315,6 @@ model_bes_disc_params =
"dbs": "bes_disc_params_deliver_fe",
"label": L("bes_discipline_fe_deliver"),
"typ": "check0"
},
"autodeliver": {
"dbs": "bes_disc_params_autodeliverdays",
"label": L("bes_discipline_autodeliverdays"),
"typ": "number",
"len": 4
}
}
}

View File

@@ -30,6 +30,11 @@ function model_bes_discipline(disc_key, params)
}
);
this.hook_pre_edit = function (obj, fld, params)
{
fld.costtype.foreign = mgt.pre_edit_kostensoort(obj);
}
this.hook_post_post = function (params, obj, key)
{
var org_disc_key = getQParamInt("id", -1);
@@ -38,11 +43,6 @@ function model_bes_discipline(disc_key, params)
{ // Ook de autorisatie van de oude discipline kopieren
mgt.clone_authorization(key, org_disc_key);
}
var clone_art = getQParamInt("clone_art", 0) == 1;
if (clone_art)
{ // Ook de autorisatie van de oude discipline kopieren
mgt.clone_articles(key, org_disc_key);
}
}
this.REST_POST = generic_REST_POST(_model_bes_discipline);
@@ -91,6 +91,7 @@ _model_bes_discipline = // Internal only
"label": L("prs_kostensoort_key"),
"typ": "key",
"foreign": "prs_kostensoort",
"LOVinit": "",
"showtransit": true
},
"costcentremandatory": {

View File

@@ -4,7 +4,7 @@
File: model_bes_kenmerk.inc
Description: Model voor bes_kenmerk = Kenmerken van bestelregels
Description: Model voor bes_kenmerk
Context:
@@ -56,16 +56,12 @@ function model_bes_kenmerk(params)
"foreign": {
"tbl": "(SELECT bes_srtkenmerk_key"
+ " , bes_srtkenmerk_omschrijving"
+ (mode != "list"
? " || ' (' || bes_srtkenmerk_kenmerktype || ')'"
: "")
+ " oms"
+ " , bes_srtkenmerk_kenmerktype"
+ " FROM bes_srtkenmerk"
+ " WHERE bes_srtkenmerk_verwijder IS NULL"
+ " ORDER by bes_srtkenmerk_omschrijving ASC)",
"key": "bes_srtkenmerk_key",
"desc": "oms",
"desc": "bes_srtkenmerk_omschrijving",
"extravalue": "bes_srtkenmerk_kenmerktype"
},
"defaultvalue": null,
@@ -135,14 +131,6 @@ function model_bes_kenmerk(params)
"dbs": "bes_kenmerk_volgnummer",
"label": L("mgt_kenmerk_volgnummer"),
"typ": "number",
"len": 3,
"required": true
},
"rolecode": {
"dbs": "bes_kenmerk_rolcode",
"label": L("mgt_kenmerk_rolcode"),
"typ": "number",
"LOV": buildKenmerkRoleCodeLOV({ module: "BESI" }),
"required": true
},
"required": {
@@ -150,7 +138,6 @@ function model_bes_kenmerk(params)
"label": L("mgt_kenmerk_verplicht"),
"typ": "key",
"LOV": buildVerplichtingList(),
"emptyisrealvalue": true,
"emptyoption": null
},
"group": {
@@ -174,7 +161,6 @@ function model_bes_kenmerk(params)
{
"name": "",
"label": "",
"showasgroup": false,
"typ": "check",
"mask": 3,
"radios": [
@@ -222,9 +208,9 @@ function model_bes_kenmerk(params)
},
"code": {
"dbs": "bes_kenmerk_code",
"label": L("mgt_kenmerk_code"),
"label": L("lcl_bes_code"),
"typ": "varchar",
"readonly": !user.has("WEB_PRSSYS")
"readonly": !user.has("WEB_FACTAB")
},
"authorization": {
"dbs": "fac_functie_key",

View File

@@ -4,8 +4,11 @@
File: model_bes_kenmerkbestel.inc
Description: Model voor bes_kenmerkbestel = Kenmerken van bestelling
Description: Vanuit CodeCharge gegenereerd model voor bes_kenmerkbestel
Context:
Notes:
*/
%>
<%
@@ -55,16 +58,12 @@ function model_bes_kenmerkbestel()
"foreign": {
"tbl": "(select bes_srtkenmerk_key"
+ " , bes_srtkenmerk_omschrijving"
+ (mode != "list"
? " || ' (' || bes_srtkenmerk_kenmerktype || ')'"
: "")
+ " oms"
+ " , bes_srtkenmerk_kenmerktype"
+ " from bes_srtkenmerk"
+ " where bes_srtkenmerk_verwijder is null"
+ " order by bes_srtkenmerk_omschrijving asc)",
"key": "bes_srtkenmerk_key",
"desc": "oms",
"desc": "bes_srtkenmerk_omschrijving",
"extravalue": "bes_srtkenmerk_kenmerktype"
},
"defaultvalue": null,
@@ -97,14 +96,6 @@ function model_bes_kenmerkbestel()
"dbs": "bes_kenmerk_volgnummer",
"label": L("mgt_kenmerk_volgnummer"),
"typ": "number",
"len": 3,
"required": true
},
"rolecode": {
"dbs": "bes_kenmerk_rolcode",
"label": L("mgt_kenmerk_rolcode"),
"typ": "number",
"LOV": buildKenmerkRoleCodeLOV({ module: "BES" }),
"required": true
},
"required": {
@@ -135,7 +126,6 @@ function model_bes_kenmerkbestel()
{
"name": "",
"label": "",
"showasgroup": false,
"typ": "check",
"mask": 7,
"radios": [
@@ -180,19 +170,7 @@ function model_bes_kenmerkbestel()
"typ": "memo",
"translate": true
},
"code": {
"dbs": "bes_kenmerk_code",
"label": L("mgt_kenmerk_code"),
"typ": "varchar",
"readonly": !user.has("WEB_PRSSYS")
},
"authorization": { // wordt nog niet ondersteund in deze module
"dbs": "fac_functie_key",
"label": L("mgt_kenmerk_autorisatie"),
"typ": "key",
"foreign": "fac_functie"
},
"regexp": {
"regexp": {
"dbs": "bes_kenmerk_regexp",
"label": L("mgt_kenmerk_regexp"),
"typ": "varchar"

View File

@@ -259,7 +259,6 @@ function model_bes_srtdeel(disc_key)
"orderbys": [
"ins_discipline_omschrijving",
"bes_srtgroep_omschrijving",
"bes_srtdeel_volgnr",
"bes_srtdeel_nr"
]
}

View File

@@ -134,8 +134,8 @@ function model_bes_srtkenmerk(params)
"code": {
"dbs": "bes_srtkenmerk_code",
"typ": "varchar",
"label": L("mgt_srtkenmerk_code"),
"readonly": !user.has("WEB_PRSSYS")
"label": L("lcl_bes_code"),
"readonly": !user.has("WEB_FACTAB")
}
};

View File

@@ -38,7 +38,6 @@ function model_bez_kenmerk(params)
"dbs": "bez_kenmerk_volgnr",
"label": L("mgt_kenmerk_volgnummer"),
"typ": "number",
"len": 3,
"required": true
},
"name": {
@@ -73,7 +72,6 @@ function model_bez_kenmerk(params)
"label": L("mgt_kenmerk_verplicht"),
"typ": "key",
"LOV": buildVerplichtingList(),
"emptyisrealvalue": true,
"emptyoption": null
},
"group": {
@@ -84,13 +82,6 @@ function model_bez_kenmerk(params)
"LOV": buildGroepsverplichtingList(),
"emptyoption": null
},
"rolecode": {
"dbs": "bez_kenmerk_rolcode",
"label": L("mgt_kenmerk_rolcode"),
"typ": "number",
"LOV": buildKenmerkRoleCodeLOV({ module: "BEZ" }),
"required": true
},
"readonly": {
"dbs": "bez_kenmerk_toonbaar",
"label": L("mgt_kenmerk_toonbaar"),
@@ -104,7 +95,6 @@ function model_bez_kenmerk(params)
{
"name": "",
"label": "",
"showasgroup": false,
"typ": "check",
"mask": 15,
"radios": [
@@ -185,9 +175,9 @@ function model_bez_kenmerk(params)
},
"code": {
"dbs": "bez_kenmerk_code",
"label": L("mgt_kenmerk_code"),
"label": L("lcl_bez_code"),
"typ": "varchar",
"readonly": !user.has("WEB_PRSSYS")
"readonly": !user.has("WEB_FACTAB")
},
"authorization": {
"dbs": "fac_functie_key",

View File

@@ -12,7 +12,6 @@
*/
%>
<!-- #include file="../alg/alg.inc"-->
<!-- #include file="../Shared/discxalg3d.inc"-->
<!-- #include file="./model_custom_fields.inc"-->
<!-- #include file="./model_alg_kenmerk.inc"-->
@@ -65,14 +64,9 @@ function model_buildings()
this.REST_GET = function _GET(params)
{
var autfunction = ["WEB_ALGUSE","WEB_ALGMAN"];
var urole = "fe"; // TODO: Moet echt niet ter zake doen
var autfunction = urole == "fe"? "WEB_ALGUSE" : "WEB_ALGMAN";
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
if (params.filter.id)
{
var bld_key = params.filter.id;
var this_alg = alg.func_enabled(bld_key, "G");
user.auth_required_or_abort(this_alg.readman || this_alg.readuse);
}
// TODO: Add authorization
var query = api2.sqlfields(params, this);

View File

@@ -65,7 +65,7 @@ function model_cad_tekening(niveau, params)
// Save in DB (link file to floor)
var cadfields = [
{ dbs: "cad_tekening_filenaam", typ: "varchar", val: safefilename.replace(/\.dwf$/i, "") }
{ dbs: "cad_tekening_filenaam", typ: "varchar", val: safefilename.replace(/.dwf$/i, "") }
];
var sql = buildUpdate("cad_tekening", cadfields, { noValidateToken: true }) + " cad_tekening_key = " + the_key;
Oracle.Execute(sql);
@@ -116,7 +116,7 @@ function model_cad_tekening(niveau, params)
// Save in DB (link file to floor)
var cadfields = [
{ dbs: "cad_tekening_key", typ: "key", seq: "cad_s_cad_tekening_key" },
{ dbs: "cad_tekening_filenaam", typ: "varchar", val: safefilename.replace(/\.dwf$/i, "") },
{ dbs: "cad_tekening_filenaam", typ: "varchar", val: safefilename.replace(/.dwf$/i, "") },
{ dbs: "alg_locatie_key", typ: "key", val: getLocation(jsondata.floor) },
{ dbs: "alg_verdieping_key", typ: "key", val: jsondata.floor },
{ dbs: "cad_tekening_type", typ: "varchar", val: "P" }

View File

@@ -66,6 +66,7 @@ function model_cht_discipline(disc_key, params)
"label": L("prs_kostensoort_key"),
"typ": "key",
"foreign": "prs_kostensoort",
"LOVinit": "",
"multiedit": true,
"showtransit": true
},

View File

@@ -72,12 +72,6 @@ model_cnt_disc_params =
"label": L("cnt_discipline_factuurappr"),
"typ": "check0"
},
"bookinvoice": {
"dbs": "cnt_disc_params_factuurboeken",
"label": L("cnt_discipline_factuurboeken"),
"typ": "check0",
"defaultvalue": 1
},
"invoicelimit": { // "limit" is een reserved naam in API2
"dbs": "cnt_disc_params_factuurgrens",
"label": L("cnt_discipline_factuurgrens"),
@@ -150,18 +144,6 @@ model_cnt_disc_params =
"label": L("cnt_discipline_verlengbaar"),
"typ": "check0",
"defaultvalue": 0
},
"costtypemandatory": {
"dbs": "cnt_disc_params_ksverplicht",
"label": L("cnt_discipline_ksverplicht"),
"typ": "check0",
"defaultvalue": 0
},
"approvenew": {
"dbs": "cnt_disc_params_approve_new",
"label": L("cnt_discipline_approve_new"),
"typ": "check0",
"defaultvalue": 0
}
/* // Voor als in cnt_disc_params_opties meerdere bits worden gebruikt om verschillende opties aan te geven:
"options": {

View File

@@ -20,6 +20,11 @@ function model_cnt_discipline(disc_key, params)
// E<>n model voor de buitenwereld
api2.merge_disc_params_model(this, _model_cnt_discipline);
this.hook_pre_edit = function (obj, fld, params)
{
fld.costtype.foreign = mgt.pre_edit_kostensoort(obj);
}
this.hook_post_post = function (params, obj, key)
{
var org_disc_key = getQParamInt("id", -1);
@@ -83,7 +88,8 @@ _model_cnt_discipline = // Internal only
"dbs": "prs_kostensoort_key",
"label": L("prs_kostensoort_key"),
"typ": "key",
"foreign": "prs_kostensoort"
"foreign": "prs_kostensoort",
"LOVinit": ""
},
"email": {
"dbs": "ins_discipline_email",

View File

@@ -45,16 +45,12 @@ function model_cnt_kenmerk(params)
"foreign": {
"tbl": "(select cnt_srtkenmerk_key"
+ " , cnt_srtkenmerk_omschrijving"
+ (mode != "list"
? " || ' (' || cnt_srtkenmerk_kenmerktype || ')'"
: "")
+ " oms"
+ " , cnt_srtkenmerk_kenmerktype"
+ " from cnt_srtkenmerk"
+ " where cnt_srtkenmerk_verwijder is null"
+ " order by cnt_srtkenmerk_upper asc)",
"key": "cnt_srtkenmerk_key",
"desc": "oms",
"desc": "cnt_srtkenmerk_omschrijving",
"extravalue": "cnt_srtkenmerk_kenmerktype"
},
"defaultvalue": null,
@@ -73,8 +69,7 @@ function model_cnt_kenmerk(params)
"dbs": "cnt_srtkenmerk.cnt_srtkenmerk_kenmerktype",
"label": L("mgt_srtkenmerk_kenmerktype"),
"typ": "varchar",
//"hidden_fld": true,
"readonly" : true,
"hidden_fld": true,
"LOV": buildKenmerktypeLOV(),
"showtransit": true
},
@@ -92,7 +87,6 @@ function model_cnt_kenmerk(params)
"desc": "ins_discipline_omschrijving"
},
"LOVinit": "",
"insertonly" : true,
"showtransit": true
},
"level": {
@@ -107,14 +101,6 @@ function model_cnt_kenmerk(params)
"dbs": "cnt_kenmerk_volgnummer",
"label": L("mgt_kenmerk_volgnummer"),
"typ": "number",
"len": 3,
"required": true
},
"rolecode": {
"dbs": "cnt_kenmerk_rolcode",
"label": L("mgt_kenmerk_rolcode"),
"typ": "number",
"LOV": buildKenmerkRoleCodeLOV({ module: "CNT" }),
"required": true
},
"required": {
@@ -122,7 +108,6 @@ function model_cnt_kenmerk(params)
"label": L("mgt_kenmerk_verplicht"),
"typ": "key",
"LOV": buildVerplichtingList(),
"emptyisrealvalue": true,
"emptyoption": null
},
"group": {
@@ -168,9 +153,9 @@ function model_cnt_kenmerk(params)
},
"code": {
"dbs": "cnt_kenmerk_code",
"label": L("mgt_kenmerk_code"),
"label": L("lcl_cnt_code"),
"typ": "varchar",
"readonly": !user.has("WEB_PRSSYS")
"readonly": !user.has("WEB_FACTAB")
},
"authorization": {
"dbs": "fac_functie_key",

View File

@@ -92,8 +92,8 @@ function model_cnt_srtkenmerk(params)
"code": {
"dbs": "cnt_srtkenmerk_code",
"typ": "varchar",
"label": L("mgt_srtkenmerk_code"),
"readonly": !user.has("WEB_PRSSYS")
"label": L("lcl_cnt_code"),
"readonly": !user.has("WEB_FACTAB")
}
};

View File

@@ -99,17 +99,6 @@ function model_companies()
this.REST_GET = function _GET(params)
{
var autfunction = "WEB_RELMAN";
var bedrijf_key = (!params.isNew && params && params.filter && params.filter.id ? params.filter.id : -1);
if (bedrijf_key > 0) {
var sql = "SELECT NVL(prs_bedrijf_intern, 0) intern"
+ " FROM prs_bedrijf"
+ " WHERE prs_bedrijf_key = " + bedrijf_key;
var oRs = Oracle.Execute(sql);
if (!oRs.EOF && oRs("intern").Value != 0) { // Extern systeem
autfunction = "WEB_PRSMAN";
}
oRs.Close();
}
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
// TODO: Add authorization

View File

@@ -42,8 +42,6 @@ function model_custom_fields(formodel, flexModel, flexParams)
var sqlModule = flexModule;
if (flexModule == 'MLD' && flexParams.pNiveau == 'O')
sqlModule = 'OPDR';
if (flexModule == 'FIN' && flexParams.pNiveau == 'R')
sqlModule = 'FINR';
var theSqlFlex = getSqlFlex(sqlModule, formodel.primary, flexParams);
// enigszins undocumented maar met parameter '&custom_fields=' kun je het aantal opgeleverde velden beperken
// (net zoals je met '&fields=' de gewone vaste velden kunt beperken)
@@ -58,8 +56,6 @@ function model_custom_fields(formodel, flexModel, flexParams)
var sqlModule = flexModule;
if (flexModule == 'MLD' && flexParams.pNiveau == 'O')
sqlModule = 'OPDR';
if (flexModule == 'FIN' && flexParams.pNiveau == 'R')
sqlModule = 'FINR';
var theSqlFlex = "SELECT * FROM ({0}) ".format(getSqlFlex(sqlModule, formodel.primary, flexParams));
return theSqlFlex;
@@ -88,7 +84,6 @@ function model_custom_fields(formodel, flexModel, flexParams)
"sequence": {
"dbs": "volgnummer",
"label": L("mgt_kenmerk_volgnummer"),
"len": 3,
"typ": "number" },
"label": {
"dbs": "omschrijving",
@@ -237,17 +232,6 @@ function model_custom_fields(formodel, flexModel, flexParams)
{
var attachment = jsondata.attachments[i];
var safefilename = safe.filename(attachment.name);
// iPad/IPhone uploaden directe foto altijd als 'Image.jpg' wat erg lastig is
// In dat geval bestandsnaam aanpassen.
var newfilename = renameIphoneIpadFiles(safefilename, i);
if (newfilename)
{
if (i == 0) jsondata.value = newfilename; // Gelijk aan het eerste bestand.
jsondata.attachments[i] = newfilename;
safefilename = newfilename;
}
if (flexparams.isAllowedName(safefilename))
{
CreateFullPath(flexparams.AttachPath);
@@ -263,34 +247,12 @@ function model_custom_fields(formodel, flexModel, flexParams)
attachment.content_base64 || attachment.content_hex,
fileencoding);
}
// resizen van bijlagen
var oCrypto = new ActiveXObject("SLNKDWF.Crypto");
var fso = Server.CreateObject("Scripting.FileSystemObject")
var orgFile = flexparams.AttachPath + safefilename;
if (flexparams.regexp)
{
var resize_params = { resizecode: flexparams.regexp // "R800x600"
, attachpath: flexparams.AttachPath
, filename: safefilename
, safename: safefilename
, digest: oCrypto.hex_sha1_file(orgFile)
, isupload: false
, module: this.module
};
var resize_result = resizePicture(resize_params);
if (resize_result.newsize && (resize_result.newsize > 0))
{
tmpFile = resize_result.file_resized;
fso.DeleteFile(orgFile);
fso.MoveFile(tmpFile, orgFile);
}
}
// Toevoegen bijlage/bestand tracken.
trackBijlagen(this.module, parent_key, flexparams, {safefilename: [safefilename]}, "upload");
if (flexparams.fac_bijlagen)
{
var oCrypto = new ActiveXObject("SLNKDWF.Crypto");
var fso = Server.CreateObject("Scripting.FileSystemObject")
var sql = "BEGIN "
+ " flx.setflexbijlage"
+ "(" + safe.quoted_sql(this.module) // MLD | RES | ....
@@ -299,9 +261,9 @@ function model_custom_fields(formodel, flexModel, flexParams)
+ ", " + safe.quoted_sql(flexparams.AttachSubPath)
+ ", " + "NULL" // diskfilename
+ ", " + safe.quoted_sql(safefilename)
+ ", " + fso.GetFile(orgFile).Size
+ ", " + fso.GetFile(flexparams.AttachPath + safefilename).Size
+ ", " + "SYSDATE"
+ ", " + safe.quoted_sql(oCrypto.hex_sha1_file(orgFile))
+ ", " + safe.quoted_sql(oCrypto.hex_sha1_file(flexparams.AttachPath + safefilename))
+ ");"
+ " END;";
Oracle.Execute(sql);
@@ -317,22 +279,17 @@ function model_custom_fields(formodel, flexModel, flexParams)
if (typ != "M" && parent_key > 0)
{
var setFlexModule = this.module;
if (this.module == 'MLD' && flexParams.pNiveau == 'O')
setFlexModule = 'OPD';
if (this.module == 'FIN' && flexParams.pNiveau == 'R')
setFlexModule = 'FINR';
var sql = "BEGIN flx.setflex({0}".format(safe.quoted_sql(setFlexModule))
var sql = "BEGIN flx.setflex({0}".format(this.module == "MLD" && flexParams.pNiveau == "O" ? "'OPD'" : safe.quoted_sql(this.module))
+ " , {0}".format(the_key) // == jsondata.propertyid
+ " , {0}".format(parent_key)
+ " , {0}".format(this.module == "MLD" || this.module == "FIN"? "NULL" : safe.quoted_sql(flexParams.pNiveau))
+ " , {0}".format(this.module == "MLD" ? "NULL" : safe.quoted_sql(flexParams.pNiveau))
+ " , {0});".format(safe.quoted_sql(jsondata.value))
+ "END;"
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
api2.error(400, err.friendlyMsg);
}
return {token: tmpfolder, jsondata: jsondata}; // Tijdelijke folder en attachment data teruggeven. Bestandsnaam kan aangepast zijn.
return tmpfolder;
}
if (flexModel) // nog even niet voor MLD

View File

@@ -19,7 +19,7 @@ function model_fac_email_setting()
this.record_name = "emailsetting";
this.table = "fac_email_setting";
this.primary = "fac_email_setting_key";
this.autfunction = "WEB_MLDMGT"; // de ernstige velden zijn blijven WEB_FACTAB
this.autfunction = "WEB_FACTAB";
this.record_title = L("fac_email_setting");
this.records_title = L("fac_email_setting_m");
@@ -36,7 +36,7 @@ function model_fac_email_setting()
"dbs": "fac_email_setting_volgnr",
"label": L("fac_email_setting_volgnr"),
"typ": "number",
"required": true // de database zorgt voor defaultvalue 10
"required": true
},
"name": {
"dbs": "fac_email_setting_user",
@@ -50,34 +50,19 @@ function model_fac_email_setting()
"typ": "varchar",
"multiedit": true
},
"reqtext": {
"dbs": "fac_email_setting_text",
"label": L("fac_email_setting_text"),
"typ": "varchar",
"multiedit": true
},
"frommode": {
"dbs": "fac_email_setting_frommode",
"label": L("fac_email_setting_frommode"),
"typ": "number",
"required": true,
"LOV": L("fac_email_setting_frommodeLOV"),
"emptyoption": null,
"readonly": !(user.has("WEB_FACTAB"))
"multiedit": true
},
"action": {
"dbs": "fac_email_setting_action",
"label": L("fac_email_setting_action"),
"typ": "varchar",
"defaultvalue" : "fac.processemail",
"multiedit": true,
"readonly": !(user.has("WEB_FACTAB"))
},
"stdmelding": {
"dbs": "mld_stdmelding_key",
"label": L("fac_email_setting_stdmelding_key"),
"typ": "key",
"foreign": "mld_stdmelding"
"multiedit": true
},
"expire": {
"dbs": "fac_email_setting_expire",
@@ -89,15 +74,12 @@ function model_fac_email_setting()
"dbs": "fac_email_setting_attachpath",
"label": L("fac_email_setting_attachpath"),
"typ": "varchar",
"multiedit": true,
"placeholder": "*flexfilespath",
"readonly": !(user.has("WEB_FACTAB"))
"multiedit": true
},
"attachext": {
"dbs": "fac_email_setting_attachext",
"label": L("fac_email_setting_attachext"),
"typ": "varchar",
"placeholder": S("flexAllowedExt"),
"multiedit": true
},
"reqattachext": {
@@ -118,8 +100,7 @@ function model_fac_email_setting()
"typ": "number",
"required": true,
"defaultvalue": 0,
"multiedit": true,
"readonly": !(user.has("WEB_FACTAB"))
"multiedit": true
},
"person": {
"dbs": "prs_perslid_key_auth",

View File

@@ -27,8 +27,8 @@ function model_fac_faq()
this.table = "fac_faq";
this.primary = "fac_faq_key";
this.records_name = "knowledgebase";
this.record_name = "knowledgebase";
this.records_name = "faqs";
this.record_name = "faq";
this.record_title = L("fac_faq");
this.records_title = L("fac_faq_m");
this.module = "FAQ";
@@ -162,6 +162,7 @@ function model_fac_faq()
tables: [],
wheres: [
where_auth, where_lang,
"ROWNUM < " + S("faq_max_results"),
"fac_faq.fac_faq_datum < SYSDATE"
],
orderbys: [

View File

@@ -139,10 +139,7 @@ function model_fac_functie (functie_key, params)
this.groep_key = params.groep_key;
this.REST_DELETE = function (params, the_key) // we verwijderen niet het fac_functie record maar alle rechten er op.
{
var autparams = user.checkAutorisation(this.autfunction);
user.auth_required_or_abort(autparams.PRSwritelevel < 9 && autparams.ALGwritelevel < 9);
var sql = "DELETE fac_groeprechten"
var sql = "DELETE fac_groeprechten"
+ " WHERE fac_functie_key = " + the_key
+ " AND fac_groep_key = " + this.groep_key
+ " AND fac_functie_key NOT IN (SELECT fac_functie_key"

View File

@@ -171,24 +171,6 @@ function model_fac_gebruikersgroep(params)
this.hook_pre_edit = function(obj, fld)
{
var prs_arr = getQParamIntArray("prsarr", []);
if (prs_arr.length > 0)
{ // multiedit mode
// Sluit de groepen die alle gebruikers overeenkomstig hebben uit van de lijst.
// Als er maar 1 gebruiker geselecteerd is dan wordt de standaard where-clause gebruikt
// die wordt gegenereerd obv "field.uniquewith" in scaffolding_edit.inc.
prs_arr.push(obj.person.id);
fld.authorizationgroup.foreign.where = "fac_groep_key NOT IN"
+ "(SELECT fac_groep_key"
+ " FROM (SELECT fac_groep_key, COUNT(prs_perslid_key)"
+ " FROM fac_gebruikersgroep"
+ " WHERE prs_perslid_key IN (" + prs_arr.join(",") + ")"
+ " GROUP BY fac_groep_key"
+ " HAVING COUNT(prs_perslid_key) = " + prs_arr.length
+ " )"
+ ")";
}
if (obj.id > 0) { // Bestaand record
fld.authorizationgroup.readonly = true;
fld.person.readonly = true;

View File

@@ -56,10 +56,7 @@ function model_fac_groep(groep_key, params)
"substitutes": {
"dbs": "fac_groep_collega",
"label": L("lcl_prs_substitutes"),
"typ": "key",
"LOV": L("lcl_prs_substitutesLOV"),
"defaultvalue": "0",
"emptyoption": null
"typ": "check0"
},
"externalid": {
"dbs": "fac_groep_externid",
@@ -72,7 +69,7 @@ function model_fac_groep(groep_key, params)
"label": L("fac_groep_nn_leden"),
"typ": "number"
},
"created": {
"created": {
"dbs": "fac_groep_aanmaak",
"label": "Aanmaakdatum",
"typ": "datetime",

View File

@@ -18,10 +18,8 @@ function model_fac_nieuws_groep()
this.table = "fac_nieuws_groep";
this.primary = "fac_nieuws_groep_key";
this.autfunction = "WEB_MSGBOF";
this.record_name = "messagecategory";
this.records_name = "messagecategories";
this.record_title = L("fac_nieuws_groep");
this.records_title = L("fac_nieuws_groep_m");
this.record_name = L("fac_nieuws_groep");
this.records_name = L("fac_nieuws_groep_m");
this.fields = {
"id": {
"dbs": "fac_nieuws_groep_key",

View File

@@ -108,13 +108,11 @@ function model_fac_notificatie_job(params) // J voor Jobs, S voor Scheduled mail
"label": L("fac_notificatie_job_interval"),
"typ": "number"
},
/* Alleen sensor updates wat nooit is uitgekristalliseerd
"seconds": {
"dbs": "fac_notificatie_job_seconds",
"label": L("fac_notificatie_job_seconds"),
"typ": "number"
},
*/
"lastrun": {
"dbs": "fac_notificatie_job_lastrun",
"label": L("fac_notificatie_job_lastrun"),
@@ -126,14 +124,12 @@ function model_fac_notificatie_job(params) // J voor Jobs, S voor Scheduled mail
"label": L("fac_notificatie_job_nextrun"),
"typ": "datetime"
},
/* Alleen sensor updates wat nooit is uitgekristalliseerd
"queueid": {
"dbs": "fac_notificatie_job_queue",
"label": L("fac_notificatie_job_queue"),
"typ": "varchar",
"defaultvalue": "DEFAULT"
},
*/
"fac_usrrap_key": {
dbs: "fac_usrrap_key",
typ: "key",
@@ -180,7 +176,7 @@ function model_fac_notificatie_job(params) // J voor Jobs, S voor Scheduled mail
wheres: ["fac_notificatie_job_view IS NOT NULL"]
}
};
if (user.has("WEB_PRSSYS"))
{
this.REST_POST = generic_REST_POST(this);

View File

@@ -11,8 +11,8 @@
Notes:
*/
%>
<!-- #include file="../api2/model_prs_bedrijfadres_srtnoti.inc" -->
<%
function model_fac_srtnotificatie(cust)
{
this.records_name = "notificationtypes";
@@ -201,16 +201,6 @@ function model_fac_srtnotificatie(cust)
}
};
this.includes = {
"srtnotifications": {
"model": new model_prs_bedrijfadres_srtnoti(),
"joinfield": "srtnotification"
}
};
delete this.includes["srtnotifications"].model["REST_POST"];
delete this.includes["srtnotifications"].model["REST_PUT"];
delete this.includes["srtnotifications"].model["REST_DELETE"];
if (!S("puo_smsaccount"))
this.fields.notificationmode.bits[0].radios.splice(2, 1);

View File

@@ -33,7 +33,7 @@ function model_faq_kenmerk(params)
"typ": "key",
"seq": "faq_s_faq_kenmerk_key"
},
"facdiscipline": { // NULL betekent alle disciplines (denk ik)
"facdiscipline": {
"dbs": "faq_discipline_key",
"label": L("faq_discipline_key"),
"typ": "key",
@@ -49,7 +49,6 @@ function model_faq_kenmerk(params)
"dbs": "faq_kenmerk_volgnr",
"label": L("mgt_kenmerk_volgnummer"),
"typ": "number",
"len": 3,
"required": true
},
"name": {
@@ -84,7 +83,6 @@ function model_faq_kenmerk(params)
"label": L("mgt_kenmerk_verplicht"),
"typ": "key",
"LOV": buildVerplichtingList(),
"emptyisrealvalue": true,
"emptyoption": null
},
"group": {
@@ -95,13 +93,6 @@ function model_faq_kenmerk(params)
"LOV": buildGroepsverplichtingList(),
"emptyoption": null
},
"rolecode": {
"dbs": "faq_kenmerk_rolcode",
"label": L("mgt_kenmerk_rolcode"),
"typ": "number",
"LOV": buildKenmerkRoleCodeLOV({ module: "FAQ" }),
"required": true
},
"readonly": {
"dbs": "faq_kenmerk_toonbaar",
"label": L("mgt_kenmerk_toonbaar"),
@@ -163,9 +154,9 @@ function model_faq_kenmerk(params)
},
"code": {
"dbs": "faq_kenmerk_code",
"label": L("mgt_kenmerk_code"),
"label": L("lcl_faq_code"),
"typ": "varchar",
"readonly": !user.has("WEB_PRSSYS")
"readonly": !user.has("WEB_FACTAB")
},
"authorization": {
"dbs": "fac_functie_key",

View File

@@ -13,7 +13,7 @@
%>
<%
function model_fin_kenmerk(niveau, params)
function model_fin_kenmerk(params)
{
params = params || {};
this.records_name = "invoiceproperties";
@@ -21,9 +21,9 @@ function model_fin_kenmerk(niveau, params)
this.table = "fin_kenmerk";
this.primary = "fin_kenmerk_key";
this.soft_delete = "fin_kenmerk_verwijder";
this.autfunction = params.internal? false : "WEB_FINMGT";
this.record_title = L("fin_kenmerk") + " " + get_fin_type_name(niveau); // dit niveau lijkt niet te werken?
this.records_title = L("fin_kenmerk_m") + " " + get_fin_type_name(niveau);
this.autfunction = params.internal?false:"WEB_FINMGT";
this.record_title = L("fin_kenmerk");
this.records_title = L("fin_kenmerk_m");
this.module = "FIN";
this.fields = {
@@ -38,7 +38,6 @@ function model_fin_kenmerk(niveau, params)
"dbs": "fin_kenmerk_volgnr",
"label": L("mgt_kenmerk_volgnummer"),
"typ": "number",
"len": 3,
"required": true
},
"name": {
@@ -75,19 +74,11 @@ function model_fin_kenmerk(niveau, params)
"LOV": fill_fin_type_LOV(),
"emptyoption": null
},
"rolecode": { // heeft voor deze module nog geen werking
"dbs": "fin_kenmerk_rolcode",
"label": L("mgt_kenmerk_rolcode"),
"typ": "number",
"LOV": buildKenmerkRoleCodeLOV({ module: "FIN" }),
"required": true
},
"required": {
"dbs": "fin_kenmerk_verplicht",
"label": L("mgt_kenmerk_verplicht"),
"typ": "key",
"LOV": buildVerplichtingList(),
"emptyisrealvalue": true,
"emptyoption": null
},
"group": {
@@ -111,7 +102,6 @@ function model_fin_kenmerk(niveau, params)
{
"name": "",
"label": "",
"showasgroup": false,
"typ": "check",
"mask": 15,
"radios": [
@@ -190,9 +180,9 @@ function model_fin_kenmerk(niveau, params)
},
"code": {
"dbs": "fin_kenmerk_code",
"label": L("mgt_kenmerk_code"),
"label": L("lcl_fin_code"),
"typ": "varchar",
"readonly": !user.has("WEB_PRSSYS")
"readonly": !user.has("WEB_FACTAB")
},
"authorization": {
"dbs": "fac_functie_key",
@@ -223,11 +213,6 @@ function model_fin_kenmerk(niveau, params)
<%
}
var gparams = {"GET": {}};
if (niveau)
{
gparams.GET = { wheres: [ "fin_kenmerk.fin_kenmerk_type = " + safe.quoted_sql(niveau) ] };
}
this.REST_GET = generic_REST_GET(this);
this.REST_POST = generic_REST_POST(this);
@@ -239,16 +224,5 @@ function model_fin_kenmerk(niveau, params)
return "F;"+L("fin_invoice")
+ ";R;"+L("fin_invoicerows");
}
function get_fin_type_name(niveau)
{
var naam = "";
switch (niveau)
{
case "F": naam = L("fin_invoice"); break;
case "R": naam = L("fin_invoicerows"); break;
}
return naam;
}
}
%>

View File

@@ -12,7 +12,6 @@
*/
%>
<!-- #include file="../alg/alg.inc"-->
<!-- #include file="../Shared/discxalg3d.inc"-->
<!-- #include file="./model_cad_tekening.inc"-->
<!-- #include file="./model_alg_kenmerk.inc"-->
@@ -48,14 +47,9 @@ function model_floors() {
}
};
this.REST_GET = function _GET(params) {
var autfunction = ["WEB_ALGUSE", "WEB_ALGMAN"];
var urole = "fe"; // TODO: Moet echt niet ter zake doen
var autfunction = urole == "fe"? "WEB_ALGUSE" : "WEB_ALGMAN";
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
if (params.filter.id)
{
var flr_key = params.filter.id;
var this_alg = alg.func_enabled(flr_key, "V");
user.auth_required_or_abort(this_alg.readman || this_alg.readuse);
}
var query = api2.sqlfields(params, this);
query.wheres.push("alg_verdieping_verwijder IS NULL");

View File

@@ -216,7 +216,7 @@ function model_generic(table, autfunction)
var fld = oRs.Fields("column_name").Value;
if (fld == table.toLowerCase() + "_verwijder" || fld == 'ins_discipline_verwijder' || fld == 'res_srtartikel_og_verwijder' || fld == 'res_ruimte_opstel_verwijder')
if (fld == table.toLowerCase() + "_verwijder" || fld == 'ins_discipline_verwijder')
model.soft_delete = fld;
// Dan zien we hem ook nergens meer?

View File

@@ -20,6 +20,11 @@ function model_ins_discipline(disc_key, params)
// E<>n model voor de buitenwereld
api2.merge_disc_params_model(this, _model_ins_discipline);
this.hook_pre_edit = function (obj, fld, params)
{
fld.costtype.foreign = mgt.pre_edit_kostensoort(obj);
}
this.hook_post_post = function (params, obj, key)
{
var org_disc_key = getQParamInt("id", -1);
@@ -83,7 +88,8 @@ _model_ins_discipline = // Internal only
"dbs": "prs_kostensoort_key",
"label": L("prs_kostensoort_key"),
"typ": "key",
"foreign": "prs_kostensoort"
"foreign": "prs_kostensoort",
"LOVinit": ""
},
"colors": {
"dbs": "ins_discipline_color",

View File

@@ -49,16 +49,12 @@ function model_ins_kenmerk(niveau, params)
"foreign": {
"tbl": "(SELECT ins_srtkenmerk_key"
+ " , ins_srtkenmerk_omschrijving"
+ (mode != "list"
? " || ' (' || ins_srtkenmerk_kenmerktype || ')'"
: "")
+ " oms"
+ " , ins_srtkenmerk_kenmerktype"
+ " FROM ins_srtkenmerk"
+ " WHERE ins_srtkenmerk_verwijder IS NULL"
+ " ORDER by ins_srtkenmerk_omschrijving ASC)",
"key": "ins_srtkenmerk_key",
"desc": "oms",
"desc": "ins_srtkenmerk_omschrijving",
"extravalue": "ins_srtkenmerk_kenmerktype"
},
"showtransit": true
@@ -105,14 +101,6 @@ function model_ins_kenmerk(niveau, params)
"showtransit": true,
"infoPointer": { Url: "appl/ins/ins_srtdeel.asp?srtdeel_key=" }
},
// "attributetypehide": { //het datatype van het kenmerksoort, zal-wel gekopieerd van CNT
// "dbs": "ins_srtkenmerk.ins_srtkenmerk_kenmerktype",
// "label": L("mgt_srtkenmerk_kenmerktype"),
// "typ": "varchar",
// "hidden_fld": true,
// "LOV": buildKenmerktypeLOV(),
// "showtransit": true
// },
"level": {
"dbs": "ins_kenmerk_niveau",
"label": L("mgt_kenmerk_niveau"),
@@ -166,16 +154,13 @@ function model_ins_kenmerk(niveau, params)
"dbs": "ins_kenmerk_volgnummer",
"label": L("ins_kenmerk_volgnummer"),
"typ": "number",
"len": 3,
"required": true
},
"required": {
"dbs": "ins_kenmerk_verplicht",
"label": L("ins_kenmerk_verplicht"),
"typ": "key",
"LOV": buildVerplichtingList(),
"emptyisrealvalue": true,
"emptyoption": null,
"LOV": fill_verplicht_LOV(),
"listfunction": function(oRs) {
var val = oRs.Fields("required.name").Value;
if (val === null) {
@@ -183,6 +168,7 @@ function model_ins_kenmerk(niveau, params)
}
return val;
},
"emptyoption": L("lcl_mld_niet_verplicht"),
"multiedit": true
},
"requiredstatus": {
@@ -192,19 +178,12 @@ function model_ins_kenmerk(niveau, params)
"LOV": L("ins_kenmerk_requiredstatusLOV"),
"emptyoption": null
},
"rolecode": {
"dbs": "ins_kenmerk_rolcode",
"label": L("mgt_kenmerk_rolcode"),
"typ": "number",
"LOV": buildKenmerkRoleCodeLOV({ module: (isTaakKenmerk ? "CTR" : "INS") }),
"required": true
},
"group": {
"dbs": "ins_kenmerk_groep",
"label": L("mgt_kenmerk_groep"),
"label": L("ins_kenmerk_groep"),
"typ": "key",
"required": true,
"LOV": buildGroepsverplichtingList(),
"LOV": fill_groepsverplichting_LOV(),
"defaultvalue": "0",
"multiedit": true
},
@@ -222,20 +201,17 @@ function model_ins_kenmerk(niveau, params)
{
"name": "",
"label": "",
"showasgroup": false,
"typ": "check",
"mask": 3,
"radios": [
{
"name": "listobj",
//"label": L("mgt_kenmerk_systeem_overview_obj") + " " + L("mgt_kenmerk_systeem_overview"),
"label": L("mgt_kenmerk_systeem_overview"),
"name": "inplan",
"label": L("mgt_kenmerk_systeem_overview_obj"),
"mask": 1,
"defaultvalue": 0
},
{
"name": "listmjob",
//"label": L("mgt_kenmerk_systeem_overview_mjob") + " " + L("mgt_kenmerk_systeem_overview"),
"name": "start",
"label": L("mgt_kenmerk_systeem_overview_mjob"),
"mask": 2,
"defaultvalue": 0
@@ -260,6 +236,11 @@ function model_ins_kenmerk(niveau, params)
"emptyoption": null,
"multiedit": true
},
"location": {
"dbs": "ins_kenmerk_locatiekolom",
"label": L("ins_kenmerk_locatiekolom"),
"typ": "varchar"
},
"propertydefault": {
"dbs": "ins_kenmerk_default",
"label": L("mgt_kenmerk_default"),
@@ -284,9 +265,9 @@ function model_ins_kenmerk(niveau, params)
},
"code": {
"dbs": "ins_kenmerk_code",
"label": L("mgt_kenmerk_code"),
"label": L("lcl_ins_code"),
"typ": "varchar",
"readonly": !user.has("WEB_PRSSYS")
"readonly": !user.has("WEB_FACTAB")
},
"authorization": {
"dbs": "fac_functie_key",
@@ -343,22 +324,6 @@ function model_ins_kenmerk(niveau, params)
, "ins_kenmerk.ins_kenmerk_verwijder IS NULL"
]
};
this.fields.inlist.bits = [
{
"name": "",
"label": "",
"typ": "check",
"mask": 1,
"radios": [
{
"name": "listctr",
"label": L("mgt_kenmerk_systeem_overview_ctr"),
"mask": 1,
"defaultvalue": 0
}
]
}
]
}
else
{ //kenmerk_niveau: D | G | S
@@ -373,7 +338,25 @@ function model_ins_kenmerk(niveau, params)
]
};
}
function fill_verplicht_LOV()
{ // Listbox verplicht vullen. Bij het veld is de emptyoption gezet.
// Hierdoor is er altijd een waarde geselecteerd.
return "1;" + L("lcl_mld_altijd_verplicht")
+ ";2;" + L("lcl_mld_groepsverplichting");
}
function fill_groepsverplichting_LOV()
{ // Listbox groepsverplichting vullen.
var groep_array = ["0", "<"+L("lcl_none")+">"];
for (i=1; i<=9; i++)
{
groep_array.push(i)
groep_array.push(L("ins_kenmerk_groep")+" "+i);
}
return groep_array.join(";");
}
this.REST_GET = generic_REST_GET(this, gparams);
this.REST_POST = generic_REST_POST(this);
this.REST_PUT = generic_REST_PUT(this);

View File

@@ -97,8 +97,8 @@ function model_ins_srtkenmerk(params)
"code": {
"dbs": "ins_srtkenmerk_code",
"typ": "varchar",
"label": L("mgt_srtkenmerk_code"),
"readonly": !user.has("WEB_PRSSYS")
"label": L("lcl_ins_code"),
"readonly": !user.has("WEB_FACTAB")
}
};

View File

@@ -79,7 +79,8 @@ function model_ins_tab_discipline(disc_key, params)
"dbs": "prs_kostensoort_key",
"label": L("prs_kostensoort_key"),
"typ": "key",
"foreign": "prs_kostensoort"
"foreign": "prs_kostensoort",
"LOVinit": ""
},
"costcentremandatory": {
"dbs": "ins_discipline_kpnverplicht",

View File

@@ -15,105 +15,77 @@
%>
<!-- #include file="../Shared/discxalg3d.inc"-->
<!-- #include file="../fin/fin.inc" -->
<!-- #include file="./model_custom_fields.inc"-->
<!-- #include file="./model_fac_tracking.inc"-->
<!-- #include file="./model_fin_kenmerk.inc"-->
<%
function model_invoicelines()
model_invoicelines =
{
this.module = "FIN";
this.table = "fin_factuurregel";
this.primary = "fin_factuurregel_key";
this.records_name = "invoicelines";
this.record_name = "invoiceline";
this.fields = { "id" : { dbs: "fin_factuurregel_key", typ: "key" },
"name" : { dbs: "fin_factuurregel_omschrijving", typ: "varchar", track: true, label: L("lcl_descr"), filter: "like" },
"line" : { dbs: "fin_factuurregel_nr", typ: "number" },
"total" : { dbs: "fin_factuurregel_totaal", typ: "float", iscurrency: true, track: true, label: L("lcl_fin_total_sum_exBTW") },
"vat" : { dbs: "fin_factuurregel_btw", typ: "float", iscurrency: true, track: true, label: L("lcl_fin_total_sum_inBTW") },
"reference" : { dbs: "fin_factuurregel_referentie", typ: "varchar", track: true, label: L("lcl_fin_referencecode"), filter: "like" },
"vatvalue" : { dbs: "fin_btwtabelwaarde_key", typ: "key", foreign: "fin_btwtabelwaarde", track: true, label: L("lcl_fin_btwtarief")},
"costtype" : { dbs: "prs_kostensoort_key", typ: "key", foreign: "prs_kostensoort", track: true, label: L("lcl_shared_charge_type") },
"invoice" : { dbs: "fin_factuur_key", typ: "key", foreign: "fin_factuur", insertonly: true },
"code" : { dbs: "fin_factuurregel_code", typ: "varchar", track: true, label: L("lcl_fin_article_code") },
"amount" : { dbs: "fin_factuurregel_aantal", typ: "float", track: true, label: L("lcl_fin_amount") },
"unit" : { dbs: "fin_factuurregel_eenheid", typ: "varchar", track: true, label: L("lcl_fin_unit") },
"orderlineid" : { dbs: "fin_factuurregel_id", typ: "number", track: true, label: L("lcl_fin_orderline_id") }
};
module: "FIN",
table: "fin_factuurregel",
primary: "fin_factuurregel_key",
records_name: "invoicelines",
record_name: "invoiceline",
fields: { "id" : { dbs: "fin_factuurregel_key", typ: "key" },
"name" : { dbs: "fin_factuurregel_omschrijving", typ: "varchar", track: true, label: L("lcl_descr"), filter: "like" },
"line" : { dbs: "fin_factuurregel_nr", typ: "number" },
"total" : { dbs: "fin_factuurregel_totaal", typ: "float", "iscurrency": true, track: true, label: L("lcl_fin_total_sum_exBTW") },
"vat" : { dbs: "fin_factuurregel_btw", typ: "float", "iscurrency": true, track: true, label: L("lcl_fin_total_sum_inBTW") },
"reference": { dbs: "fin_factuurregel_referentie", typ: "varchar", track: true, label: L("lcl_fin_referencecode"), filter: "like" },
"vatvalue" : { dbs: "fin_btwtabelwaarde_key", typ: "key", foreign: "fin_btwtabelwaarde", track: true, label: L("lcl_fin_btwtarief")},
"costtype" : { dbs: "prs_kostensoort_key", typ: "key", foreign: "prs_kostensoort", track: true, label: L("lcl_shared_charge_type") },
"fin_factuur_key": { dbs: "fin_factuur_key", typ: "key" }
},
this.includes = {
"custom_fields" : {
model: new model_custom_fields(this, new model_fin_kenmerk("R", { internal: true }), { pNiveau: "R", readman: true, readuse: true }),
joinfield: "flexparentkey",
enable_update: true
},
"tracking": {
model: new model_tracking(["factuur"]),
joinfield: "trackingrefkey"
}
};
function _pre_analyze_fields(params, jsondata) /* analyseer inkomende jsondata, common voor PUT en POST */
_pre_analyze_fields: function (params, jsondata) /* analyseer inkomende jsondata, common voor PUT en POST */
{
delete jsondata.line; // factuurregelnummer niet door de gebruiker laten zetten.
};
},
function _analyze_fields(dbfields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
_analyze_fields: function (dbfields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
{
};
},
function _validate_fields(dbfields, params, jsondata) /* valideer dbfields, alle constraints die niet door de database worden afgevangen */
_validate_fields: function (dbfields, params, jsondata) /* valideer dbfields, alle constraints die niet door de database worden afgevangen */
{
//__Log(jsondata);
//var factuurregel_key = parseInt(jsondata.id);
};
},
function _synchronize_totals_sql(factuur_key)
_synchronize_totals_sql: function (factuur_key)
{
// Redundante info bijwerken. Door dat hier te doen hebben we redelijk consistentie-garantie.
var sql = " UPDATE fin_factuur ff"
+ " SET fin_factuur_totaal = (SELECT SUM(fin_factuurregel_totaal)"
+ " FROM fin_factuurregel fr"
+ " WHERE fr.fin_factuur_key = ff.fin_factuur_key)"
+ " FROM fin_factuurregel fr"
+ " WHERE fr.fin_factuur_key = ff.fin_factuur_key)"
+ " , fin_factuur_totaal_btw = (SELECT SUM(fin_factuurregel_btw)"
+ " FROM fin_factuurregel fr"
+ " WHERE fr.fin_factuur_key = ff.fin_factuur_key)"
+ " FROM fin_factuurregel fr"
+ " WHERE fr.fin_factuur_key = ff.fin_factuur_key)"
+ " WHERE fin_factuur_key = " + factuur_key;
return sql;
};
},
function _renumber_invoicelines_sql(factuur_key)
_renumber_invoicelines_sql: function (factuur_key)
{
// Regels hernummeren zodat ze weer opeenvolgend zijn.
var sql = "UPDATE fin_factuurregel"
+ " SET fin_factuurregel_nr = ROWNUM"
+ " WHERE fin_factuur_key = " + factuur_key;
return sql;
};
},
this.REST_GET = function _GET(params)
REST_GET: function _GET(params)
{
var scope = params.filter.scope;
if (scope)
{
var autfunction = { fe: "WEB_EXTFIN", fo: "WEB_FINFOF", bo: "WEB_FINBOF" } [scope];
}
else
{
var autfunction = ["WEB_EXTFIN", "WEB_FINFOF", "WEB_FINBOF"];
var authparamsFINFOF = user.checkAutorisation("WEB_FINFOF", true);
var authparamsFINBOF = user.checkAutorisation("WEB_FINBOF", true);
}
var scope = params.filter.scope || "fe";
var autfunction = { fe: "WEB_EXTFIN", fo: "WEB_FINFOF", bo: "WEB_FINBOF" } [scope];
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
var query = api2.sqlfields(params, this);
var query = api2.sqlfields(params, model_invoicelines );
var parentexists = ["f.fin_factuur_verwijder IS NULL"];
if (scope == "fe" || (!scope && !authparamsFINFOF && !authparamsFINBOF))
{ // Frontend.
parentexists.push("f.prs_perslid_key_user=" + user_key);
if (scope == "fe")
{
parentexists.push("f.prs_perslid_key_user=" + user_key);
}
else
{
@@ -129,25 +101,25 @@ function model_invoicelines()
query.wheres.push(sqlparent);
}
var wheres = api2.sqlfilter(params, this);
var wheres = api2.sqlfilter(params, model_invoicelines);
query.wheres = query.wheres.concat(wheres);
var sql = "SELECT " + query.selects.join(", ")
+ " FROM " + query.tables.join(", ")
+ " WHERE " + query.wheres.join(" AND " )
+ " ORDER BY fin_factuurregel_nr";
var json = api2.sql2json (params, sql, this);
var json = api2.sql2json (params, sql, model_invoicelines );
return json;
};
},
this.REST_PUT = function (params, jsondata, the_key) /* update invoiceline */
REST_PUT: function (params, jsondata, the_key) /* update invoiceline */
{
var finregel_key = the_key;
_pre_analyze_fields(params, jsondata);
var dbfields = api2.update_fields(params, this, jsondata); // Build updater
_analyze_fields(dbfields, params, jsondata);
_validate_fields(dbfields, params, jsondata);
model_invoicelines._pre_analyze_fields(params, jsondata);
var dbfields = api2.update_fields(params, model_invoicelines, jsondata); // Build updater
model_invoicelines._analyze_fields(dbfields, params, jsondata);
model_invoicelines._validate_fields(dbfields, params, jsondata);
//
var sql = "SELECT fin_factuur_key"
+ " FROM fin_factuurregel"
@@ -156,7 +128,6 @@ function model_invoicelines()
var fin_factuur_key = oRs("fin_factuur_key").value;
oRs.Close();
var fin_factuur_old = fin.factuur_info(fin_factuur_key);
var this_fin = fin.func_enabled_factuur(fin_factuur_key);
user.auth_required_or_abort(this_fin.canChange); // Geen wijzigingen toestaan bij onvoldoende rechten.
@@ -165,44 +136,21 @@ function model_invoicelines()
var sql = "BEGIN "
+ finUpd.sql + ";"
+ _synchronize_totals_sql(fin_factuur_key) + ";"
+ model_invoicelines._synchronize_totals_sql(fin_factuur_key) + ";"
+ "END;";
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
var finUpdTrackarray = []; // Alle tracking van elke afzondelijke regel verzamelen.
if (finUpd.trackarray.length > 0)
{
if (jsondata.name != "")
finUpdTrackarray = finUpdTrackarray.concat([jsondata.name + ": "]); // Omschrijving van de regel noteren zodat ik weet welke regel is aangepast.
finUpdTrackarray = finUpdTrackarray.concat(finUpd.trackarray);
}
var fin_factuur_new = fin.factuur_info(fin_factuur_key);
if (fin_factuur_old.fin_totaal != fin_factuur_new.fin_totaal)
finUpdTrackarray.push(L("lcl_fin_total_sum_inBTW") + ": " + safe.curr(fin_factuur_old.fin_totaal + fin_factuur_old.fin_totaal_btw) + " => " + safe.curr(fin_factuur_new.fin_totaal + fin_factuur_new.fin_totaal_btw))
if (fin_factuur_old.fin_totaal_btw != fin_factuur_new.fin_totaal_btw)
finUpdTrackarray.push(L("lcl_fin_BTW_total_sum") + ": " + safe.curr(fin_factuur_old.fin_totaal_btw) + " => " + safe.curr(fin_factuur_new.fin_totaal_btw))
var fintrack = api2.process_includes(params, this, jsondata, the_key);
// update nog tracken
if (fin_factuur_key > 0)
{
fin.trackfactuurupdate(fin_factuur_key, L("lcl_fin_is_finupdtrack").format(fin_factuur_key) + ((finUpdTrackarray.length + fintrack.length) > 0? "\n" : "") + finUpdTrackarray.concat(fintrack).join("\n"));
};
return { key: finregel_key };
};
},
this.REST_POST = function (params, jsondata) /* new invoiceline */
REST_POST: function (params, jsondata, parent_key) /* new invoiceline */
{
params.isNew = true;
var trackarray = [];
var factuur_key = (typeof jsondata.invoice == "object" ? jsondata.invoice.id : jsondata.invoice);
var factuur_key = (parent_key && parent_key > -1 ? parent_key : jsondata.invoice);
var this_fin = fin.func_enabled_factuur(factuur_key); // Wat heb ik zoal aan rechten op deze specifieke factuur
var auth = ( (params.filter && params.filter.api2 && params.filter.api2 == "invoices"
&& params.include && inArray("invoicelines",params.include)
@@ -212,10 +160,10 @@ function model_invoicelines()
);
user.auth_required_or_abort(auth);
_pre_analyze_fields(params, jsondata);
var dbfields = api2.update_fields(params, this, jsondata); // Build updater
_analyze_fields(dbfields, params, jsondata);
_validate_fields(dbfields, params, jsondata);
model_invoicelines._pre_analyze_fields(params, jsondata);
var dbfields = api2.update_fields(params, model_invoicelines, jsondata); // Build updater
model_invoicelines._analyze_fields(dbfields, params, jsondata);
model_invoicelines._validate_fields(dbfields, params, jsondata);
// Zet volgnummer van de nieuwe factuurregel.
var sql = "SELECT COALESCE(MAX(fin_factuurregel_nr),0) volgnr"
@@ -237,22 +185,20 @@ function model_invoicelines()
var sql = "BEGIN "
+ finIns.sql + ";"
+ _synchronize_totals_sql(factuur_key) + ";"
+ model_invoicelines._synchronize_totals_sql(factuur_key) + ";"
+ "END;";
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
var fintrack = api2.process_includes(params, this, jsondata, factuurregel_key);
// Tracking toevoegen.
trackarray.push(L("lcl_fin_invoicerow_add") + ": " + safe.quoted_sql(jsondata.name) + "/" + jsondata.total);
shared.trackaction("FINNEW", factuur_key, trackarray.join("\n"));
//
return { key: factuurregel_key };
};
},
this.REST_DELETE = function (params, the_key) /* delete invoiceline */
REST_DELETE: function (params, the_key) /* delete invoiceline */
{
var trackarray = [];
var factuurregel_key = the_key;
@@ -275,8 +221,8 @@ function model_invoicelines()
fin.deleteFactuurregel(factuurregel_key);
var sql = "BEGIN "
+ _synchronize_totals_sql(factuur_key) + ";"
+ _renumber_invoicelines_sql(factuur_key) + ";"
+ model_invoicelines._synchronize_totals_sql(factuur_key) + ";"
+ model_invoicelines._renumber_invoicelines_sql(factuur_key) + ";"
+ "END;"
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
@@ -286,6 +232,6 @@ function model_invoicelines()
trackarray.push(L("lcl_fin_regel_del") + ": " + safe.quoted_sql(desc) + "/" + total);
//shared.trackaction("FINDEL", factuur_key, trackarray.join("\n")); // srtnotificatie FINDEL bestaat (nog) niet
}
};
}
}
%>

View File

@@ -36,50 +36,42 @@ function model_invoices(fin_key, params)
this.primary = "fin_factuur_key";
this.records_name = "invoices";
this.record_name = "invoice";
this.soft_delete = "fin_factuur_verwijder";
// Het interne factuurnr is de id, het externe nummer is name
this.fields =
{"id" : { dbs: "fin_factuur_key", typ: "key" },
"invoicedate" : { dbs: "fin_factuur_datum", typ: "datetime", track: true, label: L("lcl_fin_findate"), filter: "range" },
/*readonly*/ "creditor" : { dbs: "prs_bedrijf_key", typ: "key", foreign: "prs_bedrijf", track: true, label: L("lcl_ord_company_uit"),
{"id" : { dbs: "fin_factuur_key", typ: "key" },
"invoicedate" : { dbs: "fin_factuur_datum", typ: "datetime", track: true, label: L("lcl_fin_findate"), filter: "range" },
/*readonly*/ "creditor" : { dbs: "prs_bedrijf_key", typ: "key", foreign: "prs_bedrijf", track: true, label: L("lcl_ord_company_uit"),
sql: "COALESCE(mld_opdr.mld_uitvoerende_keys, bes_bestelopdr.prs_bedrijf_key, cnt_contract.cnt_prs_bedrijf_key)" },
/*readonly*/ "referencetype" : { dbs: "dummy", typ: "varchar",
/*readonly*/ "referencetype" : { dbs: "dummy", typ: "varchar",
sql: "DECODE(fin_factuur.mld_opdr_key, NULL, DECODE(fin_factuur.bes_bestelopdr_key, NULL, DECODE(fin_factuur.cnt_contract_key, NULL, '?', 'C'), 'B'), 'O')" },
/*readonly*/ "accountholder" : { dbs: "prs_perslid_key", typ: "key", foreign: "prs_perslid", track: true, label: L("lcl_prs_budgethouder"),
/*readonly*/ "accountholder" : { dbs: "prs_perslid_key", typ: "key", foreign: "prs_perslid", track: true, label: L("lcl_prs_budgethouder"),
sql: "fin.getfiatteur(fin_factuur.fin_factuur_key)" },
"name" : { dbs: "fin_factuur_nr", typ: "varchar", track: true, label: L("lcl_fin_invoice_nr_extern") },
"order" : { dbs: "mld_opdr_key", typ: "key", foreign: "mld_opdr"},
"contract" : { dbs: "cnt_contract_key", typ: "key", foreign: "cnt_contract"},
"purchaseorder" : { dbs: "bes_bestelopdr_key", typ: "key", foreign: "bes_bestelopdr"},
"total" : { dbs: "fin_factuur_totaal", typ: "float", iscurrency: true, track: true, label: L("lcl_fin_totaal_bedrag") },
"vat" : { dbs: "fin_factuur_totaal_btw", typ: "float", iscurrency: true, track: true, label: L("lcl_fin_totaal_bedrag_btw") },
"blockedaccount" : { dbs: "fin_factuur_gbedrag", typ: "float", iscurrency: true, track: true, label: L("lcl_fin_gbedrag") },
"status" : { dbs: "fin_factuur_statuses_key", typ: "key", foreign: fin.getfinstatustext, track: true, label: L("lcl_fin_fin_status")},
"accountingperiod": { dbs: "fin_factuur_boekmaand", typ: "varchar", track: true, label: L("lcl_fin_divide_period"), multiedit: true },
"debiteur_nr" : { dbs: "fin_factuur_debiteur_nr", typ: "varchar", track: true, label: L("lcl_fin_debtor_nr"), filter: "like", multiedit: true },
"costtype" : { dbs: "prs_kostensoort_key", typ: "key", foreign: "prs_kostensoort", track: true, label: L("lcl_shared_charge_type"), multiedit: true },
"contact" : { dbs: "prs_perslid_key_user", typ: "key", foreign: "prs_perslid", track: true, label: L("lcl_mld_name"), multiedit: true },
"validater" : { dbs: "prs_perslid_key_goedkeur", typ: "number", foreign: "prs_perslid", track: true, label: L("lcl_fin_goedkeurder") },
"source" : { dbs: "fin_factuur_bron", typ: "number", track: true, label: L("lcl_fin_invoice_source") },
"advice" : { dbs: "fin_factuur_advies", typ: "date", track: true, label: L("lcl_fin_adviesdatum") },
"flag" : { dbs: "fin_factuur_flag", typ: "number", track: true, label: L("lcl_fin_flags") },
"contractplace" : { dbs: "cnt_contract_plaats_key", typ: "number", track: true, label: L("lcl_fin_location_scope") },
"remark" : { dbs: "fin_factuur_opmerking", typ: "varchar", track: true, label: L("lcl_fin_remark"), filter: "like" },
"remarkreject" : { dbs: "fin_factuur_opmerking_afw", typ: "varchar", track: true, label: L("lcl_fin_remark_reject"), filter: "like" },
"externnr" : { dbs: "fin_factuur_externnr", typ: "varchar", label: L("extern_nr"), readonly: !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) },
"externsyncdate" : { dbs: "fin_factuur_externsyncdate", typ: "datetime", label: L("extern_syncdate"), readonly: !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) },
"contractplace" : { dbs: "bes_bestellevr_key", typ: "number", track: true, label: L("lcl_bes_bestellevr_pakbon") }
"name" : { dbs: "fin_factuur_nr", typ: "varchar", track: true, label: L("lcl_fin_invoice_nr_extern") },
"order" : { dbs: "mld_opdr_key", typ: "key", foreign: "mld_opdr"},
"contract" : { dbs: "cnt_contract_key", typ: "key", foreign: "cnt_contract"},
"purchaseorder" : { dbs: "bes_bestelopdr_key", typ: "key", foreign: "bes_bestelopdr"},
"total" : { dbs: "fin_factuur_totaal", typ: "float", "iscurrency": true, track: true, label: L("lcl_fin_totaal_bedrag") },
"vat" : { dbs: "fin_factuur_totaal_btw", typ: "float", "iscurrency": true, track: true, label: L("lcl_fin_totaal_bedrag_btw") },
"finstatus" : { dbs: "fin_factuur_statuses_key", typ: "key", foreign: fin.getfinstatustext, track: true, label: L("lcl_fin_fin_status")},
"accountingperiod": { dbs: "fin_factuur_boekmaand", multiedit: true, typ: "varchar", track: true, label: L("lcl_fin_divide_period") },
"debiteur_nr" : { dbs: "fin_factuur_debiteur_nr", multiedit: true, typ: "varchar", track: true, label: L("lcl_fin_debtor_nr"), filter: "like" },
"costtype" : { dbs: "prs_kostensoort_key", multiedit: true, typ: "key", foreign: "prs_kostensoort", track: true, label: L("lcl_shared_charge_type") },
"contact" : { dbs: "prs_perslid_key_user", multiedit: true, typ: "key", foreign: "prs_perslid", track: true, label: L("lcl_mld_name") },
"validater" : { dbs: "prs_perslid_key_goedkeur", typ: "key", foreign: "prs_perslid", track: true, label: L("lcl_fin_goedkeurder") },
"remark" : { dbs: "fin_factuur_opmerking", typ: "varchar", track: true, label: L("lcl_fin_remark"), filter: "like" },
"externnr" : { dbs: "fin_factuur_externnr", typ: "varchar", label: L("extern_nr"), readonly: !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) },
"externsyncdate" : { dbs: "fin_factuur_externsyncdate", typ: "datetime", label: L("extern_syncdate"), readonly: !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) }
};
this.includes = {
"invoicelines": {
model: new model_invoicelines(),
joinfield: "invoice",
model: model_invoicelines,
joinfield: "fin_factuur_key",
enable_update: true
},
"custom_fields" : {
model: new model_custom_fields(this, new model_fin_kenmerk("F", { internal: true }), { pNiveau: "F", readman: true, readuse: true }),
model: new model_custom_fields(this, new model_fin_kenmerk({ internal: true }), { readman: true, readuse: true }),
joinfield: "flexparentkey",
enable_update: true
},
@@ -89,28 +81,23 @@ function model_invoices(fin_key, params)
}
};
function _pre_analyze_fields(params, jsondata) /* analyseer inkomende jsondata, common voor PUT en POST */
function _pre_analyze_fields (params, jsondata) /* analyseer inkomende jsondata, common voor PUT en POST */
{
// De factuurbedragen worden berekend uit de factuurregels. Eventuele waarden die hier gezet zijn negeren.
if (params.method != "POST")
{
delete jsondata.total;
delete jsondata.vat;
}
jsondata.total = 0;
jsondata.vat = 0;
if (jsondata.status)
{ // Er is een status meegegeven.
jsondata.status = typeof jsondata.status == "object"? jsondata.status.id : jsondata.status;
}
// Status van 3 (foute import) moet bij saven op 2 worden gezet.
var fin_status_key = jsondata.status;
if (fin_status_key == 3) fin_status_key = 2;
// Status 6 (Akkoord) moet bij saven op 2 (Ingevoerd) worden gezet. Factuur dient indien nodig weer gefiatteerd te worden.
if (jsondata.status == 3 || jsondata.status == 6)
{
jsondata.status = 2;
}
if (fin_status_key == 6) fin_status_key = 2;
jsondata.status = fin_status_key;
};
function _analyze_fields(dbfields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
function _analyze_fields (dbfields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
{
if (jsondata.purchaseorder_name && !dbfields.purchaseorder)
{
@@ -132,7 +119,7 @@ function model_invoices(fin_key, params)
}
};
function _validate_fields(dbfields, params, jsondata) /* valideer fields, alle constraints die niet door de database worden afgevangen */
function _validate_fields (dbfields, params, jsondata) /* valideer fields, alle constraints die niet door de database worden afgevangen */
{
};
@@ -179,138 +166,26 @@ function model_invoices(fin_key, params)
{
var fin_key = the_key;
var this_fin = fin.func_enabled_factuur(fin_key);
user.auth_required_or_abort(this_fin.canChange); // Geen wijzigingen toestaan bij onvoldoende rechten.
//
_pre_analyze_fields(params, jsondata);
var dbfields = api2.update_fields(params, this, jsondata); // Build updater
_analyze_fields(dbfields, params, jsondata);
_validate_fields(dbfields, params, jsondata);
//
var wheres = [" fin_factuur_key = " + fin_key];
var finUpd = buildTrackingUpdate("fin_factuur", wheres.join(" AND " ), dbfields, { noValidateToken: true });
var err = Oracle.Execute(finUpd.sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
//if ("filter" in params && "mode" in params.filter)
// this_fin.canFlexChange = this_fin.canReadAny && params.filter.mode == "attachment"; // Deze mag altijd
// Geen wijzigingen toestaan bij onvoldoende rechten.
user.auth_required_or_abort(this_fin.canChange ||
(this_fin.canReject && jsondata.status == 1) || // Afwijzen.
((this_fin.canUnReject || this_fin.canUnapprove) && jsondata.status == 2) || // On-Afwijzen, On-Fiatteren of On-Goedkeuren.
(this_fin.canAccept && jsondata.status == 5) || // Fiatteren.
(this_fin.canGoedkeur && jsondata.status == 6)) // Goedkeuren.
var fintrack = api2.process_includes(params, this, jsondata, the_key);
if (jsondata.status == 1 && this_mld.canReject)
{ // Afwijzen.
var fields = [ { dbs: "fin_factuur_opmerking_afw", typ: "varchar", val: jsondata.remark, track: L("lcl_fin_remark_reject"), len: 4000} ];
var finUpd = buildTrackingUpdate("fin_factuur", "fin_factuur_key = " + fin_key, fields);
oRs = Oracle.Execute(finUpd.sql);
if (finUpd.trackarray.length)
{
fin.trackfactuurupdate(fin_key, L("lcl_fin_is_finupdtrack").format(fin_key) + "\n" + finUpd.trackarray.join("\n"));
}
// Status naar Afgewezen(1).
var sql = "UPDATE fin_factuur"
+ " SET fin_factuur_statuses_key = 1"
+ " WHERE fin_factuur_key = " + fin_key
+ " AND (mld_opdr_key IS NOT NULL OR cnt_contract_key IS NOT NULL OR bes_bestelopdr_key IS NOT NULL)";
Oracle.Execute(sql);
shared.trackaction(this_fin.canAccept? "FINFNO" : "FINGNO", fin_key);
var pResult = new HookResult();
// Klantspecifieke check functie (hookfunction) voor de invoer.
if (!custfunc.fin_postsave(fin_key, pResult))
{
abort_with_warning(pResult.errmsg);
}
}
else if (jsondata.status == 2 && (this_fin.canUnReject || this_fin.canUnapprove))
{ // On-Afwijzen, On-Fiatteren of On-Goedkeuren.
// Huidige status opvragen.
sql = "SELECT fin_factuur_statuses_key"
+ " FROM fin_factuur"
+ " WHERE fin_factuur_key = " + fin_key;
oRs = Oracle.Execute(sql);
var fin_status_old = oRs("fin_factuur_statuses_key").Value;
oRs.Close();
var fields = [ { dbs: "fin_factuur_opmerking_afw", typ: "varchar", val: jsondata.remark, track: L("lcl_fin_remark_reject"), len: 4000} ];
var finUpd = buildTrackingUpdate("fin_factuur", "fin_factuur_key = " + fin_key, fields);
oRs = Oracle.Execute(finUpd.sql);
if (finUpd.trackarray.length)
{
fin.trackfactuurupdate(fin_key, L("lcl_fin_is_finupdtrack").format(fin_key) + "\n" + finUpd.trackarray.join("\n"));
}
// Status terugzetten naar Ingevoerd(2).
sql = "UPDATE fin_factuur"
+ " SET fin_factuur_statuses_key = 2"
+ " WHERE fin_factuur_key = " + fin_key
+ " AND (mld_opdr_key IS NOT NULL OR cnt_contract_key IS NOT NULL OR bes_bestelopdr_key IS NOT NULL)";
Oracle.Execute(sql);
shared.trackaction((fin_status_old == 5? "FINGUN" : "FINFUN"), fin_key); // Vanuit status Afgewezen(1) en Akkoord(6) FINFUN en vanuit status Ter Goedkeuring(5) FINGUN.
}
else if (jsondata.status == 5 && this_fin.canAccept)
{ // Fiatteren.
var fin_enable_goedkeuren = S("fin_enable_goedkeuren");
var fin_status_new = fin_enable_goedkeuren != 0
? "CASE WHEN prs_perslid_key_goedkeur IS NOT NULL THEN 5 ELSE 6 END"
: "6";
sql = "UPDATE fin_factuur"
+ " SET fin_factuur_statuses_key = " + fin_status_new
+ " WHERE fin_factuur_key = " + fin_key
+ " AND (mld_opdr_key IS NOT NULL OR cnt_contract_key IS NOT NULL OR bes_bestelopdr_key IS NOT NULL)";
Oracle.Execute(sql);
shared.trackaction("FINFOK", fin_key);
var sql = "SELECT prs_perslid_key_goedkeur"
+ " FROM fin_factuur f"
+ " WHERE fin_factuur_key = " + fin_key;
oRs = Oracle.Execute(sql);
if (fin_enable_goedkeuren != 0 && oRs("prs_perslid_key_goedkeur").Value > 0)
{ // Factuur is naar status Ter goedkeuring(5) gegaan.
// Notificatie aan de goedkeurder.
fin.sendNeedApprovalNotification(fin_key, oRs("prs_perslid_key_goedkeur").Value);
}
//else // Factuur is naar status Akkoord(6) gegaan.
oRs.Close();
}
else if (jsondata.status == 6 && this_fin.canGoedkeur)
{ // Fiatteren.
var sql = "UPDATE fin_factuur"
+ " SET fin_factuur_statuses_key = 6"
+ " WHERE fin_factuur_key = " + fin_key
+ " AND (mld_opdr_key IS NOT NULL OR cnt_contract_key IS NOT NULL OR bes_bestelopdr_key IS NOT NULL)";
Oracle.Execute(sql);
shared.trackaction("FINGOE", fin_key);
var pResult = new HookResult();
// Klantspecifieke check functie (hookfunction) voor de invoer
if (!custfunc.fin_postsave(fin_key, pResult))
{
abort_with_warning(pResult.errmsg);
}
}
else
// update nog tracken
if (fin_key > 0)
{
var dbfields = api2.update_fields(params, this, jsondata); // Build updater
_analyze_fields(dbfields, params, jsondata);
_validate_fields(dbfields, params, jsondata);
var wheres = [" fin_factuur_key = " + fin_key];
var finUpd = buildTrackingUpdate("fin_factuur", wheres.join(" AND " ), dbfields, { noValidateToken: true });
var err = Oracle.Execute(finUpd.sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
var fintrack = api2.process_includes(params, this, jsondata, the_key);
// update nog tracken
if (fin_key > 0)
{
fin.trackfactuurupdate(fin_key, L("lcl_fin_is_finupdtrack").format(fin_key) + (finUpd.trackarray.length > 0? "\n" : "") + finUpd.trackarray.join("\n"));
};
}
fin.trackfactuurupdate(fin_key, L("lcl_fin_is_finupdtrack").format(fin_key) + (finUpd.trackarray.length > 0? "\n" : "") + finUpd.trackarray.join("\n"));
};
return { key: fin_key };
};
@@ -331,7 +206,9 @@ function model_invoices(fin_key, params)
var finIns = buildInsert("fin_factuur", dbfields, { noValidateToken: true} );
var factuur_key = finIns.sequences["fin_factuur_key"];
var err = Oracle.Execute(finIns.sql, true);
var sql = finIns.sql;
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
@@ -341,7 +218,9 @@ function model_invoices(fin_key, params)
shared.trackaction("FINNEW", factuur_key);
// factuurmatching
var sql_fm = "BEGIN fin.autoapprovefactuur(" + factuur_key + "); END;";
var sql_fm = "BEGIN"
+ " fin.autoapprovefactuur(" + factuur_key + ");"
+ " END;";
Oracle.Execute(sql_fm);
return { key: factuur_key };
@@ -362,7 +241,7 @@ function model_invoices(fin_key, params)
+ " AND fin_factuur_key = " + factuur_key;
oRs = Oracle.Execute(sql);
}
};
}
if (fin_key > 0)
{

View File

@@ -780,19 +780,6 @@ function model_issues(mld_key, params)
if (!jsondata.treatmentteam)
jsondata.treatmentteam = stdm_info.default_ins_disc_key;
if (!jsondata.subject && stdm_info.subject == 3 && (S("ai_enabled") & 1)) { // AI generate the subject
var omschrijving = shared.stripbbcodes(jsondata.description || "");
var result = shared.promptAI(omschrijving, { "instructions": L("lcl_mld_ai_subject_instructions").format(stdm_info.mld_stdmelding_omschrijving) });
if (result.success) {
jsondata.subject = result.content;
this.fields["subject_ai"] = { dbs: "mld_melding_onderwerp_ai", typ: "varchar", val: jsondata.subject, len: 200 };
} else {
if (result.warning) {
__DoLog(result.warning, "#FF0000");
}
}
}
//
if (!jsondata.contact) jsondata.contact = user_key; // Als er geen aanvrager opgegeven is, dan de huidige gebruiker invullen.
// Als de setting niet is gezet is "Melding voor" gelijk aan contactpersoon.
@@ -837,7 +824,7 @@ function model_issues(mld_key, params)
mld.nextworkflowstep(new_key, -1); // -1 = initial (the originating call)
// Controleer of er automatisch een opdracht aangemaakt moet worden.
var sql = "BEGIN mld.mld_addautoorder(" + new_key + "); END;"; // Notificeert eventueel ook de ORDNEW naar uitvoerende
var sql = "BEGIN mld.mld_addautoorder(" + new_key + "); END;"
Oracle.Execute(sql);
return { key: new_key };

View File

@@ -1,35 +0,0 @@
<% /*
$Revision$
$Id$
File: model_issues_mini.inc
Description: Melding mini model
Parameters:
Context: Minimaal aantal velden. Puur voor 'include' bij model_mld_opdr.inc
Notes:
*/
%>
<%
function model_issues_mini(mld_key)
{
this.module = "MLD";
this.table = "mld_melding";
this.primary = "mld_melding_key";
this.records_name = "issues";
this.record_name = "issue";
this.fields =
{
"id" : { dbs: "mld_melding_key", typ: "key" },
"contact" : { dbs: "prs_perslid_key", typ: "key", foreign: "prs_perslid", label: L("lcl_mld_name") },
"location" : { dbs: "mld_alg_locatie_key", typ: "key", foreign: "alg_locatie", label: L("lcl_location") },
"building" : { dbs: "alg_v_allonroerendgoed.alg_gebouw_key", typ: "key", foreign: "alg_gebouw", label: L("lcl_building") },
"floor" : { dbs: "alg_v_allonroerendgoed.alg_verdieping_key", typ: "key", foreign: "alg_verdieping", label: L("lcl_floor") },
"room" : { dbs: "alg_v_allonroerendgoed.alg_ruimte_key", typ: "key", foreign: "alg_ruimte", label: L("lcl_room") },
"terrain" : { dbs: "alg_v_allonroerendgoed.alg_terreinsector_key", typ: "key", foreign: "alg_terreinsector", label: L("lcl_room") }
};
}
%>

View File

@@ -41,7 +41,6 @@ function model_alg_locatie()
"mjb_score" : { dbs: "alg_locatie_mjb_score1" , typ: "number" , "label": L("lcl_alg_locatie_mjb_score1")},
"coordinate_x" : { dbs: "alg_locatie_x" , typ: "number" , "label": L("lcl_geoxcoord")},
"coordinate_y" : { dbs: "alg_locatie_y" , typ: "number" , "label": L("lcl_geoycoord")},
"expires" : { dbs: "alg_locatie_vervaldatum" , typ: "date" , "label": L("lcl_alg_vervaldatum")},
"externnr" : { dbs: "alg_locatie_externnr" , typ: "varchar" , "label": L("extern_nr"), "readonly": !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) },
"externsyncdate": { dbs: "alg_locatie_externsyncdate" , typ: "datetime" , "label": L("extern_syncdate"), "readonly": !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) },
"seqnr" : { dbs: "alg_locatie_volgnr" , typ: "number" , "label": L("lcl_alg_locatie_volgnr") },
@@ -62,8 +61,6 @@ function model_alg_locatie()
switch (method)
{
case "GET":
var autfunction = ["WEB_ALGUSE","WEB_ALGMAN"];
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
if (params.filter.id)
{
var loc_key = params.filter.id;

View File

@@ -12,7 +12,6 @@
*/
%>
<!-- #include file="model_mld_disc_params.inc" -->
<!-- #include file="model_mld_discipline_discipline.inc" -->
<!-- #include file="../mgt/mgt.inc"-->
<%
function model_mld_discipline(disc_key, params)
@@ -20,6 +19,11 @@ function model_mld_discipline(disc_key, params)
// E<>n model voor de buitenwereld
api2.merge_disc_params_model(this, _model_mld_discipline);
this.hook_pre_edit = function (obj, fld, params)
{
fld.costtype.foreign = mgt.pre_edit_kostensoort(obj);
}
this.hook_post_post = function (params, obj, key)
{
var org_disc_key = getQParamInt("id", -1);
@@ -153,25 +157,6 @@ _model_mld_discipline = // Internal only
"disc_params": {
"model": model_mld_disc_params,
"joinfield": "issuediscipline"
},
"includes": {
"disciplines1": {
"model": new model_mld_discipline_discipline(),
"joinfield": "discipline1",
"label": L("mld_discipline_discipline_m"),
"enable_update": true,
"multiadd": "discipline2",
"notransport": true // te ingewikkeld
},
"disciplines2": {
"model": new model_mld_discipline_discipline(),
"joinfield": "discipline2",
"label": L("mld_discipline_discipline_m2"),
"enable_update": "true",
"multiadd": "discipline1",
"notransport": true
}
}
}
%>

View File

@@ -12,7 +12,7 @@
*/
%>
<%
function model_mld_discipline_discipline()
function model_mld_discipline_discipline(functie, params)
{
this.records_name = "issuediscdisciplines";
this.record_name = "issuediscdiscipline";
@@ -35,57 +35,74 @@ function model_mld_discipline_discipline()
"label": L("lcl_mld_vakgroep"),
"typ": "key",
"required": true,
"insertonly": true,
"foreign": {
"tbl": "(SELECT ins_discipline_key, isd.ins_srtdiscipline_omschrijving || ' - ' || ins_discipline_omschrijving AS ins_discipline_omschrijving"
+ " FROM ins_srtdiscipline isd, ins_tab_discipline td, mld_disc_params dp"
+ " WHERE isd.ins_srtdiscipline_key = td.ins_srtdiscipline_key"
+ " AND td.ins_discipline_key = dp.mld_ins_discipline_key"
+ " AND BITAND(dp.mld_disc_params_srtgroep, 5) = 5)", // 1+4 primair+kan behandelen
"tbl": "(SELECT ins_discipline_key, ins_discipline_omschrijving"
+ " FROM ins_tab_discipline td, mld_disc_params dp"
+ " WHERE td.ins_discipline_key = dp.mld_ins_discipline_key"
+ (params.disc > -1 ? " and td.ins_discipline_key = " + params.disc : "")
+ " AND BITAND(dp.mld_disc_params_srtgroep, 5) = 5)",
"key": "ins_discipline_key",
"desc": "ins_discipline_omschrijving"
},
"uniquewith": "discipline2"
}
},
"discipline2": {
"dbs": "mld_discipline_key2",
"label": L("mld_processing_group"),
"typ": "key",
"required": true,
"insertonly": true,
"foreign": {
"tbl": "(SELECT ins_discipline_key, ins_discipline_omschrijving || ' (' || ins_srtdiscipline_omschrijving || ')' AS ins_discipline_omschrijving"
+ " FROM ins_srtdiscipline isd, ins_tab_discipline td, mld_disc_params dp"
+ " WHERE isd.ins_srtdiscipline_key = td.ins_srtdiscipline_key"
+ " AND td.ins_discipline_key = dp.mld_ins_discipline_key"
"tbl": "(SELECT ins_discipline_key, ins_discipline_omschrijving"
+ " FROM ins_tab_discipline td, mld_disc_params dp"
+ " WHERE ins_discipline_key = mld_ins_discipline_key"
+ (mode == "edit" ? " AND ins_discipline_key NOT IN (select mld_discipline_key2 from mld_discipline_discipline where mld_discipline_key1 = " + params.disc + ")" : "")
+ " AND BITAND(mld_disc_params_srtgroep, 2) = 2)",
"key": "ins_discipline_key",
"desc": "ins_discipline_omschrijving",
"multiselect": true
},
"uniquewith": "discipline1"
}
}
};
this.list = {
"columns": [
"id",
"discipline1",
"discipline2"
],
"orderby": [
"discipline1",
"discipline2"
]
};
this.hook_post_post = function (params, jsondata, key)
{
var nextdata = { id:-1, discipline1:jsondata.discipline1 };
for (var i=1; i<jsondata.discipline2.length;i++)
{
nextdata.discipline2 = jsondata.discipline2[i];
var restresult = this.REST_POST(params, nextdata);
}
}
this.edit = {
modal: true
};
this.hook_pre_edit = function (obj, fld)
{
if (mode == "edit" && !add)
{
this.fields.discipline1.readonly = true;
}
else
{
%>
<script type="text/javascript">
setTimeout(function() {
var discipline1 = document.getElementById("discipline1");
if (discipline1 && discipline1.length) {
discipline1.style.display = "none";
var selected = discipline1.options[discipline1.selectedIndex];
var span = document.createElement("span");
span.setAttribute('title', 'Key: ' + selected.value);
span.setAttribute('class', 'fld');
span.innerHTML = selected.text;
discipline1.after(span);
}
}, 250);
</script>
<%
}
}
this.REST_GET = generic_REST_GET(this);
this.REST_GET = generic_REST_GET(this, { GET: { wheres: (params.disc > -1 ? [" mld_discipline_key1 = " + params.disc] : []) } });
this.REST_POST = generic_REST_POST(this);
this.REST_PUT = generic_REST_PUT(this);
//this.REST_PUT = generic_REST_PUT(this);
this.REST_DELETE = generic_REST_DELETE(this);
}
%>

View File

@@ -91,14 +91,6 @@ function model_mld_kenmerk(niveau, params)
"dbs": "mld_kenmerk_volgnummer",
"label": L("mgt_kenmerk_volgnummer"),
"typ": "number",
"len": 3,
"required": true
},
"rolecode": {
"dbs": "mld_kenmerk_rolcode",
"label": L("mgt_kenmerk_rolcode"),
"typ": "number",
"LOV": buildKenmerkRoleCodeLOV({ module: (isOpdrachtKenmerk ? "OPD" : "MLD") }),
"required": true
},
"group": {
@@ -114,7 +106,6 @@ function model_mld_kenmerk(niveau, params)
"label": L("mgt_kenmerk_verplicht"),
"typ": "key",
"LOV": buildVerplichtingList(),
"emptyisrealvalue": true,
"emptyoption": null
},
"requiredstatus": {
@@ -129,11 +120,11 @@ function model_mld_kenmerk(niveau, params)
"label": (isOpdrachtKenmerk ? L("mgt_kenmerk_toonbaar") : L("lcl_mld_kenmerk_readonly") ),
"typ": "check"
},
"code": {
"dbs": "mld_kenmerk_code",
"label": L("mgt_kenmerk_code"),
"typ": "varchar",
"readonly": !user.has("WEB_PRSSYS")
"inlist": {
"dbs": "mld_kenmerk_inlijst",
"label": L("mgt_kenmerk_systeem_overview"),
"typ": "check0",
"multiedit": true
},
"clear": {
"dbs": "mld_kenmerk_wissen",
@@ -143,7 +134,6 @@ function model_mld_kenmerk(niveau, params)
{
"name": "",
"label": "",
"showasgroup": false,
"typ": "check",
"mask": 0, // Afhankelijk van mld/opdr en setting: wordt straks gezet.
"radios": [] // Afhankelijk van mld/opdr en setting: wordt straks toegevoegd.
@@ -206,7 +196,7 @@ function model_mld_kenmerk(niveau, params)
fields_main.clear.bits[0].mask = 1;
fields_main.clear.bits[0].radios.push(
{"name": "copy_on",
"label": L("mld_kenmerk_wissen_label") + " " + L("opd_kenmerk_wissen_copy_on"),
"label": L("opd_kenmerk_wissen_copy_on"),
"mask": 1,
"defaultvalue": 1
});
@@ -216,13 +206,13 @@ function model_mld_kenmerk(niveau, params)
fields_main.clear.bits[0].mask = 3;
fields_main.clear.bits[0].radios.push(
{"name": "copy_on",
"label": L("mld_kenmerk_wissen_label") + " " + L("mld_kenmerk_wissen_copy_on"),
"label": L("mld_kenmerk_wissen_copy_on"),
"mask": 1,
"defaultvalue": 1
});
fields_main.clear.bits[0].radios.push(
{"name": "fwd_on",
"label": L("mld_kenmerk_wissen_label") + " " + L("mld_kenmerk_wissen_fwd_on"),
"label": L("mld_kenmerk_wissen_fwd_on"),
"mask": 2,
"defaultvalue": 1
});
@@ -258,6 +248,12 @@ function model_mld_kenmerk(niveau, params)
"insertonly": !is_clone,
"LOV": buildKenmerktypeLOV(null, { module: "MLD" })
},
"code": {
"dbs": "mld_kenmerk_code",
"label": L("lcl_mld_code"),
"typ": "varchar",
"readonly": !user.has("WEB_FACTAB")
},
"disciplinetype": {
"dbs": "view_mld_kenmerk.ins_srtdiscipline_key", //"mld_discipline.ins_srtdiscipline_key",
"label": L("lcl_mld_vakgroeptype"),
@@ -293,34 +289,6 @@ function model_mld_kenmerk(niveau, params)
"showtransit": true,
"insertonly": !is_clone,
"search": false
},
"inlist": {
"dbs": "mld_kenmerk_inlijst",
"label": L("lcl_mld_kenmerk_visibility"),
"typ": "key",
"bits": [
{
"name": "",
"label": "",
"typ": "check",
"mask": 3,
"radios": [
{
"name": "in_list",
"label": L("mgt_kenmerk_systeem_overview"),
"mask": 1,
"defaultvalue": 0
},
{
"name": "in_bord",
"label": L("lcl_mld_kenmerk_in_bord"),
"mask": 2,
"defaultvalue": 1
}
]
}
],
"multiedit": true
}
};
@@ -353,12 +321,6 @@ function model_mld_kenmerk(niveau, params)
"typ": "key",
"LOV": buildHltPropList(),
"emptyoption": null
},
"inlist": {
"dbs": "mld_kenmerk_inlijst",
"label": L("mgt_kenmerk_systeem_overview"),
"typ": "check0",
"multiedit": true
}
};
@@ -404,7 +366,7 @@ function model_mld_kenmerk(niveau, params)
function get_issuepropertytype_srttype(obj)
{
var issuepropertytype = getQParamInt("issuepropertytype", ( (obj.issuepropertytype && obj.issuepropertytype.id) ? obj.issuepropertytype.id : -1));
var mld_opdr_readonly = (isOpdrachtKenmerk ? L("mgt_kenmerk_toonbaar") : L("lcl_mld_kenmerk_readonly"));
var mld_opdr_readonly = (isOpdrachtKenmerk ? L("mgt_kenmerk_toonbaar") : L("lcl_mld_kenmerk_readonly") );
var result = { lbl_default: L("mgt_kenmerk_default")
, lbl_readonly: mld_opdr_readonly
};
@@ -414,11 +376,9 @@ function model_mld_kenmerk(niveau, params)
+ " FROM mld_srtkenmerk"
+ " WHERE mld_srtkenmerk_key = " + issuepropertytype;
var oRs = Oracle.Execute(sql);
if (!oRs.eof) {
result.ktype = oRs("mld_srtkenmerk_kenmerktype").Value;
result.lbl_default = (result.ktype == "l" || result.ktype == "b" ? L("mgt_kenmerk_icon") : L("mgt_kenmerk_default"));
result.lbl_readonly = (result.ktype == "l" || result.ktype == "b" ? L("mgt_kenmerk_collapsed") : mld_opdr_readonly);
}
if (!oRs.eof)
result.lbl_default = (oRs("mld_srtkenmerk_kenmerktype").Value == "l" || oRs("mld_srtkenmerk_kenmerktype").Value == "b"? L("mgt_kenmerk_icon") : L("mgt_kenmerk_default"));
result.lbl_readonly = (oRs("mld_srtkenmerk_kenmerktype").Value == "l" || oRs("mld_srtkenmerk_kenmerktype").Value == "b"? L("mgt_kenmerk_collapsed") : mld_opdr_readonly);
oRs.Close();
}
return result;
@@ -455,13 +415,6 @@ function model_mld_kenmerk(niveau, params)
var srttype = get_issuepropertytype_srttype(obj);
fld["default"].label = srttype.lbl_default;
fld["readonly"].label = srttype.lbl_readonly;
if (obj.id > 0 && !isOpdrachtKenmerk) { // Nieuwe kenmerken togglen zelf via clientside code
if (srttype.ktype && inArray(srttype.ktype, ['R', 'r', 'S'])) {
// Alles staat al goed
} else {
fld.inlist.bits[0].radios.splice(1, 1);
}
}
if (obj.attributetype && (obj.attributetype.id == "b" || obj.attributetype.id == "l"))
fld["default"].typ = "icon";
@@ -502,13 +455,6 @@ function model_mld_kenmerk(niveau, params)
var srttype = get_issuepropertytype_srttype(obj);
fld["default"].label = srttype.lbl_default;
fld["readonly"].label = srttype.lbl_readonly;
if (!isOpdrachtKenmerk) {
if (srttype.ktype && inArray(srttype.ktype, ['R', 'r', 'S'])) {
// Alles staat al goed
} else {
fld.inlist.bits[0].radios.splice(1, 1);
}
}
}
this.hook_pre_post = function (params, obj)
@@ -519,134 +465,94 @@ function model_mld_kenmerk(niveau, params)
var oRs = Oracle.Execute(sql);
var kenmerktype = oRs("mld_srtkenmerk_kenmerktype").Value;
oRs.Close();
if (kenmerktype != "b") {
if (kenmerktype != "b")
{
obj.treatmentteam = null;
}
}
//this.REST_GET = generic_REST_GET(this, gparams);
this.REST_GET = function (params)
var gparams = {"GET": {}};
if (isOpdrachtKenmerk)
{
var gparams = {"GET": {}};
if (isOpdrachtKenmerk)
{
gparams.GET = { wheres: [ "mld_kenmerk.mld_kenmerk_niveau IN ('P', 'O')" ] };
}
else
{
var sql_kenmerk = "SELECT mkm.mld_kenmerk_key"
+ " , mkm.mld_kenmerk_omschrijving"
+ " , msk.mld_srtkenmerk_key"
+ " , msk.mld_srtkenmerk_kenmerktype"
+ " , msk.mld_srtkenmerk_omschrijving"
+ " , s.mld_kenmerk_niveau"
+ " , s.ref_mld_stdmelding_key"
+ " , s.mld_stdmelding_key mld_mld_stdmelding_key"
+ " , s.mld_stdmelding_omschrijving"
+ " , s.ins_discipline_key discipline"
+ " , s.ins_srtdiscipline_key"
+ " , aantal"
+ " , aantal365"
+ " FROM mld_kenmerk mkm"
+ " , mld_srtkenmerk msk"
+ " , (SELECT 'S' mld_kenmerk_niveau"
+ " , mld_stdmelding_key ref_mld_stdmelding_key"
+ " , mld_stdmelding_key"
+ " , mld_stdmelding_omschrijving"
+ " , ins_discipline_key"
+ " , m2.ins_srtdiscipline_key"
+ " FROM mld_stdmelding md"
+ " , mld_discipline m2"
+ " WHERE md.mld_ins_discipline_key = m2.ins_discipline_key"
+ " AND mld_stdmelding_verwijder IS NULL"
+ " AND ins_discipline_verwijder IS NULL"
+ " UNION ALL"
+ " SELECT 'D' mld_kenmerk_niveau"
+ " , ins_discipline_key ref_mld_stdmelding_key"
+ " , NULL mld_stdmelding_key"
+ " , NULL mld_stdmelding_omschrijving"
+ " , ins_discipline_key ins_discipline_key"
+ " , ins_srtdiscipline_key"
+ " FROM mld_discipline m2"
+ " WHERE ins_discipline_verwijder IS NULL"
+ " UNION ALL"
+ " SELECT 'T' mld_kenmerk_niveau"
+ " , ins_srtdiscipline_key ref_mld_stdmelding_key"
+ " , NULL mld_stdmelding_key"
+ " , NULL mld_stdmelding_omschrijving"
+ " , NULL ins_discipline_key"
+ " , ins_srtdiscipline_key"
+ " FROM ins_srtdiscipline m2"
+ " UNION"
+ " SELECT 'A' mld_kenmerk_niveau"
+ " , NULL ref_mld_stdmelding_key"
+ " , NULL mld_stdmelding_key"
+ " , NULL mld_stdmelding_omschrijving"
+ " , NULL ins_discipline_key"
+ " , NULL ins_srtdiscipline_key"
+ " FROM DUAL"
+ " ) s"
+ " , (SELECT mld_kenmerk_key"
+ " , count(*) aantal"
+ " FROM mld_kenmerkmelding"
+ " GROUP BY mld_kenmerk_key"
+ " ) nn"
+ " , (SELECT mld_kenmerk_key"
+ " , count(*) aantal365"
+ " FROM mld_kenmerkmelding"
+ " WHERE mld_kenmerkmelding_aanmaak > SYSDATE - 365"
+ " GROUP BY mld_kenmerk_key"
+ " ) nn365"
+ " WHERE (mkm.mld_stdmelding_key = ref_mld_stdmelding_key OR mkm.mld_stdmelding_key IS NULL)"
+ " AND mkm.mld_kenmerk_niveau = s.mld_kenmerk_niveau"
+ " AND mkm.mld_srtkenmerk_key = msk.mld_srtkenmerk_key"
+ " AND mkm.mld_kenmerk_key = nn.mld_kenmerk_key(+)"
+ " AND mkm.mld_kenmerk_key = nn365.mld_kenmerk_key(+)";
if ("filter" in params && params.filter.level == "N" && params.filter.mld_issuetype > 0)
{ // mld_stdmelding_key is bekend en men wil ALLE kenmerken zien die hierbij horen, dus ook van de bovenliggende niveau's.
var v_srtd_key = params.filter.disciplinetype;
var v_disc_key = params.filter.discipline;
var v_stdm_key = params.filter.mld_issuetype;
if (!v_srtd_key || !v_disc_key)
{ // Via API-endpoint alleen mld_issuetype meegegeven: de overige parameters dan maar zelf ophalen.
var sql = "SELECT m.mld_stdmelding_key"
+ " , d.ins_discipline_key"
+ " , d.ins_srtdiscipline_key"
+ " FROM mld_stdmelding m"
+ " , mld_discipline d"
+ " WHERE m.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND m.mld_stdmelding_key = " + v_stdm_key;
var oRs = Oracle.Execute(sql);
if (!oRs.EOF)
{
v_stdm_key = oRs("mld_stdmelding_key").Value;
v_disc_key = oRs("ins_discipline_key").Value;
v_srtd_key = oRs("ins_srtdiscipline_key").Value;
}
oRs.Close();
}
sql_kenmerk += " AND ( (s.mld_stdmelding_key = " + v_stdm_key + ")"
+ " OR (s.ins_discipline_key = " + v_disc_key + " AND s.mld_stdmelding_key IS NULL)"
+ " OR (s.ins_srtdiscipline_key = " + v_srtd_key + " AND s.ins_discipline_key IS NULL)"
+ " OR (s.ins_srtdiscipline_key IS NULL)"
+ " )";
// Op deze key's niet meer filteren in de buitenste where-clause.
delete params.filter.disciplinetype;
delete params.filter.discipline;
delete params.filter.mld_issuetype;
delete params.filter.level;
}
gparams.GET = {
tables: [ "(" + sql_kenmerk + ") view_mld_kenmerk" ],
wheres: [ "mld_kenmerk.mld_kenmerk_key = view_mld_kenmerk.mld_kenmerk_key" ]
};
}
// Verder met de default
return generic_REST_GET(this, gparams)(params)
gparams.GET = { wheres: [ "mld_kenmerk.mld_kenmerk_niveau IN ('P', 'O')" ] };
}
else
{
var sql_kenmerk = "SELECT mkm.mld_kenmerk_key"
+ " , mkm.mld_kenmerk_omschrijving"
+ " , msk.mld_srtkenmerk_key"
+ " , msk.mld_srtkenmerk_kenmerktype"
+ " , msk.mld_srtkenmerk_omschrijving"
+ " , s.mld_kenmerk_niveau"
+ " , s.ref_mld_stdmelding_key"
+ " , s.mld_stdmelding_key mld_mld_stdmelding_key"
+ " , s.mld_stdmelding_omschrijving"
+ " , s.ins_discipline_key discipline"
+ " , s.ins_srtdiscipline_key"
+ " , aantal"
+ " , aantal365"
+ " FROM mld_kenmerk mkm"
+ " , mld_srtkenmerk msk"
+ " , (SELECT 'S' mld_kenmerk_niveau"
+ " , mld_stdmelding_key ref_mld_stdmelding_key"
+ " , mld_stdmelding_key"
+ " , mld_stdmelding_omschrijving"
+ " , ins_discipline_key"
+ " , m2.ins_srtdiscipline_key"
+ " FROM mld_stdmelding md"
+ " , mld_discipline m2"
+ " WHERE md.mld_ins_discipline_key = m2.ins_discipline_key"
+ " AND mld_stdmelding_verwijder IS NULL"
+ " AND ins_discipline_verwijder IS NULL"
+ " UNION ALL"
+ " SELECT 'D' mld_kenmerk_niveau"
+ " , ins_discipline_key ref_mld_stdmelding_key"
+ " , NULL mld_stdmelding_key"
+ " , NULL mld_stdmelding_omschrijving"
+ " , ins_discipline_key ins_discipline_key"
+ " , ins_srtdiscipline_key"
+ " FROM mld_discipline m2"
+ " WHERE ins_discipline_verwijder IS NULL"
+ " UNION ALL"
+ " SELECT 'T' mld_kenmerk_niveau"
+ " , ins_srtdiscipline_key ref_mld_stdmelding_key"
+ " , NULL mld_stdmelding_key"
+ " , NULL mld_stdmelding_omschrijving"
+ " , NULL ins_discipline_key"
+ " , ins_srtdiscipline_key"
+ " FROM ins_srtdiscipline m2"
+ " UNION"
+ " SELECT 'A' mld_kenmerk_niveau"
+ " , NULL ref_mld_stdmelding_key"
+ " , NULL mld_stdmelding_key"
+ " , NULL mld_stdmelding_omschrijving"
+ " , NULL ins_discipline_key"
+ " , NULL ins_srtdiscipline_key"
+ " FROM DUAL"
+ " ) s"
+ " , (SELECT mld_kenmerk_key"
+ " , count(*) aantal"
+ " FROM mld_kenmerkmelding"
+ " GROUP BY mld_kenmerk_key"
+ " ) nn"
+ " , (SELECT mld_kenmerk_key"
+ " , count(*) aantal365"
+ " FROM mld_kenmerkmelding"
+ " WHERE mld_kenmerkmelding_aanmaak > SYSDATE - 365"
+ " GROUP BY mld_kenmerk_key"
+ " ) nn365"
+ " WHERE (mkm.mld_stdmelding_key = ref_mld_stdmelding_key OR mkm.mld_stdmelding_key IS NULL)"
+ " AND mkm.mld_kenmerk_niveau = s.mld_kenmerk_niveau"
+ " AND mkm.mld_srtkenmerk_key = msk.mld_srtkenmerk_key"
+ " AND mkm.mld_kenmerk_key = nn.mld_kenmerk_key(+)"
+ " AND mkm.mld_kenmerk_key = nn365.mld_kenmerk_key(+)";
gparams.GET = {
tables: [ "(" + sql_kenmerk + ") view_mld_kenmerk" ],
wheres: [ "mld_kenmerk.mld_kenmerk_key = view_mld_kenmerk.mld_kenmerk_key" ]
};
}
this.REST_GET = generic_REST_GET(this, gparams);
this.REST_POST = generic_REST_POST(this);
this.REST_PUT = generic_REST_PUT(this);
this.REST_DELETE = generic_REST_DELETE(this);

View File

@@ -1,200 +0,0 @@
<% /*
$Revision$
$Id$
File: model_mld_melding_tag.inc
Description: Model voor mld_melding_tag (mijlpalen, releasekalender)
Context: Er wordt goed gelet op MLDTAG-schrijfrechten, maar leesrechten lijkt nog alles of niks. TODO denk ik.
Notes: Hoe gaan we normaal om met verwijderdatum? Wat mij betreft is weg=weg, en dat is standaard?
*/
%>
<%
function model_mld_melding_tag()
{
this.records_name = "issuetags";
this.record_name = "issuetag";
this.table = "mld_melding_tag";
this.primary = "mld_melding_tag_key";
this.autfunction = "WEB_MLDTAG";
this.soft_delete = "mld_melding_tag_verwijder";
this.record_title = L("mld_melding_tag");
this.records_title = L("mld_melding_tag_m");
var tag_key = getQParamInt("id", -1);
var auth_mode = getQParamSafe("mode", "show") === "edit" ? "write" : "read";
this.fields = {
"id": {
"dbs": "mld_melding_tag_key",
"label": "Key",
"typ": "key",
"hidden_fld": true,
"required": true,
"seq": "mld_s_mld_melding_tag_key",
"defaultvalue": null
},
"disciplinetype": {
"dbs": "ins_srtdiscipline_key",
"label": L("ins_srtdiscipline"),
"typ": "key",
"xhidden_fld": true,
"required": true,
"foreign": { // tags zijn alleen relevant als er standaardmeldingen zijn die tags gebruiken
"tbl": "(SELECT ins_srtdiscipline_key"
+ " , ins_srtdiscipline_omschrijving" // lcl
+ " FROM ins_srtdiscipline"
+ " WHERE ins_srtdiscipline_module = 'MLD'"
+ " AND ins_srtdiscipline_verwijder IS NULL"
+ " AND ins_srtdiscipline_key IN "
+ " (SELECT ins_srtdiscipline_key"
+ " FROM mld_discipline"
+ " WHERE ins_discipline_key IN "
+ " (SELECT mld_ins_discipline_key"
+ " FROM mld_stdmelding"
+ " WHERE mld_stdmelding_taggable > 0)"
+ " AND ins_discipline_key IN"
+ " (SELECT w.ins_discipline_key"
+ " FROM fac_v_webgebruiker w"
+ " WHERE w.prs_perslid_key = " + user_key
+ " AND fac_functie_key = " + F(this.autfunction)
+ " AND w.fac_gebruiker_prs_level_" + auth_mode + " < 9 AND w.fac_gebruiker_alg_level_" + auth_mode + " < 9))"
+ ")",
"key": "ins_srtdiscipline_key",
"desc": "ins_srtdiscipline_omschrijving"
}
},
"name": {
"dbs": "mld_melding_tag_naam",
"label": L("mld_melding_tag_naam"),
"typ": "varchar",
"required": true
},
"description": {
"dbs": "mld_melding_tag_oms",
"label": L("mld_melding_tag_oms"),
"typ": "varchar",
"translate": true
},
"issuegroup": {
"dbs": "mld_stdmeldinggroep_key",
"typ": "key",
"label": L("lcl_mld_meldinggroep"),
"foreign": { // alleen meldinggroepen van standaardmeldingen die tags gebruiken
"tbl": "(SELECT g.mld_stdmeldinggroep_key"
+ ", " + lcl.xsqla("g.mld_stdmeldinggroep_naam", "g.mld_stdmeldinggroep_key")
+ " FROM mld_stdmeldinggroep g"
+ " WHERE g.mld_stdmeldinggroep_key IN "
+ " (SELECT mld_stdmeldinggroep_key "
+ " FROM mld_stdmelding "
+ " WHERE mld_stdmelding_taggable > 0"
+ " AND mld_ins_discipline_key IN "
+ " (SELECT w.ins_discipline_key "
+ " FROM fac_v_webgebruiker w"
+ " WHERE w.prs_perslid_key = " + user_key
+ " AND fac_functie_key = " + F(this.autfunction)
+ " AND w.fac_gebruiker_prs_level_" + auth_mode + " < 9 AND w.fac_gebruiker_alg_level_" + auth_mode + " < 9)))",
"key": "mld_stdmeldinggroep_key",
"desc": "mld_stdmeldinggroep_naam"
},
"emptyoption": "",
"showtransit": true,
"multiedit": true
},
"person": {
"dbs": "prs_perslid_key",
"label": L("mld_melding_tag_person"),
"typ": "key",
"foreign": "prs_perslid",
"defaultvalue" : user_key /* werk dit? */
},
"active": {
"dbs": "mld_melding_tag_actief",
"label": L("mld_melding_tag_actief"),
"typ": "check0",
"defaultvalue": 1
},
"begindate": {
"dbs": "mld_melding_tag_datum_van",
"label": L("mld_melding_tag_startdatum"),
"typ": "date",
"multiedit": true
},
"accdate": {
"dbs": "mld_melding_tag_datum_acc",
"label": L("mld_melding_tag_accdatum"),
"typ": "date",
"multiedit": true
},
"enddate": {
"dbs": "mld_melding_tag_datum_tot",
"label": L("mld_melding_tag_einddatum"),
"typ": "date",
"required": true,
"multiedit": true
}
};
this.autclause = function _autclause(rw) {
rw = (rw === "write" ? "write" : "read"); // Whitelisten voor de zekerheid
return " ins_srtdiscipline_key IN"
+ " (SELECT ins_srtdiscipline_key"
+ " FROM mld_discipline"
+ " WHERE ins_discipline_key IN"
+ " (SELECT mld_ins_discipline_key"
+ " FROM mld_stdmelding"
+ " WHERE mld_stdmelding_taggable > 0)"
+ " AND ins_discipline_key IN"
+ " (SELECT w.ins_discipline_key"
+ " FROM fac_v_webgebruiker w"
+ " WHERE w.prs_perslid_key = " + user_key
+ " AND fac_functie_key = " + F(this.autfunction)
+ " AND w.fac_gebruiker_prs_level_" + rw + " < 9"
+ " AND w.fac_gebruiker_alg_level_" + rw + " < 9))"
+ " AND ( mld_stdmeldinggroep_key IS NULL"
+ " OR (mld_stdmeldinggroep_key IN"
+ " (SELECT mld_stdmeldinggroep_key"
+ " FROM mld_stdmelding"
+ " WHERE mld_stdmelding_taggable > 0"
+ " AND mld_ins_discipline_key IN"
+ " (SELECT w.ins_discipline_key"
+ " FROM fac_v_webgebruiker w"
+ " WHERE w.prs_perslid_key = " + user_key
+ " AND fac_functie_key = " + F(this.autfunction)
+ " AND w.fac_gebruiker_prs_level_" + rw + " < 9"
+ " AND w.fac_gebruiker_alg_level_" + rw + " < 9))))";
}
this.REST_GET = generic_REST_GET(this, { "GET": { "wheres": this.autclause() }});
var autparams = user.checkAutorisation(this.autfunction);
var canWrite = (autparams.PRSwritelevel < 9 && autparams.ALGwritelevel < 9);
/* Dit lost het multi-gebeuren nog niet op .. */
if (canWrite) {
if (tag_key > -1) {
var sql = "SELECT 'canWrite'"
+ " FROM mld_melding_tag"
+ " WHERE mld_melding_tag_key = " + tag_key
+ " AND " + this.autclause("write");
var oRs = Oracle.Execute(sql);
if (!oRs.EOF) { // Ik heb schrijfrechten op deze specifieke tag
this.REST_POST = generic_REST_POST(this);
this.REST_PUT = generic_REST_PUT(this);
this.REST_DELETE = generic_REST_DELETE(this);
}
oRs.Close();
} else {
this.REST_POST = generic_REST_POST(this);
// Geen multi-acties, wel door kunnen klikken
this.list = {
"default_action": "scf_show",
"default_url": "appl/mgt/mld_melding_tag.asp?id={0}"
};
}
}
}
%>

View File

@@ -15,10 +15,8 @@
<!-- #include file="../api2/model_fin_factuur.inc" -->
<!-- #include file="./model_custom_fields.inc"-->
<!-- #include file="./model_mld_kenmerk.inc"-->
<!-- #include file="./model_notes.inc" -->
<!-- #include file="./model_issues_mini.inc" -->
<!-- #include file="./model_mld_opdr_materiaal.inc" -->
<!-- #include file="../bgt/bgt_tools.inc" -->
<!-- #include file="./model_notes.inc"-->
<%
function model_mld_opdr()
@@ -261,6 +259,7 @@ function model_mld_opdr()
"typ": "key",
"foreign": "prs_kostensoort",
"readonly": S("mld_opdr_alt_kostensoort") == 1? false : true,
"LOVinit": "",
"track": true
},
"hours": {
@@ -387,13 +386,13 @@ function model_mld_opdr()
"dbs": "mld_opdr_externnr",
"label": "externalnr",
"typ": "key",
"readonly": S("bgt_enabled") || !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR"))
"hidden_fld": true
},
"externalsyncdate": {
"dbs": "mld_opdr_externsyncdate",
"label": "externalsyncdate",
"typ": "datetime",
"readonly": S("bgt_enabled") || !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR"))
"hidden_fld": true
}
};
@@ -417,22 +416,8 @@ function model_mld_opdr()
"model": new model_custom_fields(this, new model_mld_kenmerk('O', { internal: true }), { pNiveau: "O" }),
"joinfield": "flexparentkey",
"enable_update": true
},
"materials": {
"model": new model_mld_opdr_materiaal(),
joinfield: "order"
},
"issuedetails": {
"model": new model_issues_mini(),
"isdetailfor": "issue",
"joinfunction": function ()
{
return { tables: ["mld_melding m2"],
where: "mld_opdr.mld_melding_key = m2.mld_melding_key"
}
}
}
};
}
this.hook_pre_show = function(obj, fld, scf_params)
{
@@ -491,10 +476,10 @@ function model_mld_opdr()
}
oRs.Close();
/*
TWYN#53173
De bestaande knop "Kopi<70>ren" is komen te vervallen. Daarvoor in de plaats zijn twee nieuwe knoppen toegevoegd: "Nieuwe opdracht" en "nieuwe subopdracht".
Bij een nieuwe subopdracht is het opdrachtnummer gelijk aan die van de opdracht van waaruit gekopieerd wordt en is niet te wijzigen. Het volgnummer staat standaard op volgnr(max+1).
/*
TWYN#53173
De bestaande knop "Kopi<70>ren" is komen te vervallen. Daarvoor in de plaats zijn twee nieuwe knoppen toegevoegd: "Nieuwe opdracht" en "nieuwe subopdracht".
Bij een nieuwe subopdracht is het opdrachtnummer gelijk aan die van de opdracht van waaruit gekopieerd wordt en is niet te wijzigen. Het volgnummer staat standaard op volgnr(max+1).
if (obj._is_clone == 2)) // nieuw subcontract: bepaal hoogste volgnummer bij dit contract, en vul deze alvast in.
{
var sql = "SELECT COALESCE(MAX(s.mld_opdr_bedrijfopdr_volgnr), 0) + 1 volgnr"
@@ -508,7 +493,7 @@ function model_mld_opdr()
obj.sequence = oRs("volgnr").Value;
oRs.Close();
}
*/
*/
}
else
{
@@ -614,11 +599,11 @@ function model_mld_opdr()
checkAanwezigBudget(v_costtype);
getBudget(v_costtype); // Hierin wordt ook gecontroleerd of er een reservebudget bestaat. Zo niet, dan stoppen.
/*
TWYN#53173 : waarschijnlijk pas met 2018.1
obj._is_clone=1 --> nieuwe (hoofd) opdracht
obj._is_clone=2 --> nieuwe sub-opdracht
*/
/*
TWYN#53173 : waarschijnlijk pas met 2018.1
obj._is_clone=1 --> nieuwe (hoofd) opdracht
obj._is_clone=2 --> nieuwe sub-opdracht
*/
if (isclone) // Bij kopie van opdracht geen nieuw nummer genereren.
{
var v_project_key = (typeof obj.budgetproject == "object" ? obj.budgetproject.id : obj.budgetproject);
@@ -1004,27 +989,6 @@ function model_mld_opdr()
result.canRead = (pparams.authparams.PRSreadlevel < 9 && pparams.authparams.ALGreadlevel < 9);
result.canWrite = (pparams.authparams.PRSwritelevel < 9 && pparams.authparams.ALGwritelevel < 9);
result.canReadWrite = result.canRead || result.canWrite;
if (pparams.filter.mld_key && pparams.filter.mld_key > 0)
{
var sql = "SELECT s.mld_ins_discipline_key"
+ " FROM mld_melding m"
+ " , mld_stdmelding s"
+ " WHERE m.mld_stdmelding_key = s.mld_stdmelding_key"
+ " AND m.mld_melding_key = " + pparams.filter.mld_key;
var oRs = Oracle.Execute(sql);
var mld_disc_key = oRs("mld_ins_discipline_key").Value;
oRs.Close();
pparams.enabled = user.func_enabled2("MLD", { ins_discipline_key: mld_disc_key, prs_key: user_key, isOptional:true });
result.canWrite = pparams.enabled.anyfound;
}
else
{
result.canRead = false;
result.canWrite = false;
result.canReadWrite = false;
}
}
}
return result; // Wordt in model gebruikt om te bepalen of de functies/knoppen Toevoegen en Verwijderen aanwezig moeten zijn.
@@ -1406,7 +1370,7 @@ function model_mld_opdr()
}
}
this.REST_GET = function (params)
this.REST_GET = function (params)
{
if (S("bgt_enabled") == 1)
{ // autfunction = "WEB_BGTORD".
@@ -1629,6 +1593,8 @@ function model_mld_opdr()
delete_fld(jsondata, "module", true);
delete_fld(jsondata, "additional", true);
delete_fld(jsondata, "offer", true);
delete_fld(jsondata, "externalnr", true);
delete_fld(jsondata, "externalsyncdate", true);
}
this.REST_PUT = function (params, jsondata, the_key)
@@ -1788,11 +1754,7 @@ function model_mld_opdr()
{
if (!S("bgt_enabled")) // Nu pas voor API2 controleren. Voor BGT is canWrite hier zeker true.
{
var auth_par = { filter: { mld_key: jsondata.issue
, id: getQParamInt("id", -1)
, scope: getQParamSafe("scope", "")
}
};
var auth_par = { filter: { id: getQParamInt("id", -1), scope: getQParamSafe("scope", "")}};
var this_par = { autfunction: true};
var authparams_cA = _checkAutorisation(this_par, auth_par);
if (!authparams_cA.canWrite)
@@ -1817,21 +1779,6 @@ function model_mld_opdr()
// Status en tracking altijd met de functie setopdrachtstatus.
// Zetten van de status van een nieuwe opdracht op nieuw en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
var company = typeof jsondata.company == "object"? jsondata.company.id : jsondata.company;
params.mld_opdr = {}; // Zet hier de gegevens uit mld.mld_opdr_info() in.
params.mld_opdr.uitvoerende = (jsondata.company? api2.get_jdata_refkey(jsondata.company) : -1);
params.mld_opdr.opdr_type = (jsondata.issueordertype? jsondata.issueordertype : -1);
// Gegevens van het opdrachttype ophalen.
var sql = "SELECT mld_typeopdr_confirm_for_send"
+ " , mld_typeopdr_isofferte"
+ " FROM mld_typeopdr"
+ " WHERE mld_typeopdr_key = " + params.mld_opdr.opdr_type;
oRs = Oracle.Execute(sql);
params.mld_opdr.typeopdr_confirm_for_send = oRs("mld_typeopdr_confirm_for_send").Value;
params.mld_opdr.mld_typeopdr_isofferte = oRs("mld_typeopdr_isofferte").Value;
oRs.Close();
mld.setopdrachtstatus(opdr_key, setopdrstatus, company);
if (S("bgt_enabled") != 1) // BGT doet niets met mld_melding; mld_opdr heeft zelfs geen mld_melding_key!
@@ -1842,27 +1789,26 @@ function model_mld_opdr()
if (!S("bgt_enabled"))
{
params.mld_opdr = {}; // Zet hier de gegevens uit mld.mld_opdr_info() in.
params.mld_opdr.uitvoerende = (jsondata.company? api2.get_jdata_refkey(jsondata.company) : -1);
params.mld_opdr.opdr_type = (jsondata.issueordertype? jsondata.issueordertype : -1);
// Bepaal of de opdracht een offerte is.
var sql = "SELECT mld_typeopdr_isofferte"
+ " FROM mld_typeopdr"
+ " WHERE mld_typeopdr_key = " + params.mld_opdr.opdr_type;
oRs = Oracle.Execute(sql);
params.mld_opdr.mld_typeopdr_isofferte = oRs("mld_typeopdr_isofferte").Value;
oRs.Close();
// Vooralsnog alleen voor nieuwe meldingen (POST).
// Opdracht direct electronisch versturen of door putorders laten oppikken (te verzenden veld zetten) bij nieuwe opdrachten.
// Nooit als er een activiteits key is meegegeven omdat het dan eigenlijk geen opdracht is. Bij de api is de fac_activiteit_key niet gevuld.
if (params.mld_opdr.mld_typeopdr_isofferte == 1)
{ // Offerte opdracht.
if (params.mld_opdr.typeopdr_confirm_for_send < 2)
{ // Zonder bevestiging versturen.
sql = "UPDATE mld_opdr SET mld_opdr_teverzenden = 1 WHERE mld_opdr_key = " + opdr_key;
Oracle.Execute(sql);
if (setopdrstatus == 5)
{ // Bij ORDNEW tracking wordt er niet genotificeerd. Dat moet als je mld_opdr_teverzenden op 1 zet nog gebeuren.
Oracle.Execute("BEGIN fac.notifytrackingbedrijven ('ORDNEW', " + opdr_key + "); END;");
}
}
else if (params.mld_opdr.typeopdr_confirm_for_send == 2)
{ // Nog niet laten oppikken door achtergrond putorders alleen uitstellen.
sql = "UPDATE mld_opdr SET mld_opdr_teverzenden = NULL WHERE mld_opdr_key = " + opdr_key;
Oracle.Execute(sql);
}
// putorders.sendMLDorders doen we hier niet, altijd scheduled via putorders
sql = "UPDATE mld_opdr SET mld_opdr_teverzenden = 1 WHERE mld_opdr_key = " + opdr_key;
Oracle.Execute(sql);
}
else
{ // Opdrachten
@@ -1875,20 +1821,10 @@ function model_mld_opdr()
var oRs = Oracle.Execute(sql);
// Als (1) externe uitvoerder met (2) prs_bedrijfadres_url type O dan vragen
// of de opdracht elektrisch verstuurd moet worden. Zo ja, dan
if (!oRs.eof && params.mld_opdr.typeopdr_confirm_for_send == 0)
if (!oRs.eof && S("mld_opdr_confirm_for_send") != 1)
{ // Er is een mldorder_adres en zonder bevestiging versturen.
sql = "UPDATE mld_opdr SET mld_opdr_teverzenden = 1 WHERE mld_opdr_key = " + opdr_key;
Oracle.Execute(sql);
if (setopdrstatus == 5)
{ // Bij ORDNEW tracking wordt er niet genotificeerd. Dat moet als je mld_opdr_teverzenden op 1 zet nog gebeuren.
Oracle.Execute("BEGIN fac.notifytrackingbedrijven ('ORDNEW', " + opdr_key + "); END;");
}
}
else if (!oRs.eof && params.mld_opdr.typeopdr_confirm_for_send == 2)
{ // Er is een mldorder_adres maar nog niet laten oppikken door achtergrond putorders alleen uitstellen.
sql = "UPDATE mld_opdr SET mld_opdr_teverzenden = NULL WHERE mld_opdr_key = " + opdr_key;
Oracle.Execute(sql);
}
//else geen mldorder_adres, dan niet versturen.
oRs.Close();

View File

@@ -1,141 +0,0 @@
<% /*
$Revision$
$Id$
File: model_mld_opdr_materiaal.inc
Description:
Context: Alleen voor gebruik als include.
Notes:
*/
%>
<%
function model_mld_opdr_materiaal()
{
this.records_name = "issueordermaterials";
this.record_name = "issueordermaterial";
this.table = "mld_opdr_materiaal";
this.primary = "mld_opdr_materiaal_key";
this.record_title = L("mld_opdr_materiaal");
this.records_title = L("mld_opdr_materiaal_m");
this.fields = {
"id": {
"dbs": "mld_opdr_materiaal_key",
"label": L("lcl_key"),
"typ": "key",
"required": true,
"seq": "mld_s_mld_opdr_materiaal_key"
},
"order": {
"dbs": "mld_opdr_key",
"label": L("lcl_mld_opdr"),
"typ": "key"
},
"seq": {
"dbs": "mld_opdr_materiaal_id", // materiaal volgnummer binnen opdracht
"label": L("lcl_mld_opdr_id"),
"typ": "number"
},
"code": {
"dbs": "mld_opdr_materiaal_code",
"label": L("lcl_mld_opdr_code"),
"typ": "varchar"
},
"group": {
"dbs": "mld_opdr_materiaal_groep",
"label": L("lcl_mld_opdr_groep"),
"typ": "varchar"
},
"listdefined": {
"dbs": "fac_usrdata_key",
"label": L("mld_opdr_materiaal_oms"),
"typ": "key",
"foreign": {
"tbl": "fac_usrdata",
"key": "fac_usrdata_key",
"desc": "fac_usrdata_omschr"
}
},
"userdefined": {
"dbs": "mld_opdr_materiaal_omschr",
"label": L("lcl_mld_opdr_omschr"),
"typ": "varchar",
"required": true
},
"price": {
"dbs": "mld_opdr_materiaal_prijs",
"label": L("lcl_mld_opdr_prijs"),
"typ": "currency"
},
"vat_perc": {
"dbs": "fin_btwtabelwaarde_key",
"sql": "(SELECT fin_btwtabelwaarde_perc FROM fin_btwtabelwaarde where fin_btwtabelwaarde_key = mld_opdr_materiaal.fin_btwtabelwaarde_key)",
"label": L("lcl_fin_btwtabelwaarde_perc"),
"typ": "float"
},
"quantity": {
"dbs": "mld_opdr_materiaal_aantal",
"label": L("lcl_mld_opdr_aantal"),
"typ": "float"
},
"unit": {
"dbs": "mld_opdr_materiaal_eenheid",
"label": L("lcl_mld_opdr_eenheid"),
"typ": "varchar"
},
"unitcode": {
"dbs": "mld_opdr_materiaal_eenheidcode",
"label": L("lcl_mld_opdr_eenheidcode"),
"typ": "varchar"
},
"info": {
"dbs": "mld_opdr_materiaal_info",
"label": L("lcl_mld_opdr_info"),
"typ": "memo"
},
"extra1": {
"dbs": "mld_opdr_materiaal_extra1",
"label": L("lcl_mld_opdr_extra1"),
"typ": "varchar"
},
"extra2": {
"dbs": "mld_opdr_materiaal_extra2",
"label": L("lcl_mld_opdr_extra2"),
"typ": "varchar"
},
"extra3": {
"dbs": "mld_opdr_materiaal_extra3",
"label": L("lcl_mld_opdr_extra3"),
"typ": "memo"
},
"extra4": {
"dbs": "mld_opdr_materiaal_extra4",
"label": L("lcl_mld_opdr_extra4"),
"typ": "memo"
},
"externnr": {
"dbs": "mld_opdr_materiaal_externnr",
"label": L("extern_nr"),
"typ": "varchar",
"readonly": !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR"))
},
"externsyncdate": {
"dbs": "mld_opdr_materiaal_extsyncdate",
"label": L("extern_syncdate"),
"typ": "datetime",
"readonly": !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR"))
}
};
this.REST_GET = generic_REST_GET(this);
//this.REST_POST = generic_REST_POST(this);
//this.REST_PUT = generic_REST_PUT(this);
//this.REST_DELETE = generic_REST_DELETE(this);
}
%>

View File

@@ -122,8 +122,8 @@ function model_mld_srtkenmerk(params)
"code": {
"dbs": "mld_srtkenmerk_code",
"typ": "varchar",
"label": L("mgt_srtkenmerk_code"),
"readonly": !user.has("WEB_PRSSYS")
"label": L("lcl_mld_code"),
"readonly": !user.has("WEB_FACTAB")
}
};

View File

@@ -139,6 +139,7 @@ function model_mld_stdmelding()
"typ": "key",
"label": L("lcl_charge_type"),
"foreign": "prs_kostensoort",
"emptyoption": "",
"multiedit": true
},
"costcentre": {
@@ -213,10 +214,8 @@ function model_mld_stdmelding()
"LOV": "0;" + L("lcl_mld_onzichtbaar") + ";"
+ "1;" + L("lcl_mld_optioneel") + ";"
+ "2;" + L("lcl_mld_verplicht")
+ ( ((S("ai_enabled") & 1) || mode == "api2")
? ";3;"
: ";##DISABLED##;"
) + L("lcl_mld_ai_generated"),
+ (S("ai_enabled") & 1 ? ";3;" : ";##DISABLED##;")
+ L("lcl_mld_ai_generated"),
"emptyoption": null,
"multiedit": true
},
@@ -497,14 +496,6 @@ function model_mld_stdmelding()
"emptyoption": null,
"multiedit": true
},
"objectsallowed": {
"dbs": "mld_stdmelding_objects_allowed",
"typ": "number",
"label": L("mld_stdmelding_objects_allowed"),
"LOV": L("mld_stdmelding_objects_allowed_LOV"),
"emptyoption": null,
"defaultvalue": 2
},
"externallink": {
"dbs": "mld_stdmelding_externurl",
"typ": "varchar",
@@ -579,16 +570,6 @@ function model_mld_stdmelding()
"label": L("lcl_mld_stdpriomatrix"),
"multiedit": true
},
"bytag": {
"dbs": "mld_stdmelding_taggable",
"typ": "number",
"label": L("lcl_mld_stdtaggable"),
"LOV": "0;" + L("lcl_mld_stdtaggable0") + ";"
+ "1;" + L("lcl_mld_stdtaggable1") + ";"
+ "3;" + L("lcl_mld_stdtaggable3"),
"emptyoption": null,
"multiedit": true
},
"enddateempty": {
"dbs": "mld_stdmelding_enddate_empty",
"typ": "check0",

View File

@@ -188,15 +188,6 @@ function model_mld_typeopdr()
"label": L("mld_typeopdr_afhandeling"),
"typ": "check0"
},
"confirmforsend": {
"dbs": "mld_typeopdr_confirm_for_send",
"label": L("mld_typeopdr_confirmforsend"),
"typ": "number",
"multiedit": true,
"defaultvalue": "0",
"LOV": L("mld_typeopdr_confirmforsendLOV"),
"emptyoption": null
},
"mandatorycosts": {
"dbs": "mld_typeopdr_kosten_verplicht",
"label": L("mld_typeopdr_kosten_verplicht"),
@@ -259,18 +250,6 @@ function model_mld_typeopdr()
}
],
"track": true
},
"code": {
"dbs": "mld_typeopdr_code",
"label": L("lcl_mld_code"),
"typ": "varchar",
"readonly": !user.has("WEB_FACTAB")
},
"complete": {
"dbs": "mld_typeopdr_afronden",
"label": L("mld_typeopdr_complete"),
"typ": "check0",
"defaultvalue": 1
}
};

View File

@@ -1,98 +0,0 @@
<% /*
$Revision$
$Id$
File: model_msg_message.inc
Description: Bericht versturen
Parameters:
Context:
Notes:
*/
%>
<%
function model_msg_message()
{
this.table = "msg_message";
this.primary = "msg_message_key";
this.autfunction = "WEB_MSGBOF";
this.autfunction_add = "-"; // unsupported via SCF
this.record_name = "message";
this.records_name = "messages";
this.fields = {
"id": {
"dbs": "msg_message_key",
"label": L("lcl_key"),
"typ": "key",
"required": true,
"seq": "msg_s_msg_message_key"
},
"sender": {
"dbs": "prs_perslid_key",
"label": L("lcl_prs_bedrijfadres_afzender"), // LCL TODO
"typ": "key",
"foreign": "PRS_PERSLID",
"hidden_fld": true,
"defaultvalue": user_key
},
"subject": {
"dbs": "msg_message_onderwerp",
"label": L("lcl_mes_subject"),
"typ": "varchar",
"required": true
},
"description": {
"dbs": "msg_message_oms",
"label": L("lcl_mes_message"),
"typ": "memo",
"bb_codes": true,
"module": "MES",
"required": true
},
"priority": {
"dbs": "msg_message_prioriteit",
"label": L("lcl_mes_priority"),
"typ": "varchar",
"required": true,
"LOV": priorityLOV(), /* 1=high, 2=normal, 3=low */
"defaultvalue": 2 // Geet dit goed?
},
/* Doen de 2 onderstaande velden nog ergens ooit iets .. ?
"url": {
"dbs": "msg_message_url",
"label": L("lcl_mes_link"),
"typ": "varchar"
},
"reply_key": {
"dbs": "msg_message_replykey",
"label": L("lcl_mes_message_send"),
"typ": "key",
"foreign": {
"tbl": "msg_message",
"key": "msg_message_key",
"desc": "msg_message_oms"
},
"readonly": true
}, */
"created": {
"dbs": "msg_message_aanmaak",
"label": L("lcl_mes_send_date_time"),
"typ": "datetime",
"readonly": true
}
};
function priorityLOV() {
return "1;" + L("lcl_mes_high")
+ ";2;" + L("lcl_mes_normaal")
+ ";3;" + L("lcl_mes_low");
}
this.REST_GET = generic_REST_GET(this);
// this.REST_POST = generic_REST_POST(this);
// this.REST_PUT = generic_REST_PUT(this);
// this.REST_DELETE = generic_REST_DELETE(this);
}
%>

Some files were not shown because too many files have changed in this diff Show More