Sistema de Gestão · Sandra Otto Advocacia
Sandra Otto Advocacia
🔍
SO
Sandra Otto
Online
Carregando...
// ── CLOCK ────────────────────────────────────────────────── (function clock(){ const el=document.getElementById('top-clock'); if(el){const n=new Date();el.textContent='🕐 '+n.getHours().toString().padStart(2,'0')+':'+n.getMinutes().toString().padStart(2,'0');} setTimeout(clock,10000); })(); // ── TOP TAB SYNC ─────────────────────────────────────────── const tabMap={dash:'dash',feed:'dash',negocios:'negocios',crm:'crm',financeiro:'financeiro',rh:'rh',clientes:'juridico',processos:'juridico',jurtasks:'juridico',agenda:'dash',documentos:'dash',marketing:'marketing',messenger:'messenger',cos:'esg',deals:'esg',impl:'esg',tasks:'esg',cal:'esg',settings:'settings',company:'esg',perfil:'settings'}; function syncTopTab(view){ const key=tabMap[view]||'dash'; document.querySelectorAll('.top-tab').forEach(t=>t.classList.toggle('on',t.dataset.v===key)); } const _origNav=nav; function nav(view,params={}){ _origNav(view,params); syncTopTab(view); } // ── UTILS (new) ────────────────────────────────────────── function dtNow(){const d=new Date();const ds=['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'];const ms=['janeiro','fevereiro','março','abril','maio','junho','julho','agosto','setembro','outubro','novembro','dezembro'];return ds[d.getDay()]+', '+d.getDate()+' de '+ms[d.getMonth()]+' de '+d.getFullYear();} // ── DASHBOARD (GCJ Inove layout) ────────────────────────── async function rDash(){ document.getElementById('cta').textContent=''; document.getElementById('cta').onclick=null; document.getElementById('tb-bc').innerHTML='Painel'; setLoad(); try{ const[esgSt,jurSt,jurtasks,impl,cos]=await Promise.all([ GET('esg/stats'),GET('stats'),GET('jurtasks'),GET('esg/implementations'),GET('esg/companies') ]); const pendFin=parseFloat(jurSt.receita_pendente||0); const despesas=parseFloat(jurSt.total_despesas||0); const resultado=pendFin-despesas; const tasksPend=(jurtasks||[]).filter(t=>t.status!=='Concluído').length; const topTasks=(jurtasks||[]).filter(t=>t.status!=='Concluído').slice(0,3); const nome=document.getElementById('sb-un')?.textContent||'Sandra'; const hr=new Date().getHours(); const saud=hr<12?'Bom dia':hr<18?'Boa tarde':'Boa noite'; document.getElementById('ct').innerHTML=`
☀️ ${saud}, ${nome.split(' ')[0]}!
${dtNow()} · Sandra Otto Advocacia
Honorários Pendentes
R$ ${Number(pendFin).toLocaleString('pt-BR',{minimumFractionDigits:0,maximumFractionDigits:0})}
Aguardando recebimento
Despesas
R$ ${Number(despesas).toLocaleString('pt-BR',{minimumFractionDigits:0,maximumFractionDigits:0})}
Total lançado
Resultado
R$ ${Number(Math.abs(resultado)).toLocaleString('pt-BR',{minimumFractionDigits:0,maximumFractionDigits:0})}
${resultado>=0?'Superávit':'Déficit'}
Processos Ativos
${jurSt.processos_ativos||0}
Em andamento
Clientes Ativos
${jurSt.clientes_ativos||0}
Cadastrados no sistema
Documentos
${jurSt.total_documentos||0}
Registrados
Tarefas
${tasksPend}
Pendentes
Audiências Hoje
${jurSt.audiencias_hoje||0}
Agendadas
Empresas ESG
${esgSt.companies||0}
Cadastradas
Pipeline ESG
${esgSt.deals_open||0}
Negócios abertos
Implementações ESG
${esgSt.impl_open||0}
Em andamento
Tarefas ESG
${(esgSt.tasks_pending||0)+(esgSt.tasks_progress||0)}
Abertas
📣
Feed da Equipe
Comunicados, eventos e arquivos · visível para todos
Nenhuma publicação ainda. Seja o primeiro a compartilhar!
Acesso Rápido
📅
Calendário
Agenda e eventos
💰
Financeiro
Fluxo e honorários
📄
Documentos
Arquivos e contratos
Tarefas
Pendentes: ${tasksPend}
🌿
ESG
Empresas e metas
⚖️
Processos
Casos ativos: ${jurSt.processos_ativos||0}
`; }catch(e){errPage(e);} } // ── FEED ───────────────────────────────────────────────── function rFeed(){ document.getElementById('cta').textContent='+ Nova Publicação'; document.getElementById('cta').onclick=null; document.getElementById('tb-bc').innerHTML='Feed'; document.getElementById('ct').innerHTML=`
📣
Feed da Equipe
Comunicados, eventos e arquivos
📰
Nenhuma publicação ainda
Seja o primeiro a compartilhar uma atualização com a equipe.
`; } // ── NEGÓCIOS / PIPELINES ────────────────────────────────── function rNegocios(){ document.getElementById('cta').textContent='+ Novo Negócio'; document.getElementById('cta').onclick=null; document.getElementById('tb-bc').innerHTML='Negócios / Pipelines'; const cols=['Prospecção','Proposta','Negociação','Fechado']; const colors=['#1F3763','#0059b3','#e65100','#62974B']; document.getElementById('ct').innerHTML=`
${cols.map((c,i)=>`
${c} 0
Nenhum negócio
`).join('')}
`; } // ── CRM / LEADS ─────────────────────────────────────────── function rCRM(){ document.getElementById('cta').textContent='+ Novo Lead'; document.getElementById('cta').onclick=null; document.getElementById('tb-bc').innerHTML='CRM / Leads'; document.getElementById('ct').innerHTML=`
NomeEmailTelefoneOrigemStatusData
Nenhum lead cadastrado
`; } // ── RH ─────────────────────────────────────────────────── function rRH(){ document.getElementById('cta').textContent='+ Novo Colaborador'; document.getElementById('cta').onclick=null; document.getElementById('tb-bc').innerHTML='RH — Colaboradores'; document.getElementById('ct').innerHTML=`
${[['👔','Colaboradores','0','Ativos'],['📅','Férias','0','Em andamento'],['✅','Avaliações','0','Pendentes'],['📋','Contratos','0','Ativos']].map(([ic,lb,v,h])=>`
${lb}
${v}
${h}
`).join('')}
NomeCargoDepartamentoAdmissãoStatus
Nenhum colaborador cadastrado
`; } // ── MARKETING ────────────────────────────────────────────── function rMarketing(){ document.getElementById('cta').textContent='+ Nova Campanha'; document.getElementById('cta').onclick=null; document.getElementById('tb-bc').innerHTML='Marketing'; document.getElementById('ct').innerHTML=`
${[['📣','Campanhas Ativas','0','Em execução'],['👤','Leads Gerados','0','Este mês'],['📧','E-mails Enviados','0','Último envio'],['📊','Taxa Conversão','0%','Média geral']].map(([ic,lb,v,h])=>`
${lb}
${v}
${h}
`).join('')}
📣
Nenhuma campanha ativa
Crie sua primeira campanha de marketing para o escritório.
`; } // ── MESSENGER ────────────────────────────────────────────── function rMessenger(){ document.getElementById('cta').textContent='+ Nova Conversa'; document.getElementById('cta').onclick=null; document.getElementById('tb-bc').innerHTML='Messenger'; document.getElementById('ct').innerHTML=`
Nenhuma conversa
💬
Selecione uma conversa
ou inicie uma nova mensagem
`; }