module PagesUtils
Public Instance Methods
not_moviment_page(data)
click to toggle source
# File lib/sunat_books/pdf/pages_utils.rb, line 38 def not_moviment_page(data) data << [{ content: "SIN MOVIMIENTO EN EL PERIODO", colspan: 5 }] end
page_index(index, page_max)
click to toggle source
# File lib/sunat_books/pdf/pages_utils.rb, line 34 def page_index(index, page_max) index.zero? ? 1 : (index / page_max.to_f).ceil end
page_not_full(last_page, pages, page_max) { || ... }
click to toggle source
# File lib/sunat_books/pdf/pages_utils.rb, line 6 def page_not_full(last_page, pages, page_max, &block) if last_page.length < page_max last_page.length += 1 last_page else yield if block setup_new_page(pages, last_page, 2) end end
row_data(data, widths, aligns, fields, operation)
click to toggle source
# File lib/sunat_books/pdf/pages_utils.rb, line 50 def row_data(data, widths, aligns, fields, operation) @tickets.each_with_index do |ticket, i| last_page = @pages[page_index(i, @page_max)] page = page_not_full(last_page, @pages, @page_max) do data << final_row("VIENEN", last_page) end data << table_body(fields, ticket, widths, aligns) page.send("update_data_#{operation}", ticket) setup_final_row_data(page, ticket, data) end end
setup_final_row_data(page, ticket, data)
click to toggle source
# File lib/sunat_books/pdf/pages_utils.rb, line 42 def setup_final_row_data(page, ticket, data) if page.length == @page_max && @tickets.last != ticket data << final_row("VAN", page) elsif @tickets.last == ticket data << final_row("TOTAL", page) end end
setup_new_page(pages, last_page, length)
click to toggle source
# File lib/sunat_books/pdf/pages_utils.rb, line 24 def setup_new_page(pages, last_page, length) return if last_page.page_number == pages.count new_page = pages[last_page.page_number + 1] fields = %w[bi_sum igv_sum total_sum non_taxable] new_page.update_fields(fields, last_page) new_page.length += length new_page end
setup_pages(pages, length, page_max, index = 1)
click to toggle source
# File lib/sunat_books/pdf/pages_utils.rb, line 16 def setup_pages(pages, length, page_max, index = 1) pages_num = (length / page_max.to_f).ceil last_index = index.zero? ? pages_num - 1 : pages_num (index..last_index).each do |i| pages[i] = SunatBooks::Pdf::Page.new(i, 0) end end
setup_row_pages(pages, row, max_column, first_rows = 2)
click to toggle source
# File lib/sunat_books/pdf/pages_utils.rb, line 77 def setup_row_pages(pages, row, max_column, first_rows = 2) initial_rows = row.first(first_rows) batches_length = max_column - first_rows left_data = row[first_rows..row.length].in_groups_of(batches_length, false) pages.each_with_index do |page, i| page.data << (initial_rows + left_data[i]) end end
split_data(data, max_column)
click to toggle source
for diary
# File lib/sunat_books/pdf/pages_utils.rb, line 63 def split_data(data, max_column) # split rows data in pages according max_column pages = [] setup_pages(pages, data.first.count, max_column, 0) data&.each_with_index do |row, i| if i == data.length - 1 setup_row_pages(pages, row, max_column - 1, 1) else setup_row_pages(pages, row, max_column) end end pages end