fix: validate firm email consistently before bid output

This commit is contained in:
2026-09-06 14:04:00 +03:00
parent ed6280a08c
commit 2f34b42dc4
5 changed files with 50 additions and 6 deletions
+12
View File
@@ -9,3 +9,15 @@ export const bidFirmFields = [
{ k: 'telefon', l: 'Telefon', zorunlu: true },
{ k: 'eposta', l: 'E-posta', zorunlu: true },
];
// Form-level completeness and syntax only; no registry or legal eligibility check.
export function bidFirmIssues(firma={}) {
return bidFirmFields.flatMap(field=>{
const raw=firma?.[field.k];
const text=typeof raw==='string' || typeof raw==='number' ? String(raw).trim() : '';
if(field.zorunlu && !text)return [{...field,message:`${field.l} bilgisini doldurun.`}];
if(field.k==='eposta' && text && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(text))
return [{...field,message:'E-posta adresini ad@firma.com biçiminde girin.'}];
return [];
});
}
+2 -2
View File
@@ -1,4 +1,4 @@
import {bidFirmFields} from './bidFirmFields.js';
import {bidFirmIssues} from './bidFirmFields.js';
import {sourceRows,bidSourceOptions,bidSourceSnapshot,restoreBidPrices} from './bidSource.js';
import {selectBidLots} from './bidLots.js';
import {bidTotal,bidAmount,validateBidRows} from './bidValidation.js';
@@ -21,7 +21,7 @@ export function preparationSummary(tender,vault,now=new Date()) {
if(draft.reviewedSource!==snapshot)add('source','Resmi kaynak karşılaştırması gerekli.');
if(analysis.sourceReview?.status==='partial')add('analysis','Analiz kısmi; kaynak kontrolünü tamamlayın.');
if(options.needsSelection)add('itemSource','Resmi cetvele uygun kalem listesini seçin.');
for(const field of bidFirmFields)if(field.zorunlu&&!String(draft.firma?.[field.k] || '').trim())add(`firm:${field.k}`,`${field.l} kayıtlı taslakta eksik.`);
for(const issue of bidFirmIssues(draft.firma))add(`firm:${issue.k}`,issue.message);
const type=bidTypeForForm(tender.aciklama,analysis.procurementTerms?.bidType),bidType=draft.teklifTuru || type.type || '';
if(!['birim','goturu'].includes(bidType)||type.status==='conflict'||(type.type&&type.type!==bidType))add('bidType','Teklif türünü doğrulayın.');
const validity=bidValidityForForm(tender.aciklama,analysis.procurementTerms?.bidValidity),days=Number(draft.gecerlilikGun || validity.days || '');