fix: resolve current bid source by IKN and track output header changes

This commit is contained in:
2026-09-06 14:59:23 +03:00
parent 528933aa1b
commit ff1a4bca70
5 changed files with 40 additions and 2 deletions
+2 -1
View File
@@ -5,6 +5,7 @@ import { bidValidityForForm, bidTypeForForm } from '../services/bidTerms';
import { createBidWorkbook, downloadBidWorkbook } from '../services/bidWorkbook';
import { getToken } from '../services/auth';
import { getAllUserData, listDocuments, downloadDocument, validateDocumentTextReview } from '../services/account';
import { resolveCurrentTender } from '../services/tenderState';
import { tenderDateKey } from '../services/tenderCalendar';
import React, { useState, useMemo, useEffect, useRef, useId } from 'react';
import { bidRowTotal, validateBidRows, bidTotal, bidAmount } from '../services/bidValidation';
@@ -38,7 +39,7 @@ const bosFirma = () => Object.fromEntries(ALANLAR.map((a) => [a.k, '']));
export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocus }) => {
const { userProfile, mutateTender, savingCount, authUser, tenders } = useApp();
const tender = {...selectedTender, ...tenders.find(t => t.id === selectedTender?.id)};
const tender = resolveCurrentTender(selectedTender,tenders);
const storedDraft = tender?.bidDraft || {};
const [vault,setVault] = useState({loading:true,error:null,documents:[]});
const [vaultRefresh,setVaultRefresh] = useState(0);
+1
View File
@@ -31,6 +31,7 @@ export function bidSourceSnapshot(tender, results, rows = sourceRows(tender, res
return JSON.stringify({
tender: tender?.ikn || tender?.id,
announcement: tender?.aciklama || '',
outputHeader: {title:tender?.baslik || '',institution:tender?.kurum || '',date:tender?.ihaleTarihi || tender?.tarih || ''},
deadline: [tender?.tarih || '', tender?.saat || ''],
status: tender?.durum || '',
...(tender?.kazananFirma ? {winner:tender.kazananFirma} : {}),
+9
View File
@@ -28,3 +28,12 @@ export function tenderSnapshot(t) {
export function publicTender(tender) {
return Object.fromEntries(Object.entries(tender).filter(([key]) => !USER_STATE_FIELDS.includes(key)));
}
/** Source response ids can rotate; procurement identity is the IKN when present. */
export function resolveCurrentTender(selected, tenders) {
const key=tenderStateKey(selected);
if(!key)return selected || {};
const current=tenders.find(t=>tenderStateKey(t)===key) ||
(!selected?.ikn ? tenders.find(t=>t.id===selected?.id) : undefined);
return current ? {...selected,...current} : selected;
}