lib/br_danfe/danfe.rb in br_danfe-0.6.1 vs lib/br_danfe/danfe.rb in br_danfe-0.7.0

- old
+ new

@@ -8,21 +8,22 @@ @options = DanfeLib::Options.new create_watermark end - def save_pdf(filename) - generate + def save_pdf(filename, footer_info = "") + generate footer_info @pdf.render_file filename end - def render_pdf - generate + 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, @@ -34,37 +35,63 @@ rotate: 45, rotate_around: :center end end - def generate - @pdf.stamp("has_no_fiscal_value") if DanfeLib::Helper.has_no_fiscal_value?(@xml) - - @pdf.repeat(:all) { repeat_on_each_page } - - DanfeLib::DetBody.new(@pdf, @xml).render - - @pdf.page_count.times do |i| - @pdf.go_to_page(i + 1) - @pdf.ibox 1.00, 2.08, 8.21, 6.96, "", - I18n.t("danfe.others.page", current: i+1, total: @pdf.page_count), - { size: 8, align: :center, valign: :center, border: 0, style: :bold } - end - + def generate(footer_info) + render_on_first_page + render_on_each_page footer_info @pdf end - def repeat_on_each_page + def render_on_first_page DanfeLib::Ticket.new(@pdf, @xml).render - DanfeLib::EmitHeader.new(@pdf, @xml, @options.logo, @options.logo_dimensions).render - DanfeLib::Emit.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 - nVol = DanfeLib::Vol.new(@pdf, @xml).render - DanfeLib::DetHeader.new(@pdf).render - DanfeLib::Issqn.new(@pdf, @xml).render - DanfeLib::Infadic.new(@pdf, @xml).render(nVol) + 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.has_no_fiscal_value?(@xml) end end end