Sha256: 483a50226e94c800d37dbf878aa94edea72878a06e1212e9669966e00a0ddce3

Contents?: true

Size: 1.92 KB

Versions: 2

Compression:

Stored size: 1.92 KB

Contents

module BrInvoicesPdf
  module Cfe
    module Renderer
      module ProductTable
        extend BaseRenderer

        module_function

        def execute(pdf, data)
          table_data = product_table_data(data)

          pdf.font_size(6) do
            format_table(pdf, table_data)
          end

          pdf.move_down(5)
        end

        def format_table(pdf, table_data)
          width = page_content_width(pdf)
          pdf.table(table_data, width: width) do |table|
            format_row(table.row(0))
            format_columns(table)
          end
        end
        private_class_method :format_table

        def format_row(row)
          row.font_style = :bold
          row.align = :center
        end
        private_class_method :format_row

        # :reek:FeatureEnvy
        def format_columns(table)
          table.columns(0..5).valign = :center
          table.columns([2, 4, 5]).align = :right
          table.column(3).align = :center
          table_widths(table, table.width)
        end
        private_class_method :format_columns

        # :reek:FeatureEnvy
        def table_widths(table, width)
          table.column(0).width = width * 0.16
          table.columns([2, 3]).width = width * 0.155
          table.column([4, 5]).width = width * 0.135
        end
        private_class_method :table_widths

        PRODUCT_TABLE_BASE_DATA = [['CÓD.', 'DESCRIÇÃO', 'QTD.', 'UND.', 'V.UNIT', 'V.TOT']].freeze
        # :reek:FeatureEnvy
        def product_table_data(data)
          data[:products].reduce(PRODUCT_TABLE_BASE_DATA) do |result, cur|
            result + [[
              cur[:code],
              cur[:description],
              format_number(cur[:quantity]),
              cur[:unit_label],
              format_currency(cur[:unit_value]),
              format_currency(cur[:total_value])
            ]]
          end
        end
        private_class_method :product_table_data
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
br_invoices_pdf-0.2.6 lib/br_invoices_pdf/cfe/renderer/product_table.rb
br_invoices_pdf-0.2.6.alpha.18 lib/br_invoices_pdf/cfe/renderer/product_table.rb