156 lines
5.5 KiB
Plaintext
156 lines
5.5 KiB
Plaintext
<%@ language="javascript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: bez_check_in.asp
|
|
Note: De multi-variant wordt alleen gebruikt als S("vis_allow_check_all") == 1
|
|
*/ %>
|
|
|
|
<%
|
|
var JSON_Result = true;
|
|
%>
|
|
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="./bez.inc" -->
|
|
<!-- #include file="../Shared/json2.js" -->
|
|
|
|
<%
|
|
protectRequest.validateToken();
|
|
|
|
var bez_key_arr = getFParamIntArray("bez_key");
|
|
var undo_check_in = S("vis_allow_uncheck") && (getFParamInt("undo_check_in", 0) == 1);
|
|
var message = "";
|
|
var checkInDone = [];
|
|
var badges = [];
|
|
var autoprint = [];
|
|
var tobeapproved = 0;
|
|
|
|
var sql = "SELECT distinct bez_afspraak_key"
|
|
+ " FROM bez_bezoekers"
|
|
+ " WHERE bez_bezoekers_key " + (bez_key_arr.length > 0? " IN (" + bez_key_arr.join(",") + ")" : " = -1");
|
|
var oRs = Oracle.Execute(sql);
|
|
while (!oRs.eof)
|
|
{
|
|
var afspr_key = oRs("bez_afspraak_key").value;
|
|
var this_bez = bez.func_enabled_afspraak(afspr_key);
|
|
user.auth_required_or_abort(this_bez.canCheckInOut);
|
|
oRs.MoveNext();
|
|
}
|
|
oRs.Close();
|
|
|
|
for (i = 0 ; i < bez_key_arr.length; i++)
|
|
{
|
|
if (undo_check_in)
|
|
var bezoekers_done = " TO_DATE(NULL)";
|
|
else
|
|
var bezoekers_done = " SYSDATE";
|
|
|
|
// Voorkom wijzigingen aan toekomstige afspraken (UWVA#15416)
|
|
sql = "SELECT bez_afspraak_datum"
|
|
+ " , b.bez_afspraak_key"
|
|
+ " , b.bez_afspraak_naam"
|
|
+ " , bez_bezoekers_pasnr"
|
|
+ " , bez_actie_flags"
|
|
+ " , a.alg_locatie_key"
|
|
+ " , a.alg_onrgoed_keys"
|
|
+ " FROM bez_afspraak a, bez_actie ba, bez_bezoekers b"
|
|
+ " WHERE a.bez_afspraak_key = b.bez_afspraak_key"
|
|
+ " AND a.bez_actie_key = ba.bez_actie_key(+)"
|
|
+ " AND TRUNC(SYSDATE) >= TRUNC(bez_afspraak_datum) - " + S("vis_future_checkin")
|
|
+ (undo_check_in? " AND bez_bezoekers_out IS NULL" : "")
|
|
+ " AND b.bez_bezoekers_key = " + bez_key_arr[i];
|
|
|
|
oRs_A = Oracle.Execute(sql);
|
|
if (!oRs_A.eof)
|
|
{ // afspraak is vandaag of eerder, dan mag het
|
|
var afspr_key = oRs_A("bez_afspraak_key").value;
|
|
var bezoeker = oRs_A("bez_afspraak_naam").value;
|
|
var flags = oRs_A("bez_actie_flags").value||0;
|
|
autoprint[i] = !undo_check_in
|
|
&& (S("vis_badgeprint_enable")&1==1) // autoprint
|
|
&& ((flags&2)==2 || (S("vis_badgeprint_enable")&4)==0) // dit is autobadge of niet 'alleen-voor-autobadge'
|
|
|
|
if (!undo_check_in &&
|
|
S("vis_bo_uses_badgenrs") == 1 &&
|
|
(flags & 2) && // auto-badge
|
|
oRs_A("bez_bezoekers_pasnr").Value == null)
|
|
{
|
|
var loc_key = oRs_A("alg_locatie_key").Value;
|
|
var onr_key = oRs_A("alg_onrgoed_keys").Value||-1;
|
|
var seq_name = "ALG_LOCATIE_KEY_" + loc_key + "_BADGE"; // Badge nummering per locatie is de default.
|
|
if ((S("vis_badgeprint_enable")&8) == 1) //badgenummering per gebouw
|
|
{
|
|
if (onr_key > 0)
|
|
{
|
|
sql = "SELECT alg_gebouw_key"
|
|
+ " FROM alg_v_onroerendgoed"
|
|
+ " WHERE alg_onroerendgoed_keys = " + onr_key;
|
|
var oRs_G = Oracle.Execute(sql);
|
|
if (!oRs_G.eof)
|
|
seq_name = "ALG_GEBOUW_" + oRs_G("alg_gebouw_key").Value + "_BADGE";
|
|
oRs_G.Close();
|
|
}
|
|
}
|
|
var today = new Date();
|
|
var sql = "BEGIN"
|
|
+ " fac.sequence_nextval("+safe.quoted_sql(seq_name)+", 1, "+ today.endToSQL() + "); "
|
|
+ "END;";
|
|
Oracle.Execute(sql);
|
|
var sql = "SELECT fac_sequence_lastval"
|
|
+ " FROM fac_sequence"
|
|
+ " WHERE fac_sequence_name = " + safe.quoted_sql(seq_name);
|
|
var oRs_S = Oracle.Execute(sql);
|
|
var cnt = oRs_S("fac_sequence_lastval").Value;
|
|
oRs_S.Close();
|
|
|
|
badges[i] = ("000000000" + String(cnt)).slice(-S("vis_autobadgelength"));
|
|
var letters = S("vis_autobadgeletters"); // Bijvoorbeeld "ABCDEF"
|
|
if (letters.length)
|
|
{
|
|
// Elke dag volgende letter
|
|
var letter = letters.substr(((new Date).getTime() /1000/60/60/24) % (letters.length), 1);
|
|
badges[i]= letter + badges[i];
|
|
}
|
|
}
|
|
sql = "UPDATE bez_bezoekers"
|
|
+ " SET bez_bezoekers_done = " + bezoekers_done
|
|
+ " , bez_bezoekers_pasnr = COALESCE(bez_bezoekers_pasnr, " + safe.quoted_sql(badges[i]) + ")"
|
|
+ " WHERE bez_bezoekers_key = " + bez_key_arr[i];
|
|
oRs = Oracle.Execute(sql);
|
|
// Undo ook afzonderlijk tracken!
|
|
// We tracken uiteindelijk bij de bezoeker tegenwoordig
|
|
if (undo_check_in)
|
|
shared.trackaction("BEZUNI", bez_key_arr[i], L("lcl_bez_is_in_1") + bezoeker + L("lcl_bez_is_in_3") ); // undo checkin
|
|
else
|
|
shared.trackaction("BEZDON", bez_key_arr[i], L("lcl_bez_is_in_1") + bezoeker + L("lcl_bez_is_in_2") ); // checkin
|
|
|
|
checkInDone[i] = true;
|
|
tobeapproved++;
|
|
|
|
// Customer hook
|
|
pResult = new HookResult();
|
|
custfunc.bez_checkdone(bez_key_arr[i], pResult);
|
|
if (pResult.errmsg != null)
|
|
{
|
|
message = pResult.errmsg;
|
|
}
|
|
}
|
|
else
|
|
{ // toekomstige afspraak of is al weg
|
|
checkInDone[i] = false;
|
|
}
|
|
oRs_A.Close();
|
|
}
|
|
if (tobeapproved == 0) // enkele wel en enkele niet klagen we niet over
|
|
message = L("lcl_bez_no_checkin");
|
|
|
|
var result = {bez_key_arr: bez_key_arr,
|
|
undo_check_in: undo_check_in,
|
|
checkInDone: checkInDone,
|
|
badges: badges,
|
|
autoprint: autoprint,
|
|
message: message};
|
|
Response.Write(JSON.stringify(result));
|
|
%>
|