איך לתכנן עיזבון בלי לפספס אף פרט?

מחשבון תכנון עיזבון

תכנן את חלוקת העיזבון שלך בצורה פשוטה ומאורגנת

ניהול רכוש

ניהול יורשים

תכנון חלוקת העיזבון

×
`; document.body.appendChild(notification); setTimeout(() => notification.classList.add('show'), 100); setTimeout(() => { notification.classList.remove('show'); setTimeout(() => notification.remove(), 300); }, 3000); } function showConfirmDialog(title, message, onConfirm) { if (confirm(`${title}\n${message}`)) { onConfirm(); } } // Modal Functions function openModal(content, afterOpenCallback) { const modal = document.getElementById('ec-modal'); const modalContent = document.getElementById('ec-modal-inner'); modalContent.innerHTML = ''; modalContent.appendChild(content); modal.classList.add('active'); // Close modal when clicking outside modal.addEventListener('click', modalClickOutside); // Initialize tooltips tippy('[data-tippy-content]', { theme: 'light', placement: 'top', }); // Call the callback after the content is in the DOM if (afterOpenCallback) { afterOpenCallback(); } } function closeModal() { const modal = document.getElementById('ec-modal'); modal.classList.remove('active'); modal.removeEventListener('click', modalClickOutside); } function modalClickOutside(e) { const modal = document.getElementById('ec-modal'); if (e.target === modal) { closeModal(); } } // Tab Management function switchTab(tabId) { // Update active tab document.querySelectorAll('.ec-tab').forEach(tab => { tab.classList.toggle('active', tab.dataset.tab === tabId); }); // Show active section document.querySelectorAll('.ec-section').forEach(section => { section.classList.toggle('active', section.id === `${tabId}-section`); }); // Update state state.activeTab = tabId; // Render content if (tabId === 'assets') { renderAssets(); } else if (tabId === 'heirs') { renderHeirs(); } else if (tabId === 'planning') { renderPlanning(); } } // Global render function function renderAll() { renderAssets(); renderHeirs(); renderPlanning(); } // Asset Management Functions function openAssetForm(assetId = null) { const template = document.getElementById('asset-form-template'); const formContent = template.content.cloneNode(true); // Open modal and attach event listeners after content is in the DOM openModal(formContent, () => { const form = document.getElementById('asset-form'); // Populate categories const categoriesGrid = form.querySelector('.ec-categories-grid'); categoriesGrid.innerHTML = Object.entries(assetCategories).map(([category, data]) => `
${data.icon}
${category}
`).join(''); // Add event listeners to category cards categoriesGrid.querySelectorAll('.ec-category-card').forEach(card => { card.addEventListener('click', () => { const category = card.querySelector('.ec-category-name').textContent; selectCategory(category, form); }); }); // Event listeners form.addEventListener('submit', (e) => submitAsset(e, assetId, form)); form.querySelector('#cancel-asset-btn').addEventListener('click', closeModal); // If editing an existing asset, populate the form if (assetId) { const asset = state.assets.find(a => a.id === assetId); if (asset) { populateAssetForm(form, asset); } } }); } function selectCategory(category, form) { const cards = form.querySelectorAll('.ec-category-card'); cards.forEach(card => { const isSelected = card.querySelector('.ec-category-name').textContent === category; card.classList.toggle('selected', isSelected); }); const detailsSection = form.querySelector('#asset-details'); detailsSection.style.display = 'block'; const subCategorySelect = form.querySelector('select[name="subCategory"]'); populateSubCategories(subCategorySelect, category, form); // Reset sub-category and type selects subCategorySelect.value = ''; const typeSelect = form.querySelector('select[name="type"]'); typeSelect.innerHTML = ''; } function populateSubCategories(select, category, form) { const subCategories = assetCategories[category].subCategories; select.innerHTML = ` ${Object.keys(subCategories).map(sub => `` ).join('')} `; select.addEventListener('change', (e) => { const typeSelect = form.querySelector('select[name="type"]'); populateAssetTypes(typeSelect, category, e.target.value); }); } function populateAssetTypes(select, category, subCategory) { const types = assetCategories[category].subCategories[subCategory] || []; select.innerHTML = ` ${types.map(type => `` ).join('')} `; } function submitAsset(event, assetId = null, form) { event.preventDefault(); const formData = new FormData(event.target); const selectedCategoryCard = form.querySelector('.ec-category-card.selected .ec-category-name'); if (!selectedCategoryCard) { showNotification('יש לבחור קטגוריה', 'error'); return; } const selectedCategory = selectedCategoryCard.textContent; const assetData = { id: assetId || Date.now(), category: selectedCategory, subCategory: formData.get('subCategory'), type: formData.get('type'), location: formData.get('location'), value: Number(formData.get('value')), notes: formData.get('notes'), lastUpdated: new Date().toISOString() }; if (!assetData.subCategory || !assetData.type || !assetData.location || !assetData.value) { showNotification('יש למלא את כל השדות הנדרשים', 'error'); return; } if (assetId) { state.assets = state.assets.map(asset => asset.id === assetId ? { ...asset, ...assetData } : asset ); showNotification('הנכס עודכן בהצלחה', 'success'); } else { state.assets.push(assetData); showNotification('הנכס נוסף בהצלחה', 'success'); } saveData(); renderAssets(); closeModal(); } function populateAssetForm(form, asset) { // Select the category const categoryCards = form.querySelectorAll('.ec-category-card'); categoryCards.forEach(card => { const categoryName = card.querySelector('.ec-category-name').textContent; if (categoryName === asset.category) { card.classList.add('selected'); } }); // Show details section const detailsSection = form.querySelector('#asset-details'); detailsSection.style.display = 'block'; // Populate subcategories const subCategorySelect = form.querySelector('select[name="subCategory"]'); populateSubCategories(subCategorySelect, asset.category, form); subCategorySelect.value = asset.subCategory; // Populate types const typeSelect = form.querySelector('select[name="type"]'); populateAssetTypes(typeSelect, asset.category, asset.subCategory); typeSelect.value = asset.type; // Populate other fields form.querySelector('input[name="location"]').value = asset.location; form.querySelector('input[name="value"]').value = asset.value; form.querySelector('textarea[name="notes"]').value = asset.notes || ''; // Update submit button text form.querySelector('.ec-button.primary').textContent = 'עדכן נכס'; } function deleteAsset(assetId) { showConfirmDialog( 'האם אתה בטוח שברצונך למחוק נכס זה?', 'פעולה זו אינה ניתנת לביטול', () => { state.assets = state.assets.filter(asset => asset.id !== assetId); delete state.distributions[assetId]; saveData(); renderAssets(); renderPlanning(); showNotification('הנכס נמחק בהצלחה', 'success'); } ); } function renderAssets() { const assetsList = document.getElementById('assets-list'); if (state.assets.length === 0) { assetsList.innerHTML = `
📦

אין נכסים עדיין

התחל להוסיף נכסים כדי לתכנן את העיזבון שלך

`; // Add event listener to the "add first asset" button document.getElementById('add-first-asset-btn').addEventListener('click', () => openAssetForm()); return; } const totalValue = state.assets.reduce((sum, asset) => sum + asset.value, 0); assetsList.innerHTML = `
סך שווי הנכסים
${formatCurrency(totalValue)}
מספר נכסים
${state.assets.length}
${state.assets.map(asset => ` `).join('')}
סוג הנכס קטגוריה מיקום שווי עדכון אחרון פעולות
${assetCategories[asset.category].icon} ${asset.type}
${asset.category}
${asset.subCategory}
${asset.location} ${formatCurrency(asset.value)}
${formatDate(asset.lastUpdated)}
`; // Add event listeners to action buttons assetsList.querySelectorAll('.ec-action-btn.edit').forEach(button => { button.addEventListener('click', () => { const assetId = parseInt(button.dataset.id); openAssetForm(assetId); }); }); assetsList.querySelectorAll('.ec-action-btn.delete').forEach(button => { button.addEventListener('click', () => { const assetId = parseInt(button.dataset.id); deleteAsset(assetId); }); }); } // Heir Management Functions function openHeirForm(heirId = null) { const template = document.getElementById('heir-form-template'); const formContent = template.content.cloneNode(true); // Open modal and attach event listeners after content is in the DOM openModal(formContent, () => { const form = document.getElementById('heir-form'); // Populate relationship types const relationshipTypeSelect = form.querySelector('select[name="relationshipType"]'); relationshipTypeSelect.innerHTML = ` ${Object.keys(heirTypes).map(type => ``).join('')} `; // Event listeners relationshipTypeSelect.addEventListener('change', (e) => { populateRelationshipDegrees(form.querySelector('select[name="relationshipDegree"]'), e.target.value, form); }); form.addEventListener('submit', (e) => submitHeir(e, heirId, form)); form.querySelector('#cancel-heir-btn').addEventListener('click', closeModal); // If editing an existing heir, populate the form if (heirId) { const heir = state.heirs.find(h => h.id === heirId); if (heir) { populateHeirForm(form, heir); } } }); } function populateRelationshipDegrees(select, type, form) { select.innerHTML = ` ${Object.keys(heirTypes[type]).map(degree => ``).join('')} `; select.addEventListener('change', (e) => { populateHeirTypes(form.querySelector('select[name="type"]'), type, e.target.value); }); } function populateHeirTypes(select, type, degree) { const types = heirTypes[type][degree] || []; select.innerHTML = ` ${types.map(t => ``).join('')} `; } function submitHeir(event, heirId = null, form) { event.preventDefault(); const formData = new FormData(event.target); const heirData = { id: heirId || Date.now(), relationshipType: formData.get('relationshipType'), relationshipDegree: formData.get('relationshipDegree'), type: formData.get('type'), firstName: formData.get('firstName'), lastName: formData.get('lastName'), idNumber: formData.get('idNumber'), location: formData.get('location'), minAge: formData.get('minAge') ? Number(formData.get('minAge')) : null, specialConditions: formData.get('specialConditions'), lastUpdated: new Date().toISOString() }; if (!heirData.relationshipType || !heirData.relationshipDegree || !heirData.type) { showNotification('יש למלא את כל השדות הנדרשים', 'error'); return; } if (heirId) { state.heirs = state.heirs.map(heir => heir.id === heirId ? { ...heir, ...heirData } : heir ); showNotification('היורש עודכן בהצלחה', 'success'); } else { state.heirs.push(heirData); showNotification('היורש נוסף בהצלחה', 'success'); } saveData(); renderHeirs(); closeModal(); } function populateHeirForm(form, heir) { // Populate relationship type const relationshipTypeSelect = form.querySelector('select[name="relationshipType"]'); relationshipTypeSelect.value = heir.relationshipType; // Populate relationship degrees const relationshipDegreeSelect = form.querySelector('select[name="relationshipDegree"]'); populateRelationshipDegrees(relationshipDegreeSelect, heir.relationshipType, form); relationshipDegreeSelect.value = heir.relationshipDegree; // Populate heir types const typeSelect = form.querySelector('select[name="type"]'); populateHeirTypes(typeSelect, heir.relationshipType, heir.relationshipDegree); typeSelect.value = heir.type; // Populate other fields form.querySelector('input[name="firstName"]').value = heir.firstName; form.querySelector('input[name="lastName"]').value = heir.lastName; form.querySelector('input[name="idNumber"]').value = heir.idNumber; form.querySelector('input[name="location"]').value = heir.location; form.querySelector('input[name="minAge"]').value = heir.minAge || ''; form.querySelector('textarea[name="specialConditions"]').value = heir.specialConditions || ''; // Update submit button text form.querySelector('.ec-button.primary').textContent = 'עדכן יורש'; } function deleteHeir(heirId) { showConfirmDialog( 'האם אתה בטוח שברצונך למחוק יורש זה?', 'פעולה זו אינה ניתנת לביטול', () => { state.heirs = state.heirs.filter(heir => heir.id !== heirId); // Remove heir from distributions for (let assetId in state.distributions) { if (state.distributions.hasOwnProperty(assetId)) { delete state.distributions[assetId].shares[heirId]; } } saveData(); renderHeirs(); renderPlanning(); showNotification('היורש נמחק בהצלחה', 'success'); } ); } function renderHeirs() { const heirsList = document.getElementById('heirs-list'); if (state.heirs.length === 0) { heirsList.innerHTML = `
👥

אין יורשים עדיין

התחל להוסיף יורשים כדי לתכנן את חלוקת העיזבון

`; // Add event listener to the "add first heir" button document.getElementById('add-first-heir-btn').addEventListener('click', () => openHeirForm()); return; } heirsList.innerHTML = `
${state.heirs.map(heir => ` `).join('')}
שם היורש סוג קרבה תעודת זהות מיקום תנאים מיוחדים פעולות
👤 ${heir.firstName} ${heir.lastName}
${heir.relationshipType}
${heir.type}
${heir.idNumber} ${heir.location}
${heir.minAge ? ` גיל מינימום: ${heir.minAge} ` : ''} ${heir.specialConditions ? ` תנאים מיוחדים ` : ''}
`; // Add event listeners to action buttons heirsList.querySelectorAll('.ec-action-btn.edit').forEach(button => { button.addEventListener('click', () => { const heirId = parseInt(button.dataset.id); openHeirForm(heirId); }); }); heirsList.querySelectorAll('.ec-action-btn.delete').forEach(button => { button.addEventListener('click', () => { const heirId = parseInt(button.dataset.id); deleteHeir(heirId); }); }); } // Distribution Planning Functions function renderPlanning() { const planningContent = document.getElementById('planning-content'); if (state.assets.length === 0 || state.heirs.length === 0) { planningContent.innerHTML = `
⚠️

לא ניתן להתחיל בתכנון החלוקה

${state.assets.length === 0 ? 'יש להוסיף נכסים תחילה' : ''} ${state.assets.length === 0 && state.heirs.length === 0 ? ' ו' : ''} ${state.heirs.length === 0 ? 'יש להוסיף יורשים תחילה' : ''}

`; return; } planningContent.innerHTML = `
${state.assets.map(asset => ` `).join('')}
נכס שווי חלוקה פעולות
${asset.type} ${formatCurrency(asset.value)} ${renderDistributionSummary(asset.id)}
`; // Add event listeners to distribution buttons planningContent.querySelectorAll('.ec-button.small').forEach(button => { button.addEventListener('click', () => { const assetId = parseInt(button.dataset.id); openDistributionForm(assetId); }); }); } function renderDistributionSummary(assetId) { const distribution = state.distributions[assetId]; if (!distribution) { return 'לא הוגדרה חלוקה'; } if (distribution.distributionType === 'equal') { return 'חלוקה שווה בין כל היורשים'; } else { const shares = Object.entries(distribution.shares).map(([heirId, share]) => { const heir = state.heirs.find(h => h.id == heirId); return `${heir.firstName} ${heir.lastName}: ${share}%`; }); return shares.join(', '); } } function openDistributionForm(assetId) { const asset = state.assets.find(a => a.id == assetId); const template = document.getElementById('distribution-form-template'); const formContent = template.content.cloneNode(true); // Open modal and attach event listeners after content is in the DOM openModal(formContent, () => { const form = document.getElementById('distribution-form'); form.querySelector('#asset-name').textContent = `${asset.type} (${asset.location})`; // Populate distribution type const distributionTypeSelect = form.querySelector('select[name="distributionType"]'); const customDistributionDiv = form.querySelector('#custom-distribution'); distributionTypeSelect.addEventListener('change', (e) => { if (e.target.value === 'custom') { customDistributionDiv.style.display = 'block'; } else { customDistributionDiv.style.display = 'none'; } }); // If distribution exists, populate data const distribution = state.distributions[assetId]; if (distribution) { distributionTypeSelect.value = distribution.distributionType; if (distribution.distributionType === 'custom') { customDistributionDiv.style.display = 'block'; } } // Populate heirs for custom distribution const heirsFields = state.heirs.map(heir => `
%
`).join(''); customDistributionDiv.innerHTML = heirsFields; // Event listeners form.addEventListener('submit', (e) => submitDistribution(e, assetId, form)); form.querySelector('#cancel-distribution-btn').addEventListener('click', closeModal); }); } function submitDistribution(event, assetId, form) { event.preventDefault(); const formData = new FormData(event.target); const distributionType = formData.get('distributionType'); let distribution = { distributionType: distributionType, shares: {} }; if (distributionType === 'equal') { const equalShare = (100 / state.heirs.length).toFixed(2); state.heirs.forEach(heir => { distribution.shares[heir.id] = parseFloat(equalShare); }); } else { let totalShare = 0; state.heirs.forEach(heir => { const share = parseFloat(formData.get(`heir-${heir.id}`)) || 0; distribution.shares[heir.id] = share; totalShare += share; }); if (totalShare !== 100) { showNotification('סך החלוקה צריך להיות 100%', 'error'); return; } } state.distributions[assetId] = distribution; saveData(); renderPlanning(); closeModal(); showNotification('החלוקה נשמרה בהצלחה', 'success'); } // Initialize document.addEventListener('DOMContentLoaded', () => { // Add tab click listeners document.querySelectorAll('.ec-tab').forEach(tab => { tab.addEventListener('click', () => switchTab(tab.dataset.tab)); }); // Add asset button listener document.getElementById('add-asset-btn').addEventListener('click', () => openAssetForm()); // Add heir button listener document.getElementById('add-heir-btn').addEventListener('click', () => openHeirForm()); // Add close modal listener document.querySelector('.ec-modal-close').addEventListener('click', closeModal); // Add print button listener document.getElementById('print-plan-btn').addEventListener('click', () => window.print()); // Add export and import buttons listeners document.getElementById('export-data-btn').addEventListener('click', exportData); document.getElementById('import-data-btn').addEventListener('click', importData); // Add export to Word button listener document.getElementById('export-word-btn').addEventListener('click', exportToWord); // Load saved data loadSavedData(); // Render initial tab switchTab(state.activeTab || 'assets'); });

הוראות שימוש במחשבון תכנון עיזבון

מחשבון תכנון העיזבון פותח במטרה לספק כלי ידידותי ונוח לתכנון חלוקת רכוש וירושה. כדי להשתמש במחשבון, בצע את השלבים הבאים:

1. ניווט בממשק

  • סרגל ניווט: בראש המחשבון תמצאו כפתורי ניווט לשלושת השלבים: ניהול רכוש, ניהול יורשים ותכנון חלוקה.
  • לחצו על לשונית מתאימה כדי לעבור בין השלבים.

2. ניהול רכוש

  • הוספת נכס חדש: לחצו על הכפתור "הוסף רכוש" כדי להזין פרטי נכסים:
    • בחרו קטגוריה ותת-קטגוריה לנכס.
    • הזינו את פרטי הנכס, כולל מיקום, סוג, שווי והערות (אם נדרשות).
  • עריכת נכס: לחצו על אייקון העיפרון בטבלת הנכסים כדי לעדכן נכס קיים.
  • מחיקת נכס: לחצו על אייקון הפח כדי להסיר נכס מהרשימה.

3. ניהול יורשים

  • הוספת יורש חדש: לחצו על הכפתור "הוסף יורש" כדי להזין פרטי יורשים:
    • בחרו סוג קרבה, דרגת קרבה, וסוג יורש.
    • הזינו פרטים אישיים כמו שם, מספר זהות, מיקום ותנאים מיוחדים (אם נדרשים).
  • עריכת יורש: לחצו על אייקון העיפרון בטבלת היורשים כדי לעדכן יורש קיים.
  • מחיקת יורש: לחצו על אייקון הפח כדי להסיר יורש מהרשימה.

4. תכנון חלוקת העיזבון

  • חלוקת נכסים: עברו ללשונית "תכנון חלוקה":
    • בחרו נכס מהרשימה ולחצו על "ערוך חלוקה".
    • בחרו בין חלוקה שווה או מותאמת אישית.
    • אם בחרתם חלוקה מותאמת אישית, הגדירו אחוזים לכל יורש.
  • שמירת חלוקה: לחצו על "שמור חלוקה" כדי לאשר את התכנון.

5. ייצוא וייבוא נתונים

  • ייצוא נתונים: לחצו על "ייצא נתונים" כדי להוריד קובץ JSON עם המידע שהזנתם.
  • ייבוא נתונים: לחצו על "ייבא נתונים" והעלו קובץ JSON כדי לטעון נתונים ישנים.

6. ייצוא לקובץ Word

  • לחצו על "ייצא ל-Word" כדי ליצור מסמך שמציג את תוכנית חלוקת העיזבון שלכם.

7. הדפסה

  • לחצו על כפתור "הדפס" כדי להדפיס את תוכנית חלוקת העיזבון בצורה מסודרת.

8. שמירת נתונים

  • המחשבון שומר את הנתונים באופן מקומי בדפדפן שלכם. אם תסגרו את המחשבון, תוכלו להמשיך מהמקום בו הפסקתם בפעם הבאה.

הערות חשובות

  • המחשבון נועד לצרכי תכנון בלבד ואינו מהווה תחליף לייעוץ משפטי מקצועי.
  • ודאו שכל המידע שהוזן נכון ומדויק כדי למנוע טעויות בתהליך.

 

אזהרה משפטית:

מחשבון תכנון העיזבון נועד לשמש ככלי עזר בלבד לצורך תכנון עקרוני של חלוקת עיזבון. אין לראות בתוצאות המתקבלות במחשבון ייעוץ משפטי, פיננסי או מקצועי כלשהו. חלוקת עיזבון עשויה להיות מושפעת ממורכבויות משפטיות, מיסויות ומשפחתיות הדורשות טיפול פרטני ומותאם. לכן, אנו ממליצים לפנות לייעוץ מקצועי במשרד עורכי דין מור ושות׳, המתמחה בתכנון עיזבון ובהבטחת זכויותיכם.

לתיאום פגישת ייעוץ אישית עם צוות עורכי הדין שלנו המתמחה בתכנוני עיזבון, אנא צרו קשר:
ירושלים: רחוב יפו 216, קומה 2, שערי העיר, טלפון: 02-5953322
תל אביב: מגדלי הארבעה, קומה 5, רחוב הארבעה 28, טלפון: 03-3030430

מור ושות׳ להחלטות החשובות בחיים (ולאחריהם).

You cannot copy content of this page