Class: CreditMemo::PdfGenerator

Inherits:
BaseService show all
Includes:
Pdf::Base
Defined in:
app/services/credit_memo/pdf_generator.rb

Overview

Renders a CreditMemo as a customer-facing PDF using HexaPDF —
header, billing/shipping addresses, line items, totals and tax
breakdown. Called from #generate_pdf.

Constant Summary

Constants included from Pdf::Base

Pdf::Base::FONT, Pdf::Base::NIMBUS_SANS_PATH, Pdf::Base::NIMBUS_SANS_PATH_BOLD, Pdf::Base::WY_LOGO_PATH

Instance Attribute Summary

Attributes inherited from BaseService

#options

Instance Method Summary collapse

Methods inherited from BaseService

#log_debug, #log_error, #log_info, #log_warning, #logger, #process, #tagged_logger

Constructor Details

#initialize(credit_memo, options = {}) ⇒ PdfGenerator

Returns a new instance of PdfGenerator.



8
9
10
11
12
13
14
# File 'app/services/credit_memo/pdf_generator.rb', line 8

def initialize(credit_memo, options = {})
  @credit_memo = credit_memo
  @store = options[:store]
  @show_tax_info = options[:show_tax_info]
  @show_kits_and_sn = options[:show_kits_and_sn]
  @currency_symbol = Money::Currency.new(credit_memo.currency).symbol
end

Instance Method Details

#generateString

Builds and writes the PDF in-memory, returning the raw bytes.
Caller is responsible for persisting / uploading the result.

Returns:

  • (String)

    raw PDF bytes



20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/services/credit_memo/pdf_generator.rb', line 20

def generate
  composer = build_composer(margin: [100, 40, 20, 40])

  add_credit_memo_content(composer)
  add_headers_and_footers(composer)

  io = StringIO.new

  composer.write(io, optimize: true)
  io.rewind
  io.read
end