Cliente vê e aceita proposta sem assinar PDF.
Propostas com items detalhados, valores, datas de validade. Aceitar gera assinatura automaticamente. Rejeitar captura razão.
Portal

Recursos das propostas
Listagem
Todas propostas da billing account com status: draft (não visível), sent, viewed, accepted, rejected.
- sent / viewed / accepted / rejected
- draft não visível
- Por billing account
Detalhe (Rota /propostas/[code])
Code (PROP-0001), título, itens com produto + price + quantidade, setup amount, monthly amount, validade.
- Code legível
- Items detalhados
- Setup + monthly
- Validade visível
Marca como Viewed Automaticamente
Primeira visita registra viewedAt. Útil para vendedor saber que cliente abriu.
- viewedAt automático
- Vendedor sabe que abriu
- Primeira visita
Aceitar
Botão "Aceitar proposta". Cria assinatura, gera primeira fatura, emite webhook proposal.accepted.
- Cria assinatura
- Gera primeira fatura
- Webhook proposal.accepted
Rejeitar
Captura rejectionReason (texto livre). Útil para análise de perda.
- rejectionReason capturada
- Análise de perda
- Texto livre
Expiração Automática
Worker proposal-expiration (diário 00:30 UTC) marca propostas vencidas. Worker proposal-reminder (09:00) envia aviso antes.
- proposal-expiration 00:30 UTC
- proposal-reminder 09:00
- Lembrete antes de expirar
Cupom Aplicado
Quando proposta tem Coupon vinculado, desconto exibido no preview.
- Coupon vinculado
- Desconto no preview
- Sem surpresa
Templates Customizáveis
ProposalTemplate por organização. Suporte a Google Docs com auto-fill via AppScript.
- ProposalTemplate por org
- Google Docs
- Auto-fill via AppScript
