Múltiplos pilares por entrega + tela de preços só com pilares de preço

Consolidação — multi-pilar:
- Uma entrega pode ter vários pilares ao mesmo tempo (Normal + Bônus +
  Retirada…), somando os valores. Toggles viraram multi-seleção (liga/desliga
  por pilar; classificar agora faz toggle, em massa só adiciona).
- migration: unicidade passa de [consolidacao_id, tracking_id] para
  [consolidacao_id, tracking_id, tipo].
- classificadas_count/resumo contam entregas distintas (≥1 pilar).

Configurações:
- /admin/configuracoes lista só os pilares de PREÇO (empresa/notificações
  não são preço e saíram da tela).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-16 03:05:15 -03:00
parent a40cb29b96
commit 19a72c066f
8 changed files with 102 additions and 39 deletions

View File

@@ -14,13 +14,20 @@ RSpec.describe ConsolidacaoEntrega, type: :model do
expect(build(:consolidacao_entrega, valor_aplicado: -1)).not_to be_valid
end
it 'exige tracking_id único por consolidação' do
it 'não permite o mesmo tracking_id com o MESMO tipo na consolidação' do
consolidacao = create(:consolidacao)
create(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1')
dup = build(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1')
create(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1', tipo: :entrega_normal)
dup = build(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1', tipo: :entrega_normal)
expect(dup).not_to be_valid
end
it 'permite o mesmo tracking_id com pilares DIFERENTES (multi-pilar)' do
consolidacao = create(:consolidacao)
create(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1', tipo: :entrega_normal)
outro = build(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1', tipo: :bonus)
expect(outro).to be_valid
end
it 'permite o mesmo tracking_id em consolidações diferentes' do
create(:consolidacao_entrega, tracking_id: 'TRK-X')
outra = build(:consolidacao_entrega, tracking_id: 'TRK-X')