FCLT#85890 fac_notificatie_realuser bijhouden zodat we in putorders correct kunnen overrulen

svn path=/Website/trunk/; revision=67793
This commit is contained in:
Jos Groot Lipman
2025-01-30 08:46:33 +00:00
parent 432ba1de7f
commit 15b58d7a91
10 changed files with 101 additions and 36 deletions

View File

@@ -126,6 +126,7 @@ var sql = "select fac_version_schema,"
+ " fac_version_putorders_date,"
+ " fac_version_notify_date,"
+ " fac_version_scheduler_date"
+ " fac_version_tasker_date"
+ " from fac_version";
var oRs = Oracle.Execute(sql);
result.scanner = { schema : oRs("fac_version_schema").Value,
@@ -134,6 +135,7 @@ result.scanner = { schema : oRs("fac_version_schema").Value,
result.putorders_date = oRs("fac_version_putorders_date").Value!=null?new Date(oRs("fac_version_putorders_date").Value):null;
result.notify_date = oRs("fac_version_notify_date").Value!=null?new Date(oRs("fac_version_notify_date").Value):null;
result.scheduler_date = oRs("fac_version_scheduler_date").Value!=null?new Date(oRs("fac_version_scheduler_date").Value):null;
result.tasker_date = oRs("fac_version_tasker_date").Value!=null?new Date(oRs("fac_version_tasker_date").Value):null;
oRs.Close();
var sql = "SELECT user, created FROM user_users";
var oRs = Oracle.Execute(sql);

View File

@@ -18,6 +18,7 @@
{
model.fields[fld].label = model.fields[fld].label.replace("fac_task_", ""); // iets kortere labels
}
model.fields["fac_task_flags"].label = "flags (+1=disable)";
scaffolding(model, {
"search": {
@@ -33,13 +34,12 @@
"fac_cust_key",
"name", // is fac_task_code
"fac_task_nextrun",
"fac_task_lastrun"
"fac_task_lastrun",
"fac_task_flags"
],
rowClass: function(oRs)
{
if (oRs.Fields("fac_notificatie_status").Value == 0 &&
oRs.Fields("fac_notificatie_systeemadres").Value == null &&
oRs.Fields("prs_bedrijfadres_key").Value == null)
if (oRs.Fields("fac_task_flags").Value & 1) // disabled
{
return "lowlight";
}
@@ -47,13 +47,8 @@
}
},
"Xshow": {
"buttons": [
{ icon: "fa-send", title: "Immediate", tooltip: "Send immediate", action: "send_immediate" }
],
"requires": {
js: ["./fac_notificatie.js"]
}
"edit": {
"modal": true
},
"layout": {
"miscellaneous": {

View File

@@ -172,6 +172,10 @@ if (!hasParamFlag)
}
}
function toBeVerwerkt(oRs) {
return oRs("mld_statusopdr_key").Value == 6 || oRs("mld_statusopdr_key").Value == 9;
}
// Wel, afhankelijk van mijn bepaalde rol kan ik mijn overzicht anders willen,
// toegespitster op mijn behoefte (listmode):
// 1. alle opdrachten, met de naam van de contactpersoon erbij (ik of mijn collega, leeg als ik)
@@ -247,7 +251,7 @@ if (!hasParamFlag)
: grp_sel_listmode3(grp_sel) // listmode=3
)
)
+ " AND o.mld_statusopdr_key IN (4, 5, 8) "
+ " AND o.mld_statusopdr_key IN (4, 5, 6, 8) "
+ " AND m.mld_alg_onroerendgoed_keys = va.alg_onroerendgoed_keys(+)" // De opdracht heeft zelf ook een plaats of nie?
+ " AND m.mld_alg_locatie_key = l.alg_locatie_key(+)"
+ " AND l.alg_district_key = di.alg_district_key(+)";
@@ -523,6 +527,9 @@ if (!hasParamFlag)
if (user.has("WEB_ORDBOF") || user.has("WEB_ORDBO2")) {
multiactions.push({ icon: "fa-flag-checkered", action: "orders_close", caption: L("lcl_close") });
}
if (S("mld_opdr_archive_by_gui") && user.has("WEB_ORDBOF") || user.has("WEB_ORDBO2")) {
multiactions.push({ icon: "fa-archive", action: "orders_verwerk", caption: L("lcl_mld_opdr_verwerk"), fnCheckIfAny: toBeVerwerkt });
}
var isGrouped = (grp_sel == "" && listmode == 2);
HEADER({title: listtitle,

View File

@@ -40,6 +40,7 @@ function ResultsetTable(params)
ResultsetTable.prototype.processResultset = __rsProcessResultset;
ResultsetTable.prototype.makeTableRow = __rsMakeTableRow;
ResultsetTable.prototype.countHistogram = __rsCountHistogram;
ResultsetTable.prototype.enableMultiactions = __rsEnableMultiactions;
/*global*/ isData = false;
@@ -98,6 +99,13 @@ function __rsProcessResultset(processParams)
}
if (this.multiactions && this.multiactions.length > 0) {
this.extraClass = this.extraClass + (this.extraClass ? " " : "") + "bulkable";
for (var i = 0; i < this.multiactions.length; i++) {
if (this.multiactions[i].fnCheckIfAny) {
this.multiactions[i].enabled = false;
} else {
this.multiactions[i].enabled = true;
}
}
}
for (cnt = 0; (cnt < (S("qp_maxrows_mobile")) || this.showAll ) &&
@@ -133,6 +141,10 @@ function __rsProcessResultset(processParams)
if (this.buildHistogram)
this.countHistogram(oRs);
if (this.multiactions) {
this.enableMultiactions(oRs);
}
if ((this.groupColumn || (this.singleLink && trueCount < 2)) && this.linkColumn)
var lastLink = __fnContent(this.linkColumn)(oRs);
@@ -253,9 +265,12 @@ function __rsProcessResultset(processParams)
function __multiActions() {
var html = "";
if (this.multiactions) {
var multiactionCount = 0;
for (var i in this.multiactions) {
__DoLog("this.multiactions[i].enabled: " + this.multiactions[i].enabled);
multiactionCount = multiactionCount + (this.multiactions[i].enabled ? 1 : 0);
}
if (multiactionCount) {
html += "<script>"
+ " function doAm(event, fnAction) {"
+ " var key_arr = [];"
@@ -277,8 +292,10 @@ function __multiActions() {
+ " </span>"
+ " <span class='right multiaction-wrapper'>"
for (var i in this.multiactions) {
html += "<span class='multiaction tappable' onclick='doAm(event, \"" + safe.htmlattr(this.multiactions[i].action) + "\")' data-title='" + safe.htmlattr(this.multiactions[i].caption) + "'>"
+ I(this.multiactions[i].icon + " fa-lg") + "</span>"
if (this.multiactions[i].enabled) {
html += "<span class='multiaction tappable' onclick='doAm(event, \"" + safe.htmlattr(this.multiactions[i].action) + "\")' data-title='" + safe.htmlattr(this.multiactions[i].caption) + "'>"
+ I(this.multiactions[i].icon + " fa-lg") + "</span>"
}
}
html += " </span>"
+ "</div>";
@@ -463,6 +480,14 @@ function __rsCountHistogram(oRs)
}
}
function __rsEnableMultiactions(oRs) {
for (var i = 0; i < this.multiactions.length; i++) {
if (this.multiactions[i].enabled === false) {
__DoLog("fnCheckIfAny");
this.multiactions[i].enabled = this.multiactions[i].fnCheckIfAny(oRs);
}
}
}
// Levert een html-safe waarde op
ResultsetTable.formatValue = function (val, params) //datatype, decimals)

View File

@@ -473,9 +473,10 @@ function F(fac_functie_code)
ident = String(Session("user_key"))
//else
// ident += "<system>";
var realuser = Session("fclt_realuser");
var oraprefix = "BEGIN"
+ " fac.initsession("+safe.quoted_sql(ident)+", "+safe.quoted_sql(user_lang)+", "+safe.quoted_sql(Session("time_zone"))+");"
+ (realuser?"dbms_application_info.SET_CLIENT_INFO("+safe.quoted_sql(realuser)+");":"")
+ "END;";
o.Execute( oraprefix );

View File

@@ -37,7 +37,7 @@ function sendNotification(ref_key, pcode, params)
var sql = "SELECT COUNT(*) aantal,"
+ " MIN(fac_notificatie_notbefore) eerste,"
+ " MAX(fac_notificatie_notbefore) laatste"
+ " FROM fac_v_notifyqueue"
+ " FROM fac_notificatie"
+ " WHERE fac_notificatie_notbefore > SYSDATE"
+ " AND ( BITAND (fac_notificatie_status, " + (puo_const.STATUS_EMAIL | puo_const.STATUS_SMS| puo_const.STATUS_APPPUSH) + ") > 0"
+ " OR fac_notificatie_systeemadres IS NOT NULL"
@@ -81,6 +81,7 @@ function sendNotification(ref_key, pcode, params)
+ " , fac_notificatie_geturl"
+ " , fac_notificatie_getbody"
+ " , prs_perslid_inactief"
+ " , fac_notificatie_realuser" // voor eventuele overrules
+ " FROM fac_notificatie f"
+ " , fac_srtnotificatie fs"
+ " , prs_perslid p"
@@ -165,6 +166,7 @@ function sendNotification(ref_key, pcode, params)
var nextVersionUpdate = new Date();
nextVersionUpdate.setMinutes(nextVersionUpdate.getMinutes() + 1);
var delayed = null;
var lastrealuser = "";
while (true)
{
var oRs = Oracle.Execute(sql_puo);
@@ -196,7 +198,7 @@ function sendNotification(ref_key, pcode, params)
}
else
{
if (nextVersionUpdate > new Date())
if (nextVersionUpdate < new Date())
{
var sql = "UPDATE fac_version"
+ " SET fac_version_putorders_date = SYSDATE";
@@ -230,6 +232,15 @@ function sendNotification(ref_key, pcode, params)
+ (params.userident ? " user: " + params.userident : "")
);
var realuser = oRs("fac_notificatie_realuser").Value;
if (realuser && realuser != lastrealuser)
{
Log2File(1, "Switching to custenv.wsc overrules by " + realuser);
var domain = realuser.split("\\")[0];
var username = realuser.split("\\")[1];
tryOverrules(domain, username);
lastrealuser = realuser;
}
if (oRs("prs_perslid_inactief").Value != null)
{
var upd_p = "UPDATE fac_notificatie"

View File

@@ -10,6 +10,7 @@
var logfso = new ActiveXObject("Scripting.FileSystemObject");
var __LOGFILEPREFIX = 'putorders';
function Log2File(level, str, severity)
{
// uses: scr="../wsf_shared.js"
@@ -31,10 +32,10 @@ function Log2File(level, str, severity)
var logfilename = customerId + "_" + padout((new Date).getFullYear()) + "_" + padout((new Date).getMonth() + 1) + ".log";
if (typeof PUO_LOGPATH == "undefined")
{
logfilename = "../../../temp/" + customerId + "/putorders_" + logfilename; // voorkennis: de scheduled versie
logfilename = "../../../temp/" + customerId + "/" + __LOGFILEPREFIX + "_" + logfilename; // voorkennis: de scheduled versie
}
else
logfilename = PUO_LOGPATH + "putordersI_" + logfilename; // voorkennis: de immediate versie
logfilename = PUO_LOGPATH + __LOGFILEPREFIX + "I_" + logfilename; // voorkennis: de immediate versie
var simpellogfilename = logfilename.replace(/\.log$/, ".compact.log");
var excludesimpel = /^(SELECT xml.|XML blob|Load company style|Searching attachments|====== Skip opdracht\/bestelopdr)/;

View File

@@ -27,13 +27,26 @@ function tasker_loop(params)
+ " WHERE tt.fac_cust_key = tsko.fac_cust_key"
+ " AND fac_cust_enabled > 0"
+ " AND fac_task_nextrun <= SYSDATE"
+ " AND BITAND(fac_task_flags, 1) = 0" // niet disabled
+ " ORDER BY fac_task_nextrun"
+ " , fac_cust_customerid";
Log2File(3, sqltask);
var lastAction = new Date();
var nextVersionUpdate = new Date();
nextVersionUpdate.setMinutes(nextVersionUpdate.getMinutes() + 1);
while (true)
{
if (nextVersionUpdate < new Date())
{
var sql = "UPDATE fac_version"
+ " SET fac_version_tasker_date = SYSDATE";
Oracle.Execute(sql);
var nextVersionUpdate = new Date();
nextVersionUpdate.setMinutes(nextVersionUpdate.getMinutes() + 1);
}
var oRs = Oracle.Execute(sqltask);
if (oRs.EOF)
{
@@ -71,7 +84,6 @@ function tasker_loop(params)
continue;
}
}
var sqlu = "UPDATE fac_task"
@@ -90,7 +102,11 @@ function tasker_loop(params)
switch (task_code)
{
case "PUTORDERS":
var command = 'CMD /C "..\\..\\..\\utils\\putOrders\\putOrders.bat DEBUG"'; // Moet met backslashes voor CMD
var command = 'CMD /C "..\\..\\..\\utils\\putOrders\\putOrders.bat"'; // Moet met backslashes voor CMD
var startin = custabspath + "/../" + owner_cust + "/tasks"
break;
case "EXCHANGEREFRESH": // sample, future use
var command = 'CMD /C "..\\..\\..\\utils\\exchange\\refreshMSGraphSubscriptions.bat"'; // Moet met backslashes voor CMD
var startin = custabspath + "/../" + owner_cust + "/tasks"
break;
default: ERROR_UNKNOWN_task_code;

View File

@@ -2,8 +2,8 @@
/*
$Id$
File: put_orders.wsf
Calling: cscript ..\..\..\utils\PutOrders\put_orders.wsf
File: gen_tasker.wsf
Calling: cscript ..\..\..\utils\gen_scheduler\gen_tasker.wsf
Parameters:
Context: Scheduled task
@@ -21,6 +21,7 @@
<script language="JScript">
__LOGFILEPREFIX = 'tasker';
var applicatieRun = new Date();
try
@@ -48,7 +49,7 @@
var WshNetwork = new ActiveXObject("WScript.Network");
Log2File(0, "===========================================================");
Log2File(0, "PUTORDERS STARTED (" + toDateTimeString(applicatieRun) + ") " + WshNetwork.UserDomain + "\\" + WshNetwork.UserName);
Log2File(0, "GEN_TASKER STARTED (" + toDateTimeString(applicatieRun) + ") " + WshNetwork.UserDomain + "\\" + WshNetwork.UserName);
Log2File(2, "puo_loglevel: " + S("puo_loglevel"));
try
@@ -60,12 +61,12 @@
}
catch(e)
{
Log2File(0, "Uncaught error in gen_tasker.wsf: " + e.description, "E");
Log2File(0, "Uncaught error in gen_tasker.wsf:\n" + e.description);
}
var endDate = new Date();
var duration = Math.round((endDate - applicatieRun) / 100) / 10;
Log2File(0, "PUTORDERS FINISHED ({0}, duration {1}s)".format(toDateTimeString(endDate), duration));
Log2File(0, "GEN_TASKER FINISHED ({0}, duration {1}s)".format(toDateTimeString(endDate), duration));
Oracle.Close();

View File

@@ -73,9 +73,7 @@ var settings = { // defaults voordat parameters gelezen zijn; fouten gaan nog al
}
// Optionele overrules in cust/custenv.wsc en cust/XXXX/custenv.inc
tryOverrule("../../custenv.wsc");
tryOverrule("../custenv.wsc");
tryOverrule("./custenv.wsc"); // deze is het sterkst sterker
tryOverrules();
},
get_setting : function (s)
{
@@ -149,8 +147,16 @@ function S(s, defval)
return settings.get_setting(s, defval)
}
function tryOverrules(domain, username)
{
settings.overrule = {};
tryOverrule("../../custenv.wsc", domain, username);
tryOverrule("../custenv.wsc", domain, username); // deze is sterker
tryOverrule("./custenv.wsc", domain, username); // deze is het sterkst sterker
}
// ASP-code heeft zijn eigen variant, deze is voor Putorders.bat/wsf
function tryOverrule(path)
function tryOverrule(path, domain, username)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var hookfile = fso.GetAbsolutePathName(path);
@@ -188,12 +194,12 @@ function tryOverrule(path)
}
}
var WshNetwork = new ActiveXObject("WScript.Network");
debugger;
var puo_data = { customerId: customerId,
custabspath: custabspath,
Computername: WshNetwork.ComputerName,
Username: WshNetwork.UserName,
Userdomain: WshNetwork.UserDomain
Username: username || WshNetwork.UserName,
Userdomain: domain || WshNetwork.UserDomain
};
__Log("Using overrule " + hookfile + " with user " + WshNetwork.UserName);