const separator = '|'; var module = { "SI-001": { "kauf": "1690,00", "cond": "", "disc": "1", "miet": "130,00", "user": "0", "titel": "Grundmodul" }, "SI-100": { "kauf": "1690,00", "cond": "", "disc": "1", "miet": "29,50", "user": "0", "titel": "WEG-Verwaltung" }, "SI-101": { "kauf": "690,00", "cond": "SI-100", "disc": "1", "miet": "12,50", "user": "0", "titel": "Sondereigentumsverwaltung" }, "SI-102": { "kauf": "290,00", "cond": "SW-010", "disc": "1", "miet": "5,00", "user": "0", "titel": "Schnittstelle zu VoteWorks" }, "SI-103": { "kauf": "siehe SW-012", "cond": "SW-012", "disc": "0", "miet": "siehe SW-012", "user": "0", "titel": "WEG-Abstimmung" }, "SI-110": { "kauf": "690,00", "cond": "", "disc": "1", "miet": "12,50", "user": "0", "titel": "Stammdatenerweiterung" }, "SI-111": { "kauf": "390,00", "cond": "", "disc": "1", "miet": "7,00", "user": "0", "titel": "Darlehensverwaltung" }, "SI-112": { "kauf": "690,00", "cond": "", "disc": "1", "miet": "12,50", "user": "0", "titel": "Mietanpassung" }, "SI-113": { "kauf": "690,00", "cond": "", "disc": "1", "miet": "12,50", "user": "0", "titel": "Indexmiet\u00fcberwachung" }, "SI-114": { "kauf": "690,00", "cond": "", "disc": "1", "miet": "12,50", "user": "0", "titel": "Variable Umlagen" }, "SI-115": { "kauf": "390,00", "cond": "", "disc": "1", "miet": "7,00", "user": "0", "titel": "Ausweis des Umlageausfallwagnisses" }, "SI-116": { "kauf": "1290,00", "cond": "", "disc": "1", "miet": "24,50", "user": "0", "titel": "Inventarverwaltung" }, "SI-117": { "kauf": "290,00", "cond": "", "disc": "1", "miet": "5,00", "user": "0", "titel": "Zusatzauswertungen" }, "SI-118": { "kauf": "225,00", "cond": "", "disc": "1", "miet": "5,00", "user": "1", "titel": "Bescheinigung \u00a735a EStG" }, "SI-120": { "kauf": "390,00", "cond": "", "disc": "1", "miet": "7,00", "user": "0", "titel": "E-Banking - SEPA-Zahlungsverkehr" }, "SI-121": { "kauf": "390,00", "cond": "", "disc": "1", "miet": "7,00", "user": "0", "titel": "Datentr\u00e4geraustausch mit Messdienstleistern" }, "SI-122": { "kauf": "1290,00", "cond": "SW-002", "disc": "1", "miet": "24,50", "user": "0", "titel": "E-Banking - Automatisierte Verarbeitung von Bankums\u00e4tzen" }, "SI-125": { "kauf": "siehe SW-011", "cond": "SW-011", "disc": "0", "miet": "siehe SW-011", "user": "0", "titel": "E-Rechnung Import" }, "SI-130": { "kauf": "690,00", "cond": "", "disc": "1", "miet": "12,50", "user": "0", "titel": "Kred. Buchhaltung" }, "SI-131": { "kauf": "690,00", "cond": "SW-005", "disc": "1", "miet": "12,50", "user": "0", "titel": "Schnittstelle zur FIBU" }, "SI-132": { "kauf": "1990,00", "cond": "SW-007", "disc": "1", "miet": "35,00", "user": "0", "titel": "Stapelbuchhaltung" }, "SI-133": { "kauf": "490,00", "cond": "", "disc": "1", "miet": "9,00", "user": "0", "titel": "OP-Management" }, "SI-134": { "kauf": "490,00", "cond": "SW-009", "disc": "1", "miet": "9,00", "user": "0", "titel": "Buchhaltung-Plus" }, "SI-138": { "kauf": "2950,00", "cond": "", "disc": "1", "miet": "45,00", "user": "0", "titel": "Kontenplanerweiterung" }, "SI-140": { "kauf": "690,00", "cond": "", "disc": "1", "miet": "12,50", "user": "0", "titel": "Verwalterentgelt" }, "SI-145": { "kauf": "990,00", "cond": "", "disc": "1", "miet": "20,00", "user": "0", "titel": "Barcodeausgabe" }, "SI-141": { "kauf": "490,00", "cond": "SW-003", "disc": "1", "miet": "9,00", "user": "0", "titel": "Office-Plus" }, "SI-146": { "kauf": "1490,00", "cond": "", "disc": "1", "miet": "26,50", "user": "0", "titel": "Vorgangsverwaltung" }, "SI-181": { "kauf": "990,00", "cond": "", "disc": "0", "miet": "20,00", "user": "0", "titel": "Datenbank-Wartung" }, "SI-182": { "kauf": "990,00", "cond": "", "disc": "0", "miet": "20,00", "user": "0", "titel": "Anonymisierung von Datenbest\u00e4nden" }, "SI-184": { "kauf": "95,00", "cond": "", "disc": "1", "miet": "5,00", "user": "1", "titel": "Trinkwasserverordnung" }, "SI-150": { "kauf": "990,00", "cond": "", "disc": "1", "miet": "40,00", "user": "0", "titel": "Mehrplatzlizenz" }, "SI-155": { "kauf": "490,00", "cond": "SI-150", "disc": "1", "miet": "30,00", "user": "0", "titel": "3. und weiter Arbeitspl\u00e4tze" }, "SI-190": { "kauf": "495,00", "cond": "SW-004", "disc": "0", "miet": "siehe Kauf", "user": "0", "titel": "App-Server" }, "SI-193": { "kauf": "auf Anfrage", "cond": "SW-006", "disc": "0", "miet": "auf Anfrage", "user": "0", "titel": "SIDOMO Schnittstelle zu Casavi" }, "SI-194": { "kauf": "490,00", "cond": "SW-008", "disc": "1", "miet": "9,00", "user": "0", "titel": "Schnittstelle f\u00fcr Fremdsysteme" }, "SI-196": { "kauf": "auf Anfrage", "cond": "SW-006", "disc": "0", "miet": "auf Anfrage", "user": "0", "titel": "SIDOMO Schnittstelle zu iDWELL" }, "SI-197": { "kauf": "siehe SW-013", "cond": "SW-013", "disc": "0", "miet": "siehe SW-013", "user": "0", "titel": "SIDOMO Schnittstelle zu DGKI Voice (Telefon-KI)" }, "RA-100": { "kauf": "50", "cond": "", "disc": "0", "miet": "25", "user": "0", "titel": "SIDOMO Light 100" }, "RA-200": { "kauf": "25", "cond": "", "disc": "0", "miet": "15", "user": "0", "titel": "SIDOMO Light 200" }, "SC-001": { "kauf": "auf Anfrage", "cond": "", "disc": "0", "miet": "-", "user": "0", "titel": "Schulung" }, "SW-001": { "kauf": "20,00", "cond": "", "disc": "0", "miet": "inkl.", "user": "1", "titel": "Softwarepflegevertrag" }, "SW-002": { "kauf": "5,00", "cond": "", "disc": "0", "miet": "5,00", "user": "1", "titel": "Softwarepflege E-Banking - Automatisierte Verarbeitung von Bankums\u00e4tzen" }, "SW-003": { "kauf": "5,00", "cond": "", "disc": "0", "miet": "5,00", "user": "1", "titel": "Softwarepflege Office-Plus" }, "SW-004": { "kauf": "5,00", "cond": "", "disc": "0", "miet": "5,00", "user": "0", "titel": "Softwarepflege App-Server" }, "SW-005": { "kauf": "5,00", "cond": "", "disc": "0", "miet": "5,00", "user": "1", "titel": "Softwarepflege FIBU" }, "SW-006": { "kauf": "5,00", "cond": "SI-190", "disc": "0", "miet": "5,00", "user": "0", "titel": "Softwarepflege Schnittstelle Casavi\/iDWELL" }, "SW-007": { "kauf": "5,00", "cond": "", "disc": "0", "miet": "5,00", "user": "1", "titel": "Softwarepflege Stapelbuchhaltung" }, "SW-008": { "kauf": "10,00", "cond": "", "disc": "0", "miet": "10,00", "user": "0", "titel": "Softwarepflege Schnittstelle f\u00fcr Fremdsysteme" }, "SW-009": { "kauf": "5,00", "cond": "", "disc": "0", "miet": "5,00", "user": "1", "titel": "Softwarepflege Buchhaltung-Plus" }, "SW-010": { "kauf": "5,00", "cond": "", "disc": "0", "miet": "5,00", "user": "0", "titel": "Softwarepflege Schnittstelle VoteWorks" }, "SW-011": { "kauf": "15,00", "cond": "", "disc": "0", "miet": "15,00", "user": "0", "titel": "E-Rechnung Import" }, "SW-012": { "kauf": "10,00", "cond": "", "disc": "0", "miet": "10,00", "user": "0", "titel": "WEG-Abstimmung" }, "SW-013": { "kauf": "5,00", "cond": "", "disc": "0", "miet": "5,00", "user": "0", "titel": "Schnittstelle zu DGKI Voice (Telefon-KI)" }, "BR-006": { "kauf": "60,00", "cond": "SW-001", "disc": "0", "miet": "inkl.", "user": "0", "titel": "Support" } }; function getCntUser() { // Anzahl der Benutzerlizenzen ermitteln (1,2 oder 3) var cntUser = 1; if (sessionStorage.getItem('selModule').indexOf('SI-150') != -1) { cntUser = 2; } if (sessionStorage.getItem('selModule').indexOf('SI-155') != -1) { cntUser = 3; } return cntUser; } function calcModulPreiseK() { // Kaufpreis ermitteln var sumKaufNorm = 0; var sumDisc = 0; var einzelKauf = 0; var storageKauf = ''; var storageDisc = ''; var storageSum = ''; // modulCodes in Array splitten if (sessionStorage.getItem('selModule').length != 0) { var arr_modulCodes = sessionStorage.getItem('selModule').split(separator); // Preise summieren for (i = 0; i < arr_modulCodes.length; i++) { // Ermittlung Kaufpreis + mtl. Wartung // Kaufpreis nur bei Modulen addieren (nicht bei RA, SC, SW, BR) if (arr_modulCodes[i].indexOf('SI-') != -1) { let einzelKaufStr = module[arr_modulCodes[i]]['kauf'].replace(",", "."); if (!isNaN(parseFloat(einzelKaufStr))) { einzelKauf = parseFloat(einzelKaufStr); // je Arbeitsplatz if (module[arr_modulCodes[i]]['user'] == '1') { einzelKauf = einzelKauf * getCntUser(); } if (module[arr_modulCodes[i]]['disc'] == '1') { // Rabattfähige Module summieren sumDisc = sumDisc + einzelKauf; } // Nicht-rabattfähige Module summieren sumKaufNorm = sumKaufNorm + einzelKauf; } } } // Rabattierung ermitteln if (sessionStorage.getItem('selModule').indexOf('RA-100') != -1) { sumDisc = sumDisc * parseFloat((module['RA-100']['kauf'])/100); } else if (sessionStorage.getItem('selModule').indexOf('RA-200') != -1) { sumDisc = sumDisc * parseFloat((module['RA-200']['kauf'])/100); } else { sumDisc = 0; } // Preise formatieren storageKauf = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(sumKaufNorm); storageDisc = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(sumDisc); storageSum = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(sumKaufNorm-sumDisc); } // Preise (Summen) im Storage speichern sessionStorage.setItem('sumKaufNorm', storageKauf); sessionStorage.setItem('sumKaufDisc', storageDisc); sessionStorage.setItem('sumKaufSum', storageSum); } function calcModulPreiseW() { // Wartungskosten ermitteln var sumWart = 0; var einzelWart = 0; var ausgabeWart = ''; // modulCodes in Array splitten if (sessionStorage.getItem('selModule').length != 0) { var arr_modulCodes = sessionStorage.getItem('selModule').split(separator); // Preise summieren for (i = 0; i < arr_modulCodes.length; i++) { // mtl. Wartung und Support (SW, BR) if ((arr_modulCodes[i].indexOf('SW-') != -1) || (arr_modulCodes[i].indexOf('BR-') != -1)){ let einzelWartStr = module[arr_modulCodes[i]]['kauf'].replace(",", "."); if (!isNaN(parseFloat(einzelWartStr))) { einzelWart = parseFloat(einzelWartStr); // je Arbeitsplatz if (module[arr_modulCodes[i]]['user'] == '1') { einzelWart = einzelWart * getCntUser(); } sumWart = sumWart + einzelWart; } } } // Preise formatieren ausgabeWart = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(sumWart); } // Preise (Summen) im Storage speichern sessionStorage.setItem('sumWartSum', ausgabeWart); } function calcModulPreiseM() { // Mietpreis ermitteln var sumMietNorm = 0; var sumDisc = 0; var einzelMiet = 0; var storageMiet = ''; var storageDisc = ''; var storageSum = ''; // modulCodes in Array splitten if (sessionStorage.getItem('selModule').length != 0) { var arr_modulCodes = sessionStorage.getItem('selModule').split(separator); // Preise summieren for (i = 0; i < arr_modulCodes.length; i++) { // Ermittlung Mietpreis // Rabattewert nicht berücksichtigen (wird sonst auf den Mietpreis addiert) if (arr_modulCodes[i].indexOf('RA-') == -1) { let einzelMietStr = module[arr_modulCodes[i]]['miet'].replace(",", "."); if (!isNaN(parseFloat(einzelMietStr))) { einzelMiet = parseFloat(einzelMietStr); // je Arbeitsplatz if (module[arr_modulCodes[i]]['user'] == '1') { einzelMiet = einzelMiet * getCntUser(); } if (module[arr_modulCodes[i]]['disc'] == '1') { // Rabattfähige Module summieren if (arr_modulCodes[i].indexOf('SI-001') != -1) { // Wartung und Support beim Grundmodul subtrahieren, da nicht rabattfähig let preisSW001 = module['SW-001']['kauf'].replace(",", "."); let preisBR006 = module['BR-006']['kauf'].replace(",", "."); sumDisc = sumDisc + einzelMiet - preisSW001 - preisBR006; } else if ((arr_modulCodes[i].indexOf('SI-150') != -1) || (arr_modulCodes[i].indexOf('SI-155') != -1)) { // Wartung und Support beim Grundmodul subtrahieren, da nicht rabattfähig let preisSW001 = module['SW-001']['kauf'].replace(",", "."); sumDisc = sumDisc + einzelMiet - preisSW001; } else { sumDisc = sumDisc + einzelMiet; } } // Nicht-rabattfähige Module summieren sumMietNorm = sumMietNorm + einzelMiet; } } } // Rabattierung ermitteln if (sessionStorage.getItem('selModule').indexOf('RA-100') != -1) { sumDisc = sumDisc * parseFloat((module['RA-100']['miet'])/100); } else if (sessionStorage.getItem('selModule').indexOf('RA-200') != -1) { sumDisc = sumDisc * parseFloat((module['RA-200']['miet'])/100); } else { sumDisc = 0; } // Preise formatieren storageMiet = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(sumMietNorm); storageDisc = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(sumDisc); storageSum = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(sumMietNorm-sumDisc); } // Preise (Summen) im Storage speichern sessionStorage.setItem('sumMietNorm', storageMiet); sessionStorage.setItem('sumMietDisc', storageDisc); sessionStorage.setItem('sumMietSum', storageSum); } function calcModulPreise() { // Kaufpreis ermitteln calcModulPreiseK(); // Wartungskosten ermitteln calcModulPreiseW(); // Mietpreis ermitteln calcModulPreiseM(); } function showModuleWrap() { // Häkchen ausblenden $('.modul-gewaehlt').hide(); // Plus einblenden $('.modul-add').show(); // Modul-Wrap (Leiste) Preise summieren calcModulPreise(); $('#wrap-preiskauf').html(sessionStorage.getItem('sumKaufSum')); $('#wrap-preiswart').html(sessionStorage.getItem('sumWartSum')); $('#wrap-preismiet').html(sessionStorage.getItem('sumMietSum')); if ((sessionStorage.getItem('selModule') == null) || (sessionStorage.getItem('selModule') == "")) { // Modul-Wrap (Leiste) ausblenden, falls Storage leer $('#konfigurator-wrap').hide('400'); } else { // modulCodes in Array splitten var arr_modulCodes = sessionStorage.getItem('selModule').split(separator); // modulCodes um removeModule ergänzen for (let i = 0; i < arr_modulCodes.length; i++) { // Häkchen einblenden $('#' + arr_modulCodes[i] + ' .modul-gewaehlt').show(); // Plus ausblenden $('#' + arr_modulCodes[i] + ' .modul-add').hide(); // removeModule ergänzen arr_modulCodes[i] = ''+arr_modulCodes[i]+''; } // Modul-Wrap (Leiste) füllen $('#wrap-modulCodes').html(arr_modulCodes.join(', ')); // Modul-Wrap (Leiste) einblenden $('#konfigurator-wrap').show('400'); } } function removeModuleSW(modulCode) { // SW-Modulabhängigkeiten prüfen und ggf. entfernen if (module[modulCode]['cond'].length != 0) { var arr_cond = module[modulCode]['cond'].split(separator); for (let i = 0; i < arr_cond.length; i++) { if (arr_cond[i].indexOf('SW-') != -1) { removeModule(arr_cond[i]); } } } } function removeModule(modulCode) { // Modul aus Storage entfernen var newStorage = sessionStorage.getItem('selModule').replace(separator+modulCode,''); newStorage = newStorage.replace(modulCode+separator,''); newStorage = newStorage.replace(modulCode,''); sessionStorage.setItem('selModule', newStorage); // Zugehörende SW-Verträge entfernen removeModuleSW(modulCode); // Modul-Wrap (Leiste) ggf. ausblenden showModuleWrap(); } function checkModuleCond(modulCode) { // Modulabhängigkeiten prüfen und ggf. hinzufügen if (module[modulCode]['cond'].length != 0) { var arr_cond = module[modulCode]['cond'].split(separator); for (let i = 0; i < arr_cond.length; i++) { addModule(arr_cond[i]); } } } function sortModule() { var arr_ModuleSI = []; var arr_ModuleRA = []; var arr_ModuleSW = []; var arr_ModuleBR = []; if ((sessionStorage.getItem('selModule') != null) && (sessionStorage.getItem('selModule') != "")) { // Module in Abschnitte SI, RA, SW und BR splitten let arr_modulCodes = sessionStorage.getItem('selModule').split(separator); for (let i = 0; i < arr_modulCodes.length; i++) { if (arr_modulCodes[i].indexOf('SI-') != -1) { arr_ModuleSI.push(arr_modulCodes[i]); } if (arr_modulCodes[i].indexOf('RA-') != -1) { arr_ModuleRA.push(arr_modulCodes[i]); } if (arr_modulCodes[i].indexOf('SW-') != -1) { arr_ModuleSW.push(arr_modulCodes[i]); } if (arr_modulCodes[i].indexOf('BR-') != -1) { arr_ModuleBR.push(arr_modulCodes[i]); } } // Modulabschnitte sortieren arr_ModuleSI.sort(); arr_ModuleRA.sort(); arr_ModuleSW.sort(); arr_ModuleBR.sort(); // Modulabschnitte zusammenfügen arr_modulCodes = []; arr_modulCodes = arr_modulCodes.concat(arr_ModuleSI); arr_modulCodes = arr_modulCodes.concat(arr_ModuleRA); arr_modulCodes = arr_modulCodes.concat(arr_ModuleSW); arr_modulCodes = arr_modulCodes.concat(arr_ModuleBR); // Module neu abspeichern sessionStorage.setItem('selModule', arr_modulCodes.join('|')); } } function addModule(modulCode) { // Sonderfall: RA-100 und RA-200 // nur eines von beiden möglich if (modulCode == 'RA-100') { removeModule('RA-200'); } if (modulCode == 'RA-200') { removeModule('RA-100'); } // Sonderfall: SI-100 und SI-117 // SI-117 Zusatzauswertungen ist bereits in SI-100 WEG-Verwaltung enthalten if (modulCode == 'SI-117' && sessionStorage.getItem('selModule').indexOf('SI-100') != -1) { alert('Das Modul "Zusatzauswertungen" ist bereits im Modul SI-100 "WEG-Verwaltung" enthalten.'); return; } // SI-117 Zusatzauswertungen entfernen, falls SI-100 WEG-Verwaltung gewählt wurde if (modulCode == 'SI-100' && sessionStorage.getItem('selModule').indexOf('SI-117') != -1){ removeModule('SI-117'); } // selektierte Module im Storage speichern if ((sessionStorage.getItem('selModule') == null) || (sessionStorage.getItem('selModule') == "")) { sessionStorage.setItem('selModule', modulCode); } else { if (sessionStorage.getItem('selModule').indexOf(modulCode) == -1) { sessionStorage.setItem('selModule', sessionStorage.getItem('selModule') + separator + modulCode); } } // Conditions prüfen, ob weitere Module Prämisse sind checkModuleCond(modulCode); // Module sortieren sortModule(); // Modul-Wrap (Leiste) einblenden showModuleWrap(); } function showModule(){ let isRabatt = ((sessionStorage.getItem('selModule').indexOf('RA-100') != -1) || (sessionStorage.getItem('selModule').indexOf('RA-200') != -1)); if (sessionStorage.getItem('selModule').length != 0) { let arr_modulCodes = sessionStorage.getItem('selModule').split(separator); let modulAusgabe = ''; let wartAusgabe = ''; // Module for (let i = 0; i < arr_modulCodes.length; i++) { if (arr_modulCodes[i].indexOf('RA-') == -1) { let modCode = arr_modulCodes[i]; let modPreisK = ''; let modPreisM = ''; let einzelKauf = ''; let einzelMiet = ''; let modTitel = module[arr_modulCodes[i]]['titel']; // Kaufpreis vorbereiten if (arr_modulCodes[i].indexOf('SI-') != -1) { modPreisK = module[arr_modulCodes[i]]['kauf'].replace(",", "."); if (!isNaN(parseFloat(modPreisK))) { // Kauf je Arbeitsplatz einzelKauf = parseFloat(modPreisK); if (module[modCode]['user'] == '1') { einzelKauf = einzelKauf * getCntUser(); } // Preise formatieren modPreisK = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(einzelKauf); } } // Mietpreis vorbereiten modPreisM = module[arr_modulCodes[i]]['miet'].replace(",", "."); if (!isNaN(parseFloat(modPreisM))) { // Miete je Arbeitsplatz einzelMiet = parseFloat(modPreisM); if (module[modCode]['user'] == '1') { einzelMiet = einzelMiet * getCntUser(); } // Preise formatieren modPreisM = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(einzelMiet); } // Module Kauf und Miete ausgeben modulAusgabe = modulAusgabe + '