import{x as e,z as t}from"./Card-Cxq4Ee-X.js";import{o as n}from"./storedLabels-Cp0Gl0kW.js";import{r}from"./formatSettings-BmCn9wYJ.js";import{A as i,C as a,_ as o,d as s,j as c,m as l,p as u,s as d,w as f}from"./accountBalance-BmL5XsaY.js";var p={over:0,warning:1,ok:2,no_plan:3},m={danger:0,warning:1,info:2};function h(e){let[t,n]=e.slice(0,7).split(`-`).map(Number);return new Date(t,n,0).getDate()}function g(e){let t=Number(e.slice(8,10)),n=h(e);return!Number.isFinite(t)||t<=0?1:Math.max(1,n-t+1)}function _(e,t){let n=Number.isFinite(t)&&t>0?Math.floor(t):1;return!Number.isFinite(e)||e<=0?0:Math.max(0,Math.floor(e/n))}function v(e,t){return e.filter(e=>e.date===t).reduce((e,t)=>(t.type===`income`?e.income+=t.amount:o(t)&&(e.expense+=t.amount),e),{income:0,expense:0})}function y(e,t){let r=new Map;for(let t of e){if(!o(t))continue;let e=n(t.category);r.set(e,(r.get(e)??0)+t.amount)}let i=new Map(t.essentialBudgetsRub.map(e=>[n(e.category),e.amount]));for(let e of i.keys())r.has(e)||r.set(e,0);return[...r.entries()].map(([e,t])=>{let n=i.get(e);if(n==null||n<=0)return{category:e,spentRub:t,status:`no_plan`};let r=t/n,a=Math.max(0,t-n);return{category:e,spentRub:t,plannedRub:n,remainingRub:n-t,overageRub:a,progressRatio:r,status:t>n?`over`:r>=.8?`warning`:`ok`}}).sort((e,t)=>{let n=p[e.status]-p[t.status];return n===0?t.spentRub-e.spentRub||e.category.localeCompare(t.category,`ru-RU`):n})}function b(e,t){let n=e.filter(e=>e.active);return{activeCount:n.length,totalRemainingRub:n.reduce((e,t)=>e+Math.max(0,t.totalRub-t.paidRub),0),paidThisMonthRub:t.reduce((e,t)=>e+t.amountRub,0)}}function x(e,t){let n=e.filter(e=>e.active),r=n.reduce((e,t)=>e+t.targetRub,0),i=n.reduce((e,t)=>e+t.savedRub,0);return{activeGoalsCount:n.length,totalTargetRub:r,totalSavedRub:i,totalRemainingRub:n.reduce((e,t)=>e+Math.max(0,t.targetRub-t.savedRub),0),contributedThisMonthRub:t.reduce((e,t)=>e+t.amountRub,0),progressRatio:r>0?Math.min(1,Math.max(0,i/r)):null}}function S(e){let{formatMoney:n}=e,r=[];e.budget.freePoolRemaining<0?r.push({id:`finance:freepool-negative`,severity:`danger`,title:t(`finance.actions.freePoolNegative`),href:`/money`}):e.budget.freePoolPercent!=null&&e.budget.freePoolPercent<=.1&&r.push({id:`finance:freepool-low`,severity:`warning`,title:t(`finance.actions.freePoolLow`),href:`/money`}),e.budget.safeDailySpendRub<=0&&r.push({id:`finance:safe-daily-spend-empty`,severity:e.budget.freePoolRemaining<0?`danger`:`warning`,title:t(`finance.actions.safeDailyEmpty`),href:`/money`});for(let i of e.categories.filter(e=>e.status===`over`))r.push({id:`finance:category-over:${i.category}`,severity:`warning`,title:t(`finance.actions.categoryOver`,{category:i.category}),description:i.overageRub==null?void 0:t(`finance.actions.categoryOverage`,{amount:n(i.overageRub)}),href:`/money`});return e.budget.safeDailySpendRub>0&&e.today.expense>e.budget.safeDailySpendRub&&r.push({id:`finance:today-over-safe-daily`,severity:`warning`,title:t(`finance.actions.todayOverSafeDaily`),description:`${n(e.today.expense)} / ${n(e.budget.safeDailySpendRub)}`,href:`/money`}),e.debts.activeCount>0&&e.debts.paidThisMonthRub===0&&r.push({id:`finance:debts-no-payment`,severity:`info`,title:t(`finance.actions.debtsNoPayment`),href:`/money`}),e.savings.activeGoalsCount>0&&e.savings.contributedThisMonthRub===0&&r.push({id:`finance:savings-no-contribution`,severity:`info`,title:t(`finance.actions.savingsNoContribution`),href:`/money`}),r.sort((e,t)=>m[e.severity]-m[t.severity]||e.id.localeCompare(t.id)).slice(0,8)}async function C(t){let n=t.monthISO??t.dateISO.slice(0,7),[o,p,m,h,C,w,T,E,D]=await Promise.all([u(n),s(),d(n),l({monthISO:n}),c(),i(n),f(),a(n),e()]),O=g(t.dateISO),k=v(h,t.dateISO),A={monthlyAvailableRub:p.monthlyAvailableRub,currentBalanceRub:typeof D?.app?.financeProfile?.currentBalanceRub==`number`?D.app.financeProfile.currentBalanceRub:void 0,totalEssentialPlan:m.totalEssentialPlan,nonEssentialSpent:m.nonEssentialSpent,essentialOverage:m.essentialOverage,freePoolInitial:m.freePoolInitial,freePoolRemaining:m.freePoolRemaining,freePoolPercent:Number.isFinite(m.freePoolPercent)?m.freePoolPercent:null,daysLeftInMonth:O,safeDailySpendRub:_(m.freePoolRemaining,O),warningFlag:m.warningFlag},j=y(h,p),M=b(C,w),N=x(T,E);return{dateISO:t.dateISO,monthISO:n,month:{income:o.totalIncome,expense:o.totalExpense,balance:o.balance},today:k,budget:A,categories:j,debts:M,savings:N,actionRequired:S({today:k,budget:A,categories:j,debts:M,savings:N,formatMoney:e=>r(e,D?.app)})}}export{C as t};