lib/br_danfe/danfe.rb in br_danfe-0.12.1 vs lib/br_danfe/danfe.rb in br_danfe-0.13.0
- old
+ new
@@ -1,97 +1,13 @@
module BrDanfe
class Danfe
- attr_reader :options
-
- def initialize(xml)
- @xml = BrDanfe::XML.new(xml)
- @pdf = DanfeLib::Document.new
- @options = BrDanfe::Logo::Config.new
-
- create_watermark
+ def self.new(xml)
+ create_danfe BrDanfe::XML.new(xml)
end
- def save_pdf(filename, footer_info = '')
- generate footer_info
- @pdf.render_file filename
+ def self.create_danfe(xml)
+ nfe_code = '55'
+ xml['mod'] == nfe_code ? DanfeLib::Nfe.new(xml) : DanfeLib::Nfce.new(xml)
end
-
- def render_pdf(footer_info = '')
- generate footer_info
- @pdf.render
- end
-
- private
-
- def create_watermark
- @pdf.create_stamp('has_no_fiscal_value') do
- @pdf.fill_color '7d7d7d'
- @pdf.text_box I18n.t('danfe.others.has_no_fiscal_value'),
- size: 2.2.cm,
- width: @pdf.bounds.width,
- height: @pdf.bounds.height,
- align: :center,
- valign: :center,
- at: [0, @pdf.bounds.height],
- rotate: 45,
- rotate_around: :center
- end
- end
-
- def generate(footer_info)
- render_on_first_page
- render_on_each_page footer_info
- @pdf
- end
-
- def render_on_first_page
- DanfeLib::Ticket.new(@pdf, @xml).render
- DanfeLib::Dest.new(@pdf, @xml).render
- DanfeLib::Dup.new(@pdf, @xml).render
- DanfeLib::Icmstot.new(@pdf, @xml).render
- DanfeLib::Transp.new(@pdf, @xml).render
- n_vol = DanfeLib::Vol.new(@pdf, @xml).render
- has_issqn = DanfeLib::Issqn.new(@pdf, @xml).render
- DanfeLib::Infadic.new(@pdf, @xml).render(n_vol)
-
- render_products has_issqn
- end
-
- def render_products(has_issqn)
- DanfeLib::DetBody.new(@pdf, @xml).render(has_issqn)
- end
-
- def render_on_each_page(footer_info)
- emitter = DanfeLib::EmitHeader.new(@pdf, @xml, @options.logo, @options.logo_dimensions)
-
- @pdf.page_count.times do |i|
- page = i + 1
- position = page == 1 ? 3.96 : 1.85
- repeated_information page, position, emitter, footer_info
- end
- end
-
- def repeated_information(page, y_position, emitter, footer_info)
- @pdf.go_to_page(page)
-
- emitter.render page, y_position
- render_product_table_title page
- render_footer_information footer_info
- render_no_fiscal_value
- end
-
- def render_product_table_title(page)
- y_position = page == 1 ? 18.91 : 7.40
- @pdf.ititle 0.42, 10.00, 0.75, y_position, 'det.title'
- end
-
- def render_footer_information(footer_info)
- if footer_info.present?
- @pdf.ibox 0.35, 12.45, 0.75, 30.21, '', footer_info, { size: 5, border: 0 }
- end
- end
-
- def render_no_fiscal_value
- @pdf.stamp('has_no_fiscal_value') if DanfeLib::Helper.no_fiscal_value?(@xml)
- end
+ private_class_method :create_danfe
end
end