var currentMonth = (function(){var now=new Date();return now.getFullYear()+'-'+String(now.getMonth()+1).padStart(2,'0');})(); function onMonthChange(){currentMonth=document.getElementById('orderMonthPicker').value;loadOrders(1);} async function loadExportSummary(){try{var res=await apiFetch('/partner/orders/export?month='+currentMonth);if(!res||!res.ok)return;var d=await res.json();document.getElementById('esSumOrders').textContent=fmtNum(d.order_count)+' don';document.getElementById('esSumLaundry').textContent=fmt(d.total_laundry);document.getElementById('esSumShip').textContent=d.total_shipping>0?fmt(d.total_shipping):'--';document.getElementById('esSumTotal').textContent=fmt(d.total_amount);document.getElementById('esSumComm').textContent='+'+fmt(d.total_commission);document.getElementById('exportSummary').classList.add('visible');}catch(e){}} async function exportExcel(){var btn=document.getElementById('btnExport');btn.disabled=true;btn.textContent='Dang xuat...';try{var res=await apiFetch('/partner/orders/export?month='+currentMonth);if(!res||!res.ok)throw new Error('Loi API');var d=await res.json();var mp=currentMonth.split('-');var filename='DonHang_'+(d.partner_name||'Partner').replace(/\s+/g,'_')+'_Thang'+mp[1]+'-'+mp[0]+'.xlsx';var wb=XLSX.utils.book_new();var sl={NEW:'Moi',ASSIGNED:'Da nhan',PICKED_UP:'Da lay',WASHING:'Dang giat',DONE:'Xong',DELIVERED:'Da giao',CANCELLED:'Da huy'};var pl={pending:'Chua thu',paid:'Da thu',debt:'No'};var rows=d.rows.map(function(r,i){return{'STT':i+1,'Ma don':'#'+r.order_id,'Khach hang':r.customer_name,'Phong':r.room_number,'Trang thai':sl[r.status]||r.status,'Thanh toan':pl[r.payment_status]||r.payment_status,'Tien giat':r.laundry_amount,'Phi ship':r.shipping_fee,'Tong':r.total_amount,'Hoa hong':r.commission,'Ngay tao':r.created_at};});rows.push({'STT':'','Ma don':'','Khach hang':'','Phong':'','Trang thai':'','Thanh toan':'TONG CONG','Tien giat':d.total_laundry,'Phi ship':d.total_shipping,'Tong':d.total_amount,'Hoa hong':d.total_commission,'Ngay tao':''});var ws=XLSX.utils.json_to_sheet(rows);ws['!cols']=[{wch:5},{wch:10},{wch:22},{wch:10},{wch:12},{wch:12},{wch:16},{wch:12},{wch:16},{wch:16},{wch:18}];var ws2=XLSX.utils.aoa_to_sheet([['Partner',d.partner_name],['Thang','Thang '+mp[1]+'/'+mp[0]],['Ti le hoa hong',((d.commission_rate||0)*100).toFixed(0)+'%'],['So don',d.order_count],['Tien giat',d.total_laundry],['Phi ship',d.total_shipping],['Tong doanh thu',d.total_amount],['Hoa hong thang',d.total_commission]]);ws2['!cols']=[{wch:20},{wch:20}];XLSX.utils.book_append_sheet(wb,ws2,'Tom tat');XLSX.utils.book_append_sheet(wb,ws,'Don hang');XLSX.writeFile(wb,filename);}catch(e){alert('Loi: '+e.message);}finally{btn.disabled=false;btn.innerHTML='Xuat Excel';}} var _origLoad=loadOrders;loadOrders=async function(page){currentPage=page;document.getElementById('btnExport').disabled=true;document.getElementById('exportSummary').classList.remove('visible');document.getElementById('ordersTbody').innerHTML='Dang tai...';try{var url='/partner/orders?page='+page+'&limit='+PAGE_LIMIT;if(currentMonth)url+='&month='+currentMonth;var res=await apiFetch(url);if(!res||!res.ok)throw new Error();var data=await res.json();totalOrders=data.total;document.getElementById('orderCount').textContent=fmtNum(totalOrders);if(!data.items||!data.items.length){document.getElementById('ordersTbody').innerHTML='Chua co don hang';updatePagination(page,totalOrders);return;}document.getElementById('ordersTbody').innerHTML=data.items.map(function(o){var laundry=o.laundry_amount||0,ship=o.shipping_fee||0,total=o.total_amount||0,comm=o.commission||0;return '#'+o.order_id+''+(o.customer_name||'--')+''+o.room_number+''+statusBadge(o.status)+''+fmt(laundry)+''+(ship>0?fmt(ship):'--')+''+fmt(total)+''+(comm>0?'+'+fmt(comm)+'':'--')+''+fmtDate(o.created_at)+'';}).join('');if(currentMonth&&totalOrders>0){document.getElementById('btnExport').disabled=false;loadExportSummary();}updatePagination(page,totalOrders);}catch(e){document.getElementById('ordersTbody').innerHTML='Loi tai du lieu';}}; var _os=showDashboard;showDashboard=function(){_os();var p=document.getElementById('orderMonthPicker');if(p)p.value=currentMonth;};