Commit Graph

70 Commits

Author SHA1 Message Date
Luis Ramos
34acaa4e03 Merge pull request #3425 from mkllnk/2783-product-importer-spec
Apply import defaults to variants of new products in Spree 2
2019-02-20 13:34:57 +00:00
Matt-Yorkley
0c5cc23415 Fix hash merge for recording already created products by name 2019-02-14 21:38:18 +00:00
Maikel Linke
dbfcbc6db9 Apply import defaults to variants of new products
Spree 2 doesn't have `Product#on_hand=` any more. We actually can't save
stock levels without saving the product first which creates a stock
item.

This hacky solution overwrites the attribute in the entry so that it
gets copied to the variant later on. I think a better solution needs
some refactoring as proposed in:
https://github.com/openfoodfoundation/openfoodnetwork/issues/2783#issuecomment-459601530
2019-02-05 15:41:19 +11:00
Matt-Yorkley
a3b9936f37 Improve matching inventory using 'items' unit type 2019-01-17 09:33:39 +00:00
Maikel
abe4f78e5c Merge pull request #2988 from Matt-Yorkley/pi/utf8
Pi/utf8
2019-01-09 15:39:05 +11:00
Kristina Lim
df51d137dc Update some code style for product import 2018-12-10 03:30:52 +08:00
Kristina Lim
cec50e81f5 Make product import set correct VO stock settings 2018-12-10 03:30:46 +08:00
Kristina Lim
0de829017a Refactor finding or initializing VO for product import 2018-12-10 03:30:39 +08:00
Matt-Yorkley
a5407d780c Include unexpected validation errors 2018-11-21 19:16:07 +00:00
Matt-Yorkley
9011f5d9a2 Rescue ArgumentError and give user feedback 2018-11-07 18:48:08 +00:00
Matt-Yorkley
b5c6ecb45a Explicitly use UTF-8 encoding when opening spreadsheet files 2018-11-07 16:50:24 +00:00
Maikel
d63670d675 Merge pull request #2846 from Matt-Yorkley/pi/rename_enterprise_fields
[Product Import] Rename enterprise fields and update template
2018-10-30 15:11:02 +11:00
Pau Pérez Fabregat
590091c42a Merge pull request #2842 from Matt-Yorkley/pi/missing_variable
Fix missing local variable in EntryProcessor
2018-10-16 13:19:23 +02:00
Matt-Yorkley
a2828ea305 Use :for_hubs scope 2018-10-12 17:00:19 +01:00
Matt-Yorkley
123d1963ad Remove duplicate method 2018-10-12 17:00:19 +01:00
Matt-Yorkley
3cb43121d5 Refactor long lines for new character limit 2018-10-12 17:00:18 +01:00
Matt-Yorkley
bd4f0507ce Adjustments for new Settings and ResetAbsent classes 2018-10-12 16:57:13 +01:00
Matt-Yorkley
1c85de6f58 Use producer and distributor for field names 2018-10-12 16:57:13 +01:00
Matt-Yorkley
5c2b5377bc Assign supplier_id when saving new product to products list 2018-10-12 16:57:13 +01:00
Matt-Yorkley
e7a909e828 Rename supplier to enterprise 2018-10-12 16:57:13 +01:00
Matt-Yorkley
57c6530e46 DRY code and use more flexible I18n 2018-10-11 16:38:14 +01:00
Pau Pérez Fabregat
f5573f419b Merge pull request #2778 from coopdevs/refactor-entry-processor
Refactor entry processor
2018-10-08 17:11:23 +02:00
Matt-Yorkley
b78716c283 Fix missing local variable 2018-10-08 14:49:29 +01:00
Pau Perez
6a7359a3c5 Pass supplier_ids in strategy #reset instead
This removes the need to expose supplier_ids through #<< and makes both
ResetAbsent and its strategies simpler.

This could be made even simpler if the strategies just implemented
`#relation` as public method and ResetAbsent called `#update_all` on
them. The data to be fetched is the only thing that changes but the
update is the same.
2018-10-01 17:37:49 +02:00
Pau Perez
82654cd1ee Turn delegation to a reader to make it simpler
This makes the solution less smart and as a result ResetAbsent improves
it's consistency and returns always an integer.
2018-10-01 16:40:34 +02:00
Pau Perez
148321f7b7 Make strategies class names more explicit 2018-10-01 16:40:34 +02:00
Pau Perez
af93af1a64 Replace strategy with a more explicit name 2018-10-01 16:40:34 +02:00
Pau Perez
8715fce295 Remove @import_settings in favor of Settings 2018-10-01 13:12:06 +02:00
Pau Perez
fd69c7672d Add specs for ResetAbsent strategies
This also fixes the case where there are no overrides to exclude.
2018-10-01 13:12:06 +02:00
Pau Perez
d527f6265a Remove pointless sum 2018-10-01 13:12:06 +02:00
Pau Perez
5eb10edbfd Inject #updated_ids to strategy
Their values are known beforehand.
2018-10-01 13:12:06 +02:00
Pau Perez
186801a1e2 Remove unused supplier_ids argument 2018-10-01 13:12:06 +02:00
Pau Perez
f04fa4ed63 Do not treat ResetAbsent as a decorator anymore
This fully encapsulates it's logic and reduces its tight coupling with
EntryProcessor.
2018-10-01 13:12:06 +02:00
Pau Perez
95ae18a1ba Remove method delegation 2018-10-01 13:12:06 +02:00
Pau Perez
54d6bc5443 Don't use importing_into_inventory? in ResetAbsent
This completely decouples ResetAbsent from the particular strategy used.
2018-10-01 13:12:06 +02:00
Pau Perez
a10e58e20a Inject strategy_factory into ResetAbsent 2018-10-01 13:12:06 +02:00
Pau Perez
a9444b8909 Extract InventoryReset and Products strategies
Extract this strategy classes from ResetAbsent and move #reset there.
2018-10-01 13:12:06 +02:00
Pau Perez
8d7a11b0ac Make all steps of the algorithm have 2 branches 2018-10-01 13:12:06 +02:00
Pau Perez
23471346b6 Do not call ResetAbsent when preconditions not met 2018-10-01 13:12:06 +02:00
Pau Perez
a409353d37 Move import_settings query methods to Settings 2018-10-01 13:12:06 +02:00
Pau Perez
b940f06238 Return early if reset_all_absent is not set
No need to go through half of the algorithm if the setting is not
enabled. It does not change per enterprise.

This also assumes "Previously we were updating both (products and inventory)
at the same time during one import, but now it's one or the other" in
Matt's words.
2018-10-01 13:12:06 +02:00
Pau Perez
c955e151b7 Pass enterprise ids as strs as current code does 2018-10-01 13:12:06 +02:00
Pau Perez
e04162415a Move code comment to be the method's doc 2018-10-01 13:12:06 +02:00
Pau Perez
5ac3598550 Inject Settings object in ResetAbsent 2018-10-01 13:12:06 +02:00
Pau Perez
b5766a2dd9 Extract common conditional clauses
This also turns local vars into ivars so that the behaviour can be
thoroughly tested. These ivars are meant to be removed once this class
is refactored further. Now there's no other way to ensure its state.
2018-10-01 13:12:06 +02:00
Pau Perez
ed073e9750 Rely on Settings and don't access internal struct. 2018-10-01 13:12:06 +02:00
Pau Perez
663db47433 Move products_reset_count to ResetAbsent 2018-09-29 10:57:23 +02:00
Pau Perez
3150741849 Extract ResetAbsent class from EntryProcessor 2018-09-29 10:57:18 +02:00
Maikel
51f9a0afa1 Merge pull request #2562 from Matt-Yorkley/pi/product_attributes
[Product Import] Product attributes
2018-09-25 11:36:03 +10:00
Pau Perez
f743b5f02f Extract Settings from Product Import processor
This encapsulates the data structure used by the entry processor to
check various settings. It still requires a lot of work to move more
logic to this new class.
2018-09-24 13:55:33 +02:00