spree_invoice 1.1.13 → 1.2.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.
data/README.md CHANGED
@@ -8,7 +8,7 @@ Basic Installation
8
8
 
9
9
  1. Add the following to your Gemfile
10
10
  <pre>
11
- gem 'spree_invoice', '~> 1.1.12'
11
+ gem 'spree_invoice', '~> 1.2.0'
12
12
  </pre>
13
13
  2. Run `bundle install`
14
14
  3. To copy and apply migrations run:
@@ -3,13 +3,13 @@ module Spree
3
3
 
4
4
  def show
5
5
  @order = Order.find_by_id(params[:order_id])
6
- @order.create_invoice(:user => @order.user)
6
+ #@order.create_invoice(:user => @order.user)
7
7
  @address = @order.bill_address
8
- @invoice_print = current_user.has_role?(:admin) ? Spree::Invoice.find_or_create_by_order_id({:order_id => @order.id, :user_id => @order ? @order.user_id : nil}) : current_user.invoices.find_or_create_by_order_id(@order.id)
8
+ @invoice_print = current_user.has_role?(:admin) ? Spree::Invoice.find_or_create_by_order_id_and_user_id(@order.id, (@order ? @order.user_id : nil)) : current_user.invoices.find_or_create_by_order_id(@order.id)
9
9
  if @invoice_print
10
10
  respond_to do |format|
11
11
  format.pdf { send_data @invoice_print.generate_pdf, :filename => "#{@invoice_print.invoice_number}.pdf", :type => 'application/pdf' }
12
- format.html { render :file => SpreeInvoice.invoice_template_path.to_s, :layout => false }
12
+ format.html { render :file => Spree::Config[:invoice_template_path].to_s, :layout => false }
13
13
  end
14
14
  else
15
15
  if current_user.has_role?(:admin)
@@ -1,18 +1,17 @@
1
- module Spree
2
- OrderMailer.class_eval do
3
-
4
- def confirm_email(order, resend = false)
5
- if SpreeInvoice.on_confirm_email && !SpreeInvoice.except_payment.include?(order.payment_method.type)
6
- inv_print = Spree::Invoice.find_or_create_by_order_id({:order_id => order.id, :user_id => order.user_id})
7
- attachments["#{inv_print.invoice_number}.pdf"] = {
8
- :content => inv_print.generate_pdf,
9
- :mime_type => 'application/pdf'
10
- } if inv_print
11
- end
12
- @order = order
13
- subject = (resend ? "[#{t(:resend).upcase}] " : "")
14
- subject += "#{Config[:site_name]} #{t('order_mailer.confirm_email.subject')} ##{order.number}"
15
- mail(:to => order.email, :subject => subject)
1
+ Spree::OrderMailer.class_eval do
2
+
3
+ def confirm_email(order, resend = false)
4
+ if Spree::Config[:on_confirm_email]
5
+ inv_print = Spree::Invoice.find_or_create_by_oser_id_and_user_id(order.id, order.user_id)
6
+ attachments["#{inv_print.invoice_number}.pdf"] = {
7
+ :content => inv_print.generate_pdf,
8
+ :mime_type => 'application/pdf'
9
+ } if inv_print
16
10
  end
11
+ @order = order
12
+ subject = (resend ? "[#{t(:resend).upcase}] " : '')
13
+ subject += "#{Spree::Config[:site_name]} #{t('order_mailer.cancel_email.subject')} ##{order.number}"
14
+ mail(:to => order.email,
15
+ :subject => subject)
17
16
  end
18
17
  end
@@ -0,0 +1,26 @@
1
+ # This is the primary location for defining spree preferences
2
+ #
3
+ # The expectation is that this is created once and stored in
4
+ # the spree environment
5
+ #
6
+ # setters:
7
+ # a.color = :blue
8
+ # a[:color] = :blue
9
+ # a.set :color = :blue
10
+ # a.preferred_color = :blue
11
+ #
12
+ # getters:
13
+ # a.color
14
+ # a[:color]
15
+ # a.get :color
16
+ # a.preferred_color
17
+ #
18
+ Spree::AppConfiguration.class_eval do
19
+ # Alphabetized to more easily lookup particular preferences
20
+ preference :invoice_on_confirm_email, :boolean, :default => false
21
+ preference :invoice_on_order_complete, :boolean, :default => false
22
+ preference :invoice_seller_logo, :string, :default => Spree::Config[:admin_interface_logo]
23
+ preference :invoice_template_path, :string, :default => "spree/invoices/invoice_template.html"
24
+ preference :invoice_wkhtmltopdf_margin, :string, :default => "{\"top\":\"10\",\"bottom\":\"10\",\"left\":\"15\",\"right\":\"15\"}"
25
+ preference :invoice_seller_details, :string, :default => "Spree Demo| P.IVA: 12345678901| C.F.: 12345678901| Street Address, 12| 00000 City (STATE)"
26
+ end
@@ -3,7 +3,7 @@ module Spree
3
3
  belongs_to :user
4
4
  belongs_to :order
5
5
 
6
- before_create :generate_invoice_number
6
+ before_validation :generate_invoice_number, :on => :create
7
7
 
8
8
  scope :from_current_year, where(["created_at > ? AND created_at < ?", Time.now.at_beginning_of_year, Time.now.at_end_of_year])
9
9
 
@@ -12,19 +12,20 @@ module Spree
12
12
  def generate_pdf
13
13
  self.update_attribute(:counter, self.counter + 1)
14
14
  WickedPdf.new.pdf_from_string(
15
- StaticRender.render_erb(SpreeInvoice.invoice_template_path, {
15
+ StaticRender.render_erb(Spree::Config[:invoice_template_path], {
16
16
  :@order => self.order,
17
17
  :@address => self.order.bill_address,
18
18
  :@invoice_print => self
19
19
  }), {
20
- :margin => SpreeInvoice.wkhtmltopdf_margin
20
+ :margin => ActiveSupport::JSON.decode(Spree::Config[:invoice_wkhtmltopdf_margin])
21
21
  }
22
22
  )
23
23
  end
24
24
 
25
- private
26
25
  def generate_invoice_number
27
- write_attribute(:invoice_number, SpreeInvoice.invoice_number_generation_method.call(Spree::Invoice.from_current_year.length + 1))
26
+ last_record = self.class.from_current_year.size
27
+ new_record = "%04d" % (last_record + 1).to_s
28
+ self.invoice_number = "#{new_record}/A" if self.invoice_number.blank?
28
29
  end
29
30
  end
30
31
 
@@ -1,11 +1,13 @@
1
1
  Spree::Order.class_eval do
2
- has_one :invoice, :dependent => :destroy
3
- #after_update :add_invoice
2
+ has_one :invoice
3
+ after_update :add_invoice
4
4
 
5
5
  private
6
- #def add_invoice
6
+ def add_invoice
7
7
  # Only create an invoice if the order is completed!
8
8
  # And only create it if there is no invoice yet.
9
- # self.create_invoice(:user => user) if self.completed? && self.invoice.blank?
10
- #end
9
+ if Spree::Config[:invoice_on_order_complete]
10
+ self.create_invoice(:user => user) if self.completed? && self.invoice.blank?
11
+ end
12
+ end
11
13
  end
@@ -1,3 +1,3 @@
1
1
  Spree::User.class_eval do
2
- has_many :invoice
2
+ has_many :invoices
3
3
  end
@@ -3,28 +3,3 @@ require 'wicked_pdf'
3
3
  WickedPdf.config = {
4
4
  :exe_path => SpreeInvoice::WKHTMLToPDF.bin_path
5
5
  }
6
-
7
- SpreeInvoice.setup do |config|
8
- config.on_confirm_email = true
9
- config.invoice_number_generation_method = lambda { |next_invoice_count|
10
- number = "%04d" % next_invoice_count.to_s
11
- "R-#{Time.now.year}-#{number}"
12
- }
13
-
14
- config.invoice_template_path = "app/views/spree/invoices/invoice_template.html.erb"
15
- config.except_payment = ['Spree::PaymentMethod::Check']
16
- config.wkhtmltopdf_margin = {
17
- :top => 10,
18
- :bottom => 10,
19
- :left => 15,
20
- :right => 15
21
- }
22
- config.invoice_seller_details = %Q|
23
- Spree Demo
24
- P.IVA: 12345678901
25
- C.F.: 12345678901
26
- Street Address, 12
27
- 00000 City (STATE)
28
- |
29
- config.invoice_seller_logo = Spree::Config[:admin_interface_logo]
30
- end
@@ -8,10 +8,10 @@
8
8
  <body>
9
9
  <div id="wrapper">
10
10
  <div id="header">
11
- <%= wicked_pdf_image_tag(SpreeInvoice.invoice_seller_logo) %>
11
+ <%= wicked_pdf_image_tag(Spree::Config[:invoice_seller_logo]) %>
12
12
  </div>
13
13
  <div id="content">
14
- <%= SpreeInvoice.invoice_seller_details %><br />
14
+ <%= Spree::Config[:invoice_seller_details].gsub("|", "<br />").html_safe %><br />
15
15
  <%= @order.id %>
16
16
  </div>
17
17
  </div>
@@ -1,33 +1,3 @@
1
1
  require 'spree_core'
2
+ require 'wicked_pdf'
2
3
  require 'spree_invoice/engine'
3
-
4
- module SpreeInvoice
5
- ## CONFIGURATION OPTIONS
6
- mattr_accessor :on_confirm_email
7
- @@on_confirm_email = true
8
-
9
- mattr_accessor :invoice_seller_details
10
- @@invoice_seller_details = nil
11
-
12
- mattr_accessor :invoice_seller_logo
13
- @@invoice_seller_logo = nil
14
-
15
- mattr_accessor :invoice_template_path
16
- @@invoice_template_path = "app/views/spree/invoices/invoice_template.html.erb"
17
-
18
- mattr_accessor :except_payment
19
- @@except_payment = ['Spree::PaymentMethod::Check']
20
-
21
- mattr_accessor :wkhtmltopdf_margin
22
- @@wkhtmltopdf_margin = {:top => 10, :bottom => 10, :left => 15, :right => 15}
23
-
24
- mattr_accessor :invoice_number_generation_method
25
- @@invoice_number_generation_method = lambda { |next_invoice_count|
26
- number = "%04d" % next_invoice_count.to_s
27
- "R-#{Time.now.year}-#{number}"
28
- }
29
-
30
- def self.setup
31
- yield self
32
- end
33
- end
@@ -1,3 +1,3 @@
1
1
  module SpreeInvoice
2
- VERSION = "1.1.13"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_invoice
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.13
4
+ version: 1.2.0
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: 2013-01-04 00:00:00.000000000 Z
14
+ date: 2013-03-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: spree_core
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ! '>='
22
22
  - !ruby/object:Gem::Version
23
- version: '0'
23
+ version: 1.1.5
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
@@ -28,39 +28,23 @@ dependencies:
28
28
  requirements:
29
29
  - - ! '>='
30
30
  - !ruby/object:Gem::Version
31
- version: '0'
31
+ version: 1.1.5
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: wicked_pdf
34
34
  requirement: !ruby/object:Gem::Requirement
35
35
  none: false
36
36
  requirements:
37
- - - ! '>='
37
+ - - ~>
38
38
  - !ruby/object:Gem::Version
39
- version: '0'
39
+ version: 0.9.4
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  none: false
44
44
  requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- - !ruby/object:Gem::Dependency
49
- name: rspec-rails
50
- requirement: !ruby/object:Gem::Requirement
51
- none: false
52
- requirements:
53
- - - ! '>='
54
- - !ruby/object:Gem::Version
55
- version: '0'
56
- type: :development
57
- prerelease: false
58
- version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
- requirements:
61
- - - ! '>='
45
+ - - ~>
62
46
  - !ruby/object:Gem::Version
63
- version: '0'
47
+ version: 0.9.4
64
48
  description: This gem provides invoice pdf generation from a html template via wkhtmltopdf.
65
49
  email:
66
50
  - damiano.giacomello@diginess.it
@@ -82,6 +66,7 @@ files:
82
66
  - app/assets/images/admin/icons/receipt.png
83
67
  - app/controllers/spree/invoice_controller.rb
84
68
  - app/mailers/spree/order_mailer_decorator.rb
69
+ - app/models/spree/app_configuration_decorator.rb
85
70
  - app/models/spree/invoice.rb
86
71
  - app/models/spree/order_decorator.rb
87
72
  - app/models/spree/user_decorator.rb