diff --git a/mockup.html b/mockup.html index f3e17a7..31aeaee 100644 --- a/mockup.html +++ b/mockup.html @@ -484,6 +484,72 @@ body{font-family:var(--font-ui);background:var(--surf);color:var(--ink);line-hei .ov-row .ov-k{color:var(--mut)} .ov-row .ov-v{font-weight:600} +/* ── СОСТАВИТЬ ДОКУМЕНТ ── */ +.create-steps{display:flex;align-items:center;gap:0;margin-bottom:28px} +.cstep{display:flex;align-items:center;gap:8px;padding:9px 16px;border-radius:10px;font-size:13px;font-weight:600;color:var(--mut);border:1.5px solid #e5e7eb;background:#fff;transition:all .2s} +.cstep.act{background:var(--bg);color:#fff;border-color:var(--bg)} +.cstep.done{background:var(--tint);color:var(--bg);border-color:var(--bg)} +.cstep-num{width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.08);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800} +.cstep.act .cstep-num{background:rgba(255,255,255,.25)} +.cstep.done .cstep-num{background:var(--bg);color:#fff} +.cstep-arrow{color:#d1d5db;font-size:18px;margin:0 6px;flex-shrink:0} + +.create-pane{display:none}.create-pane.on{display:block} + +/* Тип документа */ +.doc-type-intro{font-size:14px;color:var(--mut);margin-bottom:20px;line-height:1.5} +.doc-type-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;max-width:800px;margin-bottom:24px} +.doc-type-card{background:#fff;border:2px solid #e5e7eb;border-radius:14px;padding:18px 14px;cursor:pointer;transition:all .15s;text-align:center} +.doc-type-card:hover{border-color:var(--bg);background:var(--tint);transform:translateY(-2px);box-shadow:0 4px 14px rgba(159,18,57,.1)} +.doc-type-card.sel{border-color:var(--bg);background:var(--tint);box-shadow:0 2px 10px rgba(159,18,57,.15)} +.dtc-ico{font-size:30px;margin-bottom:8px} +.dtc-name{font-size:12px;font-weight:700;color:var(--ink);line-height:1.3} +.dtc-desc{font-size:10px;color:var(--mut);margin-top:3px} +.doc-type-next{background:var(--bg);color:#fff;border:none;border-radius:11px;padding:12px 28px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;transition:background .15s;display:none} +.doc-type-next.show{display:inline-flex;align-items:center;gap:8px} +.doc-type-next:hover{background:var(--bghv)} + +/* Форма параметров */ +.create-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:740px;margin-bottom:20px} +.cf-group{display:flex;flex-direction:column;gap:5px} +.cf-group.wide{grid-column:1/-1} +.cf-label{font-size:11px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.4px} +.cf-input{border:1.5px solid #e5e7eb;border-radius:9px;padding:10px 13px;font-size:13px;font-family:inherit;color:var(--ink);outline:none;transition:border-color .15s;background:#fff} +.cf-input:focus{border-color:var(--bg)} +.cf-select{border:1.5px solid #e5e7eb;border-radius:9px;padding:10px 13px;font-size:13px;font-family:inherit;color:var(--ink);outline:none;background:#fff;cursor:pointer} +.cf-hint{font-size:11px;color:var(--mut);margin-top:2px;line-height:1.4} +.create-form-actions{display:flex;gap:10px;margin-top:8px;max-width:740px} +.cf-back{background:#fff;color:var(--bg);border:1.5px solid var(--bg);border-radius:11px;padding:11px 22px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit} +.cf-generate{background:var(--bg);color:#fff;border:none;border-radius:11px;padding:11px 26px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:8px} +.cf-generate:hover{background:var(--bghv)} + +/* Превью документа */ +.doc-generating{text-align:center;padding:40px 20px;display:none} +.doc-generating.show{display:block} +.dg-spinner{width:48px;height:48px;border:4px solid var(--tint);border-top-color:var(--bg);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 16px} +@keyframes spin{to{transform:rotate(360deg)}} +.dg-text{font-size:15px;font-weight:700;color:var(--ink);margin-bottom:6px} +.dg-sub{font-size:13px;color:var(--mut)} + +.doc-preview-wrap{display:none;max-width:700px} +.doc-preview-wrap.show{display:block} +.doc-preview-actions{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap} +.dpa-btn{display:flex;align-items:center;gap:7px;border-radius:10px;padding:10px 18px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;border:none;transition:all .15s} +.dpa-dl{background:var(--bg);color:#fff} +.dpa-dl:hover{background:var(--bghv)} +.dpa-copy{background:#fff;color:var(--bg);border:1.5px solid var(--bg)} +.dpa-add{background:#f0fdf4;color:#166534;border:1.5px solid #86efac} +.doc-preview{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:32px 36px;font-size:13px;line-height:1.8;color:#374151;font-family:Georgia,serif} +.doc-preview h3{font-family:var(--font-ui);font-size:15px;font-weight:800;text-align:center;margin-bottom:6px;color:var(--ink)} +.doc-preview .doc-city{text-align:right;font-size:12px;color:var(--mut);margin-bottom:20px} +.doc-preview .doc-p{margin-bottom:10px} +.doc-preview .doc-article{font-weight:700;margin-top:16px;margin-bottom:6px;font-family:var(--font-ui);font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--bg)} +.doc-preview .doc-clause{margin-bottom:6px;padding-left:12px;border-left:2px solid #e5e7eb} +.doc-preview .doc-highlight{background:#fef9c3;border-radius:3px;padding:1px 3px} +.doc-preview .doc-blank{background:#e5e7eb;border-radius:3px;padding:1px 8px;color:var(--mut);font-style:italic} +.doc-preview .doc-parties{background:#f8f9fa;border-radius:10px;padding:14px 16px;margin-bottom:16px;font-size:12px} +.doc-preview .doc-parties b{display:block;margin-bottom:4px;font-family:var(--font-ui)} + /* ── ЧАСЫ В САЙДБАРЕ ── */ .side-clock{padding:10px 16px 6px;border-top:1px solid rgba(255,255,255,.07);margin-top:auto} .side-clock-day{font-size:10px;font-weight:600;color:rgba(255,255,255,.45);text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px} @@ -1131,6 +1197,7 @@ body{font-family:var(--font-ui);background:var(--surf);color:var(--ink);line-hei 📄 Дело: Кухня ⏱️ Сроки 📋 Шаблоны + ✍️ Составить документ ↩ Выйти (в начало)
Среда
@@ -1611,6 +1678,152 @@ body{font-family:var(--font-ui);background:var(--surf);color:var(--ink);line-hei
🚪
Расторжение
выйти без потерь
+ +
+
Кабинет

Составить документ

+
Составлю любой документ под ваши параметры. Выберите тип, заполните ключевые данные — черновик будет готов за 2 минуты. Сохранено на вашем устройстве 💛
+ + +
+
1
Тип документа
+
+
2
Параметры
+
+
3
Черновик готов
+
+ + +
+
Выберите тип — Елена подберёт структуру и заполнит шаблон под ваши данные
+
+
+
🤝
+
Агентский договор
+
поручение + вознаграждение
+
+
+
📑
+
Доверенность
+
полномочия представителя
+
+
+
✉️
+
Претензия
+
оплата / неустойка
+
+
+
📦
+
Договор поставки
+
товар + сроки + ответственность
+
+
+
🏠
+
Аренда
+
помещение / оборудование
+
+
+
🔒
+
NDA / Конфиденциальность
+
защита данных и ноу-хау
+
+
+
💼
+
Трудовой договор
+
оформление сотрудника
+
+
+
🚪
+
Расторжение
+
выйти без потерь
+
+
+ +
+ + +
+
Агентский договор
+
+ +
Полное наименование или ФИО
+
Полное наименование
+
Что именно делает агент
+
Сумма и периодичность
+
Начало и окончание
+
Суд при спорах
+
Или: в т.ч. НДС 20%
+
+
Заполните ключевые параметры — остальное (нумерацию, ссылки на нормы, форс-мажор, реквизиты) я добавлю автоматически 💛
+
+ + +
+
+ + +
+ + +
+
+
Елена составляет черновик…
+
Проверяю нормы ГК РФ · подбираю формулировки · 2–3 секунды
+
+ + +
+
+ + + + +
+ +
+

АГЕНТСКИЙ ДОГОВОР № ___

+
г. Краснодар     28 мая 2025 г.
+ +
+ ПРИНЦИПАЛ: ИП Васильев Руслан Геннадьевич, ОГРНИП ____________, ИНН ____________, именуемый в дальнейшем «Принципал»,

+ АГЕНТ: ООО «Зов Ресторанс», ИНН ____________, КПП ____________, именуемое в дальнейшем «Агент»,

+ совместно именуемые «Стороны», заключили настоящий договор о нижеследующем: +
+ +
1. Предмет договора
+
1.1. Принципал поручает, а Агент обязуется за вознаграждение совершать от имени и за счёт Принципала следующие действия: поиск и привлечение клиентов для ресторана.
+
1.2. Агент действует в пределах полномочий, предоставленных настоящим договором и доверенностью (при необходимости).
+ +
2. Вознаграждение агента
+
2.1. Вознаграждение Агента составляет 150 000 (сто пятьдесят тысяч) рублей ежемесячно. НДС не облагается — Агент применяет УСН.
+
2.2. Изменение размера вознаграждения допускается исключительно по письменному соглашению Сторон.
+
2.3. Оплата производится в течение 5 (пяти) рабочих дней с момента подписания акта за отчётный период.
+ +
3. Порядок исполнения
+
3.1. Агент представляет отчёт не позднее 5-го числа месяца, следующего за отчётным, с приложением первичных документов.
+
3.2. Принципал вправе заявить возражения по отчёту в течение 3 (трёх) рабочих дней. По истечении данного срока отчёт считается принятым.
+
3.3. Привлечение субагентов допускается исключительно с письменного согласия Принципала.
+ +
4. Ответственность сторон
+
4.1. Ответственность Принципала ограничена суммой вознаграждения за 3 (три) последних месяца. Упущенная выгода возмещению не подлежит.
+
4.2. За просрочку оплаты Принципал уплачивает пеню в размере 0,1% от суммы за каждый день просрочки.
+ +
5. Срок и расторжение
+
5.1. Договор вступает в силу с даты подписания и действует 1 (один) год.
+
5.2. Каждая из Сторон вправе расторгнуть договор, уведомив другую сторону письменно не менее чем за 30 (тридцать) дней.
+
5.3. Пролонгация допускается только при наличии письменного согласия обеих Сторон не позднее 30 дней до окончания срока.
+ +
6. Разрешение споров
+
6.1. Все споры рассматриваются в арбитражном суде по месту нахождения Принципала.
+ +
+ 📌 Черновик сгенерирован ЗАЩИТА · требует проверки перед подписанием · данные хранятся на вашем устройстве +
+
+
+
+ +
+ @@ -2694,6 +2907,91 @@ window.addEventListener('DOMContentLoaded', function(){ setTimeout(updateKPI, 100); }); +/* ── СОЗДАНИЕ ДОКУМЕНТА ── */ +var _selectedDocType = null; + +var _DOC_FORMS = { + agent: { + title: 'Агентский договор', + fields: [ + {id:'df-principal',label:'Принципал (вы)',placeholder:'ИП Васильев Руслан Геннадьевич',hint:'Полное наименование или ФИО',col:'half'}, + {id:'df-agent',label:'Агент (контрагент)',placeholder:'ООО «Зов Ресторанс»',hint:'Полное наименование',col:'half'}, + {id:'df-subject',label:'Предмет поручения',placeholder:'Поиск и привлечение клиентов для ресторана',hint:'Что именно делает агент',col:'full'}, + {id:'df-fee',label:'Вознаграждение',placeholder:'150 000 руб./мес.',hint:'Сумма и периодичность',col:'half'}, + {id:'df-term',label:'Срок договора',placeholder:'1 год с даты подписания',hint:'Дата начала и окончания',col:'half'}, + {id:'df-court',label:'Подсудность',placeholder:'По месту нахождения Принципала',hint:'Суд при возникновении споров',col:'half'}, + {id:'df-nds',label:'НДС',placeholder:'Не облагается — УСН',hint:'Или: в т.ч. НДС 20%',col:'half'}, + ] + }, + trust: { + title: 'Доверенность', + fields: [ + {id:'df-principal',label:'Доверитель',placeholder:'ИП Васильев Руслан Геннадьевич',hint:'ФИО и паспортные данные',col:'half'}, + {id:'df-attorney',label:'Поверенный',placeholder:'Иванов Иван Иванович',hint:'ФИО и паспортные данные',col:'half'}, + {id:'df-powers',label:'Полномочия',placeholder:'Подписание договоров, переговоры с контрагентами',hint:'Что может делать поверенный',col:'full'}, + {id:'df-term',label:'Срок действия',placeholder:'1 год',hint:'Дата выдачи и срок',col:'half'}, + {id:'df-subst',label:'Передоверие',placeholder:'Без права передоверия',hint:'Разрешено ли передоверие',col:'half'}, + ] + }, + claim: { + title: 'Претензия', + fields: [ + {id:'df-sender',label:'Отправитель',placeholder:'ИП Васильев Р.Г.',hint:'Ваши данные',col:'half'}, + {id:'df-receiver',label:'Получатель',placeholder:'ООО «Контрагент»',hint:'Кому направляете',col:'half'}, + {id:'df-basis',label:'Основание',placeholder:'Договор поставки № 12 от 01.04.2025',hint:'Договор или обязательство',col:'full'}, + {id:'df-violation',label:'Нарушение',placeholder:'Не оплачена поставка товара на сумму 500 000 руб.',hint:'Что нарушено',col:'full'}, + {id:'df-demand',label:'Требование',placeholder:'Оплатить в течение 10 дней',hint:'Что требуете и в какой срок',col:'full'}, + {id:'df-penalty',label:'Неустойка',placeholder:'0,1% за каждый день просрочки',hint:'Размер пени по договору или ст. 395 ГК',col:'half'}, + ] + } +}; + +function selectDocType(type, el) { + _selectedDocType = type; + document.querySelectorAll('.doc-type-card').forEach(function(c){ c.classList.remove('sel'); }); + if(el) el.classList.add('sel'); + var btn = document.getElementById('doc-type-next'); + if(btn){ btn.classList.add('show'); btn.textContent = 'Заполнить параметры →'; } +} + +function goCreateStep(step) { + document.querySelectorAll('.create-pane').forEach(function(p){ p.classList.remove('on'); }); + document.querySelectorAll('.cstep').forEach(function(s,i){ + s.classList.toggle('act', i+1 === step); + s.classList.toggle('done', i+1 < step); + var num = s.querySelector('.cstep-num'); + if(num) num.textContent = (i+1 < step) ? '✓' : (i+1); + }); + if(step === 1){ document.getElementById('cp-type').classList.add('on'); } + else if(step === 2){ buildCreateForm(); document.getElementById('cp-form').classList.add('on'); } + else if(step === 3){ document.getElementById('cp-preview').classList.add('on'); startDocGeneration(); } + window.scrollTo(0,0); +} + +function buildCreateForm() { + var type = _selectedDocType || 'agent'; + var def = _DOC_FORMS[type] || _DOC_FORMS.agent; + var title = document.getElementById('cf-doc-title'); + if(title) title.textContent = def.title; + var grid = document.getElementById('create-form-fields'); + if(!grid) return; + grid.innerHTML = def.fields.map(function(f){ + var cls = f.col === 'full' ? 'cf-group wide' : 'cf-group'; + return '
'+f.hint+'
'; + }).join(''); +} + +function startDocGeneration() { + var spinner = document.getElementById('doc-generating'); + var preview = document.getElementById('doc-preview-wrap'); + if(spinner){ spinner.classList.add('show'); } + if(preview){ preview.classList.remove('show'); } + setTimeout(function(){ + if(spinner) spinner.classList.remove('show'); + if(preview) preview.classList.add('show'); + }, 2200); +} + /* ── ЧАСЫ ── */ (function(){ var DAYS = ['Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота']; @@ -2956,7 +3254,7 @@ window.addEventListener('hashchange', handleHash); function tab(name){ document.querySelectorAll('.tabpane').forEach(p=>p.classList.toggle('on',p.id==='p-'+name)); document.querySelectorAll('.side a').forEach(a=>a.classList.remove('on')); - const map={cases:'t-cases',case:'t-case',sroki:'t-sroki',shab:'t-shab'}; + const map={cases:'t-cases',case:'t-case',sroki:'t-sroki',shab:'t-shab',create:'t-create'}; const el=document.getElementById(map[name]); if(el) el.classList.add('on'); window.scrollTo(0,0); }