Cada fatura tem uma due_date definida na emissão (padrão: issue_date + net_terms, geralmente 30 dias). Às 6h da manhã todos os dias roda um cron do Postgres:
UPDATE invoices SET status='overdue'
WHERE status='sent' AND due_date < current_date; Três coisas acontecem automaticamente
- O status muda de
sentparaoverdue - Uma linha vai para
notification_eventscomkind='invoice_overdue'mirando o e-mail do proprietário de cobrança do cliente - Em até 60 segundos, o drainer
send-notificationslê essa linha e envia um e-mail via Resend (assunto: "Fatura #N está em atraso")
O que seu administrador vê
- A fatura agora aparece na aba Atrasadas na sua visão de Faturas
- A faixa de saldo em aberto no topo de cada página reflete
- Resumo semanal opcional com todas as faturas atrasadas (BACKLOG)
O que o cliente vê
- Se ele tem acesso ao portal do cliente, a fatura aparece na aba Atrasadas dele também
- A faixa de saldo em aberto no topo do portal DELE reflete
- Ele recebe a notificação por e-mail que acabamos de enviar
Marcando como paga
Dois caminhos:
- Manual — o administrador clica em "Marcar como Paga" na fatura. Define
amount_paid = total,paid_at = now(), o status muda parapaid. - Webhook do QuickBooks — se o QBO está conectado, quando VOCÊ registra o pagamento no QBO, a Intuit dispara um webhook de volta para o TradelyHQ e nós mudamos o status automaticamente.
Suprimindo a marcação automática
Se por algum motivo você quiser que uma fatura permaneça em sent mesmo após o vencimento (ex.: você concedeu uma extensão), marque a caixa "Não marcar como atrasada automaticamente" na fatura. O cron pula.