\n \n
\n \n \n
\n `:"",d=e.referralCode?`Referral: ${e.referralCode}
\n Commission: $${a}
`:'No referral info.
',c=e.referralCode?`\n \n \n
`:"";n.innerHTML=`\n Purchase Details
\n\n \n Product: ${e.productPurchased}\n \n
\n \n Product SKU: ${e.sku}\n \n
\n \n Buyer Name: ${e.customerName}\n \n
\n \n Email: ${e.customerEmail}\n \n
\n \n Reseller Price: ${s}\n \n
\n \n ${d}\n ${c}\n \n \n \n
\n \n \n \n
\n ${l}\n \n \n \n
\n \n
License Issued: ${e.licenseIssued?"Issued":"Not Issued"}
\n
\n \n \n \n
\n \n \n \n
\n \n
\n
\n
\n `}function selectPurchase(e){renderPurchaseDetails(e)}function resetAndFetchPurchases(){purchasesData=[],lastEvaluatedKey=null,document.getElementById("purchase-list-container").innerHTML="",fetchPurchases()}async function fetchPurchases(){const e=document.getElementById("fetching-indicator"),t=document.getElementById("load-more-btn"),s=document.getElementById("reseller-paid-filter").value||"UNPAID";e.classList.remove("hidden"),t.disabled=!0,t.textContent="Loading...";try{const{purchases:e,lastEvaluatedKey:t}=await getPurchases({limit:10,status:s,lastEvaluatedKey:lastEvaluatedKey});renderPurchaseList(e),lastEvaluatedKey=t,updateLoadMoreButton()}catch(e){console.error("Error fetching purchases:",e),showMessage("Failed to fetch purchases. Please try again.","error")}finally{e.classList.add("hidden"),t.disabled=!1,t.textContent="Load More"}}function updateDetail(e,t,s){if(updateQueue[e]||(updateQueue[e]={}),updateQueue[e][t]=s,"licenseNumber"===t||"productNumber"===t||"licensePhone"===t||"licenseZip"===t){const t=isLicenseIssued(e);document.getElementById("detail-licenseIssued").textContent=t?"Issued":"Not Issued",document.getElementById("detail-licenseIssued").className=t?"text-green-600":"text-red-600"}}function isLicenseIssued(e){const t=document.getElementById("detail-licenseNumber").value.trim(),s=document.getElementById("detail-productNumber").value.trim();updateQueue[e].licenseNumber=t||"",updateQueue[e].productNumber=s||"";let a=!1;if("QB-PRO-2024-MAC"===selectedPurchase.sku||"QB-PRO-2024-MAC-3U"===selectedPurchase.sku){const n=document.getElementById("detail-licensePhone").value.trim(),l=document.getElementById("detail-licenseZip").value.trim();updateQueue[e].licensePhone=n||"",updateQueue[e].licenseZip=l||"",a=""!==t&&""!==s&&""!==n&&""!==l}else a=""!==t&&""!==s;return a}async function sendEmail(e,t){document.getElementById("sendLicenseSpinner").classList.remove("hidden");try{await sendLicenseEmail(e,t),showMessage(`Email sent to customer for paymentId: ${e}`,"success"),delete updateQueue[e]}catch(e){console.error("Error sending email:",e),showMessage("Error sending email. Please try again.","error")}finally{document.getElementById("sendLicenseSpinner").classList.add("hidden")}}async function saveDetailUpdate(e){document.getElementById("updatePurchasesSpinner").classList.remove("hidden");try{const t=(await updatePurchase(e,updateQueue[e])).updatedFields||{};Object.assign(selectedPurchase,t);const s=purchasesData.findIndex(t=>t.paymentId===e);-1!==s&&(purchasesData[s]=selectedPurchase),updateListItem(selectedPurchase),renderPurchaseDetails(selectedPurchase),showMessage("Purchase updated successfully!","success");const a=isLicenseIssued(e),n=document.getElementById("detail-send-email-btn");n&&(n.disabled=!a),delete updateQueue[e]}catch(e){console.error("Error saving updates:",e),showMessage("Error saving updates. Please try again.","error")}finally{document.getElementById("updatePurchasesSpinner").classList.add("hidden")}}function copyField(e){navigator.clipboard.writeText(e).then(()=>{showMessage("Copied: "+e,"success")}).catch(e=>{console.error("Failed to copy field:",e)})}document.addEventListener("DOMContentLoaded",async()=>{const e=await verifyUserAccess(),t=document.getElementById("purchase-details");e&&fetchPurchases(),document.getElementById("load-more-btn").addEventListener("click",fetchPurchases),document.getElementById("reseller-paid-filter").addEventListener("change",resetAndFetchPurchases),t.addEventListener("change",e=>{const t=e.target.dataset.field,s=e.target.dataset.paymentId;if(!t||!s)return;updateDetail(s,t,"checkbox"===e.target.type?e.target.checked:e.target.value)}),t.addEventListener("click",e=>{const t=e.target.closest("[data-action='save-detail']");t&&saveDetailUpdate(t.dataset.paymentId)}),t.addEventListener("click",e=>{const t=e.target.closest('[data-action="send-email"]');t&&sendEmail(t.dataset.paymentId,t.dataset.customerEmail)}),t.addEventListener("click",e=>{const t=e.target.closest('[data-action="copy-field"]');t&©Field(t.dataset.copyValue)})})