novo pilar tipo: termo (valor 5 no enum), lançado como uma linha por lote com manual: true e uma coluna nova quantidade. O valor_aplicado guarda o total do lote (qtd × preço), então recalcular_motorista! e todas as somas existentes seguem corretas sem mudança — linhas antigas ficam com quantidade = 1.

This commit is contained in:
2026-06-26 09:32:59 -03:00
parent f42949db78
commit 09867c8d39
17 changed files with 256 additions and 17 deletions

View File

@@ -14,7 +14,8 @@ class ConsolidacaoEntrega < ApplicationRecord
retirada: 1,
bonus: 2,
desconto: 3,
extraordinaria: 4
extraordinaria: 4,
termo: 5
}
TIPO_CORES = {
@@ -22,7 +23,8 @@ class ConsolidacaoEntrega < ApplicationRecord
'retirada' => { bg: 'bg-orange-800', text: 'text-white', label: 'Retirada' },
'bonus' => { bg: 'bg-white border border-orange-500', text: 'text-black', label: 'Bônus' },
'desconto' => { bg: 'bg-gray-900', text: 'text-white', label: 'Desconto' },
'extraordinaria' => { bg: 'bg-purple-600', text: 'text-white', label: 'Entrega Extraordinária' }
'extraordinaria' => { bg: 'bg-purple-600', text: 'text-white', label: 'Entrega Extraordinária' },
'termo' => { bg: 'bg-blue-600', text: 'text-white', label: 'Entrega de Termo' }
}.freeze
# Uma entrega pode ter vários pilares (Normal + Bônus + Retirada…),
@@ -31,6 +33,7 @@ class ConsolidacaoEntrega < ApplicationRecord
validates :motorista_nome, presence: true
validates :tipo, presence: true
validates :valor_aplicado, presence: true, numericality: { greater_than_or_equal_to: 0 }
validates :quantidade, numericality: { greater_than: 0 }
# Busca a entrega original (leitura do banco existente)
def entrega_original
@@ -50,6 +53,7 @@ class ConsolidacaoEntrega < ApplicationRecord
when 'bonus' then Configuracao.preco_bonus
when 'desconto' then Configuracao.preco_desconto
when 'extraordinaria' then Configuracao.preco_extraordinaria
when 'termo' then Configuracao.preco_termo
else 0
end
end