diff --git a/src/webparts/requestPortal/forms/PaymentRequest/README.md b/src/webparts/requestPortal/forms/PaymentRequest/README.md index f6e87cb..5a7b624 100644 --- a/src/webparts/requestPortal/forms/PaymentRequest/README.md +++ b/src/webparts/requestPortal/forms/PaymentRequest/README.md @@ -17,7 +17,7 @@ - **Условия оплаты, доставки и срок** — из «Критериев» СТ по победителю. - **Общая сумма** СТ — сумма предложений победителя в «Оценке поставщиков» (смешанные валюты — в тенге). У потребности её нет, берётся из счёта. - **Сумма оплаты** может быть меньше общей (транши). Сумма всех оплат по основанию (прежние + эта) не может превышать общую — при превышении поле подсвечивается, отправку это **не** блокирует. -- **Ранее поданные заявки на оплату** — читаются из списка данных этой же формы по `BasisKey` (`ct:` / `need:`), без черновиков, отклонённых и возвращённых. Только текущая партиция списка. Снимок пишется в `PreviousPaymentsJson`. +- **Ранее поданные заявки на оплату** — по `BasisKey` (`ct:` / `need:`) через approval-route `GET /api/basis-requests` по всем партициям, без черновиков, отклонённых и возвращённых. Сервер читает от имени приложения, поэтому видны и чужие заявки (права на элементы разорваны поштучно); номер становится ссылкой, только если у пользователя есть права открыть заявку. Снимок пишется в `PreviousPaymentsJson`; черновик и возвращённая при открытии перечитывают список заново. - **Счёт (PDF)**: сначала сохраняется в библиотеку «Счета на оплату», затем `POST /Document/extractPDFText` (OCR записывает текст в `file_content` до ответа, колонка читается сразу), затем ИИ (`/Proxy/Gemini`) достаёт номер счёта, поставщика, БИН, IBAN, валюту, суммы и позиции и подставляет их (назначение платежа — «Оплата по счёту № …»). При сбое OCR/ИИ счёт остаётся приложенным, поля заполняются вручную. - **Таблица позиций**: код, наименование, ед. изм. и количество — из СТ/потребности; позиция поставщика — из его КП; позиция из счёта. ИИ сопоставляет позиции по смыслу, а количество и единицы сверяет код (`positions.ts`). Статусы: совпало / расхождение / нет в счёте / нет в СТ. Результат пишется в `PositionsJson`. - **Код позиции потребности** — `lineNumber` (номер строки табличной части 1С, уникален в пределах заявки).