112 Commits

Author SHA1 Message Date
Jos Groot Lipman
c782946ed5 FCLT#91522 SQL van de export aanroep wel gewoon loggen (code was van mgt-generic overgenomen of zo)
svn path=/Website/branches/v2025.3/; revision=71103
2025-12-01 13:53:27 +00:00
Maykel Geerdink
0f60c05ebb SGGR#91708: Mobiele fiatteringslijst werkt niet goed met instemmingsverzoeken.
svn path=/Website/branches/v2025.3/; revision=71100
2025-12-01 12:41:31 +00:00
Maykel Geerdink
101c57e6e7 WOXX#91655: Facilitor: Problemen bij taakvoltooiing WOST voor begroting 2026.
svn path=/Website/branches/v2025.3/; revision=71097
2025-12-01 10:50:59 +00:00
3382bd328e FCLT#91698 Bij vervolgmeldingen wel de mogelijkheid behouden om het behandelaar-veld in te vullen, als de vervolgmelding gemaakt wordt op een vakgroep die dat toestaat
svn path=/Website/branches/v2025.3/; revision=71096
2025-12-01 10:37:34 +00:00
Jos Groot Lipman
5229137ddb FCLT#91522 Bestanden controle ook bestanden met spaties in de naam zoals "Facilitor dummy 2035.pfx" ondersteunen
svn path=/Website/branches/v2025.3/; revision=71095
2025-12-01 10:16:52 +00:00
71a720cd2a HSLE#89732 Aanspreekpunt bij vervolgmeldingen onderdrukken (wanneer nvt)
svn path=/Website/branches/v2025.3/; revision=71094
2025-12-01 10:02:37 +00:00
23d7714e9d FCLT#91705 Stuk code was weggevallen
svn path=/Website/branches/v2025.3/; revision=71082
2025-11-28 08:48:51 +00:00
Jos Groot Lipman
4061b7ab8d Release 2025.3 Gold B
svn path=/Website/branches/v2025.3/; revision=71079
2025-11-27 15:27:04 +00:00
63320e02c8 FCLT#91578 Refactoring
svn path=/Website/branches/v2025.3/; revision=71076
2025-11-27 13:33:13 +00:00
e76cde3b6e BLCC#91692 decimale getallen werden niet goed geparsed in changeUurtarief()
svn path=/Website/branches/v2025.3/; revision=71074
2025-11-27 12:54:37 +00:00
7c83e1a95f FCLT#91578 punt 6 (typo ..)
svn path=/Website/branches/v2025.3/; revision=71071
2025-11-27 09:36:25 +00:00
63104cf64f FCLT#91578 7 & 8
svn path=/Website/branches/v2025.3/; revision=71070
2025-11-27 09:27:20 +00:00
Jos Groot Lipman
b5ef510c2d RWSN#91032 bbcode 's' voor strikethrough ook op bonnen ondersteunen.
svn path=/Website/branches/v2025.3/; revision=71067
2025-11-26 16:37:57 +00:00
6570d9c6f6 FCLT#91578 1-5
svn path=/Website/branches/v2025.3/; revision=71066
2025-11-26 16:10:20 +00:00
Jos Groot Lipman
a278d55627 FCLT#91676 Workaround: A certificate is required to complete client authentication
svn path=/Website/branches/v2025.3/; revision=71063
2025-11-26 15:34:33 +00:00
c99f613ebb FCLT#91593 Nieuwe Azure endpoint (en apikey) hardcoded in de asp-code (tijdelijk)
svn path=/Website/branches/v2025.3/; revision=71060
2025-11-26 13:59:03 +00:00
Erik Groener
668c710225 ZUYD#91563 Engelse tekst ruimte functie niet zichtbaar in drop-down veld
svn path=/Website/branches/v2025.3/; revision=71057
2025-11-26 11:18:23 +00:00
Maykel Geerdink
a6151bc5fd WOXX#91655: Facilitor: Problemen bij taakvoltooiing WOST voor begroting 2026.
svn path=/Website/branches/v2025.3/; revision=71056
2025-11-26 09:56:33 +00:00
Maykel Geerdink
a7e5c2b2c1 SINN#91425: Voeg status 3 toe in default.xsl voor compleet overzicht taken.
svn path=/Website/branches/v2025.3/; revision=71054
2025-11-26 07:20:38 +00:00
Jos Groot Lipman
145dca9f93 FCLT#91636 mld_kenmerk.mld_srtkenmerk_key bewerkbaar
svn path=/Website/branches/v2025.3/; revision=71048
2025-11-25 09:05:50 +00:00
Jos Groot Lipman
f37c0f13a8 FCLT#90835 Recent is blijkbaar window.fullScreen ook deprecated geraakt.
svn path=/Website/branches/v2025.3/; revision=71042
2025-11-24 16:02:57 +00:00
a40265dea5 FCLT#91578 Punten 1, 2 & 3
svn path=/Website/branches/v2025.3/; revision=71039
2025-11-24 13:45:08 +00:00
9c0d5b97b2 ARAI#91567 Default geen restrictie op de opdrachten die ik te zien krijg, obv actieve behandelaar
svn path=/Website/branches/v2025.3/; revision=71020
2025-11-20 15:38:35 +00:00
081ee768dd ARAI#90481 De (clientside) zoom & pan functies pas onload initialiseren
svn path=/Website/branches/v2025.3/; revision=71017
2025-11-20 13:26:18 +00:00
Jos Groot Lipman
4002dd1925 PZEE#91233 Stop doorverwijzing na QR-code melding in Facilitor
svn path=/Website/branches/v2025.3/; revision=71016
2025-11-20 13:25:41 +00:00
289dd726be FCLT#91522 De gradient uit de -kleine- iconen gehaald
svn path=/Website/branches/v2025.3/; revision=71008
2025-11-20 09:22:58 +00:00
76fdcc3537 VNOG#91542 Meldingen bij notities (over afgemelde meldingen) duidelijker stylen
svn path=/Website/branches/v2025.3/; revision=71007
2025-11-20 09:22:23 +00:00
Jos Groot Lipman
5b8146ed96 VLKC#91564 Vaste bijlagen niet juist meegenomen van VLKC naar Mareon
svn path=/Website/branches/v2025.3/; revision=71006
2025-11-19 15:09:27 +00:00
Jos Groot Lipman
044f2cffac FCLT#90149 Upgrade tsk package robuuster maken: ook de sample
svn path=/Website/branches/v2025.3/; revision=71005
2025-11-19 13:31:08 +00:00
Jos Groot Lipman
edc9f423ac FCLT#91561 Vertraging na upgrade: logfiles toont langere 'after' tijden
svn path=/Website/branches/v2025.3/; revision=71003
2025-11-19 13:26:35 +00:00
Maykel Geerdink
788b38c2dd PDKL#91525: Voorraad tellen venster werkt niet op productie/acceptatie.
svn path=/Website/branches/v2025.3/; revision=70985
2025-11-18 13:01:17 +00:00
ae70720f41 FCLT#91522 lcl naam aangepast, lcl nog niet, dus revert
svn path=/Website/branches/v2025.3/; revision=70981
2025-11-18 10:47:25 +00:00
1953236e81 LOGC#91523 fe-menu iconen-kleur terug
svn path=/Website/branches/v2025.3/; revision=70978
2025-11-18 09:54:03 +00:00
0f6f39f507 FCLT#91514 local_date_to (en from_) ook in deze 'tak' definieren
svn path=/Website/branches/v2025.3/; revision=70976
2025-11-18 08:25:19 +00:00
Jos Groot Lipman
70f3634c2b Release 2025.3 Gold
svn path=/Website/branches/v2025.3/; revision=70966
2025-11-17 15:31:17 +00:00
f56df8f653 UWVA#88793 Revert
svn path=/Website/branches/v2025.3/; revision=70965
2025-11-17 15:25:59 +00:00
Maykel Geerdink
d1cb311e7d PNBR#91355: Foutmelding bij openen bestelvoorraad via menubalk.
svn path=/Website/branches/v2025.3/; revision=70961
2025-11-17 13:00:12 +00:00
41a7cb7ce1 UWVA#88793 Verbruiksartikel/plaats-scope rekening laten houden met koppelzalen & verwijderdatum alleen toepassen vanaf die verwijderdatum
svn path=/Website/branches/v2025.3/; revision=70960
2025-11-17 12:47:13 +00:00
Jos Groot Lipman
9e062322ea BAMG#91494 Anonieme gebruiker kan bij melding via QR-code meldingen van anderen zien
svn path=/Website/branches/v2025.3/; revision=70958
2025-11-17 11:52:06 +00:00
Jos Groot Lipman
509bd7320a FCLT#90168 res_srtartikel_og_verwijder en res_ruimte_opstel_verwijder ook bewerkbaar via 'Elke tabel bewerken'
svn path=/Website/branches/v2025.3/; revision=70953
2025-11-17 09:00:37 +00:00
03b516835e UWVA#88793 ingang- & vervaldatum vd artikel-locatie-scope ook bij reeds gereserveerde artikelen controleren
svn path=/Website/branches/v2025.3/; revision=70945
2025-11-14 13:13:38 +00:00
e9a2b60e51 MARX#89309 plandatum in de opdrachten-lijst tonen, self-parameter toegevoegd en pagina-titel aangepast indien plandate(_from/_to) meegegeven
svn path=/Website/branches/v2025.3/; revision=70933
2025-11-13 15:09:15 +00:00
8f0d445447 VNOG#91416 ietsje herschreven
svn path=/Website/branches/v2025.3/; revision=70923
2025-11-13 09:35:04 +00:00
7326b26f7c VNOG#91416 Onbeschikbare regels alleen binnen de eigen (discipline-)tabel onzichtbaar maken
svn path=/Website/branches/v2025.3/; revision=70921
2025-11-13 09:23:42 +00:00
9035a8fcba FCLT#90168 line-height vh news iets kleiner, dan kan het aantal regels ook van 5 -> 6
svn path=/Website/branches/v2025.3/; revision=70914
2025-11-12 13:46:06 +00:00
38479e785b FCLT#90168 De OTAP 'disclaimer' zat mobile niet goed in beeld als er een mobile-plaatje op de voorpagina zichtbaar was, dat is nu aangepast (OTAP only dus)
svn path=/Website/branches/v2025.3/; revision=70912
2025-11-12 12:21:33 +00:00
59d396a9fa FCLT#90168 absolute paden gebruiken zodat de 'home'-knoppen ook werken vanuit een /appl/marx/bestand.asp
svn path=/Website/branches/v2025.3/; revision=70904
2025-11-12 09:32:30 +00:00
Erik Groener
aa0ab997bf FZKH#90768 Optie 'Annuleren' ontbreekt bij sjabloon-melding in Facilitor
reverted

svn path=/Website/branches/v2025.3/; revision=70893
2025-11-11 14:52:19 +00:00
Jos Groot Lipman
72c2f2dbdf Release 2025.3 RC3
svn path=/Website/branches/v2025.3/; revision=70892
2025-11-11 14:36:52 +00:00
bd83804fcf FCLT#90168 animatie-stijl iets aangepast bij de menuopties
svn path=/Website/branches/v2025.3/; revision=70891
2025-11-11 14:33:53 +00:00
Erik Groener
221f5617fe FZKH#90768 Optie 'Annuleren' ontbreekt bij sjabloon-melding in Facilitor
svn path=/Website/branches/v2025.3/; revision=70889
2025-11-11 11:09:50 +00:00
Jos Groot Lipman
841eeb2825 YKPN#91410 Weeknummer fout in urenscherm
svn path=/Website/branches/v2025.3/; revision=70888
2025-11-11 10:42:26 +00:00
Erik Groener
45916f3d08 UWVA#88793 Datummogelijkheden verbruiksartikelen catalogus per locatie
svn path=/Website/branches/v2025.3/; revision=70886
2025-11-11 10:18:46 +00:00
Erik Groener
bcd2d6d5b7 UWVA#88793 Datummogelijkheden verbruiksartikelen catalogus per locatie
svn path=/Website/branches/v2025.3/; revision=70883
2025-11-11 09:14:55 +00:00
9800eb7f39 BCGV#88984 Meerdere bb-plaatjes ondersteunen per mail
svn path=/Website/branches/v2025.3/; revision=70874
2025-11-10 15:35:44 +00:00
Erik Groener
e8ba082fe6 TDNL#89081 Automatische storingsmelding per object naar juiste leverancier regelen
- als er niet slechts 1 gemeenschappelijk contract bedrijf kan worden gevonden bij de objecten dan wordt er geen opdracht automatisch aangemaakt.

svn path=/Website/branches/v2025.3/; revision=70872
2025-11-10 14:33:58 +00:00
Maykel Geerdink
c201ca184d PNBR#91355: Foutmelding bij openen bestelvoorraad via menubalk.
svn path=/Website/branches/v2025.3/; revision=70868
2025-11-10 11:40:56 +00:00
Maykel Geerdink
a78b72b8d5 PNBR#91355: Foutmelding bij openen bestelvoorraad via menubalk.
svn path=/Website/branches/v2025.3/; revision=70864
2025-11-10 10:01:16 +00:00
Jos Groot Lipman
518ea45e0e BCGV#88984 Putorders ongeldige puo_fclt_web_apikey iets explicieter loggen
svn path=/Website/branches/v2025.3/; revision=70862
2025-11-10 09:14:00 +00:00
Jos Groot Lipman
dc02f88c4d BAMG#91379 Vraag: Voeg verval_datum veld toe voor Locaties in Facilitor API?
svn path=/Website/branches/v2025.3/; revision=70861
2025-11-10 08:42:31 +00:00
9a696caa68 LOGC#90264 Rekening houden met de mogelijkheid dat er geen openstaande taken zijn bij het afwijzen (voorkomt clientside fout die het scherm doet vastlopen)
svn path=/Website/branches/v2025.3/; revision=70860
2025-11-07 16:15:26 +00:00
070d123a02 LOGC#90445 Mijlpalen bij het aanmaken default 'actueel'
svn path=/Website/branches/v2025.3/; revision=70859
2025-11-07 15:50:45 +00:00
f361dd3580 LOGC#90445 Mijlpalen in de suggest worden gesorteerd op mijlpaal-datum, dat doen we vanaf nu precies andersom zodat de meeste relevante mijlpalen bovenaan staan (nu ook in mld-edit mode)
svn path=/Website/branches/v2025.3/; revision=70858
2025-11-07 15:42:17 +00:00
59c8524228 FCLT#90519 overbodige safe.html
svn path=/Website/branches/v2025.3/; revision=70853
2025-11-06 14:48:54 +00:00
071f470043 FCLT#90519 Als nieuwsscope = 1 categorie, pas dan de titel aan naar de categorie-omschrijving
svn path=/Website/branches/v2025.3/; revision=70852
2025-11-06 14:39:40 +00:00
Peter Feij
46e916a73f FCLT#90168 Moduleselector moet ook de modulenamen tonen
svn path=/Website/branches/v2025.3/; revision=70832
2025-11-05 13:17:40 +00:00
Peter Feij
3c9b207237 VBGO#88312 Persoonlijke verantwoordelijken werd niet in het overzicht getoond
svn path=/Website/branches/v2025.3/; revision=70830
2025-11-05 10:25:24 +00:00
e3e86a803b DLLG#90075 Aanpassing -> 2025.4, dus in 2025.3 onderdrukken
svn path=/Website/branches/v2025.3/; revision=70796
2025-11-04 10:46:02 +00:00
171b91f2aa LOGC#90445 Mijlpalen in de suggest worden gesorteerd op mijlpaal-datum, dat doen we vanaf nu precies andersom zodat de meeste relevante mijlpalen bovenaan staan
svn path=/Website/branches/v2025.3/; revision=70794
2025-11-04 10:13:56 +00:00
b611a6b79f FCLT#90168 line-height edit-mode label gelijk aan show-mode
svn path=/Website/branches/v2025.3/; revision=70789
2025-11-04 08:25:48 +00:00
Jos Groot Lipman
5db0846e7a FCLT#90168 Plattegrond direct verversen als je er een werkplek geboekt hebt
svn path=/Website/branches/v2025.3/; revision=70786
2025-11-03 15:39:20 +00:00
Jos Groot Lipman
ce7954f7f5 YASK#91294 Probleem met niet-unieke vakgroepnamen bij koppeling behandelteam
svn path=/Website/branches/v2025.3/; revision=70785
2025-11-03 14:52:09 +00:00
Erik Groener
ed4cfb8110 UWVA#88793 Datummogelijkheden verbruiksartikelen catalogus per locatie
- Alle wijzigingen mbt dit ticket sinds 26-10-2025 zijn teruggedraaid (muv lay-out). 

svn path=/Website/branches/v2025.3/; revision=70783
2025-11-03 14:32:41 +00:00
Erik Groener
5db83be5c6 UWVA#88793 Datummogelijkheden verbruiksartikelen catalogus per locatie
- In prodsearch.inc de ingangsdatum en vervaldatum van res_srtartikel_onrgoed niet gebruiken: er moet wel over alle locaties gezocht worden.

svn path=/Website/branches/v2025.3/; revision=70780
2025-11-03 14:00:30 +00:00
f79d49f62a SZDB#74054 Voor mobile, ook 'insflex' als kolom in ins.getobjectinspect_sql() opnemen
svn path=/Website/branches/v2025.3/; revision=70778
2025-11-03 09:24:12 +00:00
72c9bcb868 SGGR#90933 en ook voor afwijzen
svn path=/Website/branches/v2025.3/; revision=70777
2025-11-03 09:04:21 +00:00
d9f5ce53a4 SGGR#90235 Als je res_rsv_ruimte_van/tot met een trunced date vergelijkt, dan moet res_rsv_ruimte_van/tot ook getrunced worden
svn path=/Website/branches/v2025.3/; revision=70773
2025-10-31 19:54:45 +00:00
d260891ad9 FCLT#90519 Inactieve menutabjes iets donkerder
svn path=/Website/branches/v2025.3/; revision=70772
2025-10-31 18:01:30 +00:00
Jos Groot Lipman
e73a58dd83 FCLT#91196 CAD sterretje ('verkeerde ruimte') alleen tonen als je WEB_CADBOF of WEB_CADFOF hebt (in het bijzonder niet voor CADUSE)
svn path=/Website/branches/v2025.3/; revision=70750
2025-10-29 13:25:06 +00:00
Jos Groot Lipman
4f9f02e341 SCHG#91247 Vreemde replies op berichten zonder ingevulde prs_perslid_key
svn path=/Website/branches/v2025.3/; revision=70748
2025-10-29 10:42:04 +00:00
62655cc71c FCLT#90519 '1 van n' alleen tonen in 'carousel-mode'
svn path=/Website/branches/v2025.3/; revision=70747
2025-10-29 10:18:25 +00:00
Erik Groener
a827317958 TDNL#89081 Automatische storingsmelding per object naar juiste leverancier regelen
svn path=/Website/branches/v2025.3/; revision=70746
2025-10-29 10:03:08 +00:00
Jos Groot Lipman
abb3a52712 FCLT#90168 Iets beter oude notificaties direct opruimen. Minder verwarrend als je notificatie lijst bekijken
svn path=/Website/branches/v2025.3/; revision=70745
2025-10-29 09:09:27 +00:00
Erik Groener
ce8a257dfe TDNL#89081 Automatische storingsmelding per object naar juiste leverancier regelen
svn path=/Website/branches/v2025.3/; revision=70738
2025-10-28 15:45:15 +00:00
Jos Groot Lipman
393d2cad72 DLLG#91218 Vertalingsissue bij activiteitsoorten in Facilitor
svn path=/Website/branches/v2025.3/; revision=70725
2025-10-27 16:42:29 +00:00
Erik Groener
60682d4d60 SZDB#74054 Tonen in lijst van flexkenmerken ook in mobile ondersteunen
svn path=/Website/branches/v2025.3/; revision=70722
2025-10-27 15:30:46 +00:00
Jos Groot Lipman
803823985e FMHN#91038 Verschil beschikbaarheid parkeerplekken in Facilitor oplossen
svn path=/Website/branches/v2025.3/; revision=70720
2025-10-27 15:22:58 +00:00
Jos Groot Lipman
0223634371 UWVA#91195 Exportfunctie telefoonlijst beperken voor dataveiligheid
svn path=/Website/branches/v2025.3/; revision=70719
2025-10-27 13:26:18 +00:00
Jos Groot Lipman
478b7e0100 FCLT#91196 Audit gebruik telefoonlijst verbeteren
svn path=/Website/branches/v2025.3/; revision=70717
2025-10-27 13:05:34 +00:00
Jos Groot Lipman
f3451e6e8e FCLT#90168 Als qp_maxrows en qp_maxrows gelijk zijn hoef je niet te kunnen doorklikken voor 'meer'
svn path=/Website/branches/v2025.3/; revision=70715
2025-10-27 12:47:40 +00:00
3d08eec025 FCLT#90168 Ook voor undefined data/tijden een lege string teruggeven
svn path=/Website/branches/v2025.3/; revision=70713
2025-10-27 11:38:39 +00:00
158feb546e FCLT#90168 Bugfix; bij het aanmaken van een nieuw persoon is 'prs_inactief_datum' undefined, dat geeft een AiAi in toDateTimeString()
svn path=/Website/branches/v2025.3/; revision=70709
2025-10-27 11:20:02 +00:00
c6873f592a SCHG#91140 Als een melder een notitie maakt, dan staat het vinkje om de (eerste) uitvoerder te notificeren standaard aan (bij het ontbreken van een backoffice in de configuratie)
svn path=/Website/branches/v2025.3/; revision=70705
2025-10-27 10:01:49 +00:00
Jos Groot Lipman
72a96dc99f FCLT#90168 Iets duidelijkere putorders logging
svn path=/Website/branches/v2025.3/; revision=70703
2025-10-27 09:34:11 +00:00
Jos Groot Lipman
8e6bf43766 MARX#91176 Logging Planrequest fouten verbeteren
svn path=/Website/branches/v2025.3/; revision=70702
2025-10-25 11:33:06 +00:00
Maykel Geerdink
51dd981e99 PNBR#91165: Het is niet mogelijk om een totaaloverzicht van kunstsoorten uit te draaien.
svn path=/Website/branches/v2025.3/; revision=70697
2025-10-23 08:36:28 +00:00
Jos Groot Lipman
6caedf9d20 FCLT#90168 Unsafe user.naam() gebruik
svn path=/Website/branches/v2025.3/; revision=70692
2025-10-22 14:59:09 +00:00
fde97e77db FCLT#90519 tabblad-achtergrondkleur en actieve-tab-achtergrondkleur van 99,6% wit naar 98,8% wit (FEFEFE -> FCFCFCF), heeeeeel iets warmer
svn path=/Website/branches/v2025.3/; revision=70686
2025-10-22 10:10:07 +00:00
Peter Feij
9c16d3c64c FCLT#90168 klein beetje lucht in de gepresenteerde sensorwaarden van een object, was irritant
svn path=/Website/branches/v2025.3/; revision=70682
2025-10-21 16:41:00 +00:00
Peter Feij
0fde26b710 SGGR#91159 Overzicht van (sensor)objecten in ruimte toont veel te veel objecten
svn path=/Website/branches/v2025.3/; revision=70681
2025-10-21 16:38:18 +00:00
Jos Groot Lipman
fbdf22ce2b TDNL#89081 Automatische storingsmelding per object naar juiste leverancier regelen
svn path=/Website/branches/v2025.3/; revision=70679
2025-10-21 14:20:50 +00:00
Jos Groot Lipman
fbdac726de FCLT#90168 Iets betere topdesk logging
svn path=/Website/branches/v2025.3/; revision=70673
2025-10-21 09:26:15 +00:00
Maykel Geerdink
f952796c90 FCLT#91141: Beheer: ins_srtcontrole suggestbox geeft foutmelding bij "Elke tabel bekijken".
svn path=/Website/branches/v2025.3/; revision=70672
2025-10-21 08:29:09 +00:00
Jos Groot Lipman
59a1d7bc95 Release 2025.3 RC2
svn path=/Website/branches/v2025.3/; revision=70664
2025-10-20 14:19:48 +00:00
Jos Groot Lipman
14fedd2362 FCLT#86235 7za.exe van versie 19.00 naar versie 25.01
svn path=/Website/branches/v2025.3/; revision=70658
2025-10-20 09:06:40 +00:00
Jos Groot Lipman
9b402a03be DLLG#90434 Probleem met werkplekreserveringen en persoonselectie via plattegrond
svn path=/Website/branches/v2025.3/; revision=70657
2025-10-20 08:32:10 +00:00
1791f20605 BRCF#90569 +lcl
svn path=/Website/branches/v2025.3/; revision=70656
2025-10-20 08:05:01 +00:00
5cbda984e1 BRCF#90569 +tooltip
svn path=/Website/branches/v2025.3/; revision=70654
2025-10-20 07:56:13 +00:00
Jos Groot Lipman
5aca63408d BSSC#91004 E-mailnotificaties fiatteren ontbreken
svn path=/Website/branches/v2025.3/; revision=70653
2025-10-17 18:46:16 +00:00
8b46dbe160 FCLT#90519 Kleine aanpassingen (Codex :)
svn path=/Website/branches/v2025.3/; revision=70651
2025-10-17 13:13:44 +00:00
639bd46c79 Branch 2025.3
svn path=/Website/branches/v2025.3/; revision=70647
2025-10-17 08:47:44 +00:00
e78b068354 Branch 2026.1
svn path=/Website/branches/v2026.1/; revision=70646
2025-10-17 08:44:48 +00:00
84 changed files with 959 additions and 652 deletions

View File

@@ -132,7 +132,7 @@ BLOCK_END();
BLOCK_START("facFM", L("lcl_operations_block"), {icon: "fa-users-cog"});
manRWFIELD("loc_volgnr", "fld", L("lcl_alg_locatie_volgnr"), loc_volgnr, {maxlength: 3});
FCLTtimezoneselector("alg_tz", { initVal: alg_tz });
// FCLTtimezoneselector("alg_tz", { initVal: alg_tz }); -> 2025.4
FCLTcalendar("vervaldatum",
{ datum: vervaldatum,
initEmpty: vervaldatum==null,

View File

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

View File

@@ -41,6 +41,7 @@ function model_alg_locatie()
"mjb_score" : { dbs: "alg_locatie_mjb_score1" , typ: "number" , "label": L("lcl_alg_locatie_mjb_score1")},
"coordinate_x" : { dbs: "alg_locatie_x" , typ: "number" , "label": L("lcl_geoxcoord")},
"coordinate_y" : { dbs: "alg_locatie_y" , typ: "number" , "label": L("lcl_geoycoord")},
"expires" : { dbs: "alg_locatie_vervaldatum" , typ: "date" , "label": L("lcl_alg_vervaldatum")},
"externnr" : { dbs: "alg_locatie_externnr" , typ: "varchar" , "label": L("extern_nr"), "readonly": !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) },
"externsyncdate": { dbs: "alg_locatie_externsyncdate" , typ: "datetime" , "label": L("extern_syncdate"), "readonly": !(user.has("WEB_FACTAB") || user.has("WEB_FACXNR")) },
"seqnr" : { dbs: "alg_locatie_volgnr" , typ: "number" , "label": L("lcl_alg_locatie_volgnr") },

View File

@@ -37,7 +37,7 @@ function model_mld_discipline_discipline()
"required": true,
"insertonly": true,
"foreign": {
"tbl": "(SELECT ins_discipline_key, ins_discipline_omschrijving"
"tbl": "(SELECT ins_discipline_key, isd.ins_srtdiscipline_omschrijving || ' - ' || ins_discipline_omschrijving AS ins_discipline_omschrijving"
+ " FROM ins_srtdiscipline isd, ins_tab_discipline td, mld_disc_params dp"
+ " WHERE isd.ins_srtdiscipline_key = td.ins_srtdiscipline_key"
+ " AND td.ins_discipline_key = dp.mld_ins_discipline_key"
@@ -54,7 +54,7 @@ function model_mld_discipline_discipline()
"required": true,
"insertonly": true,
"foreign": {
"tbl": "(SELECT ins_discipline_key, ins_discipline_omschrijving"
"tbl": "(SELECT ins_discipline_key, ins_discipline_omschrijving || ' (' || ins_srtdiscipline_omschrijving || ')' AS ins_discipline_omschrijving"
+ " FROM ins_srtdiscipline isd, ins_tab_discipline td, mld_disc_params dp"
+ " WHERE isd.ins_srtdiscipline_key = td.ins_srtdiscipline_key"
+ " AND td.ins_discipline_key = dp.mld_ins_discipline_key"

View File

@@ -114,7 +114,8 @@ function model_mld_melding_tag()
"active": {
"dbs": "mld_melding_tag_actief",
"label": L("mld_melding_tag_actief"),
"typ": "check0"
"typ": "check0",
"defaultvalue": 1
},
"begindate": {
"dbs": "mld_melding_tag_datum_van",

View File

@@ -1918,6 +1918,7 @@
voorraad_srtdeel: function _voorraad_srtdeel(pautfunction, params)
{
// Valid and supported parameters are:
// params.catalogus_type: key
// params.catalogus_key : key
// params.besgroep_key :
// params.item_key :
@@ -1988,6 +1989,9 @@
+ " AND g.ins_discipline_key = bd.ins_discipline_key"
+ " AND bd.ins_discipline_key = dp.bes_ins_discipline_key"
+ " AND sd.bes_srtdeel_verwijder IS NULL"
+ (params.catalogus_type
? " AND dp.bes_disc_params_bestelmode = " + params.catalogus_type
: "")
+ (params.catalogus_key
? " AND dp.bes_ins_discipline_key_inkoop = " + params.catalogus_key
+ " AND (sd.bes_srtdeel_vervaldatum IS NULL OR sd.bes_srtdeel_vervaldatum > SYSDATE)"
@@ -2071,6 +2075,9 @@
+ " AND g.ins_discipline_key = bd.ins_discipline_key"
+ " AND bd.ins_discipline_key = dp.bes_ins_discipline_key"
+ " AND sd.bes_srtdeel_verwijder IS NULL"
+ (params.catalogus_type
? " AND dp.bes_disc_params_bestelmode = " + params.catalogus_type
: "")
+ (params.catalogus_key
? " AND dp.bes_ins_discipline_key_inkoop = " + params.catalogus_key
+ " AND (sd.bes_srtdeel_vervaldatum IS NULL OR sd.bes_srtdeel_vervaldatum > SYSDATE)"
@@ -2187,6 +2194,9 @@
+ " AND bd1.ins_discipline_key = dp1.bes_ins_discipline_key"
+ " AND sd1.bes_srtdeel_nr = sd.bes_srtdeel_nr" // Dezelfde omschrijving.
+ " AND dp1.bes_ins_discipline_key_inkoop = bd.ins_discipline_key)" // Gekoppeld aan inkoopcatalogus.
+ (params.catalogus_type
? " AND dp.bes_disc_params_bestelmode = " + params.catalogus_type
: "")
+ (params.catalogus_key
? " AND bd.ins_discipline_key = " + params.catalogus_key
+ " AND (sd.bes_srtdeel_vervaldatum IS NULL OR sd.bes_srtdeel_vervaldatum > SYSDATE)"
@@ -2283,6 +2293,9 @@
+ " AND bd1.ins_discipline_key = dp1.bes_ins_discipline_key"
+ " AND sd1.bes_srtdeel_nr = sd.bes_srtdeel_nr" // Dezelfde omschrijving.
+ " AND dp1.bes_ins_discipline_key_inkoop = bd.ins_discipline_key)" // Gekoppeld aan inkoopcatalogus.
+ (params.catalogus_type
? " AND dp.bes_disc_params_bestelmode = " + params.catalogus_type
: "")
+ (params.catalogus_key
? " AND bd.ins_discipline_key = " + params.catalogus_key
+ " AND (sd.bes_srtdeel_vervaldatum IS NULL OR sd.bes_srtdeel_vervaldatum > SYSDATE)"
@@ -2377,6 +2390,9 @@
+ " AND bd1.ins_discipline_key = dp1.bes_ins_discipline_key"
+ " AND sd1.bes_srtdeel_nr = sd.bes_srtdeel_nr" // Dezelfde omschrijving.
+ " AND dp1.bes_ins_discipline_key_inkoop = bd.ins_discipline_key)" // Gekoppeld aan inkoopcatalogus.
+ (params.catalogus_type
? " AND dp.bes_disc_params_bestelmode = " + params.catalogus_type
: "")
+ (params.catalogus_key
? " AND bd.ins_discipline_key = " + params.catalogus_key
+ " AND (sd.bes_srtdeel_vervaldatum IS NULL OR sd.bes_srtdeel_vervaldatum > SYSDATE)"

View File

@@ -47,12 +47,13 @@ function updateDisc(pautfunction, pdisc, psrtgroup, psrtdeel)
$("#instock").closest("tr").show();
}
var ldisctype = $('#disctype :selected').val();
var ldisctype = $('#disctype :selected').val() || -1;
$("#disc").load("../Shared/loadBESDisc.asp?" + serializeObj(
{ autfunction: pautfunction,
disctype: ldisctype,
module: "bes",
emptyOption: "",
selectjustone: 1,
disc_key_arr: (pdisc? pdisc : []) }),
function ()
{ // Selecteer eventueel de initi<74>le items die meegegeven kunnen worden
@@ -68,6 +69,7 @@ function updateSrtGroup(pautfunction, psrtgroup, psrtdeel)
disc_key_arr: ldis_key,
module: "bes",
emptyOption: "",
selectjustone: 1,
srtgroup: (psrtgroup? psrtgroup : []) }),
function ()
{ // Selecteer eventueel de initi<74>le items die meegegeven kunnen worden
@@ -84,6 +86,7 @@ function updateSrtDeel(pautfunction, psrtdeel)
srtgroup_key_arr: lsrtgroup,
module: "bes",
emptyOption: "",
selectjustone: 1,
srtdeel: (psrtdeel? psrtdeel : []),
verwijderd: (maninfo ? 1 : ""),
datefrom: (maninfo ? $('#date_from').val() : "")

View File

@@ -25,6 +25,7 @@ function bes_voorraad_list (pautfunction, params)
// params.urole : the usuals two-letter lowercase string
// params.outputmode : print to 0 = screen, 1 = printer, 2 = excel, etc.
// params.showall : boolean (true | false)
// params.catalogus_type: key
// params.catalogus_key : key
// params.besgroep_key :
// params.item_key :
@@ -212,8 +213,8 @@ function bes_voorraad_list (pautfunction, params)
rst.addColumn(new Column({caption: "Uit-maar nog in magazijn", content: "aantal_uitmaarnoginmagazijn", datatype: "number", total: true}));
rst.addColumn(new Column({caption: L("lcl_bes_voorraad"), content: "voorraad", datatype: "number", total: true}));
rst.addColumn(new Column({caption: L("lcl_bes_unity"), content: "eenheid_extern"}));
rst.addColumn(new Column({caption: L("lcl_bes_voorraadmin"), content: "voorraadmin"}));
rst.addColumn(new Column({caption: L("lcl_bes_voorraadmax"), content: "voorraadmax"}));
rst.addColumn(new Column({caption: L("lcl_bes_voorraadmin"), content: "voorraadmin", datatype: "number"}));
rst.addColumn(new Column({caption: L("lcl_bes_voorraadmax"), content: "voorraadmax", datatype: "number"}));
rst.addColumn(new Column({caption: L("lcl_bes_lopend"), content: "aantal_open_order", datatype: "number", total: true}));
rst.addColumn(new Column({caption: L("lcl_bes_bestellen"), content: fncolTeBestellen, datatype: "number", total: true}));
}
@@ -245,4 +246,3 @@ function bes_voorraad_list (pautfunction, params)
<%
}
%>

View File

@@ -78,6 +78,16 @@ var authparams = user.checkAutorisation(autfunction);
<input type="hidden" name="urole" value="<%=urole%>">
<% // <!-- Catalogus type -->
var sql = "SELECT SUM(CASE"
+ " WHEN dp.bes_disc_params_bestelmode = 0"
+ " THEN 1"
+ " ELSE 0"
+ " END) aantal_uitcat"
+ " , SUM(CASE"
+ " WHEN dp.bes_disc_params_bestelmode = 1"
+ " THEN 1"
+ " ELSE 0"
+ " END) aantal_vrij"
+ " , SUM(CASE"
+ " WHEN dp.bes_disc_params_bestelmode = 2"
+ " THEN 1"
+ " ELSE 0"
@@ -89,12 +99,29 @@ var authparams = user.checkAutorisation(autfunction);
+ " END) aantal_actueel"
+ " FROM bes_discipline bd"
+ " , bes_disc_params dp"
+ " WHERE bd.ins_discipline_key = dp.bes_ins_discipline_key";
+ " WHERE bd.ins_discipline_key = dp.bes_ins_discipline_key"
+ " AND bd.ins_discipline_verwijder IS NULL"
+ " AND (bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
+ " FROM bes_disc_params dp"
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
+ " OR dp.bes_disc_params_bestelmode = 3)"
+ " AND ins_discipline_key IN (SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
+ " , fac_functie f"
+ " WHERE g.prs_perslid_key = " + user_key
+ " AND f.fac_functie_key = g.fac_functie_key "
+ " AND f.fac_functie_code = " + safe.quoted_sql(autfunction) + ")";
var oRs = Oracle.Execute(sql);
var aantal_bestel = oRs("aantal_bestel").Value;
var aantal_actueel = oRs("aantal_actueel").Value;
var aantal_uitcat = oRs("aantal_uitcat").Value; // Uit catalogus(0).
var aantal_vrij = oRs("aantal_vrij").Value; // Vrij aanmaken(1).
var aantal_bestel = oRs("aantal_bestel").Value; // Bestellijst(2).
var aantal_actueel = oRs("aantal_actueel").Value; // Actuele lijst(3).
oRs.Close();
var sql_arr = [];
if (aantal_uitcat > 0)
sql_arr.push("SELECT 0, " + safe.quoted_sql("Uit catalogus") + " FROM DUAL");
if (aantal_vrij > 0)
sql_arr.push("SELECT 1, " + safe.quoted_sql("Vrij aanmaken") + " FROM DUAL");
if (aantal_bestel > 0)
sql_arr.push("SELECT 2, " + safe.quoted_sql(L("lcl_bes_orderlist")) + " FROM DUAL");
if (aantal_actueel > 0)
@@ -107,6 +134,7 @@ var authparams = user.checkAutorisation(autfunction);
onChange: 'updateDisc("' + autfunction + '");', // discChanged
trclass: "primsearch",
emptyOption: "",
selectjustone: true, // required zorgt er eigenlijk ook al voor dat als er maar 1 waarde is, dat deze wordt geselecteerd.
required: true
});
@@ -114,10 +142,13 @@ var authparams = user.checkAutorisation(autfunction);
var sql = "SELECT bd.ins_discipline_key"
+ " , " + lcl.xsqla('bd.ins_discipline_omschrijving','bd.ins_discipline_key')
+ " FROM bes_discipline bd"
+ " WHERE bd.ins_discipline_verwijder IS NULL"
+ " AND bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
+ " FROM bes_disc_params dp"
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
+ " , bes_disc_params dp"
+ " WHERE bd.ins_discipline_key = dp.bes_ins_discipline_key"
+ " AND bd.ins_discipline_verwijder IS NULL"
+ " AND (bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
+ " FROM bes_disc_params dp"
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
+ " OR dp.bes_disc_params_bestelmode = 3)"
+ " AND ins_discipline_key IN (SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
+ " , fac_functie f"
@@ -131,7 +162,8 @@ var authparams = user.checkAutorisation(autfunction);
label: L("lcl_bes_Catalogus"),
onChange: 'updateSrtGroup("' + autfunction + '");', // discChanged
trclass:"primsearch",
emptyOption: ""
emptyOption: "",
selectjustone: true
});
%>
@@ -142,7 +174,8 @@ var authparams = user.checkAutorisation(autfunction);
label: L("lcl_bes_srtgroup"),
onChange: 'updateSrtDeel("' + autfunction + '");', // srtgroupChanged
trclass: "secsearch",
emptyOption: ""
emptyOption: "",
selectjustone: true
}); %>
<!-- Item select box -->
@@ -151,14 +184,15 @@ var authparams = user.checkAutorisation(autfunction);
{ initKey: srtdeel,
label: L("lcl_bes_srtdeel"),
trclass: "secsearch",
emptyOption: ""
emptyOption: "",
selectjustone: true
}); %>
<script type="text/javascript">
// Laad de groupen en de items
// Selecteer eventueel de initi<74>le groepen en items die meegegeven kunnen worden
$(function()
{
updateDisc("<%=autfunction%>", "<%=disc%>", "<%=srtgroup%>", "<%=srtdeel%>");
updateDisc("<%=autfunction%>", "<%=disc%>", "<%=srtgroup%>", "<%=srtdeel%>");
});
</script>
<% SEARCH_BLOCK_END();

View File

@@ -70,6 +70,7 @@ else
{ urole : urole,
outputmode: outputmode,
showall: showall,
catalogus_type: (disctype != -1? disctype : null),
catalogus_key: (disc != -1? disc : null),
besgroep_key: (besgroep_key != -1? besgroep_key : null),
item_key: (item_key != -1? item_key : null),

View File

@@ -17,7 +17,8 @@ bez =
// t.prs_afdeling_key (nog) niet
var sql_terr = "SELECT alg_terreinsector_key"
+ " FROM alg_v_aanwezigterreinsector t WHERE 1=1";
+ " FROM alg_v_aanwezigterreinsector t"
+ " WHERE (t.alg_terreinsector_vervaldatum IS NULL OR t.alg_terreinsector_vervaldatum > TRUNC(SYSDATE))";
var pafparams = user.checkAutorisation("WEB_BEZPAF", true);
var autlevel = 9;
if (pafparams)

View File

@@ -322,7 +322,7 @@ function buildSymbols(cHandle, symbolProps)
// Zoniet markeer hem dan met een *STAR er achter
var rnr = cHandle.FindInContour(oRs("dwgX").Value, oRs("dwgY").Value);
// Let op: Sinds 5.3.2 zit R:12345 in de dwf-contour-key
if (!rnr || !rnr.match(/^R:/) || rnr.substr(2) != oRs("cadkey").Value)
if ((!rnr || !rnr.match(/^R:/) || rnr.substr(2) != oRs("cadkey").Value) && user.has(["WEB_CADBOF", "WEB_CADFOF"]))
{
var symbol = cHandle.AddSymbol(oRs("dwgX").Value+scl*S("fg_dobbelDist")/2, oRs("dwgY").Value+scl*S("fg_dobbelDist")/2,"*STAR");
symbol.Scale = scl*0.25;

View File

@@ -236,7 +236,7 @@ if (fac_usrrap_key > -1)
} );
}
else
MMap.Refresh();
MMap.Refresh(false, true); // geen autozoom
}

View File

@@ -127,15 +127,20 @@ cnt = { setcontractstatus:
// Tot welk bedrag is er al goedgekeurd.
var sql = "SELECT cnt_contract_approved"
+ " , cnt_contract_kosten"
+ " , dp.cnt_disc_params_approve_new"
+ " FROM cnt_contract c"
+ " WHERE cnt_contract_key = " + cnt_key;
+ " , cnt_disc_params dp"
+ " WHERE cnt_contract_key = " + cnt_key
+ " AND c.ins_discipline_key = dp.cnt_ins_discipline_key";
var oRs = Oracle.Execute(sql);
var kosten = oRs("cnt_contract_kosten").Value? oRs("cnt_contract_kosten").Value : 0;
var approved = oRs("cnt_contract_approved").Value? oRs("cnt_contract_approved").Value : -1;
var nieuwAltijdAccorderen = (oRs("cnt_disc_params_approve_new").Value == 1);
oRs.Close();
var functie_code;
if (kosten <= S("cnt_contract_limit1")) // Dit eerst testen i.v.m. Ter goedkeuring. Verder moet sowieso goedgekeurd worden.
if (!kosten && nieuwAltijdAccorderen)
functie_code = "WEB_CNTGO1";
else if (kosten <= S("cnt_contract_limit1")) // Dit eerst testen i.v.m. Ter goedkeuring. Verder moet sowieso goedgekeurd worden.
return []; // Het bedrag is lager als de eerste limiet. Het contract hoeft niet goed gekeurd te worden, dus een lege fiatteurs array teruggeven.
else if ((S("cnt_approval_all") == 0 && approved <= S("cnt_contract_limit1")) || (S("cnt_approval_all") == 1 && kosten <= S("cnt_contract_limit2")))
functie_code = "WEB_CNTGO1";
@@ -1081,6 +1086,7 @@ cnt = { setcontractstatus:
+ " , dp.cnt_disc_params_huurder"
+ " , dp.cnt_disc_params_opties"
+ " , dp.cnt_disc_params_ksverplicht"
+ " , dp.cnt_disc_params_approve_new"
+ " , cc.cnt_contract_mantel_key"
+ " , mc.cnt_contract_nummer_intern mantelcontractnummer"
+ " , mc.cnt_contract_omschrijving mantelomschrijving"
@@ -1178,7 +1184,8 @@ cnt = { setcontractstatus:
nnScope: oRs("nnScope").Value,
isAbonnement: oRs("bes_disc_params_contract").Value == 1,
magAutomatischVerlengen: oRs("cnt_disc_params_opties").Value == 1,
openfinref: oRs("openfinref").Value > 0
openfinref: oRs("openfinref").Value > 0,
nieuwAltijdAccorderen: oRs("cnt_disc_params_approve_new").Value == 1
};
oRs.Close()
@@ -1248,7 +1255,8 @@ cnt = { setcontractstatus:
cresult.canGoedkeur1 = cresult.canWrite("WEB_CNTGO1") && // Heb ik de rechten om goed te keuren op dit niveau 1?
terGoedkeuring && // Moet het contract gekeurd worden (juiste status)
((S("cnt_approval_all") == 0 && cnt_info.kosten >= S("cnt_contract_limit1")) || // Zijn de kosten hoger als de limiet
((!cnt_info.kosten && cnt_info.nieuwAltijdAccorderen) || // Zonder kosten toch accorderen?
(S("cnt_approval_all") == 0 && cnt_info.kosten >= S("cnt_contract_limit1")) || // Zijn de kosten hoger als de limiet
(S("cnt_approval_all") == 1 && cnt_info.kosten <= S("cnt_contract_limit2"))) && // Zijn de kosten onder mijn limiet om volledig goed te keuren
cnt_info.approved <= S("cnt_contract_limit1"); // Welke goedkeur? 1, 2 of 3?
cresult.canGoedkeur2 = cresult.canWrite("WEB_CNTGO2") &&

View File

@@ -30,13 +30,11 @@ var isNew = (cnt_key < 0);
var sql = "SELECT cdp.cnt_srtcontract_type"
+ " , cdp.cnt_disc_params_opties"
+ " , cdp.cnt_disc_params_approve_new"
+ " FROM cnt_disc_params cdp"
+ " WHERE cdp.cnt_ins_discipline_key = " + cnt_disc_key;
var oRs = Oracle.Execute(sql);
var srtcontract_type = oRs("cnt_srtcontract_type").Value;
var magAutomatischVerlengen = (oRs("cnt_disc_params_opties").Value & 1) == 1;
var nieuwAltijdAccorderen = (oRs("cnt_disc_params_approve_new").Value == 1);
var doapprove = S("cnt_contract_approval") == 1;
oRs.Close();
@@ -71,14 +69,8 @@ else
var authparams = user.checkAutorisation(autfunction);
// Als het approval mechanisme actief is dan altijd eerst naar status Nieuw(2),
// Staat in het contractsoort dat een nieuw contract altijd geaccordeerd moet worden dan wordt de status "Ter goedkeuring" (3).
// uitgezonderd de Mantel/Master contracten, die gaan altijd langs het goedkeuringsproces.
var nieuw_cnt_status = 0;
if (doapprove && srtcontract_type != 6)
{
nieuw_cnt_status = (nieuwAltijdAccorderen ? 3 : 2);
}
var cnt_info = { contract_status: nieuw_cnt_status };
var cnt_info = { contract_status: (doapprove && srtcontract_type != 6? 2 : 0) }
}
// Bestaat het contractnummer al?
@@ -220,7 +212,6 @@ else
}
else
// Zetten van de contact status. Indien het contract approval mechanisme actief is dan moet de contract status Nieuw(2) worden en anders Actief(0).
// Staat in het contractsoort dat een nieuw contract altijd geaccordeerd moet worden dan wordt de status "Ter goedkeuring" (3).
// Uitgezonderd de Mantel/Master contracten, die gaan altijd langs het goedkeuringsproces naar de status Actief(0).
cnt.setcontractstatus(cnt_key, cnt_info.contract_status); // Zorgt ook voor tracking en daarmee notificatie.
}

View File

@@ -179,7 +179,8 @@ ANONYMOUS_Allowed = 1;
var status_ok = "200,201,204,206";
if (status_ok.indexOf(status) == -1)
{
errmsg = "TOPdesk error. Status: " + http_request.status;
errmsg = "TOPdesk error. Status: " + http_request.status + " " + http_request.statusText
+ ":\n" + http_request.responseText;
}
else
{

View File

@@ -66,9 +66,17 @@ if (user_key > 0)
+ " SET fac_notificatie_status = BITAND (fac_notificatie_status, 255-8)" // Verwerkte popup
+ " WHERE fac_notificatie_key IN (" + resetnotis.join(",") + ")";
Oracle.Execute(sql);
// En opruimen (als er niets voor Putorders over is)
var sql2 = "DELETE fac_notificatie"
+ " WHERE fac_notificatie_status IN (0, 16)" // STATUS_SUMMARY_XSL 16 is niet interessant
+ " AND fac_notificatie_systeemadres IS NULL"
+ " AND prs_bedrijfadres_key IS NULL"
+ " AND fac_notificatie_key IN (" + resetnotis.join(",") + ")";
Oracle.Execute(sql2);
}
}
Response.Write(JSON.stringify(result));
%>
<% ASPPAGE_END(); %>
<% ASPPAGE_END(); %>

View File

@@ -10,6 +10,7 @@
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="fac.inc" -->
<%
@@ -17,25 +18,6 @@ FCLTHeader.Requires({ plugins:["jQuery"] })
var autfunction = "WEB_LAYOUT";
var authparams = user.checkAutorisation(autfunction);
var export_template = S("csstemplate") || {};
export_template.version = FCLTVersion;
function prettyJson(j)
{
try
{
var xx = JSON.stringify(JSON.parse(j), null, 2);
if (xx == "null")
return "";
return xx;
}
catch (e)
{
return j;
};
};
%>
<html>
@@ -45,65 +27,27 @@ function prettyJson(j)
$(function()
{
$("#main-color").on("change", _ => {
$("#main-color-contrast").val(0);
});
$("#accent-color").on("change", _ => {
$("#accent-color-contrast").val(0);
});
$("#frameheader-bg-color").on("change", function (e) {
var frameHeaderBackgroundColor = [
"#F2F2F2",
"color-mix(in srgb, var(--main-color) 10%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 50%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 90%, rgb(255, 255, 255))"
][this.value];
$(this).closest("td").next("td").find(".color-preview").css("color", frameHeaderBackgroundColor);
})
$('textarea').autogrow();
FcltMgr.startEdit(window);
});
function isValidJsonString(text) {
try {
JSON.parse(text);
} catch (e) {
return false;
}
return true;
}
function loadImportcss($dialog)
{
var defaultTemplate = JSON.parse("<%=safe.jsstring(JSON.stringify(FCLTHeader.defaultTemplate))%>");
var jsonstring = $dialog.find("#cssimport").val() || '{}';
if (!isValidJsonString(jsonstring))
{
FcltMgr.alert(L("lcl_obj_bad_value"));
return;
}
var css = JSON.parse(jsonstring);
for (name in defaultTemplate)
{
if (name in css)
{
$("td input[name="+name+"]").val(css[name]);
if (name.slice(-5) === "image") {
$("[type=button][aria-controls=" + name + "]").val(css[name]);
}
}
else
{
$("td input[name="+name+"]").val('');
}
}
}
function doImportcss()
{
var params = { title: L("lcl_paste")
, oktekst: L("lcl_ok")
, ishtmlsafe: true
, fncallback: loadImportcss
, buttons: [{ text: L("lcl_cancel"), icon: "fal fa-fw fa-undo", class: "alertCancel" }]
};
var page_content = '<textarea id="cssimport" class="fldtxt" rows="4" cols="50"></textarea>';
FcltMgr.mydialog( page_content, params);
}
function doExportcss()
{
var params = { title: L("lcl_transport")
, oktekst: L("lcl_ok")
, ishtmlsafe: true
};
var page_content = '<textarea class="fldtxt" rows="4" cols="50" onclick="this.select()" readonly><%=safe.jsstring(JSON.stringify(export_template))%></textarea>';
FcltMgr.mydialog( page_content, params);
}
function doSubmit()
{
FcltMgr.confirm(L("lcl_fac_save_templateq"), function() {
@@ -164,49 +108,115 @@ function prettyJson(j)
<tr><th><%=L("lcl_fac_template_name")%></th>
<th>&nbsp;</th>
<th><%=L("lcl_fac_template_default")%></th>
<th><%=L("lcl_fac_template_newval")%>&nbsp;<input type='button' class='button' value='<%=L("lcl_paste")%>' onclick='doImportcss()'></th>
<th><%=L("lcl_fac_template_newval")%></th>
<th>&nbsp;</th>
<th><%=L("lcl_fac_template_curval")%>&nbsp;<input type='button' class='button' value='<%=L("lcl_transport")%>' onclick='doExportcss()'></th></tr>
<th><%=L("lcl_fac_template_curval")%></th></tr>
<%
for (itm in FCLTHeader.defaultTemplate)
for (item in FCLTHeader.defaultTemplate)
{
var act = "";
if (itm in S("csstemplate"))
act = S("csstemplate")[itm];
var con = "";
if (itm in S("csstemplate"))
con = S("csstemplate")[itm];
var defaultValue = FCLTHeader.defaultTemplate[item];
var actualValue = "";
if (item in S("csstemplate")) {
actualValue = S("csstemplate")[item];
}
var isColor = function(s) { return (s).match(/^#(?!#)|^rgb/i); };
var isImage = item.slice(-5) === "image";
// Voor kleurwaarden tonen we een kleurvoorbeeld, dat bepalen we aan de hand van onze defaultwaarde
%><tr><td class='label'><label for='<%=safe.html(itm)%>'><%=safe.html(itm)%></label></td>
<td style="text-align:right"><% =(FCLTHeader.defaultTemplate[itm]).match(/^#(?!#)|^rgb/i) ? '<div class="color-preview" style="color:'+safe.htmlattr(FCLTHeader.defaultTemplate[itm])+'">' + I("fa-square fa-2x", { fastyle: "fas" }) + '</div>' : '' %></td>
<td><%=safe.html(FCLTHeader.defaultTemplate[itm])%></td>
<% if (itm.slice(-5) === "image") {
%><tr><td class='label'><label for='<%=safe.html(item)%>'><%=safe.html(item)%></label></td>
<td style="text-align:right">
<% if (isColor(defaultValue)) { %>
<div class="color-preview" style="color:<%=safe.htmlattr(defaultValue)%>"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div>
<% } %>
</td>
<td><%=safe.html(defaultValue)%></td>
<% if (isImage) {
Response.Write(" <td class='filepicker'>"
+ " <input type='hidden' id='" + safe.htmlattr(itm) + "' name='" + safe.htmlattr(itm) + "' value='" + safe.htmlattr(con) + "'>"
+ " <input type='hidden' id='" + safe.htmlattr(item) + "' name='" + safe.htmlattr(item) + "' value='" + safe.htmlattr(actualValue) + "'>"
+ " <span class='button-icon-wrapper file-picker'>"
+ " <span class='starticon'>" + I("fa-file-image") + "</span>"
+ " <input type='button' class='button symbol-upload' title='" + safe.htmlattr(itm) + "' value='" + safe.htmlattr(con || L("lcl_image")) + "'"
+ " aria-controls='" + itm + "'"
+ " data-default-title='" + safe.htmlattr(itm) + "'"
+ " <input type='button' class='button symbol-upload' title='" + safe.htmlattr(item) + "' value='" + safe.htmlattr(actualValue || L("lcl_image")) + "'"
+ " aria-controls='" + item + "'"
+ " data-default-title='" + safe.htmlattr(item) + "'"
+ " data-module='STYLE'"
+ " data-upload-url='" + safe.htmlattr(protectQS.create("../shared/BijlagenForm.asp?module=STYLE")) + "'>"
+ " </span>"
+ " <span class='default-clickable-icon symbol-delete' aria-controls='" + safe.htmlattr(itm) + "'>"
+ " <span class='default-clickable-icon symbol-delete' aria-controls='" + safe.htmlattr(item) + "'>"
+ I("fa-trash-alt")
+ " </span>"
+ " </td>");
} else { %>
} else { %>
<td><%
RWFIELD(itm, "fld", "", con, { "datatype": "color" });
%></td><%
} %>
<td style="text-align:right"><% =(act && (FCLTHeader.defaultTemplate[itm]).match(/^#(?!#)|^rgb/i) || act.match(/^#(?!#)|^rgb/i)) ? '<div class="color-preview" style="color:'+safe.htmlattr(act)+'">' + I("fa-square fa-2x", { fastyle: "fas" }) + '</div>' : '' %></td>
<% if (itm.slice(-5) === "image" && act && act.match(/^## .* ##$/) === null) { %>
<td><span class="details" onClick="iface.fullscreen_image('<%=safe.jsstring(safe.htmlattr(HTTP.urlzelfnoroot() + S("style_image_path") + act))%>');"><%=safe.html(act)%></span></td>
RWFIELD(item, "fld", "", actualValue, { "datatype": "color" });
%> </td><%
} %>
<td style="text-align:right"><%=(actualValue && isColor(defaultValue) || isColor(actualValue) ? '<div class="color-preview" style="color:'+safe.htmlattr(actualValue)+'">' + I("fa-square fa-2x", { fastyle: "fas" }) + '</div>' : '')%></td>
<% if (item.slice(-5) === "image" && actualValue && actualValue.match(/^## .* ##$/) === null) { %>
<td><span class="details" onClick="iface.fullscreen_image('<%=safe.jsstring(safe.htmlattr(HTTP.urlzelfnoroot() + S("style_image_path") + actualValue))%>');"><%=safe.html(actualValue)%></span></td>
<% } else { %>
<td><%=safe.html(act)%></td>
<td><%=safe.html(actualValue)%></td>
<% } %>
</tr><%
if (item == "main-color" || item == "accent-color") { %>
<tr>
<td class='label'><%=item%>-contrast</td>
<td>&nbsp;</td>
<td>Hoogste contrast</td>
<td><%
var sql = " SELECT 0, 'Hoogste contrast' FROM DUAL"
+ " UNION ALL"
+ " SELECT 1, 'Wit' FROM DUAL"
+ " UNION ALL"
+ " SELECT 2, 'Zwart' FROM DUAL"
+ " UNION ALL"
+ " SELECT 3, " + safe.quoted_sql(item == "main-color" ? "accent-color" : "main-color") + " FROM DUAL";
var initKey = 0;
if (item + "-contrast" in S("csstemplate")) {
initKey = S("csstemplate")[item + "-contrast"];
}
FCLTselector(item + "-contrast", sql, {
initKey: initKey,
required: true
});
%> </td>
<td style="text-align:right"><div class="color-preview" style="color:var(--<%=item%>-contrast);"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div></td>
<td>*Niet aanpassen om aan toegankelijkheidseisen te voldoen</td>
</tr><%
if (item == "accent-color") { // Na accent-color-contrast nog een pseudo-veld; frameheader-bg-color
%> <tr>
<td class='label'>frameheader-bg-color</td>
<td style="text-align:right"><div class="color-preview" style="color: #F2F2F2"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div></td>
<td>#F2F2F2</td>
<td><%
var sql = " SELECT 0, 'Lichtgrijs (default)' FROM DUAL"
+ " UNION ALL"
+ " SELECT 1, '10% main-color' FROM DUAL"
+ " UNION ALL"
+ " SELECT 2, '50% main-color' FROM DUAL"
+ " UNION ALL"
+ " SELECT 3, '90% main-color' FROM DUAL";
var initKey = 0;
if ("frameheader-bg-color" in S("csstemplate")) {
initKey = S("csstemplate")["frameheader-bg-color"];
}
var frameHeaderBackgroundColor = [
"#F2F2F2",
"color-mix(in srgb, var(--main-color) 10%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 50%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 90%, rgb(255, 255, 255))"
][initKey];
FCLTselector("frameheader-bg-color", sql, {
initKey: initKey,
required: true
});
%> </td>
<td style="text-align:right"><div class="color-preview" style="color:<%=frameHeaderBackgroundColor%>;"><%=I("fa-square fa-2x", { fastyle: "fas" })%></div></td>
<td></td>
</tr>
<% }
}
}
%>
<tr>
@@ -219,7 +229,7 @@ function prettyJson(j)
</tr>
<% if (user.has("WEB_PRSSYS"))
{
%> <tr><td>&nbsp;</td></tr>
%> <tr><td colspan="6">&nbsp;</td></tr>
<tr>
<td><%=L("lcl_fac_csscust")%></td><td colspan="3"><textarea class="fldtxt" rows="3" id="csscust" name="csscust" maxlength="4000"><%=safe.textarea(S("csscust"))%></textarea></td>
</tr>

View File

@@ -34,14 +34,28 @@ var cssparams = { cssmode: previewmode };
if (previewmode == 2)
{
cssparams.csstemplate = {};
for (itm in FCLTHeader.defaultTemplate)
for (item in FCLTHeader.defaultTemplate)
{
var conceptval = getFParam(itm);
var conceptval = getFParam(item);
if (conceptval != "")
cssparams.csstemplate[itm] = conceptval;
cssparams.csstemplate[item] = conceptval;
else
delete cssparams.csstemplate[itm];
delete cssparams.csstemplate[item];
}
var mainColorContrast = getFParamInt("main-color-contrast", 0);
if (mainColorContrast) {
cssparams.csstemplate["main-color-contrast"] = mainColorContrast;
}
var accentColorContrast = getFParamInt("accent-color-contrast", 0);
if (accentColorContrast) {
cssparams.csstemplate["accent-color-contrast"] = accentColorContrast;
}
var frameheaderBackgroundColor = getFParamInt("frameheader-bg-color", 0);
if (frameheaderBackgroundColor) {
cssparams.csstemplate["frameheader-bg-color"] = frameheaderBackgroundColor;
}
if (submitting)
{
var fields = [ { dbs: "fac_setting_pvalue", typ: "varchar", val: JSON.stringify(cssparams.csstemplate) },

View File

@@ -291,8 +291,8 @@ function fac_list_query (params)
+ " AND rd.res_deel_key = dd.res_deel_key"
+ " AND (rr.res_rsv_ruimte_tot > SYSDATE - " + S("facilitiespast_res") + " AND rr.res_rsv_ruimte_van < SYSDATE + " + S("facilitiesfuture") + ")"
+ (params.specific_day // meerdaagse voorzieningen alleen op de start- en einddag, (is res_rsv_deel_van/tot niet beter?)
? " AND (rr.res_rsv_ruimte_van = TRUNC(SYSDATE + 1 + " + params.days_in_the_future + ")"
+ " OR rr.res_rsv_ruimte_tot = TRUNC(SYSDATE + " + params.days_in_the_future + "))"
? " AND ( TRUNC(rr.res_rsv_ruimte_van) = TRUNC(SYSDATE + " + params.days_in_the_future + ")"
+ " OR TRUNC(rr.res_rsv_ruimte_tot) = TRUNC(SYSDATE + " + params.days_in_the_future + "))"
: "")
+ " UNION ALL " // 5 Host cateringreservering dirtlevel van de onderliggenden bepalen?
+ "SELECT rr.res_rsv_ruimte_host_key prs_perslid_key"

View File

@@ -24,7 +24,7 @@ var autfunction = "WEB_PRSSYS";
var authparams = user.checkAutorisation(autfunction);
var submitting = getQParamInt("submit", 0) == 1;
var lang = getQParamSafe("lang", "NL"); // TODO: popup als niet meegegeven
var lang = getQParamSafe("lang", S("db_lang"));
var dialect_key = getQParamInt("dialect_key");
var dialect_id = getQParam("dialect_id");

View File

@@ -45,6 +45,7 @@ var showmore = getQParamInt("showmore", 0);
var portal = getQParamInt("portal", 1);
var widget = getQParamInt("asWidget", 0) == 1;
var additionalNews = 0;
var newsTitle = L("lcl_mynews");
var canEdit = !!user.has("WEB_MSGBOF");
var msg_rights = msg.func_enabled(-1);
@@ -360,6 +361,9 @@ sqln = "SELECT * FROM (" + sqln + ")"
var nieuwsdatum = toDateString(oRs("fac_nieuws_van").Value, true, true);
var detail_html_arr = [];
if (oRs("fac_nieuws_groep_omschrijving").Value) {
if (nieuwsgroep_key > 0) {
newsTitle = oRs("fac_nieuws_groep_omschrijving").Value;
}
detail_html_arr.push('<span' + (useCarousel ? ' class="details" data-groep-key="' + nieuws_groep_key + '"' : '') +'>' + safe.html(oRs("fac_nieuws_groep_omschrijving").Value) + '</span>');
}
if (nieuwsdatum != "") {
@@ -451,7 +455,7 @@ sqln = "SELECT * FROM (" + sqln + ")"
reply_html += '<span class="note-wrapper' + (reply_author === user_key ? " note-type-self" : "") + '" data-key="' + reply_key + '">'
+ ' <span class="note-container">'
+ ' <span class="note-header">'
+ (reply_author !== user_key ? '<span class="note-author">' + safe.html(author.naam()) + '</span>' : "")
+ (reply_author > 0 && reply_author !== user_key ? '<span class="note-author">' + safe.html(author.naam()) + '</span>' : "")
+ ' <span class="note-timestamp">' + toDateTimeString(reply_created, false, false, true, false) + '</span>'
+ ' </span>'
+ ' <span class="note-body">'
@@ -528,11 +532,11 @@ sqln = "SELECT * FROM (" + sqln + ")"
<header class="d-flex justify-content-between align-items-center">
<div class="d-flex align-items-center gap-3">
<% if (i > 0 || hasAddButton) { %>
<h1><%=safe.html(L("lcl_mynews"))%></h1>
<h1><%=safe.html(newsTitle)%></h1>
<% }
Response.Write('</div><div class="d-flex align-items-center gap-3">');
if (i > 1) {
%> <span class="fclt-news-counter" data-counter="<%=current%>"> van <%=i%></span><%
if (useCarousel) {
%> <span class="fclt-news-counter" data-counter="<%=current%>"> van <%=i%></span><% // TODO LCL
}
if (hasAddButton) {
%> <span class="msg-add-button btn" title="<%=L("lcl_add")%>"><%=I("fa-plus fa-xl")%></span><%

View File

@@ -6,7 +6,7 @@
File: fac_roundtrip_exp.asp
Description: Exporteer de gegevens van de view behorende bij de import naar een csv-bestand.
Parameters: code: Een geldige fac_import_app_code.
Note:
Note:
*/
%>
<!-- #include file="../Shared/common.inc" -->
@@ -52,7 +52,7 @@ if (imp_params.success)
var hiresTimer = new ActiveXObject("SLNKDWF.About");
var tm_start = hiresTimer.usTimer;
var sql = "SELECT * FROM " + viewname;
var oRs = Oracle.RealConnection.Execute(sql);
var oRs = Oracle.Execute(sql);
create_export(oRs, filename);
oRs.Close();
}

View File

@@ -171,7 +171,12 @@ oRs.Close();
result.applicationpoolstart = new Date(Application("SET_INSTANCE_TIME"));
var sql = "SELECT SYSDATE FROM DUAL";
var oRs = Oracle.Execute(sql);
result.sysdate = new Date(oRs(0).Value);
oRs.Close();
result.finished = new Date();
result.scanduration = result.finished.getTime() - result.started.getTime();
Response.Write(JSON.stringify(result));
Response.End;

View File

@@ -4,11 +4,9 @@
$Id$
File: fac_settings_search.asp
Status: 40%
Description: Toont zoekvelden voor lijst van menuopties
Parameters: ??
Context: Via URL (alleen prssys)
Note: For internal use only
Parameters: module, autosearch
Context: Vanuit menu (alleen prssys)
*/ %>
<!-- #include file="../Shared/common.inc" -->
@@ -53,54 +51,48 @@ var module = getQParam("module", "");
</head>
<body id="searchbody">
<form name="u2" method="get" action="fac_settings_list.asp" target="workFrame" onsubmit='anysearch = true;'>
<% SEARCH_PAGE_START({ header: L("lcl_filterblok") });
<%
SEARCH_PAGE_START({ header: L("lcl_filterblok") });
SEARCH_BLOCK_START("searchtable", L("lcl_filterblok")); %>
<!-- module -->
<!-- module -->
<%
sql = "SELECT DISTINCT "
+ " fac_setting_module fac_module,"
+ " fac_setting_module fac_module "
+ "FROM fac_setting "
+ (module!="" ? " WHERE fac_setting_module = " + safe.quoted_sql(module) :"")
+ "ORDER BY fac_setting_module";
if (module == "")
{
FCLTselector("sModule",
sql,
{ label: L("lcl_fac_module")
, trclass: "primsearch"
, emptyOption: L("lcl_search_generic")
})
}
else
{ // Er is maar 1 optie, dus geen emptyOption.
FCLTselector("sModule",
sql,
{ label: L("lcl_fac_module")
, trclass: "primsearch"
})
}
CHECKBOXTR(L("lcl_lcl_overruled"), "fldcheck", "is_overrule", false);
// Niet elke setting-module heeft een officiele modulenaam..
var sql = "SELECT DISTINCT "
+ " fs.fac_setting_module fac_module"
+ ", fs.fac_setting_module || ' - ' || lcl.l(fm.fac_module_remark) modulenaam"
+ " FROM fac_setting fs, fac_module fm "
+ " WHERE fs.fac_setting_module = fm.fac_module_name(+)"
+ (module != ""
? " AND fs.fac_setting_module = " + safe.quoted_sql(module)
: "")
+ " ORDER BY fac_setting_module";
FCLTselector("sModule", sql, { label: L("lcl_fac_module")
, emptyOption: ((module == "") ? L("lcl_search_generic") : false)
/* , readonly : (module != "") werkt niet */
, required : (module != "")
})
CHECKBOXTR(L("lcl_lcl_overruled"), "fldcheck", "is_overrule", false);
SEARCH_BLOCK_END();
SEARCH_BLOCK_START();
%>
<!-- Zoektekst -->
<tr class="primsearch">
<td class="label">
<label for="zoek"><%=L("lcl_lcl_search_fields")%></label>
</td>
<td>
<input type="text" class="fld wildcard" name="zoek" id="zoek">
</td>
</tr>
<!-- Zoektekst -->
<tr class="primsearch">
<td class="label">
<label for="zoek"><%=L("lcl_lcl_search_fields")%></label>
</td>
<td>
<input type="text" class="fld wildcard" name="zoek" id="zoek">
</td>
</tr>
<% SEARCH_BLOCK_END();
var buttons = [ {title: L("lcl_overview_list"), action: "doSubmit()", icon: "fa-clipboard-list" } ];
SIMPLE_BLOCK_START();
CreateButtons(buttons, { entersubmit: true, showIcons: true});
SIMPLE_BLOCK_END();
SEARCH_PAGE_END();
var buttons = [ {title: L("lcl_overview_list"), action: "doSubmit()", icon: "fa-clipboard-list" } ];
SIMPLE_BLOCK_START();
CreateButtons(buttons, { entersubmit: true, showIcons: true});
SIMPLE_BLOCK_END();
SEARCH_PAGE_END();
%>
</form>

View File

@@ -55,10 +55,12 @@ function findSHAinfo()
{
var regel = allsha[i];
var spl = regel.split(" ");
if (spl.length == 2)
if (spl.length >= 2)
{
var sha_should = spl[0];
var fname = spl[1].substring(1, spl[1].length);
spl.shift();
var namepart = spl.join(" "); // Bestandsnamen met spaties er in
var fname = namepart.substring(1, namepart.length);
fname = fname.replace(/\\/g,'/');
allfiles[fname.toLowerCase()] = 1;
var file = { fname: fname.replace(/^\.\.\//,"/") };

View File

@@ -200,7 +200,7 @@ function prodsearch_queries(write_discs, filter)
+ " AND r.res_discipline_key = d.ins_discipline_key"
+ " AND ar.res_ruimte_key = r.res_ruimte_key"
+ " AND (r.res_ruimte_startdatum IS NULL OR r.res_ruimte_startdatum <= SYSDATE)"
+ " AND (r.res_ruimte_vervaldatum IS NULL OR r.res_ruimte_vervaldatum >= SYSDATE)"
+ " AND (r.res_ruimte_vervaldatum IS NULL OR r.res_ruimte_vervaldatum > SYSDATE)"
+ " AND r.alg_ruimte_key ="
+ " (SELECT MIN (rar.alg_ruimte_key)"
+ " FROM res_alg_ruimte rar"
@@ -251,25 +251,10 @@ function prodsearch_queries(write_discs, filter)
true); // forwrite
queries['resartikel'] =
{ sql: "WITH all_onrgoed_loc_keys AS"
+ " (SELECT alg_type"
+ " , alg_onroerendgoed_keys"
+ " , alg_locatie_key"
+ " , alg_terreinsector_key"
+ " , alg_gebouw_key"
+ " , alg_verdieping_key"
+ " , alg_ruimte_key"
+ " FROM alg_v_allonroerendgoed"
+ " UNION"
+ " SELECT 'L'"
+ " , alg_locatie_key"
+ " , alg_locatie_key, NULL, NULL, NULL, NULL"
+ " FROM alg_locatie"
+ " )"
+ " SELECT r.res_artikel_key product_key,"
{ sql: "SELECT r.res_artikel_key product_key,"
+ lcl.xsql('r.res_artikel_omschrijving','r.res_artikel_key')+" product,"
+ " 'resartikel' soort,"
+ " " + ranknr('resartikel') + " rang,"
+ ranknr('resartikel') + " rang,"
+ " r.res_artikel_prijs prijs,"
+ " '' extra,"
+ " NULL extra2,"
@@ -281,28 +266,10 @@ function prodsearch_queries(write_discs, filter)
+ " r.res_artikel_image foto,"
+ " NULL ishtmlsafe_extra"
+ " FROM res_v_aanwezigartikel r,"
+ " res_v_aanwezigdiscipline d,"
+ " res_srtartikel_onrgoed rsao"
+ " res_v_aanwezigdiscipline d"
+ " WHERE r.res_discipline_key = d.ins_discipline_key"
+ " AND d.ins_discipline_key = rsao.res_discipline_key"
+ " AND (rsao.alg_onrgoed_niveau, rsao.alg_onrgoed_key) IN"
+ " (SELECT alg_type, alg_onroerendgoed_keys"
+ " FROM all_onrgoed_loc_keys"
+ " WHERE alg_locatie_key = " + "(select coalesce(s.alg_locatie_key, m.alg_locatie_key)" // Beperk tot verbruiksartikelen van mijn locatie.
+ " from alg_v_my_location m"
+ " , (select p.prs_perslid_key"
+ " , o.alg_locatie_key"
+ " from alg_v_allonroerendgoed o"
+ " , prs_perslid p"
+ " where p.alg_onroerendgoed_type = o.alg_type(+)"
+ " and p.alg_onroerendgoed_keys = o.alg_onroerendgoed_keys(+)"
+ " ) s"
+ " where m.prs_perslid_key = s.prs_perslid_key"
+ " and m.prs_perslid_key = " + user_key
+ ")"
+ " )"
+ " AND COALESCE(rsao.res_srtartikel_og_ingangsdatum, r.res_artikel_ingangsdatum, SYSDATE) <= SYSDATE"
+ " AND COALESCE(rsao.res_srtartikel_og_vervaldatum, r.res_artikel_vervaldatum, SYSDATE) >= SYSDATE"
+ " AND (r.res_artikel_ingangsdatum IS NULL OR r.res_artikel_ingangsdatum <= SYSDATE)"
+ " AND (r.res_artikel_vervaldatum IS NULL OR r.res_artikel_vervaldatum > SYSDATE)"
+ " AND " + fac.createOrClause("UPPER("+lcl.xsql('d.ins_discipline_omschrijving','d.ins_discipline_key') +"||', '||"
+lcl.xsql('res_artikel_omschrijving','res_artikel_key') +"||', '||"
+lcl.xsql('res_artikel_opmerking','res_artikel_key')+")", supper)

View File

@@ -3882,10 +3882,11 @@ ins = {checkAutLevel:
+ " || ')'"
+ " ELSE " + safe.quoted_sql(L("lcl_ins_unknown"))
+ " END prs_bedrijf_naam"
+ ( mobile && insFlexParams && insFlexParams.anyflex
? insFlexParams.sql
: ""
)
+ (mobile
? (insFlexParams && insFlexParams.anyflex
? insFlexParams.sql
: ", NULL insflex")
: "")
: "")
+ " FROM (" + sql + "{0}) XX";
@@ -6056,7 +6057,9 @@ ins = {checkAutLevel:
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key)"
+ " AND idsc1.ins_deelsrtcontrole_status IN (2" + (finish? ", 3" : "") + "))");
+ " AND idsc1.ins_deelsrtcontrole_status IN (2" + (finish? ", 3" : "") + ")"
+ " AND EXTRACT(YEAR FROM idsc1.ins_deelsrtcontrole_freezedate) <= " + mjb_freeze_or_sys_year
+ " )");
if (pricechange)
mjblist_sql += " AND (xcp.ins_srtcontroledl_xcp_eind IS NULL OR xcp.ins_srtcontroledl_xcp_eind >= SYSDATE)"; // 1) Prijswijziging: Niet vervallen.
@@ -6084,7 +6087,7 @@ ins = {checkAutLevel:
mjblist_sql += " AND xcp.ins_scenario_key = 1" // 6) Geen scenario.
+ " AND xcp.ctr_ismjob = 1" // 7) ismjob.
+ (freeze || unfreeze || finish
+ (freeze
? " AND result.\"" + mjb_freeze_or_sys_year + "\" IS NOT NULL" // 8) isFreezeYear, bedrag in mjb_freeze_year is niet NULL.
: "");
@@ -6481,14 +6484,35 @@ ins = {checkAutLevel:
+ " , " + lcl.xsql("sk.ins_srtkenmerk_omschrijving", "iskm.ins_srtkenmerk_key") + ") omschrijving"
+ " FROM ins_kenmerk k"
+ " , ins_srtkenmerk sk"
+ (inspect
? " , ins_deelsrtcontrole idsc"
+ " , ins_srtcontrole i"
+ " , ctr_discipline cd"
: " , ins_deel d"
+ " , ins_srtdeel s"
+ " , ins_srtgroep g")
+ " WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key"
+ " AND BITAND(k.ins_kenmerk_inlijst, " + (p_inlijst? p_inlijst : 1) + ") = " + (p_inlijst? p_inlijst : 1) // In overzicht tonen {1=Objectenbeheer overzicht, 2=MJOB Planningsconsole}.
+ " AND k.ins_kenmerk_verwijder IS NULL"
+ " AND sk.ins_srtkenmerk_verwijder IS NULL"
+ " AND sk.ins_srtkenmerk_kenmerktype = 'M'"
+ (inspect
? " AND k.ins_kenmerk_niveau IN ('C', 'E', 'T')" // C=Periodiek taken, E=Taakcategorie, T=Alle taken.
: " AND k.ins_kenmerk_niveau IN ('S', 'G', 'D')") // S=Objectsoort, G=Objectgroep, D=Discipline.
? " AND k.ins_kenmerk_niveau IN ('C', 'E', 'T')" // C=Periodiek taken, E=Taakcategorie, T=Alle taken.
+ " AND idsc.ins_srtcontrole_key = i.ins_srtcontrole_key"
+ " AND i.ctr_discipline_key = cd.ins_discipline_key"
+ " AND cd.ins_discipline_verwijder IS NULL"
+ " AND idsc.ins_deelsrtcontrole_key = " + p_key // p_key is een ins_deelsrtcontrole_key.
+ " AND ((k.ins_srtinstallatie_key = i.ins_srtcontrole_key AND k.ins_kenmerk_niveau = 'C')"
+ " OR (k.ins_srtinstallatie_key = cd.ins_discipline_key AND k.ins_kenmerk_niveau = 'E')"
+ " OR (k.ins_srtinstallatie_key IS NULL AND k.ins_kenmerk_niveau = 'T'))"
: " AND k.ins_kenmerk_niveau IN ('S', 'G', 'D')" // S=Objectsoort, G=Objectgroep, D=Discipline.
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND d.ins_discipline_key = g.ins_discipline_key"
+ " AND g.ins_srtgroep_key = s.ins_srtgroep_key"
+ " AND d.ins_deel_key = " + p_key // p_key is een ins_deel_key.
+ " AND ((k.ins_srtinstallatie_key = s.ins_srtdeel_key AND k.ins_kenmerk_niveau = 'S')"
+ " OR (k.ins_srtinstallatie_key = s.ins_srtgroep_key AND k.ins_kenmerk_niveau = 'G')"
+ " OR (k.ins_srtinstallatie_key = g.ins_discipline_key AND k.ins_kenmerk_niveau = 'D'))")
+ " AND k.ins_srtinstallatie_key NOT IN (" + S("sle_ins_srt_groep_key") + ", " + S("cil_ins_srt_groep_key") + ")";
var oRs_k = Oracle.Execute(sql_k);
while (!oRs_k.eof)

View File

@@ -409,7 +409,8 @@ var canImport = (user.checkAutorisation("WEB_IMPORT", true) != null);
? safe.html(flexval.replace(/\r/g, "\n")+ "\n")
: ""
);
if (insFlexParams.bijlageflex)
// Als er nog geen inspectierecord is (ins_deelsrtcontrole_key IS NULL), dan zijn er ook nog geen bijlage kenmerken.
if (insFlexParams.bijlageflex && ins_deelsrtcontrole_key)
{
result += ins.ins_deel_flex_bijlagen(ins_deelsrtcontrole_key, 1, true); // 1=Objectebeheer overzicht.
}

View File

@@ -843,9 +843,9 @@ $(async function() {
var allSuggests = [];
if (typeof Suggest === "function") {
for (var key in window) {
if ((key, ["InstallTrigger","onmozfullscreenchange","onmozfullscreenerror"].includes(key)))
if ((key, ["InstallTrigger","onmozfullscreenchange","onmozfullscreenerror", "fullScreen"].includes(key)))
{
continue; // die drie geven anders op Firefox een verwarrende warning in de console als je window[key] opvraagt
continue; // die geven anders op Firefox een verwarrende warning in de console als je window[key] opvraagt
}
if (window[key] instanceof Suggest) { // Er kunnen meerdere afhankelijke suggest velden zijn.
allSuggests.push(window[key].sgReadyState);

View File

@@ -293,8 +293,7 @@ if (result)
{
if (!result.response)
{
__Log("Error in putorders.send_planrequest: " + result.errText); // Zie ook putorders logging voor de foutmelding
API.error(result.errText);
API.error("Error in putorders.send_planrequest: " + result.errtext); // Zie ook putorders logging voor de foutmelding
}
var xmldoc = new ActiveXObject("Msxml2.DOMDocument.6.0");

View File

@@ -85,7 +85,7 @@
<xsl:if test="plandatum2/datum!=''"><xsl:value-of select="plandatum2/jaar"/>-<xsl:value-of select="plandatum2/maand"/>-<xsl:value-of select="plandatum2/dag"/>T<xsl:value-of select="plandatum2/tijd"/>:00</xsl:if>
</mld_opdr_datum_plan2>
<mld_opdr_einddatum><xsl:value-of select="einddatum/jaar"/>-<xsl:value-of select="einddatum/maand"/>-<xsl:value-of select="einddatum/dag"/>T<xsl:value-of select="einddatum/tijd"/>:00</mld_opdr_einddatum>
<xsl:if test="count(uitvoerende/bedrijf/bedrijfadres[type='O']/flexfiles) = 0 or uitvoerende/bedrijf/bedrijfadres[type='O']/flexfiles = '0' or uitvoerende/bedrijf/bedrijfadres[type='O']/flexfiles = '1' or count(uitvoerende/bedrijf/bedrijfadres[type='O']/fixedattachment) = 1">
<xsl:if test="count(/facilitor/notificatie/bedrijfadres/flexfiles) = 0 or /facilitor/notificatie/bedrijfadres/flexfiles = '0' or /facilitor/notificatie/bedrijfadres/flexfiles = '1' or count(/facilitor/notificatie/bedrijfadres/fixedattachment) = 1">
<attachments>
<xsl:for-each select="kenmerk[@type='M' and floor(@rolcode div 2) mod 2 = 1]">
<xsl:sort select="@volgnummer" data-type="number"/>
@@ -96,9 +96,9 @@
<xsl:attribute name="encoding">base64</xsl:attribute>
</xsl:element>
</xsl:for-each>
<xsl:if test="count(uitvoerende/bedrijf/bedrijfadres[type='O']/fixedattachment) = 1">
<xsl:if test="count(/facilitor/notificatie/bedrijfadres/fixedattachment) = 1">
<FCLTfixedattachment encoding='base64' nodename='TMP_Attachment'>
<xsl:value-of select="uitvoerende/bedrijf/bedrijfadres[type='O']/fixedattachment"/>
<xsl:value-of select="/facilitor/notificatie/bedrijfadres/fixedattachment"/>
</FCLTfixedattachment>
</xsl:if>
</attachments>

View File

@@ -73,14 +73,14 @@ scaffolding(this_model,
"icon": "fa-euro-sign",
"fields": [
"financialdata",
"approvenew",
"costtype",
"costtypemandatory",
"percentage",
"margin",
"approve",
"invoicelimit",
"schedule",
"approvenew"
"schedule"
]
}
]

View File

@@ -136,6 +136,9 @@
"ins_srtdeel_acadsymbol",
"ins_srtgroep_key"]
},
"mld_kenmerk": {
"fields": ["mld_srtkenmerk_key"]
},
"mld_melding_object": {
"fields": ["ins_deel_key"]
},

View File

@@ -288,6 +288,19 @@ switch (req_info)
break;
}
case "show_after_reject":
{
protectQS.verify({ allowparams: ["req_info"]});
var mld_key = getQParamInt("mld_key", -1);
var mfe = mld.func_enabled_melding(mld_key);
result.show = mfe.canReadAny || mfe.canChangeKenmerkBlok;
if (!mfe.canReadAny) {
result.toaster = L("lcl_mld_is_mldrej");
}
break;
}
case "show_after_fwd":
{
protectQS.verify({ allowparams: ["req_info"]});

View File

@@ -6763,7 +6763,7 @@ mld = {
? " AND ( mld_stdmeldinggroep_key = " + params.stdmeldinggroep_key
+ " OR mld_stdmeldinggroep_key IS NULL)" // Deze mag natuurlijk ook
: "") // Dan geldt alleen de vakgroeptype-scope
+ " ORDER BY mld_melding_tag_datum_tot, mld_melding_tag_naam"; // denk ik?
+ " ORDER BY mld_melding_tag_datum_tot DESC, mld_melding_tag_naam";
var result =
FCLTselector_HTML("tag_key",
sql_tag,
@@ -7118,7 +7118,10 @@ mld = {
+ " " + (ruimtekey > 0 ? "OR (cp.cnt_alg_plaats_code = 'R' AND cp.cnt_alg_plaats_key = " + ruimtekey + ")" : "")
+ " )";
var sql_o = " SELECT c.cnt_prs_bedrijf_key"
var sql_o = "";
if (obj_key_arr && obj_key_arr.length > 0)
{
sql_o = " SELECT c.cnt_prs_bedrijf_key"
+ " , c.cnt_contract_key"
+ " , CASE WHEN co.cnt_ins_deel_key IS NULL"
+ " THEN 6"
@@ -7146,19 +7149,22 @@ mld = {
+ " )"
+ " )"
+ " )";
}
var sql_c = "SELECT cnt_prs_bedrijf_key"
+ " , cnt_contract_key"
+ " , prio"
+ " , COUNT(DISTINCT cnt_prs_bedrijf_key) aantal"
+ " FROM (" + sql_p
+ (obj_key_arr.length ? " UNION " + sql_o : "")
+ " )"
+ " GROUP BY cnt_prs_bedrijf_key, cnt_contract_key, prio"
+ " ORDER BY prio DESC"
+ " FETCH FIRST 1 ROW ONLY";
var sql_c = "SELECT MIN(cnt_prs_bedrijf_key) cnt_prs_bedrijf_key"
+ " , COUNT(*) aantal"
+ " FROM (SELECT cnt_prs_bedrijf_key"
+ " , cnt_contract_key"
+ " , prio"
+ " , COUNT(DISTINCT cnt_prs_bedrijf_key) aantal"
+ " FROM (" + sql_p
+ (obj_key_arr && obj_key_arr.length > 0 ? " UNION " + sql_o : "")
+ " )"
+ " GROUP BY cnt_prs_bedrijf_key, cnt_contract_key, prio"
+ " ORDER BY prio DESC"
+ " )";
var oRs_c = Oracle.Execute(sql_c);
if (!oRs_c.EOF && oRs_c("aantal").Value == 1)
if (oRs_c("aantal").Value == 1)
{
prs_bedrijf_key = oRs_c("cnt_prs_bedrijf_key").Value;
}

View File

@@ -65,8 +65,13 @@ function doublecheckCallback(json, modalParams)
}
else
{
if (reloadmld)
parent.location.href = "mld_melding.asp?urole=" + urole + "&mld_key=" + mld_key_arr + "&embedded=1";
if (reloadmld) {
if (json.reject) {
mld_melding_rejected();
} else {
parent.location.href = "mld_melding.asp?urole=" + urole + "&mld_key=" + mld_key_arr + "&embedded=1";
}
}
else
FcltCallbackRefresh({success: true});
}

View File

@@ -605,6 +605,7 @@ if (useBronmelding)
this_mld_info.behandel_key2 = bron_mld_info.behandel_key2;
this_mld_info.mld_onderwerp = bron_mld_info.mld_onderwerp;
this_mld_info.room_obj_arr = bron_mld_info.room_obj_arr;
this_mld_info.primaire_behandelaar = bron_mld_info.primaire_behandelaar;
if (isVervolgmelding && (this_stdm_info.canholdthirdparty == 1 || lAllThirdparty))
{
this_mld_info.naam_ext = bron_mld_info.naam_ext;
@@ -1602,8 +1603,13 @@ SUBFRAME_START();
{ urlParam: "disc_key", field: "disc", init: this_mld_info.disc_key }];
if (this_mld_info.show_alg)
urlAdd.push({ urlParam: "loc_key", field: "locatiekey", init: this_mld_info.loc_key });
if (this_mld_info.primaire_behandelaar != 0)
{
if (
this_mld_info.primaire_behandelaar != 0 &&
(
bron_mld_key == -1 ||
this_mld_info.primaire_behandelaar
)
) {
FCLTpersoonselector("sBehandel",
"sgBehandelaar",
{ perslidKey: this_mld_info.behandel_key,

View File

@@ -157,10 +157,10 @@ function changeUurtarief()
if (isNaN(uurtarief)) { // Bereken opdrachttarief
if (data.uurtarief == null)
$("#uurtarief").val("");
var uren = parseFloat( $("#uren").val());
var mat_kosten = parseFloat( $("#mat_kosten").val());
var corr_kosten = parseFloat( $("#corr_kosten").val());
var tot_kosten = parseFloat( $("#tot_kosten").val());
var uren = parseFloat( $("#uren").val().replace(',', '.'));
var mat_kosten = parseFloat( $("#mat_kosten").val().replace(',', '.'));
var corr_kosten = parseFloat( $("#corr_kosten").val().replace(',', '.'));
var tot_kosten = parseFloat( $("#tot_kosten").val().replace(',', '.'));
if (isNaN(mat_kosten))
mat_kosten = 0;

View File

@@ -67,9 +67,9 @@ if (locatiekey < 0 && mld_melding.deladdress_key > 0)
// Zijn er objecten aan de melding gekoppeld? Zet de ins_deel_keys in een array.
var obj_key_arr = [];
for (var i=0; i<mld_info.room_obj_arr.length; i++)
for (var i=0; i<mld_melding.room_obj_arr.length; i++)
{
obj_key_arr.push(mld_info.room_obj_arr[i].ins_key);
obj_key_arr.push(mld_melding.room_obj_arr[i].ins_key);
}
var prs_bedrijf_key = mld.dienst_controle(new_stdm, locatiekey, (mld_melding.bttype == "B"? mld_melding.bld_key : null), mld_melding.room_key, obj_key_arr, mld_melding.perslid_key_voor);

View File

@@ -60,6 +60,13 @@ function mld_melding_ingestemd() {
mld_reload_or_close);
}
function mld_melding_rejected() {
var data = { req_info: "show_after_reject"};
$.getJSON(protected_mld_info_ajax,
data,
mld_reload_or_close);
}
function mld_reload_or_close(json, textStatus)
{
if (json)
@@ -142,11 +149,7 @@ function mld_reject()
url = "../mld/mld_reject.asp?urole=" + urole + "&mld_key=" + mld_key
FcltMgr.openModalDetail(url,
L("lcl_mld_complain") + ' ' + mldPrefix + mld_key,
{callback: function()
{
FcltMgr.closeDetail(window, {close: true});
mld_melding_reload(mld_key);
}}
{ callback: FcltCallbackAndThen(mld_melding_rejected) }
);
}
}

View File

@@ -243,7 +243,7 @@ if (mld_key > 0)
IFRAMER_HEADER(L("lcl_mld_behandeling"), buttons, { inhamburger: true });
var safe_notes_title = safe.html(L("lcl_mld_frame_notes"));
if (S("ai_enabled") & 4) {
safe_notes_title += "&nbsp;<span class='default-clickable-icon' onclick='aiSummarize()'>" + I("fa-sparkles") + "</span>";
safe_notes_title += "&nbsp;<span class='default-clickable-icon' onclick='aiSummarize()' title='" + safe.htmlattr(L("lcl_mld_summarize")) + "'>" + I("fa-sparkles") + "</span>";
}
BLOCK_START("mldHistorie", safe_notes_title, { detailToggle: true, wide: true, nopadding: true, icon: "fa-clipboard-list-check", ishtmlsafe: true });

View File

@@ -98,10 +98,11 @@ oRs.Close();
<script type="text/javascript">
var anyChange = false; // Voorkom te veel refreshes
<% function getWeekString(datum) {
var yearStart = new Date(datum.getFullYear(), 0, 1);
var dayOfYear = (datum.getTime() - yearStart.getTime()) / oneDay + 1;
var weekNr = Math.ceil(dayOfYear / 7);
return datum.getFullYear() + "-" + weekNr;
var sql = "SELECT TO_CHAR({0}, 'IYYY-IW') weeknr FROM DUAL".format(datum.toSQL());
var oRs = Oracle.Execute(sql);
var txt = oRs("weeknr").Value;
oRs.Close()
return txt;
}
%> FcltMgr.setTitle(L("lcl_mld_ord_weeklijst") + "<%=getWeekString(datefrom)%>");

View File

@@ -27,7 +27,7 @@ user.anything_todo_or_abort(this_opdr.canSetSent, L("lcl_shared_no_auth"));
sql = "BEGIN fac.markorderassent('opdracht', " + opdr_key + ", 2, '', " + user_key + "); END;"; // 2=nog onbekend of leverancier accepteert.
Oracle.Execute(sql);
mld.trackopdrachtupdate(opdr_key, L("lcl_mld_is_setsent"));
mld.trackopdrachtupdate(opdr_key, L("lcl_mld_is_setsend")); // Todo; spelvaud uit de lcl-naam halen
result.success = true;

View File

@@ -86,6 +86,11 @@ footer {
transform: translate(-50%, 75%);
white-space: nowrap;
}
header .otap-title {
bottom: unset;
top: 0;
transform: translate(-50%, 120%);
}
footer {
height: var(--fclt-footer-height);
@@ -669,6 +674,13 @@ footer.page-footer > * {
background-color: inherit;
}
/* sensorstates */
.sensorstate span {
padding-right: 6px;
}
.stateval {
font-style: italic;
}
/* ---------------------------------------------------------------------------
Icon-grid
--------------------------------------------------------------------------- */

View File

@@ -73,6 +73,11 @@ var params = {betreft: (betreft.length? betreft : null),
nurl = "../pda/reservering.asp?rsv_ruimte_key=" + oRs("request_key").Value;
break;
}
case "MLDIN":
{
nurl = "../pda/melding.asp?mld_key=" + oRs("request_key").value;
break;
}
default: INTERNAL_ERROR;
}
return nurl;
@@ -91,6 +96,7 @@ var params = {betreft: (betreft.length? betreft : null),
case "FIN":
case "FIN2": soort = L("lcl_fin_factuur_type") + " " + safe.html(oRs("type").Value); break;
case "RES": soort = L("lcl_res_reservation"); break;
case "MLDIN": return L("lcl_mld_concept") + ":&nbsp;" + safe.html(oRs("type").Value); break;
default: INTERNAL_ERROR;
}

View File

@@ -177,6 +177,11 @@ function FOOTER(params)
return;
}
if (user.isGroupedUser() || Session("login_by_fallback"))
{
return; // Die hebben ook niets met die knoppen te maken
}
var sql = "SELECT COUNT(*) berichten"
+ " FROM web_user_messages"
+ " WHERE prs_perslid_key_receiver = " + user_key
@@ -287,9 +292,9 @@ function FOOTER(params)
} %>
<footer class="fixed-bottom page-footer">
<a href="Facilitor.asp" class="tappable"><%=I("fa-home fa-xl")%></a>
<a href="fac_list.asp" class="tappable"><%=I("fa-ballot-check fa-xl")%></a>
<a href="message_list.asp" class="tappable"<%=berichten ? ' data-badge="' + berichten + '"' : ''%>>
<a href="<%=rooturl%>/appl/pda/Facilitor.asp" class="tappable"><%=I("fa-home fa-xl")%></a>
<a href="<%=rooturl%>/appl/pda/fac_list.asp" class="tappable"><%=I("fa-ballot-check fa-xl")%></a>
<a href="<%=rooturl%>/appl/pda/message_list.asp" class="tappable"<%=berichten ? ' data-badge="' + berichten + '"' : ''%>>
<%=I("fa-bell fa-xl")%>
<span class="fclt-noti-badge badge rounded-pill bg-danger"><%=berichten%></span>
</a>
@@ -313,7 +318,7 @@ function FOOTER(params)
last_msg_oRs.Close();
}
oRs.Close();
%> <a href="berichten.asp" class="tappable"<%=new_msg ? ' data-badge="!"' : ''%>><%=I("fa-circle-y fa-xl")%></a>
%> <a href="<%=rooturl%>/appl/pda/berichten.asp" class="tappable"<%=new_msg ? ' data-badge="!"' : ''%>><%=I("fa-circle-y fa-xl")%></a>
<% } %>
<%=DROPDOWN(hamburger_actions)%>
</footer>

View File

@@ -260,7 +260,7 @@ else
{ // ik mag niets zien, doorstarten
if (user.checkAutorisation( "WEB_MLDUSE", true)) {
// Dan laat maar een melding doen
var theURL = "./melding.asp?mld_key=-1&ins_key=" + ins_key + (stdmkina > 0 ? "&stdm_key="+stdmkina + transitParam : "");
var theURL = "./melding.asp?mld_key=-1&ins_key=" + ins_key + (stdmkina > 0 ? "&stdm_key="+stdmkina : "") + transitParam;
Response.Redirect(theURL);
}
else {
@@ -640,7 +640,7 @@ if (alg_typ == "R" || alg_typ == "W" || alg_typ == "T")
RWFIELD("desc", L("lcl_obj_identification"), ins_info.ins_deel_omschrijving, { pclass: "required", readonly: !this_ins.canChangeAlg || !(ins_info.autonum & 2) });
if (ins_info.ins_deel_state)
{
var sensorstatetext = ins_info.ins_deel_state + "<span class='statedate'>" + toDateTimeString(ins_info.ins_deel_statedate, true, false, true) + "</span>";
var sensorstatetext = "<span class='statedate'>" + toDateTimeString(ins_info.ins_deel_statedate, true, true, true) + "</span><span class='stateval'>" + ins_info.ins_deel_state + "</span>";
if (!ins_info.thresholdstate)
var presentatie = "<span>" + I("fa-sensor") + "</span><span>" + sensorstatetext + "</span>";
else

View File

@@ -746,7 +746,7 @@ var canAdd = authparams.PRSwritelevel < 9 && authparams.ALGwritelevel < 9;
+ " gebrekdatum"
+ ( insFlexParams.anyflex
? insFlexParams.sql
: ""
: ", NULL insflex"
)
+ " FROM ("
+ sqlR

View File

@@ -2604,7 +2604,7 @@ if (mld_key > -1 && this_mld.canReject && action != "forward")
function mld_reject_callback(data)
{
// mobile kan slechts 1 melding per keer afwijzen
if (data.reject_arr[0].inspect)
if (data.reject_arr[0]?.inspect)
{
var insdata = data.reject_arr[0].inspect;
protectRequest.dataToken(insdata);

View File

@@ -32,7 +32,14 @@ var own = getQParamInt("own", 0) == 1;
var klus = getQParamInt("klus", 0) == 1;
var disc_type = getQParamInt("grpby", 1); // 1 = Vakgroep (default), 2 = Behandelteam
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // nieuwe melding vanuit een controletaak
var self = getQParamInt("self", -1);
/* Self;
-2: Opdrachten zonder actieve behandelaar
0/null: Alle opdrachten, ongeacht actieve behandelaar
1: Opdrachten waarbij ik de actieve behandelaar ben
2: -2 & 1 (Dus; Geen actieve behandelaar, of ik ben de actieve behandelaar)
*/
var self = getQParamInt("self", null);
function getDistrictKey()
{
@@ -150,8 +157,10 @@ if (!hasParamFlag)
// Op mobile een dag(en)overzicht tonen van opdrachten op basis van een from en een to datum, voor mij als contactpersoon van de uitvoerende.
// Die datums zijn dan gebaseerd op de plandatum.
var plandatefrom = getQParamDate("plandate_from", null);
var plandateto = getQParamDate("plandate_to", null);
var plandatefrom = getQParamDate("plandate_from", getQParamDate("plandate", null));
var plandateto = getQParamDate("plandate_to", plandatefrom);
plandatefrom = plandatefrom || plandateto;
// Nu zijn ze altijd allebei wel of allebei niet gedefinieerd
}
else
{ // b. heb ik dan opdrachtrechten binnen een scope, dat is ORDBOF of ORDBO2? Dan mag ik opdrachten binnen de scope zien.
@@ -184,10 +193,10 @@ if (!hasParamFlag)
// Wel, afhankelijk van mijn bepaalde rol kan ik mijn overzicht anders willen,
// toegespitster op mijn behoefte (listmode):
// 1. alle opdrachten, met de naam van de contactpersoon erbij (ik of mijn collega, leeg als ik)
// 2. alle opdrachten per uitvoerder, kan ik makkelijk afmelden
// 3. al mijn opdrachten, mijn todolijst
// 4. alle opdracht van de meegegeven melding
// 1. Alle opdrachten, met de naam van de contactpersoon erbij (ik of mijn collega, leeg als ik)
// 2. Alle opdrachten per uitvoerder, kan ik makkelijk afmelden
// 3. Al mijn opdrachten, mijn todolijst
// 4. Alle opdracht van de meegegeven melding
function grp_sel_listmode2(grp)
{
@@ -215,7 +224,7 @@ if (!hasParamFlag)
+ " , o.mld_opdr_bedrijfopdr_volgnr"
+ " , o.mld_statusopdr_key"
+ " , (SELECT p.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all p WHERE p.prs_perslid_key = o.prs_perslid_key) behandelaar"
+ " , (SELECT " + S("prs_contactpers_string") + " FROM prs_contactpersoon cp WHERE cp.prs_contactpersoon_key = o.prs_contactpersoon_key) contactpersoon"
+ " , " + S("prs_contactpers_string") + " contactpersoon"
+ " , mu.naam"
+ " , mu.type"
+ " , mu.intern"
@@ -276,11 +285,13 @@ if (!hasParamFlag)
+ " , alg_locatie l"
+ " , alg_district di"
+ " , mld_v_uitvoerende mu"
+ " , prs_contactpersoon cp"
+ " WHERE o.mld_melding_key = m.mld_melding_key (+)"
+ " AND m.mld_stdmelding_key = std.mld_stdmelding_key (+)"
+ " AND std.mld_ins_discipline_key = d.ins_discipline_key (+)"
+ " AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key (+)"
+ " AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key" // type b of p toch nog ergens doen@?
+ " AND cp.prs_contactpersoon_key(+) = o.prs_contactpersoon_key"
+ (grp_sel==""
? ""
: (listmode == 2
@@ -325,56 +336,19 @@ if (!hasParamFlag)
if (listmode == 1)
{
var sql_plandate = "";
var ora_date1;
var ora_date2;
var day_is_the_same = false;
if (plandatefrom && plandateto)
{
ora_date1 = plandatefrom.beginToSQL();
ora_date2 = plandateto.endToSQL();
day_is_the_same = (plandatefrom.midnight().getTime() == plandateto.midnight().getTime())
var plandate_where = "";
var oneday = false;
if (plandatefrom || plandateto) {
var oneday = plandatefrom.midnight().getTime() == plandateto.midnight().getTime();
plandate_where = " AND o.mld_opdr_plandatum BETWEEN " + plandatefrom.beginToSQL() + " AND " + plandateto.endToSQL();
}
else if (plandatefrom)
{
ora_date1 = plandatefrom.beginToSQL();
ora_date2 = plandatefrom.endToSQL();
day_is_the_same = true;
}
else if (plandateto)
{
ora_date1 = plandateto.beginToSQL();
ora_date2 = plandateto.endToSQL();
day_is_the_same = true;
}
if (day_is_the_same)
{ // ora_date1 en ora_date2 zijn op dezelfde dag.
var sqld = "SELECT fac.datumtijdplusuitvoertijd (" + ora_date1 + ", 0, 'DAGEN') date1 FROM DUAL";
var oRsd = Oracle.Execute(sqld);
var ora_date1 = new Date(oRsd("date1").Value).beginToSQL();
var ora_date2 = new Date(oRsd("date1").Value).endToSQL();
oRsd.close();
}
// Op mobile een dag(en)overzicht tonen van opdrachten op basis van een from en een to datum, voor mij als contactpersoon van de uitvoerende.
// Die datums zijn dan gebaseerd op de plandatum en binnen die datums gesorteerd op tijd (van diezelfde plandatum).
// Ook evt. opdrachten die aan geen contactpersoon zijn toegekend (dus leeg zijn), wil ik in dat dagoverzicht kunnen bekijken.
if (ora_date1 && ora_date2)
sql_plandate = " AND o.mld_opdr_plandatum BETWEEN " + ora_date1 + " AND " + ora_date2;
+ " AND ((SELECT prs_contactpersoon_key"
+ " FROM prs_contactpersoon"
+ " WHERE prs_perslid_key = " + user_key
+ " AND prs_contactpersoon_verwijder IS NULL"
+ " AND prs_bedrijf_key = o.mld_uitvoerende_keys) = o.prs_contactpersoon_key"
+ " OR o.prs_contactpersoon_key IS NULL)"
sql += " AND EXISTS (SELECT 'X' " // Ben ik contactpersoon van het uitvoerende externe bedrijf.
+ " FROM prs_contactpersoon"
+ " WHERE prs_perslid_key = " + user_key
+ " AND prs_contactpersoon_verwijder is null "
+ " AND prs_bedrijf_key = o.mld_uitvoerende_keys)"
+ sql_plandate;
+ plandate_where;
}
if (listmode == 3)
@@ -394,6 +368,27 @@ if (!hasParamFlag)
+ " , prs_v_aanwezigafdeling a"
+ " WHERE p.prs_afdeling_key = a.prs_afdeling_key"
+ " AND p.prs_perslid_key = " + user_key + ")";
if (self) {
// Self heeft betrekking op de actieve behandelaar, dat kan zowel de contactpersoon als de behandelaar zijn
// -2: Opdrachten zonder actieve behandelaar
// 0/null: Alle opdrachten, ongeacht actieve behandelaar
// 1: Opdrachten waarbij ik de actieve behandelaar ben
// 2: -2 & 1 (Dus; Geen actieve behandelaar, of ik ben de actieve behandelaar)
switch (self) {
case -2:
sql += " AND COALESCE(o.prs_contactpersoon_key, o.prs_perslid_key) IS NULL";
break;
case 1:
sql += " AND ( cp.prs_perslid_key = " + user_key
+ " OR o.prs_perslid_key = " + user_key + ")";
break;
case 2:
sql += " AND ( COALESCE(o.prs_contactpersoon_key, o.prs_perslid_key) IS NULL"
+ " OR cp.prs_perslid_key = " + user_key
+ " OR o.prs_perslid_key = " + user_key + ")";
break;
}
}
// Een afmelder (ORDBO2 of EXTORD) mag externe opdrachten zien/afmelden onder bepaalde voorwaarden:
// EXTORD: Hij mag opdrachten zien/afmelden van externe bedrijven waar hij contactpersoon van is,
@@ -455,8 +450,7 @@ if (!hasParamFlag)
sql = "SELECT * FROM (" + sqlA + ") ORDER BY "
+ ((grp_sel == "" && listmode == 2)
? " naam, mld_opdr_datumbegin"
: (listmode == 1 && ora_date1 && ora_date2? " mld_opdr_plandatum," : "") + " actief DESC, halted, einddatum, opdracht")
: (listmode == 1 && plandatefrom ? " mld_opdr_plandatum," : "") + " actief DESC, halted, einddatum, opdracht");
function fncolLink(oRs)
{
@@ -516,7 +510,7 @@ if (!hasParamFlag)
+ (actiecode & 4 ? "<span class='ac'>" + I("fa-comment-smile fa-flip-horizontal", { fastyle: "far" }) + "&nbsp;" + L("lcl_mld_actiecodeUITV") + "</span><br>" : "")
+ (oRs("plaatsmelding").Value? "" + I("fa-map-marker", { fastyle: "far" }) + "&nbsp;"+safe.html(oRs("plaatsmelding").Value) + "<br>" : "")
+ (safeuitv != "" ? safeuitv + "<br>" : "")
+ "" + I("fa-clock", { fastyle: "far" }) + "&nbsp;" + toDateTimeString(oRs("mld_opdr_einddatum").Value, false, false, true)
+ "" + I("fa-clock", { fastyle: "far" }) + "&nbsp;" + toDateTimeString(oRs("einddatum").Value, false, false, true, true)
+ (flagkey ? "<br>&nbsp;<span class='opdrflag"+flagkey+"'>" + I("fa-fclt-flag", { fastyle: "far" }) + "</span>&nbsp;" + L("lcl_opdr_flag" + flagkey) : "")
+ "</div>"
+ "<div class='listbodytext'>" + safe.html(shorttxt(oRs("mld_opdr_omschrijving").Value, S("rs_mobile_maxchar"))) + "</div>";
@@ -527,11 +521,23 @@ if (!hasParamFlag)
// Om wat explicieter te zijn in wat we zien specifieke titels per mode
var listtitle = L("lcl_mobile_opdrachten");
switch (listmode) {
case 1: listtitle = L("lcl_mobile_opdrachten1"); break;
case 1:
if (plandatefrom) {
var datefrom_str = toDateString(plandatefrom, true, true).toLowerCase();
if (oneday) {
listtitle = "Planning van {0}".format(datefrom_str);
} else {
listtitle = "Planning van {0} t/m {1}".format(datefrom_str, toDateString(plandateto, true, true).toLowerCase());
}
} else {
listtitle = L("lcl_mobile_opdrachten1");
}
break;
case 2: listtitle = L("lcl_mobile_opdrachten2") + " " + CurrentPositionMinus1; break; /* is niveau hoger */
case 3: listtitle = L("lcl_mobile_opdrachten3") + " " + CurrentPositionMinus1; break; /* is niveau hoger */
case 4: listtitle = L("lcl_mobile_opdrachten") + " " + L("lcl_mobile_objbijmelding") + " " + meldingNr; break;
}
var addaction = (addAllowed? "../pda/order.asp?mld_key=" + mld_key : "");
PAGE_START({datacache:false});

View File

@@ -105,7 +105,7 @@ imgurl += "&sizeY=" + (1*sizeY);
<html>
<head>
<% FCLTMHeader.Generate({}); %>
<script>
<script>
<% if (!readonly)
{ %>
// is er niet met bootstrap $(function() { $.mobile.zoom.enable(true); });
@@ -164,82 +164,83 @@ imgurl += "&sizeY=" + (1*sizeY);
}
}
<% } %>
// Pinch-to-zoom and pan for the image (always enabled)
(function() {
var img = document.querySelector('#mobplan img');
if (!img) return;
var lastScale = 1, scale = 1, lastX = 0, lastY = 0, posX = 0, posY = 0, startX = 0, startY = 0, dragging = false;
function setTransform() {
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
}
// Pinch-to-zoom and pan for the image (always enabled)
$(function () {
var img = document.querySelector('#mobplan img');
if (!img) return;
var lastScale = 1, scale = 1, lastX = 0, lastY = 0, posX = 0, posY = 0, startX = 0, startY = 0, dragging = false;
img.addEventListener('touchstart', function(e) {
if (e.touches.length === 1) {
dragging = true;
startX = e.touches[0].clientX - lastX;
startY = e.touches[0].clientY - lastY;
function setTransform() {
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
}
});
img.addEventListener('touchmove', function(e) {
if (e.touches.length === 1 && dragging) {
e.preventDefault();
posX = e.touches[0].clientX - startX;
posY = e.touches[0].clientY - startY;
img.addEventListener('touchstart', function(e) {
if (e.touches.length === 1) {
dragging = true;
startX = e.touches[0].clientX - lastX;
startY = e.touches[0].clientY - lastY;
}
});
img.addEventListener('touchmove', function(e) {
if (e.touches.length === 1 && dragging) {
e.preventDefault();
posX = e.touches[0].clientX - startX;
posY = e.touches[0].clientY - startY;
lastX = posX;
lastY = posY;
setTransform();
} else if (e.touches.length === 2) {
e.preventDefault();
dragging = false;
var dx = e.touches[0].clientX - e.touches[1].clientX;
var dy = e.touches[0].clientY - e.touches[1].clientY;
var dist = Math.sqrt(dx*dx + dy*dy);
if (!img._startDist) {
img._startDist = dist;
img._startScale = scale;
} else {
var newScale = img._startScale * (dist / img._startDist);
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
setTransform();
}
}
}, { passive: false });
img.addEventListener('touchend', function(e) {
dragging = false;
img._startDist = null;
img._startScale = scale;
lastX = posX;
lastY = posY;
setTransform();
} else if (e.touches.length === 2) {
e.preventDefault();
dragging = false;
var dx = e.touches[0].clientX - e.touches[1].clientX;
var dy = e.touches[0].clientY - e.touches[1].clientY;
var dist = Math.sqrt(dx*dx + dy*dy);
});
if (!img._startDist) {
img._startDist = dist;
img._startScale = scale;
} else {
var newScale = img._startScale * (dist / img._startDist);
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
// Optional: double tap to reset
var lastTap = 0;
img.addEventListener('touchend', function(e) {
var now = new Date().getTime();
if (e.touches.length === 0 && now - lastTap < 300) {
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
setTransform();
}
}
}, { passive: false });
if (e.touches.length > 0) {
lastTap = 0;
} else {
lastTap = now;
}
});
img.addEventListener('touchend', function(e) {
dragging = false;
img._startDist = null;
img._startScale = scale;
lastX = posX;
lastY = posY;
});
// Optional: double tap to reset
var lastTap = 0;
img.addEventListener('touchend', function(e) {
var now = new Date().getTime();
if (e.touches.length === 0 && now - lastTap < 300) {
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
// Mouse wheel zoom (desktop)
img.addEventListener('wheel', function(e) {
e.preventDefault();
var delta = e.deltaY < 0 ? 1.1 : 0.9;
scale = Math.max(1, Math.min(scale * delta, 5));
setTransform();
}
if (e.touches.length > 0) {
lastTap = 0;
} else {
lastTap = now;
}
});
});
// Mouse wheel zoom (desktop)
img.addEventListener('wheel', function(e) {
e.preventDefault();
var delta = e.deltaY < 0 ? 1.1 : 0.9;
scale = Math.max(1, Math.min(scale * delta, 5));
setTransform();
});
})();
</script>
</script>
</head>
<body>
<%

View File

@@ -92,7 +92,7 @@ user.auth_required_or_abort(authparams.ALGwritelevel < 9 && authparams.PRSwritel
function res_claimwp_callback(json, textStatus)
{
if (json.success)
$("#spanclaimwp").text(L("lcl_flexplek") + " " + "<%=safe.html(res_deel)%>" + " " + L("lcl_flexplekclaimed") + " " + "<%=user.naam()%>" + " " + L("lcl_flexplekclaimfooter"));
$("#spanclaimwp").text(L("lcl_flexplek") + " " + "<%=safe.jsstring(res_deel)%>" + " " + L("lcl_flexplekclaimed") + " " + "<%=safe.jsstring(user.naam())%>" + " " + L("lcl_flexplekclaimfooter"));
}
function res_claimwp_submit()

View File

@@ -101,6 +101,105 @@ imgurl += "&sizeY=" + (1*sizeY);
$(this).parent().scrollLeft(($(this).width() - $(this).parent().width()) / 2);
$(this).parent().scrollTop(($(this).height() - $(this).parent().height()) / 2);
}) // JGL: Waarom? .load();
var img = document.getElementById('plattegrond-img');
var container = document.getElementById('mobplan');
var scale = 1, posX = 0, posY = 0, lastX = 0, lastY = 0, startX = 0, startY = 0, dragging = false;
function clamp(val, min, max) {
return Math.max(min, Math.min(max, val));
}
function setTransform() {
var cw = container.clientWidth;
var ch = container.clientHeight;
// Compute pan bounds based on container size & scale
var minX = -(cw * scale - cw) / 2;
var maxX = (cw * scale - cw) / 2;
var minY = -(ch * scale - ch) / 2;
var maxY = (ch * scale - ch) / 2;
posX = clamp(posX, minX, maxX);
posY = clamp(posY, minY, maxY);
lastX = posX;
lastY = posY;
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
}
img.addEventListener('load', function() {
scale = 1;
posX = 0;
posY = 0;
lastX = 0;
lastY = 0;
setTransform();
});
img.addEventListener('touchstart', function(e) {
if (e.touches.length === 1) {
dragging = true;
startX = e.touches[0].clientX - lastX;
startY = e.touches[0].clientY - lastY;
}
});
img.addEventListener('touchmove', function(e) {
if (e.touches.length === 1 && dragging) {
e.preventDefault();
posX = e.touches[0].clientX - startX;
posY = e.touches[0].clientY - startY;
setTransform();
} else if (e.touches.length === 2) {
e.preventDefault();
dragging = false;
var dx = e.touches[0].clientX - e.touches[1].clientX;
var dy = e.touches[0].clientY - e.touches[1].clientY;
var dist = Math.sqrt(dx*dx + dy*dy);
if (!img._startDist) {
img._startDist = dist;
img._startScale = scale;
} else {
var newScale = img._startScale * (dist / img._startDist);
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
setTransform();
}
}
}, { passive: false });
img.addEventListener('touchend', function(e) {
dragging = false;
img._startDist = null;
img._startScale = scale;
lastX = posX;
lastY = posY;
});
// Optional: double tap to reset
var lastTap = 0;
img.addEventListener('touchend', function(e) {
var now = new Date().getTime();
if (e.touches.length === 0 && now - lastTap < 300) {
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
setTransform();
}
if (e.touches.length > 0) {
lastTap = 0;
} else {
lastTap = now;
}
});
// Mouse wheel zoom (desktop)
img.addEventListener('wheel', function(e) {
e.preventDefault();
var delta = e.deltaY < 0 ? 1.1 : 0.9;
scale = Math.max(1, Math.min(scale * delta, 5));
setTransform();
});
});
function process_info(data)
{
@@ -131,7 +230,6 @@ imgurl += "&sizeY=" + (1*sizeY);
<img alt="<%=L("lcl_room_cad")%>" style="height:auto;display:block;margin:0 auto;" src="<%=safe.htmlattr(imgurl)%>" id="plattegrond-img">
</div>
<%
// En nu nog de legenda
if (thema_key != -1 || themaI_key != -1) {
@@ -245,7 +343,6 @@ imgurl += "&sizeY=" + (1*sizeY);
oRs.Close();
}
}
CONTENT_END();
FOOTER();
@@ -253,106 +350,4 @@ imgurl += "&sizeY=" + (1*sizeY);
PDA_PAGE_END(); %>
</body>
</html>
<% ASPPAGE_END(); %>
<script>
(function() {
var img = document.getElementById('plattegrond-img');
var container = document.getElementById('mobplan');
var scale = 1, posX = 0, posY = 0, lastX = 0, lastY = 0, startX = 0, startY = 0, dragging = false;
function clamp(val, min, max) {
return Math.max(min, Math.min(max, val));
}
function setTransform() {
var cw = container.clientWidth;
var ch = container.clientHeight;
// Compute pan bounds based on container size & scale
var minX = -(cw * scale - cw) / 2;
var maxX = (cw * scale - cw) / 2;
var minY = -(ch * scale - ch) / 2;
var maxY = (ch * scale - ch) / 2;
posX = clamp(posX, minX, maxX);
posY = clamp(posY, minY, maxY);
lastX = posX;
lastY = posY;
img.style.transform = "translate(" + posX + "px," + posY + "px) scale(" + scale + ")";
}
img.addEventListener('load', function() {
scale = 1;
posX = 0;
posY = 0;
lastX = 0;
lastY = 0;
setTransform();
});
img.addEventListener('touchstart', function(e) {
if (e.touches.length === 1) {
dragging = true;
startX = e.touches[0].clientX - lastX;
startY = e.touches[0].clientY - lastY;
}
});
img.addEventListener('touchmove', function(e) {
if (e.touches.length === 1 && dragging) {
e.preventDefault();
posX = e.touches[0].clientX - startX;
posY = e.touches[0].clientY - startY;
setTransform();
} else if (e.touches.length === 2) {
e.preventDefault();
dragging = false;
var dx = e.touches[0].clientX - e.touches[1].clientX;
var dy = e.touches[0].clientY - e.touches[1].clientY;
var dist = Math.sqrt(dx*dx + dy*dy);
if (!img._startDist) {
img._startDist = dist;
img._startScale = scale;
} else {
var newScale = img._startScale * (dist / img._startDist);
scale = Math.max(1, Math.min(newScale, 5)); // Clamp zoom
setTransform();
}
}
}, { passive: false });
img.addEventListener('touchend', function(e) {
dragging = false;
img._startDist = null;
img._startScale = scale;
lastX = posX;
lastY = posY;
});
// Optional: double tap to reset
var lastTap = 0;
img.addEventListener('touchend', function(e) {
var now = new Date().getTime();
if (e.touches.length === 0 && now - lastTap < 300) {
scale = 1; posX = 0; posY = 0; lastX = 0; lastY = 0;
setTransform();
}
if (e.touches.length > 0) {
lastTap = 0;
} else {
lastTap = now;
}
});
// Mouse wheel zoom (desktop)
img.addEventListener('wheel', function(e) {
e.preventDefault();
var delta = e.deltaY < 0 ? 1.1 : 0.9;
scale = Math.max(1, Math.min(scale * delta, 5));
setTransform();
});
})();
</script>
<% ASPPAGE_END(); %>

View File

@@ -204,8 +204,8 @@ oRs.Close();
toRs = Oracle.Execute(tsql);
if (toRs(0).value == 1) { // eentje slechts, dan naar de details; max is vanzelfsprekend die ene
BUTTON(L("lcl_mobile_objecten")+" (1)", {linkid: "./ins_deel.asp?ins_key="+toRs(1).value + transitParam, icon: "fa-info" });
} else if (toRs(0).value > 0) { // meerdere, dan naar lijst
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: "./ins_list.asp?ruimte_key="+ruimte_key +"&plaatsfilter=0" + transitParam, icon: "fa-info"});
} else if (toRs(0).value > 0) { // meerdere, dan naar lijst, en onderdruk persoons-afdelings-terrein objecten.
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: "./ins_list.asp?ruimte_key="+ruimte_key +"&plaatsfilter=0&p=0&a=0&t=0" + transitParam, icon: "fa-info"});
}
toRs.Close();
}

View File

@@ -301,7 +301,9 @@ BLOCK_START("prsPerslid", L("lcl_prs_basisblok"), {buttons: btns, icon: "fa-id-c
RWFIELDTR("prs_oslog2", "fld", L("lcl_prs_person_login2"), prs_oslog2, {maxlength: 256});
}
}
ROFIELDTR("fld", L("prs_perslid_inactief"), toDateTimeString(prs_inactief_datum), {suppressEmpty: true});
if (prs_key > -1) {
ROFIELDTR("fld", L("prs_perslid_inactief"), toDateTimeString(prs_inactief_datum), {suppressEmpty: true});
}
if (prsauthparams.writesys)
RWTEXTAREATR("prs_opm", "fldtxt", L("lcl_prs_person_opmerking"), prs_opm, {maxlength: 320});
else

View File

@@ -213,7 +213,7 @@ function perslid_list(pautfunction, params)
+ " FROM prs_kostenplaats kp"
+ " WHERE kp.prs_kostenplaats_key = COALESCE(p.prs_kostenplaats_key, d.prs_kostenplaats_key)"
+ " ) prs_kostenplaats_nr"
+ " , (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = d.prs_perslid_key_verantw) prs_perslid_verantw"
+ " , (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = p.prs_perslid_key_verantw) prs_perslid_verantw"
+ (anyflex
? ", (SELECT LISTAGG("
+ (multiflex ? lcl.xsql("k.prs_kenmerk_omschrijving", "k.prs_kenmerk_key")

View File

@@ -458,6 +458,11 @@ var met_foto = getQParam("pb_photo","off")=="on";
switch (mode)
{
case 1: // personen
if (S("prs_phonebook_maxresults") > 0)
{
settings.overrule_setting("qp_maxrows", S("prs_phonebook_maxresults"))
settings.overrule_setting("qp_maxrows2", S("prs_phonebook_maxresults"))
}
var canBookmarkf = user.func_enabled("FAC", null, null, null, null, true); // laatste true: isOptional
var canBookmark = canBookmarkf && canBookmarkf.canRead("WEB_HLPADM");
var rst = new ResultsetTable({ keyColumn: "prs_perslid_key",
@@ -472,7 +477,8 @@ var met_foto = getQParam("pb_photo","off")=="on";
title: L("lcl_search_pers"),
showAll: showall,
canBookmark: canBookmark,
auditcount: 1
noExcel: S("prs_phonebook_maxresults") > 0, // dan ook geen Excel
auditcount: S("prs_phonebook_audit_floor") // default auditen we als meer dan 10 resultaten
});
var dofotos = met_foto && outputmode==0 && !showall;

View File

@@ -103,6 +103,8 @@ if (!local_date_from)
server_date_to = new Date(oRs("res_rsv_ruimte_tot").Value);
local_tz = res.getRsvTimezone(rsv_ruimte_key);
oRs.Close();
local_date_from = convertToLocalTime(server_date_from, local_tz);
local_date_to = convertToLocalTime(server_date_to, local_tz);
}
else
{

View File

@@ -952,8 +952,9 @@ function make_plan_obj(disc_key, res_van, res_tot, params)
{
return $("div.grid > div.body div.labelgrid[data-disc=<%=disc_key%>].res_nofit").filter(":" + (visible ? "visible":"hidden")).each(function() {
var $this = $(this);
var show = $this.is(":visible") == false;
$("div[data-row=" + $this.attr("data-row") + "]").toggle(show);
var show = $this.is(":visible") == false;
var rowNr = $this.data("row");
$this.closest(".grid").find("div[data-row=" + rowNr + "]").toggle(show);
});
}
toggleNoFit<%=disc_key%>(true);

View File

@@ -733,8 +733,8 @@ var bulkFields = " distinct "
+ " , rr.res_rsv_ruimte_tot"
+ " , ra.res_rsv_artikel_verwijder ddVerwijder"
+ " , CASE "
+ " WHEN (ra.res_rsv_artikel_levering BETWEEN res_rsv_ruimte_van "
+ " AND res_rsv_ruimte_tot) "
+ " WHEN (ra.res_rsv_artikel_levering BETWEEN rr.res_rsv_ruimte_van "
+ " AND rr.res_rsv_ruimte_tot) "
+ " THEN 1 "
+ " ELSE 0 "
+ " END levbinnentijd"

View File

@@ -580,7 +580,7 @@ function scf_RWFIELDTR(model, fld, val, key, params)
"sg" + fld,
{ label: field.label,
srtcontrole_key: val? val.id : null,
filtercode: "foreignfiltercode" in field? field.foreignfiltercode : "",
filtercode: "foreignfiltercode" in field? field.foreignfiltercode : "PI",
urlAdd: field.urlAdd
});
}

View File

@@ -676,6 +676,11 @@ var shared = {
promptAI: function (msg, params)
{
params = params || {};
// Tijdelijk voor 2025.3 Gold A tot 2026.1
settings.overrule_setting("ai_endpoint", "https://general-foundry-prod.cognitiveservices.azure.com/openai/deployments/general-gpt4o/chat/completions?api-version=2025-01-01-preview");
settings.overrule_setting("ai_apikey", "3XUVnWTMwxOhKEj4Jnu4hj0Ifr8B9lt0PLCdhjAVxb2krGD99wpiJQQJ99BJACfhMk5XJ3w3AAAAACOGEWSl");
var result = {};
var apikey = S("ai_apikey");
if (!apikey) {
@@ -1475,7 +1480,7 @@ function convertTimeZone(thisDate, fromTZ, toTZ)
// Als de jsDate van de user(client) afkomstig is, hoeft er geen conversie naar de user-time-zone plaats te vinden
function toTimeString(jsDate, bWithSeconds, isLocalTime)
{
if (jsDate===null)
if (jsDate == null)
return "";
if (typeof jsDate == "object" && jsDate.type == 135/*adDBTimeStamp, oRs("datum")*/)
@@ -1512,7 +1517,7 @@ function toDateString(jsDate, noDay, pretty, isLocalDate)
var tomorrow = (new Date(today));
tomorrow.setDate(today.getDate()+1);
if (jsDate===null)
if (jsDate == null)
return "";
if (typeof jsDate == "object" && jsDate.type == 135/*adDBTimeStamp, oRs("datum")*/)
@@ -1545,7 +1550,7 @@ function toDateString(jsDate, noDay, pretty, isLocalDate)
}
function toDateTimeString(jsDate, bWithSeconds, noDay, prettyday, noMidnight, isLocalDate)
{
if (jsDate===null)
if (jsDate == null)
return "";
if (typeof jsDate == "object" && jsDate.type == 135/*adDBTimeStamp, oRs("datum")*/)

View File

@@ -33,23 +33,23 @@ var sql = "SELECT mld_melding_tag_key"
+ " , TO_CHAR(mld_melding_tag_datum_tot, 'DD-MM-YYYY') mld_melding_tag_datum"
+ " FROM mld_melding_tag"
+ " WHERE mld_melding_tag_verwijder IS NULL"
+ " AND (UPPER(mld_melding_tag_naam) LIKE " + safe.quoted_sql_wild2(chars)
+ " AND (UPPER(mld_melding_tag_naam) LIKE " + safe.quoted_sql_wild2(chars)
+ " OR TO_CHAR(mld_melding_tag_datum_tot, 'DD-MM-YYYY') LIKE " + safe.quoted_sql_wild2(chars) + ")"
+ (srtdisc_key > -1 ? " AND ins_srtdiscipline_key = " + srtdisc_key : "")
+ (filtcode == "A" ? " AND mld_melding_tag_actief = 1" : "")
+ " AND ins_srtdiscipline_key IN"
+ " (SELECT di.ins_srtdiscipline_key FROM fac_v_webgebruiker fw, mld_discipline di"
+ " WHERE fac_gebruiker_alg_level_read < 9"
+ " WHERE fac_gebruiker_alg_level_read < 9"
+ " AND fac_gebruiker_prs_level_read < 9"
+ " AND fac_functie_key IN (SELECT fac_functie_key FROM fac_functie WHERE fac_functie_code IN ('WEB_MLDFOF', 'WEB_MLDBOF', 'WEB_MLDBAC'))"
+ " AND di.ins_discipline_module = 'MLD'"
+ " AND prs_perslid_key = " + user_key
+ " AND di.ins_discipline_key = fw.ins_discipline_key)"
+ "ORDER BY mld_melding_tag_datum_tot, mld_melding_tag_naam";
+ "ORDER BY mld_melding_tag_datum_tot DESC, mld_melding_tag_naam";
WriteResult2(sql, { bAll: bAll,
fldName: "mld_melding_tag_naam",
fldName: "mld_melding_tag_naam",
fldKey : "mld_melding_tag_key",
fldDesc: "mld_melding_tag_datum"} );
%>
<% ASPPAGE_END(); %>
<% ASPPAGE_END(); %>

View File

@@ -119,7 +119,7 @@ var zoeksqlstring = (verkey > 0
sql = "SELECT r.alg_ruimte_key"
+ " , " + zoeksqlstring + " naam"
+ " , r.alg_ruimte_nr"
+ " , sr.alg_srtruimte_omschrijving"
+ " , " + lcl.xsqla("sr.alg_srtruimte_omschrijving", "sr.alg_srtruimte_key")
+ " FROM alg_v_aanwezigruimte r"
+ " , alg_srtruimte sr"
+ " , alg_verdieping v"
@@ -130,7 +130,7 @@ sql = "SELECT r.alg_ruimte_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
if (chars != "%")
sql += " AND (UPPER("+zoeksqlstring+") LIKE " + safe.quoted_sql_wild2(chars)
+ " OR UPPER(sr.alg_srtruimte_omschrijving) LIKE " + safe.quoted_sql_wild2(chars) + ")";
+ " OR UPPER(" + lcl.xsql("sr.alg_srtruimte_omschrijving", "sr.alg_srtruimte_key") + ") LIKE " + safe.quoted_sql_wild2(chars) + ")";
sql += filtClause.where
+ " ORDER BY g.alg_gebouw_code, v.alg_verdieping_volgnr, 2";

View File

@@ -1024,11 +1024,8 @@ async function _Suggest(inParams) {
}
}
if (isMobile) {
xDiv.ontouchstart = function() { highlight(this.sgIndex); };
} else {
xDiv.onmouseover = function() { highlight(this.sgIndex); };
}
xDiv.ontouchstart = function() { highlight(this.sgIndex); };
xDiv.onmouseover = function() { highlight(this.sgIndex); };
xDiv.onmousedown = function() {
setValues(true);

View File

@@ -117,6 +117,9 @@ section#searchbody td /* voor de styling-preview */
--fclt-input-border-y: 1px;
line-height: calc(var(--fclt-td-line-height) - 2 * var(--fclt-input-padding-y) - 2 * var(--fclt-input-border-y));
}
&.flexlabel {
line-height: calc(0.8 * var(--fclt-td-line-height)); /* Ik wil eigenlijk 12px font-size en dan 1.8em => 21.6px net zoals show-mode */
}
}
/* heel algemene styles */
@@ -486,9 +489,7 @@ div.modules > div.module {
font-weight: 300;
line-height: normal;
margin: 5px;
background: var(--menuiconcolor-gradient);
background-clip: text;
-webkit-text-fill-color: transparent;
color: var(--menuiconcolor);
transition: transform var(--fclt-animation-duration-s) ease;
}
div#useroptions > div:hover, div.test,
@@ -1384,13 +1385,23 @@ td.listid
padding: 0.35em 0.65em; /* var(--bs-badge-padding-y) var(--bs-badge-padding-x); */
border-radius: var(--fclt-border-radius-lg);
}
.mldshowactie.fclt-info {
.mldshowactie:is(.fclt-info, .fclt-warning) {
display: flex;
align-items: center;
width: 100%;
padding: 0.75rem;
gap: 0.75rem;
line-height: normal;
}
:is(.fclt-info, .fclt-warning)::before {
font-size: 1.5rem;
font-family: "Font Awesome 6 Pro";
}
.fclt-info::before {
content: "\f05a";
font-family: 'Font Awesome 6 Pro';
margin-right: .25em;
}
.fclt-warning::before {
content: "\f071";
}
/* blockstyles */
@@ -1646,6 +1657,9 @@ div.filtermenukop {
/* bedoeld voor de tabs */
.ui-tab.ui-state-default {
background: var(--inactivetabbackgroundcolor);
#menutabs & {
background: #DDDDDD;
}
a,
.tabclose,
.tabpinned {
@@ -1654,11 +1668,17 @@ div.filtermenukop {
}
.ui-tab.ui-state-hover,
.ui-tab.ui-state-focus {
background-color: var(--buttonhoverbackgroundcolor);
color: var(--buttonhovercolor);
#menutabs &, & {
background-color: var(--buttonhoverbackgroundcolor);
color: var(--buttonhovercolor);
}
}
.ui-tab.ui-state-hover a {
color: var(--buttonhovercolor);
.ui-tab.ui-state-hover {
a,
.tabclose,
.tabpinned {
color: var(--buttonhovercolor);
}
}
.ui-tab.ui-state-active {
border: 1px solid #aaa;
@@ -2454,8 +2474,8 @@ div.wbackground {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 5;
line-clamp: 5;
-webkit-line-clamp: 6;
line-clamp: 6;
-webkit-box-orient: vertical;
}
}
@@ -2484,6 +2504,9 @@ div.wbackground {
right: -4rem;
}
}
.fclt-news-content {
line-height: calc(1rem + 1px);
}
#mynewscontainer {
display: inline;
}
@@ -2957,16 +2980,18 @@ i + .dialogtext {
&:hover {
color: var(--buttonhovercolor);
text-decoration: none;
background: var(--buttonhoverbackgroundcolor) radial-gradient(circle, transparent 1%, var(--buttonhoverbackgroundcolor) 1%) center/15000%;
background: var(--buttonhoverbackgroundcolor) radial-gradient(circle, transparent 1%, var(--buttonhoverbackgroundcolor) 1%) center/15000%;
}
}
#buttons ul li.emphasishigh:active,
#linkOk:active, #besfavbtnall:active,
#buttons ul li.emphasismedium:active {
background-color: var(--buttonhovercolor);
color: var(--buttonhoverbackgroundcolor);
background-size: 100%;
#buttons ul li.emphasishigh,
#linkOk,
#besfavbtnall,
#buttons ul li.emphasismedium {
&:active {
background-color: var(--buttonhovercolor);
background-size: 100%;
}
}
#buttons ul li.emphasislow:active {
@@ -3597,10 +3622,15 @@ div.mldhandlinghead {
{
color: var(--tableheadercolor);
background-color: var(--tableheaderbackgroundcolor);
font-weight: normal;
border-top: 1px solid var(--fclt-color-grey-50);
border-right: 1px ridge #ccc;
border-bottom: 1px solid var(--fclt-color-grey-50);
white-space: nowrap;
padding: 2px 3px 2px 3px; /* want tfoot td = th */
font-weight: normal;
&:is(th) {
font-weight: 600;
}
}
.rstable :is(thead th,
tfoot td):first-child {
@@ -5150,7 +5180,6 @@ li.mk:hover {
background-color: var(--menukophoverbackgroundcolor)!important;
}
li.mk:hover span.menukop,
li.mk:hover span.micon i,
.withaction:hover i {
color: var(--menukophovercolor)!important;
}
@@ -5524,16 +5553,19 @@ td.bessrtdeelfoto {
}
:is(#portalmenu, .widget-type-mk, .widget-type-mi) :is(.widget-menu-image, .menuimg) i {
font-size: 4em;
background: var(--menuiconcolor-gradient);
background-clip: text; /* Gradient op tekst toepassen */
-webkit-text-fill-color: transparent; /* Tekstkleur transparant maken zodat gradient zichtbaar is */
}
#menutabs .micon i {
color: var(--menuiconcolor);
}
:is(#portalmenu, .widget-type-mk, .widget-type-mi) :is(.widget-menu-image, .menuimg) i,
#menutabs .micon i {
display: inline-block; /* Zorgt dat de icons inline met tekst blijven */
line-height: 1.2; /* Verticale uitlijning binnen icon */
padding-top: 2px; /* Ruimte boven icon */
background: var(--menuiconcolor-gradient);
background-clip: text; /* Gradient op tekst toepassen */
-webkit-text-fill-color: transparent; /* Tekstkleur transparant maken zodat gradient zichtbaar is */
transition: transform var(--fclt-animation-duration-s) ease; /* Gestandaardiseerd (fclt-card) */
transition: transform var(--fclt-animation-duration-s) ease-in-out; /* Gestandaardiseerd (fclt-card) */
}
/* ---------------------------------------------------
@@ -7163,8 +7195,8 @@ iframe.inactive {
display: flex;
justify-content: center;
align-items: center;
background-color: var(--frameheaderbackgroundcolor);
color: var(--frameheadercolor);
background-color: var(--tableheaderbackgroundcolor);
color: var(--tableheadercolor);
margin: 0.5rem;
padding: 0.5rem 1rem;
border-radius: var(--fclt-border-radius);
@@ -7443,13 +7475,24 @@ figure img {
}
section.edit-note,
.mldshowactie.fclt-info {
background-color: rgba(255, 255, 255, 0.5);
.mldshowactie:is(.fclt-info, .fclt-warning) {
border: 1px solid var(--notesbackgroundcolor);
border-radius: 0 0 var(--fclt-border-radius-lg) var(--fclt-border-radius-lg);
transition: filter 150ms ease;
}
.noti-info + .mldshowactie.fclt-info {
section.edit-note {
background-color: rgba(255, 255, 255, 0.5);
}
.mldshowactie.fclt-info {
background-color: var(--fclt-color-neutral-contrast);
color: var(--fclt-color-neutral);
}
.mldshowactie.fclt-warning {
background-color: var(--fclt-color-bad-contrast);
color: var(--fclt-color-bad);
}
.noti-info + .mldshowactie:is(.fclt-info, .fclt-warning) {
border-radius: var(--fclt-border-radius-lg);
}
@@ -7570,8 +7613,8 @@ section.edit-note.dragon {
.note-icon {
font-size: 16px;
color: var(--notesbackgroundcolor);
outline-color: var(--notesbackgroundcolor); /* Als je er naar tab't */
color: var(--textcolor);
outline-color: var(--textcolor); /* Als je er naar tab't */
margin: auto 0 auto 0.25em;
}
.note-submit-wrapper {
@@ -8201,7 +8244,7 @@ label[data-toggle-type] + input[type=checkbox] {
.notes-wrapper .note-top-button:hover {
opacity: 1;
color: #fff;
background: var(--notesbackgroundcolor) radial-gradient(circle, transparent 1%, var(--notesbackgroundcolor) 1%) center/15000%;
background: var(--notesbackgroundcolor) radial-gradient(circle, transparent 1%, var(--notesbackgroundcolor) 1%) center/15000%;
}
}

View File

@@ -8,7 +8,7 @@
Context: Vanuit ELK asp bestand
*/
var FCLTVersion="2025.3RC1";
var FCLTVersion="2025.3a";
var FCLTMinDatabaseSchema="52"; // Alleen de cijfers
var custpath = rooturl + "/cust/" + customerId; // path to customer files

View File

@@ -150,7 +150,7 @@
var waarde = nodelist.nextNode().text;
var safepairs = "h1,h2,h3,h4,h5,h6,b,i,u,em,strong,small,big,th,td,tr,table,pre,code".split(",");
var safepairs = "h1,h2,h3,h4,h5,h6,b,i,u,s,em,strong,small,big,th,td,tr,table,pre,code".split(",");
var safehtml = safe.html(waarde); // Let op: vervangt *alle* \n door <br>. Dat gaan we deels later nog terugdraaien
// We hebben het wel *nodig* omdat .* niet over meerdere regels werkt (hoewel dat
// weer oplosbaar schijnt te zijn met [\s\S])
@@ -218,7 +218,8 @@
var groups = matched[i].match(new RegExp(strre, "i")); // Zonder 'g'lobal-flag
if (groups) {
if (module && key) {
var frc = '<img frc="M=' + module + ':K=' + key + '"/>';
var filename = groups[1];
var frc = '<img frc="M=' + module + ':K=' + key + ':F=' + encodeURIComponent(filename) + '"/>';
safehtml = safehtml.replace(matched[i], frc);
} else { // Dan maar strippen
safehtml = safehtml.replace(matched[i], "[Image]");
@@ -3339,7 +3340,8 @@ END:VCALENDAR
.stat-1 { background-color: #003366; color:white;}
.stat-1b { background-color: #FFC7CE; color: #CC0000;}
.stat0 { background-color: #FFA500;}
.stat2 { background-color: #FFFF00;}
.stat2 { background-color: #B9D7FF;}
.stat3 { background-color: #FFFFC8;}
.statc1 { background-color: #339933; color:white;}
.statc0 { background-color: #990000; color:white;}
</style>
@@ -3366,7 +3368,9 @@ END:VCALENDAR
if (pstatus == 0) td.innerHTML = "P"; // ingepland
if (pstatus == 0) td.style.backgroundColor = "#FFA500";
if (pstatus == 2) td.innerHTML = "S"; // gestart
if (pstatus == 2) td.style.backgroundColor = "#FFFF00";
if (pstatus == 2) td.style.backgroundColor = "#B9D7FF";
if (pstatus == 3) td.innerHTML = "U"; // in uitvoering
if (pstatus == 3) td.style.backgroundColor = "#FFFFC8";
if (ctrmodesuccess == 1) td.innerHTML = "G"; // succesvol
if (ctrmodesuccess == 1) td.style.backgroundColor = "#339933";
if (ctrmodesuccess == 1) td.style.color = "#FFFFFF";
@@ -3676,6 +3680,7 @@ END:VCALENDAR
<span class="stat-1b">T</span><span>Te laat</span>
<span class="stat0">P</span><span >Gepland</span>
<span class="stat2">S</span><span>Gestart</span>
<span class="stat3">U</span><span>In uitvoering</span>
<span class="statc1">G</span><span>Succesvol uitgevoerd</span>
<span class="statc0">F</span><span>Onsuccesvol uitgevoerd</span>
</div>

View File

@@ -457,39 +457,40 @@ FCLTHeader =
}
}
// Contrast ratio between two colors
function contrast(hex1, hex2) {
var L1 = luminance(hex1);
var L2 = luminance(hex2);
if (L1 < L2) {
var t = L1; L1 = L2; L2 = t;
}
return (L1 + 0.05) / (L2 + 0.05);
}
// Compute WCAG relative luminance
function luminance(hex) {
var c = hexToRgb(hex);
var r = c.r / 255, g = c.g / 255, b = c.b / 255;
r = r <= 0.03928 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);
g = g <= 0.03928 ? g / 12.92 : Math.pow((g + 0.055) / 1.055, 2.4);
b = b <= 0.03928 ? b / 12.92 : Math.pow((b + 0.055) / 1.055, 2.4);
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
}
// Convert #RRGGBB to {r,g,b} (0<>255)
function hexToRgb(hex) {
var value = parseInt(hex.substring(1), 16);
return {
r: (value >> 16) & 255,
g: (value >> 8) & 255,
b: value & 255
};
}
// Chooses one of two colors (colorA or colorB) based on which has better contrast with a given base color
function _pickContrastColor(baseColor, colorList) {
// Convert #RRGGBB to {r,g,b} (0<>255)
function hexToRgb(hex) {
var value = parseInt(hex.substring(1), 16);
return {
r: (value >> 16) & 255,
g: (value >> 8) & 255,
b: value & 255
};
}
// Compute WCAG relative luminance
function luminance(hex) {
var c = hexToRgb(hex);
var r = c.r / 255, g = c.g / 255, b = c.b / 255;
r = r <= 0.03928 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);
g = g <= 0.03928 ? g / 12.92 : Math.pow((g + 0.055) / 1.055, 2.4);
b = b <= 0.03928 ? b / 12.92 : Math.pow((b + 0.055) / 1.055, 2.4);
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
}
// Contrast ratio between two colors
function contrast(hex1, hex2) {
var L1 = luminance(hex1);
var L2 = luminance(hex2);
if (L1 < L2) {
var t = L1; L1 = L2; L2 = t;
}
return (L1 + 0.05) / (L2 + 0.05);
}
// Iterate through all colors and find the one with the highest contrast
var bestColor = null;
@@ -562,16 +563,62 @@ FCLTHeader =
}
}
var white = "#FFFFFF"
var aareonBlack = "#081326";
var mainColor = custtemplate["main-color"] || this.defaultTemplate["main-color"];
var accentColor = custtemplate["accent-color"] || this.defaultTemplate["accent-color"];
var mainColorContrast = _pickContrastColor(mainColor, ["#FFFFFF", aareonBlack, accentColor]);
var accentColorContrast = _pickContrastColor(accentColor, ["#FFFFFF", aareonBlack, mainColor]);
var mainColorContrastOptions = [white, aareonBlack, accentColor];
var mainColorContrastIndex = custtemplate["main-color-contrast"] || 0;
var mainColorContrast;
if (mainColorContrastIndex) {
mainColorContrast = mainColorContrastOptions[mainColorContrastIndex - 1];
} else {
mainColorContrast = _pickContrastColor(mainColor, mainColorContrastOptions);
}
var accentColorContrastOptions = [white, aareonBlack, mainColor];
var accentColorContrastIndex = custtemplate["accent-color-contrast"] || 0;
var accentColorContrast;
if (accentColorContrastIndex) {
accentColorContrast = accentColorContrastOptions[accentColorContrastIndex - 1];
} else {
accentColorContrast = _pickContrastColor(accentColor, accentColorContrastOptions);
}
inCss += "--main-color-contrast: " + mainColorContrast + ";\n";
inCss += "--accent-color-contrast: " + accentColorContrast + ";\n";
var frameHeaderBackgroundColorOptions = [
"#F2F2F2",
"color-mix(in srgb, var(--main-color) 10%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 50%, rgb(255, 255, 255))",
"color-mix(in srgb, var(--main-color) 90%, rgb(255, 255, 255))"
];
var frameHeaderBackgroundColorIndex = custtemplate["frameheader-bg-color"] || 0;
var frameHeaderBackgroundColor = frameHeaderBackgroundColorOptions[frameHeaderBackgroundColorIndex];
var frameHeaderColorOptions = [
"var(--headertextcolor)",
"var(--headertextcolor)",
"var(--headertextcolor)",
"var(--main-color-contrast)"
];
var frameHeaderColor = frameHeaderColorOptions[frameHeaderBackgroundColorIndex];
inCss += "--frameheaderbackgroundcolor: " + frameHeaderBackgroundColor + ";\n";
inCss += "--frameheadercolor: " + frameHeaderColor + ";\n";
var menuBackgroundColor = "#F2F2F2"; // Zie ook: variables.css
var menuiconColor = mainColor;
if (contrast(menuBackgroundColor, menuiconColor) < 3) { // Voldoet dit wel aan de WCAG? (>= 3.0)
menuiconColor = accentColor;
}
if (contrast(menuBackgroundColor, menuiconColor) < 3) { // Nu dan?
menuiconColor = aareonBlack;
}
inCss += "--menuiconcolor: " + menuiconColor + ";\n";
inCss += "}";
var outFile = _getFileByFilename.call(this, outfname);
@@ -633,7 +680,7 @@ FCLTHeader =
+ " JOIN fac_setting fs ON fs.fac_setting_key = fa.fac_audit_tabelkey"
+ " WHERE fa.fac_audit_tabelnaam = 'fac_setting'"
+ " AND fa.fac_audit_veldnaam = 'fac_setting_pvalue'"
+ " AND fs.fac_setting_name IN ('csstemplate', 'custcss')";
+ " AND fs.fac_setting_name IN ('csstemplate', 'csscust')";
var oRs = Oracle.Execute(sql);
var lastChanged = oRs("last_changed").Value;
if (lastChanged === null) {

View File

@@ -19,6 +19,7 @@ var autfunction_arr = getQParamArray("autfunction", []); // Check of user recht
var disctype = getQParamInt("disctype", -1); // Vakgroeptype.
var disc_key_arr = getQParamIntArray("disc_key_str", []); // Vakgroep Array.
var offerte = getQParamInt("offerte", -1);
var selectjustone = getQParamInt("selectjustone", 0) == 1;
var discsql_aut = "SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
@@ -32,13 +33,13 @@ var discsql = "SELECT bd.ins_discipline_key"
+ " , " + lcl.xsqla('bd.ins_discipline_omschrijving','bd.ins_discipline_key')
+ " FROM bes_discipline bd"
+ " WHERE bd.ins_discipline_verwijder IS NULL"
+(disctype == 2
+(disctype <= 2
? " AND bd.ins_discipline_key IN (SELECT dp.bes_ins_discipline_key_inkoop"
+ " FROM bes_disc_params dp"
+ " WHERE dp.bes_ins_discipline_key_inkoop IS NOT NULL)"
: "")
+ " AND bd.ins_discipline_key IN (" + discsql_aut + ")"
+ (disctype > 0
+ (disctype >= 0
? " AND bd.ins_discipline_key IN (SELECT bes_ins_discipline_key"
+ " FROM bes_disc_params"
+ " WHERE bes_disc_params_bestelmode = " + disctype + ")"
@@ -51,7 +52,8 @@ var discsql = "SELECT bd.ins_discipline_key"
FCLTselectorOptions(discsql,
{ initKey: disc_key_arr.join(","),
onChange: 'updateSrtGroup("' + autfunction_arr.join(",") + '");',
emptyOption: (disc_key_arr.length == 0 ? L("lcl_search_generic") : null) // Als een disc_key_arr is meegegeven dan geen lege optie
emptyOption: (disc_key_arr.length == 0 ? L("lcl_search_generic") : null), // Als een disc_key_arr is meegegeven dan geen lege optie
selectjustone: selectjustone? true : false
});
%>
mo

View File

@@ -20,6 +20,7 @@ var module = getQParam("module", ""); // Module die de ins_srtgroep-en opvraagt
var multi = (getQParamInt("multi", 0) == 1);
var size = getQParamInt("size", 4);
var emptyOption = getQParam("emptyOption", null);
var selectjustone = getQParamInt("selectjustone", 0) == 1;
var selectfirstone = (getQParamInt("selectfirstone", 0) == 1);
var onChange = getQParam("onChange", "");
var required = (getQParamInt("required", 0) == 1);
@@ -56,10 +57,12 @@ var params = { initKey: srtgroup_arr.join(","),
if (emptyOption != null)
params.emptyOption = emptyOption;
if (selectjustone)
params.selectjustone = selectjustone;
if (selectfirstone)
params.selectfirstone = selectfirstone;
FCLTselectorOptions(sql,
params);
%>
<% ASPPAGE_END(); %>
<% ASPPAGE_END(); %>

View File

@@ -23,6 +23,7 @@ var module = getQParam("module", ""); // Module die de ins_srtgroep-en opvraagt
var multi = (getQParamInt("multi", 0) == 1);
var size = getQParamInt("size", 4);
var emptyOption = getQParam("emptyOption", null);
var selectjustone = getQParamInt("selectjustone", 0) == 1;
var selectfirstone = (getQParamInt("selectfirstone", 0) == 1);
var extraParamValue = getQParam("extraParamValue", "");
var required = (getQParamInt("required", 0) == 1);
@@ -92,6 +93,8 @@ if (extraParamValue != "")
params.extraParamValue = extraParamValue;
if (emptyOption != null)
params.emptyOption = emptyOption;
if (selectjustone)
params.selectjustone = selectjustone;
if (selectfirstone)
params.selectfirstone = selectfirstone;

View File

@@ -220,7 +220,7 @@ notes =
if (_hasUitv(u.uitv_key, i)) { // Hebben we 2 opdrachten met dezelfde uitvoerder -> dan prefixen met opdracht_nr
u.uitv_naam = L("lcl_shared_order") + " " + u.opdr_volgnr + ": " + u.uitv_naam;
}
Response.Write(_fnTogglesHtml({ to: BITROLE["UITV"], to_name: u.uitv_naam, opdr_key: u.opdr_key, uid: u.opdr_volgnr, has: 8, val: (openVraagRequired && i == 0 ? 8 : 0) }));
Response.Write(_fnTogglesHtml({ to: BITROLE["UITV"], to_name: u.uitv_naam, opdr_key: u.opdr_key, uid: u.opdr_volgnr, has: 8, val: (i == 0 ? 8 : 0) }));
}
}
}
@@ -744,7 +744,7 @@ notes =
// Melding afgemeld en attentie bij de melder.
ROFIELDTR("mldshowactie fclt-info", "", L("lcl_mld_actiecodeATTFE"), {ishtmlsafe: true, suppressEmpty: true});
else
Response.Write("<div class='mldshowactie fclt-info'> " + L("lcl_" + pmodule.toLowerCase() + "_edit_note_completed") + "</div>");
Response.Write("<div class='mldshowactie fclt-warning'> " + L("lcl_" + pmodule.toLowerCase() + "_edit_note_completed") + "</div>");
}
var form_action = pmodule.toLowerCase() + "_edit_note_save.asp"
+ "?" + pmodule.toLowerCase() + "_key=" + pkey

View File

@@ -290,7 +290,8 @@ ResultsetTable.prototype.ProcessAsXMLXSL = function()
var theSqlFlex = "";
if (this.printFlex)
theSqlFlex = getSqlFlex(flexModule.toUpperCase(), flexId, this.myRs(flexParams, oRs));
for (var cnt = 0; !oRs.EOF; cnt++)
// nooit meer dan qp_maxrows2
for (var cnt = 0; !oRs.EOF && cnt < S("qp_maxrows2"); cnt++)
{
// Vooralsnog geen flex
var elementRecord = xmlDoc.createElement("data_row");
@@ -1554,7 +1555,7 @@ function __rsProcessResultset(processParams) // processParams wordt blind aan al
// Op regel klikken om de overige regels op te halen, boven de tabel
html = "<div id='rsMaxHistoryB'><span id='rsMaxHistoryInfoB'>"
+ (cnt <= S("qp_maxrows") + nrOutOfFilter
+ (cnt <= S("qp_maxrows") + nrOutOfFilter && S("qp_maxrows") != S("qp_maxrows2")
? a_element.replace(/&collapsed=1/gi, "") // Als er op deze regel wordt geklikt moet IFRAMER niet meer dichtgeklapt worden, dus &collapsed=1 verwijderen uit de link.
: L("lcl_qp_maxrows2").format(S("qp_maxrows2"))
)
@@ -1659,7 +1660,7 @@ function __rsProcessResultset(processParams) // processParams wordt blind aan al
// Op regel klikken om de overige regels op te halen, onder de tabel
html = "\n<div id='rsMaxHistoryE'><span id='rsMaxHistoryInfoE'>"
+ (cnt <= S("qp_maxrows") + nrOutOfFilter
+ (cnt <= S("qp_maxrows") + nrOutOfFilter && S("qp_maxrows") != S("qp_maxrows2")
? a_element
: L("lcl_qp_maxrows2").format(S("qp_maxrows2"))
)

View File

@@ -86,11 +86,13 @@
--fclt-color-grey-40: color-mix(in srgb, var(--aareon-urban-grey) 40%, transparent);
/* General */
--fclt-color-grey: rgb(128, 128, 128);
--fclt-color-grey-50: rgba(128, 128, 128, 0.5);
--fclt-color-bad: rgb(156, 0, 6);
--fclt-color-bad-contrast: rgb(255, 199, 206);
--fclt-color-good: rgb(0, 97, 0);
--fclt-color-good-contrast: rgb(198, 239, 206);
--fclt-color-neutral: rgb(94, 61, 0);;
--fclt-color-neutral: rgb(94, 61, 0);
--fclt-color-neutral-contrast: rgb(255, 235, 156);
--fclt-color-red: rgb(236, 24, 24);
@@ -155,7 +157,7 @@
--portalkopcolor: var(--textcolor);
--headercolor: var(--headertextcolor);
--activetabbackgroundcolor: #FEFEFE; /* 99.5% wit, 0.5% zwart */
--activetabbackgroundcolor: #FCFCFC; /* 99% wit, 1% zwart */
--activetabcolor: var(--headertextcolor);
--inactivetabbackgroundcolor: #E6E6E6; /* 90% wit, 10% zwart */;
--inactivetabcolor: var(--textcolor);
@@ -167,13 +169,13 @@
--buttonbackgroundcolormediumlow: #F2F2F2; /* 95% wit, 5% zwart */;
--buttoncolormediumlow: var(--headertextcolor);
--frameheaderbackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart */;
--frameheadercolor: var(--headertextcolor); /* accent-light is licht genoeg om hoog contrast te garanderen */
/* berekend; --frameheaderbackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart */;
/* berekend; --frameheadercolor: var(--headertextcolor); /* accent-light is licht genoeg om hoog contrast te garanderen */
--inlineactionbackgroundcolor: var(--main-color-contrast);
--inlineactioncolor: var(--main-color);
--menubackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart */;
--menubackgroundcolor: #F2F2F2; /* 95% wit, 5% zwart, zie ook; header.inc (!) */;
--menucolor: var(--headertextcolor);
--menukophoverbackgroundcolor: #E6E6E6; /* 90% wit, 10% zwart */;
--menukophovercolor: var(--headertextcolor);

View File

@@ -199,17 +199,34 @@ function STR2Stream(xmlstr, xslfile, Stream, params)
}
else
{
var filedata = props.files[0];
var fileIndex = 0;
if (props.files.length > 1) {
var codes = flexcode.split(":");
for (var i = 0; i < codes.length && !fileIndex; i++) {
var code = codes[i].substr(0,1);
var data = codes[i].substr(2);
if (code == "F") { // Dan is; data = filename
for (var j = 0; j < props.files.length; j++) {
if (props.files[j].name == data) {
fileIndex = j;
break;
}
}
}
}
}
var filedata = props.files[fileIndex];
if (filedata.resized)
var file = filedata.resized;
else
var file = props.AttachPath + props.files[0].name;
var file = props.AttachPath + filedata.name;
if (!fso.FileExists(file))
{
__DoLog("Flexcode {0}, file {1} not found".format(flexcode, file));
var newbody = p_bodyhtml.substr(0, imgstart) + "<img src=\"MISSING_" + safe.htmlattr(props.files[0].name) + "\">" + p_bodyhtml.substr(imgend + 1);
var newbody = p_bodyhtml.substr(0, imgstart) + "<img src=\"MISSING_" + safe.htmlattr(filedata.name) + "\">" + p_bodyhtml.substr(imgend + 1);
p_bodyhtml = newbody;
}
else

View File

@@ -6,7 +6,7 @@
Description: 2025.3 conversie
Parameters:
Context: (alleen) vanuit facilitor.inc
Notes: Oude styling bewaren in S(fac_reserved_string1) en nieuwe styling converteren naar het nieuwe template
Notes: Oude styling converteren naar het nieuwe template
*/
%>
@@ -27,7 +27,7 @@ function upgrade20253()
return;
}
oRs.Close();
var oldCustTemplate = S("csstemplate");
var oldCustTemplate = S("csstemplate") || {};
var newDefaultTemplate = {
"main-color": "#051163",
@@ -66,14 +66,14 @@ function upgrade20253()
return null;
}
for (itm in newDefaultTemplate) {
for (var itm in newDefaultTemplate) {
if ((itm in oldCustTemplate) && oldCustTemplate[itm]) {
if (itm.slice(-5) === "image") {
newCustTemplate[itm] = oldCustTemplate[itm];
} else {
var this_itm = _getHex(oldCustTemplate[itm]);
if (this_itm) { // Alleen geldige hex-codes overnemen (geen kleurnamen of rgb-codes)
newCustTemplate[itm] = this_itm;
var thisColor = _getHex(oldCustTemplate[itm]);
if (thisColor) { // Alleen geldige hex-codes overnemen (geen kleurnamen of rgb-codes)
newCustTemplate[itm] = thisColor;
}
}
}

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,4 @@
FCLT#91676
Facilitor dummy 2035.pfx is een dummy client-authentication certicaat
dat gebruikt kan worden voor servers die *optioneel* een certificaat vragen.
Dat kan anders leiden tot "A certificate is required to complete client authentication"

View File

@@ -116,7 +116,7 @@ function sendNotification(ref_key, pcode, params)
}
else
{
Log2File(1, "====== Skipping actual notification sending because of puo_flags");
Log2File(1, "====== Skipping actual notification sending because of puo_flags&1==0");
}
if ((S("puo_flags") & 2) == 2)
@@ -125,7 +125,7 @@ function sendNotification(ref_key, pcode, params)
}
else
{
Log2File(1, "====== Skipping actual order sending because of puo_flags");
Log2File(1, "====== Skipping actual order sending because of puo_flags&2==0");
}
if (!what_sql.length)
@@ -150,7 +150,6 @@ function sendNotification(ref_key, pcode, params)
var notiAPPed = 0;
var notiSYSed = 0;
var notiPRSed = 0;
var now = new Date();
// Strikt genomen moet dit binnen de loop omdat er tijdens de loop
// ongewenste notificaties kunnen zijn bijgekomen. Dat gaat me te ver

View File

@@ -271,6 +271,10 @@ v_aanduiding = "sendMail 2k";
var http_request = doHTTP(url, { method: "GET", headers: { "accept": "application/json" }});
var props = eval('(' + http_request.responseText + ')');
if ("message" in props)
{
Log2File(1, props.message); // bijvoorbeeld "Invalid APIKEY"
}
}
if (props.flexlog)
Log2File(1, props.flexlog);
@@ -283,11 +287,28 @@ v_aanduiding = "sendMail 2k";
}
else
{
var filedata = props.files[0];
var fileIndex = 0;
if (props.files.length > 1) {
var codes = flexcode.split(":");
for (var i = 0; i < codes.length && !fileIndex; i++) {
var code = codes[i].substr(0,1);
var data = codes[i].substr(2);
if (code == "F") { // Dan is; data = filename
for (var j = 0; j < props.files.length; j++) {
if (props.files[j].name == data) {
fileIndex = j;
break;
}
}
}
}
}
var filedata = props.files[fileIndex];
if (filedata.resized)
var file = filedata.resized;
else
var file = props.AttachPath + props.files[0].name;
var file = props.AttachPath + filedata.name;
rnd_cid = oCrypto.hex_random(10);
cidname = "flex" + rnd_cid + ".png";
p_bodyhtml = p_bodyhtml.substr(0, startPos - 4) + "src=\"cid:" + cidname + "\"" + p_bodyhtml.substr(eindPos + 1);

View File

@@ -4,4 +4,6 @@
@echo off
cd /D "%~dp0"
cscript %1 ..\..\..\utils\gen_scheduler\gen_tasker.wsf
:reloadlooper
cscript %1 ..\..\..\utils\gen_scheduler\gen_tasker.wsf
IF ERRORLEVEL 10 GOTO reloadlooper