Plus1 ·
<!DOCTYPE html>
<html lang="sv">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Backoffice · KS</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><rect width='100' height='100' rx='22' fill='%23143c2b'/><text x='50' y='70' font-size='62' text-anchor='middle' fill='%23b3e6a1' font-family='Georgia,serif'>%2B</text></svg>">
<!-- CSD: Supabase removed. window.supabase is provided by the compat adapter, which routes to the CSD API. -->
<script src="/csd/config.js"></script>
<script src="/csd/auth.js"></script>
<script src="/csd/api.js"></script>
<script src="/csd/supabase-compat.js"></script>
<script src="/csd/roles.js"></script>
<script>
/* CSD: the in-app login is gone — load() below adopts the Okta identity.
This block only disables the dead password login, routes "logout" to Okta,
and starts polling (the realtime replacement). */
(function(){
window.doLogin=function(){}; /* password login disabled */
window.logout=function(){ if(window.csdAuth) csdAuth.logout(); };
function startPolling(){
if(!window.csdStartPolling){ return setTimeout(startPolling,200); }
csdStartPolling(function(){
if(window.fetchData){ return Promise.resolve(fetchData()).then(function(){ if(window.renderAll) renderAll(); }); }
}, 15000);
}
startPolling();
})();
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<script src="/csd/betalplan.js"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,600;12..96,700&family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Hanken+Grotesk:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
:root{
--bg:#f1eee3; --surface:#fcfbf6; --surface-2:#f4f1e7;
--ink:#163e2c; --ink-2:#3a4a41; --muted:#76746a; --faint:#a8a597;
--border:#e5e0d3; --border-2:#edeadf;
--brand:#1e5a41; --brand-deep:#143c2b; --brand-soft:#d8ebdc;
--sidebar:#143c2b; --sidebar-2:#1e4f3a; --sidebar-ink:#cfe3d6; --sidebar-faint:#7e9a8a;
--sidebar-faint2:#7e9a8a;
--open:#b25e2a; --open-bg:#fae3d2;
--done:#1b6b41; --done-bg:#d6edda;
--red:#b0472f; --red-bg:#f6dcd0;
--blue:#2f6e96; --blue-bg:#cfe6f3;
--violet:#5c3a1f; --violet-bg:#e8dcca;
--gray:#5c5a50; --gray-bg:#eae7dc;
--shadow:0 1px 2px rgba(20,40,30,.05),0 4px 14px rgba(20,40,30,.06);
--shadow-lg:0 12px 40px rgba(20,40,30,.18);
--radius:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:'Hanken Grotesk',system-ui,sans-serif;font-size:13.5px;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.45}
h1,h2,h3,.disp{font-family:'Bricolage Grotesque','Hanken Grotesk',sans-serif;letter-spacing:-.01em}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
button{font-family:inherit}
::selection{background:var(--brand-soft)}
.app{display:flex;height:100vh;overflow:hidden}
/* sidebar */
.side{width:226px;flex-shrink:0;background:var(--sidebar);color:var(--sidebar-ink);display:flex;flex-direction:column;padding:18px 14px;gap:5px}
.brand{display:flex;align-items:center;gap:11px;padding:4px 8px 16px}
.brand .t{line-height:1.05}
.brand .t b{font-family:'Fraunces','Georgia',serif;font-size:27px;color:var(--surface);display:block;font-weight:600;letter-spacing:-.01em}
.brand .t span{font-size:10px;color:var(--sidebar-faint2);letter-spacing:.08em;text-transform:uppercase}
.nav-lbl{font-size:9.5px;text-transform:uppercase;letter-spacing:.13em;color:var(--sidebar-faint2);padding:14px 10px 6px;font-weight:700}
.nav-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:10px;cursor:pointer;color:var(--sidebar-ink);font-size:13.5px;font-weight:500;transition:background .15s,color .15s;user-select:none}
.nav-item .ic{width:17px;text-align:center;font-size:14px;opacity:.85}
.nav-sub{padding-left:20px;font-size:13px}
.nav-sub-lbl{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--sidebar-faint2);padding:5px 10px 3px 10px;font-weight:600;opacity:.8}
.nav-sub-lbl-row{display:flex;align-items:center;justify-content:space-between;gap:6px}
.nav-add{border:none;background:var(--sidebar-2);color:var(--sidebar-ink);width:18px;height:18px;border-radius:5px;font-size:14px;line-height:1;cursor:pointer;display:grid;place-items:center;padding:0;flex-shrink:0;opacity:.9}
.nav-add:hover{background:#b3e6a1;color:var(--brand-deep);opacity:1}
.nav-item .ct{margin-left:auto;font-size:11px;font-weight:700;background:var(--sidebar-2);padding:1px 8px;border-radius:20px;min-width:22px;text-align:center}
.nav-item:hover{background:var(--sidebar-2);color:#fff}
.nav-item.active{background:#b3e6a1;color:var(--brand-deep);font-weight:700;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.nav-item.active .ic{opacity:1}
.nav-item.active .ct{background:rgba(20,60,43,.16);color:var(--brand-deep)}
.side-foot{margin-top:auto;padding:12px 10px 2px;border-top:1px solid rgba(255,255,255,.07)}
.side-foot .sync{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--sidebar-faint2)}
.sync-dot{width:7px;height:7px;border-radius:50%;background:#8fd96b;animation:pulse 2.4s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(143,217,107,.5)}70%{box-shadow:0 0 0 6px rgba(143,217,107,0)}100%{box-shadow:0 0 0 0 rgba(143,217,107,0)}}
/* main */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.topbar{display:flex;align-items:center;gap:16px;padding:15px 26px;flex-shrink:0;background:rgba(241,238,227,.82);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);z-index:5}
.topbar .ttl h1{font-size:20px;font-weight:700}
.topbar .ttl p{font-size:12px;color:var(--muted);margin-top:1px}
.topbar .right{margin-left:auto;display:flex;align-items:center;gap:10px}
.topdate{font-size:12px;color:var(--muted);text-transform:capitalize}
.scroll{flex:1;overflow-y:auto;padding:22px 26px 40px}
.scroll::-webkit-scrollbar{width:10px;height:10px}
.scroll::-webkit-scrollbar-thumb{background:#dcd6c6;border-radius:10px;border:3px solid var(--bg)}
.panel{display:none;animation:fade .35s ease}
.panel.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* inputs */
input,select,textarea{border:1px solid var(--border);border-radius:9px;padding:7px 10px;font-size:13px;font-family:inherit;color:var(--ink);background:var(--surface);transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
textarea{resize:vertical;min-height:36px;max-height:120px}
select{cursor:pointer;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2371747f' stroke-width='3'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;padding-right:28px}
.btn{padding:8px 15px;border-radius:9px;border:1px solid transparent;cursor:pointer;font-size:13px;font-weight:600;transition:all .15s;display:inline-flex;align-items:center;gap:6px}
.btn-p{background:var(--brand);color:#fff;box-shadow:0 2px 8px rgba(20,60,43,.25)}
.btn-p:hover{background:var(--brand-deep)}
.btn-s{background:var(--surface);color:var(--ink-2);border-color:var(--border)}
.btn-s:hover{background:var(--surface-2);border-color:#d8d2c2}
.btn-ok{background:var(--done);color:#fff}
.btn-ok:hover{filter:brightness(.94)}
.btn-d{background:transparent;color:var(--red);border-color:transparent;padding:5px 8px}
.btn-d:hover{background:var(--red-bg)}
.btn-sm{padding:5px 9px;font-size:12px}
.icon-btn{width:30px;height:30px;padding:0;justify-content:center}
.toggle{padding:4px 10px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;font-size:11.5px;font-weight:600;transition:all .12s}
.toggle:hover{border-color:#c9cdd8}
.toggle.on-blue{background:var(--blue-bg);color:var(--blue);border-color:transparent}
.toggle.on-violet{background:var(--violet-bg);color:var(--violet);border-color:transparent}
/* cards */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
.card-pad{padding:18px 20px}
.kpi-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.kpi-click{cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.kpi-click:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(20,60,43,.16)}
.kpi-click:active{transform:translateY(0)}
.gsearch{position:relative;flex:1;max-width:420px;margin:0 18px;display:flex;align-items:center}
.gs-ic{position:absolute;left:13px;font-size:16px;color:var(--brand);opacity:.6;pointer-events:none}
#gsearch-input{width:100%;padding:9px 14px 9px 34px;border:1px solid var(--border);border-radius:11px;background:var(--surface);font:inherit;font-size:14px;color:var(--ink);outline:none;transition:border-color .15s,box-shadow .15s}
#gsearch-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.gs-results{position:absolute;top:calc(100% + 8px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 14px 40px rgba(20,60,43,.18);max-height:60vh;overflow:auto;z-index:60;display:none;padding:6px}
.gs-results.show{display:block}
.gs-group+.gs-group{margin-top:4px}
.gs-grp-h{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--brand);padding:8px 10px 4px;display:flex;align-items:center;gap:6px}
.gs-item{padding:8px 10px;border-radius:9px;cursor:pointer;font-size:13.5px;color:var(--ink);display:block;line-height:1.35}
.gs-item:hover{background:var(--brand-soft)}
.gs-item .gs-sub{color:var(--muted);font-size:12px}
.gs-empty{padding:18px 12px;text-align:center;color:var(--muted);font-size:13px}
.secret-trigger{opacity:.16;cursor:pointer;margin-left:7px;font-weight:900;transition:opacity .2s;user-select:none}
.secret-trigger:hover{opacity:.7}
.hemlig-wrap{max-width:620px;margin:28px auto;text-align:center}
.hemlig-title{font-size:22px;font-weight:800;color:var(--ink)}
.hemlig-sub{font-size:14px;color:var(--muted);margin:4px 0 22px}
.hemlig-wrap img{max-width:100%;border-radius:16px;box-shadow:0 16px 44px rgba(20,60,43,.20)}
.hemlig-cap{margin-top:16px;font-size:15px;font-weight:600;color:var(--brand)}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;position:relative;overflow:hidden;box-shadow:var(--shadow);animation:rise .45s ease backwards}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.kpi .top{display:flex;align-items:center;gap:9px;margin-bottom:14px}
.kpi .ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:16px}
.kpi .lbl{font-size:11.5px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.kpi .val{font-family:'Bricolage Grotesque';font-size:38px;font-weight:700;line-height:1;letter-spacing:-.02em}
.kpi .sub{font-size:12px;color:var(--faint);margin-top:8px}
.kpi.k-brand .ic{background:var(--brand-soft)} .kpi.k-brand .val{color:var(--brand-deep)}
.kpi.k-open .ic{background:var(--open-bg)} .kpi.k-open .val{color:var(--open)}
.kpi.k-red .ic{background:var(--red-bg)} .kpi.k-red .val{color:var(--red)}
.kpi.k-violet .ic{background:var(--violet-bg)} .kpi.k-violet .val{color:var(--violet)}
.section-h{display:flex;align-items:center;gap:10px;margin:28px 2px 13px}
.section-h h2{font-size:14px;font-weight:700}
.section-h .line{flex:1;height:1px;background:var(--border)}
.section-h .pill{font-size:11px;color:var(--muted);background:var(--surface);border:1px solid var(--border);padding:2px 9px;border-radius:20px}
.dash-split{display:grid;gap:18px;grid-template-columns:1fr 1fr}
#panel-dashboard{max-width:1240px}
.dash-grid{display:grid;gap:18px;grid-template-columns:repeat(3,1fr);align-items:stretch;margin-top:22px}
.dash-grid>div{display:flex;flex-direction:column;min-width:0}
.dash-grid>div>.section-h{margin-top:0}
.dash-grid .card{flex:1}
.cl-card{padding:12px 14px 6px;width:fit-content;max-width:100%}
#checklist-wrap{width:fit-content;max-width:100%}
.cl-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:8px}
.cl-top-day{font-size:13px;font-weight:700;color:var(--ink)}
.cl-top-sub{font-size:11.5px;color:var(--muted);margin-top:1px}
.cl-pct{font-size:15px;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums}
.cl-pct.done{color:var(--done)}
.cl-bar{height:6px;border-radius:20px;background:var(--surface-2);overflow:hidden;margin-bottom:4px}
.cl-bar>span{display:block;height:100%;border-radius:20px;background:linear-gradient(90deg,var(--brand),var(--done));transition:width .5s cubic-bezier(.2,.7,.2,1)}
.cl-preview{margin:8px 0 0;padding:7px 10px;border-radius:8px;font-size:11px;color:var(--open);background:var(--open-bg)}
.cl-table-wrap{margin-top:2px;overflow-x:auto}
.checklist{width:auto;border-collapse:collapse}
.checklist thead th{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600;padding:5px 10px;text-align:left;border-bottom:1px solid var(--border)}
.checklist th.ch,.checklist td.ch{text-align:center;width:44px}
.checklist th.ch.today,.checklist td.ch.today{background:var(--brand-soft)}
.checklist th.ch.today{color:var(--brand);font-weight:700}
.th-idag{display:block;font-size:7.5px;letter-spacing:.05em;color:var(--brand)}
.checklist tbody td{padding:5px 10px;border-bottom:1px solid var(--border-2);vertical-align:middle}
.checklist tbody tr:hover td:not(.cl-sektion){background:var(--surface-2)}
.checklist tbody tr:hover td.ch.today{background:var(--brand-soft)}
.cl-sektion td{background:transparent;padding:10px 10px 3px;border-bottom:1px solid var(--border)}
.cl-sek-name{font-weight:700;font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2);border-left:3px solid var(--brand);padding-left:8px}
.cl-sek-ct{margin-left:8px;font-size:10px;font-weight:700;color:var(--muted);background:var(--surface-2);border-radius:20px;padding:1px 8px;font-variant-numeric:tabular-nums}
.cl-sek-ct.full{color:var(--done);background:var(--done-bg)}
.cl-task-name{font-weight:600;font-size:12.5px;color:var(--ink);line-height:1.25}
.checklist td.cl-task{max-width:520px}
.cl-task-sub{color:var(--muted);font-size:11px;margin-top:1px;line-height:1.25}
.vem-edit{width:92px;border:1px solid transparent;border-radius:20px;padding:3px 8px;font-size:11.5px;font-weight:600;background:var(--surface-2);color:var(--ink);text-align:center;transition:border-color .12s,background .12s}
.vem-edit:hover:not(:disabled){border-color:var(--border)}
.vem-edit:focus{outline:none;border-color:var(--brand);background:var(--surface);box-shadow:0 0 0 3px var(--brand-soft)}
.vem-edit:disabled{opacity:.7}
.chk-box{width:21px;height:21px;margin:0 auto;border:1.5px solid var(--border);border-radius:6px;cursor:pointer;display:grid;place-items:center;color:transparent;font-size:12px;font-weight:700;transition:transform .12s,background .12s,border-color .12s,color .12s}
.chk-box:hover{border-color:var(--brand);transform:scale(1.08)}
.chk-box.on{background:var(--done);border-color:var(--done);color:#fff}
.chk-box.on:hover{transform:scale(1.08)}
.sms-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0;padding:12px;background:var(--surface-2);border:1px solid var(--border-2);border-radius:11px}
.sms-form #sms-text{flex:1;min-width:150px}
.sms-form input[type=time]{width:108px}
.sms-form .row{display:flex;gap:8px;margin-left:auto}
.sms-list{display:flex;flex-direction:column;gap:7px;margin-top:12px}
.sms-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border:1px solid var(--border-2);border-radius:10px;background:var(--surface-2)}
.sms-item .tid{font-family:'Bricolage Grotesque';font-weight:700;font-size:13px;color:var(--brand-deep);background:var(--brand-soft);padding:3px 9px;border-radius:7px;min-width:52px;text-align:center}
.sms-item .txt{font-size:13px;font-weight:500}
.sms-item .x{margin-left:auto;border:none;background:transparent;color:var(--faint);cursor:pointer;font-size:14px;padding:2px 6px;border-radius:6px}
.sms-item .x:hover{background:var(--red-bg);color:var(--red)}
.sms-empty{font-size:12.5px;color:var(--faint);text-align:center;padding:20px}
.avail-add{display:flex;gap:8px;margin-bottom:12px}
.avail-add input,.avail-add select{flex:1}
.avail-list{display:flex;flex-direction:column;gap:7px}
.avail-row{display:flex;align-items:center;gap:11px;padding:8px 11px;border:1px solid var(--border-2);border-radius:10px;background:var(--surface-2)}
.avail-row .nm{font-weight:600;font-size:13.5px}
.avail-row .av{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:12px;font-weight:700;color:#fff;font-family:'Bricolage Grotesque'}
.avail-status{margin-left:auto;border:none;font-size:11.5px;font-weight:700;padding:4px 12px;border-radius:20px}
.avail-x{border:none;background:transparent;color:var(--faint);cursor:pointer;font-size:13px;padding:2px 6px;border-radius:6px}
.avail-x:hover{background:var(--red-bg);color:var(--red)}
.st-plats{background:var(--done-bg);color:var(--done)}
.st-ledig{background:var(--open-bg);color:var(--open)}
.st-franvaro{background:var(--gray-bg);color:var(--gray)}
.st-semester{background:var(--done-bg);color:var(--done)}
.avail-from-schema{font-size:12px;color:var(--faint);padding:2px 5px}
@media(max-width:1000px){.dash-split{grid-template-columns:1fr}}
@media(max-width:1100px){.dash-grid{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.dash-grid{grid-template-columns:1fr}}
/* forms */
.form-row{display:flex;gap:11px;flex-wrap:wrap;align-items:flex-end}
.fg{display:flex;flex-direction:column;gap:4px}
.fg label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.add-form h3{font-size:11.5px;font-weight:700;color:var(--ink-2);text-transform:uppercase;letter-spacing:.07em;margin-bottom:13px;display:flex;align-items:center;gap:7px}
.add-form h3::before{content:"+";display:grid;place-items:center;width:18px;height:18px;border-radius:6px;background:var(--brand-soft);color:var(--brand-deep);font-size:14px}
.w-sm input,.w-sm select{width:110px}
.w-md input,.w-md select{width:150px}
.w-lg input,.w-lg textarea{width:300px}
.grow{flex:1;min-width:200px}
.grow textarea,.grow input{width:100%}
/* toolbar/table */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:13px}
.search{flex:0 0 260px;max-width:100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%2371747f' stroke-width='2.2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4.3-4.3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:10px center;padding-left:32px}
.seg{display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:3px;gap:2px}
.seg button{border:none;background:transparent;padding:5px 13px;border-radius:7px;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer}
.seg button.active{background:var(--brand);color:#fff}
.count{margin-left:auto;font-size:11.5px;color:var(--muted);font-weight:600}
.table-card{overflow:hidden}
.table-scroll{overflow:auto;max-height:calc(100vh - 330px)}
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{background:var(--surface-2);font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:11px 14px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;z-index:1}
tbody td{padding:10px 14px;border-bottom:1px solid var(--border-2);vertical-align:middle}
tbody tr{transition:background .12s}
tbody tr:hover{background:var(--surface-2)}
tbody tr:last-child td{border-bottom:none}
tr.done-row{opacity:.6}
.t-r{text-align:right;font-variant-numeric:tabular-nums}
.t-k{max-width:360px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-2)}
.t-sub{color:var(--faint);font-size:11px}
.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:700;white-space:nowrap}
.b-open{background:var(--open-bg);color:var(--open)}
.b-done{background:var(--done-bg);color:var(--done)}
.b-blue{background:var(--blue-bg);color:var(--blue)}
.b-violet{background:var(--violet-bg);color:var(--violet)}
.b-gray{background:var(--gray-bg);color:var(--gray)}
.row-actions{display:flex;gap:6px;align-items:center;white-space:nowrap}
.empty{text-align:center;padding:46px 20px;color:var(--faint)}
.empty .em-ic{font-size:30px;opacity:.5;margin-bottom:8px}
.loading{text-align:center;padding:40px;color:var(--muted)}
.spinner{display:inline-block;width:18px;height:18px;border:2.5px solid var(--border);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-3px;margin-right:8px}
@keyframes spin{to{transform:rotate(360deg)}}
.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,80px);background:var(--ink);color:#fff;padding:11px 20px;border-radius:11px;font-size:13px;font-weight:600;z-index:200;transition:transform .3s cubic-bezier(.2,.8,.3,1);box-shadow:var(--shadow-lg)}
.toast.show{transform:translate(-50%,0)}
.setup{background:var(--open-bg);border:1px solid #f0d090;border-radius:11px;padding:12px 16px;font-size:12.5px;color:var(--open);margin-bottom:18px;display:none}
.setup.show{display:block}
.setup code{background:rgba(0,0,0,.06);padding:1px 5px;border-radius:4px}
.cdlg-ov{position:fixed;inset:0;background:rgba(21,22,29,.45);backdrop-filter:blur(3px);z-index:300;display:none;align-items:center;justify-content:center;padding:20px}
.cdlg-ov.show{display:flex;animation:fade .18s ease}
.cdlg{background:var(--surface);border-radius:16px;padding:22px 24px;max-width:380px;width:100%;box-shadow:var(--shadow-lg);text-align:left}
.cdlg h4{font-family:'Bricolage Grotesque';font-size:16px;font-weight:700;margin-bottom:6px}
.cdlg p{font-size:13px;color:var(--muted);margin-bottom:18px}
.cdlg .row{display:flex;gap:10px;justify-content:flex-end}
.btn-danger{background:var(--red);color:#fff}
.btn-danger:hover{filter:brightness(.93)}
.cdlg-form{max-width:460px;text-align:left}
.cdlg-form .fg{margin-bottom:11px}
.cdlg-form .fg label{display:block;font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}
.cdlg-form input,.cdlg-form textarea{width:100%}
.cdlg-form .row{margin-top:18px}
.type-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.type-card{padding:12px 13px;border:1.5px solid var(--border);border-radius:11px;background:var(--surface);cursor:pointer;font-size:13px;font-weight:600;color:var(--ink-2);text-align:left;transition:all .12s;display:flex;align-items:center;gap:8px}
.type-card:hover{border-color:var(--brand);background:var(--surface-2)}
.type-card.sel{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-deep);box-shadow:0 0 0 3px var(--brand-soft)}
.filepick{display:inline-flex;align-items:center;gap:8px;border:1px dashed var(--border);border-radius:9px;padding:7px 12px;font-size:13px;cursor:pointer;background:var(--surface);color:var(--ink-2);max-width:220px;transition:border-color .15s,background .15s}
.filepick:hover{border-color:var(--brand);background:var(--surface-2)}
.filepick span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.filepick input{display:none}
.filepick.has{border-style:solid;border-color:var(--brand);color:var(--brand-deep);font-weight:600}
.hint{font-size:11.5px;color:var(--faint);margin-top:12px}
.user-chip{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:30px;padding:4px 6px 4px 4px;margin-left:14px;font-size:12.5px;font-weight:600;color:var(--ink)}
.user-dot{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--brand);color:#fff;font-size:11px;font-weight:700}
.user-out{border:none;background:none;cursor:pointer;color:var(--muted);font-size:15px;padding:0 4px;line-height:1}
.user-out:hover{color:var(--red)}
.login-ov{position:fixed;inset:0;z-index:100;background:var(--sidebar);display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden;transition:opacity .6s ease}
.login-ov.fadeout{opacity:0}
.login-welcome{position:relative;z-index:1;display:none;flex-direction:column;align-items:center;text-align:center;color:#eaf7e3;text-shadow:0 2px 18px rgba(0,0,0,.5)}
.login-welcome.show{display:flex;animation:lwIn .55s cubic-bezier(.2,.7,.2,1) both}
.lw-hi{font-size:18px;letter-spacing:.05em;opacity:.85;font-weight:500}
.lw-name{font-family:'Fraunces','Georgia',serif;font-size:48px;font-weight:600;margin-top:4px;line-height:1.05}
@keyframes lwIn{from{opacity:0;transform:translateY(12px) scale(.95)}to{opacity:1;transform:none}}
#matrix{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:.6}
.login-card{position:relative;z-index:1;background:var(--surface);border-radius:18px;padding:34px 30px;width:340px;max-width:100%;box-shadow:var(--shadow-lg);display:flex;flex-direction:column}
.login-logo{font-family:'Fraunces','Georgia',serif;font-size:34px;font-weight:600;color:var(--ink);line-height:1}
.login-sub{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:22px}
.login-lbl{font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:5px}
.login-card input{border:1px solid var(--border);border-radius:9px;padding:10px 12px;font:inherit;font-size:14px;background:var(--surface);color:var(--ink);margin-bottom:14px}
.login-card input:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px var(--brand-soft)}
.login-err{color:var(--red);font-size:12.5px;font-weight:600;margin-top:10px;min-height:16px}
.login-hint{font-size:11px;color:var(--faint);margin-top:14px;line-height:1.45}
.users-admin{display:flex;flex-direction:column;gap:6px}
.locked-input{background:var(--surface-2)!important;color:var(--muted)!important;cursor:not-allowed}
/* Schema */
.schema-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.schema-nav{display:flex;align-items:center;gap:8px}
.schema-month{font-size:15px;font-weight:700;min-width:130px;text-align:center;text-transform:capitalize}
.schema-legend{display:flex;gap:7px;flex-wrap:wrap;margin-left:auto}
.schema-legend .lg{font-size:11px;font-weight:600;padding:3px 10px;border-radius:20px;border:1px solid var(--border)}
.lg-arbete{background:#eef4fb;color:#23527a;border-color:#d4e4f2}
.lg-semester{background:var(--done-bg);color:var(--done);border-color:transparent}
.lg-franvaro{background:var(--open-bg);color:var(--open);border-color:transparent}
.lg-avvik{background:#fdf1b8;color:#8a6a12;border-color:#efe09a}
.schema-add{display:flex;gap:8px}
.schema-add input{border:1px solid var(--border);border-radius:9px;padding:6px 11px;font:inherit;font-size:13px;background:var(--surface);color:var(--ink)}
.schema-add input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.schema-card{padding:0;overflow:hidden}
.schema-grid-wrap{overflow:auto;max-height:calc(100vh - 240px)}
.schema-tbl{border-collapse:separate;border-spacing:0;font-size:12px}
.schema-tbl th,.schema-tbl td{border-right:1px solid var(--border-2);border-bottom:1px solid var(--border-2)}
.sc-corner{position:sticky;left:0;top:0;z-index:6;background:var(--surface-2);padding:8px 12px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);min-width:155px}
.sc-dh{position:sticky;top:0;z-index:4;background:var(--surface-2);padding:5px 4px;min-width:46px;text-align:center;line-height:1.15}
.sc-dh.weekend{background:#f7d9c4}
.sc-dh.today{background:var(--brand-soft);color:var(--brand)}
.sc-dnum{display:block;font-weight:700;font-size:12.5px}
.sc-dwd{display:block;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}
.sc-dh.today .sc-dwd{color:var(--brand)}
.sc-name{position:sticky;left:0;z-index:3;background:var(--surface);padding:6px 12px;text-align:left;font-weight:600;font-size:12.5px;min-width:155px;max-width:175px}
.sc-name .sc-nm{display:inline-block;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.sc-name .sc-del{float:right;border:none;background:none;color:var(--faint);cursor:pointer;font-size:11px;opacity:0;transition:opacity .12s;line-height:1.4}
.sc-name:hover .sc-del{opacity:1}
.sc-name .sc-del:hover{color:var(--red)}
.sc-cell{padding:5px 6px;text-align:center;cursor:pointer;min-width:46px;color:var(--ink);white-space:nowrap;transition:background .1s}
.sc-cell:hover{outline:2px solid var(--brand);outline-offset:-2px;position:relative;z-index:2}
.sc-cell.wknd{background:#fbe2d0}
.sc-cell.today{box-shadow:inset 0 0 0 99px rgba(179,230,161,.12)}
.sc-cell.cat-arbete{background:#eef4fb;color:#23527a;font-weight:600}
.sc-cell.cat-semester{background:var(--done-bg);color:var(--done);font-weight:600}
.sc-cell.cat-franvaro{background:var(--open-bg);color:var(--open);font-weight:600}
.sc-cell.cat-avvikande{background:#fdf1b8;color:#8a6a12;font-weight:600}
.sc-cats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sc-cat{border:2px solid transparent;border-radius:9px;padding:9px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.sc-cat.sc-arbete{background:#eef4fb;color:#23527a}
.sc-cat.sc-semester{background:var(--done-bg);color:var(--done)}
.sc-cat.sc-franvaro{background:var(--open-bg);color:var(--open)}
.sc-cat.sc-avvik{background:#fdf1b8;color:#8a6a12}
.sc-cat.on{border-color:var(--ink)}
.ua-row{display:flex;align-items:center;gap:12px;padding:8px 4px;border-bottom:1px solid var(--border-2)}
.ua-row:last-child{border-bottom:none}
.ua-name{flex:1;font-weight:600;font-size:13.5px}
.ua-seg button{font-size:12px;padding:5px 12px}
.ua-super{font-size:12px;font-weight:700;color:var(--brand);background:var(--brand-soft);padding:6px 13px;border-radius:30px;white-space:nowrap}
.bell{position:relative;border:1px solid var(--border);background:var(--surface);border-radius:30px;padding:5px 11px;cursor:pointer;font-size:15px;display:inline-flex;align-items:center;gap:5px;color:var(--ink)}
.bell:hover{background:var(--surface-2)}
.bell.ring{background:var(--open-bg);border-color:var(--open);animation:bellRing 1.4s ease-in-out infinite}
@keyframes bellRing{0%,100%{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-12deg)}30%{transform:rotate(9deg)}40%{transform:rotate(-6deg)}50%{transform:rotate(0)}}
.bell-ct{background:var(--open);color:#fff;font-size:11px;font-weight:700;border-radius:20px;padding:0 6px;min-width:17px;text-align:center}
.fb-banner{align-items:center;gap:12px;background:var(--open-bg);border:1px solid var(--open);color:var(--open);border-radius:12px;padding:12px 16px;margin:0 0 18px 0;cursor:pointer;font-weight:600;font-size:14px;animation:fbIn .35s ease both}
.fb-banner:hover{filter:brightness(.98)}
.fb-ic{font-size:18px;animation:bellRing 1.4s ease-in-out infinite}
.fb-banner-btn{margin-left:auto;background:var(--open);color:#fff;padding:6px 14px;border-radius:30px;font-size:13px;white-space:nowrap}
@keyframes fbIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.badge.b-fb{background:var(--open-bg);color:var(--open)}
.tv-info{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.tv-row{display:flex;justify-content:space-between;font-size:13px;border-bottom:1px solid var(--border-2);padding-bottom:6px}
.tv-row span{color:var(--muted)}
.tv-desc{margin-top:8px;font-size:13.5px;line-height:1.5;background:var(--surface-2);border-radius:9px;padding:10px 12px;white-space:pre-wrap}
.tv-thread-lbl{font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:8px}
.tv-thread{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow:auto;margin-bottom:14px}
.tv-cmt{background:var(--surface-2);border-radius:9px;padding:9px 12px;font-size:13.5px;line-height:1.45}
.tv-cmt-h{display:flex;justify-content:space-between;margin-bottom:3px}
.tv-cmt-h b{font-size:12.5px}
/* Kundtjänst-behörighet: dölj radera/ändra-knappar och behörighetspanelen */
body.role-cs .btn-d,
body.role-cs .btn-ok,
body.role-cs .toggle{display:none!important}
body.role-cs #admin-sec-h,
body.role-cs #admin-card,
body.role-cs .nav-admin-only{display:none}
/* Kundtjänst = read-only i Backoffice */
body.role-cs .bo-only,
body.role-cs #panel-failed .add-form,
body.role-cs #panel-avvisade .add-form,
body.role-cs #panel-inkasso .add-form{display:none!important}
.cell-input{width:100%;min-width:150px;border:1px solid var(--border);border-radius:7px;padding:5px 8px;font:inherit;font-size:12.5px;background:var(--surface);color:var(--ink)}
.cell-input:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px var(--brand-soft)}
.ombet-watch{display:flex;flex-direction:column;gap:7px}
.ow-item{display:flex;align-items:center;gap:14px;padding:9px 13px;border:1px solid var(--border);border-radius:9px;cursor:pointer;transition:background .12s}
.ow-item:hover{background:var(--surface-2)}
.ow-age{font-weight:700;font-size:12px;min-width:64px}
.ow-ocr{font-size:13px;font-weight:600}
.ow-note{color:var(--muted);font-size:12px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inkasso-list{display:flex;flex-direction:column;gap:10px}
.ink-card{border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}
.ink-head{display:flex;align-items:center;gap:12px;padding:13px 16px;cursor:pointer;transition:background .12s}
.ink-head:hover{background:var(--surface-2)}
.ink-ic{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--done-bg);color:var(--done);font-size:14px;flex-shrink:0}
.ink-meta{flex:1;min-width:0}
.ink-meta b{font-size:14px;font-weight:600;display:block}
.ink-meta span{font-size:11.5px;color:var(--muted)}
.ink-actions{display:flex;gap:7px;align-items:center}
.ink-chev{color:var(--faint);transition:transform .2s;font-size:13px}
.ink-card.open .ink-chev{transform:rotate(90deg)}
.ink-body{display:none;border-top:1px solid var(--border-2);padding:14px 16px;background:var(--surface-2)}
.ink-card.open .ink-body{display:block}
.ink-body .table-scroll{max-height:360px;overflow:auto;border:1px solid var(--border-2);border-radius:9px;background:var(--surface)}
.ink-warn{background:var(--open-bg);color:var(--open);border-radius:9px;padding:10px 13px;font-size:12px;margin-bottom:12px;line-height:1.45}
.file-chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600}
.file-chip .ext{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 6px;border-radius:5px;background:var(--gray-bg);color:var(--gray)}
.ext-pdf{background:var(--red-bg);color:var(--red)} .ext-img{background:var(--blue-bg);color:var(--blue)}
</style>
</head>
<body>
<div class="app">
<aside class="side">
<div class="brand"><div class="t"><b>Plus1</b><span>Backoffice · KS</span></div></div>
<div class="nav-lbl">Översikt</div>
<div class="nav-item active" data-tab="dashboard" onclick="showTab('dashboard',this)"><span class="ic">◧</span> Dashboard</div>
<div class="nav-lbl">Kundtjänst</div>
<div class="nav-item" data-tab="tickets" onclick="showTab('tickets',this)"><span class="ic">▤</span> Tickets <span class="ct" id="ct-tickets">0</span></div>
<div class="nav-item" data-tab="dubbel" onclick="showTab('dubbel',this)"><span class="ic">⇉</span> Dubbelbetalningar <span class="ct" id="ct-dubbel">0</span></div>
<div class="nav-item" data-tab="aml" onclick="showTab('aml',this)"><span class="ic">🛡</span> AML-underlag <span class="ct" id="ct-aml">0</span></div>
<div class="nav-item" data-tab="ombet" onclick="showTab('ombet',this)"><span class="ic">↺</span> Ombetalningar <span class="ct" id="ct-ombet">0</span></div>
<div class="nav-lbl">Backoffice</div>
<div class="nav-sub-lbl nav-sub-lbl-row">Avvisade betalningar<button class="nav-add bo-only" onclick="event.stopPropagation();document.getElementById('av-csv-auto').click()" title="Ladda upp fil – sorteras automatiskt till SE/NO/FI">+</button></div>
<div class="nav-item nav-sub" data-tab="avvisade" onclick="showAvvisade('Sverige',this)"><span class="ic">🇸🇪</span> Sverige <span class="ct" id="ct-avv-sverige">0</span></div>
<div class="nav-item nav-sub" data-tab="avvisade" onclick="showAvvisade('Norge',this)"><span class="ic">🇳🇴</span> Norge <span class="ct" id="ct-avv-norge">0</span></div>
<div class="nav-item nav-sub" data-tab="avvisade" onclick="showAvvisade('Finland',this)"><span class="ic">🇫🇮</span> Finland <span class="ct" id="ct-avv-finland">0</span></div>
<div class="nav-item" data-tab="inkasso" onclick="showTab('inkasso',this)"><span class="ic">▦</span> Inkassorapporter <span class="ct" id="ct-inkasso">0</span></div>
<div class="nav-item" data-tab="failed" onclick="showTab('failed',this)"><span class="ic">⚠</span> Failed payments <span class="ct" id="ct-failed">0</span></div>
<div class="nav-item" data-tab="betalplan" onclick="showTab('betalplan',this)"><span class="ic">🧾</span> Betalplan Generator</div>
<div class="nav-lbl nav-admin-only">Administration</div>
<div class="nav-item nav-admin-only" data-tab="behorighet" onclick="showTab('behorighet',this)"><span class="ic">👤</span> Behörighet</div>
<div class="nav-item nav-admin-only" data-tab="schema" onclick="showTab('schema',this)"><span class="ic">📅</span> Schema</div>
<div class="side-foot"><div class="sync"><span class="sync-dot"></span> Realtid aktiv<span class="secret-trigger" onclick="showTab('hemlig',null)" title="?">·</span></div></div>
</aside>
<div class="main">
<header class="topbar">
<div class="ttl"><h1 id="page-title">Dashboard</h1><p id="page-sub">Aktuellt läge i backoffice</p></div>
<div class="gsearch">
<span class="gs-ic">⌕</span>
<input id="gsearch-input" type="text" autocomplete="off" placeholder="Sök överallt – OCR, namn, beskrivning…" oninput="gSearch(this.value)" onfocus="gSearch(this.value)">
<div class="gs-results" id="gsearch-results"></div>
</div>
<div class="right"><button class="bell" id="bell" onclick="openFeedbackTarget()" title="Du har feedback på dina tickets" style="display:none">🔔<span class="bell-ct" id="bell-ct"></span></button><span class="topdate" id="hdr-date"></span><span class="user-chip" id="user-chip" style="display:none"><span class="user-dot" id="user-initial"></span><span id="user-name"></span><button class="user-out" onclick="logout()" title="Logga ut">⎋</button></span></div>
</header>
<div class="fb-banner" id="fb-banner" style="display:none" onclick="openFeedbackTarget()">
<span class="fb-ic">🔔</span>
<span id="fb-banner-txt">Du har ny feedback</span>
<span class="fb-banner-btn">Visa tickets →</span>
</div>
<div class="scroll">
<!-- CSD: Supabase-setup-rutan borttagen. Appen använder CSD-API:t. -->
<div id="setup" class="setup" style="display:none"></div>
<!-- CSD: Betalplan Generator (klient-sidan, jsPDF + SheetJS) -->
<div class="panel" id="panel-betalplan">
<style>
#bp-wrap{max-width:640px;margin:8px auto 0}
#bp-drop{border:2px dashed #b7c9bd;border-radius:14px;padding:52px 24px;text-align:center;cursor:pointer;background:#f7faf5;transition:.15s}
#bp-drop:hover,#bp-drop.drag{border-color:#16402b;background:#eef6ea}
#bp-drop .bp-ic{font-size:40px;line-height:1}
#bp-drop .bp-h{font-weight:700;color:#16402b;font-size:18px;margin-top:12px}
#bp-drop .bp-p{color:#6b7a6e;font-size:13px;margin-top:6px}
#bp-status{margin-top:16px;font-size:14px;text-align:center;min-height:20px}
#bp-status.ok{color:#1a5c3a;font-weight:600}
#bp-status.err{color:#b91c1c;font-weight:600}
#bp-hint{color:#6b7a6e;font-size:12px;margin-top:18px;text-align:center}
</style>
<div id="bp-wrap">
<div id="bp-drop" onclick="document.getElementById('bp-file').click()">
<div class="bp-ic">🧾</div>
<div class="bp-h">Släpp Excel- eller CSV-fil här</div>
<div class="bp-p">…eller klicka för att välja. En Plus1-skuldrapport (PDF) skapas direkt i webbläsaren – filen laddas aldrig upp.</div>
</div>
<input type="file" id="bp-file" accept=".csv,.xlsx,.xls,text/csv" style="display:none" onchange="csdBetalplan.handleFile(this.files[0]);this.value=''">
<div id="bp-status" class="bp-status"></div>
<div id="bp-hint">Förväntade kolumner: Lånenummer, Återstående Skuld, Datum, Total inbetalning, Amortering, Ränta, Avgift, Försäkring.</div>
</div>
</div>
<!-- DASHBOARD -->
<section id="panel-dashboard" class="panel active">
<div class="kpi-grid" id="kpi-grid"></div>
<div class="dash-grid">
<div>
<div class="section-h"><h2>Dagens SMS</h2><span class="line"></span><span class="pill" id="sms-date"></span></div>
<div class="card card-pad">
<button class="btn btn-p btn-sm" id="sms-addbtn" onclick="toggleSmsForm(true)">+ Add SMS</button>
<div id="sms-form" class="sms-form" style="display:none">
<input type="text" id="sms-text" placeholder="Vad är det för SMS?" onkeydown="if(event.key==='Enter')addSms()">
<input type="time" id="sms-tid">
<div class="row">
<button class="btn btn-s btn-sm" onclick="toggleSmsForm(false)">Avbryt</button>
<button class="btn btn-p btn-sm" onclick="addSms()">Lägg till</button>
</div>
</div>
<div id="sms-list" class="sms-list"></div>
</div>
</div>
<div>
<div class="section-h"><h2>Vem är ledig</h2><span class="line"></span><span class="pill" id="avail-pill"></span></div>
<div class="card card-pad">
<div class="avail-add">
<input type="text" id="avail-name" list="roster-dl" placeholder="Skriv ett namn…" onkeydown="if(event.key==='Enter')addLedig()">
<datalist id="roster-dl"></datalist>
<button class="btn btn-s btn-sm" onclick="addLedig()">+ Lägg till ledig</button>
</div>
<div id="avail-list" class="avail-list"></div>
</div>
</div>
<div>
<div class="section-h"><h2>Ombetalningar</h2><span class="line"></span><span class="pill" id="ombet-watch-count"></span></div>
<div class="card card-pad">
<p class="hint" style="margin-top:0;margin-bottom:12px">Case som väntat <b>minst 2 dagar</b> – kolla om pengarna kommit tillbaka till kundens lån innan ni bokar betalningen.</p>
<div id="ombet-watch" class="ombet-watch"></div>
</div>
</div>
</div>
<div class="section-h"><h2>Daglig checklista</h2><span class="line"></span><span class="pill" id="cl-week"></span></div>
<div class="card cl-card">
<div id="checklist-wrap"><div class="loading"><span class="spinner"></span>Laddar…</div></div>
</div>
</section>
<!-- TICKETS -->
<section id="panel-tickets" class="panel">
<div class="toolbar">
<button class="btn btn-p" onclick="openTicketModal()">+ Ny ticket</button>
<input class="search" type="text" placeholder="Sök OCR, beskrivning, namn…" oninput="renderTickets()" id="search-tickets">
<div class="seg" id="seg-tickets">
<button class="active" data-f="open" onclick="setSeg('tickets',this)">Öppna</button>
<button data-f="closed" onclick="setSeg('tickets',this)">Stängda</button>
<button data-f="all" onclick="setSeg('tickets',this)">Alla</button>
</div>
<div class="seg" id="land-tickets" title="Filtrera per land">
<button class="active" data-land="" onclick="setLandFil('tickets','',this)">Alla</button>
<button data-land="Sverige" onclick="setLandFil('tickets','Sverige',this)" title="Sverige">🇸🇪 SE</button>
<button data-land="Norge" onclick="setLandFil('tickets','Norge',this)" title="Norge">🇳🇴 NO</button>
<button data-land="Finland" onclick="setLandFil('tickets','Finland',this)" title="Finland">🇫🇮 FI</button>
</div>
<select id="fil-ticket-typ" onchange="renderTickets()">
<option value="">Alla typer</option>
<option>Ombetalning</option>
<option>Kreditera</option>
<option>Betala ut försäkring</option>
<option>Övrigt</option>
</select>
<span class="count" id="count-tickets"></span>
</div>
<div class="card table-card"><div class="table-scroll">
<table><thead><tr><th>Datum</th><th>Land</th><th>Typ</th><th>OCR</th><th>Beskrivning</th><th>Skapad av</th><th>Status</th><th></th></tr></thead>
<tbody id="tickets-tbody"><tr><td colspan="8" class="loading"><span class="spinner"></span>Laddar…</td></tr></tbody></table>
</div></div>
</section>
<!-- FAILED PAYMENTS -->
<section id="panel-failed" class="panel">
<div class="card card-pad add-form" style="margin-bottom:18px">
<h3>Ny failed payment</h3>
<div class="form-row">
<div class="fg w-sm"><label>Booking date</label><input type="date" id="fp-date"></div>
<div class="fg w-md"><label>Debtor</label><input type="text" id="fp-debtor"></div>
<div class="fg w-md"><label>OCR</label><input type="text" id="fp-ocr"></div>
<div class="fg w-sm"><label>Amount</label><input type="number" id="fp-amount"></div>
<div class="fg w-sm"><label>Land</label><select id="fp-land"><option>Sverige</option><option>Norge</option><option>Finland</option></select></div>
<div class="fg grow"><label>Kommentar</label><input type="text" id="fp-kommentar"></div>
<div class="fg"><button class="btn btn-p" onclick="addFailed()">Lägg till</button></div>
</div>
</div>
<div class="toolbar">
<div class="seg" id="seg-failed">
<button class="active" data-f="open" onclick="setSeg('failed',this)">Öppna</button>
<button data-f="done" onclick="setSeg('failed',this)">Klara</button>
<button data-f="all" onclick="setSeg('failed',this)">Alla</button>
</div>
<div class="seg" id="land-failed" title="Filtrera per land">
<button class="active" data-land="" onclick="setLandFil('failed','',this)">Alla</button>
<button data-land="Sverige" onclick="setLandFil('failed','Sverige',this)" title="Sverige">🇸🇪 SE</button>
<button data-land="Norge" onclick="setLandFil('failed','Norge',this)" title="Norge">🇳🇴 NO</button>
<button data-land="Finland" onclick="setLandFil('failed','Finland',this)" title="Finland">🇫🇮 FI</button>
</div>
<button class="btn btn-s btn-sm bo-only" onclick="document.getElementById('fp-csv').click()">⤓ Importera CSV/Excel</button>
<input type="file" id="fp-csv" accept=".csv,text/csv,.xlsx,.xls,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel" style="display:none" onchange="importFailedFile(this)">
<button class="btn btn-sm bo-only" style="color:var(--red);border-color:var(--red)" onclick="clearAllFailed()">🗑 Radera alla</button>
<span class="count" id="count-failed"></span>
</div>
<div class="card table-card"><div class="table-scroll">
<table><thead><tr><th>Booking</th><th>Land</th><th>Debtor</th><th>OCR</th><th class="t-r">Amount</th><th>Åtgärd</th><th>Kommentar</th><th></th></tr></thead>
<tbody id="failed-tbody"><tr><td colspan="8" class="loading"><span class="spinner"></span>Laddar…</td></tr></tbody></table>
</div></div>
</section>
<!-- AVVISADE BETALNINGAR -->
<section id="panel-avvisade" class="panel">
<div class="card card-pad add-form" style="margin-bottom:18px">
<h3>Ny avvisad betalning <span id="av-land-lbl" class="t-sub" style="font-weight:500"></span></h3>
<div class="form-row">
<div class="fg w-md"><label>Payment Type</label><input type="text" id="av-ptype"></div>
<div class="fg w-md"><label>To account</label><input type="text" id="av-acct"></div>
<div class="fg w-sm"><label>Amount</label><input type="number" id="av-amount"></div>
<div class="fg w-md"><label>Own Reference</label><input type="text" id="av-ownref"></div>
<div class="fg grow"><label>Invoice ref</label><input type="text" id="av-invref"></div>
<div class="fg"><button class="btn btn-p" onclick="addAvvisade()">Lägg till</button></div>
</div>
</div>
<div class="toolbar">
<div class="seg" id="seg-avvisade">
<button class="active" data-f="open" onclick="setSeg('avvisade',this)">Öppna</button>
<button data-f="done" onclick="setSeg('avvisade',this)">Klara</button>
<button data-f="all" onclick="setSeg('avvisade',this)">Alla</button>
</div>
<button class="btn btn-s btn-sm bo-only" onclick="document.getElementById('av-csv').click()">⤓ Importera fil</button>
<input type="file" id="av-csv" accept=".xlsx,.xls,.csv,text/csv" style="display:none" onchange="importAvvisade(this)">
<button class="btn btn-s btn-sm bo-only" onclick="document.getElementById('av-csv-auto').click()" title="Sorterar raderna automatiskt till Sverige/Norge/Finland efter prefixet i Payment Type">⤓ Importera & sortera (SE/NO/FI)</button>
<input type="file" id="av-csv-auto" accept=".xlsx,.xls,.csv,text/csv" style="display:none" onchange="importAvvisadeAuto(this)">
<button class="btn btn-sm bo-only" style="color:var(--red);border-color:var(--red)" onclick="clearAllAvvisade()">🗑 Radera alla</button>
<span class="count" id="count-avvisade"></span>
</div>
<div class="card table-card"><div class="table-scroll">
<table><thead><tr><th>Payment Type</th><th>To account</th><th class="t-r">Amount</th><th>Own Reference</th><th>Invoice ref</th><th>Åtgärd</th><th></th></tr></thead>
<tbody id="av-tbody"><tr><td colspan="7" class="loading"><span class="spinner"></span>Laddar…</td></tr></tbody></table>
</div></div>
</section>
<!-- DUBBELBETALNINGAR -->
<section id="panel-dubbel" class="panel">
<div class="card card-pad add-form" style="margin-bottom:18px">
<h3>Ny dubbelbetalning</h3>
<div class="form-row">
<div class="fg w-md"><label>OCR</label><input type="text" id="db-ocr"></div>
<div class="fg w-sm"><label>Belopp</label><input type="number" id="db-belopp"></div>
<div class="fg w-sm"><label>Land</label><select id="db-land"><option>Sverige</option><option>Norge</option><option>Finland</option></select></div>
<div class="fg grow"><label>Kommentar</label><input type="text" id="db-kommentar"></div>
<div class="fg"><button class="btn btn-p" onclick="addDubbel()">Lägg till</button></div>
</div>
</div>
<div class="toolbar">
<div class="seg" id="seg-dubbel">
<button class="active" data-f="open" onclick="setSeg('dubbel',this)">Öppna</button>
<button data-f="done" onclick="setSeg('dubbel',this)">Klara</button>
<button data-f="all" onclick="setSeg('dubbel',this)">Alla</button>
</div>
<div class="seg" id="land-dubbel" title="Filtrera per land">
<button class="active" data-land="" onclick="setLandFil('dubbel','',this)">Alla</button>
<button data-land="Sverige" onclick="setLandFil('dubbel','Sverige',this)" title="Sverige">🇸🇪 SE</button>
<button data-land="Norge" onclick="setLandFil('dubbel','Norge',this)" title="Norge">🇳🇴 NO</button>
<button data-land="Finland" onclick="setLandFil('dubbel','Finland',this)" title="Finland">🇫🇮 FI</button>
</div>
<span class="count" id="count-dubbel"></span>
</div>
<div class="card table-card"><div class="table-scroll">
<table><thead><tr><th>OCR</th><th>Land</th><th class="t-r">Belopp</th><th>Kommentar</th><th>Status</th><th></th></tr></thead>
<tbody id="dubbel-tbody"><tr><td colspan="6" class="loading"><span class="spinner"></span>Laddar…</td></tr></tbody></table>
</div></div>
</section>
<!-- AML-UNDERLAG -->
<section id="panel-aml" class="panel">
<div class="card card-pad add-form" style="margin-bottom:18px">
<h3>Nytt AML-underlag</h3>
<div class="form-row">
<div class="fg w-md"><label>OCR</label><input type="text" id="aml-ocr"></div>
<div class="fg grow"><label>Kommentar</label><input type="text" id="aml-kommentar" placeholder="Beskrivning av underlaget…"></div>
<div class="fg"><label>Fil (PNG, PDF, JPG)</label>
<label class="filepick"><span id="aml-fname">Välj fil…</span>
<input type="file" id="aml-file" accept=".png,.jpg,.jpeg,.pdf,image/png,image/jpeg,application/pdf" onchange="amlFileChosen(this)">
</label>
</div>
<div class="fg"><button class="btn btn-p" id="aml-upload-btn" onclick="addAml()">⤒ Ladda upp</button></div>
</div>
<p class="hint">Filerna ligger tillfälligt i en privat lagring. När du stänger ett case raderas både raden och filen helt.</p>
</div>
<div class="toolbar">
<input class="search" type="text" placeholder="Sök OCR, kommentar, filnamn…" oninput="renderAml()" id="search-aml">
<span class="count" id="count-aml"></span>
</div>
<div class="card table-card"><div class="table-scroll">
<table><thead><tr><th>Datum</th><th>OCR</th><th>Fil</th><th>Kommentar</th><th></th></tr></thead>
<tbody id="aml-tbody"><tr><td colspan="5" class="loading"><span class="spinner"></span>Laddar…</td></tr></tbody></table>
</div></div>
</section>
<!-- OMBETALNINGAR -->
<section id="panel-ombet" class="panel">
<div class="card card-pad add-form" style="margin-bottom:18px">
<h3>Nytt ombetalnings-underlag</h3>
<div class="form-row">
<div class="fg w-md"><label>OCR</label><input type="text" id="ombet-ocr"></div>
<div class="fg w-sm"><label>Land</label><select id="ombet-land"><option>Sverige</option><option>Norge</option><option>Finland</option></select></div>
<div class="fg grow"><label>Beskrivning</label><input type="text" id="ombet-besk" placeholder="Vad gäller caset? Betalningsuppgifter / beskrivning…"></div>
<div class="fg"><label>Fil (frivillig – PNG, PDF, JPG)</label>
<label class="filepick"><span id="ombet-fname">Välj fil…</span>
<input type="file" id="ombet-file" accept=".png,.jpg,.jpeg,.pdf,image/png,image/jpeg,application/pdf" onchange="ombetFileChosen(this)">
</label>
</div>
<div class="fg"><button class="btn btn-p" id="ombet-upload-btn" onclick="addOmbet()">⤒ Lägg till</button></div>
</div>
<p class="hint">Fil är frivillig. Eventuella filer ligger tillfälligt i en privat lagring – när du stänger ett case raderas både raden och filen helt.</p>
</div>
<div class="toolbar">
<div class="seg" id="land-ombet" title="Filtrera per land">
<button class="active" data-land="" onclick="setLandFil('ombet','',this)">Alla</button>
<button data-land="Sverige" onclick="setLandFil('ombet','Sverige',this)" title="Sverige">🇸🇪 SE</button>
<button data-land="Norge" onclick="setLandFil('ombet','Norge',this)" title="Norge">🇳🇴 NO</button>
<button data-land="Finland" onclick="setLandFil('ombet','Finland',this)" title="Finland">🇫🇮 FI</button>
</div>
<input class="search" type="text" placeholder="Sök OCR, kommentar, filnamn…" oninput="renderOmbet()" id="search-ombet">
<span class="count" id="count-ombet"></span>
</div>
<div class="card table-card"><div class="table-scroll">
<table><thead><tr><th>Datum</th><th>Öppen</th><th>Land</th><th>OCR</th><th>Fil</th><th>Beskrivning</th><th>Kommentar</th><th></th></tr></thead>
<tbody id="ombet-tbody"><tr><td colspan="8" class="loading"><span class="spinner"></span>Laddar…</td></tr></tbody></table>
</div></div>
</section>
<!-- INKASSORAPPORTER -->
<section id="panel-inkasso" class="panel">
<div class="card card-pad add-form" style="margin-bottom:14px">
<h3>Betalningsuppgifter (för PAIN)</h3>
<div class="form-row">
<div class="fg w-md"><label>Avsändare (namn)</label><input type="text" id="pain-namn" placeholder="Plus1 AB"></div>
<div class="fg w-md"><label>Avsändarens IBAN</label><input type="text" id="pain-iban" placeholder="SE…"></div>
<div class="fg w-sm"><label>BIC</label><input type="text" id="pain-bic" placeholder="NDEASESS"></div>
</div>
<div class="form-row">
<div class="fg w-md"><label>Mottagare (namn)</label><input type="text" id="pain-mnamn" placeholder="t.ex. Intrum"></div>
<div class="fg w-sm"><label>Mottagarkonto (bankgiro)</label><input type="text" id="pain-mkonto" placeholder="5020-6127"></div>
<div class="fg"><button class="btn btn-s" onclick="savePainConfig()">Spara</button></div>
</div>
<p class="hint">Avsändare = ert Nordea-konto (debiteras). Mottagare = kontot som tar emot (bankgiro). OCR tas från "Vår ref." och belopp från "Summa".</p>
</div>
<div class="card card-pad add-form" style="margin-bottom:18px">
<h3>Ny inkassorapport</h3>
<div class="form-row">
<div class="fg grow"><label>Namn / referens</label><input type="text" id="ink-namn" placeholder="t.ex. Inkasso v.24"></div>
<div class="fg"><label>Excel-fil (.xlsx, .xls)</label>
<label class="filepick"><span id="ink-fname">Välj fil…</span>
<input type="file" id="ink-file" accept=".xlsx,.xls,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel" onchange="inkFileChosen(this)">
</label>
</div>
<div class="fg"><button class="btn btn-p" id="ink-upload-btn" onclick="addInkasso()">⤒ Ladda upp</button></div>
</div>
</div>
<div class="toolbar">
<span class="count" id="count-inkasso"></span>
</div>
<div id="inkasso-list" class="inkasso-list"><div class="loading"><span class="spinner"></span>Laddar…</div></div>
</section>
<!-- BEHÖRIGHET -->
<section id="panel-behorighet" class="panel">
<div class="card card-pad">
<p class="hint" style="margin-top:0;margin-bottom:14px">Sätt vem som är <b>Kundtjänst</b> (kan lägga till och ladda upp, men inte ändra eller ta bort) respektive <b>Full</b> behörighet.</p>
<div id="users-admin" class="users-admin"></div>
</div>
</section>
<!-- SCHEMA -->
<section id="panel-schema" class="panel">
<div class="schema-bar">
<div class="schema-nav">
<button class="btn btn-s btn-sm icon-btn" onclick="schemaShift(-1)" title="Föregående månad">‹</button>
<span class="schema-month" id="schema-month-lbl">—</span>
<button class="btn btn-s btn-sm icon-btn" onclick="schemaShift(1)" title="Nästa månad">›</button>
<button class="btn btn-s btn-sm" onclick="schemaToday()">Idag</button>
<button class="btn btn-p btn-sm" onclick="fillSchemaWorkdays()" title="Fyll månadens tomma vardagar med 8–17">Fyll vardagar 8–17</button>
</div>
<div class="schema-legend">
<span class="lg lg-arbete">Arbete</span>
<span class="lg lg-semester">Semester</span>
<span class="lg lg-franvaro">Frånvaro</span>
<span class="lg lg-avvik">Avvikande / extra</span>
</div>
<div class="schema-add">
<input type="text" id="schema-newperson" placeholder="Lägg till person…" onkeydown="if(event.key==='Enter')addSchemaPerson()">
<button class="btn btn-s btn-sm" onclick="addSchemaPerson()">+ Person</button>
</div>
</div>
<div class="card schema-card">
<div id="schema-grid" class="schema-grid-wrap"><div class="loading"><span class="spinner"></span>Laddar…</div></div>
</div>
</section>
<!-- HEMLIG -->
<section id="panel-hemlig" class="panel">
<div class="hemlig-wrap">
<div class="hemlig-title">🤫 Du hittade den hemliga fliken</div>
<div class="hemlig-sub">Pssst… det här stannar mellan oss.</div>
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCAGEAeoDASIAAhEBAxEB/8QAHQAAAAcBAQEAAAAAAAAAAAAAAAECAwQFBgcICf/EAFgQAAEDAgQDBQUCCwMHCgILAAEAAgMEEQUSITEGQVEHEyJhcRQygZGxocEIFSMzQlJicoKy0ZKi8CQ0NUNzwuEJFhclU4Sjw9LxJmRFVWN0g5OUs8TT4v/EABsBAAIDAQEBAAAAAAAAAAAAAAABAgMEBQYH/8QANBEAAgIBBAEBBgUCBgMAAAAAAAECEQMEEiExQSIFEzJRYXEUM0KBoSSxBiORwdHwFRbh/9oADAMBAAIRAxEAPwDxkggggAIIIIACCCNABIJWnRFZABII7IWQASCNBABIK5paOlFAwzQZp3m98xFhy0B/xdInpKdrw0RW87nVVLMm6LPdOipQVpS4eKuqEEMRJPmV0LAOzmjqo2uqmOu7kHEfelPPCHZbi0mTL8JylBd7j7KeHnMA9neXc/yr/wCqm0PZLww535Wgc4f7eTX+8qfx2P6mleys/wBP+/sed0F6Vd2T8GNb/od1/Opl/wDUo1R2WcINYS3CSP8AvMv/AKkvx+P5Ml/4nP8ANfz/AMHnNBdO437P6XDoH1OGwuDGauaXuOnxKxNHS0jnWlivy94q6OohJWjJk0s8bqRToKyEEAknidCA4XyHMdPtVeRqVapplDi0JQSgBzRWTsVBIJYaEHNA2CLChCCVZEAiwoJBHZBMQSCU0C+oQIAdrslY6EoJzK2xKSQiwoSgjsnSxhbcD7UNhQyglEC6BCLChKCXlFr2RsDSdRcIsKG0FIMTX+4whDuLe8EtyDayOgpLoo2i5un8Mp4J5i17MzQOpRuQbWV6CkPib7SWNbpe1kmaINdYCydhQygl2Gw3REWNiiwoSgjsEYCLEJQSg252unWU0r/did8dEWOhhBTWYdMRcljfinosNbfxyH4BG5BRWIK8bh9IN2Od6uKc/F9F/wBh/ed/VR3oe0z6Cv3YdRn/AFRb6OP9VZYZwdBiWE1FXFWvglinZEGvZmYQ6OR+pGo/N257+Se9BsfRjkE9V00lNM6OSxLTu03CZUiIEEEEABBBHyQAESOyUG3bdKx0JQQshZMQEELIkAGlRMzyNZ1Nkm6fw8F1bFbk6/y1UXwrGuy9lDRM4DYGzfRShBHUyRtA1DVUyzG+u991acOS95WtBPJY6cUbI1KVGn4EwkNqHVD26k2C6xgkAawXCyfC0LBARlAWzw5ujQ1YMstzO7pYKES5poWZgDZWMEILsv0VfC0gNJ1Vk0HKC05SFUbRySBthcaqJUwMILd7qW5znEB1ym5GWF0mCMnj2Hskhe1zczSLEdVwrjjAX4LiHeRNPcSklvl5L0RirfCbCy532h0kdVhsjXMzFmoPRX6ebi6MOtxKcb8nEa+UGVsrG20s71UCW+ewFlcPp4pJHQOOR2pHmRyVVUAtlILbarq42ujzk0Nc0CEbxc6J2kgmqp4qaCJ0s0rwxjGi5c4mwAHqrSsbbqEtkUkhsyNzz0aLr3j2DfgpcK4NgVJi3aDRjGMbma2V9G959npri+Qge+4cySRyA5n0NhPDHDeEwtgwvh/C6GJosGU9IyNo+AAToVnyOZhmJO92gqj6ROP3JYwnFP8A6srP/wAh39F9gG08DPdhjb6MASu7j/Ub8kUFnx8dhOJ3ucOrB/8AgO/om3YZiI3oKoesTv6L7DmKM/6tn9lJdT0596CI+rAigs+O7qOraPFSzN9WFNvY8aOaQfML7Dvw+gePHRUzvWJv9FGn4ewGe/f4Lh0t989Mw/cigs+QQBy6gpPNfWur7POAawH2rgjhue//AGmFwu+rVR4j2H9kleD3/Z9gDP8AYUrYf5LIoLPleBfRPAfk19JcQ/Be7FqsuLeFn0xdzgrZhb0u4rI8Qfga9nFZE78UYxj+FzH3bzMmjHq0tBP9pJqwTPAex0CI66r1Lxp+Bjxlh1NNU8M8RYbjeQEiCVhppX+Tblzb+rgvOPGHDWP8JYzJg3EeFVWGV8YBdDOyxIOxB2IPUaIoLKptjoEdi3QbpDNNU9A8F3iCT4Ghym706A2UtlP4DJI8EDdHBTOlI7vVWkWDVDqYuEbyOZssuTKl5ovhBsqjJTGLLk0T2GCEyOdENgirKPuBlyo8IhysqJhKxndtFmuvd5JAsPtPwTTTVoTTTIJka2recvNN1d5DmaLkqxMcWcvyNzHe6WNBYAfAK5FbKeOmnLriN3x0T4oJX6ucxv2qwtfVBSsiQm4ewe/I4+gsn2U0DRpGD66p0ko2+aLADGtb7rWt9AlD0RHRAJAKug06oglHZAxwG2qF9d03fRDNayKAfYRay13BpAwCsFiQaom19NKSoP3rFtdqtfws/Jw5M8OsTPP9lLIP95RkvTL7MnB+pGLpgH43UB7Q5vdv0I/ZVmeHcJJJMkrT0EgsPsVdTjLjdTr/AKt32gK8np5u/ksx9sx5eajlk1VMliindowSCCC0mcXCwySsjG7iAp7sKmucpuoNO4sma9u4VhFXTMBN7qqblfpLIKL7GX4ZVN/QumjS1DGkGMqybi8o3AKcGKtcNWD5KG+flEtsX0yjMUg3YfkkkOG4K0AraZ+jmD5I89E7UtAT96/KF7v6mfBsLWQuFeGGie7lZE/DqV/uvAT98vIe7ZSNIDgVKw4NNY0EkOdo23VTHYQ0i7JEUWGSRStka8eE3uk8kWuwUJJkeckyEA6XV3wm29UT0Co57iQ89Vq+B6fNDLM5vOwUMjqBfgVzOk8M6xtWyw54G9guWR463D2GGLV5Op6KJVcY4v3mWnNgOdt1z3jcjswzxgju9PPE1niOgVjBPC6MFrrrg2F8c4sZWMqQDHz0W0wbiV05s03FtlF4mjVDURmjopqYxIRcadU3VVtNFHd0rRfqbLC4zjMtMwSE6kbrnGPYtiVfVlzJnht9BmRHFbDJn2LhHaq2qglabTMPxWN4mZ3lLUMad2EhYCndj0ADi6Usd+0tBg2JVNVIKOqBd4TYnf0U3i28mV5/eKmjlVdKBWOds4OVVUXdKeqtOKaZ1LjNVEL2bKQPuVY/wuLieS6cKq0cHL20Ns0Fiu1fgVcM0/Enb5hXtcIngwuKTEHMcLjMwAMPwe5h+C4oHAles/8Ak38NZLxjxXi5ac1NQQ07T0Er3OP/AO0FYuyrwe3tmm29lx5napjf/RtV1ktDRjixuPy8P09JZwifVe0FkZOt8vd2kOuwNuS7CuRN7M8Vk7f5eKZ5ojwu0DEoKUOH+kzCKcvLf9k29/1iCpETYS9onCFJxLBwrXY/SDGnuZEYWNdlErhpGXWLWvdyYTmPIFV9L2x9mtVWmjp+KaSSZsc0jsrH5WiIEyAuy2DgATlJvbUCy55LwF2i0OKQ4bRYFg1XhtPxh/zh/GTsQLJZ43ylxjdHk99rXkXzWswWW+7JOA4+HOB8LosZw2idi2Hz1csUrAHGMyyvJLXW0LmuAPyQBkuzXtZrOJOHuKuLZscwc0tF37qPD5YX00UETJHNjfLUm4dnDQTlbpcaclq8K7W+FZ8KqMdr8ZwqmwVtRFSQ1IneXe0OYXPjkY5jTHa3hJ94EHS4Cy2D9n3E8n4PtNww6lpoMapcSOIMpKmQGKbJXmobFI5t/C5oA52uOiab2dcW45iTOI8ewvCqKtreKMPxKqw+Ko71kNNSx5Ll5aA95tfQfq9EAdZ4Q4owLizBzi+A1wq6MSvic/u3Rlr2GzmlrwHAg9QuY4D2u0uN9qWOU8XFGG03DWBxuvC2ikkkqssHeSyGW+VjWXGliTld5LruH4dQ4c2ZtBSQ0wnmdPKI2BueRxu55tuSdysDRcH4lXYf2mYZWxCkj4irpRSSuIdeN9BTwZ7A/rsdoddEAX2J9onB2G0kVVV41HHFLhbsWYe7eb0jct5bAXt426b67brJ8c9reEO4HxnFeB8YosQrsLqqWKYFjnMAlnay4vYPaRnAc0kXB10WAruzXtO4goH0eK4JhOHmk4OlwCnkixLvRUSF0VnHwDIHBh625rS9qHZRi+MfjjDuHoKSlwytwjCqCFrZu7MIpqqR72tsNAI3gg9QgDolT2jcG0rMYfPjcDIsFkZDXTFru7jldtGHWs9/7DbkEgW1UT/pZ7PRg9Niz+JqVlLVSyQwlzXtc6WMAvjyEZg8XHhIubiwXNJ+yfi7h6Wgo+GqbD8TwLh3HG41hFHV1Rjkm7xkjZYHvynxMc4PY91zrYkkKfwB2dcXQcYYXjfEWFYXTMgx/FMVfHDVd93YqoGhgBLRdzX5mk25XCAOx8M43hXEmBUmOYLVCroKtneQShpbmF7bOAINwdCLrmv4VPZtQdofZXibfY2vxnDIH1eGytHjD2gkx35hwBFutjuAuo4Xh9DhdBFQYbSQ0lLECI4YWBrG3JJsB5klPzgGF4OoI1QB8cgLNslQZs2gupuLQMjxuvgZ7kdTIxo8g4hRS1zH2aFW34LEjXcCwUkmNUjK9xjpnStEzm6kNuLkD0X0Owjsw7KTwwyOmwmgqKB8VzVGcuJFvez30XzYwmodTvEhd4hstW3i7EGYeaRlVIIyNW5jZczJGsjbipfc1x5jSlRYds1DgWH8Z4pR4DN3+Gw1L2QSZr5mg9efqsPSRQtoJ5WyZn981ob5Wd/QJOLVr53ElxN0xh2kDz1crsGNwhTK8klJ2OkuKK5B6o35QbkgItCtaM7Dui1uhfRHdMQLackALIidUf1TANFzRq4puGccqOHZuIocNnfhcL8klSB4Wm4H1I180AVF0etvJEdDqgL28kAC6luoGimgqXSMkEjc2Rr7FniLTfz0v8QoiJzc1ri4B5oAekEccpELy9gtZzhbXn9q02A3ZwrI47GWpPx7pjf95ZW/wWnw14bwja+rnz/WD/ioy+Fko/EjMRkfjysIvbKR9Fp62uhirJ4i4XZI5u3QrK013YvWH97+YIsUnLsTqnDnM87/ALRVeaG5otwz22UKCCC1GYXF+cCfI0TEP5wKSOirl2WR6GSwhKjBAT5aOiadYEpXY6C1A0RMc/NY7JyJuY2SnRaE9EWgoQCb7lATubzKBF1LOD1xibL7O/I/Y2UXKK+IdSfQy2pkJ8LjZONrJR4S7dMPgfA8se0tcNwUgsc/UckbYsdtE6mhEpcDqRrddC4OohHg7dBmeSVkuEomSwVTJQc7W3b6XXQOECIooopNQB96zZpeDoaXH0yirqJ1NI+SVhNzdO01bh8MQ76ke8nkxlyuonDaXFaPuZGsYHDewuqpnB88EuWnliLeTnN1VCyLyb/wsv0nO30tRI4Sw0dQI3nw3ZqPVa/gKkfHiLW1LNxdaB+DOpoPysrnnnYWCZweLLirMo5WRKaaLceFxkrJ3FmHR1bu5j8Hh0K5vWYNiVNVvEQhc6/hLzuuw4pB3c7Dvdt7pl2EUOJRB08Izt/SGhVantLsmDf0cyY7HJ2MZUUsF22aCw2Wow3BZIqYVEwaJXN2tqFp6TAKWmkDoYmX6nUqTVxsEbmvIBtoic2yEdLtXJwztBoGQY3LI5rbTw3uRs61vuXPKqmlYL5TZdI7Wap0M7c4BJJa30FiubzV0j2ZANFu0+7amcDWbVNoaZA8Nz2uvZn/ACa1vZeOSdH56G/pae33rxkyd4Fr3C9Of8nrxdHh3afinDU7mxsxqiDorn3pYSXAf2HyH4LWrvkxOq4PeaNEqfjnF58A4MxnG6am9pnoKGapjh/XcxhcB9ikRJlZiuH0eI0WHVFXHHV1xeKaI+9KWNzOt6DVTfVeZarH8ZouM+EOKcU4ug4nnbwxiuLx0cFNFGyCQQROyMyeItNy0ZrnwnXWwv8Ash4l4/4uY2TF+KmUNHjOFGShc+CkZUiou1xfTRDNeFrc3567jobBAHeWPY9t43NcOoN0r1XGvwTMMxOi7OHz1uP1WIQvr6yOOnlhiY2Asqpg5zSxoccx1OYkDlYKi4p7RuL3YxiuL0OPUuGYdhPFdLgAwp1NG8zsfJG2SaR7vEL5yWhuWwGt0AdzwfF8Nxc1gw6rZUexVL6Woy/6uVti5h8xcfNKw/FMPr6qupqOqZNNQTCCqY3eKQsa8NPnle0/FcEwvH8YwzEKrBMJxWLBhxDxziUM2KSRNk9nbHGHZGh/h7x5bZua40OhVVwxjfGFLiZwfBuLKaWtxrj6roa3FTRRP72KLD2EEMHhDwIm7WGYbWuEAelJa+hhxCCglrII6uoa98MDpAHyNZbMWt3IGZt7bXCkrg/FHFvGXAeJwQ4/U0OOVtBw1i2I982lY10zmTsENy1oy/ky3OGgAkE8grns64m4nf2rHhXEuL8O4lp/xCMSrHU9NHG2lmdK1rGRlh1YWlxs+7rAG+qAOvI0lrmnYhGDfY3QAajYpVQ0WGVVZUPDIYInSPcdg1oJJ+QUlcw/Cm4ij4a7B+KKsytjlqaM0UFzYufN+T06mzifgUAfMipmM9dPVHeWR0h+JupLWxviDmmzlEc0EADdOsieGDxAFZ58l8VQCSx2pTrphe5OiINJtnbmum54xbTRQ4fY+hMjgSTyUukA9kB6uVc/wi11ZUlvxey36ym1VEQ3Fnd7EuvoQicb7CyB3RKaKw7o7E8klouV2PsSwLh/ijhHiTCKrDKaTF4oi+lqXC7xmaQ0DpZzR/aTQHH2i4NgpuDYTiWMV7aLC6GoralwuI4Iy51uthyXXeyqGDhTsm4n4yqqdj55SaWjMjASHAZRa/7b9f3Vd4biVN2ZdimG43htJE/Gsacx5klFx4gXC/OwaBYdTdOgOH4/gOM4DO2nxnDKqhkeMzRPGW5h1F910agxTjODsBmpY8PoW8PukLPbDKO+c101iwMv+udzyWxxzFHdovYBX45jVHDFW0T3FkkYIAexzdRfa7XWIVbUER/gnUsTbXkn/wD5Tj9ydUBwd26ANlIfRVnsXtppZvZc+TvshyZumba6j3sbKIBi5KPe4ASQgSgA3aFaLDnAcPRAnfvrf2ov6LOEq8pT/wBT07c1vDJb4uH9FGfwslD4kUNDd2J1bhzLv5wo9W3NVSutu9x+1ScHsamd/Mj/AHwmpGkyONtyUsjpksatFIgggrykcg/OtUo7hRIPzrVKuq59lkOh4ObcbJmUDObbJJdpsgDdQSokPUkeeXKn5KfLG45tlFZIYnZm7pXtTy0tOt1Fpt8D4GQdV0WHiConwmkpvZGiOMWLsoWBipnEgyHKL7c1MmqJXQtY6Q92PdbfT1Veo0yz1fgniz+6uvIviGT2nEpJA1rQTyKiwTRxNyFpcT0UaWo1Ij8V+vJNN/KShgGYncq+OFKKiUyytuzacPVlDVV0MEET4XlpDibWd5LXYVaCpMfILkVPNJTzZoHFrm6h19it/wAKYpLV0Hfy6zNeWuI5+azZcKguOjoaXUbuH2ddwZzbMdewAV8yeny3c7Zc3wzGCyMAv1UybF5ZQGRusXc1mcDvQzLaafF66F5EMJDieV1AweI+395bQHYLGYpV1GHVLKhkheCNb81acJ8UU8s3dSENcDqk4OuCCzRc+ToeLtL445OjVTVWNPwywMYcxwvfol4pxPRjD7vewZfdtuVnqPFaerY8zAOLtMp5BJRLJZUnwzV4bxHSzAEZXEhN4lWxyMLjoLbrmuITyYRiJlp3XpnHYH3Vax4oammaQSQVLYQeoVUYLtge6SupifdcHEfYueHddE7WzZ2G35sk+oXPZCL6LoafiCPNaz81iACTYC67d+B12cYpxp2tUOJRvqqTDcBlZW1dTC7KQ4G8cQPVxGv7IcuZcMUwrKmCip6YT1dQ8RxMJABcepOgHMk6AL1Ng/bFwR2GdnkPCvAMUPFWPSAzYliMbi2jNQRYnPvIBoAG6WG4JKsWS274RncfkexqytoqKNj6yrgp2ucGNMsgbdx2GvNPXY9m4c0j1uvlRx72g8W9oWOnE+K8WmrXNJMMAOWCAHkxg0HrueZKteFO1/tI4RhZBgfGOJwUzPdp5pO/iaOgbJcNHpZDypOg2OrPo7gnZ9wPgmJuxTCOE8Goa1+a88FIxj7OFnC4Gx6bJzh3gTg3hzEJsRwHhjCcMq5wWyTU1KyN5BNyLgaC/IaLxVw7+F52n0bWtxGiwDFmDdz6d8Tz8WOt/dWwofw1qhrgyv4Bjc7mYcS+4xqSnFi2s9d4NheHYNQihwujho6YPfJ3cTcrcz3FzjbqXEn4qkxns84GxnGn41ivCeD1mJPAzVM1Ix0htoDci9wALHcWXnqH8NHAG5fbOB8Wjvv3VTG/62VjB+Gf2fu0l4Z4oYegigP/AJqe5PyKmegcT4S4ZxPCanCcQwLD6qgqp3VE8EsDXMklcbl5BHvX57pnCOCeEcHjpY8K4cwyiZSVBqqdsFO1gjmMfdmQWHvFnhJ6LiDPwx+zQjx4JxUz/usJ/wDNRn8MfsuH/wBGcUE9PY4v/wC1FoKZ3XiXB46ymqKyjw/C58YbSS09NJWxZmZX2JjcQL5HENuB0WE7K+zKbA8RxjE8cwjhnDhiFIyhbhuCROFO2EF7nue5zWl73l9joAA1o1XPqj8Mvs3jF48A4pk/7vAP/NVVW/hr8It/zPg7HZf9rJEz6Oci0FM9Nx4NhbJ6KeOhhZJQQugpXBusUbg0FregIY35BO4ThlDhNH7Jh1LHTQd4+XIwWGZ7i9x9S5xPxXkPEfw2/CRh3ABJ5GbEbfYGLDcS/hh9p2Ih8eE0OB4NGdnRwOmkHxe7L/dRaCj3xiNbR4dRyVlfVQUtNE0uklmeGMaBzJOgC+f/AOGL200naRj1Lw9w3KZeHcKlMgqNQKue2XOAf0WgkA87k9FyXjjtG4444fm4p4lxDEo2m7YHyZYWnqI22aD52WWzgMsFFy+Q0hU52ISWveTe5+aS93hHVBp8N1BLgnZIFQ8AC6X7SCLPaCVDL0sEEXScENSY45zHvsRYK0hjDMPjtsXFU+bxaq3P+jYMp3JuoyVNDvhjJOuiJC3NC6tKg23810r8HbHRg/aTSRSaw4gx1K/yJ1Yf7TQPiubDRLhmlgmbLDI6ORhDmuabEEbEFAHefwkq6DB8Cwng/Dg2KF80ldMxvK7nED4uc8/AKRwriXBfaD2ZYdwrxFi8eFVmFBoa+SZsR8ALWuaXaOBabEb/AGFcAqaqoqZe9qZ5ZpP1pHlx+1Ia7VO+QO1dqvF3DuC8Cw9nvBVWKumD71tQ05w4A5rZtnEusSRoALDyqcX4zwGp7C8O4SppZxisMgdK3uyGD8o93vfELljnX1uk31RYHT8S7R6CfscpuCY8MlbWNytlmNu7Aa/NmbzLid9Bz3XMSddEC4+aL4IANpRhJRoADirqEtGEU+Y/on+Y/wBFS5bq2c3LhVOb/wCrvb+J6jLoceykwM+KY+Q+q0PslKdbNWewUHupXbasH1Vx3Lf+2PzWbVptqmaNM6T4MagggtxkFw/nApI2UaL84FJGgVcycQFwtoEpoB2CYvun6e5Yoy4JRfIMhd4WtuVLjhbBq4API3P3BWbYYaCmzXaZjzPVQYe7BdUSku1OUEblKDvkcuBp72MaXyE35AquqKhzzYHRHWyl8hBBuDzKZa0720VyRSHHGXAucbNClUYYwvIN7i1+iFN4mFj7AHZNR3ikLD/7pisVKC0aDTnZbDs6cZaeph5BwI9SP+CywAcLjnoQtZwQ6ngoZ3MNpmyNL231y66qrN8Bp0rrImamCile/wAG/kq+txd+HEsLD3gPiJ2CvMMqGtqmOJ8LtVYY3hGH1WeSSFrs7b+q527mmdpJtcMxWIYnHiFNGTO3zAVPkeyfNDNboWlW5wERVL20Ya+M38B0N/VavB8A4f760xJuwXBNrHnZXblFEZYpdszlDTxikEtTiOeYjSPUgf8AFTKeSemppahlHNI3k46DZbukpOG6TDXRR0cL5g7MHkXcbHa6qMRmfUOI0ERddrbW+Cruy/Fj3eCgwnBcSxGlNdV/kmynwxE3IHmr91BFQwMjbbQXJV1T2bSxsDR4QFju0LGxRUro47d7ICG68uqhblKkLIo44tnNOPMXdieOyFp/Iw/k4x5c/tVASHJVQczyb6pLRfTZdOKpJHnZycpNsl4X3fe/lGl1hoL6KzkeO6y7N5BVdBG504Dd1aS0sggcXHks2at3LLcae0ahAJuLfBCeMONst01hYDqnITdaXBKeF9a4TAFuVU5snunZZjjv4M6wZNALJDmMMl3bq9x8UYe1sAs4HUqqjhDnZinjybo7uhThtdAfEXRA2uo4gkM3uldJ7K+AcU46x2PBsHibJMWl7i92VrGjdxPRabtg7Gcf7PaenrMRZBLSzktbNC7M3MOR0uCqlqavjj5k/dJ+TiU7SwWKim2bUqyrWtzuJNzfkqyQ+Na8btFMlTHau3dtynRRSRbRSasfkGWBUVo0srIdEJdib6aI7HLdG9mmiNpHd25qdkRdPTvqDlabDmp8eFxMGaSQEqPh7yLgGymOd4L3vZUZJSukWRSrkhVlM2N/h91NtjBCfndmZcnZMRuv6KUW6E6sbfGA63JK7vw3CVKn49WhttFJydCSVkMjZWrDfD4fU/cq+ZmWQdCrABwwyA/tvA+Ab/VDdtA1SY0blyAQJ13REgblWFYpBI7xg0zAfFAzRDd7T6FMBaMJr2iLqf7JQ9ojBvZx+CAHSjTDqlt9GOSfajyjHxd/wQBK80LKJ7S/9VqBqZOWX5IAmFF9FBM8x/Tt6AJ+mfI9hLtQDa9tj/gFAD19N1b1fhwik5Xhv/eeqcBW+KO/6rpW/q09vtcfvSfQ12U2D/mZByMjPo5XWem6/aqPDdKd528Q+hSMzv1lVmjuZPFKkVSCCC0lI5TDNO0f42U0RXUKnJEzSN1PDjuqcl2W4+hJpx0TtFEPaYwR4c1yh3ulrI4pcpuBrYqu2yfC5JNQ+WoqHOb+baNSRoEw+XwFo56X8k3IZmR5SDlJuU2HNOl9eiuiilsi1MZE5uR6o42xm2aQ2T8gZINbXGyOOEuZ48lhrYBWEBDqe7Q6GQu+KFi9oDrd63bzS2hrB+TNuaXI0SwiQDK4b9QmAzE6xAOgP2FTaGpkpahs8fvDQg7EdFBkAcM19TuR16p6nfnYAd9ik0OLp2b7BcQbU04LHfDm0rZ01Uypw1ut3tFiuOYZXSYfUZ2DPG7R7VusDxaPwzRuzRv0cOi52bHtfB19PnUlyS5JHU1Y4DcHUK0oKyiLs0pc09EqfDmV8QqYXjPbUKvlw+oiIABc7pZQUk0dPHllFF3+MKNst3RunHJt7BR80lROHEBoJ8LANAm8NwypfZzs1loMOw+KmJnmdcNGiUpJdE3klJfIarqplBh7nyODcrd1xLijEpMRxWWokP5IaMHktd2ncQd/Uuw6ldZjfzhHPyXOqp+Yht/NXafH5ZxtZnt7UOUeD4jWwT1VJSvlhh1e5vLS6r3NcHbK3wzGcSw2nqYKGd0UdTGY5RYG4+PPz81VNeWy33I6rTHfbvrwYHtpV35LLh6MurruBAWiqoWyROYOYVBgtQ6WvaLBpPRaGozMic7oudqm/eI14a2FTR4b3FR3hfdPVhljdmicUVJVd7Plsd1rOEeGHcRVcsTpe6ZGLkgXKJSlu9RCUowhfgxDA9zryG6LLIJLg6LvPal2H4fwZ2U4bxgziL2mqqXRh8BjAY7OCbMN73bbW/nsuEzOyyZQN1dbsgpKSs77+CbWVdBjOJYxh1Q2Oqo4WjK4XbIx17tI/hCb7ee2PFOPoY8NqYIKSnpZHfkIb2c/bMSfJZXsHxkYNLjEmaxkgaLel/6rnlbVuqcVqJT+lM4n4krl445JZ8kb9PD/AIN09ixQlXq5IlW5pmLXDdVz4/HrqFZ1wDHm41sqsnxXGq6+Lowz7JlTEDSx2SIcMnkjMjYnlo5gKW2GR2HtnGrQRdeuexTtU7JMG7G4cCx3DoI8Qgge2pidRiQ1bjc3zW3NwPERZEJeLIz45o8ZzRObcW2UZg5Fabi2AMr5KiGMRQTyOMTL3ytJ0HyVDNA9soGWxIurMc00KUWhyiYNU8xt43AXulYdAfFmU6OINbYNuqpzVk1Hgqp4nNiFxqU22OwsrKqgeQCdkyIg0aaprJwJxIMzCSAFIgiIFydUJQGPBUqG2XNZOUnQJKyFWxEAO6KQHufhcLbhoa551/h/onpYxIzKdlHe0MiZGORPP0Txy3NIJqkM1DXiEPF8pOXMNibbKKPID5KdVXNJEL6d47T4BTuFcBOOVUkZqO4ZGzMSG5idQLbq+UlFWyvFillmoQXLKPfdAhdJh7PKHeSuqXfuta3+qlxcAYMPekq3esg/oqfxWM6S9jap+F/qcqF+iOxIXW2cDYADrDM71lP3KQzgvh1tv8gzeszz96i9ZjJr2HqH5X/f2OOgG1rI8pXbIOF8BjPhwqmP7zc31U6LBMJZ7mFUIP8A93Z/RResj4RdH2BlfckcFyHogGOJ0afkvQkWHUTPdo6ZnpE0fcpLKeJnuxsHo0BQ/HfQtX+Hn5yfx/8ATzk9jmGzmlvqFJonEQTAE2L2Ajro5bLtnsMZowAL+z3/ALxWNov83k/2jPo9bcU98FI4eqwe4yyx3dDuvorPFnWo4R0px9FWeqsMcP5IW2EDB/cCk+ihdlVQm1MT+0fogGabJVA29I7mczv5QprKKqLGkU0pBG+VU5XTLMa4MygggtJSO0ovUNHr9FYhnkoFBrVx/H6K6DBn0HJZs0qZfiVojtgzN3SXRd24X1UtuVosSAg1kcjgXPDWD3iqlJkyLVumrKx8VKyzGm3kE1JSTROAmzettFazVDImZaeIRM89z5lRZJ5XH3iR0tYLRByKZJEMU4fez7HoQmnsqILkC7TvYqbmIPupLgTqTr5q2ysjtlhkADwMx2PmlCNzQCxzgD57Ip4mP95tj1SYXvgfldctPUpiDcwtJ53TDXGKS/IqcQC2x35Jioj8JB1T7AeGUx+L4KThtY6mf3eZwa73SORVVHI0ARy30TneQNsBmLbi55hVyhuVMsjNxdo2+E8ZOw15gqY5PCbHw7K+p+0HBGHvJBMT/s1zyoxMVsUccsELpGNDe8AIeQNNTexUNz6WEh0kZdfkCs706+RrjrJx4TOuU/aFhUmkLJ3X5NiKjcT8dU0NExrO8YZL2u3VY7CJYammZ7IMrb2dcWI8lScXziTEWwg6RNt8Ss+OKll20acmpmsV2RaiudVVEkpzFz3EklNG978ymqcW1PNPLoqKXRynJy7BeyS9mZ2YDVKzAakJTYy/XYIYkPYCcuJMuFq69wFLJbXRZqhgd+MYi3KWmwuFpZ4i1pzNJBXL1le8TN2n+BlBgxea4ZgQL9F3L8H+HDajiGpgrp2wh7WgOc6wtrdceore0HKy2qn1EtRAc8EskThzY4g/MKvK98yMsW7G4nePwnsFwbC8EoGUNeJ3GTSPPfKPILzRVuAqbW0VpNiFVUlrampmny+73jy63zUSoY3Pci5U8a2shHGoxpE7BK00Uskkb7d4yxVRBmNW51813Ep6QtZAX2TFBIx0lhvdSjGt0kWOV0hytjfmMhdcdFCyhrlZ18bwGiygkEO2VmOXBGa5LUysbwo9o0fm+9VFLO8ua253Ut8x/FbobblRMMbfEYWHUFwBTgqUiMnbRdcVVAljo4mC+UKoxZ+aeEjQBtrLR4nTwjH4I/0S26p66AT473DW6A2VWGSSX2LMibbBh4FnWaSraGinMAkbGd9lKwrDGidw/V3Wthpw3DnPYG+BZ8mZXwWwxuuTA4rBLC1okblNtkxR0ueIvsT8FccVSmpcC61wLaKw4Uq6aLAJqaWJjnG9nH1U1kcYWkR2Jypsw1Sy1QARzUyKHNCDawSK8D21zrfpFSYn2iAymy0NvaVJcixCxrQLKrr2hs9tgrR8vhHhN1T4iSZxoQlpr38jztbRqq1poRfXO76NWx7KGZqqtd0Y0fb/AMFjJz/k8X7zvo1bjsjF34gT0j/3lp1P5bLfZSvVw/f+x0JjfCEMuqMGyUVyT24kAJTRrqgBZKtsgKDA6J1ugTbQnBdIkkONunBskM2SkiRyTtnN+IqYdKYfzOWOpNIXDq8H7D/Va3tjdfiiMdKZv1cslSHwD1P0H9V2tP8AlRPA+0n/AFU/uPE3Kn48Q1jmjlG0f3AoA94eqm8Q694bfo/0CtfRiRFwlre4bfnI4fY1ei8OwiA4fTH2aM/km62GugXnbB4+8jijvu9x+wf0Wvi4gxyKNsbMRlDWANA8gufrYOclTNemkorlHL0EEF0zEP0DXPq2NZ7xvb5FXkTJWtAcNVUYO9rMRic42Av9Cr9k0cj/AAv0vqsWpb3UacCVEOaGQyZibBNPc5v5JrSGg6nmrKtexjiI7OAtuq6V+YnzN1LBbVsWWkxpwcHaOJ87ogxxFjqEsWSgFqM4gCRurSHgcilh7XnKRldzaUosJFxukEA+F4v68kxBub4eo+0JiRu4OoKfBc3RxzM68wm3gXtyOyKGE13M8hdC+YbanZNvGU6IRuIdd1zdMTItU2zsyaBFrFWMsYe0vtfqFCfC7Mco87IaCxLHZHXudETnGSS5KSd9d0f1SGX3ClbFSTzwzXa18ZLf3xsPiqqsY+SolmlJu519UiCQskbKy2ZhDgPRSa2c1cj6h4aHPNyGiwHkq1jSm5fMm5twUfkMR7JY6blE1tyLaFIfOGtyxi55uVjIIeaxkZzSG7unRNuncH3bo3cBMxZ3v5uKfMBeLXsQLhRY1RJpZ8xGtjf5Fbbh2rZiNG+Cot7TGP7Y6rCQx5ACd1Z4XWPocQhq2eIt3adiNiFl1OBZYV58F2DL7uX0NlBQRZgWs1Ku+GeHocUxQ00o5X1TOEPNZBHVQx5oX6g9PIp6prarDpfaaTM1wG4XDlKTltXZ1Yxilb6He1Tg6m4bw+hmiDA6R1j1WOjwzvKX2g7KXxNj1bjDYG1kkkvdnw5nE2UWaetZAImMIYQtGJTjBKT5KsrhKbcVwVtZSju3AbKNhUDGVTSdQCrFxkLSCw3Pkq7C4ZZKt+U+6b2WqL9L5M8l6lRc4nHGWlzbBUEgAl12V1URSOIDgbJ6LC4JIcw3VcJbFyTktzKCTKYCAoVHKI69jnGwB3VpjVK+BjgzYdFnowTJqStmJKUWZpumaSsxOL8ZMqGuzBrbKHFXPbiRq2gbquLQNDqpcMJkiNkvdxig3ts2eAYkyZkkr2jXcq/oaxjqV8cTw5rlkuG44YMJqDM61xon+E6nuGSkuztLjZc7LjXNeDZCb4sPHqZ/fGwuLqupo5A8Ma4sBOuqtcer4xdwBCqKSqfUS2Yw262V2NS2lc2rPQOCfg0YljGF4NiLMUiZ7YGvmHd5sjSL6a6laub8EuYW7riaP/8AS/8A+lgeH+3/AIrwPCcMwyKKmkZQgDM4kF7QLWK18P4VPEEsjIWYDR6mxd3ztPsWuKxtcmVvIjn/AB52Q1nC9XNSySiYxa5w21x6LinE9M+lxLu329y4/tEfcu29qnapieL99MRH3soFww3yjouG4/Uy1VTFNN7zo/8AecjAlvtDyN7aZX1TgKeG36zvuW77HyXRYi4/rRj7HLn1WSGRD1P2rofY6P8AIcQPMys+hV2q/KZs9j86uP7/ANjoI2uj3TYKW02XIPbIs+G8HqscxWKgpcrXOu6SR5syJgF3PceTQLkrTvqeAMNlbRswavx3JpJWPrDTtkPMsYGkgdMxuoWDuNB2eYrXRj8tXVcdDmBsREGmR4+JDPgFteGeDeGuM+HsKxilkGFMwpvdY6y58bWtLu9aerrf4trfjg3xHs5+ozRi3LI3tTrj519OfovqY/iDBsIqMLdj3C8k76GN4ZVUs9jNSOOxJGjmE7O+B1WYAF9FvcLxDDsU7Q8QpMAom0OD4rTy0ggGxaIzleRyOdjXLC2A0VWRLtGrTTk1tl9Hz3z4f2DCMJKUAbKo1HG+191+LXD9WBg+qytN7g9XfctH2ruvxnUg/oxxj+6D96zdL+a/iP0C7mD8uP2Pn3tB3qsn3Y+03cB5hTMfJyy3/wAeJQ2Dxj1UjHwQZb9f95WMyIPBC9rYixt3ZXEC3mrQmrv+bPyTPBrQa6nuAQIXm38RWsd3WY6N36LHnfrNGFek5Egggt5lH6FzW1TC8Xbrf5KbTm1aMhIaTsq+n1lF/P6KdTEd+1U5UWQZY1z2h3h32Kgudc6p+d21zqRdRyU8cdqoU5WxTXWTjDzTAF0trdNHEFWlZIBBCDhcWITF5G76+iW199Dv8kACxFyLEcwUk2sQNunRBzuWo9Uh2+mhQMMgG4O4TeUh9hqClk+Nt9jokyixAvoSECFB2vQoiwuNwjnAaSTtdLDhYBMCJLECbluqYdELafboprvf12d9UT47eIDUIAghhvqnWkhmQ/rX1ToiJaTbQGx8k3lPp5IADy4numixPvH7kIIAWHNuR8k9TsNy5w15pVPub9UhjdO3IbDW6lNsPoo5GR5FuakAeBDBCbaa7JbrZAfNJeCNeR1RPcO6Iv0sojNl2bY4KOtdhtSfyFSQWEnRr9vt/ot3i9HNLSTSU9DPNHGLyPjjLmsHmQNPiuMU0ndvaQdRsvcH4LnEuH13Y9WxVsETpzNK2YWvmOUDX1Fjr1XM1OmxLMsmR0vP3NuHPleLZBWzyZUuhc9jGM8WdarGuGOIsNwSmxeuwOthw6ZoMU74HBjx1BIsUvj3CcOw3HHyUbbM74EDpzXpqj4uh7Q+z2h4fxGhgiZ3cbZ3B1w/K212tt4VDdplHdNuvBJx1De2CV+Tx5Wva+lL4mWKoMErBBWyBwvmK6j2k8M0WD8S1WH0DgKZrA4C+17rmVDSQvxCWPNsTZGJwlB10GRSjJHf+wvsgr+O6SoxwPpWYfA4xASuIL32BsLA7AjU9VzntZwaThfiWroYx3bIpMhZ06/atv2H9ofEHB758Mw+uDKKd2Z8TmBwzWtcX2KxXatXy41xLU108mYve1xvzNk7gkl5FU9zb6MFi1bmidERckbqqgoKh0XfiF5Zf3raKfi4a6UkAAAaWXVuA8Moq/stqpqkMEkbTZ3PQaKxz93C0iG3fKmzleG4LVV1zBA+WwvoLrd9inZxWdoPGDeHYKmOisx0ksrxfK1u+nM7aLun4K1Zwrw9w9UYvXULZ52sdG+Qsa4tAINxfy0XHOKuNaii7XsY4n4Qc7B81Y90IgsMo2Og011uNtVFZN3/AAJxa6Lftx7Kp+zRzKB9YythqIu8jmDctxexuORuuZ8KNpoR+VcMt1sO0PjfGOMYTW41XSVc4Zlu7YeQA0AWGwzIKdxtuFUvUn9y7pqyRxW6B0oMLgW+Sf4XrcPpnOZOAHOZYaKtxFjBGyw33UUNb7U3TkrIxW2iuUvVZMqahgxAjdt9EulxCCOoy/pXUSnYJMSAdqLKLIxv41cBpYqxJEW2XOM1UJiLg0gndZzFXh80MgNw6IfDxOVziljSm+uioa7SVjRsGD71bp1yRzESsN+79D9V0fseb/1XWu6zD6Lm1Tuz937yundkIIwapJ5zfcp6v8pmz2Mv6tfubgBKA6om72SwLFck9qjVYHG7EuBsVwynBdU0dRHiDGAaujDSyS3pdh9Aei12G9plJw9SYHhPDlC5uGwMEmKiZoDqyVzbPBPQcj5DkFzXBMSrMIxKHEKCYxTwuu0jY9QRzBGhHMLWfjzgaud7TiPCtbT1J1kZQVgZA93MhrmksHkDorYZGunTMOfTqTqcXKPfHzqvp+xKo4sJp+Jce4pwHvYMEoIpDSCUWJmlYWMYPQuc4DezdVhbg6hXfEXED8Shhw+ipI8OwmncXQUcRJAJ3c5x1e49T8LKjd5KvJJN0jTp8coq5d8f6L/cUEdzbRJbdKsqzQcO7UH5uNa/y7sf+G1UdL+Z+JKtu0V2bjPEz/8AagfJoCqqcfkW+Yv9pXexfAvsfO9Y71E39X/cfh1lYP2gnuIXG8p6yfemaO3tcQIv4xp11TnEGokNrXk/qpPwUIkcOiZ08TYTZxhOv8SvjSYjf859qreC43SVrGt1tBf+8FtTSTX5LDqJVM04o+k4sggguiZB6kaX1DWgXJB+hU2GlnY8OyFL4RYJOIaVhbmBz6fwOW+qKWJtLK4wt8LCfsWLUZ3jmo0acOLfGzCT6+Vhoo+o6FPS2db0TdrC11rRnYGm/VLzNbvf4JAPPZLvpvf4KQhbJGbhwSswI2B+CQMrt2NNvJKDIz+gB6FMQRcy2oI9QmTkvdpFypAYOT3D4pEkbSNdfUJAMnVha7capL35nt6GxS8gvoSEzIwsewb76oBkqo8QBGxQAtby0SY3Zohc87JZ3QCG5h+TJG41CWxwcwOCM+76pmmNg5h5bIAUb5iAbXCaLbne4Fr6J15AeLjkU9EyP2Ngc4Z8jrDyDrn6JN0NKxnOAbX9UUPP4I5GiwASYDYHqmIDheS52CcB0CRN72mxSuSAFO1BF00XWsD6pxp3TElxIQOeoSGKzkvHlqVtOznjjEuEa5/s1S5lJVjuqiMnS3J1uo+8rFbANA31KJwLnAE6A3UMmOOSLjLonCbg1JHS+O8bmmnY7O1xeQ645rYcB8V1OG4EyokkDMnUrjMc09TJTNbZwiABHktG+rYYmQHO1nMA6Lj58KUVjZ0cWb1OaLPjDiOfEcTqKy5LpNLrAGoqIawyNuTfWy6HQDBix3e2vbmFnsEZh9Rj9VDIAItcpKlgyxjFpLhEMsJSad9jvDuLVgqGzNjcbb2CjcQ4vNPiTmOYRdafCaKOFs3cSNsNgSquuwt09Q54LS66SzY3IbxzSMriEtmFx3Wq4Q4wbS8N1GDOYbyA2t6KjqMLqJMQdTZQ6wuq6dnsVV3cbPG3da4uM40Z2nF2dK4T43p8N4UxLCnF7JX3y+d//ZYQ1heZJXOPicSbqHVVckAa7ubZ9LlP4ZC2rlERaTcXNknFRVsFzwShiMbqZ8TTfRNUlWwUzwTYoOwiWnkfljflPkkw4fII3BwNj5KHo8EvV5HJ6hj4oxm1USaQCpY5rkUlM8SgNNw3dG6mcdbaqcaRF2x+Gdorc2YDRRWPL8Qe4O0uhDSTunuGXSvYKqFxJjNyVJUiLtkquk/yYtLgb7KnqXZputmhO10dQ4AZXKIQQ4h1wRursMaI5HY1U6ub+795XUOyQWwGU9Zz9AuXVPvM/d+8rq3ZE0/83XuvvO76BR1f5Z0PYq/ql9mdLg4dxKTDKevig71lTpCxl3PebuBAaNTbISegt1RHAsWbTMqHYbVNjkcGscYj4iQXaddASrDDuK6mDDaTDZqOCopaVrmxtc5zT4i8uNwdCcwB/db0VlTcf4i3FJK59M3O9sbRkfbJkjDNLggXyg7deq51Y/meqctQm6imZw4PiLBOH0kjDTxNllz+GzXEZTrvfMNlGdE9lswIutNR8YzxYnLVTQzPE8cMczBOQHCMAaaW5aAg2PVX9Fx1BW10MdRC6hpoQO6e6cnurd5cizDq4PaDpqG/JKMH+obzZ49wv9znJBaLFOQQyzPyRxue83Ia0XOguVvqjjHAqx9K1+ENgjic1sro4GFzmBzS6xcTvlJ2Grj6mvxLiHApeIYKinw9rKBnfOkZ7Mxpc5zSBpcm17aEmyThFfqJRz5X3jaMfY222QXSBj3CFQ+VjqeCnppJzKYhRhrbg1Aj2Btla+K+hvY763wmLOpX4nVyUUQjpnTPMTATYNubAX8lGcFFWnZPFmlNtSi0edOOH5+LcUP/AMy8fI2UKH8zGP2P95ykcXHNxPiZvvVSfzFR4R+TYf2fvK7kPhR8/wBQ7yyf1ZIw8Xr4B1kb9UnG3lzSL/pj6JzDgPxjT+Ug+qjYrtv+n9yk/BUi/wCBpRFXte7buQPtC2zsQjzHx8+i5nhlQ+BzXM3LWj7FZ/jGf9UrDnx7p2asc6jRjEEEF0DIWvCbyziCmeOWf+QrbVdS90MjbnVpCwvDRtjdP/F/KVsKp4jppJD+i0lczWK8qNundQZlRoLb2SHEFCN3iLTvdE8WdddBGNhgI9eqRf1QBUhDrS7l9EsG4F2kJpryN0oSeSYhzKOR+aSQR1PxSgR1R3Ft0ANEg9LpLgHXBTrmtO9k25oBQMYhJYHNduCpBOgKZlYSCWmxQhc50Yub2O6Yh1ztLplv571S79U3No643ukgYp/vNPnZCMOzavILDZvkikJy3S2+Gd2vvBD6AN/ida+jQkx7uRnIXGwIGXXW6KPmeuiEDDfqQN0DuUD73kgfd9EAKZoo8jg2Ta/RPA6KMTebXqhdj8DoJtfmdkG2vYD4oi9t99uiU0gi4QIcY97HNdGTnF7WVthtWKyHRxEg3aVSNlDTfchOYa50Mpl2JKoy4lNfUtxz2s0kMMrhe6D2mB1+7GY8wkUdbIGXbZwS6urEjADHY9Vy3GSlTNtxqw21k8YIa57b80oVlR7zZnA+aaZNHlynRILml2tkbV8hX9RUElaK01Aku4ixTbaCqkrnVRbnudbJWdvK49EYq6iJwMcpA6FTW79IuPI9xC4TYZHCKKRrmfpZVH4OrW4diTZamK7LW1VjTY3Uxiz2RSN6EKR+PKaUWqMNY7zFlHdLY4NWiVLduTNBPj+GzDSFmoUaKuw50ZD4Wi5VPLXYNK0N9ldG49AkNZQHVkxb5EqhY68Muc2/JMh/F8k8hLAG3TlXSYaaZ7mmzgNFXRMiY45J2m/VOVAJp3ZC13oVZzZDwWWGYdQPp2OdJlcUeIYRCGDup7m6hUOZ0LWkEEJ2emnLbte9Pc0+w2proQ7CQ2xuHFYnGY+7xOdh5O+5bFzq6PQPJPmFjcVLziU5kPiLtfktekbc3yZ9QkokCoHiZ+795XWuyVh/5s3HOd/0C5LUHxt9PvK7B2TttwnGeszz9Fdrfyzb7CV6r9mbBo5JdiAg0CyUR8lx7PaUaqbhGLJUSUeIROiiqe47yXNYm+Uahu97+gtfdN4jwfW0OHSVz6iN7IHtjna0EZHEnTWxOhZy/S8lnoZJI7d3I9ljcWNrHqnzVVThZ1TMW7WLyRvf6qblB+ChYsyr1/wWruEsceJnwUfeRwgOkcJGWaDtfXRUtRA+nnfDK3LIxxa4XvY/BWtRj+JzRMjdUuY1sTYbM0zNF9+p1KrKiSSeZ0sri57jdxPMqMtv6S3F739dfsNDRB2yUAgdlEsZ504nN+IcRd1qZP5imofzYtyA/wAfajx058YrHdZ3n+8UmH3Pl9AvRQ6R80y/G/uSsP8A8/h/eUXFNSP3lKw4f5dF63UPEzaQAfrFNkCZQxSPyFjC7K0Xt6Ky7uX/ALIo+GGyETmOxtkB+RV1aX9ULnZ8lTaNeLHcUzmaCCC6RjLLhkXxunH738pWynhbPBJEdnNIWO4Wbmx6mH738pW5cA0WGy5mtdZFXyN2mVwZhZ2vhqHNe3K5ps4Jx9ni4TuPNd+M5ntBLCRc9NFFhfYZSt8XuimY5Km0KAtsj1voEN0bbc1NEQa26Iw51t0ARexujsPMpiAHu6/BKLxazm/JEG9B9qPK7qLIALwnYn4oOabXvdKIa0an5psy5jZoJQMSQOZKQ0ZMwG24SyTzsEkuvsNEABNSi7gedk4EmYXaEITDkPgt5IpTZ0T72vYG3yRbxjqAjlAMDdNbfeUwFkZXkXuevVEz3rdLoNdmI6kIM0JCQC2bonElC+p6AJJOyADv4Somrnu057qQ82YogOpN7aoQyUI2jzSnZWsI2UdryG6X+aMB7yAT/wAExDjC03s3RLzm9gNkTWgDK34lIe8bD3evVICXSYh7NKCNeThyVxJUNlizRs31WdY0n9lv2qzw6aKGIQucd/eKy58V+pLk0Yp1wyfEGub4m2QdCD7jijNyPDtvdEQ74rDyaOBm0zNtvRH3p0zt+Sfa97RY6pnvAZ7Oapp2JxA+WEn3SEuNrCLtejc2B+1gmnUxvdpSTQUx1oIk5GyktOYWLVXBssd7HVLbPK3dSlGxRZOEURNwbJbKdpPhlcPiokdUCR3gU6nnpyLZspVbtE1TJEcM7Ggx1GvmmaTEsV9rdAHtc0HchS442yDMyUW81EohlrpAG5iOijF8OyTXKonVVfXZMroGE9QsXirnOxGZzmZSSLj4BbR8ljd7XN9Qsdi7w/FJ3i1s33BaNG7myrU/CVtSPyg/dC7L2WC3CFN5vef7xXG6sETfwj6LtXZgzLwdQu/Wzn++Vbrvy/3N/sBXqX9v90atrTZKaElpPLZOBck9kgwEoCyS3dLtdRJCXI+SM7IhugYLJLhqndgmpHBoc52wF00KR5qxB+etmf8ArSOP2pyIWjHoPoEdW0Sl5IAcDe4RsFo2+g+i9Euj5jPux+hNqgHoCfsUHE9ZB6lTKY2lP7p+ih4gbyAeqfkiaDAKiOATB7i3xAK29vg/7RVGDwNlbOXC/wCUsFM9jZ0XNzKLm7N+JtQRhEEEF0zAWfCxtj1Mf3v5StySL3WF4Z/05T/xfylbUk3suZrVeRfY3aZ+kymO5PxlObuuXbBVpdY2+SscZv8AjKa4v4t1AffZzgB5LfjXoRjn8THmODmgo7gKNG/KSE+CCFMiLGvxSwdE1eyUCmAsuslt031PTomwbpWcE+JoQIS4BzruOZKLARoAB5J4AAC4GyFtNEDI+W36N026SNp8TgE7NKGgm6jMAcbxxho/WKAFukY73SEl/iHxTrWtFs5B8yikaAfBchCAaBszXqkF92tHmnHtOvRNloGQjn/VMRIMT2QRzkfk3uc0HzFr/VJJsb7aJwVLpKOOldo2KYvb8QAfom32MuhuAN0gA02YT10RuGgCSCHOAbsEo6ElADU+jCozA21ypE2aQhjBcnkmGMfa4Dj6BAxYLeY2RmX9Fg1TbmyD/VvHqE9T00rxmawnzOidioBMhAZe5OpSm5GHU5ndAnjTVFjbI2+5zIhQvAt3jAeZ1SCiO+Rz3Wbp5BLEWXUlPvpxGz8m8DqSEQhc46loHqgZNwiobGDE97nNJ0uNlaPjvsVT0dBPWTspqRj5Z36MjY3UrUYbw7xDH+RqMMqG32c+wA+JKwaiEU9yfJrwbpKqKssc3S6TkJN7arbYRwPW1VRlrZBEzpF4z89gtphvBmBUTGtdQe0ScnTHNf4bLE80Ym7Ho8k/ocaijzPA7sl3QDUq0oeF8exB16PC6p1+rMo+ZsF3XCsGbGLU9LTU/Tu4gPor2ESUjfykUbhzLTlKr998jTHRL9TPMOIYHjGHVDhXYfUQhuhL2G3z2URzQPeYQvWzaeknhLzG52Ya2IN1n8U4QwWtBLsCiJJ97I0H7FZ75+URegX6X/qeZ+4D9W7IxTvaL2uuxcTdl8RY6fCC+nlt+ZeCWH0O4Waj7PuIIIpausijFJA1z5XRyBzrAE2A6m1tVOOVS4RmnpMkO0YeN7gbC7SnsNgrX1n+TMklkPJrS4lajC8KnrsJGJYbhkHcuuBJO7vCCOl7N3090hZCoxXEZo3QPqpWxE6xMORnxa2wWrHh3WrMmSWymX7/AGrKRWSUlNl0PfSAO/si7vsVWcIo5amWqnbWVDXagRMELNv13/8ApVSX2eHN8JG1kqepnmfmnmfK79pxK0YtPHFyijJmlPsmVtBhrWvgMdI6R0Ujmuile9zCxt23JOU3tbQKBgnGOOYPSNo6SeM07CS1kkYda+u+6ew0wivgdUHLF3gD/wB2+v2KhqqKop6iWBwaXRvLCA8E3Btte6tlCMlUlYsWbJie7G6f0NnTdp+Mx272jopRz8LgfqrSl7V22AqcGN+ZjqPuLfvXMTHIN2PHwSTcbql6XE/Bth7W1kOp/wBjr8Palg7rd5RVsfoGn71ZUnaPwzKfylTNB+/C77rrht0Lqt6HEzTD29q490/2PQ9Nxdw3UNvHjFKPJ7sp+2ysIMXwuewhxClkPINmafvXmppsUtp1uq37Pj4Zqh/iPKvigj053oI01HVRsQmEdHM88o3H7F51FbVU+X2eeWE9WPLfon3Y/jT4HwvxWsdG8FrmumcQR03UPwDXTLv/AGKDVOH8kapqAX+BthaxTzTdgUC6nDYLpUeVux2n1e790qHV/n2/45qfRgZnn9gqvnOaoZ8PqjyBpMBq2QQzNcwuzSE3AVh7bTfqn5KBgGX2F5IBvKfoFYXg/Vb8lzsqW98G3He1cnPEEEF0jEWPDf8Apqn/AIv5StoCFi+G9Map/wCL+UrZ3AC52rXrX2NmnfpMnjbiMUnY/wAPiuPkoRbGG5i7Mp+N1VPU1OeOPxAZcx5qvDWE3eSfJbcd7VZlnW50ILi/RgsEuF9jldogXHZrNOqS6MkZgbFWUQJV77IbFMwS3GU6EJ8JDFBGze51SQfmjadNkxD4I3um6qURt31OwQzBsZc61go8TXTTZ3/AdEAHFFndmkOZ36o5J6zXOy8h0SJpAHd2zTqQkOc7KImaOduegQATpAZC2MDTS/RONLmC7bknmUbWtYwNZ8+qDrudZt7N6IoBIBzXOpPTZOvDHRgFouEbY7C53ROYNBqgY2yJhfmffySnxscLNJHVKLbC6EQNr8ygBxscTWABovbpqm5LAWa1tvRLFw7yKRLoNwlQBBsZkbLG0MPUck459tLJMbS1guku1ICKCxRc4uvfROBxtZJaB0ShbonQWFmPIpOYlKLRyRhtrIoVjTgT/RKtoLIP0I9UbUUFl/2fZG8X4aHkWfOGXPLNp969E0mCwSxh0zPCPdBduvM2ASdzjFHNmtknY4HpZwXpqleZqaMB+7RY35/4C5XtCFyTO97Jl6JIsWwQQRZAwMa3kEGQskcDZuXkFFhe5kLmyvDrKTBVwkWzWNuiwbDq7yypmNjAHkpDoo3jxNCrmVEWU2cT5K1piZ4GmNoJtrdWKPBW5Kxv8Vh8BkiOW/Q6qmxQ45hobKxjqymHvFnvtHpz+C1DKmrig7nI0D0UFtS+oDxDJG8t0c3mCmo10DlZRYXxPRVYc2KobJI3RzDo4HoQl1clDXnuKmPwytIc0k3sm8WwSgxN2atw0MlvpNEcjx/ENVnOJsDq8EgNVh+MztysL8s5ziw5E7/am0mJycVyZnjbD6rhrBJqThuoEdHE4ySRvZmcxpOuVx5X5HqdVxx5Je5xNyTcrY8ScQ4zXUzRmiMdawscQbbHVuug5H4rKtop3gtiBmk5siaXEepGi6uli4wuXk85rJwlP0dEYuvul08bppmRtcAXuDRc6C6lR4ZLcGeanpx+2+5/stuVCmqqClqHMvUVBYbWbaMX9dSfkFo3LpMyqL7aOlf9H2GQ8KYhiNfipbVU8bnRgFoZcDQHe9/XmuU8S5/xxM91ryhkv9pod96eqeIq2SQ5BG3QAF47wgfxXt8FVzzS1ErpZpHSPdu5xuSqsMJwvfK7L9Rkxzkvdx2obzEbEpbZpRp3jrdCbhS8Mw11Y18slVT0kDDlM07iG36ANBcT6AqTLgM29NiGGVTeRZVsYfk8tP2K4oKzvCd2sP8ACEM7DvC34EqeMAxlzS6LDp5wOcLe8HzbdQZ6eeB+SeGSJ4/Re0tP2oAK0ROzx8bpRa1hBudeoSAlvzPA8kAJkcXkeSJAgjRCyAC1uFYW1I6EqAL3CsG66nmUCJFHtL+4VXP/AM7jHp9VY0+jJT+wq1/+eM+H1R5H4NDgYecO8Iv4yfopeR36qq8PkfFSNDXEalSfapv1lz5p7mbINbUZBBBBdAxlhw7/AKZg/i/lK18t3QPA0JabLIcPaYxB/F/KVrXE8lh1Pxo14PhMh7PfUv19UgsaCLP36C6kYnHkrZe5dnaXXsOR5ptgA31dz8lsi7VmVqnQAwC3P1QKM2tcIKREjSsLXZ2p6GUP0O6Vluo0rDG/M0oBEy6UPJR4JQ7Q7p9Aw5BnAYNtylSWhjJBuUgPId5JNYbhreupTEIiaSbnUk6pwnKbAeJ25RM0+ASgLXcd0CDYQHa7BONIvtYDZNAaW580407BMBy6Mc0jMic8AIAWTmdlCXoBZNRmzS4nUo819UgFk30SA25u7ZAG5Rk3b5lFDA4k/FBreZRbHVDMb2CBC+SBIGpSS4N05o22IuU6FYq+l0DYhERfTkgnQrEyD3deaMIO1tqN+aGxPqlQ7H6U5ZmW0sQbr0VTMe6mYI3nVgeNddAvN7Sc2hIW4pu0x7BFE+PK2MBpIvrpZYtXilOqOloM8MW7czr1JVzBxMkuXkbi4KsmyyMF+7jfzu1Yfhfiqkx1n5GxykZ/L4LYwSMhYPHdvILD7mS7R1454y6ZKp67UiWnLdVocKqYmtD2vyNza5ise2vY6fLn3P6SuG4bS1L2d/LZlrkh3JTcEo3Q4zuVGmxPFMOjeCKthcdxdQn1GGVDc8kBzH/WM8LvmFnxBgNPUGFsofrrkd4vmnMR/EFPBmbU1kItu2cn63VFE2/BMqI542l2F4s6Qcoqlod8iLfauOcfcXYlW1NVhcjomsieYnGP9IA6/BSuPMdNG+KHBsbq5HvJMoLh4Ry25rnskpe4uebuOt+qmomLPm/TEXHVyRxd1lhc0OLmh8bXZSdyLjyHyTE9XUytEckzzGNmXs35bIOAdqm3MJKtUn1ZhaGJCN7rN1n+eTfvlajuhbXdZurivWzX/XP1WnT8tlGbhEN3vlBKmaBIQEhbDOWNa7Lg2HsGgJlefMkgX/uhQLqfiIthWF+cTz/4jv6KdwNLg8WOg43GH0zoy0AtuA64sfLnqgCnDJ4znDZGZbEmxFr7fNTqfHMUjDY31s08AOsMzy+Nw6Fp0XR+IJsGdiuJwVTWTzSUbO/ew3YWF5s8W/VaWPHI2HTXlMzO6nfGHteGuLczTcG3MeSAJuM0zKXEXxxfmnNZLGOYY9oe0H4OAWz7JamljixGlnlc0yvifYMc7M1oeCLN31cND5mxssrxVYYqwdKOlH/gRq97KJ3Q4lXu1sKU38Vv0gLcuvUaXQI6w/BuG6qCokb+IJmPZeASwRtOuvIh2g0WV474VwOPBsUrKLAoaRtLSxyRVEMz7OeXMDhlLiLeI8vom+9dG1lRExjoow7K0EjOz33bag5RbS56k3VX2jGKPhunbDFGH+0Na+ZjQ0v8Bu3rpYHcjX4AGc3t4x6qfGLxj0UEe+PVWETbRM/dH0TEORfm5Tf9H71XPB9sHlZWVrQyen3qtd/nfoPuSfY/Bb0YHskZ63+qd06oqOwoYSeYP1SrBYp/EzVHpGUQQQW0yk/h7/TEH8X8pWsnc2OJ0j3ANaCblZTh0ZsZgH738pVxxI6Qd1TNOjvE77lkyx3ZUjRjltg2VEkzXOyt0vueqS1nz6omtbfI8WKNvhNrkrUjOAHLoeeyVoRcIGztLJIuw2PulMQOdkC0ObZKsDqNURBOxTEQ5GGN1wn4Js1mu0PLzRluYm+oCjyMym4SaJE0pEurx+6m4J9MsnwKe0J13CEJhs0Ovol8x05Jo6O9UvOmIUbAalHfNYck3e/NKzgbJgKe8NCQLuOuyIC5Lnaoi/S3NADheSdNkbXBNX0R3sgBwvRh5ttqmbpTXHkgBYJ6o2nLvzTd0GnRAh0G5unBbe+iZaeidYLndNCbFtJJ6pWUnknqeBzhopbaKRw0H2K6ONszyypFcQQNLA+aazBpI1v6K39gmIsyNznHkBdRK6ijp6Qz1D52yF1hGGAD53+5KUK7JQybuivdKzrZQ6kt745SCOoSp3h4tkt5k3KSWRtAuTruqZIviyVg+K1mE1baqindFIOmxHQjmF0TBu1UOjZHidE5rho6SA6Hzynb5rl7mWBcLObsNUqlp5ZTdrTlG5UN1Lkug5J8Hovhzi7hfFoyxlfGJALuEvhIHx+5SOI67AoYO+kxhrmhujWS7rz7GwxDK0a9ALLV8K4E7E/HPPJGACRlKwaicYxbXCOpp5zm9vbLHGONsBpInR0VPNUTP/1jZnBrSq2mxGTFaTvWVct72czvCQCrWh4JGIYkYZomzs/WIsfmFa4V2allRVzYZVOa1gs6OTUaKh5Mbjxdkngzt/Qxc0ckZ1v6poucN1qcWwPEaOmFRUQB1MTYStN23+5UM9ILEtNj0SjKymcHHsigu3B0RF5PNJe18R8YKLMw7qaRWOZgRZZ2p/zmX9931WiaBpYrPVP+dzaf6x31WnTdsoz9IgT/AJ1xSAlz37xx81KgijMYLr5iOi1tlCVj0IbX4bFTCSJlRTOcGB7g0PY43sCdLg3Op1v5JMuC4rHEZvYKh0Q3kYwvZ/aFwok7Wsnc1pGXcI6apqKaUS080kLxs6NxafmECH4cSroKSejilLI57CWzRmcBoG5t8vle23RRANbDdWcfEGLB15Kv2g//ADLGzD++Cno8da14m/E2Fe0jVswgIynrkByH4tTEI4pdfG5mH3o2RxHyLI2tI+YWp7IKWnqZ8T76QskZC0xgDVx8R0sDzDdduqwk0j5ZXyyPLnvcXOcdyTupWE4bV4rO6GjaHysYX5cwBPp5oA6lJRVMUE2aIRxGJpmLpn5bAa+Ae8ABbXpzCpu0elbS8NUhie18U1V3jXMsWnwXNiCRoXW0Jvbqsp/8S4dE5jvxjBGLNIJcBaxtp/EfmUxiOL4pW0rKaumMkbXl7S6NodfY3da59Ehlcz3x6q2jZ+TaP2R9FVM99vqrrnodFJERqTSF/wAFWb1Z9PuVpVWELrdR96q2a1Lvj9En2S8Gho4A+hhs6xy7JXssvUJijc5lOyxPuhP99J1WGV2b4vHStGOQQQW4wFlwwL45Tg/tfylWmPyB2IOa39BoH3/eqzhb/T1N/F/KVIxOQzVc0gIs55sqHH/Nv6Ft1jr6kWZ4Iyhtz1TeV4GuvQpd3NvoCg0cyCrkVBMcDbVOOaHDUJp7Be7bhGHPbo4adUxBDwHKTolOcACjJa4eRSLXc1u9tUxCmCzBca7lO09DPWucyCMvLRc62sElxGy0WFRiGjiB0LvET6qE5UuCUVbMo6in70sy2I6myDYp2OyuA081q62g7yJ1WwAMa8McfMi4+hVfNSM7t0mbNlIGnnf+ijvJbSpyk8tUMjuimGJgRFjLcypbmKiJlcNkA0g3IUuzAdreqS4t3uEbmKhhviGUuPlZRXl8Ti0fG6n5h1HyQkbTvmZ3ri0OjfqBzAJb9tk7CiGya48WiV3zOVz10TeSIXJcUcBga8FxcQNxsjcFBmdqT7R5FBwiAvYnTqkNLM4IabJ2KhZlcbENPwR95IBfunW9E9h80UPeGRgJNsoPJSvbYzoY2nyKi3K+CSSrkgNqHA2ym/qrHDSJXgPhkP7rrfcmHzse8WjaDfSwVk6pa7EHytaGhzr2Cvx98lGXrg9P/g4dhnC3HXDFVi2KVmI08tNWGn7uJ7CDYA3uW+a7XR/g39m8L2umixGpAt4X1AAP9loP2rB/ga8b8K4VwZi1BjGP0GH1Dq7vmsqpmx5mFgFwSbHUFdvn7Uez2J1jxhgx821TXfQq6c8qdR6KoYsTinJKzIdo/ZNwJhfZfxAMH4epqOpjoJZI6hlzK1zW5h4ib8tl8+8bFQ+9M4Xa02GgB0Xv3tf7Zez6Hs9xylo+IqSvramjkghp4Luc5z2lo1tYAXvqV8/cSxDvJXuBG6hctnq7+pKoqfp/gp5oHMOdzCQOh2SZ6V4ja9oJabEG3Ip99SSTYC5TrsUczDzSt1BYGkjydm+qp+5dx4KpgLXA2uDyU2gfKI5HsfZrdMp1UYZw9jrjQ3HNKbUSRNLNg5wNrdL/ANVXNWWxbTL/AIfZNiOLw0M0bG95oxwFrld04U4Up6Skb3hGd4+S4VwzVg8SYdISQ1szQT66L09hxi9hgkb4iFz9TFWdj2e7TY3g+HU8FIKgMAJJaTbmCQk4PCynpqubKQLmMk8za/3hWtKQ7B5TYANmdb5lRahxOBSlpHiqTp8As206O6jL47TOm4SroWgmOzgwEc2ncfELkTZI32N99Quz8WYjDh/AgnflDjDJIb+psuIYWxzsOp87STkHwU1GlZg1UrkvsPmNr/fsQok9Gwguj0PRT2tI05dCnAIyMo8J80bq6M1WUDmSxmzgQqKVx9olNz77j66rdSwNcLGxusJWaV07RylcPtK16WVtmXURpIjVLC45mt0PTqhDPJEMhFx0IUj9EIA25rZRmsiykyPLrJvVTckbt42/DRJdTwk+Eub5boAii6NPPpnAXa9jvK9j9qQ+KVou6N1uttExCVYYXNhkcb211PO6S945YpLFvqOf+PhXBKQBq6SqpGd0+l4oroCz3WysJyt106A2J0F0niplRVUTK5+J0NZFG/JaAkEXAtodb6fYstfRGCTprZANi2C7wrbNqbWVVEPGFYh9jrumIOfWI+oVbH+fkNtrqwm/M/xKvi/OS/H6qPkl4L6Bo9njP7I+iPKeqXCLQtHRoQsVhvk2Lox6CCC3mMm4HJ3WJMk5tY+3rkKecWqFR3NQ0DofoVJdnaSLEqLXNjvigEnkUAfNFZxHMIgDrcWPRNCF300RE36oNufIpTQedimISHW5aJTbkZyLX2STZ7so90bp3l5IASdStJRytno47gWDQ30IWcDSn6armguI3WB3FlGcW1wOLpljjVa+OmFKxxyueHkegI+9VQqXCBwJJzED5JuYPlkMkkji4pEjL2FyBsAhRBsX31xclJMx6pDo2gb6+qRYX/4p7RWOd6TzRF9+aadl6ptwFt0UMkZ9d9U3M4veALnKE1cDa6PN4b31QAHtsNrIM7v9K4KcgDHvAkccvNPPFLG9zoXEMzHKZBd1r9BoiwGGRyE3YxwHXYJyOnqJiGsp3uP7A3TckrXG9nuPVxSc5tbW3qlyHA6+J0Tcru7u4a3Hibql0/dWc2RxII0LW3IKVHT3pfaMwLA8MJvzIumcwLfCEWAI7MddzhcchqpDZ2i1gUinpy8PsNWi5PxS3w5ACQdVYmQkrL7BfaKiIuhkyhpsbk7q1e2vY05Z4z5Zj/RRuGIc2EPLdHCU2PwCkl7g4hx1Czz1s4ycU+i2Oixyim12QKqjrpxd00d/3iq+bCqgi2TXqHhXjnk87JBcdnaql6zI+y2Olxx6M5U0bKRodUQSuYf0hJf52CgOljzgNgaW30uTc+uq2QA2IumZKSlJJdBEc2/gCFq/mhvT/JmSMwDy9sLLdNbBSqJ0tQS2KljeRuTc2V47DqMnSnjt6KXhccWHTtnghabOvlKUtRF9IlDC0+WR6fhfiBlRR1NXDJFTyytJN8thcctwV3HD+IRh1H3b6aSdoaDdvIBVMtdS4n2f1VX34EzBdl/eY7kPPkuf1eKYhO0MNQ9rdL5TbMs88m/h+DopR0/MfJ3DCcdpZsEIqaiGCR7zIY3PALQToD8FRYlxdgo4eMcVewzslldl3vqbLkkhfLIXyl0jzu526T5Fqr4G9S66LniXimox3D48KqmximZlDcoILgDex8rqqbIWjwbJkxxOtpqE5HGGnxG7U2zO25O2H7U1h8QCBq4yL2N073MLgLMukGnYTo3RK0Lkbjq2tddxJCxtYc9XO8c5HH7Stq6GMaZAsVOPy8v75+q2aSrZm1F0gtgiKBQHVbTIAbJQRckYQAaUzNyNkkFGDqgBZAOjgHeoTbooTu0j0KWSSitzKAG3UrTqyS37wSDSyt1GV3oVI39EAdUAR2MlDx4SOpIsrImJncyMu91vGxw0v/S1k0fdBCIIELqMvdtA2JVdF+ck/wAc1OnIyD1UKnF3O9UmSNOG2AFuSTlHRPOH2JonVYTYYpBBBbzGPUZtUt+P0U9zra3+Sr6b8+3S+/0UktA1abJUAt0gASDIxE1xacrtuRSjlBsWXRQBhzTqEHOJ8I3KZdofCxwRNLu8A6piJbG5W6Ia7IX2t0R73KYBIHR1wjtdJINkCAXc/JMyPPNB7iQmZCUMaA6Q9UguKSgojDJudUSNCyAC5IuSM7IuQQAEZKJBABjdKSW7pQ10A1SGizpYHu4eqXi/5xrgPTT71CpmixB5LURUzW4b7M0AHu7fEhZmDwvc3zVGGe/d9y3LHbRdcLwGetdEIzIJGOYQBfzB+YCYxOZzXtiaxjDGSLFuu/NT+CJWwY5Tl78oLwDrZWGM4LiM+K1IosOqqhpeS10cTnA69QFp8cGdySfLGOE5CKSVtzdrxp8P+Cs6qHvhmbo4D5qLg+EYphs8pr6KanjlALTI21yPL4q0c0E81ydT6cjOjp5KeNVyVTTYWduOSJ23X0U2qpg8Zox4huoJcAcpFiq07JuNBNcRoQncvQD4pAIypTXlp8Wo6pgBwI5D4IDTkUCb63+QSdDzKAFl8haWNJDTuAdEGtI5pt1wRvZKA2vcBADrXEFAvJ5prY3GqUx99CLICwy4jp6o2yWNyUNtwi53smA+Khrfdv6IpK1gGrCE0TqiczM3UiyKQWxb62JsebMPQrGSOzyvd1cStY+licLO1WTcAHuA2uVs0iXNGbUN8WBDogOiAC2GUF0obIkLFAg+aMfJEAUpABowiCNAAA0RiyCFjdMBZ90apOY2RkeHVJA1SGCXVjPVRaK5P8QUyYWjYVEw/wB4eb2/ek/I14NUTmO6Rl80el73R6eawo2MwyCCC3mMdpDaoafX6KabXvy5hQabSdv+OSlPOvPVIBTgCOgTZNtLaeaMu63RgpgFYgXaTboUQfY6gZktuaxsQCmnRuHn6oEOh4NvNOB1hYKKA5upsEsG/NAEjPokudvqkNOnVJLXHnZMAOAtumXnROOjd1TbmOSBDXNGjLChY9EhhIAE8ktrSeSU0dUUA0WlANJ15J5oBde+yI+7a26AGiOQQylP5WsF3bpskk6IARbWyscCp++rWvI8EfiJP2KARY+a02E0vs1IA78445nf0VGee2JbhjukWNxyKn8BYNhVbV1bq6kZNJHLoHk2ty0vZVrblXHAr+54gqGnaWNrviNFRo3WSiHtRP8ADtxdUdZ4UwrCqGpinpsPpYXNcCHMiaD81suKYnDEnyW/OtDwfUXWRwR92sWy4gkE1NRz8jCG/LRdjweLtyuzlHaHA3uI5Sblr/qsWHdF0LjuIPw2RrWgZbEfBc6sQdSVxdfH/MTPXewp3p3H5MMhxFwbKLVUveflG+8FKbcjTZGSRszVYk6O0+Sq02IsULDYqXWQGQGRoAcOXVQWvNyCLWVi5INUHqw+EaJWa+oSbk8tEm7matGikRHLu5XRAkixBRgucL3QAdcC90gA1ptpdLDQQOqTYg6uSw3ncpgAa6O3ShGBzQAaNDqi1abg3CBhODL2uh5AiyVlG4shkG+yAE3sdljifE4+ZWwJy7C6xrveJ81s0vky6jwK5oXSQjty5rYZgxuj9ElGECFtJtsjvqkgo0wFX0Quk3Q1QAsHTdC9kQ80DsgBRddqF9ElGNrpDDqXfkm+hTGHfnIx1kCcqz+SHk0pvDdZof8Aaf0UX0yS7RpdELpIddDTzWNGpmKQQQW4yDlN+eb8fopJBJtqo1N+eb/jkpTnX2KQCRcGxGiWywPkk6FBMB0lt0hwF9CiCNAgiXWsLFNlpvfLb0KdRHZADYDm6pxryfeRHZJTEO3B2sURy25XTZQAudUAKOTyRHL5IZBdDIOoQMLM0DRGG3bcEfNDI1BzQRYCxSAbGgt13RkhouGm/UpwNy2JO/NEBc5na+qAENY5/iefgjdZos1G59/CzUpstN8t9UASsIjZJXs7wZgATZaQXuXNCosDaG14FwfCd1fAWNwufqeZGzD8ItpzeSsOHpO5x2ndfRwLT67j6FVpfrofhZG2pFPV0cjtD7Q0fPRQwcZELVR3YZL6HbMDk8DddlsZ5BLgUBG7HkLAYDL4W2N9FtKJ/eYROwH3CHLtro8JVSaMzxPHno5GjW7SuV00gluHAhzTZwXaKv2D8VVntXeCoyt9nI2vfxX+C4hiDjT4xUhtwBKdPIm652uhaTPRewZ7d0fnyTw2w0AsicOlrJqOVkkYLSjzcly6PS2Alt7qPV0zZTnjNnDcBOuOw0SmEDYAIXAPkqc2pFrW3RGTlZTa2nMhMkdr8woPOx3VqdlTVABIdcX9E7G8u2ASAL80eUDxN3UhC7u1uQgC/LoUpmo5ApRZbW4QAglzja6ABGpJKDiL9EAfimAsC2oR+FwPkkNJve2iPODysUmhphPIvayxh94rZOe0Ah29ljjqStWl8mbUeADolIkAVsMwfO6OyLkgmIVz1SikBKBQAEd0SIoAXyRIhsjBSGHshfRA200SQUAkFWGzP4UeDxGWqhY3fMT9icYpVM7upmysDczdjZVyfDLIrlFi4OjdZwtZJzjoVOp5Y6yM3Y0PHvD+iHsTeqyXXZpq+jn6CCC3mMcpgTM2wvv9FKdYpOCSiHFaZ5AIz5TfodPvUqqEcjnzNaWF5uxrRoNf6JXyOuCMBbndX3Z9wriHG3GeGcK4VNSw1uIy91DJUuc2Jpyk+Ita4gacgVQi53sujfgz4jh+Edu3CmJYrXUtBRQVhdNUVMzYoox3bhdznEADXmmRFce9j+O8JcLy8SNx7hvH8Npq72CskwisfKaWf9SRr2MIPzXOV7DwTjjs74jmop6uu4b4dw3BuLZZ8ZwhkkTIMXBztgrW5iXylrshcLuGhdbQLQ1nHPAf/OzhxvFOO4FiroMYqZqDFKjiCkxA0ZdC/JmEMTBHBmLbB+oIHQEAHlbhrsvxjHODaPi0Y1gGG4VVYqML73EKt0Iiky5s8jsha1lud7+SxmK0nsGJVVD7TTVXs8z4u+p5M8UmVxGZjv0mm1weYIXtPh7jSKnwThSHjvtO4RxnGqfjBtTUT0uLQPbFT92/K5zgQMovvsLgX5JrhLiOnr6zh2j7PeN+GsKaeLq6XiKimqYvacSa+qcWOY3UzNcz3ct7XadMqAPE52SV72j4v4RwrF8ZhoMfw3DMZp+K6qXGKeXG6XDjWNzHIJTPG4zRBhALWEEEdduZcS8cYNUcCcFcOcPcY4fwtQ1vFGIfjOOhq2S+yUzqt7mZ26HuTcEBwDCLXFggDyshdesfwk8a4brexCqww8dUXFOLU2Ptko5JsZo6ypEBaQXMEDGCOM75PFlvYkaAeTSgBXeDYoCx1RtHh5FAsG40QIHoisb3JKMggaogbkAIGPzZc9hazQmJLk2tYFKc60jtfJMuN+aAFhwAs1JuG7G55lN3J0Ccjbc2AzOSGWOBtJrM97ANPwV2XC2h0VdhDWxU5zAZi7VSw5gdYHdYM/MzXi4iPjQ3UbEiO7gd+rM0/UJ0vNtrhNVd5KV7gPcId8jdQxuppkp8xaOscL1IfBE8H3mArpHBs9D30za+N8kTojo3mVyHgiUnDKYO95gyO9RouncJZX4pTQudZsjw0nyK7K5ieKlFwzrjyWWLYrgvsc0VLgwBcxzM8lri4t5rz/xlGIcdky+EOaHfd9y9HYzizWY1+JW0EJoc4gcLeLXS/wBq4N2nUYo8aLL3LHPjv6FZdSrxna0Uq1C5vtcKuTL003dO94lp3CsA4mxAuFUvfpayeoZ8r+7e42Oy5co+T0EZeCfzslNOoSCTdKFxqdlXRMeaeaj1dGXt72PQ8wnojfTZSWDTUaJrgT5KEWGhNiOSW0lTq+jBvJENeYUJo2HNXLkrfATic177JTZb/o7IwOtkRbpcaFMQTi48giZcHU2Rg3Gp1ROcCEAKJdsCiIvzKQHWNibojIBpYooLFSxhzTvssgPVax0vhIsdlk27latNxZRn8CgjCA2QWozBoIBBABoxuiBCAQIVdEeqK6MFABg22RAoXHkgN0DDcfNEETlfdneAR8V8dYJw1LXtoGYpWxUhqCzP3edwaDa4vqdrhJjR0TsY7OuCsf4exHGONeK34fegqKiipsPyzTwshID6mdovlYCQBHo5+pFgATz3iXCH4DxBWYQ+uoa/2Z+VtTRTiWGZpALXscNwQQbbjYgEEKx4ExqHhWo4lp8Vpapk1dglVhjIwyzo5pMts4JFgMpvz8kjDeGX1HZ9ivF0tQ6COir6WigjdF4al0rZnOyuvuwRNuLH3+XOEiaKmkkMUzXg87H0V3+U6rPx3JAG5V138v6qzZEaIM5+gggtpkDBIIINiFaxyNkgY7nYn4j/AN1Up+lm7txaT4T9iAJco5/akJRcPgkkt5FAAQQ+IQsUABbjhDtb7QOEcFhwjh7HIqKlp3SOg/6vppJIi83cWSPjL238nBYjKeiBa62yBCquonq6qarqpnzTzPdJLI913Pc43LieZJN0yd0qx6Ii03QIQULXSi13kk2kHIfApgEc45fJDM7mHBHmeN2FGJANNkhiRYnUu+SU3R2YG+VAvuDZIebENuDfUoANxNueqQQBqdUdnPdZounooWjV2pQMbjjfJsMrVKia2MabornYaI2t5k/JAE+hIcw5zbXRTSWOu0W2VZAQG3IT4kdbQWWHLG5M1Y36Say40vdKeM8EjDpdpH2KIKhzRtdOw1AfoBqqnFrksTRr+z+rz0eW9yHAn4gH7107Bqh0U8UrTZzXAgjkVxvgKQw1c0V9NwPQkfSy6ph01mgrsY3aPIa+GzMzfV3EMcj3vjwhstc0WbI0Xv57XXGe1GkqzG2sqYZI3d8bl4sS4i5+oXWq3GcVgwimngp44oC0MEpbe5H/ALLmXaHV1eIUE5qZDJrnItYXAAvb0AVeSNwaNePMvfQbbb+1d/3OatkFrOaie8EaNIPJOiPTUJQaAfEuVR6Ul4dKJYi13vt6qVYF3IKqc0h4cy+isIXsewFo5aqLgSUiQ3IL5nAEJ1krL2vqo7QDc5QnW6WIsltHY/3jQdiVXV0Lc4kjY63NSiSTYnRFmygg6gprgT5KzML6BAlOVkOUmRnu8womcb5lPsi+BZIPqjBFrFMud6osxsnQrH7AhIPRNd7yO6LvN9UUFjjyQx3PQrKhaKSS0brX2KzYK06dVZRmfQsao7pIShvqtJQGhdEgECDRgogjQAaK6CB3QAEd0QQQAZSonvjkbJG5zHtcC1zTYgjYgpKIbhIaOgQ9sfaqxjWDtD4lytFhfEJCfmSqnijjLiviwwHibiLFMXFPfuRV1LpBHfewJsL2HyWVlm7r9G+tt1PwkieU940WDQQFCXCsnHsm0ERLu9cNBt5qdmHmkX0AGyCzPk0LgwyCCC2mQCCCCAJFK92bIdQpAAJ2CCCAD0DrWCcABGwQQQIPnZE8WAIQQQAkhE5oHVBBAxNt/JFyv5oIIEEdkdgRqggmAb2NsDlGjAfsTLGN7zbmggkwQ7sbBFc6hBBACwAEoG9kEEwJEQ0TgJtZBBY8nxM0w6CJIcnqf39kEFW+iSLThdxbxC+Me7lv9jV1XDHHI3VBBdHB8KPN+1PzTR1VbUyYRDRvlJgYS5rbbH/BKyHEjQ6jmB/VP0QQU5dGODbnG/oc7byQI0QQXIPaA2be6VROIqMoOhGqCCfgS7LMizR5ogTe3mggqyYLnVJOp1QQQADtl5WVTVtEdRlboCggpR7FLob6pLjoggpERP6N+aMG4N0EEwEzfm3H9krNIILRg8lGbwLHJHdBBaCkG4QQQQAfNGNkEECBzRoIIAA3SkEEDCQbuEEEAM1nL1Vpw/77/wB1qCChP4ScPiLDEJHU9NLKwC7G3AOyy7q+sLiTUyam+hQQUMSVEsjP/9k=" alt="Voi-kortet fungerar inte igen">
<div class="hemlig-cap">Voi-kortet: 1 · Backoffice: 0</div>
</div>
</section>
</div>
</div>
</div>
<div class="toast" id="toast"></div>
<div class="cdlg-ov" id="ticket-ov" onclick="if(event.target===this)closeTicketModal()">
<div class="cdlg cdlg-form">
<h4>Ny ticket</h4>
<p>Välj typ av ärende och fyll i uppgifterna.</p>
<div class="ink-warn">⚠️ Skriv <b>aldrig</b> in personnummer – varken i OCR, beskrivning eller någon annanstans på ticketen.</div>
<div class="fg"><label>Typ av ticket</label>
<div class="type-grid" id="type-grid">
<button type="button" class="type-card" data-typ="Ombetalning" onclick="selectTicketType(this)">↺ Ombetalning</button>
<button type="button" class="type-card" data-typ="Kreditera" onclick="selectTicketType(this)">− Kreditera</button>
<button type="button" class="type-card" data-typ="Betala ut försäkring" onclick="selectTicketType(this)">🛡 Betala ut försäkring</button>
<button type="button" class="type-card" data-typ="Övrigt" onclick="selectTicketType(this)">• Övrigt</button>
</div>
</div>
<div class="fg"><label>Land</label>
<select id="t-land"><option>Sverige</option><option>Norge</option><option>Finland</option></select>
</div>
<div class="fg"><label>OCR <span class="t-sub" style="font-weight:400">(endast siffror, max 7)</span></label><input type="text" id="t-ocr" inputmode="numeric" maxlength="7" placeholder="t.ex. 1234567" oninput="this.value=this.value.replace(/\D/g,'').slice(0,7)"></div>
<div class="fg"><label>Skapad av <span class="t-sub" style="font-weight:400">(din inloggning)</span></label><input type="text" id="t-by" class="locked-input" readonly title="Sätts automatiskt till din inloggade användare"></div>
<div class="fg"><label>Beskrivning</label><textarea id="t-desc" placeholder="Beskriv ärendet…"></textarea></div>
<div class="row">
<button class="btn btn-s" onclick="closeTicketModal()">Avbryt</button>
<button class="btn btn-p" onclick="addTicket()">Skapa ticket</button>
</div>
</div>
</div>
<div class="cdlg-ov" id="ticket-view-ov" onclick="if(event.target===this)closeTicketView()">
<div class="cdlg cdlg-form" style="max-width:540px">
<h4>Ticket</h4>
<div id="tv-info" class="tv-info"></div>
<div class="tv-thread-lbl">Feedback / kommentarer</div>
<div class="tv-thread" id="tv-thread"></div>
<div id="tv-form">
<div class="fg"><label>Skicka feedback till skaparen</label><textarea id="tv-input" rows="2" placeholder="T.ex. saknar OCR, behöver mer info…"></textarea></div>
</div>
<div class="row">
<button class="btn btn-s" onclick="closeTicketView()">Stäng</button>
<button class="btn btn-p" id="tv-send" onclick="sendTicketComment()">Skicka feedback</button>
</div>
</div>
</div>
<div class="cdlg-ov" id="schema-edit-ov" onclick="if(event.target===this)closeSchemaCell()">
<div class="cdlg cdlg-form" style="max-width:380px">
<h4 id="sc-title">Schema</h4>
<p id="sc-sub" class="t-sub" style="margin-top:-6px;margin-bottom:14px"></p>
<div class="fg"><label>Pass / text <span class="t-sub" style="font-weight:400">(t.ex. 8-17, Ledig FM, tenta)</span></label>
<input type="text" id="sc-text" placeholder="8-17" onkeydown="if(event.key==='Enter')saveSchemaCell()"></div>
<div class="fg"><label>Kategori</label>
<div class="sc-cats" id="sc-cats">
<button type="button" data-k="arbete" class="sc-cat sc-arbete" onclick="scPickCat(this)">Arbete</button>
<button type="button" data-k="semester" class="sc-cat sc-semester" onclick="scPickCat(this)">Semester</button>
<button type="button" data-k="franvaro" class="sc-cat sc-franvaro" onclick="scPickCat(this)">Frånvaro</button>
<button type="button" data-k="avvikande" class="sc-cat sc-avvik" onclick="scPickCat(this)">Avvikande</button>
</div>
</div>
<div class="row" style="justify-content:space-between">
<button class="btn btn-d btn-sm" onclick="clearSchemaCell()">Töm cell</button>
<span style="display:flex;gap:8px">
<button class="btn btn-s btn-sm" onclick="closeSchemaCell()">Avbryt</button>
<button class="btn btn-p btn-sm" onclick="saveSchemaCell()">Spara</button>
</span>
</div>
</div>
</div>
<div class="cdlg-ov" id="cdlg-ov">
<div class="cdlg">
<h4 id="cdlg-title">Är du säker?</h4>
<p id="cdlg-msg"></p>
<div class="row">
<button class="btn btn-s" id="cdlg-cancel">Avbryt</button>
<button class="btn btn-danger" id="cdlg-ok">Ta bort</button>
</div>
</div>
</div>
<!-- CSD: in-app name/password login removed. Authentication is handled by
Okta (via Cognito) at the hub level; the user's identity is applied on boot. -->
<script>
/* =====================================================================
1. Klistra in din Supabase-URL och anon-nyckel nedan.
2. Skapa tabellerna tickets / failed_payments / dubbelbetalningar
med SQL:n du fått i chatten.
===================================================================== */
/* CSD: Supabase creds removed. The compat adapter ignores URL/key and routes to the CSD API. */
const SUPABASE_URL = 'https://api.csd.plus1.com';
const SUPABASE_KEY = '';
/* ===================================================================== */
/* CSD: always "connected" — the compat adapter routes to the CSD API. There is
no Supabase URL/key to configure, so the old setup banner never applies. */
let db=null, connected=true;
try{
db=(window.supabase&&window.supabase.createClient)?window.supabase.createClient(SUPABASE_URL,SUPABASE_KEY):null;
}catch(e){console.error('CSD API-klient kunde inte skapas',e);}
// Håll konsolen ren: lösa promise-fel (oftast nätverk/realtid) hanteras redan via toaster.
window.addEventListener('unhandledrejection',e=>{e.preventDefault();console.debug('Hanterat:',e.reason);});
const today=new Date().toISOString().split('T')[0];
document.getElementById('hdr-date').textContent=new Date().toLocaleDateString('sv-SE',{weekday:'long',day:'numeric',month:'long'});
document.getElementById('fp-date').value=today;
let tickets=[], failed=[], dubbel=[], aml=[], ombet=[], checklist=[], personal=[], smsList=[], avvisade=[], currentTab='dashboard';
let currentUser=null;
let currentLand='Sverige';
const PERSONAL_SEED=['Erik','Mathilda','Elias','Albin','Rani','Alice','Holting','Miranda','Veronica','Lea','Jonathan','Rickard','Ines','Emelie B','Linda','Tea','Viktor','Emelie A'];
const seg={tickets:'open',failed:'open',dubbel:'open',avvisade:'open'};
const landFil={tickets:'',dubbel:'',failed:'',ombet:''};
const AML_BUCKET='aml';
const OMBET_BUCKET='ombetalningar';
const INKASSO_BUCKET='inkasso';
let inkasso=[], openReport=null, painCfg={};
function isoWeek(d){
const t=new Date(Date.UTC(d.getFullYear(),d.getMonth(),d.getDate()));
const day=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-day);
const ys=new Date(Date.UTC(t.getUTCFullYear(),0,1));
const wk=Math.ceil(((t-ys)/86400000+1)/7);
return t.getUTCFullYear()+'-W'+String(wk).padStart(2,'0');
}
const CUR_WEEK=isoWeek(new Date());
const CHECKLIST_SEED=[
['Morgon 08.00–09.00','Mail / Kindley inkorgen (finns i intercom!)','Rensa / KOLLA KINDLEY MAPPEN','Erik'],
['Morgon 08.00–09.00','Chatt','Rensa','Mathilda'],
['Under dagen / När tid finns','Failed payments','Kolla varje dag så inte backlog skapas','Elias'],
['Under dagen / När tid finns','Depost - ärendelista','Rensa','Albin/Rani'],
['Under dagen / När tid finns','Deposit - meddelanden','Rensa','Albin/Rani'],
['Under dagen / När tid finns','Deposit - oplacerade','Rensa enligt rutin','Albin/Rani'],
['Under dagen / När tid finns','Intrum-meddelanden','Rensa','Rani'],
['Under dagen / När tid finns','Brev-Hantering (Oplacerade/överbet)','Rensa / Fördela','Alice'],
['Under dagen / När tid finns','Dubbelbetalningar','Rensa Arkiv','E/R/A'],
['Under dagen / När tid finns','Kalix','Kolla slack-gruppen och svara','Alice'],
['Under dagen / När tid finns','Autogiro','Rensa / Fördela','E/R/A'],
['Under dagen / När tid finns','Trustpilot/google review','Hantera obesvarade omdömen','Holting'],
['Under dagen / När tid finns','Inkassorapporter','Kravia / Intrum','E/R/A'],
['Under dagen / När tid finns','Kredinor','Hantera enligt rutin','E/R/A'],
['Under dagen / När tid finns','Avvisade betalningar Nordea','Gör om avvisade betalningar i nordea','E/R/A'],
['Under dagen / När tid finns','CM1','sms/mail/brev vid behov samt kontrollera underlag','E/R/A'],
['Under dagen / När tid finns','Closed loans to refund','Finns i aura','E/R/A'],
['Under dagen / När tid finns','Fri månad - Winback (Bokas den 20e)','Kreditera det som finns i WB-filen','elias'],
['Eftermiddag 17.00–18.00','Mail / Kindley inkorgen (finns i intercom!)','Rensa','Miranda'],
['Eftermiddag 17.00–18.00','Unapproved records / slå på autosvar','Rensa / se till att autosvar på infomejlen är på över natten','Albin'],
];
/* helpers */
const esc=s=>(s==null?'':String(s)).replace(/[&<>"]/g,c=>({'&':'&','<':'<','>':'>','"':'"'}[c]));
function fmtKr(n){const v=parseFloat(n);if(isNaN(v))return '<span class="t-sub">–</span>';return v.toLocaleString('sv-SE',{minimumFractionDigits:0,maximumFractionDigits:2})+'\u00a0kr';}
function dShort(d){return d?String(d).slice(0,10):'';}
function ageDays(iso){if(!iso)return 0;return Math.floor((Date.now()-new Date(iso).getTime())/86400000);}
function ageText(iso){if(!iso)return '';const d=ageDays(iso);if(d<=0)return 'idag';if(d===1)return '1 dag';return d+' dagar';}
function ageColor(iso){const d=ageDays(iso);return d>=4?'var(--red)':d>=2?'var(--open)':'var(--muted)';}
function toast(m,ms){const t=document.getElementById('toast');t.textContent=m;t.classList.add('show');clearTimeout(t._t);t._t=setTimeout(()=>t.classList.remove('show'),ms||2600);}
function need(){if(!connected){toast('⚙️ Koppla Supabase först (se rutan på Dashboard)');return true;}return false;}
function isCS(){return !!(currentUser&¤tUser.roll==='kundtjanst');}
function needEdit(){if(isCS()){toast('🔒 Kundtjänst-behörighet: du kan lägga till, men inte ändra eller ta bort.',5000);return true;}return false;}
function needBackoffice(){if(isCS()){toast('🔒 Kundtjänst har endast läsbehörighet i Backoffice.',5000);return true;}return false;}
function report(error){
console.debug('Supabase-info:',error);
const parts=[];
if(error&&typeof error==='object'){
for(const k of ['message','error_description','error','details','hint','code','status','name']){
if(error[k]!==undefined&&error[k]!==null&&error[k]!=='')parts.push(k+': '+error[k]);
}
}
const msg=parts.length?parts.join(' · '):(typeof error==='string'?error:'Okänt fel – öppna Console (F12) för detaljer');
toast('❌ '+msg,9000);
}
/* Egen bekräftelse-dialog (ersätter window.confirm, som webbläsaren kan stänga av) */
function confirmDialog(message,okLabel,title){
return new Promise(resolve=>{
const ov=document.getElementById('cdlg-ov');
document.getElementById('cdlg-title').textContent=title||'Är du säker?';
document.getElementById('cdlg-msg').textContent=message||'';
const ok=document.getElementById('cdlg-ok'),cancel=document.getElementById('cdlg-cancel');
ok.textContent=okLabel||'Ta bort';
ov.classList.add('show');
function close(val){ov.classList.remove('show');ok.onclick=cancel.onclick=ov.onclick=null;document.removeEventListener('keydown',onKey);resolve(val);}
function onKey(e){if(e.key==='Escape')close(false);else if(e.key==='Enter')close(true);}
ok.onclick=()=>close(true);
cancel.onclick=()=>close(false);
ov.onclick=e=>{if(e.target===ov)close(false);};
document.addEventListener('keydown',onKey);
ok.focus();
});
}
const TITLES={
dashboard:['Dashboard','Aktuellt läge i backoffice'],
tickets:['Tickets','Ärenden som backoffice hanterar'],
failed:['Failed payments','Misslyckade betalningar att hantera'],
dubbel:['Dubbelbetalningar','Dubbla inbetalningar att hantera'],
aml:['AML-underlag','Kundunderlag som ligger tillfälligt'], ombet:['Ombetalningar','Underlag på betalningsuppgifter, tillfälligt'],
avvisade:['Avvisade betalningar','Avvisade betalningar att hantera'],
behorighet:['Behörighet','Vem får göra vad i verktyget'],
schema:['Schema','Personalens arbetsschema'],
inkasso:['Inkassorapporter','Ladda upp Excel och konvertera till PAIN'],
betalplan:['Betalplan Generator','Släpp Excel/CSV och få en Plus1-skuldrapport (PDF)'],
hemlig:['🤫 Hemligt','Pssst… inget att se här'],
};
function showTab(name,el){return doShowTab(name,el);}
function gateAndShow(name,el){return doShowTab(name,el);}
function doShowTab(name,el){
document.querySelectorAll('.panel').forEach(p=>p.classList.remove('active'));
document.querySelectorAll('.nav-item').forEach(t=>t.classList.remove('active'));
document.getElementById('panel-'+name).classList.add('active');
if(el)el.classList.add('active');
currentTab=name;
document.getElementById('page-title').textContent=TITLES[name][0];
document.getElementById('page-sub').textContent=TITLES[name][1];
renderAll();
}
function setSeg(list,btn){
btn.parentElement.querySelectorAll('button').forEach(b=>b.classList.remove('active'));
btn.classList.add('active');seg[list]=btn.dataset.f;
if(list==='tickets')renderTickets();if(list==='failed')renderFailed();if(list==='dubbel')renderDubbel();if(list==='avvisade')renderAvvisade();
}
function landFlag(l){return l==='Norge'?'🇳🇴':l==='Finland'?'🇫🇮':'🇸🇪';}
function setLandFil(which,land,btn){
btn.parentElement.querySelectorAll('button').forEach(b=>b.classList.remove('active'));
btn.classList.add('active');landFil[which]=land;
const selId={dubbel:'db-land',failed:'fp-land',ombet:'ombet-land'}[which];
if(selId){const s=document.getElementById(selId);if(s&&land)s.value=land;}
({tickets:renderTickets,dubbel:renderDubbel,failed:renderFailed,ombet:renderOmbet}[which]||function(){})();
}
/* ---- KPI-navigering + global sökning ---- */
function gotoTab(tab){const el=document.querySelector('.nav-item[data-tab="'+tab+'"]');showTab(tab,el);}
function syncSeg(list){const c=document.getElementById('seg-'+list);if(!c||seg[list]===undefined)return;c.querySelectorAll('button').forEach(b=>b.classList.toggle('active',b.dataset.f===seg[list]));}
function syncLand(which){const c=document.getElementById('land-'+which);if(!c)return;c.querySelectorAll('button').forEach(b=>b.classList.toggle('active',(b.dataset.land||'')===(landFil[which]||'')));}
function kpiGo(tab,segVal){if(segVal&&seg[tab]!==undefined)seg[tab]=segVal;if(landFil[tab]!==undefined)landFil[tab]='';gotoTab(tab);syncSeg(tab);syncLand(tab);}
let gResults=[];
function gPick(i){const r=gResults[i];if(r){r.go();closeGSearch();}}
function closeGSearch(){const out=document.getElementById('gsearch-results');if(out){out.classList.remove('show');out.innerHTML='';}const inp=document.getElementById('gsearch-input');if(inp)inp.value='';}
function gSearch(raw){
const out=document.getElementById('gsearch-results');if(!out)return;
const q=(raw||'').trim().toLowerCase();gResults=[];
if(q.length<2){out.classList.remove('show');out.innerHTML='';return;}
const hit=(o,f)=>f.some(k=>String(o[k]==null?'':o[k]).toLowerCase().includes(q));
const groups=[
{ic:'▤',label:'Tickets',data:tickets,f:['ocr','beskrivning','skapad_av','typ'],
title:t=>`${esc(t.typ||'Ticket')} · OCR ${esc(t.ocr||'–')}`,sub:t=>t.beskrivning?esc(t.beskrivning):'',
go:t=>{seg.tickets='all';landFil.tickets='';const s=document.getElementById('search-tickets');if(s)s.value=q;gotoTab('tickets');syncSeg('tickets');syncLand('tickets');renderTickets();}},
{ic:'⇉',label:'Dubbelbetalningar',data:dubbel,f:['ocr','kommentar','created_by'],
title:d=>`OCR ${esc(d.ocr||'–')} · ${fmtKr(d.belopp)}`,sub:d=>d.kommentar?esc(d.kommentar):'',
go:d=>{seg.dubbel='all';landFil.dubbel='';gotoTab('dubbel');syncSeg('dubbel');syncLand('dubbel');renderDubbel();}},
{ic:'⛔',label:'Avvisade betalningar',data:avvisade,f:['debtor','ocr','kommentar','payment_type','land'],
title:a=>`${esc(a.land||'')} · ${esc(a.debtor||a.ocr||'–')}`,sub:a=>[a.payment_type&&esc(a.payment_type),a.amount&&fmtKr(a.amount)].filter(Boolean).join(' · '),
go:a=>{const land=a.land||'Sverige';const navs=[...document.querySelectorAll('.nav-item[data-tab="avvisade"]')];const el=navs.find(n=>(n.getAttribute('onclick')||'').includes("'"+land+"'"))||navs[0];showAvvisade(land,el);seg.avvisade='all';syncSeg('avvisade');renderAvvisade();}},
{ic:'⚠',label:'Failed payments',data:failed,f:['debtor','ocr','kommentar','atgard'],
title:x=>`${esc(x.debtor||'–')} · OCR ${esc(x.ocr||'–')}`,sub:x=>[x.amount&&fmtKr(x.amount),x.kommentar&&esc(x.kommentar)].filter(Boolean).join(' · '),
go:x=>{seg.failed='all';landFil.failed='';gotoTab('failed');syncSeg('failed');syncLand('failed');renderFailed();}},
{ic:'🛡',label:'AML-underlag',data:aml,f:['ocr','kommentar','file_name'],
title:a=>`OCR ${esc(a.ocr||'–')}`,sub:a=>a.kommentar?esc(a.kommentar):(a.file_name?esc(a.file_name):''),
go:a=>{const s=document.getElementById('search-aml');if(s)s.value=q;gotoTab('aml');renderAml();}},
{ic:'↺',label:'Ombetalningar',data:ombet,f:['ocr','beskrivning','kommentar','file_name'],
title:o=>`OCR ${esc(o.ocr||'–')}`,sub:o=>o.beskrivning?esc(o.beskrivning):(o.kommentar?esc(o.kommentar):''),
go:o=>{const s=document.getElementById('search-ombet');if(s)s.value=q;landFil.ombet='';syncLand('ombet');gotoTab('ombet');renderOmbet();}},
{ic:'▦',label:'Inkassorapporter',data:inkasso,f:['namn','file_name'],
title:r=>esc(r.namn||r.file_name||'–'),sub:r=>(r.namn&&r.file_name)?esc(r.file_name):'',
go:r=>{gotoTab('inkasso');}},
];
let html='',total=0;
for(const g of groups){
const all=(g.data||[]).filter(o=>hit(o,g.f));
if(!all.length)continue;
total+=all.length;
html+=`<div class="gs-group"><div class="gs-grp-h">${g.ic} ${esc(g.label)} <span style="color:var(--muted);font-weight:600">${all.length}</span></div>`;
for(const o of all.slice(0,6)){
const idx=gResults.length;gResults.push({go:()=>g.go(o)});
const sub=g.sub(o);
html+=`<div class="gs-item" onclick="gPick(${idx})"><div>${g.title(o)}</div>${sub?`<div class="gs-sub">${sub}</div>`:''}</div>`;
}
if(all.length>6)html+=`<div class="gs-item" style="color:var(--muted);cursor:default">…och ${all.length-6} till</div>`;
html+='</div>';
}
out.innerHTML=total?html:'<div class="gs-empty">Inga träffar.</div>';
out.classList.add('show');
}
document.addEventListener('click',e=>{const gs=document.getElementById('gsearch-results');const wrap=e.target.closest('.gsearch');if(gs&&!wrap)gs.classList.remove('show');});
document.addEventListener('keydown',e=>{if(e.key==='Escape')closeGSearch();});
function showAvvisade(land,el){
currentLand=land;
doShowTab('avvisade',el);
document.getElementById('page-sub').textContent='Avvisade betalningar · '+land;
const lbl=document.getElementById('av-land-lbl');if(lbl)lbl.textContent='· '+land;
renderAvvisade();
}
/* counts + dashboard */
function openFailed(){return failed.filter(r=>!r.klar);}
function openDubbel(){return dubbel.filter(r=>!r.klar);}
function openTickets(){return tickets.filter(t=>t.status!=='Stängd');}
function openAvv(land){return avvisade.filter(r=>r.land===land&&!r.klar);}
function updateCounts(){
document.getElementById('ct-tickets').textContent=openTickets().length;
document.getElementById('ct-failed').textContent=openFailed().length;
document.getElementById('ct-dubbel').textContent=openDubbel().length;
document.getElementById('ct-aml').textContent=aml.length;
document.getElementById('ct-ombet').textContent=ombet.length;
const ci=document.getElementById('ct-inkasso');if(ci)ci.textContent=inkasso.length;
document.getElementById('ct-avv-norge').textContent=openAvv('Norge').length;
document.getElementById('ct-avv-finland').textContent=openAvv('Finland').length;
document.getElementById('ct-avv-sverige').textContent=openAvv('Sverige').length;
const bell=document.getElementById('bell'),bc=document.getElementById('bell-ct');
const un=unseenTotal();
if(bell){if(un){bell.style.display='inline-flex';bell.classList.add('ring');if(bc)bc.textContent=un;}else{bell.style.display='none';bell.classList.remove('ring');}}
const ban=document.getElementById('fb-banner'),bt=document.getElementById('fb-banner-txt');
if(ban){if(un){ban.style.display='flex';if(bt)bt.textContent=un===1?'Du har ny feedback på 1 post':('Du har ny feedback på '+un+' poster');}else{ban.style.display='none';}}
}
function renderDash(){
const fSum=openFailed().reduce((s,r)=>s+(parseFloat(r.amount)||0),0);
const dSum=openDubbel().reduce((s,r)=>s+(parseFloat(r.belopp)||0),0);
document.getElementById('kpi-grid').innerHTML=[
['k-brand','◧','Totala tickets',tickets.length,'sedan start',0,"kpiGo('tickets','all')"],
['k-open','▤','Öppna tickets',openTickets().length,'att hantera',1,"kpiGo('tickets','open')"],
['k-red','⚠','Failed payments',openFailed().length,fSum?fmtKr(fSum)+' totalt':'inga öppna',2,"kpiGo('failed','open')"],
['k-violet','⇉','Dubbelbetalningar',openDubbel().length,dSum?fmtKr(dSum)+' totalt':'inga öppna',3,"kpiGo('dubbel','open')"],
].map(([cls,ic,lbl,val,sub,i,go])=>`<div class="kpi ${cls} kpi-click" style="animation-delay:${i*50}ms" onclick="${go}" title="Visa ${esc(lbl)}">
<div class="top"><div class="ic">${ic}</div><div class="lbl">${lbl}</div></div>
<div class="val num">${val}</div><div class="sub">${sub}</div></div>`).join('');
const fb=document.getElementById('sms-date');if(fb)fb.textContent=new Date().toLocaleDateString('sv-SE',{day:'numeric',month:'short'});
renderSms();
renderAvail();
renderChecklist();
renderOmbetWatch();
}
function openOmbetTab(){const el=document.querySelector('[data-tab="ombet"]');showTab('ombet',el);}
function renderOmbetWatch(){
const box=document.getElementById('ombet-watch');if(!box)return;
const rows=[...ombet].filter(x=>ageDays(x.created_at)>=2).sort((a,b)=>(a.created_at||'').localeCompare(b.created_at||''));
const cnt=document.getElementById('ombet-watch-count');if(cnt)cnt.textContent=rows.length+' att kolla';
if(!rows.length){box.innerHTML=`<div class="sms-empty">Inget att kolla just nu – inga case äldre än 2 dagar 👍</div>`;return;}
box.innerHTML=rows.slice(0,8).map(x=>`<div class="ow-item" onclick="openOmbetTab()" title="Öppna Ombetalningar">
<span class="ow-age" style="color:${ageColor(x.created_at)}">${ageText(x.created_at)}</span>
<span class="ow-ocr num">${esc(x.ocr)}</span>
<span class="ow-note t-k">${esc(x.beskrivning||'')}${x.kommentar?' · <b style="color:var(--open)">'+esc(x.kommentar)+'</b>':''}</span>
</div>`).join('');
}
function toggleSmsForm(show){
const f=document.getElementById('sms-form');if(!f)return;
f.style.display=show?'flex':'none';
if(show){document.getElementById('sms-text').value='';document.getElementById('sms-tid').value='';setTimeout(()=>document.getElementById('sms-text').focus(),50);}
}
function renderSms(){
const box=document.getElementById('sms-list');if(!box)return;
const rows=[...smsList].sort((a,b)=>(a.tid||'').localeCompare(b.tid||''));
if(!rows.length){box.innerHTML=`<div class="sms-empty">Inga SMS inlagda för idag ännu.</div>`;return;}
box.innerHTML=rows.map(s=>`<div class="sms-item">
<span class="tid">${esc(s.tid||'–')}</span>
<span class="txt">${esc(s.text)}</span>
<button class="x" onclick="removeSms('${s.id}')" title="Ta bort">✕</button>
</div>`).join('');
}
async function addSms(){
if(need())return;
const text=document.getElementById('sms-text').value.trim();
const tid=document.getElementById('sms-tid').value;
if(!text){toast('⚠️ Skriv vad SMS:et är');return;}
if(!tid){toast('⚠️ Ange tiden det går iväg');return;}
const {error}=await db.from('sms_lista').insert({datum:today,text,tid});
if(error){report(error);return;}
toggleSmsForm(false);toast('✅ SMS tillagt');await fetchData();
}
async function removeSms(id){
if(need())return;
const {error}=await db.from('sms_lista').delete().eq('id',id);
if(error){report(error);return;}
toast('🗑 Borttaget');await fetchData();
}
function availColor(name){
const pal=['#1e5a41','#f2935e','#92d96b','#2f6e96','#5c3a1f','#1b6b41','#b25e2a','#4a8f6a'];
let h=0;for(const c of (name||''))h=(h*31+c.charCodeAt(0))>>>0;return pal[h%pal.length];
}
function renderAvail(){
const box=document.getElementById('avail-list');if(!box)return;
const roster=[...personal].sort((a,b)=>(a.namn||'').localeCompare(b.namn||'','sv'));
const dl=document.getElementById('roster-dl');
if(dl)dl.innerHTML=roster.map(p=>`<option value="${esc(p.namn)}">`).join('');
// manuellt markerade lediga
const manual=roster.filter(p=>p.status==='Ledig').map(p=>({namn:p.namn,kind:'manual',id:p.id,tag:'Ledig',cls:'st-ledig',text:''}));
const seen=new Set(manual.map(m=>(m.namn||'').toLowerCase()));
// schemabaserad ledighet idag (Semester / Frånvaro)
const sched=schemaPoster
.filter(p=>p.datum===today&&(p.kategori==='semester'||p.kategori==='franvaro'))
.filter(p=>!seen.has((p.person||'').toLowerCase()))
.sort((a,b)=>(a.person||'').localeCompare(b.person||'','sv'))
.map(p=>({namn:p.person,kind:'schema',tag:p.kategori==='semester'?'Semester':'Frånvaro',cls:p.kategori==='semester'?'st-semester':'st-franvaro',text:p.text||''}));
const all=[...manual,...sched];
const pill=document.getElementById('avail-pill');if(pill)pill.textContent=all.length?`${all.length} lediga`:'ingen ledig';
if(!all.length){box.innerHTML=`<div class="empty" style="padding:24px"><div class="em-ic">🏝</div>Ingen ledig idag.</div>`;return;}
box.innerHTML=all.map(p=>`<div class="avail-row">
<div class="av" style="background:${availColor(p.namn)}">${esc((p.namn||'?')[0])}</div>
<span class="nm">${esc(p.namn)}${p.kind==='schema'&&p.text?` <span class="t-sub" style="font-weight:400">· ${esc(p.text)}</span>`:''}</span>
<span class="avail-status ${p.cls}">${p.tag}</span>
${p.kind==='manual'?`<button class="avail-x" onclick="unmarkLedig('${p.id}')" title="Ta bort från ledig">✕</button>`:`<span class="avail-from-schema" title="Hämtat från schemat">📅</span>`}
</div>`).join('');
}
async function addLedig(){
if(need())return;
const inp=document.getElementById('avail-name');const namn=(inp.value||'').trim();
if(!namn){toast('⚠️ Skriv ett namn');return;}
const existing=personal.find(p=>(p.namn||'').toLowerCase()===namn.toLowerCase());
let error;
if(existing){({error}=await db.from('personal').update({status:'Ledig'}).eq('id',existing.id));}
else{const sort=personal.length?Math.max(...personal.map(p=>p.sort||0))+1:0;({error}=await db.from('personal').insert({namn,status:'Ledig',sort}));}
if(error){report(error);return;}
inp.value='';toast('✅ Inlagd som ledig');await fetchData();
}
async function unmarkLedig(id){
if(need())return;
const {error}=await db.from('personal').update({status:'På plats'}).eq('id',id);
if(error){report(error);return;}
toast('Borttagen från ledig');await fetchData();
}
const CL_DAYS=['mon','tue','wed','thu','fri'];
function clDays(row){return (row.checks&&row.checks.w===CUR_WEEK&&row.checks.d)?row.checks.d:{};}
function renderChecklist(){
const wkEl=document.getElementById('cl-week');if(wkEl)wkEl.textContent='Vecka '+CUR_WEEK.split('-W')[1];
const wrap=document.getElementById('checklist-wrap');if(!wrap)return;
let rows=[...checklist].sort((a,b)=>(a.sort||0)-(b.sort||0));
const preview=rows.length===0;
if(preview)rows=CHECKLIST_SEED.map((r,i)=>({id:null,sort:i,sektion:r[0],uppgift:r[1],vad:r[2],vem:r[3],checks:{}}));
const dayLbl={mon:'Mån',tue:'Tis',wed:'Ons',thu:'Tor',fri:'Fre'};
const dayFull={mon:'Måndag',tue:'Tisdag',wed:'Onsdag',thu:'Torsdag',fri:'Fredag'};
const jsDay=new Date().getDay();
const todayKey={1:'mon',2:'tue',3:'wed',4:'thu',5:'fri'}[jsDay]||null;
const real=rows.filter(r=>r.id);
const total=real.length;
const doneToday=todayKey?real.filter(r=>clDays(r)[todayKey]).length:0;
const pct=total?Math.round(doneToday/total*100):0;
// sektionsvisa antal idag
const secTot={},secDone={};
for(const r of rows){secTot[r.sektion]=(secTot[r.sektion]||0)+1;if(todayKey&&clDays(r)[todayKey])secDone[r.sektion]=(secDone[r.sektion]||0)+1;}
let html='';
html+=`<div class="cl-top">
<div>
<div class="cl-top-day">${todayKey?'Idag · '+dayFull[todayKey]:'Helg – ingen aktiv vardag'}</div>
<div class="cl-top-sub">${todayKey?(doneToday+' av '+total+' avklarade idag'):'Checklistan gäller måndag–fredag'}</div>
</div>
<div class="cl-pct ${pct===100&&total?'done':''}">${todayKey?pct+'%':'–'}</div>
</div>
<div class="cl-bar"><span style="width:${todayKey?pct:0}%"></span></div>`;
if(preview)html+=`<div class="cl-preview">Förhandsvisning – uppgifterna sparas och blir redigerbara så snart checklist-tabellen finns i Supabase och du öppnar filen i en riktig flik.</div>`;
html+=`<div class="cl-table-wrap"><table class="checklist"><thead><tr>
<th>Uppgift</th><th>Vem</th>
${CL_DAYS.map(day=>`<th class="ch${day===todayKey?' today':''}">${dayLbl[day]}${day===todayKey?'<span class="th-idag">idag</span>':''}</th>`).join('')}
</tr></thead><tbody>`;
let sektion=null;
for(const r of rows){
if(r.sektion!==sektion){sektion=r.sektion;
const dn=secDone[sektion]||0,tt=secTot[sektion]||0;
html+=`<tr class="cl-sektion"><td colspan="7"><span class="cl-sek-name">${esc(sektion)}</span>${todayKey?`<span class="cl-sek-ct ${dn===tt?'full':''}">${dn}/${tt}</span>`:''}</td></tr>`;
}
const d=clDays(r);
const vemCell=r.id?`<input class="vem-edit" value="${esc(r.vem)}" onchange="editVem('${r.id}',this.value)" title="Klicka för att ändra ansvarig">`
:`<input class="vem-edit" value="${esc(r.vem)}" disabled>`;
html+=`<tr>
<td class="cl-task"><div class="cl-task-name">${esc(r.uppgift)}</div>${r.vad?`<div class="cl-task-sub">${esc(r.vad)}</div>`:''}</td>
<td>${vemCell}</td>
${CL_DAYS.map(day=>`<td class="ch${day===todayKey?' today':''}"><div class="chk-box ${d[day]?'on':''}" ${r.id?`onclick="toggleCheck('${r.id}','${day}')"`:'style="opacity:.4;cursor:default"'}>✓</div></td>`).join('')}
</tr>`;
}
html+='</tbody></table></div>';
wrap.innerHTML=html;
}
async function editVem(id,val){
if(need())return;
const {error}=await db.from('checklist').update({vem:val.trim()}).eq('id',id);
if(error){report(error);return;}
const row=checklist.find(r=>r.id==id);if(row)row.vem=val.trim();
toast('✅ Ansvarig uppdaterad');
}
async function toggleCheck(id,day){
if(need())return;
const row=checklist.find(r=>r.id==id);if(!row)return;
const d=(row.checks&&row.checks.w===CUR_WEEK&&row.checks.d)?{...row.checks.d}:{};
d[day]=!d[day];
const checks={w:CUR_WEEK,d};
const {error}=await db.from('checklist').update({checks}).eq('id',id);
if(error){report(error);return;}
row.checks=checks;renderChecklist();
}
async function seedChecklistIfEmpty(){
if(!connected||checklist.length)return;
const rows=CHECKLIST_SEED.map((r,i)=>({sort:i,sektion:r[0],uppgift:r[1],vad:r[2],vem:r[3],checks:{}}));
const {error}=await db.from('checklist').insert(rows);
if(error){report(error);return;}
}
async function ensurePersonalSeed(){
if(!connected)return;
const have=new Set(personal.map(p=>(p.namn||'').toLowerCase()));
const missing=PERSONAL_SEED.filter(n=>!have.has(n.toLowerCase()));
if(!missing.length)return;
const base=personal.length?Math.max(...personal.map(p=>p.sort||0))+1:0;
const rows=missing.map((n,i)=>({namn:n,status:'På plats',sort:base+i}));
const {error}=await db.from('personal').insert(rows);
if(error){report(error);return;}
}
function atgardBadge(a){
if(a==='Placera')return '<span class="badge b-blue">Placera</span>';
if(a==='Skicka tillbaks')return '<span class="badge b-violet">Skicka tillbaks</span>';
return '<span class="t-sub">– ej valt</span>';
}
/* tickets */
let selectedTicketType='';
function openTicketModal(){
if(need())return;
selectedTicketType='';
document.querySelectorAll('#type-grid .type-card').forEach(b=>b.classList.remove('sel'));
['t-ocr','t-by','t-desc'].forEach(id=>document.getElementById(id).value='');
document.getElementById('t-land').value=landFil.tickets||'Sverige';
document.getElementById('t-by').value=currentUser?currentUser.namn:'';
document.getElementById('ticket-ov').classList.add('show');
}
function closeTicketModal(){document.getElementById('ticket-ov').classList.remove('show');}
function selectTicketType(btn){
document.querySelectorAll('#type-grid .type-card').forEach(b=>b.classList.remove('sel'));
btn.classList.add('sel');selectedTicketType=btn.dataset.typ;
}
function typBadge(t){
if(!t)return '<span class="t-sub">–</span>';
const m={'Ombetalning':'b-blue','Kreditera':'b-violet','Betala ut försäkring':'b-done','Övrigt':'b-gray'};
return `<span class="badge ${m[t]||'b-gray'}">${esc(t)}</span>`;
}
async function addTicket(){
if(need())return;
if(!selectedTicketType){toast('⚠️ Välj en typ av ticket');return;}
const ocr=document.getElementById('t-ocr').value.trim(),desc=document.getElementById('t-desc').value.trim();
if(!ocr&&!desc){toast('⚠️ Fyll i OCR eller beskrivning');return;}
if(ocr&&!/^\d{1,7}$/.test(ocr)){toast('⚠️ OCR får bara innehålla siffror (max 7)');return;}
if(looksLikePnr(ocr)||looksLikePnr(desc)){toast('🚫 Det ser ut som ett personnummer – ta bort det. Personnummer får inte sparas.',6000);return;}
const {error}=await db.from('tickets').insert({typ:selectedTicketType,land:document.getElementById('t-land').value,ocr,beskrivning:desc,skapad_av:(currentUser?currentUser.namn:document.getElementById('t-by').value.trim())||null,status:'Öppen',datum:today});
if(error){report(error);return;}
closeTicketModal();
toast('✅ Ticket skapad');await fetchData();
}
function looksLikePnr(s){return /(?:\d{6}|\d{8})[-+]?\d{4}/.test(String(s||'').replace(/\s/g,''));}
function renderTickets(){
const q=(document.getElementById('search-tickets').value||'').toLowerCase();
const ft=document.getElementById('fil-ticket-typ').value;
let r=[...tickets].sort((a,b)=>(b.created_at||'').localeCompare(a.created_at||''));
if(seg.tickets==='open')r=r.filter(t=>t.status!=='Stängd');
else if(seg.tickets==='closed')r=r.filter(t=>t.status==='Stängd');
if(landFil.tickets)r=r.filter(t=>(t.land||'Sverige')===landFil.tickets);
if(ft)r=r.filter(t=>t.typ===ft);
if(q)r=r.filter(t=>(t.ocr||'').toLowerCase().includes(q)||(t.beskrivning||'').toLowerCase().includes(q)||(t.skapad_av||'').toLowerCase().includes(q)||(t.typ||'').toLowerCase().includes(q));
document.getElementById('count-tickets').textContent=r.length+' st';
const tb=document.getElementById('tickets-tbody');
if(!r.length){tb.innerHTML=`<tr><td colspan="8"><div class="empty"><div class="em-ic">▤</div>Inga tickets här.</div></td></tr>`;return;}
tb.innerHTML=r.map(t=>{const closed=t.status==='Stängd';const fb=ticketUnseen(t);return `<tr class="${closed?'done-row':''}">
<td class="num t-sub">${dShort(t.datum||t.created_at)}</td><td title="${esc(t.land||'Sverige')}">${landFlag(t.land)}</td><td>${typBadge(t.typ)}</td><td class="num">${esc(t.ocr)}</td>
<td class="t-k" title="${esc(t.beskrivning)}">${esc(t.beskrivning)}</td><td>${esc(t.skapad_av)||'<span class="t-sub">–</span>'}</td>
<td><span class="badge ${closed?'b-done':'b-open'}">${closed?'Stängd':'Öppen'}</span>${fb?' <span class="badge b-fb">🔔 Ny feedback</span>':''}</td>
<td><div class="row-actions">
<button class="btn btn-s btn-sm" onclick="openTicketView('${t.id}')">Visa</button>
<button class="btn ${closed?'btn-s':'btn-ok'} btn-sm" onclick="toggleTicket('${t.id}','${closed?'Öppen':'Stängd'}')">${closed?'Återöppna':'Stäng'}</button>
<button class="btn btn-d btn-sm icon-btn" onclick="delRow('tickets','${t.id}')" title="Ta bort">✕</button>
</div></td></tr>`;}).join('');
}
let openCmtKind=null, openCmtId=null;
const CMT_OWNER={ticket:'skapad_av', dubbel:'created_by'};
function cmtFor(kind,id){return ticketKomms.filter(c=>(c.kind||'ticket')===kind&&String(c.ticket_id)===String(id));}
function cmtSeenLast(kind,id,u){let m=0;for(const s of ticketSeen){if((s.kind||'ticket')===kind&&String(s.ticket_id)===String(id)&&s.namn===u){const x=Date.parse(s.seen_at||0)||0;if(x>m)m=x;}}return m;}
function entUnseen(kind,item){
if(!currentUser||!item)return false;const u=currentUser.namn;
const owner=item[CMT_OWNER[kind]];
const cs=cmtFor(kind,item.id);
const part=owner===u||cs.some(c=>c.forfattare===u);
if(!part)return false;
const seen=cmtSeenLast(kind,item.id,u);
return cs.some(c=>c.forfattare!==u&&(Date.parse(c.created_at||0)||0)>seen);
}
function ticketUnseen(t){return entUnseen('ticket',t);}
function dubbelUnseen(d){return entUnseen('dubbel',d);}
function unseenTickets(){return tickets.filter(t=>entUnseen('ticket',t));}
function unseenDubbel(){return dubbel.filter(d=>entUnseen('dubbel',d));}
function unseenTotal(){return unseenTickets().length+unseenDubbel().length;}
async function markCmtSeen(kind,id){
if(!currentUser)return;const u=currentUser.namn,nowISO=new Date().toISOString();
try{await db.from('ticket_seen').upsert({ticket_id:id,namn:u,kind,seen_at:nowISO},{onConflict:'ticket_id,namn'});}catch(e){console.debug(e);}
const ex=ticketSeen.find(s=>String(s.ticket_id)===String(id)&&s.namn===u);
if(ex){ex.seen_at=nowISO;ex.kind=kind;}else ticketSeen.push({ticket_id:id,namn:u,kind,seen_at:nowISO});
}
function openTicketTab(){const el=document.querySelector('[data-tab="tickets"]');if(el)showTab('tickets',el);}
function openFeedbackTarget(){
if(unseenTickets().length){openTicketTab();}
else if(unseenDubbel().length){const el=document.querySelector('[data-tab="dubbel"]');if(el)showTab('dubbel',el);}
else openTicketTab();
}
function cmtInfoHtml(kind,item){
if(kind==='dubbel'){
return `<div class="tv-row"><span>OCR</span><b>${esc(item.ocr||'–')}</b></div>
<div class="tv-row"><span>Belopp</span><b>${fmtKr(item.belopp)}</b></div>
<div class="tv-row"><span>Skapad av</span><b>${esc(item.created_by||'–')}</b></div>
<div class="tv-row"><span>Status</span><b>${item.klar?'Klar':'Öppen'}</b></div>
${item.kommentar?`<div class="tv-desc">${esc(item.kommentar)}</div>`:''}`;
}
return `<div class="tv-row"><span>Typ</span><b>${esc(item.typ||'–')}</b></div>
<div class="tv-row"><span>OCR</span><b>${esc(item.ocr||'–')}</b></div>
<div class="tv-row"><span>Skapad av</span><b>${esc(item.skapad_av||'–')}</b></div>
<div class="tv-row"><span>Status</span><b>${item.status==='Stängd'?'Stängd':'Öppen'}</b></div>
${item.beskrivning?`<div class="tv-desc">${esc(item.beskrivning)}</div>`:''}`;
}
async function openCmtView(kind,id){
const list=kind==='dubbel'?dubbel:tickets;
const item=list.find(x=>String(x.id)===String(id));if(!item)return;
openCmtKind=kind;openCmtId=id;
document.getElementById('tv-info').innerHTML=cmtInfoHtml(kind,item);
document.getElementById('tv-thread').innerHTML='<div class="loading"><span class="spinner"></span>Laddar…</div>';
document.getElementById('ticket-view-ov').classList.add('show');
await markCmtSeen(kind,id);
updateCounts();renderTickets();renderDubbel();
renderCmtThread(kind,id);
}
function openTicketView(id){return openCmtView('ticket',id);}
function openDubbelView(id){return openCmtView('dubbel',id);}
async function renderCmtThread(kind,id){
const box=document.getElementById('tv-thread');if(!box)return;
const {data,error}=await db.from('ticket_kommentarer').select('*').eq('kind',kind).eq('ticket_id',id).order('created_at',{ascending:true});
if(error){box.innerHTML='<div class="t-sub" style="padding:8px 0">Kunde inte ladda kommentarer (är kolumnen kind tillagd i ticket_kommentarer?).</div>';report(error);return;}
if(!data||!data.length){box.innerHTML='<div class="t-sub" style="padding:8px 0">Inga kommentarer än.</div>';return;}
box.innerHTML=data.map(c=>`<div class="tv-cmt"><div class="tv-cmt-h"><b>${esc(c.forfattare||'?')}</b><span class="t-sub">${dShort(c.created_at)}</span></div><div>${esc(c.text)}</div></div>`).join('');
}
function renderTicketThread(id){return renderCmtThread('ticket',id);}
async function sendTicketComment(){
if(need())return;
if(!openCmtId)return;
const inp=document.getElementById('tv-input');const text=(inp.value||'').trim();
if(!text){toast('⚠️ Skriv en kommentar först');return;}
const {error}=await db.from('ticket_kommentarer').insert({ticket_id:openCmtId,kind:openCmtKind,forfattare:currentUser?currentUser.namn:null,text});
if(error){report(error);return;}
await markCmtSeen(openCmtKind,openCmtId);
inp.value='';toast('✅ Skickat');
await fetchData();
renderCmtThread(openCmtKind,openCmtId);
}
function closeTicketView(){document.getElementById('ticket-view-ov').classList.remove('show');openCmtKind=null;openCmtId=null;}
async function toggleTicket(id,status){if(need()||needEdit())return;const {error}=await db.from('tickets').update({status}).eq('id',id);if(error){report(error);return;}await fetchData();}
/* failed payments */
async function addFailed(){
if(need()||needBackoffice())return;
const ocr=document.getElementById('fp-ocr').value.trim();
if(!ocr){toast('⚠️ OCR krävs');return;}
const {error}=await db.from('failed_payments').insert({
booking_date:document.getElementById('fp-date').value||null,
debtor:document.getElementById('fp-debtor').value.trim(),ocr,
amount:document.getElementById('fp-amount').value?parseFloat(document.getElementById('fp-amount').value):null,
land:document.getElementById('fp-land').value,
kommentar:document.getElementById('fp-kommentar').value.trim(),atgard:null,klar:false
});
if(error){report(error);return;}
['fp-debtor','fp-ocr','fp-amount','fp-kommentar'].forEach(id=>document.getElementById(id).value='');
toast('✅ Tillagd');await fetchData();
}
async function clearAllFailed(){
if(need()||needEdit())return;
if(!failed.length){toast('Listan är redan tom');return;}
if(!await confirmDialog(`Alla ${failed.length} failed payments raderas permanent – det går inte att ångra.`,'Radera alla','Radera alla failed payments'))return;
const {error}=await db.from('failed_payments').delete().neq('id','00000000-0000-0000-0000-000000000000');
if(error){report(error);return;}
toast('🗑 Alla failed payments raderade',4000);await fetchData();
}
/* --- CSV-import för failed payments --- */
// Robust CSV-parser: hanterar citattecken, kommatecken i fält och CRLF
function parseCSV(text){
const rows=[];let row=[],cell='',q=false;
text=text.replace(/^\uFEFF/,''); // ta bort BOM
for(let i=0;i<text.length;i++){
const c=text[i];
if(q){
if(c==='"'){if(text[i+1]==='"'){cell+='"';i++;}else q=false;}
else cell+=c;
}else{
if(c==='"')q=true;
else if(c===','){row.push(cell);cell='';}
else if(c==='\n'){row.push(cell);rows.push(row);row=[];cell='';}
else if(c==='\r'){/* ignorera */}
else cell+=c;
}
}
if(cell.length||row.length){row.push(cell);rows.push(row);}
return rows.filter(r=>r.some(v=>v&&v.trim()));
}
function colIndex(header,names){
const h=header.map(x=>x.trim().toLowerCase());
for(const n of names){const i=h.indexOf(n.toLowerCase());if(i>-1)return i;}
return -1;
}
async function importFailedFile(input){
if(need()||needBackoffice()){input.value='';return;}
const file=input.files&&input.files[0];input.value='';
if(!file)return;
const name=(file.name||'').toLowerCase();
const isXlsx=/\.(xlsx|xls)$/.test(name);
let rows;
if(isXlsx){
try{
const buf=await file.arrayBuffer();
const wb=XLSX.read(buf,{type:'array',cellDates:true});
const ws=wb.Sheets[wb.SheetNames[0]];
const aoa=XLSX.utils.sheet_to_json(ws,{header:1,defval:'',raw:true});
rows=aoa.map(row=>row.map(c=>c instanceof Date?isoOf(c):(c==null?'':String(c))));
}catch(e){report(e);toast('⚠️ Kunde inte läsa Excel-filen');return;}
}else{
let text;try{text=await file.text();}catch(e){report(e);return;}
rows=parseCSV(text);
}
if(rows.length<2){toast('⚠️ Filen verkar tom');return;}
const header=rows[0];
const iDate=colIndex(header,['Booking date','booking_date','datum']);
const iDebtor=colIndex(header,['Debtor']);
const iOcr=colIndex(header,['Beneficiary account','OCR','ocr']);
const iAmount=colIndex(header,['Transaction amount','Amount','belopp']);
if(iOcr<0&&iAmount<0&&iDate<0){toast('⚠️ Känner inte igen kolumnerna i filen');return;}
// bygg rader – alla rader importeras (dubbletter tillåts; kunder kan betala 2 ggr)
const importLand=landFil.failed||'Sverige';
const toInsert=[];
for(let i=1;i<rows.length;i++){
const r=rows[i];
const ocr=(iOcr>-1?r[iOcr]:'')?.trim()||'';
const date=(iDate>-1?r[iDate]:'')?.trim().slice(0,10)||null;
const amount=iAmount>-1?parseFloat(r[iAmount]):null;
const debtor=(iDebtor>-1?r[iDebtor]:'')?.trim()||'';
if(!ocr&&!amount&&!date)continue;
toInsert.push({booking_date:date,debtor,ocr,amount:isNaN(amount)?null:amount,land:importLand,kommentar:'',atgard:null,klar:false});
}
if(!toInsert.length){toast('⚠️ Inga rader att importera');return;}
if(!await confirmDialog(`Importera ${toInsert.length} rad(er) till failed payments – land: ${importLand}?`,'Importera',isXlsx?'Importera Excel':'Importera CSV')){return;}
// sätt in i omgångar om 100
let ok=0;
for(let i=0;i<toInsert.length;i+=100){
const {error}=await db.from('failed_payments').insert(toInsert.slice(i,i+100));
if(error){report(error);break;}
ok+=Math.min(100,toInsert.length-i);
}
toast(`✅ ${ok} rad(er) importerade`,5000);
await fetchData();
}
function renderFailed(){
let r=[...failed].sort((a,b)=>(b.booking_date||'').localeCompare(a.booking_date||''));
if(seg.failed==='open')r=r.filter(x=>!x.klar);else if(seg.failed==='done')r=r.filter(x=>x.klar);
if(landFil.failed)r=r.filter(x=>(x.land||'Sverige')===landFil.failed);
document.getElementById('count-failed').textContent=r.length+' st';
const tb=document.getElementById('failed-tbody');
if(!r.length){tb.innerHTML=`<tr><td colspan="8"><div class="empty"><div class="em-ic">⚠</div>Inga rader här.</div></td></tr>`;return;}
tb.innerHTML=r.map(x=>`<tr class="${x.klar?'done-row':''}">
<td class="num t-sub">${dShort(x.booking_date)}</td><td title="${esc(x.land||'Sverige')}">${landFlag(x.land)}</td><td>${esc(x.debtor)}</td><td class="num">${esc(x.ocr)}</td><td class="t-r">${fmtKr(x.amount)}</td>
<td><div class="row-actions">
<button class="toggle ${x.atgard==='Placera'?'on-blue':''}" onclick="setAtgard('${x.id}','Placera')">Placera</button>
<button class="toggle ${x.atgard==='Skicka tillbaks'?'on-violet':''}" onclick="setAtgard('${x.id}','Skicka tillbaks')">Skicka tillbaks</button>
</div></td>
<td class="t-k" title="${esc(x.kommentar)}">${esc(x.kommentar)}</td>
<td><div class="row-actions">
${x.klar?`<span class="badge b-done">Klar</span><button class="btn btn-s btn-sm" onclick="setKlar('failed_payments','${x.id}',false)">Ångra</button>`
:`<button class="btn btn-ok btn-sm" onclick="setKlar('failed_payments','${x.id}',true)">Klar</button>`}
<button class="btn btn-d btn-sm icon-btn" onclick="delRow('failed_payments','${x.id}')" title="Ta bort">✕</button>
</div></td></tr>`).join('');
}
async function setAtgard(id,a){if(need()||needEdit())return;const row=failed.find(r=>r.id==id);const val=row&&row.atgard===a?null:a;const {error}=await db.from('failed_payments').update({atgard:val}).eq('id',id);if(error){report(error);return;}await fetchData();}
/* avvisade betalningar (kopia av failed payments, per land) */
async function addAvvisade(){
if(need()||needBackoffice())return;
const acct=document.getElementById('av-acct').value.trim();
const ownref=document.getElementById('av-ownref').value.trim();
if(!acct&&!ownref){toast('⚠️ Ange minst To account eller Own Reference');return;}
const {error}=await db.from('avvisade_betalningar').insert({
land:currentLand,
payment_type:document.getElementById('av-ptype').value.trim(),
debtor:acct,
ocr:ownref,
amount:document.getElementById('av-amount').value?parseFloat(document.getElementById('av-amount').value):null,
kommentar:document.getElementById('av-invref').value.trim(),atgard:null,klar:false
});
if(error){report(error);return;}
['av-ptype','av-acct','av-amount','av-ownref','av-invref'].forEach(id=>document.getElementById(id).value='');
toast('✅ Tillagd ('+currentLand+')');await fetchData();
}
function renderAvvisade(){
let r=avvisade.filter(x=>x.land===currentLand).sort((a,b)=>(b.created_at||'').localeCompare(a.created_at||''));
if(seg.avvisade==='open')r=r.filter(x=>!x.klar);else if(seg.avvisade==='done')r=r.filter(x=>x.klar);
const c=document.getElementById('count-avvisade');if(c)c.textContent=r.length+' st';
const tb=document.getElementById('av-tbody');if(!tb)return;
if(!r.length){tb.innerHTML=`<tr><td colspan="7"><div class="empty"><div class="em-ic">✕</div>Inga avvisade betalningar för ${esc(currentLand)}.</div></td></tr>`;return;}
tb.innerHTML=r.map(x=>`<tr class="${x.klar?'done-row':''}">
<td>${esc(x.payment_type)}</td><td class="num">${esc(x.debtor)}</td><td class="t-r">${fmtKr(x.amount)}</td><td class="num">${esc(x.ocr)}</td><td class="t-k" title="${esc(x.kommentar)}">${esc(x.kommentar)}</td>
<td><div class="row-actions">
<button class="toggle ${x.atgard==='Placera'?'on-blue':''}" onclick="setAtgardAvv('${x.id}','Placera')">Placera</button>
<button class="toggle ${x.atgard==='Skicka tillbaks'?'on-violet':''}" onclick="setAtgardAvv('${x.id}','Skicka tillbaks')">Skicka tillbaks</button>
</div></td>
<td><div class="row-actions">
${x.klar?`<span class="badge b-done">Klar</span><button class="btn btn-s btn-sm" onclick="setKlar('avvisade_betalningar','${x.id}',false)">Ångra</button>`
:`<button class="btn btn-ok btn-sm" onclick="setKlar('avvisade_betalningar','${x.id}',true)">Klar</button>`}
<button class="btn btn-d btn-sm icon-btn" onclick="delRow('avvisade_betalningar','${x.id}')" title="Ta bort">✕</button>
</div></td></tr>`).join('');
}
async function setAtgardAvv(id,a){if(need()||needEdit())return;const row=avvisade.find(r=>r.id==id);const val=row&&row.atgard===a?null:a;const {error}=await db.from('avvisade_betalningar').update({atgard:val}).eq('id',id);if(error){report(error);return;}await fetchData();}
async function importAvvisade(input){
if(need()||needBackoffice()){input.value='';return;}
const file=input.files&&input.files[0];input.value='';
if(!file)return;
let aoa;
try{
if(/\.(xlsx|xls)$/i.test(file.name)){
const buf=await file.arrayBuffer();
const wb=XLSX.read(buf,{type:'array'});
const ws=wb.Sheets[wb.SheetNames[0]];
aoa=XLSX.utils.sheet_to_json(ws,{header:1,defval:''});
}else{
aoa=parseCSV(await file.text());
}
}catch(e){report(e);return;}
if(!aoa||aoa.length<2){toast('⚠️ Filen verkar tom');return;}
// hitta rubrikraden (kan ligga under metadata)
let hi=-1;
for(let i=0;i<Math.min(aoa.length,40);i++){
const cells=aoa[i].map(c=>String(c==null?'':c).toLowerCase().trim());
if(cells.includes('payment type')||cells.includes('to account')){hi=i;break;}
}
if(hi<0){toast('⚠️ Hittar inte rubrikraden (Payment Type / To account)');return;}
const header=aoa[hi].map(c=>String(c==null?'':c).trim());
const low=header.map(h=>h.toLowerCase());
const find=(names)=>{for(const n of names){const i=low.indexOf(n);if(i>-1)return i;}return -1;};
const iPt=find(['payment type']);
const iAcct=find(['to account']);
const iAmt=find(['amount']);
const iOwn=find(['own reference']);
const iInv=find(['invoice ref']);
const toInsert=[];
for(let i=hi+1;i<aoa.length;i++){
const r=aoa[i];if(!r.some(c=>String(c==null?'':c).trim()!==''))continue;
const pt=iPt>-1?String(r[iPt]==null?'':r[iPt]).trim():'';
const acct=iAcct>-1?String(r[iAcct]==null?'':r[iAcct]).trim():'';
const own=iOwn>-1?String(r[iOwn]==null?'':r[iOwn]).trim():'';
const inv=iInv>-1?String(r[iInv]==null?'':r[iInv]).trim():'';
const amt=iAmt>-1?parseFloat(String(r[iAmt]).replace(/\s/g,'').replace(',','.')):NaN;
if(!pt&&!acct&&!own&&!(amt>0))continue;
toInsert.push({land:currentLand,payment_type:pt,debtor:acct,ocr:own,amount:isNaN(amt)?null:amt,kommentar:inv,atgard:null,klar:false});
}
if(!toInsert.length){toast('⚠️ Inga rader att importera');return;}
if(!await confirmDialog(`Importera ${toInsert.length} rad(er) till Avvisade betalningar (${currentLand})?`,'Importera','Importera fil')){return;}
let ok=0,failErr=null;
for(let i=0;i<toInsert.length;i+=100){
const {error}=await db.from('avvisade_betalningar').insert(toInsert.slice(i,i+100));
if(error){failErr=error;break;}
ok+=Math.min(100,toInsert.length-i);
}
await fetchData();
if(failErr){report(failErr);toast('⚠️ Importen misslyckades (sparade '+ok+'). Saknas kolumnen payment_type i databasen?',9000);return;}
toast(`✅ ${ok} rad(er) importerade (${currentLand})`,5000);
}
function landFromPaymentType(pt){
const m=String(pt||'').trim().toUpperCase().match(/^(SE|NO|FI)\s*:/);
return m?({SE:'Sverige',NO:'Norge',FI:'Finland'}[m[1]]):null;
}
async function importAvvisadeAuto(input){
if(need()||needBackoffice()){input.value='';return;}
const file=input.files&&input.files[0];input.value='';
if(!file)return;
let aoa;
try{
if(/\.(xlsx|xls)$/i.test(file.name)){
const buf=await file.arrayBuffer();
const wb=XLSX.read(buf,{type:'array'});
aoa=XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]],{header:1,defval:''});
}else{aoa=parseCSV(await file.text());}
}catch(e){report(e);return;}
if(!aoa||aoa.length<2){toast('⚠️ Filen verkar tom');return;}
let hi=-1;
for(let i=0;i<Math.min(aoa.length,40);i++){
const cells=aoa[i].map(c=>String(c==null?'':c).toLowerCase().trim());
if(cells.includes('payment type')||cells.includes('to account')){hi=i;break;}
}
if(hi<0){toast('⚠️ Hittar inte rubrikraden (Payment Type / To account)');return;}
const header=aoa[hi].map(c=>String(c==null?'':c).trim());
const low=header.map(h=>h.toLowerCase());
const find=(names)=>{for(const n of names){const i=low.indexOf(n);if(i>-1)return i;}return -1;};
const iPt=find(['payment type']),iAcct=find(['to account']),iAmt=find(['amount']),iOwn=find(['own reference']),iInv=find(['invoice ref']);
if(iPt<0){toast('⚠️ Hittar ingen "Payment Type"-kolumn att sortera på');return;}
const buckets={Sverige:[],Norge:[],Finland:[]};let skipped=0;
for(let i=hi+1;i<aoa.length;i++){
const r=aoa[i];if(!r.some(c=>String(c==null?'':c).trim()!==''))continue;
const pt=String(r[iPt]==null?'':r[iPt]).trim();
const land=landFromPaymentType(pt);
if(!land){skipped++;continue;}
const acct=iAcct>-1?String(r[iAcct]==null?'':r[iAcct]).trim():'';
const own=iOwn>-1?String(r[iOwn]==null?'':r[iOwn]).trim():'';
const inv=iInv>-1?String(r[iInv]==null?'':r[iInv]).trim():'';
const amt=iAmt>-1?parseFloat(String(r[iAmt]).replace(/\s/g,'').replace(',','.')):NaN;
if(!acct&&!own&&!(amt>0))continue;
buckets[land].push({land,payment_type:pt,debtor:acct,ocr:own,amount:isNaN(amt)?null:amt,kommentar:inv,atgard:null,klar:false});
}
const total=buckets.Sverige.length+buckets.Norge.length+buckets.Finland.length;
if(!total){toast('⚠️ Inga rader med SE:/NO:/FI: hittades i Payment Type');return;}
if(!await confirmDialog(`Importera och sortera automatiskt?\n\n🇸🇪 Sverige: ${buckets.Sverige.length}\n🇳🇴 Norge: ${buckets.Norge.length}\n🇫🇮 Finland: ${buckets.Finland.length}${skipped?'\n\nUtan SE/NO/FI (hoppas över): '+skipped:''}`,'Importera','Importera & sortera'))return;
const all=[...buckets.Sverige,...buckets.Norge,...buckets.Finland];
let ok=0,failErr=null;
for(let i=0;i<all.length;i+=100){
const {error}=await db.from('avvisade_betalningar').insert(all.slice(i,i+100));
if(error){failErr=error;break;}
ok+=Math.min(100,all.length-i);
}
await fetchData();
if(failErr){report(failErr);toast('⚠️ Importen misslyckades (sparade '+ok+' av '+all.length+'). Saknas kolumnen payment_type i databasen?',9000);return;}
toast(`✅ ${ok} importerade · 🇸🇪 ${buckets.Sverige.length} · 🇳🇴 ${buckets.Norge.length} · 🇫🇮 ${buckets.Finland.length}`,6000);
}
async function clearAllAvvisade(){
if(need()||needEdit())return;
const n=avvisade.filter(x=>x.land===currentLand).length;
if(!n){toast('Listan är redan tom');return;}
if(!await confirmDialog(`Alla ${n} avvisade betalningar för ${currentLand} raderas permanent – det går inte att ångra.`,'Radera alla','Radera alla ('+currentLand+')'))return;
const {error}=await db.from('avvisade_betalningar').delete().eq('land',currentLand);
if(error){report(error);return;}
toast('🗑 Alla raderade ('+currentLand+')',4000);await fetchData();
}
/* dubbel */
async function addDubbel(){
if(need())return;
const ocr=document.getElementById('db-ocr').value.trim();
if(!ocr){toast('⚠️ OCR krävs');return;}
const {error}=await db.from('dubbelbetalningar').insert({ocr,land:document.getElementById('db-land').value,belopp:document.getElementById('db-belopp').value?parseFloat(document.getElementById('db-belopp').value):null,kommentar:document.getElementById('db-kommentar').value.trim(),klar:false,created_by:currentUser?currentUser.namn:null});
if(error){report(error);return;}
['db-ocr','db-belopp','db-kommentar'].forEach(id=>document.getElementById(id).value='');
toast('✅ Tillagd');await fetchData();
}
function renderDubbel(){
let r=[...dubbel].sort((a,b)=>(b.created_at||'').localeCompare(a.created_at||''));
if(seg.dubbel==='open')r=r.filter(x=>!x.klar);else if(seg.dubbel==='done')r=r.filter(x=>x.klar);
if(landFil.dubbel)r=r.filter(x=>(x.land||'Sverige')===landFil.dubbel);
document.getElementById('count-dubbel').textContent=r.length+' st';
const tb=document.getElementById('dubbel-tbody');
if(!r.length){tb.innerHTML=`<tr><td colspan="6"><div class="empty"><div class="em-ic">⇉</div>Inga rader här.</div></td></tr>`;return;}
tb.innerHTML=r.map(x=>{const fb=dubbelUnseen(x);return `<tr class="${x.klar?'done-row':''}">
<td class="num">${esc(x.ocr)}</td><td title="${esc(x.land||'Sverige')}">${landFlag(x.land)}</td><td class="t-r">${fmtKr(x.belopp)}</td><td class="t-k" title="${esc(x.kommentar)}">${esc(x.kommentar)} ${byline(x.created_by)}</td>
<td><span class="badge ${x.klar?'b-done':'b-open'}">${x.klar?'Klar':'Öppen'}</span>${fb?' <span class="badge b-fb">🔔 Ny feedback</span>':''}</td>
<td><div class="row-actions">
<button class="btn btn-s btn-sm" onclick="openDubbelView('${x.id}')">Visa</button>
${x.klar?`<button class="btn btn-s btn-sm" onclick="setKlar('dubbelbetalningar','${x.id}',false)">Ångra</button>`
:`<button class="btn btn-ok btn-sm" onclick="setKlar('dubbelbetalningar','${x.id}',true)">Klar</button>`}
<button class="btn btn-d btn-sm icon-btn" onclick="delRow('dubbelbetalningar','${x.id}')" title="Ta bort">✕</button>
</div></td></tr>`;}).join('');
}
/* shared row ops */
async function setKlar(table,id,val){if(need()||needEdit())return;const {error}=await db.from(table).update({klar:val,klar_at:val?new Date().toISOString():null}).eq('id',id);if(error){report(error);return;}toast(val?'✅ Klarmarkerad':'↩ Återöppnad');await fetchData();}
async function delRow(table,id){if(need()||needEdit())return;if(!await confirmDialog('Raden tas bort permanent.','Ta bort'))return;const {error}=await db.from(table).delete().eq('id',id);if(error){report(error);return;}toast('🗑 Borttaget');await fetchData();}
/* AML-underlag */
const AML_OK_TYPES=['image/png','image/jpeg','application/pdf'];
function amlFileChosen(input){
const f=input.files&&input.files[0];
const lbl=input.parentElement,span=document.getElementById('aml-fname');
if(f){span.textContent=f.name;lbl.classList.add('has');}
else{span.textContent='Välj fil…';lbl.classList.remove('has');}
}
function fileExtBadge(name,type){
const isPdf=(type==='application/pdf')||/\.pdf$/i.test(name||'');
return `<span class="ext ${isPdf?'ext-pdf':'ext-img'}">${isPdf?'PDF':'BILD'}</span>`;
}
async function addAml(){
if(need())return;
const ocr=document.getElementById('aml-ocr').value.trim();
const kommentar=document.getElementById('aml-kommentar').value.trim();
const input=document.getElementById('aml-file');
const file=input.files&&input.files[0];
if(!file){toast('⚠️ Välj en fil att ladda upp');return;}
if(!AML_OK_TYPES.includes(file.type)&&!/\.(png|jpe?g|pdf)$/i.test(file.name)){toast('⚠️ Endast PNG, JPG eller PDF');return;}
if(!ocr){toast('⚠️ OCR krävs');return;}
const btn=document.getElementById('aml-upload-btn');btn.disabled=true;const orig=btn.textContent;btn.textContent='Laddar upp…';
try{
const safe=file.name.replace(/[^\w.\-]+/g,'_');
const path=`${Date.now()}_${Math.random().toString(36).slice(2,8)}_${safe}`;
const up=await db.storage.from(AML_BUCKET).upload(path,file,{contentType:file.type,upsert:false});
if(up.error){report(up.error);return;}
const {error}=await db.from('aml').insert({ocr,kommentar,file_path:path,file_name:file.name,file_type:file.type,created_by:currentUser?currentUser.namn:null});
if(error){report(error);await db.storage.from(AML_BUCKET).remove([path]);return;} // städa filen om raden faller
document.getElementById('aml-ocr').value='';document.getElementById('aml-kommentar').value='';
input.value='';amlFileChosen(input);
toast('✅ Underlag uppladdat');await fetchData();
}catch(e){report(e);}finally{btn.disabled=false;btn.textContent=orig;}
}
function renderAml(){
const q=(document.getElementById('search-aml').value||'').toLowerCase();
let r=[...aml].sort((a,b)=>(b.created_at||'').localeCompare(a.created_at||''));
if(q)r=r.filter(x=>(x.ocr||'').toLowerCase().includes(q)||(x.kommentar||'').toLowerCase().includes(q)||(x.file_name||'').toLowerCase().includes(q));
document.getElementById('count-aml').textContent=r.length+' st';
const tb=document.getElementById('aml-tbody');
if(!r.length){tb.innerHTML=`<tr><td colspan="5"><div class="empty"><div class="em-ic">🛡</div>Inga underlag just nu.</div></td></tr>`;return;}
tb.innerHTML=r.map(x=>`<tr>
<td class="num t-sub">${dShort(x.created_at)}</td><td class="num">${esc(x.ocr)}</td>
<td><span class="file-chip">${fileExtBadge(x.file_name,x.file_type)} <span class="t-k" title="${esc(x.file_name)}">${esc(x.file_name)}</span></span></td>
<td class="t-k" title="${esc(x.kommentar)}">${esc(x.kommentar)} ${byline(x.created_by)}</td>
<td><div class="row-actions">
<button class="btn btn-s btn-sm" onclick="openAml('${x.id}')">Öppna</button>
<button class="btn btn-s btn-sm" onclick="downloadAml('${x.id}')">Ladda ner</button>
<button class="btn btn-ok btn-sm" onclick="closeAml('${x.id}')">Stäng case</button>
</div></td></tr>`).join('');
}
async function amlSignedUrl(path,download){
const opts=download?{download:true}:{};
const {data,error}=await db.storage.from(AML_BUCKET).createSignedUrl(path,120,opts);
if(error){report(error);return null;}
return data&&data.signedUrl;
}
async function openAml(id){
if(need())return;const row=aml.find(x=>x.id==id);if(!row)return;
const url=await amlSignedUrl(row.file_path,false);if(url)window.open(url,'_blank');
}
async function downloadAml(id){
if(need())return;const row=aml.find(x=>x.id==id);if(!row)return;
const url=await amlSignedUrl(row.file_path,true);
if(url){const a=document.createElement('a');a.href=url;a.download=row.file_name||'underlag';document.body.appendChild(a);a.click();a.remove();}
}
async function closeAml(id){
if(need()||needEdit())return;const row=aml.find(x=>x.id==id);if(!row)return;
if(!await confirmDialog('Caset stängs och filen raderas helt – det går inte att ångra.','Stäng case','Stäng AML-case'))return;
const rm=await db.storage.from(AML_BUCKET).remove([row.file_path]);
if(rm.error){report(rm.error);return;}
const {error}=await db.from('aml').delete().eq('id',id);
if(error){report(error);return;}
toast('🗑 Case stängt – filen raderad');await fetchData();
}
/* Ombetalningar (samma upplägg som AML) */
function ombetFileChosen(input){
const f=input.files&&input.files[0];
const lbl=input.parentElement,span=document.getElementById('ombet-fname');
if(f){span.textContent=f.name;lbl.classList.add('has');}
else{span.textContent='Välj fil…';lbl.classList.remove('has');}
}
async function addOmbet(){
if(need())return;
const ocr=document.getElementById('ombet-ocr').value.trim();
const beskrivning=document.getElementById('ombet-besk').value.trim();
const input=document.getElementById('ombet-file');
const file=input.files&&input.files[0];
if(!ocr){toast('⚠️ OCR krävs');return;}
if(file&&!AML_OK_TYPES.includes(file.type)&&!/\.(png|jpe?g|pdf)$/i.test(file.name)){toast('⚠️ Endast PNG, JPG eller PDF');return;}
const btn=document.getElementById('ombet-upload-btn');btn.disabled=true;const orig=btn.textContent;btn.textContent=file?'Laddar upp…':'Sparar…';
try{
let path=null,fname=null,ftype=null;
if(file){
const safe=file.name.replace(/[^\w.\-]+/g,'_');
path=`${Date.now()}_${Math.random().toString(36).slice(2,8)}_${safe}`;
const up=await db.storage.from(OMBET_BUCKET).upload(path,file,{contentType:file.type,upsert:false});
if(up.error){report(up.error);return;}
fname=file.name;ftype=file.type;
}
const {error}=await db.from('ombetalningar').insert({ocr,land:document.getElementById('ombet-land').value,beskrivning,kommentar:'',file_path:path,file_name:fname,file_type:ftype,created_by:currentUser?currentUser.namn:null});
if(error){report(error);if(path)await db.storage.from(OMBET_BUCKET).remove([path]);return;}
document.getElementById('ombet-ocr').value='';document.getElementById('ombet-besk').value='';
input.value='';ombetFileChosen(input);
toast('✅ Underlag sparat');await fetchData();
}catch(e){report(e);}finally{btn.disabled=false;btn.textContent=orig;}
}
function renderOmbet(){
const tb=document.getElementById('ombet-tbody');if(!tb)return;
// stör inte om någon redigerar en kommentar-cell
if(tb.contains(document.activeElement)&&document.activeElement.tagName==='INPUT')return;
const q=(document.getElementById('search-ombet').value||'').toLowerCase();
let r=[...ombet].sort((a,b)=>(b.created_at||'').localeCompare(a.created_at||''));
if(landFil.ombet)r=r.filter(x=>(x.land||'Sverige')===landFil.ombet);
if(q)r=r.filter(x=>(x.ocr||'').toLowerCase().includes(q)||(x.beskrivning||'').toLowerCase().includes(q)||(x.kommentar||'').toLowerCase().includes(q)||(x.file_name||'').toLowerCase().includes(q));
document.getElementById('count-ombet').textContent=r.length+' st';
if(!r.length){tb.innerHTML=`<tr><td colspan="8"><div class="empty"><div class="em-ic">↺</div>Inga ombetalningar just nu.</div></td></tr>`;return;}
tb.innerHTML=r.map(x=>`<tr>
<td class="num t-sub">${dShort(x.created_at)}</td>
<td><span style="font-weight:700;color:${ageColor(x.created_at)}">${ageText(x.created_at)}</span></td>
<td title="${esc(x.land||'Sverige')}">${landFlag(x.land)}</td>
<td class="num">${esc(x.ocr)}</td>
<td>${x.file_name?`<span class="file-chip">${fileExtBadge(x.file_name,x.file_type)} <span class="t-k" title="${esc(x.file_name)}">${esc(x.file_name)}</span></span>`:'<span class="t-sub">– ingen fil</span>'}</td>
<td class="t-k" title="${esc(x.beskrivning)}">${esc(x.beskrivning)} ${byline(x.created_by)}</td>
<td><input class="cell-input" value="${esc(x.kommentar||'')}" placeholder="Nekad / annat…" onchange="saveOmbetKommentar('${x.id}',this.value)"></td>
<td><div class="row-actions">
${x.file_name?`<button class="btn btn-s btn-sm" onclick="openOmbet('${x.id}')">Öppna</button>
<button class="btn btn-s btn-sm" onclick="downloadOmbet('${x.id}')">Ladda ner</button>`:''}
<button class="btn btn-ok btn-sm" onclick="closeOmbet('${x.id}')">Stäng case</button>
</div></td></tr>`).join('');
}
async function saveOmbetKommentar(id,val){
if(need()||needEdit())return;
const v=(val||'').trim();
const {error}=await db.from('ombetalningar').update({kommentar:v}).eq('id',id);
if(error){report(error);return;}
const row=ombet.find(x=>x.id==id);if(row)row.kommentar=v;
renderOmbetWatch();
toast('✅ Kommentar sparad');
}
async function ombetSignedUrl(path,download){
const opts=download?{download:true}:{};
const {data,error}=await db.storage.from(OMBET_BUCKET).createSignedUrl(path,120,opts);
if(error){report(error);return null;}
return data&&data.signedUrl;
}
async function openOmbet(id){
if(need())return;const row=ombet.find(x=>x.id==id);if(!row)return;
const url=await ombetSignedUrl(row.file_path,false);if(url)window.open(url,'_blank');
}
async function downloadOmbet(id){
if(need())return;const row=ombet.find(x=>x.id==id);if(!row)return;
const url=await ombetSignedUrl(row.file_path,true);
if(url){const a=document.createElement('a');a.href=url;a.download=row.file_name||'underlag';document.body.appendChild(a);a.click();a.remove();}
}
async function closeOmbet(id){
if(need()||needEdit())return;const row=ombet.find(x=>x.id==id);if(!row)return;
if(!await confirmDialog(row.file_path?'Caset stängs och filen raderas helt – det går inte att ångra.':'Caset stängs – det går inte att ångra.','Stäng case','Stäng ombetalnings-case'))return;
if(row.file_path){const rm=await db.storage.from(OMBET_BUCKET).remove([row.file_path]);if(rm.error){report(rm.error);return;}}
const {error}=await db.from('ombetalningar').delete().eq('id',id);
if(error){report(error);return;}
toast(row.file_path?'🗑 Case stängt – filen raderad':'🗑 Case stängt');await fetchData();
}
/* === Inkassorapporter === */
function inkFileChosen(input){
const f=input.files&&input.files[0];const lbl=input.parentElement,span=document.getElementById('ink-fname');
if(f){span.textContent=f.name;lbl.classList.add('has');}else{span.textContent='Välj fil…';lbl.classList.remove('has');}
}
async function savePainConfig(){
if(need()||needEdit())return;
const cfg={id:1,
avsandare:document.getElementById('pain-namn').value.trim(),
iban:document.getElementById('pain-iban').value.trim().replace(/\s+/g,''),
bic:document.getElementById('pain-bic').value.trim(),
mottagar_namn:document.getElementById('pain-mnamn').value.trim(),
mottagar_konto:document.getElementById('pain-mkonto').value.trim()};
const {error}=await db.from('pain_config').upsert(cfg,{onConflict:'id'});
if(error){report(error);return;}
painCfg=cfg;toast('✅ Betalningsuppgifter sparade');
}
function fillPainConfig(){
document.getElementById('pain-namn').value=painCfg.avsandare||'';
document.getElementById('pain-iban').value=painCfg.iban||'';
document.getElementById('pain-bic').value=painCfg.bic||'';
document.getElementById('pain-mnamn').value=painCfg.mottagar_namn||'';
document.getElementById('pain-mkonto').value=painCfg.mottagar_konto||'';
}
async function addInkasso(){
if(need()||needBackoffice())return;
const namn=document.getElementById('ink-namn').value.trim();
const input=document.getElementById('ink-file');const file=input.files&&input.files[0];
if(!file){toast('⚠️ Välj en Excel-fil');return;}
if(!/\.(xlsx|xls)$/i.test(file.name)){toast('⚠️ Endast Excel (.xlsx, .xls)');return;}
const btn=document.getElementById('ink-upload-btn');btn.disabled=true;const orig=btn.textContent;btn.textContent='Laddar upp…';
try{
const safe=file.name.replace(/[^\w.\-]+/g,'_');
const path=`${Date.now()}_${Math.random().toString(36).slice(2,8)}_${safe}`;
const up=await db.storage.from(INKASSO_BUCKET).upload(path,file,{contentType:file.type,upsert:false});
if(up.error){report(up.error);return;}
const {error}=await db.from('inkassorapporter').insert({namn:namn||file.name,file_path:path,file_name:file.name,status:'Ny',created_by:currentUser?currentUser.namn:null});
if(error){report(error);await db.storage.from(INKASSO_BUCKET).remove([path]);return;}
document.getElementById('ink-namn').value='';input.value='';inkFileChosen(input);
toast('✅ Rapport uppladdad');await fetchData();
}catch(e){report(e);}finally{btn.disabled=false;btn.textContent=orig;}
}
function renderInkasso(){
fillPainConfig();
const box=document.getElementById('inkasso-list');if(!box)return;
const c=document.getElementById('count-inkasso');if(c)c.textContent=inkasso.length+' rapporter';
const rows=[...inkasso].sort((a,b)=>(b.created_at||'').localeCompare(a.created_at||''));
if(!rows.length){box.innerHTML=`<div class="empty"><div class="em-ic">▦</div>Inga rapporter uppladdade ännu.</div>`;return;}
box.innerHTML=rows.map(r=>`<div class="ink-card ${openReport===r.id?'open':''}" id="ink-card-${r.id}">
<div class="ink-head" onclick="toggleReport('${r.id}')">
<div class="ink-ic">▦</div>
<div class="ink-meta"><b>${esc(r.namn)}</b><span>${esc(r.file_name)} · ${dShort(r.created_at)}${r.created_by?' · av '+esc(r.created_by):''}${r.status==='Konverterad'?' · ✓ Konverterad':''}</span></div>
<div class="ink-actions">
<button class="btn btn-d btn-sm icon-btn" onclick="event.stopPropagation();deleteInkasso('${r.id}')" title="Ta bort">✕</button>
<span class="ink-chev">▸</span>
</div>
</div>
<div class="ink-body" id="ink-body-${r.id}">${openReport===r.id?'<div class="loading"><span class="spinner"></span>Läser Excel…</div>':''}</div>
</div>`).join('');
}
async function toggleReport(id){
if(openReport===id){openReport=null;renderInkasso();return;}
openReport=id;renderInkasso();
const body=document.getElementById('ink-body-'+id);if(!body)return;
try{
const rows=await readReportRows(id);
if(!rows||!rows.length){body.innerHTML='<div class="empty" style="padding:20px">Kunde inte läsa några rader ur filen.</div>';return;}
const cols=Object.keys(rows[0]);
const head=cols.map(c=>`<th>${esc(c)}${isPnrCol(c)?' 🔒':''}</th>`).join('');
const preview=rows.slice(0,200).map(r=>`<tr>${cols.map(c=>`<td>${isPnrCol(c)?'<span class="t-sub">•••••••• (dolt)</span>':esc(r[c]==null?'':String(r[c]))}</td>`).join('')}</tr>`).join('');
body.innerHTML=`
<div class="ink-warn">⚠️ <b>PAIN-filer initierar riktiga betalningar.</b> Kontrollera att kolumnerna tolkats rätt och testa filen mot banken innan skarp användning.</div>
<div style="display:flex;gap:8px;margin-bottom:12px;align-items:center;flex-wrap:wrap">
${isCS()?'':`<button class="btn btn-p btn-sm" onclick="convertToPain('${id}')">⇩ Konvertera till PAIN</button>`}
<span class="t-sub" style="font-size:12px">${rows.length} rader</span>
</div>
<div class="table-scroll"><table><thead><tr>${head}</tr></thead><tbody>${preview}</tbody></table></div>
${rows.length>200?`<p class="t-sub" style="font-size:11.5px;margin-top:8px">Visar 200 av ${rows.length} rader.</p>`:''}`;
}catch(e){body.innerHTML='<div class="empty" style="padding:20px">Fel vid läsning: '+esc(e.message||String(e))+'</div>';}
}
async function readReportRows(id){
const r=inkasso.find(x=>x.id==id);if(!r)return [];
const {data,error}=await db.storage.from(INKASSO_BUCKET).createSignedUrl(r.file_path,120);
if(error){report(error);return [];}
const buf=await (await fetch(data.signedUrl)).arrayBuffer();
const wb=XLSX.read(buf,{type:'array'});
const ws=wb.Sheets[wb.SheetNames[0]];
const aoa=XLSX.utils.sheet_to_json(ws,{header:1,defval:''});
// hitta rubrikraden: den rad bland de översta som har flest ifyllda celler och är mest text (inte siffror)
let hi=0,best=-1;
for(let i=0;i<Math.min(aoa.length,25);i++){
const cells=aoa[i].map(c=>String(c==null?'':c).trim());
const ne=cells.filter(c=>c!=='').length;if(ne<3)continue;
const num=cells.filter(c=>c!==''&&!isNaN(c.replace(/\s/g,'').replace(',','.'))).length;
const score=ne*((ne-num)/ne);
if(score>best){best=score;hi=i;}
}
const headers=aoa[hi].map((c,idx)=>{const t=String(c==null?'':c).trim();return t||('Kol'+(idx+1));});
const keep=headers.map((h,idx)=>idx).filter(idx=>!isPnrCol(headers[idx]));
const out=[];
for(let i=hi+1;i<aoa.length;i++){
const row=aoa[i];if(!row.some(c=>String(c==null?'':c).trim()!==''))continue;
const first=String(row[0]==null?'':row[0]).trim().toLowerCase();
if(first.startsWith('totalt'))continue;
const o={};keep.forEach(idx=>{o[headers[idx]]=row[idx]==null?'':row[idx];});
out.push(o);
}
return out;
}
function isPnrCol(h){const k=String(h||'').toLowerCase();return k.includes('person')||k.includes('pnr')||k.includes('personnr')||k.includes('personnummer')||k.includes('org/person');}
function pickCol(keys,names){
const lower=keys.map(k=>k.toLowerCase().trim());
for(const n of names){const i=lower.findIndex(k=>k===n.toLowerCase()||k.includes(n.toLowerCase()));if(i>-1)return keys[i];}
return null;
}
async function convertToPain(id){
if(need()||needEdit())return;
if(!painCfg.iban||!painCfg.avsandare){toast('⚠️ Fyll i avsändare (namn + IBAN) först');return;}
if(!painCfg.mottagar_konto){toast('⚠️ Ange mottagarkonto (bankgiro)');return;}
let rows;try{rows=await readReportRows(id);}catch(e){report(e);return;}
if(!rows.length){toast('⚠️ Inga rader i filen');return;}
const keys=Object.keys(rows[0]);
const cRef=pickCol(keys,['vår ref','var ref','vår referens','our ref','vår']);
const cAmt=pickCol(keys,['summa','att betala','belopp','amount']);
if(!cRef){toast('⚠️ Hittar inte kolumnen "Vår ref."');return;}
if(!cAmt){toast('⚠️ Hittar inte beloppskolumnen "Summa"');return;}
const tx=rows.map(r=>({
ocr:String(r[cRef]==null?'':r[cRef]).replace(/\.0+$/,'').trim(),
amt:parseFloat(String(r[cAmt]).replace(/\s/g,'').replace(',','.'))||0
})).filter(t=>t.ocr&&t.amt>0);
if(!tx.length){toast('⚠️ Inga giltiga rader (Vår ref + Summa > 0)');return;}
const total=tx.reduce((s,t)=>s+t.amt,0).toFixed(2);
if(!await confirmDialog(`Skapa PAIN-fil: ${tx.length} betalningar à totalt ${total} SEK till bankgiro ${painCfg.mottagar_konto}.\n\nKontrollera filen mot Nordea innan den används skarpt.`,'Skapa PAIN','Konvertera till PAIN'))return;
const xml=genPain001(tx,painCfg);
const r=inkasso.find(x=>x.id==id);
const blob=new Blob([xml],{type:'application/xml'});
const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download=(r?r.namn:'inkasso').replace(/[^\w.\-]+/g,'_')+'_pain001.xml';
document.body.appendChild(a);a.click();a.remove();
await db.from('inkassorapporter').update({status:'Konverterad'}).eq('id',id);
toast('✅ PAIN-fil skapad – kontrollera innan användning',6000);await fetchData();
}
function xmlEsc(s){return String(s==null?'':s).replace(/[\r\n\t]+/g,' ').trim().replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');}
function genPain001(tx,cfg){
const now=new Date();const ts=now.toISOString().slice(0,19);
const msgId='MSG'+now.getTime();
const total=tx.reduce((s,t)=>s+t.amt,0).toFixed(2);
const nb=tx.length;
const exec=now.toISOString().slice(0,10);
const bg=String(cfg.mottagar_konto||'').replace(/\D/g,'');
const cdtrNm=xmlEsc((cfg.mottagar_namn||'Mottagare').slice(0,70));
const txXml=tx.map((t,i)=>`
<CdtTrfTxInf>
<PmtId><EndToEndId>${xmlEsc((t.ocr||('E2E'+(i+1))).slice(0,35))}</EndToEndId></PmtId>
<Amt><InstdAmt Ccy="SEK">${t.amt.toFixed(2)}</InstdAmt></Amt>
<Cdtr><Nm>${cdtrNm}</Nm></Cdtr>
<CdtrAcct><Id><Othr><Id>${xmlEsc(bg)}</Id><SchmeNm><Prtry>BGNR</Prtry></SchmeNm></Othr></Id></CdtrAcct>
${t.ocr?`<RmtInf><Strd><CdtrRefInf><Tp><CdOrPrtry><Cd>SCOR</Cd></CdOrPrtry></Tp><Ref>${xmlEsc(t.ocr.slice(0,25))}</Ref></CdtrRefInf></Strd></RmtInf>`:''}
</CdtTrfTxInf>`).join('');
return `<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>${msgId}</MsgId>
<CreDtTm>${ts}</CreDtTm>
<NbOfTxs>${nb}</NbOfTxs>
<CtrlSum>${total}</CtrlSum>
<InitgPty><Nm>${xmlEsc(cfg.avsandare)}</Nm></InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>${msgId}</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<NbOfTxs>${nb}</NbOfTxs>
<CtrlSum>${total}</CtrlSum>
<ReqdExctnDt>${exec}</ReqdExctnDt>
<Dbtr><Nm>${xmlEsc(cfg.avsandare)}</Nm></Dbtr>
<DbtrAcct><Id><IBAN>${xmlEsc((cfg.iban||'').replace(/\s/g,''))}</IBAN></Id></DbtrAcct>
<DbtrAgt><FinInstnId>${cfg.bic?`<BIC>${xmlEsc(cfg.bic)}</BIC>`:'<Othr><Id>NOTPROVIDED</Id></Othr>'}</FinInstnId></DbtrAgt>${txXml}
</PmtInf>
</CstmrCdtTrfInitn>
</Document>`;
}
async function deleteInkasso(id){
if(need()||needEdit())return;
const r=inkasso.find(x=>x.id==id);if(!r)return;
if(!await confirmDialog('Rapporten och Excel-filen raderas helt.','Ta bort','Ta bort rapport'))return;
await db.storage.from(INKASSO_BUCKET).remove([r.file_path]);
const {error}=await db.from('inkassorapporter').delete().eq('id',id);
if(error){report(error);return;}
if(openReport===id)openReport=null;
toast('🗑 Borttagen');await fetchData();
}
/* render dispatch */
function renderAll(){
updateCounts();
if(currentTab==='dashboard')renderDash();
if(currentTab==='tickets')renderTickets();
if(currentTab==='failed')renderFailed();
if(currentTab==='dubbel')renderDubbel();
if(currentTab==='aml')renderAml();
if(currentTab==='avvisade')renderAvvisade();
if(currentTab==='behorighet')renderUsersAdmin();
if(currentTab==='schema')renderSchema();
if(currentTab==='inkasso')renderInkasso();
if(currentTab==='ombet')renderOmbet();
}
/* init + realtime */
async function fetchData(){
if(!connected)return;
const [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o]=await Promise.all([
db.from('tickets').select('*').order('created_at',{ascending:false}),
db.from('failed_payments').select('*').order('booking_date',{ascending:false}),
db.from('dubbelbetalningar').select('*').order('created_at',{ascending:false}),
db.from('aml').select('*').order('created_at',{ascending:false}),
db.from('ombetalningar').select('*').order('created_at',{ascending:false}),
db.from('checklist').select('*').order('sort',{ascending:true}),
db.from('personal').select('*').order('sort',{ascending:true}),
db.from('sms_lista').select('*').eq('datum',today),
db.from('avvisade_betalningar').select('*').order('booking_date',{ascending:false}),
db.from('inkassorapporter').select('*').order('created_at',{ascending:false}),
db.from('pain_config').select('*').eq('id',1).maybeSingle(),
db.from('ticket_kommentarer').select('*').order('created_at',{ascending:true}),
db.from('ticket_seen').select('*'),
db.from('schema_personal').select('*').order('sort',{ascending:true}),
db.from('schema_poster').select('*'),
]);
const err=a.error||b.error||c.error||d.error||e.error||f.error||g.error||h.error||(typeof i!=='undefined'&&i.error);
if(err){report(err);}
tickets=a.data||tickets;failed=b.data||failed;dubbel=c.data||dubbel;aml=d.data||aml;ombet=e.data||ombet;checklist=f.data||checklist;personal=g.data||personal;
smsList=h.data||smsList;
avvisade=(typeof i!=='undefined'&&i.data)||avvisade;
if(typeof j!=='undefined')inkasso=j.data||inkasso;
if(typeof k!=='undefined'&&k.data)painCfg=k.data;
if(typeof l!=='undefined'&&l.data)ticketKomms=l.data;
if(typeof m!=='undefined'&&m.data)ticketSeen=m.data;
if(typeof n!=='undefined'&&n.data)schemaPersonal=n.data;
if(typeof o!=='undefined'&&o.data)schemaPoster=o.data;
renderAll();
}
/* === Inloggning / användare (lättviktig spårning, ej hård säkerhet) === */
const SUPERADMINS=['elias','alice','rani','holting','jonathan'];
function isSuper(n){return SUPERADMINS.includes((n||'').trim().toLowerCase());}
function lsGet(k){try{return localStorage.getItem(k);}catch(e){return null;}}
function lsSet(k,v){try{localStorage.setItem(k,v);}catch(e){}}
function lsDel(k){try{localStorage.removeItem(k);}catch(e){}}
async function hashPw(s){
try{if(window.crypto&&crypto.subtle){const buf=await crypto.subtle.digest('SHA-256',new TextEncoder().encode('plus1:'+s));return [...new Uint8Array(buf)].map(b=>b.toString(16).padStart(2,'0')).join('');}}catch(e){}
let h=5381;const str='plus1:'+s;for(let i=0;i<str.length;i++){h=((h<<5)+h+str.charCodeAt(i))>>>0;}return 'f'+h.toString(16);
}
function applyUser(u){
currentUser=u;
document.getElementById('user-name').textContent=u.namn;
document.getElementById('user-initial').textContent=(u.namn||'?').trim().charAt(0).toUpperCase();
document.getElementById('user-chip').style.display='inline-flex';
document.body.classList.toggle('role-cs', u.roll==='kundtjanst');
}
function hideLoginInstant(){const o=document.getElementById('login-ov');if(o)o.style.display='none';stopMatrix();}
/* ---- mekaniskt blue-switch klick (click-clack) på login ---- */
let _kbCtx=null,_kbNoise=null;
function _kbNoiseBuf(ctx){
if(_kbNoise)return _kbNoise;
const len=Math.floor(ctx.sampleRate*0.12);
const b=ctx.createBuffer(1,len,ctx.sampleRate);const d=b.getChannelData(0);
for(let i=0;i<len;i++)d[i]=Math.random()*2-1;
_kbNoise=b;return b;
}
function _kbBurst(ctx,now,type,freq,q,gain,attack,decay,delay){
const t=now+(delay||0),a=attack||0.0005;
const src=ctx.createBufferSource();src.buffer=_kbNoiseBuf(ctx);src.loop=true;
const f=ctx.createBiquadFilter();f.type=type;f.frequency.value=freq;if(q)f.Q.value=q;
const g=ctx.createGain();
g.gain.setValueAtTime(0.0001,t);
g.gain.exponentialRampToValueAtTime(gain,t+a);
g.gain.exponentialRampToValueAtTime(0.0001,t+a+decay);
src.connect(f);f.connect(g);g.connect(ctx.destination);
src.start(t);src.stop(t+a+decay+0.01);
}
function kbClick(){
try{
const AC=window.AudioContext||window.webkitAudioContext;if(!AC)return;
if(!_kbCtx)_kbCtx=new AC();
const ctx=_kbCtx;if(ctx.state==='suspended')ctx.resume();
const now=ctx.currentTime,r=()=>(Math.random()*2-1);
// 1) skarpt ljust klick (click bar)
_kbBurst(ctx,now,'bandpass',3400+r()*450,1.1,0.5,0.0004,0.006,0);
// 2) plastig hög ping
const o=ctx.createOscillator();o.type='square';o.frequency.setValueAtTime(2600+r()*300,now);
o.frequency.exponentialRampToValueAtTime(1700,now+0.006);
const ohp=ctx.createBiquadFilter();ohp.type='highpass';ohp.frequency.value=1500;
const og=ctx.createGain();og.gain.setValueAtTime(0.0001,now);
og.gain.exponentialRampToValueAtTime(0.11,now+0.0006);
og.gain.exponentialRampToValueAtTime(0.0001,now+0.007);
o.connect(ohp);ohp.connect(og);og.connect(ctx.destination);o.start(now);o.stop(now+0.013);
// 3) bottenklack (lite senare, lägre)
const d2=0.009+Math.random()*0.003;
_kbBurst(ctx,now,'bandpass',540+r()*110,0.8,0.3,0.0008,0.02,d2);
const lo=ctx.createOscillator();lo.type='triangle';lo.frequency.setValueAtTime(150+r()*22,now+d2);
const lg=ctx.createGain();lg.gain.setValueAtTime(0.0001,now+d2);
lg.gain.exponentialRampToValueAtTime(0.15,now+d2+0.002);
lg.gain.exponentialRampToValueAtTime(0.0001,now+d2+0.03);
lo.connect(lg);lg.connect(ctx.destination);lo.start(now+d2);lo.stop(now+d2+0.04);
}catch(e){}
}
function welcomeAndEnter(name){
const ov=document.getElementById('login-ov');
if(!ov)return; // CSD: login removed — nothing to animate
const card=ov.querySelector('.login-card');
const w=document.getElementById('login-welcome');
if(card)card.style.display='none';
document.getElementById('lw-name').textContent=name;
w.classList.add('show');
setTimeout(()=>{
ov.classList.add('fadeout');
setTimeout(()=>{
ov.style.display='none';ov.classList.remove('fadeout');
w.classList.remove('show');if(card)card.style.display='flex';
stopMatrix();
},680);
},1500);
}
function showLogin(){
// CSD: in-app login removed — Okta handles auth. No-op.
const dl=document.getElementById('login-roster');
if(!dl)return;
const names=[...new Set([...PERSONAL_SEED,...personal.map(p=>p.namn)].filter(Boolean))].sort();
dl.innerHTML=names.map(n=>`<option value="${esc(n)}">`).join('');
document.getElementById('login-ov').style.display='flex';
startMatrix();
['login-name','login-pw'].forEach(id=>{const e=document.getElementById(id);if(e&&!e._kb){e._kb=1;e.addEventListener('keydown',kbClick);}});
setTimeout(()=>{const e=document.getElementById('login-name');if(e)e.focus();},60);
}
async function doLogin(){
const errEl=document.getElementById('login-err');errEl.textContent='';
const namn=(document.getElementById('login-name').value||'').trim();
const pw=document.getElementById('login-pw').value||'';
if(!namn){errEl.textContent='Skriv ditt namn.';return;}
if(pw.length<3){errEl.textContent='Lösenordet måste vara minst 3 tecken.';return;}
if(!connected){errEl.textContent='Ingen anslutning till databasen.';return;}
const btn=document.getElementById('login-btn');btn.disabled=true;const orig=btn.textContent;btn.textContent='Loggar in…';
try{
const hash=await hashPw(pw);
let {data,error}=await db.from('app_users').select('*').ilike('namn',namn).maybeSingle();
if(error){errEl.textContent='Fel: '+(error.message||error.code||'okänt')+' – är tabellen app_users skapad?';return;}
if(!data){
const {count}=await db.from('app_users').select('id',{count:'exact',head:true});
let roll=(count&&count>0)?'kundtjanst':'full';
if(isSuper(namn))roll='superadmin';
const ins=await db.from('app_users').insert({namn,pw_hash:hash,roll}).select().maybeSingle();
if(ins.error){errEl.textContent='Kunde inte skapa konto: '+(ins.error.message||ins.error.code);return;}
data=ins.data;toast('✅ Konto skapat – välkommen '+namn+'!');
}else{
if(data.pw_hash!==hash){errEl.textContent='Fel lösenord.';return;}
if(isSuper(namn)&&data.roll!=='superadmin'){await db.from('app_users').update({roll:'superadmin'}).eq('id',data.id);data.roll='superadmin';}
toast('✅ Välkommen tillbaka, '+namn+'!');
}
const u={id:data.id,namn:data.namn,roll:data.roll};
lsSet('bo_user',JSON.stringify(u));
document.getElementById('login-pw').value='';
applyUser(u);
welcomeAndEnter(u.namn);
if(connected)fetchUsers();
}catch(e){errEl.textContent='Något gick fel vid inloggning.';console.debug(e);}
finally{btn.disabled=false;btn.textContent=orig;}
}
function logout(){lsDel('bo_user');currentUser=null;location.reload();}
function byline(name){return name?`<span class="t-sub" style="font-size:11px">· av ${esc(name)}</span>`:'';}
/* Matrix-regn med "Plus1" på inloggningssidan */
let _matrixTimer=null;
function startMatrix(){
const c=document.getElementById('matrix');if(!c)return;
const ctx=c.getContext('2d');const chars='Plus1'.split('');const fs=18;let cols,drops;
function resize(){c.width=c.offsetWidth||window.innerWidth;c.height=c.offsetHeight||window.innerHeight;cols=Math.max(1,Math.floor(c.width/fs));drops=new Array(cols).fill(0).map(()=>Math.floor(Math.random()*-60));}
resize();
if(!startMatrix._bound){window.addEventListener('resize',()=>{if(_matrixTimer)resize();});startMatrix._bound=true;}
function draw(){
ctx.fillStyle='rgba(20,60,43,0.10)';ctx.fillRect(0,0,c.width,c.height);
ctx.font='bold '+fs+'px ui-monospace, "Courier New", monospace';
for(let i=0;i<cols;i++){
const ch=chars[((drops[i]%chars.length)+chars.length)%chars.length];
ctx.fillStyle=Math.random()>0.975?'#eaf7e3':'#8fd96b';
ctx.fillText(ch,i*fs,drops[i]*fs);
if(drops[i]*fs>c.height&&Math.random()>0.975)drops[i]=0;
drops[i]++;
}
}
if(_matrixTimer)clearInterval(_matrixTimer);
_matrixTimer=setInterval(draw,60);
}
function stopMatrix(){if(_matrixTimer){clearInterval(_matrixTimer);_matrixTimer=null;}}
let appUsers=[];
let ticketKomms=[], ticketSeen=[];
let schemaPersonal=[], schemaPoster=[];
let schemaMonth=(()=>{const d=new Date();return d.getFullYear()+'-'+String(d.getMonth()+1).padStart(2,'0');})(); // 'YYYY-MM' (lokal tid)
async function fetchUsers(){
if(!connected)return;
const {data,error}=await db.from('app_users').select('id,namn,roll').order('namn',{ascending:true});
if(!error&&data){
appUsers=data;
// CSD: roles are owned by Okta (from the token), not app_users. Just keep
// the role-cs body class in sync with the current Okta role.
if(currentUser){document.body.classList.toggle('role-cs',currentUser.roll==='kundtjanst');}
}
renderUsersAdmin();
}
async function setUserRole(id,roll){
if(need()||needEdit())return;
const target=appUsers.find(u=>u.id===id);
if(target&&(target.roll==='superadmin'||isSuper(target.namn))){toast('🔒 Super Admin kan inte ändras här – bara direkt i databasen.',5000);return;}
const {error}=await db.from('app_users').update({roll}).eq('id',id);
if(error){report(error);return;}
toast('✅ Behörighet uppdaterad');
await fetchUsers();
if(currentUser&¤tUser.id===id){currentUser.roll=roll;document.body.classList.toggle('role-cs',roll==='kundtjanst');lsSet('bo_user',JSON.stringify(currentUser));}
}
function renderUsersAdmin(){
const box=document.getElementById('users-admin');if(!box)return;
if(!appUsers.length){box.innerHTML='<div class="sms-empty">Inga användare ännu – be teamet logga in.</div>';return;}
box.innerHTML=appUsers.map(u=>{
const me=currentUser&¤tUser.id===u.id?' <span class="t-sub">(du)</span>':'';
const sup=u.roll==='superadmin'||isSuper(u.namn);
let ctrl;
if(sup){
ctrl='<span class="ua-super">🔒 Super Admin</span>';
}else{
const cs=u.roll==='kundtjanst';
ctrl=`<div class="seg ua-seg">
<button class="${!cs?'active':''}" onclick="setUserRole('${u.id}','full')">Full</button>
<button class="${cs?'active':''}" onclick="setUserRole('${u.id}','kundtjanst')">Kundtjänst</button>
</div>`;
}
return `<div class="ua-row">
<span class="user-dot">${esc((u.namn||'?').trim().charAt(0).toUpperCase())}</span>
<span class="ua-name">${esc(u.namn)}${me}</span>
${ctrl}
</div>`;
}).join('');
}
/* === Schema (arbetsschema) === */
const SCHEMA_SEED=['Miranda Danielsson','Lea Dawid','Alice Ryer','Linda Cedermark','Tea Haajamo','Mathilda Vågeteg','Albin Sjunnesson','Veronica Abrahamsen','Rani Solmus','Erik Andersson','Ines Viinikkala','Elias Norevik','Emelie Ayari','Viktor Meltzer','Rickard Ekman','Emelie Billström','Jonathan Fredriksson'];
async function ensureSchemaPersonalSeed(){
if(!connected||schemaPersonal.length)return;
const {error}=await db.from('schema_personal').insert(SCHEMA_SEED.map((n,i)=>({namn:n,sort:i})));
if(error){report(error);return;}
}
const SCHEMA_WD=['Sön','Mån','Tis','Ons','Tor','Fre','Lör'];
const SCHEMA_MONTHS=['Januari','Februari','Mars','April','Maj','Juni','Juli','Augusti','September','Oktober','November','December'];
function schemaDays(ym){const [y,m]=ym.split('-').map(Number);const last=new Date(y,m,0).getDate();const out=[];for(let d=1;d<=last;d++){const dt=new Date(y,m-1,d);const iso=`${y}-${String(m).padStart(2,'0')}-${String(d).padStart(2,'0')}`;const wd=dt.getDay();out.push({iso,day:d,wd:SCHEMA_WD[wd],weekend:wd===0||wd===6});}return out;}
function schemaMonthLabel(ym){const [y,m]=ym.split('-').map(Number);return SCHEMA_MONTHS[m-1]+' '+y;}
function ymOf(d){return d.getFullYear()+'-'+String(d.getMonth()+1).padStart(2,'0');}
function isoOf(d){return d.getFullYear()+'-'+String(d.getMonth()+1).padStart(2,'0')+'-'+String(d.getDate()).padStart(2,'0');}
function schemaShift(delta){const [y,m]=schemaMonth.split('-').map(Number);schemaMonth=ymOf(new Date(y,m-1+delta,1));renderSchema();}
function schemaToday(){schemaMonth=ymOf(new Date());renderSchema();}
function renderSchema(){
const wrap=document.getElementById('schema-grid');if(!wrap)return;
const lbl=document.getElementById('schema-month-lbl');if(lbl)lbl.textContent=schemaMonthLabel(schemaMonth);
if(!schemaPersonal.length){wrap.innerHTML='<div class="sms-empty" style="padding:18px">Ingen personal ännu – lägg till någon ovan.</div>';return;}
const days=schemaDays(schemaMonth);
const todayISO=isoOf(new Date());
const map={};for(const p of schemaPoster)map[p.person+'|'+p.datum]=p;
let h='<table class="schema-tbl"><thead><tr><th class="sc-corner">Personal</th>';
for(const d of days)h+=`<th class="sc-dh${d.weekend?' weekend':''}${d.iso===todayISO?' today':''}"><span class="sc-dnum">${d.day}</span><span class="sc-dwd">${d.wd}</span></th>`;
h+='</tr></thead><tbody>';
for(const per of schemaPersonal){
h+=`<tr><th class="sc-name"><span class="sc-nm">${esc(per.namn)}</span><button class="sc-del" title="Ta bort person" onclick="removeSchemaPerson('${per.id}')">✕</button></th>`;
for(const d of days){
const e=map[per.namn+'|'+d.iso];
const cls=e?('cat-'+(e.kategori||'arbete')):(d.weekend?'wknd':'');
h+=`<td class="sc-cell ${cls}${d.iso===todayISO?' today':''}" onclick="openSchemaCell('${per.id}','${d.iso}')">${e?esc(e.text||''):''}</td>`;
}
h+='</tr>';
}
wrap.innerHTML=h+'</tbody></table>';
}
let scPerson=null, scDate=null, scCat='arbete';
function scSyncCatUI(){document.querySelectorAll('#sc-cats .sc-cat').forEach(b=>b.classList.toggle('on',b.dataset.k===scCat));}
function scPickCat(btn){scCat=btn.dataset.k;scSyncCatUI();}
function openSchemaCell(pid,iso){
if(need()||needEdit())return;
const per=schemaPersonal.find(p=>String(p.id)===String(pid));if(!per)return;
scPerson=per.namn;scDate=iso;
const e=schemaPoster.find(x=>x.person===per.namn&&x.datum===iso);
document.getElementById('sc-title').textContent=per.namn;
document.getElementById('sc-sub').textContent=new Date(iso+'T00:00:00').toLocaleDateString('sv-SE',{weekday:'long',day:'numeric',month:'long'});
document.getElementById('sc-text').value=e?(e.text||''):'';
scCat=e?(e.kategori||'arbete'):'arbete';scSyncCatUI();
document.getElementById('schema-edit-ov').classList.add('show');
setTimeout(()=>{const el=document.getElementById('sc-text');if(el){el.focus();el.select();}},60);
}
async function saveSchemaCell(){
if(need()||needEdit())return;if(!scPerson||!scDate)return;
const text=(document.getElementById('sc-text').value||'').trim();
if(!text)return clearSchemaCell();
const {error}=await db.from('schema_poster').upsert({person:scPerson,datum:scDate,text,kategori:scCat},{onConflict:'person,datum'});
if(error){report(error);return;}
closeSchemaCell();toast('✅ Sparat');await fetchData();
}
async function clearSchemaCell(){
if(need()||needEdit())return;if(!scPerson||!scDate)return;
const {error}=await db.from('schema_poster').delete().eq('person',scPerson).eq('datum',scDate);
if(error){report(error);return;}
closeSchemaCell();toast('🗑 Tömd');await fetchData();
}
function closeSchemaCell(){document.getElementById('schema-edit-ov').classList.remove('show');scPerson=null;scDate=null;}
async function addSchemaPerson(){
if(need()||needEdit())return;
const inp=document.getElementById('schema-newperson');const namn=(inp.value||'').trim();
if(!namn){toast('⚠️ Skriv ett namn');return;}
const sort=schemaPersonal.length?Math.max(...schemaPersonal.map(p=>p.sort||0))+1:0;
const {error}=await db.from('schema_personal').insert({namn,sort});
if(error){report(error);return;}
inp.value='';toast('✅ Person tillagd');await fetchData();
}
async function fillSchemaWorkdays(){
if(need()||needEdit())return;
if(!schemaPersonal.length){toast('Lägg till personal först');return;}
const days=schemaDays(schemaMonth).filter(d=>!d.weekend);
const have=new Set(schemaPoster.map(p=>p.person+'|'+p.datum));
const rows=[];
for(const per of schemaPersonal)for(const d of days){const k=per.namn+'|'+d.iso;if(!have.has(k))rows.push({person:per.namn,datum:d.iso,text:'8-17',kategori:'arbete'});}
if(!rows.length){toast('Vardagarna är redan ifyllda');return;}
if(!await confirmDialog(`Fyll ${rows.length} tomma vardagsceller i ${schemaMonthLabel(schemaMonth)} med "8-17"? Befintliga celler rörs inte.`,'Fyll'))return;
let failErr=null;
for(let i=0;i<rows.length;i+=200){const {error}=await db.from('schema_poster').insert(rows.slice(i,i+200));if(error){failErr=error;break;}}
if(failErr){report(failErr);return;}
toast('✅ Vardagar ifyllda');await fetchData();
}
async function removeSchemaPerson(pid){
if(need()||needEdit())return;
const per=schemaPersonal.find(p=>String(p.id)===String(pid));if(!per)return;
if(!await confirmDialog(`Ta bort ${per.namn} ur schemat? Personens schemarader tas också bort.`,'Ta bort'))return;
await db.from('schema_poster').delete().eq('person',per.namn);
const {error}=await db.from('schema_personal').delete().eq('id',pid);
if(error){report(error);return;}
toast('🗑 Borttagen');await fetchData();
}
async function load(){
// CSD: identity comes from Okta (via Cognito); the role is app-managed and
// picked on first login (locked after, superadmin can change it later).
// csdRoleBootstrap handles the picker and returns {id, namn, roll}.
let u=null;
try{ if(window.csdRoleBootstrap) u=await window.csdRoleBootstrap(); }
catch(e){ console.debug('Roll-bootstrap misslyckades',e); }
if(!u){const saved=lsGet('bo_user');if(saved){try{u=JSON.parse(saved);}catch(e){}}}
if(!u)u={id:'okta',namn:'Användare',roll:'kundtjanst'};
lsSet('bo_user',JSON.stringify(u));
applyUser(u);
hideLoginInstant();
if(!connected){
document.getElementById('setup').classList.add('show');
['tickets-tbody','failed-tbody','dubbel-tbody','aml-tbody','ombet-tbody','checklist-wrap','av-tbody'].forEach(id=>{const e=document.getElementById(id);if(e)e.innerHTML='';});
const il=document.getElementById('inkasso-list');if(il)il.innerHTML='';
renderDash();return;
}
await fetchData();
await seedChecklistIfEmpty();
await ensurePersonalSeed();
await ensureSchemaPersonalSeed();
await fetchUsers();
if(connected&&(!checklist.length||!personal.length)){await fetchData();}
try{
db.channel('rt')
.on('postgres_changes',{event:'*',schema:'public',table:'tickets'},p=>{sync(tickets,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'failed_payments'},p=>{failed=sync(failed,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'dubbelbetalningar'},p=>{dubbel=sync(dubbel,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'aml'},p=>{aml=sync(aml,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'ombetalningar'},p=>{ombet=sync(ombet,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'checklist'},p=>{checklist=sync(checklist,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'personal'},p=>{personal=sync(personal,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'sms_lista'},p=>{if((p.new&&p.new.datum===today)||p.eventType==='DELETE')smsList=sync(smsList,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'avvisade_betalningar'},p=>{avvisade=sync(avvisade,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'inkassorapporter'},p=>{inkasso=sync(inkasso,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'ticket_kommentarer'},p=>{ticketKomms=sync(ticketKomms,p);if(openCmtId)renderCmtThread(openCmtKind,openCmtId);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'ticket_seen'},p=>{
if(p.eventType==='DELETE'&&p.old){ticketSeen=ticketSeen.filter(s=>!(String(s.ticket_id)===String(p.old.ticket_id)&&s.namn===p.old.namn));}
else if(p.new){const i=ticketSeen.findIndex(s=>String(s.ticket_id)===String(p.new.ticket_id)&&s.namn===p.new.namn);if(i>-1)ticketSeen[i]=p.new;else ticketSeen.push(p.new);}
renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'schema_personal'},p=>{schemaPersonal=sync(schemaPersonal,p);renderAll();})
.on('postgres_changes',{event:'*',schema:'public',table:'schema_poster'},p=>{schemaPoster=sync(schemaPoster,p);renderAll();})
.subscribe((status)=>{ /* tyst – realtid är best effort, sidan uppdateras ändå efter varje åtgärd */ });
}catch(e){console.debug('Realtid ej tillgänglig – sidan uppdateras ändå efter varje åtgärd.',e);}
}
function sync(arr,p){
if(p.eventType==='INSERT'){if(!arr.some(r=>r.id===p.new.id))arr.unshift(p.new);}
else if(p.eventType==='DELETE'){const i=arr.findIndex(r=>r.id===p.old.id);if(i>-1)arr.splice(i,1);}
else if(p.eventType==='UPDATE'){const i=arr.findIndex(r=>r.id===p.new.id);if(i>-1)arr[i]=p.new;else arr.unshift(p.new);}
return arr;
}
load();
/* CSD: sign-out goes through Okta (Cognito), not the old local logout. */
window.logout=function(){ if(window.csdAuth) csdAuth.logout(); else location.reload(); };
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="sv">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Plus1 — Skuldsanering</title>
<style>
*{box-sizing:border-box;margin:0;padding:0}
:root{
--green:#1A5C3A;--green-light:#3CDB74;--cream:#EFF0DC;
--bg:#f0efe9;--surface:#fff;--border:#ddd9d0;
--text:#111;--muted:#6b7280;
--inledd:#92400e;--inledd-bg:#fffbeb;--inledd-bd:#fde68a;
--forslag:#1e40af;--forslag-bg:#eff6ff;--forslag-bd:#bfdbfe;
--beslutad:#1A5C3A;--beslutad-bg:#d1fae5;--beslutad-bd:#6ee7b7;
--avslutad:#6b7280;--avslutad-bg:#f9fafb;--avslutad-bd:#d1d5db;
--shadow:0 1px 3px rgba(0,0,0,.08);
--shadow-md:0 4px 12px rgba(0,0,0,.1);
}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);font-size:14px;display:flex;height:100vh;overflow:hidden}
/* SIDEBAR */
.sidebar{width:220px;background:var(--green);color:var(--cream);display:flex;flex-direction:column;flex-shrink:0;height:100vh;overflow-y:auto}
.sb-logo{padding:20px 18px 16px;border-bottom:1px solid rgba(255,255,255,.1)}
.sb-logo .sub{font-size:11px;color:rgba(255,255,255,.5);margin-top:3px}
.nav{padding:12px 8px;flex:1}
.nav-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.35);padding:8px 10px 4px}
.nav-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:7px;cursor:pointer;font-size:13px;font-weight:500;color:rgba(255,255,255,.8);margin-bottom:2px;transition:background .12s,color .12s;user-select:none}
.nav-item:hover{background:rgba(255,255,255,.1);color:#fff}
.nav-item.active{background:var(--green-light);color:var(--green);font-weight:700}
.nav-badge{background:rgba(255,255,255,.15);color:rgba(255,255,255,.9);font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px}
.nav-item.active .nav-badge{background:rgba(26,92,58,.2);color:var(--green)}
.sb-footer{padding:12px 18px;border-top:1px solid rgba(255,255,255,.1);font-size:11px;color:rgba(255,255,255,.35)}
/* MAIN */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;box-shadow:var(--shadow)}
.topbar-left .title{font-size:17px;font-weight:700}
.topbar-left .sub{font-size:12px;color:var(--muted);margin-top:1px}
.topbar-right{display:flex;gap:8px;align-items:center}
.btn-refresh{background:var(--surface);color:var(--green);border:1.5px solid var(--green);padding:7px 14px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer}
.btn-refresh:hover{background:var(--green);color:#fff}
.btn-add{background:var(--green-light);color:var(--green);border:none;padding:8px 16px;border-radius:6px;font-size:13px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:6px}
.btn-add:hover{background:#28b85e}
.content{flex:1;overflow-y:auto;padding:20px 24px}
/* VIEWS */
.view{display:none}
.view.active{display:block}
/* CARDS */
.cards{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 18px;flex:1;min-width:140px;box-shadow:var(--shadow)}
.card.clickable{cursor:pointer;transition:box-shadow .15s}
.card.clickable:hover{box-shadow:var(--shadow-md)}
.card-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.card-value{font-size:26px;font-weight:800;margin-top:4px;line-height:1}
.card-sub{font-size:11px;color:var(--muted);margin-top:4px}
.c-inledd .card-value{color:var(--inledd)}
.c-forslag .card-value{color:var(--forslag)}
.c-beslutad .card-value{color:var(--beslutad)}
.c-avslutad .card-value{color:var(--avslutad)}
.c-accent .card-value{color:var(--green)}
/* PANEL */
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 18px;box-shadow:var(--shadow)}
.panel-title{font-size:13px;font-weight:700;margin-bottom:14px}
/* TABLE */
.table-wrap{overflow-x:auto;border-radius:10px;border:1px solid var(--border);box-shadow:var(--shadow)}
.table-wrap table{width:100%;border-collapse:collapse;background:var(--surface)}
.table-wrap thead th{background:#f8f9fb;padding:9px 13px;text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;cursor:pointer;user-select:none}
.table-wrap thead th:hover{color:var(--text)}
.table-wrap tbody tr{border-bottom:1px solid var(--border)}
.table-wrap tbody tr:last-child{border-bottom:none}
.table-wrap tbody tr:hover{background:#f8f9fb}
.table-wrap tbody tr[style*="background:#f0fdf4"]:hover{background:#dcfce7}
.table-wrap tbody td{padding:9px 13px;font-size:13px;vertical-align:middle}
/* BADGES */
.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600;border:1px solid;white-space:nowrap}
.badge-dot{width:6px;height:6px;border-radius:50%;margin-right:5px}
.badge.Inledd{background:var(--inledd-bg);color:var(--inledd);border-color:var(--inledd-bd)}
.badge.Inledd .badge-dot{background:var(--inledd)}
.badge.Förslag{background:var(--forslag-bg);color:var(--forslag);border-color:var(--forslag-bd)}
.badge.Förslag .badge-dot{background:var(--forslag)}
.badge.Beslutad{background:var(--beslutad-bg);color:var(--beslutad);border-color:var(--beslutad-bd)}
.badge.Beslutad .badge-dot{background:var(--beslutad)}
.badge.Avslutad{background:var(--avslutad-bg);color:var(--avslutad);border-color:var(--avslutad-bd)}
.badge.Avslutad .badge-dot{background:var(--avslutad)}
/* OMNI TAGS */
.itag{display:inline-block;padding:2px 7px;border-radius:4px;font-size:11px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#f1f5f9;color:var(--muted);border:1px solid var(--border)}
.itag.c-poci{background:#fef3c7;color:#92400e;border-color:#fde68a}
.itag.c-coll{background:#fff7ed;color:#c2410c;border-color:#fed7aa}
.itag.c-for{background:#fdf4ff;color:#7e22ce;border-color:#e9d5ff}
.itag.c-act{background:#f0fdf4;color:#166534;border-color:#bbf7d0}
.itag.c-wo{background:#fef2f2;color:#991b1b;border-color:#fecaca}
.itag.c-closed{background:#f1f5f9;color:#475569;border-color:#cbd5e1}
.itag.c-ej{background:#fafafa;color:#9ca3af;border-color:#e5e7eb;font-style:italic}
/* MISC */
.mono{font-family:"SF Mono",Consolas,monospace;font-size:12px;color:var(--muted)}
.chip{display:inline-block;width:20px;height:20px;border-radius:4px;text-align:center;line-height:20px;font-size:11px;font-weight:700}
.chip-y{background:#dcfce7;color:#15803d}
.chip-n{background:#f1f5f9;color:var(--muted)}
.pct{font-weight:600}
.pct-e{color:var(--muted);font-style:italic}
.btn-e{background:none;border:none;cursor:pointer;color:var(--muted);padding:3px 6px;border-radius:4px}
.btn-e:hover{background:var(--bg);color:var(--green)}
.btn-d{background:none;border:none;cursor:pointer;color:#dc2626;padding:3px 6px;border-radius:4px}
.btn-d:hover{background:#fee2e2}
/* CONTROLS */
.controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.search-wrap{position:relative;flex:1;min-width:200px;max-width:340px}
.search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.search-input{width:100%;padding:8px 12px 8px 33px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--surface)}
.search-input:focus{outline:none;border-color:var(--green-light);box-shadow:0 0 0 2px #d1fae5}
.fsel{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--surface);cursor:pointer}
.fsel:focus{outline:none;border-color:var(--green-light)}
.rcount{font-size:12px;color:var(--muted)}
/* BAR CHART */
.bc-row{display:flex;align-items:center;gap:10px;font-size:12px;margin-bottom:6px}
.bc-label{width:130px;flex-shrink:0;text-align:right;font-weight:500}
.bc-track{flex:1;background:#f1f5f9;border-radius:4px;height:22px;overflow:hidden}
.bc-fill{height:100%;border-radius:4px;display:flex;align-items:center;padding-left:8px;font-size:11px;font-weight:700;color:#fff;transition:width .4s}
.bc-val{width:55px;flex-shrink:0;font-weight:600;font-size:11px}
/* FLAG */
.flag-item{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 16px;margin-bottom:8px;display:flex;align-items:center;gap:12px}
.flag-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:3px 8px;flex-shrink:0}
.flag-body{flex:1}
.flag-title{font-weight:600;font-size:13px}
.flag-sub{font-size:12px;color:var(--muted);margin-top:2px}
.flag-count{font-size:22px;font-weight:800;flex-shrink:0}
.flag-count.warn{color:#dc2626}
.flag-count.ok{color:#15803d}
/* MODAL */
.overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;align-items:center;justify-content:center;padding:16px}
.overlay.open{display:flex}
.modal{background:var(--surface);border-radius:12px;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-md)}
.modal-hdr{padding:18px 22px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.modal-hdr h2{font-size:15px;font-weight:700}
.modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--muted);border-radius:4px;padding:2px 6px}
.modal-close:hover{background:var(--bg)}
.modal-body{padding:18px 22px}
.fg{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fg-full{grid-column:1/-1}
.fl{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px}
.fi,.fs{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;color:var(--text);background:var(--surface)}
.fi:focus,.fs:focus{outline:none;border-color:var(--green-light);box-shadow:0 0 0 2px #d1fae5}
.modal-ftr{padding:14px 22px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}
.btn-sec{padding:8px 16px;border:1px solid var(--border);border-radius:6px;font-size:13px;cursor:pointer;background:var(--surface);font-weight:500}
.btn-sec:hover{background:var(--bg)}
.btn-pri{padding:8px 16px;border:none;border-radius:6px;font-size:13px;cursor:pointer;background:var(--green-light);color:var(--green);font-weight:700}
.btn-pri:hover{background:#28b85e}
/* AVSLUT CHECKLIST */
.av-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:12px;box-shadow:var(--shadow);overflow:hidden}
.av-card.done-all{border-color:#6ee7b7;background:#f0fdf4}
.av-card-hdr{display:flex;align-items:center;gap:12px;padding:14px 18px;cursor:pointer;user-select:none}
.av-card-hdr:hover{background:#f8f9fb}
.av-card.done-all .av-card-hdr:hover{background:#ecfdf5}
.av-id{font-family:"SF Mono",Consolas,monospace;font-size:13px;font-weight:700;color:var(--text)}
.av-date{font-size:12px;color:var(--muted);margin-left:auto}
.av-progress{display:flex;align-items:center;gap:8px;flex-shrink:0}
.av-prog-bar{width:80px;height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}
.av-prog-fill{height:100%;background:var(--green-light);border-radius:3px;transition:width .3s}
.av-prog-text{font-size:11px;font-weight:700;color:var(--muted);min-width:30px;text-align:right}
.av-card.done-all .av-prog-text{color:#15803d}
.av-body{padding:0 18px 16px;display:none}
.av-body.open{display:block}
.av-section{margin-top:12px}
.av-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}
.av-check-item{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:6px;margin-bottom:4px;cursor:pointer;transition:background .1s}
.av-check-item:hover{background:var(--bg)}
.av-check-item.checked{opacity:.6}
.av-check-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--green);flex-shrink:0;margin-top:1px;cursor:pointer}
.av-check-label{font-size:13px;line-height:1.4}
.av-check-item.checked .av-check-label{text-decoration:line-through;color:var(--muted)}
.av-note{margin-top:8px}
.av-note textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:12px;resize:vertical;min-height:60px;font-family:inherit;color:var(--text)}
.av-note textarea:focus{outline:none;border-color:var(--green-light)}
.av-note label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:block;margin-bottom:4px}
.av-done-badge{background:#d1fae5;color:#15803d;font-size:11px;font-weight:700;padding:2px 8px;border-radius:10px;border:1px solid #6ee7b7}
/* TOAST */
#toast{position:fixed;bottom:24px;right:24px;padding:12px 20px;border-radius:8px;font-size:13px;font-weight:600;z-index:999;box-shadow:var(--shadow-md);opacity:0;transition:opacity .3s;pointer-events:none}
@media(max-width:600px){
.sidebar{width:52px}
.sb-logo .sub,.nav-item span:first-child,.nav-badge{display:none}
.nav-item{justify-content:center}
.content{padding:14px}
.two-col{grid-template-columns:1fr}
.fg{grid-template-columns:1fr}
.fg-full{grid-column:1}
}
</style>
</head>
<body>
<nav class="sidebar">
<div class="sb-logo">
<img src="data:image/png;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfkTvG8P182V3oxGW4a9E78+1TM+fbpfSM2jSdAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH5VMUxvM7P1wurcd7gwFqun7qq7EbeTaf8A9DfHSclorHu+bQWMi/ldWFqn3+Hq6Piz0x+3dI1YafzGrLMyoxEbzbn3tymO+mf/APbrMtXKLtqm7bqiqiuIqpmO+JYhc+oYJx5fFG0vMBlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE19jIv5lbwtFW9Nin323409f7NkuzrMLeW5fcxNzaao6KKfxqu6FYXrld69XeuVTVXXVNVUz3zLEur9MwTNpyT7PBI9JZ/7hqjBYur+rVT72r/lzP8Aojgw6+XFXLXw2W7RVTXTFVFUVUzG8TE7xMPJW+R5/jMr2tx/TYffpt1T1eae5M8sz/LcfTEU34tXJ/4d2ebPq7pZef4jgsmGddNYcqPx+sqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxuV0W6JruV00Ux1zVO0QDyejHYvD4LDVYjE3Ioop/TM+KPHLhs11TgMLTVRhZ91XuqOb9xHnnv9SGZpmWLzK/4XFXOdt9zTHRTT5oY1X+H4C+SdbekPdn+bXs2xfha45lqjot0eKP4uNBh36UrSsVrsADYABymQ4vF0Yqi1Rir9Nv8WLkxHXHcsPAVVVWImqqap8cyDLz3H88voAZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHGZ5duW7FU27ldE7ddNW3crvHYnEX71Xh7927tPRz65q+kGJdX6dzPnAYdsAB//2Q==" alt="Plus1" style="width:120px;height:auto;display:block;border-radius:6px;margin-bottom:6px">
<div class="sub">Skuldsaneringsportalen</div>
</div>
<div class="nav">
<div class="nav-label">Navigering</div>
<div class="nav-item active" onclick="goTo('oversikt',this)">
<span>Översikt</span>
</div>
<div class="nav-item" onclick="goTo('arenden',this)">
<span>Ärendelista</span>
<span class="nav-badge" id="nb-arenden">415</span>
</div>
<div class="nav-item" onclick="goTo('tidslinje',this)">
<span>Tidslinje</span>
</div>
<div class="nav-item" onclick="goTo('kapital',this)">
<span>Kapitalvy</span>
</div>
<div class="nav-item" onclick="goTo('hkmk',this)">
<span>Låntagare</span>
<span class="nav-badge" id="nb-hkmk">29</span>
</div>
<div class="nav-item" onclick="goTo('flaggade',this)">
<span>Att göra</span>
<span class="nav-badge" id="nb-flaggade">—</span>
</div>
<div class="nav-item" onclick="goTo('avslut',this)">
<span>Kommande avslut</span>
<span class="nav-badge" id="nb-avslut">—</span>
</div>
</div>
<div class="sb-footer">Plus1 · Skuldsanering</div>
</nav>
<div class="main">
<div class="topbar">
<div class="topbar-left">
<div class="title" id="tb-title">Översikt</div>
<div class="sub" id="tb-sub">Sammanfattning av alla skuldsaneringsärenden</div>
</div>
<div class="topbar-right">
<button class="btn-refresh" onclick="refreshOmni()">Uppdatera från Omni</button>
<button class="btn-refresh" onclick="reseedSupabase()" style="border-color:#dc2626;color:#dc2626" title="Laddar upp saknade ärenden till databasen">Synka till databas</button>
<button class="btn-add" onclick="openModal()">+ Nytt ärende</button>
</div>
</div>
<div class="content">
<!-- ÖVERSIKT -->
<div class="view active" id="view-oversikt">
<div class="cards" id="ov-cards"></div>
<div class="two-col">
<div class="panel">
<div class="panel-title">Ärenden per status</div>
<div id="ov-status-bars"></div>
</div>
<div class="panel">
<div class="panel-title">Avslutas per år</div>
<div id="ov-year-bars"></div>
</div>
</div>
<div class="two-col">
<div class="panel">
<div class="panel-title">Omni-portfölj — live</div>
<div id="ov-omni-bars"></div>
<div style="margin-top:8px;font-size:11px;color:var(--muted)">Totalt: 13 260 Mkr · 6 764 konton</div>
</div>
<div class="panel">
<div class="panel-title">Snabbfakta</div>
<div id="ov-fakta"></div>
</div>
</div>
</div>
<!-- ÄRENDELISTA -->
<div class="view" id="view-arenden">
<div class="controls">
<div class="search-wrap">
<svg class="search-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
<input class="search-input" id="q" type="text" placeholder="Sök ärendenr, Omni-status…" oninput="renderTable()">
</div>
<select class="fsel" id="f-status" onchange="renderTable()">
<option value="">Alla statusar</option>
<option>Inledd</option><option>Förslag</option><option>Beslutad</option><option>Avslutad</option>
</select>
<select class="fsel" id="f-year" onchange="renderTable()">
<option value="">Alla år</option>
</select>
<select class="fsel" id="f-bucket" onchange="renderTable()">
<option value="">Alla buckets</option>
<option>Bucket 0</option>
<option>Bucket 1</option>
<option>Bucket 2</option>
<option>Bucket 3</option>
<option>Bucket 4</option>
<option>Frozen</option>
<option>Aktiv</option>
</select>
<select class="fsel" id="f-omni" onchange="renderTable()">
<option value="">Alla Omni-statusar</option>
<option>ACTIVATED</option><option>CLOSED</option><option>COLLECTION</option>
<option>COLLECTION POCI</option><option>DECEASED</option><option>FOR COLLECTION</option>
<option>PAYMENT PLAN ACTIVE</option><option>REACTIVATED</option>
<option>WRITE OFF</option><option>WRITTEN OFF</option>
<option>EJ I OMNI</option>
</select>
<span class="rcount" id="rcount"></span>
</div>
<div class="table-wrap">
<table>
<thead><tr>
<th onclick="srt('id')">Ärendenr</th>
<th onclick="srt('status')">Status</th>
<th>HK</th><th>MK</th>
<th onclick="srt('avslutsdatum')">Avslutsdatum</th>
<th onclick="srt('avslutsaar')">År</th>
<th>% HK</th><th>% MK</th>
<th onclick="srt('kapital')">Kapital (kr)</th>
<th onclick="srt('inkasso')">Omni-status</th>
<th onclick="srt('bucket')">Bucket</th>
<th>Spärrad</th>
<th></th>
</tr></thead>
<tbody id="tbody"></tbody>
</table>
<div id="empty" style="display:none;text-align:center;padding:40px;color:var(--muted)">Inga ärenden matchar.</div>
</div>
</div>
<!-- TIDSLINJE -->
<div class="view" id="view-tidslinje">
<div class="two-col">
<div class="panel">
<div class="panel-title">Avslutsdatum per år — alla</div>
<div id="tl-all"></div>
</div>
<div class="panel">
<div class="panel-title">Beslutade per år</div>
<div id="tl-bes"></div>
</div>
</div>
<div class="panel">
<div class="panel-title">Ärenden utan avslutsdatum</div>
<div id="tl-missing"></div>
</div>
</div>
<!-- KAPITALVY -->
<div class="view" id="view-kapital">
<div class="cards" id="kap-cards"></div>
<div class="two-col">
<div class="panel">
<div class="panel-title">Kapital per Omni-status</div>
<div id="kap-omni"></div>
</div>
<div class="panel">
<div class="panel-title">Månader sedan default</div>
<div id="kap-manad"></div>
</div>
</div>
<div class="two-col">
<div class="panel">
<div class="panel-title">Kapital per SS-status</div>
<div id="kap-ss"></div>
</div>
<div class="panel">
<div class="panel-title">Procentuellt beslut — fördelning</div>
<div id="kap-pct"></div>
</div>
</div>
<div class="panel">
<div class="panel-title">Alla konton med kapitaldata</div>
<div class="table-wrap" style="border:none;box-shadow:none;max-height:400px;overflow-y:auto">
<table>
<thead><tr>
<th onclick="ksrt('id')">Ärendenr</th>
<th onclick="ksrt('status')">SS-status</th>
<th onclick="ksrt('inkasso')">Omni-status</th>
<th onclick="ksrt('kapital')">Kapital (kr)</th>
<th onclick="ksrt('manad_sedan_default')">Mån sedan default</th>
<th>% HK</th><th>Avslutsdatum</th><th></th>
</tr></thead>
<tbody id="kap-tbody"></tbody>
</table>
</div>
<div style="margin-top:8px;font-size:12px;color:var(--muted)" id="kap-note"></div>
</div>
</div>
<!-- HK/MK -->
<div class="view" id="view-hkmk">
<div class="cards" id="hkmk-cards"></div>
<div class="panel">
<div class="panel-title">Ärenden med både huvudlåntagare och medlåntagare</div>
<div class="table-wrap" style="border:none;box-shadow:none">
<table>
<thead><tr>
<th>Ärendenr</th><th>Status</th><th>Avslutsdatum</th><th>% HK</th><th>% MK</th><th>Omni-status</th><th></th>
</tr></thead>
<tbody id="hkmk-tbody"></tbody>
</table>
</div>
</div>
</div>
<!-- KOMMANDE AVSLUT -->
<div class="view" id="view-avslut">
<div id="avslut-filters" style="display:flex;gap:8px;align-items:center;margin-bottom:16px;flex-wrap:wrap">
<select class="fsel" id="av-months" onchange="renderAvslut()">
<option value="3">Avslutas inom 3 månader</option>
<option value="6">Avslutas inom 6 månader</option>
<option value="12">Avslutas inom 12 månader</option>
<option value="all">Alla kommande avslut</option>
</select>
<select class="fsel" id="av-filter" onchange="renderAvslut()">
<option value="all">Alla — oavsett status</option>
<option value="open">Endast ej åtgärdade</option>
<option value="done">Endast klara</option>
</select>
<span class="rcount" id="av-count"></span>
</div>
<div id="avslut-list"></div>
</div>
<!-- ATT GÖRA -->
<div class="view" id="view-flaggade">
<div id="flag-list" style="margin-bottom:16px"></div>
<div class="panel">
<div class="panel-title">Ärenden att åtgärda</div>
<div class="table-wrap" style="border:none;box-shadow:none">
<table>
<thead><tr>
<th>Ärendenr</th><th>Status</th><th>Avslutsdatum</th><th>Kapital</th><th>Omni-status</th><th>Problem</th><th></th>
</tr></thead>
<tbody id="flag-tbody"></tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- MODAL -->
<div class="overlay" id="overlay" onclick="if(event.target===this)closeModal()">
<div class="modal">
<div class="modal-hdr">
<h2 id="modal-title">Nytt ärende</h2>
<button class="modal-close" onclick="closeModal()">✕</button>
</div>
<div class="modal-body">
<div class="fg">
<div><label class="fl">Ärendenummer</label><input class="fi" id="f_id" placeholder="t.ex. 5003405"></div>
<div><label class="fl">Status</label>
<select class="fs" id="f_status"><option>Inledd</option><option>Förslag</option><option>Beslutad</option><option>Avslutad</option></select></div>
<div><label class="fl">HK</label>
<select class="fs" id="f_hk"><option value="">—</option><option value="Ja">Ja</option></select></div>
<div><label class="fl">MK</label>
<select class="fs" id="f_mk"><option value="">—</option><option value="Ja">Ja</option></select></div>
<div><label class="fl">Avslutsdatum</label><input class="fi" id="f_avslutsdatum" type="date"></div>
<div><label class="fl">Avslutsår</label><input class="fi" id="f_avslutsaar" type="number" placeholder="t.ex. 2027"></div>
<div><label class="fl">% Beslut HK</label><input class="fi" id="f_procent_hk" placeholder="t.ex. 25%"></div>
<div><label class="fl">% Beslut MK</label><input class="fi" id="f_procent_mk" placeholder="t.ex. 18%"></div>
<div><label class="fl">Kapital (kr)</label><input class="fi" id="f_kapital" type="number" placeholder="t.ex. 250000"></div>
<div><label class="fl">Spärrad</label>
<select class="fs" id="f_sparrad"><option value="">—</option><option value="Ja">Ja</option></select></div>
<div><label class="fl">Omni-status</label>
<select class="fs" id="f_inkasso">
<option value="">— Välj —</option>
<option>ACTIVATED</option><option>CLOSED</option><option>COLLECTION</option>
<option>COLLECTION POCI</option><option>DECEASED</option><option>FOR COLLECTION</option>
<option>PAYMENT PLAN ACTIVE</option><option>REACTIVATED</option>
<option>WRITE OFF</option><option>WRITTEN OFF</option>
<option>EJ I OMNI</option>
</select></div>
</div>
</div>
<div class="modal-ftr">
<button class="btn-sec" onclick="closeModal()">Avbryt</button>
<button class="btn-pri" id="save-btn" onclick="saveRecord()">Spara</button>
</div>
</div>
</div>
<div id="toast"></div>
<!-- CSD: Supabase removed. Load the compat adapter (provides window.supabase) + auth so this mini-app also routes to the CSD API with the Okta session. -->
<script src="/csd/config.js"></script>
<script src="/csd/auth.js"></script>
<script src="/csd/api.js"></script>
<script src="/csd/supabase-compat.js"></script>
<script src="/csd/roles.js"></script>
<script>
/* CSD: Supabase creds removed. The compat adapter ignores URL/key and routes to the CSD API. */
const SBURL = '';
const SBKEY = '';
const sb = window.supabase ? window.supabase.createClient(SBURL, SBKEY) : null;
const SEED = [{"id": "5003405", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2023-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2023", "kapital": "", "manad_sedan_default": 96, "bucket": "Frozen"}, {"id": "5033139", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2023-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2023", "kapital": "", "manad_sedan_default": 82, "bucket": "Frozen"}, {"id": "5001888", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2024-06-10 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2024", "kapital": "", "manad_sedan_default": 84, "bucket": "Frozen"}, {"id": "5031141", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2024-07-08 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2024", "kapital": "", "manad_sedan_default": 86, "bucket": "Frozen"}, {"id": "5068267", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2024-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "2024", "kapital": "", "manad_sedan_default": 79, "bucket": "Frozen"}, {"id": "5081013", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2024-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2024", "kapital": "", "manad_sedan_default": 55, "bucket": "Frozen"}, {"id": "5324470", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2024-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "40.89%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2024", "kapital": "", "manad_sedan_default": 72, "bucket": "Frozen"}, {"id": "7217524", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2024-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2024", "kapital": "", "manad_sedan_default": 56, "bucket": "Frozen"}, {"id": "5003041", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2024-12-10 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "12.52%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2024", "kapital": "", "manad_sedan_default": 88, "bucket": "Frozen"}, {"id": "5000674", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2024-12-10 00:00:00", "belopp_ss": "", "procent_hk": "46.00%", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "", "avslutsaar": "2024", "kapital": "", "manad_sedan_default": 101, "bucket": "Frozen"}, {"id": "5003090", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-03-01 00:00:00", "belopp_ss": "", "procent_hk": "11.20%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 85, "bucket": "Frozen"}, {"id": "5003017", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-04-01 00:00:00", "belopp_ss": "", "procent_hk": "46.00%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 85, "bucket": "Frozen"}, {"id": "5401138", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-04-01 00:00:00", "belopp_ss": "", "procent_hk": "29.38%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 77, "bucket": "Frozen"}, {"id": "7140890", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-04-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 55, "bucket": "Frozen"}, {"id": "5000294", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2025-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 101, "bucket": "Frozen"}, {"id": "5002480", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-05-01 00:00:00", "belopp_ss": "", "procent_hk": "99.60%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 96, "bucket": "Frozen"}, {"id": "5002019", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-05-01 00:00:00", "belopp_ss": "", "procent_hk": "33.03%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 104, "bucket": "Frozen"}, {"id": "5309455", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-05-01 00:00:00", "belopp_ss": "", "procent_hk": "19.73%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 88, "bucket": "Frozen"}, {"id": "5006333", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-07-01 00:00:00", "belopp_ss": "", "procent_hk": "42.04%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 70, "bucket": "Frozen"}, {"id": "5070255", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-07-01 00:00:00", "belopp_ss": "", "procent_hk": "4.14%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 65, "bucket": "Frozen"}, {"id": "5003231", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2025-07-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 85, "bucket": "Frozen"}, {"id": "5266291", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-08-01 00:00:00", "belopp_ss": "", "procent_hk": "17.50%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 70, "bucket": "Frozen"}, {"id": "5020557", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-08-01 00:00:00", "belopp_ss": "", "procent_hk": "39.73%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 82, "bucket": "Frozen"}, {"id": "5002373", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-08-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 74, "bucket": "Frozen"}, {"id": "7289788", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2025-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 62, "bucket": "Frozen"}, {"id": "5261235", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2025", "manad_sedan_default": "", "bucket": "Bucket 2"}, {"id": "5003967", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-10-01 00:00:00", "belopp_ss": "", "procent_hk": "22.35%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 73, "bucket": "Frozen"}, {"id": "5003447", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-10-01 00:00:00", "belopp_ss": "", "procent_hk": "16.26%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 100, "bucket": "Frozen"}, {"id": "5009154", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2025-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 63, "bucket": "Frozen"}, {"id": "5306972", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "112906", "manad_sedan_default": 67, "bucket": "Bucket 1"}, {"id": "5000419", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2025-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 69, "bucket": "Frozen"}, {"id": "5002514", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2025-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "34.91%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 91, "bucket": "Frozen"}, {"id": "5003116", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2025-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "52.35%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 67, "bucket": "Frozen"}, {"id": "5000419", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2025-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "21.00%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 69, "bucket": "Frozen"}, {"id": "5048988", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2025-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "2025", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7178353", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 50, "bucket": "Frozen"}, {"id": "5002837", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-11-30 00:00:00", "belopp_ss": "", "procent_hk": "23.00%", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 73, "bucket": "Frozen"}, {"id": "5003124", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-12-01 00:00:00", "belopp_ss": "", "procent_hk": "29.06%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 72, "bucket": "Frozen"}, {"id": "5310461", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 36, "bucket": "Frozen"}, {"id": "5747951", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-01-01 00:00:00", "belopp_ss": "", "procent_hk": "20.02%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 67, "bucket": "Frozen"}, {"id": "5084504", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-02-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 76, "bucket": "Frozen"}, {"id": "5003884", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2026-02-10 00:00:00", "belopp_ss": "", "procent_hk": "50.00%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 80, "bucket": "Frozen"}, {"id": "5002639", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-03-01 00:00:00", "belopp_ss": "", "procent_hk": "64.67%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 77, "bucket": "Frozen"}, {"id": "5003926", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-03-01 00:00:00", "belopp_ss": "", "procent_hk": "7.51%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 85, "bucket": "Frozen"}, {"id": "5070040", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-03-01 00:00:00", "belopp_ss": "", "procent_hk": "57.00%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 74, "bucket": "Frozen"}, {"id": "5229349", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2026-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 71, "bucket": "Frozen"}, {"id": "5586011", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "Ja", "avslutsaar": "2026", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "5002233", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 20, "bucket": "Frozen"}, {"id": "7675440", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "243380", "manad_sedan_default": 32, "bucket": "Frozen"}, {"id": "5001219", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-04-01 00:00:00", "belopp_ss": "", "procent_hk": "19.31%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 99, "bucket": "Frozen"}, {"id": "5000864", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-04-01 00:00:00", "belopp_ss": "", "procent_hk": "38.00%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 60, "bucket": "Frozen"}, {"id": "5221486", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-04-01 00:00:00", "belopp_ss": "", "procent_hk": "59.50%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 71, "bucket": "Frozen"}, {"id": "5393913", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2026-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "Ja", "avslutsaar": "2026", "manad_sedan_default": "", "bucket": "Bucket 1"}, {"id": "5602172", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-05-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 81, "bucket": "Frozen"}, {"id": "5010525", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2026-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 65, "bucket": "Frozen"}, {"id": "5187752", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-06-01 00:00:00", "belopp_ss": "", "procent_hk": "52.90%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 59, "bucket": "Frozen"}, {"id": "5328638", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-06-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2026", "kapital": "168763", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7172786", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-07-01 00:00:00", "belopp_ss": "", "procent_hk": "22.79%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 49, "bucket": "Frozen"}, {"id": "5001052", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-07-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "Ja", "avslutsaar": "2026", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "5000666", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-07-09 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 69, "bucket": "Frozen"}, {"id": "5206990", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-08-01 00:00:00", "belopp_ss": "", "procent_hk": "11.00%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 76, "bucket": "Frozen"}, {"id": "5188750", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-08-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 62, "bucket": "Frozen"}, {"id": "5398466", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-08-01 00:00:00", "belopp_ss": "", "procent_hk": "3.00%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 48, "bucket": "Frozen"}, {"id": "5275888", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-08-01 00:00:00", "belopp_ss": "", "procent_hk": "8.31%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 79, "bucket": "Frozen"}, {"id": "5000179", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2026-09-01 00:00:00", "belopp_ss": "", "procent_hk": "71.00%", "procent_mk": "19.00%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 57, "bucket": "Frozen"}, {"id": "5554498", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-09-01 00:00:00", "belopp_ss": "", "procent_hk": "48.23%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 67, "bucket": "Frozen"}, {"id": "7124423", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-09-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 60, "bucket": "Frozen"}, {"id": "7137672", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "Ja", "avslutsaar": "2026", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7341266", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2026", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "5001243", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-09-10 00:00:00", "belopp_ss": "", "procent_hk": "47 000 sek", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 107, "bucket": "Frozen"}, {"id": "5628870", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-10-01 00:00:00", "belopp_ss": "", "procent_hk": "40.66%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 55, "bucket": "Frozen"}, {"id": "5002555", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2026-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 84, "bucket": "Frozen"}, {"id": "5058482", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-10-10 00:00:00", "belopp_ss": "", "procent_hk": "26 103 sek", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 75, "bucket": "Frozen"}, {"id": "5040746", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2026-11-01 00:00:00", "belopp_ss": "", "procent_hk": "16.26%", "procent_mk": "21.14%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 74, "bucket": "Frozen"}, {"id": "5589288", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-11-01 00:00:00", "belopp_ss": "", "procent_hk": "54.00%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 67, "bucket": "Frozen"}, {"id": "5534920", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2026-11-01 00:00:00", "belopp_ss": "", "procent_hk": "7.05%", "procent_mk": "5.65%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 65, "bucket": "Frozen"}, {"id": "5703905", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2026-12-01 00:00:00", "belopp_ss": "", "procent_hk": "74.37%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 66, "bucket": "Frozen"}, {"id": "5009758", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2026-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "2026", "kapital": "", "manad_sedan_default": 72, "bucket": "Frozen"}, {"id": "5081930", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2027-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 63, "bucket": "Frozen"}, {"id": "7217433", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "Ja", "avslutsaar": "2027", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "5291141", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-02-01 00:00:00", "belopp_ss": "", "procent_hk": "28.00%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 74, "bucket": "Frozen"}, {"id": "7673916", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-02-01 00:00:00", "belopp_ss": "", "procent_hk": "19.08%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "287301", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "5055215", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2027-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 59, "bucket": "Frozen"}, {"id": "7134000", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "360048", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "5849310", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-03-01 00:00:00", "belopp_ss": "", "procent_hk": "2.50%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 75, "bucket": "Frozen"}, {"id": "7205230", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-03-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 53, "bucket": "Frozen"}, {"id": "7686504", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "287420", "manad_sedan_default": 34, "bucket": "Frozen"}, {"id": "7232622", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-04-01 00:00:00", "belopp_ss": "", "procent_hk": "5.22%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 50, "bucket": "Frozen"}, {"id": "7225220", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-04-01 00:00:00", "belopp_ss": "", "procent_hk": "68.87%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 52, "bucket": "Frozen"}, {"id": "7253156", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "416587", "manad_sedan_default": 20, "bucket": "Frozen"}, {"id": "5000997", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-04-04 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 101, "bucket": "Frozen"}, {"id": "7129505", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-04-10 00:00:00", "belopp_ss": "", "procent_hk": "54347 sek", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 62, "bucket": "Frozen"}, {"id": "5064878", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-05-01 00:00:00", "belopp_ss": "", "procent_hk": "12.19%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 65, "bucket": "Frozen"}, {"id": "7142391", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-05-01 00:00:00", "belopp_ss": "", "procent_hk": "46.52%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 56, "bucket": "Frozen"}, {"id": "7136088", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-05-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 57, "bucket": "Frozen"}, {"id": "7156474", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-05-01 00:00:00", "belopp_ss": "", "procent_hk": "25.47%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 48, "bucket": "Frozen"}, {"id": "7139264", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2027-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "10.00%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 67, "bucket": "Frozen"}, {"id": "5003439", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2027-06-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 63, "bucket": "Frozen"}, {"id": "5003710", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-06-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2027", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "5268867", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-07-01 00:00:00", "belopp_ss": "", "procent_hk": "21.66%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 53, "bucket": "Frozen"}, {"id": "7233273", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-08-01 00:00:00", "belopp_ss": "", "procent_hk": "43.23%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 49, "bucket": "Frozen"}, {"id": "5029046", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-09-01 00:00:00", "belopp_ss": "", "procent_hk": "16.53%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 77, "bucket": "Frozen"}, {"id": "7248651", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-09-01 00:00:00", "belopp_ss": "", "procent_hk": "6.32%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 45, "bucket": "Frozen"}, {"id": "7199474", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-09-01 00:00:00", "belopp_ss": "", "procent_hk": "44.50%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 55, "bucket": "Frozen"}, {"id": "5003330", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2027-09-23 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "26.73%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 96, "bucket": "Frozen"}, {"id": "7254790", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-10-01 00:00:00", "belopp_ss": "", "procent_hk": "30.00%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "206470", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "7244809", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2027-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 49, "bucket": "Frozen"}, {"id": "7235351", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "208235", "manad_sedan_default": 14, "bucket": "Frozen"}, {"id": "7235351", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "208235", "manad_sedan_default": 14, "bucket": "Frozen"}, {"id": "5015961", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-10-30 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 79, "bucket": "Frozen"}, {"id": "7182686", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-11-01 00:00:00", "belopp_ss": "", "procent_hk": "39.41%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "208156", "manad_sedan_default": 29, "bucket": "Frozen"}, {"id": "7103583", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2027", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7243421", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-12-01 00:00:00", "belopp_ss": "", "procent_hk": "33.15%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 44, "bucket": "Frozen"}, {"id": "7205354", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-12-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "", "manad_sedan_default": 44, "bucket": "Frozen"}, {"id": "7259716", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2027-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "288670", "manad_sedan_default": 37, "bucket": "Frozen"}, {"id": "7675440", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2027-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2027", "kapital": "243380", "manad_sedan_default": 32, "bucket": "Frozen"}, {"id": "7716202", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2028-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "307589", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "5051305", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 64, "bucket": "Frozen"}, {"id": "7137730", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "112111", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "7237472", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2028-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "418733", "manad_sedan_default": 16, "bucket": "Frozen"}, {"id": "7126022", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2028-01-26 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "12.00%", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 69, "bucket": "Frozen"}, {"id": "7103567", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-02-13 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 72, "bucket": "Frozen"}, {"id": "7739527", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-02-28 00:00:00", "belopp_ss": "", "procent_hk": "32.00%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "196431", "manad_sedan_default": 39, "bucket": "Frozen"}, {"id": "7255565", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-02-28 00:00:00", "belopp_ss": "", "procent_hk": "20.46%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 47, "bucket": "Frozen"}, {"id": "7739527", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-02-28 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "196431", "manad_sedan_default": 39, "bucket": "Frozen"}, {"id": "7188766", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "241074", "manad_sedan_default": 33, "bucket": "Frozen"}, {"id": "7260540", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "230807", "manad_sedan_default": 9, "bucket": "Frozen"}, {"id": "7733140", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2028-04-03 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2028", "kapital": "245334", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "5000187", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-04-10 00:00:00", "belopp_ss": "", "procent_hk": "69623 sek", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 89, "bucket": "Frozen"}, {"id": "7289242", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-04-26 00:00:00", "belopp_ss": "", "procent_hk": "53.02%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 49, "bucket": "Frozen"}, {"id": "7110554", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2028-04-30 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2028", "manad_sedan_default": "", "bucket": "Bucket 1"}, {"id": "7909617", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "205346", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7783665", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "257716", "manad_sedan_default": 13, "bucket": "Frozen"}, {"id": "7717093", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "265792", "manad_sedan_default": 31, "bucket": "Frozen"}, {"id": "7243421", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-07-06 00:00:00", "belopp_ss": "", "procent_hk": "33.15%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 44, "bucket": "Frozen"}, {"id": "7261076", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2028-08-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "422928", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7281751", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-08-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "324995", "manad_sedan_default": 33, "bucket": "Frozen"}, {"id": "7724800", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "247456", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "5859400", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2028-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 62, "bucket": "Frozen"}, {"id": "7673106", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "5618947", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-10-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 58, "bucket": "Frozen"}, {"id": "7284359", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 44, "bucket": "Frozen"}, {"id": "7271109", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "332332", "manad_sedan_default": 15, "bucket": "Frozen"}, {"id": "7338734", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "Ja", "avslutsaar": "2028", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "5003074", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-11-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 77, "bucket": "Frozen"}, {"id": "7102924", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "101208", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "7259088", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "245831", "manad_sedan_default": 35, "bucket": "Frozen"}, {"id": "7285554", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2028-11-10 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "334178", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "7698624", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2028-12-01 00:00:00", "belopp_ss": "", "procent_hk": "36.75%", "procent_mk": "200 000 sek", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "462113", "manad_sedan_default": 29, "bucket": "Frozen"}, {"id": "7246317", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-12-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 50, "bucket": "Frozen"}, {"id": "5364336", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 53, "bucket": "Frozen"}, {"id": "7187370", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-12-04 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2028", "kapital": "", "manad_sedan_default": 46, "bucket": "Frozen"}, {"id": "5395462", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-01-01 00:00:00", "belopp_ss": "", "procent_hk": "69.81%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 74, "bucket": "Frozen"}, {"id": "7259286", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-01-01 00:00:00", "belopp_ss": "", "procent_hk": "76.28%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "265289", "manad_sedan_default": 24, "bucket": "Frozen"}, {"id": "7798705", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-01-01 00:00:00", "belopp_ss": "", "procent_hk": "50.49%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "260082", "manad_sedan_default": 24, "bucket": "Frozen"}, {"id": "7173222", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2029-01-01 00:00:00", "belopp_ss": "", "procent_hk": "20.22%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 55, "bucket": "Frozen"}, {"id": "7255037", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "7229685", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "293710", "manad_sedan_default": 9, "bucket": "Frozen"}, {"id": "7254352", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "438475", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7254352", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2029-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "438475", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7805427", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "495018", "manad_sedan_default": 29, "bucket": "Frozen"}, {"id": "7163041", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 53, "bucket": "Frozen"}, {"id": "5437355", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "27788", "manad_sedan_default": 20, "bucket": "Frozen"}, {"id": "7805427", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "495018", "manad_sedan_default": 29, "bucket": "Frozen"}, {"id": "5209796", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2029-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 75, "bucket": "Frozen"}, {"id": "7109879", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 49, "bucket": "Frozen"}, {"id": "7209836", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2029-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 42, "bucket": "Frozen"}, {"id": "7677305", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "167210", "manad_sedan_default": 34, "bucket": "Frozen"}, {"id": "5008610", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "2029-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 63, "bucket": "Frozen"}, {"id": "5209796", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 75, "bucket": "Frozen"}, {"id": "7224991", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "Ja", "avslutsaar": "2029", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7247497", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "185758", "manad_sedan_default": 31, "bucket": "Frozen"}, {"id": "7263627", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 52, "bucket": "Frozen"}, {"id": "7273618", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 45, "bucket": "Frozen"}, {"id": "7197882", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 51, "bucket": "Frozen"}, {"id": "7823271", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "207680", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7687072", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "437897", "manad_sedan_default": 19, "bucket": "Frozen"}, {"id": "7890619", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "481097", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "7782774", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-06-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "180815", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7782774", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-06-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "180815", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7190713", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-06-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 62, "bucket": "Frozen"}, {"id": "7243470", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-06-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 50, "bucket": "Frozen"}, {"id": "7855489", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-07-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "268155", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7274889", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-07-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 50, "bucket": "Frozen"}, {"id": "7927486", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-07-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "197807", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7720949", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-07-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "151537", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7226863", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2029-07-10 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 29, "bucket": "Frozen"}, {"id": "7226863", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-07-10 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 29, "bucket": "Frozen"}, {"id": "7867799", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-08-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "292930", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "7741382", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-08-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "476356", "manad_sedan_default": 31, "bucket": "Frozen"}, {"id": "7107949", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2029-08-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 29, "bucket": "Frozen"}, {"id": "7763188", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-08-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "5925292", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2029-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 67, "bucket": "Frozen"}, {"id": "7249378", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "62177", "manad_sedan_default": 19, "bucket": "Frozen"}, {"id": "5002365", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "2029-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 98, "bucket": "Frozen"}, {"id": "7682768", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 44, "bucket": "Frozen"}, {"id": "7880503", "status": "Förslag", "forslag": "Ja", "hk": "Ja", "mk": "", "avslutsdatum": "2029-09-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "2029", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7188311", "status": "Förslag", "forslag": "Ja", "hk": "Ja", "mk": "", "avslutsdatum": "2029-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 55, "bucket": "Frozen"}, {"id": "7283427", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "", "manad_sedan_default": 44, "bucket": "Frozen"}, {"id": "7809890", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2029-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "472880", "manad_sedan_default": 18, "bucket": "Frozen"}, {"id": "7217979", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "236088", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "7814536", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "287209", "manad_sedan_default": 18, "bucket": "Frozen"}, {"id": "7796238", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "287772", "manad_sedan_default": 14, "bucket": "Frozen"}, {"id": "7207277", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-11-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "102262", "manad_sedan_default": 7, "bucket": "Frozen"}, {"id": "7267180", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2029", "manad_sedan_default": "", "bucket": "Bucket 3"}, {"id": "7267180", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2029", "manad_sedan_default": "", "bucket": "Bucket 3"}, {"id": "7884059", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2029", "kapital": "482947", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7281793", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "152146", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7250756", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "181237", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7890619", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2030-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "481097", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "7813587", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "471515", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7696081", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "208112", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7213911", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-02-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "255967", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "9070921", "status": "Förslag", "forslag": "Ja", "hk": "Ja", "mk": "", "avslutsdatum": "2030-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9039041", "status": "Förslag", "forslag": "Ja", "hk": "Ja", "mk": "", "avslutsdatum": "2030-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7248743", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "129958", "manad_sedan_default": 9, "bucket": "Frozen"}, {"id": "7244684", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "128813", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "9039041", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "Ja", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9070921", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9007097", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-03-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7248222", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "200358", "manad_sedan_default": 24, "bucket": "Frozen"}, {"id": "7854862", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7281686", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "144596", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7880503", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7789639", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-04-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "168487", "manad_sedan_default": 22, "bucket": "Frozen"}, {"id": "7681935", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-04-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "225151", "manad_sedan_default": 22, "bucket": "Frozen"}, {"id": "9151549", "status": "Förslag", "forslag": "Ja", "hk": "Ja", "mk": "", "avslutsdatum": "2030-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9062415", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "Ja", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 2"}, {"id": "9109828", "status": "Förslag", "forslag": "Ja", "hk": "Ja", "mk": "", "avslutsdatum": "2030-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9089061", "status": "Förslag", "forslag": "Ja", "hk": "Ja", "mk": "", "avslutsdatum": "2030-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9253618", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "Ja", "avslutsaar": "2030", "kapital": "411363", "manad_sedan_default": 5, "bucket": "Frozen"}, {"id": "9151549", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-05-01 00:00:00", "belopp_ss": "", "procent_hk": "64.02%", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9253618", "status": "Förslag", "forslag": "Ja", "hk": "Ja", "mk": "", "avslutsdatum": "2030-06-30 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "411363", "manad_sedan_default": 5, "bucket": "Frozen"}, {"id": "5003645", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2025-01-26 00:00:00", "belopp_ss": "", "procent_hk": "61.00%", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "2025", "kapital": "", "manad_sedan_default": 100, "bucket": "Frozen"}, {"id": "7226863", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 29, "bucket": "Frozen"}, {"id": "7883341", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "Fråga Intrum", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "495060", "manad_sedan_default": 22, "bucket": "Frozen"}, {"id": "7756042", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 35, "bucket": "Frozen"}, {"id": "7754492", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "201195", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7292394", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "487714", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7244494", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "Fråga kravia", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "362972", "manad_sedan_default": 33, "bucket": "Frozen"}, {"id": "7289028", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "Fråga Intrum", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "189059", "manad_sedan_default": 24, "bucket": "Frozen"}, {"id": "7862055", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "Fråga kravia", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "377010", "manad_sedan_default": 29, "bucket": "Frozen"}, {"id": "7243470", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 50, "bucket": "Frozen"}, {"id": "5628334", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 62, "bucket": "Frozen"}, {"id": "7927486", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-08-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "197807", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7682768", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 44, "bucket": "Frozen"}, {"id": "7763188", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 40, "bucket": "Frozen"}, {"id": "7157118", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 17, "bucket": "Frozen"}, {"id": "7959265", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "197422", "manad_sedan_default": 17, "bucket": "Frozen"}, {"id": "7893753", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "481805", "manad_sedan_default": 24, "bucket": "Frozen"}, {"id": "7687072", "status": "Inledd", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "437897", "manad_sedan_default": 19, "bucket": "Frozen"}, {"id": "7162217", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-10-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "341139", "manad_sedan_default": 20, "bucket": "Frozen"}, {"id": "7687072", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "437897", "manad_sedan_default": 19, "bucket": "Frozen"}, {"id": "5066352", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 65, "bucket": "Frozen"}, {"id": "7131832", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "Fråga intrum", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "50133", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7217979", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "Fråga Intrum", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "236088", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "5015961", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 79, "bucket": "Frozen"}, {"id": "7736416", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "Fråga intrum", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "175243", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7259716", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "Fråga kravia", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "288670", "manad_sedan_default": 37, "bucket": "Frozen"}, {"id": "7172752", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 42, "bucket": "Frozen"}, {"id": "7773153", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "Fråga intrum", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "3498", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7237472", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2028-01-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2028", "kapital": "418733", "manad_sedan_default": 16, "bucket": "Frozen"}, {"id": "7687072", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-05-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "437897", "manad_sedan_default": 19, "bucket": "Frozen"}, {"id": "7733140", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-04-03 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2028", "kapital": "245334", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7909617", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-05-01 00:00:00", "belopp_ss": "", "procent_hk": "44.92%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2028", "kapital": "205346", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7292394", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "487714", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7867799", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-08-01 00:00:00", "belopp_ss": "", "procent_hk": "24.39%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "292930", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "9068057", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-08-01 00:00:00", "belopp_ss": "", "procent_hk": "28.91%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2028", "kapital": "299461", "manad_sedan_default": 15, "bucket": "Frozen"}, {"id": "5478318", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7188311", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 55, "bucket": "Frozen"}, {"id": "7809890", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2029-10-01 00:00:00", "belopp_ss": "", "procent_hk": "60.20%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "472880", "manad_sedan_default": 18, "bucket": "Frozen"}, {"id": "9113796", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-09-01 00:00:00", "belopp_ss": "", "procent_hk": "69.73%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "102665", "manad_sedan_default": 15, "bucket": "Frozen"}, {"id": "7927486", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-07-01 00:00:00", "belopp_ss": "", "procent_hk": "88.10%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "197807", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7905953", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7809890", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "472880", "manad_sedan_default": 18, "bucket": "Frozen"}, {"id": "7271109", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-10-01 00:00:00", "belopp_ss": "", "procent_hk": "50.75%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2028", "kapital": "332332", "manad_sedan_default": 15, "bucket": "Frozen"}, {"id": "7739030", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 36, "bucket": "Frozen"}, {"id": "7814536", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "287209", "manad_sedan_default": 18, "bucket": "Frozen"}, {"id": "7207277", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "102262", "manad_sedan_default": 7, "bucket": "Frozen"}, {"id": "7796238", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "287772", "manad_sedan_default": 14, "bucket": "Frozen"}, {"id": "7208671", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "324890", "manad_sedan_default": 19, "bucket": "Frozen"}, {"id": "5002233", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 20, "bucket": "Frozen"}, {"id": "7784762", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "167126", "manad_sedan_default": 21, "bucket": "Frozen"}, {"id": "9177213", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9240615", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "135382", "manad_sedan_default": 9, "bucket": "Frozen"}, {"id": "9078320", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7848948", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "251599", "manad_sedan_default": 12, "bucket": "Frozen"}, {"id": "5006564", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 42, "bucket": "Frozen"}, {"id": "9062415", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 2"}, {"id": "9124504", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7799232", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "5748777", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "WRITTEN OFF", "sparrad": "", "avslutsaar": "", "kapital": "", "manad_sedan_default": 55, "bucket": "Frozen"}, {"id": "7708571", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "235573", "manad_sedan_default": 7, "bucket": "Frozen"}, {"id": "7766959", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "77727", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "9007097", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9070921", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9039041", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7736416", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "175243", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7266513", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "441611", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7244684", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "128813", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "7297104", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "481761", "manad_sedan_default": 35, "bucket": "Frozen"}, {"id": "7248743", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "129958", "manad_sedan_default": 9, "bucket": "Frozen"}, {"id": "7253016", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "38023", "manad_sedan_default": 16, "bucket": "Frozen"}, {"id": "7784739", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "286782", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "7880503", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7260540", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "230807", "manad_sedan_default": 9, "bucket": "Frozen"}, {"id": "7770399", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "286403", "manad_sedan_default": 8, "bucket": "Frozen"}, {"id": "7854862", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7882491", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "208811", "manad_sedan_default": 17, "bucket": "Frozen"}, {"id": "7235419", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "182749", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7740848", "status": "Avslutad", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "191279", "manad_sedan_default": 19, "bucket": "Frozen"}, {"id": "9109828", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9129016", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "103952", "manad_sedan_default": 10, "bucket": "Frozen"}, {"id": "9089061", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7783665", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "257716", "manad_sedan_default": 13, "bucket": "Frozen"}, {"id": "1005982", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9253618", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "411363", "manad_sedan_default": 5, "bucket": "Frozen"}, {"id": "9262460", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "391126", "manad_sedan_default": 10, "bucket": "Frozen"}, {"id": "7159585", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "70322", "manad_sedan_default": 39, "bucket": "Frozen"}, {"id": "7297104", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "481761", "manad_sedan_default": 35, "bucket": "Frozen"}, {"id": "9033275", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION", "sparrad": "", "avslutsaar": "", "kapital": "18953", "manad_sedan_default": 15, "bucket": "Frozen"}, {"id": "9032442", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "198258", "manad_sedan_default": 13, "bucket": "Frozen"}, {"id": "7848948", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "251599", "manad_sedan_default": 12, "bucket": "Frozen"}, {"id": "9151549", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9169178", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION", "sparrad": "", "avslutsaar": "", "kapital": "23155", "manad_sedan_default": 6, "bucket": "Frozen"}, {"id": "7707573", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9123514", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7292352", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "296413", "manad_sedan_default": 4, "bucket": "Frozen"}, {"id": "7251598", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "26358", "manad_sedan_default": 13, "bucket": "Frozen"}, {"id": "7923923", "status": "Inledd", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "456873", "manad_sedan_default": 13, "bucket": "Frozen"}, {"id": "7982291", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "198574", "manad_sedan_default": 24, "bucket": "Frozen"}, {"id": "7292394", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "487714", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7697774", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "408087", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7724487", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "199038", "manad_sedan_default": 13, "bucket": "Frozen"}, {"id": "7759517", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "262603", "manad_sedan_default": 14, "bucket": "Frozen"}, {"id": "7750078", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "478737", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "9065459", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "489486", "manad_sedan_default": 18, "bucket": "Frozen"}, {"id": "9101098", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Frozen"}, {"id": "7724487", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "199038", "manad_sedan_default": 13, "bucket": "Frozen"}, {"id": "7913882", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "188203", "manad_sedan_default": 16, "bucket": "Frozen"}, {"id": "7214125", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "266897", "manad_sedan_default": 14, "bucket": "Frozen"}, {"id": "7733033", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "218480", "manad_sedan_default": 20, "bucket": "Frozen"}, {"id": "7786007", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "150555", "manad_sedan_default": 24, "bucket": "Frozen"}, {"id": "7833767", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "295271", "manad_sedan_default": 21, "bucket": "Frozen"}, {"id": "9110602", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION", "sparrad": "", "avslutsaar": "", "kapital": "18799", "manad_sedan_default": 10, "bucket": "Frozen"}, {"id": "9200437", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION", "sparrad": "", "avslutsaar": "", "kapital": "30000", "manad_sedan_default": 14, "bucket": "Frozen"}, {"id": "7257181", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "52183", "manad_sedan_default": 11, "bucket": "Frozen"}, {"id": "7787872", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "86227", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7283757", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-06-01 00:00:00", "belopp_ss": "", "procent_hk": "21.53%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "297367", "manad_sedan_default": 19, "bucket": "Frozen"}, {"id": "9067166", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION", "sparrad": "", "avslutsaar": "", "kapital": "18492", "manad_sedan_default": 11, "bucket": "Frozen"}, {"id": "7723356", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "456611", "manad_sedan_default": 7, "bucket": "Frozen"}, {"id": "1043306", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7196157", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "87451", "manad_sedan_default": 13, "bucket": "Frozen"}, {"id": "9018524", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION", "sparrad": "", "avslutsaar": "", "kapital": "46232", "manad_sedan_default": 13, "bucket": "Frozen"}, {"id": "5307624", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2028-03-01 00:00:00", "belopp_ss": "", "procent_hk": "14.00%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2028", "kapital": "60461", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7749492", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-03-21 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "128175", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "7246952", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "227753", "manad_sedan_default": 18, "bucket": "Frozen"}, {"id": "7272867", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "186640", "manad_sedan_default": 24, "bucket": "Frozen"}, {"id": "7821614", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-04-01 00:00:00", "belopp_ss": "", "procent_hk": "9.82%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "71098", "manad_sedan_default": 17, "bucket": "Frozen"}, {"id": "7281439", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-06-01 00:00:00", "belopp_ss": "", "procent_hk": "12.93%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "272865", "manad_sedan_default": 17, "bucket": "Frozen"}, {"id": "7691579", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2030-07-01 00:00:00", "belopp_ss": "", "procent_hk": "99.38%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "82069", "manad_sedan_default": 17, "bucket": "Frozen"}, {"id": "7719057", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "95538", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7229685", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "293710", "manad_sedan_default": 9, "bucket": "Frozen"}, {"id": "7766959", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "77727", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "9234857", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "197922", "manad_sedan_default": 10, "bucket": "Frozen"}, {"id": "1052612", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7766959", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-02-01 00:00:00", "belopp_ss": "", "procent_hk": "42.95%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "77727", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7697774", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2030-08-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "408087", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7871387", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2030-07-01 00:00:00", "belopp_ss": "", "procent_hk": "36.49%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "398117", "manad_sedan_default": 21, "bucket": "Frozen"}, {"id": "7791965", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "132435", "manad_sedan_default": 21, "bucket": "Frozen"}, {"id": "7771686", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "292620", "manad_sedan_default": 18, "bucket": "Frozen"}, {"id": "7939481", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "122340", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "9240664", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "5008875", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7809320", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "210381", "manad_sedan_default": 1, "bucket": "Frozen"}, {"id": "7877749", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2030-09-01 00:00:00", "belopp_ss": "", "procent_hk": "29.05%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "366810", "manad_sedan_default": 20, "bucket": "Frozen"}, {"id": "7733033", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-09-01 00:00:00", "belopp_ss": "", "procent_hk": "65.89%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "218480", "manad_sedan_default": 20, "bucket": "Frozen"}, {"id": "7770399", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-05-01 00:00:00", "belopp_ss": "", "procent_hk": "36.74%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "286403", "manad_sedan_default": 8, "bucket": "Frozen"}, {"id": "7708209", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "410326", "manad_sedan_default": 7, "bucket": "Frozen"}, {"id": "5196423", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "166037", "manad_sedan_default": 10, "bucket": "Frozen"}, {"id": "7977861", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "496864", "manad_sedan_default": 7, "bucket": "Frozen"}, {"id": "7680119", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "317580", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7286636", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "360571", "manad_sedan_default": 23, "bucket": "Frozen"}, {"id": "7719909", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-07-01 00:00:00", "belopp_ss": "", "procent_hk": "32.00%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "92290", "manad_sedan_default": 24, "bucket": "Frozen"}, {"id": "7755978", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-08-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "253407", "manad_sedan_default": 26, "bucket": "Frozen"}, {"id": "7920127", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-09-01 00:00:00", "belopp_ss": "", "procent_hk": "52.55%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "164490", "manad_sedan_default": 25, "bucket": "Frozen"}, {"id": "7292352", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-08-01 00:00:00", "belopp_ss": "", "procent_hk": "79.68%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "296413", "manad_sedan_default": 4, "bucket": "Frozen"}, {"id": "9240615", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-04-01 00:00:00", "belopp_ss": "", "procent_hk": "8,98%+J392", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "135382", "manad_sedan_default": 9, "bucket": "Frozen"}, {"id": "9264094", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-09-01 00:00:00", "belopp_ss": "", "procent_hk": "10.26%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "473748", "manad_sedan_default": 4, "bucket": "Frozen"}, {"id": "7201361", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9119512", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7793136", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7884950", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-09-01 00:00:00", "belopp_ss": "", "procent_hk": "10.63%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "221295", "manad_sedan_default": 6, "bucket": "Frozen"}, {"id": "9101098", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-08-01 00:00:00", "belopp_ss": "", "procent_hk": "46.04%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "manad_sedan_default": "", "bucket": "Frozen"}, {"id": "9164724", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-10-01 00:00:00", "belopp_ss": "", "procent_hk": "18.91%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "189787", "manad_sedan_default": 7, "bucket": "Frozen"}, {"id": "9035205", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION", "sparrad": "", "avslutsaar": "", "kapital": "15687", "manad_sedan_default": 1, "bucket": "Frozen"}, {"id": "9227133", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 3"}, {"id": "9074030", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-11-01 00:00:00", "belopp_ss": "", "procent_hk": "0%", "procent_mk": "", "inkasso": "CLOSED", "sparrad": "", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "1049154", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-11-01 00:00:00", "belopp_ss": "", "procent_hk": "28.69%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "378784", "manad_sedan_default": 1, "bucket": "Frozen"}, {"id": "9251356", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "1023688", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 1"}, {"id": "7809320", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-10-01 00:00:00", "belopp_ss": "", "procent_hk": "65.28%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2030", "kapital": "210381", "manad_sedan_default": 1, "bucket": "Frozen"}, {"id": "9286337", "status": "Beslutad", "forslag": "", "hk": "", "mk": "Ja", "avslutsdatum": "2030-11-01 00:00:00", "belopp_ss": "", "procent_hk": "18;91 %", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9194622", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "476537", "manad_sedan_default": 2, "bucket": "Frozen"}, {"id": "9094186", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "391681", "manad_sedan_default": 6, "bucket": "Frozen"}, {"id": "7171788", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9279803", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 1"}, {"id": "9090838", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "386877", "manad_sedan_default": 0, "bucket": "Frozen"}, {"id": "1034412", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "Ja", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "", "kapital": "82520", "manad_sedan_default": 0, "bucket": "Frozen"}, {"id": "9189010", "status": "Inledd", "forslag": "", "hk": "", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "00:00:00", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "5486238", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2030-12-01 00:00:00", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "2030", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7723356", "status": "Beslutad", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "2029-10-01 00:00:00", "belopp_ss": "", "procent_hk": "51.00%", "procent_mk": "", "inkasso": "COLLECTION POCI", "sparrad": "", "avslutsaar": "2029", "kapital": "456611", "manad_sedan_default": 7, "bucket": "Frozen"}, {"id": "7904436", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "9282682", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "ACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 0"}, {"id": "7169345", "status": "Inledd", "forslag": "", "hk": "Ja", "mk": "", "avslutsdatum": "", "belopp_ss": "", "procent_hk": "", "procent_mk": "", "inkasso": "REACTIVATED", "sparrad": "", "avslutsaar": "", "manad_sedan_default": "", "bucket": "Bucket 3"}];
let data = [];
let editIdx = null;
let sortKey = 'avslutsdatum', sortDir = 'asc';
let ksortKey = 'kapital', ksortDir = 'desc';
const VIEWS = {
oversikt: {title:'Översikt', sub:'Sammanfattning av alla skuldsaneringsärenden'},
arenden: {title:'Ärendelista', sub:'Alla ärenden med filter och sökning'},
tidslinje: {title:'Tidslinje', sub:'Avslutsdatum och planering framåt'},
kapital: {title:'Kapitalvy', sub:'Utestående kapital per ärende och status'},
hkmk: {title:'Låntagare', sub:'Ärenden med medlåntagare'},
flaggade: {title:'Att göra', sub:'Ärenden som behöver åtgärd'},
avslut: {title:'Kommande avslut', sub:'Ärenden nära avslut — åtgärdslistor per ärende'},
};
// ── Navigation ──────────────────────────────────────────────────────────────
function goTo(id, el) {
document.querySelectorAll('.view').forEach(v => v.classList.remove('active'));
document.querySelectorAll('.nav-item').forEach(n => n.classList.remove('active'));
document.getElementById('view-'+id).classList.add('active');
el.classList.add('active');
document.getElementById('tb-title').textContent = VIEWS[id].title;
document.getElementById('tb-sub').textContent = VIEWS[id].sub;
renderView(id);
}
function renderView(id) {
if (id==='oversikt') renderOversikt();
if (id==='arenden') renderTable();
if (id==='tidslinje') renderTidslinje();
if (id==='kapital') renderKapital();
if (id==='hkmk') renderHKMK();
if (id==='flaggade') renderFlaggade();
if (id==='avslut') renderAvslut();
}
// ── Helpers ─────────────────────────────────────────────────────────────────
const fmt = n => Number(n).toLocaleString('sv-SE');
const fmtKr = n => n >= 1e6 ? (n/1e6).toLocaleString('sv-SE',{maximumFractionDigits:1})+' Mkr' : fmt(Math.round(n))+' kr';
function bdg(s) {
return `<span class="badge ${s}"><span class="badge-dot"></span>${s}</span>`;
}
function omniClass(v) {
if (!v) return '';
const u = v.toUpperCase();
if (u==='COLLECTION POCI') return 'c-poci';
if (u==='COLLECTION') return 'c-coll';
if (u==='FOR COLLECTION') return 'c-for';
if (u==='ACTIVATED'||u==='REACTIVATED') return 'c-act';
if (u==='WRITE OFF'||u==='WRITTEN OFF') return 'c-wo';
if (u==='CLOSED') return 'c-closed';
if (u==='EJ I OMNI') return 'c-ej';
return '';
}
function bucketTag(v) {
if (!v) return '<span class="pct-e">—</span>';
const colors = {
'Bucket 0':'#d1fae5;color:#065f46',
'Bucket 1':'#fef9c3;color:#854d0e',
'Bucket 2':'#ffedd5;color:#9a3412',
'Bucket 3':'#fee2e2;color:#991b1b',
'Bucket 4':'#fecaca;color:#7f1d1d',
'Fryst':'#f1f5f9;color:#475569',
};
const style = colors[v] || '#f1f5f9;color:#6b7280';
return `<span style="display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;background:${style.split(';')[0]};${style.split(';')[1]}">${v}</span>`;
}
function omniTag(v) {
if (!v) return '<span class="pct-e">—</span>';
return `<span class="itag ${omniClass(v)}" title="${v}">${v}</span>`;
}
function ebtns(idx) {
return `<span style="white-space:nowrap">
<button class="btn-e" onclick="editRecord(${idx})">✏️</button>
<button class="btn-d" onclick="deleteRecord(${idx})">✕</button>
</span>`;
}
function barChart(rows, maxV, color) {
return rows.map(([label, val, extra]) => {
const pct = maxV ? Math.round(val/maxV*100) : 0;
return `<div class="bc-row">
<div class="bc-label">${label}</div>
<div class="bc-track"><div class="bc-fill" style="width:${pct}%;background:${color}">${val}</div></div>
<div class="bc-val">${extra||val+' st'}</div>
</div>`;
}).join('');
}
function rowItem(label, val) {
return `<div style="display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:13px">
<span style="flex:1;color:var(--muted)">${label}</span>
<span style="font-weight:600">${val}</span>
</div>`;
}
// ── Översikt ─────────────────────────────────────────────────────────────────
function renderOversikt() {
const cnt = {Inledd:0,Förslag:0,Beslutad:0,Avslutad:0};
data.forEach(r => { if(cnt[r.status]!==undefined) cnt[r.status]++; });
const unikaKnt = new Set(data.map(r=>r.id)).size;
document.getElementById('ov-cards').innerHTML = [
['Inledd',cnt.Inledd,'c-inledd',"goTo('arenden',document.querySelectorAll('.nav-item')[1])"],
['Förslag',cnt.Förslag,'c-forslag',"goTo('arenden',document.querySelectorAll('.nav-item')[1])"],
['Beslutad',cnt.Beslutad,'c-beslutad',"goTo('arenden',document.querySelectorAll('.nav-item')[1])"],
['Avslutad',cnt.Avslutad,'c-avslutad',"goTo('arenden',document.querySelectorAll('.nav-item')[1])"],
['Unika konton',unikaKnt,'',''],
['Låntagare',data.length,'',''],
].map(([lbl,val,cls,fn]) => `
<div class="card ${cls} ${fn?'clickable':''}" ${fn?`onclick="${fn}"`:''}>
<div class="card-label">${lbl}</div>
<div class="card-value">${val}</div>
</div>`).join('');
const maxS = Math.max(...Object.values(cnt));
const sc = {Inledd:'#b45309',Förslag:'#1e40af',Beslutad:'#1A5C3A',Avslutad:'#6b7280'};
document.getElementById('ov-status-bars').innerHTML = Object.entries(cnt).map(([s,c]) =>
`<div class="bc-row"><div class="bc-label">${s}</div>
<div class="bc-track"><div class="bc-fill" style="width:${maxS?Math.round(c/maxS*100):0}%;background:${sc[s]}">${c}</div></div>
<div class="bc-val">${c} st</div></div>`).join('');
const years = {};
data.forEach(r => { if(r.avslutsaar) years[r.avslutsaar]=(years[r.avslutsaar]||0)+1; });
const maxY = Math.max(1,...Object.values(years));
document.getElementById('ov-year-bars').innerHTML =
Object.entries(years).sort().map(([y,c]) =>
`<div class="bc-row"><div class="bc-label">${y}</div>
<div class="bc-track"><div class="bc-fill" style="width:${Math.round(c/maxY*100)}%;background:#1A5C3A">${c}</div></div>
<div class="bc-val">${c} st</div></div>`).join('') +
`<div style="font-size:12px;color:#dc2626;padding-top:6px;border-top:1px solid var(--border);margin-top:4px">
${data.filter(r=>!r.avslutsaar).length} ärenden saknar avslutsdatum</div>`;
const omni = [['COLLECTION',8695.9,'#c2410c',65.6],['COLLECTION POCI',4004.9,'#92400e',30.2],['FOR COLLECTION',313.8,'#7e22ce',2.4],['ACTIVATED',237.9,'#15803d',1.8],['WRITTEN OFF',3.5,'#dc2626',0.0]];
document.getElementById('ov-omni-bars').innerHTML = omni.map(([s,v,c,p]) =>
`<div class="bc-row"><div class="bc-label" style="font-size:11px">${s}</div>
<div class="bc-track"><div class="bc-fill" style="width:${Math.round(v/8695.9*100)}%;background:${c};font-size:10px">${v} Mkr</div></div>
<div class="bc-val" style="font-size:11px">${p}%</div></div>`).join('');
const kap = data.filter(r=>r.kapital&&Number(r.kapital)>0);
const totKap = kap.reduce((s,r)=>s+Number(r.kapital),0);
const avgKap = kap.length ? totKap/kap.length : 0;
const sparrad = data.filter(r=>r.sparrad==='Ja').length;
const noDate = data.filter(r=>!r.avslutsaar).length;
const noOmni = data.filter(r=>!r.inkasso).length;
// Unika konton
const unikaKonton = new Set(data.map(r=>r.id)).size;
// HK/MK breakdown
const hkBara = data.filter(r=>r.hk==='Ja'&&r.mk!=='Ja').length;
const mkBara = data.filter(r=>r.mk==='Ja'&&r.hk!=='Ja').length;
const bada = data.filter(r=>r.hk==='Ja'&&r.mk==='Ja').length;
const badaKonton = new Set(data.filter(r=>r.hk==='Ja'&&r.mk==='Ja').map(r=>r.id)).size;
// Snittbeslut % — deduplicate by id, ett värde per unikt konto
const pcts = [];
const seenPctIds = new Set();
data.filter(r=>r.status==='Beslutad').forEach(r=>{
if(seenPctIds.has(r.id)) return;
seenPctIds.add(r.id);
const v = String(r.procent_hk || r.procent_mk || '');
if(v && v !== 'null' && v !== 'undefined'){
const n = parseFloat(v.replace('%','').replace(',','.'));
if(!isNaN(n) && n > 0 && n <= 100) pcts.push(n);
}
});
const snittPct = pcts.length ? (pcts.reduce((a,b)=>a+b,0)/pcts.length).toFixed(1) : '—';
document.getElementById('ov-fakta').innerHTML = [
['Unika lånekonton', unikaKonton+' st'],
['Antal låntagare (rader)', data.length+' st'],
['Varav HK', hkBara+' låntagare'],
['Varav MK', mkBara+' låntagare'],
['Tvåsök (HK + MK)', badaKonton+' konton · '+bada+' låntagare'],
['Snittbeslut (återbet. %)', snittPct+'%'],
['Snittkapital (Omni)', avgKap?fmtKr(avgKap):'—'],
['Totalt kapital', totKap?fmtKr(totKap)+' ('+kap.length+' konton)':'—'],
['Spärrade konton', sparrad+' st ('+Math.round(sparrad/data.length*100)+'%)'],
['Saknar avslutsdatum', noDate+' st'],
['Saknar Omni-status', noOmni+' st'],
].map(([l,v])=>rowItem(l,v)).join('');
document.getElementById('nb-flaggade').textContent = noDate + noOmni;
}
// ── Ärendelista ──────────────────────────────────────────────────────────────
function initFilters() {
const years = [...new Set(data.map(r=>r.avslutsaar).filter(Boolean))].sort();
const sel = document.getElementById('f-year');
sel.innerHTML = '<option value="">Alla år</option>';
years.forEach(y => { const o=document.createElement('option'); o.value=y; o.textContent=y; sel.appendChild(o); });
}
function renderTable() {
const q = document.getElementById('q').value.trim().toLowerCase();
const sf = document.getElementById('f-status').value;
const yf = document.getElementById('f-year').value;
const of_ = document.getElementById('f-omni').value;
const bf = document.getElementById('f-bucket').value;
let rows = data.filter(r => {
if (sf && r.status!==sf) return false;
if (yf && r.avslutsaar!==yf) return false;
if (of_ && r.inkasso!==of_) return false;
if (bf && r.bucket!==bf) return false;
if (q && !`${r.id} ${r.inkasso} ${r.status} ${r.bucket||''}`.toLowerCase().includes(q)) return false;
return true;
});
rows.sort((a,b)=>{
let av=a[sortKey]||'', bv=b[sortKey]||'';
if (sortKey==='avslutsdatum'){av=av||'Z';bv=bv||'Z';}
if (sortKey==='kapital'){return sortDir==='asc'?(Number(av)||0)-(Number(bv)||0):(Number(bv)||0)-(Number(av)||0);}
const c=String(av).localeCompare(String(bv),'sv');
return sortDir==='asc'?c:-c;
});
const avslutadCount = rows.filter(r=>r.status==='Avslutad').length;
document.getElementById('rcount').textContent = rows.length+' ärenden' + (avslutadCount > 0 ? ' · '+avslutadCount+' avslutade' : '');
const tbody = document.getElementById('tbody');
const empty = document.getElementById('empty');
if (!rows.length){tbody.innerHTML='';empty.style.display='';return;}
empty.style.display='none';
tbody.innerHTML = rows.map(r => {
const idx = data.indexOf(r);
const hk = r.hk==='Ja'?'<span class="chip chip-y">✓</span>':'<span class="chip chip-n">—</span>';
const mk = r.mk==='Ja'?'<span class="chip chip-y">✓</span>':'<span class="chip chip-n">—</span>';
const phk = r.procent_hk?`<span class="pct">${r.procent_hk}</span>`:'<span class="pct-e">—</span>';
const pmk = r.procent_mk?`<span class="pct">${r.procent_mk}</span>`:'<span class="pct-e">—</span>';
const kap = r.kapital&&Number(r.kapital)>0?`<span class="pct">${fmt(Number(r.kapital))} kr</span>`:'<span class="pct-e">—</span>';
const sp = r.sparrad==='Ja'?'<span class="chip chip-y">✓</span>':'<span class="chip chip-n">—</span>';
const isAvslutad = r.status === 'Avslutad';
return `<tr style="${isAvslutad ? 'background:#f0fdf4;' : ''}">
<td>
<span class="mono">${r.id}</span>
${isAvslutad ? '<br><span style="font-size:10px;font-weight:700;color:#15803d;text-transform:uppercase;letter-spacing:.06em">Avslutad</span>' : ''}
</td>
<td>${bdg(r.status)}</td>
<td style="text-align:center">${hk}</td>
<td style="text-align:center">${mk}</td>
<td>${r.avslutsdatum||'<span class="pct-e">—</span>'}</td>
<td>${r.avslutsaar||'—'}</td>
<td>${phk}</td><td>${pmk}</td>
<td>${kap}</td>
<td>${omniTag(r.inkasso)}</td>
<td>${bucketTag(r.bucket)}</td>
<td style="text-align:center">${sp}</td>
<td>${ebtns(idx)}</td>
</tr>`;
}).join('');
}
function srt(key) {
if (sortKey===key) sortDir=sortDir==='asc'?'desc':'asc';
else {sortKey=key;sortDir='asc';}
renderTable();
}
// ── Tidslinje ────────────────────────────────────────────────────────────────
function renderTidslinje() {
const all={}, bes={};
data.forEach(r => {
if(r.avslutsaar){all[r.avslutsaar]=(all[r.avslutsaar]||0)+1;}
if(r.avslutsaar&&r.status==='Beslutad'){bes[r.avslutsaar]=(bes[r.avslutsaar]||0)+1;}
});
const mkTL = (obj,color) => {
const max=Math.max(1,...Object.values(obj));
return Object.entries(obj).sort().map(([y,c])=>
`<div class="bc-row"><div class="bc-label" style="width:40px">${y}</div>
<div class="bc-track"><div class="bc-fill" style="width:${Math.round(c/max*100)}%;background:${color}">${c}</div></div>
<div class="bc-val">${c} st</div></div>`).join('');
};
document.getElementById('tl-all').innerHTML = mkTL(all,'#1A5C3A');
document.getElementById('tl-bes').innerHTML = mkTL(bes,'#3CDB74');
const miss = data.filter(r=>!r.avslutsaar);
const tbl = document.getElementById('tl-missing');
if (!miss.length){tbl.innerHTML='<p style="color:var(--muted);font-size:13px">Alla ärenden har avslutsdatum!</p>';return;}
tbl.innerHTML = `<div style="max-height:280px;overflow-y:auto">
<table style="width:100%;border-collapse:collapse">
<thead><tr style="background:#f8f9fb">
<th style="padding:8px 12px;text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border)">Ärendenr</th>
<th style="padding:8px 12px;text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border)">Status</th>
<th style="padding:8px 12px;text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border)">Omni-status</th>
<th style="padding:8px 12px;border-bottom:1px solid var(--border)"></th>
</tr></thead>
<tbody>${miss.slice(0,60).map(r=>{const i=data.indexOf(r);return`<tr style="border-bottom:1px solid var(--border)">
<td style="padding:8px 12px"><span class="mono">${r.id}</span></td>
<td style="padding:8px 12px">${bdg(r.status)}</td>
<td style="padding:8px 12px">${omniTag(r.inkasso)}</td>
<td style="padding:8px 12px">${ebtns(i)}</td>
</tr>`;}).join('')}</tbody>
</table>
${miss.length>60?`<div style="font-size:12px;color:var(--muted);padding:8px">...och ${miss.length-60} till</div>`:''}
</div>`;
}
// ── Kapitalvy ─────────────────────────────────────────────────────────────────
function renderKapital() {
const wk = data.filter(r=>r.kapital&&Number(r.kapital)>0);
const tot = wk.reduce((s,r)=>s+Number(r.kapital),0);
const avg = wk.length?tot/wk.length:0;
const maxK = wk.length?Math.max(...wk.map(r=>Number(r.kapital))):0;
// Snitt mån sedan default — deduplicera på id
const seenManadIds = new Set();
const wmDedup = [];
data.forEach(r => {
if (seenManadIds.has(r.id)) return;
seenManadIds.add(r.id);
const v = Number(r.manad_sedan_default);
if (!isNaN(v) && v >= 0 && String(r.manad_sedan_default) !== '') wmDedup.push(v);
});
const avgM = wmDedup.length ? Math.round(wmDedup.reduce((s,v)=>s+v,0)/wmDedup.length) : 0;
document.getElementById('kap-cards').innerHTML = [
['Totalt kapital',fmtKr(tot),`${wk.length} konton med data`,'c-accent'],
['Snittkapital',fmtKr(avg),'per konton med data',''],
['Högsta enskilt',fmtKr(maxK),'utestående',''],
['Snitt mån sedan default',avgM+' mån','genomsnitt',''],
['Saknar kapitaldata',data.length-wk.length+' st',`av ${data.length} ärenden`,''],
].map(([l,v,s,c])=>`<div class="card ${c}"><div class="card-label">${l}</div><div class="card-value">${v}</div><div class="card-sub">${s}</div></div>`).join('');
// Per Omni-status
const omniS = ['COLLECTION POCI','COLLECTION','FOR COLLECTION','ACTIVATED','WRITTEN OFF','CLOSED'];
const omniC = {'COLLECTION POCI':'#92400e','COLLECTION':'#c2410c','FOR COLLECTION':'#7e22ce','ACTIVATED':'#15803d','WRITTEN OFF':'#dc2626','CLOSED':'#475569'};
document.getElementById('kap-omni').innerHTML = omniS.map(s=>{
const rows=data.filter(r=>r.inkasso===s&&r.kapital&&Number(r.kapital)>0);
const all=data.filter(r=>r.inkasso===s);
if(!all.length)return'';
const t=rows.reduce((a,r)=>a+Number(r.kapital),0);
return `<div style="display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px">
<span style="width:8px;height:8px;border-radius:2px;background:${omniC[s]||'#888'};flex-shrink:0;display:inline-block"></span>
<span style="flex:1;font-weight:500">${s}</span>
<span style="font-weight:700">${rows.length?fmtKr(t):'—'}</span>
<span style="color:var(--muted);font-size:11px">${rows.length}/${all.length}</span>
</div>`;
}).join('');
// Månader buckets
const mb = [[0,12,'0–12 mån','#3CDB74'],[13,24,'13–24 mån','#92400e'],[25,48,'25–48 mån','#c2410c'],[49,72,'49–72 mån','#7e22ce'],[73,999,'73+ mån','#dc2626']];
const maxMB = Math.max(1,...mb.map(([a,b])=>data.filter(r=>typeof r.manad_sedan_default==='number'&&r.manad_sedan_default>=a&&r.manad_sedan_default<=b).length));
document.getElementById('kap-manad').innerHTML = mb.map(([a,b,lbl,c])=>{
const rows=data.filter(r=>typeof r.manad_sedan_default==='number'&&r.manad_sedan_default>=a&&r.manad_sedan_default<=b);
const tk=rows.filter(r=>r.kapital&&Number(r.kapital)>0).reduce((s,r)=>s+Number(r.kapital),0);
return`<div class="bc-row"><div class="bc-label" style="font-size:11px">${lbl}</div>
<div class="bc-track"><div class="bc-fill" style="width:${Math.round(rows.length/maxMB*100)}%;background:${c};font-size:10px">${rows.length}</div></div>
<div class="bc-val" style="font-size:10px">${tk?fmtKr(tk):''}</div></div>`;
}).join('');
// Per SS-status
const ssC={Inledd:'#b45309',Förslag:'#1e40af',Beslutad:'#1A5C3A',Avslutad:'#6b7280'};
document.getElementById('kap-ss').innerHTML = ['Inledd','Förslag','Beslutad','Avslutad'].map(s=>{
const rows=data.filter(r=>r.status===s&&r.kapital&&Number(r.kapital)>0);
const all=data.filter(r=>r.status===s).length;
const t=rows.reduce((a,r)=>a+Number(r.kapital),0);
const am=rows.filter(r=>typeof r.manad_sedan_default==='number');
const avgMon=am.length?Math.round(am.reduce((a,r)=>a+r.manad_sedan_default,0)/am.length):'—';
return`<div style="display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px">
<span style="width:8px;height:8px;border-radius:2px;background:${ssC[s]};flex-shrink:0;display:inline-block"></span>
<span style="flex:1;font-weight:600">${s}</span>
<span style="font-weight:700;color:${ssC[s]}">${rows.length?fmtKr(t):'—'}</span>
<span style="color:var(--muted);font-size:11px">${rows.length}/${all} · snitt ${avgMon} mån</span>
</div>`;
}).join('');
// Procent fördelning
const pb=[[r=>r.procent_hk==='0%'||r.procent_mk==='0%','0%'],[r=>{const v=parseFloat((r.procent_hk||r.procent_mk||'').replace('%','').replace(',','.'));return v>0&&v<=25;},'1–25%'],[r=>{const v=parseFloat((r.procent_hk||r.procent_mk||'').replace('%','').replace(',','.'));return v>25&&v<=50;},'26–50%'],[r=>{const v=parseFloat((r.procent_hk||r.procent_mk||'').replace('%','').replace(',','.'));return v>50&&v<=75;},'51–75%'],[r=>{const v=parseFloat((r.procent_hk||r.procent_mk||'').replace('%','').replace(',','.'));return v>75&&v<=100;},'76–100%'],[r=>!r.procent_hk&&!r.procent_mk,'Saknas']];
const decided=data.filter(r=>r.status==='Beslutad');
const maxP=Math.max(1,...pb.map(([fn])=>decided.filter(fn).length));
document.getElementById('kap-pct').innerHTML=pb.map(([fn,lbl])=>{
const c=decided.filter(fn).length;
return`<div class="bc-row"><div class="bc-label" style="font-size:11px">${lbl}</div>
<div class="bc-track"><div class="bc-fill" style="width:${Math.round(c/maxP*100)}%;background:#1A5C3A;font-size:10px">${c}</div></div>
<div class="bc-val">${c} st</div></div>`;
}).join('');
// Kapital-tabell
let tr=[...wk];
tr.sort((a,b)=>{
if(ksortKey==='kapital'||ksortKey==='manad_sedan_default'){
const av=Number(a[ksortKey])||0, bv=Number(b[ksortKey])||0;
return ksortDir==='asc'?av-bv:bv-av;
}
return ksortDir==='asc'?String(a[ksortKey]||'').localeCompare(String(b[ksortKey]||''),'sv'):String(b[ksortKey]||'').localeCompare(String(a[ksortKey]||''),'sv');
});
document.getElementById('kap-tbody').innerHTML=tr.map(r=>{
const i=data.indexOf(r);
const m=typeof r.manad_sedan_default==='number'
?`<span style="font-weight:600;color:${r.manad_sedan_default>60?'#dc2626':r.manad_sedan_default>24?'#92400e':'#1A5C3A'}">${r.manad_sedan_default} mån</span>`
:'<span class="pct-e">—</span>';
return`<tr>
<td><span class="mono">${r.id}</span></td>
<td>${bdg(r.status)}</td>
<td>${omniTag(r.inkasso)}</td>
<td><span class="pct" style="color:#1A5C3A">${fmt(Number(r.kapital))} kr</span></td>
<td>${m}</td>
<td>${r.procent_hk?`<span class="pct">${r.procent_hk}</span>`:'<span class="pct-e">—</span>'}</td>
<td>${r.avslutsdatum||'<span class="pct-e">—</span>'}</td>
<td>${ebtns(i)}</td>
</tr>`;
}).join('');
document.getElementById('kap-note').textContent = (data.length-wk.length)+' ärenden saknar kapitaldata — klicka Uppdatera från Omni.';
}
function ksrt(key) {
if(ksortKey===key)ksortDir=ksortDir==='asc'?'desc':'asc';
else{ksortKey=key;ksortDir=key==='kapital'||key==='manad_sedan_default'?'desc':'asc';}
renderKapital();
}
// ── HK/MK ────────────────────────────────────────────────────────────────────
function renderHKMK() {
const both=data.filter(r=>r.hk==='Ja'&&r.mk==='Ja');
const onlyHK=data.filter(r=>r.hk==='Ja'&&r.mk!=='Ja');
const onlyMK=data.filter(r=>r.hk!=='Ja'&&r.mk==='Ja');
document.getElementById('hkmk-cards').innerHTML=[
['HK + MK',both.length,'båda parter','c-accent'],
['Bara HK',onlyHK.length,'huvudlåntagare',''],
['Bara MK',onlyMK.length,'medlåntagare',''],
].map(([l,v,s,c])=>`<div class="card ${c}"><div class="card-label">${l}</div><div class="card-value">${v}</div><div class="card-sub">${s}</div></div>`).join('');
document.getElementById('hkmk-tbody').innerHTML=both.map(r=>{
const i=data.indexOf(r);
return`<tr>
<td><span class="mono">${r.id}</span></td>
<td>${bdg(r.status)}</td>
<td>${r.avslutsdatum||'<span class="pct-e">—</span>'}</td>
<td>${r.procent_hk?`<span class="pct">${r.procent_hk}</span>`:'<span class="pct-e">—</span>'}</td>
<td>${r.procent_mk?`<span class="pct">${r.procent_mk}</span>`:'<span class="pct-e">—</span>'}</td>
<td>${omniTag(r.inkasso)}</td>
<td>${ebtns(i)}</td>
</tr>`;
}).join('');
}
// ── Att göra ──────────────────────────────────────────────────────────────────
function renderFlaggade() {
const nD=data.filter(r=>!r.avslutsaar);
const nK=data.filter(r=>!r.kapital||Number(r.kapital)===0);
const nO=data.filter(r=>!r.inkasso);
const ok=data.filter(r=>r.avslutsaar&&r.inkasso&&r.kapital&&Number(r.kapital)>0);
document.getElementById('nb-flaggade').textContent=nD.length+nO.length;
document.getElementById('flag-list').innerHTML=[
['Datum','Saknar avslutsdatum','Ej registrerat avslutsdatum',nD.length,'warn'],
['Kapital','Saknar kapitalbelopp','Inget kapital från Omni',nK.length,'warn'],
['Omni','Saknar Omni-status','Ingen status angiven',nO.length,'warn'],
['Klart','Kompletta ärenden','Datum + kapital + Omni ifyllt',ok.length,'ok'],
].map(([ico,tit,sub,cnt,cls])=>`
<div class="flag-item">
<span class="flag-label">${ico}</span>
<div class="flag-body"><div class="flag-title">${tit}</div><div class="flag-sub">${sub}</div></div>
<div class="flag-count ${cls}">${cnt}</div>
</div>`).join('');
const needs=data.filter(r=>!r.avslutsaar||!r.inkasso);
document.getElementById('flag-tbody').innerHTML=needs.slice(0,100).map(r=>{
const i=data.indexOf(r);
const probs=[];
if(!r.avslutsaar)probs.push('Saknar datum');
if(!r.inkasso)probs.push('Saknar Omni');
if(!r.kapital||Number(r.kapital)===0)probs.push('Saknar kapital');
const kap=r.kapital&&Number(r.kapital)>0?`<span class="pct">${fmt(Number(r.kapital))} kr</span>`:'<span class="pct-e">—</span>';
return`<tr>
<td><span class="mono">${r.id}</span></td>
<td>${bdg(r.status)}</td>
<td>${r.avslutsdatum||'<span style="color:#dc2626;font-size:12px">Saknas</span>'}</td>
<td>${kap}</td>
<td>${omniTag(r.inkasso)}</td>
<td><span style="font-size:11px;color:#dc2626">${probs.join(', ')}</span></td>
<td>${ebtns(i)}</td>
</tr>`;
}).join('');
}
// ── Modal ─────────────────────────────────────────────────────────────────────
const FF = ['id','status','hk','mk','avslutsdatum','avslutsaar','procent_hk','procent_mk','kapital','sparrad','inkasso','bucket'];
function openModal(idx=null) {
editIdx=idx;
document.getElementById('modal-title').textContent=idx!==null?'Redigera ärende':'Nytt ärende';
FF.forEach(f => {
const el=document.getElementById('f_'+f);
if(el) el.value=idx!==null?(data[idx][f]||''):'';
});
document.getElementById('overlay').classList.add('open');
}
function editRecord(idx){openModal(idx);}
function closeModal(){document.getElementById('overlay').classList.remove('open');editIdx=null;}
async function saveRecord() {
const r={};
FF.forEach(f=>{const el=document.getElementById('f_'+f);r[f]=el?el.value.trim():'';});
r.forslag=r.status==='Förslag'?'Ja':'';
if(!r.id){alert('Ärendenummer krävs.');return;}
document.getElementById('save-btn').textContent='Sparar…';
document.getElementById('save-btn').disabled=true;
if(sb){
// Remove Omni-derived fields that may not exist in Supabase table
const savePayload = {...r, updated_at: new Date().toISOString()};
delete savePayload.bucket; // derived from Omni, not in DB schema
delete savePayload.inkasso; // keep inkasso — it IS in schema
savePayload.inkasso = r.inkasso || '';
const {error}=await sb.from('arenden').upsert(savePayload, {onConflict:'id'});
if(error){
console.error('Supabase save error:', error);
toast('Fel: ' + (error.message || error.code || 'okänt fel'), 'warn');
} else {
// Update local data immediately
const existingIdx = data.findIndex(d => d.id === r.id);
if(existingIdx !== -1) data[existingIdx] = {...data[existingIdx], ...r};
else data.push(r);
// Save to localStorage as backup
saveLocalOverrides();
const av=document.querySelector('.view.active')?.id?.replace('view-','');
if(av) renderView(av);
toast('Sparat!','ok');
}
} else {
if(editIdx!==null)data[editIdx]=r;else data.push(r);
saveLocalOverrides();
const av=document.querySelector('.view.active')?.id?.replace('view-','');
if(av)renderView(av);
toast('Sparat!','ok');
}
document.getElementById('save-btn').textContent='Spara';
document.getElementById('save-btn').disabled=false;
closeModal();
}
async function deleteRecord(idx) {
if(!confirm(`Ta bort ärende ${data[idx].id}?`))return;
if(sb){
const {error}=await sb.from('arenden').delete().eq('id',data[idx].id);
if(error){console.error(error);toast('Fel vid borttagning','warn');return;}
toast('Borttaget','ok');
} else {
data.splice(idx,1);
const av=document.querySelector('.view.active')?.id?.replace('view-','');
if(av)renderView(av);
toast('Borttaget','ok');
}
}
// ── Supabase ──────────────────────────────────────────────────────────────────
const SEED_LOOKUP = {};
SEED.forEach(r => { SEED_LOOKUP[r.id] = r; });
function normalize(r){
const seed = SEED_LOOKUP[String(r.id)] || {};
return{
id:String(r.id||''),status:r.status||'',forslag:r.forslag||'',
hk:r.hk||'',mk:r.mk||'',avslutsdatum:r.avslutsdatum||'',
avslutsaar:r.avslutsaar||'',belopp_ss:r.belopp_ss||'',
procent_hk:r.procent_hk||seed.procent_hk||'',procent_mk:r.procent_mk||seed.procent_mk||'',
kapital:r.kapital?String(r.kapital):(seed.kapital||''),
manad_sedan_default:r.manad_sedan_default??'',
inkasso:r.inkasso||seed.inkasso||'',
sparrad:r.sparrad||'',
bucket:r.bucket||seed.bucket||'',
};
}
async function loadSupabase(){
// Load overrides from localStorage first (instant, no network)
loadLocalOverrides();
// Then try Supabase in background for real-time sync
if(!sb){ toast('Kör lokalt','info'); return; }
try{
const{data:rows,error}=await sb.from('arenden').select('*').order('id');
if(error) throw error;
if(rows && rows.length > 0){
// Merge Supabase overrides into SEED data
const supaLookup = {};
rows.forEach(r => { supaLookup[String(r.id)] = r; });
data = SEED.map(s => {
const override = supaLookup[String(s.id)];
return override ? {...s, ...normalize(override)} : {...s};
});
// Save merged to localStorage
saveLocalOverrides();
const av=document.querySelector('.view.active')?.id?.replace('view-','')||'oversikt';
renderView(av);
toast('Synkad med databas','ok');
}
subscribe();
}catch(e){
console.error(e);
toast('Kör lokalt (ingen databasanslutning)','warn');
}
}
function loadLocalOverrides(){
// Start with clean SEED
data = SEED.map(s => ({...s}));
// Apply any saved overrides
try {
const overrides = JSON.parse(localStorage.getItem('ss_overrides') || '{}');
let count = 0;
data = data.map(r => {
if(overrides[r.id]) { count++; return {...r, ...overrides[r.id]}; }
return r;
});
if(count > 0) toast(count + ' lokala ändringar laddade','info');
} catch(e) { console.error('localStorage error:', e); }
}
function saveLocalOverrides(){
try {
const overrides = {};
data.forEach(r => {
const seed = SEED_LOOKUP[r.id];
if(!seed) return;
const changed = {};
Object.keys(r).forEach(k => {
if(String(r[k]) !== String(seed[k]||'')) changed[k] = r[k];
});
if(Object.keys(changed).length > 0) overrides[r.id] = changed;
});
localStorage.setItem('ss_overrides', JSON.stringify(overrides));
} catch(e) { console.error('localStorage save error:', e); }
}
async function seedSupabase(){
toast('Laddar upp data…','info');
for(let i=0;i<SEED.length;i+=100){
const{error}=await sb.from('arenden').upsert(SEED.slice(i,i+100),{onConflict:'id'});
if(error)console.error(error);
}
data=SEED.map(normalize);
initFilters();
renderOversikt();
toast(`${SEED.length} ärenden uppladdade!`,'ok');
}
function subscribe(){
if(!sb)return;
sb.channel('arenden').on('postgres_changes',{event:'*',schema:'public',table:'arenden'},p=>{
if(p.eventType==='INSERT')data.push(normalize(p.new));
else if(p.eventType==='UPDATE'){const i=data.findIndex(r=>r.id===String(p.new.id));if(i!==-1)data[i]=normalize(p.new);}
else if(p.eventType==='DELETE')data=data.filter(r=>r.id!==String(p.old.id));
const av=document.querySelector('.view.active')?.id?.replace('view-','');
if(av)renderView(av);
toast('Uppdaterad i realtid','ok');
}).subscribe();
}
async function reseedSupabase(){
if(!sb){ toast('Ingen Supabase-koppling','warn'); return; }
if(!confirm('Lägger till saknade ärenden utan att skriva över befintliga ändringar. Fortsätta?')) return;
toast('Hämtar befintlig data…','info');
// Fetch all existing IDs from Supabase
const {data: existing, error: fetchErr} = await sb.from('arenden').select('id');
if(fetchErr){ toast('Fel: '+fetchErr.message,'warn'); return; }
const existingIds = new Set((existing||[]).map(r=>String(r.id)));
const missing = SEED.filter(r => !existingIds.has(String(r.id)));
if(!missing.length){
toast('Alla ärenden finns redan i databasen!','ok');
return;
}
toast('Lägger till '+missing.length+' saknade ärenden…','info');
for(let i=0; i<missing.length; i+=100){
const batch = missing.slice(i,i+100);
const {error} = await sb.from('arenden').insert(batch);
if(error){ console.error(error); toast('Fel: '+error.message,'warn'); return; }
}
// Reload from Supabase
const {data: rows} = await sb.from('arenden').select('*').order('avslutsdatum',{ascending:true});
if(rows){ data = rows.map(normalize); }
initFilters();
renderView(document.querySelector('.view.active')?.id?.replace('view-','')||'oversikt');
toast(missing.length+' ärenden tillagda — befintliga orörda!','ok');
}
async function refreshOmni(){
toast('Uppdatera Omni-statusar manuellt via redigera-knappen på varje ärende','info');
}
// ── Toast ─────────────────────────────────────────────────────────────────────
let toastT;
function toast(msg,type='ok'){
const el=document.getElementById('toast');
const bg={ok:'#1A5C3A',warn:'#92400e',info:'#1e40af'};
el.style.cssText=`position:fixed;bottom:24px;right:24px;padding:12px 20px;border-radius:8px;font-size:13px;font-weight:600;z-index:999;box-shadow:0 4px 12px rgba(0,0,0,.15);opacity:1;background:${bg[type]||bg.ok};color:#fff`;
el.textContent=msg;
clearTimeout(toastT);
toastT=setTimeout(()=>{el.style.opacity='0';},3000);
}
// ── Kommande avslut ──────────────────────────────────────────────────────────
// Checklist state: {arendeId: {checkKey: bool, note: string}}
const checkState = JSON.parse(localStorage.getItem('ss_checks')||'{}');
function saveChecks() {
localStorage.setItem('ss_checks', JSON.stringify(checkState));
}
const CHECKLIST = [
{
section: 'Lånetyp',
items: [
{key:'typ_enkel', label:'Ensamsök — bara en låntagare berörs'},
{key:'typ_tva', label:'Tvåsök — två låntagare, kontrollera båda'},
],
type: 'radio', // only one can be checked
},
{
section: 'Åtgärder i Aura',
items: [
{key:'avsluta_lan', label:'Avsluta lånet i Aura'},
{key:'skrivav', label:'Skriv bort personen i Aura (tvåsök — kontrollera om den andre kvarstår)'},
],
},
{
section: 'Externa meddelanden',
items: [
{key:'uc', label:'Meddela UC om att skulden är avbetald / avskriven'},
{key:'ekonomi', label:'Meddela ekonomiavdelningen'},
{key:'ansvarig', label:'Meddela ansvarig medarbetare'},
],
},
];
function getChecksForId(id) {
if (!checkState[id]) checkState[id] = {checks:{}, note:''};
return checkState[id];
}
function countDone(id) {
const state = getChecksForId(id);
const c = state.checks;
let done = 0;
const radioKeys = ['typ_enkel','typ_tva'];
if (radioKeys.some(k=>c[k])) done++;
['avsluta_lan','skrivav','uc','ekonomi','ansvarig'].forEach(k=>{ if(c[k]) done++; });
if (state.approvedBy) done++;
return {done, total: 7}; // 1 radio + 5 checks + 1 approver
}
function renderAvslut() {
const months = document.getElementById('av-months').value;
const filter = document.getElementById('av-filter').value;
const today = new Date();
let rows = data.filter(r => {
if (!r.avslutsdatum) return false;
const d = new Date(r.avslutsdatum);
if (isNaN(d) || d < today) return false;
if (months !== 'all') {
if ((d - today) / (1000*60*60*24*30.5) > Number(months)) return false;
}
return true;
});
rows.sort((a,b) => new Date(a.avslutsdatum) - new Date(b.avslutsdatum));
const openRows = rows.filter(r => countDone(r.id).done < countDone(r.id).total);
const doneRows = rows.filter(r => countDone(r.id).done >= countDone(r.id).total);
if (filter === 'open') rows = openRows;
else if (filter === 'done') rows = doneRows;
document.getElementById('av-count').textContent = rows.length + ' ärenden';
document.getElementById('nb-avslut').textContent = openRows.length || '\u2713';
function renderCard(r) {
const {done, total} = countDone(r.id);
const allDone = done >= total;
const pct = Math.round(done/total*100);
const c = getChecksForId(r.id);
const daysLeft = Math.round((new Date(r.avslutsdatum) - today) / (1000*60*60*24));
const urgency = daysLeft <= 30 ? 'color:#dc2626;font-weight:700' : daysLeft <= 90 ? 'color:#92400e;font-weight:600' : 'color:var(--muted)';
const checklistHtml = CHECKLIST.map(function(section) {
const isRadio = section.type === 'radio';
const groupKeys = section.items.map(function(i){return i.key;}).join(',');
const itemsHtml = section.items.map(function(item) {
const checked = !!c.checks[item.key];
return '<div class="av-check-item ' + (checked?'checked':'') + '" '
+ 'data-id="' + r.id + '" data-key="' + item.key + '" '
+ 'data-radio="' + isRadio + '" data-group="' + groupKeys + '" '
+ 'onclick="handleCheck(this)">'
+ '<input type="checkbox" ' + (checked?'checked':'') + ' onclick="event.preventDefault()">'
+ '<span class="av-check-label">' + item.label + '</span>'
+ '</div>';
}).join('');
return '<div class="av-section"><div class="av-section-title">' + section.section + '</div>' + itemsHtml + '</div>';
}).join('');
return '<div class="av-card ' + (allDone?'done-all':'') + '" id="avc-' + r.id + '">'
+ '<div class="av-card-hdr" onclick="toggleAvCard(\'' + r.id + '\')">'
+ '<span class="av-id">' + r.id + '</span>'
+ bdg(r.status)
+ omniTag(r.inkasso)
+ (allDone ? '<span class="av-done-badge">Klar' + (c.approvedBy ? ' — ' + c.approvedBy : '') + '</span>' : '')
+ '<span class="av-date"><span style="' + urgency + '">' + r.avslutsdatum + '</span>'
+ '<span style="color:var(--muted);font-size:11px;margin-left:6px">(' + daysLeft + ' dagar)</span></span>'
+ '<div class="av-progress"><div class="av-prog-bar"><div class="av-prog-fill" style="width:' + pct + '%"></div></div>'
+ '<span class="av-prog-text">' + done + '/' + total + '</span></div>'
+ '</div>'
+ '<div class="av-body" id="avb-' + r.id + '">'
+ checklistHtml
+ '<div class="av-note" style="margin-top:12px">'
+ '<label style="display:block;margin-bottom:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)">Kontrollerat av</label>'
+ '<div style="display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap">'
+ ['Mark','Emelie','Rani'].map(function(nm) {
var sel = c.approvedBy === nm;
return '<button onclick="setApprover(\''+r.id+'\',\''+nm+'\')" style="padding:6px 16px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;border:1.5px solid '+(sel?'#1A5C3A':'#ddd9d0')+';background:'+(sel?'#1A5C3A':'#fff')+';color:'+(sel?'#EFF0DC':'#111')+'">'+nm+'</button>';
}).join('')
+ '</div>'
+ '<label style="display:block;margin-bottom:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)">Anteckningar</label>'
+ '<textarea placeholder="Fritext..." oninput="saveNote(\'' + r.id + '\',this.value)">' + (c.note||'') + '</textarea>'
+ '</div></div></div>';
}
if (!rows.length) {
document.getElementById('avslut-list').innerHTML = '<div style="text-align:center;padding:40px;color:var(--muted)">Inga kommande avslut hittades.</div>';
return;
}
var out = '';
if (filter !== 'done' && openRows.length) {
out += openRows.map(renderCard).join('');
}
if (filter !== 'open' && doneRows.length) {
out += '<div style="margin-top:28px;margin-bottom:10px;display:flex;align-items:center;gap:12px;">'
+ '<div style="flex:1;height:1px;background:var(--border)"></div>'
+ '<span style="font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#15803d;white-space:nowrap">Klara \u00e4renden (' + doneRows.length + ')</span>'
+ '<div style="flex:1;height:1px;background:var(--border)"></div>'
+ '</div>';
out += doneRows.map(renderCard).join('');
}
document.getElementById('avslut-list').innerHTML = out;
}
function toggleAvCard(id) {
const body = document.getElementById('avb-'+id);
body.classList.toggle('open');
}
function handleCheck(el) {
const id = el.dataset.id;
const key = el.dataset.key;
const isRadio = el.dataset.radio === 'true';
const group = el.dataset.group ? el.dataset.group.split(',') : [];
toggleCheck(id, key, isRadio, group);
}
function toggleCheck(id, key, isRadio, radioGroup) {
const c = getChecksForId(id);
if (isRadio) {
const wasChecked = !!c.checks[key];
// Uncheck all in group first
radioGroup.forEach(k => { c.checks[k] = false; });
// Toggle: if it was checked, leave unchecked; otherwise check it
if (!wasChecked) c.checks[key] = true;
} else {
c.checks[key] = !c.checks[key];
}
saveChecks();
renderAvslut();
// Re-open the card
setTimeout(() => {
const body = document.getElementById('avb-'+id);
if (body) body.classList.add('open');
}, 10);
}
function saveNote(id, val) {
const c = getChecksForId(id);
c.note = val;
saveChecks();
}
function setApprover(id, name) {
const c = getChecksForId(id);
c.approvedBy = c.approvedBy === name ? '' : name; // toggle
saveChecks();
// Re-render and re-open card
renderAvslut();
setTimeout(function() {
const body = document.getElementById('avb-' + id);
if (body) body.classList.add('open');
}, 10);
}
// ── Init ──────────────────────────────────────────────────────────────────────
data = SEED.map(normalize);
initFilters();
renderOversikt();
// Then try Supabase in background
if(sb) loadSupabase();
</script>
</body>
</html>