fix(ct):пофиксил дублирование позиций в таблице а также убрал добавление поставщика безКП в таблицу
This commit is contained in:
+19
-2
@@ -11,15 +11,32 @@ export interface PersistStep2Args {
|
||||
noOfferSuppliers: NoOfferEntry[];
|
||||
}
|
||||
|
||||
// Несколько КП одного поставщика (повторная загрузка, тот же КП под другим именем файла) получают
|
||||
// один и тот же supplierSpId — saveSupplierWithOffer находит поставщика по имени. Без отбора
|
||||
// в таблице сравнения появляется дубль колонки с тем же id, а офферы обоих файлов складываются
|
||||
// в одну ячейку (задвоенные строки позиций). Оставляем последний загруженный файл поставщика,
|
||||
// но обработанный файл не вытесняем тем, что ещё в процессе.
|
||||
function pickLatestFilePerSupplier(kpFiles: KpFile[]): KpFile[] {
|
||||
const fileBySupplier = new Map<string, KpFile>();
|
||||
kpFiles.forEach(f => {
|
||||
if (!f.supplierName) return;
|
||||
const supplierKey = f.supplierSpId !== undefined ? String(f.supplierSpId) : f.supplierName;
|
||||
const existing = fileBySupplier.get(supplierKey);
|
||||
const canReplace = !existing || f.status === 'done' || existing.status !== 'done';
|
||||
if (canReplace) fileBySupplier.set(supplierKey, f);
|
||||
});
|
||||
return Array.from(fileBySupplier.values());
|
||||
}
|
||||
|
||||
// Строит поставщиков с КП и их офферы из результатов потока (Syntex). Вынесено из persistStep2,
|
||||
// чтобы ту же логику использовал инкрементальный persist в useKpProcessing (поставщик должен
|
||||
// доходить до Шага 3 даже без кнопки «Сохранить и продолжить»).
|
||||
export function buildKpSuppliersAndOffers(
|
||||
kpFiles: KpFile[],
|
||||
allKpFiles: KpFile[],
|
||||
currencyRates: CurrencyRate[],
|
||||
): { suppliers: Supplier[]; offers: SupplierOffer[] } {
|
||||
const kpFiles = pickLatestFilePerSupplier(allKpFiles);
|
||||
const suppliers: Supplier[] = kpFiles
|
||||
.filter(f => f.supplierName)
|
||||
.map(f => ({
|
||||
id: f.supplierSpId ? String(f.supplierSpId) : f.localId,
|
||||
spId: f.supplierSpId,
|
||||
|
||||
Reference in New Issue
Block a user