NEXCOOLnexcool

NEXCOOL Business Management System

Professional Books · Operations · Stock · Reports

Refrigeration · Gas · Grocery · Poultry Project

Staff portals: CEO, COO, Accountant, Sales and Stock. Customers use their exact customer name and phone number.
`;downloadText(name,h,'application/vnd.ms-excel')} window.nx707ExpenseExcel=function(){let a=rows('expenses');excelTable('NEXCOOL_Expenses_'+biz+'_'+date()+'.xls',B[biz].name+' · Expense Report',['Date','Reference','Category','Description','Paid From','Amount'],a.map(x=>[x.date||'',x.ref||'',x.category||'',x.description||'',x.account||'',Number(x.amount||0).toFixed(2)]))}; window.nx707WageExcel=function(){let a=rows('wages');excelTable('NEXCOOL_Wages_'+biz+'_'+date()+'.xls',B[biz].name+' · Wages Report',['Date','Reference','Employee / Worker','Description','Status','Paid From','Amount'],a.map(x=>[x.date||'',x.ref||'',x.name||x.worker||'',x.job||x.description||'',x.status||'',x.account||'',Number(x.amount||0).toFixed(2)]))}; window.nx707Print=function(kind){let old=document.body.innerHTML,title=kind==='expenses'?'Expense Report':'Wages Report',a=rows(kind),cols=kind==='expenses'?['date','ref','category','description','account','amount']:['date','ref','name','job','status','account','amount'];document.body.innerHTML=`

NEXCOOL BOOKS

${NXesc(B[biz].name)} · ${title}

Generated ${date()}

${cols.map(c=>``).join('')}${a.map(x=>`${cols.map(c=>``).join('')}`).join('')}
${NXesc(c.replace(/([A-Z])/g,' $1'))}
${c==='amount'?NXmoney(x[c]):NXesc(x[c]||'')}

Total: ${NXmoney(sum(a,x=>x.amount))}

`;window.print();document.body.innerHTML=old;render()}; const oldExp=window.page_expenses; window.page_expenses=function(){return oldExp()+`

Expense Report Downloads

The report includes every expense entry, not only the total.
`}; const oldW=window.page_wages; window.page_wages=function(){return oldW()+`

Wages Report Downloads

The report includes every wage entry, not only the total.
`}; function qRange(y,q){let m=(q-1)*3,a=new Date(y,m,1),z=new Date(y,m+3,0),f=d=>d.toISOString().slice(0,10);return[f(a),f(z)]} function qData(y,q){let [a,z]=qRange(y,q),f=list=>(list||[]).filter(x=>x.business===biz&&x.date>=a&&x.date<=z),sales=f(state.sales),expenses=f(state.expenses),wages=f(state.wages),com=f(state.commissions);let S=sum(sales,x=>x.amount),E=sum(expenses,x=>x.amount),W=sum(wages,x=>x.amount),C=sum(com,x=>x.amount);return{a,z,sales,expenses,wages,com,S,E,W,C,P:S-E-W-C}} window.nx707QuarterExcel=function(q){let y=Number(localStorage.nxReportYear||new Date().getFullYear()),d=qData(y,q),r=[['Quarter Summary','','','',''],['Sales','','','',d.S.toFixed(2)],['Expenses','','','',d.E.toFixed(2)],['Wages','','','',d.W.toFixed(2)],['Commission','','','',d.C.toFixed(2)],['Net Profit','','','',d.P.toFixed(2)],[],['Type','Date','Reference','Description / Party','Amount']];d.sales.forEach(x=>r.push(['Sale',x.date,x.ref||'',x.customer||'',Number(x.amount||0).toFixed(2)]));d.expenses.forEach(x=>r.push(['Expense',x.date,x.ref||'',(x.category||'')+' · '+(x.description||''),Number(x.amount||0).toFixed(2)]));d.wages.forEach(x=>r.push(['Wage',x.date,x.ref||'',x.name||x.worker||'',Number(x.amount||0).toFixed(2)]));d.com.forEach(x=>r.push(['Commission',x.date,x.ref||'',x.worker||'',Number(x.amount||0).toFixed(2)]));excelTable('NEXCOOL_Q'+q+'_'+y+'.xls',B[biz].name+' · Quarter '+q,['Type','Date','Reference','Description / Party','Amount'],r.slice(7))}; window.page_tax=function(){let y=Number(localStorage.nxReportYear||new Date().getFullYear());let qs=[1,2,3,4].map(q=>[q,qData(y,q)]);return `

Quarter Report · ${NXesc(B[biz].name)}

${qs.map(([q,d])=>``).join('')}
QuarterSalesExpensesWagesCommissionNet Profit / LossDownload
Q${q}${NXmoney(d.S)}${NXmoney(d.E)}${NXmoney(d.W)}${NXmoney(d.C)}${NXmoney(d.P)}
${qs.map(([q,d])=>`

Q${q} Transaction Detail

${d.a} to ${d.z}

Expenses · ${NXmoney(d.E)}

${d.expenses.length?`${d.expenses.map(x=>``).join('')}
DateCategoryDescriptionAmount
${NXesc(x.date)}${NXesc(x.category||'')}${NXesc(x.description||'')}${NXmoney(x.amount)}
`:'
No expenses in this quarter.
'}

Wages · ${NXmoney(d.W)}

${d.wages.length?`${d.wages.map(x=>``).join('')}
DateWorkerDescriptionAmount
${NXesc(x.date)}${NXesc(x.name||x.worker||'')}${NXesc(x.job||x.description||'')}${NXmoney(x.amount)}
`:'
No wages in this quarter.
'}
`).join('')}
`}; window.page_dashboard=function(){let t=totals(),W=sum(rows('wages'),x=>x.amount),C=Number(t.commission||0),name=displayName(user);return `

Welcome back, ${NXesc(name)}

${NXesc(B[biz].name)} · Live business data
Total Sales${NXmoney(t.sales)}Including credit sales
Expenses${NXmoney(t.expenses)}Operating expenses
Wages${NXmoney(W)}Staff wages
Net Profit / Loss${NXmoney(t.profit)}Live from books
Cash in Hand${NXmoney(t.cash)}Excludes savings
Savings Account${NXmoney(t.savings)}Reserved money

Current Performance

Sales${NXmoney(t.sales)}
Expenses${NXmoney(t.expenses)}
Wages${NXmoney(W)}
Net Profit${NXmoney(t.profit)}

Quarter Snapshot

Sales ${NXmoney(t.sales)}

Expenses ${NXmoney(t.expenses)}

Wages ${NXmoney(W)}

Commission ${NXmoney(C)}

Books Position

Receivables ${NXmoney(t.ar)}

Payables ${NXmoney(t.ap)}

Petty Cash ${NXmoney(pettyBalance())}

Savings ${NXmoney(t.savings)}

`}; })();