fix: resolve current bid source by IKN and track output header changes
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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} : {}),
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user