Notice: Undefined index: HTTP_ACCEPT_LANGUAGE in /var/www/simplisite/html/live/www.orki/site.config.php on line 81
Vue.component('configuratorpaymentwindow', { props: { show: { type: Boolean, default: false }, modalUrl: { type: String, required: true } }, template: `
Bezahlen
`, watch: { show(newValue) { if (newValue) { this.openModal(); } } }, mounted() { this.initializeModal(); }, methods: { initializeModal() { var self = this; const modalWindow = this.$refs.modalWindow; $(modalWindow).zahlsModal({ hidden: (transaction) => { self.$parent.step = 3; self.$parent.transaction = transaction; } }); }, openModal() { const modalWindow = this.$refs.modalWindow; modalWindow.click(); } } }); Vue.component('configuratorpayment', { props: ['src'], template: `
x
`, data() { return { transaction: null, lastPostMessageHeight: 0, scrollTimeout: null, }; }, mounted() { this.initializeIframe(); window.addEventListener('message', this.postMessageHandler, false); window.addEventListener('resize', this.updateIframeHeight); window.addEventListener('scroll', this.scrollHandler); }, beforeDestroy() { window.removeEventListener('message', this.postMessageHandler); window.removeEventListener('resize', this.updateIframeHeight); window.removeEventListener('scroll', this.scrollHandler); }, methods: { closeframe: function(){ this.$parent.step = 1; }, initializeIframe() { const iframe = this.$refs.iframe; iframe.onload = () => { iframe.contentWindow.postMessage( JSON.stringify({ origin: window.location.origin }), iframe.getAttribute('src') ); this.updateIframeHeight(); }; }, updateIframeHeight() { const iframe = this.$refs.iframe; const height = this.lastPostMessageHeight; iframe.style.height = '90svh'; /*if (window.innerWidth <= 590) { iframe.style.height = '90svh'; } else if (height) { iframe.style.height = height + 'px'; }*/ }, scrollHandler() { clearTimeout(this.scrollTimeout); this.scrollTimeout = setTimeout(() => { const iframe = this.$refs.iframe; iframe.contentWindow.postMessage( JSON.stringify({ scrollTopShoppingCart: window.scrollY - iframe.getBoundingClientRect().top, }), iframe.getAttribute('src') ); }, 100); }, scrollPage(offset) { const iframe = this.$refs.iframe; const positionToScrollTo = iframe.getBoundingClientRect().top + window.scrollY + offset; window.scrollTo({ top: positionToScrollTo, behavior: 'smooth' }); }, postMessageHandler(e) { var self = this; if (typeof e.data === 'string') { try { var data = JSON.parse(e.data); } catch (error) { return; } if (data && data.zahls) { Object.entries(data.zahls).forEach(([name, value]) => { switch (name) { case 'height': this.lastPostMessageHeight = parseInt(value, 10); this.updateIframeHeight(); break; case 'top': this.scrollPage(parseInt(value, 10)); break; case 'transaction': if (typeof value === 'object') { this.transaction = value; } break; case 'closeModal': window.location.href = value; break; } }); } } } } }); Vue.component('configuratorinput', { props: ['type','label','value','prefine','afterfine'], template: ``, computed: { val: { get: function(){ return this.value; }, set: function(v){ this.$emit('input',v); } } } }); Vue.component('configurator', { props: { onorki: { default: false }, orkival: { default: null }, currency: { type: String, default: 'CHF' }, quotevalidity: { type: Number, default: 30 }, offerercompany: { type: String, default: '' }, offerercontact: { type: String, default: '' }, contactemail: { type: String, default: '' }, sendofferurl: { type: String, default: 'send-offer.php' }, showorder: { type: Boolean, default: false }, offereraddress: { type: String, default: '' }, offererpostal: { type: String, default: '' }, offererphone: { type: String, default: '' }, offereremail: { type: String, default: '' }, offererwebsite: { type: String, default: '' }, offererrepname: { type: String, default: '' }, offererreppos: { type: String, default: 'Gesch\u00e4ftsleitung' }, offererslogan: { type: String, default: 'Das Kirchenverwaltungstool. Modern. Einfach. Effizient.' }, logourl: { type: String, default: '' }, }, template: `

Ihre Offerte
{{offerercompany}} {{offerercontact}}
Datum: {{offerDate}} Gültig bis: {{offerValidUntil}}
Abonnement (monatlich)
{{modules.orki.pricing[selectedpackage]}} {{currency}}
Modul-Rabatt {{getdiff}} {{currency}}
Total / Monat {{getpricing}} {{currency}}
Total / Jahr {{getpricing * 12}} {{currency}}
Einmalige Kosten
Total einmalig {{getpricingservices}} {{currency}}

Hinweis: Allfällige Anfahrtswege für Schulungen/Besprechungstermine/Präsentationen werden separat mit -.60 Rp. / Kilometer für jeweils Hin- und Rückweg verrechnet.
Eine Kalkulation davon kann auf Anfrage bei support@orki.ch verlangt werden.

Offerten-Link per Mail erhalten
✓ Offerten-Link wurde erfolgreich per Mail versendet!
{{offerError}}
Ihr Offerten-Link:
{{offerLink}} {{linkCopied ? 'Kopiert \u2713' : 'Kopieren'}}
{{offerSending ? 'Link wird erstellt...' : (offerSent ? 'Link versendet \u2713' : 'Offerte zusammenstellen und per Mail erhalten')}}
Diese Offerte ist {{quotevalidity}} Tage ab Ausstellungsdatum gültig.
`, methods: { getmoduletitle(m){ if(m.amount){ return '+'+m.title+' ('+m.amount+'x)'; } return '+'+m.title+''; }, getservicetitle(s){ if(s.yearlytitle){ return '+'+s.yearlytitle+''; } return '+'+s.title+''; }, getamount: function(a){ return (a <= 0 || a == '' || a == null) ? 1 : a; }, handleIntersection(entries) { var self = this; entries.forEach(entry => { if (entry.isIntersecting) { self.mobileviewed = true; } else{ self.mobileviewed = false; } }); }, mobileclick: function(){ window.location.hash = '#angebots'; var targetDiv = $('#angebots'); var targetPosition = targetDiv.offset(); targetPosition = targetPosition.top; targetPosition = targetPosition - 100; if(this.onorki){ $( "#scrollabocheck").scrollTop($( "#scrollabocheck .vCompContent > .selector").innerHeight()); } else{ $( "html" ).scrollTop( Math.round(targetPosition) ); } }, onResize: function() { this.window = window.innerWidth; }, packageselected: function(p){ return this.selectedpackage == p; }, selectpackage: function(p){ if(this.packages[p].available){ this.selectedpackage = p; } }, moduldisabled: function(m){ if(this.packages[this.selectedpackage].included.includes(m)){ return true; } else{ return false; } }, modulselected: function(m){ return (this.additionalmodules.includes(m) || this.moduldisabled(m)); }, selectmodule: function(m,mo,t){ if(!this.moduldisabled(m) && mo.available && mo.deselectable){ if(this.additionalmodules.includes(m)){ if(t == 'auto'){ var index = this.additionalmodules.indexOf(m); if (index !== -1) { this.additionalmodules.splice(index, 1); } } } else{ this.additionalmodules.push(m); if(mo.mustselect && mo.mustselect.length > 0){ for(key in mo.mustselect){ var itm = mo.mustselect[key]; this.selectmodule(itm,this.modules[itm],'select'); } } } } }, getmoduleprice: function(p,m){ var amunt = (m.amount) ? m.amount : 1; return p[this.selectedpackage] * amunt; }, getmustselect: function(m){ var a = []; for(key in m.mustselect){ a.push(this.modules[m.mustselect[key]].title); } return a.join(', '); }, serviceselected: function(m){ return this.additionalservices.includes(m); }, selectservice: function(m,mo,t){ if(mo.available && mo.deselectable){ if(this.additionalservices.includes(m)){ if(t == 'auto'){ var index = this.additionalservices.indexOf(m); if (index !== -1) { this.additionalservices.splice(index, 1); } } } else{ this.additionalservices.push(m); if(mo.mustselect && mo.mustselect.length > 0){ for(key in mo.mustselect){ var itm = mo.mustselect[key]; this.selectservice(itm,this.services[itm],'select'); } } } } }, generateQuoteHTML: function() { var self = this; var cur = this.currency; var today = this.offerDate; var validUntil = this.offerValidUntil; var hasOneTime = this.additionalservices.some(function(k) { return self.services[k] && self.services[k].pricing > 0; }); var totalPages = 4 + (hasOneTime ? 1 : 0); var f = function(n) { return Number(n).toFixed(2); }; var stripTags = function(s) { return String(s).replace(/<[^>]*>/g, '').replace(/ä/g,'\u00e4').replace(/ö/g,'\u00f6').replace(/ü/g,'\u00fc').replace(/Ä/g,'\u00c4').replace(/Ö/g,'\u00d6').replace(/Ü/g,'\u00dc').replace(/ß/g,'\u00df').replace(/&/g,'&').replace(/ /g,' '); }; var offName = self.offerercompany || 'Orki'; var offAddr = self.offereraddress || ''; var offPostal = self.offererpostal || ''; var offPhone = self.offererphone || ''; var offEmail = self.offereremail || ''; var offWeb = self.offererwebsite || ''; var offRepName = self.offererrepname || ''; var offRepPos = self.offererreppos || 'Gesch\u00e4ftsleitung'; var slogan = self.offererslogan || 'Das Kirchenverwaltungstool. Modern. Einfach. Effizient.'; var recipient = self.offerOrgName || ''; var thS = 'padding:7px 8px;text-align:left;font-weight:bold;font-size:9pt;color:white;background:#1a3a6b;'; var thSR = 'padding:7px 8px;text-align:right;font-weight:bold;font-size:9pt;color:white;background:#1a3a6b;'; var tdS = 'padding:7px 8px;vertical-align:top;'; var tdSR = 'padding:7px 8px;text-align:right;vertical-align:top;white-space:nowrap;'; var bar = '
'; var logoImg = self.logourl ? '' + offName + '' : '
orki
'; var logoLg = self.logourl ? '' + offName + '' : '
orki
'; var logoBox = '
' + logoImg + '
' + slogan.replace(/\. /g, '.
').replace(/\.$/, '') + '.
'; var offBlock = offName + (offAddr ? '
' + offAddr : '') + (offPostal ? '
' + offPostal : ''); /* ── PAGE 1: Cover ── */ var page1 = '
' + bar + '
' + '

' + (recipient ? 'Vielen Dank f\u00fcr Ihre Anfrage, ' + recipient : 'Vielen Dank f\u00fcr Ihre Anfrage') + '

' + '
' + logoLg + '
' + slogan.replace(/\. /g,'.
').replace(/\.$/, '') + '.
' + '
' + '
' + '
Ihre Offerte
' + '
g\u00fcltig bis ' + validUntil + '
' + '
' + '
' + '
S. 1 / ' + totalPages + '
' + '
'; /* ── PAGE 2: Letter ── */ var page2 = '
' + bar + '
' + logoBox + '
' + '

Sehr geehrte Damen und Herren,

' + '

wir freuen uns \u00fcber Ihr Interesse an Orki, unserer innovativen Plattform f\u00fcr Kirchenverwaltung. Mit Orki entscheiden Sie sich nicht nur f\u00fcr eine Softwarel\u00f6sung, sondern f\u00fcr einen Partner, der Sie auf Ihrem Weg begleitet und unterst\u00fctzt.

' + '

Bei Orki verstehen wir, dass jede Kirchengemeinde einzigartig ist und individuelle Bed\u00fcrfnisse hat. Deshalb sehen wir unsere Beziehung zu unseren Kunden nicht als blo\u00dfe Anbieterschaft, sondern als echte Partnerschaft. Uns ist es wichtig, regelm\u00e4ssig mit Ihnen in Kontakt zu bleiben, um sicherzustellen, dass Orki stets Ihren Anforderungen entspricht und sich mit Ihnen weiterentwickelt.

' + '

Kontinuierlicher Dialog und Anpassung:

' + '

Wir sind bestrebt, Orki kontinuierlich zu verbessern und zu erweitern. Durch regelm\u00e4ssiges Feedback und direkten Austausch mit Ihnen wollen wir verstehen, was Sie wirklich ben\u00f6tigen und wie wir Ihre Arbeit erleichtern k\u00f6nnen. Ihre R\u00fcckmeldungen sind entscheidend f\u00fcr die Entwicklung neuer Funktionen und die Optimierung bestehender Tools.

' + '

Partnerschaft und Unterst\u00fctzung:

' + '

Wenn Sie sich f\u00fcr Orki entscheiden, bekommen Sie nicht nur Zugriff auf unsere Software, sondern auch auf unser engagiertes Support-Team. Unser Ziel ist es, dass Sie sich voll und ganz auf Ihre wichtige Arbeit in der Gemeinde konzentrieren k\u00f6nnen.

' + '

Gemeinsam wachsen:

' + '

Ihre Entscheidung f\u00fcr Orki ist der Beginn einer langfristigen Zusammenarbeit. Wir hoffen, Sie als Partner \u2013 oder in unserem Wortlaut als \u201eOrkinauten\u201c \u2013 gewinnen zu k\u00f6nnen.

' + '

Mit freundlichen Gr\u00fcssen,

' + (offRepName ? '

' + offRepName + '

' + offRepPos + '

' : '') + '
' + '
S. 2 / ' + totalPages + '
' + '
'; /* ── PAGE 3: Info ── */ var emailLink = offEmail ? '' + offEmail + '' : '–'; var webLink = offWeb ? '' + offWeb.replace(/^https?:\/\//,'') + '' : '–'; var page3 = '
' + bar + '
' + logoBox + '

So sind wir gemeinsam unterwegs

' + '
' + '

Support

' + '

Bei Supportanfragen reagieren wir in der Regel innerhalb von 48 Stunden.' + (offPhone ? ' In dringenden Notf\u00e4llen erreichen Sie uns telefonisch unter ' + offPhone + '.' : '') + ' Treten Funktionsfehler auf, die wir als solche best\u00e4tigen k\u00f6nnen, werden Ihnen hierbei keine Supportkosten verrechnet.

' + '

Service-Level-Agreement (SLA)

' + '

Auf Wunsch erstellen wir f\u00fcr Sie ein detailliertes SLA. Den geltenden Standard-SLA finden Sie auf ' + (offWeb ? webLink : 'www.orki.ch/preise') + '.

' + '

Funktionsw\u00fcnsche und Anpassungen in Orki

' + '

Ihre Funktionsw\u00fcnsche k\u00f6nnen Sie uns jederzeit per E-Mail an ' + emailLink + ' melden. Bitte beachten Sie:

' + '
    ' + '
  • Eine Umsetzung kann nicht garantiert und nicht terminiert werden.
  • ' + '
  • Orki ist eine gemeinsame Webapplikation f\u00fcr alle teilnehmenden Kirchgemeinden. Neue Funktionen stehen daher nach der Einf\u00fchrung allen Gemeinden zur Verf\u00fcgung.
  • ' + '
  • Individuelle Sonderl\u00f6sungen bieten wir nicht an.
  • ' + '
' + '

Webseiten & Hosting

' + '

Orki bietet die M\u00f6glichkeit der Webseiten-Integration in einem eigenst\u00e4ndigen, gewarteten System.

' + '

Kontakt bei Orki

' + (offRepName ? '

' + offRepName + '

' : '') + (offAddr ? '

' + offAddr + '

' : '') + (offPostal ? '

' + offPostal + '

' : '') + (offPhone ? '

' + offPhone + '

' : '') + '

' + emailLink + '

' + '

Gesch\u00e4ftszeiten: Di–Do, 09:00–17:00

' + '

Weitere Infos zu Orki

' + '

' + webLink + '

' + '
' + '
S. 3 / ' + totalPages + '
' + '
'; /* ── PAGE 4: Abonnemente ── */ var aboRows = ''; var posNum = 1; var zwTotal = 0; self.selectedmodules.forEach(function(k) { var m = self.modules[k]; var amt = (m.amount && self.getamount(m.amount) > 1) ? parseInt(self.getamount(m.amount)) : 1; var mo = m.pricing[self.selectedpackage] * amt; var yr = mo * 12; zwTotal += yr; var name = k === 'orki' ? 'Grundabo Orki' : 'Modul ' + stripTags(m.title); var desc = stripTags(m.desc); aboRows += '' + '' + posNum++ + '' + '' + name + '
' + desc + '' + '' + amt + '' + '' + f(mo) + '' + '' + f(m.pricing[self.selectedpackage] * 12) + '' + '' + f(yr) + '' + ''; }); self.additionalservices.forEach(function(k) { var s = self.services[k]; if (!s.yearly) return; var amt = parseInt(self.getamount(s.amount)); var mo = (s.yearly / 12) * amt; var yr = s.yearly * amt; zwTotal += yr; aboRows += '' + '' + posNum++ + '' + '' + stripTags(s.yearlytitle || s.title) + '
' + stripTags(s.desc) + '' + '' + amt + '' + '' + f(mo) + '' + '' + f(s.yearly) + '' + '' + f(yr) + '' + ''; }); if (self.getdiff) { var diffYr = self.getdiff * 12; zwTotal += diffYr; aboRows += '' + '' + 'Modul-Rabatt' + '' + f(diffYr) + '' + ''; } var woSupportYr = (function() { var t = self.modules.orki.pricing['unsupported'] * 12; self.selectedmodules.forEach(function(k) { if (k === 'orki') return; var m = self.modules[k]; var a = (m.amount && self.getamount(m.amount) > 1) ? parseInt(self.getamount(m.amount)) : 1; t += m.pricing['unsupported'] * a * 12; }); return t; })(); var now = new Date(); var remMonths = 12 - now.getMonth(); var prorataNote = remMonths < 12 ? '

*z.B. Zahlung bei Annahme der Offerte am ' + today + ' f\u00fcr das Jahr ' + now.getFullYear() + ': ' + f(self.getpricing * remMonths) + ' ' + cur + '

' : ''; var page4 = '
' + bar + '
' + logoBox + '
' + '
' + offBlock + '
' + (recipient ? '
' + recipient + '
' : '') + '
' + '

Abonnemente

' + '

Folgende Positionen werden bei Annahme der Offerte j\u00e4hrlich verrechnet.
Die Verrechnung findet jeweils im Januar statt. Bei Annahme vor Ende des Jahres werden nur die restlichen Monate f\u00e4llig*.

' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + aboRows + '' + '' + '' + '' + '' + (self.selectedpackage === 'standard' ? '' : '') + '
Pos.BeschreibungAnzahlMonatlich in ' + cur + 'J\u00e4hrlich in ' + cur + 'Total in ' + cur + '
Zwischentotal' + f(zwTotal) + '
MwSt.0%   0.00
' + (self.selectedpackage === 'standard' ? 'Total inklusive Support' : 'Total exklusive Support') + '' + f(self.getpricing * 12) + '
Total exklusive Support (1)' + f(woSupportYr) + '
' + '

Aus den aufgef\u00fchrten Modulen k\u00f6nnen Sie frei w\u00e4hlen. Das Grundabo Orki kann nicht abgew\u00e4hlt werden.
Der Offertpreis w\u00fcrde sich entsprechend Ihrer Auswahl anpassen.

' + (self.selectedpackage === 'standard' ? '

(1) Die Abonnementspreise beinhalten standardm\u00e4ssig den Support. Falls Sie den Support ausschliessen m\u00f6chten, betr\u00e4gt der Abonnementpreis ' + f(woSupportYr) + ' ' + cur + ' pro Jahr. Supportanfragen werden dann separat mit 109 ' + cur + ' pro angebrochener Stunde verrechnet.

' : '') + prorataNote + '
' + '
S. 4 / ' + totalPages + '
' + '
'; /* ── PAGE 5: Einmaliges ── */ var page5 = ''; if (hasOneTime) { var einmRows = ''; var ePos = 1; var einmZw = 0; self.additionalservices.forEach(function(k) { var s = self.services[k]; if (s.pricing <= 0) return; var amt = parseInt(self.getamount(s.amount)); var total = s.pricing * amt; einmZw += total; var amtLabel = s.amounttitle ? amt + ' ' + stripTags(s.amounttitle) : String(amt); einmRows += '' + '' + ePos++ + '' + '' + stripTags(s.title) + '
' + stripTags(s.desc).replace(/\s+/g,' ').substring(0,160) + '' + '' + amtLabel + '' + '' + f(s.pricing) + '' + '' + f(total) + '' + ''; }); page5 = '
' + bar + '
' + logoBox + '
' + '
' + offBlock + '
' + (recipient ? '
' + recipient + '
' : '') + '
' + '

Einmaliges

' + '

Folgende Positionen werden nach der Auslieferung einmalig f\u00e4llig.

' + '' + '' + '' + '' + '' + '' + '' + '' + '' + einmRows + '' + '' + '' + '' + '' + '
Pos.BeschreibungAnzahl' + cur + '/St\u00fcckTotal in ' + cur + '
Zwischentotal' + f(einmZw) + '
MwSt.0%   0.00
Total' + f(einmZw) + '
' + (self.additionalservices.includes('schulung') ? '

Weitere Schulungstermine k\u00f6nnen dazugebucht werden.
Der Offertpreis erh\u00f6ht sich pro Termin um 359.00 ' + cur + ' + die Reisekosten.

' : '') + '
' + '
S. 5 / ' + totalPages + '
' + '
'; } return '' + 'Orki Offerte ' + today + '' + '' + page1 + page2 + page3 + page4 + page5 + ''; }, sendQuoteByEmail: async function() { if (!this.offerEmail) { this.offerError = 'Bitte geben Sie eine E-Mail-Adresse ein.'; return; } this.offerSending = true; this.offerError = ''; var self = this; var stripHtml = function(s) { return String(s) .replace(/<[^>]*>/g, '') .replace(/ä/g, '\u00e4').replace(/ö/g, '\u00f6').replace(/ü/g, '\u00fc') .replace(/Ä/g, '\u00c4').replace(/Ö/g, '\u00d6').replace(/Ü/g, '\u00dc') .replace(/ß/g, '\u00df').replace(/&/g, '&').replace(/ /g, ' '); }; try { var payload = { email: this.offerEmail, name: this.offerName, orgName: this.offerOrgName, offerer: { company: this.offerercompany, address: this.offereraddress, postal: this.offererpostal, phone: this.offererphone, email: this.offereremail, website: this.offererwebsite, repname: this.offererrepname, reppos: this.offererreppos }, quote: { date: this.offerDate, validUntil: this.offerValidUntil, validity: this.quotevalidity, currency: this.currency, package: this.selectedpackage, monthly: this.getpricing, yearly: this.getpricing * 12, discount: this.getdiff, onetime: this.getpricingservices, modules: this.selectedmodules.map(function(m) { return { key: m, title: stripHtml(self.modules[m].title), price: self.getmoduleprice(self.modules[m].pricing, self.modules[m]), amount: self.getamount(self.modules[m].amount) }; }), services: this.additionalservices.map(function(s) { return { key: s, title: stripHtml(self.services[s].title), price: self.services[s].pricing, amount: self.getamount(self.services[s].amount), yearly: self.services[s].yearly || 0 }; }) } }; var res = await fetch('https://31624.hostserv.eu/live/base/send-offer.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); var data = await res.json(); if (data.success) { self.offerSent = true; self.offerLink = data.quoteUrl || ''; self.offerError = ''; } else { self.offerError = data.message || 'Fehler beim Versand. Bitte versuchen Sie es erneut.'; } } catch(e) { self.offerError = 'Netzwerkfehler. Bitte versuchen Sie es erneut.'; } this.offerSending = false; }, copyLink: function() { var self = this; if (navigator.clipboard) { navigator.clipboard.writeText(this.offerLink).then(function() { self.linkCopied = true; setTimeout(function() { self.linkCopied = false; }, 2000); }); } }, findKuerzel: function(begriff) { const kuerzelMap = { 'evang': ['evang.','evangelisch','ref.','reformiert'], 'kath': ['katholische', 'kath.'] }; for (let kuerzel in kuerzelMap) { if (kuerzelMap[kuerzel].includes(begriff.toLowerCase())) { return kuerzel; } } return ''; }, shorten: function (name) { name = name.replace(/[�]/g, 'ae').replace(/[�]/g, 'oe').replace(/[�]/g, 'ue').replace(/[�]/g, 'ss').replace(/[^a-zA-Z0-9]/g, ''); const kuerzelMap = { 'evang': ['evangelisch', 'evang.', 'evangelische', 'ref.', 'evang.-ref.', 'evangelisch-reformierte', 'evangelisch - reformierte', 'evang ref', 'evangelisch reformierte', 'evang.-ref.', 'evangelisch-reformierte', 'evang. - ref.'], 'kath': ['katholische', 'kath.'] }; for (let kuerzel in kuerzelMap) { for (let begriff of kuerzelMap[kuerzel]) { const index = name.toLowerCase().indexOf(begriff.toLowerCase()); if (index !== -1) { name = name.substring(0, index) + kuerzel + name.substring(index + begriff.length); } } } name = name.replace(/[\s-]/g, ''); name = name.replace(/kirche/gi, '').replace(/kirchgemeinde/gi, ''); return name.toLowerCase(); } }, computed: { isMobile: function() { return window.innerWidth <= 900; }, offerDate: function() { return new Date().toLocaleDateString('de-CH'); }, offerValidUntil: function() { var d = new Date(); d.setDate(d.getDate() + this.quotevalidity); return d.toLocaleDateString('de-CH'); }, selectedmodules: function(){ var r = JSON.parse(JSON.stringify(this.packages[this.selectedpackage].included)); for(key in this.additionalmodules){ r.push(this.additionalmodules[key]); } return r; }, getdiff: function(){ var diff = 0; if(this.selectedpackage == 'unsupported'){ var am = Object.keys(this.additionalmodules).length - 1; if(am == 1){ diff = diff - 30; } else if(am == 2){ diff = diff - 20; } else if(am == 3){ diff = diff - 10; } else; } else{ var am = Object.keys(this.additionalmodules).length - 1; if(am == 1){ diff = diff - 10; } else if(am == 2){ diff = diff - 5; } else if(am == 3){ diff = diff - 2; } else; } return diff; }, getpricing: function(){ var r = this.packages[this.selectedpackage].pricing; r = this.modules.orki.pricing[this.selectedpackage]; var am = 0; for(key in this.additionalmodules){ if(this.additionalmodules[key] !== 'orki'){ var amunt = this.getamount(this.modules[this.additionalmodules[key]].amount); r = r+(this.modules[this.additionalmodules[key]].pricing[this.selectedpackage] * amunt); am++; } } for(key in this.additionalservices){ if(this.services[this.additionalservices[key]] && this.services[this.additionalservices[key]].yearly){ var amunt = this.getamount(this.services[this.additionalservices[key]].amount); console.log('tears',this.additionalservices[key],this.services[this.additionalservices[key]].yearly,amunt); r = r+((this.services[this.additionalservices[key]].yearly / 12) * amunt); } } if(am > 0){ r = r + this.packages[this.selectedpackage].packagedis; if(this.selectedpackage == 'unsupported'){ if(am == 1){ r = r - 30; } else if(am == 2){ r = r - 20; } else if(am == 3){ r = r - 10; } else; } else{ if(am == 1){ r = r - 10; } else if(am == 2){ r = r - 5; } else if(am == 3){ r = r - 2; } else; } } return r; }, getpricingservices: function(){ var as = 0; for(a in this.additionalservices){ var service = this.services[this.additionalservices[a]]; as = as + (service.pricing * this.getamount(service.amount)); } return as; }, gettotalpricing: function(){ return (this.getpricing * 12) + this.getpricingservices; }, getsource: function(){ var s = 'https://orki.zahls.ch/de/pay?tid=5bdd1b3a&invoice_number=987654321&invoice_amount='+this.gettotalpricing+'&invoice_currency=1&contact_email=ruedi.eggenberger@ref-sennwald.ch'; //var s = 'https://orki.zahls.ch/de/vpos?amount='+this.gettotalpricing+'¤cy=CHF&purpose=987654321&contact_street=�etlibergstrasse%2012&contact_company=Evang. Ref. Kirchgemeinde Sennwald'; return s; } }, watch: { selectedpackage: function(n){ /*this.additionalmodules = []; */ }, 'orga.name': function(n){ this.orga.shortlink = this.shorten(n); } }, data() { return { transaction: false, window: 0, mobileviewed: false, showOffer: false, offerEmail: '', offerName: '', offerOrgName: '', offerSending: false, offerSent: false, offerError: '', offerLink: '', linkCopied: false, step: 0, steps: [ {title: 'Infos zu Ihrer Kirchgemeinde',desc: 'Lassen Sie uns mehr über Ihre Organisation/Kirchgemeinde erfahren'}, {title: 'Infos zu Ihrer Kirchgemeinde 2'}, {title: 'Infos zu Ihrer Kirchgemeinde 3'}, {title: 'Infos zu Ihrer Kirchgemeinde 4'} ], additionalmodules: ['orki'], additionaloptions: 'included', additionalservices: ['einrichtung'], selectedpackage: 'standard', orga: { name: '', shortlink: '' }, einrichtung: 950, packages: { standard: { title: 'Support inbegriffen', desc: `Sämtlicher Support mit Ihrerseits festgelegten Systemadministratoren ist im Abonnement inbegriffen. Weitere Bestimmungen siehe SLA`, included: [], pricing: 0, packagedis: 0, available: true }, unsupported: { title: 'Ohne Support', desc: 'Im Abonnement ist der Support nicht inbegriffen. Wenn Support benötigt wird, kostet dieser 109 CHF / angebr. Stunde und wird separat verrechnet. Weitere Bestimmungen siehe SLA', included: [], pricing: 0, pricetag: 'Rabatt auf Abopreise', packagedis: 0, available: true } }, modules: { orki: { title: 'Grundfunktionen', desc: 'Veranstaltungs-Kalender gemeinsam mit Mitarbeitenden, Freiwilligen und Mitgliedern verwalten.', pricing: { standard: 99, unsupported: 79 }, deselectable: false, available: true }, ressourcen: { title: 'Räume + Inventar', desc: 'Einfache Verwaltung von Räumen und Inventar.', pricing: { standard: 15, unsupported: 5 }, deselectable: true, available: true }, forms: { title: 'Anmeldungen + Formulare', desc: 'Einfache Verwaltung von Veranstaltungs-Anmeldungen und Online-Formularen.', pricing: { standard: 15, unsupported: 5 }, deselectable: true, available: true }, courses: { title: 'Kurse + Begleitung', desc: 'Die Plattform und Verwaltungsfunktion für Kurs-Teilnehmende und -Leitende. Ideal z.B. für Konfirmations-/Firmkurse.', pricing: { standard: 15, unsupported: 5 }, /*mustselect: ['forms'],*/ deselectable: true, available: true, availabletext: 'in Entwicklung' }, publica: { title: 'Publica', desc: 'Gemeindeblätter, Webseite/n und Infodisplays verwalten.', pricing: { standard: 15, unsupported: 5 }, deselectable: true, available: true }, care: { title: 'Caring Communities', desc: 'Marktplatz für Unterstützungsanfragen aus Ihrer Gemeinde. Die Gemeinde (Community) die sich selbst hilft+unterstützt unterwegs in Orki.', pricing: { standard: 0, unsupported: 0 }, deselectable: true, available: false, availabletext: 'in Planung' }, regio: { title: 'Regional-/Multi-Kirchgemeinde', desc: 'Mehrere Kirchgemeinden im selben Orki unterwegs - gemeinsam organisiert und gemeinsam/separat veröffentlicht.', pricing: { standard: 25, unsupported: 5 }, amount: 2, amounttitle: 'Kirchgemeinden', deselectable: true, available: true }/*, gls: { title: 'Automatisierung', desc: 'Anbindung der Funktionen von Orki an bestehendes Gebäudeleitsystem (Heizungs-, Glocken- und Zugangssteuerung).', pricing: { standard: 7, unsupported: 5 }, deselectable: true, available: false, availabletext: 'in Planung' }*/ }, services: { schulung: { title: 'Schulung', desc: `Schulung bei Ihnen vor Ort von maximal 3 Stunden. Anfahrtskosten werden separat verrechnet. Jede Wiederholung/Gruppe gilt als ein separater Termin.`, included: [], pricing: 359, amount: 1, amounttitle: 'Termin/e', packagedis: 0, deselectable: true, available: true }, webseite: { title: 'Webseite einrichten', desc: `Erstellen einer neuen Webseite* für Ihre Kirchgemeinde mit unserem CMS Orblio.

*Bestehende Webseiten können kostenlos mit Orki verbunden werden.`, included: [], pricing: 5899, yearlytitle: 'Hosting + Domain', yearly: 96, amount: 1, amounttitle: 'Webseit/e', packagedis: 0, deselectable: true, available: true }, komplettit: { title: 'Komplette IT Lösung', desc: `Über unseren Partner Sublevia erhalten Sie ihre komplette IT aus einer Hand. E-Mail, Datenablage/Cloud, Chat/Team-Lösungen, etc.`, included: [], pricing: 0, pricetag: 'auf Anfrage', packagedis: 0, deselectable: true, available: true }, einrichtung: { title: 'Einmalige Einrichtung', desc: `Einrichtung des Systems und einen Monat Begleitung bei Dateneinpflegung.`, included: [], pricing: 955, packagedis: 0, deselectable: false, available: true }/*, prozessbegleitung: { title: 'Abläufe + Prozesse mit Ihnen gemeinsam entwickeln', desc: `Unsere Experten begleiten Sie und Ihre Teams/Mitarbeitenden im Aufbau der Abläufe in Ihrer Kirchgemeinde, damit die Software optimal verwendet werden kann und ihre individuellen Prozesse abbildet.`, included: [], pricing: 599, amount: 1, amounttitle: 'Termin/e', packagedis: 0, deselectable: true, available: true }*/ } }; }, beforeUpdate: function(){ if(this.onorki){ this.$emit('update:orkival', this.getpricing); } }, mounted() { this.offerEmail = this.contactemail; const observer = new IntersectionObserver(this.handleIntersection, { root: null, rootMargin: '0px', threshold: 0.5, // Hier kannst du den Schwellenwert anpassen }); observer.observe(this.$refs.elementToWatch); this.$nextTick(() => { window.addEventListener('resize', this.onResize); }) }, beforeDestroy() { window.removeEventListener('resize', this.onResize); } });