×
# Invoice configuration invoice_data = { issuance_date: '12/08/2023', due_date: '01/08/2024', total: 1000.00 } # Provider's information provider_data = { name: 'Company Name', address: '123 Main Street, City', email: 'info@company.com', bank_account: '123-456-789', } # Purchaser's information purchaser_data = { name: 'Customer Name', address: '456 Secondary Street, City', email: 'customer@email.com' } # Create invoice header text 'INVOICE', size: 18, style: :bold move_down 10 text "Issuance Date: #{invoice_data[:issuance_date]}" text "Due Date: #{invoice_data[:due_date]}" move_down 20 # Information of Provider and Purchaser in the same row table([[ { content: 'Provider Information', colspan: 2, font_style: :bold }, { content: 'Purchaser Information', colspan: 2, font_style: :bold } ], [ "Name: #{provider_data[:name]}", "Address: #{provider_data[:address]}", "Name: #{purchaser_data[:name]}", "Address: #{purchaser_data[:address]}" ], [ "Email: #{provider_data[:email]}", "Bank Account: #{provider_data[:bank_account]}", "Email: #{purchaser_data[:email]}", "" ]], width: 500) do cells.borders = [] columns(0..3).size = 10 end move_down 20 # Table of Items items = [ { description: 'Product 1', price: 250.00, quantity: 2 }, { description: 'Product 2', price: 150.00, quantity: 3 }, { description: 'Product 3', price: 100.00, quantity: 1 } ] table_data = [['Description', 'Price', 'Quantity', 'Total']] items.each do |item| total_item = item[:price] * item[:quantity] table_data << [item[:description], item[:price], item[:quantity], total_item] end table(table_data, header: true, width: 500) do row(0).font_style = :bold columns(1..3).align = :center columns(0..3).size = 10 end move_down 20 # Section showing the sum of items total_general = items.map { |item| item[:price] * item[:quantity] }.sum text "Total Amount: #{total_general}", size: 14, style: :bold