Compare commits
1196 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
05994ade1d | ||
|
|
523f4a6a59 | ||
|
|
4596cc42bc | ||
|
|
83a93b93d6 | ||
|
|
c15f616eeb | ||
|
|
24b133aa80 | ||
|
|
bef44fc9db | ||
|
|
02617a8aa7 | ||
|
|
460538ce45 | ||
|
|
ccb65a37d9 | ||
|
|
2b7efe0bfe | ||
|
|
b225d8119a | ||
|
|
12803a60cf | ||
|
|
4f70d82934 | ||
|
|
f30d873d19 | ||
|
|
08f119406f | ||
|
|
03ae42722a | ||
|
|
592a1d63e8 | ||
|
|
130db4a54d | ||
|
|
0aca6be909 | ||
|
|
000e0a3c00 | ||
|
|
c1eb0e79ed | ||
|
|
681540abef | ||
|
|
c9b1b55b8c | ||
|
|
c5e0caab86 | ||
|
|
76547c6014 | ||
|
|
bac97bd703 | ||
|
|
8ec847f495 | ||
|
|
9673bb0157 | ||
|
|
dbbb804b50 | ||
|
|
edf264fd75 | ||
|
|
7bc722084e | ||
|
|
d534a29aa3 | ||
|
|
94c9ed336b | ||
|
|
406c66b783 | ||
|
|
d7c4a4d658 | ||
|
|
b963285e15 | ||
|
|
2545f1fb0f | ||
|
|
2221f81216 | ||
|
|
6b18f79ae3 | ||
|
|
230c278197 | ||
|
|
f643ac8a78 | ||
|
|
185c51e1fd | ||
|
|
cf5e9cfd42 | ||
|
|
b5cae957de | ||
|
|
59adf1b26e | ||
|
|
99b0d18e23 | ||
|
|
b9d97bc500 | ||
|
|
bd047447ee | ||
|
|
3269e233bc | ||
|
|
9d6a09d1f3 | ||
|
|
4895329adc | ||
|
|
56f1863df4 | ||
|
|
5a9b399283 | ||
|
|
c48faa3373 | ||
|
|
dc75d0504b | ||
|
|
86f4f742f5 | ||
|
|
f0262c78db | ||
|
|
8eb29d2ae0 | ||
|
|
bfabc8baee | ||
|
|
abee7895f2 | ||
|
|
90a3f99a71 | ||
|
|
904dec6389 | ||
|
|
f422d2428e | ||
|
|
0376e540d8 | ||
|
|
264b2be173 | ||
|
|
44e3f78b0c | ||
|
|
a5cc73aed5 | ||
|
|
61276b17c1 | ||
|
|
caf35a9cb9 | ||
|
|
a2d133044e | ||
|
|
a12bc95ac3 | ||
|
|
3f0b8a5db8 | ||
|
|
f801a8c14a | ||
|
|
3344db5062 | ||
|
|
1627eaa48b | ||
|
|
2da95d4a95 | ||
|
|
7aa6bdb4fa | ||
|
|
74984c8851 | ||
|
|
7fe9a1a4ca | ||
|
|
984c8b6813 | ||
|
|
99c759adc1 | ||
|
|
cebe2aaa39 | ||
|
|
0a11cdda76 | ||
|
|
d9f66d5f85 | ||
|
|
46544680f5 | ||
|
|
757cf1ebd7 | ||
|
|
88bdc0ec1d | ||
|
|
68c054c62e | ||
|
|
cff06e1053 | ||
|
|
72eeca9063 | ||
|
|
501dc891ca | ||
|
|
3a4242ddd1 | ||
|
|
589569905e | ||
|
|
fd2afa96b6 | ||
|
|
d9bc2d0816 | ||
|
|
f0219b5771 | ||
|
|
97b35f14d7 | ||
|
|
5ee8eaacf1 | ||
|
|
2e26171e59 | ||
|
|
36024f041e | ||
|
|
d2d64cce7d | ||
|
|
a69ea802ec | ||
|
|
f116044f9d | ||
|
|
ed296d684d | ||
|
|
674f6dd3db | ||
|
|
325bc08bd7 | ||
|
|
694cfe6bbe | ||
|
|
8e6f992048 | ||
|
|
496fd27759 | ||
|
|
5e5d97c813 | ||
|
|
90fbaf49dd | ||
|
|
31f7299ee0 | ||
|
|
78e92c1e24 | ||
|
|
1907f0785e | ||
|
|
13d27dd7f0 | ||
|
|
d58d1eb3ae | ||
|
|
c4c4069f39 | ||
|
|
a88481aacb | ||
|
|
08155169dc | ||
|
|
846ebd4be5 | ||
|
|
e6da287aea | ||
|
|
3e8356ee45 | ||
|
|
ade77a56d1 | ||
|
|
b42113a64c | ||
|
|
5cfacbb2d8 | ||
|
|
3e2aee6999 | ||
|
|
180f63068e | ||
|
|
26ff487d48 | ||
|
|
0ec62f1631 | ||
|
|
376d31777d | ||
|
|
16cf36da27 | ||
|
|
89aac713e8 | ||
|
|
5d865ed761 | ||
|
|
cfc86c18d8 | ||
|
|
890cb993ae | ||
|
|
818a00717c | ||
|
|
a5d8a18345 | ||
|
|
0ded2af460 | ||
|
|
2df121cff2 | ||
|
|
fbed6da0e2 | ||
|
|
075e182e67 | ||
|
|
a7db04a7ba | ||
|
|
8305e553eb | ||
|
|
c2a429fa5e | ||
|
|
8bfff75dd7 | ||
|
|
e0e7b2db13 | ||
|
|
316eace715 | ||
|
|
66ba6a5b76 | ||
|
|
8cfba4e964 | ||
|
|
5f37302f53 | ||
|
|
25386a9615 | ||
|
|
877d1f44df | ||
|
|
66f277a1f5 | ||
|
|
a794a654cf | ||
|
|
54f739edd4 | ||
|
|
44b59553a3 | ||
|
|
48ecc9d593 | ||
|
|
bdebf1c0e4 | ||
|
|
ce97c23697 | ||
|
|
1a66ec09bd | ||
|
|
edb32bb4ef | ||
|
|
0e50ee833a | ||
|
|
c5e52fa436 | ||
|
|
b94e79d14c | ||
|
|
d76c61248c | ||
|
|
222537c40c | ||
|
|
71ce9eb97d | ||
|
|
947e9ca724 | ||
|
|
489ba4ca1c | ||
|
|
7097c80407 | ||
|
|
c1f70089ad | ||
|
|
ff266cc72c | ||
|
|
2c1baa6a74 | ||
|
|
888410ee7a | ||
|
|
d0e5a719f4 | ||
|
|
1e41c3970e | ||
|
|
26f1137d7f | ||
|
|
bbb53e363b | ||
|
|
3bb3558f80 | ||
|
|
1b8e578717 | ||
|
|
f1547bde1f | ||
|
|
2bd8f7354a | ||
|
|
8260639955 | ||
|
|
096c1189b4 | ||
|
|
e277459807 | ||
|
|
4e5692b86d | ||
|
|
6d8dfd5917 | ||
|
|
4cedabd230 | ||
|
|
ba4c1538e2 | ||
|
|
a3cc646bb0 | ||
|
|
6ad9b632d1 | ||
|
|
8460bae1da | ||
|
|
a2d2724f6a | ||
|
|
b5a38073bc | ||
|
|
af40ebe8b0 | ||
|
|
469f0d1909 | ||
|
|
380f08b002 | ||
|
|
3854086010 | ||
|
|
2e181e9401 | ||
|
|
9ed40a27d7 | ||
|
|
8730a89f4e | ||
|
|
d3604c0f1c | ||
|
|
e1c26a0d35 | ||
|
|
1bee5b2117 | ||
|
|
34a538e5d2 | ||
|
|
6c1333d586 | ||
|
|
2c55234c9e | ||
|
|
33c84ff11f | ||
|
|
5f4ae46acf | ||
|
|
77ab2b33ce | ||
|
|
68600a3c6a | ||
|
|
91a2a76523 | ||
|
|
b1d2e4703c | ||
|
|
ec03207aad | ||
|
|
9e44675313 | ||
|
|
875d7b2547 | ||
|
|
049e405678 | ||
|
|
d32df961c2 | ||
|
|
27e361cc79 | ||
|
|
d55d263356 | ||
|
|
ace76a1ae2 | ||
|
|
c19e217269 | ||
|
|
250e3e8bf4 | ||
|
|
b71b2b4909 | ||
|
|
cf9d3eb226 | ||
|
|
ecf21935a8 | ||
|
|
3de7fb6fba | ||
|
|
44501d87ac | ||
|
|
d9dcc6ed06 | ||
|
|
c796ee18bf | ||
|
|
2c6ae90289 | ||
|
|
5e18a5a9c0 | ||
|
|
9281b5e58c | ||
|
|
7513a2c6c0 | ||
|
|
09f48b7142 | ||
|
|
115c1e86d9 | ||
|
|
b25322cba1 | ||
|
|
ee5c4688ce | ||
|
|
422c818c03 | ||
|
|
45c5612cb8 | ||
|
|
bde57d071b | ||
|
|
e658497301 | ||
|
|
8947b406a3 | ||
|
|
058bea721f | ||
|
|
65ef50cac5 | ||
|
|
a054dd0cbd | ||
|
|
9f50cc9c91 | ||
|
|
5aa14d3be4 | ||
|
|
a7da8576f1 | ||
|
|
695a93d619 | ||
|
|
f133c94b09 | ||
|
|
97fa83d09c | ||
|
|
e99832f2cc | ||
|
|
159060cd71 | ||
|
|
e11362df24 | ||
|
|
c64f5121d9 | ||
|
|
159175c235 | ||
|
|
f346b74847 | ||
|
|
d6311b143f | ||
|
|
9de55b2281 | ||
|
|
1a87278c79 | ||
|
|
4d3c5cf820 | ||
|
|
69ce68c109 | ||
|
|
1ef71cf246 | ||
|
|
fd8f2fb7f4 | ||
|
|
e5a2e1023e | ||
|
|
5a94bdc856 | ||
|
|
5da55b1410 | ||
|
|
6b036048b2 | ||
|
|
6b601fb718 | ||
|
|
1d1bb6cfcb | ||
|
|
4f0f952851 | ||
|
|
c154710d0a | ||
|
|
7c49b07b41 | ||
|
|
fc36f1672a | ||
|
|
8e8fe2dc64 | ||
|
|
8eb6ddfcf7 | ||
|
|
dd210f18e9 | ||
|
|
a2d5caffd9 | ||
|
|
dc5c3b24a6 | ||
|
|
6c84b3bee6 | ||
|
|
daa0b45ea6 | ||
|
|
fddef4f656 | ||
|
|
b70a00786e | ||
|
|
91851aeacc | ||
|
|
4593af7486 | ||
|
|
17d171e15f | ||
|
|
96ed1085c4 | ||
|
|
512dd093e4 | ||
|
|
7647edca34 | ||
|
|
ab638c1f0f | ||
|
|
c76a52fd34 | ||
|
|
38f6b0ea50 | ||
|
|
b57e60428e | ||
|
|
2e2fd9c49e | ||
|
|
ec076d62f7 | ||
|
|
789ae2daab | ||
|
|
67e9a65563 | ||
|
|
4d94529c14 | ||
|
|
dc9b4b01ca | ||
|
|
7d1d2fdf45 | ||
|
|
daa80309a3 | ||
|
|
7c1c5df630 | ||
|
|
23e0a0dca1 | ||
|
|
c6e885dd14 | ||
|
|
35047c70d9 | ||
|
|
5c6b5041c4 | ||
|
|
304ded0a36 | ||
|
|
975779f643 | ||
|
|
f63e78be3f | ||
|
|
172bacccb3 | ||
|
|
2c927e2487 | ||
|
|
d40722999c | ||
|
|
c107d1b691 | ||
|
|
36c32b35ad | ||
|
|
e64fd9d07d | ||
|
|
4bafb7f952 | ||
|
|
799cc6790e | ||
|
|
dfa0362eef | ||
|
|
93c1ad4059 | ||
|
|
ddd402e12e | ||
|
|
6f32051d99 | ||
|
|
f06c3110d9 | ||
|
|
f288eac2bb | ||
|
|
d584b34a45 | ||
|
|
6aebba160b | ||
|
|
639d552a5b | ||
|
|
bcdbeb8701 | ||
|
|
28fa26f31e | ||
|
|
28c972bcba | ||
|
|
ae11cf90cc | ||
|
|
2c090271d9 | ||
|
|
6a6eec30a7 | ||
|
|
a6216b5e2a | ||
|
|
022ac0d13c | ||
|
|
4f3db43686 | ||
|
|
6fb2e83c57 | ||
|
|
205f928c8e | ||
|
|
fbcc0442b6 | ||
|
|
a6eed47c9e | ||
|
|
dac2c6bb4a | ||
|
|
432848db6e | ||
|
|
c442c57f33 | ||
|
|
75bee0ae77 | ||
|
|
bc272d20bf | ||
|
|
247d523ba1 | ||
|
|
1f4c6fbb31 | ||
|
|
bf3e36f25a | ||
|
|
4e54f5fba0 | ||
|
|
09e123b6ba | ||
|
|
11b8cc74cc | ||
|
|
29ecd58933 | ||
|
|
8a40632932 | ||
|
|
74ce1e21af | ||
|
|
78136ab6e7 | ||
|
|
5fd962ff21 | ||
|
|
7e23436c1a | ||
|
|
f69f7617bf | ||
|
|
882e2d5129 | ||
|
|
450dfb14bf | ||
|
|
19db5ccd9c | ||
|
|
970294f60a | ||
|
|
021200b69b | ||
|
|
79acbf8a2c | ||
|
|
0f483d7aef | ||
|
|
a5181d2b64 | ||
|
|
bdcc1e5c57 | ||
|
|
8140e99cc5 | ||
|
|
5b74c86960 | ||
|
|
9a511ffd3e | ||
|
|
6106f4e045 | ||
|
|
3feac51d6e | ||
|
|
fea153efb1 | ||
|
|
7499594c28 | ||
|
|
c0d2dfbf78 | ||
|
|
125f6af68d | ||
|
|
aef1f7771c | ||
|
|
636ede36fd | ||
|
|
43eeb13a71 | ||
|
|
ab5e505744 | ||
|
|
d96c21144f | ||
|
|
51bdc777a8 | ||
|
|
5437c5b86f | ||
|
|
749ebb43c7 | ||
|
|
87ee779d09 | ||
|
|
c126300c1d | ||
|
|
344ec06adb | ||
|
|
deebf5cc6f | ||
|
|
cd2b1cea22 | ||
|
|
8df34707e6 | ||
|
|
ec5edc6357 | ||
|
|
c7d2d3d57b | ||
|
|
6fda5e07a2 | ||
|
|
aeeab73054 | ||
|
|
42da3d8ff3 | ||
|
|
5700aef8f2 | ||
|
|
443b7af94b | ||
|
|
3d72c9938f | ||
|
|
935e264dc8 | ||
|
|
25d3e497a6 | ||
|
|
eff5f8bb63 | ||
|
|
8a2cf5bb37 | ||
|
|
3a77eddff4 | ||
|
|
7863b4ef48 | ||
|
|
c9865e8ef3 | ||
|
|
95ef1a3763 | ||
|
|
e03c129a1c | ||
|
|
e73318f904 | ||
|
|
50613f8be5 | ||
|
|
6833a633ce | ||
|
|
da950997a9 | ||
|
|
8fbd1d5890 | ||
|
|
29a6c8a07c | ||
|
|
115364c4e6 | ||
|
|
831cfb8cb4 | ||
|
|
928e74bcc5 | ||
|
|
ae40b296f5 | ||
|
|
d704eecef0 | ||
|
|
59b57824d6 | ||
|
|
ba17605c3c | ||
|
|
eb04566d10 | ||
|
|
5e25621ab4 | ||
|
|
623ae3df3a | ||
|
|
27d1fcdb0e | ||
|
|
0c0cb3f321 | ||
|
|
244609f9ce | ||
|
|
b9754bd17c | ||
|
|
0dc3de38fe | ||
|
|
b745a38b86 | ||
|
|
78ff3eb951 | ||
|
|
d30aa4853f | ||
|
|
5186a720b1 | ||
|
|
0a8c82fe57 | ||
|
|
bf98a605b1 | ||
|
|
1b944ab3a9 | ||
|
|
a16471d68b | ||
|
|
0a9ea6af8d | ||
|
|
c81a4872e5 | ||
|
|
c08b38ea9d | ||
|
|
44417e70b7 | ||
|
|
2dfb46b88d | ||
|
|
5a9feae5ff | ||
|
|
d7658ed40e | ||
|
|
0ea446cbdf | ||
|
|
fcf15505e4 | ||
|
|
b6fc512831 | ||
|
|
d179b22e3c | ||
|
|
de06846e40 | ||
|
|
8f5bc87c1e | ||
|
|
5346db9564 | ||
|
|
5057cb1206 | ||
|
|
143ea98493 | ||
|
|
60dbe25187 | ||
|
|
0037d9b110 | ||
|
|
47470bd016 | ||
|
|
af8925398a | ||
|
|
c34faf38e6 | ||
|
|
39a48e59de | ||
|
|
e514f94db2 | ||
|
|
1b4c99e8bb | ||
|
|
25177f290e | ||
|
|
85f33f8ae4 | ||
|
|
be875c504c | ||
|
|
95832cf406 | ||
|
|
8229447803 | ||
|
|
6c08e93eb6 | ||
|
|
4ac79bf9c7 | ||
|
|
579e015441 | ||
|
|
45ae4a6af7 | ||
|
|
3d5cfdedf0 | ||
|
|
503182d9e5 | ||
|
|
8e846b2216 | ||
|
|
cebf1cc889 | ||
|
|
0fd8b21b5a | ||
|
|
20607201cf | ||
|
|
438c770ea4 | ||
|
|
8c78ac899c | ||
|
|
92f5d4b3da | ||
|
|
04307f3e3c | ||
|
|
cbc81a878c | ||
|
|
aa79358f80 | ||
|
|
fe14b36805 | ||
|
|
229d12a1cd | ||
|
|
e5f8c566ab | ||
|
|
fd2a44444c | ||
|
|
f17a4b610e | ||
|
|
bc225d0f1d | ||
|
|
f98bce62a3 | ||
|
|
a32416d089 | ||
|
|
5fb767be9c | ||
|
|
45658eea6e | ||
|
|
23b9be3c88 | ||
|
|
2d2bfccb6e | ||
|
|
cd1404d0c8 | ||
|
|
c879cb44a7 | ||
|
|
710fc7d590 | ||
|
|
2ab2f67f71 | ||
|
|
a4d5bb3a4d | ||
|
|
af20ce0957 | ||
|
|
beeb3dd66c | ||
|
|
a0255d04bd | ||
|
|
60d77c4b20 | ||
|
|
ee2cadfd6b | ||
|
|
714d3ee7e3 | ||
|
|
686b7db81e | ||
|
|
3986ddf347 | ||
|
|
1168de79ea | ||
|
|
be7a1c1c4c | ||
|
|
3d1099b8b1 | ||
|
|
7c63dd487f | ||
|
|
3e777b38b8 | ||
|
|
2f90057eb2 | ||
|
|
ea6bb2628b | ||
|
|
063e9d1586 | ||
|
|
a7ac899428 | ||
|
|
58b841f7d2 | ||
|
|
eae86a8d08 | ||
|
|
75af46e5d0 | ||
|
|
0824767f40 | ||
|
|
8001e3f87a | ||
|
|
f6f4626955 | ||
|
|
dc6931763a | ||
|
|
c85593441e | ||
|
|
c3585f20db | ||
|
|
b0ac6fa2ba | ||
|
|
83ce86eb19 | ||
|
|
60e223d087 | ||
|
|
8e3621a07d | ||
|
|
50f144a30e | ||
|
|
3b3de86eaa | ||
|
|
5a5a456ac1 | ||
|
|
dce999ebb2 | ||
|
|
35cc74106f | ||
|
|
5b9174bdca | ||
|
|
4a412c9e1b | ||
|
|
3de76d8443 | ||
|
|
ffab153ec5 | ||
|
|
4d7dca53ba | ||
|
|
a86a4ba588 | ||
|
|
d6758748fa | ||
|
|
19e6ed4d3f | ||
|
|
29de6ba149 | ||
|
|
d1df7e1483 | ||
|
|
49f41c6095 | ||
|
|
5d52dec0c1 | ||
|
|
188e6fea57 | ||
|
|
54421674c7 | ||
|
|
1b495172ae | ||
|
|
8c1f148aa0 | ||
|
|
e71108ee31 | ||
|
|
610a8bc649 | ||
|
|
6ecb29a679 | ||
|
|
d43fa1a5bd | ||
|
|
8985e91feb | ||
|
|
010cc668ae | ||
|
|
0ee53e6072 | ||
|
|
4d99251df8 | ||
|
|
aac352cb86 | ||
|
|
d8e983c558 | ||
|
|
959e57f66e | ||
|
|
b1d96935f5 | ||
|
|
12c657485f | ||
|
|
ec9f056e1b | ||
|
|
1511995a5e | ||
|
|
505f211561 | ||
|
|
73bb5a4007 | ||
|
|
d05e8ea3fe | ||
|
|
a3ca7d5bf9 | ||
|
|
9e11332d82 | ||
|
|
f076d3c524 | ||
|
|
33627b14fc | ||
|
|
6aaff100f8 | ||
|
|
0e66998d17 | ||
|
|
737c368964 | ||
|
|
bead3f16b9 | ||
|
|
698604eca1 | ||
|
|
4cf7a92423 | ||
|
|
27cc43d7c8 | ||
|
|
bf9d56c842 | ||
|
|
0fc6a5941a | ||
|
|
d2191a4e62 | ||
|
|
10d0a2d99b | ||
|
|
25fad2083e | ||
|
|
cdc47dcc83 | ||
|
|
d37f906337 | ||
|
|
4c16fc6657 | ||
|
|
59a465410d | ||
|
|
f6faf31c67 | ||
|
|
f9361e87bb | ||
|
|
49bc551889 | ||
|
|
55fece6f21 | ||
|
|
0e5a47c06a | ||
|
|
b181519229 | ||
|
|
04fd901beb | ||
|
|
b8eaf024bc | ||
|
|
ceb70f0704 | ||
|
|
21c84fc75a | ||
|
|
d70f33a5ab | ||
|
|
72d1a4bd77 | ||
|
|
e7846f1fb3 | ||
|
|
c5c7f82a28 | ||
|
|
9584d168e8 | ||
|
|
9e9250624f | ||
|
|
7a16dd44f7 | ||
|
|
da24337e86 | ||
|
|
42e6580093 | ||
|
|
464dc5b9ba | ||
|
|
d868b7eb3f | ||
|
|
7b69b9c339 | ||
|
|
6459045dc3 | ||
|
|
258550ea21 | ||
|
|
f4ff964eed | ||
|
|
682c307433 | ||
|
|
d46e877771 | ||
|
|
2341feee82 | ||
|
|
ffd56b09b9 | ||
|
|
d52ac55c03 | ||
|
|
f8904c8b1c | ||
|
|
f13d541cfe | ||
|
|
119590b235 | ||
|
|
bce8316a08 | ||
|
|
091a539cde | ||
|
|
4b678d3cfc | ||
|
|
4fa659458d | ||
|
|
859f8f2ff0 | ||
|
|
e81bfd97ae | ||
|
|
14b8df6075 | ||
|
|
85aa37bdc6 | ||
|
|
c9c426363a | ||
|
|
c9ab0af499 | ||
|
|
ad43c485d9 | ||
|
|
4de57d4627 | ||
|
|
88bb0dc4b7 | ||
|
|
cc4d58d472 | ||
|
|
b230d0b2b5 | ||
|
|
d78f456d5d | ||
|
|
ebe1c4dd16 | ||
|
|
47b11d191e | ||
|
|
b2e23e3cdc | ||
|
|
18d19c9d5a | ||
|
|
7423d3ce47 | ||
|
|
6f6826da9e | ||
|
|
fe878c4093 | ||
|
|
d224f83add | ||
|
|
8ea684d4fe | ||
|
|
ecaaae7178 | ||
|
|
a71d2a5fae | ||
|
|
6062ff1f84 | ||
|
|
7265adbf9c | ||
|
|
ab477cab02 | ||
|
|
84b34a71fe | ||
|
|
081a30d335 | ||
|
|
c8b25c217e | ||
|
|
35134cc2fe | ||
|
|
2328b1d24a | ||
|
|
fd3813d1e2 | ||
|
|
56425cbe7a | ||
|
|
f1c1bcedca | ||
|
|
16f47a3d62 | ||
|
|
f6e266c993 | ||
|
|
2c925b7a7d | ||
|
|
973a87889b | ||
|
|
6a75022c87 | ||
|
|
68b2cd7279 | ||
|
|
f3ded7c62a | ||
|
|
0e5b6c09f7 | ||
|
|
e6ec647c87 | ||
|
|
64bfa4c88e | ||
|
|
669cb5925c | ||
|
|
88c37c52b6 | ||
|
|
d060180ff2 | ||
|
|
037ed368ac | ||
|
|
497933bc33 | ||
|
|
4f9e2f5e4f | ||
|
|
7d32d006f5 | ||
|
|
d16eb6d59d | ||
|
|
05665729a0 | ||
|
|
6cbd7a88b5 | ||
|
|
f85b999cf9 | ||
|
|
630326e780 | ||
|
|
23f9019a2d | ||
|
|
ad4c2cb3eb | ||
|
|
a0a41b1000 | ||
|
|
97dfb4e2b1 | ||
|
|
6448b67c3a | ||
|
|
6a8b4258b8 | ||
|
|
bd9993f962 | ||
|
|
9e27e75dca | ||
|
|
51a387cf7f | ||
|
|
b32a9f3d09 | ||
|
|
ab9457f735 | ||
|
|
92b2abfd0d | ||
|
|
94f402a2a6 | ||
|
|
dcefad1201 | ||
|
|
0f1274669b | ||
|
|
5267c03757 | ||
|
|
5de7afb987 | ||
|
|
77eea44c9e | ||
|
|
548f6dcec1 | ||
|
|
3312702337 | ||
|
|
89d8b2592d | ||
|
|
4f99cb580e | ||
|
|
b43476bb7d | ||
|
|
4e59d41f24 | ||
|
|
3de695608a | ||
|
|
4f5712d965 | ||
|
|
67055f5090 | ||
|
|
79d379bbbf | ||
|
|
5b389469b0 | ||
|
|
8d3e50cecd | ||
|
|
92b3c06bc6 | ||
|
|
aa8981ffbe | ||
|
|
0c559fc317 | ||
|
|
53e91c934d | ||
|
|
c944eaade4 | ||
|
|
2a7a8863b3 | ||
|
|
c5112e259a | ||
|
|
5524df647c | ||
|
|
70e45ee1b4 | ||
|
|
7f8284f918 | ||
|
|
1e120171e5 | ||
|
|
93c2f55466 | ||
|
|
d38ae38cf8 | ||
|
|
4adc4ce08b | ||
|
|
7f697f8e2a | ||
|
|
1f1f554d89 | ||
|
|
7f4e6bffe7 | ||
|
|
ae918c61d9 | ||
|
|
fa799c055d | ||
|
|
f9395bcbf7 | ||
|
|
af7d05c4bf | ||
|
|
6c39357995 | ||
|
|
0fad40417e | ||
|
|
fd279366ae | ||
|
|
0ed567ac83 | ||
|
|
407540a0e0 | ||
|
|
a65938fb81 | ||
|
|
3d454ba82d | ||
|
|
515f38777c | ||
|
|
ce85b62917 | ||
|
|
0bf2b10c5e | ||
|
|
0d13579317 | ||
|
|
808f5aac3b | ||
|
|
0dcc6f74d4 | ||
|
|
3dcce48af4 | ||
|
|
e00c6353d8 | ||
|
|
5a0719daa1 | ||
|
|
371c645ac0 | ||
|
|
58fdc11dd2 | ||
|
|
2cba5caf56 | ||
|
|
ed895c3d98 | ||
|
|
80527b92d1 | ||
|
|
010959596e | ||
|
|
397d0693fa | ||
|
|
23766bde67 | ||
|
|
734d7ea417 | ||
|
|
ca0d6239dd | ||
|
|
6061a26f9a | ||
|
|
c0a42e3e50 | ||
|
|
d54d1de847 | ||
|
|
f320c1addc | ||
|
|
6d685fe433 | ||
|
|
f60bc348b1 | ||
|
|
9aa8c464ed | ||
|
|
45245629ad | ||
|
|
042a4d7ca5 | ||
|
|
771eaebd8b | ||
|
|
c3fc153c8e | ||
|
|
a53f29593c | ||
|
|
d33f22a03b | ||
|
|
1af399c5c9 | ||
|
|
7bf6bd81b3 | ||
|
|
a9f217e339 | ||
|
|
89e45e7ead | ||
|
|
07ac244142 | ||
|
|
1bf314c3ee | ||
|
|
35c0218398 | ||
|
|
4bac1687a5 | ||
|
|
b6d505f5d2 | ||
|
|
382b2304db | ||
|
|
3f9b9742f2 | ||
|
|
39ca08c081 | ||
|
|
f279a47643 | ||
|
|
05fa905890 | ||
|
|
e7417e930a | ||
|
|
2b130034ba | ||
|
|
cebe48e993 | ||
|
|
8740b4a747 | ||
|
|
01ea2ce011 | ||
|
|
be92e3d206 | ||
|
|
d5a485408b | ||
|
|
03f25851e5 | ||
|
|
a989541286 | ||
|
|
96413e6fe4 | ||
|
|
aa41b27036 | ||
|
|
9ee25c0ac2 | ||
|
|
efc957d91a | ||
|
|
44e6763794 | ||
|
|
8a38bde58c | ||
|
|
2de417b9b9 | ||
|
|
da3e54f7aa | ||
|
|
e7cabd295c | ||
|
|
4531413820 | ||
|
|
3e2265caa8 | ||
|
|
4eb07344d0 | ||
|
|
ca801c642c | ||
|
|
033f45b1e5 | ||
|
|
ebe70e4ff1 | ||
|
|
8e9cd1e4c0 | ||
|
|
a541209850 | ||
|
|
155df251f5 | ||
|
|
13c0acfc2e | ||
|
|
fec0150c26 | ||
|
|
b195be427e | ||
|
|
0b8af58518 | ||
|
|
60d72588c1 | ||
|
|
490b308a15 | ||
|
|
b4487aff3c | ||
|
|
cc2d97567c | ||
|
|
762162133b | ||
|
|
86de687668 | ||
|
|
2160315b17 | ||
|
|
7f17192c42 | ||
|
|
99af8baad0 | ||
|
|
867523475b | ||
|
|
0a4620e65a | ||
|
|
7f64c5fdf5 | ||
|
|
41ed9b9f46 | ||
|
|
d0b402c522 | ||
|
|
4977665dad | ||
|
|
3bcc360ffd | ||
|
|
85dd77b59f | ||
|
|
e7b74f5026 | ||
|
|
5e43fa4bb5 | ||
|
|
e48a31b389 | ||
|
|
33a289c177 | ||
|
|
b31fa3d511 | ||
|
|
c8f4fc4e53 | ||
|
|
3649cdcb46 | ||
|
|
e2a4999a4b | ||
|
|
e0070d0fe6 | ||
|
|
f7f080e085 | ||
|
|
4b9b9a46ee | ||
|
|
ed83f30947 | ||
|
|
5e60259c79 | ||
|
|
a815a2e59d | ||
|
|
7bf99a3d0e | ||
|
|
adedbe1d3f | ||
|
|
6cdc4374e0 | ||
|
|
c784add1ca | ||
|
|
2f1574c654 | ||
|
|
4c2e388437 | ||
|
|
46f836a6f3 | ||
|
|
bf53eeff9a | ||
|
|
76687ddeb4 | ||
|
|
0d11d762db | ||
|
|
9c1b1362c5 | ||
|
|
5e0db2b0ae | ||
|
|
ea9c08242e | ||
|
|
868f17a90e | ||
|
|
c0338703af | ||
|
|
d5a78d9b51 | ||
|
|
9ede1dec5b | ||
|
|
8e701b6813 | ||
|
|
6c796ab36c | ||
|
|
8212d6c4cb | ||
|
|
cfacb803a9 | ||
|
|
281945d8f4 | ||
|
|
d93efd65dd | ||
|
|
7094b3776c | ||
|
|
f2bf7c168e | ||
|
|
de51650dd1 | ||
|
|
3c0b2f380f | ||
|
|
b73397060d | ||
|
|
2421bc2540 | ||
|
|
741bc6da0a | ||
|
|
cf09fa5737 | ||
|
|
d1a7bcb7ad | ||
|
|
e110b2daff | ||
|
|
f4844cdf52 | ||
|
|
c36c15c49f | ||
|
|
b5813444df | ||
|
|
019f8c3c74 | ||
|
|
bd2aa25733 | ||
|
|
fccda2d4ca | ||
|
|
e4c4dcfc9f | ||
|
|
2dda3694bd | ||
|
|
eb29d4b38b | ||
|
|
35753bc220 | ||
|
|
e0e71bcbad | ||
|
|
5d7b6fbaed | ||
|
|
68fbb984aa | ||
|
|
a892e83a84 | ||
|
|
3af1df39f0 | ||
|
|
c17ce74ea4 | ||
|
|
508413b6d6 | ||
|
|
ddce847de2 | ||
|
|
76ac8f898b | ||
|
|
24a2b87b5e | ||
|
|
54e3e57c9c | ||
|
|
01d9f1ad52 | ||
|
|
f81fc1d53c | ||
|
|
8f3314a56e | ||
|
|
b9c5f0ab20 | ||
|
|
605bfa21d7 | ||
|
|
d51ef89665 | ||
|
|
fa2d5e80ab | ||
|
|
28077e0ce4 | ||
|
|
5fb52782cf | ||
|
|
6797749b8d | ||
|
|
19fc3920cd | ||
|
|
4b2ee945e9 | ||
|
|
d670a8b1ea | ||
|
|
f1cd340c0a | ||
|
|
70dcad0931 | ||
|
|
a4bafefa05 | ||
|
|
cd0ae63e0a | ||
|
|
f2e206e830 | ||
|
|
3a7688f6d2 | ||
|
|
5eeb3fa6bc | ||
|
|
8dd65971f0 | ||
|
|
6cb0450e6b | ||
|
|
dd05f18224 | ||
|
|
4f4c37071d | ||
|
|
bfddc544e1 | ||
|
|
810dd2c925 | ||
|
|
0ed259688f | ||
|
|
101e48da47 | ||
|
|
4937a932f6 | ||
|
|
46102f5bdc | ||
|
|
07a933b22e | ||
|
|
992830825e | ||
|
|
9e06074908 | ||
|
|
29419c03b6 | ||
|
|
1d0947c42a | ||
|
|
65a4b488bc | ||
|
|
8b57d2ce60 | ||
|
|
fd9573ff5b | ||
|
|
e79b52731d | ||
|
|
b7fc799e76 | ||
|
|
0ea701a37e | ||
|
|
62668757fe | ||
|
|
e68d36cf89 | ||
|
|
63ed267244 | ||
|
|
f019027508 | ||
|
|
d7895c4a65 | ||
|
|
4e6ed7db53 | ||
|
|
953ee7cd80 | ||
|
|
d9c5374386 | ||
|
|
00c09814a6 | ||
|
|
0c749a48ec | ||
|
|
050206d343 | ||
|
|
95766b514b | ||
|
|
b36a91095e | ||
|
|
ffe6e8038d | ||
|
|
6a62fb58d9 | ||
|
|
aea3762748 | ||
|
|
e54b4bc2a9 | ||
|
|
55729dc77e | ||
|
|
b75aba638f | ||
|
|
1352c15368 | ||
|
|
2f3f8e0ab9 | ||
|
|
c18942b537 | ||
|
|
edcccb2935 | ||
|
|
4111b7992c | ||
|
|
a9cfde7068 | ||
|
|
dbd21bfed8 | ||
|
|
512a23597f | ||
|
|
088de19db6 | ||
|
|
a5a38b99c9 | ||
|
|
6046ae176e | ||
|
|
0f4d565af1 | ||
|
|
0dbc880f77 | ||
|
|
ded633b99c | ||
|
|
5da3618916 | ||
|
|
8a1a438f41 | ||
|
|
45b09ce336 | ||
|
|
5efc253496 | ||
|
|
6c9ea6eb5a | ||
|
|
f0de2b7f01 | ||
|
|
cccffad793 | ||
|
|
4dc4ae48fe | ||
|
|
2b5634b3ce | ||
|
|
d47a58680f | ||
|
|
c52449cd22 | ||
|
|
4a8478addc | ||
|
|
11d1f0dee5 | ||
|
|
f7b5336435 | ||
|
|
c37161aaac | ||
|
|
6933b07769 | ||
|
|
7c34f8065a | ||
|
|
a188a9aaed | ||
|
|
b34d39bfd9 | ||
|
|
94fc935276 | ||
|
|
9083ffc2dd | ||
|
|
8bcccc69f5 | ||
|
|
ce9accdfd9 | ||
|
|
72f1128e67 | ||
|
|
09aeffc33c | ||
|
|
dd6b073e98 | ||
|
|
24d25984cd | ||
|
|
fa65741606 | ||
|
|
0b45e46785 | ||
|
|
c7b4b2d940 | ||
|
|
38740dd8bb | ||
|
|
38babe66b3 | ||
|
|
b9d99303f5 | ||
|
|
c3143636ad | ||
|
|
8c632f961f | ||
|
|
5bd167f393 | ||
|
|
fafd5159e0 | ||
|
|
371541c767 | ||
|
|
f374122630 | ||
|
|
0110ad049e | ||
|
|
67d031bbd2 | ||
|
|
51eabdb7a9 | ||
|
|
b964d4694d | ||
|
|
c8b2f56227 | ||
|
|
897ca1c380 | ||
|
|
ab7124ee52 | ||
|
|
9b05ac822a | ||
|
|
2d4b08d2c2 | ||
|
|
ef6b749300 | ||
|
|
5923c3b4db | ||
|
|
936e5135f7 | ||
|
|
d01f7830c2 | ||
|
|
26f6dde172 | ||
|
|
4393e09558 | ||
|
|
cbb1f07092 | ||
|
|
8011cba386 | ||
|
|
3c8b35f3c0 | ||
|
|
9fdd7a2754 | ||
|
|
f1d38af491 | ||
|
|
59181e5951 | ||
|
|
3316b207f1 | ||
|
|
e5be0cc27d | ||
|
|
21e2126741 | ||
|
|
511e8e465b | ||
|
|
8fdbe6c4c6 | ||
|
|
b750c4b21b | ||
|
|
64e48f29a8 | ||
|
|
b9a955f1c4 | ||
|
|
7f65af4bc9 | ||
|
|
2fcb4f4cb3 | ||
|
|
58d4e6ea20 | ||
|
|
1750f4d14b | ||
|
|
501330ced2 | ||
|
|
33fe64fd5b | ||
|
|
b422de981e | ||
|
|
4580b59c06 | ||
|
|
8ff20d7552 | ||
|
|
14482cb4f3 | ||
|
|
e0a15f9383 | ||
|
|
f6599df671 | ||
|
|
e01dd7d7df | ||
|
|
062fe9887f | ||
|
|
5bb5f45cb9 | ||
|
|
c9ba491dd7 | ||
|
|
5bdf0e3b8c | ||
|
|
19962d17c9 | ||
|
|
6313abcd76 | ||
|
|
b1f9245e65 | ||
|
|
5f233c61ff | ||
|
|
e373c20da9 | ||
|
|
8e851ea7c5 | ||
|
|
3b3739d80e | ||
|
|
ea9320f904 | ||
|
|
ec3855a142 | ||
|
|
1c63eb8883 | ||
|
|
343faa1461 | ||
|
|
1a7b845c41 | ||
|
|
bc798f8192 | ||
|
|
49c829fb44 | ||
|
|
907401154b | ||
|
|
11db6aff03 | ||
|
|
d5bffcc74d | ||
|
|
feb5c80041 | ||
|
|
9b2202caeb | ||
|
|
88a58e0155 | ||
|
|
320d5422f2 | ||
|
|
e8600824f1 | ||
|
|
420d19b1f0 | ||
|
|
f7ef6e7042 | ||
|
|
ce5e6c6a3e | ||
|
|
b71c1a8420 | ||
|
|
048779bc27 | ||
|
|
27e9879737 | ||
|
|
ba44fb3653 | ||
|
|
41dbb34913 | ||
|
|
6be3806e1f | ||
|
|
f63971cb1b | ||
|
|
8ddcb23cd7 | ||
|
|
b6503484de | ||
|
|
ee71d6e29c | ||
|
|
9017310d7e | ||
|
|
5e8c891908 | ||
|
|
fb08a3de40 | ||
|
|
8ebe51350d | ||
|
|
6be49e09f0 | ||
|
|
70afed213e | ||
|
|
5c4c7b1d9f | ||
|
|
c9b94277b8 | ||
|
|
46e930373e | ||
|
|
221d59c3d4 | ||
|
|
e1adbd7c83 | ||
|
|
afc70a4ce6 | ||
|
|
a956302025 | ||
|
|
85224b0308 | ||
|
|
da8417dd47 | ||
|
|
cad95e3433 | ||
|
|
08a1a4e208 | ||
|
|
1ab2a92661 | ||
|
|
03ad74f02c | ||
|
|
b06c3ca36a | ||
|
|
f5324e7c37 | ||
|
|
39eccedf91 | ||
|
|
ec2f5a85b3 | ||
|
|
48f7ef0a06 | ||
|
|
e5854e47f6 | ||
|
|
c46a341362 | ||
|
|
a2750f3d7b | ||
|
|
ba6d38739b | ||
|
|
af9d02dc10 | ||
|
|
fdc41be8f0 | ||
|
|
ca48ac67f1 | ||
|
|
ea54da9f9a | ||
|
|
572ae35f67 | ||
|
|
793976c382 | ||
|
|
20ad0200a3 | ||
|
|
23ea80a30f | ||
|
|
00a0629cd8 | ||
|
|
1101331c77 | ||
|
|
e7b0c4fdc0 | ||
|
|
0b3adaedf5 | ||
|
|
5b6a26ded4 | ||
|
|
be9534272c | ||
|
|
834a2ffcef | ||
|
|
6055d47993 | ||
|
|
4d734824cf | ||
|
|
70b63dfa3c | ||
|
|
4cf958bc6e | ||
|
|
61943e8fbe | ||
|
|
2195fa45cf | ||
|
|
4daec21815 | ||
|
|
4a95b41e39 | ||
|
|
24ad67e72a | ||
|
|
2c3603a4ae | ||
|
|
7c89960e93 | ||
|
|
9eaab07978 | ||
|
|
a85e13d87d | ||
|
|
2bc0986f23 | ||
|
|
642026bc49 | ||
|
|
925c93e2bd | ||
|
|
d8530c7e44 | ||
|
|
040679ad91 | ||
|
|
b5633ac84c | ||
|
|
a9073f3074 | ||
|
|
66fcf5914f | ||
|
|
92a900c8fa | ||
|
|
d8dd43b137 | ||
|
|
efca278bac | ||
|
|
f4f8a173d0 | ||
|
|
0a6539ce30 | ||
|
|
769c928978 | ||
|
|
993449f5b3 | ||
|
|
d93de77359 | ||
|
|
0667a11802 | ||
|
|
07db0beeb4 | ||
|
|
3fd0c60ace | ||
|
|
3ed9c0b105 | ||
|
|
282b5bf7e2 | ||
|
|
8c4d9ed530 | ||
|
|
70ffdf8d89 | ||
|
|
ed3d935746 | ||
|
|
95949a8c3a | ||
|
|
7937bf12b3 | ||
|
|
dc577a5065 | ||
|
|
e9b7a5c1e1 | ||
|
|
424f4ccb94 | ||
|
|
2235304d73 | ||
|
|
d56ebc20d7 | ||
|
|
c637efb58e | ||
|
|
9cea245fc2 | ||
|
|
19c4ac55c2 | ||
|
|
ea44346ad3 | ||
|
|
cf2beeb4f6 | ||
|
|
95b8364975 | ||
|
|
daaedb60a7 | ||
|
|
4a649478dc | ||
|
|
197b3ca0d1 | ||
|
|
4eb448fa54 | ||
|
|
3df597ed98 | ||
|
|
305a54811e | ||
|
|
d504404197 | ||
|
|
20684e275e |
@@ -67,7 +67,7 @@ else
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<% if (dis_key == -1)
|
||||
var page="alg_edit_district.asp"; // Maak een nieuw
|
||||
else
|
||||
|
||||
@@ -7,17 +7,22 @@
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/kenmerk_common.inc"-->
|
||||
<!-- #include file="alg.inc" -->
|
||||
|
||||
<% FCLTHeader.Requires({ plugins:["jQuery", "kenmerk"],
|
||||
js: []
|
||||
}) %>
|
||||
<%
|
||||
var dis_key = getQParamInt( "dis_key" );
|
||||
var dis_key = getQParamInt( "dis_key" );
|
||||
|
||||
var fields = [ { dbs: "alg_district_omschrijving", typ: "varchar", frm: "dis_oms" },
|
||||
{ dbs: "alg_regio_key", typ: "number", frm: "regiokey" }];
|
||||
var onrgoedlvl = "D";
|
||||
var this_alg = alg.func_enabled(dis_key, onrgoedlvl);
|
||||
user.auth_required_or_abort(this_alg.readman || this_alg.readuse);
|
||||
|
||||
var fields = [ { dbs: "alg_district_omschrijving", typ: "varchar", frm: "dis_oms" },
|
||||
{ dbs: "alg_regio_key", typ: "number", frm: "regiokey" }];
|
||||
|
||||
var warning = "";
|
||||
if (dis_key > 0)
|
||||
|
||||
@@ -7,8 +7,9 @@
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/kenmerk_common.inc"-->
|
||||
<!-- #include file="alg.inc" -->
|
||||
|
||||
<% FCLTHeader.Requires({ plugins:["jQuery"],
|
||||
js: []
|
||||
@@ -24,6 +25,10 @@
|
||||
if (einduur == -1)
|
||||
einduur = "";
|
||||
|
||||
var onrgoedlvl = "G";
|
||||
var this_alg = alg.func_enabled(bld_key, onrgoedlvl);
|
||||
user.auth_required_or_abort(this_alg.writeman || (bld_key>0&&this_alg.writeuse));
|
||||
|
||||
var fields = [ { dbs: "alg_locatie_key", typ: "key", frm: "locatiekey" },
|
||||
{ dbs: "alg_srtgebouw_key", typ: "key", frm: "bld_srtkey" },
|
||||
{ dbs: "alg_gebouw_naam", typ: "varchar", frm: "bld_naam" },
|
||||
|
||||
@@ -7,8 +7,9 @@
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/kenmerk_common.inc"-->
|
||||
<!-- #include file="alg.inc" -->
|
||||
|
||||
<% FCLTHeader.Requires({ plugins:["jQuery"],
|
||||
js: []
|
||||
@@ -16,6 +17,10 @@
|
||||
<%
|
||||
var loc_key = getQParamInt( "loc_key" );
|
||||
|
||||
var onrgoedlvl = "L";
|
||||
var this_alg = alg.func_enabled(loc_key, onrgoedlvl);
|
||||
user.auth_required_or_abort(this_alg.writeman || (loc_key>0&&this_alg.writeuse));
|
||||
|
||||
var fields = [ { dbs: "alg_district_key", typ: "number", frm: "districtkey" },
|
||||
{ dbs: "alg_locatie_code", typ: "varchar", frm: "loc_code" },
|
||||
{ dbs: "alg_locatie_omschrijving", typ: "varchar", frm: "loc_omsch" },
|
||||
|
||||
@@ -7,15 +7,20 @@
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="alg.inc" -->
|
||||
|
||||
<% FCLTHeader.Requires({ plugins:["jQuery"],
|
||||
js: []
|
||||
}) %>
|
||||
<%
|
||||
var reg_key = getQParamInt( "regio_key" );
|
||||
var reg_key = getQParamInt( "regio_key" );
|
||||
|
||||
var fields = [ { dbs: "alg_regio_omschrijving", typ: "varchar", frm: "reg_oms" }];
|
||||
var onrgoedlvl = "RG";
|
||||
var this_alg = alg.func_enabled(reg_key, onrgoedlvl);
|
||||
user.auth_required_or_abort(this_alg.writeman || (reg_key>0&&this_alg.writeuse));
|
||||
|
||||
var fields = [ { dbs: "alg_regio_omschrijving", typ: "varchar", frm: "reg_oms" }];
|
||||
|
||||
var warning = "";
|
||||
if (reg_key > 0)
|
||||
|
||||
@@ -8,8 +8,9 @@
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/kenmerk_common.inc"-->
|
||||
<!-- #include file="alg.inc" -->
|
||||
|
||||
<% FCLTHeader.Requires({ plugins:["jQuery"],
|
||||
js: []
|
||||
@@ -26,6 +27,10 @@
|
||||
if (einduur == -1)
|
||||
einduur = "";
|
||||
|
||||
var onrgoedlvl = "R";
|
||||
var this_alg = alg.func_enabled(room_key, onrgoedlvl);
|
||||
user.auth_required_or_abort(this_alg.writeman || (room_key>0&&this_alg.writeuse));
|
||||
|
||||
function uurForeign(tm)
|
||||
{
|
||||
return toTimeString(tm, false); // geen seconden
|
||||
|
||||
@@ -12,12 +12,16 @@
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="alg.inc" -->
|
||||
|
||||
<% FCLTHeader.Requires({ plugins:["jQuery"],
|
||||
js: []
|
||||
}) %>
|
||||
<%
|
||||
var autfunction = 'WEB_ALGMAN';
|
||||
var authparams = user.checkAutorisation(autfunction)
|
||||
|
||||
var srtruimte_lg_key = getQParamInt("srtruimte_lg_key", -1);
|
||||
var srtruimte_key = getFParamInt("srtruimte", -1);
|
||||
var loc_key = getFParamInt("locatiekey", -1);
|
||||
@@ -64,7 +68,7 @@ __Log("srtruimte_lg_key = " + srtruimte_lg_key);
|
||||
{
|
||||
sql = buildUpdate("alg_srtruimte_locatiegebouw", fields)
|
||||
+ " alg_srtruimte_lg_key = " + srtruimte_lg_key;
|
||||
|
||||
|
||||
var err = Oracle.Execute(sql, true);
|
||||
if (err.friendlyMsg)
|
||||
warning = err.friendlyMsg;
|
||||
@@ -74,7 +78,7 @@ __Log("srtruimte_lg_key = " + srtruimte_lg_key);
|
||||
fields.push({ dbs: "alg_srtruimte_lg_key", typ: "key", seq: "alg_s_alg_srtruimte_lg_key" });
|
||||
var regIns = buildInsert("alg_srtruimte_locatiegebouw", fields);
|
||||
var srtruimte_lg_key = regIns.sequences["alg_srtruimte_lg_key"];
|
||||
|
||||
|
||||
sql = regIns.sql;
|
||||
var err = Oracle.Execute(sql, true);
|
||||
if (err.friendlyMsg)
|
||||
|
||||
@@ -7,14 +7,19 @@
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/kenmerk_common.inc"-->
|
||||
<!-- #include file="alg.inc" -->
|
||||
|
||||
<% FCLTHeader.Requires({ plugins:["jQuery"],
|
||||
js: []
|
||||
}) %>
|
||||
<%
|
||||
var ter_key = getQParamInt( "ter_key" );
|
||||
var ter_key = getQParamInt( "ter_key" );
|
||||
|
||||
var onrgoedlvl = "T";
|
||||
var this_alg = alg.func_enabled(ter_key, onrgoedlvl);
|
||||
user.auth_required_or_abort(this_alg.writeman || (ter_key>0&&this_alg.writeuse));
|
||||
|
||||
var fields = [ { dbs: "alg_locatie_key", typ: "key", frm: "locatiekey", track: true /* afzonderlijke tracking, wel oldjsval */ },
|
||||
{ dbs: "ALG_TERREINSECTOR_OMSCHRIJVING", typ: "varchar", frm: "ter_oms" },
|
||||
|
||||
@@ -7,14 +7,19 @@
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/kenmerk_common.inc"-->
|
||||
<!-- #include file="alg.inc" -->
|
||||
|
||||
<% FCLTHeader.Requires({ plugins:["jQuery"],
|
||||
js: []
|
||||
}) %>
|
||||
<%
|
||||
var flr_key = getQParamInt( "flr_key" );
|
||||
var flr_key = getQParamInt( "flr_key" );
|
||||
|
||||
var onrgoedlvl = "V";
|
||||
var this_alg = alg.func_enabled(flr_key, onrgoedlvl);
|
||||
user.auth_required_or_abort(this_alg.writeman || (flr_key>0&&this_alg.writeuse));
|
||||
|
||||
var fields = [ { dbs: "alg_verdieping_omschrijving", typ: "varchar", frm: "flr_omschr" },
|
||||
{ dbs: "alg_verdieping_volgnr", typ: "number", frm: "flr_volgnr" },
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/iface.inc" -->
|
||||
<!-- #include file="../shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="alg.inc" -->
|
||||
|
||||
<% FCLTHeader.Requires({ plugins:["jQuery"] }); %>
|
||||
<%
|
||||
@@ -19,6 +20,8 @@ var virtueel = (getFParamInt("has_wp_virt", 0) == 1) && (Request.Form("wp_virt")
|
||||
// Bij impliciet altijd flex
|
||||
var wp_type = (S("prs_werkplek_implicit") == 1)?1:getFParamInt("wp_type");
|
||||
|
||||
var authparams = alg.checkAutorisation();
|
||||
|
||||
var fields = [// { dbs: "PRS_WERKPLEK_MODULE", typ: "varchar", frm: "" },
|
||||
{ dbs: "PRS_WERKPLEK_VOLGNR", typ: "number", frm: "wp_volgnr" },
|
||||
{ dbs: "PRS_WERKPLEK_OMSCHRIJVING", typ: "varchar", frm: "wp_oms" },
|
||||
|
||||
@@ -66,7 +66,7 @@ else
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<% if (bld_key == -1)
|
||||
var page="alg_edit_gebouw.asp"; // Maak een nieuw
|
||||
else
|
||||
|
||||
@@ -65,7 +65,7 @@ else
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<%
|
||||
if (loc_key == -1)
|
||||
var page="alg_edit_locatie.asp"; // Maak een nieuw
|
||||
|
||||
@@ -50,7 +50,7 @@ var reg_key = getQParamInt("key", -1);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<% if (reg_key == -1)
|
||||
var page="alg_edit_regio.asp"; // Maak een nieuw
|
||||
else
|
||||
|
||||
@@ -95,7 +95,7 @@ else
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<%
|
||||
if (room_key == -1)
|
||||
var page="alg_edit_ruimte.asp?room_key=" + room_key + addString; // Maak een nieuw
|
||||
|
||||
@@ -51,7 +51,7 @@ FCLTHeader.Requires({plugins:["suggest","jQuery"], js: ["jQuery-ui.js"]})
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<%
|
||||
var page="alg_edit_ruimtefunctie.asp?srtruimte_lg_key=" + srtruimte_lg_key; // Edit
|
||||
//if (srtruimte_lg_key == -1)
|
||||
|
||||
@@ -81,7 +81,7 @@ var authparams = alg.checkAutorisation();
|
||||
{title: L("lcl_menu_alg_ruimte"), action: "doSubmit('R')"},
|
||||
{title: L("lcl_menu_alg_terreinsector"), action: "doSubmit('T')"}
|
||||
];
|
||||
CreateButtons(buttons);
|
||||
CreateButtons(buttons, { entersubmit: true });
|
||||
%></div> <!-- search -->
|
||||
|
||||
<div id="result">
|
||||
|
||||
326
APPL/ALG/alg_srtruimte.asp
Normal file
326
APPL/ALG/alg_srtruimte.asp
Normal file
@@ -0,0 +1,326 @@
|
||||
<%@language = "javascript" %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: alg_srtruimte.asp
|
||||
Description: Wijzigen van srtruimte gegevens
|
||||
Parameters:
|
||||
Context:
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/iface.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/selector.inc" -->
|
||||
|
||||
<%
|
||||
FCLTHeader.Requires({js: ["jquery-ui.js"]});
|
||||
|
||||
var srtruimte_key = getQParamInt("alg_srtruimte_key", -1); // default is nieuwe
|
||||
var mode = getQParam("mode", "show");
|
||||
|
||||
if (srtruimte_key == -1 && mode == "show")
|
||||
mode = "new";
|
||||
|
||||
var authparams = user.checkAutorisation("WEB_ALGMSU");
|
||||
|
||||
var srtr_info = {};
|
||||
|
||||
if (srtruimte_key > 0)
|
||||
{ // bestaande ruimtesoort
|
||||
var sql = "SELECT r.alg_srtruimte_key"
|
||||
+ " , r.alg_srtruimte_omschrijving"
|
||||
+ " , r.alg_srtruimte_prijs"
|
||||
+ " , r.alg_srtruimte_prijs2"
|
||||
+ " , r.alg_srtruimte_prijs3"
|
||||
+ " , r.alg_srtruimte_prijs4"
|
||||
+ " , r.alg_srtruimte_prijs5"
|
||||
+ " , r.alg_srtruimte_code"
|
||||
+ " , r.prs_bevat_werkplek"
|
||||
+ " , r.prs_verhuurbaar"
|
||||
+ " , r.alg_srtruimte_t_uitvoertijd.tijdsduur uitvoertijd_t"
|
||||
+ " , r.alg_srtruimte_t_uitvoertijd.eenheid uitvoertijd_e"
|
||||
+ " , r.alg_srtruimte_verwijder"
|
||||
+ " FROM alg_srtruimte r"
|
||||
+ " WHERE alg_srtruimte_key = " + srtruimte_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
var srtr_info = { alg_srtruimte_omschrijving: oRs("alg_srtruimte_omschrijving").Value,
|
||||
alg_srtruimte_prijs: oRs("alg_srtruimte_prijs").Value,
|
||||
alg_srtruimte_prijs2: oRs("alg_srtruimte_prijs2").Value,
|
||||
alg_srtruimte_prijs3: oRs("alg_srtruimte_prijs3").Value,
|
||||
alg_srtruimte_prijs4: oRs("alg_srtruimte_prijs4").Value,
|
||||
alg_srtruimte_prijs5: oRs("alg_srtruimte_prijs5").Value,
|
||||
alg_srtruimte_code: oRs("alg_srtruimte_code").Value,
|
||||
prs_bevat_werkplek: oRs("prs_bevat_werkplek").Value,
|
||||
prs_verhuurbaar: oRs("prs_verhuurbaar").Value,
|
||||
tijd_uitvoertijd: oRs("uitvoertijd_t").Value,
|
||||
eenh_uitvoertijd: oRs("uitvoertijd_e").Value
|
||||
};
|
||||
var srtruimte_deleted = oRs("alg_srtruimte_verwijder").value != null;
|
||||
}
|
||||
oRs.close();
|
||||
}
|
||||
else
|
||||
{ // nieuwe ruimtesoort
|
||||
var srtr_info = { alg_srtruimte_omschrijving: "",
|
||||
alg_srtruimte_code: "",
|
||||
tijd_uitvoertijd: null,
|
||||
eenh_uitvoertijd: null
|
||||
};
|
||||
}
|
||||
|
||||
%>
|
||||
<html>
|
||||
<head>
|
||||
<%
|
||||
FCLTHeader.Generate();
|
||||
|
||||
if (mode == "save")
|
||||
{
|
||||
var fields = [ { dbs: "alg_srtruimte_omschrijving", typ: "varchar", frm: "omschrijving" },
|
||||
{ dbs: "alg_srtruimte_prijs", typ: "float", frm: "prijs" },
|
||||
{ dbs: "alg_srtruimte_prijs2", typ: "float", frm: "prijs2" },
|
||||
{ dbs: "alg_srtruimte_prijs3", typ: "float", frm: "prijs3" },
|
||||
{ dbs: "alg_srtruimte_prijs4", typ: "float", frm: "prijs4" },
|
||||
{ dbs: "alg_srtruimte_prijs5", typ: "float", frm: "prijs5" },
|
||||
{ dbs: "alg_srtruimte_code", typ: "varchar", frm: "code" },
|
||||
{ dbs: "prs_bevat_werkplek", typ: "check", frm: "bevatwerkplek" },
|
||||
{ dbs: "prs_verhuurbaar", typ: "check", frm: "verhuurbaar" }
|
||||
];
|
||||
|
||||
// Checken of het eenheden selectveld met dagen/uren bij "Uitvoertijd" niet readonly was en wel is meegegeven.
|
||||
// Als dit eenheden selectieveld readonly was dan is er geen waarde voor uitvoertijd ingevuld en moeten beide waarden null worden.
|
||||
fields = shared.add_time_field(fields, "alg_srtruimte_t_uitvoertijd", "uitvoertijd", "dayshours_urg");
|
||||
|
||||
// Update, delete of insert uitvoeren.
|
||||
if (srtruimte_key > 0)
|
||||
{
|
||||
var sql = buildUpdate("alg_srtruimte", fields)
|
||||
+ " alg_srtruimte_key = " + srtruimte_key;
|
||||
var err = Oracle.Execute(sql, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
fields.push( { dbs: "alg_srtruimte_key", typ: "key", seq: "alg_s_alg_srtruimte_key" } );
|
||||
var algIns = buildInsert("alg_srtruimte", fields);
|
||||
var alg_srtruimte_key = algIns.sequences["alg_srtruimte_key"];
|
||||
var err = Oracle.Execute(algIns.sql, true);
|
||||
srtruimte_key = alg_srtruimte_key;
|
||||
}
|
||||
|
||||
if (err.friendlyMsg)
|
||||
{
|
||||
%>
|
||||
<script>
|
||||
alert("<%=safe.jsstring(err.friendlyMsg)%>");
|
||||
</script>
|
||||
<%
|
||||
}
|
||||
else
|
||||
{
|
||||
%>
|
||||
<script>
|
||||
$(document).ready(function () {parent.window.location.href="alg_srtruimte.asp?mode=show&alg_srtruimte_key=<%=srtruimte_key%>";} );
|
||||
</script>
|
||||
<%
|
||||
}
|
||||
Response.End;
|
||||
}
|
||||
else if (srtruimte_key > 0 && mode == "delete")
|
||||
{
|
||||
var sql = "UPDATE alg_srtruimte"
|
||||
+ " SET alg_srtruimte_verwijder = SYSDATE"
|
||||
+ " WHERE alg_srtruimte_verwijder IS NULL"
|
||||
+ " AND alg_srtruimte_key = " + srtruimte_key;
|
||||
var err = Oracle.Execute(sql, true);
|
||||
%>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
FcltMgr.closeDetail(window, { alg_srtruimte_key: <%=srtruimte_key%>,
|
||||
warning: "<%=safe.jsstring(err.friendlyMsg)%>",
|
||||
keepForm: <%=err.friendlyMsg? "true" : "false"%>
|
||||
});
|
||||
} );
|
||||
</script>
|
||||
<%
|
||||
Response.End;
|
||||
}
|
||||
%>
|
||||
<script type="text/javascript" >
|
||||
|
||||
function alg_submit()
|
||||
{
|
||||
$("#verhuurbaar").prop("disabled", false); // Weer enabled zodat waarde ook gesubmit wordt.
|
||||
if (!validateForm("u2"))
|
||||
return false;
|
||||
|
||||
document.forms.u2.submit();
|
||||
}
|
||||
|
||||
function alg_edit()
|
||||
{
|
||||
window.location.href = "alg_srtruimte.asp?mode=edit&alg_srtruimte_key=<%=srtruimte_key%>";
|
||||
}
|
||||
|
||||
function alg_delete()
|
||||
{
|
||||
if (confirm("<%=safe.jsstring(L("lcl_R_U_sure"))%>"))
|
||||
window.location.href = "alg_srtruimte.asp?mode=delete&alg_srtruimte_key=<%=srtruimte_key%>";
|
||||
}
|
||||
|
||||
function alg_cancel()
|
||||
{
|
||||
if (<%=srtruimte_key%> > 0)
|
||||
{
|
||||
window.location.href = "alg_srtruimte.asp?mode=show&alg_srtruimte_key=<%=srtruimte_key%>";
|
||||
}
|
||||
else
|
||||
{
|
||||
FcltMgr.closeDetail(window, { cancel: true });
|
||||
}
|
||||
}
|
||||
|
||||
function alg_close(params)
|
||||
{
|
||||
<% if (srtruimte_key == -1)
|
||||
{
|
||||
%>
|
||||
if (params.cancel)
|
||||
{
|
||||
FcltMgr.closeDetail(window, params);
|
||||
return true;
|
||||
}
|
||||
<% }
|
||||
else
|
||||
{ // Bestaand ruimtesoort bewerkt, switch naar show-mode
|
||||
%>
|
||||
if (params.close)
|
||||
{
|
||||
FcltMgr.closeDetail(window, { close: true})
|
||||
}
|
||||
<% }
|
||||
%>
|
||||
if (!params.keepForm)
|
||||
window.location.href = "alg_srtruimte.asp?mode=show&alg_srtruimte_key=" + params.srtruimte_key;
|
||||
}
|
||||
|
||||
function onChangeBevatWerkplek()
|
||||
{
|
||||
// Als bevat_werkplek is aangevinkt, moet verhuurbaar ook aangevinkt worden (constraint ALG_C_PRS_WERKPLEK_VERHUURBAAR)
|
||||
if ($("#bevatwerkplek").is(":checked"))
|
||||
{
|
||||
$("#verhuurbaar").prop("checked", "checked");
|
||||
$("#verhuurbaar").prop("disabled", true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#verhuurbaar").prop("disabled", false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function onChangeUitvoertijd()
|
||||
{
|
||||
if (isNaN(parseFloat($("#uitvoertijd").val())))
|
||||
$("#dayshours_urg").prop("disabled", true);
|
||||
else
|
||||
$("#dayshours_urg").prop("disabled", false);
|
||||
}
|
||||
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
$('textarea').resize(function () { FcltMgr.resized(window) } );
|
||||
$('textarea').autogrow();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="<%=((mode == "show")? "showbody" : "editbody")%>">
|
||||
<%
|
||||
var buttons = [];
|
||||
|
||||
if (!srtruimte_deleted)
|
||||
{
|
||||
if (mode == "show")
|
||||
{
|
||||
buttons.push( {title: L("lcl_change"), action:"alg_edit()", icon: "wijzigen.png" } );
|
||||
buttons.push( {title: L("lcl_delete"), action:"alg_delete()", icon: "delete.png" } );
|
||||
}
|
||||
else
|
||||
{
|
||||
buttons.push( {title: L("lcl_submit"), action:"alg_submit()", icon: "opslaan.png" } );
|
||||
buttons.push( {title: L("lcl_cancel"), action:"alg_cancel()", icon: "undo.png" } );
|
||||
}
|
||||
}
|
||||
IFRAMER_HEADER(L("lcl_alg_srtruimte_details"), buttons);
|
||||
|
||||
if (mode == "show")
|
||||
{
|
||||
myFIELD = function (a, b, c, d, e) { ROFIELDTR(b, c, d, e) };
|
||||
myTEXTAREA = function (a, b, c, d, e) { ROTEXTAREATR(b, c, d, e) };
|
||||
myCHECKBOX = function (a, b, c, d, e) { ROCHECKBOXTR(b, c, d, e) };
|
||||
}
|
||||
else
|
||||
{
|
||||
myFIELD = RWFIELDTR;
|
||||
myTEXTAREA = RWTEXTAREATR;
|
||||
myCHECKBOX = RWCHECKBOXTR;
|
||||
}
|
||||
|
||||
if (srtruimte_deleted)
|
||||
{
|
||||
%> <div class="alg_deleted"><%=L("lcl_record_is_deleted")%></div><%
|
||||
}
|
||||
|
||||
%>
|
||||
<div id="show">
|
||||
<form name="u2"
|
||||
action="alg_srtruimte.asp?mode=save&alg_srtruimte_key=<%=srtruimte_key%>"
|
||||
method="post"
|
||||
target="hidFrameSubmit"
|
||||
onSubmit="alg_submit()">
|
||||
<%
|
||||
BLOCK_START("algInfo", safe.html(L("lcl_general_properties")));
|
||||
|
||||
ROFIELDTR( "fld", L("lcl_key"), srtruimte_key);
|
||||
myFIELD("omschrijving", "fld", L("lcl_descr"), srtr_info.alg_srtruimte_omschrijving);
|
||||
myFIELD("prijs", "fld", L("lcl_alg_alg_tarief")+" (m2)", safe.editablefloat(srtr_info.alg_srtruimte_prijs), {datatype: "float", suppressEmpty: true} );
|
||||
myFIELD("prijs2", "fld", L("lcl_alg_alg_tariefA")+" (m2)", safe.editablefloat(srtr_info.alg_srtruimte_prijs2), {datatype: "float", suppressEmpty: true} );
|
||||
myFIELD("prijs3", "fld", L("lcl_alg_alg_tariefB")+" (m2)", safe.editablefloat(srtr_info.alg_srtruimte_prijs3), {datatype: "float", suppressEmpty: true} );
|
||||
myFIELD("prijs4", "fld", L("lcl_alg_alg_tariefC")+" (m2)", safe.editablefloat(srtr_info.alg_srtruimte_prijs4), {datatype: "float", suppressEmpty: true} );
|
||||
myFIELD("prijs5", "fld", L("lcl_alg_alg_tariefD")+" (m2)", safe.editablefloat(srtr_info.alg_srtruimte_prijs5), {datatype: "float", suppressEmpty: true} );
|
||||
myFIELD("code", "fld", L("lcl_alg_srtruimte_code"), srtr_info.alg_srtruimte_code);
|
||||
myCHECKBOX("bevatwerkplek", "fldcheck", L("lcl_prs_has_workplace"), srtr_info.prs_bevat_werkplek, {html: "onChange='onChangeBevatWerkplek();'"});
|
||||
myCHECKBOX("verhuurbaar", "fldcheck", L("lcl_prs_rentable"), srtr_info.prs_verhuurbaar);
|
||||
|
||||
sql = "SELECT 'U', " + safe.quoted_sql(L("lcl_mld_hours")) + " FROM DUAL"
|
||||
+ " UNION "
|
||||
+ "SELECT 'D', " + safe.quoted_sql(L("lcl_mld_days")) + " FROM DUAL"
|
||||
+ " ORDER BY 2";
|
||||
var selectparams = { fieldName: "dayshours_urg",
|
||||
sql: sql,
|
||||
params: { id: "dayshours_urg",
|
||||
initKey: srtr_info.eenh_uitvoertijd,
|
||||
readonly: (mode == "show"),
|
||||
disable: !srtr_info.tijd_uitvoertijd
|
||||
}
|
||||
}
|
||||
myFIELD("uitvoertijd", "fldalg_uitvtijd", L("lcl_mld_stduitvoertijd"), srtr_info.tijd_uitvoertijd? Math.round(srtr_info.tijd_uitvoertijd * 100) / 100 : ""
|
||||
, {maxlength: 4, datatype: "float", html: "onChange='onChangeUitvoertijd();'", suppressEmpty: true, selector: selectparams});
|
||||
|
||||
BLOCK_END();
|
||||
|
||||
IFACE.FORM_END();
|
||||
%>
|
||||
</form>
|
||||
</div>
|
||||
<iframe src="../Shared/empty.html"
|
||||
name="hidFrameSubmit"
|
||||
FcltClose="alg_close"
|
||||
style="display:none"></iframe>
|
||||
</body>
|
||||
</html>
|
||||
83
APPL/ALG/alg_srtruimte_search.asp
Normal file
83
APPL/ALG/alg_srtruimte_search.asp
Normal file
@@ -0,0 +1,83 @@
|
||||
<%@ LANGUAGE = JavaScript %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: alg_srtruimte_search.asp
|
||||
Description: Zoekscherm ruimtesoort
|
||||
Parameters:
|
||||
Context:
|
||||
Note:
|
||||
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/iface.inc" -->
|
||||
|
||||
<%
|
||||
FCLTHeader.Requires({ plugins:["jQuery"]});
|
||||
|
||||
var autosearch = getQParamInt("autosearch", 0) == 1;
|
||||
|
||||
var authparams = user.checkAutorisation("WEB_ALGMSU");
|
||||
%>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<%
|
||||
FCLTHeader.Generate();
|
||||
%>
|
||||
|
||||
<script type="text/javascript">
|
||||
function doSubmit()
|
||||
{
|
||||
document.forms.u2.submit();
|
||||
}
|
||||
|
||||
$(document).ready(function()
|
||||
{
|
||||
<% if (autosearch) { %> document.forms.u2.submit();<%}%>
|
||||
});
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="searchbody">
|
||||
<div id="search">
|
||||
<% BLOCK_START("searchtable", L("lcl_filterblok"));%>
|
||||
<form name="u2" target="workFrame" action="alg_srtruimte_search_list.asp" method="get">
|
||||
<tr>
|
||||
<td class="searchkolom1">
|
||||
<table><!-- x rijen, 2 kolommen: label + veld -->
|
||||
<tr class="primsearch">
|
||||
<td class="label"><label for="searchtext"><%=L("lcl_descr")%>:</label></td>
|
||||
<td><input type="text" class="fldsrch wildcard" name="searchtext" id="searchtext"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td><!-- end column 1 -->
|
||||
|
||||
<td class="searchkolom2">
|
||||
<table><!-- x rijen, 2 kolommen: label + veld -->
|
||||
<%
|
||||
%>
|
||||
</table>
|
||||
</td><!-- end column 2 -->
|
||||
</tr>
|
||||
<% BLOCK_END();
|
||||
|
||||
var buttons = [ {title: L("lcl_search"), action: "doSubmit()", id: "bSearch" } ];
|
||||
CreateButtons(buttons, { entersubmit: true});
|
||||
%>
|
||||
</form>
|
||||
</div> <!-- search -->
|
||||
|
||||
<div id="result">
|
||||
<iframe width="100%" height="100%"
|
||||
src="../Shared/empty.asp"
|
||||
name="workFrame" id="workFrame"
|
||||
onload="FcltMgr.iframeLoaded(this)"
|
||||
frameborder="0" scrolling="no">
|
||||
</iframe>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
114
APPL/ALG/alg_srtruimte_search_list.asp
Normal file
114
APPL/ALG/alg_srtruimte_search_list.asp
Normal file
@@ -0,0 +1,114 @@
|
||||
<%@language = "javascript" %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: alg_srtruimte_search_list.asp
|
||||
Description: Vangt de parameters van alg_srtruimte_search op en verwerkt die tot een lijst
|
||||
Parameters:
|
||||
Context: Vanuit alg_srtruimte_search.asp
|
||||
Note:
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/resultset_table_v2.inc" -->
|
||||
|
||||
<%
|
||||
var searchtext = getQParam("searchtext", null);
|
||||
//var fkdmodule = getQParamSafe("fkdmodule", -1);
|
||||
|
||||
var outputmode = getQParamInt("outputmode", 0); // 0 = screen, 1 = print, 2 = excel etc
|
||||
var showall = getQParamInt("showall", 0) == 1;
|
||||
|
||||
var authparams = user.checkAutorisation("WEB_ALGMSU");
|
||||
|
||||
%>
|
||||
<html>
|
||||
<head>
|
||||
<%
|
||||
FCLTHeader.Generate({outputmode: outputmode});
|
||||
%>
|
||||
|
||||
<script>
|
||||
function fkd_edit(row)
|
||||
{
|
||||
var srtruimte_key = row.getAttribute("ROWKEY");
|
||||
var url = "appl/alg/alg_srtruimte.asp?alg_srtruimte_key="+srtruimte_key;
|
||||
FcltMgr.openDetail(url, "<%=L("lcl_alg_srtruimte_details")%>", {callback: FcltMgr.reload } );
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<%
|
||||
|
||||
var sql = "SELECT sr.alg_srtruimte_key"
|
||||
+ " , sr.alg_srtruimte_omschrijving"
|
||||
+ " , sr.alg_srtruimte_prijs"
|
||||
+ " , sr.alg_srtruimte_prijs2"
|
||||
+ " , sr.alg_srtruimte_prijs3"
|
||||
+ " , sr.alg_srtruimte_prijs4"
|
||||
+ " , sr.alg_srtruimte_prijs5"
|
||||
+ " , sr.alg_srtruimte_code"
|
||||
+ " , CASE WHEN sr.prs_bevat_werkplek = 1"
|
||||
+ " THEN " + safe.quoted_sql(L("lcl_yes"))
|
||||
+ " ELSE " + safe.quoted_sql(L("lcl_no"))
|
||||
+ " END bevat_werkplek"
|
||||
+ " , CASE WHEN sr.prs_verhuurbaar = 1"
|
||||
+ " THEN " + safe.quoted_sql(L("lcl_yes"))
|
||||
+ " ELSE " + safe.quoted_sql(L("lcl_no"))
|
||||
+ " END verhuurbaar"
|
||||
+ " , sr.alg_srtruimte_t_uitvoertijd.tijdsduur tijdsduur"
|
||||
+ " , sr.alg_srtruimte_t_uitvoertijd.eenheid eenheid"
|
||||
+ " FROM alg_srtruimte sr"
|
||||
+ " WHERE sr.alg_srtruimte_verwijder IS NULL"
|
||||
+ (searchtext
|
||||
? " AND sr.alg_srtruimte_upper LIKE " + safe.quoted_sql_wild("%" + searchtext + "%")
|
||||
: ""
|
||||
)
|
||||
+ " ORDER BY sr.alg_srtruimte_omschrijving";
|
||||
|
||||
function fnUitvoertijdKolom(oRs)
|
||||
{
|
||||
var tmp = "";
|
||||
if (oRs("tijdsduur").Value)
|
||||
tmp = oRs("tijdsduur").Value + " " + (oRs("eenheid").Value == "U" ? L("lcl_mld_hours") : L("lcl_mld_days"))
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
buttons = {};
|
||||
//if (canAdd)
|
||||
{
|
||||
var addurl = "appl/alg/alg_srtruimte.asp?mode=edit";
|
||||
buttons = [{ icon: "plus.png", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + L("lcl_add") + "', {callback: FcltMgr.reload })" }]
|
||||
}
|
||||
|
||||
var rst = new ResultsetTable({ sql: sql,
|
||||
keyColumn: "alg_srtruimte_key",
|
||||
ID: "algsrtruimtetable",
|
||||
showAll: showall,
|
||||
outputmode: outputmode,
|
||||
title: L("lcl_menu_alg_ruimtefuncties"),
|
||||
buttons: buttons
|
||||
});
|
||||
|
||||
rst.addColumn(new Column({caption: "Key", content: "alg_srtruimte_key"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_descr"), content: "alg_srtruimte_omschrijving"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_alg_alg_tarief"), content: "alg_srtruimte_prijs", datatype: "currency"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_alg_alg_tariefA"), content: "alg_srtruimte_prijs2", datatype: "currency"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_alg_alg_tariefB"), content: "alg_srtruimte_prijs3", datatype: "currency"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_alg_alg_tariefC"), content: "alg_srtruimte_prijs4", datatype: "currency"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_alg_alg_tariefD"), content: "alg_srtruimte_prijs5", datatype: "currency"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_alg_srtruimte_code"), content: "alg_srtruimte_code"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_prs_has_workplace"), content: "bevat_werkplek"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_prs_rentable"), content: "verhuurbaar"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_mld_stduitvoertijd"), content: fnUitvoertijdKolom}));
|
||||
|
||||
rst.addAction({ action: "fkd_edit", caption: L("lcl_edit"), isDefault: true});
|
||||
|
||||
var cnt = rst.processResultset();
|
||||
|
||||
%>
|
||||
</body>
|
||||
</html>
|
||||
@@ -71,7 +71,7 @@ else
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<% if (ter_key == -1)
|
||||
var page = "alg_edit_terreinsector.asp"; // Maak een nieuw
|
||||
else
|
||||
|
||||
@@ -75,7 +75,7 @@ else
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<% if (flr_key == -1)
|
||||
var page="alg_edit_verdieping.asp"; // Maak een nieuw
|
||||
else
|
||||
|
||||
@@ -64,7 +64,7 @@ if (wp_key > 0)
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<% if (wp_key == -1)
|
||||
var page="alg_edit_wp.asp"; // Maak een nieuw
|
||||
else
|
||||
|
||||
@@ -26,7 +26,8 @@ function API_func(APIname, APIKEY)
|
||||
|
||||
var sql2 = "SELECT prs_perslid_key, prs_perslid_naam"
|
||||
+ " FROM prs_perslid"
|
||||
+ " WHERE prs_perslid_apikey = " + safe.quoted_sql(APIKEY);
|
||||
+ " WHERE prs_perslid_apikey = " + safe.quoted_sql(APIKEY)
|
||||
+ " AND prs_perslid_verwijder IS NULL"; // Eigenlijk zou de trigger APIKEY moeten wissen bij verwijderen
|
||||
var oRs2 = Oracle.Execute(sql2);
|
||||
if (oRs2.Eof)
|
||||
{
|
||||
@@ -45,11 +46,27 @@ function API_func(APIname, APIKEY)
|
||||
loglevel: oRs("fac_api_loglevel").Value,
|
||||
usrrap_key: oRs("fac_usrrap_key").Value,
|
||||
stylesheet: oRs("fac_api_stylesheet").Value,
|
||||
import_app_key: oRs("fac_import_app_key").Value,
|
||||
options: eval("("+oRs("fac_api_options_json").Value+")"),
|
||||
viewmapping: eval("("+oRs("fac_api_viewmapping_json").Value+")")
|
||||
import_app_key: oRs("fac_import_app_key").Value
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
this.apidata.options = eval("("+oRs("fac_api_options_json").Value+")");
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
__DoLogj(e);
|
||||
this.error("Invalid api 'options': " + e.description);
|
||||
}
|
||||
try
|
||||
{
|
||||
this.apidata.viewmapping = eval("("+oRs("fac_api_viewmapping_json").Value+")");
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
this.error("Invalid api 'viewmapping': " + e.description);
|
||||
}
|
||||
|
||||
oRs2.Close();
|
||||
oRs.Close();
|
||||
// Wij doen niets met eventuele prs_perslid_key; dat doet loginTry.asp maar voor ons
|
||||
|
||||
@@ -55,7 +55,7 @@ try
|
||||
|
||||
var asJSON = getQParam("json","0")!="0";
|
||||
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
xmlReq.load(Request);
|
||||
|
||||
if (API.apidata.loglevel) __Log2File(xmlReq.xml, APIname + "_IN");
|
||||
@@ -318,7 +318,7 @@ try
|
||||
// op van het resultaat,dus maar zonder de metadata, dus alleen de facilitor/[resultnode]/
|
||||
if (stylesheet == null)
|
||||
{
|
||||
var xmldoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
|
||||
var xmldoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
|
||||
xmldoc.async = false;
|
||||
xmldoc.loadXML(xml_content);
|
||||
if (xmldoc.parseError.errorCode != 0)
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
var API = new API_func(APIname, APIKEY);
|
||||
Session("logging") = API.apidata.loglevel||0;
|
||||
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
xmlReq.load(Request);
|
||||
|
||||
XML2TEMP(xmlReq.xml, "IN");
|
||||
@@ -75,7 +75,7 @@
|
||||
|
||||
var oRsW = Oracle.Execute(whichSQL);
|
||||
var xml_nodes_arr = [];
|
||||
var xml_nodes_dom = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var xml_nodes_dom = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
|
||||
var FCLTElement = xml_nodes_dom.createElement("facilitor");
|
||||
var headerDone = false;
|
||||
@@ -104,7 +104,7 @@
|
||||
__Log("XML '" + oRsW("xmlnode").Value + "' voor key " + oRsW("fac_tracking_refkey").Value + " is " + xml_content.length + " karakters");
|
||||
|
||||
xml_nodes_arr.push(xml_content); // E<>n node
|
||||
var xmldoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
|
||||
var xmldoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
|
||||
xmldoc.async = false;
|
||||
xmldoc.loadXML(xml_content);
|
||||
xmldoc.setProperty("SelectionLanguage", "XPath");
|
||||
|
||||
@@ -35,15 +35,15 @@
|
||||
var sql = "-"; // De uiteindelijke update-sql
|
||||
var resultcode = -1; /* Zolang deze -1 is, is het nog goed. Uiteindelijk eindigt het met 0 (als goed). */
|
||||
var resulttekst = "";
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
if (API.apidata.stylesheet)
|
||||
{
|
||||
var iXsl = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var iXsl = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
if( ! iXsl.load(Server.MapPath(API.apidata.stylesheet)) )
|
||||
{
|
||||
API.error("Could not load XSL " + API.apidata.stylesheet + "\n" + iXsl.parseError.reason);
|
||||
}
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
inputXML.load(Request);
|
||||
inputXML.transformNodeToObject(iXsl, xmlReq);
|
||||
}
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
if (API.apidata.loglevel) __Log2File(xmlReq.xml, APIname + "_TUSSEN");
|
||||
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
xmlResp.appendChild(xmlResp.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""))
|
||||
|
||||
// The response
|
||||
|
||||
@@ -33,22 +33,22 @@
|
||||
var API = new API_func(APIname, APIKEY);
|
||||
var tsql = "-"; // Voor tijdelijke statement(s)
|
||||
var sql = "-"; // De uiteindelijke insert/update-sql
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
if (API.apidata.stylesheet)
|
||||
{
|
||||
var iXsl = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var iXsl = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
if( ! iXsl.load(Server.MapPath(API.apidata.stylesheet)) )
|
||||
{
|
||||
API.error("Could not load XSL " + API.apidata.stylesheet + "\n" + iXsl.parseError.reason);
|
||||
}
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
inputXML.load(Request);
|
||||
inputXML.transformNodeToObject(iXsl, xmlReq);
|
||||
}
|
||||
else
|
||||
xmlReq.load(Request);
|
||||
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
xmlResp.appendChild(xmlResp.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""))
|
||||
|
||||
// The response.
|
||||
@@ -84,20 +84,20 @@
|
||||
{
|
||||
var resultcode = -1; /* Zolang deze -1 is, is het nog goed. Uiteindelijk eindigt het met 0 (als goed). */
|
||||
var resulttekst = "";
|
||||
|
||||
|
||||
// Lees per node de (optionele) tags en waarden.
|
||||
var fields = []; // Bij te werken velden.
|
||||
var besid = bestellingen[i].getAttribute("key"); // Bij type=update/delete
|
||||
var besaction = bestellingen[i].getAttribute("type").toLowerCase();
|
||||
var nwStatus = XMLval(bestellingen[i], "status");
|
||||
|
||||
|
||||
if (besid == null) { // Voorkom problemen als key-attribuut ontbreekt!
|
||||
besid = '';
|
||||
}
|
||||
var bestelling_key = parseInt(besid, 10); // En anders bepaald bij insert!
|
||||
|
||||
|
||||
user.checkAutorisation("WEB_BESUSE"); // Dit is nog ongeacht de reservering
|
||||
|
||||
|
||||
if (besaction == 'insert') {
|
||||
resultcode = 999;
|
||||
resulttekst = "Insert unsupported";
|
||||
@@ -139,7 +139,7 @@
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof) {
|
||||
curStatus = oRs("bes_bestelling_status").value;
|
||||
|
||||
|
||||
// Feitelijke UPDATE status.
|
||||
// BESFIT: alleen vanuit status 2
|
||||
if (nwStatus == "BESFIT") {
|
||||
@@ -209,13 +209,13 @@
|
||||
resultcode = 3;
|
||||
resulttekst = "Ongeldige status "+nwStatus;
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
resultcode = 4;
|
||||
resulttekst = "Ongedefinieerde huidige status";
|
||||
}
|
||||
} // nwStatus != null
|
||||
|
||||
|
||||
if (resultcode == -1) { // nog steeds geen fouten
|
||||
resultcode = 0; // Ik heb gedaan wat ik moest en mocht doen voor deze bestelling.
|
||||
}
|
||||
@@ -245,7 +245,7 @@
|
||||
datum: nowtxt, // TODO: Beter ook xml-datum???
|
||||
besid: besid
|
||||
}
|
||||
|
||||
|
||||
var FCLTBody = xmlResp.createElement("bestelling"); // type=response
|
||||
FCLTBody.setAttribute('key', besid);
|
||||
FCLTBody.setAttribute('type', 'response');
|
||||
@@ -265,7 +265,7 @@
|
||||
//__DoLog("Ik gebruik stylesheet '"+API.apidata.stylesheet+"'");
|
||||
if (API.apidata.stylesheet)
|
||||
{
|
||||
var outputXML = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var outputXML = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
xmlResp.transformNodeToObject(iXsl, outputXML);
|
||||
Response.ContentType = "text/xml";
|
||||
Response.Write(outputXML.xml)
|
||||
|
||||
@@ -75,11 +75,11 @@ var APIKEY = getQParam("APIKEY");
|
||||
var API = new API_func(APIname, APIKEY);
|
||||
|
||||
// XML Omzetten naar equivalente JSON
|
||||
// var xmlReq = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
// var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
// xmlReq.load(Request);
|
||||
|
||||
// The response.
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
xmlResp.appendChild(xmlResp.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""))
|
||||
|
||||
var FCLTElement = xmlResp.createElement("facilitor");
|
||||
|
||||
@@ -32,10 +32,10 @@
|
||||
var sql = "-"; // De uiteindelijke insert/update-sql
|
||||
var resultcode = -1; /* Zolang deze -1 is, is het nog goed. Uiteindelijk eindigt het met 0 (als goed). */
|
||||
var resulttekst = "";
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
xmlReq.load(Request);
|
||||
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
xmlResp.appendChild(xmlResp.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""))
|
||||
|
||||
// The response.
|
||||
|
||||
@@ -27,11 +27,18 @@
|
||||
var API = new API_func(APIname, APIKEY);
|
||||
|
||||
var import_app_key = API.apidata.options['import_app_key'];
|
||||
var bytes = Request.TotalBytes;
|
||||
if (bytes == 0)
|
||||
{
|
||||
__DoLog("api_gen_import empty body posted", "#ffff00");
|
||||
Response.Write("Error: no data posted for API import");
|
||||
Response.End; // Grof maar anders AiAi, dat is nog erger
|
||||
}
|
||||
|
||||
fileStream = Server.CreateObject("ADODB.Stream");
|
||||
fileStream.Type = 1; // adTypeBinary eerst nog
|
||||
fileStream.Open();
|
||||
fileStream.Write(Request.BinaryRead(Request.TotalBytes));
|
||||
fileStream.Write(Request.BinaryRead(bytes));
|
||||
|
||||
if (API.apidata.loglevel & 1)
|
||||
fileStream.SaveToFile(Server.MapPath(rooturl + "/temp/") + "/" + customerId + "_" + APIname + ".tmp", 2); // 2=create
|
||||
@@ -48,7 +55,7 @@
|
||||
else
|
||||
var warn = res.warning;
|
||||
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
xmlResp.appendChild(xmlResp.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""));
|
||||
|
||||
// The response
|
||||
|
||||
191
APPL/API/api_hmail.asp
Normal file
191
APPL/API/api_hmail.asp
Normal file
@@ -0,0 +1,191 @@
|
||||
<%@ language = "JavaScript" %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: api_hmail.asp
|
||||
Description: API voor opvangen van hMailserver e-mails
|
||||
|
||||
Parameters: Een xml
|
||||
Status:
|
||||
Context: 1-op-1 met \UTILS\mail_receive\EventHandlers.js
|
||||
Notes: Deze API krijgen we XML binnen, en geven JSON terug.
|
||||
Dat was het eenvoudigst
|
||||
*/
|
||||
JSON_Result = true;
|
||||
THIS_FILE = "appl/api/api_hmail.asp";
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="../Shared/xml_converter.inc" -->
|
||||
<!-- #include file="../Shared/flexfiles.inc" -->
|
||||
<!-- #include file="../Shared/upload.inc" -->
|
||||
<!-- #include file="../api/api.inc" -->
|
||||
<%
|
||||
var APIname = getQParam("API");
|
||||
var APIKEY = getQParam("APIKEY");
|
||||
var API = new API_func(APIname, APIKEY);
|
||||
|
||||
function abortRejectMail(tekst)
|
||||
{
|
||||
var result = { success: false,
|
||||
message: tekst
|
||||
}
|
||||
Response.Write(JSON.stringify(result));
|
||||
Response.End;
|
||||
}
|
||||
function stripHtml(html)
|
||||
{
|
||||
// verwijder html-tags
|
||||
html = (html||"").replace(/(<([^>]+)>)/ig,"");
|
||||
//verwijder leading spaces and tabs
|
||||
html = html.replace(/^[ \t]+/gm,"");
|
||||
// verwijder lege regels
|
||||
html = html.replace(/[(\n\r)]+/g,"\n\r");
|
||||
// zet een regel die begint met : maar achter de vorige
|
||||
html = html.replace(/(\n\r:)/g,":");
|
||||
return html;
|
||||
}
|
||||
|
||||
// puur intern gebruik dus geen stylesheet conversie nodig
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
xmlReq.load(Request);
|
||||
if (xmlReq.parseError.errorCode != 0)
|
||||
{
|
||||
abortRejectMail("Error " + xmlReq.parseError.reason);
|
||||
}
|
||||
|
||||
if (API.apidata.loglevel)
|
||||
__Log2File(xmlReq.xml, APIname + "_IN");
|
||||
|
||||
var Subject = XMLval(xmlReq, "subject");
|
||||
var fromAddr = XMLval(xmlReq, "from");
|
||||
var toAddr = XMLval(xmlReq, "to");
|
||||
var htmlBody = XMLval(xmlReq, "htmlbody");
|
||||
var Body = XMLval(xmlReq, "body");
|
||||
|
||||
__Log("Subject: " + Subject);
|
||||
__Log("From: " + fromAddr);
|
||||
__Log("To: " + toAddr);
|
||||
__Log("htmlBody: " + htmlBody);
|
||||
__Log("body: " + Body);
|
||||
|
||||
var user = toAddr.split("@")[0];
|
||||
|
||||
sql = "SELECT fac_email_setting_action,"
|
||||
+ " fac_email_setting_expire,"
|
||||
+ " fac_email_setting_from,"
|
||||
+ " fac_email_setting_attachpath"
|
||||
+ " FROM fac_email_setting"
|
||||
+ " WHERE upper(fac_email_setting_user) = upper("+safe.quoted_sql(user)+")";
|
||||
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (oRs.Eof)
|
||||
{
|
||||
__Log("E-mail user niet ontvankelijk: " + user);
|
||||
abortRejectMail("Database-fout");
|
||||
}
|
||||
__Log("E-mail user ontvankelijk: " + user);
|
||||
if (oRs("fac_email_setting_expire").Value != null)
|
||||
{
|
||||
var expire = new Date(oRs("fac_email_setting_expire").Value);
|
||||
if (expire.getTime() < (new Date).getTime())
|
||||
{
|
||||
__Log("Te laat: " + expire);
|
||||
abortRejectMail("Te laat");
|
||||
}
|
||||
}
|
||||
var shouldFrom = oRs("fac_email_setting_from").Value;
|
||||
if (shouldFrom)
|
||||
{
|
||||
if (String(shouldFrom).toUpperCase() != String(fromAddr).toUpperCase())
|
||||
{
|
||||
__Log("Foute afzender. Verwacht: " + shouldFrom + ", kreeg: " + fromAddr);
|
||||
abortRejectMail("Foute afzender");
|
||||
}
|
||||
}
|
||||
var action = oRs("fac_email_setting_action").Value; // Package aanroep
|
||||
var path = oRs("fac_email_setting_attachpath").Value;
|
||||
oRs.Close();
|
||||
|
||||
var result = { success: true, path: path, attachments: [] };
|
||||
|
||||
// verwijder entries in de FAC_RESULT table zodat de action nieuwe resultaten kan schrijven
|
||||
var sql = "DELETE fac_result WHERE fac_result_sessionid = 'hMailServer'";
|
||||
Oracle.Execute(sql);
|
||||
|
||||
if (action) // Bijv "fac.processemail" of "uwva.closeorder-sample"
|
||||
{
|
||||
if (!Body || Body == "") // Voorkeur voor plaintekst
|
||||
{
|
||||
var v_body = "Mail body is leeg. HTML inhoud:\n" + stripHtml(htmlBody);
|
||||
}
|
||||
else
|
||||
{
|
||||
var v_body = Body;
|
||||
}
|
||||
sql = "BEGIN " + action + " (" + safe.quoted_sql(fromAddr) + ","
|
||||
+ safe.quoted_sql(toAddr) + ","
|
||||
+ safe.quoted_sql(Subject) + ","
|
||||
+ safe.quoted_sql(v_body) + ","
|
||||
+ "'');" // pextra
|
||||
+ "END;";
|
||||
Oracle.Execute(sql);
|
||||
// TODO: Is er ook een resultaat om terug te melden? Melding-key bijvoorbeeld?
|
||||
|
||||
// TODO: Dit is niet multi-mail-safe
|
||||
sql = "SELECT fac_result_waarde"
|
||||
+ " FROM fac_result"
|
||||
+ " WHERE fac_result_naam = 'errormsg'"
|
||||
+ " AND fac_result_sessionid = 'hMailServer'";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.Eof)
|
||||
{
|
||||
__Log(oRs("fac_result_waarde").Value);
|
||||
abortRejectMail(oRs("fac_result_waarde").Value);
|
||||
}
|
||||
oRs.Close();
|
||||
|
||||
sql = "SELECT fac_result_waarde"
|
||||
+ " FROM fac_result"
|
||||
+ " WHERE fac_result_naam = 'kenmerkpath'"
|
||||
+ " AND fac_result_sessionid = 'hMailServer'";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.Eof)
|
||||
{
|
||||
result.path = result.path + oRs("fac_result_waarde").Value;
|
||||
}
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
if (result.path)
|
||||
{
|
||||
var Attachments = xmlReq.getElementsByTagName("attachment");
|
||||
for (i=0; i < Attachments.length; i++)
|
||||
{
|
||||
var safefilename = safe.filename(XMLval(Attachments[i], "filename"));
|
||||
if (safefilename == 'tmpl_logo.gif')
|
||||
{ // Waarschijnlijk een FACILITOR bon gereply'd
|
||||
__Log("Bijlage " + safefilename + " genegeerd.");
|
||||
}
|
||||
else if (!new RegExp(S("flexallowedext"), "ig").test(safefilename))
|
||||
{
|
||||
// TODO: Misschien ook terugkoppelen aan zender?
|
||||
__DoLog("Onbekende extensie e-mail bijlage: " + safefilename + ". Bestand is niet opgeslagen.");
|
||||
}
|
||||
else
|
||||
{
|
||||
__Log(safefilename + ' bijlage (' + XMLval(Attachments[i], "size") + ' bytes) mag naar ' + result.path);
|
||||
CreateFullPath(result.path); // Hoeft hMailserver dat niet meer te doen. Eist wel dat hMail op 'onze' webserver draait
|
||||
result.attachments.push ({ sequence: i,
|
||||
safefilename: result.path + safefilename
|
||||
})
|
||||
}
|
||||
}
|
||||
// TODO: Is er ook een resultaat om terug te melden? 'Geslaagd' bijvoorbeeld?
|
||||
// Of: adm_tracking: fromAddr + ' stuurt per e-mail ' + oMessage.Attachments.Item(i).fileName
|
||||
}
|
||||
|
||||
Response.Write(JSON.stringify(result));
|
||||
Response.End;
|
||||
%>
|
||||
@@ -44,15 +44,15 @@
|
||||
|
||||
var tsql = "-"; // Voor tijdelijke statement(s)
|
||||
var sql = "-"; // De uiteindelijke insert/update-sql
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
if (API.apidata.stylesheet)
|
||||
{
|
||||
var iXsl = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var iXsl = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
if( ! iXsl.load(Server.MapPath(API.apidata.stylesheet)) )
|
||||
{
|
||||
API.error("Could not load XSL " + API.apidata.stylesheet + "\n" + iXsl.parseError.reason);
|
||||
}
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
inputXML.load(Request);
|
||||
inputXML.transformNodeToObject(iXsl, xmlReq);
|
||||
}
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
if (API.apidata.loglevel) __Log2File(xmlReq.xml, APIname + "_TUSSEN");
|
||||
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
xmlResp.appendChild(xmlResp.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""))
|
||||
|
||||
// The response.
|
||||
@@ -255,6 +255,7 @@
|
||||
|
||||
xmlResp.appendChild(FCLTElement);
|
||||
|
||||
if (API.apidata.loglevel) __Log2File(xmlResp.xml, APIname + "_TUSSEN_OUT");
|
||||
if (API.apidata.stylesheet)
|
||||
{
|
||||
// Niet super efficient dat we eerst naar tekstuele xml gaan maar ach...
|
||||
@@ -271,5 +272,6 @@
|
||||
var antwoord = JSON.stringify(xmlToJson(xmlResp), null, getQParam("pretty","0")=="1"?2:0);
|
||||
else
|
||||
var antwoord = xmlResp.xml;
|
||||
Response.Write(antwoord);
|
||||
}
|
||||
%>
|
||||
|
||||
@@ -24,383 +24,405 @@
|
||||
<!-- #include file="../api/api.inc" -->
|
||||
<!-- #include file="../mld/mld.inc" -->
|
||||
<%
|
||||
// We sturen het antwoord in UTF-8.
|
||||
Session.Codepage = 65001;
|
||||
Response.Charset = 'utf-8';
|
||||
// We sturen het antwoord in UTF-8.
|
||||
Session.Codepage = 65001;
|
||||
Response.Charset = 'utf-8';
|
||||
|
||||
var APIname = getQParam("API");
|
||||
var APIKEY = getQParam("APIKEY");
|
||||
var API = new API_func(APIname, APIKEY);
|
||||
var tsql = "-"; // Voor tijdelijke statement(s)
|
||||
var sql = "-"; // De uiteindelijke insert/update-sql
|
||||
var resultcode = -1; /* Zolang deze -1 is, is het nog goed. Uiteindelijk eindigt het met 0 (als goed). */
|
||||
var resulttekst = "";
|
||||
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
if (API.apidata.stylesheet)
|
||||
var APIname = getQParam("API");
|
||||
var APIKEY = getQParam("APIKEY");
|
||||
var API = new API_func(APIname, APIKEY);
|
||||
var tsql = "-"; // Voor tijdelijke statement(s)
|
||||
var sql = "-"; // De uiteindelijke insert/update-sql
|
||||
var resultcode = -1; /* Zolang deze -1 is, is het nog goed. Uiteindelijk eindigt het met 0 (als goed). */
|
||||
var resulttekst = "";
|
||||
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
if (API.apidata.stylesheet)
|
||||
{
|
||||
var iXsl = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
if( ! iXsl.load(Server.MapPath(API.apidata.stylesheet)) )
|
||||
{
|
||||
var iXsl = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
if( ! iXsl.load(Server.MapPath(API.apidata.stylesheet)) )
|
||||
{
|
||||
API.error("Could not load XSL " + API.apidata.stylesheet + "\n" + iXsl.parseError.reason);
|
||||
}
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
inputXML.load(Request);
|
||||
inputXML.transformNodeToObject(iXsl, xmlReq);
|
||||
API.error("Could not load XSL " + API.apidata.stylesheet + "\n" + iXsl.parseError.reason);
|
||||
}
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
inputXML.load(Request);
|
||||
inputXML.transformNodeToObject(iXsl, xmlReq);
|
||||
}
|
||||
else
|
||||
xmlReq.load(Request);
|
||||
|
||||
if (API.apidata.loglevel) __Log2File(xmlReq.xml, APIname + "_IN");
|
||||
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
xmlResp.appendChild(xmlResp.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""))
|
||||
|
||||
// The response.
|
||||
var FCLTElement = xmlResp.createElement("facilitor");
|
||||
// The response header.
|
||||
var now = new Date();
|
||||
var nowtxt = now.getFullYear()+'-'+padout(now.getMonth()+1) +'-'+padout(now.getDate()) +' '
|
||||
+padout(now.getHours()) +':'+padout(now.getMinutes())+':'+padout(now.getSeconds());
|
||||
var elmHeader = xmlResp.createElement("header");
|
||||
var headerinfo = {
|
||||
// file: String(Request.ServerVariables("SCRIPT_NAME")).toLowerCase(),
|
||||
datum: nowtxt,
|
||||
naam: user.naam(),
|
||||
custId: customerId,
|
||||
language: user.lang()
|
||||
}
|
||||
for (param in headerinfo)
|
||||
{
|
||||
var FCLTdata = xmlResp.createElement(param);
|
||||
FCLTdata.appendChild(xmlResp.createTextNode(headerinfo[param]));
|
||||
elmHeader.appendChild(FCLTdata);
|
||||
}
|
||||
FCLTElement.appendChild(elmHeader);
|
||||
|
||||
// Hier zou het echte werk moeten gebeuren nav. xmlReq
|
||||
// en FCLTElement moeten we uitbreiden met antwoorden.
|
||||
var detected ="?";
|
||||
//xmlReq.setProperty("SelectionLanguage", "XPath"); // Weet niet of noodzakelijk
|
||||
|
||||
// Dit is de meldingenloop (mochten er ooit nog anderen gaan volgen).
|
||||
var meldingen = xmlReq.getElementsByTagName("melding");
|
||||
for (i = 0; i < meldingen.length; i++)
|
||||
{
|
||||
// Lees per node de (optionele) tags en waarden.
|
||||
var fields = []; // Bij te werken velden.
|
||||
var ext_id = meldingen[i].getAttribute("key");
|
||||
var meldaction = meldingen[i].getAttribute("type").toLowerCase();
|
||||
var melddatum = XMLval(meldingen[i], "datum");
|
||||
var einddatum = XMLval(meldingen[i], "einddatum");
|
||||
//var melderemail = XMLval(meldingen[i], "melder"); // Unsupported yet
|
||||
var stdmld_key = parseInt(XMLval(meldingen[i], "stdmelding"), 10); // Numeriek
|
||||
var stdmld_sla = -1; // Normale uitvoertijd (prio door melder nog unsupported)
|
||||
//var meldprio = XMLval(meldingen[i], "prioriteit"); // Unsupported yet
|
||||
//var meldobj_id = XMLval(meldingen[i], "object"); // Unsupported yet
|
||||
var meldloc = XMLval(meldingen[i], "locatiecode");
|
||||
var meldgeb = XMLval(meldingen[i], "gebouwcode");
|
||||
var meldver = XMLval(meldingen[i], "verdiepingcode");
|
||||
var meldrnr = XMLval(meldingen[i], "ruimtecode");
|
||||
var locatie_key = -1; // Bepaald op basis van meldloc
|
||||
var plaats_key = -1; // Bepaald op basis van meldgeb/meldver/meldrnr
|
||||
var meld_oms = XMLval(meldingen[i], "omschrijving");
|
||||
//var mldkenmerken = (meldingen[i].getElementsByTagName("kenmerk"))[0].childNodes[0].nodeValue; // Unsupported yet
|
||||
var mldkenmerken = meldingen[i].getElementsByTagName("kenmerk");
|
||||
var mld_key = -1; // Bepaald na insert
|
||||
|
||||
user.checkAutorisation("WEB_MLDUSE"); // Dit is nog ongeacht de melding
|
||||
|
||||
if (ext_id == null)
|
||||
{
|
||||
resultcode = 1;
|
||||
resulttekst = "Undefined external ID (key)";
|
||||
}
|
||||
else if (meldaction != 'insert')
|
||||
{
|
||||
resultcode = 2;
|
||||
resulttekst = "Undefined operation (type)";
|
||||
}
|
||||
else
|
||||
{
|
||||
tsql = "SELECT sm.mld_stdmelding_t_uitvoertijd.tijdsduur tijdsduur"
|
||||
+ " , sm.mld_stdmelding_t_uitvoertijd.eenheid eenheid"
|
||||
+ " FROM mld_stdmelding sm"
|
||||
+ " WHERE sm.mld_stdmelding_key = " + stdmld_key
|
||||
+ " AND sm.mld_stdmelding_verwijder IS NULL";
|
||||
var oRs = Oracle.Execute(tsql);
|
||||
if (oRs.eof)
|
||||
{
|
||||
resultcode = 3;
|
||||
resulttekst = "Undefined stdmelding";
|
||||
}
|
||||
else
|
||||
xmlReq.load(Request);
|
||||
{ // Hier heb ik een geldige mld_stdmelding_key.
|
||||
stdmld_sla_tijdsduur = oRs("tijdsduur").value;
|
||||
stdmld_sla_eenheid = oRs("eenheid").value;
|
||||
|
||||
if (API.apidata.loglevel) __Log2File(xmlReq.xml, APIname + "_IN");
|
||||
fields.push({ dbs: "mld_stdmelding_key", typ: "key", val: stdmld_key });
|
||||
fields.push({ dbs: "mld_melding_t_uitvoertijd.tijdsduur", typ: "number", val: stdmld_sla_tijdsduur, obj: "MLD_T_UITVOERTIJD" });
|
||||
fields.push({ dbs: "mld_melding_t_uitvoertijd.eenheid", typ: "varchar", val: stdmld_sla_eenheid, obj: "MLD_T_UITVOERTIJD" });
|
||||
if (melddatum != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var meldaanmaakdate = XMLtoJsDate(melddatum);
|
||||
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: meldaanmaakdate });
|
||||
}
|
||||
catch (e)
|
||||
{ // Verkeerde datum-formaat, volgens spec. dan now gebruiken!
|
||||
__DoLog("Formaat ontvangen XML-datum incorrect: "+ melddatum, "#00FF00");
|
||||
meldaanmaakdate = now;
|
||||
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: meldaanmaakdate });
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: now });
|
||||
}
|
||||
// De einddatum is de meegegeven einddatum, maar als die niet wordt meegegeven is het
|
||||
// gewoon enddate_std en dat regelt de trigger wel, dus DAN MOET IK HEM NIET MEEGEVEN
|
||||
if (einddatum != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var meldeinddate = XMLtoJsDate(einddatum);
|
||||
if (meldeinddate > meldaanmaakdate)
|
||||
{
|
||||
fields.push({ dbs: "mld_melding_einddatum", typ: "datetime", val: meldeinddate });
|
||||
}
|
||||
else
|
||||
{
|
||||
// Ontvangen XML-einddatum voor begindatum, dan later volgens SLA zetten!
|
||||
__DoLog("Ontvangen XML-einddatum voor begindatum: "+ einddatum, "#00FF00");
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
// Verkeerde datum-formaat, dan later volgens SLA zetten!
|
||||
__DoLog("Formaat ontvangen XML-einddatum incorrect: "+ einddatum, "#00FF00");
|
||||
}
|
||||
}
|
||||
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
xmlResp.appendChild(xmlResp.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""))
|
||||
tsql = "SELECT alg_locatie_key "
|
||||
+ " FROM alg_v_aanweziglocatie"
|
||||
+ " WHERE alg_locatie_code="+ safe.quoted_sql(meldloc);
|
||||
var oRs = Oracle.Execute(tsql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
locatie_key = oRs("alg_locatie_key").value;
|
||||
fields.push({ dbs: "mld_alg_locatie_key", typ: "key", val: locatie_key });
|
||||
|
||||
// The response.
|
||||
var FCLTElement = xmlResp.createElement("facilitor");
|
||||
// The response header.
|
||||
var now = new Date();
|
||||
var nowtxt = now.getFullYear()+'-'+padout(now.getMonth()+1) +'-'+padout(now.getDate()) +' '
|
||||
+padout(now.getHours()) +':'+padout(now.getMinutes())+':'+padout(now.getSeconds());
|
||||
var elmHeader = xmlResp.createElement("header");
|
||||
var headerinfo = {
|
||||
// file: String(Request.ServerVariables("SCRIPT_NAME")).toLowerCase(),
|
||||
datum: nowtxt,
|
||||
naam: user.naam(),
|
||||
custId: customerId,
|
||||
language: user.lang()
|
||||
}
|
||||
for (param in headerinfo)
|
||||
{
|
||||
var FCLTdata = xmlResp.createElement(param);
|
||||
FCLTdata.appendChild(xmlResp.createTextNode(headerinfo[param]));
|
||||
elmHeader.appendChild(FCLTdata);
|
||||
}
|
||||
FCLTElement.appendChild(elmHeader);
|
||||
tsql = "SELECT alg_gebouw_key "
|
||||
+ " FROM alg_v_aanweziggebouw"
|
||||
+ " WHERE alg_locatie_key ="+ locatie_key
|
||||
+ " AND alg_gebouw_code="+ safe.quoted_sql(meldgeb);
|
||||
var oRs = Oracle.Execute(tsql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
plaats_key = oRs("alg_gebouw_key").value;
|
||||
|
||||
// Hier zou het echte werk moeten gebeuren nav. xmlReq
|
||||
// en FCLTElement moeten we uitbreiden met antwoorden.
|
||||
var detected ="?";
|
||||
// xmlReq.setProperty("SelectionLanguage", "XPath"); // Weet niet of noodzakelijk
|
||||
tsql = "SELECT alg_verdieping_key "
|
||||
+ " FROM alg_v_aanwezigverdieping"
|
||||
+ " WHERE alg_gebouw_key ="+ plaats_key
|
||||
+ " AND alg_verdieping_code="+ safe.quoted_sql(meldver);
|
||||
var oRs = Oracle.Execute(tsql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
plaats_key = oRs("alg_verdieping_key").value;
|
||||
|
||||
// Dit is de meldingenloop (mochten er ooit nog anderen gaan volgen).
|
||||
var meldingen = xmlReq.getElementsByTagName("melding");
|
||||
for (i=0; i < meldingen.length; i++)
|
||||
{
|
||||
// Lees per node de (optionele) tags en waarden.
|
||||
var fields = []; // Bij te werken velden.
|
||||
var ext_id = meldingen[i].getAttribute("key");
|
||||
var meldaction = meldingen[i].getAttribute("type").toLowerCase();
|
||||
var melddatum = XMLval(meldingen[i], "datum");
|
||||
var einddatum = XMLval(meldingen[i], "einddatum");
|
||||
//var melderemail = XMLval(meldingen[i], "melder"); // Unsupported yet
|
||||
var stdmld_key = parseInt(XMLval(meldingen[i], "stdmelding"), 10); // Numeriek
|
||||
var stdmld_sla = -1; // Normale uitvoertijd (prio door melder nog unsupported)
|
||||
//var meldprio = XMLval(meldingen[i], "prioriteit"); // Unsupported yet
|
||||
//var meldobj_id = XMLval(meldingen[i], "object"); // Unsupported yet
|
||||
var meldloc = XMLval(meldingen[i], "locatiecode");
|
||||
var meldgeb = XMLval(meldingen[i], "gebouwcode");
|
||||
var meldver = XMLval(meldingen[i], "verdiepingcode");
|
||||
var meldrnr = XMLval(meldingen[i], "ruimtecode");
|
||||
var locatie_key = -1; // Bepaald op basis van meldloc
|
||||
var plaats_key = -1; // Bepaald op basis van meldgeb/meldver/meldrnr
|
||||
var meld_oms = XMLval(meldingen[i], "omschrijving");
|
||||
//var mldkenmerken = (meldingen[i].getElementsByTagName("kenmerk"))[0].childNodes[0].nodeValue; // Unsupported yet
|
||||
var mldkenmerken = meldingen[i].getElementsByTagName("kenmerk");
|
||||
var mld_key = -1; // Bepaald na insert
|
||||
|
||||
user.checkAutorisation("WEB_MLDUSE"); // Dit is nog ongeacht de melding
|
||||
|
||||
if (ext_id == null) {
|
||||
resultcode = 1;
|
||||
resulttekst = "Undefined external ID (key)";
|
||||
} else if (meldaction != 'insert') {
|
||||
resultcode = 2;
|
||||
resulttekst = "Undefined operation (type)";
|
||||
} else {
|
||||
tsql = "SELECT mld_stdmelding_uitvoertijd "
|
||||
+ " FROM mld_stdmelding"
|
||||
+ " WHERE mld_stdmelding_key="+ stdmld_key
|
||||
+ " AND mld_stdmelding_verwijder IS NULL";
|
||||
tsql = "SELECT alg_ruimte_key "
|
||||
+ " FROM alg_v_aanwezigruimte"
|
||||
+ " WHERE alg_verdieping_key ="+ plaats_key
|
||||
+ " AND alg_ruimte_nr="+ safe.quoted_sql(meldrnr);
|
||||
var oRs = Oracle.Execute(tsql);
|
||||
if (oRs.eof) {
|
||||
resultcode = 3;
|
||||
resulttekst = "Undefined stdmelding";
|
||||
} else {
|
||||
// Hier heb ik een geldige mld_stdmelding_key.
|
||||
stdmld_sla = oRs("mld_stdmelding_uitvoertijd").value;
|
||||
|
||||
fields.push({ dbs: "mld_stdmelding_key", typ: "key", val: stdmld_key });
|
||||
fields.push({ dbs: "mld_melding_uitvoertijd", typ: "number", val: stdmld_sla });
|
||||
if (melddatum != null) {
|
||||
try {
|
||||
var meldaanmaakdate = XMLtoJsDate(melddatum);
|
||||
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: meldaanmaakdate });
|
||||
}
|
||||
catch (e) {
|
||||
// Verkeerde datum-formaat, volgens spec. dan now gebruiken!
|
||||
__DoLog("Formaat ontvangen XML-datum incorrect: "+ melddatum, "#00FF00");
|
||||
meldaanmaakdate = now;
|
||||
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: meldaanmaakdate });
|
||||
}
|
||||
} else {
|
||||
fields.push({ dbs: "mld_melding_datum", typ: "datetime", val: now });
|
||||
}
|
||||
// De einddatum is de meegegeven einddatum, maar als die niet wordt meegegeven is het
|
||||
// gewoon enddate_std en dat regelt de trigger wel, dus DAN MOET IK HEM NIET MEEGEVEN
|
||||
if (einddatum != null) {
|
||||
try {
|
||||
var meldeinddate = XMLtoJsDate(einddatum);
|
||||
if (meldeinddate > meldaanmaakdate) {
|
||||
fields.push({ dbs: "mld_melding_einddatum", typ: "datetime", val: meldeinddate });
|
||||
}
|
||||
else {
|
||||
// Ontvangen XML-einddatum voor begindatum, dan later volgens SLA zetten!
|
||||
__DoLog("Ontvangen XML-einddatum voor begindatum: "+ einddatum, "#00FF00");
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
// Verkeerde datum-formaat, dan later volgens SLA zetten!
|
||||
__DoLog("Formaat ontvangen XML-einddatum incorrect: "+ einddatum, "#00FF00");
|
||||
}
|
||||
}
|
||||
|
||||
tsql = "SELECT alg_locatie_key "
|
||||
+ " FROM alg_v_aanweziglocatie"
|
||||
+ " WHERE alg_locatie_code="+ safe.quoted_sql(meldloc);
|
||||
var oRs = Oracle.Execute(tsql);
|
||||
if (!oRs.eof) {
|
||||
locatie_key = oRs("alg_locatie_key").value;
|
||||
fields.push({ dbs: "mld_alg_locatie_key", typ: "key", val: locatie_key });
|
||||
|
||||
tsql = "SELECT alg_gebouw_key "
|
||||
+ " FROM alg_v_aanweziggebouw"
|
||||
+ " WHERE alg_locatie_key ="+ locatie_key
|
||||
+ " AND alg_gebouw_code="+ safe.quoted_sql(meldgeb);
|
||||
var oRs = Oracle.Execute(tsql);
|
||||
if (!oRs.eof) {
|
||||
plaats_key = oRs("alg_gebouw_key").value;
|
||||
|
||||
tsql = "SELECT alg_verdieping_key "
|
||||
+ " FROM alg_v_aanwezigverdieping"
|
||||
+ " WHERE alg_gebouw_key ="+ plaats_key
|
||||
+ " AND alg_verdieping_code="+ safe.quoted_sql(meldver);
|
||||
var oRs = Oracle.Execute(tsql);
|
||||
if (!oRs.eof) {
|
||||
plaats_key = oRs("alg_verdieping_key").value;
|
||||
|
||||
tsql = "SELECT alg_ruimte_key "
|
||||
+ " FROM alg_v_aanwezigruimte"
|
||||
+ " WHERE alg_verdieping_key ="+ plaats_key
|
||||
+ " AND alg_ruimte_nr="+ safe.quoted_sql(meldrnr);
|
||||
var oRs = Oracle.Execute(tsql);
|
||||
if (!oRs.eof) {
|
||||
plaats_key = oRs("alg_ruimte_key").value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (plaats_key != -1) {
|
||||
fields.push({ dbs: "mld_alg_onroerendgoed_keys", typ: "key", val: plaats_key });
|
||||
}
|
||||
}
|
||||
|
||||
fields = fields.concat(
|
||||
[ { dbs: "mld_melding_key", typ: "key", seq: "mld_s_mld_melding_key" },
|
||||
{ dbs: "mld_melding_module", typ: "varchar", val: "MLD" },
|
||||
{ dbs: "mld_meldbron_key", typ: "key", val: 6 }, // system
|
||||
{ dbs: "mld_melding_omschrijving", typ: "varchar", val: meld_oms, len: 4000 },
|
||||
{ dbs: "prs_kostenplaats_key", typ: "key", val: user.afdeling().prs_kostenplaats_key() },
|
||||
{ dbs: "prs_perslid_key", typ: "key", val: user_key },
|
||||
{ dbs: "prs_perslid_key_voor", typ: "key", val: user_key },
|
||||
{ dbs: "mld_melding_spoed", typ: "key", val: 3 }, // default (frontend) = 3
|
||||
{ dbs: "mld_melding_externnr", typ: "varchar", val: ext_id, len: 30 }
|
||||
]);
|
||||
|
||||
// We weten wat te inserten, nu nog uitvoeren; rechten voldoende afgedekt via MLDUSE-check hierboven?
|
||||
|
||||
if (resultcode == -1) { // nog steeds geen fouten
|
||||
var mldIns = buildInsert("mld_melding", fields, { noValidateToken: true });
|
||||
mld_key = mldIns.sequences["mld_melding_key"];
|
||||
|
||||
sql = mldIns.sql;
|
||||
oRs = Oracle.Execute(sql);
|
||||
|
||||
// Zetten van de status op ingevoerd en afhandelen van de tracking.
|
||||
mld.setmeldingstatus(mld_key, 2); // Zorgt ook voor tracking & daarmee notificatie.
|
||||
|
||||
// Eventuele (gewijzigde) objecten zijn nu ook opgeslagen. Nu kan de definitieve mld_melding.mld_melding_einddatum_std bepaald en gezet worden.
|
||||
//mld.updatestdeinddatum(mld_key); // Unsupported yet. So update of mld_melding_einddatum_std not needed yet.
|
||||
|
||||
// De kenmerken.
|
||||
for (j=0; j < mldkenmerken.length; j++)
|
||||
{
|
||||
var kenmerk_naam = mldkenmerken[j].getAttribute("naam");
|
||||
if (mldkenmerken[j].childNodes.length > 0)
|
||||
var kenmerk_waarde = mldkenmerken[j].childNodes[0].nodeValue;
|
||||
else
|
||||
var kenmerk_waarde = "";
|
||||
//Response.Write(kenmerk_naam);
|
||||
//Response.Write(kenmerk_waarde);
|
||||
// Zoek het kenmerk op naam terug
|
||||
ksql = "SELECT k.mld_kenmerk_key, sk.mld_srtkenmerk_kenmerktype, sk.mld_srtkenmerk_lengte "
|
||||
+ " FROM mld_kenmerk k"
|
||||
+ " , mld_srtkenmerk sk"
|
||||
+ " , mld_stdmelding s"
|
||||
+ " , mld_discipline d"
|
||||
+ " WHERE s.mld_ins_discipline_key = d.ins_discipline_key"
|
||||
+ " AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key "
|
||||
+ " AND sk.mld_srtkenmerk_upper = " + safe.quoted_sql_upper(kenmerk_naam)
|
||||
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
|
||||
+ " AND s.mld_stdmelding_key = " + stdmld_key
|
||||
+ " AND ((k.mld_stdmelding_key = s.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')"
|
||||
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key AND k.mld_kenmerk_niveau = 'D')"
|
||||
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T'))";
|
||||
|
||||
var oRs = Oracle.Execute(ksql);
|
||||
|
||||
if (!oRs.eof)
|
||||
{
|
||||
var kenmerk_key = oRs("mld_kenmerk_key").value;
|
||||
var kenmerk_type = oRs("mld_srtkenmerk_kenmerktype").value;
|
||||
var kenmerk_lengte = oRs("mld_srtkenmerk_lengte").value;
|
||||
|
||||
ksql = "SELECT km.mld_kenmerkmelding_key "
|
||||
+ " FROM mld_kenmerkmelding km "
|
||||
+ " WHERE km.mld_melding_key = " + mld_key
|
||||
+ " AND km.mld_kenmerk_key = " + kenmerk_key;
|
||||
var oRs = Oracle.Execute(ksql);
|
||||
|
||||
switch (kenmerk_type)
|
||||
{
|
||||
case 'C':
|
||||
{
|
||||
// we ondersteunen alleen nog maar karakter velden.
|
||||
if (!oRs.eof)
|
||||
{
|
||||
var kenmerkmelding_key = oRs("mld_kenmerkmelding_key").value;
|
||||
ksql = "UPDATE mld_kenmerkmelding"
|
||||
+ " SET mld_kenmerkmelding_waarde = " + safe.quoted_sql(kenmerk_waarde)
|
||||
+ " WHERE mld_kenmerkmelding_key = " + kenmerkmelding_key;
|
||||
}
|
||||
else
|
||||
{
|
||||
ksql = "INSERT INTO mld_kenmerkmelding (mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_waarde) "
|
||||
+ "VALUES (" + kenmerk_key + ", " + mld_key + ", " + safe.quoted_sql(kenmerk_waarde) + ")";
|
||||
}
|
||||
Oracle.Execute(ksql);
|
||||
break;
|
||||
}
|
||||
case 'N':
|
||||
{
|
||||
// we ondersteunen alleen nog maar karakter velden.
|
||||
if (!oRs.eof)
|
||||
{
|
||||
var kenmerkmelding_key = oRs("mld_kenmerkmelding_key").value;
|
||||
ksql = "UPDATE mld_kenmerkmelding"
|
||||
+ " SET mld_kenmerkmelding_waarde = " + safe.quoted_sql(kenmerk_waarde)
|
||||
+ " WHERE mld_kenmerkmelding_key = " + kenmerkmelding_key;
|
||||
}
|
||||
else
|
||||
{
|
||||
ksql = "INSERT INTO mld_kenmerkmelding (mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_waarde) "
|
||||
+ "VALUES (" + kenmerk_key + ", " + mld_key + ", " + safe.quoted_sql(kenmerk_waarde) + ")";
|
||||
}
|
||||
Oracle.Execute(ksql);
|
||||
break;
|
||||
}
|
||||
case "M": // Folder met bijlagen
|
||||
{
|
||||
//Response.Write(kenmerk_naam);
|
||||
var bijlagen = mldkenmerken[j].getElementsByTagName("bijlage");
|
||||
var bi;
|
||||
for (bi = 0; bi < bijlagen.length; bi++)
|
||||
{
|
||||
var Attachment = XMLval(bijlagen[bi], "attachment");
|
||||
var Name = XMLval(bijlagen[bi], "name");
|
||||
var Size = XMLval(bijlagen[bi], "size");
|
||||
//Response.Write("Name: " + Name + " size: " + Size);
|
||||
if (Attachment && Name && Size)
|
||||
{
|
||||
var SafeName = safe.filename(Name);
|
||||
var params = flexProps("MLD", mld_key, String(kenmerk_key), "M");
|
||||
if (params.extFilter)
|
||||
{
|
||||
var regFilter = params.extFilter;
|
||||
regFilter = regFilter.replace(/( |,|;)/g,"|"); // Altijd | karakter
|
||||
regFilter = ".*\\." + "(" + regFilter + ")$"; // er moet een punt voor en extensie is aan het einde
|
||||
}
|
||||
else
|
||||
regFilter = ".*";
|
||||
if (!new RegExp(S("flexAllowedExt"), "ig").test(SafeName) ||
|
||||
!new RegExp(regFilter, "ig").test(SafeName))
|
||||
{
|
||||
__DoLog("Unsafe SOAP file '{0}' ignored.".format(SafeName), "#FFFF00");
|
||||
}
|
||||
else
|
||||
{
|
||||
__Log("Start saving: " + params.AttachPath + SafeName);
|
||||
CreateFullPath(params.AttachPath);
|
||||
VB_SaveFile(params.AttachPath + SafeName, Attachment)
|
||||
__Log("Done saving: " + params.AttachPath + SafeName);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
oRs.Close();
|
||||
}
|
||||
}
|
||||
|
||||
resultcode = 0; // Ik heb gedaan wat ik moest en mocht doen voor deze melding.
|
||||
// En nog maar even de aanname dat een extern systeem niet aan workflows/ktos doet?
|
||||
}
|
||||
} // end geldige stdmld_key
|
||||
} // end geldige ext_id
|
||||
|
||||
var binfo = {
|
||||
returncode: resultcode,
|
||||
returntekst: resulttekst,
|
||||
// executed:sql, // debug
|
||||
datum: nowtxt,
|
||||
meldingnr: mld_key
|
||||
}
|
||||
|
||||
var FCLTBody = xmlResp.createElement("melding"); // type=response
|
||||
FCLTBody.setAttribute('key', ext_id); // Let op: key van de aanroeper!
|
||||
FCLTBody.setAttribute('type', 'response');
|
||||
for (param in binfo)
|
||||
{
|
||||
var FCLTdata = xmlResp.createElement(param);
|
||||
FCLTdata.appendChild(xmlResp.createTextNode(binfo[param]));
|
||||
FCLTBody.appendChild(FCLTdata);
|
||||
if (!oRs.eof) {
|
||||
plaats_key = oRs("alg_ruimte_key").value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FCLTElement.appendChild(FCLTBody);
|
||||
} // end for
|
||||
// Alle melding-nodes zijn behandeld.
|
||||
if (plaats_key != -1)
|
||||
{
|
||||
fields.push({ dbs: "mld_alg_onroerendgoed_keys", typ: "key", val: plaats_key });
|
||||
}
|
||||
}
|
||||
|
||||
xmlResp.appendChild(FCLTElement);
|
||||
fields = fields.concat(
|
||||
[ { dbs: "mld_melding_key", typ: "key", seq: "mld_s_mld_melding_key" },
|
||||
{ dbs: "mld_melding_module", typ: "varchar", val: "MLD" },
|
||||
{ dbs: "mld_meldbron_key", typ: "key", val: 6 }, // system
|
||||
{ dbs: "mld_melding_omschrijving", typ: "varchar", val: meld_oms, len: 4000 },
|
||||
{ dbs: "prs_kostenplaats_key", typ: "key", val: user.afdeling().prs_kostenplaats_key() },
|
||||
{ dbs: "prs_perslid_key", typ: "key", val: user_key },
|
||||
{ dbs: "prs_perslid_key_voor", typ: "key", val: user_key },
|
||||
{ dbs: "mld_melding_spoed", typ: "key", val: 3 }, // default (frontend) = 3
|
||||
{ dbs: "mld_melding_externnr", typ: "varchar", val: ext_id, len: 30 }
|
||||
]);
|
||||
|
||||
if (API.apidata.stylesheet)
|
||||
{
|
||||
// Niet super efficient dat we eerst naar tekstuele xml gaan maar ach...
|
||||
STR2Stream(xmlResp.xml, API.apidata.stylesheet, Response, {});
|
||||
}
|
||||
else
|
||||
{
|
||||
Response.ContentType = "text/xml";
|
||||
Response.Write(xmlResp.xml)
|
||||
}
|
||||
// We weten wat te inserten, nu nog uitvoeren; rechten voldoende afgedekt via MLDUSE-check hierboven?
|
||||
|
||||
if (resultcode == -1)
|
||||
{ // nog steeds geen fouten
|
||||
var mldIns = buildInsert("mld_melding", fields, { noValidateToken: true });
|
||||
mld_key = mldIns.sequences["mld_melding_key"];
|
||||
|
||||
sql = mldIns.sql;
|
||||
oRs = Oracle.Execute(sql);
|
||||
|
||||
// Zetten van de status op ingevoerd en afhandelen van de tracking.
|
||||
mld.setmeldingstatus(mld_key, 2); // Zorgt ook voor tracking & daarmee notificatie.
|
||||
|
||||
// Eventuele (gewijzigde) objecten zijn nu ook opgeslagen. Nu kan de definitieve mld_melding.mld_melding_einddatum_std bepaald en gezet worden.
|
||||
//mld.updatestdeinddatum(mld_key); // Unsupported yet. So update of mld_melding_einddatum_std not needed yet.
|
||||
|
||||
// De kenmerken.
|
||||
for (j=0; j < mldkenmerken.length; j++)
|
||||
{
|
||||
var kenmerk_naam = mldkenmerken[j].getAttribute("naam");
|
||||
if (mldkenmerken[j].childNodes.length > 0)
|
||||
var kenmerk_waarde = mldkenmerken[j].childNodes[0].nodeValue;
|
||||
else
|
||||
var kenmerk_waarde = "";
|
||||
//Response.Write(kenmerk_naam);
|
||||
//Response.Write(kenmerk_waarde);
|
||||
// Zoek het kenmerk op naam terug
|
||||
ksql = "SELECT k.mld_kenmerk_key, sk.mld_srtkenmerk_kenmerktype, sk.mld_srtkenmerk_lengte "
|
||||
+ " FROM mld_kenmerk k"
|
||||
+ " , mld_srtkenmerk sk"
|
||||
+ " , mld_stdmelding s"
|
||||
+ " , mld_discipline d"
|
||||
+ " WHERE s.mld_ins_discipline_key = d.ins_discipline_key"
|
||||
+ " AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key "
|
||||
+ " AND k.mld_kenmerk_verwijder IS NULL "
|
||||
+ " AND sk.mld_srtkenmerk_upper = " + safe.quoted_sql_upper(kenmerk_naam)
|
||||
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
|
||||
+ " AND s.mld_stdmelding_key = " + stdmld_key
|
||||
+ " AND ((k.mld_stdmelding_key = s.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')"
|
||||
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key AND k.mld_kenmerk_niveau = 'D')"
|
||||
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T'))";
|
||||
|
||||
var oRs = Oracle.Execute(ksql);
|
||||
|
||||
if (!oRs.eof)
|
||||
{
|
||||
var kenmerk_key = oRs("mld_kenmerk_key").value;
|
||||
var kenmerk_type = oRs("mld_srtkenmerk_kenmerktype").value;
|
||||
var kenmerk_lengte = oRs("mld_srtkenmerk_lengte").value;
|
||||
|
||||
ksql = "SELECT km.mld_kenmerkmelding_key "
|
||||
+ " FROM mld_kenmerkmelding km "
|
||||
+ " WHERE km.mld_melding_key = " + mld_key
|
||||
+ " AND km.mld_kenmerk_key = " + kenmerk_key;
|
||||
var oRs = Oracle.Execute(ksql);
|
||||
|
||||
switch (kenmerk_type)
|
||||
{
|
||||
case 'C':
|
||||
{
|
||||
// we ondersteunen alleen nog maar karakter velden.
|
||||
if (!oRs.eof)
|
||||
{
|
||||
var kenmerkmelding_key = oRs("mld_kenmerkmelding_key").value;
|
||||
ksql = "UPDATE mld_kenmerkmelding"
|
||||
+ " SET mld_kenmerkmelding_waarde = " + safe.quoted_sql(kenmerk_waarde)
|
||||
+ " WHERE mld_kenmerkmelding_key = " + kenmerkmelding_key;
|
||||
}
|
||||
else
|
||||
{
|
||||
ksql = "INSERT INTO mld_kenmerkmelding (mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_waarde) "
|
||||
+ "VALUES (" + kenmerk_key + ", " + mld_key + ", " + safe.quoted_sql(kenmerk_waarde) + ")";
|
||||
}
|
||||
Oracle.Execute(ksql);
|
||||
break;
|
||||
}
|
||||
case 'N':
|
||||
{
|
||||
// we ondersteunen alleen nog maar karakter velden.
|
||||
if (!oRs.eof)
|
||||
{
|
||||
var kenmerkmelding_key = oRs("mld_kenmerkmelding_key").value;
|
||||
ksql = "UPDATE mld_kenmerkmelding"
|
||||
+ " SET mld_kenmerkmelding_waarde = " + safe.quoted_sql(kenmerk_waarde)
|
||||
+ " WHERE mld_kenmerkmelding_key = " + kenmerkmelding_key;
|
||||
}
|
||||
else
|
||||
{
|
||||
ksql = "INSERT INTO mld_kenmerkmelding (mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_waarde) "
|
||||
+ "VALUES (" + kenmerk_key + ", " + mld_key + ", " + safe.quoted_sql(kenmerk_waarde) + ")";
|
||||
}
|
||||
Oracle.Execute(ksql);
|
||||
break;
|
||||
}
|
||||
case "M": // Folder met bijlagen
|
||||
{
|
||||
//Response.Write(kenmerk_naam);
|
||||
var bijlagen = mldkenmerken[j].getElementsByTagName("bijlage");
|
||||
var bi;
|
||||
for (bi = 0; bi < bijlagen.length; bi++)
|
||||
{
|
||||
var Attachment = XMLval(bijlagen[bi], "attachment");
|
||||
var Name = XMLval(bijlagen[bi], "name");
|
||||
var Size = XMLval(bijlagen[bi], "size");
|
||||
//Response.Write("Name: " + Name + " size: " + Size);
|
||||
if (Attachment && Name && Size)
|
||||
{
|
||||
var SafeName = safe.filename(Name);
|
||||
var params = flexProps("MLD", mld_key, String(kenmerk_key), "M");
|
||||
if (params.extFilter)
|
||||
{
|
||||
var regFilter = params.extFilter;
|
||||
regFilter = regFilter.replace(/( |,|;)/g,"|"); // Altijd | karakter
|
||||
regFilter = ".*\\." + "(" + regFilter + ")$"; // er moet een punt voor en extensie is aan het einde
|
||||
}
|
||||
else
|
||||
regFilter = ".*";
|
||||
if (!new RegExp(S("flexAllowedExt"), "ig").test(SafeName) ||
|
||||
!new RegExp(regFilter, "ig").test(SafeName))
|
||||
{
|
||||
__DoLog("Unsafe SOAP file '{0}' ignored.".format(SafeName), "#FFFF00");
|
||||
}
|
||||
else
|
||||
{
|
||||
__Log("Start saving: " + params.AttachPath + SafeName);
|
||||
CreateFullPath(params.AttachPath);
|
||||
VB_SaveFile(params.AttachPath + SafeName, Attachment)
|
||||
__Log("Done saving: " + params.AttachPath + SafeName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
oRs.Close();
|
||||
}
|
||||
}
|
||||
|
||||
resultcode = 0; // Ik heb gedaan wat ik moest en mocht doen voor deze melding.
|
||||
// En nog maar even de aanname dat een extern systeem niet aan workflows/ktos doet?
|
||||
}
|
||||
} // end geldige stdmld_key
|
||||
} // end geldige ext_id
|
||||
|
||||
var binfo = {returncode: resultcode,
|
||||
returntekst: resulttekst,
|
||||
// executed:sql, // debug
|
||||
datum: nowtxt,
|
||||
meldingnr: mld_key
|
||||
}
|
||||
|
||||
var FCLTBody = xmlResp.createElement("melding"); // type=response
|
||||
FCLTBody.setAttribute('key', ext_id); // Let op: key van de aanroeper!
|
||||
FCLTBody.setAttribute('type', 'response');
|
||||
for (param in binfo)
|
||||
{
|
||||
var FCLTdata = xmlResp.createElement(param);
|
||||
FCLTdata.appendChild(xmlResp.createTextNode(binfo[param]));
|
||||
FCLTBody.appendChild(FCLTdata);
|
||||
}
|
||||
|
||||
FCLTElement.appendChild(FCLTBody);
|
||||
} // end for
|
||||
// Alle melding-nodes zijn behandeld.
|
||||
|
||||
xmlResp.appendChild(FCLTElement);
|
||||
|
||||
if (API.apidata.stylesheet)
|
||||
{
|
||||
// Niet super efficient dat we eerst naar tekstuele xml gaan maar ach...
|
||||
STR2Stream(xmlResp.xml, API.apidata.stylesheet, Response, {});
|
||||
}
|
||||
else
|
||||
{
|
||||
Response.ContentType = "text/xml";
|
||||
Response.Write(xmlResp.xml)
|
||||
}
|
||||
%>
|
||||
<script language="VBScript" runat="Server">
|
||||
' JavaScript is erg slecht in binary data, dat doen we dan maar met VBScript.
|
||||
Function HexDecode(ByVal vCode)
|
||||
Dim oXML, oNode
|
||||
|
||||
Set oXML = CreateObject("MSXML2.DOMDocument.4.0")
|
||||
Set oXML = CreateObject("MSXML2.DOMDocument.6.0")
|
||||
Set oNode = oXML.CreateElement("hex")
|
||||
oNode.dataType = "bin.hex" ' Zeer snelle oplossing
|
||||
oNode.text = vCode
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -34,22 +34,24 @@
|
||||
var API = new API_func(APIname, APIKEY);
|
||||
var tsql = "-"; // Voor tijdelijke statement(s)
|
||||
var sql = "-"; // De uiteindelijke insert/update-sql
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
if (API.apidata.stylesheet)
|
||||
{
|
||||
var iXsl = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var iXsl = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
if( ! iXsl.load(Server.MapPath(API.apidata.stylesheet)) )
|
||||
{
|
||||
API.error("Could not load XSL " + API.apidata.stylesheet + "\n" + iXsl.parseError.reason);
|
||||
}
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
inputXML.load(Request);
|
||||
inputXML.transformNodeToObject(iXsl, xmlReq);
|
||||
}
|
||||
else
|
||||
xmlReq.load(Request);
|
||||
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
if (API.apidata.loglevel) __Log2File(xmlReq.xml, APIname + "_IN");
|
||||
|
||||
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
xmlResp.appendChild(xmlResp.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""))
|
||||
|
||||
// The response.
|
||||
@@ -278,12 +280,22 @@
|
||||
if (shown != null) { // Bij update optioneel
|
||||
// Feitelijke UPDATE shown.
|
||||
// Verder geen checks (Oracle fout als shown < 0 of shown > 999 niet afvangen???)!
|
||||
sql = "UPDATE res_rsv_ruimte"
|
||||
+ " SET res_rsv_ruimte_bezoekers_shown="+parseInt(shown, 10)
|
||||
+ " WHERE res_rsv_ruimte_key="+rsv_ruimte_key
|
||||
+ " AND 1=1"; // Niet dirty, niet verwijderd, ...???
|
||||
Oracle.Execute(sql);
|
||||
|
||||
if (S("res_noshow_detailed") == 1) {
|
||||
sql = "UPDATE res_rsv_ruimte"
|
||||
+ " SET res_rsv_ruimte_bezoekers_shown="+parseInt(shown, 10)
|
||||
+ " WHERE res_rsv_ruimte_key="+rsv_ruimte_key
|
||||
+ " AND 1=1"; // Niet dirty, niet verwijderd, ...???
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
else {
|
||||
if (parseInt(shown, 10) == 0) {
|
||||
sql = "UPDATE res_rsv_ruimte"
|
||||
+ " SET res_rsv_ruimte_noshow = 1"
|
||||
+ " WHERE res_rsv_ruimte_key="+rsv_ruimte_key
|
||||
+ " AND 1=1"; // Niet dirty, niet verwijderd, ...???
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
// RESNOS-tracking toevoegen!
|
||||
shared.trackaction("RESNOS", rsv_ruimte_key);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
Notes: Hier wordt van alles met de 'buitenwereld' gecommuniceerd.
|
||||
Doel is dat de model's puur op json-data hoeven te werken
|
||||
|
||||
Status: Nog TODO's wegwerken
|
||||
|
||||
*/
|
||||
%>
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
@@ -249,22 +251,100 @@ api2 = {
|
||||
if (!filter)
|
||||
continue;
|
||||
|
||||
if (field.name in params.filter)
|
||||
// We kijken of dit model-veld in de filterparameters voorkomt. Voor ranges kunnen prefixes in gebruik zijn
|
||||
if (field.name in params.filter || "start_"+field.name in params.filter || "end_"+field.name in params.filter)
|
||||
{
|
||||
// filterval is de meegegeven filterwaarde voor dit veld
|
||||
var filterval = params.filter[field.name];
|
||||
// TODO: operand?
|
||||
|
||||
// Voor ranges komt de naam (misschien) niet letterlijk voor, maar (mogelijk) met start_ of end_ ervoor
|
||||
// meerdere filters voor 1 veld dus wellicht
|
||||
if (filter == "range") {
|
||||
filterval1 = params.filter["start_"+field.name];
|
||||
filterval2 = params.filter["end_"+field.name];
|
||||
//__Log(">>filterval1>>"+filterval1);
|
||||
//__Log(">>filterval2>>"+filterval2);
|
||||
}
|
||||
// Nu is ook voor ranges alles weer normaal
|
||||
//__Log(">>field>>"+field.name);
|
||||
//__Log(">>filter>>"+filter);
|
||||
//__Log(">>filterval>>"+filterval);
|
||||
var clause;
|
||||
var operand = " = ";
|
||||
switch (field.typ)
|
||||
{
|
||||
case "key":
|
||||
var safe_val = parseInt(filterval, 10);
|
||||
if (isNaN(safe_val))
|
||||
if (filterval instanceof Array)
|
||||
{
|
||||
Response.Status = "404 Not Found";
|
||||
Response.End;
|
||||
safe_val = "(" + filterval.join(",") + ")";
|
||||
operand = " IN ";
|
||||
}
|
||||
else if (String(filterval).indexOf(",") != -1) // let op: bij buildings/1234.json is id al numeriek gemaakt
|
||||
// NB: index=-1 als het geen array is.
|
||||
{
|
||||
safe_val = "(" + getQParamIntArray(field.name).join(",") + ")"; // TODO: Niet via getQParamIntArray
|
||||
operand = " IN ";
|
||||
}
|
||||
else
|
||||
{
|
||||
var safe_val = parseInt(filterval, 10);
|
||||
if (isNaN(safe_val))
|
||||
{
|
||||
Response.Status = "404 Not Found";
|
||||
Response.End;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "float":
|
||||
var safe_val = parseFloat(filterval);
|
||||
if (filter == "range")
|
||||
{
|
||||
// Als er maar 1 filterwaarde is, dan gedraagt zich die als start_
|
||||
if (filterval && !filterval1) filterval1 = filterval;
|
||||
|
||||
if (filterval1) {
|
||||
var safe_val1 = parseFloat(filterval1);
|
||||
}
|
||||
if (filterval2) {
|
||||
var safe_val2 = parseFloat(filterval2);
|
||||
}
|
||||
if (filterval1 && filterval2) {
|
||||
operand = " BETWEEN ";
|
||||
safe_val = safe_val1+" AND "+safe_val2;
|
||||
} else if (filterval1) {
|
||||
operand = " >= ";
|
||||
safe_val = safe_val1;
|
||||
} else if (filterval2) {
|
||||
operand = " <= ";
|
||||
safe_val = safe_val2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "number":
|
||||
var safe_val = parseInt(filterval, 10);
|
||||
if (filter == "range")
|
||||
{
|
||||
// Als er maar 1 filterwaarde is, dan gedraagt zich die als start_
|
||||
if (filterval && !filterval1) filterval1 = filterval;
|
||||
|
||||
if (filterval1) {
|
||||
var safe_val1 = parseInt(filterval1, 10);
|
||||
}
|
||||
if (filterval2) {
|
||||
var safe_val2 = parseInt(filterval2, 10);
|
||||
}
|
||||
if (filterval1 && filterval2) {
|
||||
operand = " BETWEEN ";
|
||||
safe_val = safe_val1+" AND "+safe_val2;
|
||||
} else if (filterval1) {
|
||||
operand = " >= ";
|
||||
safe_val = safe_val1;
|
||||
} else if (filterval2) {
|
||||
operand = " <= ";
|
||||
safe_val = safe_val2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "check":
|
||||
var safe_val = parseInt(filterval, 10);
|
||||
if (isNaN(safe_val))
|
||||
@@ -276,6 +356,44 @@ api2 = {
|
||||
case "varchar":
|
||||
var safe_val = (filter == "exact" ? safe.quoted_sql(filterval) : safe.quoted_sql("%"+filterval+"%"));
|
||||
break;
|
||||
case "date": // onderscheid date en datetime?
|
||||
case "datetime":
|
||||
// exact: dbs == filterval; nodig? zoiets dan:
|
||||
//if (filter == "exact")
|
||||
//{
|
||||
// var safe_val = new Date(parseInt(filterval, 10));
|
||||
// safe_val = safe_val.toSQL();
|
||||
// field.dbs = "TRUNC("+field.dbs+")";
|
||||
//}
|
||||
// range: (dbs >= start_value, dbs <= end_value)
|
||||
if (filter == "range")
|
||||
{
|
||||
// Als er maar 1 filterwaarde is, dan gedraagt zich die als start_
|
||||
if (filterval && !filterval1) filterval1 = filterval;
|
||||
|
||||
var safe_val;
|
||||
if (filterval1) {
|
||||
var safe_val1 = myJSON.internal_parsedate(null, filterval1);
|
||||
//var safe_val1 = new Date(parseInt(filterval1, 10));
|
||||
safe_val1 = safe_val1.beginToSQL();
|
||||
}
|
||||
if (filterval2) {
|
||||
var safe_val2 = myJSON.internal_parsedate(null, filterval2);
|
||||
//var safe_val2 = new Date(parseInt(filterval2, 10));
|
||||
safe_val2 = safe_val2.endToSQL();
|
||||
}
|
||||
if (filterval1 && filterval2) {
|
||||
operand = " BETWEEN ";
|
||||
safe_val = safe_val1+" AND "+safe_val2;
|
||||
} else if (filterval1) {
|
||||
operand = " >= ";
|
||||
safe_val = safe_val1;
|
||||
} else if (filterval2) {
|
||||
operand = " <= ";
|
||||
safe_val = safe_val2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
UNKNOWN_FILTER_TYPE;
|
||||
}
|
||||
@@ -284,8 +402,9 @@ api2 = {
|
||||
dbs = model.aliasprefix + dbs;
|
||||
if (dbs.indexOf(".") < 0)
|
||||
dbs = model.table + "." + field.dbs;
|
||||
if (field.sql)
|
||||
dbs = field.sql; /* dit werkt bv voor cnt-XD */
|
||||
|
||||
var operand = " = ";
|
||||
if (filter == "like")
|
||||
{
|
||||
operand = " like ";
|
||||
@@ -302,6 +421,12 @@ api2 = {
|
||||
return wheres;
|
||||
},
|
||||
|
||||
// Als er voor een veldnaam een alias moet worden gebruikt, doe het dan op deze manier.
|
||||
sqlfield_alias: function _sqlfield_alias(model, field)
|
||||
{
|
||||
return model.aliasprefix + (field.dbs == model.primary ? field.dbs : field.name);
|
||||
},
|
||||
|
||||
// Bepaal bij een GET welke velden op te halen
|
||||
sqlfields: function _sqlfields(params, model)
|
||||
{
|
||||
@@ -321,16 +446,17 @@ api2 = {
|
||||
if (field.sql)
|
||||
{
|
||||
if (model.aliasprefix)
|
||||
dbs = model.aliasprefix + dbs;
|
||||
dbs = model.aliasprefix + field.name;
|
||||
selects.push(field.sql + " AS " + dbs);
|
||||
}
|
||||
else if (dbs)
|
||||
{
|
||||
// veldnamen moeten gelijk zijn bij het ophalen. Zie ook: sql2jsonval
|
||||
if (dbs.indexOf(".") < 0)
|
||||
{
|
||||
dbs = model.table + "." + dbs;
|
||||
if (model.aliasprefix)
|
||||
dbs += " AS " + model.aliasprefix + field.dbs;
|
||||
dbs += " AS " + api2.sqlfield_alias(model, field);
|
||||
}
|
||||
selects.push(dbs);
|
||||
}
|
||||
@@ -349,11 +475,7 @@ api2 = {
|
||||
+ " WHERE ";
|
||||
if (foreign.where)
|
||||
field.foreignsql += foreign.where + " AND ";
|
||||
field.foreignsql += (foreign.alias||"xx") + "." + foreign.key + " = " + (field.dbs.indexOf(".") < 0? model.table + ".":"") + field.dbs;
|
||||
// onze foreign tabel heeft voor gebouw etc. het codeveld in plaats van omschrijving
|
||||
// TODO: ook name ondersteunen?
|
||||
if (fieldname.match(/\_CODE$/i))
|
||||
field.foreigniscode = true;
|
||||
field.foreignsql += (foreign.alias||"xx") + "." + foreign.key + " = " + (field.sql||(field.dbs.indexOf(".") < 0? model.table + ".":"") + field.dbs);
|
||||
}
|
||||
if (field.foreignsql)
|
||||
{
|
||||
@@ -380,6 +502,10 @@ api2 = {
|
||||
if (params.include[i] in model.includes)
|
||||
{
|
||||
var inc = model.includes[params.include[i]];
|
||||
// Geneste includes verwijderen, we doen hooguit 1 diep
|
||||
if ("model" in inc) // reservablerooms/include/occupations heeft geen model
|
||||
delete inc.model.includes;
|
||||
|
||||
if (inc.model)
|
||||
{
|
||||
if (inc.single_only && !params.filter.id)
|
||||
@@ -451,7 +577,7 @@ api2 = {
|
||||
case "datetime":
|
||||
// LET OP: Een (new Date) gemaakt binnen een plugin is vreemd genoeg geen (instanceof Date)
|
||||
// Waarschijnlijk gebruikt een wsc een ander Date object als (ASP)JScript?
|
||||
if (typeof newval == "object" && !(newval instanceof Date))
|
||||
if (newval !== null && typeof newval == "object" && !(newval instanceof Date))
|
||||
newval = new Date(newval);
|
||||
|
||||
if (newval !== null && !(newval instanceof Date))
|
||||
@@ -467,7 +593,7 @@ api2 = {
|
||||
}
|
||||
if (field.dbs.indexOf(".") >= 0) // complexe foreign key
|
||||
continue;
|
||||
__Log("newval="+newval);
|
||||
//__Log("newval="+newval);
|
||||
var newfield = { dbs: field.dbs,
|
||||
typ: field.typ,
|
||||
track: field.track,
|
||||
@@ -549,18 +675,21 @@ __Log("newval="+newval);
|
||||
if (field.val instanceof Function)
|
||||
var val = field.val(oRs, field, model);
|
||||
else if (field.dbs.indexOf(".") < 0)
|
||||
var val = oRs(model.aliasprefix + field.dbs).Value;
|
||||
{
|
||||
var sqlfieldname = (model.aliasprefix ? api2.sqlfield_alias(model, field) : field.dbs);
|
||||
var val = oRs(sqlfieldname).Value;
|
||||
}
|
||||
else
|
||||
var val = oRs(field.dbs.split(".")[1]).Value;
|
||||
if (field.typ == "date" && (val != null))
|
||||
val = new Date(val)
|
||||
if (field.typ == "datetime" && (val != null))
|
||||
val = new Date(val)
|
||||
// TODO: Wat te doen met lege waarde
|
||||
// action: null
|
||||
// action: {key: null, name: null}
|
||||
// action: {}
|
||||
// of helemaal weglaten? We hebben nu de 1e optie. Dat is zelfdocumenterend
|
||||
// Wat te doen met lege waarde
|
||||
// action: null
|
||||
// action: {key: null, name: null}
|
||||
// action: {}
|
||||
// of helemaal weglaten? We hebben nu de 1e optie. Dat is zelfdocumenterend
|
||||
// En wat bij een leeg (include) array? Dan kun je ook nog occupations:[] krijgen
|
||||
if (val !== null && (field.foreign || field.foreignsql))
|
||||
{
|
||||
@@ -575,10 +704,7 @@ __Log("newval="+newval);
|
||||
var name = field.foreign(val);
|
||||
}
|
||||
val = { id: val };
|
||||
if (field.foreigniscode)
|
||||
val.code = name;
|
||||
else
|
||||
val.name = name;
|
||||
val.name = name;
|
||||
}
|
||||
return val;
|
||||
},
|
||||
@@ -643,7 +769,6 @@ __Log("newval="+newval);
|
||||
continue;
|
||||
record[field.name] = val;
|
||||
}
|
||||
|
||||
if (params.include && model.includes)
|
||||
{
|
||||
for (var i in params.include) // welke includes worden opgevraagd?
|
||||
@@ -660,7 +785,20 @@ __Log("newval="+newval);
|
||||
incmodel.aliasprefix = incmodel.aliasprefix || "";
|
||||
if (oRs(incmodel.aliasprefix + incmodel.primary).value == null) // Geen record door outer join
|
||||
continue;
|
||||
record[incname].push(api2.sql2jsonfields(oRs, incmodel));
|
||||
|
||||
var inc_record = api2.sql2jsonfields(oRs, incmodel);
|
||||
var inc_record_exists = false;
|
||||
for (var i=0; i<record[incname].length; i++)
|
||||
{
|
||||
var tmp_record = record[incname];
|
||||
var cur_record = tmp_record[i];
|
||||
if (JSON.stringify(cur_record) == JSON.stringify(inc_record))
|
||||
inc_record_exists = true;
|
||||
}
|
||||
if (!inc_record_exists)
|
||||
record[incname].push(inc_record);
|
||||
//else
|
||||
// __Log("Deze bestaat al");
|
||||
}
|
||||
else if (model.includes[incname].func) // include via callback functie zoals reservablerooms/occupation
|
||||
{
|
||||
@@ -740,7 +878,7 @@ __Log("newval="+newval);
|
||||
// TODO: Output XSL transform ondersteunen?
|
||||
if (getQParam("pretty","0")=="1")
|
||||
{
|
||||
var style = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var style = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
style.async = false;
|
||||
style.resolveExternals = false;
|
||||
style.load(Server.MapPath(rooturl + "/appl/shared/indent.xsl")); // De stylesheet laden. API's redeneren vanuit de root
|
||||
@@ -779,7 +917,7 @@ __Log("newval="+newval);
|
||||
// Streven: data == xml2json(json2xml(data))
|
||||
json2xml: function _json2xml(data, rootname, record_name, single)
|
||||
{
|
||||
var xmlDoc = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlDoc = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""));
|
||||
|
||||
var record2json = function(record, record_name)
|
||||
@@ -953,6 +1091,35 @@ __Log("newval="+newval);
|
||||
hook = null;
|
||||
return outdata;
|
||||
}
|
||||
},
|
||||
find_fieldindex_by_dbsname: function(array, value)
|
||||
{
|
||||
for(var i = 0; i < array.length; i++)
|
||||
{
|
||||
if(array[i].hasOwnProperty("dbs") && array[i]["dbs"] === value)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
},
|
||||
field_delete: function(array, dbsname)
|
||||
{
|
||||
var index = api2.find_fieldindex_by_dbsname(array, dbsname);
|
||||
if (index != -1)
|
||||
array.splice(index,1);
|
||||
},
|
||||
field_alter: function(array, dbsname, newval)
|
||||
{
|
||||
var index = api2.find_fieldindex_by_dbsname(array, dbsname);
|
||||
var field = array[index];
|
||||
field.val = newval;
|
||||
},
|
||||
field_value: function(array, dbsname)
|
||||
{
|
||||
var index = api2.find_fieldindex_by_dbsname(array, dbsname);
|
||||
var field = array[index];
|
||||
return field.val;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -983,7 +1150,7 @@ function RequestXML()
|
||||
{
|
||||
try
|
||||
{
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var inputXML = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
inputXML.load(Request);
|
||||
}
|
||||
catch (e)
|
||||
|
||||
27
APPL/API2/api_companies.asp
Normal file
27
APPL/API2/api_companies.asp
Normal file
@@ -0,0 +1,27 @@
|
||||
<%@ language = "JavaScript" %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: api_companies.asp
|
||||
|
||||
Description: PRS_BEDRIJF API
|
||||
Parameters:
|
||||
Context: Door een remote systeem (geen persoon) om info uit FACILITOR te halen aan te roepen
|
||||
|
||||
Notes:
|
||||
*/
|
||||
DOCTYPE_Disable = true;
|
||||
ANONYMOUS_Allowed = 1; // Eigenlijk niet waar. We regelen echter alles zelf
|
||||
THIS_FILE = "appl/api/api_companies.asp";
|
||||
|
||||
// Session("logging")=1;
|
||||
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="./api2.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="./model_companies.inc" -->
|
||||
<%
|
||||
api2.process(model_companies);
|
||||
%>
|
||||
27
APPL/API2/api_contracts.asp
Normal file
27
APPL/API2/api_contracts.asp
Normal file
@@ -0,0 +1,27 @@
|
||||
<%@ language = "JavaScript" %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: api_contracts.asp
|
||||
|
||||
Description: CNT_CONTRACT API
|
||||
Parameters:
|
||||
Context: Door een remote systeem (geen persoon) om info uit FACILITOR te halen aan te roepen
|
||||
|
||||
Notes:
|
||||
*/
|
||||
DOCTYPE_Disable = true;
|
||||
ANONYMOUS_Allowed = 1; // Eigenlijk niet waar. We regelen echter alles zelf
|
||||
THIS_FILE = "appl/api/api_contracts.asp";
|
||||
|
||||
// Session("logging")=1;
|
||||
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="./api2.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="./model_contracts.inc" -->
|
||||
<%
|
||||
api2.process(model_contracts);
|
||||
%>
|
||||
27
APPL/API2/api_floors.asp
Normal file
27
APPL/API2/api_floors.asp
Normal file
@@ -0,0 +1,27 @@
|
||||
<%@ language = "JavaScript" %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: api_floors.asp
|
||||
|
||||
Description: ALG_VERDIEPING API
|
||||
Parameters:
|
||||
Context: Door een remote systeem (geen persoon) om info uit FACILITOR te halen aan te roepen
|
||||
|
||||
Notes:
|
||||
*/
|
||||
DOCTYPE_Disable = true;
|
||||
ANONYMOUS_Allowed = 1; // Eigenlijk niet waar. We regelen echter alles zelf
|
||||
THIS_FILE = "appl/api/api_floors.asp";
|
||||
|
||||
// Session("logging")=1;
|
||||
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="./api2.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="./model_floors.inc" -->
|
||||
<%
|
||||
api2.process(model_floors);
|
||||
%>
|
||||
27
APPL/API2/api_invoices.asp
Normal file
27
APPL/API2/api_invoices.asp
Normal file
@@ -0,0 +1,27 @@
|
||||
<%@ language = "JavaScript" %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: api_invoices.asp
|
||||
|
||||
Description: FIN_FACTUUR API
|
||||
Parameters:
|
||||
Context: Door een remote systeem (geen persoon) om info uit FACILITOR te halen aan te roepen
|
||||
|
||||
Notes:
|
||||
*/
|
||||
DOCTYPE_Disable = true;
|
||||
ANONYMOUS_Allowed = 1; // Eigenlijk niet waar. We regelen echter alles zelf
|
||||
THIS_FILE = "appl/api/api_invoices.asp";
|
||||
|
||||
// Session("logging")=1;
|
||||
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="./api2.inc" -->
|
||||
<!-- #include file="./model_invoices.inc" -->
|
||||
<%
|
||||
api2.process(model_invoices);
|
||||
%>
|
||||
27
APPL/API2/api_issues.asp
Normal file
27
APPL/API2/api_issues.asp
Normal file
@@ -0,0 +1,27 @@
|
||||
<%@ language = "JavaScript" %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: api_issues.asp
|
||||
|
||||
Description: MLD_MELDING API
|
||||
Parameters:
|
||||
Context: Door een remote systeem (geen persoon) om info uit FACILITOR te halen aan te roepen
|
||||
|
||||
Notes:
|
||||
*/
|
||||
DOCTYPE_Disable = true;
|
||||
ANONYMOUS_Allowed = 1; // Eigenlijk niet waar. We regelen echter alles zelf
|
||||
THIS_FILE = "appl/api/api_issues.asp";
|
||||
|
||||
// Session("logging")=1;
|
||||
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="./api2.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="./model_issues.inc" -->
|
||||
<%
|
||||
api2.process(model_issues);
|
||||
%>
|
||||
27
APPL/API2/api_orders.asp
Normal file
27
APPL/API2/api_orders.asp
Normal file
@@ -0,0 +1,27 @@
|
||||
<%@ language = "JavaScript" %>
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: api_orders.asp
|
||||
|
||||
Description: MLD_OPDR API
|
||||
Parameters:
|
||||
Context: Door een remote systeem (geen persoon) om info uit FACILITOR te halen aan te roepen
|
||||
|
||||
Notes:
|
||||
*/
|
||||
DOCTYPE_Disable = true;
|
||||
ANONYMOUS_Allowed = 1; // Eigenlijk niet waar. We regelen echter alles zelf
|
||||
THIS_FILE = "appl/api/api_orders.asp";
|
||||
|
||||
// Session("logging")=1;
|
||||
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="./api2.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="./model_orders.inc" -->
|
||||
<%
|
||||
api2.process(model_orders);
|
||||
%>
|
||||
79
APPL/API2/model_companies.inc
Normal file
79
APPL/API2/model_companies.inc
Normal file
@@ -0,0 +1,79 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_companies.inc
|
||||
|
||||
Description: Bedrijven model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes:
|
||||
*/
|
||||
|
||||
model_companies =
|
||||
{
|
||||
table: "prs_bedrijf",
|
||||
primary: "prs_bedrijf_key",
|
||||
records_name: "companies",
|
||||
record_name: "company",
|
||||
fields: [{ name: "id", dbs: "prs_bedrijf_key" , typ: "key", filter: "exact" },
|
||||
{ name: "name", dbs: "prs_bedrijf_naam" , typ: "varchar", filter: "like" },
|
||||
{ name: "postaddress", dbs: "prs_bedrijf_post_adres" , typ: "varchar", filter: "like" },
|
||||
{ name: "postzipcode", dbs: "prs_bedrijf_post_postcode" , typ: "varchar", filter: "like" },
|
||||
{ name: "postcity", dbs: "prs_bedrijf_post_plaats" , typ: "varchar", filter: "like" },
|
||||
{ name: "postcountry", dbs: "prs_bedrijf_post_land" , typ: "varchar", filter: "like" },
|
||||
{ name: "visitaddress", dbs: "prs_bedrijf_bezoek_adres" , typ: "varchar", filter: "like" },
|
||||
{ name: "visitzipcode", dbs: "prs_bedrijf_bezoek_postcode" , typ: "varchar", filter: "like" },
|
||||
{ name: "visitcity", dbs: "prs_bedrijf_bezoek_plaats" , typ: "varchar", filter: "like" },
|
||||
{ name: "visitcountry", dbs: "prs_bedrijf_bezoek_land" , typ: "varchar", filter: "like" },
|
||||
{ name: "phone", dbs: "prs_bedrijf_telefoon" , typ: "varchar", filter: "like" },
|
||||
{ name: "phone2", dbs: "prs_bedrijf_telefoon2" , typ: "varchar", filter: "like" }, /*?*/
|
||||
{ name: "contactname", dbs: "prs_bedrijf_contact_persoon" , typ: "varchar", filter: "like" },
|
||||
{ name: "contactphone", dbs: "prs_bedrijf_contact_telefoon", typ: "varchar", filter: "like" },
|
||||
{ name: "remark", dbs: "prs_bedrijf_opmerking" , typ: "varchar", filter: "like" },
|
||||
{ name: "remark2", dbs: "prs_bedrijf_opmerking2" , typ: "varchar", filter: "like" }, /*?*/
|
||||
{ name: "hourrate", dbs: "prs_bedrijf_uurloon" , typ: "float", filter: "like" },
|
||||
{ name: "code", dbs: "prs_leverancier_nr" , typ: "varchar", filter: "like" },
|
||||
{ name: "agreement", dbs: "prs_overeenkomst_nr" , typ: "varchar", filter: "like" },
|
||||
{ name: "agreementdate",dbs: "prs_overeenkomst_datum" , typ: "date", filter: "range" },
|
||||
{ name: "isinternal", dbs: "prs_bedrijf_intern" , typ: "varchar", filter: "exact" },
|
||||
{ name: "issupplier", dbs: "prs_bedrijf_leverancier" , typ: "varchar", filter: "exact" },
|
||||
{ name: "isexecutor", dbs: "prs_bedrijf_uitvoerende" , typ: "varchar", filter: "exact" }, /*naam?*/
|
||||
{ name: "iscontractor", dbs: "prs_bedrijf_contract" , typ: "varchar", filter: "exact" },
|
||||
{ name: "isrenter", dbs: "prs_bedrijf_huurder" , typ: "varchar", filter: "exact" },
|
||||
{ name: "email", dbs: "prs_bedrijf_email" , typ: "varchar", filter: "like" }
|
||||
],
|
||||
REST_GET: function _GET(params)
|
||||
{
|
||||
var autfunction = "WEB_RELMAN";
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
|
||||
|
||||
// TODO: Add authorization
|
||||
var query = api2.sqlfields(params, model_companies);
|
||||
query.wheres.push("prs_bedrijf_verwijder IS NULL");
|
||||
|
||||
var wheres = api2.sqlfilter(params, model_companies)
|
||||
query.wheres = query.wheres.concat(wheres);
|
||||
|
||||
var sql = "SELECT " + query.selects.join(", ")
|
||||
+ " FROM " + query.tables.join(", ")
|
||||
+ " WHERE " + query.wheres.join(" AND " )
|
||||
+ " ORDER BY prs_bedrijf_naam";
|
||||
|
||||
var json = api2.sql2json (params, sql, model_companies);
|
||||
|
||||
return json;
|
||||
},
|
||||
PUT: function (params) /* update company */
|
||||
{
|
||||
},
|
||||
POST: function (params) /* new company */
|
||||
{
|
||||
},
|
||||
DELETE: function (params) /* delete company */
|
||||
{
|
||||
}
|
||||
}
|
||||
%>
|
||||
112
APPL/API2/model_contracts.inc
Normal file
112
APPL/API2/model_contracts.inc
Normal file
@@ -0,0 +1,112 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_contracts.inc
|
||||
|
||||
Description: contract model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes: Zonder filters worden de lopende actieve contracten opgeleverd (binnen scope)
|
||||
TODO: 3D autorisatie, ook fe/eigen conracten vs CNTUSE/CNTMAN
|
||||
*/
|
||||
%>
|
||||
<!-- #include file="../Shared/discx3d.inc" -->
|
||||
<!-- #include file="../cnt/cnt.inc" -->
|
||||
<%
|
||||
|
||||
model_contracts =
|
||||
{
|
||||
module: "CNT",
|
||||
table: "cnt_contract",
|
||||
primary: "cnt_contract_key",
|
||||
records_name: "contracts",
|
||||
record_name: "contract",
|
||||
fields: [{ name: "id", dbs: "cnt_contract_key", typ: "key", filter: "exact" },
|
||||
{ name: "name", dbs: "cnt_contract_nummer_intern", typ: "varchar", filter: "exact" },
|
||||
{ name: "description", dbs: "cnt_contract_omschrijving", typ: "varchar", filter: "like" },
|
||||
{ name: "startdate", dbs: "cnt_contract_looptijd_van", typ: "date", track: L("lcl_cnt_date_start"), filter: "range" },
|
||||
{ name: "reminderdate", dbs: "cnt_contract_rappeldatum", typ: "date", track: L("lcl_cnt_rappel_date"), filter: "range",
|
||||
sql: "cnt.cnt_getRappeldatum(cnt_contract.cnt_contract_key)" },
|
||||
{ name: "canceldate", dbs: "cnt_contract_opzegdatum", typ: "date", track: L("lcl_cnt_cancel_date"), filter: "range",
|
||||
sql: "cnt.cnt_getOpzegdatum(cnt_contract.cnt_contract_key)" },
|
||||
{ name: "enddate", dbs: "cnt_contract_looptijd_tot", typ: "date", track: L("lcl_cnt_enddate"), filter: "range" },
|
||||
{ name: "contractor", dbs: "cnt_prs_bedrijf_key", typ: "key", foreign: "prs_bedrijf", track: L("lcl_cnt_contractant"), filter: "exact" },
|
||||
{ name: "status", dbs: "cnt_contract_status", typ: "key", foreign: cnt.getcntstatustext, track: L("lcl_status"), filter: "exact" },
|
||||
{ name: "department", dbs: "prs_afdeling_key_eig", typ: "key", foreign: "prs_afdeling", track: L("lcl_cnt_owner"), filter: "exact" },
|
||||
{ name: "service", dbs: "prs_dienst_key", typ: "key", foreign: "prs_dienst", track: L("lcl_prs_companies_dienst"), filter: "exact" },
|
||||
{ name: "contracttype", dbs: "ins_discipline_key", typ: "key", foreign: "cnt_discipline", track: L("lcl_cnt_srttype"), filter: "exact" }
|
||||
],
|
||||
includes: {
|
||||
},
|
||||
|
||||
REST_GET: function _GET(params)
|
||||
{
|
||||
var scope = getQParamSafe("scope", "fe");
|
||||
var autfunction = { fe : "WEB_CNTUSE", fo : "WEB_CNTUSE", bo : "WEB_CNTMAN"} [scope]; /* gokje; fe hoefde vroeger geen rechten voor eigen contracten...*/
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); /* pessimistic */
|
||||
|
||||
// Hier kom je niet meer terecht als bovenstaande autorisatiecheck niet tot succes leidt.
|
||||
|
||||
var query = api2.sqlfields(params, model_contracts );
|
||||
query.wheres.push("cnt_contract_verwijder IS NULL");
|
||||
|
||||
if (scope == "fe")
|
||||
{
|
||||
query.wheres.push("prs_perslid_key_eig=" + user_key + " OR prs_perslid_key_beh=" + user_key);
|
||||
}
|
||||
|
||||
if (!params.filter.id)
|
||||
{
|
||||
if (!params.filter.status)
|
||||
{
|
||||
/* Limitation: if no status filter, then default to the active statusses (0) */
|
||||
query.wheres.push("cnt_contract_status = 0");
|
||||
}
|
||||
if (!(params.filter.startdate || params.filter.reminderdate || params.filter.canceldate || params.filter.enddate))
|
||||
{
|
||||
/* Limitation: if no date filters, then default to the active contracts */
|
||||
query.wheres.push("SYSDATE BETWEEN cnt_contract_looptijd_van AND cnt_contract_looptijd_tot");
|
||||
}
|
||||
}
|
||||
|
||||
// Ik zeg in deze versie: autorisatiescope op contractsoort (discipline) en nog maar ns niet op ALG of PRS. Akkoord?
|
||||
query.wheres.push("ins_discipline_key IN "
|
||||
+ "(SELECT ins_discipline_key FROM fac_v_webgebruiker"
|
||||
+ " WHERE fac_functie_key = (SELECT fac_functie_key FROM fac_functie WHERE fac_functie_code="+safe.quoted_sql(autfunction)+")"
|
||||
+ " AND prs_perslid_key="+user_key+" AND (fac_gebruiker_prs_level_read<9 OR fac_gebruiker_alg_level_read<9))");
|
||||
|
||||
var wheres = api2.sqlfilter(params, model_contracts);
|
||||
query.wheres = query.wheres.concat(wheres);
|
||||
|
||||
var sql = "SELECT " + query.selects.join(", ")
|
||||
+ " FROM " + query.tables.join(", ")
|
||||
+ " WHERE " + query.wheres.join(" AND " );
|
||||
|
||||
sql += " ORDER BY cnt_contract_key";
|
||||
|
||||
var json = api2.sql2json (params, sql, model_contracts );
|
||||
|
||||
return json;
|
||||
},
|
||||
_analyze_fields: function (fields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
|
||||
{
|
||||
},
|
||||
_validate_fields: function (fields, params, jsondata) /* valideer fields, alle constraints die niet door de database worden afgevangen */
|
||||
{
|
||||
},
|
||||
|
||||
REST_PUT: function (params, jsondata, the_key) /* update contract */
|
||||
{
|
||||
},
|
||||
REST_POST: function (params, jsondata) /* new contract */
|
||||
{
|
||||
},
|
||||
|
||||
REST_DELETE: function (params, jsondata, the_key) /* delete contract */
|
||||
{
|
||||
}
|
||||
}
|
||||
%>
|
||||
13
APPL/API2/model_departments.inc
Normal file
13
APPL/API2/model_departments.inc
Normal file
@@ -0,0 +1,13 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_departments.inc
|
||||
|
||||
Description: department model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes: Dummy placeholder
|
||||
*/
|
||||
81
APPL/API2/model_floors.inc
Normal file
81
APPL/API2/model_floors.inc
Normal file
@@ -0,0 +1,81 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_floors.inc
|
||||
|
||||
Description: floor model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes: Eerste opzet, (geaggregeerde) data als oppervlakte e.d. is voorstelbaar
|
||||
*/
|
||||
|
||||
%>
|
||||
<!-- #include file="../Shared/discxalg3d.inc"-->
|
||||
<%
|
||||
model_floors =
|
||||
{
|
||||
table: "alg_verdieping",
|
||||
primary: "alg_verdieping_key",
|
||||
records_name: "floors",
|
||||
record_name: "floor",
|
||||
fields: [{ name: "id", dbs: "alg_verdieping_key", typ: "key", filter: "exact" },
|
||||
{ name: "name", dbs: "alg_verdieping_omschrijving", typ: "varchar"},
|
||||
{ name: "code", dbs: "alg_verdieping_code", typ: "varchar", filter: "exact"},
|
||||
{ name: "sequence", dbs: "alg_verdieping_volgnr", typ: "number", filter: "exact"}, /* range zou ook kunnen */
|
||||
{ name: "building", dbs: "alg_gebouw_key", typ: "key", foreign: "alg_gebouw"}
|
||||
],
|
||||
REST_GET: function _GET(params)
|
||||
{
|
||||
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
|
||||
|
||||
var query = api2.sqlfields(params, model_floors);
|
||||
query.wheres.push("alg_verdieping_verwijder IS NULL");
|
||||
|
||||
if ( params.authparams.ALGreadlevel > -1 )
|
||||
{ // Er is een scope-beperking van kracht
|
||||
query.wheres.push("alg_verdieping_key IN "
|
||||
+ "(SELECT alg_verdieping_key FROM fac_v_my_floors "
|
||||
+ "WHERE prs_perslid_key="+user_key
|
||||
+ " AND niveau=" + params.authparams.ALGreadlevel + ")");
|
||||
}
|
||||
|
||||
var wheres = api2.sqlfilter(params, model_floors)
|
||||
query.wheres = query.wheres.concat(wheres);
|
||||
|
||||
var sql = "SELECT " + query.selects.join(", ")
|
||||
+ " FROM " + query.tables.join(", ")
|
||||
+ " WHERE " + query.wheres.join(" AND " )
|
||||
+ " ORDER BY alg_verdieping_omschrijving";
|
||||
|
||||
var json = api2.sql2json (params, sql, model_floors);
|
||||
|
||||
return json;
|
||||
},
|
||||
PUT: function (params) /* update floor */
|
||||
{
|
||||
},
|
||||
POST: function (params) /* new floor */
|
||||
{
|
||||
},
|
||||
DELETE: function (params, jsondata, the_key) /* delete floor */
|
||||
{
|
||||
var autfunction = "WEB_ALGMAN";
|
||||
// TODO: echte autorisatie
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
|
||||
if (params.authparams.ALGwritelevel)
|
||||
{
|
||||
var wheres = [" alg_verdieping_key = " + the_key];
|
||||
var sql = "UPDATE alg_verdieping SET alg_verdieping_verwijder = SYSDATE "
|
||||
+ " WHERE " + wheres.join(" AND " )
|
||||
+ " AND alg_verdieping_verwijder IS NULL";
|
||||
|
||||
// Pas als het safe is: Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
227
APPL/API2/model_invoicelines.inc
Normal file
227
APPL/API2/model_invoicelines.inc
Normal file
@@ -0,0 +1,227 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_invoicelines.inc
|
||||
|
||||
Description: Factuurregel model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes: TODO: autorisaties voor scope=fo|bo
|
||||
TODO on demand: PUT/POST/DELETE
|
||||
*/
|
||||
|
||||
%>
|
||||
<!-- #include file="../Shared/discxalg3d.inc"-->
|
||||
<!-- #include file="../fin/fin.inc" -->
|
||||
<%
|
||||
|
||||
model_invoicelines =
|
||||
{
|
||||
module: "FIN",
|
||||
table: "fin_factuurregel",
|
||||
primary: "fin_factuurregel_key",
|
||||
records_name: "invoicelines",
|
||||
record_name: "invoiceline",
|
||||
fields: [{ name: "id", dbs: "fin_factuurregel_key", typ: "key", filter: "exact" },
|
||||
{ name: "name", dbs: "fin_factuurregel_omschrijving", typ: "varchar", track: L("lcl_descr"), filter: "like" },
|
||||
{ name: "line", dbs: "fin_factuurregel_nr", typ: "number" },
|
||||
{ name: "total", dbs: "fin_factuurregel_totaal", typ: "float", track: L("lcl_fin_total_sum_exBTW") },
|
||||
{ name: "vat", dbs: "fin_factuurregel_btw", typ: "float", track: L("lcl_fin_total_sum_inBTW") },
|
||||
{ name: "reference", dbs: "fin_factuurregel_referentie", typ: "varchar", track: L("lcl_fin_referencecode"), filter: "like" },
|
||||
{ name: "vatvalue", dbs: "fin_btwtabelwaarde_key", typ: "key", foreign: "fin_btwtabelwaarde", track: L("lcl_fin_btwtarief"), filter: "exact" },
|
||||
{ name: "costtype", dbs: "prs_kostensoort_key", typ: "key", foreign: "prs_kostensoort", track: L("lcl_shared_charge_type"), filter: "exact" }
|
||||
// niet terug linken{ name: "factuur", dbs: "fin_factuur_key", typ: "key", foreign: "fac_factuur", filter: "exact" }
|
||||
],
|
||||
|
||||
_pre_analyze_fields: function (params, jsondata) /* analyseer inkomende jsondata, common voor PUT en POST */
|
||||
{
|
||||
delete jsondata.line; // factuurregelnummer niet door de gebruiker laten zetten.
|
||||
},
|
||||
|
||||
_analyze_fields: function (fields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
|
||||
{
|
||||
},
|
||||
|
||||
_validate_fields: function (fields, params, jsondata) /* valideer fields, alle constraints die niet door de database worden afgevangen */
|
||||
{
|
||||
//__Logj(jsondata);
|
||||
//var factuurregel_key = parseInt(jsondata.invoiceline.id);
|
||||
},
|
||||
|
||||
_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)"
|
||||
+ " , fin_factuur_totaal_btw = (SELECT SUM(fin_factuurregel_btw)"
|
||||
+ " FROM fin_factuurregel fr"
|
||||
+ " WHERE fr.fin_factuur_key = ff.fin_factuur_key)"
|
||||
+ " WHERE fin_factuur_key = " + factuur_key;
|
||||
return sql;
|
||||
},
|
||||
|
||||
_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;
|
||||
},
|
||||
|
||||
|
||||
REST_GET: function _GET(params)
|
||||
{
|
||||
var scope = getQParamSafe("scope", "fe");
|
||||
var autfunction = { fe : "WEB_FINUSE", fo : "WEB_FINFOF", bo : "WEB_FINBOF" } [scope];
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
|
||||
|
||||
var query = api2.sqlfields(params, model_invoicelines );
|
||||
var parentexists = ["f.fin_factuur_verwijder IS NULL"];
|
||||
|
||||
if (scope == "fe")
|
||||
{
|
||||
parentexists.push("f.prs_perslid_key_user=" + user_key);
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: disc3d conditie voor de geldendende autfunction toevoegen
|
||||
}
|
||||
|
||||
if (parentexists.length)
|
||||
{
|
||||
var sqlparent = " EXISTS (SELECT 1"
|
||||
+ " FROM fin_factuur f"
|
||||
+ " WHERE f.fin_factuur_key = fin_factuurregel.fin_factuur_key"
|
||||
+ " AND " + parentexists.join(" AND ") + ")";
|
||||
query.wheres.push(sqlparent);
|
||||
}
|
||||
|
||||
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, model_invoicelines );
|
||||
|
||||
return json;
|
||||
},
|
||||
|
||||
REST_PUT: function (params, jsondata, the_key) /* update invoiceline */
|
||||
{
|
||||
var finregel_key = the_key;
|
||||
model_invoicelines._pre_analyze_fields(params, jsondata);
|
||||
var fields = api2.update_fields(params, model_invoicelines, jsondata); // Build updater
|
||||
model_invoicelines._analyze_fields(fields, params, jsondata);
|
||||
model_invoicelines._validate_fields(fields, params, jsondata);
|
||||
//
|
||||
var sql = "SELECT fin_factuur_key"
|
||||
+ " FROM fin_factuurregel"
|
||||
+ " WHERE fin_factuurregel_key = " + finregel_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var fin_factuur_key = oRs("fin_factuur_key").value;
|
||||
oRs.Close();
|
||||
|
||||
var this_fin = fin.func_enabled_factuur(fin_factuur_key);
|
||||
user.auth_required_or_abort(this_fin.canChange); // Geen wijzigingen toestaan bij onvoldoende rechten.
|
||||
|
||||
var wheres = [" fin_factuurregel_key = " + finregel_key];
|
||||
var finUpd = buildTrackingUpdate("fin_factuurregel", wheres.join(" AND " ), fields, { noValidateToken: true });
|
||||
|
||||
var sql = "BEGIN "
|
||||
+ finUpd.sql + ";"
|
||||
+ model_invoicelines._synchronize_totals_sql(fin_factuur_key) + ";"
|
||||
+ "END;";
|
||||
var err = Oracle.Execute(sql, true);
|
||||
if (err.friendlyMsg)
|
||||
abort_with_warning(err.friendlyMsg);
|
||||
|
||||
return { key: finregel_key };
|
||||
},
|
||||
|
||||
REST_POST: function (params, jsondata, parent_key) /* new invoiceline */
|
||||
{
|
||||
var trackarray = [];
|
||||
var factuur_key = parent_key;
|
||||
var this_fin = fin.func_enabled_factuur(factuur_key); // Wat heb ik zoal aan rechten op deze specifieke factuur
|
||||
user.auth_required_or_abort(this_fin.canChange); // Geen nieuwe factuurregels bij een verwerkte factuur en onvoldoende rechten.
|
||||
|
||||
model_invoicelines._pre_analyze_fields(params, jsondata);
|
||||
var fields = api2.update_fields(params, model_invoicelines, jsondata); // Build updater
|
||||
model_invoicelines._analyze_fields(fields, params, jsondata);
|
||||
model_invoicelines._validate_fields(fields, params, jsondata);
|
||||
|
||||
// Zet volgnummer van de nieuwe factuurregel.
|
||||
var sql = "SELECT MAX(fin_factuurregel_nr) volgnr"
|
||||
+ " FROM fin_factuurregel"
|
||||
+ " WHERE fin_factuur_key = " + factuur_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var volgnr = oRs("volgnr").value + 1;
|
||||
oRs.Close();
|
||||
|
||||
fields.push({ dbs: "fin_factuur_key", typ: "key", val: factuur_key });
|
||||
fields.push({ dbs: "fin_factuurregel_key", typ: "key", seq: "fin_s_fin_factuurregel_key" });
|
||||
fields.push({ dbs: "fin_factuurregel_nr", typ: "number", val: volgnr });
|
||||
|
||||
var finIns = buildInsert("fin_factuurregel", fields, { noValidateToken: true });
|
||||
var factuurregel_key = finIns.sequences["fin_factuurregel_key"];
|
||||
|
||||
var sql = "BEGIN "
|
||||
+ finIns.sql + ";"
|
||||
+ model_invoicelines._synchronize_totals_sql(factuur_key) + ";"
|
||||
+ "END;";
|
||||
var err = Oracle.Execute(sql, true);
|
||||
if (err.friendlyMsg)
|
||||
abort_with_warning(err.friendlyMsg);
|
||||
|
||||
// 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 };
|
||||
},
|
||||
|
||||
REST_DELETE: function (params, jsondata, the_key) /* delete invoiceline */
|
||||
{
|
||||
var trackarray = [];
|
||||
var factuurregel_key = the_key;
|
||||
|
||||
var sql = "SELECT fin_factuur_key"
|
||||
+ " , fin_factuurregel_omschrijving"
|
||||
+ " , fin_factuurregel_totaal"
|
||||
+ " FROM fin_factuurregel"
|
||||
+ " WHERE fin_factuurregel_key = " + factuurregel_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var factuur_key = oRs("fin_factuur_key").value;
|
||||
var desc = oRs("fin_factuurregel_omschrijving").value;
|
||||
var total = oRs("fin_factuurregel_totaal").value;
|
||||
oRs.Close();
|
||||
|
||||
var this_fin = fin.func_enabled_factuur(factuur_key);
|
||||
user.auth_required_or_abort(this_fin.canDelete);
|
||||
|
||||
// Alleen bij voldoende rechten op de factuur kan een factuurregel worden verwijderd.
|
||||
fin.deleteFactuurregel(factuurregel_key);
|
||||
|
||||
var sql = "BEGIN "
|
||||
+ model_invoicelines._synchronize_totals_sql(factuur_key) + ";"
|
||||
+ model_invoicelines._renumber_invoicelines_sql(factuur_key) + ";"
|
||||
+ "END;"
|
||||
var err = Oracle.Execute(sql, true);
|
||||
if (err.friendlyMsg)
|
||||
abort_with_warning(err.friendlyMsg);
|
||||
else
|
||||
{
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
201
APPL/API2/model_invoices.inc
Normal file
201
APPL/API2/model_invoices.inc
Normal file
@@ -0,0 +1,201 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_invoices.inc
|
||||
|
||||
Description: Factuur model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes: TODO: definitieve naamgeving verifieren
|
||||
TODO: autorisaties voor scope=fo|bo
|
||||
|
||||
We had a discussion. The references (order, contract, purchaseorder) are now present by their foreign nodes.
|
||||
We ourselves want the creditor of the invoice in the result, it is logically a property of an invoice
|
||||
which we technically do not store with the invoice. Formally the creditor should be obtained by a subsequent
|
||||
call to the corresponing API. Alternatively we could add those 3 optional nodes with an include option
|
||||
which is merely designed for 1:n relations, not n:1 like this one.
|
||||
We do not want to slide down from our purest REST forms (yet) so we made the compromise of these 2 readonly fields.
|
||||
Let's see how it holds.
|
||||
*/
|
||||
%>
|
||||
<!-- #include file="../Shared/discxalg3d.inc"-->
|
||||
<!-- #include file="../fin/fin.inc" -->
|
||||
<!-- #include file="./model_invoicelines.inc"-->
|
||||
<%
|
||||
|
||||
model_invoices =
|
||||
{
|
||||
module: "FIN",
|
||||
table: "fin_factuur",
|
||||
primary: "fin_factuur_key",
|
||||
records_name: "invoices",
|
||||
record_name: "invoice",
|
||||
|
||||
// Het interne factuurnr is de id, het externe nummer is name
|
||||
fields: [{ name: "id", dbs: "fin_factuur_key", typ: "key", filter: "exact" },
|
||||
{ name: "invoicedate", dbs: "fin_factuur_datum", typ: "datetime", track: L("lcl_fin_findate"), filter: "range" },
|
||||
/*readonly*/ { name: "creditor", dbs: "prs_bedrijf_key", typ: "key", foreign: "prs_bedrijf", track: L("lcl_ord_company_uit"), filter: "exact",
|
||||
sql: "COALESCE(mld_opdr.mld_uitvoerende_keys, bes_bestelopdr.prs_bedrijf_key, cnt_contract.cnt_prs_bedrijf_key)" },
|
||||
/*readonly*/ { name: "referencetype", dbs: "dummy", typ: "varchar", filter: "exact",
|
||||
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')" },
|
||||
{ name: "name", dbs: "fin_factuur_nr", typ: "varchar", track: L("lcl_fin_invoice_nr_extern"), filter: "exact" },
|
||||
{ name: "order", dbs: "mld_opdr_key", typ: "key", foreign: "mld_opdr", filter: "exact"},
|
||||
{ name: "contract", dbs: "cnt_contract_key", typ: "key", foreign: "cnt_contract", filter: "exact"},
|
||||
{ name: "purchaseorder", dbs: "bes_bestelopdr_key", typ: "key", foreign: "bes_bestelopdr", filter: "exact"},
|
||||
{ name: "total", dbs: "fin_factuur_totaal", typ: "float", track: L("lcl_fin_totaal_bedrag"), filter: "range" },
|
||||
{ name: "vat", dbs: "fin_factuur_totaal_btw", typ: "float", track: L("lcl_fin_totaal_bedrag_btw"), filter: "range" },
|
||||
{ name: "status", dbs: "fin_factuur_statuses_key", typ: "key", foreign: fin.getfinstatustext, track: L("lcl_fin_fin_status"), filter: "exact" },
|
||||
{ name: "accountingperiod", dbs: "fin_factuur_boekmaand", typ: "varchar", track: L("lcl_fin_divide_period"), filter: "exact" },
|
||||
{ name: "reference", dbs: "fin_factuur_debiteur_nr", typ: "varchar", track: L("lcl_fin_debtor_nr"), filter: "like" },
|
||||
{ name: "costtype", dbs: "prs_kostensoort_key", typ: "key", foreign: "prs_kostensoort", track: L("lcl_shared_charge_type"), filter: "exact" },
|
||||
{ name: "contact", dbs: "prs_perslid_key_user", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_name"), filter: "exact" },
|
||||
{ name: "remark", dbs: "fin_factuur_opmerking", typ: "varchar", track: L("lcl_fin_remark"), filter: "like" }
|
||||
],
|
||||
includes: {"invoicelines": { model: model_invoicelines,
|
||||
joinfield: "fin_factuur_key"
|
||||
}
|
||||
},
|
||||
|
||||
_pre_analyze_fields: function (params, jsondata) /* analyseer inkomende jsondata, common voor PUT en POST */
|
||||
{
|
||||
// De factuurbedragen worden berekend uit de factuurregels. Eventuele waarden die hier gezet zijn negeren.
|
||||
jsondata.invoice.total = 0;
|
||||
jsondata.invoice.vat = 0;
|
||||
|
||||
// Status van 3 (foute import) moet bij saven op 2 worden gezet.
|
||||
var fin_status_key = jsondata.invoice.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 (fin_status_key == 6) fin_status_key = 2;
|
||||
|
||||
jsondata.invoice.status = fin_status_key;
|
||||
},
|
||||
|
||||
_analyze_fields: function (fields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
|
||||
{
|
||||
},
|
||||
|
||||
_validate_fields: function (fields, params, jsondata) /* valideer fields, alle constraints die niet door de database worden afgevangen */
|
||||
{
|
||||
},
|
||||
|
||||
REST_GET: function _GET(params)
|
||||
{
|
||||
var scope = getQParamSafe("scope", "fe");
|
||||
var autfunction = { fe : "WEB_FINUSE", fo : "WEB_FINFOF", bo : "WEB_FINBOF" } [scope];
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
|
||||
|
||||
var query = api2.sqlfields(params, model_invoices );
|
||||
query.wheres.push("fin_factuur_verwijder IS NULL");
|
||||
|
||||
if (/* self */ 0)
|
||||
{
|
||||
query.wheres.push("prs_perslid_key_user=" + user_key);
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: disc3d conditie voor de geldendende autfunction toevoegen
|
||||
}
|
||||
|
||||
query.tables.push("mld_opdr");
|
||||
query.wheres.push("fin_factuur.mld_opdr_key = mld_opdr.mld_opdr_key(+)");
|
||||
query.tables.push("bes_bestelopdr");
|
||||
query.wheres.push("fin_factuur.bes_bestelopdr_key = bes_bestelopdr.bes_bestelopdr_key(+)");
|
||||
query.tables.push("cnt_contract");
|
||||
query.wheres.push("fin_factuur.cnt_contract_key = cnt_contract.cnt_contract_key(+)");
|
||||
|
||||
var wheres = api2.sqlfilter(params, model_invoices);
|
||||
query.wheres = query.wheres.concat(wheres);
|
||||
|
||||
var sql = "SELECT " + query.selects.join(", ")
|
||||
+ " FROM " + query.tables.join(", ")
|
||||
+ " WHERE " + query.wheres.join(" AND " )
|
||||
+ " ORDER BY fin_factuur_key";
|
||||
var json = api2.sql2json (params, sql, model_invoices );
|
||||
|
||||
return json;
|
||||
},
|
||||
|
||||
REST_PUT: function (params, jsondata, the_key) /* update invoice */
|
||||
{
|
||||
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.
|
||||
//
|
||||
model_invoices._pre_analyze_fields(params, jsondata);
|
||||
var fields = api2.update_fields(params, model_invoices, jsondata); // Build updater
|
||||
model_invoices._analyze_fields(fields, params, jsondata);
|
||||
model_invoices._validate_fields(fields, params, jsondata);
|
||||
//
|
||||
var wheres = [" fin_factuur_key = " + fin_key];
|
||||
var finUpd = buildTrackingUpdate("fin_factuur", wheres.join(" AND " ), fields, { noValidateToken: true });
|
||||
var err = Oracle.Execute(finUpd.sql, true);
|
||||
if (err.friendlyMsg)
|
||||
abort_with_warning(err.friendlyMsg);
|
||||
|
||||
var fintrack = api2.process_includes(params, model_invoices, jsondata, the_key);
|
||||
|
||||
// update nog tracken
|
||||
if (fin_key > 0)
|
||||
{
|
||||
shared.trackaction("FINUPD",
|
||||
fin_key,
|
||||
L("lcl_fin_is_finupdtrack").format(fin_key) + (finUpd.trackarray.length > 0? "\n" : "") + finUpd.trackarray.join("\n"));
|
||||
};
|
||||
|
||||
return { key: fin_key };
|
||||
},
|
||||
|
||||
REST_POST: function (params, jsondata) /* new invoice */
|
||||
{
|
||||
var this_fin = fin.func_enabled_factuur(-1);
|
||||
user.auth_required_or_abort(this_fin.canChange); // Geen wijzigingen toestaan bij onvoldoende rechten.
|
||||
|
||||
params.isNew = true; // negeer eventuele bestaande keys
|
||||
|
||||
model_invoices._pre_analyze_fields(params, jsondata);
|
||||
var fields = api2.update_fields(params, model_invoices, jsondata); // Build updater
|
||||
model_invoices._analyze_fields(fields, params, jsondata);
|
||||
model_invoices._validate_fields(fields, params, jsondata);
|
||||
|
||||
fields.push({ dbs: "fin_factuur_key", typ: "key", seq: "fin_s_fin_factuur_key" });
|
||||
var finIns = buildInsert("fin_factuur", fields, { noValidateToken: true} );
|
||||
var factuur_key = finIns.sequences["fin_factuur_key"];
|
||||
|
||||
var sql = "BEGIN "
|
||||
+ finIns.sql +";"
|
||||
+ "END;";
|
||||
|
||||
var err = Oracle.Execute(sql, true);
|
||||
if (err.friendlyMsg)
|
||||
abort_with_warning(err.friendlyMsg);
|
||||
|
||||
var fintrack = api2.process_includes(params, model_invoices, jsondata, factuur_key);
|
||||
|
||||
shared.trackaction("FINNEW", factuur_key);
|
||||
|
||||
return { key: factuur_key };
|
||||
},
|
||||
|
||||
REST_DELETE: function (params, jsondata, the_key) /* delete invoice */
|
||||
{
|
||||
var factuur_key = the_key;
|
||||
|
||||
var this_fin = fin.func_enabled_factuur(factuur_key);
|
||||
user.auth_required_or_abort(this_fin.canDelete);
|
||||
if (this_fin.canDelete) // Dubbel op: bij canDelete=false komt hij hier niet meer.
|
||||
{
|
||||
// Verwijderdatum van de factuur zetten en niet fysiek verwijderen
|
||||
var sql = "UPDATE fin_factuur"
|
||||
+ " SET fin_factuur_verwijder = SYSDATE"
|
||||
+ " WHERE fin_factuur_verwijder IS NULL"
|
||||
+ " AND fin_factuur_key = " + factuur_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
118
APPL/API2/model_issueobjects.inc
Normal file
118
APPL/API2/model_issueobjects.inc
Normal file
@@ -0,0 +1,118 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_issueobjects.inc
|
||||
|
||||
Description: Meldingobjecten model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes:
|
||||
*/
|
||||
|
||||
%>
|
||||
<%
|
||||
model_issueobjects =
|
||||
{
|
||||
table: "mld_melding_object",
|
||||
primary: "mld_melding_object_key",
|
||||
records_name: "issueobjects",
|
||||
record_name: "issueobject",
|
||||
fields: [{ name: "id", dbs: "mld_melding_object_key", typ: "key", filter: "exact" },
|
||||
//{ name: "issue", dbs: "mld_melding_key", typ: "key", xforeign: "mld_melding" }, // niet teruglinken // mld_melding zit niet in save2db.foreignKeyTable()
|
||||
{ name: "object", dbs: "ins_deel_key", typ: "key", foreign: "ins_deel" }
|
||||
],
|
||||
|
||||
_analyze_fields: function (fields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
|
||||
{
|
||||
if (jsondata.id)
|
||||
{
|
||||
// Bestaande mld_melding_object: PUT
|
||||
}
|
||||
else
|
||||
{ // Nieuwe mld_melding_object: POST
|
||||
// Controleer of de combinatie melding_key/object_key al bestaat. Zo ja, dan niet toevoegen.
|
||||
var mld_obj_key = -1;
|
||||
var sql = "SELECT mld_melding_object_key"
|
||||
+ " FROM mld_melding_object"
|
||||
+ " WHERE mld_melding_object_verwijder IS NULL"
|
||||
+ " AND mld_melding_key = " + params.filter.id
|
||||
+ " AND ins_deel_key = " + fields[0].val;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
mld_obj_key = oRs("mld_melding_object_key").Value;
|
||||
params.isNew = false;
|
||||
}
|
||||
oRs.Close();
|
||||
}
|
||||
},
|
||||
|
||||
_validate_fields: function (fields, params, jsondata) /* valideer fields, alle constraints die niet door de database worden afgevangen */
|
||||
{
|
||||
},
|
||||
|
||||
REST_GET: function _GET(params)
|
||||
{
|
||||
// Kan alleen vanuit model_issue aangeroepen worden. De autorisatie is daar al geregeld.
|
||||
var query = api2.sqlfields(params, model_issueobjects );
|
||||
|
||||
query.wheres.push("mld_melding_object_verwijder IS NULL");
|
||||
|
||||
var wheres = api2.sqlfilter(params, model_issueobjects);
|
||||
query.wheres = query.wheres.concat(wheres);
|
||||
|
||||
var sql = "SELECT " + query.selects.join(", ")
|
||||
+ " FROM " + query.tables.join(", ")
|
||||
+ " WHERE " + query.wheres.join(" AND " );
|
||||
|
||||
var json = api2.sql2json (params, sql, model_issueobjects );
|
||||
|
||||
return json;
|
||||
},
|
||||
|
||||
REST_PUT: function (params, jsondata, the_key) /* update object */
|
||||
{
|
||||
// Kan alleen vanuit model_issue aangeroepen worden. De autorisatie is daar al geregeld.
|
||||
var fields = api2.update_fields(params, model_issueobjects, jsondata); // Build updater
|
||||
model_issueobjects._analyze_fields(fields, params, jsondata);
|
||||
|
||||
var mldUpd = buildTrackingUpdate("mld_melding_object", " mld_melding_object_key = " + the_key, fields, { noValidateToken: true });
|
||||
Oracle.Execute(mldUpd.sql);
|
||||
|
||||
// Nu geen api2.process_includes() meer aanroepen, anders ga je de objecten zelf ook nog aanpassen.
|
||||
|
||||
return { key: the_key };
|
||||
},
|
||||
|
||||
REST_POST: function (params, jsondata, parent_key) /* new object */
|
||||
{
|
||||
// Kan alleen vanuit model_issue aangeroepen worden. De autorisatie is daar al geregeld.
|
||||
params.isNew = true; // negeer eventuele bestaande keys
|
||||
var fields = api2.update_fields(params, model_issueobjects, jsondata); // Build updater
|
||||
model_issueobjects._analyze_fields(fields, params, jsondata);
|
||||
|
||||
var new_key = null;
|
||||
if (params.isNew)
|
||||
{
|
||||
fields.push({ dbs: "mld_melding_key", typ: "key", val: parent_key });
|
||||
fields.push({ dbs: "mld_melding_object_key", typ: "key", seq: "mld_s_mld_object_key" });
|
||||
|
||||
var mldIns = buildInsert("mld_melding_object", fields, { noValidateToken: true });
|
||||
new_key = mldIns.sequences["mld_melding_object_key"];
|
||||
Oracle.Execute(mldIns.sql);
|
||||
}
|
||||
|
||||
return { key: new_key };
|
||||
},
|
||||
|
||||
REST_DELETE: function (params, jsondata, the_key) /* delete object */
|
||||
{
|
||||
// Kan alleen vanuit model_issue aangeroepen worden. De autorisatie is daar al geregeld.
|
||||
var sql = "DELETE FROM mld_melding_object WHERE mld_melding_object_key = " + the_key;
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
%>
|
||||
516
APPL/API2/model_issues.inc
Normal file
516
APPL/API2/model_issues.inc
Normal file
@@ -0,0 +1,516 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_issues.inc
|
||||
|
||||
Description: Melding model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes: TODO on demand: PUT/POST/DELETE
|
||||
TODO test autorisatie-toepassing (MGE?)
|
||||
*/
|
||||
|
||||
%>
|
||||
<!-- #include file="../Shared/discx3d.inc" -->
|
||||
<!-- #include file="../mld/mld.inc" -->
|
||||
<!-- #include file="model_issueobjects.inc"-->
|
||||
<!-- #include file="model_notes.inc"-->
|
||||
<!-- #include file="model_orders.inc"-->
|
||||
<%
|
||||
|
||||
model_issues =
|
||||
{
|
||||
module: "MLD",
|
||||
table: "mld_melding",
|
||||
// aliasprefix: "", // Deze prefix wordt voor fields.name gezet.
|
||||
primary: "mld_melding_key",
|
||||
records_name: "issues",
|
||||
record_name: "issue",
|
||||
fields: [{ name: "id", dbs: "mld_melding_key", typ: "key", filter: "exact" },
|
||||
{ name: "name", dbs: "mld_melding_id", typ: "varchar", sql: "ins_srtdiscipline.ins_srtdiscipline_prefix||mld_melding.mld_melding_key", filter: "exact" },
|
||||
{ name: "contact", dbs: "prs_perslid_key", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_name"), filter: "exact" },
|
||||
{ name: "requestor", dbs: "prs_perslid_key_voor", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_call_for"), filter: "exact" },
|
||||
{ name: "issuedate", dbs: "mld_melding_datum", typ: "datetime", track: L("lcl_mld_date_time"), filter: "range" },
|
||||
{ name: "enddate", dbs: "mld_melding_einddatum", typ: "datetime", track: L("lcl_mld_enddate")},
|
||||
{ name: "issuetype", dbs: "mld_stdmelding_key", typ: "key", foreign: "mld_stdmelding", track: L("lcl_complain"), filter: "exact" },
|
||||
{ name: "description", dbs: "mld_melding_omschrijving", typ: "varchar", track: L("lcl_descr"), filter: "like" },
|
||||
{ name: "remark", dbs: "mld_melding_opmerking", typ: "varchar", track: L("lcl_remark")},
|
||||
{ name: "status", dbs: "mld_melding_status", typ: "key", foreign: mld.getmldstatustext, track: L("lcl_status"), filter: "exact" },
|
||||
{ name: "flag", dbs: "mld_melding_flag", typ: "key", /* geen echte key, wel key-gedrag */ track: L("lcl_mld_flags"), filter: "exact" },
|
||||
{ name: "account", dbs: "prs_kostenplaats_key", typ: "key", foreign: "prs_kostenplaats", track: L("lcl_account"), filter: "exact" },
|
||||
{ name: "handler", dbs: "mld_melding_behandelaar_key", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_behandelaar"), filter: "exact" },
|
||||
{ name: "location", dbs: "mld_alg_locatie_key", typ: "key", foreign: "alg_locatie", track: L("lcl_location"), filter: "exact" },
|
||||
{ name: "building", dbs: "alg_v_allonroerendgoed.alg_gebouw_key", typ: "key", foreign: "alg_gebouw", track: L("lcl_building"), filter: "exact" },
|
||||
{ name: "floor", dbs: "alg_v_allonroerendgoed.alg_verdieping_key", typ: "key", foreign: "alg_verdieping", track: L("lcl_floor"), filter: "exact" },
|
||||
{ name: "room", dbs: "alg_v_allonroerendgoed.alg_ruimte_key", typ: "key", foreign: "alg_ruimte", track: L("lcl_room"), filter: "exact" },
|
||||
{ name: "terrain", dbs: "alg_v_allonroerendgoed.alg_terreinsector_key", typ: "key", foreign: "alg_terreinsector", track: L("lcl_room"), filter: "exact" }
|
||||
],
|
||||
includes: {
|
||||
"issueobjects": {
|
||||
model: model_issueobjects,
|
||||
joinfield: "mld_melding_key",
|
||||
single_only: false
|
||||
},
|
||||
"notes": {
|
||||
model: model_notes,
|
||||
joinfield: "parent_key",
|
||||
single_only: false,
|
||||
joinfunction: function (params)
|
||||
{
|
||||
/* gaat uit dat die wordt geimplementeerd met een view fac_v_notes (module, key, columns....) */
|
||||
return "(module='MLD' OR module IS NULL) AND fac_v_notes.parent_key(+) = mld_melding.mld_melding_key";
|
||||
}
|
||||
},
|
||||
"orders": {
|
||||
model: model_orders,
|
||||
joinfield: "mld_melding_key",
|
||||
single_only: false,
|
||||
joinfunction: function (params)
|
||||
{
|
||||
return " mld_melding.mld_melding_key = mld_opdr.mld_melding_key(+) ";
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
REST_GET: function _GET(params)
|
||||
{
|
||||
var scope = getQParamSafe("scope", "fe");
|
||||
var autfunction = { fe : "WEB_MLDUSE", fo : "WEB_MLDFOF", bo : "WEB_MLDBOF", mi : "WEB_MLDBAC" } [scope];
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); /* pessimistic */
|
||||
|
||||
// Hier kom je niet meer terecht als bovenstaande autorisatiecheck niet tot succes leidt.
|
||||
|
||||
var alg3d = false;
|
||||
var prs3d = false;
|
||||
|
||||
var query = api2.sqlfields(params, model_issues );
|
||||
|
||||
if (scope == "fe")
|
||||
{
|
||||
query.wheres.push("mld_melding.prs_perslid_key=" + user_key);
|
||||
}
|
||||
|
||||
if (!params.filter.id)
|
||||
{
|
||||
/* You can't go any further back in time than the GUI could (ongeveer)*/
|
||||
/* Als er wel een start_issuedate is dan wordt deze toegevoegd in api2.sqlfilter() verderop. */
|
||||
if (!params.filter.start_issuedate && S("mld_max_history") > 0)
|
||||
{
|
||||
query.wheres.push("mld_melding_datum > SYSDATE - "+ S("mld_max_history"));
|
||||
}
|
||||
if (!params.filter.status)
|
||||
{
|
||||
/* Limitation: if no status filter, then default to the active statusses (all except 1,6,5) */
|
||||
// Zou zo kunnen, params.filter.status = [0,2,3,4,7];, maar eigenlijk is dit logischer
|
||||
query.wheres.push("mld_melding_status IN (0,2,3,4,7)");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* we need the prefix for the name */
|
||||
query.tables.push("mld_stdmelding");
|
||||
query.wheres.push("mld_melding.mld_stdmelding_key = mld_stdmelding.mld_stdmelding_key");
|
||||
query.tables.push("ins_tab_discipline");
|
||||
query.wheres.push("mld_stdmelding.mld_ins_discipline_key = ins_tab_discipline.ins_discipline_key");
|
||||
query.tables.push("ins_srtdiscipline");
|
||||
query.wheres.push("ins_tab_discipline.ins_srtdiscipline_key = ins_srtdiscipline.ins_srtdiscipline_key");
|
||||
|
||||
query.tables.push("alg_v_allonroerendgoed");
|
||||
query.wheres.push("mld_melding.mld_alg_onroerendgoed_keys = alg_v_allonroerendgoed.alg_onroerendgoed_keys(+)");
|
||||
|
||||
if (params.authparams.ALGreadlevel > -1)
|
||||
{
|
||||
/* required for 3D ALG scopeing */
|
||||
alg3d = true;
|
||||
__Log("ALGreadlevel="+params.authparams.ALGreadlevel);
|
||||
query.tables.push("alg_locatie"); /* opletten: outerjoin denk ik? */
|
||||
query.wheres.push("mld_melding.mld_alg_onroerendgoed_keys = alg_locatie.alg_locatie_key(+)");
|
||||
query.tables.push("alg_district");
|
||||
query.wheres.push("alg_locatie.alg_district_key = alg_district.alg_district_key(+)");
|
||||
}
|
||||
if (params.authparams.PRSreadlevel > -1)
|
||||
{
|
||||
/* required for 3D PRS scopeing */
|
||||
prs3d = true;
|
||||
__Log("PRSreadlevel="+params.authparams.PRSreadlevel);
|
||||
query.tables.push("prs_v_afdeling");
|
||||
query.wheres.push("mld_melding.prs_perslid_key = prs_v_afdeling.prs_afdeling_key");
|
||||
}
|
||||
|
||||
var wheres = api2.sqlfilter(params, model_issues);
|
||||
query.wheres = query.wheres.concat(wheres);
|
||||
|
||||
var sql = "SELECT " + query.selects.join(", ")
|
||||
+ " FROM " + query.tables.join(", ")
|
||||
+ " WHERE " + query.wheres.join(" AND " );
|
||||
|
||||
// Over het resultaat moet nog de 3D rasp, altijd
|
||||
sql = discx3d (sql,
|
||||
"ins_tab_discipline.ins_discipline_key",
|
||||
(alg3d ? "alg_district.alg_regio_key" : null),
|
||||
(alg3d ? "alg_district.alg_district_key" : null),
|
||||
(alg3d ? "mld_melding.mld_alg_locatie_key" : null),
|
||||
(alg3d ? "alg_v_allonroerendgoed.alg_gebouw_key" : null),
|
||||
(alg3d ? "alg_v_allonroerendgoed.alg_verdieping_key" : null),
|
||||
(alg3d ? "alg_v_allonroerendgoed.alg_ruimte_key" : null),
|
||||
(prs3d ? "prs_bedrijf_key" : null),
|
||||
(prs3d ? "prs_afdeling_key" : null),
|
||||
autfunction,
|
||||
"", /* no additional discipline restrictions */
|
||||
(alg3d && prs3d ? 2 : prs3d ? 1 : 0)
|
||||
);
|
||||
|
||||
sql += " ORDER BY mld_melding_key";
|
||||
|
||||
var json = api2.sql2json (params, sql, model_issues );
|
||||
|
||||
return json;
|
||||
},
|
||||
|
||||
_pre_analyze_fields: function (params, jsondata) /* analyseer inkomende jsondata voor POST */
|
||||
{
|
||||
params.data = {};
|
||||
if (params.isNew)
|
||||
{ // analyseer inkomende jsondata voor POST
|
||||
var msgError = "";
|
||||
var hasError = true;
|
||||
//
|
||||
// Voor een nieuwe melding moet er een geldige stdmelding zijn.
|
||||
msgError = "Missing issuetype";
|
||||
if (jsondata.issue.issuetype)
|
||||
{
|
||||
msgError = "Invalid issuetype";
|
||||
var sql_stdm = "SELECT sm.mld_stdmelding_omschrijving"
|
||||
+ " , sm.mld_ins_discipline_key"
|
||||
+ " , md.ins_srtdiscipline_key"
|
||||
+ " , COALESCE(sm.mld_stdmelding_directklaar, dp.mld_disc_params_directklaar, 0) mld_directklaar"
|
||||
+ " FROM mld_stdmelding sm"
|
||||
+ " , mld_discipline md"
|
||||
+ " , mld_disc_params dp"
|
||||
+ " WHERE sm.mld_ins_discipline_key = md.ins_discipline_key"
|
||||
+ " AND sm.mld_ins_discipline_key = dp.mld_ins_discipline_key";
|
||||
+ " AND sm.mld_stdmelding_key = " + jsondata.issue.issuetype;
|
||||
var oRs_stdm = Oracle.Execute(sql_stdm);
|
||||
if (!oRs_stdm.eof)
|
||||
{
|
||||
params.data.mld_ins_discipline_key = oRs_stdm("mld_ins_discipline_key").Value;
|
||||
params.data.ins_srtdiscipline_key = oRs_stdm("ins_srtdiscipline_key").Value;
|
||||
params.data.mld_directklaar = oRs_stdm("mld_directklaar").Value;
|
||||
hasError = false;
|
||||
}
|
||||
oRs_stdm.Close();
|
||||
}
|
||||
if (hasError) api2.error(500, msgError);
|
||||
//
|
||||
|
||||
// Bepaal de kostenplaats, indien verplicht.
|
||||
var stdm_info = mld.mld_stdmeldinginfo(jsondata.issue.issuetype);
|
||||
var kpkey = (jsondata.issue.account ? jsondata.issue.account : -1);
|
||||
if (stdm_info.kpnverplicht && kpkey < 0)
|
||||
{ // Kostenplaats is verplicht, maar is niet meegegeven. Bepaal default kostenplaats.
|
||||
kpkey = (user.afdeling().prs_kostenplaats_key() || -1); // User kostenplaats key
|
||||
}
|
||||
if (stdm_info.kpnverplicht && kpkey < 0)
|
||||
{ // Kon ook geen default kostenplaats vinden.
|
||||
msgError = "Account could not be validated";
|
||||
api2.error(500, msgError);
|
||||
}
|
||||
jsondata.issue.account = kpkey;
|
||||
params.data.is_kto_antwoord = stdm_info.is_kto_antwoord;
|
||||
//
|
||||
|
||||
//
|
||||
if (!jsondata.issue.contact) jsondata.issue.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.
|
||||
if (S("mld_allow_for_others") == 0)
|
||||
{
|
||||
jsondata.issue.requestor = jsondata.issue.contact;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Bestaande melding: Haal de gegevens op.
|
||||
var sql = "SELECT mld_stdmelding_key"
|
||||
+ " FROM mld_melding"
|
||||
+ " WHERE mld_melding_key = " + jsondata.issue.id;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
jsondata.issue.issuetype = oRs("mld_stdmelding_key").Value;
|
||||
oRs.Close();
|
||||
|
||||
}
|
||||
//
|
||||
//
|
||||
var stdm_info = mld.mld_stdmeldinginfo(jsondata.issue.issuetype);
|
||||
// Startdatum: indien niet meegegeven, neem dan sysdate
|
||||
var startdate = (jsondata.issue.issuedate ? jsondata.issue.issuedate : new Date);
|
||||
var startwerkdag = parseFloat(S("fac_t_startofworkday"));
|
||||
var startwerkdag_uur = Math.floor(startwerkdag);
|
||||
var startwerkdag_min = (startwerkdag - Math.floor(startwerkdag)) * 60;
|
||||
var startdatebegin = new Date(startdate.getFullYear(), startdate.getMonth(), startdate.getDate(), startwerkdag_uur, startwerkdag_min);
|
||||
var sysdate = new Date();
|
||||
//
|
||||
if (stdm_info.startdatum)
|
||||
{ // Situatie 1: Einddatum = TRUNC(startdatum) + 8:00 uur + SLA
|
||||
// LET OP!!!: Als setting "mld_disc_params_startdatum" is gezet dan wordt eigenlijk verondersteld dat de SLA in dagen is en niet in uren.
|
||||
// Echter als de startdatum de registratiedatum (bij nieuwe melding dus sysdate) is moet wel voor de begintijd de registratietijd (registratiedatum) genomen worden tijdens het opslaan.
|
||||
// Anders geldt de acceptatietijd (in uren) onterecht al vanaf het begin van de dag.
|
||||
if (params.isNew)
|
||||
{ // Nieuwe melding.
|
||||
// Startdatum is vandaag: starttijd is huidige tijd.
|
||||
// Startdatum is niet vandaag: starttijd is begin werkdag.
|
||||
var startdate_is_today = (startdate.midnight().getTime() == sysdate.midnight().getTime());
|
||||
startdate = (startdate_is_today? sysdate : startdatebegin);
|
||||
}
|
||||
else
|
||||
{ // Bestaande melding
|
||||
var mld_key = jsondata.issue.id;
|
||||
sql = "SELECT mld_melding_datum"
|
||||
+ " FROM mld_melding"
|
||||
+ " WHERE mld_melding_key = " + mld_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
var oldstartdate = new Date(oRs("mld_melding_datum").Value);
|
||||
|
||||
// Alleen als datum veranderd is moet de starttijd worden aangepast.
|
||||
if (startdate.midnight().getTime() != oldstartdate.midnight().getTime())
|
||||
{ // Startdatum is aangepast.
|
||||
// Als de startdatum is aangepast in registratiedatum, dan wel weer de registratietijd (registratiedatum) pakken.
|
||||
// In alle andere gevallen begin van de werkdag pakken.
|
||||
sql = "SELECT fac.gettrackingdate('MLDNEW', " + mld_key + ") registratiedatum FROM DUAL"
|
||||
oRs_1 = Oracle.Execute(sql);
|
||||
var registratiedatum = new Date(oRs_1("registratiedatum").Value);
|
||||
oRs_1.Close();
|
||||
|
||||
var startdatum_is_registratiedatum = (startdate.midnight().getTime() == registratiedatum.midnight().getTime());
|
||||
startdate = (startdatum_is_registratiedatum? registratiedatum : startdatebegin);
|
||||
}
|
||||
else
|
||||
{ // else startdatum niet aanpassen.
|
||||
startdate = oldstartdate;
|
||||
}
|
||||
oRs.Close();
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Situatie 2: Einddatum = COALESCE(huidige waarde, sysdate) + SLA
|
||||
if (params.isNew)
|
||||
{
|
||||
startdate = new Date();
|
||||
}
|
||||
else
|
||||
{
|
||||
startdate = jsondata.issue.issuedate;
|
||||
}
|
||||
}
|
||||
jsondata.issue.issuedate = startdate;
|
||||
// De einddatum is de meegegeven einddatum, maar als die niet wordt meegegeven regelt de trigger dat wel, dus DAN MOET IK HEM NIET MEEGEVEN
|
||||
//
|
||||
|
||||
// Onroerendgoed_keys wordt de verfijnste van de opgegeven plaats
|
||||
var locatiekey = (jsondata.issue.location ? jsondata.issue.location : -1);
|
||||
var gebouwkey = (jsondata.issue.building ? jsondata.issue.building : -1);
|
||||
var verdiepingkey = (jsondata.issue.floor ? jsondata.issue.floor : -1);
|
||||
var ruimtekey = (jsondata.issue.room ? jsondata.issue.room : -1);
|
||||
var alg_onroerendgoed_keys = -1;
|
||||
|
||||
if (!S("mld_plaats_is_locatie_only"))
|
||||
{ // die specifiekere plaats moet dan leegblijven
|
||||
if (ruimtekey != -1)
|
||||
alg_onroerendgoed_keys = ruimtekey;
|
||||
else if (verdiepingkey != -1)
|
||||
alg_onroerendgoed_keys = verdiepingkey;
|
||||
else if (gebouwkey != -1)
|
||||
alg_onroerendgoed_keys = gebouwkey;
|
||||
}
|
||||
params.data.alg_onroerendgoed_keys = alg_onroerendgoed_keys;
|
||||
|
||||
if (!params.isNew)
|
||||
{ // Verwijder voor PUT wat niet gewijzigd mag worden.
|
||||
delete jsondata.issue.name;
|
||||
delete jsondata.issue.contact;
|
||||
delete jsondata.issue.requestor;
|
||||
delete jsondata.issue.issuetype;
|
||||
delete jsondata.issue.location;
|
||||
}
|
||||
},
|
||||
|
||||
_analyze_fields: function (fields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
|
||||
{
|
||||
},
|
||||
|
||||
_validate_fields: function (fields, params, jsondata) /* valideer fields, alle constraints die niet door de database worden afgevangen */
|
||||
{
|
||||
// als einddatum ingevuld is moet deze groter/gelijk zijn aan de begindatum
|
||||
},
|
||||
|
||||
_validate_close: function (params, jsondata, the_key) /* uit: mld_close_save.asp */
|
||||
{
|
||||
var mld_key = the_key;
|
||||
var this_mld = mld.func_enabled_melding(mld_key);
|
||||
user.auth_required_or_abort(this_mld.canClose); // Als je mag accepteren mag je ook rejecten
|
||||
|
||||
params.data = {};
|
||||
params.data.tobeclosed = false;
|
||||
params.data.canCloseOpdrOfMld = [];
|
||||
var canCloseOpdr = [];
|
||||
var reqStatusEmpty = [];
|
||||
var noOpdrCloseAtAll = false;
|
||||
var futureOpdr = false;
|
||||
|
||||
// Zijn er nog kenmerken die nu wel verplicht zijn?
|
||||
var kvsAfwezig = mld.hasRequiredStatusEmpty(mld_key, 5);
|
||||
if (kvsAfwezig.length)
|
||||
{
|
||||
var mldnr = mld.mld_prefix(mld_key) + mld_key;
|
||||
reqStatusEmpty.push(L("lcl_mld_req_status_empty").format(kvsAfwezig.join(", "), mldnr) );
|
||||
}
|
||||
// Zijn er nog lopende opdrachten?
|
||||
var sql = "SELECT o.mld_opdr_key"
|
||||
+ " FROM mld_opdr o"
|
||||
+ " WHERE o.mld_melding_key = " + mld_key
|
||||
+ " AND o.mld_statusopdr_key NOT IN (1, 6, 7, 9)";
|
||||
var oRsOM = Oracle.Execute(sql);
|
||||
while (!oRsOM.eof)
|
||||
{ // Voor elke opdracht van een melding controleren of deze afgemeld mag worden
|
||||
var mld_opdr_key = oRsOM("mld_opdr_key").Value;
|
||||
sql = "SELECT mld_opdr_einddatum"
|
||||
+ " FROM mld_opdr o"
|
||||
+ " WHERE o.mld_opdr_key = " + mld_opdr_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
// Als Setting S("mld_ord_afmeld_future") niet is gezet (0): Opdrachten waarvan de einddatum in de toekomst ligt mogen niet worden afgemeld.
|
||||
var this_opdr = mld.func_enabled_opdracht(mld_opdr_key);
|
||||
if (!this_opdr.canClose || (S("mld_ord_afmeld_future") != 1 && (oRs("mld_opdr_einddatum").value > new Date())))
|
||||
{ // Geen autorisatie om alle opdrachten van een melding af te melden of opdrachten in de toekomst
|
||||
// met setting S("mld_ord_afmeld_future") niet gezet-->dan geen enkele van die melding
|
||||
noOpdrCloseAtAll = true;
|
||||
if (S("mld_ord_afmeld_future") != 1 && (oRs("mld_opdr_einddatum").value > new Date()))
|
||||
futureOpdr = true; // Indien opdrachten in de toekomst en setting S("mld_ord_afmeld_future") niet gezet (0) dan mag je de melding niet afmelden
|
||||
}
|
||||
oRs.Close();
|
||||
params.data.canCloseOpdrOfMld.push(mld_opdr_key);
|
||||
oRsOM.MoveNext();
|
||||
}
|
||||
oRsOM.Close();
|
||||
|
||||
if (!futureOpdr && !noOpdrCloseAtAll)
|
||||
{ // Indien opdrachten in de toekomst en setting S("mld_ord_afmeld_future") niet gezet (0) dan mag je de melding niet afmelden
|
||||
// EN geen opdrachten of alle opdrachten mogen gesloten worden, dan kan de melding afgemeld worden
|
||||
params.data.tobeclosed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
msgError = "Issue can not be closed";
|
||||
api2.error(500, msgError);
|
||||
}
|
||||
},
|
||||
|
||||
REST_PUT: function (params, jsondata, the_key) /* update call */
|
||||
{
|
||||
if (!jsondata.issue.id) jsondata.issue.id = the_key;
|
||||
var scope = getQParamSafe("scope", "fe");
|
||||
var autfunction = { fe : "WEB_MLDUSE", fo : "WEB_MLDFOF", bo : "WEB_MLDBOF", mi : "WEB_MLDBAC" } [scope];
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); /* pessimistic */
|
||||
|
||||
// Hier kom je niet meer terecht als bovenstaande autorisatiecheck niet tot succes leidt.
|
||||
|
||||
var mld_key = the_key;
|
||||
var this_mld = mld.func_enabled_melding(mld_key);
|
||||
user.auth_required_or_abort(this_mld.canChange); // Geen wijzigingen toestaan bij onvoldoende rechten.
|
||||
|
||||
model_issues._pre_analyze_fields(params, jsondata);
|
||||
var fields = api2.update_fields(params, model_issues, jsondata); // Build updater
|
||||
model_issues._analyze_fields(fields, params, jsondata);
|
||||
model_issues._validate_fields(fields, params, jsondata);
|
||||
|
||||
var wheres = [" mld_melding_key = " + mld_key];
|
||||
var mldUpd = buildTrackingUpdate("mld_melding", wheres.join(" AND " ), fields, { noValidateToken: true });
|
||||
|
||||
// Alle gegevens bijwerken.
|
||||
var sql = "BEGIN "
|
||||
+ mldUpd.sql + ";"
|
||||
+ " END;";
|
||||
|
||||
var err = Oracle.Execute(sql, true);
|
||||
if (err.friendlyMsg)
|
||||
abort_with_warning(err.friendlyMsg);
|
||||
|
||||
params.data.module = "MLD"; // model_notes moet weten bij wekle module de notes horen.
|
||||
var mldtrack = api2.process_includes(params, model_issues, jsondata, mld_key);
|
||||
|
||||
// update nog tracken
|
||||
if (mld_key > 0)
|
||||
{
|
||||
shared.trackaction("MLDUPD",
|
||||
mld_key,
|
||||
L("lcl_mld_is_mldupdtrack").format(mld_key) + (mldUpd.trackarray.length > 0? "\n" : "") + mldUpd.trackarray.join("\n"));
|
||||
};
|
||||
|
||||
return { key: mld_key };
|
||||
},
|
||||
|
||||
REST_POST: function (params, jsondata) /* new call */
|
||||
{
|
||||
var scope = getQParamSafe("scope", "fe");
|
||||
var autfunction = { fe : "WEB_MLDUSE", fo : "WEB_MLDFOF", bo : "WEB_MLDBOF", mi : "WEB_MLDBAC" } [scope];
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); /* pessimistic */
|
||||
|
||||
// Hier kom je niet meer terecht als bovenstaande autorisatiecheck niet tot succes leidt.
|
||||
params.isNew = true;
|
||||
model_issues._pre_analyze_fields(params, jsondata);
|
||||
|
||||
var this_mld = mld.func_enabled_mld(params.data.mld_ins_discipline_key, "D");
|
||||
user.auth_required_or_abort(this_mld.canFEwrite || this_mld.canFOwrite);
|
||||
//
|
||||
var fields = api2.update_fields(params, model_issues, jsondata); // Build updater
|
||||
model_issues._analyze_fields(fields, params, jsondata);
|
||||
model_issues._validate_fields(fields, params, jsondata);
|
||||
|
||||
fields.push({ dbs: "mld_alg_onroerendgoed_keys", typ: "key", val: (params.data.alg_onroerendgoed_keys==-1 ? null : params.data.alg_onroerendgoed_keys) });
|
||||
fields.push({ dbs: "mld_meldbron_key", typ: "key", val: S("mld_meldbron_key") });
|
||||
fields.push({ dbs: "mld_melding_module", typ: "varchar", val: "MLD" });
|
||||
fields.push({ dbs: "mld_melding_key", typ: "key", seq: "mld_s_mld_melding_key" });
|
||||
|
||||
var mldIns = buildInsert("mld_melding", fields, { noValidateToken: true });
|
||||
var new_key = mldIns.sequences["mld_melding_key"];
|
||||
var sql = "BEGIN "
|
||||
+ mldIns.sql + ";"
|
||||
+ "END;";
|
||||
Oracle.Execute(mldIns.sql);
|
||||
|
||||
mld.setmeldingstatus(new_key, (params.data.mld_directklaar? 0 : 2)); // Zorgt ook voor tracking & daarmee notificatie
|
||||
|
||||
if (params.data.is_kto_antwoord) // die direct afmelden
|
||||
mld.setmeldingstatus(new_key, 5);
|
||||
|
||||
params.data.module = "MLD"; // model_notes moet weten bij wekle module de notes horen.
|
||||
|
||||
return { key: new_key };
|
||||
},
|
||||
|
||||
REST_DELETE: function (params, jsondata, the_key) /* delete call */
|
||||
{
|
||||
// Een melding wordt niet verwijderd maar wordt afgesloten.
|
||||
var scope = getQParamSafe("scope", "fe");
|
||||
var autfunction = { fe : "WEB_MLDUSE", fo : "WEB_MLDFOF", bo : "WEB_MLDBOF", mi : "WEB_MLDBAC" } [scope];
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); /* pessimistic */
|
||||
|
||||
// Hier kom je niet meer terecht als bovenstaande autorisatiecheck niet tot succes leidt.
|
||||
|
||||
model_issues._validate_close(params, jsondata, the_key);
|
||||
// De melding en eventuele opdrachten mogen afgemeld worden.
|
||||
|
||||
// Ik had nog graag een L("lcl_mld_final_remark") toe willen voegen aan de melding, maar er is geen jsondata bij DELETE.
|
||||
|
||||
// Eventuele opdrachten afmelden.
|
||||
for (opdr_i in params.data.canCloseOpdrOfMld)
|
||||
{
|
||||
mld.setopdrachtstatus(canCloseOpdrOfMld[opdr_i], 6); // Technisch voltooid (TV) (Afgemeld)
|
||||
}
|
||||
|
||||
// De melding zelf afmelden.
|
||||
mld.setmeldingstatus(the_key, 5);
|
||||
}
|
||||
}
|
||||
%>
|
||||
@@ -26,7 +26,7 @@ model_locations =
|
||||
{ name: "name", dbs: "alg_locatie_omschrijving", typ: "varchar"},
|
||||
{ name: "district", dbs: "alg_district_key", typ: "key", foreign: "alg_district"},
|
||||
{ name: "coordinate_x", dbs: "alg_locatie_x", typ: "number"},
|
||||
{ name: "coordinate_y", dbs: "alg_locatie_y", typ: "number"},
|
||||
{ name: "coordinate_y", dbs: "alg_locatie_y", typ: "number"}
|
||||
],
|
||||
REST_GET: function _GET(params)
|
||||
{
|
||||
|
||||
195
APPL/API2/model_notes.inc
Normal file
195
APPL/API2/model_notes.inc
Normal file
@@ -0,0 +1,195 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_notes.inc
|
||||
|
||||
Description: notes model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes: Dummy placeholder
|
||||
*/
|
||||
|
||||
/*
|
||||
alle notes in 1 view
|
||||
CREATE OR REPLACE VIEW fac_v_notes
|
||||
( module, key, parent_key, writer_key, aanmaak, omschrijving)
|
||||
AS
|
||||
SELECT 'MLD'
|
||||
, mld_melding_note_key
|
||||
, mld_melding_key
|
||||
, prs_perslid_key
|
||||
, mld_melding_note_aanmaak
|
||||
, mld_melding_note_omschrijving
|
||||
FROM mld_melding_note
|
||||
UNION
|
||||
SELECT 'ORD'
|
||||
, mld_opdr_note_key
|
||||
, mld_opdr_key
|
||||
, prs_perslid_key
|
||||
, mld_opdr_note_aanmaak
|
||||
, mld_opdr_note_omschrijving
|
||||
FROM mld_opdr_note
|
||||
UNION
|
||||
SELECT 'FIN'
|
||||
, fin_factuur_note_key
|
||||
, fin_factuur_key
|
||||
, prs_perslid_key
|
||||
, fin_factuur_note_aanmaak
|
||||
, fin_factuur_note_omschrijving
|
||||
FROM fin_factuur_note
|
||||
UNION
|
||||
SELECT 'CNT'
|
||||
, cnt_contract_note_key
|
||||
, cnt_contract_key
|
||||
, prs_perslid_key
|
||||
, cnt_contract_note_aanmaak
|
||||
, cnt_contract_note_omschrijving
|
||||
FROM cnt_contract_note
|
||||
UNION
|
||||
SELECT 'PRJ'
|
||||
, prj_scenario_note_key
|
||||
, prj_scenario_key
|
||||
, prs_perslid_key
|
||||
, prj_scenario_note_aanmaak
|
||||
, prj_scenario_note_omschrijving
|
||||
FROM prj_scenario_note
|
||||
*/
|
||||
|
||||
%>
|
||||
<!-- #include file="../mld/mld.inc" -->
|
||||
<!-- #include file="model_objects.inc"-->
|
||||
<%
|
||||
|
||||
model_notes =
|
||||
{
|
||||
module: "FAC",
|
||||
table: "fac_v_notes",
|
||||
primary: "key",
|
||||
records_name: "notes",
|
||||
record_name: "note",
|
||||
fields: [{ name: "id", dbs: "key", typ: "key", filter: "exact" },
|
||||
{ name: "writer", dbs: "writer_key", typ: "key", foreign: "prs_perslid", filter: "exact" },
|
||||
{ name: "description", dbs: "omschrijving", typ: "varchar", filter: "like" },
|
||||
{ name: "createdate", dbs: "aanmaak", typ: "datetime" }
|
||||
// { name: "module", dbs: "module", typ: "varchar", filter: "exact" }
|
||||
// { name: "parent", dbs: "parent_key", typ: "key", filter: "exact" } //niet terug linken
|
||||
],
|
||||
|
||||
|
||||
_analyze_fields: function (fields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
|
||||
{
|
||||
},
|
||||
|
||||
_validate_fields: function (fields, params, jsondata) /* valideer fields, alle constraints die niet door de database worden afgevangen */
|
||||
{
|
||||
},
|
||||
|
||||
_getNoteTable: function (module)
|
||||
{
|
||||
var tabel = {}; // De tabel met notes die aangepast moet worden.
|
||||
switch (module)
|
||||
{
|
||||
case "MLD":
|
||||
{ tabel.naam = "mld_melding_note";
|
||||
tabel.seq = "mld_s_mld_melding_note_key";
|
||||
tabel.parent = "mld_melding";
|
||||
break;
|
||||
}
|
||||
case "ORD":
|
||||
{ tabel.naam = "mld_opdr_note";
|
||||
tabel.seq = "mld_s_mld_opdr_note_key";
|
||||
tabel.parent = "mld_opdr";
|
||||
break;
|
||||
}
|
||||
case "FIN":
|
||||
{ tabel.naam = "fin_factuur_note";
|
||||
tabel.seq = "fin_s_fin_factuur_note_key";
|
||||
tabel.parent = "fin_factuur";
|
||||
break;
|
||||
}
|
||||
case "CNT":
|
||||
{ tabel.naam = "cnt_contract_note";
|
||||
tabel.seq = "cnt_s_cnt_contract_note_key";
|
||||
tabel.parent = "cnt_contract";
|
||||
break;
|
||||
}
|
||||
case "PRJ":
|
||||
{ tabel.naam = "prj_scenario_note";
|
||||
tabel.seq = "prj_s_prj_scenario_note_key";
|
||||
tabel.parent = "prj_scenario";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return tabel;
|
||||
},
|
||||
|
||||
REST_GET: function _GET(params)
|
||||
{
|
||||
var query = api2.sqlfields(params, model_notes );
|
||||
var wheres = api2.sqlfilter(params, model_notes);
|
||||
query.wheres = query.wheres.concat(wheres);
|
||||
|
||||
var sql = "SELECT " + query.selects.join(", ")
|
||||
+ " FROM " + query.tables.join(", ")
|
||||
+ (params.filter.id || params.filter.parent ? " WHERE " + query.wheres.join(" AND " ) : "");
|
||||
|
||||
var json = api2.sql2json (params, sql, model_notes );
|
||||
|
||||
return json;
|
||||
},
|
||||
|
||||
REST_PUT: function (params, jsondata, the_key) /* update note */
|
||||
{
|
||||
// Een note kan alleen worden aangepast door de persoon die hem geschreven heeft.
|
||||
// Alleen van de meest recente note bij een (melding/opdrachte/...) kan de omschrijving worden aangepast.
|
||||
//
|
||||
var fields = api2.update_fields(params, model_notes, jsondata); // Build updater
|
||||
|
||||
var xxx_tabel = model_notes._getNoteTable(params.data.module); // De tabel met notes die aangepast moet worden.
|
||||
// Wijzig de veldnamen overeenkomstig de te gebruiken tabel
|
||||
for (i in fields)
|
||||
{
|
||||
if (fields[i].dbs == "writer_key")
|
||||
fields[i].dbs = "prs_perslid_key";
|
||||
else
|
||||
fields[i].dbs = xxx_tabel.naam + "_" + fields[i].dbs;
|
||||
}
|
||||
var wheres = [ xxx_tabel.naam+"_key = " + the_key];
|
||||
var xxxUpd = buildTrackingUpdate(xxx_tabel.naam, wheres.join(" AND " ), fields, { noValidateToken: true });
|
||||
|
||||
Oracle.Execute(xxxUpd.sql);
|
||||
|
||||
return { key: the_key };
|
||||
},
|
||||
|
||||
REST_POST: function (params, jsondata) /* new note */
|
||||
{
|
||||
params.isNew = true;
|
||||
//
|
||||
var xxx_tabel = model_notes._getNoteTable(params.data.module); // De tabel met notes die aangepast moet worden.
|
||||
var fields = [];
|
||||
fields.push({ dbs: "prs_perslid_key", typ: "key", val: user_key });
|
||||
fields.push({ dbs: xxx_tabel.parent+"_key", typ: "key", val: params.filter.id });
|
||||
fields.push({ dbs: xxx_tabel.naam+"_aanmaak", typ: "datetime", val: new Date() });
|
||||
fields.push({ dbs: xxx_tabel.naam+"_omschrijving", typ: "varchar", val: jsondata.description });
|
||||
fields.push({ dbs: xxx_tabel.naam+"_key", typ: "key", seq: xxx_tabel.seq });
|
||||
|
||||
var xxxIns = buildInsert(xxx_tabel.naam, fields, { noValidateToken: true });
|
||||
var new_key = xxxIns.sequences[xxx_tabel.naam];
|
||||
|
||||
var sql = "BEGIN "
|
||||
+ xxxIns.sql + ";"
|
||||
+ "END;";
|
||||
Oracle.Execute(xxxIns.sql);
|
||||
|
||||
return { key: new_key };
|
||||
},
|
||||
|
||||
REST_DELETE: function (params, jsondata, the_key) /* delete note */
|
||||
{ // Niet van toepassing.
|
||||
}
|
||||
}
|
||||
%>
|
||||
121
APPL/API2/model_orders.inc
Normal file
121
APPL/API2/model_orders.inc
Normal file
@@ -0,0 +1,121 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_orders.inc
|
||||
|
||||
Description: Opdrachten model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes: Ongeveer
|
||||
|
||||
TODO: disc3d conditie voor de geldendende autfunction toevoegen
|
||||
TODO: het bijhalen van de prefix is op deze manier veel te duur
|
||||
*/
|
||||
|
||||
%>
|
||||
<!-- #include file="../Shared/discxalg3d.inc"-->
|
||||
<!-- #include file="../shared/status.inc" -->
|
||||
<%
|
||||
|
||||
model_orders =
|
||||
{
|
||||
module: "MLD",
|
||||
table: "mld_opdr",
|
||||
primary: "mld_opdr_key",
|
||||
records_name: "orders",
|
||||
record_name: "order",
|
||||
// Dit zijn voorlopige namen!
|
||||
fields: [{ name: "id", dbs: "mld_opdr_key", typ: "key", filter: "exact" },
|
||||
{ name: "name", dbs: "mld_opdr_id", /* moet alias worden */ typ: "varchar", filter: "exact",
|
||||
sql: "COALESCE(mld_opdr_id, ins_srtdiscipline.ins_srtdiscipline_prefix||mld_opdr.mld_melding_key||'/'||mld_opdr_bedrijfopdr_volgnr)" },
|
||||
{ name: "contact", dbs: "prs_perslid_key", typ: "key", foreign: "prs_perslid", track: L("lcl_mld_behandelaar"), filter: "exact" },
|
||||
{ name: "supplier", dbs: "mld_uitvoerende_keys", typ: "key", foreign: "mld_uitvoerende", track: L("lcl_ord_company_uit"), filter: "exact" },
|
||||
{ name: "suppliercontact", dbs: "prs_contactpersoon_key", typ: "key", foreign: "prs_contactpersoon", track: L("lcl_contact_pers"), filter: "exact" },
|
||||
{ name: "ordertype", dbs: "mld_typeopdr_key", typ: "key", foreign: "mld_typeopdr", track: L("lcl_descr")},
|
||||
{ name: "description", dbs: "mld_opdr_omschrijving", typ: "varchar", track: L("lcl_mld_opdr_description"), filter: "like" },
|
||||
{ name: "remark", dbs: "mld_opdr_opmerking", typ: "varchar", track: L("lcl_mld_inf_Opmerking"), filter: "like" },
|
||||
{ name: "account", dbs: "prs_kostenplaats_key", typ: "key", foreign: "prs_kostenplaats", track: L("lcl_account"), filter: "exact" },
|
||||
{ name: "costs", dbs: "mld_opdr_kosten", typ: "number", track: L("lcl_total_cost")},
|
||||
{ name: "status", dbs: "mld_statusopdr_key", typ: "key", foreign: status.getopdrstatustext, track: L("lcl_status"), filter: "exact" },
|
||||
{ name: "orderdate", dbs: "mld_opdr_datumbegin", typ: "datetime", track: L("lcl_orderdate"), filter:"range"},
|
||||
{ name: "enddate", dbs: "mld_opdr_einddatum", typ: "datetime", track: L("lcl_opdr_enddate"), filter:"range"},
|
||||
{ name: "plandate", dbs: "mld_opdr_plandatum", typ: "datetime", track: L("lcl_opdr_plandate"), filter:"range"},
|
||||
{ name: "location", dbs: "alg_v_allonroerendgoed.alg_locatie_key", typ: "key", foreign: "alg_locatie", track: L("lcl_location"), filter: "exact" },
|
||||
{ name: "building", dbs: "alg_v_allonroerendgoed.alg_gebouw_key", typ: "key", foreign: "alg_gebouw", track: L("lcl_building"), filter: "exact" },
|
||||
{ name: "floor", dbs: "alg_v_allonroerendgoed.alg_verdieping_key", typ: "key", foreign: "alg_verdieping", track: L("lcl_floor"), filter: "exact" },
|
||||
{ name: "room", dbs: "alg_v_allonroerendgoed.alg_ruimte_key", typ: "key", foreign: "alg_ruimte", track: L("lcl_room"), filter: "exact" },
|
||||
{ name: "terrain", dbs: "alg_v_allonroerendgoed.alg_terreinsector_key", typ: "key", foreign: "alg_terreinsector", track: L("lcl_room"), filter: "exact" },
|
||||
{ name: "contract", dbs: "cnt_contract_key", typ: "key", foreign: "cnt_contract", track: L("lcl_contract"), filter: "exact" }
|
||||
],
|
||||
includes: {}, // notes?
|
||||
|
||||
REST_GET: function _GET(params)
|
||||
{
|
||||
var scope = getQParamSafe("scope", "fe");
|
||||
var autfunction = { fe : "WEB_MLDORD", fo : "WEB_ORDBOF", bo : "WEB_ORDBOF", mi : "WEB_MLDBAC" } [scope];
|
||||
params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
|
||||
|
||||
// TODO: Add authorization
|
||||
var query = api2.sqlfields(params, model_orders );
|
||||
|
||||
if (scope == "fe")
|
||||
{
|
||||
query.wheres.push("mld_uitvoerende_keys=" + user_key); // Is dit juiste interpretatie van fe?
|
||||
}
|
||||
|
||||
if (!params.filter.id)
|
||||
{
|
||||
// TODO Kiezen voor een redelijk defaultfilter
|
||||
}
|
||||
|
||||
/* we need the prefix for the id, costly! Scheelt 1100ms!! */
|
||||
query.tables.push("mld_melding");
|
||||
query.wheres.push("mld_opdr.mld_melding_key = mld_melding.mld_melding_key");
|
||||
query.tables.push("mld_stdmelding");
|
||||
query.wheres.push("mld_melding.mld_stdmelding_key = mld_stdmelding.mld_stdmelding_key");
|
||||
query.tables.push("ins_tab_discipline");
|
||||
query.wheres.push("mld_stdmelding.mld_ins_discipline_key = ins_tab_discipline.ins_discipline_key");
|
||||
query.tables.push("ins_srtdiscipline");
|
||||
query.wheres.push("ins_tab_discipline.ins_srtdiscipline_key = ins_srtdiscipline.ins_srtdiscipline_key");
|
||||
|
||||
// Opmerkelijk: we pakken niet de plaatsvelden van de opdracht (zijn nog niet (altijd) gevuld maar van de melding
|
||||
query.tables.push("alg_v_allonroerendgoed");
|
||||
query.wheres.push("mld_melding.mld_alg_onroerendgoed_keys = alg_v_allonroerendgoed.alg_onroerendgoed_keys(+)");
|
||||
|
||||
|
||||
var wheres = api2.sqlfilter(params, model_orders);
|
||||
query.wheres = query.wheres.concat(wheres);
|
||||
|
||||
var sql = "SELECT " + query.selects.join(", ")
|
||||
+ " FROM " + query.tables.join(", ")
|
||||
+ " WHERE " + query.wheres.join(" AND " )
|
||||
+ " ORDER BY mld_opdr_key";
|
||||
|
||||
// TODO: disc3d conditie voor de geldendende autfunction toevoegen
|
||||
|
||||
var json = api2.sql2json (params, sql, model_orders );
|
||||
|
||||
return json;
|
||||
},
|
||||
_analyze_fields: function (fields, params, jsondata) /* analyseer inkomende data, common voor PUT en POST */
|
||||
{
|
||||
},
|
||||
_validate_fields: function (fields, params, jsondata) /* valideer fields, alle constraints die niet door de database worden afgevangen */
|
||||
{
|
||||
},
|
||||
|
||||
REST_PUT: function (params, jsondata, the_key) /* update call */
|
||||
{
|
||||
},
|
||||
REST_POST: function (params, jsondata) /* new call */
|
||||
{
|
||||
},
|
||||
|
||||
REST_DELETE: function (params, jsondata, the_key) /* delete call */
|
||||
{
|
||||
}
|
||||
}
|
||||
%>
|
||||
13
APPL/API2/model_rooms.inc
Normal file
13
APPL/API2/model_rooms.inc
Normal file
@@ -0,0 +1,13 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_rooms.inc
|
||||
|
||||
Description: room model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes: Dummy placeholder
|
||||
*/
|
||||
13
APPL/API2/model_workplaces.inc
Normal file
13
APPL/API2/model_workplaces.inc
Normal file
@@ -0,0 +1,13 @@
|
||||
<% /*
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: model_workplaces.inc
|
||||
|
||||
Description: workplace model. Dit bestand heeft niets met interfacing te maken
|
||||
maar werkt uitsluitend op JSON-data
|
||||
Parameters:
|
||||
Context:
|
||||
|
||||
Notes: Dummy placeholder
|
||||
*/
|
||||
@@ -40,7 +40,7 @@ DOCTYPE_Disable = 1;
|
||||
http_request.setOption(SXH_OPTION_SELECT_CLIENT_SSL_CERT, certificateName);
|
||||
}
|
||||
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlReq = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
xmlReq.resolveExternals = false; // van mij hoef je geen DTD's te controleren
|
||||
xmlReq.validateOnParse = false; // van mij hoef je geen DTD's te controleren
|
||||
|
||||
@@ -64,7 +64,7 @@ DOCTYPE_Disable = 1;
|
||||
// Transformeer met de leverancier specifieke stylesheet
|
||||
if (xslPath)
|
||||
{
|
||||
var xslDoc = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var xslDoc = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
__Log("Loading xslPath: " + Server.MapPath(custpath + "/" + xslPath));
|
||||
xslDoc.resolveExternals = false; // van mij hoef je geen DTD's te controleren
|
||||
xslDoc.validateOnParse = false; // van mij hoef je geen DTD's te controleren
|
||||
@@ -83,7 +83,7 @@ DOCTYPE_Disable = 1;
|
||||
return null;
|
||||
}
|
||||
|
||||
var xmlResp = Server.CreateObject("Msxml2.DOMDocument.4.0");
|
||||
var xmlResp = Server.CreateObject("Msxml2.DOMDocument.6.0");
|
||||
xmlResp.resolveExternals = false; // van mij hoef je geen DTD's te controleren
|
||||
xmlResp.validateOnParse = false; // van mij hoef je geen DTD's te controleren
|
||||
xmlResp.loadXML(http_request.ResponseText); // for parsing
|
||||
@@ -92,7 +92,7 @@ DOCTYPE_Disable = 1;
|
||||
// Transformeer met de leverancier specifieke stylesheet
|
||||
if (xslPath)
|
||||
{
|
||||
var xslDoc = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
var xslDoc = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
__Log("Loading xslPath: " + Server.MapPath(custpath + "/" + xslPath));
|
||||
xslDoc.resolveExternals = false; // van mij hoef je geen DTD's te controleren
|
||||
xslDoc.validateOnParse = false; // van mij hoef je geen DTD's te controleren
|
||||
|
||||
202
APPL/BES/bes.inc
202
APPL/BES/bes.inc
@@ -76,11 +76,8 @@
|
||||
|
||||
trackbestellingaccepteren:
|
||||
function (opdr_key, ptxt)
|
||||
{ // noot: shared.trackaction (fac.trackaction) genereert ook eventuele notificaties.
|
||||
if (ptxt)
|
||||
shared.trackaction('BESACP', opdr_key, ptxt);
|
||||
else
|
||||
shared.trackaction('BESACP', opdr_key);
|
||||
{
|
||||
shared.trackaction('BESACP', opdr_key, ptxt);
|
||||
},
|
||||
|
||||
// Alle (BES) informatie van een disciplnie
|
||||
@@ -129,6 +126,7 @@
|
||||
disc_params_levopm_url : oRs("bes_disc_params_levopm_url").Value,
|
||||
disc_params_leverdagen : oRs("bes_disc_params_leverdagen").Value || 0,
|
||||
disc_params_punchouturl : oRs("bes_disc_params_punchouturl").Value,
|
||||
isFreeArticle : oRs("bes_disc_params_punchouturl").Value == "FREE",// met 2015.1 komt er een echt 'vinkje'
|
||||
disc_params_punch_bedr_key : oRs("bes_disc_params_punch_bedr_key").Value,
|
||||
disc_params_logo_url : oRs("bes_disc_params_logo_url").Value,
|
||||
disc_params_autoacceptrfo : oRs("bes_disc_params_autoacceptrfo").Value,
|
||||
@@ -326,7 +324,7 @@
|
||||
BLOCK_END();
|
||||
},
|
||||
|
||||
bestelling_info: function (bes_key)
|
||||
bestelling_info: function _bestelling_info(bes_key)
|
||||
{
|
||||
var srtdeel_arr = [];
|
||||
var amount_arr = [];
|
||||
@@ -439,6 +437,7 @@
|
||||
+ ", SUM(bi.bes_bestelling_item_aantal * bi.bes_bestelling_item_prijs) totaal"
|
||||
+ ", SUM(bi.bes_bestelling_item_aantalontv) aantalontv"
|
||||
+ ", MAX(bsg.bes_srtgroep_key) bes_srtgroep_key" // Wordt gebruikt tbv. singlegroep en dan is er maar eentje
|
||||
+ ", MAX(bsd.prs_bedrijf_key) prs_bedrijf_key" // Wordt gebruikt tbv. free-artikel van <20><>n bedrijf
|
||||
+ ", MAX(bes_disc_params_singlegroep) singlegroep"
|
||||
+ ", MAX(ks.prs_kostensoort_btw) inclBTW"
|
||||
+ ", MAX(COALESCE(bes_srtdeel_wijzigdagen, 9999)) bes_srtdeel_wijzigdagen"
|
||||
@@ -464,6 +463,7 @@
|
||||
bes_bestelling.dis_key = oRs("ins_discipline_key").Value,
|
||||
bes_bestelling.srtgroep = oRs("bes_srtgroep_key").Value,
|
||||
bes_bestelling.singlegroep = oRs("singlegroep").Value == 1,
|
||||
bes_bestelling.bedrijf_key = oRs("prs_bedrijf_key").Value,
|
||||
bes_bestelling.inclBTW = oRs("inclBTW").Value || 0,
|
||||
bes_bestelling.totaal = oRs("totaal").Value || 0;
|
||||
bes_bestelling.aantalontv = oRs("aantalontv").Value || 0;
|
||||
@@ -710,7 +710,8 @@
|
||||
bresult.canRetourURL = false; // (Deels) retour via site leverancier
|
||||
bresult.canRetourBES = false; // (Deels) retour via negatieve levering
|
||||
|
||||
var isPunchout = bes_disc_info.disc_params_punchouturl? true : false;
|
||||
bresult.isFreeArticle = bes_disc_info.disc_params_punchouturl == "FREE"; // met 2015.1 komt er een echt 'vinkje'
|
||||
var isPunchout = !bresult.isFreeArticle && bes_disc_info.disc_params_punchouturl;
|
||||
bresult.canMainChange = false; // 'Bovenste stuk', voormalig lower_part
|
||||
bresult.canItemsChange = false; // Mag ik toevoegen en aantallen verhogen
|
||||
|
||||
@@ -814,7 +815,7 @@
|
||||
bresult.canItemsChange = bresult.canMainChange && !isPunchout;
|
||||
break;
|
||||
case 6: // Geleverd (TV)
|
||||
bresult.canMainChange = bresult.canWrite("WEB_BESFOF"); // Bijvoorbeeld kostenplaats te wijzigen
|
||||
bresult.canMainChange = bresult.canWrite("WEB_BESFOF")||user.checkAutorisation("WEB_ORDFIN", true); // Bijvoorbeeld kostenplaats te wijzigen
|
||||
bresult.canRetourURL = _canRetour && (bes_disc_info.disc_params_retour_url != null);
|
||||
bresult.canRetourBES = _canRetour && !bresult.canRetourURL;
|
||||
break;
|
||||
@@ -899,7 +900,7 @@
|
||||
return bresult;
|
||||
},
|
||||
|
||||
staffel_info: function (srtdeel_keys, itemaantal_arr)
|
||||
staffel_info: function _staffel_info(srtdeel_keys, itemaantal_arr)
|
||||
{
|
||||
var lsgnaamstring = [];
|
||||
var lsgkeystring = [];
|
||||
@@ -950,6 +951,9 @@
|
||||
{
|
||||
// Oplaan bedrijf waar alle artikelen worden besteld. Moet voor elke artikel hetzelfde zijn.
|
||||
prs_bedrijf_key = oRs("prs_bedrijf_key").Value;
|
||||
if (!prs_bedrijf_key)
|
||||
__DoLog("Artikel wordt niet door een bedrijf geleverd.", "#FFFF00")
|
||||
|
||||
// Opslaan van staffelgroep van een item
|
||||
ItemArray.push({ item_key : srtdeel_keys[i],
|
||||
aantal : itemaantal_arr[i],
|
||||
@@ -1037,19 +1041,13 @@
|
||||
sql = "SELECT BES.calcopdrachtkortingbedrag(" + prs_bedrijf_key + ", " + subtotaal + ") opdrachtkortingbedrag"
|
||||
+ " FROM DUAL"
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
opdrachtkortingbedrag = oRs("opdrachtkortingbedrag").Value;
|
||||
}
|
||||
opdrachtkortingbedrag = oRs("opdrachtkortingbedrag").Value;
|
||||
oRs.Close();
|
||||
|
||||
sql = "SELECT BES.calcopdrachtkorting(" + prs_bedrijf_key + ", " + subtotaal + ") opdrachtkorting FROM DUAL";
|
||||
oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
// Korting tot grenswaarde
|
||||
opdrachtkorting = oRs("opdrachtkorting").Value;
|
||||
}
|
||||
// Korting tot grenswaarde
|
||||
opdrachtkorting = oRs("opdrachtkorting").Value;
|
||||
oRs.Close();
|
||||
|
||||
// Nieuw subtotaal: Bestelbedrag - alle kortingen
|
||||
@@ -1123,107 +1121,17 @@
|
||||
return result;
|
||||
},
|
||||
|
||||
besteed_budget_pgb: function (prs_key, dis_key, bes_key)
|
||||
{ // Besteed budget van meegegeven persoon dit jaar voor de meegegeven discipline i.v.m. Persoons Gebonden Budget (PGB)
|
||||
// Eventueel uitgezonderd (huidige) bestelling bes_key
|
||||
var budgetbesteld = 0;
|
||||
if (bes_disc_info.disc_params_pgb == 1 || bes_disc_info.disc_params_pgb == 3)
|
||||
{ // Totaalbedrag van eerder bestellingen dit jaar van de besteller i.v.m. Persoons Gebonden Budget (PGB)
|
||||
sql = "SELECT SUM(totaalbedrag) totaalbedrag"
|
||||
+ ", SUM(b.bes_bestelling_korting) korting"
|
||||
+ ", SUM(b.bes_bestelling_levkosten) levkosten"
|
||||
+ " FROM (SELECT SUM (bi.bes_bestelling_item_aantal * bi.bes_bestelling_item_prijs) totaalbedrag"
|
||||
+ ", b.bes_bestelling_key"
|
||||
+ " FROM bes_bestelling b"
|
||||
+ ", bes_bestelling_item bi"
|
||||
+ ", bes_srtdeel isd"
|
||||
+ ", bes_srtgroep isg"
|
||||
+ " WHERE b.bes_bestelling_key = bi.bes_bestelling_key"
|
||||
+ " AND bi.bes_srtdeel_key = isd.bes_srtdeel_key"
|
||||
+ " AND isd.bes_srtgroep_key = isg.bes_srtgroep_key"
|
||||
+ " AND b.prs_perslid_key = " + prs_key
|
||||
+ " AND isg.ins_discipline_key = " + dis_key
|
||||
+ (bes_key > -1
|
||||
? " AND b.bes_bestelling_key <> " + bes_key
|
||||
: "")
|
||||
+ " AND b.bes_bestelling_datum >= TRUNC (SYSDATE, 'YEAR')"
|
||||
+ " GROUP BY b.bes_bestelling_key) tot"
|
||||
+ ", bes_bestelling b"
|
||||
+ " WHERE b.bes_bestelling_key = tot.bes_bestelling_key"
|
||||
oRs = Oracle.Execute(sql);
|
||||
prstotaalbesteld = oRs("totaalbedrag").Value || 0;
|
||||
korting = oRs("korting").Value || 0;
|
||||
levkosten = oRs("levkosten").Value || 0;
|
||||
budgetbesteld = prstotaalbesteld - korting + levkosten;
|
||||
}
|
||||
return budgetbesteld;
|
||||
},
|
||||
|
||||
besteed_budget_agb: function (prs_key, bes_key)
|
||||
{ // Besteed budget van meegegeven persoon afgelopen periode i.v.m. Afdelings Gebonden Budget (AGB)
|
||||
// Eventueel uitgezonderd (huidige) bestelling bes_key
|
||||
var budgetbesteld = 0;
|
||||
if (bes_disc_info.disc_params_pgb == 2 || bes_disc_info.disc_params_pgb == 3)
|
||||
{ // Totaalbedrag van eerder bestellingen afgelopen periode van de besteller i.v.m. Afdelings Gebonden Budget (AGB)
|
||||
var sql = "SELECT prs.getkostenplaats(" + prs_key + ", " + S("prs_approvemethod") + ", -1) kostenplaats FROM DUAL";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var kp_key = oRs("kostenplaats").Value;
|
||||
|
||||
// Limietperiode kostenplaats (prs_kostenplaats_limietperiode): 0(of NULL)=geen(oneindig) (default), 1=maand, 2=jaar
|
||||
if (kp_key > 0)
|
||||
{ // Er is een kostenplaats gevonden
|
||||
var sql = "SELECT k.prs_kostenplaats_limietperiode"
|
||||
+ " FROM prs_kostenplaats k"
|
||||
+ " WHERE k.prs_kostenplaats_key = " + kp_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var kp_limietperiode = oRs("prs_kostenplaats_limietperiode").Value;
|
||||
var periode;
|
||||
if (kp_limietperiode == 1)
|
||||
periode = "MM"; // Maandelijks budget
|
||||
else if (kp_limietperiode == 2)
|
||||
periode = "YYYY"; // Jaarlijks budget
|
||||
|
||||
sql = "SELECT SUM(totaalbedrag) totaalbedrag"
|
||||
+ " , SUM(b.bes_bestelling_korting) korting"
|
||||
+ " , SUM(b.bes_bestelling_levkosten) levkosten"
|
||||
+ " FROM (SELECT SUM (bi.bes_bestelling_item_aantal * bi.bes_bestelling_item_prijs) totaalbedrag"
|
||||
+ " , b.bes_bestelling_key"
|
||||
+ " FROM bes_bestelling b"
|
||||
+ " , bes_bestelling_item bi"
|
||||
+ " WHERE b.bes_bestelling_key = bi.bes_bestelling_key"
|
||||
+ " AND b.prs_kostenplaats_key = " + kp_key
|
||||
+ (bes_key > -1
|
||||
? " AND b.bes_bestelling_key <> " + bes_key
|
||||
: "")
|
||||
+ (kp_limietperiode && kp_limietperiode > 0
|
||||
? " AND b.bes_bestelling_datum >= TRUNC (SYSDATE, " + safe.quoted_sql(periode) + ")" // De eerste van de deze maand of 1 januari dit jaar
|
||||
: "")
|
||||
+ " GROUP BY b.bes_bestelling_key) tot"
|
||||
+ ", bes_bestelling b"
|
||||
+ " WHERE b.bes_bestelling_key = tot.bes_bestelling_key"
|
||||
oRs = Oracle.Execute(sql);
|
||||
prstotaalbesteld = oRs("totaalbedrag").Value || 0;
|
||||
korting = oRs("korting").Value || 0;
|
||||
levkosten = oRs("levkosten").Value || 0;
|
||||
budgetbesteld = prstotaalbesteld - korting + levkosten;
|
||||
}
|
||||
}
|
||||
return budgetbesteld;
|
||||
},
|
||||
|
||||
// Geeft het PGB overschrijdingsbedrag van de PGB-limiet terug
|
||||
get_pgb_exceed_amount: function(bestelbedrag, prs_key, dis_key, bes_key)
|
||||
{
|
||||
var amount = bestelbedrag; // Indien geen pgblimiet dan gehele bestel bedrag
|
||||
|
||||
// Bepaal PGB limiet
|
||||
var sql = "SELECT prs.getprofiellimiet(" + prs_key + ", " + dis_key + ") pgblimiet FROM DUAL";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var pgblimiet = oRs("pgblimiet").Value;
|
||||
// Opvragen PGB limiet
|
||||
var pgblimiet = budget.get_pgblimiet(prs_key, dis_key);
|
||||
|
||||
if (pgblimiet != null)
|
||||
{ // Verschil PGB limiet met het besteed budget van persoon en desbetreffende discipline voor dit jaar inclusief bestelbedrag
|
||||
amount = (bes.besteed_budget_pgb(prs_key, dis_key, bes_key) + bestelbedrag - pgblimiet);
|
||||
amount = (budget.besteed_budget_pgb(prs_key, dis_key, {bes_key: bes_key}) + bestelbedrag - pgblimiet);
|
||||
}
|
||||
return amount;
|
||||
},
|
||||
@@ -1233,14 +1141,12 @@
|
||||
{
|
||||
var amount = bestelbedrag; // Indien geen agblimiet dan gehele bestel bedrag
|
||||
|
||||
// Bepaal AGB limiet
|
||||
var sql = "SELECT prs.getlimietagb(" + prs_key + ", " + S("prs_approvemethod") + ", " + dis_key + ") agblimiet FROM DUAL";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var agblimiet = oRs("agblimiet").Value;
|
||||
// Opvragen AGB limiet
|
||||
var agblimiet = budget.get_agblimiet(prs_key, dis_key);
|
||||
|
||||
if (agblimiet != null)
|
||||
{ // Verschil AGB limiet met het besteed budget van persoon en desbetreffende discipline voor dit jaar inclusief bestelbedrag
|
||||
amount = (bes.besteed_budget_agb(prs_key, bes_key) + bestelbedrag - agblimiet);
|
||||
amount = (budget.besteed_budget_agb(prs_key, {bes_key: bes_key}) + bestelbedrag - agblimiet);
|
||||
}
|
||||
return amount;
|
||||
},
|
||||
@@ -1253,11 +1159,10 @@
|
||||
|
||||
// Geeft true als het bestelde bedrag boven de PGB-limiet van prs_key uit komt
|
||||
// en dus (eventueel) goedkeuring vereist zal zijn.
|
||||
// Negeer evt bestaand bestelbedrag van bes_key (indien > -1)
|
||||
exceeds_pgb: function(bestelbedrag, prs_key, dis_key, bes_key)
|
||||
exceeds_pgb: function(bestelbedrag, prs_key, dis_key)
|
||||
{
|
||||
if (bes_disc_info.disc_params_pgb == 1 || bes_disc_info.disc_params_pgb == 3)
|
||||
return shared.exceeds_profiel(bestelbedrag + bes.besteed_budget_pgb(prs_key, dis_key), prs_key, dis_key);
|
||||
return budget.exceeds_profiel(bestelbedrag + budget.besteed_budget_pgb(prs_key, dis_key), prs_key, dis_key);
|
||||
else // Geen pgb. Dan kan je ook niet boven de pgb zitten
|
||||
return false;
|
||||
},
|
||||
@@ -1268,7 +1173,7 @@
|
||||
exceeds_agb: function(bestelbedrag, prs_key, dis_key, bes_key)
|
||||
{
|
||||
if (bes_disc_info.disc_params_pgb == 2 || bes_disc_info.disc_params_pgb == 3)
|
||||
return shared.exceeds_limietagb(bestelbedrag + bes.besteed_budget_agb(prs_key, bes_key), prs_key, dis_key);
|
||||
return budget.exceeds_limietagb(bestelbedrag + budget.besteed_budget_agb(prs_key, {bes_key: bes_key}), prs_key, dis_key);
|
||||
else // Geen agb. Dan kan je ook niet boven de agb zitten
|
||||
return false;
|
||||
},
|
||||
@@ -1393,22 +1298,73 @@
|
||||
// JGL: Is dat niet allemaal automatisch meegecascadeerd?
|
||||
// Verwijder bestelaanvraag items
|
||||
sql = "DELETE bes_bestelling_item WHERE bes_bestelling_key = " + bes_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
Oracle.Execute(sql);
|
||||
|
||||
// Indien een bestelopdracht aanwezig is dan bestelopdracht + bestelopdracht items verwijderen.
|
||||
if (bestelopdr_key > 0)
|
||||
{
|
||||
// Verwijder bestelopdracht items
|
||||
sql = "DELETE bes_bestelopdr_item WHERE bes_bestelopdr_key = " + bestelopdr_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
Oracle.Execute(sql);
|
||||
|
||||
// Verwijder bestelopdracht
|
||||
sql = "DELETE bes_bestelopdr WHERE bes_bestelopdr_key = " + bestelopdr_key
|
||||
oRs = Oracle.Execute(sql);
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
message = L("lcl_bes_deleted_1") + S("bes_bestelling_prefix") + bes_key + L("lcl_bes_deleted_2");
|
||||
}
|
||||
return message;
|
||||
},
|
||||
// returns bes_srtdeel_key
|
||||
upsert_deel: function _upsert_deel(dis_key, params)
|
||||
{
|
||||
if (!("srtdeel_btw" in params))
|
||||
params.srtdeel_btw = 21.0;
|
||||
if (!("srtgroep_omschrijving" in params) && params.srtgroep_key > 0)
|
||||
{ // upsert_srtdeel werkt alleen op basis van omschrijving, helaas (nog) niet op srtgroep_key
|
||||
var sql = "SELECT bes_srtgroep_omschrijving"
|
||||
+ " FROM bes_srtgroep"
|
||||
+ " WHERE bes_srtgroep_key = " + params.srtgroep_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
params.srtgroep_omschrijving = oRs("bes_srtgroep_omschrijving").Value;;
|
||||
oRs.Close()
|
||||
}
|
||||
var sql = "BEGIN bes.upsert_srtdeel "
|
||||
+ " ( " + dis_key
|
||||
+ " , " + safe.quoted_sql(params.srtgroep_omschrijving, 60) // bes_srtgroep_omschrijving
|
||||
+ " , " + safe.quoted_sql(params.srtdeel_omschrijving, 100) // bes_srtdeel_omschrijving
|
||||
+ " , " + params.srtdeel_prijs
|
||||
+ " , " + params.srtdeel_btw
|
||||
+ " , " + safe.quoted_sql(params.srtdeel_eenheid, 30) // bes_srtdeel_eenheid
|
||||
+ " , " + safe.quoted_sql(params.srtdeel_nr, 32) // bes_srtdeel_nr
|
||||
+ " , " + (params.bedrijf_key || -1)
|
||||
+ " , NULL " // vervaldatum
|
||||
+ " , ''"
|
||||
+ " , 1 "
|
||||
+ " , " + safe.quoted_sql(params.opmerking, 2000) + "); END;";
|
||||
|
||||
Oracle.Execute(sql);
|
||||
// JGL: Het zou fijn zijn als upsert_srtdeel een functie wordt en gewoon
|
||||
// de bes_srtdeel_key oplevert. Dan wordt het volgende veel simpeler:
|
||||
// PF: Maar dat kan helemaal niet, want een select mag geen DML e.d doen.
|
||||
// Wel beter zou zijn bes.get_upsertkey(), nader te definieren.
|
||||
|
||||
// Zoek aangemaakte item terug.
|
||||
sql = "SELECT bes_srtdeel_key "
|
||||
+ " FROM bes_srtdeel sd, bes_srtgroep sg "
|
||||
+ " WHERE sg.ins_discipline_key = " + dis_key
|
||||
+ " AND sg.bes_srtgroep_key = sd.bes_srtgroep_key "
|
||||
+ " AND sg.bes_srtgroep_omschrijving = " + safe.quoted_sql(params.srtgroep_omschrijving, 60) /* NOXLAT */
|
||||
+ " AND UPPER(sd.bes_srtdeel_omschrijving) = " + safe.quoted_sql_upper(params.srtdeel_omschrijving, 100) /* NOXLAT */
|
||||
+ " AND sd.bes_srtdeel_eenheid " + (params.srtdeel_eenheid? "= " + safe.quoted_sql(params.srtdeel_eenheid, 30): " IS NULL")
|
||||
+ " AND sd.bes_srtdeel_nr = " + safe.quoted_sql(params.srtdeel_nr, 32)
|
||||
+ " ORDER BY sd.bes_srtdeel_key DESC ";
|
||||
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var bes_srtdeel_key = oRs("bes_srtdeel_key").Value;
|
||||
oRs.Close();
|
||||
__Log("bes_srtdeel_key: " + bes_srtdeel_key);
|
||||
return bes_srtdeel_key;
|
||||
}
|
||||
}
|
||||
%>
|
||||
|
||||
@@ -108,7 +108,7 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
oRs = Oracle.Execute(sql);
|
||||
|
||||
if (!finalapproval)
|
||||
{ // Tracking en alle derde goedkeurders een notificatie sturen.
|
||||
{ // Tracking en alle vierde goedkeurders een notificatie sturen.
|
||||
bes.trackbestellingaccepteren(bes_key);
|
||||
}
|
||||
else
|
||||
@@ -126,7 +126,7 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
oRs = Oracle.Execute(sql);
|
||||
|
||||
if (!finalapproval)
|
||||
{ // Tracking en alle derde goedkeurders een notificatie sturen.
|
||||
{ // Tracking en alle vijfde goedkeurders een notificatie sturen.
|
||||
bes.trackbestellingaccepteren(bes_key);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -17,6 +17,7 @@ DOCTYPE_Disable = 1;
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="../Shared/budget.inc" -->
|
||||
<!-- #include file="bes.inc" -->
|
||||
|
||||
<%
|
||||
@@ -39,7 +40,7 @@ for (var i = 0; i < bes_key_arr.length; i++)
|
||||
totaal: bes_bestelling.totaal,
|
||||
rfoBesKosten: bes_bestelling.rfoBesKosten,
|
||||
rfoLevKosten: bes_bestelling.rfoLevKosten,
|
||||
fiatteur_key: bes_bestelling.fiatteur_key,
|
||||
fiatteur_key: bes_bestelling.fiatteur_key, // LET OP: De huidige fiatteur wordt opgehaald (Ook als de user_key een vervanger is).
|
||||
dis_key: bes_bestelling.dis_key,
|
||||
perslid_key_voor: bes_bestelling.perslid_key_voor,
|
||||
disc_params_bestellimiet: bes_disc_info.disc_params_bestellimiet,
|
||||
@@ -59,12 +60,9 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
Oracle.Execute(sql);
|
||||
|
||||
var totaal = ingesloten[i].totaal - ingesloten[i].rfoBesKosten + ingesloten[i].rfoLevKosten;
|
||||
|
||||
//var message = L("lcl_mld_opdr_approved_1") + bes_key + L("lcl_mld_opdr_approved_2");
|
||||
|
||||
// als het valt binnen onze limiet (of eigenlijk: degene die nu moet fiatteren als we vervanger zijn) dan zijn we klaar
|
||||
// TODO in de volgende versie (zie docu PF) meerlaags fiattering met prs.getfiatteur() vgl opdr_approve.asp
|
||||
if (!shared.exceeds_profiel(totaal, ingesloten[i].fiatteur_key, ingesloten[i].dis_key))
|
||||
if (!budget.exceeds_profiel(totaal, ingesloten[i].fiatteur_key, ingesloten[i].dis_key))
|
||||
{
|
||||
bes.setbestellingstatus(ingesloten[i].bes_key, 3); // helemaal Gefiatteerd
|
||||
if (ingesloten[i].totaal <= ingesloten[i].disc_params_bestellimiet)
|
||||
@@ -84,9 +82,14 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
// vervolgens naar kostenplaatsgroep fiatteur sturen
|
||||
// Fiatteringsproces moet gevolgd worden op de naam van de "voor wie" (bestelling voor)
|
||||
// Als bes_disc_params_for_others niet is gezet zijn perslid_key en perslid_key_voor identiek
|
||||
message = bes.sendNeedApprovalNotification(ingesloten[i].bes_key, ingesloten[i].fiatteur_key);
|
||||
// Haal de kostenplaatsgroep verantwoordelijke/fiatteur op. De kolom b.bes_bestelling_fiat_user is gevuld met de user_key).
|
||||
sql = "SELECT prs.getkpverantwoordelijke (b.prs_kostenplaats_key, 1, COALESCE (b.bes_bestelling_fiat_user, -1)) kpg_fiatteur_key"
|
||||
+ " FROM bes_bestelling b"
|
||||
+ " WHERE b.bes_bestelling_key = " + ingesloten[i].bes_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
message = bes.sendNeedApprovalNotification(ingesloten[i].bes_key, oRs("kpg_fiatteur_key").Value);
|
||||
oRs.close();
|
||||
}
|
||||
|
||||
result.success = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ transitParam = buildTransitParam(["punch", "mld_key", "artikel_key", "ps", "pn",
|
||||
%>
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<%
|
||||
var page = "";
|
||||
if (bes_key == -1)
|
||||
@@ -152,15 +152,12 @@ transitParam = buildTransitParam(["punch", "mld_key", "artikel_key", "ps", "pn",
|
||||
// Vooral met punchout is dat erg pijnlijk: je kwam wel bij de leverancier, kon alles kiezen
|
||||
// en later, pas bij terugkomst kreeg je melding dat je geen rechten had.
|
||||
user.auth_required_or_abort(authparams.PRSwritelevel < 9 && authparams.ALGwritelevel < 9);
|
||||
var bes_disc_info = bes.disc_info(dis_key);
|
||||
|
||||
sql = "SELECT bes_disc_params_punchouturl"
|
||||
+ " FROM bes_disc_params dp"
|
||||
+ " WHERE dp.bes_ins_discipline_key = " + dis_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
var purl = oRs("bes_disc_params_punchouturl").Value;
|
||||
var newWindow = false;
|
||||
if (!from_punch && purl)
|
||||
if (!from_punch && bes_disc_info.disc_params_punchouturl && !bes_disc_info.isFreeArticle)
|
||||
{
|
||||
var purl = bes_disc_info.disc_params_punchouturl;
|
||||
var hook_url = "bes_hook_punch.asp?urole="+urole+"&dis_key="+dis_key+transitParam;
|
||||
// Biedt de mogelijkheid de url te verrijken met gebruikers info
|
||||
var subst_table = { "RANDOM" : shared.random(16),
|
||||
|
||||
@@ -86,6 +86,7 @@ function show_item_details(bes_item_info)
|
||||
window.stock_info = {}; // even onbekend.
|
||||
|
||||
var imgObj = $("#photo")[0];
|
||||
if (imgObj == null) return; // free artikel
|
||||
|
||||
if (bes_item_info.srtdeel_image)
|
||||
{
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
<!-- #include file="../Shared/persoonselector.inc" -->
|
||||
<!-- #include file="../Shared/artikelgroepselector.inc" -->
|
||||
<!-- #include file="../Shared/besitemselector.inc" -->
|
||||
<!-- #include file="../Shared/bedrijfselector.inc" -->
|
||||
<!-- #include file="../Shared/selector.inc" -->
|
||||
<!-- #include file="../Shared/rater.inc" -->
|
||||
<!-- #include file="../prs/prs.inc" -->
|
||||
@@ -125,12 +126,12 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
if (S("prs_dep_default_kpn") == 0)
|
||||
{ // Niet standaard geautoriseerd voor eigen kostenplaats. Dit hier checken
|
||||
sql = "SELECT k.prs_kostenplaats_key kpkey"
|
||||
+ " FROM prs_perslidkostenplaats pk"
|
||||
+ ", prs_v_aanwezigkostenplaats k"
|
||||
+ " FROM prs_perslidkostenplaats pk"
|
||||
+ " , prs_v_aanwezigkostenplaats k"
|
||||
+ " WHERE pk.prs_kostenplaats_key = k.prs_kostenplaats_key(+)"
|
||||
+ " AND pk.prs_perslidkostenplaats_boeken = 1"
|
||||
+ " AND pk.prs_perslid_key = " + user_key
|
||||
+ " AND (k.prs_kostenplaats_key = " + (user.afdeling().prs_kostenplaats_key() || -1)
|
||||
+ " AND pk.prs_perslidkostenplaats_boeken = 1"
|
||||
+ " AND pk.prs_perslid_key = " + user_key
|
||||
+ " AND (k.prs_kostenplaats_key = " + (user.afdeling().prs_kostenplaats_key() || -1)
|
||||
+ " OR pk.prs_kostenplaats_key IS NULL)";
|
||||
oRs = Oracle.Execute(sql);
|
||||
authForOwnAcoount = (!oRs.eof);
|
||||
@@ -208,6 +209,7 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
bes_bestelling.flex_defaults[nm] = val;
|
||||
}
|
||||
}
|
||||
|
||||
%>
|
||||
|
||||
<html>
|
||||
@@ -217,7 +219,7 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
var details_Items = new Array(); // voor details.inc
|
||||
dis_key = <%=bes_bestelling.dis_key%>;
|
||||
var user_kpkey = <%=user.afdeling().prs_kostenplaats_key() || -1%>;
|
||||
var user_kpnaam = "<%=user.afdeling().kpn_naam()%>";
|
||||
var user_kpnaam = "<%=safe.jsstring(user.afdeling().kpn_naam())%>";
|
||||
var inclBTW = <%=bes_bestelling.inclBTW%> == 1;
|
||||
var maxartikel = <%=bes_disc_info.maxartikel%>;
|
||||
</script>
|
||||
@@ -386,13 +388,13 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
changeKostK(); // Even ordernr goed aan/uitzetten
|
||||
<% }
|
||||
}
|
||||
if (this_bes.canItemsChange)
|
||||
if (this_bes.canItemsChange && !bes_disc_info.isFreeArticle)
|
||||
{ %>
|
||||
sgBesItem.CheckJustOne();
|
||||
<% } %>
|
||||
|
||||
if (front_end)
|
||||
showPicture('<%=bes_disc_info.disc_params_logo_url%>');
|
||||
showPicture('<%=safe.jsstring(bes_disc_info.disc_params_logo_url)%>');
|
||||
|
||||
<% if (bes_key < 0 && artikel_key > 0) { %>
|
||||
load_item_info(<%=artikel_key%>, '<%=urole%>', 1); // AutoAdd eentje
|
||||
@@ -546,8 +548,8 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
// Alleen aanpasbaar na klikken van 'pas aan' button
|
||||
// Bestelling voor alleen aanpasbaar als ook kostenplaats aanpasbaar is
|
||||
var kp_editable = ( (bes_bestelling.rfoStatus==null)
|
||||
|| (backo && bes_bestelling.rfoStatus >= 3 && bes_bestelling.rfoStatus <= 6
|
||||
&& this_bes.canWrite('WEB_ORDFIN') && this_bes.canMainChange)
|
||||
|| (bes_bestelling.rfoStatus >= 3 && bes_bestelling.rfoStatus <= 6
|
||||
&& writeORDFIN && this_bes.canMainChange)
|
||||
|| this_bes.canApprove
|
||||
);
|
||||
// Alleen aanpasbaar na klikken van 'pas aan' button, bij toevoegen van nieuwe bestelling en bij fiatteren
|
||||
@@ -600,8 +602,9 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
var sql = "SELECT prs.getprofiellimiet(" + (S("prs_dep_default_kpn_voor") == 0? bes_bestelling.perslid_key : bes_bestelling.perslid_key_voor) + ", " + bes_bestelling.dis_key +") limiet FROM DUAL";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
txt = oRs("limiet").value || ""; // zou alsnog leeg kunnen zijn
|
||||
oRs.Close();
|
||||
}
|
||||
ROFIELDTR ("fldprofiel", L("lcl_bes_orderlimit"), txt, { id: "bestellimiet"});
|
||||
RWFIELDTR ("bestellimiet", "fldprofiel", L("lcl_bes_orderlimit"), txt, { readonly: true});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -685,7 +688,7 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
}
|
||||
|
||||
BLOCK_START("besFlex"+(S("bes_flexcolumns")!=1?"2":"") , L("lcl_bes_flexblok"));
|
||||
%><tr><td><%
|
||||
%><tr><td class="besflex"><%
|
||||
generateFlexKenmerkCode ({ urole: urole,
|
||||
bes_key: bes_bestelling.bes_key, // Bestelling key
|
||||
disc_key: bes_bestelling.dis_key,
|
||||
@@ -709,55 +712,84 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
<% // ======== BLOCK om itemregels toe te voegen ========
|
||||
if (this_bes.canItemsChange)
|
||||
{
|
||||
BLOCK_START("besItemSel" , L("lcl_bes_selectieblok") + " " + bes_disc_info.discipline_omschrijving + " " + (bes_bestelling.inclBTW? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW")));
|
||||
BLOCK_START("besItemSel" , L("lcl_bes_selectieblok") + " " + safe.html(bes_disc_info.discipline_omschrijving) + " " + (bes_bestelling.inclBTW? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW")));
|
||||
|
||||
FCLTartikelgroepselector("srtgroep",
|
||||
"sgSrtgroep",
|
||||
{ label: L("lcl_bes_srtgroup"),
|
||||
artikelgroepKey: bes_bestelling.srtgroep,
|
||||
disc_key: bes_bestelling.dis_key,
|
||||
onChange: "onChangeArtikelgroep",
|
||||
extraParamField: "singlegroep",
|
||||
extracode: "S",
|
||||
readonly: (bes_key > 0 && bes_bestelling.singlegroep)
|
||||
});
|
||||
|
||||
sql = " SELECT bs.bes_staffeltabel_key"
|
||||
+ ", bs.bes_staffeltabel_naam"
|
||||
+ " FROM bes_staffeltabel bs"
|
||||
+ " WHERE EXISTS (SELECT sd.bes_srtdeel_key"
|
||||
+ " FROM bes_v_aanwezigsrtgroep sg"
|
||||
+ ", bes_v_aanwezigsrtdeel sd"
|
||||
+ " WHERE sg.ins_discipline_key = " + bes_bestelling.dis_key
|
||||
+ " AND sg.bes_srtgroep_key = sd.bes_srtgroep_key"
|
||||
+ " AND sd.bes_staffeltabel_key = bs.bes_staffeltabel_key)"
|
||||
+ " ORDER BY 2";
|
||||
|
||||
oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
FCLTselector("staffelgroep", sql, // filter op suggest besitem
|
||||
{ label: L("lcl_bes_staffelgroep"),
|
||||
emptyOption: ""
|
||||
}
|
||||
);
|
||||
else
|
||||
{ // Staffelgroep hidden weergeven met -1 als waarde (geen staffelgroep geselecteerd)
|
||||
%> <input type="hidden" id="staffelgroep" tabindex="-1" class="fldselect" value="-1">
|
||||
<% } %>
|
||||
<%
|
||||
FCLTbesitemselector("besitem",
|
||||
"sgBesItem",
|
||||
{ label: L("lcl_bes_srtdeel"),
|
||||
bessrtdeel_key: -1,
|
||||
disc_key: bes_bestelling.dis_key,
|
||||
readonly: !this_bes.canItemsChange,
|
||||
urlAdd: [{urlParam: "srtgroep_key", field: "srtgroep"},
|
||||
{urlParam: "staffel_key", field: "staffelgroep"}],
|
||||
onChange: "load_item_info",
|
||||
favouritelist: true
|
||||
if (bes_disc_info.isFreeArticle)
|
||||
{
|
||||
FCLTbedrijfselector("lev_key", // Leverancier
|
||||
"sg_lev",
|
||||
{ companyKey: bes_bestelling.bedrijf_key||-1,
|
||||
label: L("lcl_bes_Supplier"),
|
||||
filtercode: "L",
|
||||
required: true,
|
||||
readonly: bes_bestelling.bedrijf_key > 0
|
||||
});
|
||||
RWFIELDTR("srtdeel_nr", "fld", L("lcl_bes_srtdeel_nr"), "", { required: true, maxlength: 32 });
|
||||
RWFIELDTR("omschrijving", "fld", L("lcl_bes_srtdeel_oms"), "", { required: true, maxlength: 100 })
|
||||
RWFIELDTR("unit", "fld", L("lcl_bes_unity"), "", { maxlength: 30 })
|
||||
RWFIELDTR("price", "fld currency", L("lcl_bes_price_per_unity"), "", { requiredor0: true, maxlength: 10 })
|
||||
RWFIELDTR("aantal_text", "fld", L("lcl_bes_amount"), "", { required: true, maxlength: 10 })
|
||||
%> <tr id="buttons_tr"><td colspan="2">
|
||||
<span class='labelextra'>
|
||||
<img class='details' title='<%=L("lcl_bes_add_btn")%>' src='../Pictures/cartx2.png' onclick="AddFreeArticleItem('<%=urole%>')">
|
||||
</span>
|
||||
</td></tr>
|
||||
|
||||
<%
|
||||
}
|
||||
else // Gewoon artikel uit catalogus kiezen
|
||||
{
|
||||
FCLTartikelgroepselector("srtgroep",
|
||||
"sgSrtgroep",
|
||||
{ label: L("lcl_bes_srtgroup"),
|
||||
artikelgroepKey: bes_bestelling.srtgroep,
|
||||
disc_key: bes_bestelling.dis_key,
|
||||
onChange: bes_disc_info.isFreeArticle?null:"onChangeArtikelgroep",
|
||||
required: bes_disc_info.isFreeArticle,
|
||||
extraParamField: "singlegroep",
|
||||
extracode: "S",
|
||||
readonly: (bes_key > 0 && bes_bestelling.singlegroep)
|
||||
});
|
||||
|
||||
sql = " SELECT bs.bes_staffeltabel_key"
|
||||
+ ", bs.bes_staffeltabel_naam"
|
||||
+ " FROM bes_staffeltabel bs"
|
||||
+ " WHERE EXISTS (SELECT sd.bes_srtdeel_key"
|
||||
+ " FROM bes_v_aanwezigsrtgroep sg"
|
||||
+ ", bes_v_aanwezigsrtdeel sd"
|
||||
+ " WHERE sg.ins_discipline_key = " + bes_bestelling.dis_key
|
||||
+ " AND sg.bes_srtgroep_key = sd.bes_srtgroep_key"
|
||||
+ " AND sd.bes_staffeltabel_key = bs.bes_staffeltabel_key)"
|
||||
+ " ORDER BY 2";
|
||||
|
||||
oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
FCLTselector("staffelgroep", sql, // filter op suggest besitem
|
||||
{ label: L("lcl_bes_staffelgroep"),
|
||||
emptyOption: ""
|
||||
}
|
||||
);
|
||||
}
|
||||
else
|
||||
{ // Staffelgroep hidden weergeven met -1 als waarde (geen staffelgroep geselecteerd)
|
||||
%> <input type="hidden" id="staffelgroep" tabindex="-1" class="fldselect" value="-1">
|
||||
<% }
|
||||
oRs.Close();
|
||||
|
||||
FCLTbesitemselector("besitem",
|
||||
"sgBesItem",
|
||||
{ label: L("lcl_bes_srtdeel"),
|
||||
bessrtdeel_key: -1,
|
||||
disc_key: bes_bestelling.dis_key,
|
||||
readonly: !this_bes.canItemsChange,
|
||||
urlAdd: [{urlParam: "srtgroep_key", field: "srtgroep"},
|
||||
{urlParam: "staffel_key", field: "staffelgroep"}],
|
||||
onChange: "load_item_info",
|
||||
favouritelist: true
|
||||
});
|
||||
// Het informatieblok van een geselecteerd artikel
|
||||
%>
|
||||
%>
|
||||
<tr><td class="label">
|
||||
<label><img class="besphoto"
|
||||
src="../Pictures/no_photo.gif"
|
||||
@@ -789,17 +821,18 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<% BLOCK_END();
|
||||
<% }
|
||||
BLOCK_END();
|
||||
} // this_bes.canItemsChange
|
||||
%>
|
||||
|
||||
<% BLOCK_START("besItems" , L("lcl_bes_geselecteerd") + " " + (bes_bestelling.inclBTW? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW"))); %>
|
||||
BLOCK_START("besItems" , L("lcl_bes_geselecteerd") + " " + (bes_bestelling.inclBTW? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW"))); %>
|
||||
<tr><td>
|
||||
<!-- SELECTED ITEMS -->
|
||||
<table width="100%" style='border:0px; paddding:0px;' id="sel_items" class="rstable">
|
||||
<table width="100%" style='border:0px; padding:0px;' id="sel_items" class="rstable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<!--<th><%=L("lcl_bes_srtgroup")%></th>-->
|
||||
<th><%=L("lcl_bes_srtdeel_nr")%></th>
|
||||
<th><%=L("lcl_bes_srtdeel")%></th>
|
||||
<th><%=L("lcl_bes_unity")%></th>
|
||||
@@ -844,7 +877,8 @@ else // nieuwe bestelling. Defaults bepalen
|
||||
</div>
|
||||
<% }
|
||||
%> </td></tr><%
|
||||
BLOCK_END(); IFACE.FORM_END();
|
||||
BLOCK_END();
|
||||
IFACE.FORM_END();
|
||||
%>
|
||||
</form>
|
||||
<iframe src="../Shared/empty.html"
|
||||
|
||||
@@ -16,9 +16,10 @@
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="./bes.inc" -->
|
||||
<!-- #include file="../PRS/prs.inc" -->
|
||||
<!-- #include file="../shared/save2db.inc" -->
|
||||
<!-- #include file="../shared/kpl_ksrt_validate.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="../Shared/kpl_ksrt_validate.inc" -->
|
||||
<!-- #include file="../Shared/kenmerk_common.inc" -->
|
||||
<!-- #include file="../Shared/budget.inc" -->
|
||||
|
||||
<%
|
||||
var bes_key = getQParamInt("bes_key", -1);
|
||||
@@ -36,16 +37,43 @@ var bes_disc_info = bes.disc_info(dis_key);
|
||||
var act_key = getFParamInt("act_key", -1);
|
||||
var act_mode = (act_key > 0);
|
||||
var kostenplaats_key = getFParamInt("kostenplaats",-1);
|
||||
var srtdeel_keys = getFParamIntArray("srtdeel_keys",[]);
|
||||
var amount_arr = getFParamIntArray("amount_string",[]);
|
||||
var item_keys_unsafe = getFParamArray("item_keys",[]); // kan ook 'new1' zijn voor nieuwe opdrachten
|
||||
var flexkey_string_arr = getFParamIntArray("flexkey_string",[]);
|
||||
var flexval_string_arr = getFParamArray("flexval_string",[]);
|
||||
var flexdeel_string_arr = getFParamArray("flexdeel_string",[]);
|
||||
var flexitem_string_unsafe = getFParamArray("flexitem_string",[]); // kan ook 'new1' zijn voor nieuwe opdrachten
|
||||
var srtdeel_keys = getFParamIntArray("srtdeel_keys",[]); // Bij isFree ook voor bewerken bestaande
|
||||
|
||||
// staffel_info.totaalbedrag is erg handig
|
||||
var staffel_info = bes.staffel_info(srtdeel_keys, amount_arr);
|
||||
if (bes_disc_info.isFreeArticle)
|
||||
{ // Moeten we de nieuwe srtdeel-en nog aanmaken
|
||||
for (var itemregelnr = 0; itemregelnr < item_keys_unsafe.length; itemregelnr++)
|
||||
{
|
||||
var srtdeel_nr = getFParam("srtdeel_nr_" + item_keys_unsafe[itemregelnr], ""); // Leeg bij bewerken bestaande;
|
||||
if (srtdeel_nr)
|
||||
{
|
||||
var data = { //srtgroep_key: getFParamInt("srtgroup_key_" + item_keys_unsafe[itemregelnr]),
|
||||
srtgroep_omschrijving: "Vrije artikel groep", // 2015.1 nog lcl van maken
|
||||
srtdeel_nr: srtdeel_nr,
|
||||
srtdeel_omschrijving: getFParam("srtdeel_omschrijving_" + item_keys_unsafe[itemregelnr]),
|
||||
srtdeel_prijs: getFParamFloat("price_" + item_keys_unsafe[itemregelnr]),
|
||||
srtdeel_eenheid: getFParam("eenheid_" + item_keys_unsafe[itemregelnr], ""),
|
||||
srtdeel_btw: 21,
|
||||
bedrijf_key: getFParamInt("lev_key_" + item_keys_unsafe[itemregelnr]),
|
||||
srtdeel_opmerking: "" //opmerking
|
||||
};
|
||||
try
|
||||
{
|
||||
var bes_srtdeel_key = bes.upsert_deel(dis_key, data);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
abort_with_warning("Kan artikel '{0}' niet toevoegen. Dubbel artikelnummer is niet toegestaan.".format(srtdeel_nr));
|
||||
}
|
||||
srtdeel_keys[itemregelnr] = bes_srtdeel_key;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var isNew = (bes_key == -1);
|
||||
var isChange = !isNew && bes_bestelling.parent_key > 0;
|
||||
@@ -84,6 +112,8 @@ for (i = 0; i < amount_arr.length; i++)
|
||||
item_coll[i] = parseInt(item_keys_unsafe[i], 10);
|
||||
}
|
||||
|
||||
// staffel_info.totaalbedrag is erg handig
|
||||
var staffel_info = bes.staffel_info(srtdeel_keys, amount_arr);
|
||||
itemprijsstring = staffel_info.itemprijsstring;
|
||||
|
||||
var strState = ""; // L("lcl_bes_RFO_regSuccess")
|
||||
@@ -137,7 +167,7 @@ else
|
||||
// S("prs_dep_default_kpn_voor") == 0: de contactpersoon prs_key
|
||||
// S("prs_dep_default_kpn_voor") == 1: de "voor wie" (bestelling voor) prs_key_voor
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek
|
||||
var exceeds_pgb = bes.exceeds_pgb(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key, bes_key)
|
||||
var exceeds_pgb = bes.exceeds_pgb(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key)
|
||||
var exceeds_agb = bes.exceeds_agb(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key, bes_key)
|
||||
if (exceeds_pgb || exceeds_agb)
|
||||
{
|
||||
@@ -145,21 +175,20 @@ else
|
||||
// Algemene fiatterings proces noodzakelijk naast PGB fiatering
|
||||
ter_finfiattering = true;
|
||||
else
|
||||
{
|
||||
// Fiatteringsproces moet gevolgd worden op de naam van
|
||||
// S("prs_dep_default_kpn_voor") == 0: de contactpersoon prs_key
|
||||
// S("prs_dep_default_kpn_voor") == 1: de "voor wie" (bestelling voor) prs_key_voor
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek
|
||||
strState = (exceeds_pgb
|
||||
? L("lcl_bes_exceeds_pgb") + safe.curr(bes.get_pgb_exceed_amount(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key, bes_key))
|
||||
: "")
|
||||
+ (exceeds_pgb && exceeds_agb
|
||||
? "\n" // Nieuwe regel
|
||||
: "")
|
||||
+ (exceeds_agb
|
||||
? L("lcl_bes_exceeds_agb") + safe.curr(bes.get_agb_exceed_amount(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key, bes_key))
|
||||
: "")
|
||||
+ "\n" + L("lcl_bes_adjust_order");
|
||||
{ // Fiatteringsproces moet gevolgd worden op de naam van.
|
||||
// S("prs_dep_default_kpn_voor") == 0: de contactpersoon prs_key.
|
||||
// S("prs_dep_default_kpn_voor") == 1: de "voor wie" (bestelling voor) prs_key_voor.
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek.
|
||||
var strState = (exceeds_pgb
|
||||
? L("lcl_bes_exceeds_pgb") + safe.curr(bes.get_pgb_exceed_amount(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key, bes_key))
|
||||
: "")
|
||||
+ (exceeds_pgb && exceeds_agb
|
||||
? "\n" // Nieuwe regel.
|
||||
: "")
|
||||
+ (exceeds_agb
|
||||
? L("lcl_bes_exceeds_agb") + safe.curr(bes.get_agb_exceed_amount(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key, bes_key))
|
||||
: "")
|
||||
+ "\n" + L("lcl_bes_adjust_order");
|
||||
abort_with_warning(strState);
|
||||
}
|
||||
}
|
||||
@@ -169,21 +198,21 @@ else
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Standaard fiatteringscontrole
|
||||
{ // Standaard fiatteringscontrole.
|
||||
// Fiatteringsproces moet gevolgd worden op de naam van
|
||||
// S("prs_dep_default_kpn_voor") == 0: de contactpersoon prs_key
|
||||
// S("prs_dep_default_kpn_voor") == 1: de "voor wie" (bestelling voor) prs_key_voor
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek
|
||||
// Als orgineel nog gefiatteerd moet worden door budgethouder (status is 2) dan zeker eerst fiatteren
|
||||
// Als bes_disc_params_for_others niet is gezet zijn prs_key en prs_key_voor identiek.
|
||||
// Als orgineel nog gefiatteerd moet worden door budgethouder (status is 2) dan zeker eerst fiatteren.
|
||||
if (!act_mode
|
||||
&& !bes_disc_info.disc_params_autoacceptrfo
|
||||
&& shared.exceeds_profiel(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key)
|
||||
&& budget.exceeds_profiel(staffel_info.totaalbedrag, (S("prs_dep_default_kpn_voor") == 0? prs_key : prs_key_voor), dis_key)
|
||||
&& (isNew || oldStatus == 2 || bes.herfiatteren(bes_bestelling, bes_disc_info, staffel_info.totaalbedrag)))
|
||||
// niet automatisch fiat(!)teren en profiel wordt overschreden
|
||||
// niet automatisch fiat(!)teren en profiel wordt overschreden.
|
||||
ter_finfiattering = true;
|
||||
}
|
||||
|
||||
// Als het boven mijn profiel is, of ik -als ik budgethouder ben/zou zijn- niet zelf mag goedkeuren
|
||||
// Als het boven mijn profiel is, of ik -als ik budgethouder ben/zou zijn- niet zelf mag goedkeuren.
|
||||
// Gaan we kijken wie dan wel.
|
||||
// Kan ik zelf fiatteren?: true: totaalbedrag <= can_selfapprove
|
||||
// false totaalbedrag > can_selfapprove
|
||||
@@ -196,13 +225,13 @@ else
|
||||
__Log('bestelling afgebroken');
|
||||
abort_with_warning(L("lcl_bes_no_fiatteur"));
|
||||
}
|
||||
if (shared.exceeds_profiel(staffel_info.totaalbedrag, approver_key, dis_key))
|
||||
if (budget.exceeds_profiel(staffel_info.totaalbedrag, approver_key, dis_key))
|
||||
{ // de gevonden fiatteur heeft onvoldoende profiel, is er een hogere (kpngroepverantwoordelijke)
|
||||
// Let wel: alleen controle of hij er bestaat. Wie het is doen we nog niets mee hier.
|
||||
__Log('voldoet niet');
|
||||
var nextapprover_key = prs.getKpVerantwoordelijkeExcept(kostenplaats_key, approver_key);
|
||||
__Log('Vervolgensgevonden fiatteur: ' + nextapprover_key);
|
||||
if (nextapprover_key == -1 || shared.exceeds_profiel(staffel_info.totaalbedrag, nextapprover_key, dis_key))
|
||||
if (nextapprover_key == -1 || budget.exceeds_profiel(staffel_info.totaalbedrag, nextapprover_key, dis_key))
|
||||
{
|
||||
__Log('voldoet ook niet');
|
||||
abort_with_warning(L("lcl_bes_exceed_limit"));
|
||||
@@ -414,8 +443,8 @@ if (status == 1 || status == 2|| status == 3 || status == 4 || status == 5)
|
||||
if (makechange) // in de originele tracking verwijzen we naar de change-request
|
||||
shared.trackaction("BESUPD", getQParamInt("bes_key"), L("lcl_bes_change") + S("bes_bestelling_prefix") + bes_key );
|
||||
|
||||
if (UseRemoteApproval)
|
||||
{
|
||||
if (UseRemoteApproval)
|
||||
{
|
||||
__Log("Requesting remote approval");
|
||||
var remoteResult = custfunc.bes_getremoteapproval(getQParamInt("bes_key", pResult)); // dis_key ook meegeven?
|
||||
// Track dat fiattering gevraagd wordt aan extern systeem (custfunc.bes_remoteapprovalSystemName(dis_key)?)
|
||||
@@ -427,7 +456,7 @@ if (UseRemoteApproval)
|
||||
// if (!corsaResult)
|
||||
// strState = "Resultaat Corsa/Webservice: "+corsaError;
|
||||
//
|
||||
// var xmlTableDef = Server.CreateObject("MSXML2.DOMDocument.4.0");
|
||||
// var xmlTableDef = Server.CreateObject("MSXML2.DOMDocument.6.0");
|
||||
// var docNr = corsaCreateDoc(bes_key);
|
||||
// var caseID = corsaGetCase(docNr);
|
||||
// xmlTableDef = corsaVarTabGet(caseID);
|
||||
|
||||
@@ -69,6 +69,7 @@ function doSubmit()
|
||||
objReturn[3] = new Array(); // flexkenmerkwaarde omschrijving
|
||||
objReturn[4] = new Array(); // url
|
||||
|
||||
var nameprefix = 'k';
|
||||
for (var i=1; i<=window.document.getElementById("k_all").value; i++) {
|
||||
if (window.document.getElementById("k" + i + "val")) {
|
||||
|
||||
@@ -95,7 +96,7 @@ function doSubmit()
|
||||
objReturn[3][objReturn[3].length] = $('#k' + i + 'val option:selected').text();
|
||||
}
|
||||
else if (tp && tp == 'S') {
|
||||
objReturn[3][objReturn[3].length] = $('#Suggest' + kkey + '_show').val();
|
||||
objReturn[3][objReturn[3].length] = $('#Suggest' + nameprefix + i + '_show').val();
|
||||
}
|
||||
else {
|
||||
objReturn[3][objReturn[3].length] = kval.value;
|
||||
|
||||
@@ -72,12 +72,14 @@ var disckey = getQParamInt("disc",0);
|
||||
var sql = "SELECT bes_srtdeel_key product_key, "
|
||||
+ lcl.xsql('sd.bes_srtdeel_omschrijving', 'sd.bes_srtdeel_key')+" product,"
|
||||
+ " 'besartikel' soort, 3 rang, bes.getsrtdeelprijs(sd.bes_srtdeel_key, null) prijs,"
|
||||
+ lcl.xsql('sd.bes_srtdeel_eenheid', 'sd.bes_srtdeel_key') + " eenheid,"
|
||||
+ " p.prs_bedrijf_naam extra,"
|
||||
+ " sg.ins_discipline_key disc_key, "
|
||||
+ " null vakgroeptype,"
|
||||
+ " sg.bes_srtgroep_key,"
|
||||
+ lcl.xsql('sg.bes_srtgroep_omschrijving', 'sg.bes_srtgroep_key') + " groep,"
|
||||
+ lcl.xsql('d.ins_discipline_omschrijving', 'd.ins_discipline_key') + " vakgroep,"
|
||||
+ lcl.xsql('sd.bes_srtdeel_opmerking', 'sd.bes_srtdeel_key')+ " opmerking,"
|
||||
+ " NVL2(sd.bes_srtdeel_image, p.prs_bedrijf_image_loc || sd.bes_srtdeel_image, NULL) foto"
|
||||
+ " FROM bes_v_aanwezigsrtdeel sd"
|
||||
+ ", bes_srtgroep sg"
|
||||
@@ -142,10 +144,10 @@ while (!oRs.Eof)
|
||||
%></tr><tr><%
|
||||
}
|
||||
%><td class='iconmenu' width='<%=Math.floor(100/maxcol)%>%'
|
||||
title='<%=safe.htmlattr(oRs("product").Value)%>'
|
||||
title='<%=safe.htmlattr(oRs("opmerking").Value)%>'
|
||||
onclick='run_create_bes (<%=oRs("disc_key").Value%>,<%=oRs("product_key").Value%>);'>
|
||||
<img theSrc='<%=safe.htmlattr(url)%>'>
|
||||
<div class="iconlabel"><%=safe.html(oRs("product").value) +'<br> ' + safe.curr(oRs("prijs").value) %></div>
|
||||
<div class="iconlabel"><%=safe.html(oRs("product").value) + "<br>" +(safe.curr(oRs("prijs").value) != 0 ? S('currency_pref') + safe.curr(oRs("prijs").value) : "") + (oRs("eenheid").value ? (" / " + safe.html(oRs("eenheid").value)) : "") %></div>
|
||||
</td><%
|
||||
pos ++;
|
||||
last_groep = oRs("bes_srtgroep_key").Value;
|
||||
|
||||
@@ -18,11 +18,12 @@
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="bes.inc" -->
|
||||
<%
|
||||
var urole = getQParamSafe("urole");
|
||||
var dis_key = getQParamInt("dis_key");
|
||||
|
||||
var orderurl = "bes_bestelling.asp?punch=1" + buildTransitParam(["urole", "dis_key", "mld_key"])
|
||||
var orderurl = "bes_bestelling.asp?punch=1" + buildTransitParam(["urole", "dis_key", "mld_key"]);
|
||||
basketEmpty = false;
|
||||
|
||||
function punchNVL(nm, n, def)
|
||||
@@ -55,49 +56,21 @@
|
||||
else
|
||||
{ // Maak item (eventueel) aan in catalogus
|
||||
var prijs = !(prijs!=""&&isNaN(parseFloat(price)))?parseFloat(price).toFixed(2):"NULL";
|
||||
sql = "BEGIN bes.upsert_srtdeel "
|
||||
+ " ( " + dis_key
|
||||
+ " , " + safe.quoted_sql(productGroup, 60) // bes_srtgroep_omschrijving
|
||||
+ " , " + safe.quoted_sql(description, 100) // bes_srtdeel_omschrijving
|
||||
+ " , " + prijs
|
||||
+ " , 19 " // BTW
|
||||
+ " , " + safe.quoted_sql(unitOfMeasure, 30) // bes_srtdeel_eenheid
|
||||
+ " , " + safe.quoted_sql(vendorProductNumber, 32) // bes_srtdeel_nr
|
||||
+ " , -1 "
|
||||
+ " , NULL " // vervaldatum
|
||||
+ " , ''"
|
||||
+ " , 1 "
|
||||
+ " , " + safe.quoted_sql(opmerking, 2000) + "); END;";
|
||||
|
||||
Oracle.Execute(sql);
|
||||
// JGL: Het zou fijn zijn als upsert_srtdeel een functie wordt en gewoon
|
||||
// de bes_srtdeel_key oplevert. Dan wordt het volgende veel simpeler:
|
||||
// PF: Maar dat kan helemaal niet, want een select mag geen DML e.d doen.
|
||||
// Wel beter zou zijn bes.get_upsertkey(), nader te definieren.
|
||||
|
||||
// Zoek aangemaakte item terug.
|
||||
sql = "SELECT bes_srtdeel_key "
|
||||
+ " FROM bes_srtdeel sd, bes_srtgroep sg "
|
||||
+ " WHERE sg.ins_discipline_key = " + dis_key
|
||||
+ " AND sg.bes_srtgroep_key = sd.bes_srtgroep_key "
|
||||
+ " AND sg.bes_srtgroep_omschrijving = " + safe.quoted_sql(productGroup, 60) /* NOXLAT */
|
||||
+ " AND UPPER(sd.bes_srtdeel_omschrijving) = " + safe.quoted_sql_upper(description, 100) /* NOXLAT */
|
||||
+ " AND sd.bes_srtdeel_eenheid " + (unitOfMeasure? "= " + safe.quoted_sql(unitOfMeasure, 30): " IS NULL")
|
||||
+ " AND sd.bes_srtdeel_nr = " + safe.quoted_sql(vendorProductNumber, 32)
|
||||
+ " ORDER BY sd.bes_srtdeel_key DESC ";
|
||||
|
||||
oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
orderurl += "&ps=" + oRs("bes_srtdeel_key").value + "&pn=" + quantity;
|
||||
}
|
||||
|
||||
var bes_srtdeel_key = bes.upsert_deel(dis_key, { srtdeel_nr: vendorProductNumber,
|
||||
srtgroep_omschrijving: productGroup,
|
||||
srtdeel_omschrijving: description,
|
||||
srtdeel_prijs: prijs,
|
||||
srtdeel_eenheid: unitOfMeasure,
|
||||
srtdeel_btw: 21,
|
||||
srtdeel_opmerking: opmerking
|
||||
});
|
||||
orderurl += "&ps=" + bes_srtdeel_key + "&pn=" + quantity;
|
||||
// Check customer specific restrictions
|
||||
// customer hook
|
||||
pResult = new HookResult();
|
||||
|
||||
// Klantspecifieke check functie (hookfunction) voor de invoer
|
||||
var bes_punch_receive = custfunc.bes_punch_receive(Request.Form, oRs("bes_srtdeel_key").value, i, pResult);
|
||||
var bes_punch_receive = custfunc.bes_punch_receive(Request.Form, bes_srtdeel_key, i, pResult);
|
||||
if (!bes_punch_receive)
|
||||
{
|
||||
abort_with_warning(pResult.errmsg);
|
||||
|
||||
@@ -1529,19 +1529,7 @@ function bes_list (pautfunction, params)
|
||||
}
|
||||
else if (frontend) // Front End
|
||||
{
|
||||
var prsKeys = "" + user_key;
|
||||
if (S("prs_collegas_used") == 1)
|
||||
{ // String met collega keys voor de tijd bepalen. Dit gaat (bij ALGreadlevel >= 0) stukken sneller dan "OR" + onderstaande sql_collegas string gebruiken.
|
||||
sql_collegas = " SELECT prs_perslid_key"
|
||||
+ " FROM prs_collega"
|
||||
+ " WHERE prs_perslid_key_alt = " + user_key;
|
||||
oRs = Oracle.Execute(sql_collegas);
|
||||
while (!oRs.eof)
|
||||
{
|
||||
prsKeys += "," + oRs("prs_perslid_key").value;
|
||||
oRs.MoveNext();
|
||||
}
|
||||
}
|
||||
var prsKeys = user.collegakeylist();
|
||||
|
||||
sql = "SELECT b.bes_bestelling_key"
|
||||
+ ", b.bes_bestelling_parentkey"
|
||||
@@ -1549,6 +1537,7 @@ function bes_list (pautfunction, params)
|
||||
+ ", bes_bestelling_retourvan_key"
|
||||
+ ", b.bes_bestelling_module"
|
||||
+ ", ma.mld_adres_naam"
|
||||
+ ", b.bes_bestelling_plaats"
|
||||
+ ", " + S("prs_kpn_string") + " kpn_string"
|
||||
+ ", SUM(COALESCE(bi.bes_bestelling_item_prijs, 0) * bi.bes_bestelling_item_aantal) bedrag"
|
||||
+ ", b.bes_bestelling_status"
|
||||
@@ -1593,6 +1582,7 @@ function bes_list (pautfunction, params)
|
||||
+ ", b.bes_bestelling_retourvan_key"
|
||||
+ ", b.bes_bestelling_module"
|
||||
+ ", ma.mld_adres_naam"
|
||||
+ ", b.bes_bestelling_plaats"
|
||||
+ ", " + S("prs_kpn_string")
|
||||
+ ", b.bes_bestelling_datum"
|
||||
+ ", b.bes_bestelling_status "
|
||||
@@ -1651,9 +1641,10 @@ function bes_list (pautfunction, params)
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_add_date"), content: "datum", datatype: "datetime"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_RFO_status"), content: fncolStatusOmschr}));
|
||||
rst.addColumn(new Column({caption: L("lcl_delivery_address"), content: "mld_adres_naam", hasActions: true}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_del_room"), content: "bes_bestelling_plaats" }));
|
||||
rst.addColumn(new Column({caption: L("lcl_account"), content: "kpn_string"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_rfo_total_sum_eur"), content: "bedrag", datatype: "currency"}));
|
||||
if (S("prs_collegas_used") == 1)
|
||||
if (user.hasCollegas()) // Mogelijk anderen naast jezelf
|
||||
{
|
||||
rst.addColumn(new Column({caption: L("lcl_rfo_requestor"), content: "naam"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_order_for"), content: fncolOrderVoorFE, combine: true}));
|
||||
@@ -1686,12 +1677,14 @@ function bes_list (pautfunction, params)
|
||||
sql = "SELECT b.bes_bestelling_key"
|
||||
+ ", bes_bestelling_parentkey"
|
||||
+ ", bes_bestelling_datum datum"
|
||||
+ ", bes_bestelling_leverdatum leverdatum"
|
||||
+ ", bes_bestelling_retourvan_key"
|
||||
+ ", (SELECT " + S("prs_pers_string")
|
||||
+ " FROM prs_perslid p"
|
||||
+ " WHERE p.prs_perslid_key = b.prs_perslid_key_voor) ordervoor"
|
||||
+ ", " + S("prs_pers_string") + " prs_string"
|
||||
+ ", m.mld_adres_naam"
|
||||
+ ", b.bes_bestelling_plaats"
|
||||
+ ", bes_bestelling_opmerking"
|
||||
+ ", b.bes_bestelling_status"
|
||||
+ ", b.bes_bestelling_module"
|
||||
@@ -1787,11 +1780,13 @@ function bes_list (pautfunction, params)
|
||||
var sql_group_by = " GROUP BY b.bes_bestelling_key"
|
||||
+ ", bes_bestelling_parentkey"
|
||||
+ ", bes_bestelling_datum"
|
||||
+ ", bes_bestelling_leverdatum"
|
||||
+ ", bd.ins_discipline_key"
|
||||
+ (excel? ", UPPER("+ lcl.xsql('bd.ins_discipline_omschrijving','bd.ins_discipline_key') +")" : "")
|
||||
+ ", b.bes_bestelling_retourvan_key"
|
||||
+ ", " + S("prs_pers_string")
|
||||
+ ", m.mld_adres_naam"
|
||||
+ ", b.bes_bestelling_plaats"
|
||||
+ ", bes_bestelling_opmerking"
|
||||
+ ", b.bes_bestelling_status"
|
||||
+ ", b.bes_bestelling_module"
|
||||
@@ -1931,11 +1926,14 @@ function bes_list (pautfunction, params)
|
||||
// Kolommen
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_key"), content: fncolBesNr}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_add_date"), content: "datum", datatype: "date"}));
|
||||
if (outputmode != 0)
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_deli_date"), content: "leverdatum", datatype: "date"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_discipline"), content: "categorie", hasActions: true}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_RFO_status"), content: fncolStatus}));
|
||||
rst.addColumn(new Column({caption: L("lcl_rfo_requestor"), content: "prs_string"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_order_for"), content: fncolOrderVoorFOBO, combine: true}));
|
||||
rst.addColumn(new Column({caption: L("lcl_delivery_address"), content: "mld_adres_naam"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_del_room"), content: "bes_bestelling_plaats", combine:true}));
|
||||
if (backo)
|
||||
rst.addColumn(new Column({caption: L("lcl_rfo_total_sum_eur"), content: "bedrag", datatype: "currency", total: true}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_approver"), content: fncolApprover}));
|
||||
|
||||
@@ -56,14 +56,14 @@ oRs.Close();
|
||||
<% FCLTHeader.Generate(); %>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
FcltMgr.setTitle("<%=L("lcl_bes_BesOrder") + " " + ordernr_id%>", {hot: false});
|
||||
FcltMgr.setTitle("<%=L("lcl_bes_BesOrder") + " " + safe.jsstring(ordernr_id)%>", {hot: false});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<%
|
||||
// Autorisatie wordt geregeld in iframe bestanden (bes_show_opdr.asp en fin_list.asp)
|
||||
%>
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<% page = "./bes_show_opdr.asp?urole=" + urole + "&ordernr=" + ordernr + "&autoopdr=" + autoopdr;
|
||||
|
||||
IFRAMER("opdrFrame", page, { title: L("lcl_opdr_frame_algemeen"),
|
||||
|
||||
@@ -478,7 +478,7 @@ oRs.Close();
|
||||
if (!frontend)
|
||||
buttons.push ({title: L("lcl_shared_more"), action:"iface_toggleSecondarySearchblock()", id : "btnMoreLess"});
|
||||
if (backo)
|
||||
buttons.push ({title: L("lcl_obj_advanced")+'>', action:"myModal()", id : "bAdvanced"}); // met actuele waarden van catalogus en vorig filter
|
||||
buttons.push ({title: L("lcl_obj_advanced"), action:"myModal()", id : "bAdvanced"}); // met actuele waarden van catalogus en vorig filter
|
||||
CreateButtons(buttons, { entersubmit: true} );
|
||||
%>
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ else
|
||||
}
|
||||
else // minfo
|
||||
{
|
||||
var rfo_status_arr = getQParamIntArray("rfostatus", [2,3,4,5,6,7,8]); // Aanvraag status
|
||||
var rfo_status_arr = getQParamIntArray("rfostatus", [1,2,3,4,5,6,7,8]); // Aanvraag status
|
||||
var ord_status_arr = getQParamIntArray("orderstatus", [-1]); // Opdracht status
|
||||
|
||||
var besstatus1 = false;
|
||||
|
||||
@@ -210,7 +210,7 @@ BLOCK_END();
|
||||
bes.generateBesInfoBlock(bes_bestelling);
|
||||
|
||||
BLOCK_START("besFlex"+(S("bes_flexcolumns")!=1?"2":"") , L("lcl_bes_flexblok"));
|
||||
%><tr><td><%
|
||||
%><tr><td class="besflex"><%
|
||||
generateFlexKenmerkCode ({ urole: urole,
|
||||
bes_key: bes_bestelling.bes_key, // Bestelling key
|
||||
disc_key: bes_bestelling.dis_key,
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<%
|
||||
if (srtdeel_key == -1)
|
||||
var page="bes_edit_srtdeel.asp?disc_key=" + getQParamInt("disc_key"); // Maak een nieuw
|
||||
|
||||
@@ -65,7 +65,7 @@ var authparams = user.checkAutorisation("WEB_BESMSU");
|
||||
+ " , b.bes_srtdeel_nr"
|
||||
+ " , " + lcl.xsqla('b.bes_srtdeel_omschrijving', 'b.bes_srtdeel_key')
|
||||
+ " , b.bes_srtdeel_vervaldatum"
|
||||
+ " , bes.getsrtdeelprijs(b.bes_srtdeel_key, NULL) actualprijs"
|
||||
+ " , bes.getsrtdeelprijs(b.bes_srtdeel_key, "+(bes_enddat ? bes_enddat.beginToSQL() : "NULL")+") actualprijs"
|
||||
+ " , bedr.prs_bedrijf_naam"
|
||||
+ " , b.bes_srtgroep_key"
|
||||
+ " , " + lcl.xsqla('p.bes_srtprod_omschrijving', 'p.bes_srtprod_key')
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<%
|
||||
if (srtprod_key == -1)
|
||||
var page="bes_edit_srtprod.asp"; // Maak een nieuw
|
||||
|
||||
@@ -57,6 +57,7 @@ function bes_voorraad_list (pautfunction, params)
|
||||
<%
|
||||
// Bestelde artikelen intern (gekoppeld via bes_disc_params.bes_ins_discipline_key_inkoop)
|
||||
var sql_from_intern = " SELECT sd.bes_srtdeel_nr"
|
||||
+ ", sd.bes_srtdeel_key"
|
||||
+ ", "+ lcl.xsqla('sd.bes_srtdeel_omschrijving','sd.bes_srtdeel_key')
|
||||
+ ", sd.bes_srtdeel_notitie"
|
||||
+ ", dp.bes_ins_discipline_key_inkoop inkoop_disc"
|
||||
@@ -71,6 +72,7 @@ function bes_voorraad_list (pautfunction, params)
|
||||
+ " WHERE isd2.bes_srtgroep_key = isg2.bes_srtgroep_key"
|
||||
+ " AND bd2.ins_discipline_key = isg2.ins_discipline_key"
|
||||
+ " AND isd2.bes_srtdeel_nr LIKE sd.bes_srtdeel_nr"
|
||||
+ " AND bes_srtdeel_verwijder IS NULL"
|
||||
+ " AND bd2.ins_discipline_key = dp.bes_ins_discipline_key_inkoop) voorraadmax" // Voorraadmax van gekoppelde discipline
|
||||
+ ", (SELECT isd2.bes_srtdeel_voorraadmin"
|
||||
+ " FROM bes_srtdeel isd2"
|
||||
@@ -79,6 +81,7 @@ function bes_voorraad_list (pautfunction, params)
|
||||
+ " WHERE isd2.bes_srtgroep_key = isg2.bes_srtgroep_key"
|
||||
+ " AND bd2.ins_discipline_key = isg2.ins_discipline_key"
|
||||
+ " AND isd2.bes_srtdeel_nr LIKE sd.bes_srtdeel_nr"
|
||||
+ " AND bes_srtdeel_verwijder IS NULL"
|
||||
+ " AND bd2.ins_discipline_key = dp.bes_ins_discipline_key_inkoop) voorraadmin" // Voorraadmin van gekoppelde discipline
|
||||
+ ", SUM (bi.bes_bestelling_item_aantal) aantal_intern"
|
||||
+ ", TO_NUMBER (NULL) aantal_extern_besteld"
|
||||
@@ -109,6 +112,7 @@ function bes_voorraad_list (pautfunction, params)
|
||||
+ " WHERE sd2.bes_srtdeel_key = " + params.item_key + ")"
|
||||
: "")
|
||||
+ " GROUP BY sd.bes_srtdeel_nr"
|
||||
+ ", sd.bes_srtdeel_key"
|
||||
+ ", "+ lcl.xsql('sd.bes_srtdeel_omschrijving','sd.bes_srtdeel_key')
|
||||
+ ", sd.bes_srtdeel_notitie"
|
||||
+ ", dp.bes_ins_discipline_key_inkoop"
|
||||
@@ -120,6 +124,7 @@ function bes_voorraad_list (pautfunction, params)
|
||||
// Bestelde artikelen bij de leverancier (extern)
|
||||
// Besteld (status = 5) en Geleverd (status = 6,7)
|
||||
var sql_from_extern = " SELECT sd.bes_srtdeel_nr"
|
||||
+ ", sd.bes_srtdeel_key"
|
||||
+ ", "+ lcl.xsqla('sd.bes_srtdeel_omschrijving','sd.bes_srtdeel_key')
|
||||
+ ", sd.bes_srtdeel_notitie"
|
||||
+ ", bd.ins_discipline_key inkoop_disc"
|
||||
@@ -156,6 +161,7 @@ function bes_voorraad_list (pautfunction, params)
|
||||
? " AND sd.bes_srtdeel_key = " + item_key
|
||||
: "")
|
||||
+ " GROUP BY bes_srtdeel_nr"
|
||||
+ ", sd.bes_srtdeel_key"
|
||||
+ ", "+ lcl.xsql('sd.bes_srtdeel_omschrijving','sd.bes_srtdeel_key')
|
||||
+ ", sd.bes_srtdeel_notitie"
|
||||
+ ", bd.ins_discipline_key"
|
||||
@@ -165,6 +171,7 @@ function bes_voorraad_list (pautfunction, params)
|
||||
+ ", bes_srtdeel_voorraadmin"
|
||||
+ " UNION ALL"
|
||||
+ " SELECT sd.bes_srtdeel_nr"
|
||||
+ ", sd.bes_srtdeel_key"
|
||||
+ ", "+ lcl.xsqla('sd.bes_srtdeel_omschrijving','sd.bes_srtdeel_key')
|
||||
+ ", sd.bes_srtdeel_notitie"
|
||||
+ ", bd.ins_discipline_key inkoop_disc"
|
||||
@@ -202,6 +209,7 @@ function bes_voorraad_list (pautfunction, params)
|
||||
? " AND sd.bes_srtdeel_key = " + item_key
|
||||
: "")
|
||||
+ " GROUP BY bes_srtdeel_nr"
|
||||
+ ", sd.bes_srtdeel_key"
|
||||
+ ", "+ lcl.xsql('sd.bes_srtdeel_omschrijving','sd.bes_srtdeel_key')
|
||||
+ ", sd.bes_srtdeel_notitie"
|
||||
+ ", bd.ins_discipline_key"
|
||||
@@ -216,7 +224,7 @@ function bes_voorraad_list (pautfunction, params)
|
||||
|
||||
|
||||
var sql = "SELECT bes_srtdeel_nr"
|
||||
+ ", "+ lcl.xsqla('bes_srtdeel_omschrijving','sd.bes_srtdeel_key')
|
||||
+ ", "+ lcl.xsqla('bes_srtdeel_omschrijving','bes_srtdeel_key')
|
||||
+ ", bes_srtdeel_notitie"
|
||||
+ ", inkoop_disc"
|
||||
+ ", disc_oms"
|
||||
@@ -238,10 +246,10 @@ function bes_voorraad_list (pautfunction, params)
|
||||
: "")
|
||||
+ (params.searchtekst
|
||||
? (params.catalogus_key? " AND" : " WHERE") + " (UPPER(bes_srtdeel_nr) LIKE " + safe.quoted_sql_wild("%" + params.searchtekst + "%")
|
||||
+ " OR UPPER("+ lcl.xsql('bes_srtdeel_omschrijving','sd.bes_srtdeel_key') +") LIKE " + safe.quoted_sql_wild("%" + params.searchtekst + "%") + ")"
|
||||
+ " OR UPPER("+ lcl.xsql('bes_srtdeel_omschrijving','bes_srtdeel_key') +") LIKE " + safe.quoted_sql_wild("%" + params.searchtekst + "%") + ")"
|
||||
: "")
|
||||
+ " GROUP BY bes_srtdeel_nr"
|
||||
+ ", "+ lcl.xsql('bes_srtdeel_omschrijving','sd.bes_srtdeel_key')
|
||||
+ ", "+ lcl.xsql('bes_srtdeel_omschrijving','bes_srtdeel_key')
|
||||
+ ", bes_srtdeel_notitie"
|
||||
+ ", inkoop_disc"
|
||||
+ ", disc_oms"
|
||||
|
||||
@@ -124,6 +124,7 @@ function opdr_list (pautfunction, params)
|
||||
// straks + ", bes.bestelopdr_tooltip(b.bes_bestelopdr_key) tooltip" // TODO JGL: Dit is een dure tooltip!
|
||||
+ ", b.bes_bestelopdr_status"
|
||||
+ ", ma.mld_adres_naam afleveradres"
|
||||
+ ", bst.bes_bestelling_plaats"
|
||||
+ ", bst.bes_bestelling_leverdatum"
|
||||
+ ", " + S("prs_pers_string") + " requestor"
|
||||
+ ", (SELECT " + S("prs_pers_string")
|
||||
@@ -302,6 +303,7 @@ function opdr_list (pautfunction, params)
|
||||
rst.addColumn(new Column({caption: L("lcl_rfo_requestor"), content: "requestor"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_order_for"), content: fncolOrderVoor, combine: true}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_del_place"), content: "afleveradres"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_del_room"), content: "bes_bestelling_plaats", combine: true }));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_deli_date"), content: "bes_bestelling_leverdatum", datatype: "date"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bes_Bes_status"), content: fncolStatusText}));
|
||||
if (outputmode != 0)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
Context:
|
||||
Note: Op het TR-element stoppen wel allerlei informatie (die vroeger in selectedItems zat)
|
||||
tr.bes_item_info: van alles over het item
|
||||
amount: huidige aantal
|
||||
orgAmount: oorspronkelijke aantal
|
||||
retour:
|
||||
received:
|
||||
@@ -32,7 +33,7 @@ function AddAllItems(editable, show_received)
|
||||
|
||||
|
||||
function RetourItems(bes_key, urole) {
|
||||
var s = "../Bes/bes_retour.asp?bes_key=" + bes_key + "&urole="+ urole;
|
||||
var s = "../bes/bes_retour.asp?bes_key=" + bes_key + "&urole="+ urole;
|
||||
var retourReturn = FcltMgr.openModalDetail(s, L("lcl_bes_retour"), {callback: FcltMgr.reload});
|
||||
}
|
||||
|
||||
@@ -70,6 +71,35 @@ function maxArtikelReached()
|
||||
return (maxartikel > 0 && aantalArtikelen >= maxartikel)
|
||||
}
|
||||
|
||||
var jqFreeFields = ["lev_key_show", "srtdeel_nr", "omschrijving", "srtgroep", "price", "aantal_text"];
|
||||
function AddFreeArticleItem(urole)
|
||||
{
|
||||
if (!validateForm("u2", { checkOnly: jqFreeFields }))
|
||||
return;
|
||||
window.bes_item_info =
|
||||
{
|
||||
aantal: parseInt($('#aantal_text').val(),10),
|
||||
isFreeArticle: true,
|
||||
"srtdeel_key":-1,
|
||||
"srtdeel_nr":$('#srtdeel_nr').val(),
|
||||
"srtdeel_omschrijving":$('#omschrijving').val(),
|
||||
//"srtgroup_key":$("#srtgroep").val(),
|
||||
//"srtgroup_text":$("#srtgroep_show").val(),
|
||||
"lev_key":$("#lev_key").val(),
|
||||
"singlegroep":0,
|
||||
//"srtdeel_image":"https://cos.euroflorist.com/uwv/Products/ARR06_03.jpg",
|
||||
"veelvoud":1,
|
||||
"price":parseFloat(String($("#price").val()).replace(',', '.')) || 0.0,
|
||||
"eenheid":$("#unit").val(),
|
||||
"num_prop":0,
|
||||
"staffelgroep":-1,
|
||||
"bestelminimum":0
|
||||
//"opmerking":"Prijs inclusief bezorgkosten"
|
||||
}
|
||||
AddItem(bes_item_info, window.bes_item_info.aantal, urole, true);
|
||||
$("#lev_key_show").prop('disabled', true); // Maximaal <20><>n leverancier
|
||||
}
|
||||
|
||||
function AddSuggestItem(bes_item_info, aantal, urole)
|
||||
{
|
||||
if (!bes_item_info || bes_item_info.srtdeel_key < 0)
|
||||
@@ -79,7 +109,7 @@ function AddSuggestItem(bes_item_info, aantal, urole)
|
||||
}
|
||||
|
||||
// Als flexkenmerken met prs-sql in default dan moet de persoon minimaal ingevuld zijn.
|
||||
if (bes_item_info.num_prssql != 0 && !validateForm("u2", { checkOnly: ["person_show"] }))
|
||||
if (bes_item_info.num_prssql > 0 && !validateForm("u2", { checkOnly: ["person_show"] }))
|
||||
return false;
|
||||
|
||||
if (window.stock_info.stock == 0)
|
||||
@@ -93,16 +123,15 @@ function AddSuggestItem(bes_item_info, aantal, urole)
|
||||
|
||||
function AddItem(bes_item_info, aantal, urole, doCheckAmount)
|
||||
{
|
||||
var table = $("#sel_items")[0];
|
||||
|
||||
// openModalDetail is dan wel modal maar niet synchroon, daarom continueAdd callback
|
||||
var continueAdd = function(objFlex)
|
||||
{
|
||||
if (objFlex || bes_item_info.num_prop == 0)
|
||||
{
|
||||
var aantal_cell = CreateRow(bes_item_info, aantal, -1, true, objFlex, urole);
|
||||
if (doCheckAmount)
|
||||
checkAmount(aantal_cell); // eventuele minimum en zo
|
||||
if (bes_item_info.num_prop > 0 && !objFlex)
|
||||
return; // geen flex ingevuld
|
||||
|
||||
var aantal_cell = CreateRow(bes_item_info, aantal, -1, true, objFlex, urole);
|
||||
if (doCheckAmount)
|
||||
checkAmount(aantal_cell); // eventuele minimum en zo
|
||||
|
||||
StaffelKortingResult();
|
||||
|
||||
@@ -116,7 +145,16 @@ function AddItem(bes_item_info, aantal, urole, doCheckAmount)
|
||||
}
|
||||
|
||||
// Item veld en details van item wissen: onChangeArtikelgroep does the trick
|
||||
onChangeArtikelgroep();
|
||||
if (!bes_item_info.isFreeArticle)
|
||||
onChangeArtikelgroep();
|
||||
else
|
||||
{
|
||||
$('#aantal_text').val("");
|
||||
$('#srtdeel_nr').val("");
|
||||
$('#omschrijving').val("");
|
||||
$("#price").val("");
|
||||
$("#unit").val("");
|
||||
}
|
||||
|
||||
// Als het maximum aantal artikelen voor deze discipline bereikt is moet het artikel veld gedisabled worden.
|
||||
if (maxArtikelReached())
|
||||
@@ -126,10 +164,6 @@ function AddItem(bes_item_info, aantal, urole, doCheckAmount)
|
||||
}
|
||||
|
||||
FcltMgr.resized(window);
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var objFlex = false;
|
||||
@@ -202,7 +236,7 @@ function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
|
||||
var table = $("#sel_items>tbody")[0];
|
||||
|
||||
// insert data rows
|
||||
tr = table.insertRow(-1);
|
||||
var tr = table.insertRow(-1);
|
||||
tr.title = bes_item_info.srtgroup_text;
|
||||
if (!bes_item_info.item_key || String(bes_item_info.item_key).match(/^new/))
|
||||
{
|
||||
@@ -236,6 +270,15 @@ function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
|
||||
+ " <img id='div_staffelinfo" + id_key + "' src=../Pictures/staffel_info.gif OnClick=showStaffels('" + id_key + "') style='display:none;cursor: pointer;'>"
|
||||
);
|
||||
|
||||
if (bes_item_info.isFreeArticle)
|
||||
{
|
||||
cell.innerHTML += "<input type='hidden' name='lev_key_" + bes_item_info.item_key + "' value='" + bes_item_info.lev_key + "'>";
|
||||
cell.innerHTML += "<input type='hidden' name='srtdeel_nr_" + bes_item_info.item_key + "' value='" + bes_item_info.srtdeel_nr + "'>";
|
||||
cell.innerHTML += "<input type='hidden' name='srtdeel_omschrijving_" + bes_item_info.item_key + "' value='" + bes_item_info.srtdeel_omschrijving + "'>";
|
||||
cell.innerHTML += "<input type='hidden' name='price_" + bes_item_info.item_key + "' value='" + bes_item_info.price + "'>";
|
||||
cell.innerHTML += "<input type='hidden' name='eenheid_" + bes_item_info.item_key + "' value='" + bes_item_info.eenheid + "'>";
|
||||
}
|
||||
|
||||
var new_price = aantal * bes_item_info.price;
|
||||
|
||||
// Create srtdeel
|
||||
@@ -369,19 +412,15 @@ function cancel_item(een_cell)
|
||||
// Indien er geen bestelregels aanwezig zijn mag de artikelgroep worden gewijzigd.
|
||||
if ($("#singlegroep").val() == 1)
|
||||
{
|
||||
var teller = 0;
|
||||
// JGL: Wat is er mis met teller = $("#sel_items>tbody>tr").length ?
|
||||
$("#sel_items>tbody>tr").each(function()
|
||||
{
|
||||
teller++;
|
||||
});
|
||||
// Indien readOnly (initieel) is gezet blijft de input box ook readonly. sgSrtgroep is dan ook niet gedefinieerd. $("#srtgroep_show")[0].style.display = "block" doet dan toch niets.
|
||||
if (teller == 0 && !$("#srtgroep_show")[0].readOnly)
|
||||
if (getAantalArtikelen() == 0 && !$("#srtgroep_show")[0].readOnly)
|
||||
{
|
||||
$("#srtgroep_ro")[0].style.display = "none";
|
||||
$("#srtgroep_show")[0].style.display = "block";
|
||||
}
|
||||
}
|
||||
if (getAantalArtikelen() == 0)
|
||||
$("#lev_key_show").prop('disabled', false); // Je mag eventueel weer leverancier kiezen
|
||||
|
||||
StaffelKortingResult();
|
||||
}
|
||||
@@ -408,13 +447,13 @@ function checkInput()
|
||||
|
||||
// Form srtdeel_keys and amount_string
|
||||
// and form flexkey_string and flexval_string of items
|
||||
srtdeel_keys = [];
|
||||
amount_string = [];
|
||||
flexkey_string =[];
|
||||
flexval_string = [];
|
||||
flexdeel_string = [];
|
||||
flexitem_string = [];
|
||||
item_keys = [];
|
||||
var srtdeel_keys = [];
|
||||
var amount_string = [];
|
||||
var flexkey_string =[];
|
||||
var flexval_string = [];
|
||||
var flexdeel_string = [];
|
||||
var flexitem_string = [];
|
||||
var item_keys = [];
|
||||
var id_key = "";
|
||||
var p = 0;
|
||||
$("#sel_items>tbody>tr").each(
|
||||
@@ -462,7 +501,7 @@ function checkInput()
|
||||
function MakeOrder (newOrder)
|
||||
{
|
||||
// Standaard checks op verplichte velden, datum formaat, numeriek en float formaat, currency formaat.
|
||||
if (!validateForm("u2"))
|
||||
if (!validateForm("u2", { checkNot: jqFreeFields }))
|
||||
return false;
|
||||
|
||||
// Formulier specifieke checks
|
||||
@@ -486,6 +525,8 @@ function MakeOrder (newOrder)
|
||||
}
|
||||
}
|
||||
|
||||
// UWVA#13497 Ooit bedacht om klachten over leveranciers in DAMO te registreren
|
||||
// Nooit in productie genomen?
|
||||
function Communication()
|
||||
{
|
||||
bes_key = document.getElementById("RFO_key").value;
|
||||
@@ -506,7 +547,7 @@ function showStaffels(pid_key)
|
||||
function PrsStaffelListResult(prs_bedrijf_key)
|
||||
{
|
||||
var sFeatures="dialogHeight:200px;dialogWidth:400px;status=no;resizable=yes;center=yes;";
|
||||
var s = "../Bes/PrsStaffelInfo.asp?prs_bedrijf_key=" + prs_bedrijf_key;
|
||||
var s = "../bes/PrsStaffelInfo.asp?prs_bedrijf_key=" + prs_bedrijf_key;
|
||||
var retourReturn = window.showModalDialog("ModalForm.asp?title=" + L("lcl_bes_staffel_details"), s, sFeatures);
|
||||
}
|
||||
|
||||
@@ -544,14 +585,14 @@ function showStaffelKortingResult( json)
|
||||
var bes_kosten = json.bes_kosten||0;
|
||||
var bes_limiet = json.bes_limiet||0;
|
||||
var prs_bedrijf_key = json.prs_bedrijf_key;
|
||||
iakorting = json.iakorting||0;
|
||||
totaalbedrag = json.totaalbedrag||0;
|
||||
var iakorting = json.iakorting||0;
|
||||
var totaalbedrag = json.totaalbedrag||0;
|
||||
|
||||
sgnaamstring = json.sgnaamstring;
|
||||
sgkeystring = json.sgkeystring;
|
||||
sgkortingstring = json.sgkortingstring;
|
||||
sgaantalstring = json.sgaantalstring;
|
||||
sgeenheidstring = json.sgeenheidstring;
|
||||
var sgnaamstring = json.sgnaamstring || [];
|
||||
var sgkeystring = json.sgkeystring || [];
|
||||
var sgkortingstring = json.sgkortingstring || [];
|
||||
var sgaantalstring = json.sgaantalstring || [];
|
||||
var sgeenheidstring = json.sgeenheidstring || [];
|
||||
|
||||
// Als sgnaamstring dan zijn er groepsstaffels
|
||||
if (sgnaamstring && (sgkeystring.length != sgnaamstring.length || sgkeystring.length != sgkortingstring.length || sgkeystring.length != sgaantalstring.length))
|
||||
@@ -605,7 +646,6 @@ function showStaffelKortingResult( json)
|
||||
}
|
||||
|
||||
$("#total_list").html(tabeltext);
|
||||
FcltMgr.resized();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -618,6 +658,7 @@ function showStaffelKortingResult( json)
|
||||
$("#total_list").html(tabeltext);
|
||||
}
|
||||
}
|
||||
FcltMgr.resized();
|
||||
}
|
||||
|
||||
function StaffelItem(item_key, aantal)
|
||||
@@ -632,17 +673,23 @@ function onBlurAmount(aantal_cell)
|
||||
StaffelKortingResult();
|
||||
}
|
||||
|
||||
// Toont de totaal regel (al dan niet met staffelkorting)
|
||||
function StaffelKortingResult()
|
||||
{
|
||||
var staffelItemArray = new Array();
|
||||
var table = $("#sel_items")[0];
|
||||
var json = null; // Bij isFreeArticle 'resultaat' van bes_gettotals.asp
|
||||
var anyFree = false; // Dan moeten we het helemaal clientside oplossen
|
||||
$("#sel_items>tbody>tr").each(
|
||||
function () {
|
||||
json = json || { totaalbedrag: 0 }; // voor FreeArtikel
|
||||
json.totaalbedrag += this.amount * this.bes_item_info.price;
|
||||
anyFree = anyFree || this.bes_item_info.isFreeArticle // die gaan niet via bes_gettotals.asp dus zelf totaal bepalen
|
||||
|
||||
var srtdeel_key = this.bes_item_info.srtdeel_key;
|
||||
if (staffelItemArray[srtdeel_key]) // aantallen van een item bij elkaar optellen
|
||||
staffelItemArray[srtdeel_key].aantal += tr.amount;
|
||||
else
|
||||
staffelItemArray[srtdeel_key] = new StaffelItem(srtdeel_key, this.amount, 10)
|
||||
if (staffelItemArray[srtdeel_key]) // aantallen van een item bij elkaar optellen
|
||||
staffelItemArray[srtdeel_key].aantal += this.amount;
|
||||
else
|
||||
staffelItemArray[srtdeel_key] = new StaffelItem(srtdeel_key, this.amount, 10)
|
||||
}
|
||||
);
|
||||
|
||||
@@ -651,7 +698,7 @@ function StaffelKortingResult()
|
||||
var first = true;
|
||||
for (var j in staffelItemArray)
|
||||
{
|
||||
if (staffelItemArray[j] != null && staffelItemArray[j].item_key)
|
||||
if (staffelItemArray[j] && staffelItemArray[j].item_key > 0)
|
||||
{
|
||||
itemstring += (!first? "," : "" ) + staffelItemArray[j].item_key;
|
||||
itemaantalstring += (!first? "," : "" ) + staffelItemArray[j].aantal;
|
||||
@@ -659,14 +706,14 @@ function StaffelKortingResult()
|
||||
}
|
||||
}
|
||||
|
||||
if (itemstring != "")
|
||||
if (!anyFree && itemstring != "")
|
||||
{
|
||||
// Haal (asynchroon) korting informatie op van de artikelen
|
||||
var s = "bes_gettotals.asp?itemstring=" + itemstring + "&itemaantalstring=" + itemaantalstring;
|
||||
$.getJSON(s, showStaffelKortingResult );
|
||||
}
|
||||
else
|
||||
showStaffelKortingResult()
|
||||
showStaffelKortingResult( json )
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ if (request != "stock")
|
||||
}
|
||||
|
||||
|
||||
var objReq = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var objReq = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
objReq.load(Request);
|
||||
|
||||
if (objReq.parseError.errorCode != 0)
|
||||
@@ -47,7 +47,7 @@ if (!objPart)
|
||||
|
||||
// Partnummer is artikelnr
|
||||
var l_voorraad = bepaal_voorraad_van_artikel(objPart.text);
|
||||
var xmlDoc = new ActiveXObject("MSXML2.DOMDocument.4.0");
|
||||
var xmlDoc = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
||||
|
||||
xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""))
|
||||
|
||||
|
||||
@@ -179,10 +179,7 @@ bez =
|
||||
// Let op: dit moet wellicht niet altijd (aangeroepen na save)
|
||||
function (bez_key, ptxt)
|
||||
{
|
||||
if (ptxt)
|
||||
shared.trackaction("BEZUPD", bez_key, ptxt);
|
||||
else
|
||||
shared.trackaction("BEZUPD", bez_key);
|
||||
},
|
||||
|
||||
func_enabled_parkeerplaats: // Wat mag ik op parkeerplaatsen?
|
||||
@@ -276,6 +273,21 @@ bez =
|
||||
}
|
||||
|
||||
return bresult;
|
||||
}
|
||||
},
|
||||
default_actie: function ()
|
||||
{
|
||||
var actie_key = -1;
|
||||
// Is er een default actie.
|
||||
var sql = "SELECT bez_actie_key"
|
||||
+ " FROM bez_actie"
|
||||
+ " WHERE bez_actie_verwijder IS NULL"
|
||||
+ " AND bez_actie_default = 1";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
actie_key = oRs("bez_actie_key").Value;
|
||||
oRs.Close()
|
||||
return actie_key;
|
||||
}
|
||||
|
||||
}
|
||||
%>
|
||||
@@ -5,10 +5,12 @@
|
||||
File: bez.js
|
||||
*/
|
||||
|
||||
function printBadge(evt, pbez_key)
|
||||
{ // Printen van de bezoekers badge
|
||||
FcltMgr.stopPropagation(evt); // This prevents the event from bubbling up to the onclick event handler for the line.
|
||||
|
||||
window.open("bez_xml.asp?badge=1&bez_key=" + pbez_key, "", "resizable=0,scrollbars=0,menubar=0,width=500,height=400");
|
||||
function printBadge(pbez_key)
|
||||
{ // Printen van de bezoekers badge
|
||||
window.open("bez_xml.asp?badge=1&bez_key=" + pbez_key, "", "resizable=0,scrollbars=0,menubar=0,width=500,height=400");
|
||||
}
|
||||
|
||||
function bezPoolCallback(data, text)
|
||||
{
|
||||
FcltMgr.openDetail("appl/bez/bez_afspraak.asp?urole=bo&res_key=" + data.res_key, L("lcl_add"));
|
||||
}
|
||||
|
||||
@@ -16,12 +16,14 @@
|
||||
<!--#include file="../Shared/common.inc" -->
|
||||
<!--#include file="../Shared/iface.inc" -->
|
||||
<!--#include file="bez.inc" -->
|
||||
<!-- #include file="bez_edit_bezoekers_save.inc" -->
|
||||
<%
|
||||
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"],
|
||||
js: ["jquery-ui.js", "../BEZ/bez.js"]
|
||||
js: ["jquery-ui.js", "../bez/bez.js"]
|
||||
})
|
||||
|
||||
var bez_key = getQParamInt("bez_key", -1);
|
||||
|
||||
// Als een een bezoeker is meegegeven zoeken we de bijbehorende afspraak er bij
|
||||
// Dit scherm gaat altijd over een afspraak, niet een individuele bezoeker.
|
||||
// Deze key hoeft dus ook niet in de transitParams mee
|
||||
@@ -35,6 +37,34 @@ if (bez_key > 0) {
|
||||
var afspr_key = getQParamInt("afspr_key", -1);
|
||||
}
|
||||
|
||||
var res_ispool = false;
|
||||
if (afspr_key < 0) // Misschien pool reservering?
|
||||
{
|
||||
var res_key = getQParamInt("res_key", -1);
|
||||
if (res_key > 0)
|
||||
{
|
||||
sql = "SELECT MIN (bez_afspraak_key) bez_afspraak_key"
|
||||
+ " , MIN (rr.res_rsv_ruimte_key) res_rsv_ruimte_key"
|
||||
+ " FROM bez_afspraak ba"
|
||||
+ " , res_rsv_ruimte rr"
|
||||
+ " , res_reservering rrr"
|
||||
+ " WHERE rr.res_rsv_ruimte_key = ba.res_rsv_ruimte_key(+)"
|
||||
+ " AND rr.res_reservering_key = rrr.res_reservering_key"
|
||||
+ " AND rrr.res_reservering_ispool = 1"
|
||||
+ " AND rr.res_reservering_key = " + res_key;
|
||||
var oRs = Oracle.Execute(sql)
|
||||
if (!oRs.Eof)
|
||||
{
|
||||
res_ispool = true; // nieuwe bezoekers direct binnen melden
|
||||
afspr_key = oRs("bez_afspraak_key").Value;
|
||||
if (!afspr_key )
|
||||
afspr_key = createAfspraak(oRs("res_rsv_ruimte_key").Value);
|
||||
}
|
||||
oRs.Close()
|
||||
__Log("afspr_key: " + afspr_key);
|
||||
}
|
||||
}
|
||||
|
||||
// AUTORISATIEPARAMETERS
|
||||
if (afspr_key > 0)
|
||||
var urole = getQParamSafe("urole", "fe");
|
||||
@@ -89,11 +119,11 @@ else
|
||||
{
|
||||
<% if (afspr_key == -1)
|
||||
{ %>
|
||||
if ((<%=S("vis_badgeprint_enable")%> == 1 || <%=S("vis_badgeprint_enable")%> == 3) && params.verynew && backo)
|
||||
{ // Print voor elke bezoeker een badge
|
||||
if (params.autoprint && backo)
|
||||
{
|
||||
for (var i = 0; i < params.bezkeyArr.length; i++)
|
||||
{
|
||||
printBadge(null, params.bezkeyArr[i]);
|
||||
printBadge(params.bezkeyArr[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,10 +152,33 @@ else
|
||||
$("#bezFrame")[0].src = "bez_show_afspraak.asp?afspr_key=<%=afspr_key%><%=transitParam%>";
|
||||
<% } %>
|
||||
}
|
||||
function bezClose(params)
|
||||
{
|
||||
$("#bezBezoekersFrame")[0].src = "../bez/bez_show_bezoekers.asp?rsv_ruimte_key=<%=rsv_ruimte_key%><%=transitParam%>";
|
||||
if (<%= (urole == "bo" && res_ispool)?1:0 %> && params.beznewkeyArr && params.beznewkeyArr.length) // Auto-checkin
|
||||
{
|
||||
var data = { bez_key: params.beznewkeyArr
|
||||
};
|
||||
protectRequest.dataToken(data);
|
||||
$.post("bez_check_in.asp",
|
||||
data,
|
||||
CheckInCallback,
|
||||
"json");
|
||||
}
|
||||
}
|
||||
function CheckInCallback(json, textStatus)
|
||||
{
|
||||
for (i = 0 ; i < json.bez_key_arr.length; i++)
|
||||
{
|
||||
if (json.autoprint[i])
|
||||
printBadge(json.bez_key_arr[i]);
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<body>
|
||||
<% if (afspr_key == -1)
|
||||
var page = "bez_edit_afspraak.asp"; // Maak een nieuw
|
||||
else
|
||||
@@ -141,10 +194,13 @@ else
|
||||
if (rsv_ruimte_key > 0)
|
||||
{
|
||||
// PF: ik geef afspr_key ook mee (was ook zo) maar weet niet of dat echt nodig is in deze tak
|
||||
var url = "../bez/bez_show_bezoekers.asp?";
|
||||
if (res_key > 0)
|
||||
var url = "../bez/bez_edit_bezoekers.asp?autoadd=1&";
|
||||
IFRAMER("bezBezoekersFrame",
|
||||
"../bez/bez_show_bezoekers.asp?afspr_key=" + afspr_key + "&rsv_ruimte_key="+rsv_ruimte_key + transitParam,
|
||||
url + "afspr_key=" + afspr_key + "&rsv_ruimte_key="+rsv_ruimte_key + transitParam,
|
||||
{ title: (S("bez_sel_internpersoon") == 1? L("lcl_res_frame_visitors") : L("lcl_res_frame_visitors_external")),
|
||||
refreshOnClose: true
|
||||
FcltClose: "bezClose"
|
||||
});
|
||||
} %>
|
||||
</body>
|
||||
|
||||
115
APPL/BEZ/bez_afspraak_bo_new.asp
Normal file
115
APPL/BEZ/bez_afspraak_bo_new.asp
Normal file
@@ -0,0 +1,115 @@
|
||||
<%@language = "javascript" %>
|
||||
<%
|
||||
/* $Revision$
|
||||
$Id$
|
||||
|
||||
File: bez_afspraak_bo_new.asp
|
||||
Description: Nieuwe bezoeker bij de bo (bezoekersbalie)
|
||||
Biedt eventuele pool-reserveringen aan. Als die er niet zijn
|
||||
ga direct door naar een nieuwe afspaak
|
||||
Parameters: urole
|
||||
Context: Modal popupje
|
||||
Note: We tonen hoogstens een lijstje van <20><>n locatie
|
||||
|
||||
*/ %>
|
||||
<!--#include file="../Shared/common.inc" -->
|
||||
<!--#include file="../Shared/iface.inc" -->
|
||||
<!--#include file="../Shared/resultset_table_v2.inc" -->
|
||||
<!--#include file="bez.inc" -->
|
||||
<%
|
||||
FCLTHeader.Requires({ plugins: [],
|
||||
js: ["jquery-ui.js", "../bez/bez.js"]
|
||||
})
|
||||
|
||||
var loc_key = getQParamInt("loc_key", -1);
|
||||
if (loc_key < 0)
|
||||
loc_key = user.alg_locatie_key()
|
||||
autfunction = "WEB_BEZBOF"; // Daar is dit scherm voor bedoeld
|
||||
var authparams = user.checkAutorisation(autfunction);
|
||||
%>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<%
|
||||
FCLTHeader.Generate();
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
function bez_own_bez()
|
||||
{
|
||||
FcltMgr.closeDetail(window, { res_key: -1 } );
|
||||
}
|
||||
|
||||
function bez_gotores(row)
|
||||
{
|
||||
var res_key = row.getAttribute("ROWKEY");
|
||||
FcltMgr.closeDetail(window, { res_key: res_key } );
|
||||
}
|
||||
|
||||
function bez_cancel(mode)
|
||||
{
|
||||
FcltMgr.closeDetail(window, { cancel: true } );
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="modal" id="mod_respool">
|
||||
<%
|
||||
BLOCK_START("resSelectpool", L("lcl_select_respool"));
|
||||
|
||||
// Alle pool-reserveringen op de huidige locatie
|
||||
var sql = "SELECT rrr.res_reservering_key"
|
||||
+ " , MIN(rrr.res_rsv_ruimte_van) res_rsv_ruimte_van"
|
||||
+ " , MAX(rrr.res_rsv_ruimte_tot) res_rsv_ruimte_tot"
|
||||
+ " , MIN(res_rsv_ruimte_omschrijving) res_rsv_ruimte_omschrijving"
|
||||
+ " FROM res_ruimte rr, "
|
||||
+ " res_ruimte_opstelling rro,"
|
||||
+ " res_v_aanwezigrsv_ruimte rrr ,"
|
||||
+ " res_reservering r ,"
|
||||
+ " res_v_aanwezigalg_ruimte RES_RA,"
|
||||
+ " alg_gebouw ALG_G,"
|
||||
+ " alg_verdieping ALG_V,"
|
||||
+ " alg_v_aanwezigruimte ALG_R"
|
||||
+ " WHERE rrr.res_reservering_key = r.res_reservering_key"
|
||||
+ " AND res_reservering_ispool = 1"
|
||||
+ " AND rr.res_ruimte_key = rro.res_ruimte_key"
|
||||
+ " AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key"
|
||||
+ " AND rr.res_ruimte_key = RES_RA.res_ruimte_key"
|
||||
+ " AND ALG_R.alg_ruimte_key = RES_RA.alg_ruimte_key"
|
||||
+ " AND ALG_R.alg_verdieping_key = ALG_V.alg_verdieping_key"
|
||||
+ " AND ALG_V.alg_gebouw_key = ALG_G.alg_gebouw_key"
|
||||
+ " AND ALG_G.alg_locatie_key = " + loc_key
|
||||
+ " AND res_rsv_ruimte_van BETWEEN TRUNC(SYSDATE) AND SYSDATE + " + S("res_pool_early")/60/24
|
||||
+ " AND res_rsv_ruimte_tot BETWEEN SYSDATE - " + S("res_pool_late")/60/24 + " AND TRUNC(SYSDATE+1)"
|
||||
+ " GROUP BY rrr.res_reservering_key"
|
||||
+ " ORDER BY rrr.res_reservering_key";
|
||||
|
||||
var rst = new ResultsetTable({ sql: sql,
|
||||
keyColumn: "res_reservering_key",
|
||||
ID: "lokettable",
|
||||
noSetSummary: true,
|
||||
noPrint:true,
|
||||
emptySetString: "" // Doen we zelf verderop
|
||||
});
|
||||
|
||||
rst.addColumn(new Column({hasActions: true, caption:L("lcl_resnr"), content:"res_reservering_key" }));
|
||||
rst.addColumn(new Column({hasActions: true, caption:L("lcl_descr"), content:"res_rsv_ruimte_omschrijving" }));
|
||||
rst.addColumn(new Column({hasActions: true, caption:L("lcl_res_starttime"), content:"res_rsv_ruimte_van", datatype: "time" }));
|
||||
rst.addColumn(new Column({hasActions: true, caption:L("lcl_res_endtime"), content:"res_rsv_ruimte_tot", datatype: "time" }));
|
||||
|
||||
rst.addAction({ action: "bez_gotores", isDefault: true } );
|
||||
|
||||
var cnt = rst.processResultset();
|
||||
if (cnt <= 0)
|
||||
{
|
||||
Response.Write("<script>bez_own_bez()</script>");
|
||||
}
|
||||
|
||||
BLOCK_END();
|
||||
|
||||
var buttons = [ {title: L("lcl_res_ownafspr"), icon: "undo.png", action: "bez_own_bez()" },
|
||||
{title: L("lcl_cancel"), icon: "undo.png", action: "bez_cancel()" } ];
|
||||
CreateButtons(buttons);
|
||||
|
||||
%>
|
||||
</body>
|
||||
</html>
|
||||
@@ -14,7 +14,7 @@
|
||||
*/ %>
|
||||
|
||||
<%
|
||||
DOCTYPE_Disable = 1;
|
||||
var JSON_Result = true;
|
||||
%>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: bez_check_in.asp
|
||||
File: bez_check_in.asp
|
||||
Note: De multi-variant wordt alleen gebruikt als S("vis_allow_check_all") == 1
|
||||
*/ %>
|
||||
|
||||
<%
|
||||
DOCTYPE_Disable = 1;
|
||||
var JSON_Result = true;
|
||||
%>
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
@@ -16,18 +17,19 @@ DOCTYPE_Disable = 1;
|
||||
|
||||
<%
|
||||
protectRequest.validateToken();
|
||||
/***** Get webform parameters *****/
|
||||
|
||||
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 = new Array();
|
||||
var checkInDone = [];
|
||||
var badges = [];
|
||||
var autoprint = [];
|
||||
var tobeapproved = 0;
|
||||
/***** End get webform parameters *****/
|
||||
|
||||
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");
|
||||
oRs = Oracle.Execute(sql);
|
||||
var oRs = Oracle.Execute(sql);
|
||||
while (!oRs.eof)
|
||||
{
|
||||
var afspr_key = oRs("bez_afspraak_key").value;
|
||||
@@ -45,9 +47,14 @@ for (i = 0 ; i < bez_key_arr.length; i++)
|
||||
var bezoekers_done = " SYSDATE";
|
||||
|
||||
// Voorkom wijzigingen aan toekomstige afspraken (UWVA#15416)
|
||||
sql = "SELECT bez_afspraak_datum, b.bez_afspraak_key, b.bez_afspraak_naam"
|
||||
+ " FROM bez_afspraak a, bez_bezoekers b"
|
||||
sql = "SELECT bez_afspraak_datum"
|
||||
+ " , b.bez_afspraak_key"
|
||||
+ " , b.bez_afspraak_naam"
|
||||
+ " , bez_bezoekers_pasnr"
|
||||
+ " , bez_actie_flags "
|
||||
+ " 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];
|
||||
@@ -57,9 +64,36 @@ for (i = 0 ; i < bez_key_arr.length; i++)
|
||||
{ // afspraak is vandaag of eerder, dan mag het
|
||||
var afspr_key = oRs("bez_afspraak_key").value;
|
||||
var bezoeker = oRs("bez_afspraak_naam").value;
|
||||
var flags = oRs("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("bez_bezoekers_pasnr").Value == null)
|
||||
{
|
||||
var cntname = customerId + "_badgenr_" + toDateString(new Date, true);
|
||||
Application.Lock();
|
||||
if (typeof Application(cntname) == "undefined")
|
||||
var cnt = S("vis_autobadgestart");
|
||||
else
|
||||
cnt = Application(cntname) + 1;
|
||||
Application(cntname) = cnt;
|
||||
Application.UnLock();
|
||||
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);
|
||||
// Moeten we undo ook afzonderlijk tracken?
|
||||
@@ -86,6 +120,11 @@ for (i = 0 ; i < bez_key_arr.length; i++)
|
||||
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, message: message};
|
||||
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));
|
||||
%>
|
||||
|
||||
@@ -58,7 +58,6 @@ if (afspr_key > 0)
|
||||
|
||||
var timeBeginInitEmpty = false;
|
||||
var timeEindInitEmpty = false;
|
||||
var actie_key = -1;
|
||||
if (afspr_key < 0)
|
||||
{ // defaults zetten
|
||||
contact_key = user_key;
|
||||
@@ -108,13 +107,7 @@ if (afspr_key < 0)
|
||||
}
|
||||
|
||||
// Is er een default actie.
|
||||
var sql = "SELECT bez_actie_key"
|
||||
+ " FROM bez_actie"
|
||||
+ " WHERE bez_actie_verwijder IS NULL"
|
||||
+ " AND bez_actie_default = 1";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
actie_key = oRs("bez_actie_key").Value;
|
||||
var actie_key = bez.default_actie()
|
||||
|
||||
locatie_key = user.alg_locatie_key();
|
||||
gebouw_key = user.alg_gebouw_key();
|
||||
@@ -224,6 +217,7 @@ else
|
||||
var vis_afspraak_host_uses_keys = <%=S("vis_afspraak_host_uses_keys")%>;
|
||||
var vis_afspraak_onrgoed_uses_keys = <%=S("vis_afspraak_onrgoed_uses_keys")%>;
|
||||
var bez_multiday = <%=S("bez_multiday")%>;
|
||||
var bez_max_flex_on_line = <%=S("bez_max_flex_on_line")%>;
|
||||
</script>
|
||||
|
||||
<form name=u2 action="bez_edit_afspraak_save.asp?urole=<%=urole%>&afspr_key=<%=afspr_key%>" method=post onsubmit="return bez_submit();">
|
||||
@@ -308,7 +302,7 @@ else
|
||||
verdiepingkey: verdieping_key,
|
||||
ruimtekey: ruimte_key,
|
||||
onLocChange: "onChangeLocatie()",
|
||||
escalateOnChUp: true, // Als hoger plaatsveld veranderd (wordt ingevuld) als gevolg van lager plaatsveld dan ook onChange acties uitvoeren
|
||||
escalateOnChUp: true, // Als hoger plaatsveld verandert (wordt ingevuld) als gevolg van lager plaatsveld dan ook onChange acties uitvoeren
|
||||
startlevel: 2, /*locatie*/
|
||||
eindlevel: 5, /*ruimte*/
|
||||
requiredlevel: requiredlevel,
|
||||
@@ -333,6 +327,7 @@ else
|
||||
+ " , " + lcl.xsqla('bez_actie_omschrijving', 'bez_actie_key')
|
||||
+ " FROM bez_actie"
|
||||
+ " WHERE bez_actie_verwijder IS NULL"
|
||||
+ " AND BITAND(bez_actie_flags, 1) = 0" // Niet de oproepers, die alleen via reservering
|
||||
+ " ORDER BY bez_actie_key";
|
||||
FCLTselector("actie",
|
||||
sql,
|
||||
|
||||
@@ -238,14 +238,43 @@ function import_visit()
|
||||
function ContactpersoonBedrijfSelected(cont_key, a, params)
|
||||
{
|
||||
id_nr = params.suggestid.substr(3);
|
||||
var s = "load_kenmerk.asp?urole=" + urole + "&beznum=" + id_nr + "&cont_key=" + cont_key + "&requiredbyfield=bez" + id_nr;
|
||||
$("#bezFlexList" + id_nr).load(s, function(txt)
|
||||
var s = "load_kenmerk.asp?urole=" + urole
|
||||
+ "&beznum=" + id_nr
|
||||
+ "&cont_key=" + cont_key
|
||||
+ "&requiredbyfield=bez" + id_nr
|
||||
+ "¬r=1&flexend=" + parseInt(bez_max_flex_on_line, 10);
|
||||
$("#bezFlexListA" + id_nr).load(s, function(txt)
|
||||
{
|
||||
FcltMgr.resized();
|
||||
});
|
||||
var s = "load_kenmerk.asp?urole=" + urole
|
||||
+ "&beznum=" + id_nr + "&cont_key=" + cont_key
|
||||
+ "&requiredbyfield=bez" + id_nr
|
||||
+ "&flexstart=" + (parseInt(bez_max_flex_on_line, 10) + 1);
|
||||
$("#bezFlexListB" + id_nr).load(s, function(txt)
|
||||
{
|
||||
FcltMgr.resized();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function bezFlexListACallbackJs(rowNr)
|
||||
{ // Vervangen van de flexkenmerken op de bezoekersregel.
|
||||
// Verwijderd de laatse td's (kenmerken) op de regel.
|
||||
for (var i = 0; i < bez_max_flex_on_line; i++)
|
||||
{ // Aantal flexkenmerk kolommen = Totaal aantal kolommen - Aantal kolommen zonder de flex kenmerken.
|
||||
nr_flex = $("#trbez" + rowNr).find("td").length - aantal_std_td;
|
||||
// Verwijder de flexkenmerk kolommen
|
||||
for (var j = 0; j < nr_flex; j++)
|
||||
$("#trbez" + rowNr).find("td:last").remove();
|
||||
}
|
||||
|
||||
// Nu de nieuwe flexkenmerken toevoegen.
|
||||
$("#trbez" + rowNr).append($("#bezFlexListA" + rowNr).html());
|
||||
$("#bezFlexListA" + rowNr).html(""); // <div> weer leegmaken anders zijn er dubbele velden.
|
||||
FcltMgr.resized();
|
||||
}
|
||||
|
||||
function BezoekerSelected(data, orgData)
|
||||
{
|
||||
var rowNr = orgData.rownr;
|
||||
@@ -261,8 +290,21 @@ function BezoekerSelected(data, orgData)
|
||||
var s = "load_kenmerk.asp?urole=" + urole + "&beznum=" + rowNr
|
||||
+ (data.contkey? "&cont_key=" + data.contkey : "")
|
||||
+ (data.prskey? "&prs_key=" + data.prskey : "")
|
||||
+ "&requiredbyfield=bez" + rowNr;
|
||||
$("#bezFlexList" + rowNr).load(s, function(txt)
|
||||
+ "&requiredbyfield=bez" + rowNr
|
||||
+ "¬r=1&flexend=" + parseInt(bez_max_flex_on_line, 10);
|
||||
// Laden van de kenmerken op de bezoekersregel
|
||||
// De volgende flexkenmerken werken niet goed op de bezoekersregel:
|
||||
// 1) Inklapbare labels
|
||||
// 2) Parent/child kenmerken
|
||||
// 3) Texboxen
|
||||
// Dit komt omdat er dan javascript code (script) tussen de td kolommen worden gezet. En dat mag (eigenlijk) niet.
|
||||
$("#bezFlexListA" + rowNr).load(s, function(a){ return function() {bezFlexListACallbackJs(a);} }(rowNr));
|
||||
var s = "load_kenmerk.asp?urole=" + urole + "&beznum=" + rowNr
|
||||
+ (data.contkey? "&cont_key=" + data.contkey : "")
|
||||
+ (data.prskey? "&prs_key=" + data.prskey : "")
|
||||
+ "&requiredbyfield=bez" + rowNr
|
||||
+ "&flexstart=" + (parseInt(bez_max_flex_on_line, 10) + 1);
|
||||
$("#bezFlexListB" + rowNr).load(s, function(txt)
|
||||
{
|
||||
FcltMgr.resized();
|
||||
});
|
||||
|
||||
@@ -114,7 +114,10 @@ else
|
||||
fields.push({ dbs: "bez_afspraak_host_key", typ: "key", frm: "personH", track: L("lcl_vis_visit"), foreign: "prs_perslid" });
|
||||
|
||||
if (S("vis_afspraak_onrgoed_uses_keys") == 0)
|
||||
{
|
||||
fields.push({ dbs: "bez_afspraak_ruimte", typ: "varchar", frm: "room", savewhen: "locatiekey", track: true /* afzonderlijke tracking, wel oldjsval */ });
|
||||
fields.push({ dbs: "res_rsv_ruimte_key", typ: "key", val: rsv_ruimte_key});
|
||||
}
|
||||
else
|
||||
{
|
||||
var loc = getFParamInt("locatiekey", -1);
|
||||
@@ -287,8 +290,11 @@ if (!custfunc.bez_postsave(result.bezkeyArr, pResult))
|
||||
abort_with_warning(pResult.errmsg);
|
||||
}
|
||||
|
||||
// autoprint: We staan toch geen bez_actie 'oproep' toe bij losse afspraken. Daarom hoeven we
|
||||
// bez_actie_flags niet te controleren en moet bitje S("vis_badgeprint_enable")&4 altijd nul zijn
|
||||
var closeParams = { afspr_key: afspr_key,
|
||||
bezkeyArr: result.bezkeyArr,
|
||||
autoprint: verynew && (S("vis_badgeprint_enable")&1) == 1 && (S("vis_badgeprint_enable")&4) == 0,
|
||||
verynew: verynew == 1,
|
||||
warning: alert_txt,
|
||||
success: true // anders hadden we wel abort_with_warning gedaan.
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: bez_edit_bezoekers.asp
|
||||
Description: Laat zelfstandig een bezoekersdeel wijzigen
|
||||
Parameters: afspraak_key (bestaande bez_afspraak) of
|
||||
rsv_ruimte_key (bestaande res_rsv_ruimte)
|
||||
Context: Alleen vanuit res-bezoekers (PF: echt?)
|
||||
File: bez_edit_bezoekers.asp
|
||||
Description: Laat zelfstandig een bezoekersdeel wijzigen
|
||||
Parameters: afspraak_key (bestaande bez_afspraak) of
|
||||
rsv_ruimte_key (bestaande res_rsv_ruimte)
|
||||
Context: Alleen vanuit res-bezoekers want daar is het een iframe
|
||||
Vanuit 'normale' afspraken is het included
|
||||
Note:
|
||||
*/
|
||||
|
||||
@@ -25,6 +26,7 @@ var authparams = user.checkAutorisation({ fe: "WEB_BEZUSE",
|
||||
|
||||
var rsv_ruimte_key = -1;
|
||||
var afspraak_key = getQParamInt("afspraak_key", -1);
|
||||
var autoadd = getQParamInt("autoadd", 0); // zoveel bezoekers automatisch toevoegen
|
||||
var nrBez
|
||||
if (afspraak_key == -1)
|
||||
{
|
||||
@@ -100,12 +102,12 @@ else
|
||||
<% FCLTHeader.Generate() %>
|
||||
<script>
|
||||
var urole = "<%=urole%>";
|
||||
var titel = "<%=titel%>";
|
||||
var titel = "<%=safe.jsstring(titel)%>";
|
||||
function bez_submit()
|
||||
{
|
||||
if (!validateForm("u2"))
|
||||
return false;
|
||||
document.forms.u2.submit();
|
||||
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackClose, "json");
|
||||
return true;
|
||||
}
|
||||
function bez_cancel()
|
||||
@@ -123,7 +125,7 @@ else
|
||||
<form name="u2"
|
||||
action="bez_edit_bezoekers_save.asp?urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key%>"
|
||||
method="post">
|
||||
<% bez_edit_bezoekers(afspraak_key, bez_afspraak_datum, bez_afspraak_eind, locatie_key, { nrBez: nrBez }); %>
|
||||
<% bez_edit_bezoekers(afspraak_key, bez_afspraak_datum, bez_afspraak_eind, locatie_key, { nrBez: nrBez, autoadd: autoadd }); %>
|
||||
<input type="hidden" name="locatiekey" id="locatiekey" value="<%=locatie_key%>"></td>
|
||||
<input type="hidden" name="date_from" id="date_from" value="<%=bez_afspraak_datum.valueOf()%>"></td>
|
||||
<input type="hidden" name="date_to" id="date_to" value="<%=bez_afspraak_eind.valueOf()%>"></td>
|
||||
|
||||
@@ -41,7 +41,7 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
%>
|
||||
|
||||
<div class="bezBezoek">
|
||||
<table id="vis_tab">
|
||||
<table id="vis_tab" style="white-space: nowrap"> <!--kenmerken achter bezoeker op 1 regel -->
|
||||
<tr>
|
||||
<th><!--delete--></th>
|
||||
<% if (!params.contactonly && (S("bez_sel_contactpersoon") == 1 || S("bez_sel_internpersoon") == 1))
|
||||
@@ -65,89 +65,34 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
<span id="bezPrkFree"></span>
|
||||
<input type="hidden" name="prktype" id="prktype" value="<%=aantal_gebter == 0? "N" : (aantal_gebter == 1? "C" : "S")%>">
|
||||
</th>
|
||||
<% if (backo && S("vis_bo_uses_badgenrs")==1)
|
||||
<% if (S("vis_bo_uses_badgenrs") == 1)
|
||||
{ %>
|
||||
<th><%=L("lcl_vis_badgenr")%></th>
|
||||
<th><%=backo? L("lcl_vis_badgenr") : ""%></th>
|
||||
<% } %>
|
||||
<% if (S("bez_max_flex_on_line") > 0)
|
||||
{
|
||||
var sql = getSqlBezFlex(-1);
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var teller = 0;
|
||||
while (!oRs.eof && teller < S("bez_max_flex_on_line"))
|
||||
{
|
||||
if (oRs("kenmerk_volgnr").Value >= 0 &&
|
||||
oRs("kenmerk_toonbaar").Value != 1 &&
|
||||
(oRs("kenmerk_kenmerktype").Value != "Q" || oRs("kenmerk_kenmerktype").Value != "L" || oRs("kenmerk_kenmerktype").Value != "l"))
|
||||
{ %>
|
||||
<th><%=safe.html(oRs("kenmerk_omschrijving").Value)%></th>
|
||||
<% teller++;
|
||||
}
|
||||
oRs.MoveNext();
|
||||
}
|
||||
|
||||
} %>
|
||||
</tr>
|
||||
|
||||
<% if (afspraak_key == -1)
|
||||
{
|
||||
for (next_vis = 1; next_vis <= params.nrBez; next_vis++)
|
||||
{ %>
|
||||
<tr id="trbez<%=next_vis%>">
|
||||
<td><img src="../Pictures/delete.png" class="ilbutton" title="<%=L("lcl_delete")%>" OnClick=deleteVisit(<%=next_vis%>)></td>
|
||||
<% if (!params.contactonly && (S("bez_sel_contactpersoon") == 1 || S("bez_sel_internpersoon") == 1))
|
||||
{ %>
|
||||
<td>
|
||||
<img src="../Pictures/bezcontact.png" class="ilbutton" title="<%=titel%>" onclick="selectPerson(<%=next_vis%>)">
|
||||
</td>
|
||||
<% } %>
|
||||
<% /* ContactpersoonBedrijfSelected laadt nieuwe flexkenmerken en bijbehorende verplichte flexkenmerk bij personen zorgen er ook voor dat personen eventueel verplicht wordt [checkRequiredGroup("10S" + params.suggestid.substr(3))]; */ %>
|
||||
<td><input type="text" class="fld" name="bez<%=next_vis%>" id="bez<%=next_vis%>" maxlength="30" <%=params.contactonly? 'sgonChange="ContactpersoonBedrijfSelected"' : 'onChange="checkRequiredGroup(\'10S' + next_vis + '\')"'%>>
|
||||
<% if (S("bez_sel_contactpersoon") == 1) { %>
|
||||
<input type="hidden" name="contkey<%=next_vis%>" id="contkey<%=next_vis%>" value="-1">
|
||||
<% } %>
|
||||
<% if (S("bez_sel_internpersoon") == 1) { %>
|
||||
<input type="hidden" name="prskey<%=next_vis%>" id="prskey<%=next_vis%>" value="-1">
|
||||
<% } %>
|
||||
</td>
|
||||
<td><input type="text" class="fld" name="bed<%=next_vis%>" id="bed<%=next_vis%>" maxlength="60" <%=params.contactonly? 'sgonChange="ContactpersoonBedrijfSelected"' : ''%>></td>
|
||||
<td>
|
||||
<!--Gebouw/Terrein-->
|
||||
<div id="selectprkdiv<%=next_vis%>" name="selectprkdiv<%=next_vis%>" style="display: <%=S("vis_parking_key") != -1 && this_bez.canWritePrk && aantal_gebter == 1? "block" : "none"%>">
|
||||
<input type="checkbox" id="prk<%=next_vis%>" name="prk<%=next_vis%>">
|
||||
</div>
|
||||
<div id="selectgebterdiv<%=next_vis%>" name="selectgebterdiv<%=next_vis%>" style="display: <%=S("vis_parking_key") != -1 && this_bez.canWritePrk && aantal_gebter > 1? "block" : "none"%>">
|
||||
<!--Gebouw/Terrein-->
|
||||
<% FCLTplaatsselector(authparams.ALGwritelevel, { locatiekey: loc_key,
|
||||
gebouwkey: -1,
|
||||
nolabel: true,
|
||||
terrein: true,
|
||||
onGebChange: "setPrk(" + next_vis + ");",
|
||||
filtercode: "PRK",
|
||||
urlAdd: [{ urlParam: "date_from", field: "date_from" },
|
||||
{ urlParam: "date_to", field: "date_to" },
|
||||
{ urlParam: "lockey", field: "locatiekey" }],
|
||||
startlevel: 3, // Gebouw
|
||||
eindlevel: 3, // Gebouw
|
||||
idadd: next_vis,
|
||||
whenEmpty: L("lcl_search_generic") // want filter
|
||||
}); // Gebouw
|
||||
%>
|
||||
</div>
|
||||
<div style="display: none">
|
||||
<input type="text" id="prkselect<%=next_vis%>" name="prkselect<%=next_vis%>" value="<%=aantal_gebter > 1? "S" : "C"%>"> <% /* "S"=suggestboxen, "C"=checkboxen */ %>
|
||||
</div>
|
||||
</td>
|
||||
<% if (S("vis_bo_uses_badgenrs") == 1)
|
||||
{ %>
|
||||
<td><input type="<%=backo?"text":"hidden"%>" class="fld" name="bdg<%=next_vis%>" maxlength="30" ></td>
|
||||
<% } %>
|
||||
</tr>
|
||||
<tr id="trbez<%=next_vis%>flex"><td></td>
|
||||
<% if (!params.contactonly && (S("bez_sel_contactpersoon") == 1 || S("bez_sel_internpersoon") == 1))
|
||||
{ %>
|
||||
<td></td>
|
||||
<% } %>
|
||||
<td colspan="2">
|
||||
<div class="bezflex">
|
||||
<table id="bezFlexList<%=next_vis%>"><tbody>
|
||||
<% generateFlexKenmerkCode ({ urole: urole,
|
||||
//bez_key : oRs("bez_bezoekers_key").Value,
|
||||
//afspraak_key: afspraak_key,
|
||||
reado: false,
|
||||
flexcolumns: S("bez_flexcolumns"),
|
||||
beznum: next_vis,
|
||||
requiredbyfield: "bez" + next_vis
|
||||
}); %>
|
||||
</tbody></table>
|
||||
<input type=hidden id="bez_key<%=next_vis%>" name="bez_key<%=next_vis%>" value="-1">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<% } %>
|
||||
<% var next_vis = params.nrBez + 1;
|
||||
params.autoadd = params.nrBez||1;
|
||||
var next_vis = 1;
|
||||
}
|
||||
else
|
||||
{ // Existing reservation
|
||||
@@ -197,22 +142,22 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
<% } %>
|
||||
<td>
|
||||
<% /* ContactpersoonBedrijfSelected laadt nieuwe flexkenmerken en bijbehorende verplichte flexkenmerk bij personen zorgen er ook voor dat personen eventueel verplicht wordt [checkRequiredGroup("10S" + params.suggestid.substr(3))]; */ %>
|
||||
<% RWFIELD("bez" + next_vis, "fld", "", oRs("bez_afspraak_naam").value,
|
||||
{ maxlength:"30", readonly: (oRs("prs_contactpersoon_key").value != null || oRs("prs_perslid_key").value != null), html: (params.contactonly? "sgonChange='ContactpersoonBedrijfSelected'" : 'onChange="checkRequiredGroup(\'10S' + next_vis + '\')"') }) %>
|
||||
<% RWFIELD("bez" + next_vis, "fld", "", oRs("bez_afspraak_naam").Value,
|
||||
{ maxlength:"30", readonly: (oRs("prs_contactpersoon_key").Value != null || oRs("prs_perslid_key").Value != null), html: (params.contactonly? "sgonChange='ContactpersoonBedrijfSelected'" : 'onChange="checkRequiredGroup(\'10S' + next_vis + '\')"') }) %>
|
||||
</td>
|
||||
<td>
|
||||
<% RWFIELD("bed" + next_vis, "fld", "", oRs("bez_afspraak_bedrijf").value,
|
||||
{ maxlength:"60", readonly: (oRs("prs_contactpersoon_key").value != null || oRs("prs_perslid_key").value != null), html: (params.contactonly? "sgonChange='ContactpersoonBedrijfSelected'" : '') } ) %>
|
||||
<% RWFIELD("bed" + next_vis, "fld", "", oRs("bez_afspraak_bedrijf").Value,
|
||||
{ maxlength:"60", readonly: (oRs("prs_contactpersoon_key").Value != null || oRs("prs_perslid_key").Value != null), html: (params.contactonly? "sgonChange='ContactpersoonBedrijfSelected'" : '') } ) %>
|
||||
</td>
|
||||
<td>
|
||||
<!--Gebouw/Terrein-->
|
||||
<div id="selectprkdiv<%=next_vis%>" name="selectprkdiv<%=next_vis%>" style="display: <%=S("vis_parking_key") != -1 && this_bez.canWritePrk && aantal_gebter == 1? "block" : "none"%>">
|
||||
<input type="checkbox" id="prk<%=next_vis%>" name="prk<%=next_vis%>" <%=oRs("res_rsv_deel_key").value != null? "CHECKED " : ""%>>
|
||||
<input type="checkbox" id="prk<%=next_vis%>" name="prk<%=next_vis%>" <%=oRs("res_rsv_deel_key").Value != null? "CHECKED " : ""%>>
|
||||
</div>
|
||||
<div id="selectgebterdiv<%=next_vis%>" name="selectgebterdiv<%=next_vis%>" style="display: <%=S("vis_parking_key") != -1 && this_bez.canWritePrk && aantal_gebter > 1? "block" : "none"%>">
|
||||
<!--Gebouw/Terrein-->
|
||||
<% FCLTplaatsselector(authparams.ALGwritelevel, { locatiekey: loc_key,
|
||||
gebouwkey: oRs("gebouwkey").value,
|
||||
gebouwkey: oRs("gebouwkey").Value,
|
||||
nolabel: true,
|
||||
terrein: true,
|
||||
onGebChange: "setPrk(" + next_vis + ");",
|
||||
@@ -232,10 +177,24 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
</div>
|
||||
<% /* if (S("vis_parking_key") != -1 && this_bez.canWritePrk) CHECKBOX("", "prk" + next_vis, oRs("res_rsv_deel_key").value != null) */ %>
|
||||
</td>
|
||||
<% if (S("vis_bo_uses_badgenrs")==1)
|
||||
<% if (S("vis_bo_uses_badgenrs") == 1)
|
||||
{ %>
|
||||
<td align="left"><input type="<%=backo?"text":"hidden"%>" class="fldbadge" name="bdg<%=next_vis%>" maxlength="30" value="<%=safe.htmlattr(oRs("bez_bezoekers_pasnr").Value)%>"></td>
|
||||
<% } %>
|
||||
<% if (S("bez_max_flex_on_line") > 0)
|
||||
{
|
||||
generateFlexKenmerkCode ({ urole: urole,
|
||||
bez_key : oRs("bez_bezoekers_key").Value,
|
||||
afspraak_key: afspraak_key,
|
||||
reado: false,
|
||||
flexcolumns: S("bez_flexcolumns"),
|
||||
beznum: next_vis,
|
||||
requiredbyfield: "bez" + next_vis,
|
||||
notr: true,
|
||||
flexend: parseInt(S("bez_max_flex_on_line"), 10),
|
||||
nolabel: true
|
||||
});
|
||||
} %>
|
||||
</tr>
|
||||
<tr id="trbez<%=next_vis%>flex"><td></td>
|
||||
<% if (!params.contactonly && (S("bez_sel_contactpersoon") == 1 || S("bez_sel_internpersoon") == 1))
|
||||
@@ -244,17 +203,19 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
<% } %>
|
||||
<td colspan="2">
|
||||
<div class="bezflex">
|
||||
<table id="bezFlexList<%=next_vis%>"><tbody>
|
||||
<table id="bezFlexListB<%=next_vis%>"><tbody>
|
||||
<% generateFlexKenmerkCode ({ urole: urole,
|
||||
bez_key : oRs("bez_bezoekers_key").Value,
|
||||
afspraak_key: afspraak_key,
|
||||
reado: false,
|
||||
flexcolumns: S("bez_flexcolumns"),
|
||||
beznum: next_vis,
|
||||
requiredbyfield: "bez" + next_vis
|
||||
requiredbyfield: "bez" + next_vis,
|
||||
flexstart: (parseInt(S("bez_max_flex_on_line"), 10) + 1)
|
||||
}); %>
|
||||
</tbody></table>
|
||||
<input type=hidden id="bez_key<%=next_vis%>" name="bez_key<%=next_vis%>" value="<%=oRs("bez_bezoekers_key").Value%>">
|
||||
<div id="bezFlexListA<%=next_vis%>" style="display:none"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -272,18 +233,22 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
</table>
|
||||
</div>
|
||||
<style>
|
||||
geenhekjeaanbeginregel,#buttons { text-align:left; float:left }
|
||||
geenhekjeaanbeginregel,#morebuttons #buttons { text-align:left; float:left }
|
||||
</style>
|
||||
<%
|
||||
buttons = [{ title: L("lcl_more_vis"), icon: "plus.png", action: "more_visit("+S("vis_increment_number")+")" }];
|
||||
buttons = [{ title: L("lcl_more_vis"), icon: "plus.png", action: "more_visit(" + S("vis_increment_number") + ")" }];
|
||||
if (!params.contactonly)
|
||||
buttons.push({ title: L("lcl_bez_import_lijst"), icon: "bezimport.png", action: "import_visit()" })
|
||||
%><div id='morebuttons'><%
|
||||
CreateButtons(buttons, { showIcons: true }); %>
|
||||
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
more_visit(<%=params.autoadd || 0%>);
|
||||
var vis_parking_key = <%=S("vis_parking_key")%>;
|
||||
var canWritePrk = <%=this_bez.canWritePrk? 1 : 0%> == 1;
|
||||
var contactonly = <%=params.contactonly? 1 : 0%> == 1;
|
||||
// Aantal kolommen zonder de flexkenmerken.
|
||||
var aantal_std_td = 4 + <%=(!params.contactonly && (S("bez_sel_contactpersoon") == 1 || S("bez_sel_internpersoon") == 1))? 1 : 0%> + <%=(S("vis_bo_uses_badgenrs") == 1)? 1 : 0%>;
|
||||
|
||||
<% if (params.contactonly) { /* automatisch contactpersonificeren */ %>
|
||||
makeContactSuggest();
|
||||
@@ -298,6 +263,13 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
}
|
||||
<% } %>
|
||||
|
||||
function bezFlexListACallback(next_vis)
|
||||
{
|
||||
$("#trbez" + next_vis).append($("#bezFlexListA" + next_vis).html());
|
||||
$("#bezFlexListA" + next_vis).html(""); // <div> weer leegmaken anders zijn er dubbele velden.
|
||||
FcltMgr.resized();
|
||||
}
|
||||
|
||||
function more_visit(nrplus)
|
||||
{
|
||||
for (var ii = 1; ii <= nrplus ; ii++)
|
||||
@@ -333,7 +305,6 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
ih.insertCell(-1).innerHTML = '<input type="<%=backo?"text":"hidden"%>" class="fldbadge" name="bdg'+next_vis+'" maxlength="30">';
|
||||
<% } %>
|
||||
|
||||
|
||||
ih = $("#vis_tab")[0].insertRow(-1);
|
||||
ih.id = "trbez" + next_vis + "flex";
|
||||
ih.insertCell(-1).innerHTML = "";
|
||||
@@ -342,20 +313,33 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
|
||||
ih.insertCell(-1).innerHTML = "";
|
||||
<% } %>
|
||||
var cell = ih.insertCell(-1);
|
||||
cell.innerHTML = '<div class="bezflex"><table id="bezFlexList' + next_vis + '"></table></div>'
|
||||
+ '<input type=hidden id="bez_key' + next_vis + '" name="bez_key' + next_vis + '" value="-1">';
|
||||
cell.innerHTML = '<div class="bezflex"><table id="bezFlexListB' + next_vis + '"></table></div>'
|
||||
+ '<input type=hidden id="bez_key' + next_vis + '" name="bez_key' + next_vis + '" value="-1">'
|
||||
+ '<div id="bezFlexListA' + next_vis + '" style="display:none"></div>';
|
||||
cell.colSpan = 2;
|
||||
|
||||
$("#prkdiv"+next_vis).load("./loadPrkTerrein.asp",
|
||||
{ locatie_key: <%=loc_key%>,
|
||||
next_vis: next_vis,
|
||||
prktype: $("#prktype").val(),
|
||||
algwritelevel: <%=authparams.ALGwritelevel%> }
|
||||
);
|
||||
algwritelevel: <%=authparams.ALGwritelevel%>
|
||||
});
|
||||
|
||||
var url = "load_kenmerk.asp?urole=<%=urole%>&beznum=" + next_vis + "&requiredbyfield=bez" + next_vis;
|
||||
if (<%=S("bez_max_flex_on_line")%> > 0)
|
||||
{
|
||||
// Laden van de kenmerken op de bezoekersregel
|
||||
// De volgende flexkenmerken werken niet goed op de bezoekersregel:
|
||||
// 1) Inklapbare labels
|
||||
// 2) Parent/child kenmerken
|
||||
// 3) Texboxen
|
||||
// Dit komt omdat er dan javascript code (script) tussen de td kolommen worden gezet. En dat mag (eigenlijk) niet.
|
||||
var url = "load_kenmerk.asp?urole=<%=urole%>&beznum=" + next_vis + "&requiredbyfield=bez" + next_vis + "¬r=1&nolabel=1&flexend=" + parseInt(<%=S("bez_max_flex_on_line")%>, 10);
|
||||
$("#bezFlexListA" + next_vis).load(url, function(a){ return function() {bezFlexListACallback(a);} }(next_vis)); // JavaScript Closure.
|
||||
}
|
||||
|
||||
var url = "load_kenmerk.asp?urole=<%=urole%>&beznum=" + next_vis + "&requiredbyfield=bez" + next_vis + "&flexstart=" + (parseInt(<%=S("bez_max_flex_on_line")%>, 10) + 1);
|
||||
$("#bezFlexListB" + next_vis).load(url, function(){ FcltMgr.resized(); });
|
||||
|
||||
$("#bezFlexList" + next_vis).load(url, function(){ FcltMgr.resized(); });
|
||||
next_vis++;
|
||||
$("#next_vis").val(next_vis);
|
||||
}
|
||||
|
||||
@@ -3,26 +3,22 @@
|
||||
$Revision$
|
||||
$Id$
|
||||
|
||||
File: register.asp
|
||||
Description: Sla de wijzigingen van formulier register_input.asp op
|
||||
File: bez_edit_bezoekers_save.asp
|
||||
Description: Sla de wijzigingen van formulier bez_edit_bezoekers.asp op
|
||||
Parameters:
|
||||
urole
|
||||
print
|
||||
afspr_key
|
||||
res_key
|
||||
rsv_ruimte_key ...and all other register_input.asp form u2 fields
|
||||
Context: POST formulier vanuit bez_edit_bezoekers
|
||||
Context: POST formulier vanuit bez_edit_bezoekers.asp
|
||||
welke alleen vanuit het blokje onder een reservering wordt aangeroepen
|
||||
Note: Eventueel worden ook parkeerplaatsen gereserveerd
|
||||
|
||||
*/ %>
|
||||
*/
|
||||
var JSON_Result = true;
|
||||
%>
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="bez_edit_bezoekers_save.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="../Shared/status.inc" -->
|
||||
|
||||
<%
|
||||
protectRequest.validateToken();
|
||||
FCLTHeader.Requires({plugins: [], js:[] })
|
||||
|
||||
var urole = getQParamSafe("urole");
|
||||
|
||||
@@ -69,7 +65,7 @@ if (isRes && appointmentisdeleted)
|
||||
oRs = Oracle.Execute(sql);
|
||||
var snkeyRESUPD = oRs("fac_srtnotificatie_key").value;
|
||||
|
||||
// Alle tracking die een omschrijving heeft kan direcht omgezet worden
|
||||
// Alle tracking die een omschrijving heeft kan direct omgezet worden
|
||||
sql = "UPDATE fac_tracking"
|
||||
+ " SET fac_srtnotificatie_key = " + snkeyRESUPD
|
||||
+ " , fac_tracking_refkey = " + rsv_ruimte_key
|
||||
@@ -113,22 +109,10 @@ if (!custfunc.bez_postsave(result.bezkeyArr, pResult))
|
||||
}
|
||||
|
||||
var closeParams = { afspraak_key: afspraak_key,
|
||||
bezkeyArr: result.bezkeyArr,
|
||||
warning: result.warning
|
||||
bezkeyArr: result.bezkeyArr, // alle
|
||||
beznewkeyArr: result.beznewkeyArr, // de nieuwe
|
||||
warning: result.warning,
|
||||
success: true
|
||||
}
|
||||
Response.Write(JSON.stringify(closeParams));
|
||||
%>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<% FCLTHeader.Generate() %>
|
||||
<script>
|
||||
$(document).ready(function ()
|
||||
{
|
||||
var JSONdata = '(<%=safe.jsstring(JSON.stringify(closeParams))%>)';
|
||||
FcltMgr.closeDetail(window, eval('(' + JSONdata + ')'));
|
||||
} );
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -67,7 +67,8 @@ function saveBezoekers(afspraak_key, rsv_ruimte_key, params)
|
||||
var nr_park_needed = 0;
|
||||
var nr_park_reserved = 0;
|
||||
var bznum = 1;
|
||||
var bezkeyArr = new Array();
|
||||
var bezkeyArr = [];
|
||||
var beznewkeyArr = [];
|
||||
var beztrack = [];
|
||||
|
||||
while ((bznum < next_vis)) {
|
||||
@@ -85,7 +86,11 @@ function saveBezoekers(afspraak_key, rsv_ruimte_key, params)
|
||||
if (result.needPark) nr_park_needed++;
|
||||
if (result.hasPark) nr_park_reserved++;
|
||||
if (result.bez_key > 0)
|
||||
{
|
||||
if (result.isNew)
|
||||
beznewkeyArr.push(result.bez_key);
|
||||
bezkeyArr.push(result.bez_key);
|
||||
}
|
||||
if (result.beztrack && result.beztrack.length > 0)
|
||||
beztrack.push(result.beztrack);
|
||||
bznum++;
|
||||
@@ -105,16 +110,23 @@ function saveBezoekers(afspraak_key, rsv_ruimte_key, params)
|
||||
alert_text = nr_park_reserved + L("lcl_park_alert1") + nr_park_needed + L("lcl_park_alert2");
|
||||
beztrack.push(alert_text); // De melding dat niet alle parkeerplaatsen gereserveerd konden worden aan de tracking toevoegen.
|
||||
}
|
||||
return { afspr_key: afspraak_key, bezkeyArr: bezkeyArr, warning: alert_text, beztrack: beztrack };
|
||||
return { afspr_key: afspraak_key,
|
||||
bezkeyArr: bezkeyArr,
|
||||
beznewkeyArr: beznewkeyArr,
|
||||
warning: alert_text,
|
||||
beztrack: beztrack };
|
||||
}
|
||||
|
||||
// Maak er eentje aan voor onder de reservering
|
||||
function createAfspraak(rsv_ruimte_key)
|
||||
{
|
||||
var actie_key = bez.default_actie();
|
||||
|
||||
var sql = "SELECT res_rsv_ruimte_opmerking"
|
||||
+ " ," + lcl.xsqla('res_ruimte_nr', 'r.res_ruimte_key')
|
||||
+ " , r.alg_locatie_key"
|
||||
+ " , ar.alg_ruimte_key"
|
||||
+ " , bez_actie_key"
|
||||
+ " FROM res_v_res_ruimte_gegevens r"
|
||||
+ " , res_rsv_ruimte rrr"
|
||||
+ " , res_ruimte_opstelling ro"
|
||||
@@ -133,6 +145,7 @@ function createAfspraak(rsv_ruimte_key)
|
||||
var roomtxt = oRs("res_ruimte_nr").value;
|
||||
var loc = oRs("alg_locatie_key").value;
|
||||
var alg_ruimte_key = oRs("alg_ruimte_key").value;
|
||||
actie_key = oRs("bez_actie_key").value || actie_key;
|
||||
}
|
||||
else // CV waarschijnlijk
|
||||
{
|
||||
@@ -204,7 +217,7 @@ function createAfspraak(rsv_ruimte_key)
|
||||
+ afspraak_key
|
||||
+ ", " + user_key
|
||||
+ ", res_rsv_ruimte_van"
|
||||
+ ", NULL " // redelijk dummy (ooit invulbaar maken?)
|
||||
+ ", " + (actie_key > 0? actie_key: " NULL")
|
||||
+ ", SUBSTR(" + safe.quoted_sql(roomtxt) + ", 1, 30)"
|
||||
+ ", SUBSTR(" + safe.quoted_sql(remark.join("\n")) + ", 1, 320)"
|
||||
+ ", res_rsv_ruimte_tot"
|
||||
@@ -234,11 +247,12 @@ function getPrkOmschrijving(key, keytype)
|
||||
+ (keytype == "B"
|
||||
? " AND rrd.bez_bezoekers_key = " + key
|
||||
: " AND rrd.res_rsv_deel_key = " + key); // keytype == "R" (res_rsv_deel_key)
|
||||
oRsPOB = Oracle.Execute(sqlPOB);
|
||||
var oRsPOB = Oracle.Execute(sqlPOB);
|
||||
var txt;
|
||||
if (!oRsPOB.eof)
|
||||
return oRsPOB("alg_plaatsaanduiding").value;
|
||||
else
|
||||
return null;
|
||||
txt = oRsPOB("alg_plaatsaanduiding").value;
|
||||
oRsPOB.Close();
|
||||
return txt;
|
||||
}
|
||||
|
||||
// leest in principe uit Request.Form nummer bznum behalve als bznum==-1, dan uit params.
|
||||
@@ -254,6 +268,7 @@ function saveOneBezoeker(afspraak_key, rsv_ruimte_key, bznum, params)
|
||||
var hasPark = false;
|
||||
var prk = "off";
|
||||
var beztrack = [];
|
||||
var isNew = false;
|
||||
if (bznum > 0)
|
||||
{
|
||||
var bez_key = getFParamInt("bez_key" + bznum, -1);
|
||||
@@ -316,6 +331,7 @@ function saveOneBezoeker(afspraak_key, rsv_ruimte_key, bznum, params)
|
||||
}
|
||||
|
||||
var bezIns = buildInsert("bez_bezoekers", bezfields, { noValidateToken: params.noValidateToken });
|
||||
isNew = true;
|
||||
var bez_key = bezIns.sequences["bez_bezoekers_key"];
|
||||
Oracle.Execute(bezIns.sql);
|
||||
var bezUpd = {trackarray: [L("lcl_bez_is_bezadd") + ": " + beznaam + "/" + bed]};
|
||||
@@ -456,9 +472,10 @@ function saveOneBezoeker(afspraak_key, rsv_ruimte_key, bznum, params)
|
||||
allKenmerkenSQL: allKenmerkenSQL,
|
||||
requestQF: Request.Form,
|
||||
nameprefix: "flex" + bznum + "_",
|
||||
isNew: (bez_key < 0),
|
||||
isNew: isNew,
|
||||
flexPath: "BEZ/B",
|
||||
tracking: true,
|
||||
noFlexCleanup: true,
|
||||
module: "BEZ"
|
||||
})
|
||||
}
|
||||
@@ -466,6 +483,11 @@ function saveOneBezoeker(afspraak_key, rsv_ruimte_key, bznum, params)
|
||||
beztrack = (newbez? "" : beznaam + ": ") + bezUpd.trackarray.concat(flextrack).join("\n");
|
||||
}
|
||||
|
||||
return { afspr_key: afspraak_key, bez_key: bez_key, needPark: prk == "on", hasPark: hasPark, beztrack: beztrack };
|
||||
return { afspr_key: afspraak_key,
|
||||
bez_key: bez_key,
|
||||
isNew: isNew,
|
||||
needPark: prk == "on",
|
||||
hasPark: hasPark,
|
||||
beztrack: beztrack };
|
||||
}
|
||||
%>
|
||||
@@ -15,23 +15,9 @@
|
||||
*/ %>
|
||||
<!-- #include file="../Shared/kenmerk_common.inc" -->
|
||||
<%
|
||||
function generateFlexKenmerkCode(params)
|
||||
function getSqlBezFlex(bez_key)
|
||||
{
|
||||
var bez_key = params.bez_key? params.bez_key : -1; // bez_bezoekers_key
|
||||
var reado = params.reado; // Readonly
|
||||
var flexcolumns = params.flexcolumns;
|
||||
var advanced = params.advanced; // Geavanceerd
|
||||
var flexcolumns= params.flexcolumns;
|
||||
var prs_key = (params.prs_key? params.prs_key : -1); // Perslid key
|
||||
var cont_key = (params.cont_key? params.cont_key : -1); // Contactpersoon key
|
||||
var beznum = params.beznum; // Bezoeker nummer
|
||||
var requiredbyfield = params.requiredbyfield; // required flexkenmerken is alleen required als veld met name=requiredbyfield is ingevuld
|
||||
function isReadonly (volgnummer) //??
|
||||
{
|
||||
return reado;
|
||||
}
|
||||
|
||||
var sql = "SELECT k.bez_kenmerk_key kenmerk_key, "
|
||||
return sql = "SELECT k.bez_kenmerk_key kenmerk_key, "
|
||||
+ lcl.xsql('k.bez_kenmerk_omschrijving', 'k.bez_kenmerk_key') +" kenmerk_omschrijving, "
|
||||
+ " k.bez_kenmerk_kenmerktype kenmerk_kenmerktype, "
|
||||
+ " k.fac_kenmerkdomein_key kenmerkdomein_key, "
|
||||
@@ -61,24 +47,52 @@ function generateFlexKenmerkCode(params)
|
||||
+ " WHERE k.bez_kenmerk_verwijder IS NULL "
|
||||
+ "ORDER BY k.bez_kenmerk_volgnr, "
|
||||
+ lcl.xsql('k.bez_kenmerk_omschrijving', 'k.bez_kenmerk_key');
|
||||
}
|
||||
|
||||
var trn = 0;
|
||||
function generateFlexKenmerkCode(params)
|
||||
{
|
||||
var bez_key = params.bez_key? params.bez_key : -1; // bez_bezoekers_key
|
||||
var reado = params.reado; // Readonly
|
||||
var flexcolumns = params.flexcolumns;
|
||||
var advanced = params.advanced; // Geavanceerd
|
||||
var flexcolumns= params.flexcolumns;
|
||||
var prs_key = (params.prs_key? params.prs_key : -1); // Perslid key
|
||||
var cont_key = (params.cont_key? params.cont_key : -1); // Contactpersoon key
|
||||
var beznum = params.beznum; // Bezoeker nummer
|
||||
var requiredbyfield = params.requiredbyfield; // required flexkenmerken is alleen required als veld met name=requiredbyfield is ingevuld
|
||||
var flexstart = params.flexstart;
|
||||
var flexend = params.flexend;
|
||||
var notr = params.notr;
|
||||
var nolabel = params.nolabel;
|
||||
|
||||
listKenmerk(sql,
|
||||
"BEZ", // Module
|
||||
bez_key,
|
||||
{ flexcolumns: flexcolumns,
|
||||
label_colspan: params.mobile?1:S("bez_sel_contactpersoon") || S("bez_sel_internpersoon")? 3 : 2,
|
||||
kenmerk_search: advanced,
|
||||
fnIsReadonly: isReadonly,
|
||||
prs_key: prs_key, // Wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
|
||||
cont_key: cont_key, // Wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
|
||||
hideVervallen: bez_key<0,
|
||||
nameprefix: "flex" + beznum + "_",
|
||||
mobile: params.mobile,
|
||||
requiredbyfield: requiredbyfield,
|
||||
serie: beznum // Het serie nummer (onderscheid tussen bezoekers) voor dezelfde serie flexkenmerken
|
||||
}
|
||||
);
|
||||
function isReadonly (volgnummer) //??
|
||||
{
|
||||
return reado;
|
||||
}
|
||||
|
||||
var sql = getSqlBezFlex(bez_key);
|
||||
|
||||
var trn = 0;
|
||||
|
||||
listKenmerk(sql,
|
||||
"BEZ", // Module
|
||||
bez_key,
|
||||
{ flexcolumns: flexcolumns,
|
||||
label_colspan: notr? null : (params.mobile? 1 : (S("bez_sel_contactpersoon") || S("bez_sel_internpersoon")? 3 : 2)),
|
||||
kenmerk_search: advanced,
|
||||
fnIsReadonly: isReadonly,
|
||||
prs_key: prs_key, // Wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
|
||||
cont_key: cont_key, // Wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
|
||||
hideVervallen: bez_key<0,
|
||||
nameprefix: "flex" + beznum + "_",
|
||||
mobile: params.mobile,
|
||||
requiredbyfield: requiredbyfield,
|
||||
serie: beznum, // Het serie nummer (onderscheid tussen bezoekers) voor dezelfde serie flexkenmerken
|
||||
flexstart: flexstart,
|
||||
flexend: flexend,
|
||||
notr: notr,
|
||||
nolabel: nolabel
|
||||
}
|
||||
);
|
||||
} %>
|
||||
|
||||
|
||||
@@ -36,6 +36,8 @@
|
||||
Note:
|
||||
|
||||
tiny betekent: embedded in een afspraakscherm. Afspraakgegevens zie je dan dus al.
|
||||
|
||||
Merk op dat dit een vrij belachelijk nesting van rollen en modes bevat, wat best helderder mag
|
||||
*/ %>
|
||||
|
||||
<!-- #include file="./bez.inc" -->
|
||||
@@ -148,7 +150,6 @@ function bez_list(pautfunction, params)
|
||||
urole = "<%=urole%>";
|
||||
contactonly = <%=params.contactonly?1:0%>;
|
||||
var todayString = "<%=toDateString(new Date())%>";
|
||||
vis_badgeprint_enable = "<%=S("vis_badgeprint_enable")%>";
|
||||
|
||||
</script>
|
||||
</head>
|
||||
@@ -172,10 +173,12 @@ function bez_list(pautfunction, params)
|
||||
+ ", " + S("prs_pers_string") + " pers_naam"
|
||||
+ ", a.bez_afspraak_gastheer gastheer"
|
||||
+ ", COALESCE(a.bez_afspraak_telefoonnr, p.prs_perslid_telefoonnr, p.prs_perslid_mobiel) telf_nr"
|
||||
+ ", a.bez_afspraak_ruimte ruimte"
|
||||
+ ", a.bez_afspraak_opmerking"
|
||||
+ ", COALESCE(res_ruimte_groep, a.bez_afspraak_ruimte) ruimte"
|
||||
+ ", a.bez_afspraak_opmerking bez_afspraak_opmerking"
|
||||
+ ", b.bez_afspraak_opmerking bez_bezoekers_opmerking"
|
||||
+ ", a.bez_afspraak_eind"
|
||||
+ ", "+lcl.xsql('t.bez_actie_omschrijving', 't.bez_actie_key')+ " actie"
|
||||
+ ", t.bez_actie_flags"
|
||||
+ ", b.bez_bezoekers_done"
|
||||
+ ", b.bez_bezoekers_out "
|
||||
+ ", l.alg_locatie_omschrijving loc_omschr"
|
||||
@@ -385,27 +388,14 @@ function bez_list(pautfunction, params)
|
||||
oRs = Oracle.Execute(actcntsql);
|
||||
var more_actions_exist = oRs("cnt") > 1;
|
||||
|
||||
prsKeys = "" + user_key;
|
||||
if (frontend && S("prs_collegas_used") == 1)
|
||||
{
|
||||
// String met collega keys voor de tijd bepalen want sql string duurde te lang.
|
||||
sql_collegas = " SELECT prs_perslid_key"
|
||||
+ " FROM prs_collega"
|
||||
+ " WHERE prs_perslid_key_alt = " + user_key;
|
||||
oRs = Oracle.Execute(sql_collegas);
|
||||
while (!oRs.eof)
|
||||
{
|
||||
prsKeys += ", " + oRs("prs_perslid_key").value;
|
||||
oRs.MoveNext();
|
||||
}
|
||||
}
|
||||
var prsKeys = user.collegakeylist();
|
||||
|
||||
if (authparams.PRSreadlevel >= 0)
|
||||
{
|
||||
if (authparams.PRSreadlevel == 0)
|
||||
{
|
||||
bedrKeys = "" + user.afdeling().prs_bedrijf_key();
|
||||
if (frontend && S("prs_collegas_used") == 1)
|
||||
if (user.hasCollegas())
|
||||
{
|
||||
// bepaal de bedrijf keys van de collegas
|
||||
sql_afd = "SELECT DISTINCT ab.prs_bedrijf_key"
|
||||
@@ -449,6 +439,7 @@ function bez_list(pautfunction, params)
|
||||
+ " OR UPPER(p.prs_perslid_naam) LIKE" + wildsearchtext
|
||||
+ " OR UPPER(a.bez_afspraak_gastheer) LIKE" + wildsearchtext
|
||||
+ " OR UPPER(a.bez_afspraak_opmerking) LIKE" + wildsearchtext
|
||||
+ " OR UPPER(b.bez_afspraak_opmerking) LIKE" + wildsearchtext
|
||||
+ " OR UPPER(b.bez_bezoekers_pasnr) LIKE" + wildsearchtext + ")";
|
||||
}
|
||||
|
||||
@@ -572,18 +563,9 @@ function bez_list(pautfunction, params)
|
||||
else
|
||||
{ // fe mode
|
||||
// String met collega keys is voor de tijd bepaald want in de sql duurde te lang.
|
||||
if (S("prs_collegas_used") == 1)
|
||||
{
|
||||
sql += " AND (a.bez_afspraak_contact_key IN (" + prsKeys + ")"
|
||||
+ " OR a.bez_afspraak_host_key IN (" + prsKeys + ")"
|
||||
+ ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
sql += " AND (a.bez_afspraak_contact_key = " + user_key
|
||||
+ " OR a.bez_afspraak_host_key = " + user_key + ")";
|
||||
}
|
||||
|
||||
sql += " AND (a.bez_afspraak_contact_key IN (" + prsKeys + ")"
|
||||
+ " OR a.bez_afspraak_host_key IN (" + prsKeys + ")"
|
||||
+ ")";
|
||||
sql+= " AND a.bez_afspraak_datum >= SYSDATE-" + S("vis_user_history");
|
||||
}
|
||||
|
||||
@@ -723,6 +705,14 @@ function bez_list(pautfunction, params)
|
||||
: "");
|
||||
}
|
||||
|
||||
function fncolOpmerking(oRs)
|
||||
{
|
||||
var txt = oRs("bez_afspraak_opmerking").value||"";
|
||||
if (oRs("bez_bezoekers_opmerking").value)
|
||||
txt += "\n"+safe.html(oRs("bez_bezoekers_opmerking").value);
|
||||
return ResultsetTable.formatValue(txt, {});
|
||||
}
|
||||
|
||||
function fncolBadgenr(oRs)
|
||||
{
|
||||
// Op scherm nog niet ingevulde nummers als input tonen
|
||||
@@ -730,13 +720,21 @@ function bez_list(pautfunction, params)
|
||||
if (outputmode == 0)
|
||||
return '<input class="fldbadge" type=text size="10" maxlength="30"' + (reado || (oRs("authorized").value != 1)?' disabled':'')
|
||||
+ ' value="" OnClick="FcltMgr.stopPropagation(event)" onFocus="this.select()"'
|
||||
+ ' OnBlur="if (this.value != \'...\') SaveBadge(' + oRs("bez_key").Value + ', this.value)">';
|
||||
+ ' onchange="SaveBadge(' + oRs("bez_key").Value + ', this.value)">';
|
||||
else
|
||||
return "";
|
||||
else
|
||||
return safe.html(oRs("badgenr").value);
|
||||
}
|
||||
|
||||
function fncolParkSort(oRs)
|
||||
{
|
||||
if (oRs("rsv_deel_key").value != 0)
|
||||
return 0; // Zodat met <20><>n keer klikken de P bovenaan
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
function fncolPark(oRs)
|
||||
{
|
||||
if (oRs("rsv_deel_key").value != 0)
|
||||
@@ -768,10 +766,7 @@ function bez_list(pautfunction, params)
|
||||
content = '<img id="CHDin' + oRs("bez_key").value
|
||||
+ '" src="../Pictures/vis_todo.gif" class="ilbutton"'
|
||||
+ (oRs("authorized").value == 1
|
||||
? ' OnClick="doCheckIn(event, ' + oRs("bez_key").value + ', 0);'
|
||||
+ ((S("vis_badgeprint_enable") == 1 || S("vis_badgeprint_enable") == 3)
|
||||
? 'printBadge(event, ' + oRs("bez_key").value + ');"'
|
||||
: '"')
|
||||
? ' OnClick="doCheckIn(event, ' + oRs("bez_key").value + ', 0);"'
|
||||
+ ' alt="' + L("lcl_vis_register") + '"'
|
||||
: ' OnClick="FcltMgr.stopPropagation(event);"')
|
||||
+ '>';
|
||||
@@ -831,10 +826,13 @@ function bez_list(pautfunction, params)
|
||||
|
||||
function fncolPrintBadge(oRs)
|
||||
{
|
||||
if ((S("vis_badgeprint_enable") & 4) == 4 && (oRs("bez_actie_flags").Value &2) != 2)
|
||||
return; // Alleen voor autobadge
|
||||
|
||||
return '<img id="CHPrt' + oRs("afspr_key").value + '" class="ilbutton"'
|
||||
+ ' src="../Pictures/vis_bad.gif"'
|
||||
+ ((outputmode == 0) && (oRs("authorized").value == 1)
|
||||
? ' OnClick="javascript:printBadge(event, ' + oRs("bez_key").value + ');"'
|
||||
? ' OnClick="FcltMgr.stopPropagation(event);printBadge(' + oRs("bez_key").value + ');"'
|
||||
+ ' alt="' + L("lcl_vis_printbadge") + '"'
|
||||
: ' OnClick="FcltMgr.stopPropagation(event);"')
|
||||
+ '>';
|
||||
@@ -861,11 +859,22 @@ function bez_list(pautfunction, params)
|
||||
var buttons = [];
|
||||
if (!tiny)
|
||||
{
|
||||
var addurl = "appl/bez/bez_afspraak.asp?urole=" + urole;
|
||||
if (params.contactonly)
|
||||
addurl += "&contactonly=1";
|
||||
if (urole == 'bo') // Krijgt de kans een pool-reservering te kiezen
|
||||
{
|
||||
var addurl = "bez_afspraak_bo_new.asp?loc_key=" + (loc_key||-1);
|
||||
if (params.contactonly)
|
||||
addurl += "&contactonly=1";
|
||||
var action = "FcltMgr.openModalDetail('" + addurl + "', '" + L("lcl_add") + "', {callback: bezPoolCallback} )"
|
||||
}
|
||||
else
|
||||
{
|
||||
var addurl = "appl/bez/bez_afspraak.asp?urole=" + urole;
|
||||
if (params.contactonly)
|
||||
addurl += "&contactonly=1";
|
||||
var action = "FcltMgr.openDetail('" + addurl + "', '" + L("lcl_add") + "')";
|
||||
}
|
||||
|
||||
var buttons = [{ icon: "plus.png", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + L("lcl_add") + "')" }];
|
||||
var buttons = [{ icon: "plus.png", title: L("lcl_add"), action: action }];
|
||||
}
|
||||
|
||||
xparams = {keyColumn: "bez_key",
|
||||
@@ -932,9 +941,10 @@ function bez_list(pautfunction, params)
|
||||
rst.addColumn(new Column({caption: L("lcl_host"), nowrap: true, content: "gastheer"}));
|
||||
if (S("vis_parking_key") != -1 && this_bez.canWritePrk)
|
||||
{
|
||||
rst.addColumn(new Column({caption: "P", content: fncolPark}));
|
||||
rst.addColumn(new Column({caption: "P", content: fncolPark, customSort: fncolParkSort }));
|
||||
}
|
||||
if (tiny) {
|
||||
rst.addColumn(new Column({caption: L("lcl_remark"), content: "bez_bezoekers_opmerking"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bez_done_date"), content: "bez_bezoekers_done", datatype: "time"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bez_out_date"), content: "bez_bezoekers_out", datatype: "time"}));
|
||||
}
|
||||
@@ -960,7 +970,7 @@ function bez_list(pautfunction, params)
|
||||
}
|
||||
|
||||
rst.addColumn(new Column({caption: L("lcl_descr"), content: "res_rsv_ruimte_omschrijving" }));
|
||||
rst.addColumn(new Column({caption: L("lcl_vis_remark"), content: "bez_afspraak_opmerking", combine: true}));
|
||||
rst.addColumn(new Column({caption: L("lcl_vis_remark"), content: fncolOpmerking, combine: true}));
|
||||
}
|
||||
|
||||
if (groupbez)
|
||||
@@ -984,7 +994,7 @@ function bez_list(pautfunction, params)
|
||||
rst.addColumn(new Column({caption: L("lcl_vis_badgenr"), content: fncolBadgenr}));
|
||||
}
|
||||
|
||||
if (S("vis_badgeprint_enable") == 2 || S("vis_badgeprint_enable") == 3)
|
||||
if ((S("vis_badgeprint_enable") & 2) == 2)
|
||||
{
|
||||
var captionVisBad = '<img id="printbadge" src="../Pictures/vis_bad.gif" alt="">';
|
||||
rst.addColumn(new Column({caption: (outputmode == 0 ?captionVisBad : ""), content: fncolPrintBadge}));
|
||||
|
||||
@@ -38,14 +38,19 @@ function bezEdit(row)
|
||||
|
||||
function CheckInCallback(json, textStatus)
|
||||
{
|
||||
if (textStatus == "success")
|
||||
{
|
||||
for (i = 0 ; i < json.bez_key_arr.length; i++)
|
||||
{
|
||||
if (json.checkInDone[i]) // Checkin is uitgevoerd
|
||||
{
|
||||
if (json.undo_check_in == 0) // bezoeker is nu ingechecked/aangemeld. Geef juiste afvinkbox weer aan het eind van de regel
|
||||
{
|
||||
if (json.badges[i])
|
||||
{
|
||||
var badgefield = $("#checkin" + json.bez_key_arr[i]).closest("tr").find("input.fldbadge");
|
||||
badgefield.val(json.badges[i]).attr("disabled", "1");
|
||||
}
|
||||
if (json.autoprint[i])
|
||||
printBadge(json.bez_key_arr[i]);
|
||||
content = '<img id="CHDin' + json.bez_key_arr[i] + '"'
|
||||
+ ' src="../Pictures/res_ok.gif" class="ilbutton"'
|
||||
+ ' OnClick="doCheckIn(event, ' + json.bez_key_arr[i] + ', 1);"' // bezoeker not out
|
||||
@@ -58,10 +63,7 @@ function CheckInCallback(json, textStatus)
|
||||
{
|
||||
content = '<img id="CHDin' + json.bez_key_arr[i]
|
||||
+ '" src="../Pictures/vis_todo.gif" class="ilbutton"'
|
||||
+ ' OnClick="doCheckIn(event, ' + json.bez_key_arr[i] + ', 0);'
|
||||
+ ((vis_badgeprint_enable == 1 || vis_badgeprint_enable == 3)
|
||||
? 'printBadge(event, ' + json.bez_key_arr[i] + ');"'
|
||||
: '"')
|
||||
+ ' OnClick="doCheckIn(event, ' + json.bez_key_arr[i] + ', 0);"'
|
||||
+ ' style="cursor:pointer"'
|
||||
+ ' alt="' + L("lcl_vis_register") + '"'
|
||||
+ '>';
|
||||
@@ -69,12 +71,8 @@ function CheckInCallback(json, textStatus)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Is er nog een message die weergegeven moet worden?
|
||||
if (json.message) alert(json.message);
|
||||
}
|
||||
else
|
||||
alert("CheckInCallback: " + textStatus);
|
||||
}
|
||||
|
||||
function doCheckIn(evt, bezKeyString, undo_check_in)
|
||||
|
||||
@@ -124,7 +124,7 @@ if (S("bez_sel_internpersoon") == 1)
|
||||
extraParamField: "toonbedrijf",
|
||||
whenEmpty: L("lcl_search_generic") // want filter
|
||||
});
|
||||
ROFIELDTR("fld", L("lcl_company"), "", {id: "bedrijf"});
|
||||
RWFIELDTR("bedrijf", "fld", L("lcl_company"), "", {readonly: true});
|
||||
}
|
||||
if (S("bez_sel_internpersoon") == 1)
|
||||
{
|
||||
@@ -139,7 +139,7 @@ if (S("bez_sel_internpersoon") == 1)
|
||||
autlevel: authparams.PRSwritelevel,
|
||||
whenEmpty: L("lcl_search_generic") // want filter
|
||||
});
|
||||
ROFIELDTR("fld", L("lcl_department"), "", {id: "afdeling"});
|
||||
RWFIELDTR("afdeling", "fld", L("lcl_department"), "", {readonly: true});
|
||||
}
|
||||
BLOCK_END();
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
bez_bedrijf
|
||||
Context: een frame binnen reservering-edit-of-show
|
||||
Note: Wordt vooralsnog alleen gebruikt vanuit res en had derhalve
|
||||
ook res/res_show_bezoekers.asp kunnen zijn
|
||||
ook res/res_show_bezoekers.asp kunnen zijn
|
||||
*/
|
||||
|
||||
%>
|
||||
@@ -93,24 +93,38 @@ user.auth_required_or_abort(this_bez.canReadAny);
|
||||
%>
|
||||
<body id="showbody">
|
||||
<div id="show">
|
||||
<% sql = "SELECT b.bez_bezoekers_key"
|
||||
+ ", b.bez_afspraak_naam"
|
||||
+ ", b.bez_afspraak_bedrijf bez_bedrijf"
|
||||
+ ", b.bez_bezoekers_done"
|
||||
+ ", b.bez_bezoekers_out "
|
||||
+ ", b.bez_afspraak_key bez_afspraak_key"
|
||||
+ ", rrd.res_rsv_deel_key rsv_deel_key"
|
||||
+ ", COALESCE(org.alg_gebouw_code, org.alg_terreinsector_code) || ' ' || COALESCE(org.alg_gebouw_naam, org.alg_terreinsector_naam) code"
|
||||
+ " FROM bez_bezoekers b"
|
||||
+ ", res_rsv_deel rrd"
|
||||
+ ", res_deel rd"
|
||||
+ ", ins_deel id"
|
||||
+ ", alg_v_allonrgoed_gegevens org"
|
||||
<%
|
||||
var isoproep = false;
|
||||
if (afspraak_key > 0)
|
||||
{
|
||||
sql = "SELECT bez_actie_flags"
|
||||
+ " FROM bez_afspraak a"
|
||||
+ " , bez_actie ba"
|
||||
+ " WHERE a.bez_afspraak_key = " + afspraak_key
|
||||
+ " AND a.bez_actie_key = ba.bez_actie_key(+)";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var isoproep = (oRs("bez_actie_flags")&1) == 1
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
sql = "SELECT b.bez_bezoekers_key"
|
||||
+ " , b.bez_afspraak_naam"
|
||||
+ " , b.bez_afspraak_bedrijf bez_bedrijf"
|
||||
+ " , b.bez_bezoekers_done"
|
||||
+ " , b.bez_bezoekers_out"
|
||||
+ " , b.bez_bezoekers_oproep"
|
||||
+ " , b.bez_afspraak_opmerking bez_bezoekers_opmerking"
|
||||
+ " , COALESCE(org.alg_gebouw_code, org.alg_terreinsector_code) || ' ' || COALESCE(org.alg_gebouw_naam, org.alg_terreinsector_naam) code"
|
||||
+ " FROM bez_bezoekers b"
|
||||
+ " , res_rsv_deel rrd"
|
||||
+ " , res_deel rd"
|
||||
+ " , ins_deel id"
|
||||
+ " , alg_v_allonrgoed_gegevens org"
|
||||
+ " WHERE b.bez_bezoekers_key = rrd.bez_bezoekers_key (+)"
|
||||
+ " AND rrd.res_deel_key = rd.res_deel_key(+)"
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key(+)"
|
||||
+ " AND id.ins_alg_ruimte_key = org.alg_onroerendgoed_keys(+)"
|
||||
+ " AND bez_afspraak_key = " + afspraak_key
|
||||
+ " AND rrd.res_deel_key = rd.res_deel_key(+)"
|
||||
+ " AND rd.res_ins_deel_key = id.ins_deel_key(+)"
|
||||
+ " AND id.ins_alg_ruimte_key = org.alg_onroerendgoed_keys(+)"
|
||||
+ " AND b.bez_afspraak_key = " + afspraak_key
|
||||
+ " ORDER BY bez_afspraak_naam";
|
||||
|
||||
var rst = new ResultsetTable({keyColumn: "bez_bezoekers_key",
|
||||
@@ -126,11 +140,14 @@ user.auth_required_or_abort(this_bez.canReadAny);
|
||||
|
||||
rst.addColumn(new Column({caption: L("lcl_vis_name"), content: "bez_afspraak_naam"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_vis_company"), content: "bez_bedrijf"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_remark"), content: "bez_bezoekers_opmerking"}));
|
||||
if (S("vis_parking_key") != -1 && this_bez.canWritePrk)
|
||||
{
|
||||
rst.addColumn(new Column({caption: "P", content: "code"}));
|
||||
}
|
||||
rst.addColumn(new Column({caption: L("lcl_bez_done_date"), content: "bez_bezoekers_done", datatype: "time"}));
|
||||
if (isoproep)
|
||||
rst.addColumn(new Column({caption: L("lcl_res_bez_called"), content: "bez_bezoekers_oproep", datatype: "time"}));
|
||||
rst.addColumn(new Column({caption: L("lcl_bez_out_date"), content: "bez_bezoekers_out", datatype: "time"}));
|
||||
|
||||
var cnt = rst.processResultset();
|
||||
|
||||
@@ -24,17 +24,37 @@ var DOCTYPE_Disable = true;
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="bez_flexkenmerk.inc" -->
|
||||
|
||||
<tbody>
|
||||
<%
|
||||
var notr = getQParamInt("notr", 0) == 1;
|
||||
|
||||
if (!notr)
|
||||
{ %>
|
||||
<tbody>
|
||||
<%
|
||||
}
|
||||
%>
|
||||
|
||||
|
||||
<%
|
||||
|
||||
generateFlexKenmerkCode ({ urole: getQParamSafe("urole"),
|
||||
bez_key: getQParamInt("bez_key", -1), // Bezoekers key
|
||||
reado: getQParamInt("reado", 0) == 1, // Readonly
|
||||
flexcolumns: getQParamInt("advanced", 0) == 1?1:S("bez_flexcolumns"),
|
||||
flexcolumns: getQParamInt("advanced", 0) == 1? 1 : S("bez_flexcolumns"),
|
||||
advanced: getQParamInt("advanced", 0) == 1, // Geavanceerd
|
||||
beznum: getQParamInt("beznum"), // Bezoeker nummer
|
||||
prs_key: getQParamInt("prs_key", -1), // Perslid key , wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
|
||||
cont_key: getQParamInt("cont_key", -1), // Contactpersoon key , wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
|
||||
requiredbyfield: getQParam("requiredbyfield", null) // required flexkenmerken is alleen required als veld met name=requiredbyfield is ingevuld
|
||||
requiredbyfield: getQParam("requiredbyfield", null), // required flexkenmerken is alleen required als veld met name=requiredbyfield is ingevuld
|
||||
flexstart: getQParam("flexstart", 1),
|
||||
flexend: getQParam("flexend", -1),
|
||||
notr: notr,
|
||||
nolabel: getQParamInt("notr", 0) == 1
|
||||
});
|
||||
|
||||
if (!notr)
|
||||
{ %>
|
||||
</tbody>
|
||||
<%
|
||||
}
|
||||
%>
|
||||
</tbody>
|
||||
@@ -52,6 +52,10 @@
|
||||
var symbol = getQParam("symbol", "../pictures/urhere.png");
|
||||
var showSymbol = getQParamInt("showSymbol",0)==1;
|
||||
|
||||
// Muur hoogte/ breedte
|
||||
var wallw = getQParamInt("wallw", 200);
|
||||
var wallh = getQParamInt("wallh", 5 * wallw);
|
||||
|
||||
if (getQParamInt("hideSymbol", 0) == 1)
|
||||
symbolX = -1;
|
||||
|
||||
@@ -288,7 +292,7 @@ function noAutoResize()
|
||||
var areas = data.Map.split("<area");
|
||||
|
||||
// Cubes
|
||||
var sc = 200 / gSLNKEvent.scaleX; // muurdikte
|
||||
var sc = <%= wallw %> / gSLNKEvent.scaleX; // muurdikte
|
||||
|
||||
var geometry = new THREE.CubeGeometry( sc, sc, sc );
|
||||
|
||||
@@ -313,7 +317,7 @@ function noAutoResize()
|
||||
cube.applyMatrix( m );
|
||||
|
||||
// Muur hoogte
|
||||
cube.scale.z = 5; // 5 keer de dikte
|
||||
cube.scale.z = <%= wallh / wallw %>; // 5 keer de dikte
|
||||
cube.position.z = cube.scale.z/2 * sc;
|
||||
|
||||
// Muur lengte
|
||||
@@ -326,6 +330,8 @@ function noAutoResize()
|
||||
scene.add( cube );
|
||||
}
|
||||
|
||||
// Werkplekken zijn ooit uitgeschakeld om 3D op IE11 te kunnen testen
|
||||
// Niemand heeft het nog gemist.
|
||||
// Werkplekken
|
||||
// var loader = new THREE.ColladaLoader();
|
||||
|
||||
@@ -393,6 +399,7 @@ function noAutoResize()
|
||||
}
|
||||
}
|
||||
|
||||
if (0)
|
||||
for (var wp in wpjson.werkplekken)
|
||||
{
|
||||
var wpdata = wpjson.werkplekken[wp];
|
||||
|
||||
@@ -9,12 +9,17 @@ var evt;
|
||||
var dragapproved=false;
|
||||
var dragElement,dragStartX,dragStartY;
|
||||
|
||||
// show of hide van dragElement scrollde ons navi-frame nogal eens.
|
||||
// Het lukte niet om dat te voorkomen dus gewoon positie onthouden
|
||||
// en vaak terugzetten.
|
||||
var naviTop;
|
||||
function dragmove(evt){
|
||||
if (!dragapproved)
|
||||
return;
|
||||
if (!evt.which==1 && !evt.button==1)
|
||||
{
|
||||
$(dragElement).hide();
|
||||
$("#navigationCell").scrollTop(naviTop);
|
||||
return;
|
||||
}
|
||||
if (!evt) evt=event;
|
||||
@@ -23,6 +28,7 @@ function dragmove(evt){
|
||||
.css('position', 'absolute')
|
||||
.css('left', temp1+evt.clientX-dragStartX + "px")
|
||||
.css('top', temp2+evt.clientY-dragStartY + "px");
|
||||
$("#navigationCell").scrollTop(naviTop);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -32,6 +38,7 @@ function dragstart(evt){
|
||||
var srcEl = evt.srcElement || evt.target;
|
||||
if (srcEl.className=="draggable")
|
||||
{
|
||||
/* global */ naviTop = $("#navigationCell").scrollTop();
|
||||
clearSelect();
|
||||
dragapproved=true;
|
||||
dragElement=srcEl;
|
||||
@@ -48,17 +55,19 @@ function dragend(evt){
|
||||
$(dragElement).show()
|
||||
.css('left', temp1 + "px")
|
||||
.css('top', temp2 + "px");
|
||||
$("#navigationCell").scrollTop(naviTop);
|
||||
if (typeof drag_onDragEnd == 'function')
|
||||
eval("drag_onDragEnd(dragElement,evt||event)")
|
||||
drag_onDragEnd.call(this, dragElement,evt||event);
|
||||
}
|
||||
}
|
||||
function mouseout(evt){
|
||||
if (dragapproved)
|
||||
{
|
||||
clearSelect();
|
||||
dragElement.style.display="none";
|
||||
$(dragElement).hide();
|
||||
$("#navigationCell").scrollTop(naviTop);
|
||||
if (typeof drag_onMouseOut == 'function')
|
||||
eval("drag_onMouseOut(dragElement,evt||event)")
|
||||
drag_onMouseOut.call(this, dragElement,evt||event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ var autfunction= "WEB_CADUSE";
|
||||
var authparams = user.checkAutorisation(autfunction); // voor kiezen *andere* verdiepingen
|
||||
|
||||
// buildTransitParam met de settings die voor alle verdiepingen gelijk zullen zijn.
|
||||
var mapper = "3dize.asp?x=1" + buildTransitParam("symbolX,symbolY,symbol,floor_key,bordlabel_key,werkplek,mode,contmode,nolabel,camx,camy,camz,hpix,vpix,scl,ox,oy,rot,wallColor,ambientLight,directionalLight,labelrot");
|
||||
var mapper = "3dize.asp?x=1" + buildTransitParam("symbolX,symbolY,symbol,floor_key,bordlabel_key,werkplek,mode,contmode,nolabel,camx,camy,camz,hpix,vpix,scl,ox,oy,rot,wallColor,ambientLight,directionalLight,labelrot,wallw,wallh");
|
||||
if (fac_usrrap_key > -1)
|
||||
{
|
||||
// parameters voor de rapportage, typisch de verdieping_key
|
||||
@@ -196,7 +196,11 @@ if (fac_usrrap_key > -1)
|
||||
"&disc_key=<%=disc_key%>" +
|
||||
"&discs=<%=discs%>" +
|
||||
"&thema=<%=thema_key%>" +
|
||||
"&themaI=<%=getQParamInt("themaI", -1)%>" +
|
||||
"&themaW=<%=getQParamInt("themaW", -1)%>" +
|
||||
"&label=<%=label_key%>" +
|
||||
"&labelI=<%=getQParamInt("labelI", -1)%>" +
|
||||
"&labelW=<%=getQParamInt("labelW", -1)%>" +
|
||||
"&antialias=<%=antialias%>" +
|
||||
"&highlight=" + window.alg_ruimte_key +
|
||||
"&ins_key=" + window.ins_key; // zojuist gereserveerd
|
||||
@@ -235,8 +239,7 @@ if (fac_usrrap_key > -1)
|
||||
{
|
||||
if (SlnkEvent.Key)
|
||||
{ // Zoek het object/ ruimte
|
||||
<% if (disc_key > 0) { %>
|
||||
if (SlnkEvent.Key.match(/^I:/)) // INS_DEEL
|
||||
if (String(SlnkEvent.Key).match(/^I:/)) // INS_DEEL
|
||||
{
|
||||
var intKey = parseInt(SlnkEvent.Key.substring(2),10);
|
||||
window.ins_key = intKey; // onthouden
|
||||
@@ -247,7 +250,6 @@ if (fac_usrrap_key > -1)
|
||||
FcltMgr.openModalDetail(url, "", { callback: callback_reserved, alwaysCallbackParams: {}, xnoClose: true });
|
||||
MMap.noAutoResize(false);
|
||||
}
|
||||
<% } else { %>
|
||||
if (SlnkEvent.Key > 0 && SlnkEvent.ContourLayer == "SLNK Contours") // RUIMTE
|
||||
{
|
||||
var alg_ruimte_key = SlnkEvent.Key;
|
||||
@@ -258,7 +260,6 @@ if (fac_usrrap_key > -1)
|
||||
FcltMgr.openModalDetail(url, "", { callback: callback_reserved, alwaysCallbackParams: {}, xnoClose: true });
|
||||
MMap.noAutoResize(false);
|
||||
}
|
||||
<% } %>
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -356,10 +357,10 @@ if (disc_key > 0)
|
||||
+ " AND id.ins_discipline_key = " + disc_key
|
||||
+ " AND THEMA.ins_deel_key = id.ins_deel_key "
|
||||
+ " AND thema.waarde >= ti.cad_legendawaarde_value"
|
||||
+ " AND NOT EXISTS"
|
||||
+ " AND NOT EXISTS" // geen grotere waarde waar hij onder zou vallen
|
||||
+ " (SELECT '1' FROM cad_legendawaarde ti2"
|
||||
+ " WHERE ti2.cad_legendawaarde_value > ti.cad_legendawaarde_value"
|
||||
+ " AND thema.waarde > ti2.cad_legendawaarde_value"
|
||||
+ " AND thema.waarde >= ti2.cad_legendawaarde_value"
|
||||
+ " AND ti2.cad_legenda_key = " + legenda_key + ")"
|
||||
+ " AND ti.cad_legenda_key = " + legenda_key
|
||||
+ " GROUP BY ar.alg_verdieping_key, ti.cad_legendawaarde_rgb, ti.cad_legendawaarde_rgb";
|
||||
@@ -375,7 +376,7 @@ else // Ruimte mode
|
||||
+ " AND NOT EXISTS"
|
||||
+ " (SELECT '1' FROM cad_legendawaarde ti2"
|
||||
+ " WHERE ti2.cad_legendawaarde_value > ti.cad_legendawaarde_value"
|
||||
+ " AND thema.waarde > ti2.cad_legendawaarde_value"
|
||||
+ " AND thema.waarde >= ti2.cad_legendawaarde_value"
|
||||
+ " AND ti2.cad_legenda_key = " + legenda_key + ")"
|
||||
+ " AND ti.cad_legenda_key = " + legenda_key
|
||||
+ " GROUP BY ar.alg_verdieping_key, ti.cad_legendawaarde_rgb, ti.cad_legendawaarde_rgb";
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user