import {paymentBanks,paymentOptions,parsePaymentAmount,calculatePayment,rateDate} from './payment-core.mjs'; const form=document.querySelector('#paymentForm'),mode=form.elements.mode,bank=form.elements.bank,type=form.elements.paymentType,term=form.elements.term,amount=form.elements.amount; const output=document.querySelector('#paymentResult'),empty=document.querySelector('#paymentEmpty'),error=document.querySelector('#paymentError'); const money=n=>new Intl.NumberFormat('tr-TR',{style:'currency',currency:'TRY'}).format(n),pct=n=>'%'+new Intl.NumberFormat('tr-TR',{maximumFractionDigits:2}).format(n); function invalidate(){output.hidden=true;empty.hidden=false;error.hidden=true;amount.removeAttribute('aria-invalid');} function options(select,items){select.replaceChildren(...items.map(([value,label])=>{const o=document.createElement('option');o.value=value;o.textContent=label;return o;}));} function terms(){const list=paymentOptions(mode.value,bank.value,type.value);options(term,list.map(o=>[o.value,o.label+' · '+pct(o.rate)]));document.querySelector('#paymentTermField').hidden=!list.length;term.disabled=!list.length;document.querySelector('#paymentTypeField').hidden=mode.value!=='dealer';type.disabled=mode.value!=='dealer';document.querySelector('#paymentTermLabel').textContent=mode.value==='credit'?'Taksit sayısı':'Vade';document.querySelector('#paymentHint').textContent=mode.value==='credit'&&bank.value!=='single'?'Toplam ödeme aylık taksitlere bölünür.':list.length?'Toplam tutar vade sonunda tek seferde ödenir.':'Tek seferde ödeme hesabı.';invalidate();} function bankChanged(){options(type,bank.value==='isbank'?[['deferred','Vadeli'],['cash','Peşin']]:[['deferred','Vadeli']]);terms();} function methodChanged(){options(bank,paymentBanks[mode.value]);bankChanged();} mode.addEventListener('change',methodChanged);bank.addEventListener('change',bankChanged);type.addEventListener('change',terms);form.addEventListener('input',invalidate);term.addEventListener('change',invalidate); amount.addEventListener('blur',()=>{try{amount.value=new Intl.NumberFormat('tr-TR',{maximumFractionDigits:2}).format(parsePaymentAmount(amount.value));}catch{}}); form.addEventListener('submit',event=>{ event.preventDefault();invalidate();try{ const result=calculatePayment({amount:parsePaymentAmount(amount.value),mode:mode.value,bank:bank.value,type:type.value,term:term.value}); document.querySelector('#paymentResultChoice').textContent=bank.selectedOptions[0].textContent+' · '+result.termLabel; const rows=[['Ürün tutarı (KDV dahil)',money(result.amount)],['Hizmet komisyonu ('+pct(result.feeRate)+(result.feeVat?' + KDV':', KDV dahil')+')',money(result.commission)]]; if(!result.cash)rows.push([result.installment?'Taksit farkı oranı':'Vade farkı oranı',pct(result.rate)],['Finansman farkı',money(result.finance)],['BSMV (%5)',money(result.tax)]); rows.push(['Toplam ödeme',money(result.total)]);const list=document.querySelector('#paymentBreakdown');list.replaceChildren();for(const [label,value] of rows){const row=document.createElement('div'),dt=document.createElement('dt'),dd=document.createElement('dd');dt.textContent=label;dd.textContent=value;row.append(dt,dd);list.append(row);} document.querySelector('#paymentResultLabel').textContent=result.installment?'Aylık taksit':result.cash?'Toplam ödeme':'Vade sonunda ödeme'; document.querySelector('#paymentResultTotal').textContent=money(result.installment?result.monthly:result.total); document.querySelector('#paymentRounding').textContent=result.installment?result.count+' taksit · Son taksit '+money(result.last)+'. Kuruş farkı son taksite eklenir.':'Tek seferde ödeme · '+result.termLabel; empty.hidden=true;output.hidden=false;output.focus({preventScroll:true}); }catch(e){error.textContent=e.message;error.hidden=false;amount.setAttribute('aria-invalid','true');} }); document.querySelector('#paymentRateDate').textContent=rateDate;methodChanged();