Kalkulator
Harga

Hitung estimasi biaya KlinikPro sesuai kebutuhan klinik Anda dengan kalkulator interaktif

Kalkulator Harga

✨ Atur Harga Sesuai Kebutuhan ✨

Pilih modul sesuai kebutuhan, dapatkan estimasi biaya secara real-time

Mulai Cepat - Pilih Tipe Klinik

Atau Pilih Modul Tambahan

Kustomisasi sesuai kebutuhan spesifik klinik Anda

Modul Spesialis

Pilih yang relevan

Modul Pendukung Operasional

Opsional

AI & Advanced Analytics

Premium

Enterprise & Integrasi

Opsional
RME/bln
1 50 100 150 200 250 300

Ringkasan Harga

Core Package
Rp3.000
Modul Tambahan
Rp0
Belum ada yang dipilih
Total per RME
Rp3.000
Estimasi Bulanan
Rp300rb
100 RME × Rp3.000

Butuh Penjelasan Lebih Lanjut?

Tim kami siap membantu Anda memilih paket yang tepat untuk klinik Anda

Hubungi Kami
// Pricing Calculator const BASE_RATE = 3000; // Preset Selection Function function selectPreset(preset) { // Reset all checkboxes first document.querySelectorAll('.module-checkbox').forEach(checkbox => { checkbox.checked = false; }); // Reset preset buttons styling document.querySelectorAll('.preset-btn').forEach(btn => { btn.classList.remove('active', 'border-primary-600', 'bg-primary-50'); }); // Apply preset based on selection switch(preset) { case 'basic': // Core Package only - no additional modules event.target.closest('.preset-btn').classList.add('active', 'border-primary-600', 'bg-primary-50'); break; case 'dental': // Core + Odontogram document.querySelector('[data-name="Odontogram"]').checked = true; event.target.closest('.preset-btn').classList.add('active', 'border-primary-600', 'bg-primary-50'); break; case 'beauty': // Core + Face Mapping document.querySelector('[data-name="Face Mapping"]').checked = true; event.target.closest('.preset-btn').classList.add('active', 'border-primary-600', 'bg-primary-50'); break; case 'complete': // All modules checked document.querySelectorAll('.module-checkbox').forEach(checkbox => { checkbox.checked = true; }); event.target.closest('.preset-btn').classList.add('active', 'border-primary-600', 'bg-primary-50'); break; } // Recalculate total calculateTotal(); // Subtle scroll to show pricing summary updated document.getElementById('monthly-cost').scrollIntoView({ behavior: 'smooth', block: 'nearest' }); } function formatCurrency(amount) { if (amount >= 1000000) { return 'Rp' + (amount / 1000000).toFixed(1) + 'jt'; } else if (amount >= 1000) { return 'Rp' + (amount / 1000).toFixed(0) + 'rb'; } return 'Rp' + amount.toLocaleString('id-ID'); } function formatCurrencyFull(amount) { return 'Rp' + amount.toLocaleString('id-ID'); } function calculateTotal() { const rmeCount = parseInt(document.getElementById('rme-count').value) || 100; const rmeSlider = document.getElementById('rme-slider'); // Sync slider rmeSlider.value = rmeCount; // Calculate addons total let addonsTotal = 0; let selectedAddons = []; document.querySelectorAll('.module-checkbox:checked').forEach(checkbox => { const price = parseInt(checkbox.dataset.price); const name = checkbox.dataset.name; addonsTotal += price; selectedAddons.push(name); }); // Calculate total rate let totalRate = BASE_RATE + addonsTotal; let isAdjusted = false; // Apply adjust rate for < 100 RME if (rmeCount < 100) { totalRate = Math.round(totalRate * (100 / rmeCount)); isAdjusted = true; } // Calculate monthly cost const monthlyCost = rmeCount * totalRate; // Update UI document.getElementById('base-rate').textContent = formatCurrencyFull(BASE_RATE); document.getElementById('total-addons').textContent = formatCurrencyFull(addonsTotal); document.getElementById('total-rate').textContent = formatCurrencyFull(totalRate); document.getElementById('monthly-cost').textContent = formatCurrency(monthlyCost); document.getElementById('cost-breakdown').textContent = `${rmeCount} RME × ${formatCurrencyFull(totalRate)}`; // Update selected addons display const addonsDiv = document.getElementById('selected-addons'); if (selectedAddons.length > 0) { addonsDiv.textContent = selectedAddons.join(', '); } else { addonsDiv.textContent = 'Belum ada yang dipilih'; } // Show/hide adjust warning const adjustWarning = document.getElementById('adjust-warning'); const adjustInfo = document.getElementById('adjust-info'); if (isAdjusted) { adjustWarning.classList.remove('hidden'); const multiplier = (100 / rmeCount).toFixed(2); adjustInfo.textContent = `Koefisien × ${multiplier} diterapkan (100/${rmeCount})`; } else { adjustWarning.classList.add('hidden'); } // Update slider track color updateSliderTrack(rmeSlider); } // Slider event document.getElementById('rme-slider').addEventListener('input', function() { document.getElementById('rme-count').value = this.value; updateSliderTrack(this); calculateTotal(); }); function setRME(value) { const rmeInput = document.getElementById('rme-count'); const rmeSlider = document.getElementById('rme-slider'); rmeInput.value = value; rmeSlider.value = value; // Update slider track updateSliderTrack(rmeSlider); // Update active state on quick select buttons document.querySelectorAll('.rme-quick-btn').forEach(btn => { btn.classList.remove('active'); }); event.target.classList.add('active'); // Recalculate total calculateTotal(); // Smooth scroll to pricing summary document.getElementById('monthly-cost').scrollIntoView({ behavior: 'smooth', block: 'nearest' }); } function updateSliderTrack(slider) { const min = slider.min || 1; const max = slider.max || 300; const value = slider.value || 100; const percentage = ((value - min) / (max - min)) * 100; slider.style.background = `linear-gradient(to right, rgb(37 99 235) ${percentage}%, rgb(229 231 235) ${percentage}%)`; } // Initialize calculator document.addEventListener('DOMContentLoaded', function() { // Initialize slider updateSliderTrack(document.getElementById('rme-slider')); // Set initial active state for 100 RME button (default value) document.querySelectorAll('.rme-quick-btn').forEach(btn => { const btnValue = parseInt(btn.textContent); if (btnValue === 100) { btn.classList.add('active'); } }); // Module card highlight effect document.querySelectorAll('.module-checkbox').forEach(checkbox => { checkbox.addEventListener('change', function() { const card = this.closest('.module-card'); if (this.checked) { card.style.transform = 'scale(1.02)'; card.style.boxShadow = '0 4px 12px rgba(0,0,0,0.1)'; } else { card.style.transform = 'scale(1)'; card.style.boxShadow = 'none'; } }); }); });