solidus_print_invoice 1.0.0 → 1.0.1
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/.gitignore +2 -0
- data/.travis.yml +11 -0
- data/Gemfile +7 -0
- data/README.md +2 -0
- data/README_prawn.md +37 -0
- data/Rakefile +22 -0
- data/config/locales/de.yml +17 -0
- data/config/locales/en.yml +22 -0
- data/config/locales/es.yml +17 -0
- data/config/locales/fi.yml +12 -0
- data/db/migrate/20140123094547_add_invoice_details_to_spree_orders.rb +6 -0
- data/lib/solidus_print_invoice/version.rb +1 -1
- data/solidus_print_invoice.gemspec +32 -0
- data/spec/features/admin_invoice_settings_spec.rb +28 -0
- data/spec/features/admin_order_spec.rb +21 -0
- data/spec/requests/admin_orders_controller_spec.rb +21 -0
- data/spec/spec_helper.rb +50 -0
- metadata +23 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0efac47fbe5deb8b20609cdf6a748a17a77dd59
|
4
|
+
data.tar.gz: 5cf6bdb63c870299e86e3bab44c33d134999397a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e0031aaf90b0e2617c86de1f9d09506ac2d4a5611137295e27932691eabc95d7e02398460db084a17bed032463f879b1db452065eb74820671fe1991fb7a986
|
7
|
+
data.tar.gz: 79ac861977a962db6f7bc76f8ba239eea7363de41a4e940477443784d574b992478689c9f11c04615a2d1781618ca68da9a23d20e96cf8b74d4d2b38e04a5060
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
CHANGED
data/README_prawn.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Prawn-handler
|
2
|
+
|
3
|
+
A Rails template handler for PDF library [Prawn](http://prawn.majesticseacreature.com/). You can find a more detailed description in its [introduction article](http://roman.flucti.com/alternative-prawn-handler-for-rails).
|
4
|
+
|
5
|
+
There already exists [prawnto](http://cracklabs.com/prawnto) but it's too bloated for my taste. Prawn-handler is lightweight, simple, and less of a hassle to use.
|
6
|
+
|
7
|
+
## Usage
|
8
|
+
|
9
|
+
3. Name PDF view files like `foo.pdf.prawn`. Inside, use the `pdf` method to access a `Prawn::Document` object. In addition, this handler allows for lazy method calls: you don't have to specify the receiver explicitely, which cleans up the resulting view code.
|
10
|
+
|
11
|
+
For example, the following code with formal calls:
|
12
|
+
|
13
|
+
pdf.bounding_box [100, 600], :width => 200 do
|
14
|
+
pdf.text "The rain in spain falls mainly on the plains " * 5
|
15
|
+
pdf.stroke do
|
16
|
+
pdf.line pdf.bounds.top_left, pdf.bounds.top_right
|
17
|
+
pdf.line pdf.bounds.bottom_left, pdf.bounds.bottom_right
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
Is equivalent to this one with lazy calls:
|
22
|
+
|
23
|
+
bounding_box [100, 600], :width => 200 do
|
24
|
+
text "The rain in spain falls mainly on the plains " * 5
|
25
|
+
stroke do
|
26
|
+
line bounds.top_left, bounds.top_right
|
27
|
+
line bounds.bottom_left, bounds.bottom_right
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
This is accomplished without `instance_eval`, so that access to instance variables set by the controller is retained.
|
32
|
+
|
33
|
+
## Credits
|
34
|
+
|
35
|
+
Initially written by [Roman Le Négrate](http://roman.flucti.com) ([contact](mailto:roman.lenegrate@gmail.com)).
|
36
|
+
Released under the MIT-license: see the `LICENSE` file.
|
37
|
+
Adopted to Rails 3 by [Torsten Rüger](http://github.com/dancinglightning)
|
data/Rakefile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
require 'bundler'
|
3
|
+
Bundler::GemHelper.install_tasks
|
4
|
+
|
5
|
+
require 'rspec/core/rake_task'
|
6
|
+
require 'spree/testing_support/common_rake'
|
7
|
+
|
8
|
+
RSpec::Core::RakeTask.new
|
9
|
+
|
10
|
+
task :default do
|
11
|
+
if Dir["spec/dummy"].empty?
|
12
|
+
Rake::Task[:test_app].invoke
|
13
|
+
Dir.chdir("../../")
|
14
|
+
end
|
15
|
+
Rake::Task[:spec].invoke
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'Generates a dummy app for testing'
|
19
|
+
task :test_app do
|
20
|
+
ENV['LIB_NAME'] = 'solidus_print_invoice'
|
21
|
+
Rake::Task['common:test_app'].invoke("Spree::User")
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
de:
|
2
|
+
spree:
|
3
|
+
customer_invoice: Kundenrechnung
|
4
|
+
footer_left: "Andere Informationen"
|
5
|
+
footer_left2: " 14 Tage oder nie"
|
6
|
+
|
7
|
+
footer_right: "Firma Telefon www "
|
8
|
+
footer_right2: "Meine Firma 040 146 1222 www.gohereoften.com"
|
9
|
+
|
10
|
+
print_note: Dies ist keine echte Rechnung (NICH AN KUNDEN SENDEN!)
|
11
|
+
|
12
|
+
invoice_print: Rechnung drucken
|
13
|
+
packaging_slip_print: Warenbegleitschein drucken
|
14
|
+
packaging_slip: Packzettel drucken
|
15
|
+
|
16
|
+
invoice_number: Rechnungsnummer
|
17
|
+
invoice_date: Rechnungsdatum
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Sample localization file for English. Add more files in this directory for other locales.
|
2
|
+
|
3
|
+
en:
|
4
|
+
spree:
|
5
|
+
customer_invoice: Customer Invoice
|
6
|
+
footer_left: "Return in Other info"
|
7
|
+
footer_left2: " 14 days or never"
|
8
|
+
|
9
|
+
footer_right: "Company Phone www "
|
10
|
+
footer_right2: " My great company 040 146 1222 www.gohereoften.com"
|
11
|
+
|
12
|
+
print_note: This is not an original invoice (DO NOT SEND THIS TO CUSTOMER)
|
13
|
+
|
14
|
+
invoice_print: Print Invoice
|
15
|
+
packaging_slip_print: Print Slip
|
16
|
+
packaging_slip: Packaging Slip
|
17
|
+
|
18
|
+
invoice_font_face: Invoice Font Face
|
19
|
+
invoice_logo_scale: Invoice Logo Scale
|
20
|
+
|
21
|
+
invoice_number: Invoice Number
|
22
|
+
invoice_date: Invoice issued on
|
@@ -0,0 +1,17 @@
|
|
1
|
+
es:
|
2
|
+
spree:
|
3
|
+
customer_invoice: "Factura del cliente"
|
4
|
+
footer_left: "Devolver en Otro"
|
5
|
+
footer_left2: " 14 días o nunca"
|
6
|
+
|
7
|
+
footer_right: "Empresa Teléfono Web "
|
8
|
+
footer_right2: " My Genial Empresa 040 146 1222 www.visitanosamenudo.com"
|
9
|
+
|
10
|
+
print_note: "Esta no es la factura original (NO ENVIAR AL CLIENTE)"
|
11
|
+
|
12
|
+
invoice_print: "Imprimir Factura"
|
13
|
+
packaging_slip_print: "Imprimir Recibo para el Embalaje"
|
14
|
+
packaging_slip: "Recibo para el Embalaje"
|
15
|
+
|
16
|
+
invoice_number: Número Factura
|
17
|
+
invoice_date: Expedida el
|
@@ -0,0 +1,12 @@
|
|
1
|
+
fi:
|
2
|
+
spree:
|
3
|
+
footer_left: "Maksuehto Viivästyskorko IBAN BIC "
|
4
|
+
footer_left2: " 14 päivää netto 15 % FI1017 4530 0013 2474 NDEAFIHH (Nordea)"
|
5
|
+
|
6
|
+
footer_right: "Sähköposti Puhelin Nettikauppa Y-Tunnus"
|
7
|
+
footer_right2: " tukku@auringostaitaan.fi 040 146 1222 tukku.auringostaitaan.fi 2380478-1"
|
8
|
+
customer_invoice: Lasku
|
9
|
+
thanks: Kiitos tilauksesta.
|
10
|
+
packaging_slip_print: Kuormakirja
|
11
|
+
invoice_print: Tulosta Lasku
|
12
|
+
packaging_slip: Kuormakirja
|
@@ -0,0 +1,32 @@
|
|
1
|
+
lib = File.expand_path('../lib/', __FILE__)
|
2
|
+
$:.unshift lib unless $:.include?(lib)
|
3
|
+
|
4
|
+
require 'solidus_print_invoice/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.name = 'solidus_print_invoice'
|
9
|
+
s.version = Spree::PrintInvoice::VERSION
|
10
|
+
s.summary = 'Print invoices from a spree order'
|
11
|
+
s.homepage = 'https://github.com/solidusio-contrib/solidus_print_invoice'
|
12
|
+
|
13
|
+
s.required_ruby_version = '>= 1.9.3'
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- spec/*`.split("\n")
|
17
|
+
s.require_path = 'lib'
|
18
|
+
s.authors = 'Spree & Solidus Community'
|
19
|
+
|
20
|
+
s.add_dependency('prawn', '1.0.0')
|
21
|
+
s.add_dependency('solidus', '~> 1.0')
|
22
|
+
s.add_dependency 'deface'
|
23
|
+
|
24
|
+
s.add_development_dependency 'rspec-rails', '~> 3.4'
|
25
|
+
s.add_development_dependency 'capybara'
|
26
|
+
s.add_development_dependency 'selenium-webdriver'
|
27
|
+
s.add_development_dependency 'poltergeist'
|
28
|
+
s.add_development_dependency 'database_cleaner'
|
29
|
+
s.add_development_dependency 'pry'
|
30
|
+
s.add_development_dependency 'factory_girl_rails'
|
31
|
+
s.add_development_dependency 'sqlite3'
|
32
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.feature "Print Invoice Settings", js: true do
|
4
|
+
given!(:order) { FactoryGirl.create(:completed_order_with_totals) }
|
5
|
+
given(:user) { FactoryGirl.create(:admin_user, password: "boxen1011") }
|
6
|
+
|
7
|
+
scenario "It allows for the update of print invoice settings" do
|
8
|
+
visit spree.admin_path
|
9
|
+
|
10
|
+
fill_in "Email", with: user.email
|
11
|
+
fill_in "Password", with: "boxen1011"
|
12
|
+
click_button "Login"
|
13
|
+
|
14
|
+
click_link "Settings"
|
15
|
+
click_link "General"
|
16
|
+
|
17
|
+
select "Times Roman", from: "print_invoice_font_face"
|
18
|
+
fill_in "print_invoice_next_number", with: "150"
|
19
|
+
fill_in "print_invoice_logo_scale", with: "60"
|
20
|
+
|
21
|
+
click_button "Update"
|
22
|
+
visit current_path
|
23
|
+
|
24
|
+
expect(find("#print_invoice_font_face").value).to eql("Times-Roman")
|
25
|
+
expect(find("#print_invoice_next_number").value).to eql("150")
|
26
|
+
expect(find("#print_invoice_logo_scale").value).to eql("60")
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.feature "Print Invoice button", js: true do
|
4
|
+
given!(:order) { FactoryGirl.create(:completed_order_with_totals) }
|
5
|
+
given(:user) { FactoryGirl.create(:admin_user, password: "boxen1011") }
|
6
|
+
|
7
|
+
scenario "it displays a print invoice button on order pages" do
|
8
|
+
visit spree.admin_path
|
9
|
+
|
10
|
+
fill_in "Email", with: user.email
|
11
|
+
fill_in "Password", with: "boxen1011"
|
12
|
+
click_button "Login"
|
13
|
+
|
14
|
+
click_link order.number
|
15
|
+
|
16
|
+
within(".page-actions") do
|
17
|
+
print_button = find("a", text: /Print Invoice/i)
|
18
|
+
expect(URI(print_button[:href]).path).to eql(spree.admin_order_path(order, :pdf))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe "Order Invoice Generation" do
|
4
|
+
describe "GET show" do
|
5
|
+
let(:order) { FactoryGirl.create(:completed_order_with_totals) }
|
6
|
+
let(:user) { FactoryGirl.create(:admin_user, password: "testing123") }
|
7
|
+
let(:headers) {{ "X-Spree-Token" => user.spree_api_key }}
|
8
|
+
|
9
|
+
it "returns a pdf" do
|
10
|
+
# The invoice generation feature is restricted to admins
|
11
|
+
post(spree.login_path, 'spree_user[email]' => user.email, 'spree_user[password]' => 'testing123')
|
12
|
+
get(spree.admin_order_path(order.number, :pdf))
|
13
|
+
|
14
|
+
aggregate_failures "pdf response is successful" do
|
15
|
+
expect(response).to be_success
|
16
|
+
expect(response.headers["Content-Type"]).to eql("application/pdf; charset=utf-8")
|
17
|
+
expect(response.body).to start_with('%PDF')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
ENV["RAILS_ENV"] ||= "test"
|
2
|
+
|
3
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
4
|
+
|
5
|
+
require "rspec/rails"
|
6
|
+
require 'capybara/poltergeist'
|
7
|
+
require 'database_cleaner'
|
8
|
+
require 'factory_girl_rails'
|
9
|
+
require 'ffaker'
|
10
|
+
require 'pry'
|
11
|
+
|
12
|
+
require 'spree/testing_support/factories'
|
13
|
+
|
14
|
+
unless ENV['USE_SELENIUM']
|
15
|
+
Capybara.register_driver :poltergeist do |app|
|
16
|
+
Capybara::Poltergeist::Driver.new(app, timeout: 60)
|
17
|
+
end
|
18
|
+
Capybara.javascript_driver = :poltergeist
|
19
|
+
end
|
20
|
+
|
21
|
+
Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each { |f| require f }
|
22
|
+
|
23
|
+
RSpec.configure do |config|
|
24
|
+
config.include Capybara::DSL, type: :feature
|
25
|
+
config.infer_spec_type_from_file_location!
|
26
|
+
|
27
|
+
config.filter_run :focus
|
28
|
+
config.run_all_when_everything_filtered = true
|
29
|
+
config.use_transactional_fixtures = false
|
30
|
+
config.example_status_persistence_file_path = "tmp/failed_examples.txt"
|
31
|
+
config.disable_monkey_patching!
|
32
|
+
|
33
|
+
config.before(:suite) do
|
34
|
+
DatabaseCleaner.clean_with(:truncation)
|
35
|
+
end
|
36
|
+
|
37
|
+
config.before(:each) do
|
38
|
+
if RSpec.current_example.metadata[:js]
|
39
|
+
DatabaseCleaner.strategy = :truncation
|
40
|
+
else
|
41
|
+
DatabaseCleaner.strategy = :transaction
|
42
|
+
end
|
43
|
+
|
44
|
+
DatabaseCleaner.start
|
45
|
+
end
|
46
|
+
|
47
|
+
config.after(:each) do
|
48
|
+
DatabaseCleaner.clean
|
49
|
+
end
|
50
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_print_invoice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Spree & Solidus Community
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: prawn
|
@@ -170,7 +170,12 @@ executables: []
|
|
170
170
|
extensions: []
|
171
171
|
extra_rdoc_files: []
|
172
172
|
files:
|
173
|
+
- ".gitignore"
|
174
|
+
- ".travis.yml"
|
175
|
+
- Gemfile
|
173
176
|
- README.md
|
177
|
+
- README_prawn.md
|
178
|
+
- Rakefile
|
174
179
|
- app/assets/javascripts/spree/backend/solidus_print_invoice.js
|
175
180
|
- app/assets/javascripts/spree/frontend/solidus_print_invoice.js
|
176
181
|
- app/assets/stylesheets/spree/backend/solidus_print_invoice.css
|
@@ -192,12 +197,22 @@ files:
|
|
192
197
|
- app/views/spree/admin/orders/_totals.pdf.prawn
|
193
198
|
- app/views/spree/admin/orders/invoice.pdf.prawn
|
194
199
|
- app/views/spree/admin/orders/packaging_slip.pdf.prawn
|
200
|
+
- config/locales/de.yml
|
201
|
+
- config/locales/en.yml
|
202
|
+
- config/locales/es.yml
|
203
|
+
- config/locales/fi.yml
|
195
204
|
- config/routes.rb
|
205
|
+
- db/migrate/20140123094547_add_invoice_details_to_spree_orders.rb
|
196
206
|
- lib/generators/solidus_print_invoice/install/install_generator.rb
|
197
207
|
- lib/prawn_handler.rb
|
198
208
|
- lib/solidus_print_invoice.rb
|
199
209
|
- lib/solidus_print_invoice/engine.rb
|
200
210
|
- lib/solidus_print_invoice/version.rb
|
211
|
+
- solidus_print_invoice.gemspec
|
212
|
+
- spec/features/admin_invoice_settings_spec.rb
|
213
|
+
- spec/features/admin_order_spec.rb
|
214
|
+
- spec/requests/admin_orders_controller_spec.rb
|
215
|
+
- spec/spec_helper.rb
|
201
216
|
homepage: https://github.com/solidusio-contrib/solidus_print_invoice
|
202
217
|
licenses: []
|
203
218
|
metadata: {}
|
@@ -217,8 +232,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
232
|
version: '0'
|
218
233
|
requirements: []
|
219
234
|
rubyforge_project:
|
220
|
-
rubygems_version: 2.
|
235
|
+
rubygems_version: 2.5.1
|
221
236
|
signing_key:
|
222
237
|
specification_version: 4
|
223
238
|
summary: Print invoices from a spree order
|
224
|
-
test_files:
|
239
|
+
test_files:
|
240
|
+
- spec/features/admin_invoice_settings_spec.rb
|
241
|
+
- spec/features/admin_order_spec.rb
|
242
|
+
- spec/requests/admin_orders_controller_spec.rb
|
243
|
+
- spec/spec_helper.rb
|