Campo e alçadas dos representantes
Como funcionam rotas de visita, check-ins por GPS, conta-corrente, alçada de desconto e aprovações, e o mapa das rotas.
Além do cadastro e da carteira (veja Representantes comerciais), o representante trabalha na rua: segue rotas de visita, faz check-in em cada cliente e dá descontos dentro de um limite. Esta seção cobre o que a loja configura e acompanha desse trabalho: as rotas, os check-ins, a conta-corrente do representante, a régua de desconto e a fila de aprovação de descontos acima do limite.
Como funciona
A cadeia de um desconto
Para cada item, a plataforma compara o desconto pedido com três limites, nesta ordem:
| Camada | Limite | O que acontece |
|---|---|---|
| Desconto livre | Do produto, senão da categoria, senão global_free_discount_bp do seller | Sem custo para o representante. |
| Alçada própria | discount_limit_bp do representante, sobre o que passa do livre | O excedente vira débito na conta-corrente. |
| Aprovação | Quando o excesso sobre o livre passa da alçada: approval_limit_1_bp (e _2_, _3_ com níveis estendidos) do seller definem o nível exigido | Abre uma solicitação na fila de aprovações, e o pedido fica retido até a decisão. |
O cálculo prévio mostra em qual camada um preço cai, sem criar nada.
Conceitos-chave
Rotas e check-ins
Uma rota é uma lista nomeada de clientes a visitar, de um representante. Um check-in registra uma visita (coordenadas, observação, foto) ligada a uma rota. A rota é só o plano; o check-in é a prova.
Conta-corrente (ledger)
Cada lançamento tem entry_type (commission, discount, bonus, manual_credit, manual_debit, reverse_commission), um valor com sinal e o saldo depois do lançamento. Crédito é positivo, débito é negativo.
Régua de desconto por cluster
A régua define o desconto máximo por cluster do cliente (P pequeno, M médio, G grande) e por nível hierárquico (0 a 3). É uma matriz por seller.
Endpoints
| Método | Caminho | Para que serve | Auth |
|---|---|---|---|
| GET | /api/v1/admin/trade-reps/routes | Listar todas as rotas | admin |
| POST | /api/v1/admin/trade-reps/routes | Criar rota | admin |
| PUT | /api/v1/admin/trade-reps/routes/{routeId} | Editar rota | admin |
| DELETE | /api/v1/admin/trade-reps/routes/{routeId} | Excluir rota | admin |
| GET | /api/v1/admin/trade-reps/{id}/routes | Rotas de um representante | admin |
| POST | /api/v1/admin/trade-reps/checkins | Registrar check-in | admin |
| GET | /api/v1/admin/trade-reps/{id}/checkins | Listar check-ins | admin |
| GET | /api/v1/admin/trade-reps/{id}/ledger | Extrato da conta-corrente | admin |
| POST | /api/v1/admin/trade-reps/{id}/ledger | Crédito ou débito manual | admin |
| GET | /api/v1/admin/trade-reps/finance-settings | Ler parâmetros financeiros | admin |
| PUT | /api/v1/admin/trade-reps/finance-settings | Gravar parâmetros financeiros | admin |
| POST | /api/v1/admin/trade-reps/discount-preview | Simular um desconto | admin |
| GET | /api/v1/admin/trade-reps/discount-ruler | Ler a régua | admin |
| PUT | /api/v1/admin/trade-reps/discount-ruler | Gravar a régua | admin |
| GET | /api/v1/admin/trade-reps/approvals | Fila de aprovações | admin |
| POST | /api/v1/admin/trade-reps/approvals/{id}/decide | Decidir uma aprovação | admin |
Erros comuns
- Mandar o campo errado no check-in. A mensagem de erro fala em
manager_id, mas o campo do corpo érep_id. - Check-in com 0,0. Latitude e longitude ambas
0são recusadas (latitude and longitude are required). - Editar uma rota que não existe.
PUT /routes/{routeId}responde200com corponull, não 404. - Esquecer o sinal no lançamento manual. O valor é sempre positivo; é o
scopeque decide crédito (A) ou débito (qualquer outro valor, inclusive omitido). - Gravar
finance-settingsparcial. OPUTgrava todos os campos: o que você não mandar vira0, vazio oufalse. - Decidir uma aprovação já decidida. Devolve
409 approval_not_pending. - Ler a régua vazia como gravada. Sem régua salva, o
GETdevolve uma matriz sugerida comseeded: true, que só vale depois de você gravá-la.