# frozen_string_literal: true require "bundler/gem_tasks" require "rake/testtask" Rake::TestTask.new(:test) do |t| t.libs << "test" t.libs << "lib" t.test_files = FileList["test/**/test_*.rb"] end task default: :test task :console do exec "irb -r receipts -I ./lib" end task :examples do [:receipt, :invoice, :statement].each { |t| Rake::Task[t].invoke } puts "Use `open examples` to view example PDFs." end task :receipt do require "./lib/receipts" r = Receipts::Receipt.new( recipient: [ "Bill To", "Customer", "Address", "City, State Zipcode", "customer@example.org" ], company: { name: "Example, LLC", address: "123 Fake Street\nNew York City, NY 10012", phone: "(555) 867-5309", email: "support@example.com", iban: "123456789", logo: File.expand_path("./examples/images/logo.png"), display: [:address, :phone, :email, nil, :iban] }, details: [ ["Receipt Number", "123"], ["Date paid", Date.today.strftime("%B %d, %Y")], ["Payment method", "ACH super long super long super long super long super long"] ], line_items: [ ["Item", "Unit Cost", "Quantity", "Amount"], ["Subscription", "$19.00", "1", "$19.00"], [nil, nil, "Subtotal", "$19.00"], [nil, nil, "Tax", "$1.12"], [nil, nil, "Total", "$20.12"], [nil, nil, "Amount paid", "$20.12"], [nil, nil, "Refunded on #{Date.today.strftime("%B %d, %Y")}", "$5.00"] ] ) r.render_file "examples/receipt.pdf" end task :invoice do require "./lib/receipts" Receipts::Invoice.new( details: [ ["Invoice Number", "123"], ["Issue Date", Date.today.strftime("%B %d, %Y")], ["Due Date", Date.today.strftime("%B %d, %Y")], ["Status", "PAID"] ], recipient: [ "Bill To", "Customer", "Address", "City, State Zipcode", "customer@example.org" ], company: { name: "Example, LLC", address: "123 Fake Street\nNew York City, NY 10012", phone: "(555) 867-5309", email: "support@example.com", # logo: Rails.root.join("app/assets/images/logo.png") # logo: File.open("./examples/images/logo.png") logo: File.expand_path("./examples/images/logo.png") }, line_items: [ ["Item", "Unit Cost", "Quantity", "Amount"], ["Subscription", "$19.00", "1", "$19.00"], [nil, nil, "Subtotal", "$19.00"], [nil, nil, "Tax Rate", "0%"], [nil, nil, "Amount Due", "$19.00"] ] ).render_file "examples/invoice.pdf" end task :statement do require "./lib/receipts" Receipts::Statement.new( details: [ ["Statement Number", "123"], ["Issue Date", Date.today.strftime("%B %d, %Y")], ["Period", "#{(Date.today - 30).strftime("%B %d, %Y")} - #{Date.today.strftime("%B %d, %Y")}"] ], recipient: [ "Bill To", "Customer", "Address", "City, State Zipcode", "customer@example.org" ], company: { name: "Example, LLC", address: "123 Fake Street\nNew York City, NY 10012", email: "support@example.com", phone: "(555) 867-5309", logo: File.expand_path("./examples/images/logo.png") }, line_items: [ ["Item", "Unit Cost", "Quantity", "Amount"], ["Subscription", "$19.00", "1", "$19.00"], [nil, nil, "Subtotal", "$19.00"], [nil, nil, "Tax Rate", "0%"], [nil, nil, "Total", "$19.00"] ] ).render_file "examples/statement.pdf" end