Необходимо сделать визард для загрузки платежей (Битрикс / Коробка)
Для людей работающих с Битрикс (CRM, коробка).
Необходимо сделать загрузчик платежей (траншей) в инфоблок, который будет брать из TXT файла данные и загружать их в элементы ИБ, перед этим сверяя есть ли сделка подпадающая по условиям.
Видение:
На странице размещен компонент который реализует логику.
При заходе пользователя проверяем таблицу HL (файлы к загрузке, ID = 30) если в базе не обнаружено записей в статусе "Новый файл к загрузке" для этого пользователя - выводить просто перечень файлов которые уже были загружены из таблицы HL (файлы к загрузке ID = 30).
Если же есть запись со статусом "Новый файл к загрузке", то выводить форму загрузки на втором этапе.
Далее пользователь пощелкивает по этапам и в завершении получает загруженные транши из TXT файла в ИБ Транши (пусть будет ID = 25). На любом этапе кроме первого (загрузка файлов), пользователь может "отменить загрузку" тогда он возвращается в список ранее загруженных файлов а текущей записи в HL 30 присваивается статус = Отмененная загрузка.
Этапы:
1. Этап: Загрузка файла
2. Этап: Сверка полей
3. Этап: Загрузка траншей
4. Этап: Вывод всех траншей таблицей. Автоматически привязанные к сделкам / транши, которые не удалось привязать
5. Этап: Сверка того, что выбрал пользователь на этапе 4 и "перепривязка" сделок или траншей, окончательное "сохранение/удаление/изменение" всех траншей. Присвоение статуса файлу в HL 30 - "Файл импортирован".
Первый этап
Человек заходит на страницу, видит кнопку загрузить файл.
Нажимает её, выбирает txt файл. Если выбрал другой тип файла - выдать ошибку. Нажимает кнопку "Загрузить"
Создаем в HL (файлы к загрузке ID = 30) блоке запись: Пользователь = 111 (тот который файл загрузил), Дата загрузки = текущее время, ID = уникальный ид записи, Файл = сам текстовый файл, Статус = Новый файл к загрузке
Второй этап:
Отображаются поля из TXT файла и поля, которые предопределены в системе
Также на этой странице нужно предусмотреть "Пример импортируемых данных" по аналогии с дефолтным загрузчиком из битры. (Поля для ИБ 25 и HL 30 будут даны далее, вопрос ещё к обсуждению с тобой Игорь)
Третий этап:
При нажатии "Далее" отображаем пользователю лоадер загрузки и распознавания транша. При загрузке транша в ИБ 25 в определенное поле должен прокидываться ID записи из HL 30, чтобы потом эти транши можно было идентифицировать от какой "загрузки" они там появились. Транши по файлу сразу создаются в ИБ 25 с автоматически распознанными полями.
На этом этапе нужно реализовать такую логику: Смотрим в 1 поле, Назначение платежа. Назначения платежа имеет вид:
НазначениеПлатежа=ЗА 05/08/2020 Вероника Абыльдаева Агентский договор № ДКП-ХХ-1-823/20
Нужно строчку распарсить и увидеть там номер ДКП-ХХ-1-823/20, Сделки в системе в поле UF_CRM_1526639495 имеют точно такой же номер, вот к этой сделке этот транш и нужно привязать. Если найти не удалось, то на 4 этапе строчка подсвечивается "красным", чтобы пользователь сам мог привязать транш к сделке.
Четвертый этап:
Высвечиваются все загруженные в систему транши таблицей. Поля "Связь со сделкой / Связь с контактом / Статья транша " должны быть доступны к редактированию. Если автоматически установить связь со сделкой было невозможно, кликая на поле "Связь со сделкой" пользователь должен выбрать из всех имеющихся сделок ту, которая связана с этим траншем. Либо может не выбирать, если транш никак не связан со сделкой. Статья транша - по умолчанию "Движение по договору". Но пользователь пусть имеет возможность поменять статью. К примеру если это были "расходы на курьерскую службу" чтобы мог её выбрать. Связь с контактом - по аналогии со связью сделки, при одном условии. Если у нас в поле "связь со сделкой" найдена сделка, то сюда автоматически подвязывается тот контакт, от которого идет сделка. Если пользователь в ходе просмотра траншей меняет сделку, то соответственно меняется контакт. Но в ручную контакт также можно "переопределить" или задать произвольный.
Пятый этап
Все изменения сделанные на 4 этапе заносятся в ИБ 25 в те транши, которым они соответствуют. На этом этапе записи в HL 30, присваивается "Импортирован" и пользователю показывают просто весь перечень загрузок который он производил.
Поля для ИБ 25 (транши):
ID - системное
Дата создания - системное
Дата изменения - системное
Кто создал / Кто изменил - системные
Связь с контактом, тип связь с эл. CRM, контакт
Связь со сделкой, тип связь с эл. CRM, Сделка
Статья транша, тип связь с элементами ИБ, (нужно создать ИБ к примеру 40, где будут названия статей) (по умолчанию = Движение по договору)
Далее идут строчки сопоставимые с файлом TXT, остальные строчки из TXT мы не учитываем, их также можно "вырезать" на 2 этапе, не показывая для сопоставления пользователю, но можно и оставить.
Номер транша = Номер из txt файла, тип Строка
Дата транша = Дата транша из txt файла, формат 06.08.2020
Сумма = Сумма, тип Число
Назначение платежа = НазначениеПлатежа, тип Строка
Плательщик = Плательщик1, тип Строка
ИНН плательщика = ПлательщикИНН, тип Строка (ИНН бывают не только цифры, если западные компании к примеру)
Р/С плательщика = ПлательщикСчет, тип Строка
КПП плательщика = ПлательщикКПП, тип Строка
КПП получателя = ПолучательКПП, тип Строка
Банк плательщика = ПлательщикБанк1, Тип строка
БИК плательщика = ПлательщикБИК, тип СТрока
К/С плательщика = ПлательщикКорсчет, тип Строка
Получатель транша = Получатель1, тип Строка
ИНН получателя = ПолучательИНН, тип Строка
Р/С получателя = ПолучательСчет, тип Строка
Банк получателя = ПолучательБанк1, тип Строка
БИК получателя = ПолучательБИК, тип Строка
К/С получателя = ПолучательКорсчет, тип Строка
Поля для HL 30:
ID - системное
Дата загрузки файла, тип дата и время
Пользователь, тип число, ID пользователя
Файл, тип файл
Статус, тип Список. Элементы = Новый файл к загрузке / Файл импортирован / Импорт файла отменен