Files
App-Estoque-LiberiKids/INSTRUCOES-PARCELAS.md
2025-11-29 21:31:52 -03:00

6.5 KiB

🎯 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:
-- =====================================================
-- 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:

# 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! 🎉