diff --git a/src/webparts/requestPortal/forms/PaymentRequest/services/invoice.service.ts b/src/webparts/requestPortal/forms/PaymentRequest/services/invoice.service.ts index 857d08f..69356fd 100644 --- a/src/webparts/requestPortal/forms/PaymentRequest/services/invoice.service.ts +++ b/src/webparts/requestPortal/forms/PaymentRequest/services/invoice.service.ts @@ -8,7 +8,7 @@ import { WebPartContext } from '@microsoft/sp-webpart-base'; import { APPROVAL_API_CLIENT_ID, DATA_SITE_URL, DICTIONARY_API_BASE_URL } from '../../../shared/config'; import { PAYMENT_INVOICES_LIBRARY_TITLE } from '../../../shared/listTitles'; import { getSP } from '../../../shared/pnp/pnpjs'; -import { fileStamp, storedFileName } from '../../../shared/chat/chatFileNames'; +import { fileStamp } from '../../../shared/chat/chatFileNames'; /** Колонка библиотеки, куда OCR кладёт распознанный текст счёта. */ const FILE_CONTENT_FIELD = 'file_content'; @@ -37,10 +37,13 @@ export function validateInvoiceFile(file: File): string | undefined { /** * Сохранить файл счёта в библиотеку. Делаем это сразу при выборе файла, до * сохранения самой заявки: OCR работает с элементом библиотеки, а не с вложением. - * Отметка времени в имени исключает перезапись счёта с тем же именем из другой заявки. + * Имя в библиотеке — только латиница и цифры: OCR-сервис получает имя в multipart и + * на кириллице теряет расширение («unsupported file type ''»). Исходное имя + * хранится в данных заявки (InvoiceFileName), поэтому в библиотеке оно не нужно. + * Метка времени и случайный хвост исключают перезапись счёта другой заявки. */ export async function storeInvoice(file: File): Promise { - const storedName = storedFileName(fileStamp(new Date()), 1, file.name); + const storedName = `invoice-${fileStamp(new Date())}-${Math.random().toString(36).slice(2, 8)}.pdf`; const root = getSP().web.lists.getByTitle(PAYMENT_INVOICES_LIBRARY_TITLE).rootFolder; const added = await root.files.addUsingPath(storedName, file); // Id элемента библиотеки нужен OCR, а addUsingPath отдаёт только сведения о файле.