// Инициализация даты при загрузке document.addEventListener('DOMContentLoaded', function() { const today = new Date().toISOString().split('T')[0]; document.getElementById('issueDate').value = today; updateCertificate(); }); // Обработка формы document.getElementById('debtForm').addEventListener('submit', function(e) { e.preventDefault(); updateCertificate(); // Плавный скролл к предпросмотру на мобильных if (window.innerWidth <= 1024) { document.querySelector('.preview-section').scrollIntoView({ behavior: 'smooth' }); } }); // Обновление предпросмотра в реальном времени const formInputs = document.querySelectorAll('#debtForm input, #debtForm select, #debtForm textarea'); formInputs.forEach(input => { input.addEventListener('input', updateCertificate); }); function updateCertificate() { // Получаем данные из формы const data = { companyName: document.getElementById('companyName').value || 'ТОО «Ваша Компания»', companyBin: document.getElementById('companyBin').value, companyAddress: document.getElementById('companyAddress').value, fio: document.getElementById('fio').value || '___________________________', debtAmount: document.getElementById('debtAmount').value, currency: document.getElementById('currency').value, debtType: document.getElementById('debtType').value, debtPeriod: document.getElementById('debtPeriod').value || '___________________________', reason: document.getElementById('reason').value || '___________________________', document: document.getElementById('document').value, legalBasis: document.getElementById('legalBasis').value, issueDate: document.getElementById('issueDate').value, issueNumber: document.getElementById('issueNumber').value, recipient: document.getElementById('recipient').value, director: document.getElementById('director').value, accountant: document.getElementById('accountant').value }; // Форматируем дату const formattedDate = formatDate(data.issueDate); // Реквизиты компании document.getElementById('certCompanyFullName').textContent = data.companyName; document.getElementById('certCompanyNameInline').textContent = data.companyName; document.getElementById('certCompanyNameInline2').textContent = data.companyName; const binEl = document.getElementById('certCompanyBin'); if (data.companyBin) { binEl.textContent = `БИН ${data.companyBin}`; binEl.style.display = 'inline'; } else { binEl.style.display = 'none'; } const addressEl = document.getElementById('certCompanyAddress'); if (data.companyAddress) { addressEl.textContent = `Адрес: ${data.companyAddress}`; addressEl.style.display = 'inline'; } else { addressEl.style.display = 'none'; } // Дата и номер справки document.getElementById('certIssueDateDisplay').textContent = formattedDate; document.getElementById('certIssueNumberDisplay').textContent = data.issueNumber ? `№ ${data.issueNumber}` : ''; // Кому предоставляется const recipientBlock = document.getElementById('certRecipientBlock'); if (data.recipient) { recipientBlock.style.display = 'block'; document.getElementById('certRecipient').textContent = data.recipient; } else { recipientBlock.style.display = 'none'; } document.getElementById('certFio').textContent = data.fio; // Тип задолженности const debtLabel = document.getElementById('certDebtLabel'); if (data.debtType === 'creditor') { debtLabel.textContent = 'Имеет кредиторская задолженность:'; } else { debtLabel.textContent = 'Имеет дебиторская задолженность:'; } // Сумма задолженности const amount = parseFloat(data.debtAmount) || 0; const currencySymbol = getCurrencySymbol(data.currency); const formattedAmount = formatNumber(amount); document.getElementById('certDebtAmount').textContent = `${formattedAmount} ${currencySymbol}`; document.getElementById('certDebtAmountWords').textContent = sumToWords(amount, data.currency); document.getElementById('certDebtPeriod').textContent = data.debtPeriod; document.getElementById('certReason').textContent = data.reason; const docBlock = document.getElementById('certDocumentBlock'); if (data.document) { docBlock.style.display = 'block'; document.getElementById('certDocument').textContent = data.document; } else { docBlock.style.display = 'none'; } const legalBlock = document.getElementById('certLegalBasisBlock'); if (data.legalBasis) { legalBlock.style.display = 'block'; document.getElementById('certLegalBasis').textContent = data.legalBasis; } else { legalBlock.style.display = 'none'; } // Подписи const directorText = data.director || '___________________ / _______________'; document.getElementById('certDirector').textContent = directorText; document.getElementById('certDirectorSignDate').textContent = formattedDate; const accountantBlock = document.querySelector('.cert-signature-line:nth-child(2)'); if (data.accountant) { accountantBlock.style.display = 'block'; document.getElementById('certAccountant').textContent = data.accountant; document.getElementById('certAccountantSignDate').textContent = formattedDate; } else { accountantBlock.style.display = 'none'; } } function formatDate(dateString) { if (!dateString) return '«___» ________ 20__ г.'; const date = new Date(dateString); const day = date.getDate(); const month = date.toLocaleDateString('ru-RU', { month: 'long' }); const year = date.getFullYear(); return `«${day}» ${month} ${year} г.`; } function formatNumber(num) { return num.toLocaleString('ru-RU'); } function getCurrencySymbol(currency) { const symbols = { 'KZT': '₸', 'RUB': '₽', 'USD': '$' }; return symbols[currency] || currency; } // Преобразование суммы в пропись (упрощённая версия) function sumToWords(sum, currency) { if (!sum || sum === 0) return '______________________'; const currencies = { 'KZT': { units: ['тенге', 'тенге', 'тенге'], kopeks: ['тиын', 'тиына', 'тиынов'] }, 'RUB': { units: ['рубль', 'рубля', 'рублей'], kopeks: ['копейка', 'копейки', 'копеек'] }, 'USD': { units: ['доллар', 'доллара', 'долларов'], kopeks: ['цент', 'цента', 'центов'] } }; const curr = currencies[currency] || currencies['KZT']; const wholePart = Math.floor(sum); // Очень упрощённо - для точной реализации нужен полный словарь return `${formatNumber(wholePart)} (${currency})`; } function printCertificate() { window.print(); } function copyToClipboard() { const cert = document.getElementById('certificatePreview'); const text = cert.innerText; navigator.clipboard.writeText(text).then(() => { const btn = document.querySelector('.btn-copy'); const originalText = btn.textContent; btn.textContent = '✅ Скопировано!'; setTimeout(() => { btn.textContent = originalText; }, 2000); }).catch(err => { alert('Не удалось скопировать текст'); }); } function clearForm() { document.getElementById('debtForm').reset(); const today = new Date().toISOString().split('T')[0]; document.getElementById('issueDate').value = today; updateCertificate(); }