Module: PagesUtils
- Defined in:
- lib/sunat_books/pdf/pages_utils.rb
Instance Method Summary collapse
- #not_moviment_page(data) ⇒ Object
- #page_index(index, page_max) ⇒ Object
- #page_not_full(last_page, pages, page_max, &block) ⇒ Object
- #row_data(data, widths, aligns, fields, operation) ⇒ Object
- #setup_final_row_data(page, ticket, data) ⇒ Object
- #setup_new_page(pages, last_page, length) ⇒ Object
- #setup_pages(pages, length, page_max, index = 1) ⇒ Object
- #setup_row_pages(pages, row, max_column, first_rows = 2) ⇒ Object
-
#split_data(data, max_column) ⇒ Object
for diary.
Instance Method Details
#not_moviment_page(data) ⇒ Object
38 39 40 |
# 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) ⇒ Object
34 35 36 |
# 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, &block) ⇒ Object
6 7 8 9 10 11 12 13 14 |
# 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) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# 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) ⇒ Object
42 43 44 45 46 47 48 |
# 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) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# 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) ⇒ Object
16 17 18 19 20 21 22 |
# 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) ⇒ Object
77 78 79 80 81 82 83 84 |
# 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) ⇒ Object
for diary
63 64 65 66 67 68 69 70 71 72 73 74 75 |
# 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 |