Compare commits

...

537 Commits

Author SHA1 Message Date
Matt-Yorkley
0262dcd11b Rescue ImageMagick errors 2023-08-02 12:07:16 +10:00
Maikel
c8ad6d7d1c Merge pull request #11300 from macanudo527/fix_rubocop_layout_3
Fix rubocop layout 4
2023-07-31 11:26:53 +10:00
Neal Chambers
60cd84d565 Safely autocorrect Naming/BlockForwarding
Inspecting 1480 files
...................................................................................................................................................................C.......C..........C...............................................................................................................................................................................................................C...........................................................................................................C.........C...............................................................................................................................................................................................................................................................C........................................CC...C............................................................................................................................................................................................................................................................................................................................C.....................................................................................................................................................................................................C..............C.........C..CC.......C.....................................................................................................C...............

Offenses:

app/helpers/application_helper.rb:41:32: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def ng_form_for(name, *args, &block)
                               ^^^^^^
app/helpers/application_helper.rb:44:75: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    form_for(name, *(args << options.merge(builder: AngularFormBuilder)), &block)
                                                                          ^^^^^^
app/helpers/application_helper.rb:49:37: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def method_missing(method, *args, &block)
                                    ^^^^^^
app/helpers/link_helper.rb:4:57: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def link_to_service(baseurl, name, html_options = {}, &block)
                                                        ^^^^^^
app/helpers/link_helper.rb:8:51: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    link_to ext_url(baseurl, name), html_options, &block
                                                  ^^^^^^
app/helpers/spree/admin/base_helper.rb:6:56: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
      def field_container(model, method, options = {}, &block)
                                                       ^^^^^^
app/helpers/spree/admin/base_helper.rb:13:29: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
                    capture(&block),
                            ^^^^^^
app/reflexes/application_reflex.rb:29:19: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def with_locale(&block)
                  ^^^^^^
app/reflexes/application_reflex.rb:30:43: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    I18n.with_locale(current_user.locale, &block)
                                          ^^^^^^
app/services/cache_service.rb:8:43: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def self.cache(cache_key, options = {}, &block)
                                          ^^^^^^
app/services/cache_service.rb:9:48: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    Rails.cache.fetch cache_key.to_s, options, &block
                                               ^^^^^^
app/services/cache_service.rb:14:58: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def self.cached_data_by_class(cache_key, cached_class, &block)
                                                         ^^^^^^
app/services/cache_service.rb:16:23: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
                      &block
                      ^^^^^^
app/services/cache_service.rb:25:34: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def self.home_stats(statistic, &block)
                                 ^^^^^^
app/services/cache_service.rb:28:47: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
                      race_condition_ttl: 10, &block)
                                              ^^^^^^
app/services/current_order_locker.rb:12:31: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def self.around(controller, &block)
                              ^^^^^^
app/services/current_order_locker.rb:13:55: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    lock_order_and_variants(controller.current_order, &block)
                                                      ^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:392:28: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
        def chain_to_scope(&block)
                           ^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:393:41: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
          @scope = @scope.instance_eval(&block)
                                        ^^^^^^
lib/spree/core/controller_helpers/respond_with.rb:7:34: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    def respond_with(*resources, &block)
                                 ^^^^^^
lib/spree/core/controller_helpers/respond_with.rb:13:64: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
      return unless (collector = retrieve_collector_from_mimes(&block))
                                                               ^^^^^^
lib/spree/core/delegate_belongs_to.rb:80:39: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    def class_def(name, method = nil, &blk)
                                      ^^^^
lib/spree/core/delegate_belongs_to.rb:81:54: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
      class_eval { method.nil? ? define_method(name, &blk) : define_method(name, method) }
                                                     ^^^^
lib/spree/core/environment_extension.rb:22:31: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
      def create_method(name, &block)
                              ^^^^^^
lib/spree/core/environment_extension.rb:23:51: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
        self.class.__send__(:define_method, name, &block)
                                                  ^^^^^^
spec/models/enterprise_caching_spec.rb:144:13: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def later(&block)
            ^^^^^^
spec/models/enterprise_caching_spec.rb:145:36: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    Timecop.travel(1.day.from_now, &block)
                                   ^^^^^^
spec/support/embedded_pages_helper.rb:5:26: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    def on_embedded_page(&block)
                         ^^^^^^
spec/support/embedded_pages_helper.rb:6:28: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
      within_frame :frame, &block
                           ^^^^^^
spec/support/preferences_helper.rb:11:31: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def reset_spree_preferences(&config_block)
                              ^^^^^^^^^^^^^
spec/support/preferences_helper.rb:16:33: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    configure_spree_preferences(&config_block) if block_given?
                                ^^^^^^^^^^^^^
spec/support/request/shop_workflow.rb:87:37: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def within_variant(variant = nil, &block)
                                    ^^^^^^
spec/support/request/shop_workflow.rb:90:22: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    within(selector, &block)
                     ^^^^^^
spec/support/request/ui_component_helper.rb:4:23: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def browse_as_small(&block)
                      ^^^^^^
spec/support/request/ui_component_helper.rb:5:39: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    browse_with_window_size(640, 480, &block)
                                      ^^^^^^
spec/support/request/ui_component_helper.rb:8:24: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def browse_as_medium(&block)
                       ^^^^^^
spec/support/request/ui_component_helper.rb:9:40: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    browse_with_window_size(1024, 768, &block)
                                       ^^^^^^
spec/support/request/web_helper.rb:52:23: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def within_row(num, &block)
                      ^^^^^^
spec/support/request/web_helper.rb:53:54: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    within("table.index tbody tr:nth-child(#{num})", &block)
                                                     ^^^^^^
spec/swagger_helper.rb:77:19: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def param(args, &block)
                  ^^^^^^
spec/swagger_helper.rb:78:45: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
    public_send(:let, args) { instance_eval(&block) }
                                            ^^^^^^
spec/system/support/capybara_setup.rb:20:27: C: [Corrected] Naming/BlockForwarding: Use anonymous block forwarding.
  def using_session(name, &block)
                          ^^^^^^

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

Offenses:

lib/reporting/queries/query_interface.rb:18:30: W: [Corrected] Lint/UnusedMethodArgument: Unused method argument - default. If it's necessary, use _ or _default as an argument name to indicate that it won't be used. If it's unnecessary, remove it.
      def sum_grouped(field, default = 0)
                             ^^^^^^^
lib/reporting/queries/query_interface.rb:22:26: W: [Corrected] Lint/UnusedMethodArgument: Unused method argument - default. If it's necessary, use _ or _default as an argument name to indicate that it won't be used. If it's unnecessary, remove it.
      def sum_new(field, default = 0)
                         ^^^^^^^

1480 files inspected, 2 offenses detected, 2 offenses corrected
2023-07-30 21:29:19 +09: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
e7d53753e4 Safely autocorrect Lint/RedundantCopDisableDirective
Inspecting 1480 files
..............W.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/components/product_component.rb:23:51: W: [Corrected] Lint/RedundantCopDisableDirective: Unnecessary disabling of Metrics/MethodLength.
  # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength
                                                  ^^^^^^^^^^^^^^^^^^^^
app/components/product_component.rb:50:50: W: [Corrected] Lint/RedundantCopEnableDirective: Unnecessary enabling of Metrics/MethodLength.
  # rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength
                                                 ^^^^^^^^^^^^^^^^^^^^

1480 files inspected, 2 offenses detected, 2 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
filipefurtad0
0bcde2dbda Update all locales with the latest Transifex translations 2023-07-28 16:33:49 +01:00
Filipe
5d624ef4be Merge pull request #11278 from mkllnk/swagger-fix
Fix swagger-api integration after last update
2023-07-28 16:27:32 +01:00
Filipe
1ddbb1c4e1 Merge pull request #11294 from Matt-Yorkley/connect-src
Update CSP configuration for Safari
2023-07-28 16:16:02 +01:00
Filipe
a975e2bd93 Merge pull request #11247 from jibees/9123-inconsistent-default-visibility-setting-for-newly-created-enterprises
Admin, Enterprise creation : set visibility to "Hidden" by default
2023-07-28 12:15:32 +01:00
Filipe
ef947f8749 Merge pull request #11282 from jibees/11025-white-label-trix-quotes-code-and-links-cant-be-identified-in-the-editor
White label: Customize rendering inside the trix-editor, to match the shopfront rendering
2023-07-28 11:23:50 +01:00
Filipe
21690670f5 Merge pull request #11292 from jibees/11108-dashboard-supplier-profile-inconsistent-indentation-on-deployed-version
Admin: improve platform version displaying on admin homepage
2023-07-28 11:01:07 +01:00
Maikel
774bb7a607 Merge pull request #11238 from filipefurtad0/legal_invoices_spec
Adds coverage to Invoices (system specs)
2023-07-28 08:41:01 +10:00
filipefurtad0
98f29dcd9b Adds coverage on invoices section/table 2023-07-27 17:27:41 +01:00
Matt-Yorkley
dd9b28787c Update CSP configuration for Safari
Apparently some versions of Safari have issues with Websockets if the CSP doesn't explicitly define the `connect_src` in a certain way (including specifying the host). This issue is fixed in later versions of Safari and doesn't affect other browsers, for which the `default_src` with `:self` is sufficient.
2023-07-27 16:20:42 +01:00
filipefurtad0
35dfdc8bdc Adds coverage on Invoice tab
which should be visible as a function of the order state

Corrects cancelled case
2023-07-27 15:47:40 +01:00
Jean-Baptiste Bellet
8b4de3ddc7 Add version into its own .row .columns with centered text 2023-07-27 15:41:54 +02:00
jibees
55fbab4c0d Merge pull request #11287 from openfoodfoundation/dependabot/bundler/rexml-3.2.6
chore(deps): bump rexml from 3.2.5 to 3.2.6
2023-07-27 12:00:28 +02:00
Jean-Baptiste Bellet
a179c006fc Default design for ul and ol into the custom tab
`ul` and `old` default design already been reset, reactivate default design only for `.custom-tab`
2023-07-27 11:53:47 +02:00
Jean-Baptiste Bellet
4485490b0b Customize rendering inside the trix-editor, to match the shopfront rendering 2023-07-27 11:53:47 +02:00
jibees
b3949965fc Merge pull request #11288 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.3.4
chore(deps-dev): bump knapsack_pro from 5.3.3 to 5.3.4
2023-07-27 11:34:37 +02:00
dependabot[bot]
79d0728fdd chore(deps-dev): bump knapsack_pro from 5.3.3 to 5.3.4
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.3.3 to 5.3.4.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.3.3...v5.3.4)

---
updated-dependencies:
- dependency-name: knapsack_pro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-27 09:25:02 +00:00
dependabot[bot]
4e9dae6817 chore(deps): bump rexml from 3.2.5 to 3.2.6
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.5...v3.2.6)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-27 09:21:38 +00:00
jibees
96418dcde6 Merge pull request #11284 from mkllnk/caching-spec
Compile JS before testing caching
2023-07-27 09:41:22 +02:00
David Cook
fdb80fe87c Merge pull request #11283 from macanudo527/fix_rubocop_layout_2
Fix rubocop layout 3
2023-07-27 10:29:29 +10:00
Neal Chambers
e923defd55 Safely autocorrect Layout/TrailingWhitespace
Inspecting 1479 files
...................................................................................................................................................C..C.......................................................................................................C.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.....C..................C.............................................................................................C...................................................................C.......................................................................................................................................................................C....................................................C.............C...........CC.........C......C.CC.C....................C........................................................

Offenses:

app/controllers/spree/users_controller.rb:36:37: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
            partial("layouts/alert",
                                    ^
app/controllers/spree/users_controller.rb:51:35: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          partial("layouts/alert",
                                  ^
app/controllers/user_confirmations_controller.rb:27:33: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        partial("layouts/alert",
                                ^
app/models/enterprise.rb:117:24: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
  validates :instagram,
                       ^
spec/controllers/spree/credit_cards_controller_spec.rb:250:64: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                  create(:stored_credit_card, user_id: user.id,
                                                               ^
spec/controllers/user_confirmations_controller_spec.rb:45:44: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        session[:confirmation_return_url] =
                                           ^
spec/factories/order_factory.rb:40:67: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
            order.payments << build(:payment, amount: order.total,
                                                                  ^
spec/lib/reports/packing/packing_report_spec.rb:59:40: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        build(:line_item_with_shipment,
                                       ^
spec/lib/reports/packing/packing_report_spec.rb:63:40: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        build(:line_item_with_shipment,
                                       ^
spec/models/enterprise_spec.rb:521:67: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        expect(Enterprise.supplying_variant_in([p1.variants.first,
                                                                  ^
spec/models/enterprise_spec.rb:906:77: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      create(:enterprise_relationship, parent: distributor, child: supplier,
                                                                            ^
spec/services/products_renderer_spec.rb:22:73: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      create(:product, name: "banana bread", primary_taxon_id: cakes.id,
                                                                        ^
spec/services/products_renderer_spec.rb:88:88: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          product_apples.product_properties.create!({ property_id: property_organic.id,
                                                                                       ^
spec/services/products_renderer_spec.rb:90:87: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          products_renderer = ProductsRenderer.new(distributor, order_cycle, customer,
                                                                                      ^
spec/services/products_renderer_spec.rb:97:90: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          fruits_supplier.producer_properties.create!({ property_id: property_organic.id,
                                                                                         ^
spec/services/products_renderer_spec.rb:99:87: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          products_renderer = ProductsRenderer.new(distributor, order_cycle, customer,
                                                                                      ^
spec/services/products_renderer_spec.rb:109:93: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          product_apples.product_properties.create!({ property_id: property_conventional.id,
                                                                                            ^
spec/services/products_renderer_spec.rb:111:94: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          product_banana_bread.product_properties.create!({ property_id: property_organic.id,
                                                                                             ^
spec/services/products_renderer_spec.rb:113:90: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          product_cherries.product_properties.create!({ property_id: property_organic.id,
                                                                                         ^
spec/services/products_renderer_spec.rb:115:91: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          product_doughnuts.product_properties.create!({ property_id: property_organic.id,
                                                                                          ^
spec/services/products_renderer_spec.rb:117:87: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          products_renderer = ProductsRenderer.new(distributor, order_cycle, customer,
                                                                                      ^
spec/support/request/stripe_stubs.rb:17:81: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
  def stub_payment_intent_get_request(response: {}, stripe_account_header: true,
                                                                                ^
spec/support/request/stripe_stubs.rb:172:6: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
    {
     ^
spec/support/request/stripe_stubs.rb:175:24: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        object: "list",
                       ^
spec/support/request/stripe_stubs.rb:176:25: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        has_more: false,
                        ^
spec/system/admin/bulk_order_management_spec.rb:792:99: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      it "displays only line items whose orders meet the date restriction criteria, when changed",
                                                                                                  ^
spec/system/admin/bulk_order_management_spec.rb:1071:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/bulk_order_management_spec.rb:1121:82: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      shared_examples "display only group by information for selected variant" do
                                                                                 ^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:1143:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/bulk_order_management_spec.rb:1166:12: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        end
           ^
spec/system/admin/customers_spec.rb:18:98: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        create(:customer, first_name: 'John', last_name: 'Doe', enterprise: managed_distributor1,
                                                                                                 ^
spec/system/admin/enterprise_fees_spec.rb:102:37: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      select 'Inherit From Product',
                                    ^
spec/system/admin/enterprise_fees_spec.rb:128:38: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      select 'Weight (per kg or lb)',
                                     ^
spec/system/admin/enterprise_fees_spec.rb:132:37: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      select 'Flat Rate (per item)',
                                    ^
spec/system/admin/enterprise_fees_spec.rb:153:1: C: [Corrected] Layout/EmptyLinesAroundBlockBody: Extra empty line detected at block body beginning.
spec/system/admin/enterprise_fees_spec.rb:153:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/enterprise_fees_spec.rb:157:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/enterprise_fees_spec.rb:159:38: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      select 'Flat Rate (per order)',
                                     ^
spec/system/admin/enterprise_fees_spec.rb:222:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/flatpickr_spec.rb:22:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/flatpickr_spec.rb:27:32: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      find("#admin-menu").click
                               ^^^^^^^
spec/system/admin/flatpickr_spec.rb:32:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/flatpickr_spec.rb:34:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/flatpickr_spec.rb:41:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/order_cycles/complex_editing_spec.rb:74:33: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
    expect(page).to have_select(
                                ^
spec/system/admin/order_cycles/complex_editing_spec.rb:110:33: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
    expect(page).to have_select(
                                ^
spec/system/admin/order_cycles/list_spec.rb:147:46: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          expect(find('input.datetimepicker',
                                             ^
spec/system/admin/order_cycles/list_spec.rb:160:46: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          expect(find('input.datetimepicker',
                                             ^
spec/system/admin/order_cycles/list_spec.rb:188:46: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          expect(find('input.datetimepicker',
                                             ^
spec/system/admin/order_cycles/simple_spec.rb:447:43: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        expect(page).not_to have_selector(
                                          ^
spec/system/admin/order_spec.rb:92:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/order_spec.rb:207:30: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          within(".modal") do
                             ^
spec/system/admin/order_spec.rb:235:21: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      login_as_admin
                    ^^
spec/system/admin/order_spec.rb:240:16: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      before do
               ^
spec/system/admin/order_spec.rb:247:62: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
    context "when using the cancel option in the dropdown" do
                                                             ^^
spec/system/admin/order_spec.rb:248:16: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      before do
               ^
spec/system/admin/order_spec.rb:299:53: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        expect(page).to have_content "Are you sure?"
                                                    ^^^^^^^^
spec/system/admin/order_spec.rb:327:36: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        find("a.delete-item").click
                                   ^
spec/system/admin/order_spec.rb:401:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/order_spec.rb:405:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/order_spec.rb:598:59: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          expect(page).to have_link "Resend Confirmation",
                                                          ^
spec/system/admin/order_spec.rb:617:52: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          expect(page).to have_link "Cancel Order",
                                                   ^
spec/system/admin/order_spec.rb:633:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/order_spec.rb:635:1: C: [Corrected] Layout/EmptyLinesAroundBlockBody: Extra empty line detected at block body beginning.
spec/system/admin/order_spec.rb:635:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/order_spec.rb:674:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/order_spec.rb:735:35: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          within "#order-total" do
                                  ^
spec/system/admin/order_spec.rb:762:39: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
              within "#order-total" do
                                      ^
spec/system/admin/order_spec.rb:778:41: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                within "#order-total" do
                                        ^
spec/system/admin/order_spec.rb:780:20: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                end
                   ^^
spec/system/admin/order_spec.rb:796:39: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
              within "#order-total" do
                                      ^
spec/system/admin/order_spec.rb:807:88: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                # Since the order is completed, the price is not supposed to be updated
                                                                                       ^
spec/system/admin/order_spec.rb:813:41: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                within "#order-total" do
                                        ^
spec/system/admin/order_spec.rb:815:20: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                end
                   ^^
spec/system/admin/order_spec.rb:924:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/order_spec.rb:959:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/order_spec.rb:981:16: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      before do
               ^^
spec/system/admin/order_spec.rb:992:8: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
    end
       ^^
spec/system/admin/order_spec.rb:1002:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/shipping_methods_spec.rb:50:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/admin/shipping_methods_spec.rb:92:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.

1479 files inspected, 81 offenses detected, 81 offenses corrected
2023-07-27 09:58:33 +10:00
Neal Chambers
e0206a0be6 Safely autocorrect Layout/TrailingEmptyLines
Inspecting 1479 files
..C....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

Rakefile:10:1: C: [Corrected] Layout/TrailingEmptyLines: 1 trailing blank lines detected.

1479 files inspected, 1 offense detected, 1 offense corrected
2023-07-27 09:58:33 +10:00
Neal Chambers
2dbaa7f89d Safely autocorrect Layout/MultilineMethodCallIndentation
Inspecting 1479 files
............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.......CC......................C..................................................

Offenses:

spec/controllers/api/v0/orders_controller_spec.rb:150:13: C: [Corrected] Layout/MultilineMethodCallIndentation: Use 2 (not 0) spaces for indenting an expression spanning multiple lines.
            .map{ |o| o["id"] }
            ^^^^
spec/system/admin/order_cycles/complex_editing_spec.rb:30:9: C: [Corrected] Layout/MultilineMethodCallIndentation: Use 2 (not 4) spaces for indenting an expression spanning multiple lines.
        .to eq(oc.orders_open_at.strftime("%Y-%m-%d %H:%M"))
        ^^^
spec/system/admin/order_cycles/complex_editing_spec.rb:32:9: C: [Corrected] Layout/MultilineMethodCallIndentation: Use 2 (not 4) spaces for indenting an expression spanning multiple lines.
        .to eq(oc.orders_close_at.strftime("%Y-%m-%d %H:%M"))
        ^^^
spec/system/admin/overview_spec.rb:16:62: C: [Corrected] Layout/MultilineMethodCallIndentation: Use 2 (not 55) spaces for indenting an expression spanning multiple lines.
                                                             .and_return @enterprise_user
                                                             ^^^^^^^^^^^
spec/system/admin/payment_method_spec.rb:62:22: C: [Corrected] Layout/MultilineMethodCallIndentation: Use 2 (not 13) spaces for indenting an expression spanning multiple lines.
                     .to_return(body: JSON.generate(stripe_account_mock))
                     ^^^^^^^^^^
spec/system/admin/variant_overrides_spec.rb:214:64: C: [Corrected] Layout/MultilineMethodCallIndentation: Use 2 (not 51) spaces for indenting an expression spanning multiple lines.
                                                               .and_return(build(:user))
                                                               ^^^^^^^^^^^

1479 files inspected, 6 offenses detected, 6 offenses corrected
2023-07-27 09:58:33 +10:00
Neal Chambers
164385ad13 Safely autocorrect Layout/MultilineMethodCallBraceLayout
Inspecting 1479 files
...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.....C.....................................................................

Offenses:

spec/system/admin/orders_spec.rb:485:80: C: [Corrected] Layout/MultilineMethodCallBraceLayout: Closing method call brace must be on the line after the last argument when opening brace is on a separate line from the first argument.
                 "#listing_orders tbody tr td:first-child input[type=checkbox]")
                                                                               ^
spec/system/admin/orders_spec.rb:486:1: C: [Corrected] Layout/ClosingParenthesisIndentation: Indent ) to column 15 (not 0)
)).to be_checked
^
spec/system/admin/orders_spec.rb:486:15: C: [Corrected] Layout/MultilineMethodCallBraceLayout: Closing method call brace must be on the same line as the last argument when opening brace is on the same line as the first argument.
              ).to be_checked
              ^
spec/system/admin/orders_spec.rb:493:80: C: [Corrected] Layout/MultilineMethodCallBraceLayout: Closing method call brace must be on the line after the last argument when opening brace is on a separate line from the first argument.
                 "#listing_orders tbody tr td:first-child input[type=checkbox]")
                                                                               ^
spec/system/admin/orders_spec.rb:494:1: C: [Corrected] Layout/ClosingParenthesisIndentation: Indent ) to column 15 (not 0)
)).to_not be_checked
^
spec/system/admin/orders_spec.rb:494:15: C: [Corrected] Layout/MultilineMethodCallBraceLayout: Closing method call brace must be on the same line as the last argument when opening brace is on the same line as the first argument.
              ).to_not be_checked
              ^
spec/system/admin/products_spec.rb:346:54: C: [Corrected] Layout/MultilineMethodCallBraceLayout: Closing method call brace must be on the line after the last argument when opening brace is on a separate line from the first argument.
                                   product.id, filter)))
                                                     ^
spec/system/admin/products_spec.rb:347:1: C: [Corrected] Layout/ClosingParenthesisIndentation: Indent ) to column 33 (not 0)
)))
^
spec/system/admin/products_spec.rb:352:54: C: [Corrected] Layout/MultilineMethodCallBraceLayout: Closing method call brace must be on the line after the last argument when opening brace is on a separate line from the first argument.
                                   product.id, filter)))
                                                     ^
spec/system/admin/products_spec.rb:354:1: C: [Corrected] Layout/ClosingParenthesisIndentation: Indent ) to column 33 (not 0)
)))
^

1479 files inspected, 10 offenses detected, 10 offenses corrected
2023-07-27 09:58:33 +10:00
Neal Chambers
a97e208881 Safely autocorrect Layout/MultilineBlockLayout
Inspecting 1479 files
....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

engines/order_management/app/services/order_management/subscriptions/validator.rb:101:9: C: [Corrected] Layout/IndentationWidth: Use 2 (not 12) spaces for indentation.
                    sli.quantity > 0 && !sli.marked_for_destruction?
        ^^^^^^^^^^^^
engines/order_management/app/services/order_management/subscriptions/validator.rb:101:11: C: [Corrected] Layout/MultilineBlockLayout: Block argument expression is not on the same line as the block start.
          |sli| sli.quantity > 0 && !sli.marked_for_destruction?
          ^^^^^

1479 files inspected, 2 offenses detected, 2 offenses corrected
2023-07-27 09:58:05 +10:00
Maikel Linke
f7d5217ef6 Compile JS before testing caching
That avoids flakiness.
2023-07-27 09:40:08 +10:00
Neal Chambers
ffda639629 Regenerate Rubocop's TODO file 2023-07-27 08:35:27 +09:00
Maikel
f9589b8b23 Merge pull request #11280 from filipefurtad0/fix_flaky_caching_spec
Comments out flaky caching example
2023-07-27 08:50:06 +10:00
Maikel
5e94c038dc Merge pull request #11227 from filipefurtad0/update_several_enterprise_fees
Updates spec to cover #11150 (regression spec)
2023-07-27 08:45:27 +10:00
Maikel
16d28ab797 Merge pull request #11277 from mkllnk/greek
Add greek locale
2023-07-27 08:38:51 +10:00
filipefurtad0
5ed9583048 Rubocop fixes - not seen locally
Not sure why these were triggered remotly, but not locally - even after making sure I'm up-to-date with master?
2023-07-26 18:35:12 +01:00
filipefurtad0
f7301b72aa Adds test case for updating multiple fees
Adds values, updates and asserts these are saved correctly
2023-07-26 18:35:09 +01:00
filipefurtad0
83f1266b8a Comments out flaky example
Sets example to xit

pending is not suitable for flaky specs, as we'll get a red build anyway, each time the spec passes; commenting out should be the right approach till we fix this one
2023-07-26 12:05:06 +01:00
jibees
f5564a5947 Merge pull request #11279 from openfoodfoundation/dependabot/bundler/rubocop-1.55.0
chore(deps-dev): bump rubocop from 1.54.2 to 1.55.0
2023-07-26 12:56:01 +02:00
filipefurtad0
d4d8941117 Reverts #11019
As discussed here (https://github.com/openfoodfoundation/openfoodnetwork/issues/11010#issuecomment-1594153860), reset_spree_preferences already does Rails.cache.clear
2023-07-26 11:49:41 +01:00
dependabot[bot]
45edda9bf6 chore(deps-dev): bump rubocop from 1.54.2 to 1.55.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.54.2 to 1.55.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.54.2...v1.55.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-26 08:43:15 +00:00
jibees
ad7ec1e6d0 Merge pull request #11271 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.132.0
chore(deps): bump aws-sdk-s3 from 1.131.0 to 1.132.0
2023-07-26 10:41:38 +02:00
jibees
b9871933e3 Merge pull request #11272 from openfoodfoundation/dependabot/bundler/view_component-3.5.0
chore(deps): bump view_component from 3.4.0 to 3.5.0
2023-07-26 10:40:55 +02:00
Maikel Linke
627e689757 Fix swagger-api integration after last update
See also:

* https://github.com/rswag/rswag/pull/668
2023-07-26 15:52:48 +10:00
Maikel Linke
cea44c1a78 Add greek locale 2023-07-26 14:45:35 +10:00
jibees
a832562d1f Merge pull request #11198 from dacook/admin_v3-table-tweaks
🚧 Products v3: table and menu tweaks
2023-07-25 16:00:24 +02:00
David Cook
8ef73906db Show products_v3 in the submenu
It's not translated, but that doesn't matter, it's just a shortcut while we're developing it.
2023-07-25 15:31:57 +02:00
David Cook
439c0a8e18 Remove unnecessary match_path options
Spree::Tab already knows when to highlight these, based on the controller name. It even handles sub-paths like '/admin/products/garlic/edit'.
2023-07-25 15:31:57 +02:00
David Cook
ea93800ee6 [table] Tax category: display None instead of blank 2023-07-25 15:31:57 +02:00
David Cook
51189a3138 [table] Hide properties for variant row
These were a duplicate of the product.
2023-07-25 15:31:57 +02: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
352cf2ff71 Import typography.scss for admin_v3
And do not apply `a` style to `.button` element.

ie.
```
a:not(.button)
```
2023-07-25 14:29:00 +02:00
dependabot[bot]
e816629038 chore(deps): bump view_component from 3.4.0 to 3.5.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/viewcomponent/view_component/releases)
- [Changelog](https://github.com/ViewComponent/view_component/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/viewcomponent/view_component/compare/v3.4.0...v3.5.0)

---
updated-dependencies:
- dependency-name: view_component
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-25 10:10:33 +00:00
dependabot[bot]
789fde3c89 chore(deps): bump aws-sdk-s3 from 1.131.0 to 1.132.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.131.0 to 1.132.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-25 10:03:30 +00:00
filipefurtad0
04f83fbcce Finally, update system test for an end-to-end testing 2023-07-25 10:57:27 +02:00
Jean-Baptiste Bellet
d22566aa50 Set visible to only_through_links on enterprise creation 2023-07-25 10:57:27 +02:00
Jean-Baptiste Bellet
5a0d4d2a93 Set visible to only_through_links on enterprise registration 2023-07-25 10:57:26 +02:00
Jean-Baptiste Bellet
7aed068bb7 Enterprises.visible attribute is set to only_through_links by default
+ update enterprise_factory.rb to create "public" enterprise through specs via its factory
2023-07-25 10:57:26 +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
jibees
6f83d5b316 Merge pull request #11264 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.3.3
chore(deps-dev): bump knapsack_pro from 5.3.2 to 5.3.3
2023-07-24 15:19:57 +02:00
jibees
af086253de Merge pull request #11265 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.1.0
chore(deps-dev): bump jasmine-core from 5.0.1 to 5.1.0
2023-07-24 15:11:45 +02:00
Filipe
8ff877b865 Merge pull request #11258 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.131.0
chore(deps): bump aws-sdk-s3 from 1.126.0 to 1.131.0
2023-07-24 13:30:42 +01:00
Filipe
1e2fb077cd Merge pull request #11261 from macanudo527/fix_rubocop_layout_1
Fix Rubocop Layout violations - 2
2023-07-24 13:05:46 +01:00
dependabot[bot]
f5c326f1b0 chore(deps-dev): bump jasmine-core from 5.0.1 to 5.1.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.0.1 to 5.1.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.0.1...v5.1.0)

---
updated-dependencies:
- dependency-name: jasmine-core
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 09:36:51 +00:00
dependabot[bot]
bf010d273a chore(deps-dev): bump knapsack_pro from 5.3.2 to 5.3.3
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.3.2 to 5.3.3.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.3.2...v5.3.3)

---
updated-dependencies:
- dependency-name: knapsack_pro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 09:17:36 +00:00
Maikel Linke
f36ca77f5f Ease reading with related spec values on one line 2023-07-24 13:31:09 +10:00
Maikel Linke
a677444a97 Fix specs with missign parenthesis 2023-07-24 13:23:54 +10:00
Neal Chambers
bede52bdae Safely autocorrect Layout/LineLength
Inspecting 1478 files
.......C............................C..............................................................................................................C.......................................................................................................C............................................................................C................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.................C......................................C...................................................................................................................C...........................................................C........................C...C.....C..C..C..........C..................C...............C.....................C...................................................................................C......................................................C........C..C...........C....................C.CC....C....................................C......C..........................

Offenses:

app/components/confirm_modal_component.rb:4:88: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
  def initialize(id:, confirm_actions: nil, reflex: nil, controller: nil, message: nil,
                                                                                       ^
app/components/confirm_modal_component.rb:4:101: C: [Corrected] Layout/LineLength: Line is too long. [110/100]
  def initialize(id:, confirm_actions: nil, reflex: nil, controller: nil, message: nil, confirm_reflexes: nil)
                                                                                                    ^^^^^^^^^^
app/components/confirm_modal_component.rb:5:1: C: [Corrected] Layout/ParameterAlignment: Align the parameters of a method definition if they span more than one line.
confirm_reflexes: nil)
^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/product_import_controller.rb:142:43: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      redirect_to '/admin/product_import',
                                          ^
app/controllers/admin/product_import_controller.rb:142:101: C: [Corrected] Layout/LineLength: Line is too long. [104/100]
      redirect_to '/admin/product_import', notice: I18n.t(:product_import_no_data_in_spreadsheet_notice)
                                                                                                    ^^^^
app/controllers/admin/product_import_controller.rb:143:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
notice: I18n.t(:product_import_no_data_in_spreadsheet_notice)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/spree/users_controller.rb:53:101: C: Layout/LineLength: Line is too long. [107/100]
                            message: t('devise.user_registrations.spree_user.signed_up_but_unconfirmed') })
                                                                                                    ^^^^^^^
app/models/customer.rb:43:101: C: [Corrected] Layout/LineLength: Line is too long. [113/100]
  scope :managed_by, ->(user) { user&.persisted? ? where(user: user).or(of(Enterprise.managed_by(user))) : none }
                                                                                                    ^^^^^^^^^^^^^
app/models/customer.rb:44:1: C: [Corrected] Layout/IndentationWidth: Use 2 (not 1) spaces for indentation.
 user&.persisted? ? where(user: user).or(of(Enterprise.managed_by(user))) : none
^
app/models/customer.rb:44:3: C: [Corrected] Layout/IndentationWidth: Use 2 (not -19) spaces for indentation.
  user&.persisted? ? where(user: user).or(of(Enterprise.managed_by(user))) : none
  ^^^^^^^^^^^^^^^^^^^
app/models/customer.rb:44:82: C: [Corrected] Layout/BlockEndNewline: Expression at 44, 82 should be on its own line.
 user&.persisted? ? where(user: user).or(of(Enterprise.managed_by(user))) : none }
                                                                                 ^
app/models/customer.rb:44:101: C: Layout/LineLength: Line is too long. [102/100]
                       user&.persisted? ? where(user: user).or(of(Enterprise.managed_by(user))) : none
                                                                                                    ^^
app/models/customer.rb:45:1: C: [Corrected] Layout/BlockAlignment: } at 45, 0 is not aligned with ->(user) { at 43, 21 or scope :managed_by, ->(user) { at 43, 2.
}
^
app/models/spree/line_item.rb:53:101: C: Layout/LineLength: Line is too long. [110/100]
    attr_accessor :skip_stock_check, :target_shipment # Allows manual skipping of Stock::AvailabilityValidator
                                                                                                    ^^^^^^^^^^
spec/controllers/admin/order_cycles_controller_spec.rb:38:101: C: Layout/LineLength: Line is too long. [108/100]
            it "loads order cycles that closed within the past month, and orders without a close_at date" do
                                                                                                    ^^^^^^^^
spec/controllers/admin/order_cycles_controller_spec.rb:48:101: C: Layout/LineLength: Line is too long. [111/100]
            it "loads order cycles that closed after the specified date, and orders without a close_at date" do
                                                                                                    ^^^^^^^^^^^
spec/controllers/admin/order_cycles_controller_spec.rb:100:101: C: Layout/LineLength: Line is too long. [125/100]
              expect(flash[:error]).to eq "You don't have permission to create an order cycle coordinated by that enterprise"
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^
spec/controllers/admin/order_cycles_controller_spec.rb:125:101: C: Layout/LineLength: Line is too long. [101/100]
            order_cycle.exchanges.create! sender: distributor, receiver: distributor, incoming: true,
                                                                                                    ^
spec/controllers/admin/order_cycles_controller_spec.rb:127:101: C: Layout/LineLength: Line is too long. [102/100]
            order_cycle.exchanges.create! sender: distributor, receiver: distributor, incoming: false,
                                                                                                    ^^
spec/controllers/admin/order_cycles_controller_spec.rb:284:101: C: Layout/LineLength: Line is too long. [101/100]
            merge(order_cycle: { preferred_product_selection_from_coordinator_inventory_only: true })
                                                                                                    ^
spec/controllers/admin/order_cycles_controller_spec.rb:311:101: C: Layout/LineLength: Line is too long. [104/100]
        create(:exchange, order_cycle: order_cycle, sender: coordinator, receiver: hub, incoming: false,
                                                                                                    ^^^^
spec/controllers/admin/order_cycles_controller_spec.rb:374:101: C: Layout/LineLength: Line is too long. [102/100]
          expect(json_response['errors']).to eq 'Hm, something went wrong. No order cycle data found.'
                                                                                                    ^^
spec/controllers/admin/order_cycles_controller_spec.rb:460:101: C: Layout/LineLength: Line is too long. [176/100]
          expect(flash[:error]).to eq 'That order cycle has been selected by a customer and cannot be deleted. To prevent customers from accessing it, please close it instead.'
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/controllers/admin/order_cycles_controller_spec.rb:470:101: C: Layout/LineLength: Line is too long. [147/100]
          expect(flash[:error]).to eq 'That order cycle is linked to a schedule and cannot be deleted. Please unlink or delete the schedule first.'
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/controllers/api/v0/order_cycles_controller_spec.rb:16:101: C: [Corrected] Layout/LineLength: Line is too long. [106/100]
    let!(:product1) { create(:product, name: "Kangaroo", primary_taxon: taxon1, properties: [property1]) }
                                                                                                    ^^^^^^
spec/controllers/api/v0/order_cycles_controller_spec.rb:17:1: C: [Corrected] Layout/IndentationWidth: Use 2 (not 1) spaces for indentation.
 create(:product, name: "Kangaroo", primary_taxon: taxon1, properties: [property1])
^
spec/controllers/api/v0/order_cycles_controller_spec.rb:17:3: C: [Corrected] Layout/IndentationWidth: Use 2 (not -2) spaces for indentation.
  create(:product, name: "Kangaroo", primary_taxon: taxon1, properties: [property1])
  ^^
spec/controllers/api/v0/order_cycles_controller_spec.rb:17:85: C: [Corrected] Layout/BlockEndNewline: Expression at 17, 85 should be on its own line.
 create(:product, name: "Kangaroo", primary_taxon: taxon1, properties: [property1]) }
                                                                                    ^
spec/controllers/api/v0/order_cycles_controller_spec.rb:17:101: C: [Corrected] Layout/LineLength: Line is too long. [106/100]
    let!(:product2) { create(:product, name: "Parsnips", primary_taxon: taxon2, properties: [property2]) }
                                                                                                    ^^^^^^
spec/controllers/api/v0/order_cycles_controller_spec.rb:18:1: C: [Corrected] Layout/BlockAlignment: } at 18, 0 is not aligned with let!(:product1) { at 16, 4.
}
^
spec/controllers/api/v0/order_cycles_controller_spec.rb:19:85: C: [Corrected] Layout/BlockEndNewline: Expression at 19, 85 should be on its own line.
 create(:product, name: "Parsnips", primary_taxon: taxon2, properties: [property2]) }
                                                                                    ^
spec/controllers/api/v0/order_cycles_controller_spec.rb:20:1: C: [Corrected] Layout/IndentationWidth: Use 2 (not 1) spaces for indentation.
 create(:product, name: "Parsnips", primary_taxon: taxon2, properties: [property2])
^
spec/controllers/api/v0/order_cycles_controller_spec.rb:20:3: C: [Corrected] Layout/IndentationWidth: Use 2 (not -2) spaces for indentation.
  create(:product, name: "Parsnips", primary_taxon: taxon2, properties: [property2])
  ^^
spec/controllers/api/v0/order_cycles_controller_spec.rb:21:1: C: [Corrected] Layout/BlockAlignment: } at 21, 0 is not aligned with let!(:product2) { at 19, 4.
}
^
spec/controllers/spree/admin/orders_controller_spec.rb:232:101: C: [Corrected] Layout/LineLength: Line is too long. [117/100]
        let!(:order_cycle){ create(:simple_order_cycle, distributors: [distributor], variants: [line_item.variant]) }
                                                                                                    ^^^^^^^^^^^^^^^^^
spec/controllers/spree/admin/orders_controller_spec.rb:233:1: C: [Corrected] Layout/IndentationWidth: Use 2 (not 1) spaces for indentation.
 create(:simple_order_cycle, distributors: [distributor], variants: [line_item.variant])
^
spec/controllers/spree/admin/orders_controller_spec.rb:233:3: C: [Corrected] Layout/IndentationWidth: Use 2 (not -6) spaces for indentation.
  create(:simple_order_cycle, distributors: [distributor], variants: [line_item.variant])
  ^^^^^^
spec/controllers/spree/admin/orders_controller_spec.rb:233:90: C: [Corrected] Layout/BlockEndNewline: Expression at 233, 90 should be on its own line.
 create(:simple_order_cycle, distributors: [distributor], variants: [line_item.variant]) }
                                                                                         ^
spec/controllers/spree/admin/orders_controller_spec.rb:234:1: C: [Corrected] Layout/BlockAlignment: } at 234, 0 is not aligned with let!(:order_cycle){ at 232, 8.
}
^
spec/controllers/spree/admin/orders_controller_spec.rb:252:101: C: Layout/LineLength: Line is too long. [109/100]
            allow_any_instance_of(Spree::Order).to receive(:ensure_available_shipping_rates).and_return(true)
                                                                                                    ^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:93:88: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                create(:order_with_totals_and_distribution, :completed, distributor: d,
                                                                                       ^
spec/lib/reports/customers_report_spec.rb:93:101: C: [Corrected] Layout/LineLength: Line is too long. [125/100]
                create(:order_with_totals_and_distribution, :completed, distributor: d, bill_address: a, shipping_method: sm)
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:94:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
bill_address: a, shipping_method: sm)
^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:94:101: C: Layout/LineLength: Line is too long. [109/100]
                                                                        bill_address: a, shipping_method: sm)
                                                                                                    ^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:96:101: C: [Corrected] Layout/LineLength: Line is too long. [125/100]
                create(:order_with_totals_and_distribution, :completed, distributor: d, bill_address: a, shipping_method: sm)
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:97:88: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                create(:order_with_totals_and_distribution, :completed, distributor: d,
                                                                                       ^
spec/lib/reports/customers_report_spec.rb:98:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
bill_address: a, shipping_method: sm)
^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:98:101: C: Layout/LineLength: Line is too long. [109/100]
                                                                        bill_address: a, shipping_method: sm)
                                                                                                    ^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:113:101: C: Layout/LineLength: Line is too long. [118/100]
                                                   [d.address.address1, d.address.address2, d.address.city].join(" "),
                                                                                                    ^^^^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:120:101: C: [Corrected] Layout/LineLength: Line is too long. [129/100]
                  create(:order_with_totals_and_distribution, :completed, distributor: d2, bill_address: a, shipping_method: sm2)
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:122:91: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                  create(:order_with_totals_and_distribution, :completed, distributor: d2,
                                                                                          ^
spec/lib/reports/customers_report_spec.rb:123:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
bill_address: a, shipping_method: sm2)
^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:123:101: C: Layout/LineLength: Line is too long. [112/100]
                                                                          bill_address: a, shipping_method: sm2)
                                                                                                    ^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:133:101: C: Layout/LineLength: Line is too long. [120/100]
                                                     [d.address.address1, d.address.address2, d.address.city].join(" "),
                                                                                                    ^^^^^^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:139:101: C: Layout/LineLength: Line is too long. [123/100]
                                                     [d2.address.address1, d2.address.address2, d2.address.city].join(" "),
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:145:101: C: [Corrected] Layout/LineLength: Line is too long. [128/100]
                  create(:order_with_totals_and_distribution, :completed, distributor: d, bill_address: a, shipping_method: sm2)
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:148:90: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                  create(:order_with_totals_and_distribution, :completed, distributor: d,
                                                                                         ^
spec/lib/reports/customers_report_spec.rb:149:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
bill_address: a, shipping_method: sm2)
^^^^^^^^^^^^^^^
spec/lib/reports/customers_report_spec.rb:149:101: C: Layout/LineLength: Line is too long. [112/100]
                                                                          bill_address: a, shipping_method: sm2)
                                                                                                    ^^^^^^^^^^^^
spec/migrations/migrate_customer_names_spec.rb:16:101: C: Layout/LineLength: Line is too long. [122/100]
                             value_type: "boolean", key: "/enterprise/show_customer_names_to_suppliers/#{enterprise1.id}")
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^
spec/migrations/migrate_customer_names_spec.rb:18:101: C: Layout/LineLength: Line is too long. [122/100]
                             value_type: "boolean", key: "/enterprise/show_customer_names_to_suppliers/#{enterprise2.id}")
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^
spec/migrations/migrate_customer_names_spec.rb:20:101: C: Layout/LineLength: Line is too long. [122/100]
                             value_type: "boolean", key: "/enterprise/show_customer_names_to_suppliers/#{enterprise4.id}")
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^
spec/models/enterprise_spec.rb:521:101: C: [Corrected] Layout/LineLength: Line is too long. [111/100]
        expect(Enterprise.supplying_variant_in([p1.variants.first, p2.variants.first])).to match_array [s1, s2]
                                                                                                    ^^^^^^^^^^^
spec/models/enterprise_spec.rb:522:1: C: [Corrected] Layout/ArrayAlignment: Align the elements of an array literal if they span more than one line.
p2.variants.first])).to match_array [s1, s2]
^^^^^^^^^^^^^^^^^
spec/models/order_cycle_spec.rb:207:101: C: Layout/LineLength: Line is too long. [118/100]
      expect(oc.variants).to match_array [p0.variants.first, p1.variants.first, p2.variants.first, p2_v, p1_v_visible,
                                                                                                    ^^^^^^^^^^^^^^^^^^
spec/models/order_cycle_spec.rb:220:101: C: Layout/LineLength: Line is too long. [111/100]
      expect(oc.distributed_variants).to match_array [p1.variants.first, p2.variants.first, p2_v, p1_v_visible,
                                                                                                    ^^^^^^^^^^^
spec/models/product_importer_spec.rb:782:101: C: Layout/LineLength: Line is too long. [101/100]
          csv << [" Oats ", "\nPorridge Oats\n", "\r#{enterprise2.name}\r", "\t#{enterprise.name}\t",
                                                                                                    ^
spec/models/spree/ability_spec.rb:340:69: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          [:admin, :index, :read, :edit, :update, :search, :destroy,
                                                                    ^
spec/models/spree/ability_spec.rb:340:101: C: [Corrected] Layout/LineLength: Line is too long. [101/100]
          [:admin, :index, :read, :edit, :update, :search, :destroy, :delete], for: p1.variants.first
                                                                                                    ^
spec/models/spree/ability_spec.rb:341:1: C: [Corrected] Layout/ArrayAlignment: Align the elements of an array literal if they span more than one line.
:delete], for: p1.variants.first
^^^^^^^
spec/models/spree/ability_spec.rb:350:101: C: [Corrected] Layout/LineLength: Line is too long. [108/100]
          [:admin, :index, :read, :edit, :update, :search, :destroy, :delete], for: p_related.variants.first
                                                                                                    ^^^^^^^^
spec/models/spree/ability_spec.rb:351:69: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          [:admin, :index, :read, :edit, :update, :search, :destroy,
                                                                    ^
spec/models/spree/ability_spec.rb:352:1: C: [Corrected] Layout/ArrayAlignment: Align the elements of an array literal if they span more than one line.
:delete], for: p_related.variants.first
^^^^^^^
spec/models/spree/ability_spec.rb:379:101: C: [Corrected] Layout/LineLength: Line is too long. [101/100]
          [:admin, :index, :read, :create, :edit, :search, :update, :destroy], for: p2.variants.first
                                                                                                    ^
spec/models/spree/ability_spec.rb:381:68: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          [:admin, :index, :read, :create, :edit, :search, :update,
                                                                   ^
spec/models/spree/ability_spec.rb:382:1: C: [Corrected] Layout/ArrayAlignment: Align the elements of an array literal if they span more than one line.
:destroy], for: p2.variants.first
^^^^^^^^
spec/models/spree/adjustment_spec.rb:339:101: C: Layout/LineLength: Line is too long. [106/100]
          create(:tax_rate, included_in_price: true, calculator: ::Calculator::DefaultTax.new, zone: zone,
                                                                                                    ^^^^^^
spec/models/spree/adjustment_spec.rb:367:101: C: Layout/LineLength: Line is too long. [101/100]
                                      calculator: ::Calculator::FlatRate.new(preferred_amount: 50.0))
                                                                                                    ^
spec/models/spree/adjustment_spec.rb:428:101: C: Layout/LineLength: Line is too long. [105/100]
        context "when enterprise fees inherit their tax_category from the product they are applied to" do
                                                                                                    ^^^^^
spec/models/spree/adjustment_spec.rb:443:101: C: Layout/LineLength: Line is too long. [101/100]
                                      calculator: ::Calculator::FlatRate.new(preferred_amount: 50.0))
                                                                                                    ^
spec/models/spree/line_item_spec.rb:208:101: C: Layout/LineLength: Line is too long. [107/100]
        expect(LineItem.from_order_cycle(oc_order.order_cycle).first.id).to eq oc_order.line_items.first.id
                                                                                                    ^^^^^^^
spec/models/spree/line_item_spec.rb:342:101: C: Layout/LineLength: Line is too long. [102/100]
                                                               Spree::Variant.find(variant.id).on_hand
                                                                                                    ^^
spec/models/spree/product_spec.rb:409:74: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          create(:simple_order_cycle, suppliers: [s], distributors: [d1],
                                                                         ^
spec/models/spree/product_spec.rb:409:101: C: [Corrected] Layout/LineLength: Line is too long. [104/100]
          create(:simple_order_cycle, suppliers: [s], distributors: [d1], variants: [p1.variants.first])
                                                                                                    ^^^^
spec/models/spree/product_spec.rb:410:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
variants: [p1.variants.first])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/spree/product_spec.rb:410:101: C: [Corrected] Layout/LineLength: Line is too long. [104/100]
          create(:simple_order_cycle, suppliers: [s], distributors: [d2], variants: [p2.variants.first])
                                                                                                    ^^^^
spec/models/spree/product_spec.rb:411:74: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          create(:simple_order_cycle, suppliers: [s], distributors: [d2],
                                                                         ^
spec/models/spree/product_spec.rb:412:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
variants: [p2.variants.first])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/spree/product_spec.rb:486:101: C: [Corrected] Layout/LineLength: Line is too long. [104/100]
          create(:simple_order_cycle, suppliers: [s], distributors: [d1], variants: [p1.variants.first])
                                                                                                    ^^^^
spec/models/spree/product_spec.rb:487:101: C: [Corrected] Layout/LineLength: Line is too long. [104/100]
          create(:simple_order_cycle, suppliers: [s], distributors: [d2], variants: [p2.variants.first])
                                                                                                    ^^^^
spec/models/spree/product_spec.rb:488:74: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          create(:simple_order_cycle, suppliers: [s], distributors: [d1],
                                                                         ^
spec/models/spree/product_spec.rb:489:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
variants: [p1.variants.first])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/spree/product_spec.rb:490:74: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          create(:simple_order_cycle, suppliers: [s], distributors: [d2],
                                                                         ^
spec/models/spree/product_spec.rb:491:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
variants: [p2.variants.first])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/spree/product_spec.rb:495:101: C: [Corrected] Layout/LineLength: Line is too long. [102/100]
          create(:simple_order_cycle, suppliers: [s], distributors: [d], variants: [p.variants.first])
                                                                                                    ^^
spec/models/spree/product_spec.rb:499:73: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
          create(:simple_order_cycle, suppliers: [s], distributors: [d],
                                                                        ^
spec/models/spree/product_spec.rb:500:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
variants: [p.variants.first])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/spree/variant_spec.rb:356:101: C: Layout/LineLength: Line is too long. [108/100]
            it "lists any variants that are not listed as visible=false only for the relevant enterprise" do
                                                                                                    ^^^^^^^^
spec/models/spree/variant_spec.rb:479:101: C: Layout/LineLength: Line is too long. [108/100]
      expect_any_instance_of(OpenFoodNetwork::EnterpriseFeeCalculator).to receive(:fees_for).with(variant) {
                                                                                                    ^^^^^^^^
spec/models/spree/variant_spec.rb:494:101: C: Layout/LineLength: Line is too long. [116/100]
      expect_any_instance_of(OpenFoodNetwork::EnterpriseFeeCalculator).to receive(:fees_by_type_for).with(variant) {
                                                                                                    ^^^^^^^^^^^^^^^^
spec/models/spree/variant_spec.rb:704:101: C: Layout/LineLength: Line is too long. [115/100]
        expect_any_instance_of(VariantUnits::OptionValueNamer).to receive(:name).exactly(1).times.and_call_original
                                                                                                    ^^^^^^^^^^^^^^^
spec/requests/api/orders_spec.rb:167:88: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
              create(:order_with_line_items, line_items_count: 1, bill_address_id: nil,
                                                                                       ^
spec/requests/api/orders_spec.rb:167:101: C: [Corrected] Layout/LineLength: Line is too long. [109/100]
              create(:order_with_line_items, line_items_count: 1, bill_address_id: nil, ship_address_id: nil)
                                                                                                    ^^^^^^^^^
spec/requests/api/orders_spec.rb:168:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
ship_address_id: nil)
^^^^^^^^^^^^^^^^^^^^
spec/services/products_renderer_spec.rb:91:101: C: Layout/LineLength: Line is too long. [101/100]
                                                   { q: { with_properties: [property_organic.id] } })
                                                                                                    ^
spec/services/products_renderer_spec.rb:100:101: C: Layout/LineLength: Line is too long. [101/100]
                                                   { q: { with_properties: [property_organic.id] } })
                                                                                                    ^
spec/services/products_renderer_spec.rb:118:101: C: Layout/LineLength: Line is too long. [101/100]
                                                   { q: { with_properties: [property_organic.id] } })
                                                                                                    ^
spec/support/request/web_helper.rb:96:84: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
    tomselect_wrapper.find(:css, '.ts-dropdown.multi .ts-dropdown-content .option',
                                                                                   ^
spec/support/request/web_helper.rb:96:101: C: [Corrected] Layout/LineLength: Line is too long. [102/100]
    tomselect_wrapper.find(:css, '.ts-dropdown.multi .ts-dropdown-content .option', text: value).click
                                                                                                    ^^
spec/support/request/web_helper.rb:97:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
text: value).click
^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:29:101: C: [Corrected] Layout/LineLength: Line is too long. [197/100]
  let!(:tax_rate2) { create(:tax_rate, name: "TVA 20%", amount: 0.2, zone: default_tax_zone, included_in_price: true, tax_category: tax_category_included, calculator: Calculator::DefaultTax.new ) }
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:30:1: C: [Corrected] Layout/IndentationWidth: Use 2 (not 1) spaces for indentation.
 create(:tax_rate, name: "TVA 20%", amount: 0.2, zone: default_tax_zone, included_in_price: true,
^
spec/system/admin/adjustments_spec.rb:30:3: C: [Corrected] Layout/IndentationWidth: Use 2 (not 0) spaces for indentation.
  create(:tax_rate, name: "TVA 20%", amount: 0.2, zone: default_tax_zone, included_in_price: true,

spec/system/admin/adjustments_spec.rb:30:98: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
 create(:tax_rate, name: "TVA 20%", amount: 0.2, zone: default_tax_zone, included_in_price: true,
                                                                                                 ^
spec/system/admin/adjustments_spec.rb:30:101: C: [Corrected] Layout/LineLength: Line is too long. [177/100]
 create(:tax_rate, name: "TVA 20%", amount: 0.2, zone: default_tax_zone, included_in_price: true, tax_category: tax_category_included, calculator: Calculator::DefaultTax.new ) }
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:30:177: C: [Corrected] Layout/BlockEndNewline: Expression at 30, 177 should be on its own line.
 create(:tax_rate, name: "TVA 20%", amount: 0.2, zone: default_tax_zone, included_in_price: true, tax_category: tax_category_included, calculator: Calculator::DefaultTax.new ) }
                                                                                                                                                                                ^
spec/system/admin/adjustments_spec.rb:31:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
tax_category: tax_category_included, calculator: Calculator::DefaultTax.new )
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:32:1: C: [Corrected] Layout/BlockAlignment: } at 32, 0 is not aligned with let!(:tax_rate2) { at 29, 2.
}
^
spec/system/admin/adjustments_spec.rb:41:101: C: Layout/LineLength: Line is too long. [134/100]
  shared_examples "when the enable_localized_number preference" do |adjustment_label, adjustment_amount, tax_category, tax, tax_total|
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:67:101: C: [Corrected] Layout/LineLength: Line is too long. [117/100]
        it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "TVA 20%", "$0.33", "$-1.67"
                                                                                                    ^^^^^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:68:100: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "TVA 20%",
                                                                                                   ^
spec/system/admin/adjustments_spec.rb:69:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
"$0.33", "$-1.67"
^^^^^^^
spec/system/admin/adjustments_spec.rb:71:101: C: [Corrected] Layout/LineLength: Line is too long. [120/100]
        it_behaves_like "when the enable_localized_number preference", "Late fee", "100", "TVA 20%", "$-16.67", "$83.33"
                                                                                                    ^^^^^^^^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:73:90: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        it_behaves_like "when the enable_localized_number preference", "Late fee", "100",
                                                                                         ^
spec/system/admin/adjustments_spec.rb:74:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
"TVA 20%", "$-16.67", "$83.33"
^^^^^^^^^
spec/system/admin/adjustments_spec.rb:77:101: C: [Corrected] Layout/LineLength: Line is too long. [113/100]
        it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "GST", "$10.00", "$8.00"
                                                                                                    ^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:80:96: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "GST",
                                                                                               ^
spec/system/admin/adjustments_spec.rb:81:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
"$10.00", "$8.00"
^^^^^^^^
spec/system/admin/adjustments_spec.rb:81:101: C: [Corrected] Layout/LineLength: Line is too long. [113/100]
        it_behaves_like "when the enable_localized_number preference", "Late fee", "110", "GST", "$10.00", "$120"
                                                                                                    ^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:85:97: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        it_behaves_like "when the enable_localized_number preference", "Late fee", "110", "GST",
                                                                                                ^
spec/system/admin/adjustments_spec.rb:86:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
"$10.00", "$120"
^^^^^^^^
spec/system/admin/adjustments_spec.rb:93:101: C: [Corrected] Layout/LineLength: Line is too long. [117/100]
        it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "TVA 20%", "$0.33", "$-1.67"
                                                                                                    ^^^^^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:97:101: C: [Corrected] Layout/LineLength: Line is too long. [120/100]
        it_behaves_like "when the enable_localized_number preference", "Late fee", "100", "TVA 20%", "$-16.67", "$83.33"
                                                                                                    ^^^^^^^^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:98:100: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "TVA 20%",
                                                                                                   ^
spec/system/admin/adjustments_spec.rb:99:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
"$0.33", "$-1.67"
^^^^^^^
spec/system/admin/adjustments_spec.rb:103:90: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        it_behaves_like "when the enable_localized_number preference", "Late fee", "100",
                                                                                         ^
spec/system/admin/adjustments_spec.rb:103:101: C: [Corrected] Layout/LineLength: Line is too long. [113/100]
        it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "GST", "$10.00", "$8.00"
                                                                                                    ^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:104:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
"TVA 20%", "$-16.67", "$83.33"
^^^^^^^^^
spec/system/admin/adjustments_spec.rb:107:101: C: [Corrected] Layout/LineLength: Line is too long. [113/100]
        it_behaves_like "when the enable_localized_number preference", "Late fee", "110", "GST", "$10.00", "$120"
                                                                                                    ^^^^^^^^^^^^^
spec/system/admin/adjustments_spec.rb:110:96: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        it_behaves_like "when the enable_localized_number preference", "Discount", "-2", "GST",
                                                                                               ^
spec/system/admin/adjustments_spec.rb:111:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
"$10.00", "$8.00"
^^^^^^^^
spec/system/admin/adjustments_spec.rb:115:97: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
        it_behaves_like "when the enable_localized_number preference", "Late fee", "110", "GST",
                                                                                                ^
spec/system/admin/adjustments_spec.rb:116:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
"$10.00", "$120"
^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:268:101: C: Layout/LineLength: Line is too long. [105/100]
                                      text: "#{o1.bill_address.last_name}, #{o1.bill_address.first_name}"
                                                                                                    ^^^^^
spec/system/admin/bulk_order_management_spec.rb:1036:101: C: Layout/LineLength: Line is too long. [147/100]
            expect(page).to have_content "This operation will result in one or more empty orders, which will be cancelled. Do you wish to proceed?"
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:1060:101: C: Layout/LineLength: Line is too long. [138/100]
          it "the user can confirm + wants to send email confirmation : line item is then deleted, order is canceled and email is sent" do
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:1072:101: C: Layout/LineLength: Line is too long. [134/100]
          it "the user can confirm + uncheck the restock option: line item is then deleted and order is canceled without retocking" do
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/customers_spec.rb:40:101: C: Layout/LineLength: Line is too long. [126/100]
                                                     managed_distributor2.name], without_options: [unmanaged_distributor.name]
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:346:101: C: Layout/LineLength: Line is too long. [101/100]
                                           with_options: [schedule_of_other_managed_distributor.name]
                                                                                                    ^
spec/system/admin/order_cycles/simple_spec.rb:623:101: C: Layout/LineLength: Line is too long. [121/100]
                                 value: Time.zone.local(2040, 10, 17, 0o6, 0o0, 0o0).strftime("%F %T %z"), visible: false
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:625:101: C: Layout/LineLength: Line is too long. [120/100]
                                 value: Time.zone.local(2040, 10, 24, 17, 0o0, 0o0).strftime("%F %T %z"), visible: false
                                                                                                    ^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:733:101: C: Layout/LineLength: Line is too long. [121/100]
                                 value: Time.zone.local(2040, 10, 17, 0o6, 0o0, 0o0).strftime("%F %T %z"), visible: false
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:735:101: C: Layout/LineLength: Line is too long. [120/100]
                                 value: Time.zone.local(2040, 10, 24, 17, 0o0, 0o0).strftime("%F %T %z"), visible: false
                                                                                                    ^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_spec.rb:598:101: C: [Corrected] Layout/LineLength: Line is too long. [101/100]
          expect(page).to have_link "Resend Confirmation", href: spree.resend_admin_order_path(order)
                                                                                                    ^
spec/system/admin/order_spec.rb:599:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
href: spree.resend_admin_order_path(order)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_spec.rb:616:101: C: [Corrected] Layout/LineLength: Line is too long. [105/100]
          expect(page).to have_link "Cancel Order", href: spree.fire_admin_order_path(order, e: 'cancel')
                                                                                                    ^^^^^
spec/system/admin/order_spec.rb:618:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
href: spree.fire_admin_order_path(order, e: 'cancel')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:259:101: C: Layout/LineLength: Line is too long. [109/100]
                                       distributor: distributor2, bill_address_id: nil, ship_address_id: nil)
                                                                                                    ^^^^^^^^^
spec/system/admin/product_import_spec.rb:573:101: C: Layout/LineLength: Line is too long. [106/100]
      expect(page).to have_content "line 4: Cabbage - On_hand incorrect value - On_demand incorrect value"
                                                                                                    ^^^^^^
spec/system/admin/product_import_spec.rb:574:101: C: Layout/LineLength: Line is too long. [108/100]
      expect(page).to have_content "line 5: Aubergine - On_hand incorrect value - On_demand incorrect value"
                                                                                                    ^^^^^^^^
spec/system/admin/product_import_spec.rb:583:101: C: Layout/LineLength: Line is too long. [102/100]
        csv << ["name", "producer", "category", "on_hand", "price", "on_demand", "units", "unit_type",
                                                                                                    ^^
spec/system/admin/product_import_spec.rb:585:101: C: Layout/LineLength: Line is too long. [106/100]
        csv << ["Beans", "User Enterprise", "Vegetables", "invalid", "3.50", "1", "0.5", "g", "Small Bag",
                                                                                                    ^^^^^^
spec/system/admin/product_import_spec.rb:587:101: C: Layout/LineLength: Line is too long. [103/100]
        csv << ["Potatoes", "User Enterprise", "Vegetables", "6", "6", "invalid", "5", "kg", "Big Bag",
                                                                                                    ^^^
spec/system/admin/product_import_spec.rb:589:101: C: Layout/LineLength: Line is too long. [106/100]
        csv << ["Cabbage", "User Enterprise", "Vegetables", "invalid", "1.5", "invalid", "1", "kg", "Bag",
                                                                                                    ^^^^^^
spec/system/admin/product_import_spec.rb:591:101: C: Layout/LineLength: Line is too long. [102/100]
        csv << ["Aubergine", "User Enterprise", "Vegetables", nil, "1.5", "invalid", "1", "kg", "Bag",
                                                                                                    ^^
spec/system/admin/product_import_spec.rb:607:101: C: Layout/LineLength: Line is too long. [114/100]
      expect(page).to have_content "line 4: Cabbage ( Bag ) - On_hand incorrect value - On_demand incorrect value"
                                                                                                    ^^^^^^^^^^^^^^
spec/system/admin/product_import_spec.rb:608:101: C: Layout/LineLength: Line is too long. [116/100]
      expect(page).to have_content "line 5: Aubergine ( Bag ) - On_hand incorrect value - On_demand incorrect value"
                                                                                                    ^^^^^^^^^^^^^^^^
spec/system/admin/product_import_spec.rb:617:101: C: Layout/LineLength: Line is too long. [102/100]
        csv << ["name", "producer", "category", "on_hand", "price", "on_demand", "units", "unit_type",
                                                                                                    ^^
spec/system/admin/product_import_spec.rb:619:101: C: Layout/LineLength: Line is too long. [101/100]
        csv << ["Beans", "User Enterprise", "Vegetables", "-1", "3.50", "1", "500", "g", "Small Bag",
                                                                                                    ^
spec/system/admin/product_import_spec.rb:641:101: C: Layout/LineLength: Line is too long. [114/100]
      expect(page).to have_content "line 4: Cabbage ( Bag ) - On_hand incorrect value - On_demand incorrect value"
                                                                                                    ^^^^^^^^^^^^^^
spec/system/admin/product_import_spec.rb:642:101: C: Layout/LineLength: Line is too long. [116/100]
      expect(page).to have_content "line 5: Aubergine ( Bag ) - On_hand incorrect value - On_demand incorrect value"
                                                                                                    ^^^^^^^^^^^^^^^^
spec/system/consumer/shopping/cart_spec.rb:147:101: C: Layout/LineLength: Line is too long. [101/100]
                                                                     preferred_unit_from_list: "kg"),
                                                                                                    ^
spec/system/consumer/shopping/products_spec.rb:98:101: C: Layout/LineLength: Line is too long. [113/100]
                                                        "<script>alert('Dangerous!');</script>", truncate: false)
                                                                                                    ^^^^^^^^^^^^^

1478 files inspected, 173 offenses detected, 106 offenses corrected
2023-07-24 09:14:13 +09:00
Neal Chambers
e546a6b583 Safely autocorrect Layout/LineContinuationSpacing
Inspecting 1478 files
...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.....................C............................................................................

Offenses:

spec/system/admin/enterprise_fees_spec.rb:52:46: C: [Corrected] Layout/LineContinuationSpacing: Use one space in front of backslash.
    fill_in "#{prefix}_calculator_attributes"\
                                             ^
spec/system/admin/enterprise_fees_spec.rb:57:58: C: [Corrected] Layout/LineContinuationSpacing: Use one space in front of backslash.
    expect(page).to have_selector("##{prefix}_calculator"\
                                                         ^
spec/system/admin/enterprise_fees_spec.rb:142:43: C: [Corrected] Layout/LineContinuationSpacing: Use one space in front of backslash.
        "#{prefix}_calculator_attributes_"\
                                          ^
spec/system/admin/order_spec.rb:646:84: C: [Corrected] Layout/LineContinuationSpacing: Use one space in front of backslash.
            accept_alert "An invoice for this order will be sent to the customer. "\
                                                                                   ^

1478 files inspected, 4 offenses detected, 4 offenses corrected
2023-07-24 09:14:13 +09:00
Neal Chambers
948b287fd6 Safely autocorrect Layout/LeadingCommentSpace
Inspecting 1478 files
............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.........................................................................................

Offenses:

spec/system/admin/enterprises_spec.rb:204:5: C: [Corrected] Layout/LeadingCommentSpace: Missing space after #.
    #using "find" as fields outside of the screen and are not visible
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1478 files inspected, 1 offense detected, 1 offense corrected
2023-07-24 09:14:13 +09:00
Neal Chambers
9155614501 Safely autocorrect Layout/IndentationConsistency
Inspecting 1478 files
.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.C.......C......................................................................

Offenses:

spec/system/admin/order_cycles/complex_updating_specific_time_spec.rb:84:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      "#order_cycle_incoming_exchange_1_variants_#{initial_variants.last.id}"
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:784:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        "order_cycle_selected_distributor_payment_method_ids_#{distributor_payment_method_id}"
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:791:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        "order_cycle_selected_distributor_shipping_method_ids_#{distributor_shipping_method_id}"
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/product_import_spec.rb:818:15: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
              I18n.t("admin.product_import.product_headings.#{heading}").upcase
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1478 files inspected, 4 offenses detected, 4 offenses corrected
2023-07-24 09:14:13 +09:00
Neal Chambers
dce02160d4 Safely autocorrect Layout/HashAlignment
Inspecting 1478 files
...................................................................................................................................................C.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C......................................................................................................................................................................................................................................................C......................CC....................C......................................................

Offenses:

app/controllers/spree/users_controller.rb:53:19: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
                  message: t('devise.user_registrations.spree_user.signed_up_but_unconfirmed') })
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/spree/users_controller.rb:53:101: C: Layout/LineLength: Line is too long. [107/100]
                            message: t('devise.user_registrations.spree_user.signed_up_but_unconfirmed') })
                                                                                                    ^^^^^^^
spec/models/enterprise_spec.rb:906:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
permissions: [permission])
^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/customers_spec.rb:19:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
code: nil, created_manually: true)
^^^^^^^^^
spec/system/admin/order_spec.rb:708:1: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
distributors: [distributor1])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:45:4: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
   distributors: [distributor4, distributor5])
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:249:9: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
        line_items_count: 0)
        ^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:254:9: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
        line_items_count: 1)
        ^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:259:9: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
        distributor: distributor2, bill_address_id: nil, ship_address_id: nil)
        ^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:259:101: C: Layout/LineLength: Line is too long. [109/100]
                                       distributor: distributor2, bill_address_id: nil, ship_address_id: nil)
                                                                                                    ^^^^^^^^^
spec/system/admin/tag_rules_spec.rb:145:37: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
                                    count: 4
                                    ^^^^^^^^

1478 files inspected, 11 offenses detected, 9 offenses corrected
2023-07-24 09:14:13 +09:00
Filipe
8bd25f9711 Merge pull request #11251 from jibees/11207-update-all-products-report-to-include-stock
Admin, Products & Inventory reports: add `on_hand` and `on_demand?` columns by default ; mark `Inventory (on hand)` report as deprecated
2023-07-21 17:07:00 +01:00
Filipe
0d0beda887 Merge pull request #11084 from abdellani/update_invoice_status_automatically
set invoice status automatically after creation
2023-07-21 16:21:05 +01:00
jibees
5142efc86e Merge pull request #11257 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.3.2
chore(deps-dev): bump knapsack_pro from 5.3.1 to 5.3.2
2023-07-21 14:36:46 +02:00
dependabot[bot]
df633f7855 chore(deps): bump aws-sdk-s3 from 1.126.0 to 1.131.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.126.0 to 1.131.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-21 09:17:05 +00:00
dependabot[bot]
44551766c5 chore(deps-dev): bump knapsack_pro from 5.3.1 to 5.3.2
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.3.1 to 5.3.2.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.3.1...v5.3.2)

---
updated-dependencies:
- dependency-name: knapsack_pro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-21 09:15:41 +00:00
jibees
6ddb3cd644 Merge pull request #11252 from filipefurtad0/invoices_missing_translations
Adds missing key
2023-07-21 10:42:35 +02:00
Jean-Baptiste Bellet
a094a89c09 Mark "Inventory (on hand)" report as deprecated
Co-Authored-By: Maikel <maikel@email.org.au>, @dacook
2023-07-21 09:27:07 +02:00
Jean-Baptiste Bellet
28fe479f53 Unhide on_demand & on_hand columns by default
+ update specs as well
2023-07-21 09:27:07 +02:00
David Cook
b464e51ba4 Merge pull request #11246 from mkllnk/engine-ruby-version
Add Ruby version to engines for Rubocop
2023-07-21 15:03:01 +10:00
Maikel Linke
54f39668ba Remove unused, outdated dependency declarations
The Gemfile of the main app is used.
2023-07-21 14:13:27 +10:00
Maikel Linke
a01aa8849c Add Ruby version to engines for Rubocop
> This ensures that RuboCop is using the same Ruby version as the gem.

https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Gemspec/RequiredRubyVersion
2023-07-21 14:13:26 +10:00
Maikel
022225581f Merge pull request #11249 from openfoodfoundation/dependabot/bundler/bugsnag-6.26.0
chore(deps): bump bugsnag from 6.25.2 to 6.26.0
2023-07-21 09:58:56 +10:00
Maikel
5c8939fb69 Merge pull request #11248 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.3.1
chore(deps-dev): bump knapsack_pro from 5.3.0 to 5.3.1
2023-07-21 09:58:07 +10:00
Maikel
9ba9519622 Merge pull request #11241 from dacook/rubocop-layout-1
Fix Rubocop Layout violations - 1
2023-07-21 09:57:12 +10:00
filipefurtad0
4b64b9085c Adds missing keys 2023-07-20 19:18:27 +01:00
Filipe
6199d2c957 Merge pull request #11218 from openfoodfoundation/dependabot/bundler/stripe-8.6.0
chore(deps): bump stripe from 8.5.0 to 8.6.0
2023-07-20 12:56:42 +01:00
dependabot[bot]
a0cc07dc35 chore(deps): bump bugsnag from 6.25.2 to 6.26.0
Bumps [bugsnag](https://github.com/bugsnag/bugsnag-ruby) from 6.25.2 to 6.26.0.
- [Release notes](https://github.com/bugsnag/bugsnag-ruby/releases)
- [Changelog](https://github.com/bugsnag/bugsnag-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bugsnag/bugsnag-ruby/commits)

---
updated-dependencies:
- dependency-name: bugsnag
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-20 09:41:23 +00:00
dependabot[bot]
afd854d32a chore(deps-dev): bump knapsack_pro from 5.3.0 to 5.3.1
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.3.0 to 5.3.1.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.3.0...v5.3.1)

---
updated-dependencies:
- dependency-name: knapsack_pro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-20 09:39:40 +00:00
David Cook
c112fad4b2 Update all locales with the latest Transifex translations 2023-07-20 14:11:16 +10:00
David Cook
19ee2b50c2 Safely autocorrect Layout/FirstHashElementIndentation
Inspecting 1478 files
...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C..................................................................................................................................................................................

Offenses:

spec/services/products_renderer_spec.rb:73:11: C: [Corrected] Layout/FirstHashElementIndentation: Use 2 spaces for indentation in a hash, relative to the first position after the preceding left parenthesis.
          "#{[:name, :meta_keywords, :variants_display_as, ...
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/services/products_renderer_spec.rb:76:9: C: [Corrected] Layout/FirstHashElementIndentation: Indent the right brace the same as the first position after the preceding left parenthesis.
        } })
        ^

1478 files inspected, 2 offenses detected, 2 offenses corrected
2023-07-20 14:05:16 +10:00
David Cook
aa124511de Safely autocorrect Layout/FirstArgumentIndentation
Inspecting 1478 files
..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C...........................................................................

Offenses:

spec/system/admin/orders_spec.rb:485:11: C: [Corrected] Layout/FirstArgumentIndentation: Indent the first argument one step more than page.find(.
          "#listing_orders tbody tr td:first-child input[type=checkbox]")
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:493:11: C: [Corrected] Layout/FirstArgumentIndentation: Indent the first argument one step more than page.find(.
          "#listing_orders tbody tr td:first-child input[type=checkbox]")
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1478 files inspected, 2 offenses detected, 2 offenses corrected
2023-07-20 14:03:31 +10:00
David Cook
6859200339 Safely autocorrect Layout/ExtraSpacing
Inspecting 1478 files
................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.......................................................................................................................................................................................................................C......................................................................................................................................................................................................C......................

Offenses:

spec/lib/open_food_network/property_merge_spec.rb:22:57: C: [Corrected] Layout/ExtraSpacing: Unnecessary spacing detected.
      let(:product_property) { create(:product_property,  property: property) }
                                                        ^
spec/services/cart_service_spec.rb:276:58: C: [Corrected] Layout/ExtraSpacing: Unnecessary spacing detected.
        cart_service.instance_variable_set :@order_cycle,  double(:order_cycle)
                                                         ^
spec/system/consumer/shops_spec.rb:78:46: C: [Corrected] Layout/ExtraSpacing: Unnecessary spacing detected.
      expect(page).to have_no_selector 'hub',   text: d2.name
                                             ^^

1478 files inspected, 3 offenses detected, 3 offenses corrected
2023-07-20 14:01:44 +10:00
David Cook
bc330b69a5 Safely autocorrect Layout/EmptyLinesAroundBlockBody
Inspecting 1478 files
......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C...............................................................................

Offenses:

spec/system/admin/order_cycles/list_spec.rb:191:1: C: [Corrected] Layout/EmptyLinesAroundBlockBody: Extra empty line detected at block body end.

1478 files inspected, 1 offense detected, 1 offense corrected
2023-07-20 13:59:53 +10: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
David Cook
159a0d391c Safely autocorrect Layout/ClosingParenthesisIndentation
Inspecting 1478 files
..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C...........................................................................

Offenses:

spec/system/admin/orders_spec.rb:486:9: C: [Corrected] Layout/ClosingParenthesisIndentation: Align ) with (.
        ).to be_checked
        ^
spec/system/admin/orders_spec.rb:494:9: C: [Corrected] Layout/ClosingParenthesisIndentation: Align ) with (.
        ).to_not be_checked
        ^

1478 files inspected, 2 offenses detected, 2 offenses corrected
2023-07-20 13:56:13 +10:00
David Cook
0030343897 Safely autocorrect Layout/BlockEndNewline
Inspecting 1478 files
......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C...................................................................................................................................................................................................................................................................................................................................................................................C...........................................................................

Offenses:

spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:127:1: C: [Corrected] Layout/IndentationWidth: Use 2 (not 10) spaces for indentation.
          create(:enterprise_fee, fee_type: 'packing', amount: 7.89, name: "Packing")
^^^^^^^^^^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:127:3: C: [Corrected] Layout/IndentationWidth: Use 2 (not -6) spaces for indentation.
  create(:enterprise_fee, fee_type: 'packing', amount: 7.89, name: "Packing")
  ^^^^^^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:127:87: C: [Corrected] Layout/BlockEndNewline: Expression at 127, 87 should be on its own line.
          create(:enterprise_fee, fee_type: 'packing', amount: 7.89, name: "Packing") }
                                                                                      ^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:128:1: C: [Corrected] Layout/BlockAlignment: } at 128, 0 is not aligned with let!(:ef_packing) { at 126, 8.
}
^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:129:91: C: [Corrected] Layout/BlockEndNewline: Expression at 129, 91 should be on its own line.
          create(:enterprise_fee, fee_type: 'transport', amount: 0.12, name: "Transport") }
                                                                                          ^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:130:1: C: [Corrected] Layout/IndentationWidth: Use 2 (not 10) spaces for indentation.
          create(:enterprise_fee, fee_type: 'transport', amount: 0.12, name: "Transport")
^^^^^^^^^^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:130:3: C: [Corrected] Layout/IndentationWidth: Use 2 (not -6) spaces for indentation.
  create(:enterprise_fee, fee_type: 'transport', amount: 0.12, name: "Transport")
  ^^^^^^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:131:1: C: [Corrected] Layout/BlockAlignment: } at 131, 0 is not aligned with let!(:ef_transport) { at 129, 8.
}
^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:131:95: C: [Corrected] Layout/BlockEndNewline: Expression at 131, 95 should be on its own line.
          create(:enterprise_fee, fee_type: 'fundraising', amount: 3.45, name: "Fundraising") }
                                                                                              ^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:133:1: C: [Corrected] Layout/IndentationWidth: Use 2 (not 10) spaces for indentation.
          create(:enterprise_fee, fee_type: 'fundraising', amount: 3.45, name: "Fundraising")
^^^^^^^^^^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:133:3: C: [Corrected] Layout/IndentationWidth: Use 2 (not -6) spaces for indentation.
  create(:enterprise_fee, fee_type: 'fundraising', amount: 3.45, name: "Fundraising")
  ^^^^^^
spec/lib/open_food_network/enterprise_fee_calculator_spec.rb:134:1: C: [Corrected] Layout/BlockAlignment: } at 134, 0 is not aligned with let!(:ef_fundraising) { at 132, 8.
}
^
spec/system/admin/orders_spec.rb:44:1: C: [Corrected] Layout/IndentationWidth: Use 2 (not 1) spaces for indentation.
 create(:shipping_method_with, :pickup, name: "delivery",
^
spec/system/admin/orders_spec.rb:44:3: C: [Corrected] Layout/IndentationWidth: Use 2 (not 0) spaces for indentation.
  create(:shipping_method_with, :pickup, name: "delivery",

spec/system/admin/orders_spec.rb:45:45: C: [Corrected] Layout/BlockEndNewline: Expression at 45, 45 should be on its own line.
distributors: [distributor4, distributor5]) }
                                            ^
spec/system/admin/orders_spec.rb:46:1: C: [Corrected] Layout/BlockAlignment: } at 46, 0 is not aligned with let!(:shipping_method2) { at 43, 2.
}
^

1478 files inspected, 16 offenses detected, 16 offenses corrected
2023-07-20 13:54:30 +10:00
David Cook
7cbe1d94ad Safely autocorrect Layout/BlockAlignment
Inspecting 1478 files
...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C..................................................................................................................................................................................

Offenses:

spec/services/products_renderer_spec.rb:28:7: C: [Corrected] Layout/BlockAlignment: } at 28, 6 is not aligned with let!(:product_cherries) { at 25, 4.
      }
      ^

1478 files inspected, 1 offense detected, 1 offense corrected
2023-07-20 13:52:44 +10:00
David Cook
5a3a4a041f Safely autocorrect Layout/ArrayAlignment
Inspecting 1478 files
..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C......................CC.........................................C.................................

Offenses:

spec/system/admin/customers_spec.rb:40:13: C: [Corrected] Layout/ArrayAlignment: Align the elements of an array literal if they span more than one line.
            managed_distributor2.name], without_options: [unmanaged_distributor.name]
            ^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/customers_spec.rb:40:101: C: Layout/LineLength: Line is too long. [126/100]
                                                     managed_distributor2.name], without_options: [unmanaged_distributor.name]
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_spec.rb:742:1: C: [Corrected] Layout/ArrayAlignment: Align the elements of an array literal if they span more than one line.
different_shipping_method_for_distributor1]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:48:33: C: [Corrected] Layout/ArrayAlignment: Align the elements of an array literal if they span more than one line.
                                distributor3, distributor4],
                                ^^^^^^^^^^^^
spec/system/consumer/shopping/cart_spec.rb:21:37: C: [Corrected] Layout/ArrayAlignment: Align the elements of an array literal if they span more than one line.
                                    product_with_fee.variants.first])
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1478 files inspected, 5 offenses detected, 4 offenses corrected
2023-07-20 13:50:55 +10:00
David Cook
bcfa70af4e Safely autocorrect Layout/ArgumentAlignment
Inspecting 1478 files
...................................................................................................................................................C..C.......................................................................................................C........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C..........................................C................................................................................................................................................................................................C..................................................................C............C..................CC............................................C......C..........................

Offenses:

app/controllers/spree/users_controller.rb:37:15: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
              locals: { type: "alert", message: t('devise.failure.already_registered') })
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/spree/users_controller.rb:52:13: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
            locals: { type: "success", ...
            ^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/user_confirmations_controller.rb:28:11: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
          locals: { type: "success", message: t("devise.confirmations.send_instructions") })
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:54:5: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
    inverse_of: :distributor, foreign_key: :distributor_id
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:56:5: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
    inverse_of: :distributor, foreign_key: :distributor_id
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:118:5: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
    format: { ...
    ^^^^^^^^^
spec/lib/reports/packing/packing_report_spec.rb:60:11: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
          product: create(:simple_product, name: "visible", supplier: supplier1))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/reports/packing/packing_report_spec.rb:64:11: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
          product: create(:simple_product, name: "not visible", supplier: supplier2))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/migrations/migrate_customer_names_spec.rb:16:7: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
      value_type: "boolean", key: "/enterprise/show_customer_names_to_suppliers/#{enterprise1.id}")
      ^^^^^^^^^^^^^^^^^^^^^
spec/migrations/migrate_customer_names_spec.rb:16:101: C: Layout/LineLength: Line is too long. [122/100]
                             value_type: "boolean", key: "/enterprise/show_customer_names_to_suppliers/#{enterprise1.id}")
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^
spec/migrations/migrate_customer_names_spec.rb:18:7: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
      value_type: "boolean", key: "/enterprise/show_customer_names_to_suppliers/#{enterprise2.id}")
      ^^^^^^^^^^^^^^^^^^^^^
spec/migrations/migrate_customer_names_spec.rb:18:101: C: Layout/LineLength: Line is too long. [122/100]
                             value_type: "boolean", key: "/enterprise/show_customer_names_to_suppliers/#{enterprise2.id}")
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^
spec/migrations/migrate_customer_names_spec.rb:20:7: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
      value_type: "boolean", key: "/enterprise/show_customer_names_to_suppliers/#{enterprise4.id}")
      ^^^^^^^^^^^^^^^^^^^^^
spec/migrations/migrate_customer_names_spec.rb:20:101: C: Layout/LineLength: Line is too long. [122/100]
                             value_type: "boolean", key: "/enterprise/show_customer_names_to_suppliers/#{enterprise4.id}")
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^
spec/services/products_renderer_spec.rb:91:13: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
            { q: { with_properties: [property_organic.id] } })
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/services/products_renderer_spec.rb:91:101: C: Layout/LineLength: Line is too long. [101/100]
                                                   { q: { with_properties: [property_organic.id] } })
                                                                                                    ^
spec/services/products_renderer_spec.rb:100:13: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
            { q: { with_properties: [property_organic.id] } })
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/services/products_renderer_spec.rb:100:101: C: Layout/LineLength: Line is too long. [101/100]
                                                   { q: { with_properties: [property_organic.id] } })
                                                                                                    ^
spec/services/products_renderer_spec.rb:118:13: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
            { q: { with_properties: [property_organic.id] } })
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/services/products_renderer_spec.rb:118:101: C: Layout/LineLength: Line is too long. [101/100]
                                                   { q: { with_properties: [property_organic.id] } })
                                                                                                    ^
spec/system/admin/bulk_order_management_spec.rb:268:11: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
          text: "#{o1.bill_address.last_name}, #{o1.bill_address.first_name}"
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:793:9: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
        retry: 3 do
        ^^^^^^^^
spec/system/admin/enterprise_fees_spec.rb:103:9: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
        from: "#{prefix}_tax_category_id"
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/enterprise_fees_spec.rb:129:9: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
        from: "#{prefix}_calculator_type"
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/enterprise_fees_spec.rb:133:9: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
        from: "#{prefix}_calculator_type"
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/enterprise_fees_spec.rb:160:9: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
        from: "#{prefix}_calculator_type"
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/enterprise_fees_spec.rb:221:13: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
            selected: 'Second Distributor'
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/enterprise_fees_spec.rb:232:43: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
                                          'Flat Rate (per order)', message, 0
                                          ^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/list_spec.rb:148:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
match: :first).value).to start_with oc_open_at.strftime("%Y-%m-%d %H:%M")
^^^^^^^^^^^^^
spec/system/admin/order_cycles/list_spec.rb:161:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
match: :first).value).to eq oc_open_at.strftime("%Y-%m-13 %H:%M")
^^^^^^^^^^^^^
spec/system/admin/order_cycles/list_spec.rb:189:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
match: :first).value).to eq test_value.to_datetime.strftime("%Y-%m-%d %H:%M")
^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:346:13: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
            with_options: [schedule_of_other_managed_distributor.name]
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:346:101: C: Layout/LineLength: Line is too long. [101/100]
                                           with_options: [schedule_of_other_managed_distributor.name]
                                                                                                    ^
spec/system/admin/order_cycles/simple_spec.rb:623:9: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
        value: Time.zone.local(2040, 10, 17, 0o6, 0o0, 0o0).strftime("%F %T %z"), visible: false
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:623:101: C: Layout/LineLength: Line is too long. [121/100]
                                 value: Time.zone.local(2040, 10, 17, 0o6, 0o0, 0o0).strftime("%F %T %z"), visible: false
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:625:9: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
        value: Time.zone.local(2040, 10, 24, 17, 0o0, 0o0).strftime("%F %T %z"), visible: false
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:625:101: C: Layout/LineLength: Line is too long. [120/100]
                                 value: Time.zone.local(2040, 10, 24, 17, 0o0, 0o0).strftime("%F %T %z"), visible: false
                                                                                                    ^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:733:9: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
        value: Time.zone.local(2040, 10, 17, 0o6, 0o0, 0o0).strftime("%F %T %z"), visible: false
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:733:101: C: Layout/LineLength: Line is too long. [121/100]
                                 value: Time.zone.local(2040, 10, 17, 0o6, 0o0, 0o0).strftime("%F %T %z"), visible: false
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:735:9: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
        value: Time.zone.local(2040, 10, 24, 17, 0o0, 0o0).strftime("%F %T %z"), visible: false
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/simple_spec.rb:735:101: C: Layout/LineLength: Line is too long. [120/100]
                                 value: Time.zone.local(2040, 10, 24, 17, 0o0, 0o0).strftime("%F %T %z"), visible: false
                                                                                                    ^^^^^^^^^^^^^^^^^^^^
spec/system/consumer/shopping/cart_spec.rb:147:35: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
                                  preferred_unit_from_list: "kg"),
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/consumer/shopping/cart_spec.rb:147:101: C: Layout/LineLength: Line is too long. [101/100]
                                                                     preferred_unit_from_list: "kg"),
                                                                                                    ^
spec/system/consumer/shopping/products_spec.rb:98:11: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
          "<script>alert('Dangerous!');</script>", truncate: false)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/consumer/shopping/products_spec.rb:98:101: C: Layout/LineLength: Line is too long. [113/100]
                                                        "<script>alert('Dangerous!');</script>", truncate: false)
                                                                                                    ^^^^^^^^^^^^^

1478 files inspected, 45 offenses detected, 32 offenses corrected
2023-07-20 13:48:51 +10:00
David Cook
bb728d97fd Regenerate Rubocop's TODO file 2023-07-20 13:46:52 +10:00
Maikel
fd05f41349 Merge pull request #11236 from filipefurtad0/BO_out_of_stock_warning
Adds assertion on the Out of Stock message
2023-07-20 10:19:41 +10:00
David Cook
cdffeea5cb Merge pull request #10966 from macanudo527/fix_linelength_bundle3
Fix Layout/LineLength - Bundle 3
2023-07-20 10:04:24 +10:00
Maikel
f82222d97c Merge pull request #11239 from filipefurtad0/missing_translation_on_invoices_tab
Fixes missing translation on Invoices tab
2023-07-20 08:42:36 +10:00
filipefurtad0
8f8e28f816 Fixes missing translation on Invoices tab
Adds invoices to en.yml, fixing #11237
2023-07-19 18:11:45 +01:00
filipefurtad0
537e225c84 Adds assertion on the Out of Stock message 2023-07-19 16:28:06 +01:00
jibees
49a192eacc Merge pull request #11231 from openfoodfoundation/dependabot/bundler/mini_portile2-2.8.4
chore(deps): bump mini_portile2 from 2.8.2 to 2.8.4
2023-07-19 15:13:50 +02:00
jibees
821e5226fa Merge pull request #11232 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.3.0
chore(deps-dev): bump knapsack_pro from 5.2.0 to 5.3.0
2023-07-19 15:11:27 +02:00
Jean-Baptiste Bellet
5d4ef5b52c To test the search by category, we need to use set primary_taxon attr 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
bada2ef4a7 Remove useless spec (will be tested right after) 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
62eaf4a1a9 This spec is not flaky anymore 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
55cad3659f Simplify products creation 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
6f6de00919 Better naming of argument to not override existing variable... 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
3fab9714f5 Use a constant as the search_key 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
79421f2265 Expect to found the product 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
2697a637a9 Use the OpenFoodNetwork::Permissions helper
To retrieve only primary producers
2023-07-19 14:58:40 +02:00
jibees
3245f7ff99 Update app/reflexes/products_reflex.rb
Co-authored-by: David Cook <david@redcliffs.net>
2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
b42dfb574b Delete already imported (and modified) file 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
90c6398197 Simplify and call methods directly via before_reflex 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
b3bdba3a9b Better use merge! instead of q = q.merge 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
755a1842c2 Simplify to save execution time 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
037589ecda Add columns translation 2023-07-19 14:58:40 +02:00
Jean-Baptiste Bellet
dec779a357 available_on column has been deleted
https://github.com/openfoodfoundation/openfoodnetwork/pull/11136
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
fac02c794c Search through more attributes than only name
Copy/paste from `app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee`
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
010f19cb83 Create a medium height button, and adjust #sort row 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
c378ad1d88 Add "no results found" container 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
5a8a187f54 Add clear search button and action 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
904c7bfacf Buttons design
Remove already defined `$border-radius`

Defined `app/webpacker/css/admin/globals/variables.scss`

Adjust height
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
7b56cbf3d4 Add labels to selectors, and adjust css
+ Adjusting filter elements with flex-grow properties
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
333dc11fc1 Manage form params vs. URL params. And replace state with params.
"One needs to understand what the source of the params in a reflex is. And there are two sources:

the closest form
the url of the currently displayed page"

Source: https://github.com/stimulusreflex/stimulus_reflex/issues/290#issuecomment-683334963
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
bfe1884ab5 Can filter by categories 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
ef1702188f Extract filters from 'no products found' logic
We still want to display filters if no products found
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
f58cf2d3b2 Can filter by producer
Not sur the request nor the `producers` in the reflex should be like this. This is a proof of concept, and should probably be reviewed

Fix linter issues
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
ddfc60c85e Don't use events, but call the loading controller itself 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
762b777995 Design of the search button 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
51e139b6f1 Create first spec for the new products page
Modify comment, and contextualize search (inside search term)

Extract creation of products outside a before block
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
38d0af8ec0 Simplify: don't need to pass through the js controller
Use the reflex itself

+ Don't need to create a method that will be called only in the connect

+ Simply code by adding only two lifecycle methods

Actually it seems that all reflex related to products controller should show/hide loading
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
9d52f0b20a Loading spinner should be above content (filters, sort, ...) 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
643897abb2 Add search functionnality 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
c786f300ca Have a tiny url state management by using replace_state of cable_ready 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
0fd4d892d9 This is now unused: through the js controller only at startup 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
3da6e02192 Call pagination via perPage param: no state to manage, use param 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
61d1f30e04 Rename productsV3 to products: avoid upper|lower case issues
This is causing some issues, misunderstandings around case.

Therefore, directly use the Reflex, and lifecycle methods `beforeFetch` and `afterFetch` are called, even if we use the Reflex (and not the js controller methods). This is pretty handy.

+ adds some id to pagination element (https://docs.stimulusreflex.com/guide/reflexes.html#declaring-a-reflex-in-html-with-data-attributes)

Global documentation: https://docs.stimulusreflex.com/guide/reflexes.html
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
574adb88d2 Add a per page component
This is still a WIP.
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
0b83dc088d Separation of concerns: use a loading controller
Two different events can be used: `show-loading` and `hide-loading`.

I'm not 100% sure this is the right way to go, but let's try!
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
5aebbe4102 use beforeFetch and afterFetch lifecycle methods
+ Move outside `Admin` module the reflex

Therefore, this reflex should be _equivalent_ to its javascript controller: `ProductsV3` (relation is made through names)

Remove unwanted line

Actually call StimulusJS controller instead of calling the reflex itself

In order to have this "showLoading", "hideLoading" behavior.

It seems to be possible to directly use the Reflex itself (use `data-reflex` instead of `data-action`) but I can't make it work: the `stimulus-controller:after` event is never broadcasted/catched (but `stimulus-controller:before` yes...)

Documentation:
https://docs.stimulusreflex.com/guide/reflexes.html#understanding-stimulusreflex-controllers
https://docs.stimulusreflex.com/guide/lifecycle.html#generic-life-cycle-methods

Maybe @dacook if you want to have a look...
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
3b61508652 Be more specific to only apply to the first container, ie. the root one
+ Override default position (relative) in order to have loading above
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
47f21cb59e Add pagination with pagy
For `admin_style_v3` use `<` and `>` for next and previous link

instead of `next` and `previous` string

Extract a mixin for a default box-shadow

Maybe this needs to be redefined. Let's see how next things goes.

When a table is followed by a pagination, remove its margin-bottom + border

Finally, design the pagination component

Add sorting/pagination module, on top of table

We use `cablea_ready.replace`, so need to add `#products-content` id

Use a `pagy` partial with reflex action, instead of the legacy one

- revert the legacy one to its previous state
 - in reflex, fetch product with page attribute, 1 by default

Move `pagy` into `admin/shared/v3/` to be reusable

+ use fontawesome icons for next and previous page

Remove useless line
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
69cff85577 Change color to EFF1F2 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
9b92c25879 Add a section for specific rules for both admin-menu and sub-menu
+ change height for border bottom on selected/hovered menu
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
9762819aa8 Use the right color 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
1f3d41972f Add same padding than #admin-menu,#sub-menu li a in order to align
content (header, navigation, content) on both left and right
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
2892301336 Factorize menu and submenu into same definition
as they are the same, expect the font-size
2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
24c045a09c Reduce padding 2023-07-19 14:58:39 +02:00
Jean-Baptiste Bellet
a8088ae231 Create a pseudo element to add a line under the menu item
- Increase top menu underline height to 3px
 - reduce underline width to same width of label
2023-07-19 14:58:39 +02:00
Konrad
d99ac35824 Merge pull request #11105 from jibees/11098-summary-step-order-details-line-break-on-currency-symbol-and-lettering
Checkout summary: avoid carriage return on price
2023-07-19 13:00:08 +02:00
Filipe
91e2e447c0 Merge pull request #11175 from jibees/11171-checkout-step-3-delivery-details-are-showing-bill-address-instead-of-delivery-address
Checkout, Summary step: Display the ship/delivery address (instead of the billing one)
2023-07-19 11:36:19 +01:00
Filipe
843bcaa500 Merge pull request #11184 from rioug/11183-fix-delete-voucher-tax-excl-price
[vouchers] fix delete voucher when tax excluded from price
2023-07-19 11:24:25 +01:00
dependabot[bot]
314c02a92b chore(deps-dev): bump knapsack_pro from 5.2.0 to 5.3.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.2.0 to 5.3.0.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: knapsack_pro
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-19 09:31:24 +00:00
dependabot[bot]
6c323c82d5 chore(deps): bump mini_portile2 from 2.8.2 to 2.8.4
Bumps [mini_portile2](https://github.com/flavorjones/mini_portile) from 2.8.2 to 2.8.4.
- [Release notes](https://github.com/flavorjones/mini_portile/releases)
- [Changelog](https://github.com/flavorjones/mini_portile/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flavorjones/mini_portile/compare/v2.8.2...v2.8.4)

---
updated-dependencies:
- dependency-name: mini_portile2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-19 09:27:32 +00:00
jibees
8475a31ebb Merge pull request #11228 from openfoodfoundation/dependabot/npm_and_yarn/word-wrap-1.2.4
chore(deps): bump word-wrap from 1.2.3 to 1.2.4
2023-07-19 08:51:34 +02:00
dependabot[bot]
dd7e6d1a19 chore(deps): bump word-wrap from 1.2.3 to 1.2.4
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-19 02:14:43 +00:00
Neal Chambers
c1095c3616 Update .rubocop_todo.yml 2023-07-19 08:43:36 +09:00
Neal Chambers
728926cc9a Fix Layout/LineLength 2023-07-19 08:39:26 +09:00
Filipe
40db81f056 Merge pull request #11150 from macanudo527/fix_admin_class_size
Fix Metrics/ClassSize
2023-07-18 19:10:03 +01: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
jibees
11b2d911d2 Merge pull request #11217 from openfoodfoundation/dependabot/bundler/rubocop-1.54.2
chore(deps-dev): bump rubocop from 1.54.1 to 1.54.2
2023-07-18 17:31:17 +02:00
jibees
bbdeb0c9ab Merge pull request #11213 from openfoodfoundation/dependabot/bundler/rswag-specs-2.10.1
chore(deps-dev): bump rswag-specs from 2.9.0 to 2.10.1
2023-07-18 17:29:37 +02:00
jibees
4e29fcba64 Merge pull request #11210 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.4.5
chore(deps): bump @floating-ui/dom from 1.4.4 to 1.4.5
2023-07-18 17:14:41 +02:00
dependabot[bot]
a975b78816 chore(deps-dev): bump rubocop from 1.54.1 to 1.54.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.54.1 to 1.54.2.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.54.1...v1.54.2)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 15:08:00 +00:00
dependabot[bot]
02b1c6dd2d chore(deps-dev): bump rswag-specs from 2.9.0 to 2.10.1
Bumps [rswag-specs](https://github.com/rswag/rswag) from 2.9.0 to 2.10.1.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.9.0...2.10.1)

---
updated-dependencies:
- dependency-name: rswag-specs
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 15:07:21 +00:00
jibees
af365c6b79 Merge pull request #11215 from openfoodfoundation/dependabot/bundler/rswag-api-2.10.1
chore(deps): bump rswag-api from 2.9.0 to 2.10.1
2023-07-18 17:06:07 +02:00
jibees
f054b74c7d Merge pull request #11216 from openfoodfoundation/dependabot/bundler/rswag-ui-2.10.1
chore(deps): bump rswag-ui from 2.9.0 to 2.10.1
2023-07-18 17:05:15 +02:00
Filipe
adc5692bc5 Merge pull request #11182 from filipefurtad0/profile_change_spec
Adds spec for profile change
2023-07-18 16:02:39 +01:00
jibees
1d03f7a009 Merge pull request #11224 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.2.0
chore(deps-dev): bump knapsack_pro from 5.1.2 to 5.2.0
2023-07-18 16:30:45 +02:00
dependabot[bot]
74f8f9dd52 chore(deps): bump rswag-api from 2.9.0 to 2.10.1
Bumps [rswag-api](https://github.com/rswag/rswag) from 2.9.0 to 2.10.1.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.9.0...2.10.1)

---
updated-dependencies:
- dependency-name: rswag-api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 14:28:58 +00:00
dependabot[bot]
dae690ae5c chore(deps): bump rswag-ui from 2.9.0 to 2.10.1
Bumps [rswag-ui](https://github.com/rswag/rswag) from 2.9.0 to 2.10.1.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.9.0...2.10.1)

---
updated-dependencies:
- dependency-name: rswag-ui
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 14:28:55 +00:00
dependabot[bot]
53b1188a43 chore(deps): bump @floating-ui/dom from 1.4.4 to 1.4.5
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.4.4 to 1.4.5.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.4.5/packages/dom)

---
updated-dependencies:
- dependency-name: "@floating-ui/dom"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 14:28:47 +00:00
dependabot[bot]
6c02e1c05d chore(deps-dev): bump knapsack_pro from 5.1.2 to 5.2.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.1.2 to 5.2.0.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.1.2...v5.2.0)

---
updated-dependencies:
- dependency-name: knapsack_pro
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 09:18:55 +00:00
David Cook
46b27b2d9d Number release steps
There are three distinct parts to the process, so I thought it worth giving them an identifying number.
2023-07-18 09:34:28 +10:00
Neal Chambers
8fc0a20249 Add Additional Test for Model Creation 2023-07-18 08:17:34 +09:00
Neal Chambers
ba862bc4b7 Add tests for Enterprise Fees Bulk Update 2023-07-18 08:17:34 +09:00
Neal Chambers
186d7a2f54 Move and Rename BulkUpdateForm 2023-07-18 08:17:34 +09:00
David Cook
9b16c1171f Remove redundant returns
The return value of active record validations doesn't actually do anything. A record is 'valid?' if @errors is empty.
2023-07-18 08:17:34 +09:00
Neal Chambers
521af70959 Add Strong Params to Enterprise Fees Form 2023-07-18 08:17:34 +09:00
Neal Chambers
9e17b80ea9 Update .rubocop_todo.yml 2023-07-18 08:17:34 +09:00
Neal Chambers
fb1ae855c2 Fix Metrics/ClassLength 2023-07-18 08:17:34 +09:00
filipefurtad0
e14bc5e642 Adds comments on producer_profile_only attribute
Fixing typo
2023-07-17 15:06:02 +01:00
filipefurtad0
16477cad51 Adds spec for profile change (2)
via enterprises path
2023-07-17 15:06:02 +01:00
filipefurtad0
e0be25f927 Adds spec for profile change
via admin path
2023-07-17 15:06:02 +01:00
Jean-Baptiste Bellet
1cf647e04b Avoid line-break by wrapping into nowrap element 2023-07-17 14:00:48 +02:00
Jean-Baptiste Bellet
776b9adc72 Display shipping address in summary step, instead of the billing one
+ update specs accordingly
2023-07-17 09:37:05 +02:00
Jean-Baptiste Bellet
f177258444 Randomize also city and zipcode for randomized address 2023-07-17 09:33:29 +02:00
filipefurtad0
bfb2fc528e Update all locales with the latest Transifex translations 2023-07-14 17:37:22 +01:00
dependabot[bot]
654601f4b2 chore(deps): bump stripe from 8.5.0 to 8.6.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 8.5.0 to 8.6.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v8.5.0...v8.6.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-14 09:09:19 +00:00
Gaetan Craig-Riou
dc711bde78 Fix voucher adjustment delete
When using a voucher with tax not incluced in price, we need to delete
both the voucher adjustment and the tax adjustment
2023-07-14 13:37:45 +10:00
Konrad
bddc10626b Merge pull request #11148 from cillian/fix-duplicate-rows-in-customer-addresses-report
Don't return duplicate rows in the customer addresses report
2023-07-13 20:32:01 +02:00
Filipe
9e0aa1854f Merge pull request #11159 from abdellani/remove-split-checkout-from-feature_toggle
Remove split checkout from feature toggle
2023-07-13 17:20:18 +01:00
Filipe
308ce9263d Merge pull request #11170 from jibees/11160-bulk-actions-function-not-working-on-safari-mac-browser
Admin, Orders: Make bulk actions dropdown re-enabled for Safari browser
2023-07-13 17:17:18 +01:00
Filipe
2f8a056bee Merge pull request #11187 from jibees/10975-white-label-remember-custom-tab-activation-after-error-message
Admin, White Label: check the custom tab checkbox if any errors on custom tab (ie. title is blank)
2023-07-13 16:43:18 +01:00
Filipe
60c75097d3 Merge pull request #11145 from mkllnk/dfc-create-response
DFC API return SuppliedProduct after creation
2023-07-13 16:15:22 +01:00
Filipe
448d5ea017 Merge pull request #11135 from Matt-Yorkley/vouchers
Vouchers part 2
2023-07-13 12:50:32 +01:00
jibees
9f86218a83 Merge pull request #11202 from openfoodfoundation/dependabot/bundler/view_component-3.4.0
chore(deps): bump view_component from 3.3.0 to 3.4.0
2023-07-12 16:00:48 +02:00
dependabot[bot]
e03ffa0405 chore(deps): bump view_component from 3.3.0 to 3.4.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/viewcomponent/view_component/releases)
- [Changelog](https://github.com/ViewComponent/view_component/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/viewcomponent/view_component/compare/v3.3.0...v3.4.0)

---
updated-dependencies:
- dependency-name: view_component
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-12 09:25:11 +00:00
jibees
f22b8db462 Merge pull request #11191 from openfoodfoundation/dependabot/npm_and_yarn/semver-5.7.2
chore(deps): bump semver from 5.7.1 to 5.7.2
2023-07-11 17:38:28 +02:00
dependabot[bot]
90ad6ce19d chore(deps): bump semver from 5.7.1 to 5.7.2
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-11 09:43:07 +00:00
Matt-Yorkley
4884a8c368 Merge pull request #11179 from openfoodfoundation/dependabot/npm_and_yarn/cable_ready-5.0.1
chore(deps): bump cable_ready from 5.0.0 to 5.0.1
2023-07-11 10:42:37 +01:00
David Cook
d03b88cf83 Rename variables
To make it clear they are arrays
2023-07-11 10:48:52 +02:00
Jean-Baptiste Bellet
0fdf7876a6 Instanciate instance variable + use spread operator to be more concise
and efficient ;)
2023-07-11 10:48:52 +02:00
Jean-Baptiste Bellet
4bcba86fc8 Avoid error when testing through jest about removing event listenner
Avoid:
```
  TypeError: Cannot read properties of null (reading 'removeEventListener')
        at extended.disconnect (/home/runner/work/openfoodnetwork/openfoodnetwork/app/webpacker/controllers/dropdown_controller.js:32:14)
        at Context.disconnect (/home/runner/work/openfoodnetwork/openfoodnetwork/node_modules/stimulus/dist/stimulus.umd.js:1441:25)
```
2023-07-11 10:48:52 +02:00
Jean-Baptiste Bellet
6143f4ce6f Use dropdown controller to manager actions dropdown in orders page 2023-07-11 10:48:52 +02:00
Jean-Baptiste Bellet
7084c53f38 Do not display menu is the dropdown is 'disabled'
ie. classList contains `disabled`
2023-07-11 10:48:52 +02:00
Jean-Baptiste Bellet
02aea989be Add on_click_outside behavior on dropdown_controller
"It's a Surprise Tool That Will Help Us Later"
2023-07-11 10:48:52 +02:00
Jean-Baptiste Bellet
d78af187e0 Allow dropdown controller to toggle more than one class
"It's a Surprise Tool That Will Help Us Later"
2023-07-11 10:48:51 +02:00
Mohamed ABDELLANI
4b003aa08b replace status:status with cancelled:boolean on invoice model 2023-07-11 09:15:25 +01:00
David Cook
bb1d053825 Merge pull request #11162 from dacook/DropSpreePromotionTables
Drop unused Spree Promotion Tables
2023-07-11 10:16:45 +10:00
Jean-Baptiste Bellet
a8b9d9d8af Check the custom tab checkbox if any errors (ie. title is blank) 2023-07-10 16:31:33 +02:00
Gaetan Craig-Riou
9f1b4f56c0 Merge pull request #11181 from openfoodfoundation/dependabot/npm_and_yarn/tough-cookie-4.1.3
chore(deps): bump tough-cookie from 4.0.0 to 4.1.3
2023-07-10 12:03:02 +10:00
David Cook
b6d10df332 DropSpreePromotionTables 2023-07-10 10:51:44 +10:00
dependabot[bot]
c299f891e0 chore(deps): bump tough-cookie from 4.0.0 to 4.1.3
Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.0.0 to 4.1.3.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce/tough-cookie/compare/v4.0.0...v4.1.3)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-09 11:11:55 +00:00
Jean-Baptiste Bellet
dab595f17f Update all locales with the latest Transifex translations 2023-07-07 17:11:40 +02:00
Filipe
f0bcb79c09 Merge pull request #11169 from openfoodfoundation/11164-admin-orders-actions-dropdown-is-not-well-placed
Fix container issues introduced by #11123
2023-07-07 11:15:14 +01:00
jibees
967c5a99c3 Merge pull request #11167 from openfoodfoundation/dependabot/bundler/faraday-2.7.10
chore(deps): bump faraday from 2.7.9 to 2.7.10
2023-07-07 11:50:01 +02:00
jibees
72fa132c17 Merge pull request #11172 from openfoodfoundation/dependabot/bundler/sanitize-6.0.2
chore(deps): bump sanitize from 6.0.1 to 6.0.2
2023-07-07 11:44:16 +02:00
dependabot[bot]
2310c665c3 chore(deps): bump cable_ready from 5.0.0 to 5.0.1
Bumps [cable_ready](https://github.com/stimulusreflex/cable_ready) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/stimulusreflex/cable_ready/releases)
- [Changelog](https://github.com/stimulusreflex/cable_ready/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stimulusreflex/cable_ready/compare/v5.0.0...v5.0.1)

---
updated-dependencies:
- dependency-name: cable_ready
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-07 09:35:52 +00:00
dependabot[bot]
9f539df5e0 chore(deps): bump sanitize from 6.0.1 to 6.0.2
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.0.1...v6.0.2)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-07 09:06:31 +00:00
dependabot[bot]
74ef681607 chore(deps): bump faraday from 2.7.9 to 2.7.10
Bumps [faraday](https://github.com/lostisland/faraday) from 2.7.9 to 2.7.10.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.7.9...v2.7.10)

---
updated-dependencies:
- dependency-name: faraday
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-07 09:06:22 +00:00
David Cook
17da66b72a Update contents of variable directly
Also, it makes the line shorter, allowing us to use one-line if syntax :)
2023-07-07 14:22:36 +10:00
Gaetan Craig-Riou
fb3c99e52c Merge pull request #11121 from filipefurtad0/cart_state_orders_not_appearing_orders_page
Cart state orders not appearing orders page
2023-07-07 09:27:36 +10:00
Matt-Yorkley
eb71c65fc0 Merge pull request #11138 from Matt-Yorkley/variant-timestamps
Add timestamps to variants table
2023-07-06 18:22:19 +01:00
Mohamed ABDELLANI
f68064480a authorize distributor manager to generate invoices 2023-07-06 17:36:13 +01:00
Maikel Linke
11a4cd8613 Protect invoicing against unauthorized use
This could be optimised for performance but this was the simplest way
and we can work on it if performance becomes a problem.
2023-07-06 17:36:13 +01:00
Maikel Linke
15c30246a5 Allow to see only invoices of managed enterprises 2023-07-06 17:36:13 +01:00
Maikel Linke
46410b5be2 Test the right invoices controller
I was wondering why the spec didn't work and then I noticed that it was
testing the wrong controller and passing the wrong parameter.
2023-07-06 17:36:13 +01:00
Maikel Linke
85002d3804 Spec bug allowing any enterprise to view invoices 2023-07-06 17:36:13 +01:00
Maikel Linke
145696aa7f Create only used test data
The `params` and the user are created before the request. But, for
example, the enterprise user doesn't need creating when testing
permissions of the normal user.
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
bbf53133cb Add timestamps to variants table 2023-07-06 16:16:03 +01:00
jibees
2e9442a7ab Merge pull request #11127 from openfoodfoundation/dependabot/bundler/vcr-6.2.0
chore(deps-dev): bump vcr from 6.1.0 to 6.2.0
2023-07-06 16:43:49 +02:00
dependabot[bot]
de384ac261 chore(deps-dev): bump vcr from 6.1.0 to 6.2.0
Bumps [vcr](https://github.com/vcr/vcr) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/vcr/vcr/releases)
- [Changelog](https://github.com/vcr/vcr/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vcr/vcr/compare/v6.1.0...v6.2.0)

---
updated-dependencies:
- dependency-name: vcr
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-06 14:22:55 +00:00
Filipe
ba1ba6dbec Merge pull request #11092 from mkllnk/bye-datadog
Remove datadog gem, too expensive
2023-07-06 15:20:20 +01:00
Filipe
99ed019413 Merge pull request #11136 from Matt-Yorkley/remove-available-on
Remove :available_on attribute from Product
2023-07-06 15:20:08 +01:00
jibees
3f070d7152 Merge pull request #11166 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.4.4
chore(deps): bump @floating-ui/dom from 1.4.3 to 1.4.4
2023-07-06 16:13:35 +02:00
jibees
5f54c7fe56 Merge pull request #11146 from openfoodfoundation/dependabot/bundler/rails-7.0.6
chore(deps): bump rails from 7.0.5 to 7.0.6
2023-07-06 16:04:16 +02:00
jibees
9c035c6114 Merge pull request #11128 from openfoodfoundation/dependabot/bundler/view_component-3.3.0
chore(deps): bump view_component from 3.2.0 to 3.3.0
2023-07-06 16:00:51 +02:00
Matt-Yorkley
42a3087cdb Remove :available_on attribute from Product class 2023-07-06 14:36:35 +01:00
Jean-Baptiste Bellet
6ee388fe51 Fix container issues 2023-07-06 11:41:54 +02:00
dependabot[bot]
5c56c9b60b chore(deps): bump @floating-ui/dom from 1.4.3 to 1.4.4
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.4.3 to 1.4.4.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.4.4/packages/dom)

---
updated-dependencies:
- dependency-name: "@floating-ui/dom"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-06 09:10:25 +00:00
David Cook
05a22b80bc Merge pull request #11123 from dacook/buu-products-table
[admin_style_v3] Products table with variants
2023-07-06 09:37:31 +10:00
Filipe
39b597096c Merge pull request #11137 from Matt-Yorkley/remove-product-permalink
Remove :permalink attribute from Product
2023-07-05 18:35:48 +01:00
Matt-Yorkley
652beac73f Drop valid? check from zero_priced_order? method 2023-07-05 15:31:05 +01:00
Mohamed ABDELLANI
17b71b0f8d remove split checkout context from customer spec
We don't need to enable split checkout, as this is default and unique mode.
2023-07-05 14:54:07 +01:00
Mohamed ABDELLANI
a89451e667 remove splitcheckout from feature toggle list 2023-07-05 14:53:40 +01:00
jibees
de34b9b109 Merge pull request #11142 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.4.3
chore(deps): bump @floating-ui/dom from 1.4.2 to 1.4.3
2023-07-05 14:53:53 +02:00
dependabot[bot]
2a059fd879 chore(deps): bump rails from 7.0.5 to 7.0.6
Bumps [rails](https://github.com/rails/rails) from 7.0.5 to 7.0.6.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v7.0.5...v7.0.6)

---
updated-dependencies:
- dependency-name: rails
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-05 12:52:51 +00:00
jibees
9205aafbd9 Merge pull request #11147 from openfoodfoundation/dependabot/bundler/faraday-2.7.9
chore(deps): bump faraday from 2.7.6 to 2.7.9
2023-07-05 14:52:00 +02:00
jibees
409cf54a45 Merge pull request #11152 from openfoodfoundation/dependabot/bundler/state_machines-activerecord-0.9.0
chore(deps): bump state_machines-activerecord from 0.8.0 to 0.9.0
2023-07-05 14:49:08 +02:00
jibees
24f9770acc Merge pull request #11154 from openfoodfoundation/dependabot/bundler/rubocop-1.54.1
chore(deps-dev): bump rubocop from 1.52.1 to 1.54.1
2023-07-05 14:48:15 +02:00
jibees
722f7b981b Merge pull request #11158 from openfoodfoundation/dependabot/bundler/geocoder-1.8.2
chore(deps): bump geocoder from 1.8.1 to 1.8.2
2023-07-05 14:47:12 +02:00
dependabot[bot]
20bc6c8028 chore(deps): bump geocoder from 1.8.1 to 1.8.2
Bumps [geocoder](https://github.com/alexreisner/geocoder) from 1.8.1 to 1.8.2.
- [Changelog](https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alexreisner/geocoder/compare/v1.8.1...v1.8.2)

---
updated-dependencies:
- dependency-name: geocoder
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-05 09:23:48 +00:00
David Cook
7e0042ea1d Apply code suggestion
Co-authored-by: Gaetan Craig-Riou <gaetan.riou@gmail.com>

Co-authored-by: Gaetan Craig-Riou <40413322+rioug@users.noreply.github.com>
2023-07-05 11:27:03 +10:00
Cillian O'Ruanaidh
a80ff6097a Improve formatting in spec/lib/reports/customers_report_spec.rb 2023-07-04 18:27:57 +01:00
Matt-Yorkley
671dfc7082 Don't flush errors when checking zero priced order validity 2023-07-04 14:42:31 +01:00
Matt-Yorkley
66a546027f Add test coverage for handling zero priced orders 2023-07-04 13:13:05 +01:00
Gaetan Craig-Riou
74073946e6 Move VoucherAdjustmentsController to request specs 2023-07-04 13:13:05 +01:00
Matt-Yorkley
55cc57cf87 Use pre_discount_total when comparing to voucher amount 2023-07-04 13:13:05 +01:00
Matt-Yorkley
ad6d0c1c73 Add nil safety in reports for zero priced orders with no payment method 2023-07-04 13:13:05 +01:00
Matt-Yorkley
2aa3f8eb89 Fix flaky test 2023-07-04 13:13:05 +01:00
Matt-Yorkley
f7912a2240 Fix CSS/layout issues 2023-07-04 13:13:05 +01:00
Matt-Yorkley
672400192f Update use of params 2023-07-04 13:13:05 +01:00
Matt-Yorkley
37a4c73a12 Fix rubocop complaint 2023-07-04 13:13:05 +01:00
Matt-Yorkley
9b45b71696 Improve feature toggling 2023-07-04 13:13:05 +01:00
Matt-Yorkley
2f0f3e0820 Re-enable voucher test 2023-07-04 13:13:05 +01:00
Matt-Yorkley
28795effc3 Clarify named vouchers in UI 2023-07-04 13:13:05 +01:00
Matt-Yorkley
de97e69e7d Show/hide payment methods if voucher changes order total to zero 2023-07-04 13:13:05 +01:00
Matt-Yorkley
55bce9f1b2 Remove @voucher_adjustment instance variable 2023-07-04 13:13:05 +01:00
Matt-Yorkley
7a0b83076b Move loading of saved cards out of checkout concern 2023-07-04 13:13:05 +01:00
Matt-Yorkley
1cd38c957d Introduce "zero priced orders" in admin order payments UI and helper 2023-07-04 13:13:05 +01:00
Matt-Yorkley
bd29a9acde Introduce "zero priced orders" to checkout UI and order state flow 2023-07-04 13:13:05 +01:00
Matt-Yorkley
a65b3b8b60 Extract voucher tests to separate controller spec 2023-07-04 13:13:05 +01:00
Matt-Yorkley
d7950617ec Drop superfluous method 2023-07-04 13:13:05 +01:00
Matt-Yorkley
47b5a3fb1d Don't apply tax calculations if there's no tax 2023-07-04 13:13:05 +01:00
Matt-Yorkley
9e5061fc31 Move voucher processing out of checkout controller 2023-07-04 13:13:05 +01:00
dependabot[bot]
eba8d8db83 chore(deps-dev): bump rubocop from 1.52.1 to 1.54.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.52.1 to 1.54.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.52.1...v1.54.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-04 09:26:38 +00:00
filipefurtad0
e547e735c0 Adds test on API call for orders page
Removes unecessary assertion on http status
2023-07-03 11:51:46 +01:00
filipefurtad0
3f7958afe3 Adds regression test to issue #11120 2023-07-03 11:51:46 +01:00
Matt-Yorkley
91004588f6 Add separate voucher form 2023-07-03 11:03:05 +01:00
Matt-Yorkley
3f83da9928 Move voucher section out of main checkout form 2023-07-03 11:03:05 +01:00
Matt-Yorkley
e04a3f6b4d Move form definition down into each checkout step 2023-07-03 11:03:05 +01:00
Matt-Yorkley
75e6ccd580 Simplify voucher controller 2023-07-03 11:03:05 +01:00
Matt-Yorkley
3d44f4bc98 Introduce "zero priced order" concept with no required payment
This applies to cases where an order contains items with zero price or where applied vouchers have reduced the order's total to zero.
2023-07-03 11:03:05 +01:00
dependabot[bot]
a9cb35dcc0 chore(deps): bump state_machines-activerecord from 0.8.0 to 0.9.0
Bumps [state_machines-activerecord](https://github.com/state-machines/state_machines-activerecord) from 0.8.0 to 0.9.0.
- [Commits](https://github.com/state-machines/state_machines-activerecord/compare/v0.8.0...v0.9.0)

---
updated-dependencies:
- dependency-name: state_machines-activerecord
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 09:58:39 +00:00
Maikel Linke
4a562d0e7f Add workaround for updated DFC v1.8 URLs
Once the DFC Connector was updated we can all use the new URLs. But for
now we have the old ones and add some compatibility to the old ones.
2023-07-03 16:05:18 +10:00
Maikel Linke
fc46dbacdc Spec DFC Connector import behaviour around context
The DFC updated the URLs in their context, basically changing the ids of
all data types. I'll add a hacky workaround in the next commit.
2023-07-03 16:05:18 +10:00
Maikel Linke
9183c8acdd Deal with bad SuppliedProduct data 2023-07-03 14:17:18 +10:00
Maikel Linke
18bcc179ef Clarify request body required to create product
We have to work around an Rswag limitation here. But I think that this
version is clearer on the spec.
2023-07-03 14:17:18 +10:00
Maikel Linke
d5c41980d6 Document example for updating SuppliedProduct 2023-07-03 13:44:57 +10:00
Maikel Linke
7dc6cb151d Include DFC context in spec example
The DFC Prototype does include the context while the output of the DFC
Connector refers to the URL of the published context. While that's more
efficient, it's also brittle because the context is updated from time to
time. That happened three days ago and working with the newly published
context breaks our integration until we get an updated version of the
DFC Connector containing the new URLs for datatypes.
2023-07-03 13:27:24 +10:00
Maikel Linke
7b9e4f6914 Move test files to own directory 2023-07-03 13:25:55 +10:00
Maikel Linke
811740c361 Correct OFN session cookie name
And improve the documentation in general.
2023-07-03 13:25:55 +10:00
Maikel Linke
7a51995aeb Respond with SuppliedProduct data when creating 2023-07-03 12:37:23 +10:00
Maikel Linke
5a4efdbce3 Separate DFC API swagger config
This allows us to run the specs separately to generate the
documentation. It's more efficient this way and the separate swagger doc
file is easier to read.

The engine-specific swagger helper also allows us to simplify the spec
files.

Added an exception to our styleguide because it's intended and useful to
have a complete (lengthy) description of the API in one block.
2023-07-03 12:37:23 +10:00
Maikel
400d087789 Merge pull request #11133 from mkllnk/dfc-api-specs
OFN DFC API documenation in OpenAPI format generated with Rswag
2023-07-03 10:53:40 +10:00
Maikel
ffda344838 Merge pull request #11144 from mkllnk/remove-test-unit
Remove unused gem test-unit
2023-07-03 10:34:24 +10:00
Cillian O'Ruanaidh
bf44284237 Don't return duplicate rows in the customer addresses report 2023-06-30 17:10:44 +01:00
Matt-Yorkley
fefa9288a4 Remove :permalink attribute from Product 2023-06-30 11:37:57 +01:00
Filipe
b175793b91 Merge pull request #10704 from abdellani/hide-customers-with-no-completed-orders
Hide users with no completed orders from a hub's customers list
2023-06-30 10:56:56 +01:00
dependabot[bot]
7c9cabbab7 chore(deps): bump faraday from 2.7.6 to 2.7.9
Bumps [faraday](https://github.com/lostisland/faraday) from 2.7.6 to 2.7.9.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.7.6...v2.7.9)

---
updated-dependencies:
- dependency-name: faraday
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-30 09:34:58 +00:00
Maikel Linke
9c2d092f4d Remove unused gem test-unit 2023-06-30 11:37:57 +10:00
filipefurtad0
efb5132ac2 Update all locales with the latest Transifex translations 2023-06-29 23:28:28 +01:00
Filipe
54a85a504d Merge pull request #11101 from mkllnk/dfc-api-key
Allow access to DFC API with OFN API token
2023-06-29 17:20:21 +01:00
Filipe
d27a632a38 Merge pull request #11079 from abdellani/fix-distributors-listing-on-checkout-options
filter distributors before listing on checkout options
2023-06-29 17:02:34 +01:00
Filipe
36f4b2e7f9 Merge pull request #11107 from jibees/11085-edit-variant-cant-update-values-on-the-variant-edit-page
Admin, Edit variant: remove unwanted extra space on price (added in certain specific conditions)
2023-06-29 16:46:42 +01:00
Filipe
97f131e556 Merge pull request #11089 from jibees/11049-invoices-actions-dropdown-menu-disappears-after-creating-the-first-invoice
[Invoices] Actions dropdown menu disappears after creating the first invoice
2023-06-29 16:23:35 +01:00
Filipe
da226ea021 Merge pull request #11109 from mkllnk/image-urls
Gracefully deal with missing S3 config
2023-06-29 12:50:36 +01:00
Filipe
d92c7f89bd Merge pull request #11022 from Matt-Yorkley/matomo
Call matomo manually on asynchronous page visits
2023-06-29 12:02:48 +01:00
dependabot[bot]
af4ae4aaae chore(deps): bump @floating-ui/dom from 1.4.2 to 1.4.3
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.4.2 to 1.4.3.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.4.3/packages/dom)

---
updated-dependencies:
- dependency-name: "@floating-ui/dom"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-29 09:59:20 +00:00
Jean-Baptiste Bellet
045435e9cc use the variant price itself 2023-06-29 11:02:56 +02:00
Jean-Baptiste Bellet
3286094804 number_to_currency can be nil: use a safe operator 2023-06-29 10:47:00 +02:00
Maikel Linke
8b3f45263c Remove unnecessary spec clean-up
And clarify locale setup.
2023-06-29 10:40:01 +02:00
Jean-Baptiste Bellet
2fcf706aa3 Remove unwanted space at the end of the price
This `number_to_currency` method seems to display an extra space, not necessary when unit is `''`
Strip it.

Update specs as well. Thanks @filipefurtad0 for specs!!!
2023-06-29 10:40:01 +02:00
filipefurtad0
6b84fbf2b8 Adds after block, to remove configurations
Sets pending shared examples
2023-06-29 10:40:01 +02:00
filipefurtad0
504ee50dd4 Sets up a spec for #11085 2023-06-29 10:40:00 +02:00
David Cook
0ba342bf11 Merge pull request #10965 from macanudo527/fix_linelength_bundle2
Fix Layout/LineLength - Bundle 2
2023-06-29 15:27:08 +10:00
Maikel
dd1e1328cc Merge pull request #11080 from rioug/fix-bulk-order-cancelation-spec
Fix bulk order cancellation test
2023-06-29 14:44:04 +10:00
Maikel
46ddab3781 Merge pull request #11088 from Matt-Yorkley/deployments-check
Update workflow permissions check to latest version
2023-06-29 14:34:46 +10:00
Maikel
6392c2c115 Merge pull request #11075 from mkllnk/test-cache
Use Redis for caching in test environment
2023-06-29 14:33:09 +10:00
Maikel Linke
029364d4a3 Express spec intent with DSL instead of comment 2023-06-29 14:25:50 +10:00
David Cook
714642f331 Use different Redis database for test environment 2023-06-29 14:15:18 +10:00
Filipe
ba99f85f5c Merge pull request #10914 from abdellani/fix-stripe-sca-failure
redirect user to payment when the card doesn't have enough credit
2023-06-28 19:58:18 +01:00
Matt-Yorkley
ace2c5778f Call matomo manually on Turbo page visits 2023-06-28 12:52:54 +01:00
Matt-Yorkley
a0a1f8f910 Merge pull request #11002 from openfoodfoundation/voucher-prep
Vouchers part 1
2023-06-28 11:30:12 +01:00
Maikel Linke
78d6d129e8 Simplify with extracted helper method 2023-06-28 14:11:50 +10:00
Maikel Linke
d21e6f99bb Swaggerise CatalogItems spec 2023-06-28 14:11:50 +10:00
Maikel Linke
883e637545 Create deterministic test data for stable API docs
Otherwise the auto-generated Swagger file changes all the time without
code changes.
2023-06-28 13:50:54 +10:00
Maikel Linke
df29eaab98 Document DFC example body to create a product 2023-06-28 13:50:54 +10:00
Maikel Linke
db77d1591c Add test examples to DFC API documentation
In other API specs, you provide example values in the schema. So the
specs contain examples which can be used for the documentation. But
instead of defining example data separately, we can use the generated
data by the specs. This way we document real output and don't have to
double up on documentation.

Note that we don't have schema definitions for the DFC API yet. And it
wouldn't make sense to replicate the DFC Ontology manually in JSON
Schema for this purpose. The DFC Connector ensures already that we
comply with the ontology. But I hope that we can use a tool at some
point to generate JSON Schema from the DFC Ontology which would add more
detail to the Swagger docs, I think.
2023-06-28 13:50:54 +10:00
Maikel Linke
b14c9bdf4c Swaggerize SuppliedProduct spec 2023-06-28 13:50:54 +10:00
Maikel Linke
f0a5475563 Swaggerize Enterprise spec 2023-06-28 13:50:54 +10:00
Maikel Linke
7c0a4108d8 Show api-docs in production as well
We were hiding that before because the API is not officially released
yet but that's actually quite annoying. It's very conenient to have the
UI on production and be able to try out endpoints.
2023-06-28 13:50:54 +10:00
Maikel Linke
494c5e78de Swaggerize Person spec
I chose the simplest spec first to demonstrate how it works. The UI at
/api-docs now shows this endpoint with two possible responses.

The docs are missing an example response which I hope to add later.
2023-06-28 13:50:54 +10:00
Maikel Linke
8368a6ccc9 Announce the new DFC endpoint
We need to declare in each spec file for which endpoint the spec is
because it was just choosing the first declared one by default. The
first one was v1 and now it's dfc-v1.7.
2023-06-28 13:50:54 +10:00
Maikel Linke
de51a7833d Add script to swaggerize DFC API in its engine
Rswag doesn't look for specs in engines by default. We haven't added any
Rswag specs in the dfc_provider engine yet but that will come.

The generated API schema has some superfluous whitespace removed due to
a fix in the rswag gems.
2023-06-28 13:50:54 +10:00
David Cook
f280881126 Style tables with relaxed and condensed rows
* attempt with shadows, but they are between every row: http://jsfiddle.net/d872e3nb/
 * another attempt at applying styles to tbody groups http://jsfiddle.net/sb38cLdu/
2023-06-28 09:59:57 +10:00
David Cook
2c14fe0434 Add variant rows and price column 2023-06-28 09:59:57 +10:00
David Cook
9c573f823a Move .content under main content div
The .content div provides overall page margins and a max width, and is already nested inside the nav menus (this allows the nav background to fill the full width of the page.
The main content area should be structured the same way, so we can have flexibility needed to allow some screens to use the full page.

This doesn't seem to change the layout of any screens in the admin interface.

Now the table content can stretch full width
2023-06-28 09:59:57 +10:00
David Cook
6a2025b271 Add products table
With ellipsis clipping for long lines.
2023-06-28 09:59:57 +10:00
David Cook
809c15b197 Load products page with reflex
We will add the products in the next commit.
2023-06-28 09:59:57 +10:00
David Cook
841192fb96 Add new products page
Hidden behind admin_style_v3 feature toggle.
2023-06-28 09:59:57 +10:00
David Cook
efcaab5deb Rename colour variables 2023-06-28 09:59:57 +10:00
dependabot[bot]
d65239fe47 chore(deps): bump view_component from 3.2.0 to 3.3.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/viewcomponent/view_component/releases)
- [Changelog](https://github.com/ViewComponent/view_component/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/viewcomponent/view_component/compare/v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: view_component
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-27 10:03:13 +00:00
Filipe
748cdaaa52 Merge pull request #10963 from jibees/10956-orders-page-uncaught-error-missing-target-element-tooltip-for-tooltip-controller
Admin, Orders list: add tooltip on Edit action icon + capitalize tooltip (instead of uppercasing)
2023-06-27 09:58:34 +01:00
Mohamed ABDELLANI
e678c6149f extract payment_faild from processing_failed 2023-06-27 09:26:26 +01:00
Mohamed ABDELLANI
4cca823a66 redirect user to payment when the card doesn't have enough credit 2023-06-27 09:14:48 +01:00
Neal Chambers
a4220891c5 Update .rubocop_todo.yml 2023-06-26 13:06:57 +09:00
Neal Chambers
5b6f45931c Fix Layout/LineLength 2023-06-26 13:06:56 +09:00
Maikel Linke
c3d49bf31a Speed up, simplify helper with ActiveRecord scopes 2023-06-26 12:56:00 +10:00
Maikel Linke
61c4fb936a Test OrderCycleHelper with real data, not mocks
It's more realistic and doesn't break with the next change.
2023-06-26 12:55:57 +10:00
Maikel Linke
7f94fbc085 Add common whitespace to spec 2023-06-26 12:48:54 +10:00
Maikel
014fb69d4b Merge pull request #10964 from macanudo527/fix_linelength_bundle1
Fix Layout/LineLength - Bundle 1
2023-06-26 12:10:39 +10:00
Maikel
bb5c5ffc7b Merge pull request #11078 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.126.0
chore(deps): bump aws-sdk-s3 from 1.124.0 to 1.126.0
2023-06-26 11:11:39 +10:00
Maikel
a7915b8089 Merge pull request #10849 from mkllnk/report-cable
Show "loading" screen for background reports and display when ready
2023-06-26 10:25:48 +10:00
Konrad
49db2f30bc Merge pull request #11014 from mkllnk/specs
Restore line item ordering
2023-06-25 21:45:26 +02:00
Konrad
8a8d78c081 Merge pull request #11041 from cillian/export-ofn-uid-column
Add an OFN UID column to the Users & Enterprises report
2023-06-25 20:46:18 +02:00
Maikel Linke
ff588cec40 Restore line item ordering
The line item sorting by id has been replaced by sorting by completed_at
time: ccb183d60b

While that's a good idea, the query param to order was only defined in
the client Javascript and there was no default ordering. Line items also
get their completed_at date from the order. So it's the same for all
items of the same order and the ordering with that group of line items
was random.

Now we are adding an order in addition. Items are first sorted by date
and then by id if there's any ambiguity.
2023-06-25 19:24:58 +02:00
Cillian O'Ruanaidh
8ab077bed8 Create enterprise inside :it block because it's only needed there so far 2023-06-25 19:01:42 +02:00
Cillian O'Ruanaidh
1984a1feeb Use more readable click_button helper instead of find and click in users_and_enterprises_spec.rb 2023-06-25 19:01:42 +02:00
Cillian O'Ruanaidh
40b0bfb433 Add an OFN UID column to the Users & Enterprises report 2023-06-25 19:01:42 +02:00
dependabot[bot]
5010d3bbf3 chore(deps): bump aws-sdk-s3 from 1.124.0 to 1.126.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.124.0 to 1.126.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-25 18:26:42 +02:00
David Cook
6240baec0d Update app/controllers/admin/enterprises_controller.rb
Co-authored-by: Gaetan Craig-Riou <40413322+rioug@users.noreply.github.com>
2023-06-23 16:18:45 +09:00
Maikel
e065910d2d Merge pull request #10939 from Matt-Yorkley/master-variants
Remove master variants
2023-06-23 13:42:58 +10:00
Maikel Linke
33d212d274 Gracefully deal with missing S3 config
I could have split this into several commits:

* DRY direct linking to images.
* Check S3 config before direct linking.
* Just check if service is public instead of relying on name.

Developers may copy a staging or production database or experiment with
S3 storage. But when the S3 config is missing then calling `service`
raises an ArgumentError due to a missing name.

Now we only try to call `service` if the S3 config is present.
2023-06-23 12:41:36 +10:00
David Cook
4bf65e330b Enable master variants with associated order cycles
There's only 5 in UK prod. keeping them is easier than figuring out if it's safe to delete.
2023-06-23 11:50:26 +10:00
David Cook
2025a98f58 Delete stock_items for master variants
All variants have stock_items records, but master variants never use them, so these were always redundant.
2023-06-23 11:49:29 +10:00
David Cook
3bff7a9f13 Fix query
With deep nesting syntax.

I chose the longer alias 'left_outer_joins' because it's more explicit, and matches the use up on line 121.
2023-06-23 09:11:03 +09:00
Neal Chambers
172b1eea94 Update .rubocop_todo.yml 2023-06-23 09:11:02 +09:00
Neal Chambers
1e4034534c Fix Layout/LineLength 2023-06-23 09:08:04 +09:00
Filipe
bca7813320 Merge pull request #10323 from abdellani/enterprise-fee-w-tax-by-order
Enterprise fee w tax by order
2023-06-22 23:25:11 +01:00
Filipe
9293dd379b Merge pull request #11087 from Matt-Yorkley/image-error-notifications
Add image error Bugsnag notifications
2023-06-22 16:30:57 +01:00
Filipe
b4c4381473 Merge pull request #10987 from jibees/10979-white-label-trix-link-unlink-buttons-are-white-text-on-white-background
[White Label] Fix colors of custom content editor to have beautiful toolbar
2023-06-22 16:12:25 +01:00
Jean-Baptiste Bellet
7ce3c3f447 Overide a text-transform: uppercase to capitalize
Inherit comes from `app/webpacker/css/admin/components/buttons.scss`
2023-06-22 14:15:43 +02:00
Jean-Baptiste Bellet
91d24ba8ab Add Edit tooptip for action icon in orders table 2023-06-22 14:15:43 +02:00
Matt-Yorkley
c88799618f Set master variants which are associated to line items to non-master
Line items which reference a master variant is a scenario that in theory shouldn't have been valid or even possible for at least 5-6 years, and these old bits of data in theory should have been cleaned up at the time those changes were made. But a couple of servers have some really old data that's not in a nice state.

Here we can just flip the is_master flag to false for those specific (legacy data) cases before deleting any other master variants, to keep the legacy line item data intact.
2023-06-22 13:10:47 +01:00
jibees
22a3b31172 Merge pull request #11100 from mkllnk/remove-json-patch
Revert "Fix json v1.8.6 common.rb warning"
2023-06-22 11:11:21 +02:00
jibees
8eee90118e Merge pull request #11093 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.4.2
chore(deps): bump @floating-ui/dom from 1.3.0 to 1.4.2
2023-06-22 10:25:13 +02:00
jibees
5ba9c815cf Merge pull request #11082 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.20.2
chore(deps-dev): bump rubocop-rails from 2.19.1 to 2.20.2
2023-06-22 10:18:26 +02:00
jibees
300c4ceed2 Merge pull request #11083 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.1.2
chore(deps-dev): bump knapsack_pro from 5.1.0 to 5.1.2
2023-06-22 10:17:44 +02:00
Mohamed ABDELLANI
b072da142e filter distributors before listing on checkout options 2023-06-22 09:00:39 +01:00
Maikel Linke
08a06d21fa Allow access to DFC API with OFN API token 2023-06-22 16:58:12 +10:00
Maikel Linke
82fc6a2a9d Prepare spec to authenticate with other means
I want to add OFN API key support.
2023-06-22 16:27:04 +10:00
Maikel Linke
e7fe04f526 Revert "Fix json v1.8.6 common.rb warning"
This reverts commit 21b80db0ee.

This fix was needed for an old version of the JSON module with a newer
version of Ruby. But we updated the json gem since and don't need this
any more.
2023-06-22 12:47:28 +10:00
Matt-Yorkley
f9185ea56e Remove line items related to master variants
These shouldn't technically exist, but apparently they can be present if the dataset is old enough. They can trigger a foreign key violation if they are present when a master variant is deleted, so they need to be dropped if present.
2023-06-21 18:08:21 +01:00
Matt-Yorkley
6f5d3ceacc Remove inventory units related to master variants
These shouldn't technically exist, but apparently they can be present if the dataset is old enough. They can trigger a foreign key violation if they are present when a master variant is deleted, so they need to be dropped if present.
2023-06-21 17:20:28 +01:00
Jean-Baptiste Bellet
d2534d6645 Be more specific via !important than the default button rule
This one should override the default one
2023-06-21 15:01:14 +02:00
Jean-Baptiste Bellet
7d9018c590 Instead of overriding css rules, prefer to not select rules for trix buttons 2023-06-21 15:01:14 +02:00
dependabot[bot]
c532e822e5 chore(deps): bump @floating-ui/dom from 1.3.0 to 1.4.2
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.3.0 to 1.4.2.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.4.2/packages/dom)

---
updated-dependencies:
- dependency-name: "@floating-ui/dom"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-21 09:57:46 +00:00
Jean-Baptiste Bellet
5d1c32e8cd Remove linksDropdown which is now unused 2023-06-21 10:29:48 +02:00
Jean-Baptiste Bellet
4ec41572b1 Add spec on Canceling an order
Strange that it doesn't exist, but anyway, let's create it!
2023-06-21 10:29:48 +02:00
Jean-Baptiste Bellet
ce28c14544 Replace AngularJS directive to a StimulusJS one
Delete _order_links.html.haml_spec.rb
2023-06-21 10:29:48 +02:00
Jean-Baptiste Bellet
7421691506 Creates a dropdown controller with its specs 2023-06-21 10:29:47 +02:00
David Cook
5ec872c6fd Merge pull request #11008 from mkllnk/dfc-connector-import
Prototype: Import products via DFC Connector
2023-06-21 12:23:58 +10:00
Maikel Linke
14b2e0f962 Remove datadog gem, too expensive 2023-06-21 11:44:21 +10:00
Matt-Yorkley
98a56bfcf8 Update workflow permissions check to latest version 2023-06-20 14:41:17 +01:00
Matt-Yorkley
776eac9f52 Add image error Bugsnag notifications 2023-06-20 14:14:19 +01:00
Matt-Yorkley
24aa55e053 Remove array syntax on new product form for product image 2023-06-20 13:14:52 +01:00
dependabot[bot]
e8e3aa5f5d chore(deps-dev): bump knapsack_pro from 5.1.0 to 5.1.2
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.1.0 to 5.1.2.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.1.0...v5.1.2)

---
updated-dependencies:
- dependency-name: knapsack_pro
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 09:31:26 +00:00
dependabot[bot]
584a25052f chore(deps-dev): bump rubocop-rails from 2.19.1 to 2.20.2
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.19.1 to 2.20.2.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.19.1...v2.20.2)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 09:14:06 +00:00
Gaetan Craig-Riou
ea73781668 Fix bulk order cancellation
Add unticking of "send cancellation email to customer" to match
the current test expectation
2023-06-20 10:03:55 +10:00
Maikel Linke
a9f8c7c4ab Update DFC API docs, describe all endpoints 2023-06-19 16:20:35 +10:00
Maikel Linke
ec8c710e3a Import simple DFC SuppliedProduct
OFN products and variants need more data like a price but the DFC
stores that in a different object. We may get a larger graph containing
that information but we don't have any test data yet.
2023-06-19 16:19:48 +10:00
Maikel Linke
df9e1ac2b4 Encapsulate SuppliedProductBuilder
And improve EnterpriseBuilder. It was builder products twice.
2023-06-19 16:19:48 +10:00
Maikel Linke
1adfb5463a Import DFC measures 2023-06-19 16:19:40 +10:00
Maikel Linke
949019a277 Map has* predicates to Connector attributes 2023-06-19 16:19:40 +10:00
Maikel Linke
bfd084d9b6 Import graphs including anonymous objects 2023-06-19 16:18:58 +10:00
Maikel Linke
3c6f90dbb3 Import from IO objects for convenience, efficiency
The Connector exports to a String but Rails' `request.body` is an IO
object. Since the used JSON-LD parser needs an IO object anyway and it
can lower the memory usage we take IO objects as well and handle
in-memory Strings only when given.
2023-06-19 16:18:58 +10:00
Maikel Linke
f5f8c349e1 Resolve DFC Connector objects when importing graph 2023-06-19 16:18:51 +10:00
Maikel Linke
12d56d725b Import properties which contains lists
Not just single values.
2023-06-19 16:18:51 +10:00
Maikel Linke
2abad60511 Import DFC graphs with multiple objects 2023-06-19 16:18:42 +10:00
Maikel Linke
15dd38d6c6 Import simple data from DFC 2023-06-19 16:16:18 +10:00
Maikel Linke
cceca5f936 Use Redis for caching in test environment
All other environments use it.
2023-06-19 15:35:17 +10:00
Maikel Linke
f6db69104f Update Gemfile.lock with new Ruby version 2023-06-19 15:03:44 +10:00
Maikel
7e20415490 Merge pull request #10888 from mkllnk/ruby3.1
Bump Ruby from 3.0.3 to 3.1.4
2023-06-19 10:08:20 +10:00
Maikel
101e72726c Merge pull request #11032 from dacook/show-current-version2
Show current version2
2023-06-19 10:07:49 +10:00
Konrad
dab5436444 Merge pull request #10532 from abdellani/invoices
Invoices
2023-06-18 21:44:29 +02:00
Mohamed ABDELLANI
d059680f4b remove white label from feature toggle 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
27c1fd0d30 test invoice model 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
639567e903 replace attr with attr_reader 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
fff0b1e577 Update lib/open_food_network/feature_toggle.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
7a0686786d Update db/migrate/20230308075421_create_invoices.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
73cdcca022 fix linter issues 2023-06-18 21:03:13 +02:00
Matt-Yorkley
4eb05a1d73 Reduce public interface of OrderInvoiceComparator 2023-06-18 21:03:13 +02:00
Matt-Yorkley
3946e7a6f5 Memoize presenters in OrderInvoiceComparator
This is now twice as fast and triggers half the number of database queries if both comparison methods get called
2023-06-18 21:03:13 +02:00
Matt-Yorkley
c6ec13443e Drop next_invoice_number method from Spree::Order 2023-06-18 21:03:13 +02:00
Matt-Yorkley
d3a31bd0bd Rename @invoice_presenter instance variable to @order in invoice templates 2023-06-18 21:03:13 +02:00
Matt-Yorkley
352ad20681 Fix display_checkout_taxes_hash in invoice_table4 template 2023-06-18 21:03:13 +02:00
Matt-Yorkley
68ab539ed3 Include completed_at attribute 2023-06-18 21:03:13 +02:00
Matt-Yorkley
113e1344f2 Include tax adjustments in serializer and presenter 2023-06-18 21:03:13 +02:00
Matt-Yorkley
5bbc63f716 Fix options_text displaying when there is no options_text 2023-06-18 21:03:13 +02:00
Matt-Yorkley
72e537b598 Update *_amount_with_adjustments methods on LineItem presenter
These methods are slightly different and they're both needed in the template for invoice4
2023-06-18 21:03:13 +02:00
Matt-Yorkley
208840b99d Use @invoice_presenter.checkout_adjustments 2023-06-18 21:03:13 +02:00
Matt-Yorkley
a44f24ad43 Remove prefixes from invoice data representation so it conforms to the same interface as order 2023-06-18 21:03:13 +02:00
Matt-Yorkley
8dba1618b1 Don't call information from @order in new invoice templates
Previously this template was calling various bits of data from the @order object and not the @invoice_presenter object
2023-06-18 21:03:13 +02:00
Matt-Yorkley
c3d6b2280f Update reference to removed method 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
0ed7599267 extract methods related to invoices from the order model to the OrderInvoiceComparator 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
61d58df56f fix linter issues 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
d86173c509 add feature toggle
seperate the invoice templates that rely on presenters from the old ones.
2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
fa14dc370b implement the invoice data generator 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
d9efd10ac0 update attributes relevant for the comparaison 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
0fbf88190e Generate invoice model
There are three main components:
1. The invoice model
2. order serializers: serialize the order for the invoice
3. data presenters: the object that will be use to access the order's serialize data
2023-06-18 21:03:13 +02:00
Matt-Yorkley
ae24b2d688 Update ScopeVariantsForSearch logic to match both product and variant SKUs 2023-06-16 21:26:28 +01:00
Matt-Yorkley
0f253bb2a0 Blank out product SKU when cloning a product
This was effectively being done before for the product's sku (stored on the master variant) via the #duplicate_variant method, but now it needs to be done explicitly on the product in #duplicate_product
2023-06-16 21:26:28 +01:00
Matt-Yorkley
15000c7ed1 Remove unnecessary iterator 2023-06-16 21:26:28 +01:00
Matt-Yorkley
733dd3c428 Disable variant is_master column 2023-06-16 21:23:44 +01:00
Matt-Yorkley
be72bbebb9 Remove master images data migration tests 2023-06-16 21:23:44 +01:00
Matt-Yorkley
fbd09869bb Remove is_master from variant serializer 2023-06-16 21:23:44 +01:00
Matt-Yorkley
ced60d4382 Remove superfluous method from products controller 2023-06-16 21:23:44 +01:00
Matt-Yorkley
b59bdc75e9 Delete master variants 2023-06-16 21:23:44 +01:00
Matt-Yorkley
1daab8994d Remove is_master and not_master scopes 2023-06-16 21:23:44 +01:00
Matt-Yorkley
0703bb4583 Remove unused is_master references in tests 2023-06-16 21:23:44 +01:00
Matt-Yorkley
85059bfb26 Remove master variant validation conditionals 2023-06-16 21:23:44 +01:00
Matt-Yorkley
8247dce2dc Improve validation feedback on new variant page and add test coverage 2023-06-16 21:23:44 +01:00
Matt-Yorkley
618900767f Fix flaky spec: use milliseconds in cache service and remove sleep 2023-06-16 21:23:44 +01:00
Matt-Yorkley
1e36043a2e Set unit_value to true when cloning a product
This value doesn't get persisted, but it's presence is validated. The product's duplicated variants store the actual :unit_value attribute
2023-06-16 21:23:44 +01:00
Matt-Yorkley
1922598d2d Reorganise associations, validations, scopes and callbacks for clarity 2023-06-16 21:23:44 +01:00
Matt-Yorkley
3ef7d2c9ff Remove master variant from product 2023-06-16 21:23:44 +01:00
Matt-Yorkley
21cba0aa13 Migrate first master variant image to product image 2023-06-16 21:23:44 +01:00
Matt-Yorkley
7dc1091bc2 Migrate product image from master variant to product 2023-06-16 21:23:44 +01:00
Matt-Yorkley
d8649fc9fb Migrate master variant :sku to product 2023-06-16 21:21:40 +01:00
Matt-Yorkley
6b9b5ea347 Stop storing unit_value and unit_description on master variant 2023-06-16 21:21:40 +01:00
Matt-Yorkley
8c0b8dad85 Stop using master variant for storing :display_as value 2023-06-16 21:21:40 +01:00
Matt-Yorkley
1b06c20197 Stop using master variant as a potential store for prices 2023-06-16 21:21:40 +01:00
Matt-Yorkley
80a0138b48 Update old specs that rely on master variant instead of real variants 2023-06-16 21:21:40 +01:00
Matt-Yorkley
d4188da7c1 Simplify product images delegation mess 2023-06-16 21:21:40 +01:00
Matt-Yorkley
42a5a48816 Remove dead code 2023-06-16 21:21:40 +01:00
Matt-Yorkley
dd224b953d Update stage.yml 2023-06-16 14:24:23 +01:00
Matt-Yorkley
cfe5d9a740 Update stage.yml 2023-06-16 14:00:30 +01:00
Matt-Yorkley
09bfe14ae9 Update stage.yml 2023-06-16 13:39:12 +01:00
Mohamed ABDELLANI
68503e4e8b remove useless variable 2023-06-16 06:54:11 +01:00
Mohamed ABDELLANI
65bc8e23c1 move update instructions to let blocks 2023-06-16 06:50:45 +01:00
Mohamed ABDELLANI
2b79258fdc renamed: spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_order.rb -> spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_order_spec.rb 2023-06-16 06:39:38 +01:00
Mohamed ABDELLANI
c21a35a9fc fix typo on lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_order.rb 2023-06-16 06:38:15 +01:00
Mohamed ABDELLANI
c8c3e65498 Update lib/reporting/reports/list.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
2cfa435b54 Update spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_order.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
3e61830b40 optimize total_excl_tax & enterprise_fee_adjustemnt_ids 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
10fc816bba update rubocop_todo list 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
542811b9ad implement filtering by entreprise fee owner 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
9d53d775a6 add filtering by fee name 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
f66d9b9626 remove producers filter 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
83b951662a add filters 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
e9671e4e1f test enterprise fees with tax report by order 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
e9367b1f86 add enterprise fees with tax report by order 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
535f651c7e implement enterprise fee report filters 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
a120329aa6 rename EnterpriseFeeSummary::Base to EnterpriseFeeSummary::FeeSummary 2023-06-16 06:35:01 +01:00
Maikel
4e1f735630 Include feature toggle heading in release notes 2023-06-16 14:13:41 +10:00
David Cook
56e4b3b843 Load git version once at initialisation
Co-authored-by: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com>
2023-06-16 09:36:16 +10:00
David Cook
d195882645 Use builtin Rails method 2023-06-15 15:26:22 +10:00
Maikel Linke
a46917a7b7 Remove NULL possibility from customer flag
It should only be true or false. This was flagged by Rubocop. I also
added another Rubocop suggestion and combined two migrations because
they are related.
2023-06-15 12:02:45 +10:00
Maikel Linke
75cce8bc19 Simplify customer code
The API endpoint merges the created_manually flag in the params already.
No need to write it separately.
2023-06-15 12:02:45 +10:00
Maikel Linke
a655d3d787 Remove unnecessary writes on customer creation
The form only submits enterprise id and email address. We don't need to
assign any other attributes.
2023-06-15 12:02:45 +10:00
Maikel Linke
9bd6615dad Change spec to "unhide" customers on create 2023-06-15 12:02:45 +10:00
Maikel Linke
ebebcf7a13 Remove useless code 2023-06-15 12:02:45 +10:00
Maikel Linke
22a6861f6f Place class methods above instance methods 2023-06-15 12:02:45 +10:00
Mohamed ABDELLANI
298ae8ffc3 set create_manualll flag if the customer already exists 2023-06-15 12:02:45 +10:00
Maikel Linke
107b17addb Add index of much used created_manually column 2023-06-15 12:02:45 +10:00
Maikel Linke
9910d10eb8 Simplify and speed-up customers migration
This reduces the migration run time from 9.6 seconds to 0.16 seconds on
a production database.

* Simplify model naming.
* Remove unnecessary model code.
* Use Rails `missing` scope for efficient simplicity.
* Add `down` method for rollback instead of running `change` again.
2023-06-15 12:02:45 +10:00
Mohamed ABDELLANI
608ff054b0 set the created_manually flag to true for all customers that don't have any orders 2023-06-15 12:02:45 +10:00
Mohamed ABDELLANI
ebc3073604 use Customer#visible on the customers listing endpoints
Update app/models/customer.rb

Co-authored-by: Maikel <maikel@email.org.au>

Update spec/models/customer_spec.rb

Co-authored-by: Maikel <maikel@email.org.au>

Update spec/models/customer_spec.rb

Co-authored-by: Maikel <maikel@email.org.au>

authorize created_manually field to be set on APIv1
2023-06-15 12:02:45 +10:00
Matt-Yorkley
202b0041d1 Remove voucher processing from checkout edit action 2023-06-14 10:19:30 +01:00
Matt-Yorkley
1a744de37a Improve voucher #calculate tests 2023-06-14 10:19:30 +01:00
Matt-Yorkley
93df70c0a7 Use order total excluding discounts in voucher calculations 2023-06-14 10:19:30 +01:00
Matt-Yorkley
52806a35ee Fix Rubocop complaint 2023-06-14 10:19:30 +01:00
Matt-Yorkley
11382a518e Fix test setup in BOM spec 2023-06-14 10:19:30 +01:00
Matt-Yorkley
ef09492883 Update adjustment spec to use orders past delivery state 2023-06-14 10:19:30 +01:00
Matt-Yorkley
6fa381197a Don't tax fees before payment state 2023-06-14 10:19:30 +01:00
Matt-Yorkley
837e581c29 Reload order after cancelling it in tests that check shipment states 2023-06-14 10:19:30 +01:00
Matt-Yorkley
06c9697d0d Don't try to cancel shipments that might already be cancelled 2023-06-14 10:19:30 +01:00
Matt-Yorkley
c5dfecbb69 Reapply taxes at model level if order address changes
This should be done at the model level
2023-06-14 10:19:30 +01:00
Matt-Yorkley
a0f23fc510 Extract before_payment_state? method 2023-06-14 10:19:30 +01:00
Matt-Yorkley
13a22c56f4 Move taxing of admin adjustments out of customer details controller 2023-06-14 10:19:30 +01:00
Matt-Yorkley
65b6a75c9b Reorder callback definitions 2023-06-14 10:19:30 +01:00
Matt-Yorkley
a0d0f8fd2f Tidy up checkout tax spec 2023-06-14 10:19:30 +01:00
Maikel Linke
c2605b2606 Display loading spinner before quick reports
We had a race condition that could first display the report and then
replace it again with the "loading" spinner. That doesn't seem to happen
now that we changed the order of cable events.
2023-06-14 15:40:52 +10:00
Matt-Yorkley
074eb4b592 Move tax charge logic out of checkout controller and update payment transition 2023-06-13 17:53:46 +01:00
Matt-Yorkley
bf912ae4d3 Remove angular loading element in darkwarm layout 2023-06-13 17:35:13 +01:00
Maikel Linke
ec865627d2 Wait for page setup to avoid flaky spec
I'm hiding a real bug here. There's a race condition when the cable event of
the finished report is sent before the loading spinner rendered. The
spinner then overwrites the report again. I added a spec for that but
don't have a solution yet.

I also noticed that the loading spinner is not displayed in testing but
we can assert on the CSS class of the container.
2023-06-09 16:22:01 +10:00
Maikel Linke
d312a5912a Style Layout/MultilineMethodCallIndentation 2023-06-09 14:45:06 +10:00
Maikel Linke
828b2f6f44 Replace too long list of arguments with keywords
Rubocop was complaining about too many arguments. But
`ApplicationJob#perform` needs all arguments handled in one call. While
we could allow the `perform` method generally to have more arguments,
there could be other methods called `perform` which should still be
scrutinised. Instead, it seems acceptable to me to have more arguments
as long as they are clearly named as keyword arguments. Rails uses this
a lot to document all options including their default values, for
example in Active Storage. It's better then bundling several arguments
in an undocumented hash just to reduce the number of given arguments.

And once we upgraded to Ruby 3.1, we can clean the method calls up as
well. `call(user: user)` becomes `call(user:)` without repetition.
2023-06-09 14:44:54 +10:00
Maikel Linke
e56c06571c Remove outdated report timeout handling
Since we don't wait for the report any more, a timeout is very unlikely
and we don't need special handling for it.
2023-06-09 14:44:54 +10:00
Matt-Yorkley
7caf4b03d4 Improve flakyness on report specs 2023-06-09 14:44:53 +10:00
Matt-Yorkley
b230b37284 Update report email spec 2023-06-09 14:44:53 +10:00
Matt-Yorkley
524d1f0264 Switch to tighter Channel scoping...
This is not a normal pattern for setting up ActionCable channels, so it might need some notes. It ensures the broadcasts from the ReportJob are unique not just to the user session but also to the specific tab in the user's browser. Otherwise if the user has two different report pages open in separate tabs with the same session, the broadcast would overwrite the #report-table element in both of them.
2023-06-09 14:44:53 +10:00
Matt-Yorkley
a3ef604797 Run reports in background 2023-06-09 14:44:53 +10:00
Matt-Yorkley
ced959ad6a Load reports show page without all the legacy javascript 2023-06-09 14:44:53 +10:00
Matt-Yorkley
242c74ceaf DRY admin javascript imports 2023-06-09 14:44:53 +10:00
Maikel Linke
b4deb21872 Bump Ruby from 3.0.3 to 3.1.4
Major 3.1 highlights:

* https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released/
2023-05-24 16:52:34 +10:00
599 changed files with 15667 additions and 4344 deletions

View File

@@ -7,21 +7,21 @@ assignees: ''
---
## Preparation on Thursday
## 1. Preparation on Thursday
- [ ] Merge pull requests in the [Ready To Go] column
- [ ] Include translations: `tx pull --force`
- [ ] [Draft new release]. Look at previous [releases] for inspiration.
- [ ] Notify [#instance-managers] of user-facing changes.
## Testing
## 2. Testing
- [ ] [Find build] of the release commit and copy it below.
- [ ] Move this issue to Test Ready.
- [ ] Notify `@testers` in [#testing].
- [ ] Test build: <!-- paste build link here, e.g. https://semaphore...builds/1234 -->
## Finish on Tuesday
## 3. Finish on Tuesday
- [ ] Publish and notify [#global-community] (this is automatically posted with a plugin)
- [ ] Deploy the new release to all managed instances.
@@ -40,7 +40,7 @@ The full process is described at https://github.com/openfoodfoundation/openfoodn
[Ready To Go]: #zenhub
[Transifex pull request]: https://github.com/openfoodfoundation/openfoodnetwork/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+head%3Atransifex
[Draft new release]: https://github.com/openfoodfoundation/openfoodnetwork/releases/new?tag=v&title=v+Code+Name&body=Congrats%0A%0ADescription%0A%0A%23%23+User+facing+changes+:eyes:%0A%0A%0A%0A%23%23+Technical+changes+:wrench:%0A%0A
[Draft new release]: https://github.com/openfoodfoundation/openfoodnetwork/releases/new?tag=v&title=v+Code+Name&body=Congrats%0A%0ADescription%0A%0A%23%23+User+facing+changes+:eyes:%0A%0A%0A%23%23%23+Experimental+features+for+testing+:sunglasses:%0A%0A%0A%23%23+Technical+changes+:wrench:%0A%0A
[releases]: https://github.com/openfoodfoundation/openfoodnetwork/releases
[#instance-managers]: https://app.slack.com/client/T02G54U79/CG7NJ966B
[#testing]: https://openfoodnetwork.slack.com/app_redirect?channel=C02TZ6X00

View File

@@ -1,7 +1,7 @@
name: "Deploy to Staging"
on:
pull_request:
pull_request_target:
types: [labeled]
workflow_dispatch:
inputs:
@@ -14,23 +14,27 @@ on:
- staging.openfoodnetwork.org.au
- staging.coopcircuits.fr
permissions:
contents: read
jobs:
deploy_pr:
if: contains(fromJSON('["pr-staged-uk", "pr-staged-au", "pr-staged-fr"]'), github.event.label.name)
runs-on: ubuntu-latest
steps:
- name: "Check user has write access"
uses: "lannonbr/repo-permission-check-action@2.0.2"
with:
permission: "write"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Configure deployment key
if: success()
run: |
install -m 600 -D /dev/null ~/.ssh/id_rsa
echo "${{ secrets.DEPLOYMENT_KEY }}" > ~/.ssh/id_rsa
echo "${{ secrets.DEPLOYMENT_HOSTS }}" > ~/.ssh/known_hosts
- name: Deploy to Staging
env:
LABEL: ${{ github.event.label.name }}
if: success()
run: |
ssh ofn-deploy@${{ github.event.label.description }} -o LogLevel=ERROR "pull-request-${{ github.event.pull_request.number }} ."
@@ -38,12 +42,21 @@ jobs:
if: ${{ inputs.server }}
runs-on: ubuntu-latest
steps:
- name: "Check user has write access"
uses: "lannonbr/repo-permission-check-action@2.0.2"
with:
permission: "write"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Configure deployment key
if: success()
run: |
install -m 600 -D /dev/null ~/.ssh/id_rsa
echo "${{ secrets.DEPLOYMENT_KEY }}" > ~/.ssh/id_rsa
echo "${{ secrets.DEPLOYMENT_HOSTS }}" > ~/.ssh/known_hosts
- name: Deploy to Staging
if: success()
run: |
ssh ofn-deploy@${{ inputs.server }} -o LogLevel=ERROR "$GITHUB_REF_NAME $GITHUB_SHA"

View File

@@ -25,6 +25,7 @@ Metrics/BlockLength:
AllowedMethods: [
"class_eval",
"collection",
"configure",
"context",
"delete",
"describe",
@@ -44,6 +45,9 @@ Metrics/BlockLength:
"xdescribe",
]
Metrics/ParameterLists:
CountKeywordArgs: false
Rails/ApplicationRecord:
Exclude:
# Migrations should not contain application code:
@@ -89,6 +93,8 @@ Naming/VariableNumber:
AllowedIdentifiers:
- street_address_1
- street_address_2
AllowedPatterns:
- _v[\d]+
Bundler/DuplicatedGem:
Enabled: false

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
3.0.3
3.1.4

View File

@@ -1,9 +1,10 @@
# frozen_string_literal: true
source 'https://rubygems.org'
ruby "3.0.3"
git_source(:github) { |repo_name| "https://github.com/#{repo_name}.git" }
ruby File.read('.ruby-version').chomp
gem 'dotenv-rails', require: 'dotenv/rails-now' # Load ENV vars before other gems
gem 'rails'
@@ -115,8 +116,6 @@ gem 'spreadsheet_architect' # write spreadsheets
gem 'whenever', require: false
gem 'test-unit', '~> 3.5'
gem 'coffee-rails', '~> 5.0.0'
gem 'angular_rails_csrf'
@@ -140,7 +139,6 @@ gem "faraday"
gem "private_address_check"
group :production, :staging do
gem 'ddtrace'
gem 'sd_notify' # For better Systemd process management. Used by Puma.
end

View File

@@ -26,9 +26,6 @@ PATH
remote: engines/dfc_provider
specs:
dfc_provider (0.0.1)
active_model_serializers (~> 0.8.4)
jwt (~> 2.2)
rspec (~> 3.9)
PATH
remote: engines/order_management
@@ -44,49 +41,49 @@ GEM
remote: https://rubygems.org/
specs:
Ascii85 (1.1.0)
actioncable (7.0.5)
actionpack (= 7.0.5)
activesupport (= 7.0.5)
actioncable (7.0.6)
actionpack (= 7.0.6)
activesupport (= 7.0.6)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (7.0.5)
actionpack (= 7.0.5)
activejob (= 7.0.5)
activerecord (= 7.0.5)
activestorage (= 7.0.5)
activesupport (= 7.0.5)
actionmailbox (7.0.6)
actionpack (= 7.0.6)
activejob (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.0.5)
actionpack (= 7.0.5)
actionview (= 7.0.5)
activejob (= 7.0.5)
activesupport (= 7.0.5)
actionmailer (7.0.6)
actionpack (= 7.0.6)
actionview (= 7.0.6)
activejob (= 7.0.6)
activesupport (= 7.0.6)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
actionpack (7.0.5)
actionview (= 7.0.5)
activesupport (= 7.0.5)
actionpack (7.0.6)
actionview (= 7.0.6)
activesupport (= 7.0.6)
rack (~> 2.0, >= 2.2.4)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actionpack-action_caching (1.2.2)
actionpack (>= 4.0.0)
actiontext (7.0.5)
actionpack (= 7.0.5)
activerecord (= 7.0.5)
activestorage (= 7.0.5)
activesupport (= 7.0.5)
actiontext (7.0.6)
actionpack (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.0.5)
activesupport (= 7.0.5)
actionview (7.0.6)
activesupport (= 7.0.6)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@@ -98,19 +95,19 @@ GEM
activemodel (>= 5.2.0)
activestorage (>= 5.2.0)
activesupport (>= 5.2.0)
activejob (7.0.5)
activesupport (= 7.0.5)
activejob (7.0.6)
activesupport (= 7.0.6)
globalid (>= 0.3.6)
activemerchant (1.123.0)
activesupport (>= 4.2)
builder (>= 2.1.2, < 4.0.0)
i18n (>= 0.6.9)
nokogiri (~> 1.4)
activemodel (7.0.5)
activesupport (= 7.0.5)
activerecord (7.0.5)
activemodel (= 7.0.5)
activesupport (= 7.0.5)
activemodel (7.0.6)
activesupport (= 7.0.6)
activerecord (7.0.6)
activemodel (= 7.0.6)
activesupport (= 7.0.6)
activerecord-import (1.4.1)
activerecord (>= 4.2)
activerecord-postgresql-adapter (0.0.1)
@@ -121,14 +118,14 @@ GEM
multi_json (~> 1.11, >= 1.11.2)
rack (>= 2.0.8, < 3)
railties (>= 5.2.4.1)
activestorage (7.0.5)
actionpack (= 7.0.5)
activejob (= 7.0.5)
activerecord (= 7.0.5)
activesupport (= 7.0.5)
activestorage (7.0.6)
actionpack (= 7.0.6)
activejob (= 7.0.6)
activerecord (= 7.0.6)
activesupport (= 7.0.6)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (7.0.5)
activesupport (7.0.6)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
@@ -157,20 +154,20 @@ GEM
awesome_nested_set (3.5.0)
activerecord (>= 4.0.0, < 7.1)
aws-eventstream (1.2.0)
aws-partitions (1.779.0)
aws-sdk-core (3.174.0)
aws-partitions (1.792.0)
aws-sdk-core (3.179.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.66.0)
aws-sdk-core (~> 3, >= 3.174.0)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.124.0)
aws-sdk-core (~> 3, >= 3.174.0)
aws-sdk-s3 (1.132.0)
aws-sdk-core (~> 3, >= 3.179.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.5.2)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0)
aws-eventstream (~> 1, >= 1.0.2)
bcrypt (3.1.18)
bigdecimal (3.0.2)
@@ -178,7 +175,7 @@ GEM
bindex (0.8.1)
bootsnap (1.16.0)
msgpack (~> 1.2)
bugsnag (6.25.2)
bugsnag (6.26.0)
concurrent-ruby (~> 1.0)
builder (3.2.4)
bullet (7.0.7)
@@ -237,12 +234,6 @@ GEM
datafoodconsortium-connector (1.0.0.pre.alpha.6)
virtual_assembly-semantizer (~> 1.0, >= 1.0.4)
date (3.3.3)
ddtrace (1.12.1)
debase-ruby_core_source (= 3.2.1)
libdatadog (~> 2.0.0.1.0)
libddwaf (~> 1.9.0.0.0)
msgpack
debase-ruby_core_source (3.2.1)
debug (1.8.0)
irb (>= 1.5.0)
reline (>= 0.3.1)
@@ -276,7 +267,7 @@ GEM
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
railties (>= 5.0.0)
faraday (2.7.6)
faraday (2.7.10)
faraday-net_http (>= 2.0, < 3.1)
ruby2_keywords (>= 0.0.4)
faraday-follow_redirects (0.3.0)
@@ -323,7 +314,7 @@ GEM
fuubar (2.5.1)
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
geocoder (1.8.1)
geocoder (1.8.2)
globalid (1.1.0)
activesupport (>= 5.0)
gmaps4rails (2.1.2)
@@ -383,15 +374,13 @@ GEM
jsonapi-serializer (2.2.0)
activesupport (>= 4.2)
jwt (2.7.1)
knapsack_pro (5.1.0)
knapsack_pro (5.3.4)
rake
language_server-protocol (3.17.0.3)
launchy (2.5.0)
addressable (~> 2.7)
letter_opener (1.8.1)
launchy (>= 2.2, < 3)
libdatadog (2.0.0.1.0)
libddwaf (1.9.0.0.1)
ffi (~> 1.0)
link_header (0.0.8)
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
@@ -415,8 +404,8 @@ GEM
rake
mini_magick (4.11.0)
mini_mime (1.1.2)
mini_portile2 (2.8.2)
minitest (5.18.0)
mini_portile2 (2.8.4)
minitest (5.18.1)
monetize (1.12.0)
money (~> 6.12)
money (6.16.0)
@@ -424,7 +413,7 @@ GEM
msgpack (1.7.1)
multi_json (1.15.0)
multi_xml (0.6.0)
net-imap (0.3.4)
net-imap (0.3.6)
date
net-protocol
net-pop (0.1.2)
@@ -434,7 +423,7 @@ GEM
net-smtp (0.3.3)
net-protocol
nio4r (2.5.9)
nokogiri (1.15.2)
nokogiri (1.15.3)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oauth2 (1.4.11)
@@ -488,19 +477,18 @@ GEM
ruby-rc4
ttfunk
pg (1.2.3)
power_assert (2.0.3)
private_address_check (0.5.0)
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
public_suffix (5.0.1)
public_suffix (5.0.3)
puma (6.3.0)
nio4r (~> 2.0)
query_count (1.1.1)
activerecord (>= 4.2)
railties (>= 4.2)
raabro (1.4.0)
racc (1.7.0)
racc (1.7.1)
rack (2.2.7)
rack-mini-profiler (2.3.4)
rack (>= 1.2.0)
@@ -518,26 +506,27 @@ GEM
rack-test (2.1.0)
rack (>= 1.3)
rack-timeout (0.6.3)
rails (7.0.5)
actioncable (= 7.0.5)
actionmailbox (= 7.0.5)
actionmailer (= 7.0.5)
actionpack (= 7.0.5)
actiontext (= 7.0.5)
actionview (= 7.0.5)
activejob (= 7.0.5)
activemodel (= 7.0.5)
activerecord (= 7.0.5)
activestorage (= 7.0.5)
activesupport (= 7.0.5)
rails (7.0.6)
actioncable (= 7.0.6)
actionmailbox (= 7.0.6)
actionmailer (= 7.0.6)
actionpack (= 7.0.6)
actiontext (= 7.0.6)
actionview (= 7.0.6)
activejob (= 7.0.6)
activemodel (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
bundler (>= 1.15.0)
railties (= 7.0.5)
railties (= 7.0.6)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
rails-dom-testing (2.1.1)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-erd (1.7.2)
activerecord (>= 4.2)
@@ -551,9 +540,9 @@ GEM
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
rails_safe_tasks (1.0.0)
railties (7.0.5)
actionpack (= 7.0.5)
activesupport (= 7.0.5)
railties (7.0.6)
actionpack (= 7.0.6)
activesupport (= 7.0.6)
method_source
rake (>= 12.2)
thor (~> 1.0)
@@ -581,7 +570,7 @@ GEM
responders (3.1.0)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.5)
rexml (3.2.6)
roadie (5.0.1)
css_parser (~> 1.4)
nokogiri (~> 1.8)
@@ -616,30 +605,31 @@ GEM
rspec-support (~> 3.12)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.12.0)
rswag-api (2.9.0)
rspec-support (3.12.1)
rswag-api (2.10.1)
railties (>= 3.1, < 7.1)
rswag-specs (2.9.0)
rswag-specs (2.10.1)
activesupport (>= 3.1, < 7.1)
json-schema (>= 2.2, < 4.0)
railties (>= 3.1, < 7.1)
rspec-core (>= 2.14)
rswag-ui (2.9.0)
rswag-ui (2.10.1)
actionpack (>= 3.1, < 7.1)
railties (>= 3.1, < 7.1)
rubocop (1.52.1)
rubocop (1.55.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.2.2.3)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.28.0, < 2.0)
rubocop-ast (>= 1.28.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.29.0)
parser (>= 3.2.1.0)
rubocop-rails (2.19.1)
rubocop-rails (2.20.2)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
@@ -653,7 +643,7 @@ GEM
rubyzip (2.3.2)
rufus-scheduler (3.8.2)
fugit (~> 1.1, >= 1.1.6)
sanitize (6.0.1)
sanitize (6.0.2)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
sass (3.4.25)
@@ -695,13 +685,13 @@ GEM
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
state_machines (0.5.0)
state_machines-activemodel (0.8.0)
activemodel (>= 5.1)
state_machines (>= 0.5.0)
state_machines-activerecord (0.8.0)
activerecord (>= 5.1)
state_machines-activemodel (>= 0.8.0)
state_machines (0.6.0)
state_machines-activemodel (0.9.0)
activemodel (>= 6.0)
state_machines (>= 0.6.0)
state_machines-activerecord (0.9.0)
activerecord (>= 6.0)
state_machines-activemodel (>= 0.9.0)
stimulus_reflex (3.5.0.rc2)
actioncable (>= 5.2, < 8)
actionpack (>= 5.2, < 8)
@@ -713,19 +703,17 @@ GEM
railties (>= 5.2, < 8)
redis (>= 4.0, < 6.0)
stringex (2.8.6)
stripe (8.5.0)
stripe (8.6.0)
swd (1.3.0)
activesupport (>= 3)
attr_required (>= 0.0.5)
httpclient (>= 2.4)
temple (0.8.2)
test-unit (3.6.0)
power_assert
thor (1.2.2)
thread-local (1.1.0)
tilt (2.1.0)
timecop (0.9.6)
timeout (0.3.2)
timeout (0.4.0)
ttfunk (1.7.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
@@ -740,8 +728,8 @@ GEM
validate_url (1.0.15)
activemodel (>= 3.0.0)
public_suffix
vcr (6.1.0)
view_component (3.2.0)
vcr (6.2.0)
view_component (3.5.0)
activesupport (>= 5.2.0, < 8.0)
concurrent-ruby (~> 1.0)
method_source (~> 1.0)
@@ -818,7 +806,6 @@ DEPENDENCIES
database_cleaner
datafoodconsortium-connector
db2fog!
ddtrace
debug (>= 1.0.0)
debugger-linecache
devise
@@ -910,7 +897,6 @@ DEPENDENCIES
stimulus_reflex (= 3.5.0.rc2)
stringex (~> 2.8.5)
stripe
test-unit (~> 3.5)
timecop
valid_email2
vcr
@@ -925,7 +911,7 @@ DEPENDENCIES
wkhtmltopdf-binary
RUBY VERSION
ruby 3.0.3p157
ruby 3.1.4p223
BUNDLED WITH
2.4.3

View File

@@ -7,4 +7,3 @@
require_relative 'config/application'
Openfoodnetwork::Application.load_tasks

View File

@@ -68,25 +68,6 @@
//= require textAngular.min.js
//= require i18n/translations
//= require darkswarm/i18n.translate.js
//= require moment/min/moment.min.js
//= require moment/locale/ar.js
//= require moment/locale/ca.js
//= require moment/locale/de.js
//= require moment/locale/en-gb.js
//= require moment/locale/es.js
//= require moment/locale/fil.js
//= require moment/locale/fr.js
//= require moment/locale/it.js
//= require moment/locale/nb.js
//= require moment/locale/nl-be.js
//= require moment/locale/pt-br.js
//= require moment/locale/pt.js
//= require moment/locale/ru.js
//= require moment/locale/sv.js
//= require moment/locale/tr.js
//= require moment/locale/pl.js
//= require js-big-decimal/dist/web/js-big-decimal.min.js
// foundation
//= require ../shared/mm-foundation-tpls-0.9.0-20180826174721.min.js

View File

@@ -113,7 +113,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
(DirtyProducts.count() > 0 and confirm(t("unsaved_changes_confirmation"))) or (DirtyProducts.count() == 0)
editProductUrl = (product, variant) ->
"/admin/products/" + product.permalink_live + ((if variant then "/variants/" + variant.id else "")) + "/edit"
"/admin/products/" + product.id + ((if variant then "/variants/" + variant.id else "")) + "/edit"
$scope.editWarn = (product, variant) ->
if confirm_unsaved_changes()
@@ -162,7 +162,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
if confirm(t("are_you_sure"))
$http(
method: "DELETE"
url: "/api/v0/products/" + product.permalink_live + "/variants/" + variant.id
url: "/api/v0/products/" + product.id + "/variants/" + variant.id
).then (response) ->
$scope.removeVariant(product, variant)
else
@@ -352,9 +352,6 @@ filterSubmitProducts = (productsToFilter) ->
if product.hasOwnProperty("inherits_properties")
filteredProduct.inherits_properties = product.inherits_properties
hasUpdatableProperty = true
if product.hasOwnProperty("available_on")
filteredProduct.available_on = product.available_on
hasUpdatableProperty = true
if filteredMaster?
filteredProduct.master_attributes = filteredMaster
hasUpdatableProperty = true

View File

@@ -1,5 +0,0 @@
angular.module("admin.dropdown").directive "linksDropdown", ($window)->
restrict: "C"
scope:
links: "="
templateUrl: "admin/links_dropdown.html"

View File

@@ -33,6 +33,4 @@ angular.module('admin.orderCycles').factory('Enterprise', ($resource) ->
variantsOf: (product) ->
if product.variants.length > 0
variant.id for variant in product.variants
else
[product.master_id]
})

View File

@@ -1,15 +0,0 @@
$ ->
($ '#new_image_link').click (event) ->
event.preventDefault()
($ '.no-objects-found').hide()
($ this).hide()
$.ajax
type: 'GET'
url: @href
data: (
authenticity_token: AUTH_TOKEN
)
success: (r) ->
($ '#images').html r

View File

@@ -1,7 +0,0 @@
($ '#cancel_link').click (event) ->
event.preventDefault()
($ '.no-objects-found').show()
($ '#new_image_link').show()
($ '#images').html('')

View File

@@ -11,24 +11,5 @@
//= require i18n/translations
//= require darkswarm/i18n.translate.js
//= require moment/min/moment.min.js
//= require moment/locale/ar.js
//= require moment/locale/ca.js
//= require moment/locale/de.js
//= require moment/locale/en-gb.js
//= require moment/locale/es.js
//= require moment/locale/fil.js
//= require moment/locale/fr.js
//= require moment/locale/it.js
//= require moment/locale/nb.js
//= require moment/locale/nl-be.js
//= require moment/locale/pt-br.js
//= require moment/locale/pt.js
//= require moment/locale/ru.js
//= require moment/locale/sv.js
//= require moment/locale/tr.js
//= require moment/locale/pl.js
//= require js-big-decimal/dist/web/js-big-decimal.min.js
window.angular = { module: function(noop){ return { value: function(){} } } }
window.angular = { module: function(noop){ return { value: function(){} } } }

View File

@@ -29,24 +29,6 @@
#
#= require angular-flash.min.js
#
#= require moment/min/moment.min.js
#= require moment/locale/ar.js
#= require moment/locale/ca.js
#= require moment/locale/de.js
#= require moment/locale/en-gb.js
#= require moment/locale/es.js
#= require moment/locale/fil.js
#= require moment/locale/fr.js
#= require moment/locale/it.js
#= require moment/locale/nb.js
#= require moment/locale/nl-be.js
#= require moment/locale/pt-br.js
#= require moment/locale/pt.js
#= require moment/locale/ru.js
#= require moment/locale/sv.js
#= require moment/locale/tr.js
#= require moment/locale/pl.js
#
#= require modernizr
#
#= require foundation-sites/js/foundation.js

View File

@@ -33,9 +33,9 @@ angular.module('Darkswarm').factory 'Products', (OrderCycleResource, OrderCycle,
prices = (v.price for v in product.variants)
product.price = Math.min.apply(null, prices)
product.hasVariants = product.variants?.length > 0
product.primaryImage = product.images[0]?.small_url if product.images
product.primaryImage = product.image?.small_url if product.image
product.primaryImageOrMissing = product.primaryImage || "/noimage/small.png"
product.largeImage = product.images[0]?.large_url if product.images
product.largeImage = product.image?.large_url if product.image
dereference: ->
for product in @fetched_products

View File

@@ -1,19 +0,0 @@
.ofn-drop-down
%span
%i.icon-check
{{ 'admin.actions' | t }}
%i{ 'ng-class' => "expanded && 'icon-caret-up' || !expanded && 'icon-caret-down'" }
%div.menu{ 'ng-show' => "expanded" }
%div{ 'ng-repeat' => "link in links" }
%a.menu_item{ 'ng-if': "link.method", href: '{{link.url}}', target: "{{link.target || '_self'}}", data: { method: "{{ link.method }}", "ujs-navigate": "false", confirm: "{{link.confirm}}" } }
%span
%i{ ng: { class: "link.icon" } }
%span {{ link.name }}
%a.menu_item{ 'ng-if': "link.confirm && !link.method", href: '{{link.url}}', target: "{{link.target || '_self'}}", "data-confirm": "{{link.confirm}}" }
%span
%i{ ng: { class: "link.icon" } }
%span {{ link.name }}
%a.menu_item{ 'ng-if': "!link.confirm && !link.method", href: '{{link.url}}', target: "{{link.target || '_self'}}" }
%span
%i{ ng: { class: "link.icon" } }
%span {{ link.name }}

View File

@@ -0,0 +1,13 @@
# frozen_string_literal: true
class ScopedChannel < ApplicationCable::Channel
class << self
def for_id(id)
"ScopedChannel:#{id}"
end
end
def subscribed
stream_from "ScopedChannel:#{params[:id]}"
end
end

View File

@@ -1,7 +1,8 @@
# frozen_string_literal: true
class ConfirmModalComponent < ModalComponent
def initialize(id:, confirm_actions: nil, reflex: nil, controller: nil, message: nil, confirm_reflexes: nil)
def initialize(id:, confirm_actions: nil, reflex: nil, controller: nil, message: nil,
confirm_reflexes: nil)
super(id: id, close_button: true)
@confirm_actions = confirm_actions
@reflex = reflex

View File

@@ -6,7 +6,7 @@ class ProductComponent < ViewComponentReflex::Component
def initialize(product:, columns:)
super
@product = product
@image = @product.images[0] if product.images.any?
@image = @product.image if product.image.present?
@columns = columns.map do |c|
{
id: c[:value],
@@ -20,7 +20,7 @@ class ProductComponent < ViewComponentReflex::Component
@product.id
end
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength
# rubocop:disable Metrics/CyclomaticComplexity
def column_value(column)
case column
when 'name'
@@ -28,7 +28,7 @@ class ProductComponent < ViewComponentReflex::Component
when 'price'
@product.price
when 'unit'
"#{@product.unit_value} #{@product.variant_unit}"
"#{@product.variants.first.unit_value} #{@product.variant_unit}"
when 'producer'
@product.supplier.name
when 'category'
@@ -43,13 +43,11 @@ class ProductComponent < ViewComponentReflex::Component
@product.tax_category.name
when 'inherits_properties'
@product.inherits_properties
when 'available_on'
format_date(@product.available_on)
when 'import_date'
format_date(@product.import_date)
end
end
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength
# rubocop:enable Metrics/CyclomaticComplexity
private

View File

@@ -17,7 +17,6 @@ class ProductsTableComponent < ViewComponentReflex::Component
label: I18n.t("admin.products_page.columns_selector.inherits_properties"),
value: "inherits_properties"
},
{ label: I18n.t("admin.products_page.columns_selector.available_on"), value: "available_on" },
{ label: I18n.t("admin.products_page.columns_selector.import_date"), value: "import_date" }
].sort do |a, b|
a[:label] <=> b[:label]
@@ -168,7 +167,7 @@ class ProductsTableComponent < ViewComponentReflex::Component
def product_query_includes
[
master: [:images],
:image,
variants: [
:default_price,
:stock_locations,

View File

@@ -12,7 +12,7 @@ module Admin
@line_items = order_permissions.
editable_line_items.where(order_id: orders).
includes(:variant).
ransack(params[:q]).result
ransack(params[:q]).result.order(:id)
@pagy, @line_items = pagy(@line_items) if pagination_required?
@@ -34,7 +34,8 @@ module Admin
# and https://www.postgresql.org/docs/current/static/sql-select.html#SQL-FOR-UPDATE-SHARE
order.with_lock do
if order.contents.update_item(@line_item, line_item_params)
render body: nil, status: :no_content # No Content, does not trigger ng resource auto-update
# No Content, does not trigger ng resource auto-update
render body: nil, status: :no_content
else
render json: { errors: @line_item.errors }, status: :precondition_failed
end

View File

@@ -36,8 +36,10 @@ module Admin
end
def create
@customer = Customer.new(customer_params)
@customer = Customer.find_or_initialize_by(customer_params.slice(:email, :enterprise_id))
if user_can_create_customer?
@customer.created_manually = true
if @customer.save
tag_rule_mapping = TagRule.mapping_for(Enterprise.where(id: @customer.enterprise))
render_as_json @customer, tag_rule_mapping: tag_rule_mapping
@@ -83,7 +85,7 @@ module Admin
def customers
return @customers if @customers.present?
@customers = Customer.managed_by(spree_current_user)
@customers = Customer.visible.managed_by(spree_current_user)
return @customers if params[:enterprise_id].blank?
@customers = @customers.where(enterprise_id: params[:enterprise_id])

View File

@@ -6,8 +6,6 @@ module Admin
class EnterpriseFeesController < Admin::ResourceController
before_action :load_enterprise_fee_set, only: :index
before_action :load_data
before_action :check_enterprise_fee_input, only: [:bulk_update]
before_action :check_calculators_compatibility_with_taxes, only: [:bulk_update]
def index
@include_calculators = params[:include_calculators].present?
@@ -36,7 +34,8 @@ module Admin
end
def bulk_update
@enterprise_fee_set = Sets::EnterpriseFeeSet.new(enterprise_fee_bulk_params)
# Forms has strong parameters, so we don't need to validate them in controller
@enterprise_fee_set = EnterpriseFeesBulkUpdate.new(params)
if @enterprise_fee_set.save
redirect_to redirect_path, notice: I18n.t(:enterprise_fees_update_notice)
@@ -62,9 +61,7 @@ module Admin
when :for_order_cycle
order_cycle = OrderCycle.find_by(id: params[:order_cycle_id]) if params[:order_cycle_id]
coordinator = Enterprise.find_by(id: params[:coordinator_id]) if params[:coordinator_id]
if order_cycle.nil? && coordinator.present?
order_cycle = OrderCycle.new(coordinator: coordinator)
end
order_cycle ||= OrderCycle.new(coordinator: coordinator) if coordinator.present?
enterprises = OpenFoodNetwork::OrderCyclePermissions.new(spree_current_user,
order_cycle).visible_enterprises
EnterpriseFee.for_enterprises(enterprises).order('enterprise_id', 'fee_type', 'name')
@@ -91,47 +88,5 @@ module Admin
main_app.admin_enterprise_fees_path
end
def enterprise_fee_bulk_params
params.require(:sets_enterprise_fee_set).permit(
collection_attributes: [
:id, :enterprise_id, :fee_type, :name, :tax_category_id,
:inherits_tax_category, :calculator_type,
{ calculator_attributes: PermittedAttributes::Calculator.attributes }
]
)
end
def check_enterprise_fee_input
enterprise_fee_bulk_params['collection_attributes'].each do |_, fee_row|
enterprise_fees = fee_row['calculator_attributes']&.slice(
:preferred_flat_percent, :preferred_amount,
:preferred_first_item, :preferred_additional_item,
:preferred_minimal_amount, :preferred_normal_amount,
:preferred_discount_amount, :preferred_per_unit
)
next unless enterprise_fees
enterprise_fees.each do |_, enterprise_amount|
unless enterprise_amount.nil? || Float(enterprise_amount, exception: false)
flash[:error] = I18n.t(:calculator_preferred_value_error)
return redirect_to redirect_path
end
end
end
end
def check_calculators_compatibility_with_taxes
enterprise_fee_bulk_params['collection_attributes'].each do |_, enterprise_fee|
next unless enterprise_fee['inherits_tax_category'] == "true"
next unless EnterpriseFee::PER_ORDER_CALCULATORS.include?(enterprise_fee['calculator_type'])
flash[:error] = I18n.t(
'activerecord.errors.models.enterprise_fee.inherit_tax_requires_per_item_calculator'
)
return redirect_to redirect_path
end
end
end
end

View File

@@ -16,7 +16,8 @@ module Admin
@enterprise_relationship = EnterpriseRelationship.new enterprise_relationship_params
if @enterprise_relationship.save
render plain: Api::Admin::EnterpriseRelationshipSerializer.new(@enterprise_relationship).to_json
render plain: Api::Admin::EnterpriseRelationshipSerializer
.new(@enterprise_relationship).to_json
else
render status: :bad_request,
json: { errors: @enterprise_relationship.errors.full_messages.join(', ') }

View File

@@ -92,7 +92,7 @@ module Admin
return render :welcome, layout: "spree/layouts/bare_admin"
end
attributes = { sells: register_params[:sells], visible: true }
attributes = { sells: register_params[:sells], visible: "only_through_links" }
if @enterprise.update(attributes)
flash[:success] = I18n.t(:enterprise_register_success_notice, enterprise: @enterprise.name)
@@ -121,8 +121,12 @@ module Admin
def for_order_cycle
respond_to do |format|
format.json do
render json: @collection,
each_serializer: Api::Admin::ForOrderCycle::EnterpriseSerializer, order_cycle: @order_cycle, spree_current_user: spree_current_user
render(
json: @collection,
each_serializer: Api::Admin::ForOrderCycle::EnterpriseSerializer,
order_cycle: @order_cycle,
spree_current_user: spree_current_user
)
end
end
end
@@ -178,9 +182,7 @@ module Admin
when :for_order_cycle
@order_cycle = OrderCycle.find_by(id: params[:order_cycle_id]) if params[:order_cycle_id]
coordinator = Enterprise.find_by(id: params[:coordinator_id]) if params[:coordinator_id]
if @order_cycle.nil? && coordinator.present?
@order_cycle = OrderCycle.new(coordinator: coordinator)
end
@order_cycle ||= OrderCycle.new(coordinator: coordinator) if coordinator.present?
enterprises = OpenFoodNetwork::OrderCyclePermissions.new(spree_current_user, @order_cycle)
.visible_enterprises
@@ -188,7 +190,7 @@ module Admin
if enterprises.present?
enterprises.includes(
supplied_products:
[:supplier, :variants, { master: [:images] }]
[:supplier, :variants, :image]
)
end
when :index

View File

@@ -37,8 +37,14 @@ module Admin
end
def reset_absent_products
@importer = ProductImport::ProductImporter.new(File.new(file_path),
spree_current_user, import_into: params[:import_into], enterprises_to_reset: params[:enterprises_to_reset], updated_ids: params[:updated_ids], settings: params[:settings])
@importer = ProductImport::ProductImporter.new(
File.new(file_path),
spree_current_user,
import_into: params[:import_into],
enterprises_to_reset: params[:enterprises_to_reset],
updated_ids: params[:updated_ids],
settings: params[:settings]
)
if params.key?(:enterprises_to_reset) && params.key?(:updated_ids)
@importer.reset_absent(params[:updated_ids])
@@ -56,8 +62,13 @@ module Admin
end
def process_data(method)
@importer = ProductImport::ProductImporter.new(File.new(file_path),
spree_current_user, start: params[:start], end: params[:end], settings: params[:settings])
@importer = ProductImport::ProductImporter.new(
File.new(file_path),
spree_current_user,
start: params[:start],
end: params[:end],
settings: params[:settings]
)
begin
@importer.public_send("#{method}_entries")
@@ -128,7 +139,8 @@ module Admin
end
def raise_invalid_file_path
redirect_to '/admin/product_import', notice: I18n.t(:product_import_no_data_in_spreadsheet_notice)
redirect_to '/admin/product_import',
notice: I18n.t(:product_import_no_data_in_spreadsheet_notice)
raise 'Invalid File Path'
end
TEMP_FILE_PATH_REGEX = %r{^/tmp/product_import[A-Za-z0-9-]*/import\.csv$}

View File

@@ -0,0 +1,7 @@
# frozen_string_literal: true
module Admin
class ProductsV3Controller < Spree::Admin::BaseController
def index; end
end
end

View File

@@ -22,24 +22,29 @@ module Admin
def show
@report = report_class.new(spree_current_user, params, render: render_data?)
@background_reports = OpenFoodNetwork::FeatureToggle
.enabled?(:background_reports, spree_current_user)
if @background_reports && request.post?
return background(report_format)
end
if params[:report_format].present?
export_report
else
show_report
end
rescue Timeout::Error
render_timeout_error
end
private
def export_report
send_data render_report_as(report_format), filename: report_filename
send_data @report.render_as(report_format), filename: report_filename
end
def show_report
assign_view_data
@table = render_report_as(:html) if render_data?
@table = @report.render_as(:html) if render_data?
render "show"
end
@@ -56,45 +61,24 @@ module Admin
request.post?
end
def render_report_as(format)
if OpenFoodNetwork::FeatureToggle.enabled?(:background_reports, spree_current_user)
@blob = ReportBlob.create_for_upload_later!(report_filename)
ReportJob.perform_later(
report_class, spree_current_user, params, format, @blob
)
Timeout.timeout(max_wait_time) do
sleep 1 until @blob.content_stored?
end
def background(format)
cable_ready[ScopedChannel.for_id(params[:uuid])]
.inner_html(
selector: "#report-table",
html: render_to_string(partial: "admin/reports/loading")
).scroll_into_view(
selector: "#report-table",
block: "start"
).broadcast
# This result has been rendered by Rails in safe mode already.
@blob.result.html_safe # rubocop:disable Rails/OutputSafety
else
@report.render_as(format)
end
end
blob = ReportBlob.create_for_upload_later!(report_filename)
def render_timeout_error
assign_view_data
if @blob
@error = ".report_taking_longer_html"
@error_url = @blob.expiring_service_url
else
@error = ".report_taking_longer"
@error_url = ""
end
render "show"
end
ReportJob.perform_later(
report_class: report_class, user: spree_current_user, params: params,
format: format, blob: blob, channel: ScopedChannel.for_id(params[:uuid]),
)
def max_wait_time
# This value is used by rack-timeout and nginx, usually 30 seconds in
# staging and production:
server_timeout = ENV.fetch("RACK_TIMEOUT_SERVICE_TIMEOUT", "15").to_f
# Zero disables the timeout:
return 0 if server_timeout.zero?
# We want to time out earlier than nginx:
server_timeout - 2.seconds
head :no_content
end
end
end

View File

@@ -18,7 +18,8 @@ module Admin
if view_context.subscriptions_setup_complete?(@shops)
@order_cycles = OrderCycle.joins(:schedules).managed_by(spree_current_user)
.includes([:distributors, :cached_incoming_exchanges])
@payment_methods = Spree::PaymentMethod.managed_by(spree_current_user).includes(:taggings)
@payment_methods = Spree::PaymentMethod.managed_by(spree_current_user)
.includes(:taggings)
@payment_method_tags = payment_method_tags_by_id
@shipping_methods = Spree::ShippingMethod.managed_by(spree_current_user)
else
@@ -100,7 +101,8 @@ module Admin
end
def load_shops
@shops = Enterprise.managed_by(spree_current_user).is_distributor.where(enable_subscriptions: true)
@shops = Enterprise.managed_by(spree_current_user)
.is_distributor.where(enable_subscriptions: true)
end
def load_form_data
@@ -139,7 +141,9 @@ module Admin
@open_orders_to_keep = @subscription.proxy_orders.placed_and_open.pluck(:id)
return if @open_orders_to_keep.empty? || params[:open_orders] == 'keep'
render json: { errors: { open_orders: t('admin.subscriptions.confirm_cancel_open_orders_msg') } },
render json: {
errors: { open_orders: t('admin.subscriptions.confirm_cancel_open_orders_msg') }
},
status: :conflict
end
@@ -147,7 +151,9 @@ module Admin
return if params[:canceled_orders] == 'notified'
return if @subscription.proxy_orders.active.canceled.empty?
render json: { errors: { canceled_orders: t('admin.subscriptions.resume_canceled_orders_msg') } },
render json: {
errors: { canceled_orders: t('admin.subscriptions.resume_canceled_orders_msg') }
},
status: :conflict
end

View File

@@ -9,14 +9,11 @@ module Admin
end
def create
voucher_params = permitted_resource_params.merge(enterprise: @enterprise)
@voucher = Voucher.create(voucher_params)
@voucher = Voucher.create(permitted_resource_params.merge(enterprise: @enterprise))
if @voucher.save
redirect_to(
"#{edit_admin_enterprise_path(@enterprise)}#vouchers_panel",
flash: { success: flash_message_for(@voucher, :successfully_created) }
)
flash[:success] = flash_message_for(@voucher, :successfully_created)
redirect_to edit_admin_enterprise_path(@enterprise, anchor: :vouchers_panel)
else
flash[:error] = @voucher.errors.full_messages.to_sentence
render :new

View File

@@ -6,7 +6,7 @@ module Api
skip_authorization_check only: :index
def index
@customers = current_api_user.customers
@customers = current_api_user.customers.visible
render json: @customers, each_serializer: CustomerSerializer
end

View File

@@ -74,7 +74,7 @@ module Api
end
def override_visible
enterprise_params[:visible] = false
enterprise_params[:visible] = "only_through_links"
end
def enterprise_params

View File

@@ -9,9 +9,9 @@ module Api
product = Spree::Product.find(params[:product_id])
authorize! :update, product
image = product.images.first || Spree::Image.new(
viewable_id: product.master.id,
viewable_type: 'Spree::Variant'
image = product.image || Spree::Image.new(
viewable_id: product.id,
viewable_type: 'Spree::Product'
)
success_status = image.persisted? ? :ok : :created

View File

@@ -10,8 +10,6 @@ module Api
respond_to :json
DEFAULT_PER_PAGE = 15
before_action :set_default_available_on, only: :create
skip_authorization_check only: [:show, :bulk_products, :overridable]
def show
@@ -23,15 +21,10 @@ module Api
authorize! :create, Spree::Product
@product = Spree::Product.new(product_params)
begin
if @product.save
render json: @product, serializer: Api::Admin::ProductSerializer, status: :created
else
invalid_resource!(@product)
end
rescue ActiveRecord::RecordNotUnique
@product.permalink = nil
retry
if @product.save
render json: @product, serializer: Api::Admin::ProductSerializer, status: :created
else
invalid_resource!(@product)
end
end
@@ -96,8 +89,6 @@ module Api
private
def find_product(id)
product_scope.find_by!(permalink: id.to_s)
rescue ActiveRecord::RecordNotFound
product_scope.find(id)
end
@@ -116,7 +107,7 @@ module Api
def product_query_includes
[
master: { images: { attachment_attachment: :blob } },
image: { attachment_attachment: :blob },
variants: [:default_price, :stock_locations, :stock_items, :variant_overrides]
]
end
@@ -152,10 +143,6 @@ module Api
@product_params ||=
params.permit(product: PermittedAttributes::Product.attributes)[:product].to_h
end
def set_default_available_on
product_params[:available_on] ||= Time.zone.now
end
end
end
end

View File

@@ -50,15 +50,15 @@ module Api
private
def product
@product ||= Spree::Product.find_by(permalink: params[:product_id]) if params[:product_id]
@product ||= Spree::Product.find(params[:product_id]) if params[:product_id]
end
def scope
if @product
variants = if current_api_user.has_spree_role?("admin") || params[:show_deleted]
@product.variants_including_master.with_deleted
@product.variants.with_deleted
else
@product.variants_including_master
@product.variants
end
else
variants = Spree::Variant.where(nil)

View File

@@ -29,7 +29,8 @@ module Api
def create
authorize! :update, Enterprise.find(customer_params[:enterprise_id])
customer = Customer.new(customer_params)
customer = Customer.find_or_initialize_by(customer_params.slice(:email, :enterprise_id))
customer.assign_attributes(customer_params)
if customer.save
render json: Api::V1::CustomerSerializer.new(customer), status: :created
@@ -80,7 +81,7 @@ module Api
end
def visible_customers
Customer.managed_by(current_api_user)
Customer.visible.managed_by(current_api_user)
end
def customer_params
@@ -96,6 +97,7 @@ module Api
]
).to_h
attributes.merge!(created_manually: true)
attributes.merge!(tag_list: params[:tags]) if params.key?(:tags)
transform_address!(attributes, :billing_address, :bill_address)

View File

@@ -14,7 +14,7 @@ module CheckoutCallbacks
prepend_before_action :require_order_cycle
prepend_before_action :require_distributor_chosen
before_action :load_order, :associate_user, :load_saved_addresses, :load_saved_credit_cards
before_action :load_order, :associate_user, :load_saved_addresses
before_action :load_shipping_methods, if: -> { params[:step] == "details" }
before_action :ensure_order_not_completed
@@ -30,8 +30,6 @@ module CheckoutCallbacks
@order.manual_shipping_selection = true
@order.checkout_processing = true
@voucher_adjustment = @order.voucher_adjustments.first
redirect_to(main_app.shop_path) && return if redirect_to_shop?
redirect_to_cart_path && return unless valid_order_line_items?
end
@@ -43,11 +41,6 @@ module CheckoutCallbacks
@order.ship_address ||= finder.ship_address
end
def load_saved_credit_cards
@saved_credit_cards = spree_current_user&.credit_cards&.with_payment_profile.to_a
@selected_card = nil
end
def load_shipping_methods
@shipping_methods = available_shipping_methods.sort { |a, b| a.name.casecmp(b.name) }
end

View File

@@ -41,8 +41,8 @@ module OrderCompletion
main_app.order_path(@order, order_token: @order.token)
end
def order_failed_route
main_app.checkout_path
def order_failed_route(step: 'details')
main_app.checkout_step_path(step:)
end
def order_invalid_for_checkout?
@@ -60,8 +60,8 @@ module OrderCompletion
def process_payment_completion!
unless @order.process_payments!
processing_failed
return redirect_to order_failed_route
payment_failed
return redirect_to order_failed_route(step: 'payment')
end
if OrderWorkflow.new(@order).next && @order.complete?
@@ -82,12 +82,20 @@ module OrderCompletion
order_completion_reset(@order)
end
def processing_failed(error = RuntimeError.new(order_processing_error))
def payment_failed
notify_failure
end
def processing_failed
notify_failure
Checkout::PostCheckoutActions.new(@order).failure
end
def notify_failure(error = RuntimeError.new(order_processing_error))
Bugsnag.notify(error) do |payload|
payload.add_metadata :order, @order
end
flash[:error] = order_processing_error if flash.blank?
Checkout::PostCheckoutActions.new(@order).failure
end
def order_processing_error

View File

@@ -27,8 +27,11 @@ module PaymentGateways
redirect_to provider.express_checkout_url(pp_response, useraction: 'commit')
else
flash[:error] =
Spree.t('flash.generic_error', scope: 'paypal',
reasons: pp_response.errors.map(&:long_message).join(" "))
Spree.t(
'flash.generic_error',
scope: 'paypal',
reasons: pp_response.errors.map(&:long_message).join(" "),
)
redirect_to main_app.checkout_step_path(:payment)
end
rescue SocketError

View File

@@ -24,14 +24,13 @@ class SplitCheckoutController < ::BaseController
def edit
redirect_to_step_based_on_order unless params[:step]
check_step if params[:step]
recalculate_tax if params[:step] == "summary"
flash_error_when_no_shipping_method_available if available_shipping_methods.none?
return if available_shipping_methods.any?
flash[:error] = I18n.t('split_checkout.errors.no_shipping_methods_available')
end
def update
return process_voucher if params[:apply_voucher].present?
if confirm_order || update_order
return if performed?
@@ -61,27 +60,6 @@ class SplitCheckoutController < ::BaseController
replace("#flashes", partial("shared/flashes", locals: { flashes: flash }))
end
def render_voucher_section_or_redirect
respond_to do |format|
format.cable_ready { render_voucher_section }
format.html { redirect_to checkout_step_path(:payment) }
end
end
# Using the power of cable_car we replace only the #voucher_section instead of reloading the page
def render_voucher_section
render(
status: :ok,
cable_ready: cable_car.replace(
"#voucher-section",
partial(
"split_checkout/voucher_section",
locals: { order: @order, voucher_adjustment: @order.voucher_adjustments.first }
)
)
)
end
def order_error_messages
# Remove ship_address.* errors if no shipping method is not selected
remove_ship_address_errors if no_ship_address_needed?
@@ -126,10 +104,6 @@ class SplitCheckoutController < ::BaseController
end
end
def flash_error_when_no_shipping_method_available
flash[:error] = I18n.t('split_checkout.errors.no_shipping_methods_available')
end
def check_payments_adjustments
@order.payments.each(&:ensure_correct_adjustment)
end
@@ -202,39 +176,6 @@ class SplitCheckoutController < ::BaseController
selected_shipping_method.first.require_ship_address == false
end
def process_voucher
if add_voucher
render_voucher_section_or_redirect
elsif @order.errors.present?
render_error
end
end
def add_voucher
if params.dig(:order, :voucher_code).blank?
@order.errors.add(:voucher, I18n.t('split_checkout.errors.voucher_not_found'))
return false
end
# Fetch Voucher
voucher = Voucher.find_by(code: params[:order][:voucher_code], enterprise: @order.distributor)
if voucher.nil?
@order.errors.add(:voucher, I18n.t('split_checkout.errors.voucher_not_found'))
return false
end
adjustment = voucher.create_adjustment(voucher.code, @order)
if !adjustment.valid?
@order.errors.add(:voucher, I18n.t('split_checkout.errors.add_voucher_error'))
adjustment.errors.each { |error| @order.errors.import(error) }
return false
end
true
end
def summary_step?
params[:step] == "summary"
end
@@ -262,6 +203,7 @@ class SplitCheckoutController < ::BaseController
def validate_payment!
return true if params.dig(:order, :payments_attributes, 0, :payment_method_id).present?
return true if @order.zero_priced_order?
@order.errors.add :payment_method, I18n.t('split_checkout.errors.select_a_payment_method')
end
@@ -308,18 +250,4 @@ class SplitCheckoutController < ::BaseController
redirect_to checkout_step_path(:payment) if params[:step] == "summary"
end
end
def recalculate_tax
@order.create_tax_charge!
@order.update_order!
apply_voucher if @order.voucher_adjustments.present?
end
def apply_voucher
VoucherAdjustmentsService.calculate(@order)
# update order to take into account the voucher we applied
@order.update_order!
end
end

View File

@@ -33,7 +33,7 @@ module Spree
def model_class
const_name = controller_name.classify
return "Spree::#{const_name}".constantize if Spree.const_defined?(const_name)
return "Spree::#{const_name}".constantize if Object.const_defined?("Spree::#{const_name}")
nil
end

View File

@@ -6,7 +6,7 @@ module Spree
# This will make resource controller redirect correctly after deleting product images.
# This can be removed after upgrading to Spree 2.1.
# See here https://github.com/spree/spree/commit/334a011d2b8e16355e4ae77ae07cd93f7cbc8fd1
belongs_to 'spree/product', find_by: :permalink
belongs_to 'spree/product'
before_action :load_data
@@ -25,6 +25,7 @@ module Spree
set_viewable
@object.attributes = permitted_resource_params
if @object.save
flash[:success] = flash_message_for(@object, :successfully_created)
redirect_to spree.admin_product_images_url(params[:product_id], @url_filters)
@@ -62,20 +63,28 @@ module Spree
private
def collection
parent.image
end
def find_resource
parent.image
end
def build_resource
Spree::Image.new(viewable: parent)
end
def location_after_save
spree.admin_product_images_url(@product)
end
def load_data
@product = Product.find_by(permalink: params[:product_id])
@variants = @product.variants.collect do |variant|
[variant.options_text, variant.id]
end
@variants.insert(0, [Spree.t(:all), @product.master.id])
@product = Product.find(params[:product_id])
end
def set_viewable
@image.viewable_type = 'Spree::Variant'
@image.viewable_type = 'Spree::Product'
@image.viewable_id = params[:image][:viewable_id]
end

View File

@@ -4,15 +4,42 @@ module Spree
module Admin
class InvoicesController < Spree::Admin::BaseController
respond_to :json
authorize_resource class: false
def index
@order = Spree::Order.find_by(number: params[:order_id])
authorize! :invoice, @order
end
def create
Spree::Order.where(id: params[:order_ids]).find_each do |order|
authorize! :invoice, order
end
invoice_service = BulkInvoiceService.new
invoice_service.start_pdf_job(params[:order_ids])
render json: invoice_service.id, status: :ok
end
def generate
@order = Order.find_by(number: params[:order_id])
authorize! :invoice, @order
@comparator = OrderInvoiceComparator.new(@order)
if @comparator.can_generate_new_invoice?
@order.invoices.create!(
date: Time.zone.today,
number: @order.invoices.count + 1,
data: invoice_data
)
elsif @comparator.can_update_latest_invoice?
@order.invoices.last.update!(
date: Time.zone.today,
data: invoice_data
)
end
redirect_back(fallback_location: spree.admin_dashboard_path)
end
def show
invoice_id = params[:id]
invoice_pdf = BulkInvoiceService.new.filepath(invoice_id)
@@ -29,6 +56,12 @@ module Spree
render json: { created: false }, status: :unprocessable_entity
end
end
protected
def invoice_data
@invoice_data ||= InvoiceDataGenerator.new(@order).generate
end
end
end
end

View File

@@ -24,7 +24,6 @@ module Spree
end
refresh_shipment_rates
recalculate_taxes
OrderWorkflow.new(@order).advance_to_payment
flash[:success] = Spree.t('customer_details_updated')
@@ -52,15 +51,6 @@ module Spree
@order.shipments.map(&:refresh_rates)
end
def recalculate_taxes
# If the order's address has been changed, the tax zone could be different,
# which means a different set of tax rates might be applicable.
@order.create_tax_charge!
Spree::TaxRate.adjust(@order, @order.adjustments.admin)
@order.update_totals_and_states
end
def order_params
params.require(:order).permit(
:email,

View File

@@ -99,6 +99,10 @@ module Spree
end
def print
if OpenFoodNetwork::FeatureToggle.enabled?(:invoices)
@order = @order.invoices.find(params[:invoice_id]).presenter
end
render_with_wicked_pdf InvoiceRenderer.new.args(@order)
end

View File

@@ -3,7 +3,7 @@
module Spree
module Admin
class ProductPropertiesController < ::Admin::ResourceController
belongs_to 'spree/product', find_by: :permalink
belongs_to 'spree/product'
before_action :find_properties
before_action :setup_property, only: [:index]

View File

@@ -103,7 +103,7 @@ module Spree
protected
def find_resource
Product.find_by!(permalink: params[:id])
Product.find(params[:id])
end
def location_after_save
@@ -121,8 +121,7 @@ module Spree
end
def product_includes
[{ variants: [:images] },
{ master: [:images, :default_price] }]
[:image, { variants: [:images] }]
end
def collection_actions
@@ -182,7 +181,6 @@ module Spree
joins(:product).
where('spree_products.supplier_id IN (?)', editable_enterprises.collect(&:id)).
where('spree_variants.import_date IS NOT NULL').
where(spree_variants: { is_master: false }).
where(spree_variants: { deleted_at: nil }).
order('spree_variants.import_date DESC')
end
@@ -208,7 +206,7 @@ module Spree
end
def set_stock_levels(product, on_hand, on_demand)
variant = product_variant(product)
variant = product.variants.first
begin
variant.on_demand = on_demand if on_demand.present?
@@ -228,14 +226,6 @@ module Spree
end
end
def product_variant(product)
if product.variants.any?
product.variants.first
else
product.master
end
end
def set_product_master_variant_price_to_zero
@product.price = 0 if @product.price.nil?
end

View File

@@ -5,9 +5,7 @@ require 'open_food_network/scope_variants_for_search'
module Spree
module Admin
class VariantsController < ::Admin::ResourceController
belongs_to 'spree/product', find_by: :permalink
before_action :assign_default_attributes, only: :new
belongs_to 'spree/product'
def index
@url_filters = ::ProductFilters.new.extract(request.query_parameters)
@@ -45,6 +43,7 @@ module Spree
flash[:success] = flash_message_for(@object, :successfully_created)
redirect_to spree.admin_product_variants_url(params[:product_id], @url_filters)
else
flash[:error] = @object.errors.full_messages.to_sentence if @object.errors.any?
redirect_to spree.new_admin_product_variant_url(params[:product_id], @url_filters)
end
@@ -83,13 +82,6 @@ module Spree
@object.save
end
def assign_default_attributes
@object.attributes = @object.product.master.
attributes.except('id', 'created_at', 'deleted_at', 'sku', 'is_master')
# Shallow Clone of the default price to populate the price field.
@object.default_price = @object.product.master.default_price.clone
end
def collection
@deleted = params.key?(:deleted) && params[:deleted] == "on" ? "checked" : ""

View File

@@ -33,8 +33,8 @@ module Spree
render status: :ok, cable_ready: cable_car.
inner_html(
"#login-feedback",
partial("layouts/alert",
locals: { type: "alert", message: t('devise.failure.already_registered') })
partial("layouts/alert",
locals: { type: "alert", message: t('devise.failure.already_registered') })
).
dispatch_event(name: "login:modal:open")
else
@@ -48,9 +48,9 @@ module Spree
if @user.save
render cable_ready: cable_car.inner_html(
"#signup-feedback",
partial("layouts/alert",
locals: { type: "success",
message: t('devise.user_registrations.spree_user.signed_up_but_unconfirmed') })
partial("layouts/alert",
locals: { type: "success",
message: t('devise.user_registrations.spree_user.signed_up_but_unconfirmed') })
)
else
render status: :unprocessable_entity, cable_ready: cable_car.morph(

View File

@@ -24,8 +24,8 @@ class UserConfirmationsController < DeviseController
else
render cable_ready: cable_car.inner_html(
"##{params[:tab] || 'forgot'}-feedback",
partial("layouts/alert",
locals: { type: "success", message: t("devise.confirmations.send_instructions") })
partial("layouts/alert",
locals: { type: "success", message: t("devise.confirmations.send_instructions") })
)
return
end

View File

@@ -1,32 +1,81 @@
# frozen_string_literal: true
class VoucherAdjustmentsController < BaseController
include CablecarResponses
before_action :set_order
def create
if add_voucher
VoucherAdjustmentsService.calculate(@order)
@order.update_totals_and_states
update_payment_section
elsif @order.errors.present?
render_error
end
end
def destroy
@order = current_order
@order.voucher_adjustments.find_by(id: params[:id])&.destroy
respond_to do |format|
format.cable_ready { render_voucher_section }
format.html { redirect_to checkout_step_path(:payment) }
# An order can have more than one adjustment linked to one voucher
adjustment = @order.voucher_adjustments.find_by(id: params[:id])
if adjustment.present?
@order.voucher_adjustments.where(originator_id: adjustment.originator_id)&.destroy_all
end
update_payment_section
end
private
# Using the power of cable_car we replace only the #voucher_section instead of reloading the page
def render_voucher_section
render(
status: :ok,
cable_ready: cable_car.replace(
def set_order
@order = current_order
end
def add_voucher
if voucher_params[:voucher_code].blank?
@order.errors.add(:voucher_code, I18n.t('split_checkout.errors.voucher_not_found'))
return false
end
voucher = Voucher.find_by(code: voucher_params[:voucher_code], enterprise: @order.distributor)
if voucher.nil?
@order.errors.add(:voucher_code, I18n.t('split_checkout.errors.voucher_not_found'))
return false
end
adjustment = voucher.create_adjustment(voucher.code, @order)
unless adjustment.valid?
@order.errors.add(:voucher_code, I18n.t('split_checkout.errors.add_voucher_error'))
adjustment.errors.each { |error| @order.errors.import(error) }
return false
end
true
end
def update_payment_section
render cable_ready: cable_car.replace(
selector: "#checkout-payment-methods",
html: render_to_string(partial: "split_checkout/payment", locals: { step: "payment" })
)
end
def render_error
flash.now[:error] = @order.errors.full_messages.to_sentence
render status: :unprocessable_entity, cable_ready: cable_car.
replace("#flashes", partial("shared/flashes", locals: { flashes: flash })).
replace(
"#voucher-section",
partial(
"split_checkout/voucher_section",
locals: { order: @order, voucher_adjustment: @order.voucher_adjustments.first }
)
)
)
end
def voucher_params
params.require(:order).permit(:voucher_code)
end
end

View File

@@ -0,0 +1,74 @@
# frozen_string_literal: true
class EnterpriseFeesBulkUpdate
include ActiveModel::Model
attr_reader :errors
validate :check_enterprise_fee_input
validate :check_calculators_compatibility_with_taxes
def initialize(params)
@errors = ActiveModel::Errors.new self
@params = params
end
def save
return false unless valid?
@enterprise_fee_set = Sets::EnterpriseFeeSet.new(enterprise_fee_bulk_params)
unless @enterprise_fee_set.save
@enterprise_fee_set.errors.each do |error|
@errors.add(error.attribute, error.type)
end
return false
end
true
end
private
def check_enterprise_fee_input
enterprise_fee_bulk_params['collection_attributes'].each do |_, fee_row|
enterprise_fees = fee_row['calculator_attributes']&.slice(
:preferred_flat_percent, :preferred_amount,
:preferred_first_item, :preferred_additional_item,
:preferred_minimal_amount, :preferred_normal_amount,
:preferred_discount_amount, :preferred_per_unit
)
next unless enterprise_fees
enterprise_fees.each do |_, enterprise_amount|
unless enterprise_amount.nil? || Float(enterprise_amount, exception: false)
@errors.add(:base, I18n.t(:calculator_preferred_value_error))
end
end
end
end
def check_calculators_compatibility_with_taxes
enterprise_fee_bulk_params['collection_attributes'].each do |_, enterprise_fee|
next unless enterprise_fee['inherits_tax_category'] == "true"
next unless EnterpriseFee::PER_ORDER_CALCULATORS.include?(enterprise_fee['calculator_type'])
@errors.add(
:base,
I18n.t(
'activerecord.errors.models.enterprise_fee.inherit_tax_requires_per_item_calculator'
)
)
end
end
def enterprise_fee_bulk_params
@params.require(:sets_enterprise_fee_set).permit(
collection_attributes: [
:id, :enterprise_id, :fee_type, :name, :tax_category_id,
:inherits_tax_category, :calculator_type,
{ calculator_attributes: PermittedAttributes::Calculator.attributes }
]
)
end
end

View File

@@ -7,7 +7,8 @@ module AngularFormHelper
container.map do |element|
html_attributes = option_html_attributes(element)
text, value = option_text_and_value(element).map(&:to_s)
%(<option value="#{ERB::Util.html_escape(value)}"#{html_attributes}>#{ERB::Util.html_escape(text)}</option>)
%(<option value="#{ERB::Util.html_escape(value)}"\
#{html_attributes}>#{ERB::Util.html_escape(text)}</option>)
end.join("\n").html_safe
end

View File

@@ -38,15 +38,15 @@ module ApplicationHelper
end.join("\n").html_safe
end
def ng_form_for(name, *args, &block)
def ng_form_for(name, *args, &)
options = args.extract_options!
form_for(name, *(args << options.merge(builder: AngularFormBuilder)), &block)
form_for(name, *(args << options.merge(builder: AngularFormBuilder)), &)
end
# Pass URL helper calls on to spree where applicable so that we don't need to use
# spree.foo_path in any view rendered from non-spree-namespaced controllers.
def method_missing(method, *args, &block)
def method_missing(method, *args, &)
if method.to_s.end_with?('_path', '_url') && spree.respond_to?(method)
spree.public_send(method, *args)
else

View File

@@ -120,6 +120,8 @@ module CheckoutHelper
end
def payment_or_shipping_price(method, order)
return unless method
price = method.compute_amount(order)
if price.zero?
t('checkout_method_free')
@@ -139,7 +141,7 @@ module CheckoutHelper
def stripe_card_options(cards)
cards.map do |cc|
[
"#{cc.brand} #{cc.last_digits} #{I18n.t(:card_expiry_abbreviation)}:"\
"#{cc.brand} #{cc.last_digits} #{I18n.t(:card_expiry_abbreviation)}:" \
"#{cc.month.to_s.rjust(2, '0')}/#{cc.year}", cc.id
]
end

View File

@@ -77,7 +77,8 @@ module EnterprisesHelper
end
def subscriptions_enabled?
spree_current_user.admin? || spree_current_user.enterprises.where(enable_subscriptions: true).any?
spree_current_user.admin? ||
spree_current_user.enterprises.where(enable_subscriptions: true).any?
end
def enterprise_url_selector(enterprise)

View File

@@ -1,11 +1,11 @@
# frozen_string_literal: true
module LinkHelper
def link_to_service(baseurl, name, html_options = {}, &block)
def link_to_service(baseurl, name, html_options = {}, &)
return if name.blank?
html_options = html_options.merge target: '_blank'
link_to ext_url(baseurl, name), html_options, &block
link_to(ext_url(baseurl, name), html_options, &)
end
def ext_url(prefix, url)

View File

@@ -36,6 +36,13 @@ module OrderCyclesHelper
shipping_and_payment_methods: true
end
def distributors_with_editable_shipping_and_payment_methods(order_cycle)
return order_cycle.distributors if Enterprise
.managed_by(spree_current_user).exists?(order_cycle.coordinator.id)
order_cycle.distributors.managed_by(spree_current_user)
end
def order_cycle_status_class(order_cycle)
if order_cycle.undated?
'undated'

View File

@@ -8,4 +8,14 @@ module OrderHelper
def outstanding_balance_label(order)
order.outstanding_balance.label
end
def show_generate_invoice_button?(order)
comparator = order_comparator(order)
comparator.can_generate_new_invoice? ||
comparator.can_update_latest_invoice?
end
def order_comparator(order)
OrderInvoiceComparator.new(order)
end
end

View File

@@ -32,7 +32,28 @@ module ReportsHelper
end
end
def fee_name_options(orders)
EnterpriseFee.where(id: enterprise_fee_ids(orders))
.pluck(:name, :id)
end
def fee_owner_options(orders)
Enterprise.where(id: enterprise_fee_owner_ids(orders))
.pluck(:name, :id)
end
def currency_symbol
Spree::Money.currency_symbol
end
def enterprise_fee_owner_ids(orders)
EnterpriseFee.where(id: enterprise_fee_ids(orders))
.pluck(:enterprise_id)
end
def enterprise_fee_ids(orders)
Spree::Adjustment.enterprise_fee
.where(order_id: orders.map(&:id))
.pluck(:originator_id)
end
end

View File

@@ -3,14 +3,14 @@
module Spree
module Admin
module BaseHelper
def field_container(model, method, options = {}, &block)
def field_container(model, method, options = {}, &)
css_classes = options[:class].to_a
css_classes << 'field'
if error_message_on(model, method).present?
css_classes << 'withError'
end
content_tag(:div,
capture(&block),
capture(&),
class: css_classes.join(' '),
id: "#{model}_#{method}_field")
end

View File

@@ -5,11 +5,7 @@ module Spree
module ImagesHelper
def options_text_for(image)
if image.viewable.is_a?(Spree::Variant)
if image.viewable.is_master?
I18n.t(:all)
else
image.viewable.options_text
end
image.viewable.options_text
else
I18n.t(:all)
end

View File

@@ -31,6 +31,7 @@ module Spree
end
def invoice_links
return [] if OpenFoodNetwork::FeatureToggle.enabled?(:invoices)
return [] unless Spree::Config[:enable_invoices?]
[send_invoice_link, print_invoice_link]

View File

@@ -18,9 +18,8 @@ module Spree
def changeable_orders
# Only returns open order for the current user + shop + oc combo
return @changeable_orders unless @changeable_orders.nil?
unless spree_current_user && current_distributor && current_order_cycle
return @changeable_orders = []
end
return @changeable_orders = [] unless spree_current_user &&
current_distributor && current_order_cycle
return @changeable_orders = [] unless current_distributor.allow_order_changes?
@changeable_orders = Spree::Order.complete.where(

View File

@@ -5,11 +5,13 @@ module Spree
def payment_method(payment)
# hack to allow us to retrieve the name of a "deleted" payment method
id = payment.payment_method_id
return if id.nil?
Spree::PaymentMethod.find_with_destroyed(id)
end
def payment_method_name(payment)
payment_method(payment).name
payment_method(payment)&.name
end
end
end

View File

@@ -7,4 +7,11 @@ class ApplicationJob < ActiveJob::Base
# Most jobs are safe to ignore if the underlying records are no longer available
# discard_on ActiveJob::DeserializationError
private
def enable_active_storage_urls
ActiveStorage::Current.url_options ||=
Rails.application.config.action_controller.default_url_options
end
end

View File

@@ -2,9 +2,14 @@
# Renders a report and stores it in a given blob.
class ReportJob < ApplicationJob
include CableReady::Broadcaster
delegate :render, to: ActionController::Base
before_perform :enable_active_storage_urls
NOTIFICATION_TIME = 5.seconds
def perform(report_class, user, params, format, blob)
def perform(report_class:, user:, params:, format:, blob:, channel: nil)
start_time = Time.zone.now
report = report_class.new(user, params, render: true)
@@ -14,6 +19,8 @@ class ReportJob < ApplicationJob
execution_time = Time.zone.now - start_time
email_result(user, blob) if execution_time > NOTIFICATION_TIME
broadcast_result(channel, format, blob) if channel
end
def email_result(user, blob)
@@ -22,4 +29,17 @@ class ReportJob < ApplicationJob
blob: blob,
).report_ready.deliver_later
end
def broadcast_result(channel, format, blob)
cable_ready[channel].inner_html(
selector: "#report-table",
html: actioncable_content(format, blob)
).broadcast
end
def actioncable_content(format, blob)
return blob.result if format.to_sym == :html
render(partial: "admin/reports/download", locals: { file_url: blob.expiring_service_url })
end
end

View File

@@ -41,7 +41,9 @@ class SubscriptionConfirmJob < ApplicationJob
def recently_closed_order_cycles
OrderCycle.closed.where(
'order_cycles.orders_close_at BETWEEN (?) AND (?) OR order_cycles.updated_at BETWEEN (?) AND (?)', 1.hour.ago, Time.zone.now, 1.hour.ago, Time.zone.now
'order_cycles.orders_close_at BETWEEN (?) AND (?) ' \
'OR order_cycles.updated_at BETWEEN (?) AND (?)',
1.hour.ago, Time.zone.now, 1.hour.ago, Time.zone.now
)
end

View File

@@ -13,7 +13,7 @@ module Spree
@edit_password_reset_url = spree.
edit_spree_user_password_url(reset_password_token: token)
subject = "#{Spree::Config[:site_name]} " \
"#{I18n.t('spree.user_mailer.reset_password_instructions.subject')}"
"#{I18n.t('spree.user_mailer.reset_password_instructions.subject')}"
I18n.with_locale valid_locale(user) do
mail(to: user.email, subject: subject)

View File

@@ -38,14 +38,16 @@ class SubscriptionMailer < ApplicationMailer
@shop = Enterprise.find(summary.shop_id)
@summary = summary
mail(to: @shop.contact.email,
subject: "#{Spree::Config[:site_name]} #{t('subscription_mailer.placement_summary_email.subject')}")
subject: "#{Spree::Config[:site_name]} " \
"#{t('subscription_mailer.placement_summary_email.subject')}")
end
def confirmation_summary_email(summary)
@shop = Enterprise.find(summary.shop_id)
@summary = summary
mail(to: @shop.contact.email,
subject: "#{Spree::Config[:site_name]} #{t('subscription_mailer.confirmation_summary_email.subject')}")
subject: "#{Spree::Config[:site_name]} " \
"#{t('subscription_mailer.confirmation_summary_email.subject')}")
end
private

View File

@@ -15,6 +15,16 @@ class ApplicationRecord < ActiveRecord::Base
ENV["S3_BUCKET"].present? ? :amazon_public : :local
end
# We might have a development environment without S3 but with a database
# dump pointing to S3 images. Accessing the service fails then.
def image_variant_url_for(variant)
if ENV["S3_BUCKET"].present? && variant.service.public?
variant.processed.url
else
url_for(variant)
end
end
def url_for(*args)
Rails.application.routes.url_helpers.url_for(*args)
end

View File

@@ -35,7 +35,7 @@ module Calculator
private
def compute_for(count)
count * preferred_additional_item.to_f + preferred_first_item.to_f
(count * preferred_additional_item.to_f) + preferred_first_item.to_f
end
end
end

View File

@@ -4,7 +4,7 @@ require 'active_support/concern'
# This module is an adapter for OFN to work with Spree 2 code.
#
# Although Spree 2 supports multiple shipments per order, in OFN we have only one shipment per order.
# Although Spree 2 supports multiple shipments per order, in OFN we have only 1 shipment per order.
# A shipment is associated to a shipping_method through a selected shipping_rate.
# See https://github.com/openfoodfoundation/openfoodnetwork/wiki/Spree-Upgrade:-Migration-to-multiple-shipments
# for details.
@@ -30,7 +30,8 @@ module OrderShipment
shipments.first.shipping_method
end
# Finds the shipment's shipping_rate for the given shipping_method_id and selects that shipping_rate.
# Finds the shipment's shipping_rate for the given shipping_method_id
# and selects that shipping_rate.
# If the selection is successful, it persists it in the database by saving the shipment.
# If it fails, it does not clear the current shipping_method selection.
#

View File

@@ -6,7 +6,8 @@ module ProductStock
extend ActiveSupport::Concern
def on_demand
raise 'Cannot determine product on_demand value of product with multiple variants' if variants.size > 1
raise 'Cannot determine product on_demand value of product with multiple variants' if
variants.size > 1
variants.first.on_demand
end

View File

@@ -42,7 +42,8 @@ module VariantStock
# Checks whether this variant is produced on demand.
def on_demand
# A variant that has not been saved yet or has been soft-deleted doesn't have a stock item
# This provides a default value for variant.on_demand using Spree::StockLocation.backorderable_default
# This provides a default value for variant.on_demand
# using Spree::StockLocation.backorderable_default
return Spree::StockLocation.first.backorderable_default if new_record? || deleted?
# This can be removed unless we have seen this error in Bugsnag recently
@@ -76,8 +77,10 @@ module VariantStock
end
end
# Moving Spree::Stock::Quantifier.can_supply? to the variant enables us to override this behaviour for variant overrides
# We can have this responsibility here in the variant because there is only one stock item per variant
# Moving Spree::Stock::Quantifier.can_supply? to the variant enables us
# to override this behaviour for variant overrides
# We can have this responsibility here in the variant because there is
# only one stock item per variant
#
# Here we depend only on variant.total_on_hand and variant.on_demand.
# This way, variant_overrides only need to override variant.total_on_hand and variant.on_demand.
@@ -85,8 +88,10 @@ module VariantStock
on_demand || total_on_hand >= quantity
end
# Moving Spree::StockLocation.fill_status to the variant enables us to override this behaviour for variant overrides
# We can have this responsibility here in the variant because there is only one stock item per variant
# Moving Spree::StockLocation.fill_status to the variant enables us
# to override this behaviour for variant overrides
# We can have this responsibility here in the variant because there is
# only one stock item per variant
#
# Here we depend only on variant.total_on_hand and variant.on_demand.
# This way, variant_overrides only need to override variant.total_on_hand and variant.on_demand.
@@ -102,7 +107,8 @@ module VariantStock
[on_hand, backordered]
end
# We can have this responsibility here in the variant because there is only one stock item per variant
# We can have this responsibility here in the variant because there is
# only one stock item per variant
#
# This enables us to override this behaviour for variant overrides
def move(quantity, originator = nil)
@@ -138,7 +144,8 @@ module VariantStock
# Overwrites stock_item.count_on_hand
#
# Calling stock_item.adjust_count_on_hand will bypass filling backorders and creating stock movements
# Calling stock_item.adjust_count_on_hand will bypass filling backorders
# and creating stock movements
# If that was required we could call self.move
def overwrite_stock_levels(new_level)
stock_item.adjust_count_on_hand(new_level.to_i - stock_item.count_on_hand)

View File

@@ -34,10 +34,17 @@ class Customer < ApplicationRecord
validates :code, uniqueness: { scope: :enterprise_id, allow_nil: true }
validates :email, presence: true, 'valid_email_2/email': true,
uniqueness: { scope: :enterprise_id, message: I18n.t('validation_msg_is_associated_with_an_exising_customer') }
uniqueness: {
scope: :enterprise_id,
message: I18n.t('validation_msg_is_associated_with_an_exising_customer')
}
scope :of, ->(enterprise) { where(enterprise_id: enterprise) }
scope :managed_by, ->(user) { user&.persisted? ? where(user: user).or(of(Enterprise.managed_by(user))) : none }
scope :managed_by, ->(user) {
user&.persisted? ? where(user: user).or(of(Enterprise.managed_by(user))) : none
}
scope :created_manually, -> { where(created_manually: true) }
scope :visible, -> { where(id: Spree::Order.complete.select(:customer_id)).or(created_manually) }
before_create :associate_user

View File

@@ -51,9 +51,9 @@ class Enterprise < ApplicationRecord
belongs_to :owner, class_name: 'Spree::User',
inverse_of: :owned_enterprises
has_many :distributor_payment_methods,
inverse_of: :distributor, foreign_key: :distributor_id
inverse_of: :distributor, foreign_key: :distributor_id
has_many :distributor_shipping_methods,
inverse_of: :distributor, foreign_key: :distributor_id
inverse_of: :distributor, foreign_key: :distributor_id
has_many :payment_methods, through: :distributor_payment_methods
has_many :shipping_methods, through: :distributor_shipping_methods
has_many :customers
@@ -114,11 +114,11 @@ class Enterprise < ApplicationRecord
validate :shopfront_taxons
validate :shopfront_producers
validate :enforce_ownership_limit, if: lambda { owner_id_changed? && !owner_id.nil? }
validates :instagram,
format: {
with: VALID_INSTAGRAM_REGEX,
message: Spree.t('errors.messages.invalid_instagram_url')
}, allow_blank: true
validates :instagram,
format: {
with: VALID_INSTAGRAM_REGEX,
message: Spree.t('errors.messages.invalid_instagram_url')
}, allow_blank: true
validate :validate_white_label_logo_link
before_validation :initialize_permalink, if: lambda { permalink.nil? }
@@ -160,7 +160,7 @@ class Enterprise < ApplicationRecord
scope :is_distributor, -> { where('sells != ?', 'none') }
scope :is_hub, -> { where(sells: 'any') }
scope :supplying_variant_in, lambda { |variants|
joins(supplied_products: :variants_including_master).
joins(supplied_products: :variants).
where('spree_variants.id IN (?)', variants).
select('DISTINCT enterprises.*')
}
@@ -359,7 +359,7 @@ class Enterprise < ApplicationRecord
def category
# Make this crazy logic human readable so we can argue about it sanely.
cat = is_primary_producer ? "producer_" : "non_producer_"
cat << "sells_" + sells
cat << ("sells_" + sells)
# Map backend cases to front end cases.
case cat
@@ -389,7 +389,7 @@ class Enterprise < ApplicationRecord
def current_distributed_taxons
Spree::Taxon
.select("DISTINCT spree_taxons.*")
.joins(products: :variants_including_master)
.joins(products: :variants)
.joins("INNER JOIN (#{current_exchange_variants.to_sql}) \
AS exchange_variants ON spree_variants.id = exchange_variants.variant_id")
end
@@ -459,10 +459,10 @@ class Enterprise < ApplicationRecord
def image_url_for(image, name)
return unless image.variable?
return image.variant(name).processed.url if image.attachment.service.name == :amazon_public
url_for(image.variant(name))
rescue ActiveStorage::Error => e
image_variant_url_for(image.variant(name))
rescue ActiveStorage::Error, MiniMagick::Error, ActionView::Template::Error => e
Bugsnag.notify "Enterprise ##{id} #{image.try(:name)} error: #{e.message}"
Rails.logger.error(e.message)
nil
@@ -493,7 +493,7 @@ class Enterprise < ApplicationRecord
end
def correct_whatsapp_url(phone_number)
phone_number && "https://wa.me/" + phone_number.tr('+ ', '')
phone_number && ("https://wa.me/" + phone_number.tr('+ ', ''))
end
def correct_instagram_url(url)
@@ -505,7 +505,10 @@ class Enterprise < ApplicationRecord
end
def set_unused_address_fields
address.firstname = address.lastname = address.phone = address.company = 'unused' if address.present?
if address.present?
address.firstname = address.lastname = address.phone =
address.company = 'unused'
end
business_address.first_name = business_address.last_name = 'unused' if business_address.present?
end

View File

@@ -55,7 +55,7 @@ class Exchange < ApplicationRecord
}
scope :with_product, lambda { |product|
joins(:exchange_variants).
where('exchange_variants.variant_id IN (?)', product.variants_including_master.select(&:id))
where('exchange_variants.variant_id IN (?)', product.variants.select(&:id))
}
scope :by_enterprise_name, -> {
joins('INNER JOIN enterprises AS sender ON (sender.id = exchanges.sender_id)').

22
app/models/invoice.rb Normal file
View File

@@ -0,0 +1,22 @@
# frozen_string_literal: true
class Invoice < ApplicationRecord
belongs_to :order, class_name: 'Spree::Order'
serialize :data, Hash
before_validation :serialize_order
after_create :cancel_previous_invoices
def presenter
@presenter ||= Invoice::DataPresenter.new(self)
end
def serialize_order
return data unless data.empty?
self.data = Invoice::OrderSerializer.new(order).serializable_hash
end
def cancel_previous_invoices
order.invoices.where.not(id:).update_all(cancelled: true)
end
end

View File

@@ -0,0 +1,133 @@
# frozen_string_literal: true
class Invoice
class DataPresenter
attr_reader :invoice
delegate :data, :date, to: :invoice
FINALIZED_NON_SUCCESSFUL_STATES = %w(canceled returned).freeze
extend Invoice::DataPresenterAttributes
attributes :additional_tax_total, :currency, :included_tax_total, :payment_total,
:shipping_method_id, :state, :total, :number, :note, :special_instructions,
:completed_at
attributes_with_presenter :bill_address, :customer, :distributor, :ship_address,
:shipping_method, :order_cycle
array_attribute :sorted_line_items, class_name: 'LineItem'
array_attribute :all_eligible_adjustments, class_name: 'Adjustment'
array_attribute :payments, class_name: 'Payment'
# if any of the following attributes is updated, a new invoice should be generated
invoice_generation_attributes :additional_tax_total, :all_eligible_adjustments, :bill_address,
:included_tax_total, :payments, :payment_total, :ship_address,
:shipping_method_id, :sorted_line_items, :total
# if any of the following attributes is updated, the latest invoice should be updated
invoice_update_attributes :note, :special_instructions, :state,
:all_eligible_adjustments, :payments
def initialize(invoice)
@invoice = invoice
end
def has_taxes_included
included_tax_total > 0
end
def total_tax
additional_tax_total + included_tax_total
end
def order_completed_at
return nil if data[:completed_at].blank?
Time.zone.parse(data[:completed_at])
end
def checkout_adjustments(exclude: [], reject_zero_amount: true)
adjustments = all_eligible_adjustments
adjustments.reject! { |a| a.originator_type == 'Spree::TaxRate' }
if exclude.include? :line_item
adjustments.reject! { |a|
a.adjustable_type == 'Spree::LineItem'
}
end
if reject_zero_amount
adjustments.reject! { |a| a.amount == 0 }
end
adjustments
end
def display_checkout_taxes_hash
totals = OrderTaxAdjustmentsFetcher.new(nil).totals(all_tax_adjustments)
totals.map do |tax_rate, tax_amount|
{
amount: Spree::Money.new(tax_amount, currency: order.currency),
percentage: number_to_percentage(tax_rate.amount * 100, precision: 1),
rate_amount: tax_rate.amount,
}
end.sort_by { |tax| tax[:rate_amount] }
end
def all_tax_adjustments
all_eligible_adjustments.select { |a| a.originator_type == 'Spree::TaxRate' }
end
def invoice_date
date
end
def paid?
data[:payment_state] == 'paid' || data[:payment_state] == 'credit_owed'
end
def outstanding_balance?
!new_outstanding_balance.zero?
end
def new_outstanding_balance
if state.in?(FINALIZED_NON_SUCCESSFUL_STATES)
-payment_total
else
total - payment_total
end
end
def outstanding_balance_label
new_outstanding_balance.negative? ? I18n.t(:credit_owed) : I18n.t(:balance_due)
end
def last_payment
payments.max_by(&:created_at)
end
def last_payment_method
last_payment&.payment_method
end
def display_outstanding_balance
Spree::Money.new(new_outstanding_balance, currency: currency)
end
def display_checkout_tax_total
Spree::Money.new(total_tax, currency: currency)
end
def display_checkout_total_less_tax
Spree::Money.new(total - total_tax, currency: currency)
end
def display_total
Spree::Money.new(total, currency: currency)
end
end
end

View File

@@ -0,0 +1,34 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class Address < Invoice::DataPresenter::Base
attributes :firstname, :lastname, :address1, :address2, :city, :zipcode, :company, :phone
attributes_with_presenter :state
invoice_generation_attributes :firstname, :lastname, :address1, :address2, :city, :zipcode,
:company, :phone
def full_name
"#{firstname} #{lastname}".strip
end
def address_part1
render_address([address1, address2])
end
def address_part2
render_address([city, zipcode, state&.name])
end
def full_address
render_address([address1, address2, city, zipcode, state&.name])
end
private
def render_address(address_parts)
address_parts.compact_blank.join(', ')
end
end
end
end

View File

@@ -0,0 +1,28 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class Adjustment < Invoice::DataPresenter::Base
attributes :additional_tax_total, :adjustable_type, :amount, :currency, :included_tax_total,
:label, :originator_type
invoice_generation_attributes :additional_tax_total, :adjustable_type, :amount,
:included_tax_total
invoice_update_attributes :label
def display_amount
Spree::Money.new(amount, currency: currency)
end
def display_taxes(display_zero: false)
if included_tax_total.positive?
amount = Spree::Money.new(included_tax_total, currency: currency)
I18n.t(:tax_amount_included, amount: amount)
elsif additional_tax_total.positive?
Spree::Money.new(additional_tax_total, currency: currency)
elsif display_zero
Spree::Money.new(0.00, currency: currency)
end
end
end
end
end

View File

@@ -0,0 +1,14 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class Base
attr_reader :data
def initialize(data)
@data = data
end
extend Invoice::DataPresenterAttributes
end
end
end

View File

@@ -0,0 +1,8 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class BillAddress < Invoice::DataPresenter::Address
end
end
end

View File

@@ -0,0 +1,8 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class BusinessAddress < Invoice::DataPresenter::Address
end
end
end

View File

@@ -0,0 +1,9 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class Contact < Invoice::DataPresenter::Base
attributes :name, :email
end
end
end

View File

@@ -0,0 +1,9 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class Customer < Invoice::DataPresenter::Base
attributes :code, :email
end
end
end

View File

@@ -0,0 +1,14 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class Distributor < Invoice::DataPresenter::Base
attributes :name, :abn, :acn, :logo_url, :display_invoice_logo, :invoice_text, :email_address
attributes_with_presenter :contact, :address, :business_address
def display_invoice_logo?
display_invoice_logo == true
end
end
end
end

View File

@@ -0,0 +1,33 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class LineItem < Invoice::DataPresenter::Base
attributes :added_tax, :currency, :included_tax, :price_with_adjustments, :quantity,
:variant_id
attributes_with_presenter :variant
invoice_generation_attributes :added_tax, :included_tax, :price_with_adjustments,
:quantity, :variant_id
delegate :name_to_display, :options_text, to: :variant
def display_amount_with_adjustments
Spree::Money.new((price_with_adjustments * quantity), currency: currency)
end
def single_display_amount_with_adjustments
Spree::Money.new(price_with_adjustments, currency: currency)
end
def display_line_items_taxes(display_zero: true)
if included_tax.positive?
Spree::Money.new( included_tax, currency: currency)
elsif added_tax.positive?
Spree::Money.new( added_tax, currency: currency)
elsif display_zero
Spree::Money.new(0.00, currency: currency)
end
end
end
end
end

View File

@@ -0,0 +1,9 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class OrderCycle < Invoice::DataPresenter::Base
attributes :name
end
end
end

View File

@@ -0,0 +1,25 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class Payment < Invoice::DataPresenter::Base
attributes :amount, :currency, :state, :payment_method_id
attributes_with_presenter :payment_method
invoice_generation_attributes :amount, :payment_method_id
invoice_update_attributes :state
def created_at
datetime = data&.[](:created_at)
datetime.present? ? Time.zone.parse(datetime) : nil
end
def display_amount
Spree::Money.new(amount, currency: currency)
end
def payment_method_name
payment_method&.name
end
end
end
end

View File

@@ -0,0 +1,10 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class PaymentMethod < Invoice::DataPresenter::Base
attributes :id, :name, :description
invoice_generation_attributes :id
end
end
end

View File

@@ -0,0 +1,10 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class Product < Invoice::DataPresenter::Base
attributes :name
attributes_with_presenter :supplier
end
end
end

View File

@@ -0,0 +1,8 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class ShipAddress < Invoice::DataPresenter::Address
end
end
end

View File

@@ -0,0 +1,10 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class ShippingMethod < Invoice::DataPresenter::Base
attributes :id, :name, :require_ship_address
invoice_generation_attributes :id
end
end
end

View File

@@ -0,0 +1,9 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class State < Invoice::DataPresenter::Base
attributes :name
end
end
end

View File

@@ -0,0 +1,9 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class Supplier < Invoice::DataPresenter::Base
attributes :name
end
end
end

View File

@@ -0,0 +1,16 @@
# frozen_string_literal: false
class Invoice
class DataPresenter
class Variant < Invoice::DataPresenter::Base
attributes :id, :display_name, :options_text
attributes_with_presenter :product
def name_to_display
return product.name if display_name.blank?
display_name
end
end
end
end

Some files were not shown because too many files have changed in this diff Show More