Commit Graph

2341 Commits

Author SHA1 Message Date
Matt-Yorkley
724c08c94d Set default shipping_category if absent 2023-08-14 21:02:47 +01:00
Matt-Yorkley
c18c525d9f Save shipping category selection to new variant when creating a new product 2023-08-14 21:02:47 +01:00
Matt-Yorkley
57d6fa006c Update shipping_category association in models 2023-08-14 21:02:47 +01:00
Maikel Linke
1b6eeb0928 Reduce line length of PaymentMethod class
Rubocop was complaining. So I found code that could be simplified and
specced it before refactoring.
2023-08-11 10:14:47 +10:00
Maikel Linke
4a13576f78 Remove now superfluous belongs_to default declaration 2023-08-11 10:14:47 +10:00
Maikel Linke
e6c679cb34 Apply belongs_to_required_by_default to all models
Unless they state otherwise.

The new standard also changes the default behaviour of the Shoulda
matcher in Rspec. It now defaults to asserting that an association is
required. That needed some spec updates.

In one case, Spree::Product, I also had to update the model because the
presence validation was somehow not recognised by the Shoulda matcher.
The error message may change slightly but the outcome should be the
same.
2023-08-11 10:14:47 +10:00
Maikel Linke
8ef6966891 Declare old belongs_to default on remaining models
It would take ages to go through all files now and assess all belongs_to
associations. So I just declare the old default and then we can move on
and apply the new default for the application while these classes still
use the old one. All new models will then use the new default which is
the goal of this excercise and we can refactor old classes when we touch
them anyway.
2023-08-11 10:14:43 +10:00
Konrad
c3414143e6 Merge pull request #11222 from Matt-Yorkley/checkout-controller
Reduce controller size
2023-08-10 23:28:57 +02:00
Matt-Yorkley
b82f368bec Drop :is_master column from variants table 2023-08-10 12:25:18 +01:00
Maikel
8db8d6de8d Merge pull request #11372 from Matt-Yorkley/remove-variant-position
Remove unused variant :position attribute
2023-08-10 11:48:55 +10:00
Matt-Yorkley
a33b6e0ec9 Update variant sorting 2023-08-09 18:30:56 +01:00
Matt-Yorkley
e65efe0f85 Remove unused variant :position attribute 2023-08-09 18:24:46 +01:00
Rachel Arnould
4505beff98 Merge pull request #11327 from bouaik/fix-display-invoice-tab-for-completed-resumed-canceled-only
Fix display invoice tab for completed, resumed and canceled orders only
2023-08-09 18:37:02 +02:00
Konrad
89d8fa0306 Merge pull request #11346 from Matt-Yorkley/remove-multiple-taxons
[Product Refactor] Remove multiple taxons
2023-08-09 11:19:11 +02:00
Maikel
b50fa216eb Merge pull request #11117 from rioug/10857-voucher-error-moving-between-summary-and-cart-take2
[vouchers] error moving between summary and cart pages
2023-08-09 11:14:52 +10:00
Matt-Yorkley
6fee1d2dde Use dependent: :restrict_with_error on Taxon/Product association 2023-08-08 11:36:31 +01:00
Matt-Yorkley
33d40ed750 Update association 2023-08-08 11:36:31 +01:00
Matt-Yorkley
cffd7073e2 Delete unused method 2023-08-08 11:36:31 +01:00
Matt-Yorkley
a93809b75f Remove associated abilities 2023-08-08 11:36:31 +01:00
Matt-Yorkley
a69ab2ef71 Remove multiple taxons on products functionality 2023-08-08 11:36:31 +01:00
Rachel Arnould
1b1279aa56 Merge pull request #11192 from abdellani/bulk-invoice-printing
fix Bulk invoice printing/sending
2023-08-04 12:02:43 +02:00
David Cook
42230c07b2 Merge pull request #11312 from macanudo527/fix_rubocop_5
Fix autocorrect Rails Cops
2023-08-04 11:13:52 +10:00
Maikel
2b18effe6d Merge pull request #11322 from macanudo527/fix_remaining_line_length
Fix remaining Layout/LineLength Rubocop Errors
2023-08-04 09:34:00 +10:00
Matt-Yorkley
82b8bb74a1 Remove #before_save_hook method and clarify it's intention 2023-08-04 08:43:15 +10:00
Mohamed ABDELLANI
c921250d68 implement Spree::Order#invoiceable?
This will be used to filter the orders when running bulk print
2023-08-03 14:52:45 +01:00
bouaik
2c08602664 fix display invoice tab 2023-08-03 11:25:31 +01:00
Filipe
c0a4bccb3e Merge pull request #11156 from Matt-Yorkley/product-tax-category
[Product Refactor] Tax category
2023-08-03 10:29:40 +01:00
Neal Chambers
a4f270bdec Fix Layout/LineLength 2023-08-03 09:49:47 +09:00
Konrad
44d25dbb6a Merge pull request #11299 from cillian/order-name-sorting
Sort orders by last name, then first name i.e. the same way bulk order management works
2023-08-02 11:30:25 +02:00
Neal Chambers
44cf2faa1e Safely autocorrect Rails/ActiveRecordCallbacksOrder
Inspecting 1481 files
...........................................................................................................................................................................................................................................................C..C.CC........................................................................C...C..........C..C..................CC........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/models/customer.rb:32:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_validation is supposed to appear before before_destroy.
  before_validation :downcase_email
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/customer.rb:33:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_validation is supposed to appear before before_destroy.
  before_validation :empty_code
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/customer.rb:34:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/models/customer.rb:49:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/models/customer.rb:49:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_create is supposed to appear before before_destroy.
  before_create :associate_user
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:129:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_create is supposed to appear before after_touch.
  after_create :set_default_contact
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:130:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_create is supposed to appear before after_touch.
  after_create :relate_to_owners_enterprises
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:133:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_rollback is supposed to appear before after_touch.
  after_rollback :restore_permalink
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:134:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/models/enterprise_group.rb:18:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_save is supposed to appear before after_find.
  after_save :unset_undefined_address_fields
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_group.rb:18:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_validation is supposed to appear before after_save.
  before_validation :sanitize_permalink
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_group.rb:19:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_validation is supposed to appear before after_find.
  before_validation :sanitize_permalink
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_group.rb:23:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_validation is supposed to appear before after_save.
  before_validation :sanitize_permalink
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_relationship.rb:15:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_destroy is supposed to appear before after_save.
  before_destroy :revoke_all_child_variant_overrides
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_relationship.rb:16:3: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_destroy is supposed to appear before after_save.
  before_destroy :destroy_related_exchanges
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/order.rb:108:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_save is supposed to appear before before_create.
    before_save :update_shipping_fees!, if: :complete?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/order.rb:109:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_save is supposed to appear before before_create.
    before_save :update_payment_fees!, if: :complete?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/payment.rb:30:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_initialize is supposed to appear before before_create.
    after_initialize :build_source
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/payment.rb:32:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_initialize is supposed to appear before after_create.
    after_initialize :build_source
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/payment.rb:33:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_create is supposed to appear before after_save.
    after_create :invalidate_old_payments
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/payment.rb:34:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_initialize is supposed to appear before after_save.
    after_initialize :build_source
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/payment.rb:35:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_create is supposed to appear before after_save.
    after_create :invalidate_old_payments
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/payment.rb:36:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_initialize is supposed to appear before after_save.
    after_initialize :build_source
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/payment.rb:46:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_initialize is supposed to appear before after_create.
    after_initialize :build_source
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/payment.rb:47:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/models/spree/product.rb:87:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_create is supposed to appear before after_save.
    after_create :ensure_standard_variant
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/return_authorization.rb:12:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: before_save is supposed to appear before before_create.
    before_save :force_positive_amount
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/user.rb:49:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_create is supposed to appear before before_destroy.
    after_create :associate_customers, :associate_orders
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/user.rb:50:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/models/spree/variant.rb:88:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_create is supposed to appear before after_save.
    after_create :create_stock_items
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/variant.rb:89:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: after_create is supposed to appear before after_save.
    after_create :set_position
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/variant.rb:90:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/models/spree/variant.rb:91:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/models/spree/variant.rb:91:5: C: [Corrected] Rails/ActiveRecordCallbacksOrder: around_destroy is supposed to appear before after_save.
    around_destroy :destruction
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/variant.rb:92:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.

1481 files inspected, 35 offenses detected, 35 offenses corrected
2023-08-01 22:50:21 +09:00
Matt-Yorkley
91fc4b51b4 Rescue ImageMagick errors 2023-07-31 17:21:49 +01:00
Matt-Yorkley
a84f9ebd2e Allow passing tax_category to new variant when creating a new product 2023-07-31 09:23:20 +10:00
Matt-Yorkley
4934d09a4c Update delegation and method chaining between product and tax_category 2023-07-31 09:23:20 +10:00
Matt-Yorkley
d33e780411 Move tax_category association from product to variant 2023-07-31 09:23:19 +10:00
Neal Chambers
2a76b1972f Safely autocorrect Lint/SafeNavigationChain
Inspecting 1480 files
........................................................................................................................................................................................................................................................................................................................................W............................W..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/models/spree/line_item.rb:283:55: W: [Corrected] Lint/SafeNavigationChain: Do not chain ordinary method call after safe navigation operator.
        self.final_weight_volume = variant&.unit_value * quantity
                                                      ^^^^^^^^^^^
app/models/spree/line_item.rb:283:57: C: [Corrected] Layout/SpaceAroundMethodCallOperator: Avoid using spaces around a method call operator.
        self.final_weight_volume = variant&.unit_value&. * quantity
                                                        ^
app/models/spree/stock/availability_validator.rb:31:77: W: [Corrected] Lint/SafeNavigationChain: Do not chain ordinary method call after safe navigation operator.
        return line_item.order.shipments.first if line_item.order&.shipments.any?
                                                                            ^^^^^

1480 files inspected, 3 offenses detected, 3 offenses corrected
2023-07-30 21:29:19 +09:00
Neal Chambers
e9f448fad9 Safely autocorrect Lint/AmbiguousOperatorPrecedence
Inspecting 1480 files
...................................................................................................................................................................................................................................W..........................W........................................................W................W..............W................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/models/calculator/flexi_rate.rb:38:7: W: [Corrected] Lint/AmbiguousOperatorPrecedence: Wrap expressions with varying precedence with parentheses to avoid ambiguity.
      count * preferred_additional_item.to_f + preferred_first_item.to_f
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:362:12: W: [Corrected] Lint/AmbiguousOperatorPrecedence: Wrap expressions with varying precedence with parentheses to avoid ambiguity.
    cat << "sells_" + sells
           ^^^^^^^^^^^^^^^^
app/models/enterprise.rb:496:21: W: [Corrected] Lint/AmbiguousOperatorPrecedence: Wrap expressions with varying precedence with parentheses to avoid ambiguity.
    phone_number && "https://wa.me/" + phone_number.tr('+ ', '')
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/ability.rb:27:33: W: [Corrected] Lint/AmbiguousOperatorPrecedence: Wrap expressions with varying precedence with parentheses to avoid ambiguity.
          order.user == user || order.token && token == order.token
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/ability.rb:30:33: W: [Corrected] Lint/AmbiguousOperatorPrecedence: Wrap expressions with varying precedence with parentheses to avoid ambiguity.
          order.user == user || order.token && token == order.token
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/line_item.rb:205:16: W: [Corrected] Lint/AmbiguousOperatorPrecedence: Wrap expressions with varying precedence with parentheses to avoid ambiguity.
      (price + fees / quantity).round(2)
               ^^^^^^^^^^^^^^^
app/models/spree/preferences/store.rb:28:11: W: [Corrected] Lint/AmbiguousOperatorPrecedence: Wrap expressions with varying precedence with parentheses to avoid ambiguity.
          should_persist? && Spree::Preference.where(key: key).exists?
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1480 files inspected, 7 offenses detected, 7 offenses corrected
2023-07-30 21:29:19 +09:00
Cillian O'Ruanaidh
276b94de5b Sort orders by last name, then first name i.e. the same way bulk order management works 2023-07-28 14:20:29 +01:00
jibees
605cb730f7 Merge pull request #11163 from jibees/productsV3-searching-filtering-pagination
🚧 Products v3: viewing, searching,  filtering & pagination
2023-07-25 15:22:42 +02:00
Jean-Baptiste Bellet
2a81a9acfb Add ability for non super-admin user to see products_v3 page 2023-07-25 09:20:25 +02:00
David Cook
6fa9165cc2 Safely autocorrect Layout/EmptyLines
Inspecting 1478 files
..............................................................................................................................................................................................................................................................................................................................................C.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/models/spree/payment.rb:100:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.

1478 files inspected, 1 offense detected, 1 offense corrected
2023-07-20 13:58:00 +10:00
Jean-Baptiste Bellet
3fab9714f5 Use a constant as the search_key 2023-07-19 14:58:40 +02:00
Filipe
15282f9738 Merge pull request #11115 from abdellani/fix-enterprise-users-should-have-access-to-invoices
authorize enterprise users to access invoices page
2023-07-18 16:42:00 +01:00
Gaetan Craig-Riou
a5b2bc6293 Per review, Refactor VoucherAdjustmentsService
Change #calculate to #update and clean up internal code
2023-07-18 15:16:21 +10:00
Gaetan Craig-Riou
a584f9aaec Refactor VoucherAdjustmentsService
It's more inline with existing coding style
2023-07-18 14:39:01 +10:00
Gaetan Craig-Riou
ca7dcb82b8 Apply voucher after transitionning to the confirmation step
Testing that VoucherAdjustmentsService.calculate has been called after a
transition doens't work, skipping test for now.
2023-07-14 14:47:03 +10:00
Filipe
448d5ea017 Merge pull request #11135 from Matt-Yorkley/vouchers
Vouchers part 2
2023-07-13 12:50:32 +01:00
Mohamed ABDELLANI
f68064480a authorize distributor manager to generate invoices 2023-07-06 17:36:13 +01:00
Mohamed ABDELLANI
3a9a023dea authorize enterprise users to access invoices page 2023-07-06 17:36:13 +01:00
Matt-Yorkley
42a3087cdb Remove :available_on attribute from Product class 2023-07-06 14:36:35 +01:00
Matt-Yorkley
652beac73f Drop valid? check from zero_priced_order? method 2023-07-05 15:31:05 +01:00