cyrillefr
6d6164c8f6
Keep stock selection when error on saving
...
- added 2 not to be persisted attributes aimed at dealing with the UI
- added them to the permitted list
- updated view to switch mode about on_hand/on_demand
that is: from an already persisted variant or not
- Not persisted deals with on_*_desired not to be persisted fields
- Persisted mode deals with regular on_* fields
- the corresponding spec for both on_hand/on_demand
2025-02-12 16:01:21 +01:00
Maikel Linke
aa9daed66e
Remove unused StockLocation#stock_items
...
And the reverse association.
2025-01-22 11:20:05 +11:00
Maikel Linke
248110cfb3
Make stock location association optional
...
Prepare for removal
2025-01-22 11:20:04 +11:00
Maikel
697f430156
Merge pull request #12992 from mkllnk/errors
...
Add simpler Alert.raise interface to notify Bugsnag
2024-12-03 13:29:11 +11:00
Maikel Linke
0d8df5d2a8
Replace Bugsnag calls with Alert.raise
2024-11-21 15:58:55 +11:00
Maikel Linke
1ce0b25bb0
Switch SemanticLink to use new association
...
And ActiveRecord magic does the rest when used correctly.
2024-11-19 15:53:58 +11:00
Gaetan Craig-Riou
324a4ff591
Backport fix for hungarian instance
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
d0fe1585d7
Move variant unit attributes to variant 2
...
Update Spree::Product and spec
2024-10-14 14:56:46 +11:00
Gaetan Craig-Riou
f58a3a859f
Move variant unit attributes to variant 1
...
Update Spree::Variant model and spec
2024-10-14 14:56:46 +11:00
Maikel Linke
1e3c18f3f6
Remove unneeded method StockLocation#propagate_variant
2024-10-03 08:24:15 +10:00
Maikel Linke
9f43244312
Import on-demand stock setting in DFC import
2024-09-25 10:55:41 +10:00
Maikel Linke
95e620a78b
Add lookup of variants by semantic id
2024-09-25 10:55:40 +10:00
wandji20
2709479bf2
Require varian t category when creating new product variant [OFN-12666]
2024-07-30 12:07:50 +01:00
Gaetan Craig-Riou
448308710a
Per review, distributor are now updated via variant
...
When a product is deleted, it will delete associated variant and
in turn will touch the affected distributors
2024-07-03 11:23:02 +10:00
Gaetan Craig-Riou
c328ee8087
Remove stockable_by from Product and Variant
...
It's not used anymore
2024-07-03 11:23:02 +10:00
Gaetan Craig-Riou
260211cf15
Fix Ruboxop issue
2024-07-03 11:21:28 +10:00
Gaetan Craig-Riou
b891a03468
Fix search by producer, BUU product page
2024-07-03 10:17:49 +10:00
Gaetan Craig-Riou
22f4ae115a
Add missing associations and validations specs
2024-07-03 10:17:49 +10:00
Gaetan Craig-Riou
7af36510c8
Fix lambda styling
...
It follows Style/Lambda cop :
https://docs.rubocop.org/rubocop/1.60/cops_style.html#stylelambda
2024-07-03 10:17:49 +10:00
Gaetan Craig-Riou
4113880401
Move supplier to variant part 2
...
Variant model and specs
2024-07-03 10:17:49 +10:00
David Cook
898ab08bab
Add specs for invalid records
...
It turns out that the duplicator still raises an exception in some cases. Now I think I see why the the controller was catching the exceptions. At least now we know which exceptions to catch.
2024-06-27 11:39:49 +10:00
Ahmed Ejaz
9dd427ab7f
12346 - fix rubocop rails/pluckInWhere errors
2024-06-22 01:54:54 +05:00
cyrillefr
654fda89ca
Fix Rails/RedundantActiveRecordAllMethod issues
...
- Cop: Rails/RedundantActiveRecordAllMethod
- if receiver is an Active Record object, ".all" can be safely removed
- There are 2 allowed receivers that are listed in the
styleguide file (those are defaults cf. cop documentation).
2024-06-19 14:32:21 +02:00
David Cook
f8f0a1bf58
Update comment
...
[skip ci]
2024-05-29 10:55:29 +10:00
David Cook
90c71c6a1a
Remove unused method
2024-05-28 12:00:07 +10:00
David Cook
35c2297d55
Detect changes in price
...
Price is actually an association with lots of custom methods to make it look like a field, and so changes were ignored.
Now this issue is fixed, perhaps it should be moved to a concern..
Note, there are other delegated fields: product name and description may be assigned from the variant. But there's no hooks to save the prroduct, so I didn't include it when checking for changes.
2024-05-28 12:00:04 +10:00
Anthony Musyoki
645cb10864
Fix Rubocop: Do not delete Spree::Variant associations
...
Spree::Variant acts_as_paranoid and is thus not hard deleted
2024-04-23 12:31:43 +03:00
cyrillefr
404fcf1f72
Fix FixRailsWhereEquals
...
- fixes offenses caused by RuboCop::Cop::Rails::WhereEquals cop
2024-04-09 10:44:02 +02:00
Matt-Yorkley
3f2a5786bd
Apply taxon from sibling variant if none is provided on variant creation
2024-04-02 09:27:37 +11:00
Matt-Yorkley
2ef266390d
Move primary taxon to variant
2024-04-02 09:27:36 +11:00
Matt-Yorkley
c01bab5f27
Wrap commonly-repeated calls to Spree::Config to reduce unnecessary cache reads
...
These config values are relatively static but in some cases they can be called many times in the same request (like rendering a report or a large list of line_items in BOM). These values will now only get fetched from Redis/Postgres once at most per request/job.
2024-03-26 13:39:16 +00:00
Maikel Linke
d47d3eba8f
Add SemanticLink model for variants
...
We want to link variants/products to external DFC SuppliedProducts to
trigger supplier orders when local stock is exhausted. This is the first
step to enable the link.
2024-03-15 16:46:41 +11:00
David Cook
7164cbd0bd
Don't validate numericality if blank
...
This avoids unnecessary second message when left blank:
> can't be blank
> is not a number
Ok this is a little confusing. Why is there a separate presence check above, and why is it only for measurable units, when we still require a number for _all_ units? Because, for 'items', we allow a blank value then auto-set it to 1.
I don't know if it's really necessary, but that's how it currently works...
2024-02-16 08:51:53 +11:00
Maikel Linke
95c6a56e2e
Simplify loading of default tax category
...
The logic doesn't change but I simplified it and added more detailed
specs.
2024-01-12 17:06:24 +11:00
Mohamed ABDELLANI
d239beb226
remove unnecessary require instructions
2024-01-03 11:34:57 +01:00
Mohamed ABDELLANI
a0c2facca4
validate price numericality on product and variants
2023-11-28 13:45:08 +01:00
David Cook
aa4630d74c
Mark fields as changed if they contain unsaved values.
...
This can happen when there's a validation error. The field with error will also be marked changed, but the error style will override it.
I'd like to move this into a FormBuilder. Existing formbuilder gems don't seem to support it (though I didn't look very hard).
2023-10-24 15:21:14 +11:00
Maikel
90c25d604b
Merge pull request #11441 from macanudo527/fix_rails_HasManyOrHasOneDependent
...
Fix Rails/HasManyOrHasOneDependent
2023-10-09 11:44:23 +11:00
David Cook
117085aeba
Transform weight before validation
...
I guess validates_length_from_database also validates numbers. That's not a bad thing.
So now it's being validated, we should validate the transformed value that will be saved to the database.
2023-10-06 14:15:07 +02:00
David Cook
9a9be8dacd
Validate length of variant fields
2023-10-06 14:15:07 +02:00
Neal Chambers
fec59e5ae2
Apply Changes Suggested by Code Review
2023-10-06 10:58:49 +09:00
Neal Chambers
180cd4abe6
Revert Complicated Rails/HasManyOrHasOneDependent Errors
2023-10-06 10:58:49 +09:00
Neal Chambers
7f8ac94933
Fix Rails/HasManyOrHasOneDependent with nil
2023-10-06 10:58:49 +09:00
Neal Chambers
070d2cb855
Fix stock_movements relation in variant
2023-10-06 10:58:49 +09:00
Neal Chambers
b76fb10d46
Fix Rails/HasManyOrHasOneDependent with Destroy
2023-10-06 10:58:49 +09:00
Neal Chambers
50eb8f31f2
Remove Deprecated delegate_belongs_to
2023-09-26 09:50:08 +09:00
Neal Chambers
ed06edda3f
Fix Style/HashSyntax
2023-09-13 16:45:00 +09:00
Neal Chambers
06e217c527
Safely autocorrect Rails/WhereNot
...
Inspecting 1483 files
........................................................................................................................C..................................................................................................................C...........CC.C..........................................C......C..........C.........................C......................CC..........C........................................................................................................................C.......................................................................................................C........................................................C...........................................................................................................................................C......................................C.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Offenses:
app/controllers/spree/admin/products_controller.rb:183:11: C: [Corrected] Rails/WhereNot: Use where.not(spree_variants: { import_date: nil }) instead of manually constructing negated SQL in where.
where('spree_variants.import_date IS NOT NULL').
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/concerns/permalink_generator.rb:37:26: C: [Corrected] Rails/WhereNot: Use where.not(id: id) instead of manually constructing negated SQL in where.
scope_with_deleted.where('id != ?', id)
^^^^^^^^^^^^^^^^^^^^
app/models/concerns/permalink_generator.rb:37:40: C: [Corrected] Style/HashSyntax: Omit the hash value.
scope_with_deleted.where.not(id: id)
^^
app/models/enterprise.rb:152:7: C: [Corrected] Rails/WhereNot: Use where.not(enterprises: { id: ready_enterprises }) instead of manually constructing negated SQL in where.
where("enterprises.id NOT IN (?)", ready_enterprises)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:158:31: C: [Corrected] Rails/WhereNot: Use where.not(sells: 'none') instead of manually constructing negated SQL in where.
scope :is_distributor, -> { where('sells != ?', 'none') }
^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:479:17: C: [Corrected] Rails/WhereNot: Use where.not(id: id) instead of manually constructing negated SQL in where.
dups = dups.where('id != ?', id) unless new_record?
^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:534:43: C: [Corrected] Rails/WhereNot: Use where.not(enterprises: { id: self }) instead of manually constructing negated SQL in where.
enterprises = owner.owned_enterprises.where('enterprises.id != ?', self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:583:7: C: [Corrected] Rails/WhereNot: Use where.not(enterprises: { id: id }) instead of manually constructing negated SQL in where.
where('enterprises.id != ?', id).
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_fee.rb:40:24: C: [Corrected] Rails/WhereNot: Use where.not(spree_calculators: { type: PER_ORDER_CALCULATORS }) instead of manually constructing negated SQL in where.
joins(:calculator).where('spree_calculators.type NOT IN (?)', PER_ORDER_CALCULATORS)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_relationship.rb:78:19: C: [Corrected] Rails/WhereNot: Use where.not(name: perms) instead of manually constructing negated SQL in where.
permissions.where('name NOT IN (?)', perms).destroy_all
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/product_import/inventory_reset_strategy.rb:27:16: C: [Corrected] Rails/WhereNot: Use where.not(id: excluded_items_ids) instead of manually constructing negated SQL in where.
relation.where('id NOT IN (?)', excluded_items_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/proxy_order.rb:19:25: C: [Corrected] Rails/WhereNot: Use where.not(proxy_orders: { canceled_at: nil }) instead of manually constructing negated SQL in where.
scope :canceled, -> { where('proxy_orders.canceled_at IS NOT NULL') }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/credit_card.rb:26:39: C: [Corrected] Rails/WhereNot: Use where.not(gateway_customer_profile_id: nil) instead of manually constructing negated SQL in where.
scope :with_payment_profile, -> { where('gateway_customer_profile_id IS NOT NULL') }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/product.rb:166:9: C: [Corrected] Rails/WhereNot: Use where.not(order_cycles: { id: nil }) instead of manually constructing negated SQL in where.
where('order_cycles.id IS NOT NULL')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/variant.rb:94:30: C: [Corrected] Rails/WhereNot: Use where.not(deleted_at: nil) instead of manually constructing negated SQL in where.
scope :deleted, lambda { where('deleted_at IS NOT NULL') }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/variant.rb:165:43: C: [Corrected] Rails/WhereNot: Use where.not(spree_prices: { amount: nil }) instead of manually constructing negated SQL in where.
where('spree_prices.amount IS NOT NULL').
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/zone.rb:141:19: C: [Corrected] Rails/WhereNot: Use where.not(id: id) instead of manually constructing negated SQL in where.
Spree::Zone.where('id != ?', id).update_all(default_tax: false) if default_tax
^^^^^^^^^^^^^^^^^^^^
app/models/spree/zone.rb:141:33: C: [Corrected] Style/HashSyntax: Omit the hash value.
Spree::Zone.where.not(id: id).update_all(default_tax: false) if default_tax
^^
app/models/variant_override.rb:32:7: C: [Corrected] Rails/WhereNot: Use where.not(variant_overrides: { import_date: nil }) instead of manually constructing negated SQL in where.
where('variant_overrides.import_date IS NOT NULL').
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/cap_quantity.rb:45:22: C: [Corrected] Rails/WhereNot: Use where.not(variant_id: available_variants_for.select(&:id)) instead of manually constructing negated SQL in where.
order.line_items.where('variant_id NOT IN (?)', available_variants_for.select(&:id))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/catalog/app/services/catalog/product_import/products_reset_strategy.rb:32:18: C: [Corrected] Rails/WhereNot: Use where.not(spree_variants: { id: excluded_items_ids }) instead of manually constructing negated SQL in where.
relation.where('spree_variants.id NOT IN (?)', excluded_items_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/order_management/app/services/order_management/subscriptions/proxy_order_syncer.rb:78:18: C: [Corrected] Rails/WhereNot: Use where.not(order_cycle_id: order_cycle_ids) instead of manually constructing negated SQL in where.
orphaned.where('order_cycle_id NOT IN (?)', order_cycle_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/users_and_enterprises/base.rb:27:14: C: [Corrected] Rails/WhereNot: Use where.not(enterprises: { id: nil }) instead of manually constructing negated SQL in where.
.where("enterprises.id IS NOT NULL")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/users_and_enterprises/base.rb:39:14: C: [Corrected] Rails/WhereNot: Use where.not(enterprise_id: nil) instead of manually constructing negated SQL in where.
.where("enterprise_id IS NOT NULL")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/users_and_enterprises/base.rb:40:14: C: [Corrected] Rails/WhereNot: Use where.not(user_id: nil) instead of manually constructing negated SQL in where.
.where("user_id IS NOT NULL")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/tasks/data/anonymize_data.rake:50:16: C: [Corrected] Rails/WhereNot: Use where.not(user_id: nil) instead of manually constructing negated SQL in where.
Customer.where("user_id IS NOT NULL")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1483 files inspected, 26 offenses detected, 26 offenses corrected
2023-08-20 12:33:43 +09:00
Matt-Yorkley
811a8cde7f
Use optional: false instead of validates: presence
2023-08-14 21:02:48 +01:00
Matt-Yorkley
724c08c94d
Set default shipping_category if absent
2023-08-14 21:02:47 +01:00