Adição de mais um preço 'Termo especial'
This commit is contained in:
@@ -64,7 +64,8 @@ class ConsolidacaoEntregasController < ApplicationController
|
||||
bonus: Configuracao.preco_bonus,
|
||||
desconto: Configuracao.preco_desconto,
|
||||
extraordinaria: Configuracao.preco_extraordinaria,
|
||||
termo: Configuracao.preco_termo
|
||||
termo: Configuracao.preco_termo,
|
||||
termo_especial: Configuracao.preco_termo_especial
|
||||
}
|
||||
end
|
||||
|
||||
@@ -267,25 +268,38 @@ class ConsolidacaoEntregasController < ApplicationController
|
||||
end
|
||||
|
||||
# POST /consolidacoes/:consolidacao_id/consolidacao_entregas/apontar_termo
|
||||
# ENTREGA DE TERMO — lança um lote de N termos para o motorista. Não há NF nem
|
||||
# código de rastreio: só a quantidade, a um preço fixo configurável.
|
||||
# ENTREGA DE TERMO — lança lotes de termos para o motorista. Não há NF nem
|
||||
# código de rastreio: só as quantidades (normal e especial), cada tipo a um
|
||||
# preço fixo configurável.
|
||||
def apontar_termo
|
||||
authorize @consolidacao, :update?
|
||||
|
||||
motorista = @consolidacao.adicionar_termos!(
|
||||
motorista: params[:motorista].to_s.strip,
|
||||
quantidade: params[:quantidade],
|
||||
vehicle: params[:vehicle], # veículo escolhido no lançamento (Q3)
|
||||
user: current_user
|
||||
)
|
||||
qtd_normal = params[:quantidade].to_i
|
||||
qtd_especial = params[:quantidade_especial].to_i
|
||||
raise ArgumentError, 'Informe ao menos um termo (normal ou especial).' if qtd_normal < 1 && qtd_especial < 1
|
||||
|
||||
motorista = nil
|
||||
ActiveRecord::Base.transaction do
|
||||
{ 'termo' => qtd_normal, 'termo_especial' => qtd_especial }.each do |tipo, qtd|
|
||||
next if qtd < 1
|
||||
|
||||
motorista = @consolidacao.adicionar_termos!(
|
||||
motorista: params[:motorista].to_s.strip,
|
||||
quantidade: qtd,
|
||||
tipo: tipo,
|
||||
vehicle: params[:vehicle], # veículo escolhido no lançamento (Q3)
|
||||
user: current_user
|
||||
)
|
||||
end
|
||||
end
|
||||
auditar!(:editar, @consolidacao,
|
||||
dados_novos: { entrega_termo: params[:quantidade].to_i, motorista: motorista })
|
||||
dados_novos: { entrega_termo: qtd_normal, entrega_termo_especial: qtd_especial, motorista: motorista })
|
||||
|
||||
respond_to do |format|
|
||||
format.json { render json: resumo_json(motorista).merge(motorista: motorista) }
|
||||
format.html do
|
||||
redirect_to validar_consolidacao_consolidacao_entregas_path(@consolidacao, motorista: motorista),
|
||||
notice: "#{params[:quantidade].to_i} entrega(s) de termo adicionada(s) para #{motorista}."
|
||||
notice: "#{qtd_normal + qtd_especial} entrega(s) de termo adicionada(s) para #{motorista}."
|
||||
end
|
||||
end
|
||||
rescue ArgumentError => e
|
||||
@@ -534,8 +548,9 @@ class ConsolidacaoEntregasController < ApplicationController
|
||||
# Conta lançamentos manuais como ENTREGAS: cada termo vale `quantidade` (lote
|
||||
# numa só linha); os demais apontamentos manuais valem 1 por nota (tracking).
|
||||
def contar_manuais(rel_manual)
|
||||
rel_manual.termo.sum(:quantidade) +
|
||||
rel_manual.where.not(tipo: ConsolidacaoEntrega.tipos[:termo]).distinct.count(:tracking_id)
|
||||
tipos_termo = ConsolidacaoEntrega.tipos.values_at(:termo, :termo_especial)
|
||||
rel_manual.where(tipo: tipos_termo).sum(:quantidade) +
|
||||
rel_manual.where.not(tipo: tipos_termo).distinct.count(:tracking_id)
|
||||
end
|
||||
|
||||
# `vehicles` (opcional, string ou array): quando presente, TODO o resumo
|
||||
|
||||
Reference in New Issue
Block a user