# Feature de Fatura ## Requisitos - Data de vencimento e data de fechamento - Status de fatura: `ABERTA`, `FECHADA`, `ATRASADA`, `PAGA` - Valor total por fatura - 1 fatura por mês - Cada fatura tem detalhes, separado por cartão - Cada item da fatura é uma “compra” - Pagamento de fatura POR CARTÃO ## Perguntas > [!note]- SOLVED > - O que acontece caso o cliente ainda não tenha selecionado uma data de vencimento do cartão? Qual é a data default? > - Não gostei muito dessa confirmação de pagamento pela conta da barte > - Parece que a tela não muda nada uma para outra, acho que vai acabar confundindo > - Pode ter uma telinha de “saldo antes” e “saldo depois” > - A tela de copiar a chave pix também ficou bem simples, não vale uma explicação do que vai acontecer depois do pagamento? Se ele vai ter que esperar alguns minutos até o saldo da fatura dele atualizar, um botão de “já paguei” pra forçar uma atualização do nosso lado e pegar possíveis erros etc > - `BankingCardInvoiceEntity`: como que eu faço pra construir o virtual card relation? Eu deixo ele como string? > - Eu deixo tudo como *nullable* na Entity mesmo? > - `CreateVirtualCardImplTest`: Como que eu resolvo esse teste? ## Refinement ![[Refinamento Fatura de Cartão]] ## Step by Step > [!note] A progressão de faturas vai ser criada no cron job, que não vai ser eu que vou fazer, então só preciso criar quando o cartão é criado ### Infra e listagens - [x] Criar uma fatura sempre que um cartão é criado - Fatura em aberto - Sem transactions - [x] Get de faturas - Controller - Service - Gateway - Adapter - [x] Get de uma fatura - [x] Arrumar o teste de criação de fatura (tá bloqueando por conta do requisito de due day) ### Pagamento - [x] Fazer entidade e repositório de `BankingCardInvoicePaymentEntity` - [x] Fazer ligação com a `BankingCardInvoice` via @JoinTable - [x] Endpoint `/cards/invoices/ready-for-payment` - [x] Feign com swap para gerar pix - [ ] Endpoint de pagamento de invoice - [ ] Com pix - [ ] Com saldo da conta - [ ] Ajustar listener de PIX IN - [ ] Endpoint para verificar invoice pendente ## Testes - [x] Tentar criar cartão sem data de vencimento - [x] Atualizar data de vencimento - [x] Tentar atualizar data de vencimento dnovo (tem que retornar erro) - [x] Criar um cartão com data de vencimento - [x] Listar faturas - [x] Listar faturas do mês