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:
@@ -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,
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user