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:
@@ -46,7 +46,9 @@ module Pdf
|
||||
|
||||
secao "PROVENTOS E DESCONTOS"
|
||||
|
||||
resumo = @entregas.group(:tipo).count
|
||||
# `quantidade` (default 1) conta as entregas de termo lançadas em lote;
|
||||
# para os demais pilares equivale ao número de linhas.
|
||||
resumo = @entregas.group(:tipo).sum(:quantidade)
|
||||
# Lista os quatro pilares sempre (Normal, Retirada, Bônus, Desconto),
|
||||
# mesmo zerados, para o motorista ver o descritivo completo.
|
||||
por_tipo = ConsolidacaoEntrega::TIPO_CORES.map do |tipo, cfg|
|
||||
|
||||
@@ -70,7 +70,8 @@ module Pdf
|
||||
|
||||
def tabela_por_tipo
|
||||
soma = @entregas.reorder(nil).group(:tipo).sum(:valor_aplicado)
|
||||
qtd = @entregas.reorder(nil).group(:tipo).count
|
||||
# `quantidade` (default 1) conta os termos lançados em lote como N entregas.
|
||||
qtd = @entregas.reorder(nil).group(:tipo).sum(:quantidade)
|
||||
|
||||
linhas = [['Tipo', 'Quantidade', 'Valor']]
|
||||
ConsolidacaoEntrega::TIPO_CORES.each do |tipo, cfg|
|
||||
|
||||
@@ -37,7 +37,7 @@ module Pdf
|
||||
original&.vehicle.presence || (e.manual? ? 'manual' : '—'),
|
||||
original ? "NF #{original.numero_nf}" : (e.nf_manual.present? ? "NF #{e.nf_manual}" : '—'),
|
||||
original ? original.address.to_s : (e.obs_manual.presence || '—'),
|
||||
e.tipo_cor[:label],
|
||||
e.termo? && e.quantidade > 1 ? "#{e.tipo_cor[:label]} ×#{e.quantidade}" : e.tipo_cor[:label],
|
||||
(e.desconto? ? '-' : '') + moeda(e.valor_aplicado)
|
||||
]
|
||||
end
|
||||
@@ -67,7 +67,8 @@ module Pdf
|
||||
secao "RESUMO"
|
||||
# reorder(nil): remove o .order(:created_at) da relação — senão o Postgres
|
||||
# recusa "GROUP BY tipo ORDER BY created_at" (PG::GroupingError → 500).
|
||||
resumo = @entregas.reorder(nil).group(:tipo).count
|
||||
# sum(:quantidade) (default 1) conta os termos lançados em lote como N entregas.
|
||||
resumo = @entregas.reorder(nil).group(:tipo).sum(:quantidade)
|
||||
total = @entregas.sum { |e| e.desconto? ? -e.valor_aplicado : e.valor_aplicado }
|
||||
|
||||
resumo_linhas = [['Tipo', 'Quantidade']]
|
||||
|
||||
Reference in New Issue
Block a user