feat(web): desconto de regra nao vem mais pre-preenchido no carrinho

Item entra com 0% mesmo com promocao/regra vigente: o selo de condicao
comercial avisa o rep, que concede o desconto apenas se o cliente
negociar. A alcada no backend segue aceitando ate o % da regra.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 18:00:06 +00:00
parent afa6171919
commit 36430fde63

View File

@@ -41,12 +41,10 @@ import type {
FormaPagamento,
Pauta,
ProdutoSummary,
RegraVigente,
TopProduto,
} from '@sar/api-interface';
import { useClientList, useClientDetail, useClientTopProdutos } from '../../lib/queries/clients';
import { useCatalog, useFormasPagamento, usePautas } from '../../lib/queries/catalog';
import { useRegrasVigentes } from '../../lib/queries/politicas';
import { useCondicoesComerciais } from '../../lib/condicoes-comerciais';
import { CondicaoTag } from '../../components/CondicaoTag';
import { apiFetch } from '../../lib/api-client';
@@ -1325,24 +1323,10 @@ export function NewOrderPage() {
setClientSearch('');
}
// ── Regras de desconto vigentes (criadas pelo gerente para este rep) ──
const { data: regrasData } = useRegrasVigentes();
// Maior desconto liberado por regra vigente que casa com o grupo/subgrupo do
// produto. Regra sem grupo/subgrupo vale para qualquer produto. Pré-aplicado
// ao adicionar o item; o rep pode ajustar dentro da alçada.
const regraDescontoPct = (codGrupo: number | null, codSubgrupo: number | null): number => {
const regras: RegraVigente[] = regrasData?.regras ?? [];
return regras
.filter(
(r) =>
(r.codGrupo == null || (codGrupo != null && r.codGrupo === codGrupo)) &&
(r.codSubgrupo == null || (codSubgrupo != null && r.codSubgrupo === codSubgrupo)),
)
.reduce((max, r) => Math.max(max, r.descPct), 0);
};
// ── Handlers do carrinho ──
// Item entra SEM desconto mesmo quando há promoção/regra vigente (selo
// "Condição comercial" avisa o rep): a proposta é carta de negociação — o rep
// concede só se o cliente pedir, e a alçada no backend aceita até o % da regra.
const addToCart = (p: ProdutoSummary, qty?: number) => {
const lote = p.loteMulVenda ?? 1;
const finalQty = qty ?? lote;
@@ -1363,7 +1347,7 @@ export function NewOrderPage() {
unidade: p.unidade ?? '',
qtd: finalQty,
precoUnitario: Number(p.vlPreco1),
descontoPerc: regraDescontoPct(p.codGrupo, p.codSubgrupo),
descontoPerc: 0,
loteMulVenda: p.loteMulVenda,
},
];
@@ -1386,8 +1370,7 @@ export function NewOrderPage() {
unidade: p.unidade ?? '',
qtd: qty,
precoUnitario: p.ultimoPreco,
// TopProduto não traz grupo/subgrupo — aplica só regra sem restrição
descontoPerc: regraDescontoPct(null, null),
descontoPerc: 0,
loteMulVenda: null,
},
];