chore(tenants): conteudo de publico/ atualizado
This commit is contained in:
@@ -1801,7 +1801,7 @@ data:
|
||||
|
||||
<footer class="direitos">© 2026 Athletic Map. Todos os direitos reservados.</footer>
|
||||
|
||||
<script src="/publico/minha-conta.js?v=2.88"></script>
|
||||
<script src="/publico/minha-conta.js?v=2.89"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1988,14 +1988,18 @@ data:
|
||||
return n ? n.charAt(0).toUpperCase() + n.slice(1) : "—";
|
||||
}
|
||||
|
||||
/* Tenant de DEMONSTRACAO do dono: o servidor marca (`demonstracao: true`). O
|
||||
cartao diz isso ao lado da situacao, e nao ganha "Trocar de plano" nem
|
||||
"Modulos avulsos" — nao ha cobranca, e o servidor recusaria de qualquer jeito. */
|
||||
function cartao(p) {
|
||||
var s = SITUACAO[p.situacao] || ["neutro", String(p.situacao || "").toLowerCase()];
|
||||
var podeEntrar = p.endereco && p.situacao === "ATIVA";
|
||||
return '<article class="produto ' + classeDoPlano(p.plano) + '"'
|
||||
return '<article class="produto ' + classeDoPlano(p.plano) + (p.demonstracao ? " demonstracao" : "") + '"'
|
||||
+ (p.tenant ? ' data-tenant="' + escapar(p.tenant) + '"' : "") + ">"
|
||||
+ '<span class="faixa-plano">Plano ' + escapar(nomeDoPlano(p.plano)) + "</span>"
|
||||
+ "<h2>" + escapar(p.escolinha || "Sua escolinha") + "</h2>"
|
||||
+ '<span class="selo ' + s[0] + '">' + s[1] + "</span>"
|
||||
+ (p.demonstracao ? '<span class="selo neutro">demonstração — sem cobrança</span>' : "")
|
||||
+ (podeEntrar
|
||||
? '<a class="btn" href="' + escapar(p.endereco) + '">Entrar →</a>'
|
||||
: '<p class="ajuda">' + (p.situacao === "PREPARANDO"
|
||||
@@ -2017,7 +2021,9 @@ data:
|
||||
produtos.innerHTML = (lista || []).map(cartao).join("");
|
||||
nenhum.classList.toggle("oculto", (lista || []).length > 0);
|
||||
mostrar(conteudo);
|
||||
(lista || []).forEach(function (p) { if (p.tenant && p.situacao === "ATIVA") acrescentarBotaoDePlano(p.tenant); });
|
||||
(lista || []).forEach(function (p) {
|
||||
if (p.tenant && p.situacao === "ATIVA" && !p.demonstracao) acrescentarBotaoDePlano(p.tenant);
|
||||
});
|
||||
return Promise.all([carregarCobranca(), carregarTermo(), carregarFaturas(), carregarVisao(),
|
||||
carregarTermosDeUso()]);
|
||||
});
|
||||
@@ -3171,7 +3177,7 @@ data:
|
||||
<option value="NASCENDO">Nascendo</option>
|
||||
</select>
|
||||
<label class="filtro"><input type="checkbox" id="soAtencao"> só com alerta</label>
|
||||
<label class="filtro"><input type="checkbox" id="semTeste"> esconder testes</label>
|
||||
<label class="filtro"><input type="checkbox" id="semTeste"> esconder testes e demonstrações</label>
|
||||
</div>
|
||||
<div class="tabela-rolagem">
|
||||
<table class="tabela clientes">
|
||||
@@ -3334,7 +3340,7 @@ data:
|
||||
|
||||
</main>
|
||||
|
||||
<script src="/publico/painel.js?v=2.86"></script>
|
||||
<script src="/publico/painel.js?v=2.87"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -3630,9 +3636,13 @@ data:
|
||||
bloco("Recebido desde o início", reaisCurto(i.recebidoTotal),
|
||||
i.clientesSemDadoDoAsaas > 0 ? i.clientesSemDadoDoAsaas + " sem resposta do Asaas" : "extrato do Asaas", "")
|
||||
].join("");
|
||||
// Teste e demonstracao aparecem na lista, mas nao nos numeros — e a tela diz.
|
||||
var foraDosNumeros = [];
|
||||
if (i.contasDeTeste > 0) foraDosNumeros.push(i.contasDeTeste + " de teste");
|
||||
if (i.demonstracoes > 0) foraDosNumeros.push(i.demonstracoes + " de demonstração");
|
||||
$("kpiClientes").innerHTML = [
|
||||
bloco("Clientes ativos", esc(i.clientesAtivos),
|
||||
i.contasDeTeste > 0 ? "+ " + i.contasDeTeste + " de teste (fora dos números)" : "", "ok"),
|
||||
foraDosNumeros.length ? "+ " + foraDosNumeros.join(", ") + " (fora dos números)" : "", "ok"),
|
||||
bloco("Novos no mês", esc(i.novosNoMes), comparacao(i.novosNoMes, i.novosMesAnterior), ""),
|
||||
bloco("Leads no mês", esc(i.leadsNoMes), comparacao(i.leadsNoMes, i.leadsMesAnterior), ""),
|
||||
bloco("Conversão", pct(i.conversao), "de lead para cliente pagante", ""),
|
||||
@@ -3671,7 +3681,7 @@ data:
|
||||
if (plano && c.plano !== plano) return false;
|
||||
if (estado && (c.estado || "NASCENDO") !== estado) return false;
|
||||
if (soAtencao && !(c.alertas || []).length) return false;
|
||||
if (semTeste && c.teste) return false;
|
||||
if (semTeste && (c.teste || c.demonstracao)) return false;
|
||||
if (busca) {
|
||||
var alvo = [c.cliente, c.escolinha, c.email, c.cidade, c.tenant, c.whatsapp, c.documento]
|
||||
.join(" ").toLowerCase();
|
||||
@@ -3701,7 +3711,9 @@ data:
|
||||
}
|
||||
|
||||
var SITUACAO_ASAAS = { ACTIVE: "ativa", INACTIVE: "encerrada", EXPIRED: "expirada" };
|
||||
function assinaturaNoAsaas(a) {
|
||||
/* A demonstracao nao existe no Asaas DE PROPOSITO: nao e "nao existe" em vermelho. */
|
||||
function assinaturaNoAsaas(a, c) {
|
||||
if (c && c.demonstracao) return "demonstração — sem cobrança";
|
||||
if (!a || !a.disponivel) return "indisponível agora";
|
||||
if (!a.existe) return '<b class="vermelho">não existe</b>';
|
||||
var s = SITUACAO_ASAAS[a.situacao] || txt(a.situacao);
|
||||
@@ -3738,10 +3750,11 @@ data:
|
||||
var gravidade = (c.alertas || []).reduce(function (g, a) {
|
||||
return a.gravidade === "critico" ? "critico" : (g === "critico" ? g : (a.gravidade === "alerta" ? "alerta" : g));
|
||||
}, "");
|
||||
return '<tr class="clicavel' + (gravidade ? " linha-" + gravidade : "") + (c.teste ? " teste" : "")
|
||||
return '<tr class="clicavel' + (gravidade ? " linha-" + gravidade : "") + (c.teste || c.demonstracao ? " teste" : "")
|
||||
+ (!c.tenant ? " destaque" : "") + '" data-assinatura="' + esc(c.assinatura) + '" tabindex="0">'
|
||||
+ "<td><b>" + txt(c.cliente) + "</b>"
|
||||
+ (c.teste ? ' <span class="selo neutro">teste</span>' : "")
|
||||
+ (c.demonstracao ? ' <span class="selo neutro">demonstração</span>' : "")
|
||||
+ '<span class="sub">' + (c.tenant
|
||||
? '<a href="' + esc(c.endereco) + '" target="_blank" rel="noopener noreferrer">' + esc(c.tenant) + "</a>"
|
||||
: "sem tenant")
|
||||
@@ -3750,9 +3763,9 @@ data:
|
||||
+ "<td>" + etiquetaPlano(c) + "</td>"
|
||||
+ "<td>" + selo(c.estado, c.tenant) + '<span class="sub">' + (c.diasDeCliente !== null && c.diasDeCliente !== undefined
|
||||
? "cliente há " + esc(c.diasDeCliente) + " dia(s)" : "") + "</span></td>"
|
||||
+ '<td class="num">' + reais(c.valorMensal) + diferencaDeTabela(c) + "</td>"
|
||||
+ '<td class="num">' + (f.disponivel ? reais(f.totalPago) + '<span class="sub">' + esc(f.cobrancasPagas) + " cobrança(s)</span>" : "—") + "</td>"
|
||||
+ "<td>" + proximaCobranca(f) + "</td>"
|
||||
+ '<td class="num">' + (c.demonstracao ? '<span class="ajuda">sem cobrança</span>' : reais(c.valorMensal) + diferencaDeTabela(c)) + "</td>"
|
||||
+ '<td class="num">' + (c.demonstracao ? "—" : f.disponivel ? reais(f.totalPago) + '<span class="sub">' + esc(f.cobrancasPagas) + " cobrança(s)</span>" : "—") + "</td>"
|
||||
+ "<td>" + (c.demonstracao ? '<span class="ajuda">—</span>' : proximaCobranca(f)) + "</td>"
|
||||
+ "<td>" + usoCurto(c.uso, c.usoDeDentro) + "</td>"
|
||||
+ "<td>" + seloSubconta(c.subconta) + "</td>"
|
||||
+ "</tr>";
|
||||
@@ -3778,7 +3791,9 @@ data:
|
||||
+ esc(a.titulo) + '</b><span class="sub">' + esc(a.detalhe) + "</span></div></li>";
|
||||
}).join("");
|
||||
|
||||
var extrato = f.disponivel
|
||||
var extrato = c.demonstracao
|
||||
? '<p class="ajuda">Tenant de demonstração: não há assinatura nem cobrança no Asaas.</p>'
|
||||
: f.disponivel
|
||||
? ((f.cobrancas || []).length
|
||||
? '<table class="tabela"><thead><tr><th>Vencimento</th><th>Pago em</th><th>Forma</th><th class="num">Valor</th><th class="num">Líquido</th><th>Situação</th><th></th></tr></thead><tbody>'
|
||||
+ f.cobrancas.map(function (cb) {
|
||||
@@ -3799,7 +3814,7 @@ data:
|
||||
return '<header class="ficha-topo ' + classePlano(c.plano) + '">'
|
||||
+ '<span class="etiqueta ' + classePlano(c.plano) + '">Plano ' + esc(nomePlano(c.plano))
|
||||
+ (c.ciclo === "ANUAL" ? " · anual" : " · mensal") + "</span>"
|
||||
+ '<h2 id="fichaTitulo">' + txt(c.cliente) + "</h2>"
|
||||
+ '<h2 id="fichaTitulo">' + txt(c.cliente) + (c.demonstracao ? ' <span class="selo neutro">demonstração</span>' : "") + "</h2>"
|
||||
+ '<p class="sub">' + (c.escolinha && c.escolinha !== c.cliente ? esc(c.escolinha) + " · " : "")
|
||||
+ selo(c.estado, c.tenant) + (c.estadoDesde ? " desde " + dataHora(c.estadoDesde) : "") + "</p>"
|
||||
+ '<div class="atalhos">'
|
||||
@@ -3821,14 +3836,17 @@ data:
|
||||
+ '<section><h3>Assinatura</h3><dl>'
|
||||
+ item("Plano", esc(nomePlano(c.plano)) + " " + (c.ciclo === "ANUAL" ? "anual" : "mensal"))
|
||||
+ item("Valor do ciclo", reais(c.valorDoCiclo)) + item("Vale por mês", reais(c.valorMensal) + diferencaDeTabela(c))
|
||||
+ item("De onde vem o valor", c.valorDaFonte === "asaas" ? "a assinatura no Asaas" : "a tabela de preços (Asaas não respondeu)")
|
||||
+ item("Situação no Asaas", assinaturaNoAsaas(c.assinaturaNoAsaas))
|
||||
+ item("De onde vem o valor", c.demonstracao ? "demonstração — sem cobrança"
|
||||
: c.valorDaFonte === "asaas" ? "a assinatura no Asaas" : "a tabela de preços (Asaas não respondeu)")
|
||||
+ item("Situação no Asaas", assinaturaNoAsaas(c.assinaturaNoAsaas, c))
|
||||
+ item("Contratado em", dataHora(c.contratadoEm)) + item("Cliente há", c.diasDeCliente === null || c.diasDeCliente === undefined ? "—" : esc(c.diasDeCliente) + " dia(s)")
|
||||
+ item("Assinatura no Asaas", txt(c.assinatura)) + item("Cliente no Asaas", txt(c.clienteNoProvedor))
|
||||
+ "</dl></section>"
|
||||
|
||||
+ '<section><h3>Dinheiro</h3><dl>'
|
||||
+ (f.disponivel
|
||||
+ (c.demonstracao
|
||||
? item("Cobrança", "nenhuma — tenant de demonstração")
|
||||
: f.disponivel
|
||||
? item("Total pago", reais(f.totalPago)) + item("Líquido (após taxas)", reais(f.totalLiquido))
|
||||
+ item("Taxas pagas", reais(f.taxas))
|
||||
+ item("Último pagamento", f.ultimoPagamento ? data(f.ultimoPagamento.data) + " · " + reais(f.ultimoPagamento.valor) + " · " + txt(f.ultimoPagamento.forma) : "—")
|
||||
|
||||
@@ -1801,7 +1801,7 @@ data:
|
||||
|
||||
<footer class="direitos">© 2026 Athletic Map. Todos os direitos reservados.</footer>
|
||||
|
||||
<script src="/publico/minha-conta.js?v=2.88"></script>
|
||||
<script src="/publico/minha-conta.js?v=2.89"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1988,14 +1988,18 @@ data:
|
||||
return n ? n.charAt(0).toUpperCase() + n.slice(1) : "—";
|
||||
}
|
||||
|
||||
/* Tenant de DEMONSTRACAO do dono: o servidor marca (`demonstracao: true`). O
|
||||
cartao diz isso ao lado da situacao, e nao ganha "Trocar de plano" nem
|
||||
"Modulos avulsos" — nao ha cobranca, e o servidor recusaria de qualquer jeito. */
|
||||
function cartao(p) {
|
||||
var s = SITUACAO[p.situacao] || ["neutro", String(p.situacao || "").toLowerCase()];
|
||||
var podeEntrar = p.endereco && p.situacao === "ATIVA";
|
||||
return '<article class="produto ' + classeDoPlano(p.plano) + '"'
|
||||
return '<article class="produto ' + classeDoPlano(p.plano) + (p.demonstracao ? " demonstracao" : "") + '"'
|
||||
+ (p.tenant ? ' data-tenant="' + escapar(p.tenant) + '"' : "") + ">"
|
||||
+ '<span class="faixa-plano">Plano ' + escapar(nomeDoPlano(p.plano)) + "</span>"
|
||||
+ "<h2>" + escapar(p.escolinha || "Sua escolinha") + "</h2>"
|
||||
+ '<span class="selo ' + s[0] + '">' + s[1] + "</span>"
|
||||
+ (p.demonstracao ? '<span class="selo neutro">demonstração — sem cobrança</span>' : "")
|
||||
+ (podeEntrar
|
||||
? '<a class="btn" href="' + escapar(p.endereco) + '">Entrar →</a>'
|
||||
: '<p class="ajuda">' + (p.situacao === "PREPARANDO"
|
||||
@@ -2017,7 +2021,9 @@ data:
|
||||
produtos.innerHTML = (lista || []).map(cartao).join("");
|
||||
nenhum.classList.toggle("oculto", (lista || []).length > 0);
|
||||
mostrar(conteudo);
|
||||
(lista || []).forEach(function (p) { if (p.tenant && p.situacao === "ATIVA") acrescentarBotaoDePlano(p.tenant); });
|
||||
(lista || []).forEach(function (p) {
|
||||
if (p.tenant && p.situacao === "ATIVA" && !p.demonstracao) acrescentarBotaoDePlano(p.tenant);
|
||||
});
|
||||
return Promise.all([carregarCobranca(), carregarTermo(), carregarFaturas(), carregarVisao(),
|
||||
carregarTermosDeUso()]);
|
||||
});
|
||||
@@ -3171,7 +3177,7 @@ data:
|
||||
<option value="NASCENDO">Nascendo</option>
|
||||
</select>
|
||||
<label class="filtro"><input type="checkbox" id="soAtencao"> só com alerta</label>
|
||||
<label class="filtro"><input type="checkbox" id="semTeste"> esconder testes</label>
|
||||
<label class="filtro"><input type="checkbox" id="semTeste"> esconder testes e demonstrações</label>
|
||||
</div>
|
||||
<div class="tabela-rolagem">
|
||||
<table class="tabela clientes">
|
||||
@@ -3334,7 +3340,7 @@ data:
|
||||
|
||||
</main>
|
||||
|
||||
<script src="/publico/painel.js?v=2.86"></script>
|
||||
<script src="/publico/painel.js?v=2.87"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -3630,9 +3636,13 @@ data:
|
||||
bloco("Recebido desde o início", reaisCurto(i.recebidoTotal),
|
||||
i.clientesSemDadoDoAsaas > 0 ? i.clientesSemDadoDoAsaas + " sem resposta do Asaas" : "extrato do Asaas", "")
|
||||
].join("");
|
||||
// Teste e demonstracao aparecem na lista, mas nao nos numeros — e a tela diz.
|
||||
var foraDosNumeros = [];
|
||||
if (i.contasDeTeste > 0) foraDosNumeros.push(i.contasDeTeste + " de teste");
|
||||
if (i.demonstracoes > 0) foraDosNumeros.push(i.demonstracoes + " de demonstração");
|
||||
$("kpiClientes").innerHTML = [
|
||||
bloco("Clientes ativos", esc(i.clientesAtivos),
|
||||
i.contasDeTeste > 0 ? "+ " + i.contasDeTeste + " de teste (fora dos números)" : "", "ok"),
|
||||
foraDosNumeros.length ? "+ " + foraDosNumeros.join(", ") + " (fora dos números)" : "", "ok"),
|
||||
bloco("Novos no mês", esc(i.novosNoMes), comparacao(i.novosNoMes, i.novosMesAnterior), ""),
|
||||
bloco("Leads no mês", esc(i.leadsNoMes), comparacao(i.leadsNoMes, i.leadsMesAnterior), ""),
|
||||
bloco("Conversão", pct(i.conversao), "de lead para cliente pagante", ""),
|
||||
@@ -3671,7 +3681,7 @@ data:
|
||||
if (plano && c.plano !== plano) return false;
|
||||
if (estado && (c.estado || "NASCENDO") !== estado) return false;
|
||||
if (soAtencao && !(c.alertas || []).length) return false;
|
||||
if (semTeste && c.teste) return false;
|
||||
if (semTeste && (c.teste || c.demonstracao)) return false;
|
||||
if (busca) {
|
||||
var alvo = [c.cliente, c.escolinha, c.email, c.cidade, c.tenant, c.whatsapp, c.documento]
|
||||
.join(" ").toLowerCase();
|
||||
@@ -3701,7 +3711,9 @@ data:
|
||||
}
|
||||
|
||||
var SITUACAO_ASAAS = { ACTIVE: "ativa", INACTIVE: "encerrada", EXPIRED: "expirada" };
|
||||
function assinaturaNoAsaas(a) {
|
||||
/* A demonstracao nao existe no Asaas DE PROPOSITO: nao e "nao existe" em vermelho. */
|
||||
function assinaturaNoAsaas(a, c) {
|
||||
if (c && c.demonstracao) return "demonstração — sem cobrança";
|
||||
if (!a || !a.disponivel) return "indisponível agora";
|
||||
if (!a.existe) return '<b class="vermelho">não existe</b>';
|
||||
var s = SITUACAO_ASAAS[a.situacao] || txt(a.situacao);
|
||||
@@ -3738,10 +3750,11 @@ data:
|
||||
var gravidade = (c.alertas || []).reduce(function (g, a) {
|
||||
return a.gravidade === "critico" ? "critico" : (g === "critico" ? g : (a.gravidade === "alerta" ? "alerta" : g));
|
||||
}, "");
|
||||
return '<tr class="clicavel' + (gravidade ? " linha-" + gravidade : "") + (c.teste ? " teste" : "")
|
||||
return '<tr class="clicavel' + (gravidade ? " linha-" + gravidade : "") + (c.teste || c.demonstracao ? " teste" : "")
|
||||
+ (!c.tenant ? " destaque" : "") + '" data-assinatura="' + esc(c.assinatura) + '" tabindex="0">'
|
||||
+ "<td><b>" + txt(c.cliente) + "</b>"
|
||||
+ (c.teste ? ' <span class="selo neutro">teste</span>' : "")
|
||||
+ (c.demonstracao ? ' <span class="selo neutro">demonstração</span>' : "")
|
||||
+ '<span class="sub">' + (c.tenant
|
||||
? '<a href="' + esc(c.endereco) + '" target="_blank" rel="noopener noreferrer">' + esc(c.tenant) + "</a>"
|
||||
: "sem tenant")
|
||||
@@ -3750,9 +3763,9 @@ data:
|
||||
+ "<td>" + etiquetaPlano(c) + "</td>"
|
||||
+ "<td>" + selo(c.estado, c.tenant) + '<span class="sub">' + (c.diasDeCliente !== null && c.diasDeCliente !== undefined
|
||||
? "cliente há " + esc(c.diasDeCliente) + " dia(s)" : "") + "</span></td>"
|
||||
+ '<td class="num">' + reais(c.valorMensal) + diferencaDeTabela(c) + "</td>"
|
||||
+ '<td class="num">' + (f.disponivel ? reais(f.totalPago) + '<span class="sub">' + esc(f.cobrancasPagas) + " cobrança(s)</span>" : "—") + "</td>"
|
||||
+ "<td>" + proximaCobranca(f) + "</td>"
|
||||
+ '<td class="num">' + (c.demonstracao ? '<span class="ajuda">sem cobrança</span>' : reais(c.valorMensal) + diferencaDeTabela(c)) + "</td>"
|
||||
+ '<td class="num">' + (c.demonstracao ? "—" : f.disponivel ? reais(f.totalPago) + '<span class="sub">' + esc(f.cobrancasPagas) + " cobrança(s)</span>" : "—") + "</td>"
|
||||
+ "<td>" + (c.demonstracao ? '<span class="ajuda">—</span>' : proximaCobranca(f)) + "</td>"
|
||||
+ "<td>" + usoCurto(c.uso, c.usoDeDentro) + "</td>"
|
||||
+ "<td>" + seloSubconta(c.subconta) + "</td>"
|
||||
+ "</tr>";
|
||||
@@ -3778,7 +3791,9 @@ data:
|
||||
+ esc(a.titulo) + '</b><span class="sub">' + esc(a.detalhe) + "</span></div></li>";
|
||||
}).join("");
|
||||
|
||||
var extrato = f.disponivel
|
||||
var extrato = c.demonstracao
|
||||
? '<p class="ajuda">Tenant de demonstração: não há assinatura nem cobrança no Asaas.</p>'
|
||||
: f.disponivel
|
||||
? ((f.cobrancas || []).length
|
||||
? '<table class="tabela"><thead><tr><th>Vencimento</th><th>Pago em</th><th>Forma</th><th class="num">Valor</th><th class="num">Líquido</th><th>Situação</th><th></th></tr></thead><tbody>'
|
||||
+ f.cobrancas.map(function (cb) {
|
||||
@@ -3799,7 +3814,7 @@ data:
|
||||
return '<header class="ficha-topo ' + classePlano(c.plano) + '">'
|
||||
+ '<span class="etiqueta ' + classePlano(c.plano) + '">Plano ' + esc(nomePlano(c.plano))
|
||||
+ (c.ciclo === "ANUAL" ? " · anual" : " · mensal") + "</span>"
|
||||
+ '<h2 id="fichaTitulo">' + txt(c.cliente) + "</h2>"
|
||||
+ '<h2 id="fichaTitulo">' + txt(c.cliente) + (c.demonstracao ? ' <span class="selo neutro">demonstração</span>' : "") + "</h2>"
|
||||
+ '<p class="sub">' + (c.escolinha && c.escolinha !== c.cliente ? esc(c.escolinha) + " · " : "")
|
||||
+ selo(c.estado, c.tenant) + (c.estadoDesde ? " desde " + dataHora(c.estadoDesde) : "") + "</p>"
|
||||
+ '<div class="atalhos">'
|
||||
@@ -3821,14 +3836,17 @@ data:
|
||||
+ '<section><h3>Assinatura</h3><dl>'
|
||||
+ item("Plano", esc(nomePlano(c.plano)) + " " + (c.ciclo === "ANUAL" ? "anual" : "mensal"))
|
||||
+ item("Valor do ciclo", reais(c.valorDoCiclo)) + item("Vale por mês", reais(c.valorMensal) + diferencaDeTabela(c))
|
||||
+ item("De onde vem o valor", c.valorDaFonte === "asaas" ? "a assinatura no Asaas" : "a tabela de preços (Asaas não respondeu)")
|
||||
+ item("Situação no Asaas", assinaturaNoAsaas(c.assinaturaNoAsaas))
|
||||
+ item("De onde vem o valor", c.demonstracao ? "demonstração — sem cobrança"
|
||||
: c.valorDaFonte === "asaas" ? "a assinatura no Asaas" : "a tabela de preços (Asaas não respondeu)")
|
||||
+ item("Situação no Asaas", assinaturaNoAsaas(c.assinaturaNoAsaas, c))
|
||||
+ item("Contratado em", dataHora(c.contratadoEm)) + item("Cliente há", c.diasDeCliente === null || c.diasDeCliente === undefined ? "—" : esc(c.diasDeCliente) + " dia(s)")
|
||||
+ item("Assinatura no Asaas", txt(c.assinatura)) + item("Cliente no Asaas", txt(c.clienteNoProvedor))
|
||||
+ "</dl></section>"
|
||||
|
||||
+ '<section><h3>Dinheiro</h3><dl>'
|
||||
+ (f.disponivel
|
||||
+ (c.demonstracao
|
||||
? item("Cobrança", "nenhuma — tenant de demonstração")
|
||||
: f.disponivel
|
||||
? item("Total pago", reais(f.totalPago)) + item("Líquido (após taxas)", reais(f.totalLiquido))
|
||||
+ item("Taxas pagas", reais(f.taxas))
|
||||
+ item("Último pagamento", f.ultimoPagamento ? data(f.ultimoPagamento.data) + " · " + reais(f.ultimoPagamento.valor) + " · " + txt(f.ultimoPagamento.forma) : "—")
|
||||
|
||||
Reference in New Issue
Block a user