solidus_invoice 0.1.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 +7 -0
- data/.gitignore +15 -0
- data/.rspec +1 -0
- data/.rubocop.yml +250 -0
- data/.rvmrc +1 -0
- data/.travis.yml +18 -0
- data/Gemfile +10 -0
- data/MIT-LICENSE +20 -0
- data/README.md +38 -0
- data/Rakefile +32 -0
- data/app/assets/javascripts/spree/backend/solidus_invoice.js +2 -0
- data/app/assets/javascripts/spree/frontend/solidus_invoice.js +2 -0
- data/app/assets/stylesheets/spree/backend/solidus_invoice.scss +4 -0
- data/app/assets/stylesheets/spree/frontend/solidus_invoice.css +4 -0
- data/app/jobs/application_job.rb +9 -0
- data/app/jobs/solidus_invoice/daily_summary_job.rb +32 -0
- data/app/jobs/solidus_invoice/invoice_job.rb +22 -0
- data/app/models/concerns/solidus_invoice/line_item_concern.rb +11 -0
- data/app/models/concerns/solidus_invoice/order_concern.rb +44 -0
- data/app/models/concerns/solidus_invoice/shipment_concern.rb +11 -0
- data/app/models/concerns/solidus_invoice/store_concern.rb +11 -0
- data/app/models/spree.rb +7 -0
- data/app/models/spree/invoice.rb +61 -0
- data/app/models/spree/invoice_serial.rb +9 -0
- data/app/overrides/spree/line_item_override.rb +5 -0
- data/app/overrides/spree/order_override.rb +5 -0
- data/app/overrides/spree/shipment_override.rb +5 -0
- data/app/overrides/spree/store_override.rb +5 -0
- data/bin/rails +9 -0
- data/bin/test +7 -0
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +5 -0
- data/db/migrate/20191107042751_create_spree_invoices.rb +14 -0
- data/db/migrate/20191115204118_create_spree_invoice_serials.rb +13 -0
- data/db/migrate/20191205205004_add_tax_uid_to_spree_addresses.rb +7 -0
- data/db/migrate/20191223173229_add_preferences_to_spree_invoices.rb +7 -0
- data/lib/generators/solidus_invoice/install/install_generator.rb +22 -0
- data/lib/solidus_invoice.rb +4 -0
- data/lib/solidus_invoice/engine.rb +22 -0
- data/lib/solidus_invoice/errors/invalid_serial_error.rb +6 -0
- data/lib/solidus_invoice/factories.rb +34 -0
- data/lib/solidus_invoice/railtie.rb +6 -0
- data/lib/solidus_invoice/version.rb +5 -0
- data/lib/tasks/solidus_invoice_tasks.rake +5 -0
- data/solidus_invoice.gemspec +37 -0
- data/spec/jobs/solidus_invoice/daily_summary_job_spec.rb +24 -0
- data/spec/jobs/solidus_invoice/invoice_job_spec.rb +76 -0
- data/spec/models/spree/address_spec.rb +11 -0
- data/spec/models/spree/invoice_serial_spec.rb +16 -0
- data/spec/models/spree/invoice_spec.rb +55 -0
- data/spec/models/spree/line_item_spec.rb +37 -0
- data/spec/models/spree/order_spec.rb +31 -0
- data/spec/models/spree/shipment_spec.rb +26 -0
- data/spec/models/spree/store_spec.rb +9 -0
- data/spec/spec_helper.rb +98 -0
- metadata +320 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe SolidusInvoice::DailySummaryJob, type: :job do
|
6
|
+
let(:invoice) { factory(:invoice) }
|
7
|
+
let(:subject) {
|
8
|
+
described_class.perform_later(
|
9
|
+
doc_type: invoice.invoice_serial.serial,
|
10
|
+
store_id: invoice.order.store.id
|
11
|
+
)
|
12
|
+
}
|
13
|
+
|
14
|
+
it 'generate summary lines by each invoice' do
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'generate correct daily summary document' do
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#send_sunat' do
|
21
|
+
it 'call summary client' do
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe SolidusInvoice::InvoiceJob, type: :job do
|
6
|
+
let(:cli) { class_double('SunatInvoice::InvoiceClient') }
|
7
|
+
let(:store) { create(:store) }
|
8
|
+
|
9
|
+
context 'with doc_type 01' do
|
10
|
+
let!(:invoice_serial) { create(:invoice_serial, store: store, doc_type: '01') }
|
11
|
+
let(:address) { create(:address, tax_uid: '10800286726') }
|
12
|
+
let(:order) {
|
13
|
+
create(:order_ready_to_ship, store: store, bill_address: address)
|
14
|
+
}
|
15
|
+
let(:provider) { build(:provider) }
|
16
|
+
let(:invoice) {
|
17
|
+
create(:invoice, invoice_serial: invoice_serial, order: order,
|
18
|
+
preferred_sunat_attributes: {
|
19
|
+
provider: provider.to_hash
|
20
|
+
})
|
21
|
+
}
|
22
|
+
let(:subject) {
|
23
|
+
described_class.perform_now(
|
24
|
+
doc_type: invoice.invoice_serial.doc_type,
|
25
|
+
store_id: invoice.order.store.id,
|
26
|
+
invoice_id: invoice.id,
|
27
|
+
env: 'dev'
|
28
|
+
)
|
29
|
+
}
|
30
|
+
|
31
|
+
before do
|
32
|
+
SunatInvoice.configure do |c|
|
33
|
+
c.account_ruc = provider.ruc
|
34
|
+
c.account_user = 'MODDATOS'
|
35
|
+
c.account_password = 'moddatos'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def http_response(options = {})
|
40
|
+
# savon success response
|
41
|
+
defaults = { code: 200, headers: {}, body: {} }
|
42
|
+
response = defaults.merge options
|
43
|
+
|
44
|
+
http = HTTPI::Response.new response[:code], response[:headers], response[:body]
|
45
|
+
Savon::Response.new(http, {}, {})
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'update invoice attribute' do
|
49
|
+
allow_any_instance_of(SunatInvoice::InvoiceClient).to receive(:dispatch)
|
50
|
+
.and_return(http_response)
|
51
|
+
subject
|
52
|
+
invoice.reload
|
53
|
+
expect(invoice.communicated).to eq(true)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'with doc_type 03' do
|
58
|
+
let(:order) { create(:order_ready_to_ship, store: store) }
|
59
|
+
let!(:invoice_serial) { create(:invoice_serial, store: store) }
|
60
|
+
let(:boleta) { create(:invoice, invoice_serial: invoice_serial, order: order) }
|
61
|
+
let(:subject) {
|
62
|
+
described_class.perform_later(
|
63
|
+
doc_type: boleta.invoice_serial.doc_type,
|
64
|
+
store_id: boleta.order.store.id,
|
65
|
+
invoice_id: boleta.id
|
66
|
+
)
|
67
|
+
}
|
68
|
+
it 'dont update invoice attribute' do
|
69
|
+
expect(boleta.communicated).to eq(false)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
xit 'generate new invoice in SUNAT' do
|
74
|
+
expect(sunat_invoice.dispatch.called).once
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Spree::InvoiceSerial, type: :model do
|
6
|
+
describe 'validations' do
|
7
|
+
it { should validate_presence_of(:serial) }
|
8
|
+
it { should validate_presence_of(:store_id) }
|
9
|
+
it { should validate_uniqueness_of(:serial).scoped_to(:store_id) }
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'associations' do
|
13
|
+
it { should belong_to(:store) }
|
14
|
+
it { should have_many(:invoices) }
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Spree::Invoice, type: :model do
|
6
|
+
describe 'validations' do
|
7
|
+
it { should validate_presence_of(:doc_number) }
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'associations' do
|
11
|
+
it { should belong_to(:order) }
|
12
|
+
it { should belong_to(:invoice_serial) }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'sunat invoice' do
|
16
|
+
let(:invoice) { create(:invoice_with_serial) }
|
17
|
+
let(:order) { create(:order_ready_to_ship, store: invoice.invoice_serial.store) }
|
18
|
+
|
19
|
+
before do
|
20
|
+
invoice.update(order: order)
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#build_sunat_invoice' do
|
24
|
+
subject(:sunat_invoice) { invoice.build_sunat_invoice }
|
25
|
+
|
26
|
+
it 'return a sunat invoice instance' do
|
27
|
+
expect(sunat_invoice.class).to eq(SunatInvoice::Invoice)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'get same total than order' do
|
31
|
+
sunat_invoice.prepare_totals
|
32
|
+
expect(invoice.order.total).to eq(sunat_invoice.total.to_d)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#add_sunat_line' do
|
37
|
+
let(:sunat_invoice) { SunatInvoice::Invoice.new(invoice.sunat_attributes) }
|
38
|
+
let(:line) { order.line_items.first }
|
39
|
+
|
40
|
+
before do
|
41
|
+
invoice.add_sunat_line(sunat_invoice, line)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'add line to sunat invoice' do
|
45
|
+
expect(sunat_invoice.lines.count).to eq(1)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'has correct values' do
|
49
|
+
sunat_line = sunat_invoice.lines.first
|
50
|
+
expect(sunat_line.quantity).to eq(line.quantity)
|
51
|
+
expect(sunat_line.price).to eq(line.price_excluding_vat)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Spree::LineItem, type: :model do
|
6
|
+
describe 'price_excluding_vat' do
|
7
|
+
let(:tax_price) { ((10 / 1.18) * 0.18).round(2) }
|
8
|
+
let(:without_vat) { (10 - tax_price).round(2) }
|
9
|
+
|
10
|
+
context 'with one unit' do
|
11
|
+
let(:line_item) { create(:line_item, included_tax_total: tax_price) }
|
12
|
+
|
13
|
+
it 'should return correct calculation' do
|
14
|
+
expect(line_item.price_excluding_vat).to eq(without_vat.to_d)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with more than one unit' do
|
19
|
+
let(:tax_total) { (tax_price * 3).round(2) }
|
20
|
+
let(:line_item) {
|
21
|
+
create(:line_item, included_tax_total: tax_total, quantity: 3)
|
22
|
+
}
|
23
|
+
|
24
|
+
it 'should return correct calculation' do
|
25
|
+
expect(line_item.price_excluding_vat).to eq(without_vat.to_d)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'without included_tax' do
|
30
|
+
let(:line_item) { create(:line_item) }
|
31
|
+
|
32
|
+
it 'should return correct calculation' do
|
33
|
+
expect(line_item.price_excluding_vat).to eq(line_item.price)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Spree::Order, type: :model do
|
6
|
+
let(:store) { create(:store) }
|
7
|
+
let!(:order) { create(:order, store: store) }
|
8
|
+
let!(:invoice_serial) { create(:invoice_serial, store: store) }
|
9
|
+
|
10
|
+
describe 'associations' do
|
11
|
+
it { should have_many(:invoices) }
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'next_correlative' do
|
15
|
+
it 'sum 1 to last correlative' do
|
16
|
+
expect(store.invoice_serials.first.invoices.count).to eq(0)
|
17
|
+
expect(order.next_correlative('03')).to eq(1)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'raise error when dont have serials for doc_type' do
|
21
|
+
expect { order.next_correlative('01') }.to raise_error(SolidusInvoice::InvalidSerialError)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'generate_invoice' do
|
26
|
+
context 'with valid params' do
|
27
|
+
xit 'generate Spree::Invoice' do
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Spree::Shipment, type: :model do
|
6
|
+
describe 'price_excluding_vat' do
|
7
|
+
let(:tax_price) { ((100 / 1.18) * 0.18).round(2) }
|
8
|
+
let(:without_vat) { (100 - tax_price).round(2) }
|
9
|
+
|
10
|
+
context 'with one unit' do
|
11
|
+
let(:shipment) { create(:shipment, included_tax_total: tax_price) }
|
12
|
+
|
13
|
+
it 'should return correct calculation' do
|
14
|
+
expect(shipment.price_excluding_vat).to eq(without_vat.to_d)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'without included_tax' do
|
19
|
+
let(:shipment) { create(:shipment) }
|
20
|
+
|
21
|
+
it 'should return correct calculation' do
|
22
|
+
expect(shipment.price_excluding_vat).to eq(shipment.cost)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Run Coverage report
|
4
|
+
require 'simplecov'
|
5
|
+
SimpleCov.start do
|
6
|
+
add_filter 'spec/dummy'
|
7
|
+
add_group 'Controllers', 'app/controllers'
|
8
|
+
add_group 'Helpers', 'app/helpers'
|
9
|
+
add_group 'Mailers', 'app/mailers'
|
10
|
+
add_group 'Models', 'app/models'
|
11
|
+
add_group 'Views', 'app/views'
|
12
|
+
add_group 'Libraries', 'lib'
|
13
|
+
end
|
14
|
+
|
15
|
+
# Configure Rails Environment
|
16
|
+
ENV['RAILS_ENV'] = 'test'
|
17
|
+
|
18
|
+
require File.expand_path('dummy/config/environment.rb', __dir__)
|
19
|
+
|
20
|
+
require 'rspec/rails'
|
21
|
+
require 'database_cleaner'
|
22
|
+
require 'ffaker'
|
23
|
+
require 'pry'
|
24
|
+
require 'shoulda-matchers'
|
25
|
+
|
26
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
27
|
+
# in spec/support/ and its subdirectories.
|
28
|
+
Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].sort.each { |f| require f }
|
29
|
+
|
30
|
+
# Requires factories and other useful helpers defined in spree_core.
|
31
|
+
require 'spree/testing_support/authorization_helpers'
|
32
|
+
require 'spree/testing_support/capybara_ext'
|
33
|
+
require 'spree/testing_support/controller_requests'
|
34
|
+
require 'spree/testing_support/factories'
|
35
|
+
require 'spree/testing_support/url_helpers'
|
36
|
+
|
37
|
+
# Requires factories defined in lib/solidus_invoice/factories.rb
|
38
|
+
require 'solidus_invoice/factories'
|
39
|
+
|
40
|
+
RSpec.configure do |config|
|
41
|
+
config.include FactoryBot::Syntax::Methods
|
42
|
+
|
43
|
+
# Infer an example group's spec type from the file location.
|
44
|
+
config.infer_spec_type_from_file_location!
|
45
|
+
|
46
|
+
# == URL Helpers
|
47
|
+
#
|
48
|
+
# Allows access to Spree's routes in specs:
|
49
|
+
#
|
50
|
+
# visit spree.admin_path
|
51
|
+
# current_path.should eql(spree.products_path)
|
52
|
+
config.include Spree::TestingSupport::UrlHelpers
|
53
|
+
|
54
|
+
# == Mock Framework
|
55
|
+
#
|
56
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
57
|
+
#
|
58
|
+
# config.mock_with :mocha
|
59
|
+
# config.mock_with :flexmock
|
60
|
+
# config.mock_with :rr
|
61
|
+
config.mock_with :rspec
|
62
|
+
config.color = true
|
63
|
+
|
64
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
65
|
+
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
66
|
+
|
67
|
+
# Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner
|
68
|
+
# to cleanup after each test instead. Without transactional fixtures set to false the records created
|
69
|
+
# to setup a test will be unavailable to the browser, which runs under a separate server instance.
|
70
|
+
config.use_transactional_fixtures = false
|
71
|
+
|
72
|
+
# Ensure Suite is set to use transactions for speed.
|
73
|
+
config.before :suite do
|
74
|
+
DatabaseCleaner.strategy = :transaction
|
75
|
+
DatabaseCleaner.clean_with :truncation
|
76
|
+
end
|
77
|
+
|
78
|
+
# Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary.
|
79
|
+
config.before :each do
|
80
|
+
DatabaseCleaner.strategy = RSpec.current_example.metadata[:js] ? :truncation : :transaction
|
81
|
+
DatabaseCleaner.start
|
82
|
+
end
|
83
|
+
|
84
|
+
# After each spec clean the database.
|
85
|
+
config.after :each do
|
86
|
+
DatabaseCleaner.clean
|
87
|
+
end
|
88
|
+
|
89
|
+
config.fail_fast = ENV['FAIL_FAST'] || false
|
90
|
+
config.order = 'random'
|
91
|
+
end
|
92
|
+
|
93
|
+
Shoulda::Matchers.configure do |config|
|
94
|
+
config.integrate do |with|
|
95
|
+
with.test_framework :rspec
|
96
|
+
with.library :rails
|
97
|
+
end
|
98
|
+
end
|
metadata
ADDED
@@ -0,0 +1,320 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: solidus_invoice
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- César Carruitero
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-04-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: solidus_core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: solidus_support
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sunat_invoice
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: capybara
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: database_cleaner
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: factory_bot
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: ffaker
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: mysql2
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pg
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: pry
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rspec-rails
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rubocop
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: sass-rails
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: shoulda-matchers
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: simplecov
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: sqlite3
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
237
|
+
description: generate invoice documents for solidus orders
|
238
|
+
email: ccarruitero@protonmail.com
|
239
|
+
executables: []
|
240
|
+
extensions: []
|
241
|
+
extra_rdoc_files: []
|
242
|
+
files:
|
243
|
+
- ".gitignore"
|
244
|
+
- ".rspec"
|
245
|
+
- ".rubocop.yml"
|
246
|
+
- ".rvmrc"
|
247
|
+
- ".travis.yml"
|
248
|
+
- Gemfile
|
249
|
+
- MIT-LICENSE
|
250
|
+
- README.md
|
251
|
+
- Rakefile
|
252
|
+
- app/assets/javascripts/spree/backend/solidus_invoice.js
|
253
|
+
- app/assets/javascripts/spree/frontend/solidus_invoice.js
|
254
|
+
- app/assets/stylesheets/spree/backend/solidus_invoice.scss
|
255
|
+
- app/assets/stylesheets/spree/frontend/solidus_invoice.css
|
256
|
+
- app/jobs/application_job.rb
|
257
|
+
- app/jobs/solidus_invoice/daily_summary_job.rb
|
258
|
+
- app/jobs/solidus_invoice/invoice_job.rb
|
259
|
+
- app/models/concerns/solidus_invoice/line_item_concern.rb
|
260
|
+
- app/models/concerns/solidus_invoice/order_concern.rb
|
261
|
+
- app/models/concerns/solidus_invoice/shipment_concern.rb
|
262
|
+
- app/models/concerns/solidus_invoice/store_concern.rb
|
263
|
+
- app/models/spree.rb
|
264
|
+
- app/models/spree/invoice.rb
|
265
|
+
- app/models/spree/invoice_serial.rb
|
266
|
+
- app/overrides/spree/line_item_override.rb
|
267
|
+
- app/overrides/spree/order_override.rb
|
268
|
+
- app/overrides/spree/shipment_override.rb
|
269
|
+
- app/overrides/spree/store_override.rb
|
270
|
+
- bin/rails
|
271
|
+
- bin/test
|
272
|
+
- config/locales/en.yml
|
273
|
+
- config/routes.rb
|
274
|
+
- db/migrate/20191107042751_create_spree_invoices.rb
|
275
|
+
- db/migrate/20191115204118_create_spree_invoice_serials.rb
|
276
|
+
- db/migrate/20191205205004_add_tax_uid_to_spree_addresses.rb
|
277
|
+
- db/migrate/20191223173229_add_preferences_to_spree_invoices.rb
|
278
|
+
- lib/generators/solidus_invoice/install/install_generator.rb
|
279
|
+
- lib/solidus_invoice.rb
|
280
|
+
- lib/solidus_invoice/engine.rb
|
281
|
+
- lib/solidus_invoice/errors/invalid_serial_error.rb
|
282
|
+
- lib/solidus_invoice/factories.rb
|
283
|
+
- lib/solidus_invoice/railtie.rb
|
284
|
+
- lib/solidus_invoice/version.rb
|
285
|
+
- lib/tasks/solidus_invoice_tasks.rake
|
286
|
+
- solidus_invoice.gemspec
|
287
|
+
- spec/jobs/solidus_invoice/daily_summary_job_spec.rb
|
288
|
+
- spec/jobs/solidus_invoice/invoice_job_spec.rb
|
289
|
+
- spec/models/spree/address_spec.rb
|
290
|
+
- spec/models/spree/invoice_serial_spec.rb
|
291
|
+
- spec/models/spree/invoice_spec.rb
|
292
|
+
- spec/models/spree/line_item_spec.rb
|
293
|
+
- spec/models/spree/order_spec.rb
|
294
|
+
- spec/models/spree/shipment_spec.rb
|
295
|
+
- spec/models/spree/store_spec.rb
|
296
|
+
- spec/spec_helper.rb
|
297
|
+
homepage: https://github.com/ccarruitero/solidus_invoice
|
298
|
+
licenses:
|
299
|
+
- MIT
|
300
|
+
metadata: {}
|
301
|
+
post_install_message:
|
302
|
+
rdoc_options: []
|
303
|
+
require_paths:
|
304
|
+
- lib
|
305
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
306
|
+
requirements:
|
307
|
+
- - ">="
|
308
|
+
- !ruby/object:Gem::Version
|
309
|
+
version: '0'
|
310
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
311
|
+
requirements:
|
312
|
+
- - ">="
|
313
|
+
- !ruby/object:Gem::Version
|
314
|
+
version: '0'
|
315
|
+
requirements: []
|
316
|
+
rubygems_version: 3.0.6
|
317
|
+
signing_key:
|
318
|
+
specification_version: 4
|
319
|
+
summary: generate invoice documents for solidus orders
|
320
|
+
test_files: []
|