# 🎯 Sistema de Parcelas Individuais - Instruções de Instalação ## 📋 Resumo das Alterações Foi implementado um sistema completo para gerenciar parcelas individuais de vendas parceladas, permitindo: - ✅ Visualização de cada parcela com valor e vencimento - 💳 Geração de PIX individual para cada parcela - 📱 Envio de PIX por WhatsApp para cada parcela - 📊 Status de cada parcela (Pendente, Pago, Vencido) - 💬 Mensagem automática de WhatsApp personalizada no registro da venda ## 🗃️ Passo 1: Criar Tabela no Supabase 1. Acesse o **Supabase Dashboard** do seu projeto 2. Vá em **SQL Editor** 3. Execute o seguinte script: ```sql -- ===================================================== -- TABELA DE PARCELAS INDIVIDUAIS DE VENDAS -- ===================================================== -- Criar tabela de parcelas CREATE TABLE IF NOT EXISTS venda_parcelas ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), venda_id UUID NOT NULL REFERENCES vendas(id) ON DELETE CASCADE, numero_parcela INTEGER NOT NULL, valor DECIMAL(10,2) NOT NULL, data_vencimento DATE NOT NULL, status TEXT DEFAULT 'pendente' CHECK (status IN ('pendente', 'pago', 'vencida', 'cancelada')), data_pagamento TIMESTAMP WITH TIME ZONE, pix_payment_id TEXT, pix_qr_code TEXT, pix_qr_code_base64 TEXT, observacoes TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), UNIQUE(venda_id, numero_parcela) ); -- Índices CREATE INDEX IF NOT EXISTS idx_venda_parcelas_venda ON venda_parcelas(venda_id); CREATE INDEX IF NOT EXISTS idx_venda_parcelas_status ON venda_parcelas(status); CREATE INDEX IF NOT EXISTS idx_venda_parcelas_vencimento ON venda_parcelas(data_vencimento); -- Trigger para updated_at CREATE TRIGGER update_venda_parcelas_updated_at BEFORE UPDATE ON venda_parcelas FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- RLS ALTER TABLE venda_parcelas ENABLE ROW LEVEL SECURITY; CREATE POLICY "Enable all operations for authenticated users" ON venda_parcelas FOR ALL USING (true); COMMENT ON TABLE venda_parcelas IS 'Armazena as parcelas individuais de cada venda parcelada'; COMMENT ON COLUMN venda_parcelas.numero_parcela IS 'Número da parcela (1, 2, 3, etc)'; COMMENT ON COLUMN venda_parcelas.status IS 'Status da parcela: pendente, pago, vencida, cancelada'; COMMENT ON COLUMN venda_parcelas.pix_payment_id IS 'ID do pagamento PIX do MercadoPago'; ``` ## 🔄 Passo 2: Reiniciar o Servidor Após criar a tabela, reinicie o servidor Node.js: ```bash # Parar o servidor atual (Ctrl+C no terminal) # Depois iniciar novamente: npm start ``` ## ✨ Funcionalidades Implementadas ### 1. **Registro de Venda com Parcelas** Ao criar uma venda parcelada, o sistema automaticamente: - Salva as parcelas individuais no banco de dados - Cada parcela tem seu valor, vencimento e status próprios ### 2. **Mensagem WhatsApp Personalizada** A mensagem automática agora mostra: ``` Olá {Cliente}! 👋 Sua compra foi registrada com sucesso! 💙 Confira os detalhes abaixo: 📅 Data da compra: {data} 💰 Valor total: R$ {valor_total} 💳 Pagamento: {parcelas}x de R$ {valor_parcela} cada Agradecemos pela sua preferência! 😊 Conte sempre com a Liberi Kids - Moda Infantil 👕👗 ``` ### 3. **Visualização de Parcelas** Na tela de visualização da venda, aparece uma seção com todas as parcelas mostrando: - Número da parcela (1/3, 2/3, etc.) - Valor da parcela - Data de vencimento - Status (Pendente, Pago, Vencida) - Botão para gerar PIX individual ### 4. **PIX Individual por Parcela** - Cada parcela pode ter seu próprio PIX gerado - O PIX pode ser enviado por WhatsApp individualmente - Mensagem específica para cada parcela com vencimento ### 5. **Gerenciamento de Status** - Sistema rastreia o status de cada parcela - Data de pagamento é registrada automaticamente - Identificação visual por cores (verde=pago, amarelo=pendente, vermelho=vencido) ## 🎨 Interface Visual As parcelas são exibidas em cards coloridos: - **Verde**: Parcela paga ✅ - **Amarelo**: Parcela pendente 🕐 - **Vermelho**: Parcela vencida ⚠️ ## 📱 Alertas WhatsApp O sistema está preparado para trabalhar com o sistema de alertas configurado anteriormente: - Alertas antes do vencimento (3, 5 ou 7 dias) - Alerta no dia do vencimento - Alertas após vencimento (3, 5 ou 7 dias) Cada alerta pode usar as variáveis: - `{cliente}` - Nome do cliente - `{valor}` - Valor da parcela - `{quando}` - Data de vencimento - `{parcela}` - Número da parcela ## 🧪 Como Testar 1. **Criar uma venda parcelada**: - Vá em Vendas > Nova Venda - Selecione "Parcelado" como tipo de pagamento - Escolha número de parcelas (ex: 3x) - Defina data do primeiro vencimento - Complete o registro da venda 2. **Visualizar parcelas**: - Clique no ícone 👁️ (olho) na venda - Role até a seção "💳 Parcelas Individuais" - Veja todas as parcelas com valores e vencimentos 3. **Gerar PIX de uma parcela**: - Na visualização da venda, clique em "Gerar PIX" de uma parcela - O QR Code será gerado - Envie por WhatsApp para o cliente ## 📊 Benefícios - ✅ Controle individual de cada parcela - ✅ PIX separado para cada vencimento - ✅ Envio automático de lembretes por WhatsApp - ✅ Rastreamento de pagamentos - ✅ Interface visual clara e intuitiva - ✅ Mensagem de venda mais profissional ## 🔧 Arquivos Modificados 1. **Backend** (`server-supabase.js`): - Rotas para gerenciar parcelas - Geração de PIX por parcela - Envio de WhatsApp por parcela - Mensagem automática atualizada 2. **Frontend** (`client/src/pages/Vendas.js`): - Visualização de parcelas individuais - Botões de ação para cada parcela - Estados para gerenciar parcelas 3. **Estilos** (`client/src/styles/vendas-melhorias.css`): - Cards de parcelas responsivos - Cores por status - Layout moderno 4. **Banco de Dados** (`sql/create-venda-parcelas.sql`): - Nova tabela `venda_parcelas` - Índices e constraints - Políticas RLS ## 💡 Próximos Passos Sugeridos 1. Implementar sistema automático de verificação de vencimentos 2. Criar dashboard de parcelas a vencer 3. Relatório de inadimplência 4. Notificações automáticas via WhatsApp nos dias configurados ## ❓ Suporte Se tiver dúvidas ou problemas: 1. Verifique se a tabela foi criada corretamente no Supabase 2. Confirme que o servidor foi reiniciado 3. Verifique o console do navegador para erros JavaScript 4. Verifique os logs do servidor Node.js --- **Sistema implementado com sucesso! 🎉**