PageSourceSearch

https://www.saaksmaki-seura.fi/r/static/js/app.js?R=T45697

js saaksmaki-seura.fi collected 2026-10-02 12:41:44 UTC 130,936 bytes, 12 lines download raw bytes

1"use strict";(function(){angular.module(`mmp`,[`members`,`fields`,`session`,`log`,`invoices`,`settings`,`announcements`,`expenseclaim`,`importer`,`updreqs`,`membercard`,`supersearch`,`mooney`,`messages`,`directives`,`groups`,`balance`,`docs`,`$strap.directives`,`ngRoute`,`mm.unsavedChanges`,`ui.select2`,`ui.sortable`]).config([`$routeProvider`,`$locationProvider`,`$httpProvider`,`$sceProvider`,`$anchorScrollProvider`,function(e,t,n,r,i){n.defaults.headers.common[`X-CSRFToken`]=(/\bcsrftoken=(.*?)(;|$)/.exec(document.cookie)||[])[1],location.pathname===`/`?(i.disableAutoScrolling(),t.html5Mode(!1)):t.html5Mode(!0),r.enabled(!1),e.when(CONFIG.url.dashboard.index(),{controller:`DashboardCtrl`,templateUrl:`/r/static/templates/dashboard.html`}).otherwise({instantLoad:!0,templateUrl:`/r/static/templates/404.html`}),n.interceptors.push([`$q`,function(e){return{request:function(t){return t.url.indexOf(`/r/static/templates`)===-1?t.url+=`?_=`+new Date().getTime():document.getElementById(t.url)||(t.url=t.url+`?b=`+window.a4build),t||e.when(t)}}}])}]).run([`$rootScope`,`$filter`,`$compile`,`$location`,`$sce`,`utils`,`notify`,`Settings`,function(e,t,n,r,i,a,o,s){/MSIE 10/.test(navigator.userAgent)&&$(`html`).addClass(`ie10`),e.CONFIG=CONFIG,e._=window._,e.utils=a,e.notify=o,e.D4GLOBALS=window.D4GLOBALS,e.session=window.D4SESSION,_.date=function(e){return t(`date`)(e,_(`_date_format`))},_.datetime=function(e){return t(`date`)(e,_(`_datetime_format`))},_.bankref=function(e){return e=``+e,e.replace(/(\d)(\d\d\d\d\d)\b/,function(e,t,n){return[t,n].join(`\xA0`)})},_.amount=function(e){return typeof e!=`number`&&(e=parseFloat(e)),e.toFixed(2).replace(`.`,`,`)},_.commaDecimal=function(e){return typeof e==`number`?e.toString().replace(`.`,`,`):e},e.$watch(`session`,function(){e.session&&e.session.user&&e.session.user.site_admin&&r.path().indexOf(`edit_me_`)===-1&&r.path().indexOf(`/r/`)===0&&e.session.get_persistent_data(`HelpSeenregdashboard`)===`0`&&_showContextHelp({HelpTitle:_(`dashboard_bubble_title`),HelpText:_(`HTML_dashboard_bubble_text`),Context:`regdashboard`})}),e.$on(`$routeChangeSuccess`,function(t,i,a){var c=o.check();e.notification=c.htmlContent?n(`<span>`+c.htmlContent+`</span>`)(c.scope||e):null,r.path().indexOf(`import`)===-1&&r.path().indexOf(`fields`)===-1&&r.path().indexOf(`groups`)===-1&&(e.importInProgress=!1),window.Topbar&&Topbar.updateRegTabs(r.path()),s.get({},function(t){e.settings=t},a4.restErrorFactory(e)),i.instantLoad&&a4.loaded()}),$.fn.selectpicker.defaults.noneSelectedText=``,e.filterRemovePerson=function(e,t){for(var n=$(`.page-content`).scope(),r=e+`|`+t,i=!1,a=0;a<n.conditions.length;a++)n.conditions[a].field==`id`&&n.conditions[a].verb==`!a4isoneof`&&(i=!0,n.conditions[a].value.push(r));i||n.conditions.push({id:Math.random(),field:`id`,verb:`!a4isoneof`,value:[r]})},e.filterAvailableToSend=function(e){var t=$(`.page-content`).scope();if(t.stats){var n=t.stats[`result_`+t.msg.msg_media+`_ids`];return $.inArray(e.id,n)>-1}}}]),angular.module(`mmp`).filter(`startFrom`,function(){return function(e,t){if(e)return t=+t,e.slice(t)}}),angular.module(`mmp`).filter(`newlines`,function(){return function(e){if(e)return $(`<span/>`).text(e).html().replace(/\n/g,`<br />`)}}),angular.module(`mmp`).filter(`selflinks`,function(){return function(e){if(e)return e.replace(/<a\b((?![^>]*target=)[^>]*)>/gi,`<a target="_self"$1>`)}}),angular.module(`mmp`).filter(`linkify`,function(){return function(e){if(e)return $(`<span/>`).html(e).html().replace(/(https?:\/\/[^\s]+)/g,`<a href="$1" target="_blank">$1</a>`).replace(/\n/g,`<br />`)}}),angular.module(`mmp`).filter(`splitlabel`,[`$sce`,function(e){return function(t,n){if(t){if(!n)return t;if(t===`ID`||t===`id`)return e.trustAsHtml(`
2        <svg width="30" height="20" viewBox="0 0 30 20">
3          <text x="16" y="15" font-family="Arial" font-size="14" fill="black">${t[0]}</text>
4          <text x="20" y="15" font-family="Arial" font-size="14" fill="black">${t[1]}</text>
5        </svg>
6      `);{let n=``;for(let e of t)n+=`<span>${a4.esc(e)}</span>`;return e.trustAsHtml(n)}}}}]),angular.module(`mmp`).controller(`DashboardCtrl`,[`$scope`,`$rootScope`,function(e,t){e.utils.setPageID(`dashboard`),t.member_dashboard_ok=!1,t.invoice_dashboard_ok=!1,t.log_dashboard_ok=!1,t.announcement_dashboard_ok=!1,t.updreqs_dashboard_ok=!1,e.$watch(`session`,function(){e.session&&e.session.customer&&e.utils.setPageTitle(e.session.customer.name)}),e.$watch(`member_dashboard_ok + invoice_dashboard_ok + log_dashboard_ok + announcement_dashboard_ok + updreqs_dashboard_ok`,function(e,n){t.member_dashboard_ok&&t.invoice_dashboard_ok&&t.log_dashboard_ok&&t.announcement_dashboard_ok&&t.updreqs_dashboard_ok&&setTimeout(function(){var e=$
6(`#dashboard .pull-left .box`),t=$(`#dashboard .pull-right .box`);e.each(function(e,n){var r=$(this).height(),i=t.eq(e).height();r<i?$(this).css(`height`,i+`px`):t.eq(e).css(`height`,r+`px`)})},1)})}]),angular.module(`mmp`).service(`utils`,[`$location`,function(e){this.getURL=function(){return e.absUrl()},this.paginationHandler=function(e,t){return e=Math.max(e,0),e=Math.min(e,t-1),e};var t=document.title;this.setPageTitle=function(e){e?document.title=t+e+` - `+_(`product_name`):document.title=t+_(`product_name`)},this.setPageID=function(e){$(`body`).removeClass(function(e,t){return(t.match(/\bpage-\S+/g)||[]).join(` `)}),$(`body`).addClass(`page-`+e),/edit_me_h|edit_me_s|get_edit_links/.test(window.location.href)&&$(`body`).addClass(`page-edit-me`)}}]),angular.module(`mmp`).factory(`notify`,[`$compile`,`$timeout`,function(e,t){var n={htmlContent:null,scope:null,set:function(e,t){n.scope=e,n.htmlContent=t},check:function(){var e={htmlContent:n.htmlContent,scope:n.scope};return n.set(null,null),e},instant:function(e,r){n.compile(e,r),n.position(),t(function(){$(`.notification-scroll`).fadeOut()},2e3)},compile:function(t,n){t.notification=e(`<span>`+n+`</span>`)(t)},position:function(){t(function(){$(`.notification`).addClass(`notification-scroll`).show()},1)}};return n}]),window.a4=window.a4||{},a4.checkStrongholdNotification=function(e,t,n,r){n.hash()===`stronghold-confirmed`&&(e.notification=r(`<span>`+_(`stronghold_confirmed`)+`</span>`)(t))},a4.debounce=function(e,t=300){let n;return(...r)=>{clearTimeout(n),n=setTimeout(()=>{e.apply(this,r)},t)}},a4.saveFactory=function(e,t){return function(n){if(!e._sending)return e._sending=!0,t(n)}},a4.amountStringToCents=function(e){return e=e.replace(`,`,`.`),e.indexOf(`.`)===-1?e+=`.00`:/\.\d$/.test(e)&&(e+=`0`),/^([1-9][0-9]*|0)\.\d\d$/.test(e)?parseInt(e.replace(`.`,``)):NaN},a4.restErrorFactory=function(e,t,n=!1){return function(r){let i=n===!0?`.modal-errors`:`div.page-content:visible`;var a,o;r&&r.data&&r.data.error&&(typeof r.data.error==`string`?o=r.data.error:typeof r.data.error==`object`&&(o=`A4ValidationErrors`)),o==`A4SessionError`?location.href=CONFIG.get(`urls.session.login_external`)+`?`+jQuery.param({GOTO:location.pathname==`/`?`/r/`:location.pathname}):o==`A4ValidationErrors`?(e.errors={},e.show_server_error=!1,$.each(r.data.error,function(t,n){if(t==`general`){a=n;return}var r=[];$.each(n,function(e,t){r.push(_(t))}),e.errors[t]=r,setTimeout(function(){var t=$(`.form-group .error-text:first`).parent().find(`input, textarea`);t.length>0?t.get(0).focus():(a=!0,e.show_server_error=!0)},1)})):e.show_server_error=!0;var s=function(e,t,n=!1){n===!1&&$(`html, body`).animate({scrollTop:`0px`});var r=$(`<div id="server-error" style="display:none;" class="alert alert-danger"></div>`);r[/^HTML_/.test(e)?`html`:`text`](_(e,t)),$(i).find(`#server-error`).remove().end().prepend(r),$(r).fadeIn()};a?s(a[0],a[1],n):e.show_server_error&&s(`HTML_js_server_error`,null,n),a4.loaded(e,n),e._sending=!1,t&&e.working&&delete e.working[t]}},a4.loaded=function(e,t=!1){e&&e.loading&&(e.loading=!1,e.$apply()),t!==!0&&($(`div#loader`).hide(),$(`div.content,#footer`).show(),$(`body`).removeClass(`modal-open`),$(`.modal-backdrop`).remove())},a4.trimMemberFields=function(e){jQuery.each(e.member,function(t,n){typeof n==`string`&&(n=jQuery.trim(n),n===``&&(n=null),e.member[t]=n)})},a4.getPasswordStrength=function(e=``){let t=[{text:_(`change_password_strength_0`),color:`#FF715B`},{text:_(`change_password_strength_1`),color:`#cf9449`},{text:_(`change_password_strength_2`),color:`#8caf2e`},{text:_(`change_password_strength_3`),color:`#5ab919`},{text:_(`change_password_strength_4`),color:`#0BA500`}],n=(()=>{if(e.length<10)return 0;let t=1;return e.length>=16&&t++,e.length>=20&&t++,e.length>=24&&t++,/[a-zA-ZåäöÅÄÖ]/i.test(e)&&/[^a-zA-ZåäöÅÄÖ]/.test(e)&&t++,/[a-z]/.test(e)&&/[A-Z]/.test(e)&&t++,Math.min(t,4)})();return{strength:n,text:t[n].text,color:t[n].color}},a4.trimSmsContent=function(e){return $.trim(e.replace(/\r/g,``).replace(/ *\n */g,`
7`))},a4.letterPageSeparator=function(){return`__A4LETTERPAGESEPARATOR__`},a4.stripLetterPageSeparator=function(e,t){return t=t||` `,e.replace(new RegExp(a4.letterPageSeparator(),`g`),t)},a4.formatBigAmount=function(e){return e.replace(/(\d)(\d\d\d)\b/,function(e,t,n){return[t,n].join(`\xA0`)}).replace(`.`,`,`)},a4.msgPreview=function(e,t){return function(){if(!(e.invoice_form&&parseInt(e.msg.amount)>9999&&parseInt(e.msg.amount)<1e5&&!confirm(_(`js_confirm_invoice_big_amount`,{amount:a4.formatBigAmount(parseFloat(e.msg.amount).toFixed(2))})))){if(e.msg.filter=e.filter_to_post,e._sending=!0,e.msg.msg_media===`sms`)e.msg.content=a4.trimSmsContent(e.msg.content);else if(e.msg.msg_media===`letter`&&!e.msg.addrecips){var n=e.invoice_form?`description`:`content`;e.msg[n]=e.pages.map(function(e){return e[n]}).join(a4.letterPageSeparator())}t.preview({},jQuery.extend(!0,{},e.msg),function(t){e.previewing=!0,e._sending=!1,e.msg_preview=t,e.msg_preview.fraudulent_content&&(e.settings.stronghold_pending_=!0,e.settings.trust_status_=`BLOCKED`),window.scrollTo(0,0)},a4.restErrorFactory(e))}}},a4.msgPreviewCancel=function(e){return function(){e.previewing=!1,e.errors=null,window.scrollTo(0,0)}},a4.ngCallback=function(e,t,n){n.location.href=`about:blank`,angular.element(`.page-content`).scope().$apply(function(n){n[e](t)})},a4.esc=function(e){return String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/\x22/g,`&quot;`)},a4.timeout=function(e,t,n,r){var i=e(n,r);t.$on(`$destroy`,function(){e.cancel(i)})},a4.printWindow=function(){try{document.execCommand(`print`,!1,null)||window.print()}catch{window.print()}},window.CONFIG=(function(){var e={urls:{dashboard:{index:`/`},members:{api:`/api/1/members/:id`,all:`/members`,add:`/members/add`,edit:`/members/:id/edit`,history:`/members/:id/history`,updreqs:`/updreqs`,export:`/member_export/:filter`,deleted:`/members/removed`,applications:`/members/applications`,bulkedit:`/members/bulkedit/:filter`},fields:{api:`/api/1/fields/:id`,all:`/config/fields`,add:`/config/fields/add`,edit:`/config/fields/:id`},session:{api:`/api/1/session/:action`,login_external:`/@login`,logout_external:`/@logout`},settings:{api:`/api/1/settings/:id`,edit_eclaim:`/config/settings_eclaim`,edit:`/config/settings`,edit_membercard:`/config/settings_membercard`,mandate:`/config/mandate`,security:`/config/security`},log:{api:`/api/1/log/:id`,all:`/log`,transactions:`/log/transactions`,receipts:`/log/receipts`,view:`/log/:id`,transaction_report_xls:`/log/transaction_report_xls`},lang:{change:`/config/lang/:locale`},invoices:{api:`/api/1/invoices/:id`,all:`/invoices`,view:`/invoices/:id`,view_one:`/invoices/:id/person/:person_id`,create:`/invoices/new`,report:`/invoices/report`,download_report:`/invoice_report/xls`,download_refs:`/invoice_report/refs`,sales_invoice_list:`/invoices/sales_invoice_list`,sales_invoice_list_xls:`/invoice_report/sales_invoice_list_xls`,sales_invoice_list_pdf:`/invoice_report/sales_invoice_list_pdf`,accounts_receivable:`/invoices/accounts_receivable`,accounts_receivable_xls:`/invoice_report/accounts_receivable_xls`,accounts_receivable_pdf:`/invoice_report/accounts_receivable_pdf`,reminder:`/invoices/reminder/:id`,addrecips:`/invoices/new/:id`,download_pdf:`/invoices/download_pdf/:id.pdf`},invoicereminders:{view:`/invoices/:id`},messages:{api:`/api/1/messages/:id`,letter_preview:`/msg/letter-preview/:message_id.:file_extension`,letter_preview_page:`/msg/letter-preview/:message_id/:page.:file_extension`,show:`/msg/show/:media/:id`},announcements:{api:`/api/1/announcements/:id`,all:`/announcements`,view:`/announcements/:id`,create:`/announcements/new`},membercard:{api:`/api/1/membercard/:id`,all:`/membercard`,view:`/membercard/:id`,create:`/membercard/new`},expenseclaim:{api:`/api/1/expenseclaim/:id`,all:`/expenseclaim`,archive:`/expenseclaim/archive`,view:`/expenseclaim/view/:person_id/:person_account_number`,edit:`/expenseclaim/:id`,download_pdf:`/claim_download_pdf/:person_id/:person_account_number/:status/:timestamp`},updreqs:{api:`/api/1/updreqs/:id`,all:`/updreqs`,view:`/updreqs/:id`,create:`/updreqs/new`,edit_me_h:`/edit_me_h/:hash`,edit_me_s:`/edit_me_s`,get_edit_links:`/updreqs/get_edit_links`},supersearch:{list:`/search/:type/:term`},mooney:{api:`/api/1/mooney/:id`,method:`/m/:id/method`,charge:`/m/:id/charge`,failure:`/m/failure`},importer:{api:`/api/1/importer/:id`,all:`/members/imports/all`,importer:`/members/import`},groups:{api:`/api/1/groups/:id`,all:`/config/groups`,add:`/config/groups/add`,edit:`/config/groups/:id`},balance:{api:`/api/1/balance/:id`,buy:`/balance/buy`,thanks:`/balance/thanks`,send_email:`/balance/send_email`},docs:{api:`/api/1/docs/:id`}}},t=function(e,t){t=t.replace(/\[(\w+)\]/g,`.$1`),t=t.replace(/^\./,``);for(var n=t.split(`.`);n.length;){var r=n.shift();if(r in e)e=e[r];else return}return e},n={};return jQuery.each(e.urls,function(e,t){n[e]={},jQuery.each(t,function(t,r){n[e][t]=function(){var n=[].slice.call(arguments),i=r.replace(/:\w+/g,function(e){return n.length?n.shift():e});if(n.length)throw`Too many parameters for url `+r+` (CONFIG.url.`+e+`.`+t+`)`;return window.a4base+i}})}),{get:function(n){return t(e,n)},api:function(n){return window.a4base+t(e,`urls.`+n+`.api`)},url:n}})();var e=[`/r/static/templates/members/all.html`,`/r/static/templates/members/deleted.html`,`/r/static/templates/members/applications.html`],t=`/r/static/templates/members/edit.html`;function n(e,n){n.returning_from_member_edit||(n.last_page=null),n.returning_from_member_edit=!1;var r=n.$on(`$routeChangeStart`,function(r,i){i&&i.$$route&&i.$$route.templateUrl===t&&(n.last_page=e.currentPage)});e.$on(`$destroy`,function(){r()})}function r(t,n){var r=n.$on(`$routeChangeStart`,function(t,r){r&&r.$$route&&e.
7indexOf(r.$$route.templateUrl)!==-1&&(n.returning_from_member_edit=!0)});t.$on(`$destroy`,function(){r()})}angular.module(`members`,[`ngResource`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.members.all(),{controller:`MemberCtrl`,templateUrl:`/r/static/templates/members/all.html`}).when(CONFIG.url.members.add(),{controller:`MemberEditCtrl`,templateUrl:`/r/static/templates/members/edit.html`}).when(CONFIG.url.members.edit(),{controller:`MemberEditCtrl`,templateUrl:`/r/static/templates/members/edit.html`}).when(CONFIG.url.members.deleted(),{controller:`MemberDeletedCtrl`,templateUrl:`/r/static/templates/members/deleted.html`}).when(CONFIG.url.members.applications(),{controller:`MemberApplicationCtrl`,templateUrl:`/r/static/templates/members/applications.html`}).when(CONFIG.url.members.bulkedit(),{controller:`MemberBulkEditCtrl`,templateUrl:`/r/static/templates/members/bulkedit.html`}).when(CONFIG.url.members.history(),{controller:`MemberHistoryCtrl`,templateUrl:`/r/static/templates/members/history.html`})}]).factory(`Member`,[`$resource`,function(e){return e(CONFIG.api(`members`),{},{query:{method:`POST`,isArray:!1,params:{id:`all`}},stats:{method:`POST`,params:{id:`get_stats`}},results:{method:`POST`,params:{id:`get_results`}},restore:{method:`POST`,isArray:!1,params:{id:`restore`}},bulkremove:{method:`POST`,isArray:!1,params:{id:`bulkremove`}},bulkrestore:{method:`POST`,isArray:!1,params:{id:`bulkrestore`}},bulkupdate:{method:`POST`,params:{id:`bulkupdate`}},quicksearch:{method:`POST`,isArray:!1,params:{id:`quicksearch`}},supersearch:{method:`POST`,isArray:!1,params:{id:`supersearch`}},bulkget:{method:`POST`,params:{id:`bulkget`}},member_history:{method:`POST`,isArray:!0,params:{id:`get_history`}},apply:{method:`POST`,isArray:!1,params:{id:`apply`}},approve:{method:`POST`,isArray:!1,params:{id:`approve`}},delete_permanently:{method:`POST`,isArray:!1,params:{id:`delete_permanently`}},clear_mfa:{method:`POST`,isArray:!1,params:{id:`clear_mfa`}},send_mfa_reset_code:{method:`POST`,isArray:!1,params:{id:`send_mfa_reset_code`}},close_site_admin_sessions:{method:`POST`,isArray:!1,params:{id:`close_site_admin_sessions`}}})}]),angular.module(`members`).controller(`MemberCtrl`,[`$scope`,`$rootScope`,`Member`,`$route`,`$location`,function(e,t,r,i,a){e.utils.setPageTitle(_(`breadcrumb_members`)),e.utils.setPageID(`members`),n(e,t),e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)},e.bulkremove=function(){r.bulkremove({filter:e.filter_to_post},function(t){e.notify.set(e,_(`HTML_notification_members_removed`,{_n:t.count,id:t.log_id})),i.reload()},a4.restErrorFactory(e))},e.bulkremove_undo=function(t){r.bulkrestore({filter:[{field:`id`,value:t,verb:`a4fromlogbatch`}]},function(t){e.notify.set(e,_(`HTML_notification_members_removed_undo`)),i.reload()},a4.restErrorFactory(e))},e.bulkEdit=function(){a.path(CONFIG.url.members.bulkedit(encodeURIComponent(JSON.stringify(e.filter_to_post))))},e.str_filter=function(){return encodeURIComponent(JSON.stringify(e.filter_to_post)).replace(/%2F/g,`/`)},e.$watch(`stats`,function(){e.stats&&(e.modal={header:_(`members_remove_members_confirmation_header`),content:_(`members_remove_members_confirmation_text`,{_n:e.stats.result_count}),confirmation_btn:_(`members_remove_members_btn`,{_n:e.stats.result_count}),callback:e.bulkremove},r.stats({},function(t){e.stats&&(e.stats.result_application_count=t.stats.result_application_count)}))})}]),angular.module(`members`).controller(`MemberDeletedCtrl`,[`$scope`,`$rootScope`,`Member`,`Field`,`$route`,function(e,t,r,i,a){e.utils.setPageTitle(_(`breadcrumb_members_deleted`)),e.utils.setPageID(`members`),n(e,t),e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)},e.bulkrestore=function(){r.bulkrestore({filter:e.filter_to_post},function(t){e.notify.set(e,_(`HTML_notification_members_restored`,{_n:t.count,id:t.log_id}));for(var n=0;n<e.conditions.length;n++)e.conditions[n].field;a.reload()},a4.restErrorFactory(e))},e.bulkrestore_undo=function(t){r.bulkremove({filter:[{field:`id`,value:t,verb:`a4fromlogbatch`}]},function(t){e.notify.set(e,_(`HTML_notification_members_restored_undo`)),a.reload()},a4.restErrorFactory(e))},e.export_deleted=function(){var t=e.filter_to_post;t.push({field:`deleted`,value:`yes`,verb:`a4boolequals`}),window.location=CONFIG.url.members.export(encodeURIComponent(JSON.stringify(t)).replace(/%2F/g,`/`))},e.delete_permanently=function(){r.delete_permanently({filter:e.filter_to_post},function(t){e.notify.set(e,_(`HTML_notification_members_deleted_permanently`,{_n:t.count})),a.reload()},a4.restErrorFactory(e))},e.set_modal=function(t){e.modal=t==`perm_delete`?{header:_(`members_permdelete_members_confirmation_header`),content:_(`members_permdelete_members_confirmation_text`,{_n:e.stats.result_count}),confirmation_btn:_(`members_permdelete_members_btn`,{_n:e.stats.result_count}),callback:e.delete_permanently}:{header:_(`members_restore_members_confirmation_header`),content:_(`members_restore_members_confirmation_text`,{_n:e.stats.result_count}),confirmation_btn:_(`members_restore_members_btn`,{_n:e.stats.result_count}),callback:e.bulkrestore}}}]),angular.module(`members`).controller(`MemberApplyCtrl`,[`$scope`,`Field`,`Member`,function(e,t,n){e.fields=window.a4_web2reg_memberform_fields,e.isApplyForm=!0,e.disabled=!1,e.a
7pply=a4.saveFactory(e,function(t){if(!window.document.forms[`application-form`].checkValidity()){e._sending=!1;return}e.disabled=!0;var r;try{r=$(t.target).parents(`.widget`)[0].id.match(/widget-(\w+)/)[1]}catch{r=$(t.target).parents(`.token-Memberform`)[0].id.match(/token-(\d+)/)[1]}e.member._applied_from_token_num=r,a4.trimMemberFields(e),n.apply({},e.member,function(){e.application_form.$setPristine(),window.a4_reg2web_memberform_thanks(r)},function(t){e.disabled=!1,a4.restErrorFactory(e)(t)})}),e.member=new n,a4.loaded(e),e.member.active=!0}]),angular.module(`members`).controller(`MemberApplicationCtrl`,[`$scope`,`$rootScope`,`Group`,function(e,t,r){e.utils.setPageTitle(_(`breadcrumb_members_applications`)),e.utils.setPageID(`members`),n(e,t),e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)},e.$watch(`members`,function(){e.members&&$.each(e.members,function(t,n){var r=[];$.each(e.groups,function(e,t){n[t.name]&&r.push(t.label)}),e.members[t].str_groups=r.join(`, `)})},!0)}]),angular.module(`members`).controller(`MemberEditCtrl`,[`$scope`,`$rootScope`,`$location`,`$route`,`$routeParams`,`$modal`,`Member`,`Field`,`Group`,function(e,t,n,i,a,o,s,c,l){e.isAdmin=!0,e.utils.setPageID(`members`),e._sending=!1,r(e,t),e.passwordFieldsVisible=!1,e.passwordStrength=null,e.newPasswordVisible=!1,e.confirmNewPasswordVisible=!1,e.showPasswordFields=function(){e.passwordFieldsVisible=!0},e.$watch(`member`,function(){e.member&&(e.member.active=!(e.member.active==`false`||!e.member.active)),e.passwordStrength=e.passwordFieldsVisible&&(e.member.newPassword_||e.member.confirmNewPassword_)?a4.getPasswordStrength(e.member.newPassword_):null},!0),e.handleRequirednessError=function(t){a4.restErrorFactory(e)(t);let n=t.data.error;Object.values(n).flat().every(e=>e===`_validation_field_required`)&&![`firstname`,`lastname`].some(e=>e in n)&&(e.empty_required_fields=Object.keys(n).map(t=>e.fields.find(e=>e.name===t)?.label),o({template:`/r/static/templates/members/modal-confirm-save.html`,persist:!0,show:!0,backdrop:`static`,scope:e}))},a.id?(e.member={id:-1},s.get({id:a.id,any_state:!0},function(t){e.member=t,e.utils.setPageTitle(e.member.fullname_),e.member_found=!0,e.member_deleted=e.member.meta_.deleted},function(){n.path().indexOf(`applications`)>0?(e.application_not_found=!0,e.utils.setPageTitle(_(`members_application_not_found`))):(e.member_not_found=!0,e.utils.setPageTitle(_(`members_member_not_found`))),a4.restErrorFactory(e)})):(e.member=new s,e.member.meta_={},a4.loaded(e),e.utils.setPageTitle(_(`members_add_new`)),e.member.active=!0,e.member_found=!0),e.fields=c.query({id:`all`},function(){a4.loaded(e)},a4.restErrorFactory(e)),e.groups=l.query({id:`all`},function(){a4.loaded(e)},a4.restErrorFactory(e)),e.pre_save=function(){if(a4.trimMemberFields(e),e.session.user.id===e.member.id&&!e.member.email)return alert(_(`members_cannot_delete_own_email`)),e._sending=!1,!1;if(e.passwordStrength){if(e.passwordStrength.strength>0){if(e.member.newPassword_===e.member.confirmNewPassword_)e.member.password=e.member.newPassword_;else return alert(_(`passwords_dont_match`)),e._sending=!1,!1}else return alert(_(`insufficient_password_strength`)),e._sending=!1,!1}return!0},e.save_bypass_required=function(){e.member.bypass_required_fields=!0,e.member.meta_&&e.member.meta_.pending?e.approve():e.save()},e.save=a4.saveFactory(e,function(t){e._member_form=t||e._member_form,e.pre_save()&&e.member.$save({id:e.member.id},function(){e._member_form&&(e._member_form.$dirty=!1),a.id?e.notify.set(e,_(`HTML_notification_member_edited`)):e.notify.set(e,_(`HTML_notification_member_added`)),n.path(CONFIG.url.members.all())},function(t){e.handleRequirednessError(t)})}),e.send_membercard=function(){if(!e.member.phone)return alert(_(`members_cannot_send_membercard`)),!1;n.path(CONFIG.url.membercard.create())},e.cancel=function(){this.member_form.$dirty=!1;var t=e.member.meta_.deleted?CONFIG.url.members.deleted():e.member.meta_.pending?CONFIG.url.members.applications():CONFIG.url.members.all();n.path(t)},e.approve=function(t){e._sending=!0,e._member_form=t||e._member_form,e.pre_save()&&s.approve({},e.member,function(){e._member_form&&(e._member_form.$dirty=!1),e.notify.set(e,_(`HTML_notification_member_application_approved`)),n.path(CONFIG.url.members.applications())},function(t){e.handleRequirednessError(t)})},e.restore=function(t,r){e._sending||(e._sending=!0,e.pre_save()&&(t&&(e.member={id:t}),s.restore({},e.member,function(a){r&&(r.$dirty=!1),e.notify.set(e,_(`HTML_notification_member_restored`)),t?i.reload():n.path(CONFIG.url.members.all())},a4.restErrorFactory(e))))},e.delete=function(){var t=e.member.fullname_,r=!!e.member.meta_.pending,i=r?_(`js_member_reject_confirm`):_(`js_member_delete_confirm`);confirm(i+` `+e.member.fullname_+`?`)&&s.delete({id:e.member.id,pending:r},e.member,function(i){var a=r?_(`HTML_notification_member_application_rejected`):_(`HTML_notification_member_deleted`,{id:e.member.id,name:t});e.notify.set(e,a),n.path(r?CONFIG.url.members.applications():CONFIG.url.members.all())},a4.restErrorFactory(e))}}]),angular.module(`members`).controller(`MemberBulkEditCtrl`,[`$scope`,`$rootScope`,`$location`,`$routeParam
7s`,`Member`,`Field`,`Group`,function(e,t,n,r,i,a,o){e.utils.setPageTitle(_(`breadcrumb_members`)),e.utils.setPageID(`members`),e.isAdmin=!0;var s=$.parseJSON(r.filter);e.fields=a.query({id:`all`},function(){a4.loaded(e)},a4.restErrorFactory(e)),e.groups=o.query({id:`all`},function(){a4.loaded(e)},a4.restErrorFactory(e)),e.member_found=!0,i.bulkget({filter:s},function(t){e.bulkdata=t},a4.restErrorFactory(e)),e.bulkfield_hash={},e.member={},e.uneditable_fields=[`firstname`,`lastname`,`email`,`password`,`site_admin`,`phone`],e.toggleEdit=function(t){e.bulkfield_hash[t].editing=!e.bulkfield_hash[t].editing,e.toggleElement(t),e.toggleEditButton(t)},e.toggleElement=function(t){var n=e.bulkfield_hash[t].element,r=e.bulkfield_hash[t].type;e.bulkfield_hash[t].editing?(r==`radio`?e.member[t]=e.bulkfield_hash[t].original:r==`checkbox`?e.member[t]=!1:e.member[t]=null,r==`text`?n.find(`.form-control`).attr(`placeholder`,``):(r==`checkbox`||r==`select`||r==`radio`)&&(n.find(`.bulk-hide`).show(),n.find(`.bulk-static`).hide())):(delete e.member[t],r==`text`?n.find(`.form-control`).attr(`placeholder`,e.bulkfield_hash[t].originalDisplay):(r==`checkbox`||r==`select`||r==`radio`)&&(n.find(`.bulk-hide`).hide(),n.find(`.bulk-static`).show()))},e.toggleEditButton=function(t){var n=e.bulkfield_hash[t].element.find(`.btn-bulkedit`),r=n.attr(`data-alt-label`),i=n.find(`.text`).text();n.attr(`data-alt-label`,i),n.find(`.text`).text(r),n.toggleClass(`btn-info btn-warning`)},e.bulkupdate=function(t){confirm(_(`bulkedit_confirm_msg`))&&i.bulkupdate({data:e.member,filter:s},function(r){t&&(t.$dirty=!1),e.notify.set(e,_(`HTML_notification_bulkedit`,{_n:r.num_updated})),n.path(CONFIG.url.members.all())},a4.restErrorFactory(e))},e.hasPendingUpdates=function(){return $.map(e.member,function(e,t){return t}).length>0},e.getFieldLabel=function(t){var n;return t==`active`&&(n=_(`bulkedit_summary_active`)),angular.forEach(e.fields,function(e,r){e.name==t&&(n=e.label)}),angular.forEach(e.groups,function(e,r){e.name==t&&(n=e.label)}),n},e.getFieldType=function(t){for(var n=0;n<=e.fields.length-1;n++)if(e.fields[n].name===t)return e.fields[n].type},e.getFieldSummary=function(t){function n(){for(var n=0;n<=e.groups.length-1;n++)if(e.groups[n].name===t)return!0;return!1}var r=e.getFieldLabel(t),i=e.getFieldType(t),a=e.member[t];return a===null&&(a=_(`bulkedit_empty`)),t==`active`?_(`HTML_bulk_summary_active_`+a):n()?a?_(`HTML_bulk_summary_group_added`,{group:r}):_(`HTML_bulk_summary_group_removed`,{group:r}):i==`checkbox`?a?_(`HTML_bulk_summary_checkbox_checked`,{field:r}):_(`HTML_bulk_summary_checkbox_unchecked`,{field:r}):i==`date`?_(`HTML_bulk_edit_field_update`,{field:r,val:_.date(a)}):_(`HTML_bulk_edit_field_update`,{field:r,val:a})},e.cancel=function(){this.member_form.$dirty=!1,n.path(CONFIG.url.members.all())}}]),angular.module(`members`).controller(`MemberDashboardCtrl`,[`$scope`,`$rootScope`,`$location`,`Member`,function(e,t,n,r){r.stats({filter:[{field:`active`,verb:`a4boolequals`,value:`yes`},{field:`in_dashboard_`,verb:`a4boolequals`,value:`yes`}]},function(n){e.stats=n.stats,t.member_dashboard_ok=!0},a4.restErrorFactory(e))}]),angular.module(`members`).controller(`MemberHistoryCtrl`,[`$scope`,`Member`,`$route`,`$timeout`,`$location`,`$routeParams`,function(e,t,n,r,i,a){e.utils.setPageTitle(_(`breadcrumb_members`)),e.utils.setPageID(`members`),e.historyView=!0,e.historyDetailsOpen={},e.optinet_admin=D4GLOBALS.Grants.OptinetAdmin,t.get({id:a.id,any_state:!0},function(t){e.member=t,a4.loaded(e)},a4.restErrorFactory(e)),t.member_history({id:parseInt(a.id)},function(t){e.member_history=t;let n=new Set([`firstname`,`lastname`,`email`,`email_porg1`,`email_porg2`,`password`,`address_street`,`address_city`,`address_zip`,`phone`,`site_admin`,`board`,`everyone`,`active`]);
7e.member_history.forEach(t=>{e.historyDetailsAvailable(t.context)&&t.data&&Array.isArray(t.data)&&t.data.forEach(e=>{`label`in e||(e.label=n.has(e.field)?`fixedlabel_${e.field}`:_(`history_label_missing`))})}),a4.loaded(e)},a4.restErrorFactory(e)),e.historyDetailsAvailable=function(e){return[`PersonInsert`,`PersonUpdate`,`PersonUpdateme`].includes(e)},e.toggleHistoryDetails=function(t){e.historyDetailsOpen[t]=!e.historyDetailsOpen[t]};let o=[`field`,`label`,`old`,`new`];e.translateLabel=function(e){return _(`history_data_`+o[e])},e.translateValue=function(e,t){function n(e,t){return e===null?``:e===!0?t===`active`?_(`history_data_active`):_(`history_data_true`):e===!1?t===`active`?_(`history_data_inactive`):_(`history_data_false`):/^\d{4}-\d{2}-\d{2}$/.test(e)?_.date(e):e}let r=o[t],i=n(e[r],e.field),a=r===`label`&&([`site_admin`,`board`,`everyone`].includes(e.field)||e.field.startsWith(`g_`))?_(`history_data_group`):``;return r===`label`&&typeof i==`string`&&i.startsWith(`fixedlabel_`)?_(i)+a:i+a}}]),angular.module(`log`,[`ngResource`,`timeAgo`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.log.all(),{controller:`LogCtrl`,templateUrl:`/r/static/templates/log/event-list.html`}).when(CONFIG.url.log.transactions(),{controller:`LogTransactionsCtrl`,templateUrl:`/r/static/templates/log/event-list.html`}).when(CONFIG.url.log.receipts(),{controller:`LogReceiptsCtrl`,templateUrl:`/r/static/templates/log/event-list.html`}).when(CONFIG.url.log.view(),{controller:`LogViewCtrl`,templateUrl:`/r/static/templates/log/single.html`})}]).factory(`Log`,[`$resource`,function(e){return e(CONFIG.api(`log`),{},{query:{method:`POST`,isArray:!1,params:{id:`all`}},get_receipt:{method:`GET`,params:{id:`get_receipt`}}})}]),angular.module(`log`).controller(`LogDashboardCtrl`,[`$scope`,`$rootScope`,`Log`,function(e,t,n){n.query({id:`all`,limit:3,transactions:!1},function(n){e.log=n.all_results,e.count=n.all_count,e.dashboard=!0,t.log_dashboard_ok=!0,a4.loaded(e)},a4.restErrorFactory(e))}]);function i(e,t,n){e.utils.setPageTitle(_(`activity_log`)),e.utils.setPageID(`logs`),e.view=n,e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)},t.query({id:`all`,transactions:!0},function(t){n==`Transactions`?(e.log=t.transaction_results,e.count=t.transaction_count,e.transaction_years=e.transaction_years.concat(t.transaction_years.map(function(e){return{label:e.toString(),value:e}}))):n==`Receipts`?(e.log=t.receipt_results,e.count=t.receipt_count):(e.log=t.all_results,e.count=t.all_count),e.dashboard=!1,e.pageSize=20,e.numberOfPages=Math.ceil(e.count/e.pageSize),e.currentPage=0,a4.loaded(e)},a4.restErrorFactory(e))}angular.module(`log`).controller(`LogCtrl`,[`$scope`,`Log`,`$rootScope`,function(e,t,n){i(e,t,`All`)}]),angular.module(`log`).controller(`LogTransactionsCtrl`,[`$scope`,`Log`,`$rootScope`,`$http`,function(e,t,n,r){e.transaction_years=[],e.selected_transaction_year=null,e.loadTransactionReport=function(){if(!e.selected_transaction_year)return;e.loading_report=!0;function t(){let t=e.selected_transaction_year,n=new Date,r=n.getFullYear()+String(n.getMonth()+1).padStart(2,`0`)+String(n.getDate()).padStart(2,`0`)+`T`+String(n.getHours()).padStart(2,`0`)+String(n.getMinutes()).padStart(2,`0`)+String(n.getSeconds()).padStart(2,`0`);return`${_(`activity_log_transaction_report_filename`)}-${t}-${r}.xls`}r({method:`GET`,url:CONFIG.url.log.transaction_report_xls(),params:{year:e.selected_transaction_year},responseType:`blob`}).then(function(e){let n=new Blob([e.data],{type:e.headers(`Content-Type`)||`application/vnd.ms-excel`}),r=window.URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=t(),i.click(),window.URL.revokeObjectURL(r)}).catch(function(e){console.error(`Transaction report download failed`,e)}).finally(function(){e.loading_report=!1})},i(e,t,`Transactions`)}]),angular.module(`log`).controller(`LogReceiptsCtrl`,[`$scope`,`Log`,`$rootScope`,function(e,t,n){i(e,t,`Receipts`)}]),angular.module(`log`).controller(`LogViewCtrl`,[`$scope`,`Log`,`$routeParams`,`$location`,function(e,t,n,r){e.utils.setPageTitle(_(`activity_log_print_receipt`)),e.utils.setPageID(`logs`),n.id&&t.get_receipt({i
7d:n.id},function(t){e.entry=t.receipt_text,a4.loaded(e)},a4.restErrorFactory(e)),e.cancel=function(){history.back()}}]),angular.module(`fields`,[`ngResource`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.fields.all(),{controller:`FieldCtrl`,templateUrl:`/r/static/templates/fields/all.html`}).when(CONFIG.url.fields.add(),{controller:`FieldEditCtrl`,templateUrl:`/r/static/templates/fields/edit.html`}).when(CONFIG.url.fields.edit(`:id`),{controller:`FieldEditCtrl`,templateUrl:`/r/static/templates/fields/edit.html`})}]).factory(`Field`,[`$resource`,function(e){return e(CONFIG.api(`fields`),{},{reorder:{method:`POST`,isArray:!1,params:{id:`reorder`}}})}]),angular.module(`fields`).controller(`FieldCtrl`,[`$scope`,`$rootScope`,`Field`,function(e,t,n){e.utils.setPageTitle(_(`breadcrumb_custom_fields`)),e.utils.setPageID(`members`),e.fields=n.query({id:`all`,all_headings:!0},function(){a4.loaded(e)},a4.restErrorFactory(e)),e.visibilityValues=[{value:`0`,name:_(`field_visibility_invisible`)},{value:`1`,name:_(`field_visibility_visible`)},{value:`2`,name:_(`field_visibility_editable`)},{value:`3`,name:_(`field_visibility_required`)}],$(`body`).css(`overflow-y`,`inherit`);var r=function(){return $.map($.grep(e.fields,function(e){return e.id}),function(e){return e.id})},i;e.sortableOptions={cursor:`move`,containment:`.page-content`,handle:`.handle`,helper:function(e,t){var n=t.children(),r=t.clone();return r.children().each(function(e){$(this).width(n.eq(e).width()+16)}),r.addClass(`sort-row`),r},start:function(){i=JSON.stringify(r())},stop:function(){var a=r();JSON.stringify(a)!==i&&n.reorder({order:a},function(){e.notify.instant(t,_(`HTML_notification_field_order_saved`))},a4.restErrorFactory(e))}},`ontouchend`in document&&(e.sortableOptions.handle=`.handle`)}]),angular.module(`fields`).controller(`FieldEditCtrl`,[`$scope`,`$location`,`$routeParams`,`Field`,function(e,t,n,r){e.utils.setPageID(`members`),e.visibilityValues=[{value:`0`,name:_(`field_visibility_invisible`)},{value:`1`,name:_(`field_visibility_visible`)},{value:`2`,name:_(`field_visibility_editable`)},{value:`3`,name:_(`field_visibility_required`)}],n.id?(e.utils.setPageTitle(_(`field_edit_custom_field`)),r.get({id:n.id},function(t){if(t.type===`dropdown`){for(var n=[],r=0;r<t.options.length;r++)n.push({name:t.options[r].label,remove:!1});t.options=n}e.field=t,e.field.newFieldOption=``,e.filtered_vis=[],$.each(e.visibilityValues,function(t,n){$.inArray(n.value,e.field.visibility_options)!==-1&&e.filtered_vis.push(n)}),a4.loaded(e)},a4.restErrorFactory(e))):(e.utils.setPageTitle(_(`field_add_new_field`)),e.field=new r({type:`text`,visibility:`2`}),e.filtered_vis=jQuery.extend({},e.visibilityValues),e.field.options=[],a4.loaded(e)),e.addFieldOption=function(){var t=$.trim(e.field.newFieldOption);t.length>0&&(e.field.options.push({name:t,remove:!1}),e.field.newFieldOption=``)},e.removeFieldOption=function(t){$.each(e.field.options,function(n,r){if(t===r.name){if(e.field.id)r.remove=!r.remove;else return e.field.options.splice(n,1),!1}})},e.fieldTypes=[{value:`text`,name:_(`field_type_text`)},{value:`date`,name:_(`field_type_date`)},{value:`heading`,name:_(`field_type_heading`)},{value:`checkbox`,name:_(`field_type_checkbox`)},{value:`textarea`,name:_(`field_type_textarea`)},{value:`integer`,name:_(`field_type_integer`)},{value:`decimal`,name:_(`field_type_decimal`)},{value:`dropdown`,name:_(`field_type_dropdown`)}],e.save=a4.saveFactory(e,function(){delete e.field.newFieldOption,e.field.$save({id:e.field.id},function(){n.id?e.notify.set(e,_(`HTML_notification_field_edited`)):e.notify.set(e,_(`HTML_notification_field_added`)),t.path(CONFIG.url.fields.all())},a4.restErrorFactory(e))}),e.cancel=function(){t.path(CONFIG.url.fields.all())},e.delete=function(){var n=_(`js_field_delete_confirm_word`),r=_(`js_field_delete_confirm`)+`
8
9`+_(`js_field_delete_prompt_instruction`,{word:n}),i=prompt(r);if(i!==null){if(i.trim().toUpperCase()!==n.toUpperCase()){alert(_(`js_field_delete_wrong_word`));return}e.field.$delete({id:e.field.id},function(){e.notify.set(e,_(`HTML_notification_field_deleted`)),t.path(CONFIG.url.fields.all())},a4.restErrorFactory(e))}}}]),angular.module(`session`,[`ngResource`,`ngRoute`]).config(function(){}).factory(`Session`,[`$resource`,function(e){return e(CONFIG.api(`session`),{},{get:{method:`GET`,params:{action:`get`}},set_persistent_data:{method:`POST`,params:{action:`set_persistent_data`}}})}]),angular.module(`session`).controller(`SessionCtrl`,[`$scope`,`$rootScope`,`$location`,`Session`,function(e,t,n,r){n.path().indexOf(`edit_me_h`)>0?t.session.get_persistent_data=function(){}:(t.session.get_persistent_data=function(e){return t.session.user.persistent_data[e]},t.session.set_persistent_data=function(e,n){t.session.user.persistent_data[e]=n,r.set_persistent_data({key:e,val:n})})}]),angular.module(`settings`,[`ngResource`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.
9settings.edit(),{controller:`SettingsEditCtrl`,templateUrl:`/r/static/templates/settings/edit.html`}).when(CONFIG.url.settings.edit_eclaim(),{controller:`SettingsEditEclaimCtrl`,templateUrl:`/r/static/templates/settings/edit_eclaim.html`}).when(CONFIG.url.settings.edit_membercard(),{controller:`SettingsEditMembercardCtrl`,templateUrl:`/r/static/templates/settings/edit_membercard.html`}).when(CONFIG.url.settings.mandate(),{controller:`SettingsMandateCtrl`,templateUrl:`/r/static/templates/settings/mandate.html`}).when(CONFIG.url.settings.security(),{controller:`SettingsSecurityCtrl`,templateUrl:`/r/static/templates/settings/security.html`})}]).factory(`Settings`,[`$resource`,function(e){return e(CONFIG.api(`settings`),{},{getSiteAdmins:{method:`POST`,params:{id:`get_site_admins`}},cleanAccountingData:{method:`POST`,params:{id:`clean_accounting_data`}}})}]),angular.module(`settings`).controller(`SettingsEditCtrl`,[`$scope`,`$rootScope`,`$location`,`$routeParams`,`Settings`,function(e,t,n,r,i){e.utils.setPageTitle(_(`nav_settings`)),e.utils.setPageID(`default`),e.editing=!1,i.get({},function(t){e.settings=t,e.subscriptionUrl=t.a4_cms_version_==`perlcms`?`/sys/vtp/index.dip.html#!/subscription`:`/@admin/subscription`,e.originalSettings=jQuery.extend(!0,{},e.settings),a4.loaded(e)},a4.restErrorFactory(e)),e.selectedPeriod=null;var a=new Date().getFullYear()-1;e.gdpr_periods=[];for(var o=2013;o<=a;o++)e.gdpr_periods.push({label:`31.12.`+o,value:o});e.removeData=function(){confirm(_(`js_accounting_data_confirm`,{year:e.selectedPeriod}))&&i.cleanAccountingData({period:e.selectedPeriod},function(n){n.status==`OK`&&(e.$modal(`hide`),e.notify.instant(t,_(`HTML_accounting_data_removed`)))},a4.restErrorFactory(e))},e.save=function(){e.settings.scope_=`settings`,e._sending=!0,e.settings.vat_id_present_=!0,e.settings.bank_account&&(e.settings.bank_account=e.settings.bank_account.toUpperCase().replace(/\s/g,``).replace(/(.{4})(?=.)/g,function(e){return e+` `})),i.save({},e.settings,function(n){e.notify.instant(t,_(`HTML_notification_settings_saved`)),e._sending=!1,e.editing=!1,e.errors=null,e.originalSettings=jQuery.extend(!0,{},e.settings)},a4.restErrorFactory(e))},e.cancel=function(){e.editing=!1,e.errors=null,e.settings=jQuery.extend(!0,{},e.originalSettings)}}]),angular.module(`settings`).controller(`SettingsEditEclaimCtrl`,[`$scope`,`$rootScope`,`$location`,`$routeParams`,`Settings`,function(e,t,n,r,i){e.utils.setPageTitle(_(`nav_eclaim`)),e.utils.setPageID(`default`),e.editing=!1,i.get({},function(t){e.settings=t,e.originalSettings=jQuery.extend(!0,{},e.settings),a4.loaded(e)},a4.restErrorFactory(e)),e.save=function(){e.settings.scope_=`settings_eclaim`,e._sending=!0,i.save({},e.settings,function(n){e.notify.instant(t,_(`HTML_notification_eclaim_settings_saved`)),e._sending=!1,e.editing=!1,e.errors=null,e.originalSettings=jQuery.extend(!0,{},e.settings)},a4.restErrorFactory(e))},e.cancel=function(){e.editing=!1,e.errors=null,e.settings=jQuery.extend(!0,{},e.originalSettings)}}]),angular.module(`settings`).controller(`SettingsEditMembercardCtrl`,[`$scope`,`$rootScope`,`$location`,`$routeParams`,`Settings`,`Group`,`Field`,`Member`,function(e,t,n,r,i,a,o,s){e.utils.setPageTitle(_(`nav_membercard`)),e.utils.setPageID(`default`),e.loading=!0,e.editing=!!r.fromcreate,e.uploading=!1,e.hostname=location.hostname;function c(){e.settings.membercard_layout===`unset`&&(e.settings.membercard_layout=`show_labels`,e.first_time_saving=!0),e.settings.membercard_show_fields=e.settings.membercard_show_fields||{4:!0,6:!0},l.forEach(function(t){e.settings.membercard_show_fields[``+t]=!0});for(let t of u)e.settings.membercard_show_fields[``+t]=!1}let l=[2,3],u=[];Promise.all([new Promise(t=>{e.groups=a.query({id:`all`},t,a4.restErrorFactory(e))}),new Promise(t=>{e.fields=o.query({id:`all`},function(){let n=e.fields.length;for(;n--;)e.fields[n].visibility==`0`&&u.push(e.fields[n].id),$.inArray(e.fields[n].name,[`password`,`email_porg1`,`email_porg2`])!==-1&&e.fields.splice(n,1);t()},a4.restErrorFactory(e))}),new Promise(t=>{i.get({},function(n){e.settings=n,c(),e.originalSettings=jQuery.extend(!0,{},e.settings),t()},a4.restErrorFactory(e))})]).then(()=>{e.updatePreview(),a4.loaded(e)}),e.navigateBackToMembercardCreation=function(){n.search({}),n.path(CONFIG.url.membercard.create())},e.save=function(){e.settings.scope_=`settings_membercard`,e._sending=!0,i.save({},e.settings,function(n){window.scrollTo(0,0),r.fromcreate?(e.notify.set(t,_(`HTML_notification_membercard_settings_saved`)),e.navigateBackToMembercardCreation()):(e.editing=!1,e._sending=!1,e.updatePreview(),e.notify.instant(t,_(`HTML_notification_membercard_settings_saved`)))},a4.restErrorFactory(e))},e.cancel=function(){r.fromcreate?e.navigateBackToMembercardCreation():(e.editing=!1,e.settings=jQuery.extend(!0,{},e.originalSettings))},e.remove_uploaded_image=function(t){e.settings[`membercard_`+t+`_filename`]=``,e.settings[`membercard_`+t+`_fileurl_`]=``,t==`logo`?e.settings.membercard_logo_aspect_ratio=null:e.settings.membercard_bgimage=`1`,e.updatePreview()};function d(t){e.uploading=!1;let n;try{let e=t.target.contentWindow.document.body.innerText;if(e===`EMPTY`)return;n=JSON.parse(e)}catch(e){console.warn(e),alert(`Jokin meni vikaan.`);return}n.thumb?t.target.id==`tmpbin-iframe-bgimage`?(e.settings.membercard_bgimage_fileurl_=n.thumb.url,e.settings.membercard_bgimage_filename=n.filename):t.target.id==`tmpbin-iframe-logo`?(e.settings.membercard_logo_fileurl_=n.thumb.url,e.settings.membercard_logo_aspect_ratio=n.thumb.width/n.thumb.height,e.settings.membercard_logo_filename=n.filename):console.warn(`Unknown event path: `+t.target):alert(_(`upload_error`)),e.updatePreview(),e.$apply()}e.$on(`$includeContentLoaded`,function(){let t=document.getElementById(`tmpbin-iframe-logo`),n=document.getElementById(`tmpbin-iframe-bgimage`);t.addEventListener(`load`,d,!0),n.addEventListener(`load`,d,!0),$(`input[
9id="logofile"]`).length>0&&($(`input[id="logofile"]`).get(0).onchange=function(){e.uploading=`logo`,$(`#logo_upload_form`).submit()}),$(`input[id="bgimagefile"]`).length>0&&($(`input[id="bgimagefile"]`).get(0).onchange=function(){e.uploading=`bgimage`,$(`#bgimage_upload_form`).submit()})}),e.uploadBgimageButtonClick=function(){e.settings.membercard_bgimage=`CUSTOM`,$(`input[id=bgimagefile]`).click()},e.delayedUpdatePreview=a4.debounce(function(){e.updatePreview()},1e3),e.updatePreview=function(){let t=e.settings,n={};for(var r of Object.keys(t))/^membercard_\w+[^_]$/.test(r)&&(n[r]=t[r]);t.membercard_logo_fileurl_&&(n.membercard_logo_fileurl_=t.membercard_logo_fileurl_),t.membercard_bgimage_fileurl_&&(n.membercard_bgimage_fileurl_=t.membercard_bgimage_fileurl_),D4GLOBALS.User.Email?document.getElementById(`membercard-preview`).contentWindow.location.replace(`/jasenkortti/?`+jQuery.param({settings:JSON.stringify(n)})):document.getElementById(`membercard-preview`).src=`data:text/html,(esikatselu toimii vain normaalilla kirjautumisella)`},e.membercardPreviewFits=window.innerHeight>=557}]),angular.module(`settings`).controller(`SettingsMandateCtrl`,[`$scope`,`$location`,`$routeParams`,`Settings`,function(e,t,n,r){e.utils.setPageTitle(_(`settings_print_mandate_for_your_bank`)),e.utils.setPageID(`default`),r.get({},function(t){e.settings=t;var n=new Date,r=n.getDate(),i=n.getMonth()+1,a=n.getFullYear();e.today=r+`.`+i+`.`+a,e.osuuspankki=e.settings.c_ws_id==`1000048958`,a4.loaded(e)},a4.restErrorFactory(e)),e.cancel=function(){t.path(CONFIG.url.settings.edit())}}]),angular.module(`settings`).controller(`SettingsSecurityCtrl`,[`$scope`,`$location`,`Settings`,`Member`,`$rootScope`,function(e,t,n,r,i){e.utils.setPageTitle(_(`nav_security`)),e.utils.setPageID(`default`),e.ready=!1,e.optinet_admin=D4GLOBALS.Grants.OptinetAdmin,n.get({},function(t){e.settings=t,a4.loaded(e)},a4.restErrorFactory(e));function a(){n.getSiteAdmins({},function(t){e.site_admins=t.results.map(e=>(e.mfa&&e.mfa.status===`MFA_RESETTING`&&e.mfa.resetCodeExpireDate<new Date().toJSON()&&(e.mfa.status=`MFA_RESETTING_EXPIRED`),e)),e.ready=!0,a4.loaded(e)},a4.restErrorFactory(e))}a(),e.toggle_mfa=function(t){confirm(_(`mfa_confirm_toggle_${t}`))&&(e.settings.mfa_enabled_for=t,e.save())},e.send_mfa_reset_code=function(t){e._sending_reset_code=t,r.send_mfa_reset_code({id:t},function(){e._sending_reset_code=!1,a(),alert(_(`RESET CODE SENT`))},a4.restErrorFactory(e,t))},e.close_sessions=function(t){r.close_site_admin_sessions({id:t},function(){t==0?location.href=`/`:a()},a4.restErrorFactory(e,t))},e.clear_mfa=function(t){confirm(_(`mfa_confirm_clear_mfa`))&&r.clear_mfa({id:t},function(){a(),alert(_(`mfa_mfa_cleared`))},a4.restErrorFactory(e,t))},e.save=function(){e.ready=!1,e.settings.scope_=`security`,n.save({},e.settings,function(t){e.settings.mfa_enabled_for==`mfa_site_admins`?e.close_sessions(0):(e.ready=!0,e.notify.instant(i,_(`mfa_notify_disable`)))},a4.restErrorFactory(e))},e.cancel=function(){t.path(CONFIG.url.settings.edit())}}]),angular.module(`directives`,[]),angular.module(`directives`).directive(`memberFilter`,[`Member`,`Field`,`Group`,`Invoice`,`$rootScope`,`$http`,`$timeout`,function(e,t,n,r,i,a,o){return{restrict:`A`,transclude:!0,replace:!0,templateUrl:`/r/static/templates/filter.html`,link:function(s,c,l){var u;s.filter_label=l.filterLabel||`filter_show_persons_who_are`,s.disallow_inactives=l.disallowInactives===`true`||!1;var d=[{label:`verb_contains`,name:`icontains`,for:{text:!0,email:!0,textarea:!0}},{label:`verb_does_not_contain`,name:`!icontains`,for:{text:!0,email:!0,textarea:!0}},{label:`verb_is`,name:`exact`,for:{text:!0,email:!0,textarea:!0}},{label:`verb_is_not`,name:`!exact`,for:{text:!0,email:!0,textarea:!0}},{label:`verb_starts_with`,name:`istartswith`,for:{text:!0,email:!0,textarea:!0}},{label:`verb_on_or_before`,name:`lte`,for:{date:!0}},{label:`verb_on_or_after`,name:`gte`,for:{date:!0}},{label:`verb_a4daterange`,name:`a4daterange`,for:{date:!0}},{label:`verb_equals`,name:`exact`,for:{integer:!0,decimal:!0}}
9,{label:`verb_gte`,name:`gte`,for:{integer:!0,decimal:!0}},{label:`verb_lte`,name:`lte`,for:{integer:!0,decimal:!0}},{label:`verb_is_empty`,name:`a4isempty`,for:{text:!0,email:!0,textarea:!0,password:!0,integer:!0,decimal:!0,date:!0},unary:!0},{label:`verb_is_not_empty`,name:`!a4isempty`,for:{text:!0,email:!0,textarea:!0,password:!0,integer:!0,decimal:!0,date:!0},unary:!0},{label:`verb_is`,name:`a4boolequals`,for:{checkbox:!0}},{label:`verb_a4isoneof`,name:`a4isoneof`,for:{multiselect:!0,multiautocomplete:!0}},{label:`verb_a4isnotanyof`,name:`!a4isoneof`,for:{multiselect:!0,multiautocomplete:!0}},{label:`verb_a4ismemberofgroup`,name:`a4ismemberofgroup`,for:{dummy:!0}},{label:`verb_a4isnotmemberofgroup`,name:`!a4ismemberofgroup`,for:{dummy:!0}},{label:`verb_a4membercardstatus`,name:`a4membercardstatus`,for:{dummy:!0}},{label:`verb_a4invoicestatus`,name:`a4invoicestatus`,for:{dummy:!0}}];s.conditions=[],s.pageSize=i.session.get_persistent_data(`MemberPageSize`)||20,s.fieldHash={},i.pageSizeOptions=[{title:20,number:20},{title:50,number:50},{title:100,number:100},{title:_(`members_everyone`),number:1e5}],s.setPageSize=function(e){s.pageSize=e,i.session.set_persistent_data(`MemberPageSize`,e.toString()),s.numberOfPages=Math.ceil(s.members.length/s.pageSize),s.currentPage=0,i.last_page=null};var f=i.session.get_persistent_data(`MemberCols`);s.membercols=f?f.split(`,`):[`email`,`phone`];var p=i.session.get_persistent_data(`MemberSort`);if(p){var m=p.split(`,`);
9s.sortField=m[0],s.sortReverse=m[1]===`desc`}else s.sortField=`fullname_reverse_`,s.sortReverse=!1;s.sortBy=function(e){s.sortField===e?s.sortReverse=!s.sortReverse:(s.sortField=e,s.sortReverse=!1),i.session.set_persistent_data(`MemberSort`,s.sortField+`,`+(s.sortReverse?`desc`:`asc`)),s.applySorting(),s.currentPage=0},s.applySorting=function(){if(s.members){var e=s.fieldHash[s.sortField]?s.fieldHash[s.sortField].type:null,t=e===`integer`||e===`decimal`;s.members.sort(function(e,n){var r=s.getColumnValue(e,s.sortField),i=s.getColumnValue(n,s.sortField);return r??(r=``),i??(i=``),t?(r=r===``?-1/0:parseFloat(r),i=i===``?-1/0:parseFloat(i)):typeof r==`string`&&(r=r.toLowerCase(),i=(``+i).toLowerCase()),r<i?s.sortReverse?1:-1:r>i?s.sortReverse?-1:1:0})}},s.coloptions=[],s.$watch(`membercols`,function(){i.session.set_persistent_data(`MemberCols`,s.membercols.toString())},!0),s.fields=null,s.groups=null,s.invoices=null,t.query({id:`all`},function(e){s.fields=e},a4.restErrorFactory(s)),n.query({id:`all`},function(e){s.groups=e},a4.restErrorFactory(s)),r.query({id:`all`,dashboard:!1},function(e){s.invoices=e.invoices},a4.restErrorFactory(s));var h=s.$watch(`[fields,groups,invoices]`,function(){if(s.fields&&s.groups&&s.invoices){h(),s.fields.push({label:_(`field_uptodateness_email`),name:`uptodateness_email_c`,type:`multiselect`,params:{htmlLabels:!0},options:[{label:`<span class="badge badge-success"><span class="glyphicon glyphicon-ok-circle"></span></span> `+_(`filter_email_confirmed`),value:`confirmed`},{label:`<span class="badge badge-info"><span class="glyphicon glyphicon-circle-arrow-right"></span></span> `+_(`filter_email_sent`),value:`sent`},{label:`<span class="badge badge-important"><span class="glyphicon glyphicon-remove-circle"></span></span> `+_(`filter_email_bounced`),value:`bounced`},{label:`<span class="badge"><span class="glyphicon glyphicon-question-sign"></span></span> `+_(`filter_email_unused`),value:`unused`},{label:`<span class="badge badge-warning"><span class="glyphicon glyphicon-warning-sign"></span></span> `+_(`filter_email_missing`),value:`missing`}],group:_(`field_group_quick`)}),s.fields.push({label:_(`field_membercard_status`),name:`membercardstatus`,type:`dropdown`,params:{hideVerb:!0},customVerb:`a4membercardstatus`,options:[{label:_(`filter_membercard_has_been_sent`),value:`sent`},{label:_(`filter_membercard_has_not_been_sent`),value:`not_sent`}],group:_(`field_group_quick`)}),s.fields.push({label:_(`field_uptodateness_sms`),name:`uptodateness_sms_c`,type:`multiselect`,params:{htmlLabels:!0},options:[{label:`<span class="badge badge-success"><span class="glyphicon glyphicon-ok-circle"></span></span> `+_(`filter_sms_confirmed`),value:`confirmed`},{label:`<span class="badge badge-info"><span class="glyphicon glyphicon-circle-arrow-right"></span></span> `+_(`filter_sms_sent`),value:`sent`},{label:`<span class="badge badge-important"><span class="glyphicon glyphicon-remove-circle"></span></span> `+_(`filter_sms_bounced`),value:`bounced`},{label:`<span class="badge"><span class="glyphicon glyphicon-question-sign"></span></span> `+_(`filter_sms_unused`),value:`unused`},{label:`<span class="badge badge-warning"><span class="glyphicon glyphicon-warning-sign"></span></span> `+_(`filter_sms_missing`),value:`missing`},{label:`<span class="badge badge-odd"><span class="glyphicon glyphicon-ban-circle"></span></span> `+_(`filter_sms_unsupported`),value:`unsupported`}],group:_(`field_group_quick`)}),s.invoices.length>0&&s.fields.unshift({name:`invoicestatus`,label:_(`field_invoice_status`),type:`multiselect`,options:[{label:_(`invoice_status_paid`),value:`paid`},{label:_(`invoice_status_pending`),value:`pending`},{label:_(`invoice_status_overdue`),value:`overdue`},{label:_(`invoice_status_underpaid`),value:`underpaid`},{label:_(`invoice_status_overpaid`),value:`overpaid`},{label:_(`invoice_status_not_sent`),value:`notsent`},{label:_(`invoice_status_credited`),value:`credited`},{label:_(`invoice_status_combosettled`),value:`combosettled`},{label:_(`invoice_status_cancelled`),value:`cancelled`}],group:_(`field_group_quick`),customVerb:`a4invoicestatus`,field_options:(function(){var e=[];return $.each(s.invoices,function(t,n){e.push({label:`${n.subject} (${_.date(n.date_sent)}, ${n.count_total_c} ${_(`filter_recips_short`)})`,value:n.id})}),e})(),fieldOptionsMultiple:!0}),s.fields.unshift({name:`field_not_member_in_group`,label:_(`field_not_member_in_group`),type:`multiselect`,params:{},options:(function(){var e=[];return $.each(s.groups,function(t,n){e.push({label:n.label,value:n.name})}),e})(),group:_(`field_group_groups`),customVerb:`!a4ismemberofgroup`}),s.fields.unshift({name:`field_member_in_group`,label:_(`field_member_in_group`),type:`multiselect`,params:{},options:(function(){var e=[];return $.each(s.groups,function(t,n){e.push({label:n.label,value:n.name})}),e})(),group:_(`field_group_groups`),customVerb:`a4ismemberofgroup`}),s.fields.push({label:_(`field_date_created`),name:`date_created`,type:`date`,group:_(`field_group_lifecycle`)}),s.fields.push({label:_(`field_date_approved`),name:`date_approved`,type:`date`,group:_(`field_group_lifecycle`)}),l.deleted&&s.fields.push({label:_(`field_date_deleted`),name:`date_deleted`,type:`date`,group:_(`field_group_lifecycle`)}),s.fields.unshift({label:_(`field_find_members`),name:`id`,type:`multiautocomplete`,group:_(`field_group_quick`)});for(var e,t=0;t<s.fields.length;t++){var n=s.fields[t];n.type==`checkbox`&&(n.options=[{label:`Checked`,value:`yes`},{label:`Unchecked`,value:`no`}]),s.fields[t].type==`heading`&&(e=s.fields[t].label),e&&!s.fields[t].group?s.fields[t].group=e:s.fields[t].group||(s.fields[t].group=_(`field_group_basic`)),i.settings&&i.settings.porg_enabled&&s.fields[t].name==`email`&&(s.fields[t].label=_(`fixedlabel_email_porg_main`)),s.fieldHash[n.name]={type:n.type,options:n.options,verbs:b(n.type,n.customVerb),verbHash:x(n.type,n.customVerb),params:n.params||{},field_options:n.field_options||[],fieldOptionsMultiple:n.fieldOptionsMultiple||!1,label:n.label},$.inArray(n.type,[`multiselect`,`multiautocomplete`])===-1&&n.type!=`heading`&&s.coloptions.push({label:n.label,name:n.name,group:s.fields[t].group})}[`date_created`,`date_approved`,`date_deleted`].forEach(function(e){s.fieldHash[e]&&(s.fieldHash[e].verbs=[`a4daterange`,`lte`,`gte`])}),s.fieldHash.date_approved&&s.fieldHash.date_approved.verbs.push(`a4isempty`,`!a4isempty`),s.groupHash={},$.each(s.groups,function(e,t){s.groupHash[t.name]={label:t.label},s.coloptions.push({label:t.label,name:t.name,group:_(`field_group_groups`)})});var r=s.membercols.length,a=[];for($.each(s.coloptions,function(e,t){a.push(t.name)});r--;)$.inArray(s.membercols[r],a)===-1&&s.membercols.splice(r,1);s.fields=$.grep(s.fields,function(e){return e.type!==`heading`}),s.filterState={newField:`_select`};var o=l.persistFilter?`filter_`+l.persistFilter:null;o&&i[o]&&($.each(i[o],function(e,t){t.locked||s.conditions.push(t)}
9),i[o]=null),s.conditions.length===0&&s.conditions.push({field:`active`,verb:`a4boolequals`,value:`yes`})}},!0);s.formatData=function(e,t){return typeof e==`boolean`?e?`<span class="glyphicon glyphicon-ok" />`:``:s.fieldHash[t]&&s.fieldHash[t].type==`date`&&e?_.date(e):e},s.getColumnValue=function(e,t){return t===`date_created`&&e.meta_&&e.meta_.date_approved?e.meta_.date_approved:e[t]===void 0?e.meta_?e.meta_[t]:void 0:e[t]},s.select2Options={minimumInputLength:2,width:350,placeholder:_(`placeholder_multiautocomplete_person`),multiple:!0,search_field:`id`,display_field:`fullname_`,ajax:{url:CONFIG.url.members.api(`quicksearch`),dataType:`json`,type:`POST`,transport:function(e){s.$apply(function(){var t=a.post(e.url,e.data).success(function(t){e.success(t)});return t.abort=function(){return null},t})},data:function(e,t){return JSON.stringify({term:e,deleted:!!l.deleted,show_all:!0})},results:function(e,t){return $.each(e.results,function(e,t){t.fullname_=$(`<div/>`).text(t.fullname_).html(),t.active||(t.fullname_+=` (${_(`members_inactive`)})`)}),{results:e.results,more:!1}},params:{contentType:`application/json;charset=utf-8`}},formatResult:function(e){return e.fullname_},formatSelection:function(e){return e.fullname_}};var g=``,v=0;s.getMembers=function(){var t=l.resultsOnly?`results`:`query`,n=jQuery.extend(!0,[],s.conditions);let r=e=>{let t=s.fieldHash[e.field];if(t&&x(t.type)[e.verb]&&x(t.type)[e.verb].unary)delete e.value;else if(e.field===`FILTER_OR`)for(let t of e.value)r(t)};for(let e of n)r(e);n=jQuery.grep(n,function(e){return e.verb===`a4daterange`?e.value&&(e.value.from||e.value.to):e.value!==``}),n=n.filter(e=>e.verb!==`lte`&&e.verb!==`gte`||e.value!==`INVALID`&&e.value!==null),l.persistFilter&&(i[`filter_`+l.persistFilter]=jQuery.extend(!0,[],n)),i.filter_to_post=jQuery.extend(!0,[],n);function a(e){for(var t=0;t<e.length;t++){var n=e[t];
9if(/^!?a4isoneof$/.test(n.verb)&&Array.isArray(n.value))for(var r=0;r<n.value.length;r++){var i=n.value[r].indexOf(`|`);i>0&&(n.value[r]=n.value[r].substring(0,i))}}}a(i.filter_to_post);for(var c=0;c<i.filter_to_post.length;c++){var u=i.filter_to_post[c];u.field===`FILTER_OR`&&Array.isArray(u.value)&&a(u.value)}s.$apply(function(n){var r=JSON.stringify(n.filter_to_post);if(r!==g){g=r,s.stats=null;var i=++v;e[t]({filter:n.filter_to_post,deleted:!!l.deleted,pending:!!l.pending,fetch_msg_stats:!!l.fetchMsgStats},function(e){i===v&&(s.stats=e.stats||{},e.results&&(s.members=e.results,s.applySorting(),s.numberOfPages=Math.ceil(s.members.length/s.pageSize),s.currentPage=n.last_page>0?n.last_page:0,s.currentPage+1>s.numberOfPages&&(s.currentPage=0),n.last_page=null,$(`.member-filter-wrapper .popover`).length>0&&$(`.member-list-trigger`).length>0&&o(function(){$(`.member-filter-list`).parent().get(0).scrollTop=n.memberFilterListScroll},100)),a4.loaded(s))},a4.restErrorFactory(s))}})};var y=s.$watch(`fieldHash`,function(){s.fieldHash&&(s.$watch(`conditions`,function(e,t){$(`.member-filter-wrapper .popover`).length>0&&$(`.member-list-trigger`).length>0&&(o(function(){$(`.member-filter-wrapper .popover`).css(`top`,$(`.member-list-trigger`).position().top+$(`.member-list-trigger`).outerHeight())},1),i.memberFilterListScroll=$(`.member-filter-list`).parent().scrollTop()),s.conditions.length>0&&(clearTimeout(u),u=setTimeout(function(){s.getMembers()},300))},!0),y())});function b(e,t){var n=[];if(t)n.push(t);else for(var r=0;r<d.length;r++)d[r].for[e]&&n.push(d[r].name);return n}function x(e,t){for(var n={},r=0;r<d.length;r++)(t&&d[r].name==t||d[r].for[e])&&(n[d[r].name]=d[r]);return n}function S(e){return e.verbs&&e.verbs[0]===`a4daterange`?{from:``,to:``}:e.type==`multiselect`?[]:e.options?e.options[0].value:``}s.onVerbChange=function(e){var t=s.fieldHash[e.field];if(t&&t.verbs&&t.verbs.indexOf(`a4daterange`)!==-1){var n=e.verb===`a4daterange`,r=e.value;n!==(angular.isObject(r)&&(`from`in r||`to`in r))&&(e.value=n?{from:``,to:``}:``)}},s.addCondition=function(e,t,n){t=t||s.filterState.newField;let r;if(t===`FILTER_OR`)r={id:Math.random(),field:t,value:[]};else{var i=s.fieldHash[t];r={id:Math.random(),field:t,verb:i.verbs[0]||`exact`,value:S(i)}}n?e.splice(n,0,r):e.push(r),s.filterState.newField=`_select`};let C=e=>s.conditions.find(t=>t.id==e)?s.conditions:s.conditions.find(t=>t.field===`FILTER_OR`&&t.value.find(t=>t.id===e))?.value;s.removeCondition=function(e){let t=C(e);for(var n=0;n<t.length;n++)t[n].id==e&&t.splice(n,1)},s.editCondition=function(e){let t=C(e);for(var n=0;n<t.length;n++)if(t[n].id==e){var r=t[n].field;t.splice(n,1),s.addCondition(t,r,n)}},s.userSpecifiedConditions=function(e){return e.field!==`active`}}}}]),angular.module(`directives`).directive(`ng-blur`,function(){return{restrict:`A`,link:function(e,t,n){t.bind(`blur`,function(){e.$apply(n.ngBlur)})}}}),angular.module(`directives`).directive(`invoiceStatus`,function(){return{restrict:`A`,transclude:!0,replace:!0,scope:{status:`@`,bouncemsg:`@`},template:`<span><span class="label {{statusClass}}" title="{{bouncemsg}}">{{statusTitle}} <span class="invoice-payment-delta">{{statusDelta}}</span></span> <img ng-show="status == 'queued'" src="/r/static/img/small-loader.gif" /></span>`,link:function(e,t,n){var r=e.status.toLowerCase();e.statusClass={pending:`label-info`,underpaid:`label-warning`,overdue:`label-danger`,paid:`label-success`,overpaid:`label-overpaid`,cancelled:`label-default`,bounced:`label-danger`,credited:`label-default`,combosettled:`label-default`,creditinvoice:`label-default`}[r],e.statusTitle=_(`invoice_status_`+r),(r==`underpaid`||r==`overpaid`)&&n.delta&&(e.statusDelta=`(`+n.delta+` €)`)}}}),angular.module(`directives`).directive(`announcementStatus`,function(){return{restrict:`A`,transclude:!0,replace:!0,scope:{status:`@`},template:`<span class="label {{statusClass}}">{{statusText}} <img ng-if="statusClass == 'label-default'" src="/r/static/img/small-loader-dark.gif" /></span>`,link:function(e,t,n){var r=n.media,i={queued:{cls:`label-default`,text:_(`announcement_status_sending`)},sent:{cls:`label-info`,text:r==`sms`?_(`common_sms_status_sent`):_(`announcement_status_unknown`)},confirmed:{cls:`label-success`,text:r==`sms`?_(`common_sms_status_confirmed`):_(`announcement_status_read`)},cancelled:{cls:`label-danger`,text:_(`announcement_status_cancelled`)},bounced:{cls:`label-danger`,text:r==`sms`?_(`common_sms_status_bounced`):_(`announcement_status_bounced`)}};n.status,e.statusText=i[e.status.toLowerCase()].text,e.statusClass=i[e.status.toLowerCase()].cls}}}),angular.module(`directives`).directive(`updreqStatus`,function(){return{restrict:`A`,transclude:!0,replace:!0,scope:`isolate`,template:`<span class="label {{statusClass}}">{{statusText}} <img ng-if="statusClass == 'label-default'" src="/r/static/img/small-loader-dark.gif" /></span>`,link:function(e,t,n){var r={pending:{cls:`label-info`,text:_(`updreq_status_pending`)},updated:{cls:`label-success`,text:_(`updreq_status_fixed`)},confirmed:{cls:`label-success`,text:_(`updreq_status_ok`)}},i=n.status;e.statusText=r[i.toLowerCase()].text,e.statusClass=r[i.toLowerCase()].cls}}}),angular.module(`directives`).directive(`msgStatus`,[`$compile`,function(e){return{restrict:`A`,transclude:!0,replace:!0,scope:`isolate`,compile:function(t,n){return function(t,n,r){var i={bounced:{cls:`glyphicon-remove-circle text-danger`},sent:{cls:`glyphicon-circle-arrow-right text-info cursor-default`},confirmed:{cls:`glyphicon-ok-circle text-success cursor-default`},cancelled:{cls:`glyphicon-thumbs-down text-danger cursor-default`}};if(i[r.status.toLowerCase()]!==void 0){var a=$(`<span>`,{class:`glyphicon `+i[r.status.toLowerCase()].cls,title:_(`common_msg_status_`+r.media+`_`+r.status,{recipient:r.recipient})});if(r.media===`email`&&r.status===`bounced`){var o=r.msg?r.msg:_(`bounce_message_default_text`);a=$(`<a>`,{class:`bounce-popover-trigger`,href:`javascript:void(0)`,"data-placement":`right`,"data-trigger":`click`,"data-animation":!1,"bs-popover":JSON.stringify({title:_(`bounce_popover_title`,{recipient:r.recipient})+`<a ng-click="hide()" href="javascript:void(0)" class="button pull-right">x</a>`,content:$(`<span/>`).text(o).html().replace(/\n/g,`<br />`)})}).wrapInner(a)}$(n).parent().addClass(`bounce-popover-wrapper`),n.replaceWith(a),e(a)(t)}}}}}]),angular.module(`directives`).directive(`uptodateness`,[`$compile`,function(e){return{restrict:`A`,scope:`isolate`,replace:!0,compile:function(t,n){var r=n.media==`email`?`uptodateness-
9popup.html`:`uptodateness-popup-sms.html`,i={missing:{icon:`warning-sign`,badge:`badge-warning`},unused:{icon:`question-sign`,badge:``},sent:{icon:`circle-arrow-right`,badge:`badge-info`},confirmed:{icon:`ok-circle`,badge:`badge-success`},bounced:{icon:`remove-circle`,badge:`badge-important`},unsupported:{icon:`ban-circle`,badge:`badge-odd`}};return function(t,n,a){var o=$(`<span>`,{class:`badge `+i[a.status].badge,"data-placement":`top`,"data-trigger":`hover`,"bs-popover":`'/r/static/templates/partials/`+r+`'`}).append($(`<span>`,{class:`glyphicon glyphicon-`+i[a.status].icon}));n.replaceWith(o),e(o)(t)}}}}]),angular.module(`directives`).directive(`numberinput`,function(){return{restrict:`A`,require:`ngModel`,link:function(e,t,n,r){r.$parsers.push(function(e){return String(e).replace(`,`,`.`)}),r.$formatters.push(function(e){return e?String(e).replace(`.`,`,`):``})}}}),angular.module(`directives`).directive(`bounce`,[`$compile`,function(e){return{restrict:`A`,scope:`isolate`,replace:!0,compile:function(t,n){var r=n.label?`label label-danger`:`badge badge-important`;return function(t,n,i){var a=$(`<a>`,{class:r+` bounce-popover-trigger`,href:`javascript:void(0)`,"data-placement":`right`,"data-trigger":`click`,"bs-popover":JSON.stringify({title:_(`bounce_popover_title`)+`<a ng-click="hide()" href="javascript:void(0)" class="button pull-right">x</a>`,content:$(`<span/>`).text(i.msg).html().replace(/\n/g,`<br />`)}),text:_(`announcement_status_bounced`)});$(n).parent().addClass(`bounce-popover-wrapper`),n.replaceWith(a),e(a)(t)}}}}]),angular.module(`directives`).directive(`mediaicon`,[`$compile`,function(e){return{restrict:`A`,replace:!0,scope:`isolate`,compile:function(t,n){var r={sms:`glyphicon glyphicon-phone`,letter:`glyphicon glyphicon-envelope`,pdf:`glyphicon glyphicon-print`,email:`media-email`,"email-small":`media-email-small`};return function(t,n,i){var a=$(`<span>`,{class:r[i.media],text:i.media===`email`||i.media===`email-small`?`@`:``});n.replaceWith(a),e(a)(t)}}}}]),angular.module(`directives`).directive(`expensetypeicon`,[`$compile`,function(e){return{restrict:`A`,replace:!0,scope:`isolate`,compile:function(t,n){var r={km:`glyphicon glyphicon-plane`,per_diem:`glyphicon glyphicon-cutlery`};return function(t,n,i){var a=$(`<span>`,{class:r[i.expensetype]});n.replaceWith(a),e(a)(t)}}}}]),angular.module(`directives`).directive(`expenseclaimstatus`,[`$compile`,function(e){return{restrict:`A`,replace:!0,scope:`isolate`,compile:function(t,n){var r={pending:`label label-default`,accepted:`label label-success`,rejected:`label label-danger`};return function(t,n,i){var a=$(`<span>`,{class:r[i.status],text:_(`claim_status_`+i.status)});n.replaceWith(a),e(a)(t)}}}}]),angular.module(`directives`).directive(`dateRange`,function(){return{restrict:`A`,transclude:!0,replace:!0,scope:{datemin:`@`,datemax:`@`},template:`<span>{{range}}</span>`,link:function(e,t,n){e.$watch(`datemin+datemax`,function(){var t=n.datemin instanceof Date?n.datemin:new Date(Date.parse(n.datemin)),r=n.datemax instanceof Date?n.datemax:new Date(Date.parse(n.datemax));t.toDateString()===r.toDateString()?e.range=_.date(t):t.getYear()===r.getYear()?(e.range=t.getDate()+`.`,t.getMonth()!==r.getMonth()&&(e.range+=1+t.getMonth()+`.`),e.range+=`—`+_.date(r)):e.range=_.date(t)+`—`+_.date(r)})}}}),angular.module(`directives`).directive(`elapsedTime`,function(){return{restrict:`A`,transclude:!0,replace:!0,scope:{from:`@`,to:`@`},template:`<span>{{elapsedTimeString}}</span>`,link:function(e,t,n){e.$watch(`from+to`,function(){var t=n.from instanceof Date?n.from:new Date(Date.parse(n.from)),r=n.to instanceof Date?n.to:new Date(Date.parse(n.to));if(t&&r){var i=r-t,a=parseInt(i/1e3/60),o=Math.floor(a/60/24),s=Math.floor(a/60)%24,c=a%60,l=[];o>0&&l.push(``+o+`vrk`),s>0&&l.push(``+s+`h`),c>0&&l.push(``+c+`min`),e.elapsedTimeString=l.join(` `)}else e.elapsedTimeString=``})}}}),angular.module(`directives`).directive(`fmDisabled`,[`$compile`,`$location`,`$timeout`,function(e,t,n){return{restrict:`A`,transclude:!1,replace:!0,link:function(t,r,i){var a=t.$watch(`settings`,function(){if(t.settings)a();else return;var o=t.settings.disable_[i.fmDisabled]||!1;if(o&&(!i.condition||t.$eval(i.condition))){r.find(`input,select,textarea,button`).prop(`disabled`,!0),r.find(`.btn`).addClass(`disabled`),r.addClass(`disabled`),r.prop(`tagName`)==`INPUT`||r.prop(`tagName`)==`BUTTON`?n(function(){r.prop(`disabled`,!0)},5e3):r.prop(`tagName`)==`A`&&r.prop(`href`,`#`),r.find(`p,span,a`).not(`.badge,.glyphicon,.popover-content,.uptodateness-wrapper`).addClass(`text-muted`),r.hasClass(`col-sm-7`)||r.addClass(`text-muted`);
9var s={class:`disabled-trigger`,"data-placement":`top`,"data-trigger":`hover`,"bs-popover":JSON.stringify({title:_(`disable_popover_title`),content:_(`disable_popover_`+o)}),html:`&nbsp;`},c=$(`<a>`,s);c.addClass(`disabled-fake-link`),r.parent().append(c),n(function(){c.css({left:r.position().left,top:r.position().top,width:r.outerWidth(),height:r.outerHeight()})},3e3),e(r.parent().find(`.disabled-trigger`))(t)}})}}}]),angular.module(`directives`).directive(`onError`,function(){return{restrict:`A`,link:function(e,t,n){t.on(`error`,function(){t.attr(`src`,n.onError)})}}}),angular.module(`directives`).directive(`bulkeditControls`,[`$compile`,`$location`,`$timeout`,function(e,t,n){return{restrict:`A`,transclude:!1,replace:!0,link:function(r,i,a){if(t.path().match(/bulkedit/)){var o=a.bulkeditControls,s=i.find(`.col-sm-7,.bulk-col`);if($.inArray(o,r.uneditable_fields)!==-1){n(function(){s.children().wrapAll(`<div class="hide" />`).end().append(`<p class="form-control-static text-muted">`+_(`bulkedit_field_not_editable`)+`</p>`)},1);return}var c=r.$watch(`bulkdata`,function(){if(r.bulkdata){c();var t,n=``;if(i.find(`.form-control`).attr(`type`)==`text`?n=`text`:i.find(`input[type="checkbox"]`).length>0?n=`checkbox`:i.find(`input[type="radio"]`).length>0?n=`radio`:i.find(`select`).length>0&&(n=`select`),r.bulkdata[o]===null)t=_(`bulkedit_default_null`);else if(typeof r.bulkdata[o]==`string`)t=r.getFieldType(o)==`date`?_.date(r.bulkdata[o]):r.bulkdata[o];else if(r.bulkdata[o].multiple)t=_(`bulkedit_default_multiple`);else if(typeof r.bulkdata[o]==`boolean`&&(t=!!r.bulkdata[o],a.defaults))var l=$.parseJSON(a.defaults)[t];r.bulkfield_hash[o]={original:t,originalDisplay:l||t,editing:!1,element:i,type:n},(n==`checkbox`||n==`select`||n==`radio`)&&s.children().wrapAll(`<div class="bulk-hide"/>`).end().append($(`<p>`,{class:`bulk-static form-control-static`,text:r.bulkfield_hash[o].originalDisplay})),r.toggleElement(o);var u=`btn btn-info btn-bulkedit`;s.parents(`.member-groups`).length>0&&(u+=` btn-sm`),s.addClass(`bulkedit-wrap`).append($(`<button>`,{"data-alt-label":_(`bulkedit_btn_revert`),class:u,"ng-click":`toggleEdit('`+o+`')`}).append($(`<span>`,{class:`text`,text:_(`bulkedit_btn_edit`)})).append(` `).append($(`<span>`,{class:`glyphicon glyphicon-edit`}))),e(i.contents())(r)}})}}}}]),(function(){let e=function(e,t,n){t({template:`/r/static/templates/invoices/${e}-modal.html`,persist:!0,show:!0,backdrop:`static`,scope:n}).then(function(){})};function t(t,n,r,i){n.getCreditInvoice({iinumber:t},function(e){i.modal_data={credit_invoice:e,organization_name:i.settings.name_}}),e(`credit-receipt`,r,i)}var n=[{label:`0 %`,value:0},{label:`10 %`,value:10},{label:`13,5 %`,value:13.5},{label:`25,5 %`,value:25.5}];angular.module(`invoices`,[`ngResource`,`settings`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.invoices.all(),{controller:`InvoiceCtrl`,templateUrl:`/r/static/templates/invoices/list.html`}).when(CONFIG.url.invoices.report(),{controller:`InvoiceReportCtrl`,templateUrl:`/r/static/templates/invoices/report.html`,reloadOnSearch:!1}).when(CONFIG.url.invoices.sales_invoice_list(),{controller:`SalesInvoiceListCtrl`,templateUrl:`/r/static/templates/invoices/sales-invoice-list.html`,reloadOnSearch:!1}).when(CONFIG.url.invoices.accounts_receivable(),{controller:`AccountsReceivableCtrl`,templateUrl:`/r/static/templates/invoices/accounts-receivable.html`,reloadOnSearch:!1}).when(CONFIG.url.invoices.create(),{controller:`InvoiceAddCtrl`,templateUrl:`/r/static/templates/invoices/new.html`}).when(CONFIG.url.invoices.view(),{controller:`InvoiceEditCtrl`,templateUrl:`/r/static/templates/invoices/single.html`}).when(CONFIG.url.invoices.view_one(),{controller:`InvoiceEditCtrl`,templateUrl:`/r/static/templates/invoices/single.html`}).when(CONFIG.url.invoices.reminder(),{controller:`InvoiceAddCtrl`,templateUrl:`/r/static/templates/invoices/new.html`,reminder:!0}).when(CONFIG.url.invoices.addrecips(),{controller:`InvoiceAddCtrl`,templateUrl:`/r/static/templates/invoices/new.html`,addrecips:!0})}]).factory(`Invoice`,[`$resource`,function(e){return e(CONFIG.api(`invoices`),{},{updateStatusLegacy:{method:`POST`,params:{id:`update_status_legacy`}},addAction:{method:`POST`,params:{id:`add_action`}},getInstanceEventsLegacy:{method:`POST`,params:{id:`get_invoice_instance_actions_legacy`}},getInstanceEvents:{method:`POST`,params:{id:`get_invoice_instance_actions`}},query:{method:`GET`,isArray:!1},supersearch:{method:`POST`,isArray:!1,params:{id:`supersearch`}},preview:{method:`POST`,params:{id:`preview`}},report:{method:`POST`,isArray:!1,params:{id:`report`}},sales_invoice_list:{method:`POST`,isArray:!1,params:{id:`sales_invoice_list`}},accounts_receivable:{method:`POST`,isArray:!1,params:{id:`accounts_receivable`}},addFakeBankRow:{method:`POST`,params:{id:`add_fake_bank_row`}},getCreditInvoice:{method:`POST`,params:{id:`get_credit_invoice`}}})}]),angular.module(`invoices`).controller(`InvoiceCtrl`,[`$scope`,`Invoice`,`$location`,`$timeout`,`$rootScope`,`$compile`,function(e,t,n,r,i,a){if(n.path()===CONFIG.url.invoices.all()&&(e.utils.setPageTitle(_(`invoice_sent_invoices`)),e.utils.setPageID(`invoices`)),e.paid_percents=[],o(),e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)},n.hash().match(/receipt-notify\?n=(\d+)&type=(\w+)/)){let t=Reg
9Exp.$1,n=RegExp.$2;i.notification=a(`<span>`+_(`HTML_notification_mooney_invoice_`+(n==`pdf`?`created`:`sent`)+`_paid`,{_n:t,url:CONFIG.url.log.receipts()})+`<br>`+(n==`pdf`?``:_(`HTML_notification_invoice_addrecips_note`))+`</span>`)(e)}function o(){t.query({id:`all`,dashboard:n.path()!==CONFIG.url.invoices.all()},function(t){e.invoices=t.invoices,i.invoice_dashboard_ok=!0,e.pageSize=20,e.numberOfPages=Math.ceil(e.invoices.length/e.pageSize),e.currentPage=0,a4.loaded(e),a4.timeout(r,e,function(){$.each(e.invoices,function(t,n){e.paid_percents[n.id]=Math.round((n.count_total_c-n.count_open_c-n.count_overdue_c)/n.count_total_c*100)})},200)},a4.restErrorFactory(e))}}]),angular.module(`invoices`).controller(`InvoiceReportCtrl`,[`$scope`,`$routeParams`,`$location`,`Invoice`,function(e,t,n,r){e.utils.setPageID(`invoices`),e.utils.setPageTitle(_(`invoice_sync_reports`)),e.reportView=`banksync`;var i=new Date,a=i.getFullYear(),o=i.getMonth()+1;e.criteria={from:t.from||``+a+`-01-01`,to:t.to||``+a+`-12-31`,invoice_id:t.invoice_id?t.invoice_id.split(`,`):[`all`]},e.ref_periods=[];for(var s=2016;s<=a;s++)for(var c=1;c<=12&&!(s===a&&c>o);c++)e.ref_periods.unshift({label:c+`/`+s,value:s+`-`+(`00`+String(c)).substr(String(c).length)});e.invoices=[],r.query({id:`all`,dashboard:!1},function(t){e.invoices=[{id:`all`,subject:_h(`invoice_report_all_invoices`)}],t.invoices.forEach(function(t){e.invoices.push({id:``+t.id,subject:` <small style="float:right" class="muted"> `+_h(`invoice_report_paid`,{m:t.count_paid_c,n:t.count_total_c})+`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</small>`+_h(`invoice_report_filter_invoice`)+` <b>`+a4.esc(t.subject)+`</b><small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</small>`})}),a4.loaded(e)},a4.restErrorFactory(e));var l=0;e.loadReport=function(){var t=e.criteria.invoice_id.indexOf(`all`);t>=0&&e.criteria.invoice_id.length>1&&(n.search().invoice_id===`all`?e.criteria.invoice_id.splice(t,1):e.criteria.invoice_id=[`all`]);var i={from:e.criteria.from,to:e.criteria.to,invoice_id:e.criteria.invoice_id.join(`,`)},a=++l;n.search(i),e.report={},r.report({criteria:e.criteria},function(t){a===l&&(e.report=t,e.downloadUrl=CONFIG.url.invoices.download_report()+`?`+$.param(i))})},e.downloadRefs=function(e){location.href=CONFIG.url.invoices.download_refs()+`?`+jQuery.param({period:e})},e.loadReport()}]),angular.module(`invoices`).controller(`SalesInvoiceListCtrl`,[`$scope`,`$routeParams`,`$location`,`Invoice`,`$modal`,function(e,n,r,i,a){e.utils.setPageID(`invoices`),e.utils.setPageTitle(_(`invoice_sales_invoice_list`)),e.reportView=`sales_invoice_list`;var o=new Date,s=o.toISOString().split(`T`)[0];e.criteria={from:n.from||``+o.getFullYear()+`-01-01`,to:n.to||s},e.maxDate=s,e.showCreditReceipt=function(n){t(n,i,a,e)},e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)},e.loadSalesInvoiceList=function(){var t={from:e.criteria.from,to:e.criteria.to};r.search(t),e.report={},i.sales_invoice_list({criteria:e.criteria},function(n){e.report=n,e.salesInvoiceListDownloadUrlXLS=CONFIG.url.invoices.sales_invoice_list_xls()+`?`+$.param(t),e.salesInvoiceListDownloadUrlPDF=CONFIG.url.invoices.sales_invoice_list_pdf()+`?`+$.param(t),e.report.rows&&(e.pageSize=100,e.numberOfPages=Math.ceil(e.report.rows.length/e.pageSize),e.currentPage=0)})},e.loadSalesInvoiceList(),a4.loaded(e)}]),angular.module(`invoices`).controller(`AccountsReceivableCtrl`,[`$scope`,`$routeParams`,`$location`,`Invoice`,function(e,t,n,r){e.utils.setPageID(`invoices`),e.utils.setPageTitle(_(`invoice_accounts_receivable`)),e.reportView=`accounts_receivable`,e.criteria={to:t.to||``+new Date().toISOString().split(`T`)[0]},e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)},e.loadAccountsReceivable=function(){var t={to:e.criteria.to};n.search(t),e.report={},r.accounts_receivable({criteria:e.criteria},function(n){e.report=n,e.accountsReceivableDownloadUrlXLS=CONFIG.url.invoices.accounts_receivable_xls()+`?`+$.param(t),e.accountsReceivableDownloadUrlPDF=CONFIG.url.invoices.accounts_receivable_pdf()+`?`+$.param(t),e.pageSize=100,e.numberOfPages=Math.ceil(e.report.rows.length/e.pageSize),e.currentPage=0})},e.loadAccountsReceivable(),a4.loaded(e)}]),angular.module(`invoices`).controller(`InvoiceAddCtrl`,[`$rootScope`,`$scope`,`$route`,`$timeout`,`$routeParam
9s`,`$location`,`Invoice`,`Settings`,`$compile`,function(e,t,r,i,a,o,s,c,l){a4.checkStrongholdNotification(e,t,o,l),t._sending=!1,t.previewing=!1;var u=r.current.$$route.reminder,d=r.current.$$route.addrecips,f,p=u?_(`invoicereminder_create_new_invoice`):d?_(`invoice_add_recips`):_(`invoice_create_new_invoice`);t.utils.setPageTitle(p),t.utils.setPageID(`invoices`),c.get({},function(e){if(t.settings=e,u||d)t.subject_placeholder=``,t.description_placeholder=``;else{var n=new Date;t.subject_placeholder=_(`invoice_title_placeholder`)+` `+n.getFullYear(),t.description_placeholder=_(`invoice_description_placeholder`)}});var m=new Date;m.setHours(12),m.setTime(m.getTime()+12096e5);var h=JSON.stringify(m).substr(1,10);t.pages=[{num:1,description:``}],t.add_page=function(){t.pages.length<16&&t.pages.push({num:t.pages.length+1,description:``})},t.remove_page=function(){(t.pages[t.pages.length-1].description===``||confirm(_(`js_page_remove_confirm`)))&&t.pages.pop()};let g={title:``,amount_with_vat:``,vat_percent:``};if(t.add_invoice_row=function(){if(t.msg.invoice_rows_.length>=8){alert(_(`invoice_max_rows`));return}t.msg.invoice_rows_.length===1&&(t.msg.subject=t.msg.invoice_rows_[0].title,t.msg.invoice_rows_[0].title=``),t.msg.invoice_rows_.push(angular.copy(g)),window.requestAnimationFrame(()=>{let e=Array.from(document.querySelectorAll(`.invoiceRowTable input[name="rowtitle"]`));e.length&&(e.length>2?e.reverse()[0]:e[0]).focus()})},t.remove_invoice_row=function(e){t.msg.invoice_rows_.length>1&&t.msg.invoice_rows_.splice(e,1),t.msg.invoice_rows_.length===1&&(t.msg.invoice_rows_[0].title=t.msg.subject)},t.getRowErrors=function(e,n){return t.errors&&t.errors[`r${e}:${n}`]},t.tax_percentages=n,u||d){s.get({id:a.id,get_details:!1},function(e){t.msg=e;var n=t.msg.description.split(a4.letterPageSeparator());if(u)t.msg.reminder_to_=a.id,t.msg.invoice_rows_.length===1?t.msg.invoice_rows_[0].title=_(`invoice_reminder_subject_prefix`)+t.msg.invoice_rows_[0].title:t.msg.subject=_(`invoice_reminder_subject_prefix`)+t.msg.subject,t.msg.date_due=_(`invoice_reminder_same_due_as_orig`),t.pages[0].description=n[0];else{var r=!1;e.is_legacy?r=`invoice_addrecips_not_available_for_legacy_invoices`:!!e.vat_obliged_checked!=!!t.settings.vat_obliged&&(r=`invoice_addrecips_not_available_vat_obliged_mismatch`),r&&(alert(_(r)),o.path(CONFIG.url.invoices.view(a.id))),t.msg.addrecips_to_=a.id,t.msg.date_due=h,t.pages=[],$.each(n,function(e,n){t.pages.push({num:e+1,description:n})}),t.original_description=t.msg.description}a4.loaded(t)},a4.restErrorFactory(t));var v=t.$watch(`conditions+msg`,function(){t.conditions.length>0&&t.msg&&(v(),t.conditions.push({field:`invoicestatus`,field_option:[t.msg.id],value:u?[`overdue`]:[`notsent`],verb:`a4invoicestatus`,locked:!u,removeLocked:u,fieldLocked:u}),u&&(t.fields.forEach(function(e){e.name===`invoicestatus`&&(e.disabled=`true`)}),t.fieldHash.invoicestatus.options=$.grep(t.fieldHash.invoicestatus.options,function(e){return e.value===`pending`||e.value===`overdue`})))},!0)}else f=new s({date_due:h,subject:``,amount:``,description:``,msg_media:`email`,invoice_rows_:[angular.copy(g)]}),t.msg=angular.copy(f),a4.loaded(t);t.resultAmount=0,t.$watch(`msg.msg_media`,function(){t.msg&&t.msg.msg_media!==`letter`&&t.msg.description&&t.msg.description.indexOf(a4.letterPageSeparator())!==-1&&(t.msg.description=a4.stripLetterPageSeparator(t.msg.description,`
10
11`)),t.msg&&t.msg.msg_media===`letter`&&d&&(t.msg.description=t.original_description)}),t.proceed_to_payment=function(){var e=this;t.msg.filter=t.filter_to_post,t._sending=!0,s.save({},t.msg,function(n){e.invoice_form.$dirty=!1,o.path(CONFIG.url.mooney.method(n.mid)).search(`goto`,CONFIG.get(`urls.invoices.all`)),t._sending=!1},a4.restErrorFactory(t))},t.getSendingCount=function(){return!t.stats||!t.msg?0:t.stats[`result_`+t.msg.msg_media+`_count`]},t.msgModel=function(){return u?`invoicereminder`:`invoice`},t.preview=function(){let e=t.msg.invoice_rows_.reduce((e,t)=>e+parseFloat(t.amount_with_vat),0);if(t.stats&&t.msg&&e>0){var n=e*t.stats[`result_`+t.msg.msg_media+`_count`];t.resultAmount=a4.formatBigAmount(String(n.toFixed(2)))}return a4.msgPreview(t,s)()},t.cancelPreview=a4.msgPreviewCancel(t),t.filterInvalidMembers=function(e){return function(n){return(t.stats[`result_`+e+`_invalid_ids`]||[]).includes(n.id
11)}},t.$watch(`settings+msg.msg_media`,function(){t.settings&&(t.emailMissing=t.msg.msg_media===`email`&&t.settings.email_missing_,t.vatIdRequired=t.msg.msg_media===`letter`&&t.settings.vat_id_missing_,t.bankAccountRequired=!t.settings.bank_account)}),t.setTemplate=function(e){t.msg.msg_media=e.sending_method,t.msg.subject=e.subject,t.msg.amount=e.amount,t.msg.description=e.description,t.currentTemplate=e.id},t.resetTemplate=function(){t.msg=angular.copy(f),t.currentTemplate=null},t.removeTemplate=function(e){confirm(_(`js_template_delete_confirm`))&&s.template_remove({template_id:e},function(e){t.templates=e},a4.restErrorFactory(t))}}]),angular.module(`invoices`).controller(`InvoiceEditCtrl`,[`$scope`,`$routeParams`,`$timeout`,`Invoice`,`$modal`,function(r,i,a,o,s){r.working={},r.utils.setPageID(`invoices`),r.paymentDetails={},r.paymentDetailsOpen={},r.instanceOutstandingTotal={},r.loading=!1,r._sending=!1,r.add_recips_disabled=!1,l(),r.paginate=function(e){r.currentPage=r.utils.paginationHandler(e,r.numberOfPages)},r.getNumberOfPages=function(e){return Math.ceil(e/r.pageSize)},r.showAll=function(){r.loading=!0,a(function(){r.currentPage=0,r.pageSize=1e5,r.numberOfPages=1},1)};function c(e){var t=e.msg_statuses;if(e.initial_msg_status=t&&t.length>0?t[0]:null,t&&t.length>0){let n=new Map;t.forEach(function(e){let t=n.get(e.recipient_address);(!t||new Date(e.date_sent)>new Date(t.date_sent))&&n.set(e.recipient_address,e)}),e.msg_statuses=Array.from(n.values())}}function l(){o.get({id:i.id},function(e){r.msg=e,r.msg.amount_pending_c=(r.msg.amount_total_c-r.msg.amount_paid_c-r.msg.amount_credited_c-r.msg.amount_cancelled_c).toFixed(2),r.processing_invoice=!r.msg.instances[0].msg_statuses,r.viewStatus=``,r.utils.setPageTitle(r.msg.subject+` - `+_(`breadcrumb_invoices`)),r.pageSize=20,r.numberOfPages=r.getNumberOfPages(r.msg.instances.length),r.currentPage=0,u(),r.statuses=[`paid`,`pending`,`cancelled`,`overpaid`,`underpaid`,`overdue`,`credited`],r.statusstyles=[`success`,`info`,`cancelled`,`overpaid`,`warning`,`danger`,`cancelled`];var t=[],i=[];$.each(r.msg.instances,function(e,n){t[n.date_sent]=!0,i[n.date_due]=!0,c(n)}),r.sent_dates=$.unique($.map(Object.keys(t).sort(),function(e){return _.date(e)})),r.due_dates=$.map(Object.keys(i).sort(),function(e){return _.date(e)});for(var o=0;o<r.msg.invoice_rows_.length;o++){var s=parseFloat(r.msg.invoice_rows_[o].vat_percent);if(!n.some(function(e){return e.value===s})){r.add_recips_disabled=!0;break}}a4.loaded(r),r.msg.msg_media===`email`&&e.has_queued_msgs&&a4.timeout(a,r,l,5e3),r.pages=r.msg.description.split(a4.letterPageSeparator())},a4.restErrorFactory(r))}r.setViewStatus=function(e){r.viewStatus=e,r.currentPage=0,r.numberOfPages=e===``?r.getNumberOfPages(r.msg.instances.length):e===`person_id`?1:e===`pending`?r.getNumberOfPages(r.msg.count_open_c):r.getNumberOfPages(r.msg[`count_`+e+`_c`]),r.filterInvoiceStatus=function(t){return e===``?!0:e===`person_id`?t.person_id===parseInt(r.personId):e===`pending`?t.status_c===e||t.status_c===`underpaid`:t.status_c===e}},i.person_id&&(r.personId=i.person_id,r.setViewStatus(`person_id`));function u(){a(function(){$(function(){$(`.progress .tooltip`).remove(),$(`.progress > div`).each(function(){$(this).removeClass(`active`).tooltip(`destroy`),$(this).attr(`data-oldtitle`,$(this).attr(`title`)),$(this).width()>0&&($(this).addClass(`active`),$(this).tooltip({trigger:`manual`,placement:`bottom`}))}),$(`.progress > div.active`).tooltip(`show`)})},800)}r.openCreateCreditInvoiceModal=function(t){let n=t.amount_open_c!==r.msg.amount,i=r.msg.invoice_rows_.find(e=>e.vat_percent!==r.msg.invoice_rows_[0].vat_percent);r.modal_data={instance:t,amount_to_credit:t.amount_open_c,comment:``,is_partly_paid:n,has_multi_vat:i},i&&n&&(r.modal_data.amount_to_credit=r.msg.invoice_rows_.map(e=>({title:e.title,original_amount_with_vat:e.amount_with_vat,credited_amount_with_vat:n?null:e.amount_with_vat,vat_percent:e.vat_percent,max:Math.min(e.amount_with_vat,t.amount_open_c)})),r.modal_data.updateTotal=function(){let e=Math.round(r.modal_data.amount_to_credit.map(e=>a4.amountStringToCents(e.credited_amount_with_vat||`0`)).reduce((e,t)=>
11e+t,0));r.modal_data.is_total_valid=e===Math.round(t.amount_open_c*100),Number.isNaN(e)?r.modal_data.computed_total=`???`:r.modal_data.computed_total=_.amount(e/100)},r.modal_data.updateTotal()),e(`credit`,s,r)},r.submitCreditModal=function(e,t,n,i){r._sending=!0,r.addAction(e,t,n,i,!0,()=>{r._sending=!1,r.$modal(`hide`)})},r.showCreditReceipt=function(e){t(e,o,s,r)},r.openManualPaymentModal=function(t){r.modal_data={instance:t,amount:t.amount_open_c===`0.00`?`-`+t.amount_paid_c:t.amount_open_c,comment:``,errors:{}},e(`manualpayment`,s,r)},r.submitManualPaymentModal=function(e,t,n,i){r._sending=!0,r.addAction(e,t,n,i,!0,()=>{r._sending=!1,r.$modal(`hide`)})},r.addAction=function(e,t,n,i,a=!1,s=null){Array.isArray(n)&&(n=JSON.stringify(n.map(e=>e.credited_amount_with_vat===null?`0`:e.credited_amount_with_vat.replace(`,`,`.`)))),delete r.paymentDetailsOpen[e],delete r.paymentDetails[e],$(`#ins-`+e).css(`height`,$(`#ins-`+e).outerHeight(!0)),r.working[e]=!0,o.addAction({instance_id:e,action_type:t,amount:n,comment:i},function(t){r.msg=t,$.each(r.msg.instances,function(e,t){c(t)}),delete r.working[e],u(),typeof s==`function`&&s()},function(t){r._sending=!1,a4.restErrorFactory(r.modal_data,e,a)(t)})},r.updateStatusLegacy=function(e,t,n){delete r.paymentDetailsOpen[t],delete r.paymentDetails[t],$(`#ins-`+t).css(`height`,$(`#ins-`+t).outerHeight(!0)),r.working[t]=!0,o.updateStatusLegacy({instance_id:t,status:e,extra_fields:n},function(e){r.msg=e,delete r.working[t],u()},a4.restErrorFactory(r,t))},r.addFakeBankRow=function(e,t){let n=prompt(_(`invoice_give_amount_for_fake_bank_row`));if(!n||!/^-?\d+([.,]\d\d?)?$/.test(n)){alert(`Tarkista summa.`);return}let i=parseFloat(n.replace(`,`,`.`)).toFixed(2);o.addFakeBankRow({instance_id:e,reference_number:t,amount:i},function(e){window.location.reload()},a4.restErrorFactory(r,e))},r.showInstanceEventsLegacy=function(e){r.paymentDetailsOpen[e]?delete r.paymentDetailsOpen[e]:r.paymentDetailsOpen[e]=!0,r.paymentDetails[e]||o.getInstanceEventsLegacy({instance_id:e},function(t){r.paymentDetails[e]=t.results,r.instanceOutstandingTotal[e]=0;let n=0;for(var i=0;i<r.paymentDetails[e].length;i++){var a=r.paymentDetails[e][i];if(n+=parseFloat(a.amount),a.action_type===`mark_paid`){a.amount=parseFloat(r.msg.amount-n).toFixed(2),a.cancellable=!1;let t=r.paymentDetails[e].filter(e=>e.action_type!==`reminder`);if(t.length===2){let e=t.map(e=>e.action_type);e.includes(`mark_paid`)&&e.includes(`sync_payment`)&&(a.cancellable=!0)}}else a.action_type===`mark_pending`||a.action_type===`mark_paid_cancel`?a.amount=parseFloat(-r.msg.amount).toFixed(2):a.action_type===`mark_cancelled`&&(a.amount=r.msg.amount);a.amount!==void 0&&(r.instanceOutstandingTotal[e]+=parseFloat(a.amount))}r.instanceOutstandingTotal[e]-=r.msg.amount},a4.restErrorFactory(r,e))},r.showInstanceEvents=function(e){r.paymentDetailsOpen[e]?delete r.paymentDetailsOpen[e]:r.paymentDetailsOpen[e]=!0,r.paymentDetails[e]||o.getInstanceEvents({instance_id:e},function(t){r.paymentDetails[e]=t.results,r.instanceOutstandingTotal[e]=0;let n=0;for(var i=0;i<r.paymentDetails[e].length;i++){var a=r.paymentDetails[e][i];if(n+=parseFloat(a.amount),a.action_type===`mark_paid`){a.amount=parseFloat(r.msg.amount-n).toFixed(2),a.cancellable=!1;let t=r.paymentDetails[e].filter(e=>e.action_type!==`reminder`);if(t.length===2){let e=t.map(e=>e.action_type);e.includes(`mark_paid`)&&e.includes(`sync_payment`)&&(a.cancellable=!0)}}else a.action_type===`mark_pending`||a.action_type===`mark_paid_cancel`?a.amount=parseFloat(-r.msg.amount).toFixed(2):a.action_type===`mark_cancelled`&&(a.amount=r.msg.amount);a.amount!==void 0&&(r.instanceOutstandingTotal[e]+=parseFloat(a.amount))}r.instanceOutstandingTotal[e]-=r.msg.amount},a4.restErrorFactory(r,e))}}])})(),angular.module(`announcements`,[`ngResource`,`settings`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.announcements.all(),{controller:`AnnouncementCtrl`,templateUrl:`/r/static/templates/announcements/list.html`}).when(CONFIG.url.announcements.create(),{controller:`AnnouncementAddCtrl`,templateUrl:`/r/static/templates/announcements/new.html`}).when(CONFIG.url.announcements.view(),{controller:`AnnouncementEditCtrl`,templateUrl:`/r/static/templates/announcements/single.html`})}]).factory(`Announcement`,[`$resource`,function(e){return e(CONFIG.api(`announcements`),{},{query:{method:`GET`,isArray:!1},supersearch:{method:`POST`,isArray:!1,params:{id:`supersearch`}},preview:{method:`POST`,params:{id:`preview`}}})}]),angular.module(`announcements`).controller(`AnnouncementCtrl`,[`$scope`,`$location`,`$timeout`,`$rootScope`,`Announcement`,`$compile`,function(e,t,n,r,i,a){t.path()==CONFIG.url.announcements.all()&&(e.utils.setPageTitle(_(`announcement_sent_announcements`)),e.utils.setPageID(`announcements`)),o(),e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)},t.hash().match(/receipt-notify\?n=(\d+)/)&&(r.notification=a(`<span>`+_(`HTML_notification_mooney_announcement_sent_paid`,{_n:RegExp.$1,url:CONFIG.url.log.receipts()})+`</span>`)(e));function o(){i.query({id:`all`,dashboard:t.path()!==CONFIG.url.announcements.all()},function(t){e.announcements=t.announcements,e.stats=t.stats,r.announcement_dashboard_ok=!0,e.pageSize=20,e.numberOfPages=Math.ceil(e.announcements.length/e.pageSize),e.currentPage=0,a4.loaded(e)},a4.restErrorFactory(e))}}]),angular.module(`announcements`).controller(`AnnouncementAddCtrl`,[`$rootScope`,`$scope`,`$location`,`$compile`,`Announcement`,`Settings`,`$timeout`,function(e,t,n,r,i,a,o){a4.checkStrongholdNotification(e,t,n,r),t.utils.setPageTitle(_(`announcement_create_new_announcement`)),t.utils.setPageID(`announcements`),t._sending=!1,t.previewing=!1,t.current_media=`email`,t.pages=[{num:1,content:``}],t.add_page=function(){t.pages.length<16&&t.pages.push({num:t.pages.length+1,content:``})},t.remove_page=function(){(t.pages[t.pages.length-1].content===``||confirm(_(`js_page_remove_confirm`)))&&t.pages.pop()},t.strip_html=function(e){let t=document.createElement(`div`);return t.innerHTML=e,t.textContent||t.innerText||``},a.get({}
11,function(e){t.settings=e,t.$watch(`msg.content+msg.msg_media`,function(){if(t.msg&&t.msg.msg_media!==`letter`&&t.msg.content&&t.msg.content.indexOf(a4.letterPageSeparator())!==-1&&(t.msg.content=a4.stripLetterPageSeparator(t.msg.content)),t.msg&&t.msg.msg_media===`sms`){var e=t.settings.sms_.max_number_of_messages,n=t.settings.sms_.max_chars_per_message,r=a4.trimSmsContent(t.msg.content).length;t.sms_parts=Math.ceil(r/n),t.sms_percentage=r/(e*n)*100,t.sms_type=t.sms_parts<2?`single`:t.sms_parts<=e?`multi`:`too_long`}})}),t.msg=new i({subject:``,content:``,msg_media:t.current_media}),a4.loaded(t),t.proceed_to_payment=function(){var e=this;t.msg.filter=t.filter_to_post,t._sending=!0,i.save({},t.msg,function(t){e.announcement_form.$dirty=!1,n.path(CONFIG.url.mooney.method(t.mid)).search(`goto`,CONFIG.get(`urls.announcements.all`))},a4.restErrorFactory(t))},t.msgModel=function(){return`announcement`},t.preview=a4.msgPreview(t,i),t.cancelPreview=a4.msgPreviewCancel(t),t.filterInvalidMembers=function(e){return function(n){return t.stats?(t.stats[`result_`+e+`_invalid_ids`]||[]).includes(n.id):!1}},t.$watch(`settings+msg.msg_media`,function(){if(t.settings&&(t.emailMissing=t.msg.msg_media===`email`&&t.settings.email_missing_,t.vatIdRequired=t.msg.msg_media===`letter`&&t.settings.vat_id_missing_,t.bankAccountRequired=!1),t.msg.msg_media!=t.current_media){let e=!0;t.msg.content!=``&&t.msg.msg_media==`sms`&&(confirm(_(`js_confirm_msg_media_change`))?t.msg.content=t.strip_html(t.msg.content):(e=!1,o(function(){t.msg.msg_media=t.current_media},1))),e&&(t.current_media=t.msg.msg_media)}if(t.msg.msg_media==`email`){let n=setInterval(()=>{let r=document.querySelector(`.tiptap-container`);if(r){clearInterval(n),window.initTiptap||(alert(_(`announcement_browser_not_supported`)),location.href=`/r/`);var i=e.session.user.lang;[`fi`,`en`,`sv`].includes(i)||(i=`fi`),window.initTiptap(r,{language:i,disabled:r.classList.contains(`tiptap-container--disabled`),onInput:e=>{if(/href="[\/#]/.test(e.value)){let t=location.href.replace(/\/r\/.*/,``);e.value=e.value.replace(/href="([\/#])/,`href="${t}$1`)}t.msg.content=e.value}})}},300)}})}]),angular.module(`announcements`).controller(`AnnouncementEditCtrl`,[`$scope`,`$routeParams`,`$timeout`,`Announcement`,function(e,t,n,r){e.utils.setPageID(`announcements`),e.viewStatus=``,i();
11function i(){r.get({id:t.id},function(t){e.msg=t,e.pages=e.msg.content.split(a4.letterPageSeparator()),e.utils.setPageTitle(t.subject),e.msg.msg_media==`email`&&(e.msg.msgs.forEach(e=>{e.msg_statuses.some(e=>e.status===`bounced`)&&(e.status=`error`)}),e.msg.count_error=e.msg.msgs.filter(e=>e.status===`error`).length),a4.loaded(e)},a4.restErrorFactory(e))}e.toggleViewStatus=function(){e.viewStatus=e.viewStatus===``?`error`:``},e.filterCombinedStatus=function(t){return e.viewStatus===``||t.status==e.viewStatus}}]),(function(){angular.module(`expenseclaim`,[`ngResource`,`settings`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.expenseclaim.all(),{controller:`ExpenseclaimCtrl`,templateUrl:`/r/static/templates/expenseclaim/list.html`}).when(CONFIG.url.expenseclaim.archive(),{controller:`ExpenseclaimArchiveCtrl`,templateUrl:`/r/static/templates/expenseclaim/archive.html`}).when(CONFIG.url.expenseclaim.view(),{controller:`ExpenseclaimViewCtrl`,templateUrl:`/r/static/templates/expenseclaim/view.html`}).when(CONFIG.url.expenseclaim.edit(),{controller:`ExpenseclaimEditCtrl`,templateUrl:`/r/static/templates/expenseclaim/single.html`})}]).factory(`Expenseclaim`,[`$resource`,function(e){return e(CONFIG.api(`expenseclaim`),{},{query:{method:`GET`,isArray:!1},view:{method:`GET`,isArray:!1,params:{id:`view`}},updateStatus:{method:`POST`,params:{id:`update_status`}},addComment:{method:`POST`,params:{id:`add_comment`}},markPaid:{method:`POST`,params:{id:`mark_paid`}}})}]);function e(e){return e.a4_cms_version_==`perlcms`?`/sys/vtp/index.dip.html#!/upgrade`:`/@admin/upgrade`}angular.module(`expenseclaim`).controller(`ExpenseclaimDashboardCtrl`,[`$scope`,`Expenseclaim`,function(e,t){t.query({id:`all`},function(t){if(t.pending.length||t.accepted.length){e.show=`waiting`;var n={pending:0,accepted:0},r={pending:0,accepted:0};$.each([`pending`,`accepted`],function(e,i){$.each(t[i],function(e,t){n[i]+=+t.amount,r[i]+=+t.count})}),e.pending_count=r.pending,e.pending_total=Math.round(n.pending*100)/100,e.accepted_count=r.accepted,e.accepted_total=Math.round(n.accepted*100)/100}else e.show=t.accepted.length||t.archive_count?`allclear`:`trynow`;a4.loaded(e)},a4.restErrorFactory(e))}]),angular.module(`expenseclaim`).service(`Helper`,function(){this.update_columns=function(e,t,n,r,i){var a=0,o,s;if($.each(e[t],function(c,l){l&&l.person_id===r&&l.person_account_number===i&&(s=l.person_name,$.each(l.items,function(r,i){if(i.id===n)return a=i.amount,o=i.date,l.items.splice(r,1),l.amount=(parseFloat(l.amount)-parseFloat(a)).toFixed(2),l.count--,l.date_min=null,l.date_max=null,l.count===0&&e[t].splice(c,1),!1}))}),$.each(e[t],function(e,t){t&&t.person_id===r&&t.person_account_number===i&&$.each(t.items,function(e,n){(t.date_min===null||n.date<t.date_min)&&(t.date_min=n.date),(t.date_max===null||n.date>t.date_max)&&(t.date_max=n.date)})}),t===`accepted`){var c=!1;$.each(e.pending,function(e,t){if(t.person_id===r&&t.person_account_number===i)return t.count++,t.amount=(parseFloat(t.amount)+parseFloat(a)).toFixed(2),o>t.date_max?t.date_max=o:o<t.date_min&&(t.date_min=o),c=!0,!1}),c||e.pending.push({amount:a,count:1,date_min:o,date_max:o,person_account_number:i,person_id:r,person_name:s})}}}),angular.module(`expenseclaim`).controller(`ExpenseclaimCtrl`,[`$scope`,`$location`,`$timeout`,`$rootScope`,`Expenseclaim`,`Helper`,`Settings`,function(t,n,r,i,a,o,s){n.path()===CONFIG.url.expenseclaim.all()&&(t.utils.setPageTitle(_(`breadcrumb_expense_claims`)),t.utils.setPageID(`expenseclaim`)),s.get({},function(n){t.upgrade_url=e(n)}),c();function c(){a.query({id:`all`},function(e){t.pending=e.pending,t.accepted=e.accepted,t.archive_count=e.archive_count,t.accepted_this_year=e.accepted_this_year,i.session&&(!i.session.get_persistent_data(`RegClaimHelp`)||i.session.get_persistent_data(`RegClaimHelp`)===`0`)?($(`#claim-intro-container`).show(),t.show_help=!0):t.show_help=!1,a4.loaded(t)},a4.restErrorFactory(t)),t.hideIntro=function(){$(`.help-btn`).css(`display`,`none`),$(`#claim-intro-container`).slideUp(300),i.session.set_persistent_data(`RegClaimHelp`,`1`),t.show_help=!1},t.showIntro=function(){$(`#claim-intro-container`).slideDown(300,function(){$(`.help-btn`).css(`display`,`inl
11ine`)}),i.session.set_persistent_data(`RegClaimHelp`,`0`),t.show_help=!0},t.view=function(e,t){n.path(CONFIG.url.expenseclaim.view(e,t))},t.markPaid=function(e,n){a.markPaid({person_id:e,account_number:n},function(){$.each(t.accepted,function(r,i){if(i&&i.person_id===e&&i.person_account_number===n)return t.accepted.splice(r,1),!1}),t.archive_count+=1,t.notify.instant(i,_(`claim_batch_marked_paid`)),a4.loaded(t)},a4.restErrorFactory(t))},t.selectBarcode=function(){$(`#virtual-barcode`).select()},t.removeItem=function(e,n,r){a.updateStatus({id:e,status:`pending`},function(){o.update_columns(t,`accepted`,e,n,r),t.notify.instant(i,_(`claim_moved_back_to_pending`))},a4.restErrorFactory(t,e))}}}]),angular.module(`expenseclaim`).controller(`ExpenseclaimArchiveCtrl`,[`$scope`,`$location`,`$timeout`,`$rootScope`,`Expenseclaim`,`Helper`,function(e,t,n,r,i,a){e.utils.setPageTitle(_(`breadcrumb_expense_claims`)),e.utils.setPageID(`expenseclaim`),o();function o(){i.query({id:`all`,archive:!0},function(t){e.rejected=t.rejected,e.paid=t.paid,a4.loaded(e)},a4.restErrorFactory(e))}e.removeItem=function(t,n,o){i.updateStatus({id:t,status:`pending`},function(){a.update_columns(e,`rejected`,t,n,o),e.notify.instant(r,_(`claim_moved_back_to_pending`))},a4.restErrorFactory(e,t))}}]),angular.module(`expenseclaim`).controller(`ExpenseclaimViewCtrl`,[`$scope`,`$routeParams`,`$location`,`$timeout`,`Expenseclaim`,`$route`,`$rootScope`,`$modal`,`Settings`,function(t,n,r,i,a,o,s,c,l){t.utils.setPageID(`expenseclaim`),t.show_comments={},l.get({},function(n){t.upgrade_url=e(n)}),u();function u(){a.view({person_id:n.person_id,person_account_number:n.person_account_number},function(e){t.claims=e.rows.map(function(e){return $.each([`date`,`per_diem_end_date`],function(t,n){if(e[n]){var r=new Date(Date.parse(e[n]));e[n+`_date_`]=[r.getFullYear(),1+r.getMonth()>=10?1+r.getMonth():`0${1+r.getMonth()}`,r.getDate()>=10?r.getDate():`0${r.getDate()}`].join(`-`),e[n+`_hh_`]=r.getHours()>=10?r.getHours():`0`+r.getHours(),e[n+`_mm_`]=r.getMinutes()>=10?r.getMinutes():`0`+r.getMinutes()}}),new a(e)}),t.range_hh=Array.apply(null,{length:24}).map(function(e,t){return t>=10?t:`0`+t}),t.range_mm=Array.apply(null,{length:60}).map(function(e,t){return t>=10?t:`0`+t}),t.utils.setPageTitle(_(`claim_expense_claim`)+` (`+e.rows[0].person_name+`)`),t.accepted_this_year=e.accepted_this_year,a4.loaded(t)},a4.restErrorFactory(t))}function d(e){$.each(t.claims,function(n,r){if(r&&r.id===e)return t.claim=t.claims[n],t.$watch(`claim.km_kilometers + claim.km_a_price`,function(){String(t.claim.km_kilometers).match(/^\d+$/)&&String(t.claim.km_a_price).match(/^\d+\.\d+$/)&&(t.claim.amount=(t.claim.km_kilometers*t.claim.km_a_price).toFixed(2))}),!1})}t.updateStatus=function(e,n){if(n===`rejected`&&!t.comment){t.show_error=!0;return}a.updateStatus({id:e,status:n,comment:t.comment},function(){t.comment=``;var i=0;$.each(t.claims,function(t,r){r.id===e&&(r.status=n),r.status===`pending`&&i++});var a=n===`accepted`?_(`HTML_notification_claim_accepted`):_(`HTML_notification_claim_rejected`);i?(t.notify.instant(s,a),n===`rejected`&&t.$modal(`hide`)):(t.notify.set(t,a),r.path(CONFIG.url.expenseclaim.all()))},a4.restErrorFactory(t,e))},t.save=a4.saveFactory(t,function(e){d(e),t.claim.amount=t.claim.amount.replace(`,`,`.`),t.claim.expense_type===`per_diem`?[`date`,`per_diem_end_date`].forEach(function(e){var n=t.claim[e+`_date_`].split(`-`),r=new Date(n[0],n[1]-1,n[2],t.claim[e+`_hh_`],t.claim[e+`_mm_`]);t.claim[e]=r.toISOString()}):t.claim.date=t.claim.date_date_+`T00:00:00`,t.claim.$save({id:t.claim.id},function(){t.claim=null,t.notify.set(t,_(`HTML_notification_claim_edited`)),o.reload()},a4.restErrorFactory(t,null,!0))}),t.addComment=function(e){a.addComment({id:e,comment:t.new_comment},function(n){t.new_comment=``,n.date+=`Z`,$.each(t.claims,function(t,r){if(r.id===e)return r.comments.push(n),!1})},a4.restErrorFactory(t,e))},t.openModal=function(e,n){d(n),c({template:`/r/static/templates/expenseclaim/modal-`+e+`.html`,persist:!0,show:!0,backdrop:`static`,scope:t}).then(function(){i(function(){$(`#`+e+`-`+n).focus()},700)})}}]),angular.module(`expenseclaim`).controller(`ExpenseclaimEditCtrl`,[`$scope`,`$routeParam
11s`,`$location`,`Expenseclaim`,function(e,t,n,r){e.utils.setPageID(`expenseclaim`),i();function i(){r.get({id:t.id},function(t){e.claim=t,e.utils.setPageTitle(_(`claim_expense_claim`)+` (`+t.person_name+`)`),a4.loaded(e)},a4.restErrorFactory(e))}e.cancel=function(){n.path(CONFIG.url.expenseclaim.all())},e.updateStatus=function(t,i){r.updateStatus({id:i,status:t},function(){n.path(CONFIG.url.expenseclaim.all())},a4.restErrorFactory(e,i))}}])})();function a(){return/\/r\/edit_me_h\/([\w-]+)$/.test(window.location.href)?RegExp.$1:null}angular.module(`updreqs`,[`ngResource`,`settings`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.updreqs.get_edit_links(),{controller:`UpdreqGetEditLinksCtrl`,templateUrl:`/r/static/templates/updreqs/get_edit_links.html`}).when(CONFIG.url.updreqs.all(),{controller:`UpdreqCtrl`,templateUrl:`/r/static/templates/updreqs/list.html`}).when(CONFIG.url.updreqs.create(),{controller:`UpdreqAddCtrl`,templateUrl:`/r/static/templates/updreqs/new.html`}).when(CONFIG.url.updreqs.view(),{controller:`UpdreqEditCtrl`,templateUrl:`/r/static/templates/updreqs/single.html`}).when(CONFIG.url.updreqs.edit_me_h(),{controller:`UpdreqEditMeCtrl`,templateUrl:`/r/static/templates/updreqs/edit_me.html`}).when(CONFIG.url.updreqs.edit_me_s(),{controller:`UpdreqEditMeCtrl`,templateUrl:`/r/static/templates/updreqs/edit_me.html`})}]).factory(`Updreq`,[`$resource`,function(e){var t=new URLSearchParams(window.location.search);return e(CONFIG.api(`updreqs`),{},{query:{method:`GET`,isArray:!1},edit_me_s:{method:`POST`,isArray:!1,params:{id:`edit_me_s`,edit_for:t.get(`edit_for`)}},edit_me_h:{method:`POST`,isArray:!1,params:{id:`edit_me_h`}},update_me_s:{method:`POST`,params:{id:`update_me_s`}},update_me_h:{method:`POST`,params:{id:`update_me_h`}},supersearch:{method:`POST`,isArray:!1,params:{id:`supersearch`}},preview:{method:`POST`,params:{id:`preview`}},send_edit_links:{method:`POST`,params:{id:`send_edit_links`}}})}]),angular.module(`updreqs`).controller(`UpdreqCtrl`,[`$scope`,`$location`,`$timeout`,`$rootScope`,`Updreq`,function(e,t,n,r,i){t.path()==CONFIG.url.updreqs.all()&&(e.utils.setPageTitle(_(`updreq_sent_updreqs`)),e.utils.setPageID(`members`)),a(),e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)};function a(){i.query({id:`all`,dashboard:t.path()!==CONFIG.url.updreqs.all()},function(t){e.updreqs=t.updreqs,e.stats=t.stats,r.updreqs_dashboard_ok=!0,e.pageSize=20,e.numberOfPages=Math.ceil(e.updreqs.length/e.pageSize),e.currentPage=0,a4.loaded(e)},a4.restErrorFactory(e))}}]),angular.module(`updreqs`).controller(`UpdreqAddCtrl`,[`$rootScope`,`$scope`,`$location`,`Updreq`,`Settings`,`$compile`,function(e,t,n,r,i,a){a4.checkStrongholdNotification(e,t,n,a),t.utils.setPageTitle(_(`updreq_create_new_updreq`)),t.utils.setPageID(`members`),t._sending=!1,t.previewing=!1,i.get({},function(e){t.settings=e}),t.msg=new r({subject:_(`updreq_default_subject`),content:_(`updreq_default_content`),msg_media:`email`}),a4.loaded(t),t.proceed_to_payment=function(){var e=this;t.msg.filter=t.filter_to_post,t._sending=!0,r.save({},t.msg,function(t){e.updreq_form.$dirty=!1,n.path(CONFIG.url.mooney.method(t.mid)).search(`goto`,CONFIG.get(`urls.updreqs.all`))},a4.restErrorFactory(t))},t.msgModel=function(){return`updreq`},t.preview=a4.msgPreview(t,r),t.cancelPreview=a4.msgPreviewCancel(t),t.$watch(`settings+msg.msg_media`,function(){t.settings&&(t.emailMissing=t.msg.msg_media===`email`&&t.settings.email_missing_,t.vatIdRequired=t.msg.msg_media===`letter`&&t.settings.vat_id_missing_,t.bankAccountRequired=!1)})}]),angular.module(`updreqs`).controller(`UpdreqEditCtrl`,[`$scope`,`$routeParams`,`$timeout`,`Updreq`,function(e,t,n,r){e.viewStatus=``,e.utils.setPageID(`members`),i();
11function i(){r.get({id:t.id},function(t){e.msg=t,e.msg.version=new Date(e.msg.date_sent)>new Date(`2021-06-02`)?2:1,a4.loaded(e)},a4.restErrorFactory(e))}e.setViewStatus=function(t){e.viewStatus=t,e.tableHeight||(e.tableHeight=$(`table.mmp-payment-detail`).height()),$(`table.mmp-payment-detail`).parent().css(`height`,e.tableHeight)},e.filterCombinedStatus=function(t){return e.viewStatus===``||t.updreq_instance.status==e.viewStatus}}]),angular.module(`updreqs`).controller(`UpdreqEditMeCtrl`,[`$scope`,`$location`,`Updreq`,`Settings`,function(e,t,n,r){var i=function(){try{if(a())return n.edit_me_h;if(e.session.user.id)return n.edit_me_s}catch{return null}},o=function(){return a()?n.update_me_h:n.update_me_s},s=function(){return a()?`/r/page/updreq-thanks?src=h`:`/r/page/updreq-thanks?src=s`},c=function(){return a()?`/r/page/updreq-later`:D4GLOBALS.Grants.SiteAdmin?`/`:`/@logout?GOTO=/r/page/updreq-later`};e.isAdmin=!1,e.utils.setPageID(`members`),e._sending=!1,e.passwordFieldsVisible=!1,e.passwordStrength=null,e.showPasswordFields=function(){e.passwordFieldsVisible=!0},e.$watch(`member`,function(){e.member&&(e.member.active=!(e.member.active==`false`||!e.member.active),e.passwordStrength=e.passwordFieldsVisible&&(e.member.newPassword_||e.member.confirmNewPassword_)?a4.getPasswordStrength(e.member.newPassword_):null)},!0),e.$watch(`session`,function(){i()&&i()({hash:a()},function(t){e.member=t.member,e.fields=t.fields,e.readonlyFields=$.grep(t.fields,function(e){return e.type!==`heading`&&e.visibility===`1`}).length,e.utils.setPageTitle(e.fullname()),a()&&delete e.member.meta_.children,a4.loaded(e)},function(e){try{e.data.error.general&&(alert(_(e.data.error.general[0])),location.href=`/r/updreqs/get_edit_links`)}catch(e){console.warn(e),location.href=`/r/page/generic-error`}})}),e.fullname=function(){if(e.member)return[e.member.firstname||``,e.member.lastname||``].join(` `)},e.editFor=function(e){location.href=CONFIG.url.updreqs.edit_me_s()+`?`+jQuery.param({edit_for:e})},e.save=function(){e._sending=!0,a4.trimMemberFields(e);var t=this;if(e.settings.porg_enabled){if(!e.member.email&&!e.member.email_porg1&&!e.member.email_porg2)return alert(_(`members_fill_at_least_one_email`)),e._sending=!1,!1}else if(!e.member.email)return alert(_(`members_cannot_delete_own_email`)),e._sending=!1,!1;if(e.passwordStrength){if(e.passwordStrength.strength>0){if(e.member.newPassword_===e.member.confirmNewPassword_)e.member.password=e.member.newPassword_;else return alert(_(`passwords_dont_match`)),e._sending=!1,!1}else return alert(_(`insufficient_password_strength`)),e._sending=!1,!1}var n=a()?{member:e.member,hash:a()}:{member:e.member};o()(n,function(){t.updreq_editme_form.$dirty=!1,location.href=s()},a4.restErrorFactory(e))},e.cancel=function(){location.href=c()}}]),angular.module(`updreqs`).controller(`UpdreqGetEditLinksCtrl`,[`$scope`,`$location`,`Updreq`,`Settings`,function(e,t,n,r){e.utils.setPageID(`members`),e.data={},e.data.email=t.search().email,e._sending=!1,e.sent=!1,r.get({},function(t){e.porg_enabled=t.porg_enabled,a4.loaded(e)}),e.send_edit_links=function(){if(!e.data.email)return alert(_(`members_fill_email`)),!1;e._sending=!0,n.send_edit_links({email:e.data.email},function(t,n,r){e.sent=!0,e._sending=!1},a4.restErrorFactory(e))}}]),angular.module(`membercard`,[`ngResource`,`settings`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.membercard.all(),{controller:`MembercardCtrl`,templateUrl:`/r/static/templates/membercard/list.html`}).when(CONFIG.url.membercard.create(),{controller:`MembercardAddCtrl`,templateUrl:`/r/static/templates/membercard/new.html`}).when(CONFIG.url.membercard.view(),{controller:`MembercardEditCtrl`,templateUrl:`/r/static/templates/membercard/single.html`})}]).factory(`Membercard`,[`$resource`,function(e){return e(CONFIG.api(`membercard`),{},{query:{method:`GET`,isArray:!1},preview:{method:`POST`,params:{id:`preview`}}})}]),angular.module(`membercard`).controller(`MembercardCtrl`,[`$scope`,`$location`,`$compile`,`$rootScope`,`Membercard`,function(e,t,n,r,i){t.path()==CONFIG.url.membercard.all()&&(e.utils.setPageTitle(_(`membercard_sent_membercards`)),e.utils.setPageID(`membercards`)),a(),e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)},t.hash().match(/receipt-notify\?n=(\d+)/)&&(r.notification=n(`<span>`+_(`HTML_notification_mooney_membercard_sent_paid`,{_n:RegExp.$1,url:CONFIG.url.log.receipts()})+`</span>`)(e)),a4.loaded(e);function a(){t.path()===CONFIG.url.membercard.all()?i.query({id:`all`,dashboard:`fal
11se`},function(t){e.membercards=t.membercards,e.stats=t.stats,e.pageSize=20,e.numberOfPages=Math.ceil(e.membercards.length/e.pageSize),e.currentPage=0,a4.loaded(e)},a4.restErrorFactory(e)):i.query({id:`all`,dashboard:`true`},function(t){e.members_with_membercard=t.members_with_membercard,e.members_total=t.members_total,a4.loaded(e)},a4.restErrorFactory(e))}}]),angular.module(`membercard`).controller(`MembercardAddCtrl`,[`$scope`,`$location`,`Membercard`,`Settings`,function(e,t,n,r){e.utils.setPageTitle(_(`membercards_new_membercard_short`)),e.utils.setPageID(`membercards`),e._sending=!1,e.previewing=!1,r.get({},function(t){e.settings=t}),e.msg=new n({subject:``,content:``,msg_media:`sms`}),window.scrollTo(0,0),a4.loaded(e);var i=e.$watch(`conditions+msg`,function(){e.conditions.length>0&&e.msg&&(i(),e.conditions.push({id:`default-mcstatus`,field:`membercardstatus`,field_option:[e.msg.id],value:`not_sent`,verb:`a4membercardstatus`,locked:!1,removeLocked:!1,fieldLocked:!1}))},!0);e.proceed_to_payment=function(){var r=this;e.msg.filter=e.filter_to_post,e._sending=!0,n.save({},e.msg,function(e){r.membercard_form.$dirty=!1,t.path(CONFIG.url.mooney.method(e.mid)).search(`goto`,CONFIG.get(`urls.membercard.all`))},a4.restErrorFactory(e))},e.msgModel=function(){return`membercard`},e.preview=a4.msgPreview(e,n),e.cancelPreview=a4.msgPreviewCancel(e)}]),angular.module(`membercard`).controller(`MembercardEditCtrl`,[`$scope`,`$routeParams`,`Membercard`,function(e,t,n){e.viewStatus=``,e.utils.setPageID(`membercards`),r();function r(){n.get({id:t.id},function(t){e.msg=t,a4.loaded(e)},a4.restErrorFactory(e))}}]),angular.module(`supersearch`,[`ngResource`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.supersearch.list(),{controller:`SearchCtrl`,templateUrl:`/r/static/templates/supersearch/list.html`})}]),angular.module(`supersearch`).controller(`SearchCtrl`,[`$scope`,`$location`,`$rootScope`,`$timeout`,`$routeParams`,`Member`,`Invoice`,`Announcement`,`Updreq`,function(e,t,n,r,i,a,o,s,c){var l,u,d=0;e.members_count=e.announcements_count=e.invoices_count=e.updreqs_count=0,i.term?(l=!1,e.utils.setPageID(`default`)):l=!0,i.type&&(e.viewStatus=i.type),l||(a4.loaded(e),p(i.term)),e.show_box=!1,e.$watch(`box_term`,function(){if(e.box_term&&e.box_term.length>2){var t=e.box_term;r.cancel(u),u=r(function(){p(t)},500)}else e.show_box=!1},!0),e.total_count=0;function f(t){e.total_count+=t}e.$watch(`total_count`,function(){e.show_box=e.total_count>0}),$(`html`).on(`click`,function(t){e.$apply(function(){e.show_box=!1})}),$(`html`).on(`click`,`#supersearch-box,#supersearch .input-group`,function(e){e.stopPropagation()}),e.finishedSearching=function(){return d===0},e.setViewStatus=function(t){e.viewStatus=t},e.seeMore=function(n){e.show_box=!1,t.path(CONFIG.url.supersearch.list(n,e.box_term))},e.seeDetail=function(n){e.show_box=!1,t.path(n)},e.showBox=function(){e.box_term&&e.box_term.length>2&&(e.show_box=!0)},e.focusBox=function(){e.show_box=!0,$(`#supersearch input`)[0].focus()},e.highlightTerm=function(t){e.term_re=new RegExp(e.box_term,`gi`);var n=e.term_re.exec(t);return n&&n[0]?t.replace(e.term_re,`<b>`+n[0]+`</b>`):t};function p(t){d=5;var n={announcements:s,invoices:o,updreqs:c};a.quicksearch({term:t},function(n){e.members={},$.each(n.results,function(t,n){e.members[n.id]=n}),e.members_count=n.results.length,e.members_total=e.members_count,d--,a.supersearch({term:t,show_all:!l},function(t){if(d--,l)for(e.members_total=t.results.length;e.members_count<3&&t.results.length>0;){var n=t.results.pop();e.members[n.id]||(e.members[n.id]=n,e.members_count++)}else $.each(t.results,function(t,n){e.members[n.id]||(e.members[n.id]=n,e.members_count++)});f(e.members_count)},a4.restErrorFactory(e))},a4.restErrorFactory(e)),$.each(n,function(n,r){r.supersearch({term:t,show_all:!l},function(t){e[n]=t.results,e[n+`_count`]=t.results.length,f(e[n+`_count`]),d--},a4.restErrorFactory(e))})}}]),angular.module(`mooney`,[`ngResource`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.mooney.failure(),{controller:`MooneyFailCtrl`,template:` `}).when(CONFIG.url.mooney.method(),{controller:`MooneyMethodCtrl`,templateUrl:`/r/static/templates/mooney/method.html`}).when(CONFIG.url.mooney.charge(),{controller:`MooneyChargeCtrl`,templateUrl:`/r/static/templates/mooney/charge.html`})}]).factory(`Mooney`,[`$resource`,function(e){return e(CONFIG.api(`mooney`),{},{set_method:{method:`POST`,params:{id:`set_method`}},balance_pay:{method:`POST`,params:{id:`balance_pay`}}})}]);function o(e){let t=((e.mooney.price_rows||[])[0]||{}).type,n=e.mooney.context.toLowerCase()===`invoice`&&t!==`pdf`?`<br>`+_(`HTML_notification_invoice_addrecips_note`):``;e.notify.set(e,_(`HTML_notification_mooney_`+e.mooney.context.toLowerCase()+`_`+(t==`pdf`?`created`:`sent`)+`_free_or_balance`,{_n:((e.mooney.price_rows||[])[0]||{}).count,url:CONFIG.url.log.receipts()})+n)}angular.module(`mooney`).controller(`MooneyChargeCtrl`,[`$scope`,`$routeParam
11s`,`$location`,`Mooney`,function(e,t,n,r){e.utils.setPageTitle(_(`mooney_title`)),e.utils.setPageID(`default`);var i=n.search().goto;r.get({id:t.id,goto:i},function(t){e.mooney=t,e.mooney.paid||parseFloat(e.mooney.amount)===0?(o(e),n.path(window.a4base+e.mooney.goto)):(e.mooney.pmt_method,a4.loaded(e))},a4.restErrorFactory(e)),e.backToMethod=function(){e.mooney.context==`Balance`?n.path(CONFIG.url.balance.buy()):n.path(CONFIG.url.mooney.method(t.id))}}]),angular.module(`mooney`).controller(`MooneyMethodCtrl`,[`$scope`,`$routeParams`,`$location`,`Mooney`,function(e,t,n,r){e.utils.setPageTitle(_(`mooney_title`)),e.utils.setPageID(`default`);var i=n.search().goto;e.must_pick_method=!1,e.method=void 0,r.get({id:t.id,goto:i},function(t){if(e.mooney=t,e.mooney.paid||parseFloat(e.mooney.original_amount)===0)o(e),n.path(window.a4base+e.mooney.goto);else{e.must_pick_method=!0,a4.loaded(e);var r=setInterval(function(){let e=$(`.panel`);e.eq(0).height()===e.eq(1).height()&&clearInterval(r),e.height(Math.max(e.eq(0).height(),e.eq(1).height()))},5)}},a4.restErrorFactory(e)),e.set_method=function(i){e.method=i,e._sending=!0,r.set_method({mid:t.id,method:i},function(a){i===`balance`?r.balance_pay({balance_mid:parseInt(t.id)},function(t){o(e),n.path(window.a4base+e.mooney.goto)},a4.restErrorFactory(e)):n.path(CONFIG.url.mooney.charge(t.id))},a4.restErrorFactory(e))},e.is_under_minimum=function(){return!e.settings||!e.mooney||parseFloat(e.mooney.original_amount)<parseFloat(e.settings.prices_.pt_minimum)},e.has_balance=function(){return!e.settings||!e.mooney?!1:parseFloat(e.settings.balance_)>=parseFloat(e.mooney.original_amount)}}]),angular.module(`mooney`).controller(`MooneyFailCtrl`,[`$scope`,`$routeParams`,`$location`,`Mooney`,function(e,t,n,r){e.utils.setPageTitle(_(`mooney_title`)),e.utils.setPageID(`invoices`),e.notify.set(e,_(`HTML_notification_mooney_failure`)),n.path(CONFIG.url.mooney.charge(n.search()[`checkout-reference`].split(`-`)[2]))}]),angular.module(`importer`,[`ngResource`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.importer.all(),{controller:`ImporterCtrl`,templateUrl:`/r/static/templates/importer/all.html`}).when(CONFIG.url.importer.importer(),{controller:`ImporterDoimportCtrl`,templateUrl:`/r/static/templates/importer/import.html`})}]).factory(`Importer`,[`$resource`,function(e){return e(CONFIG.api(`importer`),{},{query:{method:`POST`,isArray:!1,params:{id:`all`}},importer:{method:`POST`,isArray:!1,params:{id:`importer`}},get_sheet_metadata:{method:`POST`,isArray:!1,params:{id:`get_sheet_metadata`}},mark_undone:{method:`POST`,isArray:!1,params:{id:`mark_undone`}}})}]),angular.module(`importer`).controller(`ImporterCtrl`,[`$scope`,`Importer`,`Member`,`$rootScope`,`$modal`,`$route`,function(e,t,n,r,i,a){e.utils.setPageTitle(_(`breadcrumb_members`)),e.utils.setPageID(`members`),e.paginate=function(t){e.currentPage=e.utils.paginationHandler(t,e.numberOfPages)},e.undo_modal=function(t,n){e.undo_id=t,e.undo_log_batch_id=n,i({template:`/r/static/templates/partials/modal.html`,persist:!0,show:!0,backdrop:`static`,scope:e})},e.import_undo=function(){$.each(e.imports,function(t,n){n.id==e.undo_id&&(n.undoing=!0)}),n.bulkremove({filter:[{field:`id`,value:e.undo_log_batch_id,verb:`a4fromlogbatch`}]},function(n){t.mark_undone({id:e.undo_id},function(t){e.notify.set(e,_(`HTML_import_import_undone`)),a.reload()},a4.restErrorFactory(e))},a4.restErrorFactory(e))},t.query({id:`all`},function(t){e.imports=t.imports,e.pageSize=10,e.numberOfPages=Math.ceil(e.imports.length/e.pageSize),e.currentPage=0,e.modal={header:_(`import_undo_modal_header`),content:_(`import_undo_modal_content`),confirmation_btn:_(`import_undo_import`),callback:e.import_undo},a4.loaded(e)},a4.restErrorFactory(e))}]),angular.module(`importer`).controller(`ImporterDoimportCtrl`,[`$scope`,`$rootScope`,`$location`,`$routeParams`,`Importer`,`Field`,`Group`,function(e,t,n,r,i,a,o){e.utils.setPageTitle(_(`breadcrumb_members`)),e.utils.setPageID(`members`),t.importInProgress=!0,e.imports=i.query({id:`all`,count_only:!0},function(){}),e.fieldHash={},e.fields=a.query({id:`all`},function(){a4.loaded(e);for(var t=0;t<e.fields.length;t++)e.fieldHash[e.fields[t].name]=e.fields[t].label;var r;angular.forEach(e.fields,function(e,t){e.type==`heading`&&(r=e.label),r&&!e.group?e.group=r:e.group||(e.group=_(`field_group_basic`))}),n.search().debug_step3&&(e.step=3,e.upload_success({id:parseInt(n.search().debug_step3,10)}))},a4.restErrorFactory(e)),e.groups=o.query({id:`all`},function(){angular.forEach(e.groups,function(t,n){e.fieldHash[t.name]=t.label,t.group=_(`field_group_groups`)})},a4.restErrorFactory(e)),e.$watch(`groups+fields`,function(){e.groups&&e.fields&&(e.fields_and_groups=e.fields.concat(e.groups))}),e.step=1,e.filterHeadings=function(e){return e.type!==`heading`},e.upload_failure=function(t,n){e.errors=t.error.general,e._sending=!1},e.upload_success=function(t,n){e.importer_id=t.id,$(`#file_upload_form`)[0].reset(),e.fields[0].name!==`_ignore`&&e.fields.unshift({name:`_ignore`,label:_(`import_field_ignore`)}),i.get_sheet_metadata({id:e.importer_id},function(t){e._sending=!1,e.src_cols=t.src_cols,e.data_rows=t.data_rows,e.filename=t.filename,e.step=3,e.srcDataChanged()&&(e.mapping=[],$.each(e.src_cols,function(t,n){e.mapping.push({src_col:n.index,dst_field:n.dst_field})}))},a4.restErrorFactory(e))},e.srcDataChanged=function(){var t,n=$.map(e.src_cols,function(e){return e.title}).join(``);return t=!(!e.srcDataCheck&&e.mapping||e.srcDataCheck===n),e.srcDataCheck=n,t},e.isMappingIncomplete=function(){if(!e.mapping)return!0;for(var t=0;t<e.mapping.length;t++)if(e.mapping[t].duplicate||!e.mapping[t].dst_field)return!0;return!1},e.mappingChanged=function(){for(var t=0;t<e.mapping.length;t++){e.mapping[t].duplicate=!1;for(var n=0;n<e.mapping.length;n++)e.mapping[t].dst_field===e.mapping[n].dst_field&&t!==n&&e.mapping[t].dst_field&&e.mapping[t].dst_field!==`_ignore`&&(e.mapping[t].duplicate=!0)}},e.do_import=function(){e._sending=!0;for(var t=[],r=0;r<e.mapping.length;r++)e.mapping[r].dst_field!==`_ignore`&&t.push(e.mapping[r]);i.importer({id:e.importer_id,mapping:t},function(t){e._sending=!1,e.step=4,t.errors?(e.errors=t.errors,e.showPhoneHint=t.errors.some(function(e){return e.errors&&e.errors.phone})):(e.notify.set(e,_(`HTML_import_import_done`,{_n:t.count,url:CONFIG.url.importer.all()})),n.path(CONFIG.url.members.all()))},a4.restErrorFactory(e))},e.step_back=function(t){e.step-=t||1,e.errors=null}
11,e.$on(`$includeContentLoaded`,function(){$(`input[id="thefile"]`).length>0&&($(`input[id="thefile"]`).get(0).onchange=function(){e._sending=!0,$(`#file_upload_form`).submit()})})}]),angular.module(`groups`,[`ngResource`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.groups.all(),{controller:`GroupCtrl`,templateUrl:`/r/static/templates/groups/all.html`}).when(CONFIG.url.groups.add(),{controller:`GroupEditCtrl`,templateUrl:`/r/static/templates/groups/edit.html`}).when(CONFIG.url.groups.edit(),{controller:`GroupEditCtrl`,templateUrl:`/r/static/templates/groups/edit.html`})}]).factory(`Group`,[`$resource`,function(e){return e(CONFIG.api(`groups`),{},{reorder:{method:`POST`,isArray:!1,params:{id:`reorder`}},request_group_mail_access:{method:`POST`,isArray:!1,params:{id:`request_group_mail_access`}}})}]),angular.module(`groups`).controller(`GroupCtrl`,[`$scope`,`$rootScope`,`Group`,`$location`,`$compile`,function(e,t,n,r,i){a4.checkStrongholdNotification(t,e,r,i),e.utils.setPageTitle(_(`breadcrumb_member_groups`)),e.utils.setPageID(`members`),e.sending_request=!1,e.groups=n.query({id:`all`,get_details:!0,get_everyone_group:!0},function(){a4.loaded(e)},a4.restErrorFactory(e)),$(`body`).css(`overflow-y`,`inherit`),e.request_group_mail_access=function(){if(D4GLOBALS.Grants.OptinetAdmin){alert(`Pyyntöä ei voi lähettää admin-kirjautuneena.`);return}e.sending_request=!0,n.request_group_mail_access({email:t.session.user.email},function(){alert(_(`groups_request_sent_success`)),e.sending_request=!1,$(`.modal`).modal(`hide`)},function(t){a4.restErrorFactory(e)(t),alert(_(`groups_request_sent_error`)),e.sending_request=!1,$(`.modal`).modal(`hide`)})};var a=function(){return $.map($.grep(e.groups,function(e){return e.id}),function(e){return e.id})},o;e.sortableOptions={cursor:`move`,containment:`.page-content`,items:`.custom`,handle:`.handle`,helper:function(e,t){var n=t.children(),r=t.clone();return r.children().each(function(e){$(this).width(n.eq(e).width()+16)}),r.addClass(`sort-row`),r},start:function(e,t){o=JSON.stringify(a())},stop:function(r,i){var s=a();JSON.stringify(s)!==o&&n.reorder({order:s},function(n){e.notify.instant(t,_(`HTML_notification_group_order_saved`))},a4.restErrorFactory(e))}}}]),angular.module(`groups`).controller(`GroupEditCtrl`,[`$scope`,`$location`,`$routeParams`,`Group`,function(e,t,n,r){e.utils.setPageID(`members`),n.id?(e.utils.setPageTitle(_(`group_edit_group`)),r.get({id:n.id},function(t){e.group=t,a4.loaded(e)},a4.restErrorFactory(e))):(e.utils.setPageTitle(_(`group_add_new_group`)),e.group=new r,e.group.allowed_senders=`GroupMembers`,a4.loaded(e)),e.save=a4.saveFactory(e,function(){e.group.$save({id:e.group.id},function(){n.id?e.notify.set(e,_(`HTML_notification_group_edited`)):e.notify.set(e,_(`HTML_notification_group_added`)),t.path(CONFIG.url.groups.all())},a4.restErrorFactory(e))}),e.cancel=function(){t.path(CONFIG.url.groups.all())},e.delete=function(){confirm(_(`js_group_delete_confirm`))&&e.group.$delete({id:e.group.id},function(){e.notify.set(e,_(`HTML_notification_group_deleted`)),t.path(CONFIG.url.groups.all())},a4.restErrorFactory(e))}}]),angular.module(`balance`,[`ngResource`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.balance.buy(),{controller:`BalanceBuyCtrl`,templateUrl:`/r/static/templates/balance/buy.html`}).when(CONFIG.url.balance.thanks(),{controller:`BalanceThanksCtrl`,templateUrl:`/r/static/templates/balance/thanks.html`})}]).factory(`Balance`,[`$resource`,function(e){return e(CONFIG.api(`balance`),{},{buy:{method:`POST`,isArray:!1,params:{id:`buy`}},send_email:{method:`POST`,isArray:!1,params:{id:`send_email`}}})}]),angular.module(`balance`).controller(`BalanceBuyCtrl`,[`$scope`,`$rootScope`,`$location`,`Balance`,`Settings`,function(e,t,n,r,i){e.utils.setPageTitle(_(`balance_get_title`)),e.utils.setPageID(`default`),a4.loaded(e),i.get({},function(t){e.settings=t,e.selected_amount=50}),e.buy=function(){r.buy({},{amount:parseInt(e.selected_amount)},function(e){n.path(CONFIG.url.mooney.charge(e.mid)).search(`goto`,CONFIG.get(`urls.balance.thanks`))},a4.restErrorFactory(e))},e.$watch(`selected_amount`,function(){e.selected_amount>
110&&(e.item_counts={invoice:{email:Math.floor(e.selected_amount/e.settings.prices_.invoice.email),letter:Math.floor(e.selected_amount/e.settings.prices_.invoice.letter),sms:Math.floor(e.selected_amount/e.settings.prices_.invoice.sms)},announcement:{email:Math.floor(e.selected_amount/e.settings.prices_.announcement.email)||`Free`,letter:Math.floor(e.selected_amount/e.settings.prices_.announcement.letter),sms:Math.floor(e.selected_amount/e.settings.prices_.announcement.sms)},updreq:{email:Math.floor(e.selected_amount/e.settings.prices_.updreq.email),letter:Math.floor(e.selected_amount/e.settings.prices_.updreq.letter),sms:Math.floor(e.selected_amount/e.settings.prices_.updreq.sms)},membercard:{sms:Math.floor(e.selected_amount/e.settings.prices_.membercard.sms)}})})}]),angular.module(`balance`).controller(`BalanceThanksCtrl`,[`$scope`,`$rootScope`,function(e,t){e.utils.setPageID(`default`),a4.loaded(e)}]),angular.module(`messages`,[`ngResource`,`ngRoute`]).config([`$routeProvider`,function(e){e.when(CONFIG.url.messages.show(),{controller:`ShowMessageCtrl`,templateUrl:`/r/static/templates/messages/show.html`})}]).factory(`Message`,[`$resource`,function(e){return e(CONFIG.api(`messages`),{},{query:{method:`POST`,isArray:!1,params:{id:`all`}}})}]),angular.module(`messages`).controller(`ShowMessageCtrl`,[`$scope`,`Message`,`$routeParams`,function(e,t,n){e.utils.setPageID(`msg`),t.get({id:n.id},function(t){e.msg=t,e.msg_preview=t,e.utils.setPageTitle(t.dst_person_name+` - `+_(`common_media_`+t.msg_media)),a4.loaded(e)},a4.restErrorFactory(e))}]),(function(){angular.module(`docs`,[`ngResource`,`settings`]).factory(`Docs`,[`$resource`,function(e){return e(CONFIG.api(`docs`),{},{query:{method:`GET`,isArray:!1}})}]),angular.module(`docs`).controller(`DocsCtrl`,[`$scope`,`Docs`,`$timeout`,function(e,t,n){e.approved_percents=[],r();function r(){t.query({id:`all`},function(t){e.docs=t.docs,a4.loaded(e),a4.timeout(n,e,function(){$.each(e.docs,function(t,n){n.recipient_count>0&&(e.approved_percents[n.id]=Math.round(n.accepted_count/n.recipient_count*100))})},200)},a4.restErrorFactory(e))}}])})()})();
12//# sourceMappingURL=app.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.