buhanka-finance-app 1.76.0 → 1.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.html +5 -5
  2. package/package.json +1 -1
package/index.html CHANGED
@@ -309,7 +309,7 @@ tr.subtotal>td:first-child{color:var(--accent);box-shadow:inset 3px 0 0 var(--ac
309
309
 
310
310
  <script>
311
311
  /* ============================================================ БУХАНКА · Финансы v2 ============================================================ */
312
- const APP_VERSION='10.9.1';
312
+ const APP_VERSION='11.1';
313
313
  const SCHEMA=9; /* версия структуры данных; растёт при доработках */
314
314
  const STORE_KEY='buhanka_finance_v9';/* НЕ МЕНЯТЬ НИКОГДА — иначе данные «слетят» при обновлении файла */
315
315
  const LEGACY_KEYS=['buhanka_finance_v8','buhanka_finance_v7','buhanka_finance_v6','buhanka_finance_v5'];
@@ -665,7 +665,6 @@ const PAGES=[
665
665
  {id:'dash',grp:'Обзор',name:'Дашборд',ic:'▦'},
666
666
  {id:'capital',grp:'Обзор',name:'Долг и капитал',ic:'◈'},
667
667
  {id:'audit',grp:'Обзор',name:'Аудит точек',ic:'★'},
668
- {id:'todo',grp:'Обзор',name:'Задачи / регламент',ic:'✔'},
669
668
  {id:'checks',grp:'Обзор',name:'Проверки',ic:'⚑'},
670
669
  {id:'pnl',grp:'Отчётность',name:'PnL',ic:'▤'},
671
670
  {id:'points',grp:'Отчётность',name:'Сравнение точек',ic:'▥'},
@@ -1356,8 +1355,10 @@ function runChecks(P){
1356
1355
  // 3. Общий = сумма точек
1357
1356
  const revG=revFactOf('Общий',P), revPts=ST.points.reduce((s,p)=>s+revFactOf(p,P),0);
1358
1357
  const netG=netProfit('Общий',P), netPts=ST.points.reduce((s,p)=>s+netProfit(p,P),0);
1359
- if(Math.abs(revG-revPts)>1||Math.abs(netG-netPts)>1) add('warn','«Общий» PnL ≠ сумма точек',`Выручка: Общий ${fmt(revG)} vs точки ${fmt(revPts)} (Δ ${fmt(revG-revPts)}). Чистая: Общий ${fmt(netG)} vs точки ${fmt(netPts)} (Δ ${fmt(netG-netPts)}). Проверьте данные.`,'points');
1360
- else add('ok','«Общий» PnL сходится с суммой точек','Выручка и чистая прибыль «Общего» равны сумме по точкам.','points');
1358
+ /* чистая прибыль «Общего» и сумма точек не обязаны совпадать: в общем есть косвенные расходы
1359
+ и строки со своим источником. Сверяем только выручку, разницу по прибыли показываем справкой. */
1360
+ if(Math.abs(revG-revPts)>1) add('warn','Выручка «Общего» ≠ сумма точек',`Общий ${fmt(revG)} vs точки ${fmt(revPts)} (Δ ${fmt(revG-revPts)}). Проверьте данные.`,'points');
1361
+ else add('ok','Выручка «Общего» сходится с суммой точек',`Чистая: общий ${fmt(netG)}, сумма точек ${fmt(netPts)} — разница ${fmt(netG-netPts)} это косвенные расходы, так и должно быть.`,'points');
1361
1362
  // 4. ФОТ начислено vs выплачено
1362
1363
  const fotAcc=mm.reduce((s,mo)=>s+fotAll(mo),0);
1363
1364
  const fotPaid=mm.reduce((s,mo)=>ST.employees.reduce((a,e)=>a+empPaid(mo,e.id),s),0);
@@ -2576,7 +2577,6 @@ function renderSettings(C){
2576
2577
  <button class="${tab==='points'?'on':''}" onclick="setSettingsTab('points')">Точки</button>
2577
2578
  <button class="${tab==='staff'?'on':''}" onclick="setSettingsTab('staff')">Сотрудники</button>
2578
2579
  <button class="${tab==='capital'?'on':''}" onclick="setSettingsTab('capital')">Капитал</button>
2579
- <button class="${tab==='regl'?'on':''}" onclick="setSettingsTab('regl')">Регламент</button>
2580
2580
  <button class="${tab==='locks'?'on':''}" onclick="setSettingsTab('locks')">Закрытие периодов</button></div></div>`;
2581
2581
  html+=({struct:settStruct,opcats:settOpCats,accounts:settAccounts,points:settPoints,staff:settStaff,capital:settCapital,regl:settTodo,locks:settLocks}[tab])();
2582
2582
  C.innerHTML=html;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "buhanka-finance-app",
3
- "version": "1.76.0",
3
+ "version": "1.78.0",
4
4
  "description": "Buhanka bakery finance dashboard — single-file web app",
5
5
  "license": "MIT",
6
6
  "files": [