Imobiliário · Incorporação

Vendas, estoque e distratos por empreendimento

Unidades vendidas, distratadas e em estoque de cada empreendimento, com VSO e a carteira de recebíveis do mesmo comprador, cruzando o CRM comercial com o ERP.

UsoComum
EsforçoMédio
Para quemIncorporadoras e construtoras que vendem unidades na planta e usam CV CRM no comercial e Sienge ou UAU no financeiro.
Fonte

CV CRM (reservas, unidades, distratos) e ERP (contratos e parcelas)

Regra

Situação normalizada e empreendimento canônico

Resultado

Vendas, distratos, estoque, VSO e carteira por empreendimento

Ativação

Comitê comercial, agente de IA e alerta de cobrança

O que resolve

  • Venda, distrato, cancelamento e reserva vencida param de ser misturados no mesmo número.
  • O mesmo empreendimento tem um id único no comercial e no financeiro.
  • A carteira vencida por empreendimento e por cliente sai com o valor certo e sem venda contada duas vezes.

Perguntas de negócio que responde

Faça estas perguntas ao seu agente quando o caso estiver pronto.

Quantas unidades vendemos, distratamos e temos em estoque em cada empreendimento?
Qual a velocidade de vendas (VSO) de cada empreendimento desde o lançamento?
Qual o VGV líquido do mês, descontando os distratos?
Quanto está vencido por empreendimento e por imobiliária, e em que faixa de atraso?
Quais clientes acumulam mais parcelas vencidas e devem ser cobrados primeiro?
Quanto tempo leva da reserva até a venda em cada empreendimento?

O que você precisa

  • CV CRM e Sienge (ou UAU) conectados na Nekt
  • A lista de empreendimentos com o nome em cada sistema
  • A data oficial de lançamento de cada empreendimento, se existir

O que você recebe

  • Uma tabela de reservas com situação normalizada e empreendimento canônico
  • Uma tabela de estoque por empreendimento com % vendido e VSO
  • Uma tabela de parcelas da carteira com status e faixa de atraso
  • Um agente de IA que diferencia venda, distrato e proposta perdida

Onde ativar

Comitê comercial

Por empreendimento: vendido, distratado, líquido, estoque e VSO, com a marca de proxy quando houver.

Agente de IA via MCP

Responde sobre vendas e carteira separando venda, distrato e proposta perdida.

Alerta de cobrança

Lista semanal dos clientes que passaram a acumular duas ou mais parcelas vencidas.

Quer construir?

As regras de situação são fechadas. O esforço está no de-para de empreendimentos entre CRM e ERP e na ponte de clientes, que costumam ser manuais. O detalhado traz as regras de negócio, as armadilhas e o teste de aceitação. Ou mande tudo direto para o seu agente com o MCP da Nekt.

Ver detalhado
O problema

O CRM comercial guarda reservas com dezenas de situações e o ERP guarda contratos e parcelas com outros nomes para o mesmo empreendimento. Quem conta reservas sem normalizar a situação mistura venda com distrato e proposta perdida. No ERP, campos de saldo que vêm vazios e tabelas que espelham vendas vivas fazem a carteira e o total de vendas saírem errados sem nenhum erro aparente.

Como costuma ser feito, e a regra

Cada linha é um erro que já aconteceu na prática.

O jeito comumA regra
01
Contar distrato e cancelamento como uma coisa só, ou contar todas as reservas como venda.
Normalize a situação da reserva

Venda é situacao = 'VENDIDA', com valor em valor_contrato. Distrato é a venda efetivada e depois desfeita (situacao = 'DISTRATO'). Cancelada é a proposta que caiu antes de virar venda e vencida é a reserva que expirou: as duas são proposta perdida. O resto é em andamento. Use só reservas ativas (ativo = 'S').

02
Juntar CRM e ERP pelo nome do empreendimento.
Empreendimento tem um id canônico

O CRM e o ERP escrevem o mesmo empreendimento de forma diferente (nome comercial de um lado, sigla e nome em maiúsculas do outro). Mantenha uma dimensão de empreendimentos com id canônico, nome em cada sistema e uma flag de presença no ERP. Lançamento recente pode ainda não existir no ERP.

03
Agrupar pelo texto cru e ver a mesma imobiliária em três linhas.
Normalize os textos do CRM

Imobiliária, unidade, bloco, empreendimento e corretor chegam com espaços extras e caixa variável. Aplique maiúsculas, trim e espaço único antes de agrupar. As chaves idunidade, idreserva e idempreendimento são locais de cada conta do CRM: em multiempresa, use sempre junto do id da conta.

04
Contar só a situação vendida e deixar unidades em contrato como disponíveis.
Unidade vendida segue uma lista fechada

No estoque, conte como vendida a unidade cuja reserva está em venda ou nas etapas que vêm depois dela (confecção de contrato, envio ao ERP). Unidade bloqueada é uma categoria própria, nem vendida nem disponível. Em revenda, a situação mais recente da revenda sobrepõe a situação original da unidade.

05
Dividir vendas do mês por unidades totais sem considerar o tempo de oferta.
VSO usa os meses de oferta

VSO = unidades vendidas acumuladas / (unidades totais x meses de oferta). Meses de oferta vão do lançamento até o mês de referência, contados de forma inclusiva. Se o estoque zerou, o fim é o mês da última venda. Sem data oficial de lançamento, use a primeira venda como proxy e marque o número como proxy.

06
Reportar só o VGV vendido, ou subtrair distrato sem dizer de quando é.
Venda líquida desconta o distrato

VGV líquido = VGV vendido menos VGV distratado. Declare a data do distrato usada (data do evento, de cadastro ou da situação atual). Mostre volume e VGV de distrato em separado e diga quando o distrato do mês se refere a uma venda de outro mês.

07
Unir as duas tabelas sem filtro de status e contar cada venda viva duas vezes.
No UAU, filtre o espelho de vendas

A venda viva fica em Vendas (Status_Ven = 0). Quitadas e distratadas passam para VendasRecebidas (Status_VRec 3 e 1). VendasRecebidas também guarda um espelho com Status_VRec = 0 de toda venda viva. O universo de vendas é Vendas com status 0 mais VendasRecebidas com status 1 ou 3. A chave é empresa + obra + número da venda.

08
Somar currentBalance, ou misturar valor original e corrigido entre relatórios.
Inadimplência pelo valor e status da parcela

No Sienge, sienge_customer_debt_balance traz um array installments com status por parcela: Paga, Vencida ou A vencer. Vencido em aberto = soma de originalValue com status Vencida. currentBalance vem vazio ou zerado e não é saldo. Se quiser o valor corrigido (correctedValue), declare e use sempre o mesmo.

09
Ranking só pelo maior valor vencido.
Cobrança prioriza parcelas acumuladas

Ordene clientes pelo número de parcelas vencidas acumuladas e depois pelo valor. Acúmulo identifica melhor quem parou de pagar do que uma parcela grande atrasada. Distribua o vencido em faixas: acima de 180, 91 a 180, 61 a 90, 31 a 60 e 1 a 30 dias.

10
Tratar todo devedor da carteira como comprador de unidade.
Ponte comercial e financeiro pelo cliente

O cliente do CRM liga ao do ERP pelo código integrado (idpessoa_int) ou, sem ele, pelo CPF ou nome normalizado. A carteira do ERP também tem sacados que não são compradores de unidade (órgãos públicos, empresas): marque e tire da inadimplência de clientes.

Situação da reserva e da parcela

CV CRM no comercial, Sienge na carteira.

VENDIDAVendasituacao = 'VENDIDA'
DISTRATODistrato: receita contratada que voltousituacao = 'DISTRATO'
CANCELADAProposta perdida antes da vendasituacao = 'CANCELADA'
VENCIDAProposta perdida: reserva expirousituacao = 'VENCIDA'
Demais situaçõesEm andamentoativo = 'S'
Parcela VencidaInadimplênciainstallments.status = 'Vencida'
Parcela A vencerCarteira a receberinstallments.status = 'A vencer'
Parcela PagaJá recebidoinstallments.status = 'Paga'

Definições

Vendas
reservas ativas distintas com situação vendida, pela data da venda, por empreendimento e mês
VGV vendido
soma de valor_contrato das vendas do período
Distratos
reservas distintas com situação distrato pela data do distrato declarada; VGV distratado = soma de valor_contrato delas
Proposta perdida
reservas canceladas mais reservas vencidas no período
% vendido
unidades vendidas / unidades totais do empreendimento na data de referência, sem contar bloqueadas como vendidas
VSO
unidades vendidas acumuladas / (unidades totais x meses de oferta desde o lançamento, contagem inclusiva)
Dias de ciclo
dias entre a criação da reserva e a data da venda, por reserva vendida
Inadimplência
soma de originalValue das parcelas com status Vencida na data de corte, por empreendimento e cliente

Armadilhas que já aconteceram

Vendas em dobro no UAU

O union de Vendas com VendasRecebidas sem filtro contou cada venda viva duas vezes, porque toda venda viva tem espelho com status 0.

Use só Vendas status 0 e VendasRecebidas status 1 e 3.

Inadimplência zerada

A carteira somada por currentBalance deu quase zero em empreendimentos com muitos atrasos.

Some originalValue pelo status da parcela.

Empreendimento sem par

Um lançamento novo existia no CRM e ainda não no ERP, e o cruzamento comercial e financeiro o descartava.

Mantenha a flag de presença no ERP e use left join a partir do CRM.

Distrato zero por fonte errada

O agente respondeu zero distratos porque olhou só as reservas, e o distrato estava na tabela própria de distratos.

Antes de dizer zero, consulte a fonte de distratos da conta.

Posição passada perdida

A carteira do ERP mostra só o hoje e ninguém conseguia reproduzir o vencido do fechamento anterior.

Grave snapshot mensal append-only da carteira, com a versão do fechamento.

Dado pessoal no painel

Nome, CPF e renda do comprador acabaram em painel aberto para a equipe de vendas.

Deixe dado pessoal só na tabela de detalhe com acesso restrito.

Teste de aceitação

O caso está pronto quando todos os itens passam.

Pacote para o agente

Cole no Claude, ChatGPT ou outro cliente com o MCP da Nekt conectado.

Markdown completo
Vendas, estoque e distratos por empreendimento
- Venda = reserva ativa (ativo = 'S') com situacao 'VENDIDA'; valor = valor_contrato.
- Distrato = venda efetivada e depois desfeita (situacao 'DISTRATO'). Não é cancelamento.
- Proposta perdida = situacao 'CANCELADA' (caiu antes da venda) + 'VENCIDA' (reserva expirou).
- Use sempre o id canônico de empreendimento da dimensão de-para CRM e ERP. Nunca junte pelo nome.
- VGV líquido = VGV vendido - VGV distratado; diga qual data de distrato foi usada.
- VSO = unidades vendidas acumuladas / (unidades totais x meses de oferta). Sem data oficial de lançamento, a primeira venda é o proxy e o VSO é marcado como proxy.
- Unidade bloqueada não é vendida nem disponível.
- UAU: universo de vendas = Vendas com Status_Ven 0 + VendasRecebidas com Status_VRec 1 (distrato) ou 3 (quitada). Nunca una sem filtro.
- Sienge: inadimplência = soma de installments.originalValue com status 'Vencida'. Não use currentBalance.
- Cobrança: ordene por número de parcelas vencidas acumuladas, depois por valor.
- Antes de responder zero distratos, consulte a tabela de distratos.
- Não exponha nome, CPF ou renda de comprador em respostas agregadas.
Exceções por cliente:
- <cliente>: situações que contam como vendida no estoque: <lista>.
- <cliente>: data oficial de lançamento de <empreendimento> = <data>.
- <cliente>: valor da carteira reportado = <original ou corrigido>.
- <cliente>: venda válida só no bloco <bloco>; bloco <bloco> é de obra e fica fora.

Variações

SLA de repasse

Dias entre a venda do repasse (cvcrm_repasses.data_venda) e a entrada na etapa em que o banco libera o valor, com teto definido pela incorporadora.

Funil MCMV e médio padrão

MCMV: lead, agenda, visita, análise de crédito, crédito aprovado, venda. Médio e alto padrão: lead, agenda, visita, proposta, venda.

Perfil de distrato

Distratos por imobiliária, corretor, faixa de renda e tempo desde a venda, com o motivo do distrato.