Adição de mais um preço 'Termo especial'

This commit is contained in:
2026-07-15 16:27:20 -03:00
parent e129e991e4
commit 5af51534be
13 changed files with 158 additions and 62 deletions

View File

@@ -339,10 +339,15 @@ class Consolidacao < ApplicationRecord
# para atrelar (só motorista + quantidade, a um preço fixo configurável). Fica
# numa única linha (manual: true): quantidade guarda o N e valor_aplicado guarda
# o total do lote, então recalcular_motorista! e demais somas seguem inalteradas.
def adicionar_termos!(motorista:, quantidade:, user:, vehicle: nil)
# `tipo` distingue termo normal ('termo') de termo especial ('termo_especial'),
# cada um com seu preço configurável.
def adicionar_termos!(motorista:, quantidade:, user:, vehicle: nil, tipo: 'termo')
nome = motorista.to_s.strip
raise ArgumentError, 'Informe o motorista do termo.' if nome.blank?
tipo = tipo.to_s
raise ArgumentError, 'Tipo de termo inválido.' unless %w[termo termo_especial].include?(tipo)
qtd = quantidade.to_i
raise ArgumentError, 'Informe uma quantidade válida de termos.' if qtd < 1
@@ -351,10 +356,10 @@ class Consolidacao < ApplicationRecord
consolidacao_entregas.create!(
tracking_id: "TERMO-#{SecureRandom.uuid}", # sintético: não há Entrega/NF
tipo: 'termo',
tipo: tipo,
motorista_nome: nome,
quantidade: qtd,
valor_aplicado: qtd * ConsolidacaoEntrega.valor_para('termo'), # total do lote
valor_aplicado: qtd * ConsolidacaoEntrega.valor_para(tipo), # total do lote
manual: true,
vehicle: vehicle.presence, # veículo escolhido no lançamento (Q3)
created_by: user&.id