(function(){
'use strict';
document.head.insertAdjacentHTML('beforeend','<style>.prepaid-payment-input{background:#e9f8f1!important;color:#14735a!important;border-color:#63c4a5!important;font-weight:bold}.prepaid-payment-label{display:block;margin-top:4px;color:#14735a;font-size:10px}</style>');
function prepaidValue(a){return Math.max(0,Number(a.prepaidAmount===undefined?a.payment:a.prepaidAmount)||0)}
function normalizePrepaid(a){if(!a.prepaidFirstSession)return false;let changed=false;if(a.prepaidAmount===undefined){a.prepaidAmount=Math.max(0,Number(a.payment)||0);changed=true}if((a.attendance||'pending')!=='present'&&Number(a.payment)!==0){a.payment=0;changed=true}return changed}

const paymentControlBeforeDeferredRevenue=paymentControl;
paymentControl=function(a){if(!a.prepaidFirstSession)return paymentControlBeforeDeferredRevenue(a);normalizePrepaid(a);const amount=prepaidValue(a);return `<span class="payment-cell"><input class="payment-input prepaid-payment-input" type="text" inputmode="numeric" value="${amount||''}" placeholder="مبلغ پیش‌پرداخت" onchange="setPayment(${a.id},this.value)"> تومان<span class="prepaid-payment-label">پیش‌پرداخت‌شده؛ محاسبه در روز مراجعه</span></span>`}

const setAttendanceBeforeDeferredRevenue=setAttendance;
setAttendance=function(id,state){const a=db.appointments.find(x=>x.id===id);if(!a||!a.prepaidFirstSession)return setAttendanceBeforeDeferredRevenue(id,state);if(role==='doctor')return;if(a.status==='لغو شده')return toast('نوبت لغوشده قابل ثبت حضور نیست.');normalizePrepaid(a);a.attendance=state;a.payment=state==='present'?prepaidValue(a):0;save();renderAll();toast(state==='present'?'پیش‌پرداخت در درآمد امروز ثبت شد.':'پیش‌پرداخت از درآمد این روز خارج شد.')}

const setPaymentBeforeDeferredRevenue=setPayment;
setPayment=function(id,value){const a=db.appointments.find(x=>x.id===id);if(!a||!a.prepaidFirstSession)return setPaymentBeforeDeferredRevenue(id,value);if(role==='doctor')return;const amount=Math.max(0,Number(paymentDigits(value))||0);a.prepaidAmount=amount;a.payment=(a.attendance||'pending')==='present'?amount:0;save();renderAll();toast('مبلغ پیش‌پرداخت اصلاح شد؛ فقط در روز مراجعه محاسبه می‌شود.')}
})();
