piggybak 0.6.3 → 0.6.4
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.
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/app/models/piggybak/line_item.rb +10 -0
- data/app/models/piggybak/order.rb +0 -12
- data/app/views/rails_admin/main/_order_details.html.erb +4 -18
- data/db/migrate/20121018213421_drop_sort_from_line_items.rb +9 -0
- data/lib/piggybak.rb +15 -4
- data/lib/piggybak/config.rb +10 -5
- data/lib/piggybak/version.rb +1 -1
- metadata +5 -4
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    
| @@ -7,6 +7,8 @@ module Piggybak | |
| 7 7 | 
             
                validates_presence_of :price, :description, :quantity
         | 
| 8 8 | 
             
                validates_numericality_of :quantity, :only_integer => true, :greater_than_or_equal_to => 0
         | 
| 9 9 |  | 
| 10 | 
            +
                default_scope :order => 'created_at ASC'
         | 
| 11 | 
            +
             | 
| 10 12 | 
             
                after_create :decrease_inventory, :if => Proc.new { |line_item| line_item.line_item_type == 'sellable' && !line_item.sellable.unlimited_inventory }
         | 
| 11 13 | 
             
                after_destroy :increase_inventory, :if => Proc.new { |line_item| line_item.line_item_type == 'sellable' && !line_item.sellable.unlimited_inventory }
         | 
| 12 14 | 
             
                after_update :update_inventory, :if => Proc.new { |line_item| line_item.line_item_type == 'sellable' && !line_item.sellable.unlimited_inventory }
         | 
| @@ -17,9 +19,13 @@ module Piggybak | |
| 17 19 | 
             
                before_validation :preprocess
         | 
| 18 20 | 
             
                before_destroy :destroy_associated_item
         | 
| 19 21 |  | 
| 22 | 
            +
                # TODO: Possibly replace all initializers below with database defaults
         | 
| 20 23 | 
             
                def initialize_line_item
         | 
| 21 24 | 
             
                  self.quantity ||= 1
         | 
| 22 25 | 
             
                  self.price ||= 0
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  # TODO: Fix this, should default in database
         | 
| 28 | 
            +
                  self.created_at ||= Time.now 
         | 
| 23 29 | 
             
                end
         | 
| 24 30 |  | 
| 25 31 | 
             
                def preprocess
         | 
| @@ -129,5 +135,9 @@ module Piggybak | |
| 129 135 | 
             
                    self.sellable.update_inventory(quantity_diff)
         | 
| 130 136 | 
             
                  end
         | 
| 131 137 | 
             
                end
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                def self.sorted_line_item_types
         | 
| 140 | 
            +
                  Piggybak::Config.line_item_types.sort { |a, b| a[1][:sort] <=> b[1][:sort] }.collect { |a| a[0] }
         | 
| 141 | 
            +
                end
         | 
| 132 142 | 
             
              end
         | 
| 133 143 | 
             
            end
         | 
| @@ -193,17 +193,5 @@ module Piggybak | |
| 193 193 | 
             
                def admin_label
         | 
| 194 194 | 
             
                  "Order ##{self.id}"    
         | 
| 195 195 | 
             
                end
         | 
| 196 | 
            -
             | 
| 197 | 
            -
                def subtotal
         | 
| 198 | 
            -
                  v = 0
         | 
| 199 | 
            -
             | 
| 200 | 
            -
                  self.line_items.select { |li| li.line_item_type == "sellable" }.each do |line_item|
         | 
| 201 | 
            -
                    if !line_item._destroy
         | 
| 202 | 
            -
                      v += line_item.price
         | 
| 203 | 
            -
                    end
         | 
| 204 | 
            -
                  end
         | 
| 205 | 
            -
             | 
| 206 | 
            -
                  v
         | 
| 207 | 
            -
                end
         | 
| 208 196 | 
             
              end
         | 
| 209 197 | 
             
            end
         | 
| @@ -2,30 +2,16 @@ | |
| 2 2 | 
             
            N/A
         | 
| 3 3 | 
             
            <% else -%>
         | 
| 4 4 | 
             
            <table cellpadding="5" cellspacing="0">
         | 
| 5 | 
            +
                    <% Piggybak::LineItem.sorted_line_item_types.each do |type| -%>
         | 
| 5 6 | 
             
            	<tr>
         | 
| 6 | 
            -
            		<td width="150" | 
| 7 | 
            -
            		<td><%= number_to_currency form.object. | 
| 8 | 
            -
            	</tr>
         | 
| 9 | 
            -
            	<tr>
         | 
| 10 | 
            -
            		<td>Shipping</td>
         | 
| 11 | 
            -
            		<td><%= number_to_currency form.object.shipment_charge %></td>
         | 
| 12 | 
            -
            	</tr>
         | 
| 13 | 
            -
            	<tr>
         | 
| 14 | 
            -
            		<td>Tax</td>
         | 
| 15 | 
            -
            		<td><%= number_to_currency form.object.tax_charge %></td>
         | 
| 16 | 
            -
            	</tr>
         | 
| 17 | 
            -
            	<tr>
         | 
| 18 | 
            -
            		<td>Adjustments</td>
         | 
| 19 | 
            -
            		<td><%= number_to_currency form.object.adjustment_charge %></td>
         | 
| 7 | 
            +
            		<td width="150"><%= type.to_s.pluralize.titleize %></td>
         | 
| 8 | 
            +
            		<td><%= number_to_currency form.object.send("#{type}_charge") %></td>
         | 
| 20 9 | 
             
            	</tr>
         | 
| 10 | 
            +
            	<% end -%>
         | 
| 21 11 | 
             
            	<tr>
         | 
| 22 12 | 
             
            		<td>Total</td>
         | 
| 23 13 | 
             
            		<td><%= number_to_currency form.object.total %></td>
         | 
| 24 14 | 
             
            	</tr>
         | 
| 25 | 
            -
            	<tr>
         | 
| 26 | 
            -
            		<td>Payments</td>
         | 
| 27 | 
            -
            		<td><%= number_to_currency form.object.payment_charge %></td>
         | 
| 28 | 
            -
            	</tr>
         | 
| 29 15 | 
             
            	<tr>
         | 
| 30 16 | 
             
            		<td>Balance Due</td>
         | 
| 31 17 | 
             
            		<td><%= number_to_currency form.object.total_due %></td>
         | 
    
        data/lib/piggybak.rb
    CHANGED
    
    | @@ -40,7 +40,7 @@ module Piggybak | |
| 40 40 | 
             
                    plural_k = k.to_s.pluralize.to_sym
         | 
| 41 41 | 
             
                    if v[:nested_attrs]
         | 
| 42 42 | 
             
                      Piggybak::LineItem.class_eval do
         | 
| 43 | 
            -
                        # TODO: dependent destroy destroys all line items.  | 
| 43 | 
            +
                        # TODO: dependent destroy destroys all line items. Fix and remove after_destroy on line items
         | 
| 44 44 | 
             
                        has_one k, :class_name => v[:class_name] #, :dependent => :destroy
         | 
| 45 45 | 
             
                        accepts_nested_attributes_for k
         | 
| 46 46 | 
             
                        attr_accessible "#{k}_attributes".to_sym
         | 
| @@ -51,10 +51,21 @@ module Piggybak | |
| 51 51 | 
             
                    end
         | 
| 52 52 | 
             
                    Piggybak::Order.class_eval do
         | 
| 53 53 | 
             
                      define_method "#{k}_charge" do
         | 
| 54 | 
            -
                         | 
| 54 | 
            +
                        # Scope doesn't work here for lookup of unsaved elements
         | 
| 55 | 
            +
                        # TODO: Figure out if we can fix, or specify behavior
         | 
| 56 | 
            +
                        charge = 0
         | 
| 57 | 
            +
                        self.line_items.each do |li|
         | 
| 58 | 
            +
                          next if li._destroy || li.line_item_type.to_sym != k
         | 
| 59 | 
            +
                          charge += li.price 
         | 
| 60 | 
            +
                        end
         | 
| 61 | 
            +
                        charge
         | 
| 55 62 | 
             
                      end
         | 
| 56 63 | 
             
                    end
         | 
| 57 64 | 
             
                  end
         | 
| 65 | 
            +
                  # Define method subtotal on order, alias to sellable_charge
         | 
| 66 | 
            +
                  Piggybak::Order.class_eval do
         | 
| 67 | 
            +
                    alias :subtotal :sellable_charge 
         | 
| 68 | 
            +
                  end
         | 
| 58 69 | 
             
                end
         | 
| 59 70 |  | 
| 60 71 | 
             
                initializer "piggybak.rails_admin_config" do |app|
         | 
| @@ -62,8 +73,8 @@ module Piggybak | |
| 62 73 | 
             
                    plural_k = k.to_s.pluralize.to_sym
         | 
| 63 74 | 
             
                    if v[:nested_attrs]
         | 
| 64 75 | 
             
                      Piggybak::LineItem.class_eval do
         | 
| 65 | 
            -
                        # TODO:  | 
| 66 | 
            -
                        has_one k, :class_name => v[:class_name] | 
| 76 | 
            +
                        # TODO: See above
         | 
| 77 | 
            +
                        has_one k, :class_name => v[:class_name]
         | 
| 67 78 | 
             
                        accepts_nested_attributes_for k
         | 
| 68 79 | 
             
                        attr_accessible "#{k}_attributes".to_sym
         | 
| 69 80 | 
             
                      end
         | 
    
        data/lib/piggybak/config.rb
    CHANGED
    
    | @@ -26,22 +26,27 @@ module Piggybak | |
| 26 26 |  | 
| 27 27 | 
             
                    @line_item_types = { :sellable => { :visible => true,
         | 
| 28 28 | 
             
                                                        :fields => ["sellable_id", "quantity"],
         | 
| 29 | 
            -
                                                        :allow_destroy => true | 
| 29 | 
            +
                                                        :allow_destroy => true,
         | 
| 30 | 
            +
                                                        :sort => 1 },
         | 
| 30 31 | 
             
                                         :payment => { :visible => true,
         | 
| 31 32 | 
             
                                                       :nested_attrs => true,
         | 
| 32 33 | 
             
                                                       :fields => ["payment"],
         | 
| 33 34 | 
             
                                                       :allow_destroy => false,
         | 
| 34 | 
            -
                                                       :class_name => "::Piggybak::Payment" | 
| 35 | 
            +
                                                       :class_name => "::Piggybak::Payment",
         | 
| 36 | 
            +
                                                       :sort => 5 },
         | 
| 35 37 | 
             
                                         :shipment => { :visible => true, 
         | 
| 36 38 | 
             
                                                        :nested_attrs => true, 
         | 
| 37 39 | 
             
                                                        :fields => ["shipment"], 
         | 
| 38 40 | 
             
                                                        :allow_destroy => true,
         | 
| 39 | 
            -
                                                        :class_name => "::Piggybak::Shipment"  | 
| 41 | 
            +
                                                        :class_name => "::Piggybak::Shipment", 
         | 
| 42 | 
            +
                                                        :sort => 2 },
         | 
| 40 43 | 
             
                                         :adjustment => { :visible => true, 
         | 
| 41 44 | 
             
                                                          :fields => ["description", "price"],
         | 
| 42 | 
            -
                                                          :allow_destroy => true | 
| 45 | 
            +
                                                          :allow_destroy => true,
         | 
| 46 | 
            +
                                                          :sort => 4 },
         | 
| 43 47 | 
             
                                         :tax => { :visible => false, 
         | 
| 44 | 
            -
                                                   :allow_destroy => false | 
| 48 | 
            +
                                                   :allow_destroy => false,
         | 
| 49 | 
            +
                                                   :sort => 3 }
         | 
| 45 50 | 
             
                                       }
         | 
| 46 51 |  | 
| 47 52 | 
             
                    @default_country = "US"
         | 
    
        data/lib/piggybak/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: piggybak
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.6. | 
| 4 | 
            +
              version: 0.6.4
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -11,7 +11,7 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2012-10- | 
| 14 | 
            +
            date: 2012-10-19 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: rails
         | 
| @@ -164,6 +164,7 @@ files: | |
| 164 164 | 
             
            - db/migrate/20120716191225_add_masked_credit_card_numbers.rb
         | 
| 165 165 | 
             
            - db/migrate/20111227150106_create_orders.rb
         | 
| 166 166 | 
             
            - db/migrate/20111228231806_create_payment_methods.rb
         | 
| 167 | 
            +
            - db/migrate/20121018213421_drop_sort_from_line_items.rb
         | 
| 167 168 | 
             
            - db/migrate/20111228231838_create_shipments.rb
         | 
| 168 169 | 
             
            - db/migrate/20120104020930_populate_countries_and_states.rb
         | 
| 169 170 | 
             
            - db/migrate/20111227213558_create_variants.rb
         | 
| @@ -207,7 +208,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 207 208 | 
             
                  version: '0'
         | 
| 208 209 | 
             
                  segments:
         | 
| 209 210 | 
             
                  - 0
         | 
| 210 | 
            -
                  hash:  | 
| 211 | 
            +
                  hash: 32961448645574721
         | 
| 211 212 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 212 213 | 
             
              none: false
         | 
| 213 214 | 
             
              requirements:
         | 
| @@ -216,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 216 217 | 
             
                  version: '0'
         | 
| 217 218 | 
             
                  segments:
         | 
| 218 219 | 
             
                  - 0
         | 
| 219 | 
            -
                  hash:  | 
| 220 | 
            +
                  hash: 32961448645574721
         | 
| 220 221 | 
             
            requirements: []
         | 
| 221 222 | 
             
            rubyforge_project: 
         | 
| 222 223 | 
             
            rubygems_version: 1.8.23
         |