Implantação da função de controle de consolidaçoes pagas e pendentes

This commit is contained in:
2026-06-17 15:49:24 -03:00
parent 292ac31c66
commit e9def7e21a
17 changed files with 526 additions and 12 deletions

View File

@@ -7,13 +7,19 @@ require 'rqrcode'
module Pdf
class HoleritePdf < BasePdf
def initialize(consolidacao:, motorista:, user_motorista: nil, app_host: nil)
VERDE = '22C55E'
CINZA_BG = 'E5E7EB'
def initialize(consolidacao:, motorista:, user_motorista: nil, app_host: nil,
pago_em: nil, forma_pagamento: nil)
super()
@consolidacao = consolidacao
@motorista = motorista
@user_motorista = user_motorista
@app_host = app_host || ENV.fetch('APP_HOST', 'localhost:3000')
@entregas = consolidacao.consolidacao_entregas.where(motorista_nome: motorista)
@consolidacao = consolidacao
@motorista = motorista
@user_motorista = user_motorista
@app_host = app_host || ENV.fetch('APP_HOST', 'localhost:3000')
@pago_em = pago_em
@forma_pagamento = forma_pagamento
@entregas = consolidacao.consolidacao_entregas.where(motorista_nome: motorista)
end
private
@@ -34,6 +40,8 @@ module Pdf
t.columns(0).width = 120
end
desenhar_selo_pagamento
secao "PROVENTOS E DESCONTOS"
resumo = @entregas.group(:tipo).count
@@ -84,6 +92,26 @@ module Pdf
assinaturas(motorista: @motorista)
end
# Selo de pagamento: faixa verde "PAGO" (com data/forma) ou cinza "PENDENTE".
def desenhar_selo_pagamento
@pdf.move_down 10
pago = @pago_em.present?
cor = pago ? VERDE : CINZA_BG
texto = if pago
via = @forma_pagamento.present? ? " · #{@forma_pagamento.to_s.capitalize}" : ''
"✓ PAGO em #{@pago_em.strftime('%d/%m/%Y')}#{via}"
else
"PAGAMENTO PENDENTE"
end
@pdf.fill_color cor
@pdf.fill_rounded_rectangle [0, @pdf.cursor], 250, 26, 5
@pdf.fill_color(pago ? 'FFFFFF' : '374151')
@pdf.text_box texto, at: [12, @pdf.cursor - 8], width: 238, size: 10, style: :bold
@pdf.fill_color '000000'
@pdf.move_down 34
end
# Monta a URL respeitando o esquema do APP_HOST. Se vier sem http(s)://
# (ex.: "100.75.222.23:3000") assume http — produção em IP:porta normalmente
# não tem TLS. Defina APP_HOST com "https://" se o servidor usar HTTPS.