Total de clientes
{{ resumo.total || 0 }}
Ativos
{{ resumo.ativos || 0 }}
Bloqueados
{{ resumo.bloqueados || 0 }}
Vencendo (7 dias)
{{ resumo.vencendo || 0 }}
Expirados
{{ resumo.expirados || 0 }}
Acessos 24h
{{ resumo.acessos24h || 0 }}
Recebido no mês
{{ moeda(dash.kpi.recebido_mes) }}
{{ moeda(dash.kpi.recebido_12m) }} nos últimos 12 meses
A receber (30 dias)
{{ moeda(dash.kpi.a_receber_30d) }}
{{ moeda(dash.kpi.a_receber_total) }} em cobranças emitidas
Em atraso
{{ moeda(dash.kpi.em_atraso) }}
Média mensal recebida
{{ moeda(dash.kpi.recebido_3m / 3) }}
últimos 3 meses · contratado no cadastro {{ moeda(dash.kpi.mrr_contratado) }}
Ticket médio por cliente
{{ moeda(ticketMedio) }}
média mensal · {{ dash.kpi.pagantes_3m }} pagantes (3 meses)
Receita mês a mês
— 12 meses anteriores + 6 à frente (meses futuros = cobranças já emitidas)
| Mês | Recebido | A receber | Em atraso | Novos clientes | Licenças vencendo |
|---|---|---|---|---|---|
| {{ rotuloMes(m.mes) }} (previsto) | {{ moeda(m.recebido) }} | {{ moeda(m.a_receber) }} | {{ moeda(m.em_atraso) }} | {{ m.novos_clientes }} | {{ m.vencimentos }} |
Receita por cliente — recebido nos últimos 12 meses
Novos clientes por mês
Licenças que vencem por mês — clientes ativos
Clientes ativos por plano
| {{ p.plano === 'sem_plano' ? 'Sem plano (avulso)' : labelPlanoCurto(p.plano) }} | {{ p.qtd }} | |
| Sem clientes ativos | ||
Clientes ativos por origem
| {{ o.origem }} | {{ o.qtd }} | |
| Sem clientes ativos | ||
{{ dashErro }}
| Ações | CNPJ | Razão social | Revenda | Status | API | Fiscal | Retag. | PDV | Liberado até | Último acesso |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ formatarCnpj(c.cnpj) }} |
{{ c.razao_social }}
SaaS
{{ labelPlanoCurto(c.plano_codigo) }}
{{ c.nome_fantasia }}
|
BLOQ EXP VENC OK | {{ c.versao_api_retaguarda || '—' }} | {{ c.versao_api_fiscal || '—' }} | {{ c.versao_retaguarda || '—' }} | {{ c.versao_pdv || '—' }} | {{ c.liberado_ate ? formatarData(c.liberado_ate) : '—' }} | {{ c.ultimo_acesso ? formatarDataHora(c.ultimo_acesso) : 'nunca' }} | ||
| Nenhum cliente cadastrado | ||||||||||
{{ erroForm }}
| Data | App | Versão | IP | Hostname | Resultado |
|---|---|---|---|---|---|
| {{ formatarDataHora(l.data_consulta) }} | {{ l.app }} | {{ l.versao || '—' }} | {{ l.ip || '—' }} | {{ l.hostname || '—' }} | {{ l.resultado }} |
| Sem registros | |||||
| Ações | Ordem | Código | Título | Padrão | Sempre inclusa | Condicional | Ativa |
|---|---|---|---|---|---|---|---|
| {{ c.ordem }} | {{ c.codigo }} | {{ c.titulo }} | {{ c.padrao ? '✓' : '—' }} | — | {{ c.condicional || '—' }} | {{ c.ativa ? '✓' : '✗' }} | |
| Nenhuma cláusula cadastrada. | |||||||
{{ erroClausula }}
{{ erroScript }}
Passo 1
Abra o PowerShell como Administrador no PC do cliente.
Passo 2
Cole o script abaixo e pressione Enter.
Passo 3
Aguarde o resumo verde "Atualizacao concluida" no fim.
O que o script faz
- Para os serviços
3aSystem.ApiRetaguarda,3aSystem.ApiFiscale3aSystem.Agente - Faz backup das pastas das APIs com timestamp (
_backup_YYYYMMDD_HHMMSS) - Baixa as últimas versões direto do servidor de updates e extrai sobrescrevendo
- Preserva configurações locais:
appsettings.json,conf.ini, pastaCertificado/ - Reinstala Tauri Retaguarda e PDV via setup silencioso (
/S) - Reinicia os serviços e valida endpoints HTTP
:5000e:8001
{{ erroScriptTef }}
Passo 1
Abra o PowerShell como Administrador no PC do caixa.
Passo 2
Cole o script abaixo. Depois refaça a INSTALACAO no pinpad (Menu TEF).
Passo 3
Cadastre o terminal na Retaguarda (aba TEF) e teste a 1ª venda.
O que o script faz — PayGo
- Para serviço
3aSystem.ApiTefse estiver rodando - Backup em
C:\3aSystem\ApiTef.backup_YYYYMMDD_HHMMSS - Baixa
apitef-latest.zipdo servidor de updates e extrai emC:\3aSystem\ApiTef\ - Valida
DinoCommerce.ApiTef.exe+PGWebLib.dll - Instala NSSM (se ausente) e registra
3aSystem.ApiTefcomo serviço Windows AutoStart - Abre porta
8787/tcpno firewall (WebSocket local pro PDV) - Preserva
appsettings.jsonlocal ao atualizar - Inicia e valida
ws://127.0.0.1:8787
CITEF / SiTef (SoftExpress)
O CITEF/SiTef usa o Agente CliSiTef da Software Express — pacote de 3º, não redistribuído pela 3aSystem. O script abre a página oficial de downloads e mostra os passos manuais:
- Baixe em softwareexpress.com.br/downloads
- Instale como serviço (próximo → próximo → concluir). Escuta em
127.0.0.1:59002 - No Retaguarda → Terminais PDV → aba TEF: Provedor = CITEF, Ativo ✓
- No PDV → Config → aba CITEF → Testar Conexão
- Menu Admin SiTef → INSTALACAO → preencha Loja/Terminal/Endereço
{{ erroRev }}
Revendas
{{ revendas.length }}
Ativas
{{ revendas.filter(r=>r.ativo).length }}
Clientes no canal
{{ revendas.reduce((s,r)=>s+r.total_clientes,0) }}
Receita 3aSystem/mês
{{ moeda(revendas.reduce((s,r)=>s+Number(r.receita_3a),0)) }}
| Ações | Revenda | CNPJ | Status | Clientes | % | Vendas/mês | Receita 3a |
|---|---|---|---|---|---|---|---|
|
{{ r.razao_social }}
{{ r.nome_fantasia }}
|
{{ r.cnpj }} | Ativa Bloqueada | {{ r.clientes_ativos }}/{{ r.total_clientes }} | {{ Number(r.percentual_repasse).toFixed(2) }}% | {{ moeda(r.faturamento_revenda) }} | {{ moeda(r.receita_3a) }} | |
| Nenhuma revenda cadastrada. | |||||||
{{ erroRev }}
{{ erroRev }}
| CNPJ | Razão social | Status | Liberado até | Mensalidade | Receita 3a |
|---|---|---|---|---|---|
| {{ c.cnpj }} | {{ c.razao_social }} | Ativo Pendente Bloqueado | {{ c.liberado_ate ? new Date(c.liberado_ate).toLocaleDateString('pt-BR') : '—' }} | {{ moeda(c.valor_mensalidade) }} | {{ moeda(c.receita_3a) }} |
| Esta revenda ainda não cadastrou clientes. | |||||
Carregando...
CPU
{{ monitor.cpu.cores }} cores
{{ monitor.cpu.modelo }}
RAM
{{ monitor.ram.usadoGB }} / {{ monitor.ram.totalGB }} GB
{{ monitor.ram.percUsado }}% usado · livre {{ monitor.ram.livreGB }} GB
Disco {{ d.letra || '?' }}:
{{ d.usadoGB }} / {{ d.totalGB }} GB
{{ d.percUsado }}% · livre {{ d.livreGB }} GB
{{ d.erro }}
Uptime servidor
{{ formatarUptime(monitor.uptime.servidor) }}
Uptime licenca-server
{{ formatarUptime(monitor.uptime.processo) }}
{{ monitor.erro }}
Total
{{ leadsTotais.total || 0 }}
Com WhatsApp
{{ leadsTotais.com_wa || 0 }}
Com CNPJ
{{ leadsTotais.com_cnpj || 0 }}
Contatados
{{ leadsTotais.contatados || 0 }}
| Ações | Nome | UF | Cidade | CNPJ | Tel/Email | Status | |
|---|---|---|---|---|---|---|---|
| {{ l.nome }} | {{ l.uf || '—' }} | {{ l.cidade || '—' }} | {{ l.cnpj || '—' }} | {{ l.whatsapp || '—' }} | {{ l.telefone_fixo || l.email || '—' }} | {{ l.status }} | |
| Nenhum lead encontrado | |||||||
| Ações | Revenda | Itens | Licenças | Usadas | Valor total | Boletos | Status |
|---|---|---|---|---|---|---|---|
|
{{ p.revenda_nome || '—' }}
{{ fmtCnpj(p.revenda_cnpj) }}
|
{{ p.total_itens || 0 }} | {{ p.total_licencas || 0 }} | {{ p.total_usadas || 0 }} | R$ {{ Number(p.valor_total_negociado).toFixed(2) }} | {{ p.boletos_pagos }}✓ / {{ p.boletos_pendentes }}⌛ | {{ p.status }} | |
| Nenhum pacote vendido ainda. | |||||||
Composição
{{ (pacoteDetalhe.itens || []).length }}
itens
Estoque total
{{ totalLicencasPacoteDetalhe }}
licenças
Ainda não usadas
{{ disponivelPacoteDetalhe }}
disp.
Valor negociado
R$ {{ Number(pacoteDetalhe.pacote.valor_total_negociado).toFixed(2) }}
Recebido este mês
R$ {{ (finTotais.recebido_mes||0).toLocaleString('pt-BR',{minimumFractionDigits:2}) }}
A receber
R$ {{ (finTotais.a_receber_total||0).toLocaleString('pt-BR',{minimumFractionDigits:2}) }}
Em atraso
R$ {{ (finTotais.atrasado_total||0).toLocaleString('pt-BR',{minimumFractionDigits:2}) }}
Ao salvar novos preços: vale a partir de HOJE para novos cadastros.
Clientes existentes MANTÊM o preço atual — o snapshot foi congelado no cadastro.
| Ações | Nº | Cliente | Plano | Mensal | Status | Data |
|---|---|---|---|---|---|---|
| {{ p.numero }} | {{ p.nome_fantasia || p.razao_social }} {{ formatarCnpj(p.cnpj) }} |
{{ p.modulo }} · {{ p.hospedagem==='NUVEM'?'Nuvem':'Servidor cliente' }} · {{ p.usuarios }} usr | {{ moeda(p.mensal_total) }} | {{ p.status }} | {{ formatarData(p.criado_em) }} | |
| Nenhuma proposta. Clique em "Nova Proposta". | ||||||
Nenhuma cláusula cadastrada.
{{ totalSelecionadas }} cláusula(s) selecionada(s)
Salve a proposta primeiro para poder anexar arquivos.
| Ações | Arquivo | Tamanho | Enviado em |
|---|---|---|---|
{{ a.nome_original }} |
{{ fmtTam(a.tamanho) }} | {{ formatarDataHora(a.criado_em) }} | |
| Nenhum arquivo anexado ainda. | |||
Mensalidade base{{ moeda(prop.valorMensalidade) }}
+ {{ usuariosExtra }} usuário(s){{ moeda(usuariosExtra*prop.valorUsuarioAdicional) }}
+ App{{ moeda(prop.valorApp) }}
+ {{ pdvsExtra }} PDV(s){{ moeda(pdvsExtra*prop.valorPdvAdicional) }}
+ Cardápio Digital{{ moeda(prop.valorCardapio) }}
+ Bot WhatsApp{{ moeda(prop.valorBotWhatsapp) }}
+ MDF-e{{ moeda(prop.valorMdfe) }}
+ TEF PayGo ({{ prop.tefPaygoQtd }} term.){{ moeda(tefPaygoValor) }}
+ TEF SmartTef ({{ prop.tefSmartTefQtd }} term.){{ moeda(tefSmartTefValor) }}
- Desconto-{{ moeda(prop.descontoMensal) }}
Mensal{{ moeda(totMensal) }}
≈ {{ pctSM(totMensal) }} do salário mínimo
Pago até o vencimento (-{{ prop.descontoPontualidadePct }}%){{ moeda(totMensalComDesconto) }}
economia de {{ moeda(totMensalDescontoValor) }} / mês
Implantação + treino{{ prop.valorMigracaoDados>0 ? ' + migração' : '' }}{{ moeda(totInicial) }}
≈ {{ pctSM(totInicial) }} do salário mínimo
{{ erroProp }}