receipts 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +6 -1
 - data/README.md +32 -8
 - data/lib/receipts/base.rb +14 -4
 - data/lib/receipts/version.rb +1 -1
 - metadata +3 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 1606d916a395c1e22c80566221f2db3ad1ed035ec3d426d2500b4beffe1f0f8d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: a5d29e51729f90104dceb3ff6faf6a4b3a27f7a404789664895821e62b416752
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 8a372a3605d3535d4f5fca1bac41a22470541b8717ed51fb8383e0250df0c1a97b7ef104fc388d8e3439572854cb82b925441cb8196336ef6996e411e8b68b2c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 971fe78bd36d9858a45afcdf4035575c51f373f33b1defb9637cde49f38501d322874132e22f06209ed1a05ed6e56a5fe7a1ea56bbbafd49f46977c4214e19b5
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,12 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ### Unreleased
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ### 2.3.0
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            * Add `column_widths:` option to specify line item column widths #35
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            ### 2.2.0
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
       3 
9 
     | 
    
         
             
            * Allow specifiying other page sizes - @excid3
         
     | 
| 
       4 
10 
     | 
    
         
             
            * Add `logo_height:` option to specify the height of the logo image
         
     | 
| 
       5 
11 
     | 
    
         | 
| 
       6 
12 
     | 
    
         
             
            ### 2.1.0
         
     | 
| 
       7 
13 
     | 
    
         | 
| 
       8 
14 
     | 
    
         
             
            * Add `Receipts.default_font` - @excid3
         
     | 
| 
       9 
     | 
    
         
            -
            >>>>>>> 65dc0260770f3d751f67dc5433be09127367b83b
         
     | 
| 
       10 
15 
     | 
    
         | 
| 
       11 
16 
     | 
    
         
             
            ### 2.0.0
         
     | 
| 
       12 
17 
     | 
    
         | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ](https://github.com/excid3/receipts/actions/workflows/ci.yml)
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            # Receipts Gem
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
         @@ -16,11 +16,15 @@ gem 'receipts' 
     | 
|
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
            And then execute:
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
            ```sh
         
     | 
| 
      
 20 
     | 
    
         
            +
            $ bundle
         
     | 
| 
      
 21 
     | 
    
         
            +
            ```
         
     | 
| 
       20 
22 
     | 
    
         | 
| 
       21 
23 
     | 
    
         
             
            Or install it yourself as:
         
     | 
| 
       22 
24 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
            ```sh
         
     | 
| 
      
 26 
     | 
    
         
            +
            $ gem install receipts
         
     | 
| 
      
 27 
     | 
    
         
            +
            ```
         
     | 
| 
       24 
28 
     | 
    
         | 
| 
       25 
29 
     | 
    
         
             
            ## Usage
         
     | 
| 
       26 
30 
     | 
    
         | 
| 
         @@ -28,6 +32,7 @@ To generate a Receipt, Invoice, or Statement, create an instance and provide con 
     | 
|
| 
       28 
32 
     | 
    
         | 
| 
       29 
33 
     | 
    
         
             
            ```ruby
         
     | 
| 
       30 
34 
     | 
    
         
             
            r = Receipts::Receipt.new(
         
     | 
| 
      
 35 
     | 
    
         
            +
              # title: "Receipt",
         
     | 
| 
       31 
36 
     | 
    
         
             
              details: [
         
     | 
| 
       32 
37 
     | 
    
         
             
                ["Receipt Number", "123"],
         
     | 
| 
       33 
38 
     | 
    
         
             
                ["Date paid", Date.today],
         
     | 
| 
         @@ -123,14 +128,32 @@ Here's an example of where each option is displayed. 
     | 
|
| 
       123 
128 
     | 
    
         | 
| 
       124 
129 
     | 
    
         
             
            
         
     | 
| 
       125 
130 
     | 
    
         | 
| 
      
 131 
     | 
    
         
            +
            #### Line Items Table - Column Widths
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
            You may set an option to configure the line items table's columns width in order to accommodate shortcomings of Prawn's width guessing ability to render header and content reasonably sized.
         
     | 
| 
      
 134 
     | 
    
         
            +
            The configuration depends on your line item column count and follows the prawn/table configuration as documented [here](https://prawnpdf.org/prawn-table-manual.pdf):
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
            This will size the second column to 400 and the fourth column to 50.
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 139 
     | 
    
         
            +
            column_widths: {1 => 400,3 => 50 }
         
     | 
| 
      
 140 
     | 
    
         
            +
            ```
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
            This will set all column widths, considering your table has 4 columns.
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 145 
     | 
    
         
            +
            column_widths: [100, 200, 240]
         
     | 
| 
      
 146 
     | 
    
         
            +
            ```
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            If not set, it will fall back to Prawn's default behavior.
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
       126 
150 
     | 
    
         
             
            ### Formatting
         
     | 
| 
       127 
151 
     | 
    
         | 
| 
       128 
152 
     | 
    
         
             
            `details` and `line_items` allow inline formatting with Prawn. This allows you to use HTML tags to format text: `<b>` `<i>` `<u>` `<strikethrough>` `<sub>` `<sup>` `<font>` `<color>` `<link>`
         
     | 
| 
       129 
153 
     | 
    
         | 
| 
       130 
154 
     | 
    
         
             
            See [the Prawn docs](https://prawnpdf.org/api-docs/2.3.0/Prawn/Text.html#text-instance_method) for more information.
         
     | 
| 
       131 
155 
     | 
    
         | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
            ##### Page Size
         
     | 
| 
      
 156 
     | 
    
         
            +
            #### Page Size
         
     | 
| 
       134 
157 
     | 
    
         | 
| 
       135 
158 
     | 
    
         
             
            You can specify a different page size by passing in the `page_size` keyword argument:
         
     | 
| 
       136 
159 
     | 
    
         | 
| 
         @@ -215,7 +238,7 @@ class ChargesController < ApplicationController 
     | 
|
| 
       215 
238 
     | 
    
         
             
                  @charge = current_user.charges.find(params[:id])
         
     | 
| 
       216 
239 
     | 
    
         
             
                end
         
     | 
| 
       217 
240 
     | 
    
         | 
| 
       218 
     | 
    
         
            -
             
     | 
| 
      
 241 
     | 
    
         
            +
                def send_pdf
         
     | 
| 
       219 
242 
     | 
    
         
             
                  # Render the PDF in memory and send as the response
         
     | 
| 
       220 
243 
     | 
    
         
             
                  send_data @charge.receipt.render,
         
     | 
| 
       221 
244 
     | 
    
         
             
                    filename: "#{@charge.created_at.strftime("%Y-%m-%d")}-gorails-receipt.pdf",
         
     | 
| 
         @@ -242,6 +265,7 @@ Invoices follow the exact same set of steps as above. You'll simply want to modi 
     | 
|
| 
       242 
265 
     | 
    
         | 
| 
       243 
266 
     | 
    
         
             
            ```ruby
         
     | 
| 
       244 
267 
     | 
    
         
             
            Receipts::Invoice.new(
         
     | 
| 
      
 268 
     | 
    
         
            +
              # title: "Invoice",
         
     | 
| 
       245 
269 
     | 
    
         
             
              details: [
         
     | 
| 
       246 
270 
     | 
    
         
             
                ["Invoice Number", "123"],
         
     | 
| 
       247 
271 
     | 
    
         
             
                ["Issue Date", Date.today.strftime("%B %d, %Y")],
         
     | 
| 
         @@ -278,6 +302,7 @@ Statements follow the exact same set of steps as above. You'll simply want to mo 
     | 
|
| 
       278 
302 
     | 
    
         | 
| 
       279 
303 
     | 
    
         
             
            ```ruby
         
     | 
| 
       280 
304 
     | 
    
         
             
            Receipts::Statement.new(
         
     | 
| 
      
 305 
     | 
    
         
            +
              # title: "Statement",
         
     | 
| 
       281 
306 
     | 
    
         
             
              details: [
         
     | 
| 
       282 
307 
     | 
    
         
             
                ["Statement Number", "123"],
         
     | 
| 
       283 
308 
     | 
    
         
             
                ["Issue Date", Date.today.strftime("%B %d, %Y")],
         
     | 
| 
         @@ -309,9 +334,8 @@ Receipts::Statement.new( 
     | 
|
| 
       309 
334 
     | 
    
         | 
| 
       310 
335 
     | 
    
         
             
            ## Contributing
         
     | 
| 
       311 
336 
     | 
    
         | 
| 
       312 
     | 
    
         
            -
            1. Fork it ( 
     | 
| 
      
 337 
     | 
    
         
            +
            1. Fork it [https://github.com/excid3/receipts/fork](https://github.com/excid3/receipts/fork)
         
     | 
| 
       313 
338 
     | 
    
         
             
            2. Create your feature branch (`git checkout -b my-new-feature`)
         
     | 
| 
       314 
339 
     | 
    
         
             
            3. Commit your changes (`git commit -am 'Add some feature'`)
         
     | 
| 
       315 
340 
     | 
    
         
             
            4. Push to the branch (`git push origin my-new-feature`)
         
     | 
| 
       316 
341 
     | 
    
         
             
            5. Create a new Pull Request
         
     | 
| 
       317 
     | 
    
         
            -
             
     | 
    
        data/lib/receipts/base.rb
    CHANGED
    
    | 
         @@ -7,7 +7,7 @@ module Receipts 
     | 
|
| 
       7 
7 
     | 
    
         
             
                end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                def initialize(attributes = {})
         
     | 
| 
       10 
     | 
    
         
            -
                  super 
     | 
| 
      
 10 
     | 
    
         
            +
                  super(page_size: attributes.delete(:page_size) || "LETTER")
         
     | 
| 
       11 
11 
     | 
    
         
             
                  setup_fonts attributes.fetch(:font, Receipts.default_font)
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
                  @title = attributes.fetch(:title, self.class.title)
         
     | 
| 
         @@ -22,7 +22,10 @@ module Receipts 
     | 
|
| 
       22 
22 
     | 
    
         
             
                  header company: company, height: attributes.fetch(:logo_height, 16)
         
     | 
| 
       23 
23 
     | 
    
         
             
                  render_details attributes.fetch(:details)
         
     | 
| 
       24 
24 
     | 
    
         
             
                  render_billing_details company: company, recipient: attributes.fetch(:recipient)
         
     | 
| 
       25 
     | 
    
         
            -
                  render_line_items 
     | 
| 
      
 25 
     | 
    
         
            +
                  render_line_items(
         
     | 
| 
      
 26 
     | 
    
         
            +
                    line_items: attributes.fetch(:line_items),
         
     | 
| 
      
 27 
     | 
    
         
            +
                    column_widths: attributes[:column_widths]
         
     | 
| 
      
 28 
     | 
    
         
            +
                  )
         
     | 
| 
       26 
29 
     | 
    
         
             
                  render_footer attributes.fetch(:footer, default_message(company: company))
         
     | 
| 
       27 
30 
     | 
    
         
             
                end
         
     | 
| 
       28 
31 
     | 
    
         | 
| 
         @@ -79,11 +82,18 @@ module Receipts 
     | 
|
| 
       79 
82 
     | 
    
         
             
                  table(line_items, width: bounds.width, cell_style: {borders: [], inline_format: true, overflow: :expand})
         
     | 
| 
       80 
83 
     | 
    
         
             
                end
         
     | 
| 
       81 
84 
     | 
    
         | 
| 
       82 
     | 
    
         
            -
                def render_line_items(line_items 
     | 
| 
      
 85 
     | 
    
         
            +
                def render_line_items(line_items:, margin_top: 30, column_widths: nil)
         
     | 
| 
       83 
86 
     | 
    
         
             
                  move_down margin_top
         
     | 
| 
       84 
87 
     | 
    
         | 
| 
       85 
88 
     | 
    
         
             
                  borders = line_items.length - 2
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                  table_options = {
         
     | 
| 
      
 91 
     | 
    
         
            +
                    width: bounds.width,
         
     | 
| 
      
 92 
     | 
    
         
            +
                    cell_style: {border_color: "eeeeee", inline_format: true},
         
     | 
| 
      
 93 
     | 
    
         
            +
                    column_widths: column_widths
         
     | 
| 
      
 94 
     | 
    
         
            +
                  }.compact
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                  table(line_items, table_options) do
         
     | 
| 
       87 
97 
     | 
    
         
             
                    cells.padding = 6
         
     | 
| 
       88 
98 
     | 
    
         
             
                    cells.borders = []
         
     | 
| 
       89 
99 
     | 
    
         
             
                    row(0..borders).borders = [:bottom]
         
     | 
    
        data/lib/receipts/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: receipts
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Chris Oliver
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2024-03-05 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: prawn
         
     | 
| 
         @@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       90 
90 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       91 
91 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       92 
92 
     | 
    
         
             
            requirements: []
         
     | 
| 
       93 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 93 
     | 
    
         
            +
            rubygems_version: 3.5.4
         
     | 
| 
       94 
94 
     | 
    
         
             
            signing_key:
         
     | 
| 
       95 
95 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       96 
96 
     | 
    
         
             
            summary: Receipts for your Rails application that works with any payment provider.
         
     |