Добавить в систему учёт подрядчиков с индивидуальными прайсами на монтаж МАФ и возможность формировать Excel-спецификации на монтаж по площадке.
Поля (все редактируемые в режиме просмотра):
| # | Поле | Тип | Примечание |
|---|---|---|---|
| 1 | Наименование подрядчика | текст | короткое имя для выпадающих списков |
| 2 | Юридическое имя | текст | полное юр. наименование |
| 3 | № договора | текст | |
| 4 | Дата договора | дата | |
| 5 | ФИО руководителя | текст | |
| 6 | Форма организации | select | ИП / ООО / Самозанятый |
| 7 | Налог | select | Без НДС / 5% / 7% / 15% / 22% |
| 8 | Шапка в договоре | textarea (большое поле) | используется в шаблоне спецификации |
Все 8 полей обязательны для создания и сохранения подрядчика.
Вкладка «Цены монтажа» доступна ролям Администратор и Помощник руководителя. Эти же роли могут редактировать цены монтажа и наименования для спецификации.
Внутри карточки подрядчика — вкладка «Цены монтажа».
Таблица формируется на основе каталога МАФ текущего года. Для каждого нового года прайс подрядчика начинается пустым: каталог текущего года выводится, а поля «Наименование по спецификации» и «Цена монтажа» изначально пустые.
Колонки:
| # | Колонка | Источник |
|---|---|---|
| 1 | Картинка МАФ | каталог МАФ текущего года |
| 2 | Артикул МАФ | каталог МАФ текущего года |
| 3 | Номер номенклатуры | каталог МАФ текущего года |
| 4 | Наименование по спецификации | заполняется импортом или руками (уникально для подрядчика) |
| 5 | Цена монтажа | заполняется импортом или руками (уникально для подрядчика) |
У каждого подрядчика — собственный набор значений для колонок 4 и 5.
Редактирование прямо в строке таблицы не требуется. Редактирование значений колонок 4 и 5 выполняется через модальное окно редактирования строки либо через импорт.
Если МАФ убран из каталога, его цена у подрядчика сохраняется и строка остаётся в списке с пометкой «МАФ недоступен».
Импорт и экспорт используют единый набор колонок (5 колонок), полностью совпадающий с отображением в таблице «Цены монтажа»:
Редактируемые при импорте: только «Наименование по спецификации» и «Цена монтажа». Остальные колонки (картинка, артикул, номер номенклатуры) — справочные; берутся из каталога МАФ и при импорте игнорируются (используются только для идентификации строки по артикулу).
Пустые значения при импорте:
0.Кнопка «Импортировать/обновить цены».
Логика:
Кнопка «Экспортировать» — выгружает таблицу цен в Excel в формате, описанном в п. 3.2. Файл полностью совместим с импортом: можно поправить значения в редактируемых колонках и загрузить обратно.
Поля (каждое с подписью сверху):
| # | Поле | Тип | Поведение |
|---|---|---|---|
| 1 | Подрядчик | select | список из «Наименование подрядчика» |
| 2 | № спецификации | текст | ручной ввод |
| 3 | Дата спецификации | date | по умолчанию — сегодня, редактируемо |
| 4 | Начало работ | date | пусто по умолчанию |
| 5 | Окончание работ | date | авто = «Начало работ» + 4 календарных дня при заполнении п.4, редактируемо |
| 6 | Кнопка «Сформировать» | — | генерирует Excel |
Заказчиком предоставлен шаблон (Приложение «Форма Спецификации»). Привязка полей:
| Строка | Содержимое | Источник |
|---|---|---|
| 2 | № договора и дата договора | карточка подрядчика |
| 5 | № спецификации | модальное окно |
| 9 | «Шапка в договоре» | карточка подрядчика |
| 12 | г. Москва, <Название площадки> |
площадка |
| 14+ | Таблица позиций (см. ниже) | каталог подрядчика + площадка |
| 21 | Итого = сумма колонки «Стоимость» | расчёт |
| 22 | НДС (только если налог ≠ «Без НДС») | расчёт по формуле |
| 23 | Итого суммой + прописью | расчёт + пропись |
| 24 | «Без НДС» или «В т.ч. НДС X%» + сумма | карточка подрядчика |
| 25, 26 | Начало работ / Окончание работ | модальное окно |
| 27 | № договора и дата | карточка подрядчика |
| 30 | Юридическое имя | карточка подрядчика |
| 31 | Должность подписанта (см. маппинг) | карточка подрядчика |
| 34 | ФИО руководителя | карточка подрядчика |
В исходном ТЗ п. xiii была указана «Строка 21». Подтверждено, что это опечатка: верная строка для должности подписанта — строка 31.
Колонки:
Только если в карточке подрядчика выбран налог ≠ «Без НДС»:
| Ставка | Формула |
|---|---|
| 5% | ИТОГО / 1,05 × 0,05 |
| 7% | ИТОГО / 1,07 × 0,07 |
| 15% | ИТОГО / 1,15 × 0,15 |
| 22% | ИТОГО / 1,22 × 0,22 |
Если «Без НДС» — строка 22 оставляется пустой полностью (не формируется).
Строка 24 при этом содержит пометку «Без НДС». Для ставок НДС строка 24 содержит текст «В т.ч. НДС X%» и рассчитанную сумму НДС.
Формат: 157 300 рублей 00 копеек (Сто пятьдесят семь тысяч триста рублей 00 копеек).
Правила:
| Форма | Текст |
|---|---|
| ИП | Индивидуальный предприниматель |
| ООО | Генеральный директор |
| Самозанятый | Самозанятый |
Новые сущности:
contractors — карточка подрядчика (8 полей + признак скрытия из выпадающих списков + timestamps).contractor_installation_prices — цены монтажа: contractor_id, product_sku_id, catalog_year, name_in_spec, price.История сформированных спецификаций не хранится. Документ формируется и скачивается «на лету»; дальнейшее хранение выполняется вне CRM.
Мультигодовая структура: цены монтажа привязаны к году каталога. При наступлении нового года прайс подрядчика не копируется из прошлого года; значения для нового каталога заполняются заново вручную или импортом.
Часть вопросов закрыта ответами заказчика и перенесена в это ТЗ.
Остаются открытыми:
Развёрнутый список вопросов к заказчику: contractors-questions.md. Ответы заказчика: contractors-answers.md.