solidus_product_assembly 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.circleci/config.yml +35 -0
- data/.gem_release.yml +5 -0
- data/.github/dependabot.yml +7 -0
- data/.github/stale.yml +17 -0
- data/.gitignore +14 -2
- data/.rspec +2 -2
- data/.rubocop.yml +4 -0
- data/.rubocop_todo.yml +192 -0
- data/CHANGELOG.md +19 -0
- data/Gemfile +21 -9
- data/LICENSE +26 -0
- data/README.md +52 -18
- data/Rakefile +4 -19
- data/app/controllers/spree/admin/parts_controller.rb +13 -11
- data/app/decorators/controllers/solidus_product_assembly/spree/checkout_controller_decorator.rb +13 -0
- data/app/decorators/helpers/solidus_product_assembly/spree/admin/orders_helper_decorator.rb +19 -0
- data/app/decorators/models/solidus_product_assembly/spree/inventory_unit_decorator.rb +19 -0
- data/app/decorators/models/solidus_product_assembly/spree/line_item_decorator.rb +52 -0
- data/app/decorators/models/solidus_product_assembly/spree/product_decorator.rb +70 -0
- data/app/decorators/models/solidus_product_assembly/spree/return_item_decorator.rb +15 -0
- data/app/decorators/models/solidus_product_assembly/spree/shipment_decorator.rb +55 -0
- data/app/decorators/models/solidus_product_assembly/spree/stock/availability_validator_decorator.rb +37 -0
- data/app/decorators/models/solidus_product_assembly/spree/stock/inventory_unit_builder_decorator.rb +39 -0
- data/app/decorators/models/solidus_product_assembly/spree/stock/inventory_units_finalizer_decorator.rb +33 -0
- data/app/decorators/models/solidus_product_assembly/spree/stock/inventory_validator_decorator.rb +22 -0
- data/app/decorators/models/solidus_product_assembly/spree/variant_decorator.rb +26 -0
- data/app/models/spree/assemblies_part.rb +6 -4
- data/app/models/spree/calculator/returns/assemblies_default_refund_amount.rb +17 -0
- data/app/models/spree/order_inventory_assembly.rb +11 -2
- data/app/overrides/add_admin_product_form_fields.rb +7 -5
- data/app/overrides/add_admin_tabs.rb +7 -5
- data/app/overrides/add_line_item_description.rb +7 -5
- data/app/overrides/spree/admin/orders/_carton_manifest/_assembly_parts_price.html.erb.deface +9 -0
- data/app/overrides/spree/admin/orders/_carton_manifest/_assembly_parts_total_price.html.erb.deface +9 -0
- data/app/overrides/spree/admin/orders/_shipment/stock_contents.html.erb.deface +7 -1
- data/app/overrides/spree/products/show/add_links_to_parts.html.erb.deface +2 -2
- data/app/views/spree/admin/orders/_assemblies.html.erb +8 -17
- data/app/views/spree/admin/orders/_stock_contents.html.erb +2 -62
- data/app/views/spree/admin/orders/_stock_contents_2_3.html.erb +69 -0
- data/app/views/spree/admin/orders/_stock_contents_2_4.html.erb +70 -0
- data/app/views/spree/admin/orders/_stock_item.html.erb +13 -10
- data/app/views/spree/admin/parts/_parts_table.html.erb +17 -11
- data/app/views/spree/admin/parts/available.html.erb +10 -8
- data/app/views/spree/admin/parts/available.js.erb +9 -7
- data/app/views/spree/admin/parts/index.html.erb +1 -1
- data/app/views/spree/admin/products/_product_assembly_fields.html.erb +2 -2
- data/app/views/spree/admin/shared/_product_assembly_product_tabs.html.erb +1 -1
- data/app/views/spree/api/line_items/show.v1.rabl +27 -0
- data/app/views/spree/checkout/_line_item_manifest.html.erb +3 -1
- data/bin/console +17 -0
- data/bin/rails +12 -4
- data/bin/setup +8 -0
- data/config/routes.rb +2 -2
- data/db/migrate/20091028152124_add_many_to_many_relation_to_products.rb +7 -5
- data/db/migrate/20091029165620_add_parts_fields_to_products.rb +18 -16
- data/db/migrate/20120316141830_namespace_product_assembly_for_spree_one.rb +3 -1
- data/db/migrate/20140620223938_add_id_to_spree_assemblies_parts.rb +4 -2
- data/lib/generators/solidus_product_assembly/install/install_generator.rb +13 -8
- data/lib/solidus_product_assembly/engine.rb +11 -8
- data/lib/solidus_product_assembly/testing_support/factories.rb +4 -0
- data/lib/solidus_product_assembly/version.rb +3 -1
- data/lib/solidus_product_assembly.rb +5 -1
- data/lib/tasks/spree2_upgrade.rake +12 -12
- data/solidus_product_assembly.gemspec +25 -20
- data/spec/features/admin/orders_spec.rb +114 -16
- data/spec/features/admin/parts_spec.rb +5 -3
- data/spec/features/admin/return_items_spec.rb +151 -0
- data/spec/features/checkout_spec.rb +103 -21
- data/spec/models/spree/assemblies_part_spec.rb +3 -1
- data/spec/models/spree/inventory_unit_spec.rb +15 -6
- data/spec/models/spree/line_item_spec.rb +6 -4
- data/spec/models/spree/order_contents_spec.rb +6 -5
- data/spec/models/spree/order_inventory_assembly_spec.rb +8 -6
- data/spec/models/spree/order_inventory_spec.rb +7 -3
- data/spec/models/spree/product_spec.rb +15 -14
- data/spec/models/spree/shipment_spec.rb +20 -13
- data/spec/models/spree/stock/availability_validator_spec.rb +22 -33
- data/spec/models/spree/stock/coordinator_spec.rb +11 -3
- data/spec/models/spree/stock/inventory_unit_builder_spec.rb +5 -7
- data/spec/models/spree/variant_spec.rb +3 -1
- data/spec/spec_helper.rb +18 -47
- data/spec/support/shared_contexts/order_with_bundle.rb +2 -0
- metadata +80 -102
- data/.travis.yml +0 -21
- data/LICENSE.md +0 -13
- data/app/controllers/spree/checkout_controller_decorator.rb +0 -9
- data/app/helpers/spree/admin/orders_helper_decorator.rb +0 -9
- data/app/models/spree/inventory_unit_decorator.rb +0 -13
- data/app/models/spree/line_item_decorator.rb +0 -44
- data/app/models/spree/product_decorator.rb +0 -56
- data/app/models/spree/shipment_decorator.rb +0 -50
- data/app/models/spree/stock/availability_validator.rb +0 -28
- data/app/models/spree/stock/inventory_unit_builder_decorator.rb +0 -30
- data/app/models/spree/stock/inventory_validator_decorator.rb +0 -12
- data/app/models/spree/variant_decorator.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d61612432f21d73321086ff0d33ae48e3d9f9d81aa5107ad377eb22beeddb08b
|
4
|
+
data.tar.gz: b849af2369bc531a1c6270e28f1a36827f2b1883b80984a3c5372edeab4f407e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b02fd5570c1cdc3a8337ce5938141a8df21b25752bda01e3e157a7fdbf07503342ccc43e87607aa775c29b706181450b7c932c4931403f896e4a3053bb248e36
|
7
|
+
data.tar.gz: 8f2c61439371cd9f425fa215edf1473c1607a06da73032946c4a7677baa123d0e719f7cf76e4715e4f998474f571a223dc73474317b1550a958b6a41f531cb5d
|
@@ -0,0 +1,35 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
orbs:
|
4
|
+
# Always take the latest version of the orb, this allows us to
|
5
|
+
# run specs against Solidus supported versions only without the need
|
6
|
+
# to change this configuration every time a Solidus version is released
|
7
|
+
# or goes EOL.
|
8
|
+
solidusio_extensions: solidusio/extensions@volatile
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
run-specs-with-postgres:
|
12
|
+
executor: solidusio_extensions/postgres
|
13
|
+
steps:
|
14
|
+
- solidusio_extensions/run-tests
|
15
|
+
run-specs-with-mysql:
|
16
|
+
executor: solidusio_extensions/mysql
|
17
|
+
steps:
|
18
|
+
- solidusio_extensions/run-tests
|
19
|
+
|
20
|
+
workflows:
|
21
|
+
"Run specs on supported Solidus versions":
|
22
|
+
jobs:
|
23
|
+
- run-specs-with-postgres
|
24
|
+
- run-specs-with-mysql
|
25
|
+
"Weekly run specs against master":
|
26
|
+
triggers:
|
27
|
+
- schedule:
|
28
|
+
cron: "0 0 * * 4" # every Thursday
|
29
|
+
filters:
|
30
|
+
branches:
|
31
|
+
only:
|
32
|
+
- master
|
33
|
+
jobs:
|
34
|
+
- run-specs-with-postgres
|
35
|
+
- run-specs-with-mysql
|
data/.gem_release.yml
ADDED
data/.github/stale.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# Number of days of inactivity before an issue becomes stale
|
2
|
+
daysUntilStale: 60
|
3
|
+
# Number of days of inactivity before a stale issue is closed
|
4
|
+
daysUntilClose: 7
|
5
|
+
# Issues with these labels will never be considered stale
|
6
|
+
exemptLabels:
|
7
|
+
- pinned
|
8
|
+
- security
|
9
|
+
# Label to use when marking an issue as stale
|
10
|
+
staleLabel: wontfix
|
11
|
+
# Comment to post when marking an issue as stale. Set to `false` to disable
|
12
|
+
markComment: >
|
13
|
+
This issue has been automatically marked as stale because it has not had
|
14
|
+
recent activity. It will be closed if no further activity occurs. Thank you
|
15
|
+
for your contributions.
|
16
|
+
# Comment to post when closing a stale issue. Set to `false` to disable
|
17
|
+
closeComment: false
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
--color
|
2
|
-
--format
|
3
|
-
|
2
|
+
--format progress
|
3
|
+
--require spec_helper
|
data/.rubocop.yml
ADDED
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2020-01-22 17:16:56 +0100 using RuboCop version 0.76.0.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 2
|
10
|
+
# Cop supports --auto-correct.
|
11
|
+
Capybara/CurrentPathExpectation:
|
12
|
+
Exclude:
|
13
|
+
- 'spec/features/checkout_spec.rb'
|
14
|
+
|
15
|
+
# Offense count: 2
|
16
|
+
# Cop supports --auto-correct.
|
17
|
+
# Configuration parameters: EnforcedStyleAlignWith, AutoCorrect, Severity.
|
18
|
+
# SupportedStylesAlignWith: keyword, variable, start_of_line
|
19
|
+
Layout/EndAlignment:
|
20
|
+
Exclude:
|
21
|
+
- 'db/migrate/20091029165620_add_parts_fields_to_products.rb'
|
22
|
+
|
23
|
+
# Offense count: 1
|
24
|
+
Lint/AmbiguousBlockAssociation:
|
25
|
+
Exclude:
|
26
|
+
- 'spec/models/spree/order_inventory_spec.rb'
|
27
|
+
|
28
|
+
# Offense count: 2
|
29
|
+
Lint/AmbiguousOperator:
|
30
|
+
Exclude:
|
31
|
+
- 'app/views/spree/api/line_items/show.v1.rabl'
|
32
|
+
- 'lib/solidus_product_assembly/engine.rb'
|
33
|
+
|
34
|
+
# Offense count: 4
|
35
|
+
Lint/ShadowingOuterLocalVariable:
|
36
|
+
Exclude:
|
37
|
+
- 'app/decorators/models/solidus_product_assembly/spree/shipment_decorator.rb'
|
38
|
+
- 'app/models/spree/order_inventory_assembly.rb'
|
39
|
+
- 'lib/tasks/spree2_upgrade.rake'
|
40
|
+
|
41
|
+
# Offense count: 3
|
42
|
+
# Cop supports --auto-correct.
|
43
|
+
# Configuration parameters: AutoCorrect.
|
44
|
+
Performance/TimesMap:
|
45
|
+
Exclude:
|
46
|
+
- 'app/decorators/models/solidus_product_assembly/spree/stock/inventory_unit_builder_decorator.rb'
|
47
|
+
- 'spec/models/spree/shipment_spec.rb'
|
48
|
+
|
49
|
+
# Offense count: 4
|
50
|
+
RSpec/AnyInstance:
|
51
|
+
Exclude:
|
52
|
+
- 'spec/features/admin/return_items_spec.rb'
|
53
|
+
- 'spec/models/spree/stock/availability_validator_spec.rb'
|
54
|
+
|
55
|
+
# Offense count: 42
|
56
|
+
# Configuration parameters: Prefixes.
|
57
|
+
# Prefixes: when, with, without
|
58
|
+
RSpec/ContextWording:
|
59
|
+
Exclude:
|
60
|
+
- 'spec/features/admin/orders_spec.rb'
|
61
|
+
- 'spec/features/checkout_spec.rb'
|
62
|
+
- 'spec/models/spree/assemblies_part_spec.rb'
|
63
|
+
- 'spec/models/spree/inventory_unit_spec.rb'
|
64
|
+
- 'spec/models/spree/line_item_spec.rb'
|
65
|
+
- 'spec/models/spree/order_contents_spec.rb'
|
66
|
+
- 'spec/models/spree/order_inventory_assembly_spec.rb'
|
67
|
+
- 'spec/models/spree/order_inventory_spec.rb'
|
68
|
+
- 'spec/models/spree/shipment_spec.rb'
|
69
|
+
- 'spec/models/spree/stock/availability_validator_spec.rb'
|
70
|
+
- 'spec/models/spree/stock/coordinator_spec.rb'
|
71
|
+
- 'spec/models/spree/stock/inventory_unit_builder_spec.rb'
|
72
|
+
- 'spec/models/spree/variant_spec.rb'
|
73
|
+
- 'spec/support/shared_contexts/order_with_bundle.rb'
|
74
|
+
|
75
|
+
# Offense count: 9
|
76
|
+
RSpec/ExpectInHook:
|
77
|
+
Exclude:
|
78
|
+
- 'spec/features/checkout_spec.rb'
|
79
|
+
- 'spec/models/spree/line_item_spec.rb'
|
80
|
+
|
81
|
+
# Offense count: 14
|
82
|
+
# Configuration parameters: AssignmentOnly.
|
83
|
+
RSpec/InstanceVariable:
|
84
|
+
Exclude:
|
85
|
+
- 'spec/models/spree/product_spec.rb'
|
86
|
+
|
87
|
+
# Offense count: 13
|
88
|
+
RSpec/LetSetup:
|
89
|
+
Exclude:
|
90
|
+
- 'spec/features/checkout_spec.rb'
|
91
|
+
- 'spec/models/spree/order_contents_spec.rb'
|
92
|
+
- 'spec/models/spree/order_inventory_spec.rb'
|
93
|
+
- 'spec/models/spree/shipment_spec.rb'
|
94
|
+
- 'spec/models/spree/stock/availability_validator_spec.rb'
|
95
|
+
- 'spec/models/spree/stock/coordinator_spec.rb'
|
96
|
+
|
97
|
+
# Offense count: 9
|
98
|
+
# Configuration parameters: .
|
99
|
+
# SupportedStyles: have_received, receive
|
100
|
+
RSpec/MessageSpies:
|
101
|
+
EnforcedStyle: receive
|
102
|
+
|
103
|
+
# Offense count: 19
|
104
|
+
# Configuration parameters: AggregateFailuresByDefault.
|
105
|
+
RSpec/MultipleExpectations:
|
106
|
+
Max: 14
|
107
|
+
|
108
|
+
# Offense count: 22
|
109
|
+
# Configuration parameters: IgnoreSharedExamples.
|
110
|
+
RSpec/NamedSubject:
|
111
|
+
Exclude:
|
112
|
+
- 'spec/models/spree/assemblies_part_spec.rb'
|
113
|
+
- 'spec/models/spree/inventory_unit_spec.rb'
|
114
|
+
- 'spec/models/spree/order_contents_spec.rb'
|
115
|
+
- 'spec/models/spree/order_inventory_assembly_spec.rb'
|
116
|
+
- 'spec/models/spree/order_inventory_spec.rb'
|
117
|
+
- 'spec/models/spree/stock/availability_validator_spec.rb'
|
118
|
+
- 'spec/models/spree/stock/coordinator_spec.rb'
|
119
|
+
- 'spec/models/spree/stock/inventory_unit_builder_spec.rb'
|
120
|
+
|
121
|
+
# Offense count: 2
|
122
|
+
RSpec/NestedGroups:
|
123
|
+
Max: 5
|
124
|
+
|
125
|
+
# Offense count: 3
|
126
|
+
RSpec/ScatteredLet:
|
127
|
+
Exclude:
|
128
|
+
- 'spec/models/spree/order_inventory_spec.rb'
|
129
|
+
|
130
|
+
# Offense count: 1
|
131
|
+
RSpec/SubjectStub:
|
132
|
+
Exclude:
|
133
|
+
- 'spec/models/spree/stock/availability_validator_spec.rb'
|
134
|
+
|
135
|
+
# Offense count: 2
|
136
|
+
# Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
|
137
|
+
RSpec/VerifiedDoubles:
|
138
|
+
Exclude:
|
139
|
+
- 'spec/models/spree/line_item_spec.rb'
|
140
|
+
- 'spec/models/spree/stock/availability_validator_spec.rb'
|
141
|
+
|
142
|
+
# Offense count: 1
|
143
|
+
# Configuration parameters: Include.
|
144
|
+
# Include: db/migrate/*.rb
|
145
|
+
Rails/CreateTableWithTimestamps:
|
146
|
+
Exclude:
|
147
|
+
- 'db/migrate/20091028152124_add_many_to_many_relation_to_products.rb'
|
148
|
+
|
149
|
+
# Offense count: 2
|
150
|
+
# Configuration parameters: Include.
|
151
|
+
# Include: app/models/**/*.rb
|
152
|
+
Rails/InverseOf:
|
153
|
+
Exclude:
|
154
|
+
- 'app/models/spree/assemblies_part.rb'
|
155
|
+
|
156
|
+
# Offense count: 8
|
157
|
+
# Configuration parameters: Blacklist, Whitelist.
|
158
|
+
# Blacklist: decrement!, decrement_counter, increment!, increment_counter, toggle!, touch, update_all, update_attribute, update_column, update_columns, update_counters
|
159
|
+
Rails/SkipsModelValidations:
|
160
|
+
Exclude:
|
161
|
+
- 'lib/tasks/spree2_upgrade.rake'
|
162
|
+
- 'spec/features/admin/return_items_spec.rb'
|
163
|
+
- 'spec/features/checkout_spec.rb'
|
164
|
+
- 'spec/models/spree/line_item_spec.rb'
|
165
|
+
- 'spec/models/spree/order_contents_spec.rb'
|
166
|
+
- 'spec/models/spree/order_inventory_spec.rb'
|
167
|
+
- 'spec/models/spree/shipment_spec.rb'
|
168
|
+
- 'spec/models/spree/stock/coordinator_spec.rb'
|
169
|
+
|
170
|
+
# Offense count: 2
|
171
|
+
# Cop supports --auto-correct.
|
172
|
+
# Configuration parameters: AutoCorrect, EnforcedStyle.
|
173
|
+
# SupportedStyles: nested, compact
|
174
|
+
Style/ClassAndModuleChildren:
|
175
|
+
Exclude:
|
176
|
+
- 'app/controllers/spree/admin/parts_controller.rb'
|
177
|
+
- 'app/models/spree/calculator/returns/assemblies_default_refund_amount.rb'
|
178
|
+
|
179
|
+
# Offense count: 3
|
180
|
+
# Configuration parameters: MinBodyLength.
|
181
|
+
Style/GuardClause:
|
182
|
+
Exclude:
|
183
|
+
- 'app/decorators/models/solidus_product_assembly/spree/line_item_decorator.rb'
|
184
|
+
- 'app/decorators/models/solidus_product_assembly/spree/stock/inventory_validator_decorator.rb'
|
185
|
+
- 'app/models/spree/order_inventory_assembly.rb'
|
186
|
+
|
187
|
+
# Offense count: 26
|
188
|
+
# Cop supports --auto-correct.
|
189
|
+
# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
190
|
+
# URISchemes: http, https
|
191
|
+
Metrics/LineLength:
|
192
|
+
Max: 146
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
## [v1.0.0](https://github.com/solidusio-contrib/solidus_product_assembly/tree/v1.0.0) (2016-09-06)
|
2
|
+
**Closed issues:**
|
3
|
+
|
4
|
+
- Inventory Validation fail upon checkout, for the assembly product [\#3](https://github.com/solidusio-contrib/solidus_product_assembly/issues/3)
|
5
|
+
|
6
|
+
**Merged pull requests:**
|
7
|
+
|
8
|
+
- Add support for Solidus 2.0 and Rails 5 [\#10](https://github.com/solidusio-contrib/solidus_product_assembly/pull/10) ([jhawthorn](https://github.com/jhawthorn))
|
9
|
+
- Fix installation instructions in README [\#9](https://github.com/solidusio-contrib/solidus_product_assembly/pull/9) ([alexblackie](https://github.com/alexblackie))
|
10
|
+
- Add missing translation for actions.delete [\#8](https://github.com/solidusio-contrib/solidus_product_assembly/pull/8) ([Sinetheta](https://github.com/Sinetheta))
|
11
|
+
- Fix a load order issue when redefining inventory validator. [\#7](https://github.com/solidusio-contrib/solidus_product_assembly/pull/7) ([Senjai](https://github.com/Senjai))
|
12
|
+
- Fix product sub\_menu display on new Solidus [\#6](https://github.com/solidusio-contrib/solidus_product_assembly/pull/6) ([Sinetheta](https://github.com/Sinetheta))
|
13
|
+
- Inventory validation [\#5](https://github.com/solidusio-contrib/solidus_product_assembly/pull/5) ([Sinetheta](https://github.com/Sinetheta))
|
14
|
+
- Rename to solidus\_product\_assembly [\#2](https://github.com/solidusio-contrib/solidus_product_assembly/pull/2) ([Sinetheta](https://github.com/Sinetheta))
|
15
|
+
- Upgrade from spree 2.4 to solidus 1.1-1.3 [\#1](https://github.com/solidusio-contrib/solidus_product_assembly/pull/1) ([Sinetheta](https://github.com/Sinetheta))
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
data/Gemfile
CHANGED
@@ -1,18 +1,30 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
2
5
|
|
3
6
|
branch = ENV.fetch('SOLIDUS_BRANCH', 'master')
|
4
|
-
gem
|
7
|
+
gem 'solidus', github: 'solidusio/solidus', branch: branch
|
8
|
+
|
9
|
+
# Provides basic authentication functionality for testing parts of your engine
|
5
10
|
gem 'solidus_auth_devise'
|
6
11
|
|
7
|
-
|
8
|
-
|
12
|
+
case ENV['DB']
|
13
|
+
when 'mysql'
|
14
|
+
gem 'mysql2'
|
15
|
+
when 'postgresql'
|
16
|
+
gem 'pg'
|
17
|
+
else
|
18
|
+
gem 'sqlite3'
|
9
19
|
end
|
10
20
|
|
11
|
-
|
12
|
-
gem '
|
13
|
-
|
14
|
-
group :development, :test do
|
15
|
-
gem "pry-rails"
|
21
|
+
group :test do
|
22
|
+
gem 'webdrivers'
|
23
|
+
gem 'selenium-webdriver'
|
16
24
|
end
|
17
25
|
|
18
26
|
gemspec
|
27
|
+
|
28
|
+
# Use a local Gemfile to include development dependencies that might not be
|
29
|
+
# relevant for the project or for other contributors, e.g.: `gem 'pry-debug'`.
|
30
|
+
eval_gemfile 'Gemfile-local' if File.exist? 'Gemfile-local'
|
data/LICENSE
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Copyright (c) 2020 Spree Commerce Inc. and other contributors.
|
2
|
+
All rights reserved.
|
3
|
+
|
4
|
+
Redistribution and use in source and binary forms, with or without modification,
|
5
|
+
are permitted provided that the following conditions are met:
|
6
|
+
|
7
|
+
* Redistributions of source code must retain the above copyright notice,
|
8
|
+
this list of conditions and the following disclaimer.
|
9
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
10
|
+
this list of conditions and the following disclaimer in the documentation
|
11
|
+
and/or other materials provided with the distribution.
|
12
|
+
* Neither the name Solidus nor the names of its contributors may be used to
|
13
|
+
endorse or promote products derived from this software without specific
|
14
|
+
prior written permission.
|
15
|
+
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
20
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
21
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
22
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
23
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
24
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
25
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.md
CHANGED
@@ -1,33 +1,23 @@
|
|
1
1
|
# Product Assembly
|
2
2
|
|
3
|
-
[![
|
3
|
+
[![CircleCI](https://circleci.com/gh/solidusio-contrib/solidus_product_assembly.svg?style=svg)](https://circleci.com/gh/solidusio-contrib/solidus_product_assembly)
|
4
4
|
|
5
5
|
Create a product which is composed of other products.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
|
-
Add the following line to your `Gemfile
|
9
|
+
Add the following line to your `Gemfile`:
|
10
|
+
|
10
11
|
```ruby
|
11
12
|
gem 'solidus_product_assembly', github: 'solidusio-contrib/solidus_product_assembly', branch: 'master'
|
12
13
|
```
|
13
14
|
|
14
15
|
Run bundle install as well as the extension intall command to copy and run migrations and
|
15
|
-
append solidus_product_assembly to your js manifest file
|
16
|
+
append solidus_product_assembly to your js manifest file:
|
16
17
|
|
17
18
|
bundle install
|
18
19
|
rails g solidus_product_assembly:install
|
19
20
|
|
20
|
-
_master branch is compatible with spree edge and rails 4 only. Please use
|
21
|
-
2-0-stable for Spree 2.0.x or 1-3-stable branch for Spree 1.3.x compatibility_
|
22
|
-
|
23
|
-
_In case you're upgrading from 1-3-stable of this extension you might want to run a
|
24
|
-
rake task which assigns a line item to your previous inventory units from bundle
|
25
|
-
products. That is so you have a better view on the current backend UI and avoid
|
26
|
-
exceptions. No need to run this task if you're not upgrading from product assembly
|
27
|
-
1-3-stable_
|
28
|
-
|
29
|
-
rake solidus_product_assembly:upgrade
|
30
|
-
|
31
21
|
## Use
|
32
22
|
|
33
23
|
To build a bundle (assembly product) you'd need to first check the "Can be part"
|
@@ -40,10 +30,54 @@ That means you essentially have a product composed of other products. From a
|
|
40
30
|
customer perspective it's like they are paying a single amount for a collection
|
41
31
|
of products.
|
42
32
|
|
43
|
-
|
44
|
-
|
33
|
+
## Releasing a new version
|
34
|
+
|
35
|
+
#### 1. Bump gem version and push to RubyGems
|
36
|
+
|
37
|
+
We use [gem-release](https://github.com/svenfuchs/gem-release) to release this
|
38
|
+
extension with ease.
|
39
|
+
|
40
|
+
Supposing you are on the master branch and you are working on a fork of this
|
41
|
+
extension, `upstream` is the main remote and you have write access to it, you
|
42
|
+
can simply run:
|
43
|
+
|
44
|
+
```bash
|
45
|
+
gem bump --version minor --tag --release
|
46
|
+
```
|
47
|
+
|
48
|
+
This command will:
|
49
|
+
|
50
|
+
- bump the gem version to the next minor (changing the `version.rb` file)
|
51
|
+
- commit the change and push it to upstream master
|
52
|
+
- create a git tag
|
53
|
+
- push the tag to the upstream remote
|
54
|
+
- release the new version on RubyGems
|
55
|
+
|
56
|
+
Or you can run these commands individually:
|
57
|
+
|
58
|
+
```bash
|
59
|
+
gem bump --version minor
|
60
|
+
gem tag
|
61
|
+
gem release
|
62
|
+
```
|
63
|
+
|
64
|
+
#### 2. Publish the updated CHANGELOG
|
65
|
+
|
66
|
+
After the release is done we can generate the updated CHANGELOG
|
67
|
+
using
|
68
|
+
[github-changelog-generator](https://github.com/github-changelog-generator/github-changelog-generator)
|
69
|
+
by running the following command:
|
70
|
+
|
71
|
+
|
72
|
+
```bash
|
73
|
+
bundle exec github_changelog_generator solidusio/solidus_auth_devise --token YOUR_GITHUB_TOKEN
|
74
|
+
git commit -am 'Update CHANGELOG'
|
75
|
+
git push upstream master
|
76
|
+
```
|
77
|
+
|
78
|
+
## Contributing
|
45
79
|
|
46
|
-
Spree is an open source project and we encourage contributions. Please see the [
|
80
|
+
Spree is an open source project and we encourage contributions. Please see the [Community Guidelines][1] before contributing.
|
47
81
|
|
48
82
|
In the spirit of [free software][2], **everyone** is encouraged to help improve this project.
|
49
83
|
|
@@ -72,7 +106,7 @@ Starting point:
|
|
72
106
|
|
73
107
|
Copyright (c) 2014 [Spree Commerce Inc.][4] and [contributors][5], released under the [New BSD License][6]
|
74
108
|
|
75
|
-
[1]:
|
109
|
+
[1]: https://solidus.io/community-guidelines/
|
76
110
|
[2]: http://www.fsf.org/licensing/essays/free-sw.html
|
77
111
|
[3]: https://github.com/spree/spree-product-assembly/issues
|
78
112
|
[4]: https://github.com/spree
|
data/Rakefile
CHANGED
@@ -1,21 +1,6 @@
|
|
1
|
-
|
2
|
-
Bundler::GemHelper.install_tasks
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
require '
|
5
|
-
|
3
|
+
require 'solidus_dev_support/rake_tasks'
|
4
|
+
SolidusDevSupport::RakeTasks.install
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
task :default do
|
10
|
-
if Dir["spec/dummy"].empty?
|
11
|
-
Rake::Task[:test_app].invoke
|
12
|
-
Dir.chdir("../../")
|
13
|
-
end
|
14
|
-
Rake::Task[:spec].invoke
|
15
|
-
end
|
16
|
-
|
17
|
-
desc 'Generates a dummy app for testing'
|
18
|
-
task :test_app do
|
19
|
-
ENV['LIB_NAME'] = 'solidus_product_assembly'
|
20
|
-
Rake::Task['common:test_app'].invoke("Spree::User")
|
21
|
-
end
|
6
|
+
task default: 'extension:specs'
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Spree::Admin::PartsController < Spree::Admin::BaseController
|
2
|
-
|
4
|
+
before_action :find_product
|
3
5
|
|
4
6
|
def index
|
5
7
|
@parts = @product.parts
|
@@ -22,12 +24,11 @@ class Spree::Admin::PartsController < Spree::Admin::BaseController
|
|
22
24
|
@available_products = []
|
23
25
|
else
|
24
26
|
query = "%#{params[:q]}%"
|
25
|
-
@available_products = Spree::Product.search_can_be_part(query)
|
26
|
-
@available_products.uniq!
|
27
|
+
@available_products = Spree::Product.search_can_be_part(query).distinct
|
27
28
|
end
|
28
29
|
respond_to do |format|
|
29
|
-
format.html {render :
|
30
|
-
format.js {render :
|
30
|
+
format.html { render layout: false }
|
31
|
+
format.js { render layout: false }
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
@@ -39,11 +40,12 @@ class Spree::Admin::PartsController < Spree::Admin::BaseController
|
|
39
40
|
end
|
40
41
|
|
41
42
|
private
|
42
|
-
def find_product
|
43
|
-
@product = Spree::Product.find_by(slug: params[:product_id])
|
44
|
-
end
|
45
43
|
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
def find_product
|
45
|
+
@product = Spree::Product.find_by(slug: params[:product_id])
|
46
|
+
end
|
47
|
+
|
48
|
+
def model_class
|
49
|
+
Spree::AssembliesPart
|
50
|
+
end
|
49
51
|
end
|
data/app/decorators/controllers/solidus_product_assembly/spree/checkout_controller_decorator.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusProductAssembly
|
4
|
+
module Spree
|
5
|
+
module CheckoutControllerDecorator
|
6
|
+
def before_payment; end
|
7
|
+
|
8
|
+
if defined?(::Spree::CheckoutController)
|
9
|
+
::Spree::CheckoutController.prepend self
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusProductAssembly
|
4
|
+
module Spree
|
5
|
+
module Admin
|
6
|
+
module OrdersHelperDecorator
|
7
|
+
def self.prepended(base)
|
8
|
+
base.module_eval do
|
9
|
+
def line_item_shipment_price(line_item, quantity)
|
10
|
+
::Spree::Money.new(line_item.price * quantity, currency: line_item.currency)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
::Spree::Admin::OrdersHelper.prepend self
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusProductAssembly
|
4
|
+
module Spree
|
5
|
+
module InventoryUnitDecorator
|
6
|
+
def percentage_of_line_item
|
7
|
+
product = line_item.product
|
8
|
+
if product.assembly?
|
9
|
+
total_value = line_item.quantity_by_variant.map { |part, quantity| part.price * quantity }.sum
|
10
|
+
variant.price / total_value
|
11
|
+
else
|
12
|
+
1 / BigDecimal(line_item.quantity)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
::Spree::InventoryUnit.prepend self
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|