Compare commits

...

1996 Commits

Author SHA1 Message Date
filipefurtad0
0a5982bb8f Update all locales with the latest Transifex translations 2024-01-12 12:12:17 +00:00
filipefurtad0
6eb56fa79b Update all locales with the latest Transifex translations 2024-01-12 11:59:48 +00:00
Filipe
4c96eb40df Merge pull request #11932 from dacook/buu-dropdown-tweaks-11518
[BUU] Dropdown UI tweaks (tom-select)
2024-01-12 11:41:07 +00:00
Filipe
2cd3545d1d Merge pull request #12015 from rioug/fix-select-customer-search
Backoffice, fix customer search when searching by first name
2024-01-12 11:22:13 +00:00
Rachel Arnould
877a145874 Merge branch 'master' into buu-dropdown-tweaks-11518 2024-01-12 10:40:19 +01:00
Maikel
2ff2cebb0d Merge pull request #12033 from openfoodfoundation/dependabot/bundler/newrelic_rpm-9.7.0
Bump newrelic_rpm from 9.6.0 to 9.7.0
2024-01-12 08:58:46 +11:00
Maikel
90fb0ed399 Merge pull request #12024 from rioug/11707-DFC-update-enterprise-group
[DFC] add/delete enterprise to enterprise group
2024-01-12 08:53:17 +11:00
Filipe
2493ee5e2a Merge pull request #11982 from drummer83/logo_size
Make hint for logo size translatable and adjust to 300 px
2024-01-11 19:27:11 +00:00
Rachel Arnould
6ff2be17c6 Merge pull request #12023 from dacook/buu/sticky_table_header_and_saving_banner-2
[BUU] Sticky table header and saving banner - alternate solution
2024-01-11 15:23:06 +01:00
dependabot[bot]
f66cdba0da Bump newrelic_rpm from 9.6.0 to 9.7.0
Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.6.0 to 9.7.0.
- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)
- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.6.0...9.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-11 09:13:52 +00:00
David Cook
ef82925710 Merge pull request #12032 from mkllnk/swagger
Show DFC API first in documentation
2024-01-11 16:45:16 +11:00
Maikel Linke
3425be4ded Show DFC API first in documentation
The capabilities and documentation for the DFC API are bigger. And since
it's in active development, people want to check the DFC API more
frequently. They needed to find the switch to select the DFC API in the
top right corner but now it's displayed straight away.
2024-01-11 15:14:10 +11:00
Maikel Linke
30b5d065c1 Replace deprecated swagger syntax 2024-01-11 15:13:41 +11:00
Maikel
d197251262 Merge pull request #12026 from dacook/rubocop-autocorrect
Autocorrect Rubocop issues
2024-01-11 09:04:49 +11:00
Maikel
1f8fe7b8ed Merge pull request #12027 from openfoodfoundation/dependabot/bundler/view_component-3.10.0
Bump view_component from 3.9.0 to 3.10.0
2024-01-11 08:55:09 +11:00
Maikel
52baa96fa3 Merge pull request #12028 from openfoodfoundation/dependabot/bundler/knapsack_pro-6.0.4
Bump knapsack_pro from 6.0.3 to 6.0.4
2024-01-11 08:54:14 +11:00
Maikel
a3e7898194 Merge pull request #12029 from openfoodfoundation/dependabot/bundler/faraday-2.9.0
Bump faraday from 2.8.1 to 2.9.0
2024-01-11 08:53:28 +11:00
Konrad
1c01af5874 Merge pull request #11983 from bmd08a1/opt/fix-enterprise-roles
Improve `admin/enterprise_roles` page performance
2024-01-10 20:30:41 +01:00
Konrad
19dd5b110c Merge pull request #12009 from chahmedejaz/bugfix/11971-tos-position-issue
Fix ToS Position Issue
2024-01-10 19:36:57 +01:00
dependabot[bot]
bb031b6bf6 Bump faraday from 2.8.1 to 2.9.0
Bumps [faraday](https://github.com/lostisland/faraday) from 2.8.1 to 2.9.0.
- [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.8.1...v2.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-10 09:09:23 +00:00
dependabot[bot]
286816700d Bump knapsack_pro from 6.0.3 to 6.0.4
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 6.0.3 to 6.0.4.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v6.0.3...v6.0.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>
2024-01-10 09:08:02 +00:00
dependabot[bot]
013ee6e9b7 Bump view_component from 3.9.0 to 3.10.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.9.0 to 3.10.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.9.0...v3.10.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>
2024-01-10 09:06:32 +00:00
David Cook
0bb0e1674e Remove unused rule
I forgot to remove this before.
2024-01-10 16:41:47 +11:00
Gaetan Craig-Riou
a78042cee1 Remove save after adding an association with <<
`<<` operator already save the the association to the database
2024-01-10 15:48:36 +11:00
David Cook
443b3134df Tweak padding
I'm not sure why this requires extra padding here, but it looks good 🤷

Co-authored-by: Mario Carabotta <6696729+mariocarabotta@users.noreply.github.com>
2024-01-10 14:26:56 +11:00
David Cook
792dc2cb36 Add shadow 2024-01-10 14:15:10 +11:00
Gaetan Craig-Riou
92921c89d1 Add enpoint to delete enterprise from group
Plus documentation
2024-01-10 12:44:02 +11:00
David Cook
c3e513e457 Move .form-actions into table, to allow sticky stacking
Unfortunately, it's not possible to stack two sticky elements that are inside different containers:
https://stackoverflow.com/questions/54689034/pure-css-multiple-stacked-position-sticky

So instead I've moved them under the same container. The .form-actions needs to cover up some of the table border.
I don't like the deep nesting of markup or class naming.. pls suggest if you have better ideas!
2024-01-10 12:33:41 +11:00
Gaetan Craig-Riou
b90349e4c2 Add endpoint to add enterprise to a group
plus documentaion
2024-01-10 12:31:38 +11:00
David Cook
a2f3179510 Merge pull request #12025 from openfoodfoundation/dependabot/bundler/bugsnag-6.26.1
Bump bugsnag from 6.26.0 to 6.26.1
2024-01-10 11:38:02 +11:00
David Cook
c1486630e1 Merge pull request #12022 from openfoodfoundation/dependabot/npm_and_yarn/follow-redirects-1.15.4
Bump follow-redirects from 1.14.8 to 1.15.4
2024-01-10 11:36:17 +11:00
David Cook
c95d7523f6 Merge pull request #12013 from mkllnk/spec-file-helper
DRY specs with fixture_file_upload helper
2024-01-10 10:28:23 +11:00
David Cook
47418d9873 Merge pull request #12014 from mkllnk/voucher-on
Remove feature toggle for vouchers, they are always on
2024-01-10 09:58:35 +11:00
David Cook
2a3d498c13 Style/RedundantReturn 2024-01-10 09:38:35 +11:00
David Cook
7e00dbfd67 Style/RedundantParentheses 2024-01-10 09:38:21 +11:00
David Cook
18c2b2512b Safely autocorrect Style/RedundantLineContinuation
Inspecting 1530 files
.................................................................................................................................................................................C................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.......................................................................................................................

Offenses:

app/helpers/shop_helper.rb:48:43: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
    no_open_order_cycles?(order_cycles) &&
                                          ^
app/helpers/shop_helper.rb:48:44: C: [Corrected] Style/RedundantLineContinuation: Redundant line continuation.
    no_open_order_cycles?(order_cycles) && \ ...
                                           ^
spec/system/admin/configuration/content_spec.rb:35:64: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
    expect(page).to have_selector :link, "markdown link", href:
                                                               ^
spec/system/admin/configuration/content_spec.rb:35:65: C: [Corrected] Style/RedundantLineContinuation: Redundant line continuation.
    expect(page).to have_selector :link, "markdown link", href: \ ...
                                                                ^

1530 files inspected, 4 offenses detected, 4 offenses corrected
2024-01-10 09:29:37 +11:00
David Cook
fbbaf51522 Safely autocorrect Lint/SymbolConversion
Inspecting 1530 files
.....................................................................................................................................................................................................................................................................................................................................................W.................................................................................................................................................................................................................................................W..........................................................................................................................................................................................................................................................W.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/models/spree/preferences/preferable_class_methods.rb:73:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"preferred_#{name}" instead.
        "preferred_#{name}".to_sym
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/preferences/preferable_class_methods.rb:77:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"preferred_#{name}=" instead.
        "preferred_#{name}=".to_sym
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/preferences/preferable_class_methods.rb:81:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"prefers_#{name}?" instead.
        "prefers_#{name}?".to_sym
        ^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/preferences/preferable_class_methods.rb:85:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"prefers_#{name}=" instead.
        "prefers_#{name}=".to_sym
        ^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/preferences/preferable_class_methods.rb:89:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"preferred_#{name}_default" instead.
        "preferred_#{name}_default".to_sym
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/preferences/preferable_class_methods.rb:93:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"preferred_#{name}_type" instead.
        "preferred_#{name}_type".to_sym
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/preferences/preferable_class_methods.rb:97:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"preferred_#{name}_description" instead.
        "preferred_#{name}_description".to_sym
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/sets/product_set.rb:121:28: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"variant_#{error.attribute}" instead.
        product.errors.add("variant_#{error.attribute}".to_sym, error.message)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/spree/core/environment_extension.rb:11:24: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"#{name}=" instead.
        create_method( "#{name}=".to_sym ) { |val|
                       ^^^^^^^^^^^^^^^^^

1530 files inspected, 9 offenses detected, 9 offenses corrected
2024-01-10 09:21:43 +11:00
Konrad
7c33c9749d Merge pull request #11999 from chahmedejaz/task/11923-add-vouchers-to-oc-customer-total-report
Add Vouchers to OC Customer Total Report
2024-01-09 20:56:50 +01:00
Konrad
591885610a Merge branch 'master' into task/11923-add-vouchers-to-oc-customer-total-report 2024-01-09 18:51:47 +01:00
Konrad
1e2985b3cb Merge pull request #11990 from dacook/form-hotkeys
Add keyboard shortcut to submit forms
2024-01-09 18:33:33 +01:00
dependabot[bot]
d847565bfb Bump bugsnag from 6.26.0 to 6.26.1
Bumps [bugsnag](https://github.com/bugsnag/bugsnag-ruby) from 6.26.0 to 6.26.1.
- [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/compare/v6.26.0...v6.26.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 10:00:06 +00:00
David Cook
4f27bea02f Make table header sticky
But it overlaps the .form-actions. how to make them sticky together..

todo: register the z-index in variables.scss
2024-01-09 17:07:37 +11:00
Gaetan Craig-Riou
626e903ab9 Add ability for controller to use CanCan 2024-01-09 14:44:12 +11:00
David Cook
e48d009668 Hide #sort section instead of covering it
Before, the .form-actions was overlaying it, to avoid making the table below jump. But if the .form-actions and #sort are the same height, it won't jump when we swap them.

It does make the table jump in the case of a multi-line .form-actions message, but that only happens after submit anyway.

This is needed for the next commit..
2024-01-09 13:11:49 +11:00
David Cook
2defc4afa7 Ensure form-actions content uses available space
Using pre-defined colunms was a hacky short term solution, this way is more flexible.
2024-01-09 12:34:05 +11:00
Gaetan Craig-Riou
a7fbff12dd Merge pull request #12019 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.5.4
Bump @floating-ui/dom from 1.5.3 to 1.5.4
2024-01-09 09:57:00 +11:00
Gaetan Craig-Riou
5ebc8be887 Merge pull request #12017 from openfoodfoundation/dependabot/bundler/bullet-7.1.5
Bump bullet from 7.1.4 to 7.1.5
2024-01-09 09:55:39 +11:00
dependabot[bot]
ee6fd0ffeb Bump follow-redirects from 1.14.8 to 1.15.4
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.8 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.8...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 22:54:20 +00:00
Gaetan Craig-Riou
c84e3d9018 Merge pull request #12016 from openfoodfoundation/dependabot/bundler/puma-6.4.2
Bump puma from 6.4.1 to 6.4.2
2024-01-09 09:53:47 +11:00
Rachel Arnould
16a091d95c Merge pull request #11921 from abdellani/11431-show_warning_when_a_new_invoice_can_be_generated
show warning when a new invoice can be generated
2024-01-08 16:45:11 +01:00
Rachel Arnould
f7aca7a9f1 Merge branch 'master' into 11431-show_warning_when_a_new_invoice_can_be_generated 2024-01-08 16:38:39 +01:00
Rachel Arnould
bd0a296100 Merge pull request #11846 from chahmedejaz/task/11068-delete-product-or-variant
[BUU] Add option to delete a product or variant
2024-01-08 13:17:29 +01:00
dependabot[bot]
c3e102aa0e Bump @floating-ui/dom from 1.5.3 to 1.5.4
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.5.3 to 1.5.4.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.5.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>
2024-01-08 09:36:52 +00:00
dependabot[bot]
d8c6241398 Bump bullet from 7.1.4 to 7.1.5
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.1.4 to 7.1.5.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.1.4...7.1.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 09:09:30 +00:00
dependabot[bot]
da1ed8c118 Bump puma from 6.4.1 to 6.4.2
Bumps [puma](https://github.com/puma/puma) from 6.4.1 to 6.4.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.4.1...v6.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 09:07:26 +00:00
Maikel Linke
4e510e9bd0 Avoid warning hiding main menu in report spec 2024-01-08 15:54:25 +11:00
Maikel Linke
38843c4d4d Remove use of feature vouchers 2024-01-08 15:53:50 +11:00
Maikel Linke
9aff9efa86 Remove feature vouchers 2024-01-08 15:53:50 +11:00
Maikel Linke
a8c83b670b Remove superfluous feature tag from specs 2024-01-08 15:53:50 +11:00
Maikel Linke
e2eead0f86 Scroll to reveal White Label tab
The Vouchers tab pushed the White Label tab further down and it was
hidden by the savebar. The CSS adjustment in this commit makes sure
that users can always see all menu items.

The automatic scrolling by Capybara fails because of the savebar but
scrolling to the bottom works.
2024-01-08 15:52:17 +11:00
Gaetan Craig-Riou
9d13549de4 Remove jquery usage
Also remove populating user_id as it's not on the page
2024-01-08 15:51:37 +11:00
Gaetan Craig-Riou
5f499a9d3f Add search on first name 2024-01-08 15:22:28 +11:00
Maikel Linke
b0b061f97d Activate vouchers for dev and test
CI can then tell me if some specs still rely on it being disabled.
2024-01-08 14:30:28 +11:00
Maikel Linke
2699ae6ca7 DRY terms of service PDF file use in specs 2024-01-08 13:01:21 +11:00
Maikel Linke
dd639435f1 Remove unnecessary image file helper 2024-01-08 13:01:21 +11:00
Maikel Linke
6327f46733 Use fixture_file_upload helper where possible
We can't use it in factories but in other places it's a nice shortcut.
2024-01-08 11:32:01 +11:00
Maikel Linke
41112c1462 DRY uploaded file use in specs 2024-01-08 11:32:01 +11:00
Maikel
e11d1582f2 Merge pull request #11994 from abdellani/11673-upgrade-paper_trail
upgrade paper-trail to 15.1
2024-01-08 09:34:51 +11:00
Konrad
1e9aaf17ba Merge pull request #11981 from bouaik/fix-flash-type-when-updating-entreprise-fees
Fix flash type when updating entreprise fees
2024-01-06 20:45:16 +01:00
Gaetan Craig-Riou
b0541b0a34 Merge pull request #12004 from mkllnk/default-country
Cache default country simply in memory
2024-01-05 14:10:35 +11:00
Maikel Linke
a1b02de11e Update all locales with the latest Transifex translations 2024-01-05 12:16:41 +11:00
Maikel
a35b42da2f Merge pull request #12008 from openfoodfoundation/dependabot/bundler/shoulda-matchers-6.0.0
Bump shoulda-matchers from 5.3.0 to 6.0.0
2024-01-05 12:10:09 +11:00
Maikel Linke
57a6d1ef06 Partial spec of error message for readability
This avoids Rubocop warnings. We don't need to test for the whole
message. The tested part is unique already and quicker to read.
2024-01-05 11:48:30 +11:00
Maikel
6bdbb270d3 Merge pull request #12010 from openfoodfoundation/dependabot/bundler/view_component-3.9.0
Bump view_component from 3.8.0 to 3.9.0
2024-01-05 11:42:23 +11:00
Maikel
def32bcab8 Merge pull request #12007 from openfoodfoundation/dependabot/bundler/mime-types-3.5.2
Bump mime-types from 3.5.1 to 3.5.2
2024-01-05 11:41:08 +11:00
Maikel
582ea2c1bb Merge pull request #12006 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.142.0
Bump aws-sdk-s3 from 1.141.0 to 1.142.0
2024-01-05 11:40:10 +11:00
dependabot[bot]
b5c413b9e7 Bump view_component from 3.8.0 to 3.9.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.8.0 to 3.9.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.8.0...v3.9.0)

---
updated-dependencies:
- dependency-name: view_component
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-04 22:05:30 +00:00
Ahmed Ejaz
056907d195 11971: update z-index for ToS 2024-01-05 00:59:42 +05:00
dependabot[bot]
0e9ef61648 Bump shoulda-matchers from 5.3.0 to 6.0.0
Bumps [shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers) from 5.3.0 to 6.0.0.
- [Release notes](https://github.com/thoughtbot/shoulda-matchers/releases)
- [Changelog](https://github.com/thoughtbot/shoulda-matchers/blob/main/CHANGELOG.md)
- [Commits](https://github.com/thoughtbot/shoulda-matchers/compare/v5.3.0...v6.0.0)

---
updated-dependencies:
- dependency-name: shoulda-matchers
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-04 09:22:11 +00:00
dependabot[bot]
9a0685bec4 Bump mime-types from 3.5.1 to 3.5.2
Bumps [mime-types](https://github.com/mime-types/ruby-mime-types) from 3.5.1 to 3.5.2.
- [Changelog](https://github.com/mime-types/ruby-mime-types/blob/main/History.md)
- [Commits](https://github.com/mime-types/ruby-mime-types/compare/v3.5.1...v3.5.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-04 09:17:21 +00:00
dependabot[bot]
36c6d5fd2e Bump aws-sdk-s3 from 1.141.0 to 1.142.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.141.0 to 1.142.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>
2024-01-04 09:12:23 +00:00
Ahmed Ejaz
25c1f64876 Update lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb
Co-authored-by: Gaetan Craig-Riou <40413322+rioug@users.noreply.github.com>
2024-01-04 12:53:24 +05:00
Maikel Linke
883bfcdf0d Simplify column toggling in report spec
* This partly reverts 3a957fb988.
2024-01-04 16:53:36 +11:00
Maikel Linke
074e97c414 Remove paper_trail version restriction for Dependabot updates 2024-01-04 16:01:35 +11:00
Maikel
e2aeb18359 Merge pull request #11998 from abdellani/remove-unecessary-require-instructions
remove unnecessary require instructions
2024-01-04 15:30:33 +11:00
Maikel
f986825311 Merge pull request #11996 from openfoodfoundation/dependabot/bundler/active_storage_validations-1.1.4
Bump active_storage_validations from 1.1.3 to 1.1.4
2024-01-04 13:59:51 +11:00
Maikel Linke
cb3cd3e7ea Cache default country simply in memory
This simplifies the code, avoids a method naming collision with Rails
and should be faster as well.
2024-01-04 13:45:36 +11:00
dependabot[bot]
9e9daa0239 Bump active_storage_validations from 1.1.3 to 1.1.4
Bumps [active_storage_validations](https://github.com/igorkasyanchuk/active_storage_validations) from 1.1.3 to 1.1.4.
- [Release notes](https://github.com/igorkasyanchuk/active_storage_validations/releases)
- [Changelog](https://github.com/igorkasyanchuk/active_storage_validations/blob/master/CHANGES.md)
- [Commits](https://github.com/igorkasyanchuk/active_storage_validations/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-04 01:37:31 +00:00
Gaetan Craig-Riou
759aa684d6 Merge pull request #11997 from openfoodfoundation/dependabot/bundler/pdf-reader-2.12.0
Bump pdf-reader from 2.11.0 to 2.12.0
2024-01-04 12:37:25 +11:00
Gaetan Craig-Riou
eee4ef847d Merge pull request #11995 from openfoodfoundation/dependabot/bundler/puma-6.4.1
Bump puma from 6.4.0 to 6.4.1
2024-01-04 12:32:36 +11:00
Gaetan Craig-Riou
85f1c58e52 Merge pull request #11993 from abdellani/11673-upgrade-ransack
upgrade ransack to 4.1.0
2024-01-04 12:06:08 +11:00
Dung Bui
14d755d706 fix typo 2024-01-04 07:55:19 +07:00
Filipe
c2100bb607 Merge pull request #12002 from openfoodfoundation/RachL-patch-2
Update copyright year in README.md
2024-01-03 17:54:04 +00:00
Dung Bui
ab6a7e307b remove unused helpers 2024-01-04 00:19:15 +07:00
Dung Bui
f1da550912 remove unused structs 2024-01-04 00:19:15 +07:00
Dung Bui
b844b188ce fix enterprise roles page performance 2024-01-04 00:19:15 +07:00
Rachel Arnould
84aada4137 Update README.md
Changing the year in the readme - Happy New Year!
2024-01-03 15:32:45 +01:00
Mohamed ABDELLANI
1ffdca3fc2 require tag_rule_applicator as it's not loaded automatically on OrderAvailableShippingMethods & OrderAvailablePaymentMethods 2024-01-03 12:08:26 +01:00
Ahmed Ejaz
dcc962a8fd 11923: fix lint issues 2024-01-03 16:02:07 +05:00
Mohamed ABDELLANI
3fab2c350e require tag_rule_applicator on Shop::OrderCyclesList 2024-01-03 11:59:21 +01:00
Ahmed Ejaz
c06f251ff3 11923: update voucher_amount logic 2024-01-03 15:54:32 +05:00
Ahmed Ejaz
3a957fb988 11923: add specs 2024-01-03 15:46:16 +05:00
Mohamed ABDELLANI
ab1a0ba986 add ActiveSupport::TimeZone to yaml_column_permitted_classes 2024-01-03 11:41:37 +01:00
Mohamed ABDELLANI
d239beb226 remove unnecessary require instructions 2024-01-03 11:34:57 +01:00
Mohamed ABDELLANI
d591ce6977 add Time to yaml_column_permitted_classes 2024-01-03 11:24:50 +01:00
Mohamed ABDELLANI
0a474f9288 add "ActiveSupport::TimeWithZone" to yaml_column_permitted_classes 2024-01-03 11:12:06 +01:00
Rachel Arnould
edfd4277ac Merge pull request #11977 from drummer83/my_pr-11936
Fixes minor styling issues of admin and admin v3 in the dashboard
2024-01-03 10:47:56 +01:00
dependabot[bot]
f2e4343fad Bump pdf-reader from 2.11.0 to 2.12.0
Bumps [pdf-reader](https://github.com/yob/pdf-reader) from 2.11.0 to 2.12.0.
- [Changelog](https://github.com/yob/pdf-reader/blob/main/CHANGELOG)
- [Commits](https://github.com/yob/pdf-reader/compare/v2.11.0...v2.12.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-03 09:40:18 +00:00
dependabot[bot]
9f785cc7b9 Bump puma from 6.4.0 to 6.4.1
Bumps [puma](https://github.com/puma/puma) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.4.0...v6.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-03 09:37:32 +00:00
Mohamed ABDELLANI
ec439b4bf7 update paper-trail to 15.1 2024-01-03 10:28:17 +01:00
Mohamed ABDELLANI
81c2fdd62a upgrade ransack to 4.1.0 2024-01-03 10:19:27 +01:00
Maikel
1746ba5878 Merge pull request #11972 from filipefurtad0/fix_flaky_enterprise_navigation
Moves test introduced by #11799 to avoid non-explicit modal acceptance
2024-01-03 11:19:33 +11:00
Maikel
b9f117e643 Merge pull request #11959 from mkllnk/connect-app-id
Send semantic id when connecting enterprise to app
2024-01-03 11:18:01 +11:00
Maikel
990984108f Merge pull request #11956 from mkllnk/dfc-product-name
Use full product and variant name on DFC API
2024-01-03 11:17:44 +11:00
Maikel
63ce91d52a Merge pull request #11954 from mkllnk/delete-app
Enterprise user can remove Connected Apps
2024-01-03 11:17:26 +11:00
Maikel
1f0c5fc187 Merge pull request #11963 from filipefurtad0/stripe_payment_status_spec_vcr
Tests app/services/stripe_payment_status.rb
2024-01-03 10:57:46 +11:00
Maikel
5c4dcf371b Merge pull request #11979 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.23.1
Bump rubocop-rails from 2.23.0 to 2.23.1
2024-01-03 10:57:34 +11:00
Maikel
b5c145c15f Merge pull request #11989 from openfoodfoundation/dependabot/npm_and_yarn/moment-2.30.1
Bump moment from 2.29.4 to 2.30.1
2024-01-03 10:46:42 +11:00
Maikel
1d4e0ec779 Merge pull request #11980 from openfoodfoundation/dependabot/bundler/combine_pdf-1.0.26
Bump combine_pdf from 1.0.25 to 1.0.26
2024-01-03 10:44:54 +11:00
Maikel
6e26eda08a Merge pull request #11969 from openfoodfoundation/dependabot/bundler/debug-1.9.1
Bump debug from 1.9.0 to 1.9.1
2024-01-03 10:43:54 +11:00
Ahmed Ejaz
862edbe55b 11923: add voucher to OC customer total report 2023-12-30 14:35:37 +05:00
David Cook
aa3d4c3f6e Add keyboard shortcut to submit forms on frontend 2023-12-29 15:02:43 +11:00
David Cook
78e2311f59 Add keyboard shortcut to submit form in admin
Unfortunately it doesn't work for Angular forms. I'm not sure if there's a way to trigger an angular submit.
2023-12-29 14:57:59 +11:00
David Cook
50fb8466a9 [add package] hotkeys-js 2023-12-29 14:57:39 +11:00
David Cook
e62cd0eb89 Add reports readme [doc]
It doesn't say much yet, but could be a helpful starting point. Hopefully we will add to it next time we're working on it.

[skip ci]
2023-12-29 13:58:55 +11:00
Ahmed Ejaz
c2693d1a32 11068: add responsiveness to delete modal actions 2023-12-29 03:02:16 +05:00
Ahmed Ejaz
1d6a089754 11068: fix specs 2023-12-28 22:11:52 +05:00
Ahmed Ejaz
17bd3bb0cc 11068: update setModalDataset logic to generic logic 2023-12-28 21:34:37 +05:00
Ahmed Ejaz
f194b03882 11068: add sleep of 0.1s 2023-12-28 17:51:52 +05:00
Ahmed Ejaz
548ffc0222 11068: replace p tag with a tag 2023-12-28 17:28:26 +05:00
Ahmed Ejaz
813ebd9129 11068: add confirm_actions to close the modal 2023-12-28 17:07:18 +05:00
Ahmed Ejaz
047e63541c 11068: add black-text css class 2023-12-28 17:06:56 +05:00
Ahmed Ejaz
0fd868b669 11068: update variant_scope method to inline 2023-12-28 17:06:21 +05:00
dependabot[bot]
74214aba7e Bump moment from 2.29.4 to 2.30.1
Bumps [moment](https://github.com/moment/moment) from 2.29.4 to 2.30.1.
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.4...2.30.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-28 09:14:28 +00:00
David Cook
59ad2cf5ec Re-set vcr config after each test
I couldn't find a built-in way to do it, and couldn't even directly access the vcr config outside of VCR.configure. So this is the best way I could think of.
2023-12-28 17:47:09 +11:00
David Cook
263f68f927 Merge pull request #11915 from murjax/cleanse-stripe-js-errors-11886
Cleanse JS errors from DOM on Stripe failure
2023-12-28 13:11:36 +11:00
drummer83
da4dc637e4 Add empty line at end of file 2023-12-27 09:33:27 +01:00
drummer83
887a6d8e7a Make string translatable and adjust to 300 px 2023-12-26 16:00:00 +01:00
Ahmed Ejaz
86c2397f63 11068: update modal padding 2023-12-26 15:41:38 +05:00
bouaik
2e926e867c fix flash type when updating entreprise fees 2023-12-25 10:19:51 +01:00
dependabot[bot]
15e810b7f1 Bump combine_pdf from 1.0.25 to 1.0.26
Bumps [combine_pdf](https://github.com/boazsegev/combine_pdf) from 1.0.25 to 1.0.26.
- [Release notes](https://github.com/boazsegev/combine_pdf/releases)
- [Changelog](https://github.com/boazsegev/combine_pdf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/boazsegev/combine_pdf/compare/v1.0.25...v1.0.26)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-25 09:09:26 +00:00
dependabot[bot]
13e71d5b8c Bump rubocop-rails from 2.23.0 to 2.23.1
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.23.0 to 2.23.1.
- [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.23.0...v2.23.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-25 09:06:40 +00:00
drummer83
120b2c363d Fixing indentation error 2023-12-24 20:29:41 +01:00
drummer83
ad508c36e5 Avoid overflow of enterprise list when only few enterprises present 2023-12-24 19:07:14 +01:00
drummer83
2ab3efe5de Adjust outline when focusing the overflowing enterprisie list (was red in Firefox) 2023-12-24 19:02:58 +01:00
drummer83
4e6f43afab Add styles for hovering and warning 2023-12-24 17:59:27 +01:00
drummer83
ddd455a73e Use methodology from order_cycles for products 2023-12-24 17:58:21 +01:00
drummer83
dddebae56a Unify coding style 2023-12-24 17:52:21 +01:00
Ahmed Ejaz
c5a86341dc 11068: update sleep logic in specs 2023-12-24 02:00:26 +05:00
David Cook
3319f38e6c Rename class to signal intent
Because the HTML is changed, I had to also update the old stylesheet too.
2023-12-23 15:46:15 +01:00
David Cook
39d66c082b Remove unused green class 2023-12-23 15:46:15 +01:00
David Cook
e379ee761b Refactor
'positive' and 'zero' methods are preferred in this case.
2023-12-23 15:46:15 +01:00
David Cook
6ca98d497a Remove unnecessary 'blue' class
Buttons are already blue.

And we don't want the text to be blue. This resolves #11865
2023-12-23 15:46:15 +01:00
David Cook
e9fe66748a Replace 'orange' class with 'red'
It was the same colour anyway
2023-12-23 15:46:15 +01:00
Ahmed Ejaz
87d328d6d6 11068: fix specs 2023-12-23 16:08:26 +05:00
Ahmed Ejaz
6ed447b6ac 11068: code refactor
- Add single delete modal
  for product and variant each
2023-12-23 15:53:28 +05:00
Konrad
eb70eb4bc8 Merge pull request #11966 from bouaik/fix-menu-and-sub-menu-highlighting
Fix menu and sub menu highlighting
2023-12-22 22:35:47 +01:00
Konrad
398be49d43 Merge pull request #11914 from bmd08a1/ft/include-vouchers-in-revenues-by-hub-report
Include voucher tax adjustment in revenues by hub report
2023-12-22 20:59:00 +01:00
filipefurtad0
2e301a67b0 Moves test introduced by #11799 to a section in the spec where a modal does not need acceptance
Tests forward navigation
2023-12-22 14:24:37 +00:00
Konrad
72c824a412 Merge pull request #11795 from rioug/11720-enterprise-user-consent-to-ToS-changes
Add banner to allow user to accept ToS changes
2023-12-22 14:03:24 +01:00
Gaetan Craig-Riou
1bb4a667da Move banner to orignal postion at the bottom of page 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
772c641611 Move banner up to not cover existing button 2023-12-22 13:20:14 +01:00
David Cook
041d74b7c2 Fix CSS selector
These styles should only apply to the form-actions in the products form.
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
d0edf57e74 Fix tos system spec
Actually create a ToS file instead of using a fake one
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
a1d3b20e5b Remove the fact ToS file
Now that we check if there is a ToS file before displaying the banner
it's not needed anymore
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
9609ba4268 Don't show the banner if no ToS file uploaded 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
17fa6b6168 Per review, revert change 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
91e5227d80 Move to simple UserReflex 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
b28f40b125 Add system spec for ToS Banner 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
b3acdaf324 Remove user.id parameter
It's not needed, as the reflex get the curent user based on the user
session
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
f643ba5074 Update only User who are enterprise owner 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
56b75ad9fb Per review, stream line the css
Reuse existing css when possible, and use variable for z-index so its
easier to track usage of z-index
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
aaa8f3f572 Per review, move logic to display ToS banner to a helper
It easier to understand when we can see the logic to display the banner
in the view.
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
d0ba881aa2 Move acepting of ToS change to a reflex
Spree::Admin::UserController is for super admin user only. Moving to a
reflex simplifies the code by getting rid of a new route and a new stimulus
controller
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
91862c126b Remove now useless fix
Now that the banner isn't displayed if enterprise are not required to
sign ToS, the fix is useless
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
d2b210c818 Update migration to set terms_of_service_accepted_at to time of deployment 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
8371eada23 Don't show the banner if enterprises are not required to accepte ToS 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
6226067846 Update translation to be inline with design mockup 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
25d1511f0b Add Terms of Service banner styling for admin V3 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
5c9abfefee Per review, remove useless code pass
It shouldn't be possible for the update to fail, as we are not sending
any parameter. Any other failure should be handled by rails already, ie
missing csrf token.
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
44f22dc634 Per review, check terms_of_service_accepted_at has been updated 2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
8e3e9ad18a Fix terms and condition spec
Timecop intefere with the fake terms of service, so we need to manually
accept the terms of service to make the banner disappear
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
94fb1397f0 Set up data to hide ToS banner
The banner can in some case overlap element we are trying to interact
with. Add a fake ToS file and make sure user have accepted the ToS, so
that the banner is not shown
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
8e31e35d5d Add Tos banner on all admin pages
Plus spec, this is tested on the dashboard page.
The banner will show if the user accepted_at is before the tos file
updated at time.
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
ee79fd88d2 Add /admin/users/:id/accept_terms_or_service end point
Plus specs
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
a234f1ace6 Add stimulus controller to handle ToS banner
Plus spec
2023-12-22 13:20:14 +01:00
Gaetan Craig-Riou
16cb72adbc Add terms_of_service_accepted_at to spree_user
It will be used to track when a user has accepted changed to ToS
2023-12-22 13:20:14 +01:00
Konrad
5f7760c3cc Merge pull request #11803 from rioug/11801-remove-raw-from-email-template
Remove raw from various template
2023-12-22 13:10:33 +01:00
filipefurtad0
265de61e49 Resets VCR/Stripe library directory, after example run, on base spec helper 2023-12-22 12:09:50 +00:00
dependabot[bot]
f88d4a6da1 Bump debug from 1.9.0 to 1.9.1
Bumps [debug](https://github.com/ruby/debug) from 1.9.0 to 1.9.1.
- [Release notes](https://github.com/ruby/debug/releases)
- [Commits](https://github.com/ruby/debug/compare/v1.9.0...v1.9.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-22 09:48:10 +00:00
Gaetan Craig-Riou
ffbdb17b60 Merge pull request #11960 from mkllnk/rswag-deprecations
Update Swagger config to new naming
2023-12-22 11:30:18 +11:00
Ahmed Ejaz
985487c061 11068: update confirm_modal_component
- add new position alignment for the modal actions
- add 'justify-space-around' and 'justify-end' as new alignment classes
- use the above classes accordingly
2023-12-22 03:10:52 +05:00
Maikel
e3a838bc3f Merge pull request #11961 from openfoodfoundation/dependabot/bundler/faraday-2.8.1
Bump faraday from 2.7.12 to 2.8.1
2023-12-22 08:47:11 +11:00
Maikel
e15893e697 Merge pull request #11950 from filipefurtad0/stripe_accounts_vcr_spec
Replaces Stripe stubs with the real account IDs
2023-12-22 08:45:25 +11:00
Maikel
0b9a4386f2 Merge pull request #11965 from filipefurtad0/remove_comment
Removes forgotten comment line
2023-12-22 08:28:59 +11:00
Ahmed Ejaz
dc78fa843a Update app/reflexes/products_reflex.rb
11068: remove overdefensive auth check

Co-authored-by: Maikel <maikel@email.org.au>
2023-12-22 02:24:28 +05:00
Ahmed Ejaz
24fd75a85d Update app/reflexes/products_reflex.rb
11068: remove overdefensive auth check

Co-authored-by: Maikel <maikel@email.org.au>
2023-12-22 02:21:53 +05:00
bouaik
6fa3720d05 Merge branch 'master' into fix-menu-and-sub-menu-highlighting 2023-12-21 21:20:04 +01:00
bouaik
fde7c34287 fix highlighting 2023-12-21 21:16:39 +01:00
filipefurtad0
dc9774def6 Removes forgotten comment line 2023-12-21 18:56:11 +00:00
filipefurtad0
0517d1ce6b Replaces receive_message_chain rspec mocks with responses from real Stripe calls 2023-12-21 18:15:34 +00:00
filipefurtad0
d8d874f7ea Creates a connected account and tests OFN code for disconnecting it
Re-records cassettes

Creates a bogus publishable key

We need to feed some value to the ENV variables which are picked up from the local test environment, for the build to run. We could also store them all as environment secrets on our repo, but I don'r think this is necessary, as we only run recorderd API/VCR calls on our build, and never real API calls.
2023-12-21 11:09:18 +00:00
filipefurtad0
beb916d24d Improves assertions around disconnect-failure and -success test cases 2023-12-21 11:02:57 +00:00
filipefurtad0
87ba37dcfd Replaces Stripe stubs with the account and customer IDs
Adds STRIPE_ACCOUNT as sensitive data to VCR setup

Rubocop fixes and re-recording of cassettes

Adds bogus client_id to local test file - for CI to run
2023-12-21 11:02:55 +00:00
dependabot[bot]
f977a6f8d4 Bump faraday from 2.7.12 to 2.8.1
Bumps [faraday](https://github.com/lostisland/faraday) from 2.7.12 to 2.8.1.
- [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.12...v2.8.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-21 09:37:20 +00:00
Maikel Linke
82d3199cf0 Update Swagger config to new naming
Avoids deprecation warnings:

```
DEPRECATION WARNING: swagger_root= is deprecated and will be removed from rswag-api 3.0 (use openapi_root= instead) (called from block in <main> at config/initializers/rswag_api.rb:8)
DEPRECATION WARNING: Rswag::Ui: WARNING: The method will be renamed to "openapi_endpoint" in v3.0 (called from block in <main> at config/initializers/rswag_ui.rb:12)
DEPRECATION WARNING: Rswag::Ui: WARNING: The method will be renamed to "openapi_endpoint" in v3.0 (called from block in <main> at config/initializers/rswag_ui.rb:13)
```
2023-12-21 16:23:27 +11:00
Maikel Linke
1903747c0a Send semantic id when connecting enterprise to app
It allows us to list enterprises from any OFN server, not just ofn-au.
The app could even accept any enterprise on any server providing its
data in the DFC format.
2023-12-21 15:09:09 +11:00
Maikel
589ae4db44 Merge pull request #11957 from duleorlovic/11855_add_ml_and_pa
Add Punjabi and Malayalam language for India instance #11855
2023-12-21 10:47:27 +11:00
Maikel
9ad60e891e Merge pull request #11906 from filipefurtad0/add_translation_checks
Adds build node to check for i18n exceptions
2023-12-21 09:31:28 +11:00
Dusan Orlovic
2585820bbb Add Punjabi and Malayalam language for India instance #11855 2023-12-20 12:55:51 +01:00
filipefurtad0
8891091ebb Uncomments preferences
Moves I18n exception handler within base spec helper
2023-12-20 11:16:25 +00:00
Ahmed Ejaz
0290697fb7 11068: add specs
- For delete_product
- For delete_variant
2023-12-20 12:54:54 +05:00
Ahmed Ejaz
78f5a8ad30 11068: add specs
- For system's product delete action
2023-12-20 12:54:54 +05:00
Ahmed Ejaz
d767529e11 11068: add divs to contain modals 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
9c321ef9c8 11068: update comment message 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
f44476b9af 11068: code refactoring
- Make use of reflexes when deleting the product and variant
- Add reflex dataset param to confirm_modal_component
2023-12-20 12:54:54 +05:00
Ahmed Ejaz
9cf51f3453 11068: add success and failure messages 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
1936adc82f 11068: fix lint issues 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
a321a962a5 11068: separate prompt_html into individual translation 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
26d102f66b 11068: update product/varaint delete actions 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
a71bb21789 11068: update confirm_button_color to confirm_button_class 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
d8eace8dff #11068: remove product_actions_controller.js 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
05e7674805 #11068: add delete variant and product reflexes 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
eca83eeec3 #11068, update delete links for uniq modal ids 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
5d90993f21 11068, apply delete_modals partial 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
c202324cb0 #11068: add product_v3 delete_modals partial 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
0efd78b979 #11068: update confirm_modal_component to accept controller values 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
d1224ea022 #11068, resolve conflicts 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
d7f2cbf882 11068, revert controller changes 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
2f0965aa62 #11068, add product_actions_controller 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
bf0943e655 #11068, add ProductDeleter 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
4f76478619 #11068, add delete modals 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
5d490ded15 #11068, update ConfirmModalComponent to take more options 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
0ff1067bc6 #11068, add delete option for product variant 2023-12-20 12:54:54 +05:00
Ahmed Ejaz
39de2f704f #11068, add delete dropdown option
# Conflicts:
#	app/views/admin/products_v3/components/_product_actions.html.haml
2023-12-20 12:54:54 +05:00
Maikel Linke
eb03235295 Use full product and variant name on DFC API 2023-12-20 16:43:29 +11:00
Maikel Linke
a9b206f74e Update Discover Regenerative description 2023-12-20 16:35:01 +11:00
Maikel Linke
67ffb5526e Display loading status in action button 2023-12-20 16:35:00 +11:00
Maikel Linke
b33910d5b4 Disconnect Connected App as enterprise user
The app has to provide a webhook URL to be notified when the app is
disconnected. Once we have better token management, we would have a
unique token per app and could revoke it. But for now it's just a
request to disconnect the app.
2023-12-20 15:29:28 +11:00
Maikel Linke
efee68007d Adjust header colour in new layout 2023-12-20 15:29:28 +11:00
Maikel Linke
fcb540a89f Improve readability by limiting text width 2023-12-20 15:29:28 +11:00
Maikel
6d5f07c6a0 Merge pull request #11945 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.23.0
Bump rubocop-rails from 2.22.2 to 2.23.0
2023-12-20 13:58:33 +11:00
Maikel
70a2a05a8d Merge pull request #11953 from openfoodfoundation/dependabot/bundler/combine_pdf-1.0.25
Bump combine_pdf from 1.0.24 to 1.0.25
2023-12-20 13:58:16 +11:00
Maikel Linke
89ef62d341 Update Rubocop config todo
[skip ci]
2023-12-20 13:57:06 +11:00
filipefurtad0
cdceefb6fb Moves test.rb I18n exception hanlder into base_spec_helper 2023-12-19 16:44:53 +00:00
Konrad
4973b5c07c Merge pull request #11789 from duleorlovic/11784_contact_tab
Fix open Contact tab from "customers only" message
2023-12-19 15:05:41 +01:00
dependabot[bot]
632291e8c7 Bump combine_pdf from 1.0.24 to 1.0.25
Bumps [combine_pdf](https://github.com/boazsegev/combine_pdf) from 1.0.24 to 1.0.25.
- [Release notes](https://github.com/boazsegev/combine_pdf/releases)
- [Changelog](https://github.com/boazsegev/combine_pdf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/boazsegev/combine_pdf/compare/v1.0.24...v1.0.25)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-19 09:07:11 +00:00
Rachel Arnould
2b749714bd Merge pull request #11927 from drummer83/Dashboard
Show Dashboard header in the header area for multi-enterprise users
2023-12-18 17:49:49 +01:00
Dung Bui
248b9fb186 update order state 2023-12-18 19:26:00 +07:00
dependabot[bot]
4551a9b689 Bump rubocop-rails from 2.22.2 to 2.23.0
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.22.2 to 2.23.0.
- [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.22.2...v2.23.0)

---
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-12-18 09:18:45 +00:00
Maikel
080086aa38 Merge pull request #11943 from openfoodfoundation/dependabot/bundler/stripe-10.3.0
Bump stripe from 10.2.0 to 10.3.0
2023-12-18 14:46:40 +11:00
Gaetan Craig-Riou
502df3d78f Remove a bunch of non needed string interpolation 2023-12-18 14:42:04 +11:00
Gaetan Craig-Riou
eb4115ceed Per review, use existing TrixScrubber to sanitize content 2023-12-18 14:40:14 +11:00
Gaetan Craig-Riou
085629fae1 Remove raw 2023-12-18 14:40:14 +11:00
Gaetan Craig-Riou
28f3161bf8 Removing raw from invoice template 2023-12-18 14:40:14 +11:00
Gaetan Craig-Riou
031cc45992 Sanitize home_page_alert_html
It still allows some specific tag so we can have link and some
formatting.
2023-12-18 14:39:13 +11:00
Gaetan Craig-Riou
84a8c6b31a Remove raw from email template 2023-12-18 14:39:13 +11:00
Gaetan Craig-Riou
4a32df7ef5 Remove seemingly useless method
Left over from Spree, it looks like a weird way to cast somehing to a
string
2023-12-18 14:38:16 +11:00
Maikel Linke
317d492873 Test Stripe with real API 2023-12-18 14:06:38 +11:00
Maikel
b52b0c0413 Merge pull request #11937 from mkllnk/dfc-app
Add new enterprise settings tab Connected Apps
2023-12-18 13:37:26 +11:00
dung bui
738b338827 Merge branch 'master' into ft/include-vouchers-in-revenues-by-hub-report 2023-12-17 10:52:37 +07:00
Dung Bui
1867d7ef8e creat real records instead of mocking 2023-12-17 10:47:48 +07:00
Dusan Orlovic
120e299653 Use activate instead of changeActivePanel/ChangeActiveTab
Remove shop-tabs controllers since we can listen on `"data-action":
"orderCycleSelected@window->tabs-and-panels#activateDefaultPanel"`

Test for cases:
* activate by clicking on tab
* activateDefaultPanel on orderCycleSelected event
* activateFromWindowLocationOrDefaultPanelTarget to activate tab based
  on achor in URL
2023-12-16 10:00:17 +01:00
Dusan Orlovic
ba7ffc25fe Add data-action=tabs-and-panels 2023-12-15 23:00:13 +01:00
filipefurtad0
264b6e072e Adds missing translation key 2023-12-15 13:20:32 +00:00
filipefurtad0
57aa151ddd Comments out default values from superadmin fields to bring the build back to green 2023-12-15 12:48:21 +00:00
filipefurtad0
f8f85e7fbd Adds I18n exception handler as test initializer
As per code review, we follow this approach https://sikac.hu/missing-translations-keys-gotta-catch-em-all-3aa8d2ead8bd
2023-12-15 12:48:21 +00:00
dependabot[bot]
7f0a461385 Bump stripe from 10.2.0 to 10.3.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 10.2.0 to 10.3.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/v10.2.0...v10.3.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-12-15 09:11:11 +00:00
Maikel Linke
f758daadc0 Use common colours in old and new design 2023-12-15 16:21:43 +11:00
Maikel Linke
35ca66cbb7 Respond fast by rendering only partial 2023-12-15 12:34:40 +11:00
Maikel Linke
1d7f96e965 Broadcast connected app to all user tabs 2023-12-15 12:34:40 +11:00
Maikel Linke
e1730f25d6 Show app connection state and update link 2023-12-15 12:34:40 +11:00
Maikel Linke
12e5a0d1e1 Query webhook to connect app 2023-12-15 11:50:04 +11:00
Maikel Linke
4eb273b06e Create ConnectedApp with a reflex
I would have like to use a standard form to submit to the reflex but the
whole enterprise settings tab is in a form already and HTML doesn't
allow nested forms. While it does still work in browsers, it would have
added much more HTML to set up a form with a hidden input field instead
of just one additional data attribute.

The whole page is rendered by the controller again but the reflex root
attribute ensures that only parts of this tab are replaced. Otherwise
unsaved data on other tabs could be replaced and the page actually
becomes blank because AngularJS doesn't play well with the morph.
2023-12-15 11:50:04 +11:00
Maikel Linke
2346f03b6f Add ConnectedApp model 2023-12-15 11:50:04 +11:00
Maikel Linke
ca7b02d3ee Add basic description of Discover Regen app 2023-12-15 11:50:04 +11:00
Maikel Linke
d4ce3965b1 Connected apps can be enabled per user or enterprise 2023-12-15 11:22:15 +11:00
Maikel Linke
af2b65256f Add new enterprise settings tab Connected Apps 2023-12-15 11:22:15 +11:00
David Cook
aebc378aa8 [suggestion] Update translation key 2023-12-15 09:58:30 +11:00
David Cook
ad809facc6 [fixup] Fix translation key
The dot indicates lazy lookup
Also the name was missing a letter. It was hard to notice because the key name was so long, so I suggest reducing the key to something like 'order_has_changed'
2023-12-15 09:55:14 +11:00
Rachel Arnould
97985dbe8f Merge pull request #11805 from abdellani/fix-shipping-method-category-on-invoices-v3
[Invoices] Display the shipping category.
2023-12-14 17:09:39 +01:00
Mohamed ABDELLANI
2b1d7923da remove ':' after the shipping category on the invoice template 2023-12-14 16:42:24 +01:00
Mohamed ABDELLANI
82d50f58f3 remove raw from shipping method name 2023-12-14 16:36:36 +01:00
Mohamed ABDELLANI
db653fc945 render the shipping category in the invoice. 2023-12-14 16:36:36 +01:00
Rachel Arnould
9d87449730 Merge pull request #11704 from abdellani/add-reference-to-previous-invoices
a new invoice should refer the latest invoice.
2023-12-14 16:05:08 +01:00
Mohamed ABDELLANI
1038536c39 show warning when a new invoice can be generated 2023-12-14 15:34:19 +01:00
David Cook
37a1776c7e Prevent scrollbars on select2 item
This is unrelated to the rest of the PR, I just noticed this issue so decided to fix it. I can't find any explanation, or think of any good reason for this rule, so I'm burning it.
2023-12-14 15:23:41 +11:00
David Cook
2cbe9a4268 Style tom-select dropdown-input to appear over the main control
It's more compact, and we don't need to see the currently selected value because it's highlighted in the list already.
2023-12-14 15:23:40 +11:00
David Cook
b97890b537 Support custom placeholder value
Hmm, but this isn't useful until we get Tom-Select to work the way we want..

To do that, I think we'd ned to hook into TS to clear the current selection when focused, then set it back upon blur (if no selection was made). Hmm, but we still want it to show slected in the dropdown list.
Can we do it with css maybe?
2023-12-14 14:24:21 +11:00
David Cook
e8266ba3ae Refactor 2023-12-14 14:23:50 +11:00
David Cook
2756e37603 Placeholder style 2023-12-14 14:19:31 +11:00
David Cook
e578f697f5 Refactor: use data hash 2023-12-14 14:19:09 +11:00
David Cook
a5b2a24dc2 Refactor: Code cleanup 2023-12-14 14:13:01 +11:00
David Cook
ad797de1a6 Responsive sizing for elements
The query input can grow to fill the space.
2023-12-14 14:13:01 +11:00
David Cook
f29c1d5797 Use chevron for dropdown icon
We should be able to use @extend .icon-chevron-down, but I couldn't get it to work. I'd like to have a better method for this, but we should upgrade our ancient FontAwesome before worrying about that.
2023-12-14 14:13:01 +11:00
David Cook
1776420d4a Clip long content with ellipsis 2023-12-14 14:13:01 +11:00
David Cook
0efda02b9b Style list items as per design 2023-12-14 13:33:05 +11:00
David Cook
3fbd5f6357 Style single-select as per design 2023-12-14 13:33:03 +11:00
David Cook
05582b3d2d Fix display of single-select dropdowns 2023-12-14 13:28:41 +11:00
David Cook
53c49050a6 Use body font size on all form inputs 2023-12-14 13:28:41 +11:00
Gaetan Craig-Riou
b8e24918fc Merge pull request #11933 from openfoodfoundation/dependabot/bundler/rubocop-1.59.0
Bump rubocop from 1.58.0 to 1.59.0
2023-12-14 11:42:17 +11:00
Rachel Arnould
329ad1ddb2 Merge pull request #11874 from dacook/buu-success-message-11517
[BUU] Flash message redesign
2023-12-13 11:59:19 +01:00
David Cook
f99b0b19e7 Disable another OutputSafety warning
This one is a little more concerning: what if a model error message includes the user-submitted value? But this is for the admin interface only, and I'm not sure if we have model error messages that do that. So it's probably fine (it's certainly been like this a long time already).
2023-12-13 14:21:27 +11:00
David Cook
0e95b3211b Disable most OutputSafety warnings
These all seem to require html_safe/raw, so we'll permit it.
Some of the spree code is a bit strange and could probably be improved, but I think it's ok for now.
2023-12-13 14:19:19 +11:00
David Cook
dc9fd669a2 Remove unnecessary html_safe calls
The tag generator methods should already be returning html_safe strings.
2023-12-13 14:11:02 +11:00
Maikel
55ff376193 Merge pull request #11924 from filipefurtad0/stripe_sca_vcr_spec
Replaces Stripe Stubs with VCR calls
2023-12-13 11:53:15 +11:00
filipefurtad0
0f41d900df DRYes card and payment intent let groups
Fixes typo on capture_amount declaration
2023-12-12 13:18:17 +00:00
dependabot[bot]
321e6ef316 Bump rubocop from 1.58.0 to 1.59.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.58.0 to 1.59.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.58.0...v1.59.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-12-12 09:32:12 +00:00
David Cook
b340762366 Merge pull request #11931 from drummer83/Dashboard_v3_pointer
Fix colour of the arrow when hovering the change package area in dashboard
2023-12-12 14:19:23 +11:00
drummer83
dcba1dc5e9 Fix colour of the arrow when hovering the change package area in dashboard 2023-12-12 03:56:37 +01:00
David Cook
1f8a1cc376 Merge pull request #11929 from drummer83/Dashboard_translation
Fix missing translation of tooltip in dashboard
2023-12-12 13:47:53 +11:00
drummer83
43effb8197 Fix missing translation of tooltip 2023-12-12 02:00:59 +01:00
David Cook
638dbde1ba Merge pull request #11919 from openfoodfoundation/dependabot/bundler/debug-1.9.0
Bump debug from 1.8.0 to 1.9.0
2023-12-12 10:48:41 +11:00
drummer83
1afdbd92ea Show Dashboard header in the header area for multi-enterprise users
Use correct translation string
2023-12-12 00:11:15 +01:00
filipefurtad0
b45fc0b7ef Replaces Stripe Stubs with VCR calls
Adds new VCR cassettes

Keeps assertion on ActiverMerchant response

Re-records cassettes
2023-12-11 21:52:37 +00:00
Ryan Murphy
b84707edd9 Cleanse JS errors from DOM on Stripe failure 2023-12-11 07:46:42 -05:00
dependabot[bot]
ae04716391 Bump debug from 1.8.0 to 1.9.0
Bumps [debug](https://github.com/ruby/debug) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/ruby/debug/releases)
- [Commits](https://github.com/ruby/debug/compare/v1.8.0...v1.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 09:27:53 +00:00
Mohamed ABDELLANI
915afd8557 update the invoice v3 template 2023-12-11 08:26:32 +01:00
Mohamed ABDELLANI
615c001c28 implement Invoice#previous_invoice 2023-12-11 08:26:32 +01:00
Gaetan Craig-Riou
f6ba2dc70c Merge pull request #11917 from mkllnk/json-canonicalization
Bump json-canonicalization from 0.3.2 to 0.4.0
2023-12-11 10:04:02 +11:00
Maikel
3ceef60f6f Merge pull request #11913 from openfoodfoundation/dependabot/bundler/knapsack_pro-6.0.3
Bump knapsack_pro from 6.0.2 to 6.0.3
2023-12-11 09:58:29 +11:00
Maikel Linke
e8eeb0029c Bump json-canonicalization from 0.3.2 to 0.4.0
This is actually not changing anything. The author didn't realise the
bad implications of yanking 0.3.2 and restored it as 0.4.0.

https://github.com/dryruby/json-canonicalization/issues/2
2023-12-11 09:48:51 +11:00
Konrad
5aaaef63ac Merge pull request #11911 from arunguleria/11599-checkout-page-title-changes
Change page title on checkout pages
2023-12-10 20:53:56 +01:00
Konrad
cdb7312e95 Merge pull request #11798 from cillian/conditional-supplier-column-in-order-cycle-report
Only display Supplier column in Order Cycle Report email if there is more than one supplier
2023-12-10 16:49:23 +01:00
dung bui
c0ed579b44 Merge branch 'master' into ft/include-vouchers-in-revenues-by-hub-report 2023-12-09 13:04:52 +07:00
Dung Bui
d8024eb526 include voucher tax adjustment in revenues by hub report 2023-12-09 12:40:51 +07:00
Sigmund Petersen
7b7b4ceb81 Merge pull request #11696 from abdellani/sequential-invoice-numbers-per-distributor
Sequential invoice numbers per distributor
2023-12-08 13:56:23 +01:00
Mohamed ABDELLANI
4a22224c73 fix existing tests 2023-12-08 13:33:36 +01:00
Mohamed ABDELLANI
fea910f8b6 update the invoice number rendering 2023-12-08 13:33:36 +01:00
Mohamed ABDELLANI
41d5ca7861 update the invoice number calculation 2023-12-08 13:33:36 +01:00
Rachel Arnould
60656dedd4 Merge pull request #11901 from dacook/buu-bom-pagination-11608
Ensure pagination appears at bottom of table
2023-12-08 13:25:31 +01:00
dependabot[bot]
9f71f710ff Bump knapsack_pro from 6.0.2 to 6.0.3
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 6.0.2 to 6.0.3.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v6.0.2...v6.0.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-12-08 09:18:18 +00:00
Maikel Linke
29ef444f36 Consolidate system specs for efficiency
And test for literal strings. It's more readable and robust.
2023-12-08 09:05:00 +05:30
Maikel Linke
f88a3122ee Fix expectation of checkout title 2023-12-08 09:05:00 +05:30
Arun Guleria
d60216787b 11599 Remove whitespace trailing 2023-12-08 09:05:00 +05:30
Arun Guleria
4e408d404b 11599-Change page title on checkout pages 2023-12-08 09:05:00 +05:30
Maikel
029b8ce255 Merge pull request #11910 from openfoodfoundation/dependabot/bundler/knapsack_pro-6.0.2
Bump knapsack_pro from 6.0.1 to 6.0.2
2023-12-08 09:14:35 +11:00
Maikel
fe4380a84a Merge pull request #11900 from filipefurtad0/valid_cards_extend_payment_intents_tests
Adds payment intent creation/capture tests for valid credid card types (non-3D)
2023-12-08 09:04:56 +11:00
filipefurtad0
3802447bfe Removes credit card mock, pointing to real Stripe object
Re-records cassettes after source change
2023-12-07 18:30:23 +00:00
dependabot[bot]
4938d1a37c Bump knapsack_pro from 6.0.1 to 6.0.2
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 6.0.1 to 6.0.2.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v6.0.1...v6.0.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-12-07 09:53:12 +00:00
David Cook
1d3a588820 Update all locales with the latest Transifex translations 2023-12-07 16:53:26 +11:00
Maikel
f898572094 Merge pull request #11903 from openfoodfoundation/dependabot/bundler/json-2.7.1
Bump json from 2.7.0 to 2.7.1
2023-12-07 08:03:03 +11:00
Maikel
f8347ff836 Merge pull request #11904 from openfoodfoundation/dependabot/bundler/knapsack_pro-6.0.1
Bump knapsack_pro from 6.0.0 to 6.0.1
2023-12-07 08:02:42 +11:00
Maikel
7bc1442b5b Merge pull request #11899 from filipefurtad0/system_spec_zero_priced_variant
Adds test cases to account for priceless and 0.0 priced variant creation
2023-12-07 07:53:42 +11:00
dependabot[bot]
244d532268 Bump json from 2.7.0 to 2.7.1
Bumps [json](https://github.com/flori/json) from 2.7.0 to 2.7.1.
- [Release notes](https://github.com/flori/json/releases)
- [Changelog](https://github.com/flori/json/blob/master/CHANGES.md)
- [Commits](https://github.com/flori/json/compare/v2.7.0...v2.7.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 20:48:01 +00:00
Maikel
c34990bef4 Merge pull request #11895 from openfoodfoundation/dependabot/bundler/rubocop-1.58.0
Bump rubocop from 1.57.2 to 1.58.0
2023-12-07 07:46:54 +11:00
Konrad
7efc6f35b2 Merge pull request #11891 from bmd08a1/ft/search-by-customer-fullname-with-comma
Allow searching orders by customers' full name with comma and full name reversed
2023-12-06 21:08:28 +01:00
Konrad
7c892b2e9e Merge pull request #11889 from cillian/split-checkout-to-just-checkout
Replace references to 'split checkout' with just 'checkout'
2023-12-06 20:42:26 +01:00
Konrad
dc4b6519dd Merge pull request #11885 from dacook/flash-messages
Fix mapping of flash messages on order cycle pages
2023-12-06 18:03:57 +01:00
David Cook
979071736b Fix typo 2023-12-06 17:00:31 +11:00
David Cook
6280d4c1ea Merge pull request #11907 from dacook/buu-style-tweaks
[BUU] Link style tweaks
2023-12-06 16:10:52 +11:00
David Cook
0f3a952fd0 Add translation for product cloned message
A validation error shouldn't happen. If it does, it's an exception, not an error.
2023-12-06 15:13:20 +11:00
David Cook
0f46da07b2 Render flashes along with table
It doesn't matter where the flash messages appear in the HTML (thanks to fixed positioning), so why not keep it simple and send them with the main response.

preventDefault in case we are inside a form, so the button doesn't submit it.
2023-12-06 15:13:15 +11:00
David Cook
7fe2284d84 Refactor: Move ID out of partial
Because it can only be used once. But the classname can be used each time the partial is included.
2023-12-06 14:18:58 +11:00
David Cook
9fa521917e Allow nav menu items to wrap
And thus avoid wrapping inside the li.

This avoids the menu going off the edge of the screen.
2023-12-06 12:54:04 +11:00
David Cook
4de40e817f Left-align navigation menu
It looks really wierd when there's only a few items.
2023-12-06 12:54:04 +11:00
David Cook
3760cd93b9 Enable brower-default outlines on links
This code was from Spree. Unless you have good focus/active styles for all links, the outline is very helpful for accessibility.
Most websites these days add nice thick outlines, which might be worth considering in the future.
2023-12-06 12:54:01 +11:00
David Cook
32a4088386 Revert "#11067, remove messages to match with old UI UX"
Now we support flash messages, we can show it!

This reverts commit d8904099dd.
2023-12-06 10:12:18 +11:00
David Cook
fbf0afa15d Auto dismiss success flashes only 2023-12-06 10:12:18 +11:00
David Cook
0b4013dd11 Add dismiss button to flashes
And updating the secondary button style to ensure it's always white background
2023-12-06 10:12:17 +11:00
David Cook
20afe5b99c Update style of flash messages
They now hover near the bottom of the screen.

I've created new variables so as not to mess with the existing use of color-success etc.
2023-12-06 10:12:17 +11:00
David Cook
44187658be Copy messages styles for admin_v3 2023-12-06 10:12:17 +11:00
David Cook
f1a407c8a9 Remove unnecessary mixin,
and use generic variable for shadows.
2023-12-06 10:12:17 +11:00
David Cook
54d61cd24d Don't show flashes until everything else is done.
Mario reported that it was showing before the loading spinner had gone.
Technically the loading spinner doesn't hide until after the reflex is finished, but hopefully this is close enough.
2023-12-06 10:12:17 +11:00
David Cook
6dc04c458c Show saving success message in flash
I don't know if this is the best way to do it with SR, but it works..
2023-12-06 10:12:17 +11:00
David Cook
70f153b0f7 Refactor spec
Only the first example is testing the updated variant here.
2023-12-06 10:11:19 +11:00
David Cook
7d299affd3 Move hiding logic to stimulus controller
This ensures morphed flashes hide like other flashes (eg in bulk order actions). I wanted to write a spec to prove it, but Capybara doesn't support mocking setTimeout and I didn't want to use sleep.

I've made it optional because this controller is shared with the shop frontend ([supposedly](5ef34347a3), although angular seems to override it).
2023-12-06 10:11:19 +11:00
David Cook
127eaa44e5 Ensure loading message always shows
Before, it was affixed near the top of the page and wasn't visible after scrolling down.
2023-12-06 10:11:19 +11:00
filipefurtad0
e50baa9a18 Adds payment capture scenario 2023-12-05 15:27:46 +00:00
dependabot[bot]
e47cb0e961 Bump knapsack_pro from 6.0.0 to 6.0.1
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 6.0.0 to 6.0.1.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v6.0.0...v6.0.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-12-05 09:05:10 +00:00
David Cook
c4e8d4318c Ensure pagination appears at bottom of table
I'm not sure what the problem was. It's obviously a hacky fix, but it works for now. We intend to rebuild this screen without Angular anyway.
2023-12-05 14:46:51 +11:00
David Cook
300998acb6 Merge pull request #11811 from dacook/buu-stock-levels-11062
[BUU] Stock level popout
2023-12-05 13:56:01 +11:00
David Cook
685a1955bc Merge pull request #11872 from mkllnk/activate-background-reports
Activate background report processing by default
2023-12-05 12:04:19 +11:00
filipefurtad0
f3f59ed6ad Adds valid credid card types (non-3D) 2023-12-04 20:48:53 +00:00
filipefurtad0
7aeb6e4cd9 Adds test cases to account for priceless and 0.0 priced variant creation 2023-12-04 18:40:55 +00:00
dependabot[bot]
0281381e6e Bump rubocop from 1.57.2 to 1.58.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.57.2 to 1.58.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.57.2...v1.58.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-12-04 09:42:24 +00:00
Maikel
cb5164ac6e Merge pull request #11888 from openfoodfoundation/dependabot/bundler/stripe-10.2.0
bump stripe from 10.1.0 to 10.2.0
2023-12-04 14:54:38 +11:00
Maikel
89b6b183b9 Merge pull request #11893 from rioug/10809-patch-dfc-connector-parser
[DFC] Patch dfc connector parser to improve SKOS concept parsing
2023-12-04 14:32:02 +11:00
Gaetan Craig-Riou
021e292190 Add a quick patch description 2023-12-04 13:56:14 +11:00
Gaetan Craig-Riou
9628045e1c Fix indentation 2023-12-04 13:56:14 +11:00
Gaetan Craig-Riou
a06e7c1d9e Fix rubocop issue 2023-12-04 13:56:14 +11:00
Gaetan Craig-Riou
0392806018 Parser, populate SKOSConcept label 2023-12-04 13:56:14 +11:00
Gaetan Craig-Riou
9f209cac14 Fix rubocop warning 2023-12-04 13:56:14 +11:00
Gaetan Craig-Riou
633d0eadfe Parser element, add label 2023-12-04 13:56:14 +11:00
Dung Bui
8a3aababa1 group specs into one it block, added fullname with comma reversed ransacker 2023-12-04 08:45:19 +07:00
Gaetan Craig-Riou
c61e982a76 Fix rubocop warning 2023-12-04 12:00:18 +11:00
Maikel Linke
48c6d0144d Update stripe tests 2023-12-04 10:58:10 +11:00
Maikel
6b22227c5f Merge pull request #11887 from openfoodfoundation/dependabot/bundler/json-2.7.0
chore(deps): bump json from 2.6.3 to 2.7.0
2023-12-04 10:53:43 +11:00
Gaetan Craig-Riou
55d64e1768 Fix rubocop warning 2023-12-04 10:36:53 +11:00
Dung Bui
6206164c30 fix rubocop 2023-12-03 14:28:50 +07:00
Dung Bui
600226cb52 add fullname reversed search 2023-12-03 14:15:41 +07:00
Dung Bui
febda2ce12 add search by fullname with comma 2023-12-03 14:10:12 +07:00
Cillian O'Ruanaidh
2f972a5446 Remove more references to split checkout in test descriptions 2023-12-01 13:04:49 +00:00
Cillian O'Ruanaidh
a75ee3b207 Remove duplicate checkout translations which are now scoped under :step3 2023-12-01 12:56:21 +00:00
Cillian O'Ruanaidh
b78258c505 Replace references to :split_checkout translation keys with :checkout in views, controllers, etc. 2023-12-01 12:37:13 +00:00
Cillian O'Ruanaidh
3fee77136a Remove duplicate checkout.already_ordered translations 2023-12-01 12:31:42 +00:00
Cillian O'Ruanaidh
95a3e372ed Move translations in :split_checkout scope to :checkout. 2023-12-01 12:21:57 +00:00
Cillian O'Ruanaidh
def027efb2 Replace references to split_checkout directory in views and specs 2023-12-01 11:32:55 +00:00
Cillian O'Ruanaidh
931e42cf14 Rename split_checkout_controller_spec.rb to checkout_controller_spec.rb 2023-12-01 11:23:50 +00:00
Cillian O'Ruanaidh
a4b752e538 Rename SplitCheckoutHelper used in specs to CheckoutHelper 2023-12-01 11:22:44 +00:00
Cillian O'Ruanaidh
e014a991d8 Send /checkout routes to CheckoutController instead of SplitCheckoutController 2023-12-01 11:20:06 +00:00
Cillian O'Ruanaidh
a63b9c2690 Rename SplitCheckoutController to CheckoutController 2023-12-01 11:18:56 +00:00
Cillian O'Ruanaidh
7505f9504e Rename spec/views/split_checkout directory to spec/views/checkout 2023-12-01 11:16:57 +00:00
Cillian O'Ruanaidh
222c6d8ac5 Rename app/views/split_checkout directory to app/views/checkout 2023-12-01 11:12:00 +00:00
Filipe
f94d2c386c Merge pull request #11863 from abdellani/11862-fix-product-shoud-not-be-priceless
product should not be priceless
2023-12-01 10:43:30 +00:00
dependabot[bot]
cdf87436f9 bump stripe from 10.1.0 to 10.2.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-12-01 10:08:51 +00:00
dependabot[bot]
ef58061cc0 chore(deps): bump json from 2.6.3 to 2.7.0
Bumps [json](https://github.com/flori/json) from 2.6.3 to 2.7.0.
- [Release notes](https://github.com/flori/json/releases)
- [Changelog](https://github.com/flori/json/blob/master/CHANGES.md)
- [Commits](https://github.com/flori/json/compare/v2.6.3...v2.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 09:52:00 +00:00
David Cook
a2b8fb5105 Show success messages as.. success. 2023-12-01 16:59:23 +11:00
Maikel Linke
72755840c0 Update specs for background reports 2023-12-01 15:22:34 +11:00
Maikel Linke
75467a0c65 Update specs for background reports 2023-12-01 15:22:34 +11:00
Maikel Linke
d1c73f86c0 Update specs for background reports 2023-12-01 15:22:34 +11:00
Maikel Linke
049df77558 Update specs for background reports 2023-12-01 15:22:34 +11:00
Maikel Linke
0b7cf86b5b Update report spec for background reports 2023-12-01 15:22:34 +11:00
Maikel Linke
bbe37e1392 Update ReportsController for background reports
As it turns out, the background reports were missing a small feature to
store user preferences. Yay specs!
2023-12-01 15:21:42 +11:00
Maikel Linke
f28a8c87ab Activate background report processing by default
Many report specs are still testing the old behaviour. We need to
migrate them to background reports. Some tests may be better as unit
tests instead of system tests.
2023-12-01 14:44:33 +11:00
Gaetan Craig-Riou
e846761e54 WIP Patch DFC connector to fix SKOS Concept parsing
This is to let us use intermediary SKOS Concept.
Upstream PR for more details: https://github.com/datafoodconsortium/connector-codegen/pull/10/files
2023-12-01 14:26:09 +11:00
David Cook
1cd9d9aafd Organise controller translation keys with lazy loading 2023-12-01 14:20:30 +11:00
Gaetan Craig-Riou
7c9d4f1342 Update all locales with the latest Transifex translations 2023-12-01 11:22:35 +11:00
David Cook
dbb62c9820 Merge pull request #11881 from mkllnk/rswag
Help Dependabot to update rswag
2023-12-01 11:12:31 +11:00
David Cook
c35b82373e Merge pull request #11867 from mkllnk/tos-spec
DRY Terms of Service spec to save time
2023-12-01 11:10:48 +11:00
Gaetan Craig-Riou
082f78c772 Merge pull request #11873 from dacook/viewcomponent-sidecar
ViewComponent sidecar
2023-12-01 10:44:13 +11:00
David Cook
9658223700 Merge pull request #11792 from filipefurtad0/invoice_printing_legal_invoices_feature
Adds a pending spec for legal invoices feature issue #11791
2023-12-01 09:11:51 +11:00
Maikel Linke
2bf480732d Help Dependabot to update rswag
The rswag gem consists of three gem which are all maintained in the same
repository. So when one of the three gems is updated, the version of all
three gems is bumped. Dependabot was opening 3 independent pull requests
with the same release notes and linking to the same repository.

I hope that making the rswag gem a dependency will make Dependabot try
to update all gems together.

We are still listing two gems separately to be loaded in production.
They enable us to view the API documentation. But we don't need the
third gem rswag-specs in production. That one is only useful in tests.
2023-12-01 09:11:15 +11:00
Maikel
dd786312bf Merge pull request #11876 from openfoodfoundation/dependabot/bundler/rswag-ui-2.13.0
chore(deps): bump rswag-ui from 2.12.0 to 2.13.0
2023-12-01 09:08:11 +11:00
Maikel
5bfb72f65f Merge pull request #11875 from openfoodfoundation/dependabot/bundler/rswag-api-2.13.0
chore(deps): bump rswag-api from 2.12.0 to 2.13.0
2023-12-01 09:07:42 +11:00
Maikel
e54e9b2110 Merge pull request #11878 from openfoodfoundation/dependabot/bundler/rswag-specs-2.13.0
chore(deps-dev): bump rswag-specs from 2.12.0 to 2.13.0
2023-12-01 09:07:10 +11:00
Maikel
bc614c7b89 Merge pull request #11877 from openfoodfoundation/dependabot/bundler/knapsack_pro-6.0.0
chore(deps-dev): bump knapsack_pro from 5.7.0 to 6.0.0
2023-12-01 09:05:20 +11:00
Maikel Linke
08d0345967 Simplify feature selection in spec 2023-12-01 08:55:47 +11:00
Cillian O'Ruanaidh
b96110ec6c Don't display a supplier column if there is only one supplier in the orders grouped by customer part of the order cycle report 2023-11-30 20:32:23 +00:00
Cillian O'Ruanaidh
c3a62e53fc If not display supplier column in the order cycle report, reduce number of columns in totals row by one too to keep columns aligned 2023-11-30 20:32:23 +00:00
Cillian O'Ruanaidh
1d88510b7b Only display Supplier column in Order Cycle Report email if there is more than one supplier 2023-11-30 20:32:23 +00:00
filipefurtad0
3bf4e47d53 Sets shared example for invoice bulk printing
with legal invoices feature enabled and disabled
2023-11-30 12:44:49 +00:00
dependabot[bot]
22e9cf66e2 chore(deps-dev): bump rswag-specs from 2.12.0 to 2.13.0
Bumps [rswag-specs](https://github.com/rswag/rswag) from 2.12.0 to 2.13.0.
- [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.12.0...2.13.0)

---
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-11-30 09:37:20 +00:00
dependabot[bot]
235d17a2b8 chore(deps-dev): bump knapsack_pro from 5.7.0 to 6.0.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.7.0 to 6.0.0.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.7.0...v6.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-30 09:30:00 +00:00
dependabot[bot]
4d9137a2a6 chore(deps): bump rswag-ui from 2.12.0 to 2.13.0
Bumps [rswag-ui](https://github.com/rswag/rswag) from 2.12.0 to 2.13.0.
- [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.12.0...2.13.0)

---
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-11-30 09:28:58 +00:00
dependabot[bot]
58892b5a37 chore(deps): bump rswag-api from 2.12.0 to 2.13.0
Bumps [rswag-api](https://github.com/rswag/rswag) from 2.12.0 to 2.13.0.
- [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.12.0...2.13.0)

---
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-11-30 09:19:25 +00:00
David Cook
58215727bc [fixup]
- Style/ClassAndModuleChildren: Use nested module/class definitions instead of compact style.
- fix spec
2023-11-30 13:47:39 +11:00
Maikel
ccc460a990 Merge pull request #11868 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.141.0
chore(deps): bump aws-sdk-s3 from 1.140.0 to 1.141.0
2023-11-30 13:03:53 +11:00
David Cook
2013750732 Rename files to match recommended naming scheme
This naming scheme removes some duplication which is nice, but it's a little strange and results in a longer name overall. I don't like it very much because:
- filenames don't include the component's actual name. This makes it slightly harder to find them in my text editor (but I'd probably get used to that)
- the namespace and class naming isn't exactly right. This is _the_ vertical_ellipsis_menu, not a subcomponent.
- the stimulus controller name is now longer, adding more cruft to the HTML.

Lots of discussion here: https://github.com/ViewComponent/view_component/discussions/67
People tried to come up with a better way (and I was tempted to try myself). It seems this approach won. I guess it's not so bad if your component names are shorter.
2023-11-30 12:25:18 +11:00
David Cook
f6d72127a7 Move controller to sidecar directory 2023-11-30 12:18:55 +11:00
David Cook
ed93c77578 Load Stimulus controllers from 'sidecar' directories
Javascript files can now be included in the component directory, alongside HTML and CSS.

As per https://viewcomponent.org/guide/javascript_and_css.html
2023-11-30 12:18:55 +11:00
dependabot[bot]
db652acf67 chore(deps): bump aws-sdk-s3 from 1.140.0 to 1.141.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.140.0 to 1.141.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-11-29 09:04:14 +00:00
Rachel Arnould
63bf574b02 Merge pull request #11807 from abdellani/fix-bulk-invoice-printing
[Invoices] fix bulk invoice printing
2023-11-29 08:17:38 +01:00
David Cook
6bf418c4eb Fixup 2023-11-29 15:36:00 +11:00
David Cook
ccc0c17e04 Hide value of disabled input in popout
I'm not sure if we want to do this on all fields, so just scoped it here for now.
2023-11-29 15:36:00 +11:00
David Cook
9ce511f69d Update disabled field style 2023-11-29 15:35:59 +11:00
David Cook
aa792346fc Refactor 2023-11-29 15:18:23 +11:00
Maikel
afdd68269c Merge pull request #11866 from openfoodfoundation/dependabot/bundler/view_component-3.8.0
chore(deps): bump view_component from 3.7.0 to 3.8.0
2023-11-29 13:59:52 +11:00
Maikel Linke
f6e9bfe15d Further simplify Terms of Service spec
Since system specs are expensive, the standard workflow can be tested in
one "smoke test", as one scenario.

Run time reduced from 5.8s to 4.9s.
2023-11-29 12:21:38 +11:00
Maikel Linke
d3f2c72730 DRY Terms of Service spec to save time
The test conditions were already checked in the normal file upload.

Run time reduced from 7.2s to 5.8s.
2023-11-29 12:21:37 +11:00
Mohamed ABDELLANI
da900321ca fix product controller tests 2023-11-28 16:15:20 +01:00
Mohamed ABDELLANI
c995f5dfbe set the price to 0 on the cloned product (Spree::Code::RroductDuplicator) 2023-11-28 16:15:12 +01:00
Mohamed ABDELLANI
9ce62cf6af replace link_to with contant_tag 2023-11-28 15:02:03 +01:00
Mohamed ABDELLANI
a13e087541 use render edit instead of redirect_to
with redirect_to, the validation errors will be lost at the rendering time.
2023-11-28 13:45:17 +01:00
Mohamed ABDELLANI
a0c2facca4 validate price numericality on product and variants 2023-11-28 13:45:08 +01:00
Konrad
d4cebfdb4f Merge pull request #11837 from binarygit/open-link-in-new-page
Open external link in product description inside new page
2023-11-28 11:09:35 +01:00
dependabot[bot]
794d964007 chore(deps): bump view_component from 3.7.0 to 3.8.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.7.0 to 3.8.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.7.0...v3.8.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-11-28 09:45:44 +00:00
David Cook
40742d6308 Merge pull request #11861 from openfoodfoundation/dependabot/bundler/rswag-ui-2.12.0
chore(deps): bump rswag-ui from 2.11.0 to 2.12.0
2023-11-28 13:57:05 +11:00
David Cook
77c55838fa Merge pull request #11860 from openfoodfoundation/dependabot/bundler/rswag-api-2.12.0
chore(deps): bump rswag-api from 2.11.0 to 2.12.0
2023-11-28 13:52:54 +11:00
David Cook
021d11c5dd Merge pull request #11859 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.140.0
chore(deps): bump aws-sdk-s3 from 1.139.0 to 1.140.0
2023-11-28 13:47:43 +11:00
dependabot[bot]
457b9e4010 chore(deps): bump rswag-ui from 2.11.0 to 2.12.0
Bumps [rswag-ui](https://github.com/rswag/rswag) from 2.11.0 to 2.12.0.
- [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.11.0...2.12.0)

---
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-11-28 02:38:02 +00:00
dependabot[bot]
868b96fff0 chore(deps): bump rswag-api from 2.11.0 to 2.12.0
Bumps [rswag-api](https://github.com/rswag/rswag) from 2.11.0 to 2.12.0.
- [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.11.0...2.12.0)

---
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-11-28 02:38:00 +00:00
David Cook
e3ef791e10 Merge pull request #11858 from openfoodfoundation/dependabot/bundler/rswag-specs-2.12.0
chore(deps-dev): bump rswag-specs from 2.11.0 to 2.12.0
2023-11-28 13:36:37 +11:00
David Cook
bac023abf9 Merge pull request #11857 from mkllnk/default-host
Remove unnecessary host config in specs
2023-11-28 13:23:38 +11:00
David Cook
f034e46aed Fix label
Strangely, the spec passed when run locally, but not in CI. It's a curious case of the wrong letter case.
2023-11-28 10:44:34 +11:00
David Cook
994dd606b9 Refactor: remove dead code
I was mistakenly thinking that you can define variables in beforeEach, but it turns out these are not used.

Rather, Jest was automatically creating variables for the elements according to their IDs. How convenient!
2023-11-28 10:44:34 +11:00
David Cook
bc6a83017b Update spec
Ok that was an afterthought, but better late than never.
2023-11-28 10:44:34 +11:00
David Cook
373743f96d Simplify event handlers
The new 'input' event is for this exact use case.
2023-11-28 10:44:34 +11:00
David Cook
88fe8dcbe0 Show changes on popout button 2023-11-28 10:44:34 +11:00
David Cook
5e96368c85 Count changed checkboxes 2023-11-28 10:44:34 +11:00
David Cook
69f160ff95 Toggle input disabled when on demand checked
This introduces a new 'toggle' controller, and we already had three\! So I created a generic interface that could be extended to potentially support all of them. I propose we try to reduce them all into the one controller, but won't go down the rabbit-hole just yet..

I have an idea on how to re-arrange and make it more contained, by assigning the controller only to the checkbox, and defining targets with aria-controls="", but chose to stick with Stimulus conventions for now.
2023-11-28 10:44:34 +11:00
David Cook
9bc1e873d3 Display summary of the popout values
I couldn't think of a simpler way to hardcode it, so now we have a clever generic method :)

We can assume that hidden elements will stay hidden, but we need to check each time if an element is disabled or not.
2023-11-28 10:44:34 +11:00
David Cook
888e0b976b Refactor spec
Shoulda done this at the start.
2023-11-28 10:44:34 +11:00
David Cook
b6045655ee Hide popout when checkbox is checked 2023-11-28 10:44:34 +11:00
David Cook
78d2ddb9b7 Close popout when focus outside
I'm starting to think that these stimulus tests are worthless. The environment is not the same as a browser, which creates extra work to deal with the inconsistencies. And it means we're not testing real world behaviour.

So these are just unit tests, but they take extra effort to put together due to the inter-relatedness with the DOM. Hmm.
2023-11-28 10:44:34 +11:00
David Cook
4560e3728c Show popout on click or down key
It looks like a select drop-down, so it can behave like one too.
2023-11-28 10:44:34 +11:00
David Cook
735b5789cc [wip] Style on-hand button
Had to update the form controller a little bit to handle buttons.

But arrow not showwing on focus.
Getting some weird SCSS behaviour here.. maybe I'm trying to be too clever.
2023-11-28 10:44:34 +11:00
David Cook
d218565834 Style stock popout 2023-11-28 10:44:34 +11:00
David Cook
d9570cdf32 Update v3 checkbox style
This doesn't _quite_ match the design, but would require a big CSS hack to customise it further, so I thought let's start with this.
2023-11-28 10:44:34 +11:00
David Cook
b7ac1f2696 Move specific style rule to where it belongs
Also fixed it to line up properly. There's probably a better way to line it up but that's no my concern right now..
2023-11-28 10:44:34 +11:00
David Cook
eccfe96a5b Use form hash structure
The array format is generally fine, but to properly support checkboxes, we need this format with hash keys.
https://guides.rubyonrails.org/form_helpers.html#understanding-parameter-naming-conventions
2023-11-28 10:44:34 +11:00
David Cook
55cd8a6773 Add on_demand field
But 'Array parameters do not play well with the check_box helper.'

...
2023-11-28 10:43:10 +11:00
David Cook
7aefa834bf Add on_hand input 2023-11-28 10:43:10 +11:00
David Cook
4d22123e02 Remove stock level from product row
It creates the false impression we can handle agregated stock.
2023-11-28 10:43:10 +11:00
dependabot[bot]
a2b64f9ebb chore(deps): bump aws-sdk-s3 from 1.139.0 to 1.140.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.139.0 to 1.140.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-11-27 09:47:30 +00:00
dependabot[bot]
2f9375dcb2 chore(deps-dev): bump rswag-specs from 2.11.0 to 2.12.0
Bumps [rswag-specs](https://github.com/rswag/rswag) from 2.11.0 to 2.12.0.
- [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.11.0...2.12.0)

---
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-11-27 09:43:36 +00:00
Maikel Linke
4c5c39f23b Remove unnecessary host config in specs 2023-11-27 10:51:23 +11:00
Gaetan Craig-Riou
4b070f8447 Merge pull request #11848 from dacook/vertical_ellipsis_menu_component
Vertical ellipsis menu component
2023-11-27 10:21:09 +11:00
Maikel
d067f1329f Merge pull request #11856 from duleorlovic/add_hi_and_mr_locale
Add hi and mr locale using tx pull -l hi
2023-11-27 09:18:03 +11:00
Dusan Orlovic
fc42330383 Add hi and mr locale using tx pull -l hi 2023-11-26 08:35:50 +01:00
Filipe
92686c97d6 Merge pull request #11853 from dacook/check_pdf_file_bulk_invoice_print2
Spec refactor
2023-11-24 10:14:53 +00:00
David Cook
e53960bae7 Disable Rails/OutputSafety for specs
This cop is to protect against user input. There's no user input (or users) in specs.
2023-11-24 16:35:45 +11:00
David Cook
d989b8ad2f Remove unnecessary partial
Yay, now it's compact enough to fit in the table partial.

(Although we should probably try to reduce that one down one day..)
2023-11-24 16:28:00 +11:00
David Cook
968a224da6 Move vertical ellipsis menu to a ViewComponent
Javascript hasn't been moved in, as we don't seem to be set up for that yet.

We could make it smarter, and pass in an array of parameters to build the links (as in _order_links.html.haml). But why make it complicated if we don't need to?
2023-11-24 16:23:18 +11:00
David Cook
2bd2bea7b7 Remove need for class
Generally, I would say that style rules should have a BEM-style class name, but in this case it's terribly convenient to support a tags directly.
2023-11-24 16:14:28 +11:00
Maikel Linke
f2f63eb416 Update all locales with the latest Transifex translations 2023-11-24 14:23:46 +11:00
Maikel Linke
777060ea6b Remove old script
We use Github to draft releases these days.
2023-11-24 14:22:42 +11:00
David Cook
3bfe0f86f2 Merge pull request #11852 from filipefurtad0/fix_display_inventory_warning_spec
Fix display inventory warning spec
2023-11-24 13:46:41 +11:00
David Cook
358470f801 Merge pull request #11849 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.139.0
chore(deps): bump aws-sdk-s3 from 1.138.0 to 1.139.0
2023-11-24 13:29:41 +11:00
David Cook
eecca8ee96 Refactor: match url with regexp
And remove unnecessary button click.
2023-11-24 12:41:02 +11:00
Gaetan Craig-Riou
f10c35dc32 Merge pull request #11850 from openfoodfoundation/dependabot/bundler/spring-4.1.3
chore(deps-dev): bump spring from 4.1.2 to 4.1.3
2023-11-24 12:31:29 +11:00
Gaetan Craig-Riou
8b5e543ba5 Merge pull request #11836 from filipefurtad0/check_pdf_file_bulk_invoice_print
Extends bulk print invoice spec to assert on file contents
2023-11-24 11:42:49 +11:00
David Cook
907d559eef Merge pull request #11847 from mkllnk/spec-opt
Avoid precompiling assets unnecessarily
2023-11-24 09:16:50 +11:00
filipefurtad0
0390d52f18 Adds test to reproduce issue #11851 2023-11-23 19:49:34 +00:00
filipefurtad0
8b5d5b3626 Changes inventory setting for order cycle coordinator
...instead of supplier; Inventory is a feature which is relevant for shops/hubs.
2023-11-23 17:27:09 +00:00
dependabot[bot]
103f5d1dcb chore(deps-dev): bump spring from 4.1.2 to 4.1.3
Bumps [spring](https://github.com/rails/spring) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v4.1.2...v4.1.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-23 10:09:38 +00:00
dependabot[bot]
bafbcd1e1e chore(deps): bump aws-sdk-s3 from 1.138.0 to 1.139.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.138.0 to 1.139.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-11-23 10:01:00 +00:00
Maikel Linke
3586497c56 Precompile assets only when needed 2023-11-23 17:23:47 +11:00
David Cook
c6fc139f62 Always generate components in subfolders
Currently all our view components are in subfolders, so we probably want to keep it that way.
2023-11-23 17:04:09 +11:00
Maikel Linke
37feefce37 Avoid precompiling assets unnecessary
We had two calls to precompile assets, one for all specs and then a
second one just for system specs. The one for system specs is better
because it checks for the webpack dev server before compiling assets. So
let's use just that one.
2023-11-23 17:00:44 +11:00
Maikel Linke
6431b94aba Remove unnecessary condition in spec helper
This helper file is only loaded when system specs are loaded. So we
don't need to check for the absence of system specs because this file
wouldn't be loaded if there were not system specs to be run.
2023-11-23 16:59:30 +11:00
Maikel
bb0684bd23 Merge pull request #11818 from mkllnk/dfc-vocabularies 2023-11-23 10:06:38 +11:00
Maikel
ee4dd0666c Merge pull request #11840 from openfoodfoundation/dependabot/bundler/active_storage_validations-1.1.3
chore(deps): bump active_storage_validations from 1.1.2 to 1.1.3
2023-11-23 09:29:50 +11:00
Maikel
f8fc44ea72 Merge pull request #11844 from filipefurtad0/fix_blacklist_whitelist_deprecation_warning
[System specs, CI] Fixes blacklist/whitelist deprecation warning
2023-11-23 08:48:48 +11:00
Maikel
1e635673c0 Merge pull request #11842 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.138.0
chore(deps): bump aws-sdk-s3 from 1.137.0 to 1.138.0
2023-11-23 08:47:49 +11:00
Maikel
bf95a655af Merge pull request #11841 from openfoodfoundation/dependabot/bundler/rspec-rails-6.1.0
chore(deps-dev): bump rspec-rails from 6.0.3 to 6.1.0
2023-11-23 08:47:13 +11:00
Maikel
3f76a4c68e Merge pull request #11839 from openfoodfoundation/dependabot/bundler/faraday-2.7.12
chore(deps): bump faraday from 2.7.11 to 2.7.12
2023-11-23 08:42:51 +11:00
Maikel Linke
22e96764ec Simplify spec 2023-11-23 08:39:20 +11:00
filipefurtad0
660db32c04 Converts whitelist URLs to regular expressions 2023-11-22 17:37:41 +00:00
filipefurtad0
674974f868 Moves block within test description
This way, we don't need to use it as a global method

Clarifies context naming
2023-11-22 17:01:43 +00:00
Rachel Arnould
1088b6b6dd Merge pull request #11785 from chahmedejaz/task/11067-admin_style_v3-product-clone
Implement product clone
2023-11-22 16:29:38 +01:00
dependabot[bot]
4b2def7831 chore(deps): bump aws-sdk-s3 from 1.137.0 to 1.138.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.137.0 to 1.138.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-11-22 09:32:36 +00:00
dependabot[bot]
55a2562061 chore(deps-dev): bump rspec-rails from 6.0.3 to 6.1.0
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 6.0.3 to 6.1.0.
- [Release notes](https://github.com/rspec/rspec-rails/releases)
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v6.0.3...v6.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-22 09:28:41 +00:00
dependabot[bot]
fa3bfe7698 chore(deps): bump active_storage_validations from 1.1.2 to 1.1.3
Bumps [active_storage_validations](https://github.com/igorkasyanchuk/active_storage_validations) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/igorkasyanchuk/active_storage_validations/releases)
- [Changelog](https://github.com/igorkasyanchuk/active_storage_validations/blob/master/CHANGES.md)
- [Commits](https://github.com/igorkasyanchuk/active_storage_validations/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-22 09:16:42 +00:00
dependabot[bot]
0bed1e852f chore(deps): bump faraday from 2.7.11 to 2.7.12
Bumps [faraday](https://github.com/lostisland/faraday) from 2.7.11 to 2.7.12.
- [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.11...v2.7.12)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-22 09:12:53 +00:00
Maikel
599085b33f Merge pull request #11838 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.0.8
chore(deps): bump trix from 2.0.7 to 2.0.8
2023-11-22 16:46:26 +11:00
Maikel
19c4629ff9 Merge pull request #11835 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.137.0
chore(deps): bump aws-sdk-s3 from 1.136.0 to 1.137.0
2023-11-22 16:26:00 +11:00
Maikel
a286b15be5 Merge pull request #11834 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.22.2
chore(deps-dev): bump rubocop-rails from 2.22.1 to 2.22.2
2023-11-22 15:57:38 +11:00
Maikel
97d9ea4f7a Merge pull request #11833 from openfoodfoundation/dependabot/bundler/bullet-7.1.4
chore(deps-dev): bump bullet from 7.1.3 to 7.1.4
2023-11-22 15:54:41 +11:00
Maikel
e602174451 Merge pull request #11832 from openfoodfoundation/dependabot/bundler/activerecord-import-1.5.1
chore(deps): bump activerecord-import from 1.5.0 to 1.5.1
2023-11-22 15:53:46 +11:00
Maikel
e16429b166 Merge pull request #11821 from mkllnk/feature-toggled-specs
Feature toggled specs
2023-11-22 14:18:13 +11:00
Konrad
8ae9399a28 Merge pull request #11831 from chahmedejaz/task/11827-activate-vouchers-by-default
Fully Enable Vouchers Feature Toggle by Default
2023-11-21 14:45:13 +01:00
Konrad
40f5fadc9a Merge pull request #11732 from yasirazgar/11612_keep_data_range_reports
Maintain date range values in the report forms
2023-11-21 13:48:58 +01:00
Yasir Azgar
72089d8213 11612 - pass date args
fix typo
2023-11-21 11:15:52 +01:00
dependabot[bot]
8398e6facb chore(deps): bump trix from 2.0.7 to 2.0.8
Bumps [trix](https://github.com/basecamp/trix) from 2.0.7 to 2.0.8.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.0.7...v2.0.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-21 09:19:11 +00:00
binarygit
208cad959a Open external link in product description inside new page 2023-11-21 13:33:48 +05:45
filipefurtad0
a5e5b4a114 Extends bulk print invoice spec to assert on file contents 2023-11-20 19:31:10 +00:00
dependabot[bot]
e37acfc251 chore(deps): bump aws-sdk-s3 from 1.136.0 to 1.137.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.136.0 to 1.137.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-11-20 09:51:11 +00:00
dependabot[bot]
2ab4f7010d chore(deps-dev): bump rubocop-rails from 2.22.1 to 2.22.2
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.22.1 to 2.22.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.22.1...v2.22.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 09:49:30 +00:00
dependabot[bot]
7a88c9186a chore(deps-dev): bump bullet from 7.1.3 to 7.1.4
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.1.3 to 7.1.4.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.1.3...7.1.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 09:48:19 +00:00
dependabot[bot]
0b0d7f7610 chore(deps): bump activerecord-import from 1.5.0 to 1.5.1
Bumps [activerecord-import](https://github.com/zdennis/activerecord-import) from 1.5.0 to 1.5.1.
- [Changelog](https://github.com/zdennis/activerecord-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zdennis/activerecord-import/compare/v1.5.0...v1.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 09:47:53 +00:00
Maikel
7919329651 Update db/migrate/20231118125941_activate_voucher_by_default.rb 2023-11-20 09:31:50 +11:00
Ahmed Ejaz
e370693309 #11827, fully enable vouchers by default 2023-11-18 18:05:45 +05:00
filipefurtad0
a30c0008a1 Update all locales with the latest Transifex translations 2023-11-17 12:49:34 +00:00
Filipe
ebd1151054 Merge pull request #11730 from murjax/payment-save-flash-9048
Fix Stripe payment flash rendering issue
2023-11-17 11:51:42 +00:00
Filipe
e6e4e014dc Merge pull request #11731 from chahmedejaz/bugfix/11667-clone-tags-issue-for-OC
Fix Cloning Tags Issue for OrderCycle
2023-11-17 10:50:33 +00:00
Filipe
c9084db933 Merge pull request #11761 from binarygit/open-external-links-in-new-page
Open external links in product description in a new page
2023-11-17 10:30:03 +00:00
David Cook
84ea05ad5a Merge pull request #11822 from rioug/revert-prettier-to-2.8.8
Revert prettier to v 2.8.8
2023-11-17 16:01:20 +11:00
Maikel
a1dbb3353f Merge pull request #11820 from macanudo527/fix_autocorrect_rubocop2
Fix Style Rubocop Errors
2023-11-17 14:25:12 +11:00
Maikel
df44446291 Merge pull request #11819 from dacook/update-browserslist-db
Update browserslist caniuse db
2023-11-17 14:05:11 +11:00
Maikel Linke
6f3bee708c Check feature name in specs
There was one case where a typo meant that the desired feature wasn't
active and tests were not testing the right code path. Using this new
syntax should prevent that.

* https://github.com/openfoodfoundation/openfoodnetwork/pull/11705
2023-11-17 13:18:31 +11:00
Maikel Linke
d841b1dae2 DRY feature activation in specs
It's simple this way and we have one place to add logic to when needed
(see next commit).
2023-11-17 13:17:27 +11:00
Gaetan Craig-Riou
5117cd31e9 Pretty-quick breaks with Prettier v3
As explained here : https://github.com/azz/pretty-quick/issues/164
We most likely need to move away from pretty-quick
2023-11-17 13:04:32 +11:00
Maikel
f087aa07d0 Merge pull request #11705 from abdellani/fix-existing-tests
Fix invoice printing tests
2023-11-17 12:57:24 +11:00
Neal Chambers
c3c4486d0c Safely autocorrect Style/RedundantStringEscape
Inspecting 1513 files
..........................................................................................................................................................................................................................................................................................................................C...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C......................................................................................................................................................................................................................................................................................................................................................................................................................................................................C...........................................................................................................

Offenses:

app/models/spree/calculator.rb:31:48: C: [Corrected] Style/RedundantStringEscape: Redundant escape of / inside string literal.
      self.class.name.titleize.gsub("Calculator\/", "")
                                               ^^
spec/controllers/spree/admin/shipping_methods_controller_spec.rb:40:78: C: [Corrected] Style/RedundantStringEscape: Redundant escape of ' inside string literal.
        params[:shipping_method][:calculator_attributes][shipping_amount] = "\'20.0'"
                                                                             ^^
spec/system/admin/enterprise_fees_spec.rb:82:78: C: [Corrected] Style/RedundantStringEscape: Redundant escape of ' inside string literal.
    fill_in("#{prefix}_calculator_attributes_preferred_flat_percent", with: "\'20.0'")
                                                                             ^^
spec/system/admin/enterprise_fees_spec.rb:140:42: C: [Corrected] Style/RedundantStringEscape: Redundant escape of ' inside string literal.
        'preferred_flat_percent', with: "\'20.0'"
                                         ^^

1513 files inspected, 4 offenses detected, 4 offenses corrected
2023-11-17 09:03:32 +09:00
Neal Chambers
edbf4c15a9 Safely autocorrect Style/RedundantReturn
Inspecting 1513 files
.........................................................................................................................................................................................................................................................................................................C......................................................C............................................................................................................................................................................................................................................................................................................................................................................................................................................C.........................................................C.......C.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/models/product_import/entry_validator.rb:200:7: C: [Corrected] Style/RedundantReturn: Redundant return detected.
      return true unless Float(value, exception: false).nil?
      ^^^^^^
app/models/spree/stock/availability_validator.rb:30:9: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
        return line_item.target_shipment if line_item.target_shipment
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/stock/availability_validator.rb:31:9: C: [Corrected] Style/RedundantReturn: Redundant return detected.
        return line_item.order.shipments.first if line_item.order&.shipments&.any?
        ^^^^^^
lib/reporting/reports/enterprise_fee_summary/summarizer.rb:41:11: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
          return DataRepresentations::IncomingExchangeLineItemFee if for_incoming_exchange?
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/summarizer.rb:42:11: C: [Corrected] Style/RedundantReturn: Redundant return detected.
          return DataRepresentations::OutgoingExchangeLineItemFee if for_outgoing_exchange?
          ^^^^^^
lib/stripe/authorize_response_patcher.rb:31:7: C: [Corrected] Style/RedundantReturn: Redundant return detected.
      return url if url.match(%r{https?://\S+}) && url.include?("stripe.com")
      ^^^^^^
lib/tasks/data.rake:99:7: C: [Corrected] Style/RedundantReturn: Redundant return detected.
      return true if Integer(value)
      ^^^^^^

1513 files inspected, 7 offenses detected, 7 offenses corrected
2023-11-17 09:00:50 +09:00
Neal Chambers
85fef7ac4b Safely autocorrect Style/RedundantRegexpArgument
Inspecting 1513 files
...........................................................................................................................................................................................................................................................................................................................................................C....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/models/spree/shipping_method.rb:69:25: C: [Corrected] Style/RedundantRegexpArgument: Use string ":tracking" as argument instead of regexp /:tracking/.
      tracking_url.gsub(/:tracking/, tracking) unless tracking.blank? || tracking_url.blank?
                        ^^^^^^^^^^^
lib/spree/i18n.rb:36:17: C: [Corrected] Style/RedundantRegexpArgument: Use string "spree" as argument instead of regexp /spree/.
      path.gsub(/spree/, '')
                ^^^^^^^

1513 files inspected, 2 offenses detected, 2 offenses corrected
2023-11-17 08:59:27 +09:00
David Cook
668b102efc Combine two specs for efficiency 2023-11-17 10:21:55 +11:00
Gaetan Craig-Riou
8347557bea Merge pull request #11814 from openfoodfoundation/dependabot/bundler/active_storage_validations-1.1.2
chore(deps): bump active_storage_validations from 1.1.1 to 1.1.2
2023-11-17 10:12:29 +11:00
Gaetan Craig-Riou
ecb5ae47ff Merge pull request #11812 from openfoodfoundation/dependabot/bundler/angular_rails_csrf-6.0.0
chore(deps): bump angular_rails_csrf from 5.0.0 to 6.0.0
2023-11-17 10:08:15 +11:00
Ahmed Ejaz
b056c1495b Merge branch 'master' into task/11067-admin_style_v3-product-clone 2023-11-17 03:53:33 +05:00
Maikel
54f6b32231 Merge pull request #11810 from filipefurtad0/extend_payment_intents_tests
[VCR, automation] Adds payment intent tests with invalid cards
2023-11-17 09:50:25 +11:00
Ahmed Ejaz
29eadedc3a Merge branch 'master' into task/11067-admin_style_v3-product-clone 2023-11-17 03:45:54 +05:00
David Cook
de9fbea2b8 npx update-browserslist-db@latest
Compilation was sometimes failing with the following error. So I did what it said.

> Browserslist: caniuse-lite is outdated. Please run:
>   npx update-browserslist-db@latest
>   Why you should do it regularly: https://github.com/browserslist/update-db#readme
2023-11-17 09:45:11 +11:00
David Cook
2960f7570e Merge pull request #11741 from abdellani/fix-product-with-ml-unit-display-dl
Fix product with ml unit display dl
2023-11-17 09:41:44 +11:00
Konrad
0fae09f5a2 Merge pull request #11659 from chahmedejaz/bugfix/11606-localized-date-times
Fixes un-localized Order date and time format on edit order page
2023-11-16 21:27:13 +01:00
Ahmed Ejaz
fc59c9397d 11606, fix lint issues 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
4040dc0a52 #11606, add and fix specs for pretty_time method 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
edc827bdc8 #11606, adds long time formatting for en.yml 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
dddb777cea #11606, adds date locales for Português do Brasil 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
4639a002f2 #11606, adds date locales for Nederlands (Belgium) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
6a889d8084 #11606, adds date locales for Italiano (Switzerland) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
a35dcde0e3 #11606, adds date locales for Français (Cameroon) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
ec7c77af68 #11606, adds date locales for Français (Switzerland) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
6a0588e6a2 #11606, adds date locales for Français (Canada) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
c3bc2d1087 #11606, adds date locales for Français (Belgium) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
e0ed5ef9f0 #11606, adds date locales for Filipino (Philippines) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
295ad230c2 #11606, adds date locales for Espanol (United States) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
afa172bfa2 #11606, adds date locales for Espanol (Costa Rica) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
315dfe7d38 #11606, adds date locales for Espanol (Colombia) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
adcca684bf #11606, adds date locales for German (Germany) 2023-11-16 20:57:40 +01:00
Ahmed Ejaz
850a9c3738 #11606, adds langage locales for the German for Germany 2023-11-16 20:57:40 +01:00
Filipe
ed8fd41bec Merge pull request #11290 from cyrillefr/Orders_in_confirmation_state_cannot_be_completed_by_hub_or_shop
Fix Orders in confirmation state cannot be completed by hub or shop
2023-11-16 19:50:14 +00:00
Filipe
37436aab80 Merge pull request #11799 from murjax/enterprise-panel-navigation-6754
Fix navigation behavior on enterprise settings panel tabs
2023-11-16 17:56:49 +00:00
Filipe
8a3fbf92b9 Merge pull request #11776 from rioug/11775-fix-hidden-input
Fix hidden input showing on Producer registration
2023-11-16 17:26:28 +00:00
Konrad
dff8257255 Merge pull request #11661 from mkllnk/report-file-storage
Store report files on the local disk
2023-11-16 16:20:46 +01:00
filipefurtad0
beb47f03c0 Removes Stripe module
...and calls it within the describe block
2023-11-16 14:46:25 +00:00
Maikel
c8023b7c37 Merge pull request #11813 from openfoodfoundation/dependabot/bundler/spring-4.1.2
chore(deps-dev): bump spring from 4.1.1 to 4.1.2
2023-11-16 17:00:51 +11:00
Maikel
63721938c3 Merge pull request #11780 from filipefurtad0/fix_pending_examples_on_invoices_spec
Fixes pending tests cases on invoices spec
2023-11-16 17:00:02 +11:00
Maikel Linke
6e34c41f42 Bump DFC taxonomies to v1.0.2
Finally replacing the last of the old DFC context URLs that are not
valid any more.
2023-11-16 15:52:31 +11:00
Maikel
5f3e176b49 Merge pull request #11816 from mkllnk/dfc-enterprise-fields
Add logo and contact info to DFC Enterprise API
2023-11-16 10:15:01 +11:00
Maikel Linke
b055474918 DRY long method 2023-11-16 09:30:04 +11:00
Maikel Linke
e5f5f3922c Add contact name to DFC Enterprise API 2023-11-16 09:10:43 +11:00
filipefurtad0
9d00b7dc43 Re-records relevant cassettes 2023-11-15 13:05:15 +00:00
filipefurtad0
4c3f87f047 Adds payment intent tests with invalid cards 2023-11-15 13:05:15 +00:00
Maikel Linke
3e6db7fda4 Update spec of changed report link
The link now contains the local test server instead of some fake domain.
2023-11-15 10:29:05 +01:00
Maikel Linke
9f00817852 Use source of truth of url_options for report URLs
The ActionController options were not set in testing nor Sidekiq jobs.
The now used config is always set in config/application.rb.
2023-11-15 10:29:05 +01:00
Maikel Linke
a110ee0982 Simplify Active Storage config for test env 2023-11-15 10:29:05 +01:00
Maikel Linke
eaff1ed921 Store report files on the local disk 2023-11-15 10:29:05 +01:00
Maikel Linke
20af19c912 Simplify report file storage 2023-11-15 10:29:05 +01:00
Maikel Linke
ff6bcb113f Create report file where the content is generated
In the past, we needed the report blob to know when the report has been
finished and uploaded. But not we use cable_ready to notify when the
report is done and we don't need the blob in the controller.
2023-11-15 10:29:05 +01:00
dependabot[bot]
021e150421 chore(deps): bump active_storage_validations from 1.1.1 to 1.1.2
Bumps [active_storage_validations](https://github.com/igorkasyanchuk/active_storage_validations) from 1.1.1 to 1.1.2.
- [Release notes](https://github.com/igorkasyanchuk/active_storage_validations/releases)
- [Changelog](https://github.com/igorkasyanchuk/active_storage_validations/blob/master/CHANGES.md)
- [Commits](https://github.com/igorkasyanchuk/active_storage_validations/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-15 09:17:25 +00:00
dependabot[bot]
b54794f3f6 chore(deps-dev): bump spring from 4.1.1 to 4.1.2
Bumps [spring](https://github.com/rails/spring) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v4.1.1...v4.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-15 09:16:50 +00:00
dependabot[bot]
9d2ca908cb chore(deps): bump angular_rails_csrf from 5.0.0 to 6.0.0
Bumps [angular_rails_csrf](https://github.com/jsanders/angular_rails_csrf) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/jsanders/angular_rails_csrf/releases)
- [Changelog](https://github.com/jsanders/angular_rails_csrf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsanders/angular_rails_csrf/compare/v5.0.0...v6.0.0)

---
updated-dependencies:
- dependency-name: angular_rails_csrf
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-15 09:14:26 +00:00
Maikel Linke
fc8f0ec4f2 Add email address to DFC Enterprise API 2023-11-15 17:00:53 +11:00
Maikel Linke
057c1363b1 Add phone number to DFC Enterprise API 2023-11-15 16:57:38 +11:00
Maikel Linke
80c0df9d1e Add website to DFC Enterprise API 2023-11-15 16:48:44 +11:00
Maikel Linke
1fb87bc497 Add SocialMedia to DFC Enterprise API 2023-11-15 16:19:23 +11:00
Maikel Linke
9311a29c9f Add logo URL to DFC Enterprise API 2023-11-15 15:16:39 +11:00
Maikel Linke
6266df5c76 Add long description to DFC Enterprise API 2023-11-15 14:59:15 +11:00
David Cook
3f4ef3e48b Merge pull request #11806 from openfoodfoundation/dependabot/npm_and_yarn/prettier-3.1.0
chore(deps-dev): bump prettier from 2.8.8 to 3.1.0
2023-11-15 12:28:12 +11:00
David Cook
58cf3cfca8 Merge pull request #11802 from mkllnk/flaky-taxonomies
Stabilise spec with sleep
2023-11-15 11:55:25 +11:00
Maikel Linke
58d2e9d9aa Fix pending spec example and clarify displayed content 2023-11-15 10:28:45 +11:00
Maikel Linke
b626ec1cd7 Further reduce branching
This is much easier to read.
2023-11-15 10:13:24 +11:00
Maikel Linke
d0c07df0cf Avoid complexity of branch flags 2023-11-15 10:06:48 +11:00
filipefurtad0
a56f95d1e3 Uses more readable DB call
Also makes some other minor improvements, like removing the rest case around editing ajustment types, something which we don't really need a test for, as it should not occur in the app
2023-11-14 14:40:21 +00:00
filipefurtad0
612125b918 Updates create/delete adjustments tests
Creating and deleting adjustments will change associated attributes such as the payment state of the order which triggers a new invoice
2023-11-13 23:20:50 +00:00
filipefurtad0
eea15089d3 Updates state change tests
Cancelling orders will change associated attributes such as payment_state which is triggers a new invoice
2023-11-13 23:19:40 +00:00
filipefurtad0
e7c2b52f52 Updates pending example
..however: creating and deleting adjustments are still not passing when can_update_latest_invoice? is called over the order. @abdellani, I think I need your help on this one, I was not able to progress any further
2023-11-13 23:19:40 +00:00
filipefurtad0
9057ffd6c0 Fixes pending test case 2023-11-13 23:19:40 +00:00
binarygit
249c0029dd Improve tests 2023-11-13 21:31:41 +05:45
binarygit
f52c7e8a5d Rename richtext controller and write specs 2023-11-13 21:31:41 +05:45
binarygit
e78fe663d2 Open external links in product description in a new page 2023-11-13 21:31:41 +05:45
dependabot[bot]
40430a8fab chore(deps-dev): bump prettier from 2.8.8 to 3.1.0
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.1.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.1.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-13 09:58:03 +00:00
Mohamed ABDELLANI
847c3af4da update WeightsAndMeasures#scales_for_variant_unit to ignore available untis when needed 2023-11-13 09:59:14 +01:00
David Cook
b872d7c308 Re-arrange spec
Best viewed with white-space ignored
2023-11-13 09:29:31 +01:00
David Cook
91cb3df215 Use named config method
And mock the preference value, rather than setting it. Before, the set preference could have leaked to other tests.
(I noticed that it was already like this in product_import_spec.rb)
2023-11-13 09:29:31 +01:00
Mohamed ABDELLANI
72d854487a update VariantUnitManager#compatibleUnitScales to return units that are selected 2023-11-13 09:29:31 +01:00
Mohamed ABDELLANI
864f63b7b0 update VariantUnitManger specs 2023-11-13 09:29:31 +01:00
Mohamed ABDELLANI
a9d85fd08f fix existing tests 2023-11-13 09:29:31 +01:00
Mohamed ABDELLANI
2733e45e16 update the list of the unit on VariantUnitManager 2023-11-13 09:29:31 +01:00
Mohamed ABDELLANI
e10d441153 load GeneralSettingsHelper#all_units from WeightsAndMeasures::UNITS 2023-11-13 09:29:31 +01:00
Mohamed ABDELLANI
fb24678654 update units list on Spree::Admin::GeneralSettingsHelper#all_units
added a test to make sure that all units on WeightsAndMeasures::UNITS are list on all_units
2023-11-13 09:29:31 +01:00
Mohamed ABDELLANI
642cd85cb9 update WeightsAndMeasures#scale_for_unit_value to only return units that are selected on 'Available Units' list 2023-11-13 09:29:31 +01:00
Mohamed ABDELLANI
b3b86c428c test tax totals on the printed version of the invoice (v3) 2023-11-13 07:48:59 +01:00
Mohamed ABDELLANI
e37f9e54fd reimplement "order with taxes" tests under "invoices feature enabled" 2023-11-13 07:39:55 +01:00
Mohamed ABDELLANI
c759a0f646 move tests under shared_examples "order with tax" to context "when invoice feature is not enabled" 2023-11-13 07:39:55 +01:00
Mohamed ABDELLANI
13bfbc21e0 remove unecessary instructions from "Check display on each invoice: legacy and alternative" 2023-11-13 07:39:55 +01:00
Mohamed ABDELLANI
4eedf74ecd remove unecessary instructions from "contains right Payment Description at Checkout information"
1.When the user tries to print an invoice for an order (that doesn't have any previous invoices), an invoice will be generated automatically.
2.When the user tries to print an invoice for an order without specifing the id of the invoice, he'll get the latest invoice
2023-11-13 07:39:55 +01:00
Mohamed ABDELLANI
5be8ec0c5a set completed_at on the order used for testing 2023-11-13 07:39:55 +01:00
Mohamed ABDELLANI
1724e1d626 fix invoice feature flag enabling 2023-11-13 07:39:55 +01:00
Gaetan Craig-Riou
1107083bc9 Merge pull request #11733 from yasirazgar/11714_fix_bugsnag_warning
11714 -  Fix bugsnag warning
2023-11-13 16:52:20 +11:00
yasir azgar
703ef8a203 Update config/initializers/bugsnag.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-11-13 10:42:46 +05:30
yasir azgar
b119a97eaf Update config/initializers/bugsnag.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-11-13 10:42:46 +05:30
Yasir Azgar
5eed500786 supress bugsnag warn in dev 2023-11-13 10:42:46 +05:30
Yasir Azgar
eb82accb79 revert unwanted change 2023-11-13 10:42:46 +05:30
Yasir Azgar
866a1b4bcb 11714 fix bugsnag warn 2023-11-13 10:42:46 +05:30
Maikel Linke
6ce3572b24 Stabilise spec with sleep
I didn't look into what's going wrong here. A sleep is not ideal but
better than a retry.

That page needs a rewrite anyway and therefore I don't want to invest
more work now.
2023-11-13 14:21:10 +11:00
Maikel
b2c6551c26 Merge pull request #11797 from openfoodfoundation/dependabot/npm_and_yarn/cable_ready-5.0.2
chore(deps): bump cable_ready from 5.0.1 to 5.0.2
2023-11-13 12:48:56 +11:00
dependabot[bot]
54426f80df chore(deps): bump cable_ready from 5.0.1 to 5.0.2
Bumps [cable_ready](https://github.com/stimulusreflex/cable_ready) from 5.0.1 to 5.0.2.
- [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.1...v5.0.2)

---
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-11-12 23:27:36 +00:00
Maikel
709c4d20f9 Merge pull request #11786 from macanudo527/fix_autocorrect_rubocop
Fix Style Rubocop Errors
2023-11-13 10:25:03 +11:00
Ahmed Ejaz
8bac8ad4be 11067, fix lint issues 2023-11-11 16:04:28 +05:00
Ahmed Ejaz
2d55322a55 Merge branch 'master' into task/11067-admin_style_v3-product-clone 2023-11-11 16:00:15 +05:00
Ahmed Ejaz
ab93b06bac #11067, add specs 2023-11-11 15:58:29 +05:00
Ahmed Ejaz
0457755e27 Merge branch 'task/11067-admin_style_v3-product-clone' of https://github.com/chahmedejaz/openfoodnetwork into task/11067-admin_style_v3-product-clone 2023-11-11 15:54:58 +05:00
Ahmed Ejaz
d8904099dd #11067, remove messages to match with old UI UX 2023-11-11 15:47:59 +05:00
Ryan Murphy
5c4b06730b Fix navigation behavior on enterprise panel tabs 2023-11-10 12:26:16 -05:00
Filipe
5d76f98fec Merge pull request #11754 from mkllnk/reload-bug
Don't update order when not enough stock when editing as admin
2023-11-10 16:57:43 +00:00
Ahmed Ejaz
e1e46bcbc2 #11067, hide clone option for variant 2023-11-10 15:36:10 +05:00
Gaetan Craig-Riou
06a4cbafd4 Merge pull request #11788 from dacook/release-scripts
Add script for preparing translations
2023-11-10 13:56:04 +11:00
David Cook
d47128e355 Describe how to choose version number
Thanks Maikel for summarising this: https://community.openfoodnetwork.org/t/release-numbering/105/6
2023-11-10 12:14:52 +11:00
David Cook
0c6608f828 Add comments 2023-11-10 11:46:48 +11:00
Neal Chambers
7c14853add Safely autocorrect Style/RedundantDoubleSplatHashBraces
Inspecting 1509 files
.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C...............

Offenses:

spec/system/support/cuprite_setup.rb:13:5: C: [Corrected] Style/RedundantDoubleSplatHashBraces: Remove the redundant double splat and braces, use keyword arguments directly.
    **{ ...
    ^^^
spec/system/support/cuprite_setup.rb:14:7: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
      browser_options:,
      ^^^^^^^^^^^^^^^^
spec/system/support/cuprite_setup.rb:15:7: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
      process_timeout: 60,
      ^^^^^^^^^^^^^^^^^^^
spec/system/support/cuprite_setup.rb:16:7: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
      timeout: 60,
      ^^^^^^^^^^^
spec/system/support/cuprite_setup.rb:17:7: C: [Corrected] Layout/CommentIndentation: Incorrect indentation detected (column 6 instead of 4).
      # Don't load scripts from external sources, like google maps or stripe
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/support/cuprite_setup.rb:18:7: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
      url_whitelist: ["http://localhost", "http://0.0.0.0", "http://127.0.0.1"],
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/support/cuprite_setup.rb:19:7: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
      inspector: true,
      ^^^^^^^^^^^^^^^
spec/system/support/cuprite_setup.rb:20:7: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
      headless:,
      ^^^^^^^^^
spec/system/support/cuprite_setup.rb:21:7: C: [Corrected] Layout/HashAlignment: Align the keys of a hash literal if they span more than one line.
      js_errors: true
      ^^^^^^^^^^^^^^^

1509 files inspected, 9 offenses detected, 9 offenses corrected
2023-11-10 09:13:57 +09:00
Neal Chambers
c3b4781a28 Safely autocorrect Style/RedundantConstantBase
Inspecting 1509 files
.........................................................................................................C.........................................C......................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.......................................................................................................................................................................................................................................................................................................................................................................................................................C.........................................................................................................................................................................CCC........................................C......................................................................................C......................................................................................................................................................................................................

Offenses:

app/controllers/split_checkout_controller.rb:5:33: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
class SplitCheckoutController < ::BaseController
                                ^^
app/controllers/webhook_endpoints_controller.rb:3:36: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
class WebhookEndpointsController < ::BaseController
                                   ^^
config.ru:5:9: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
require ::File.expand_path('config/environment', __dir__)
        ^^
spec/helpers/checkout_helper_spec.rb:168:68: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
      let!(:tax_rate) { create(:tax_rate, amount: 0.1, calculator: ::Calculator::DefaultTax.new) }
                                                                   ^^
spec/models/spree/order_spec.rb:619:25: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
    let(:fee_handler) { ::OrderFeesHandler.new(subject) }
                        ^^
spec/models/spree/payment_method_spec.rb:150:51: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
                                      calculator: ::Calculator::FlatRate.new(preferred_amount: 10))
                                                  ^^
spec/models/spree/payment_method_spec.rb:154:54: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
                                         calculator: ::Calculator::FlatPercentItemTotal
                                                     ^^
spec/models/spree/payment_spec.rb:429:49: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
            create(:payment_method, calculator: ::Calculator::FlatRate.new(preferred_amount: 10))
                                                ^^
spec/models/spree/payment_spec.rb:1002:11: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
          ::Calculator::FlatPercentItemTotal.new(preferred_flat_percent: 10)
          ^^
spec/models/spree/payment_spec.rb:1039:28: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
        let(:calculator) { ::Calculator::FlatPercentItemTotal.new(preferred_flat_percent: 10) }
                           ^^
spec/queries/complete_visible_orders_spec.rb:12:31: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
    let(:order_permissions) { ::Permissions::Order.new(user, filter_canceled) }
                              ^^
spec/services/paypal_items_builder_spec.rb:34:37: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
                        calculator: ::Calculator::DefaultTax.new)
                                    ^^
spec/services/paypal_items_builder_spec.rb:38:37: C: [Corrected] Style/RedundantConstantBase: Remove redundant ::.
                        calculator: ::Calculator::DefaultTax.new)
                                    ^^

1509 files inspected, 13 offenses detected, 13 offenses corrected
2023-11-10 09:13:57 +09:00
Neal Chambers
ef928aa6fe Safely autocorrect Style/QuotedSymbols
Inspecting 1509 files
.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.................................................................................................................................................................................................................................................................................................................................C............................................................C...........................................................................................................................................................................................................................................................................................................................................C.C.........................................................................................................................................C........................................................................................................................................

Offenses:

app/services/exchange_products_renderer.rb:50:13: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
      where("spree_variants.id": incoming_exchanges_variants)
            ^^^^^^^^^^^^^^^^^^^
lib/stripe/credit_card_cloner.rb:67:50: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
                                   { metadata: { "ofn-clone": true } },
                                                 ^^^^^^^^^^^
spec/controllers/api/v0/exchange_products_controller_spec.rb:59:52: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
          Spree::Product.includes(:variants).where("spree_variants.id": exchange.variants.map(&:id))
                                                   ^^^^^^^^^^^^^^^^^^^
spec/requests/api/orders_spec.rb:35:11: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
          "application/json": {
          ^^^^^^^^^^^^^^^^^^
spec/requests/api/v1/customers_spec.rb:39:16: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
        schema "$ref": "#/components/schemas/customers_collection"
               ^^^^^^
spec/requests/api/v1/customers_spec.rb:186:16: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
        schema "$ref": "#/components/schemas/customer"
               ^^^^^^
spec/requests/api/v1/customers_spec.rb:207:16: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
        schema "$ref": "#/components/schemas/customer"
               ^^^^^^
spec/requests/api/v1/customers_spec.rb:230:16: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
        schema "$ref": "#/components/schemas/error_response"
               ^^^^^^
spec/requests/api/v1/customers_spec.rb:239:16: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
        schema "$ref": "#/components/schemas/error_response"
               ^^^^^^
spec/requests/api/v1/customers_spec.rb:274:16: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
        schema "$ref": "#/components/schemas/error_response"
               ^^^^^^
spec/requests/api/v1/customers_spec.rb:286:18: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
          schema "$ref": "#/components/schemas/error_response"
                 ^^^^^^
spec/requests/api/v1/customers_spec.rb:361:16: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
        schema "$ref": "#/components/schemas/customer"
               ^^^^^^
spec/requests/api/v1/customers_spec.rb:427:16: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
        schema "$ref": "#/components/schemas/error_response"
               ^^^^^^
spec/requests/api/v1/customers_spec.rb:440:16: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
        schema "$ref": "#/components/schemas/customer"
               ^^^^^^
spec/requests/api/v1/customers_spec.rb:455:16: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
        schema "$ref": "#/components/schemas/customers_collection"
               ^^^^^^
spec/support/request/stripe_stubs.rb:72:42: C: [Corrected] Style/QuotedSymbols: Prefer single-quoted symbols when you don't need string interpolation or special symbols.
    stub = stub.with(body: { metadata: { "ofn-clone": true } })
                                         ^^^^^^^^^^^

1509 files inspected, 16 offenses detected, 16 offenses corrected
2023-11-10 09:13:57 +09:00
Neal Chambers
3c7c345534 Safely autocorrect Style/ParenthesesAroundCondition
Inspecting 1509 files
......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C..............

Offenses:

spec/system/support/precompile_assets.rb:10:10: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
  next if
         ^
spec/system/support/precompile_assets.rb:10:11: C: [Corrected] Style/ParenthesesAroundCondition: Don't use parentheses around the condition of an if.
  next if ( ...
          ^
spec/system/support/precompile_assets.rb:13:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/support/precompile_assets.rb:14:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.

1509 files inspected, 4 offenses detected, 4 offenses corrected
2023-11-10 09:13:57 +09:00
Neal Chambers
69e7419a45 Safely autocorrect Style/NegatedIfElseCondition
Inspecting 1509 files
....................................................................................................................................................................................................................C........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.......................................................................................................................................................

Offenses:

app/mailers/spree/shipment_mailer.rb:15:25: C: [Corrected] Style/NegatedIfElseCondition: Invert the negated condition and swap the ternary branches.
      default_subject = !@delivery ? t('.picked_up_subject') : default_i18n_subject
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/matchers/table_matchers.rb:34:5: C: [Corrected] Style/NegatedIfElseCondition: Invert the negated condition and swap the if-else branches.
    if rows.count != expected_table.count ...
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1509 files inspected, 2 offenses detected, 2 offenses corrected
2023-11-10 09:13:57 +09:00
Neal Chambers
0ec03da30e Regenerate Rubocop's TODO file 2023-11-10 09:13:57 +09:00
David Cook
95028d5347 Merge pull request #11790 from duleorlovic/11783_add_present
Check for .present? for ENV GOOGLE variables
2023-11-10 11:12:57 +11:00
Maikel
72dc00ba5c Merge pull request #11779 from filipefurtad0/stripe_version_in_sync_with_vcr_tests
Stripe version in sync with vcr tests
2023-11-10 10:43:28 +11:00
Ahmed Ejaz
e97676a680 Merge branch 'master' into task/11067-admin_style_v3-product-clone 2023-11-09 19:42:21 +05:00
Dusan Orlovic
0f30836c1d Check for .present? for ENV GOOGLE variables 2023-11-09 09:45:19 +01:00
David Cook
f754eac3a0 Add script for preparing translations 2023-11-09 17:42:09 +11:00
Maikel
ec1f23a947 Merge pull request #11781 from openfoodfoundation/dependabot/bundler/datafoodconsortium-connector-1.0.0.pre.alpha.9
chore(deps): bump datafoodconsortium-connector from 1.0.0.pre.alpha.8 to 1.0.0.pre.alpha.9
2023-11-09 16:46:05 +11:00
David Cook
023eb0633d Update all locales with the latest Transifex translations 2023-11-09 16:42:04 +11:00
Maikel Linke
0a88e8b8ac Update API documentation 2023-11-09 16:17:11 +11:00
Maikel Linke
cde57fcfb4 Update specs for changed attribute URI 2023-11-09 16:16:24 +11:00
Maikel Linke
eac632c81e Use new DFC Connector API to add an address 2023-11-09 16:16:24 +11:00
Maikel Linke
8d81802f47 Update DFC SKOS Parser monkey patch with current code 2023-11-09 16:16:24 +11:00
Maikel Linke
5d29dee848 Update DFC Importer to use shortened URIs
The new Connector code uses shortened URIs now.
2023-11-09 16:16:24 +11:00
dependabot[bot]
3ca426945f chore(deps): bump datafoodconsortium-connector
Bumps datafoodconsortium-connector from 1.0.0.pre.alpha.8 to 1.0.0.pre.alpha.9.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-09 15:46:32 +11:00
Maikel Linke
71c50e1fcf Update warning message for item quantity 2023-11-09 10:56:41 +11:00
Maikel Linke
efc338aeeb Don't update order when not enough stock
There's a user-facing change here. When you tried to update the quantity
of a line item beyond available stock, two things used to happen:

1. A warning was displayed.
2. The item's quantity was updated to the highest possible.

Unfortunately, the logic to update the line item was also reloading the
page and the warning message disappeared before it could be
acknowledged. The easiest fix was to skip the update request. And in my
opinion, it's even better to let the user decide if they still want to
update or cancel the update.

Eventually, we want to replace all this custom Javascript logic with
StimulusJS anyway. So let's not put too much effort into this. It was
important though to resolve the flaky spec which made many builds fail.
2023-11-09 10:56:41 +11:00
Maikel Linke
d5dca97438 Spec tiny bug which caused a flaky spec
It still needs solving.
2023-11-09 10:56:41 +11:00
Maikel
4e52fc28ef Merge pull request #11756 from rioug/11712_DFC_add_image_to_product
[DFC API] add image to product
2023-11-09 09:37:06 +11:00
Maikel Linke
4c1334fb69 Record new version of Stripe requests 2023-11-09 08:56:46 +11:00
Maikel Linke
cb57807466 Streamline stripe test recording updates 2023-11-09 08:52:06 +11:00
Ahmed Ejaz
2af678cb28 Merge branch 'master' into task/11067-admin_style_v3-product-clone 2023-11-08 18:41:31 +05:00
Ahmed Ejaz
851ce281ea #11067, implement product clone 2023-11-08 18:36:22 +05:00
Maikel Linke
d0dd6e57ca Replace variable values with fixed values in Swagger doc 2023-11-08 17:12:42 +11:00
Maikel Linke
7dd0d0581c Codify re-recording of Stripe cassettes 2023-11-08 15:05:54 +11:00
filipefurtad0
9d50b11090 Adds re-recorded Stripe cassettes within Stripe gem folder name 2023-11-08 14:25:19 +11:00
filipefurtad0
7dac08a0be Sets flag to create folder with Stripe version 2023-11-08 14:24:19 +11:00
Gaetan Craig-Riou
f76bdf0c6f Fix rubocop warning 2023-11-08 13:57:35 +11:00
Gaetan Craig-Riou
11ee4b30c2 Update Swagger documentation to include ofn:image 2023-11-08 13:57:35 +11:00
Gaetan Craig-Riou
7987967824 Check product image url is present on supplied product endpoint 2023-11-08 13:57:35 +11:00
Gaetan Craig-Riou
12c6257a0f Pass the image url to DfcProvider::SuppliedProduct 2023-11-08 13:57:35 +11:00
Gaetan Craig-Riou
424954ec54 Add ofn:image to SuppliedProduct
Temporary solution as we wait for the DFC connector to be updated
to support "dfc_b:image" for SuppliedProduct
2023-11-08 13:57:35 +11:00
Maikel
cbc2ef54c8 Merge pull request #11778 from openfoodfoundation/dependabot/bundler/bullet-7.1.3
chore(deps-dev): bump bullet from 7.1.2 to 7.1.3
2023-11-08 13:57:04 +11:00
Maikel
13e7448739 Merge pull request #11777 from openfoodfoundation/dependabot/bundler/cuprite-0.15
chore(deps-dev): bump cuprite from 0.14.3 to 0.15
2023-11-08 13:56:28 +11:00
Maikel
3eb9cf994b Merge pull request #11758 from openfoodfoundation/dependabot/bundler/stripe-10.1.0
chore(deps): bump stripe from 10.0.0 to 10.1.0
2023-11-08 13:49:19 +11:00
Maikel
dd1f358d36 Merge pull request #11757 from dacook/buu-disabled-button
[BUU] Grey out disabled button
2023-11-08 13:48:23 +11:00
David Cook
9172c87fce Merge pull request #11701 from macanudo527/remove_bogus_gateways
Remove bogus gateways
2023-11-08 09:36:36 +11:00
Neal Chambers
af764bd38e Move payment_intent to Helper 2023-11-07 16:30:50 +09:00
Neal Chambers
31fda7169d Delete Bogus and BogusSimple Gateways from Locales 2023-11-07 11:19:26 +09:00
Neal Chambers
1456f3b7db Remove Bogus Gateway from Sample Data 2023-11-07 11:19:26 +09:00
Neal Chambers
3ddf3c05ae Remove References to Bogus in Pending Specs 2023-11-07 11:19:26 +09:00
Neal Chambers
6ba8c88ea7 Rewrite Specs to Use Paypal or Stripe Gateway instead of Bogus 2023-11-07 11:19:26 +09:00
Neal Chambers
0663f04535 Remove Simple References to Bogus Gateway 2023-11-07 11:19:26 +09:00
Neal Chambers
74870ff0ad Delete Bogus Gateway Files 2023-11-07 11:19:23 +09:00
dependabot[bot]
1c878e7fa9 chore(deps-dev): bump bullet from 7.1.2 to 7.1.3
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.1.2 to 7.1.3.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.1.2...7.1.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-06 10:00:55 +00:00
dependabot[bot]
19a385b4eb chore(deps-dev): bump cuprite from 0.14.3 to 0.15
Bumps [cuprite](https://github.com/rubycdp/cuprite) from 0.14.3 to 0.15.
- [Release notes](https://github.com/rubycdp/cuprite/releases)
- [Changelog](https://github.com/rubycdp/cuprite/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rubycdp/cuprite/compare/v0.14.3...v0.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-06 09:56:52 +00:00
Gaetan Craig-Riou
c42d9d7d54 Use type="hidden" to hide input
It looks some CSS we use is breaking the use of "hidden"
2023-11-06 16:54:48 +11:00
Rachel Arnould
1e15d32a24 Merge pull request #11679 from abdellani/new_and_unique_invoice_template
New and unique invoice template
2023-11-03 16:49:19 +01:00
dependabot[bot]
01b24a8383 chore(deps): bump stripe from 10.0.0 to 10.1.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 10.0.0 to 10.1.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/v10.0.0...v10.1.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-11-03 09:30:15 +00:00
Sigmund Petersen
40c14c6ae3 Merge pull request #11749 from mkllnk/cuprite
Clarify cuprite driver configuration
2023-11-03 09:59:36 +01:00
David Cook
f9fc1657a8 Grey out disabled button
It looks like the disabled-bg colour was being used for pagination, but I can't see where. This way we should be able to apply the styles more consistently in the future.
2023-11-03 17:28:20 +11:00
David Cook
38296eb967 Merge pull request #11755 from mkllnk/cleaning
Remove orphaned JSON data in admin pages
2023-11-03 16:02:10 +11:00
Maikel
eef7df8ce3 Merge pull request #11750 from dacook/buu-editing-part5c-show-summary-11059
[BUU] Showing error summary at top of form
2023-11-03 15:45:24 +11:00
Maikel Linke
f6903518c3 Remove orphaned JSON data in admin pages
This was left over data from commit:

- 79ba223e12
2023-11-03 15:16:22 +11:00
David Cook
7fe6f3fe89 Disable form elements in a disabled-section
I chose to use the 'elements' collection rather than choosing which elements to include (ie this supports inputs, textareas, buttons and anything else I didn't think of). It could be a bit simpler if we assume the element is a form. Even simpler if it's a fieldset (that has a disabled property). But I didn't want to limit it too much.

Unfortunately JS is quite ugly compared to Ruby. And 'prettier' made it uglier in my opinion.
2023-11-03 14:32:58 +11:00
David Cook
f63f37fd3b Wrap form element in a form
This makes it easier to control in the next commit.
2023-11-03 14:32:58 +11:00
David Cook
d0abbc5d2c Ensure error summary always shows when error
Best viewed with whitespace ignored.
2023-11-03 14:32:58 +11:00
David Cook
41cf0bedfc Fix: Handle missing attributes 2023-11-03 14:32:58 +11:00
David Cook
f05d27b58b Show error message summary at top of form 2023-11-03 14:32:58 +11:00
David Cook
a94c50f0c1 Count updated products
Ignoring variants for now.
2023-11-03 14:32:58 +11:00
David Cook
de915e8bd7 Capture variant errors when updating 2023-11-03 14:32:55 +11:00
Maikel Linke
d64b311230 Update all locales with the latest Transifex translations 2023-11-03 12:56:16 +11:00
Filipe
771bd93f5f Merge pull request #11677 from rioug/11359-vouchers-fix-tax-moving-back-in-checkout
[vouchers] fix tax calculation when moving back in the checkout process
2023-11-02 17:02:08 +00:00
David Cook
1d5ec6b8d2 Spec for updating products with variants
Trying to cover it more comprehensively, and revealing we have a lot of behaviour to update.
Products and their variants should always get saved (or not saved) together. This is considered the most intuitive behaviour.

There's still duplication with the "variant has error" context, but I try to avoid nesting shared_examples, it starts to get ugly. Happy to discuss though.
2023-11-02 15:42:40 +11:00
Maikel
eea08ac0a1 Merge pull request #11745 from openfoodfoundation/dependabot/bundler/sidekiq-7.2.0
chore(deps): bump sidekiq from 7.1.6 to 7.2.0
2023-11-02 15:33:53 +11:00
Maikel Linke
c4c5c97270 Clarify cuprite driver configuration
Rails is registering a driver called `cuprite`. And when we did that as
well the driver got registered three times somehow. It looked like our
driver options were used in the end but just to clarify I gave it a
unique name.

This was inspired by:

* https://github.com/ViewComponent/view_component/pull/1877

It suggests that it may avoid dead browser errors on CI. We'll see.
2023-11-02 14:07:33 +11:00
David Cook
e651e3cd5e Tiny spec refactor
I found this in my stashes
2023-11-02 11:05:45 +11:00
David Cook
39eeb0e917 Add spec for truthiness
It's generally expected that a #save method will return true on succes, and false on failure.
2023-11-02 11:05:45 +11:00
Ryan Murphy
7e5ad8c8a4 9048: Fix Stripe payment flash rendering issue 2023-11-01 07:33:06 -04:00
dependabot[bot]
744b0799a6 chore(deps): bump sidekiq from 7.1.6 to 7.2.0
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.1.6 to 7.2.0.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.1.6...v7.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-01 09:26:51 +00:00
David Cook
d8cc45c5c3 Merge pull request #11742 from filipefurtad0/vcr_payment_intent_validator_spec
Replaces mocks with VCR calls
2023-11-01 17:04:00 +11:00
David Cook
031abd6546 Merge pull request #11743 from openfoodfoundation/revert-11708-test-redis-5
Revert "replace hiredis gem with hiredis-client"
2023-11-01 16:08:49 +11:00
Maikel
6a236a8678 Revert "replace hiredis gem with hiredis-client" 2023-11-01 15:16:57 +11:00
Maikel
8e88ef021f Merge pull request #11738 from openfoodfoundation/dependabot/bundler/bootsnap-1.17.0
chore(deps): bump bootsnap from 1.16.0 to 1.17.0
2023-11-01 14:40:29 +11:00
Maikel
a1c6a43954 Merge pull request #11740 from openfoodfoundation/dependabot/bundler/newrelic_rpm-9.6.0
chore(deps): bump newrelic_rpm from 9.5.0 to 9.6.0
2023-11-01 14:00:16 +11:00
Maikel
512fee2a9b Merge pull request #11739 from openfoodfoundation/dependabot/bundler/view_component-3.7.0
chore(deps): bump view_component from 3.6.0 to 3.7.0
2023-11-01 13:59:02 +11:00
Maikel
e6e2f27ed4 Merge pull request #11736 from dacook/registration-noindex
Print robots tag for registration layout
2023-11-01 13:53:07 +11:00
Maikel
fb732e55bc Merge pull request #11734 from openfoodfoundation/dependabot/bundler/angular-rails-templates-1.2.1
chore(deps): bump angular-rails-templates from 1.2.0 to 1.2.1
2023-11-01 13:46:32 +11:00
Maikel
8f4f691cb2 Merge pull request #11735 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.22.1
chore(deps-dev): bump rubocop-rails from 2.21.2 to 2.22.1
2023-11-01 13:40:52 +11:00
Maikel
25a3149f48 Merge pull request #11702 from dacook/buu-editing-part5b-11059
[BUU] Mark changed fields, when error
2023-11-01 13:01:08 +11:00
Maikel
ddd410ceb5 Merge pull request #11729 from openfoodfoundation/dependabot/npm_and_yarn/browserify-sign-4.2.2
chore(deps): bump browserify-sign from 4.2.1 to 4.2.2
2023-11-01 12:50:20 +11:00
Maikel
e85a1cef7e Merge pull request #11708 from abdellani/test-redis-5
replace hiredis gem with hiredis-client
2023-11-01 10:02:25 +11:00
filipefurtad0
a88919299f Replaces mocks with VCR calls 2023-10-31 19:06:40 +00:00
dependabot[bot]
1134c9c07a chore(deps): bump newrelic_rpm from 9.5.0 to 9.6.0
Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.5.0 to 9.6.0.
- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)
- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.5.0...9.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-31 09:44:29 +00:00
dependabot[bot]
d3883c7302 chore(deps): bump view_component from 3.6.0 to 3.7.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.6.0 to 3.7.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.6.0...v3.7.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-10-31 09:44:08 +00:00
dependabot[bot]
a8de70c79e chore(deps): bump bootsnap from 1.16.0 to 1.17.0
Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.16.0 to 1.17.0.
- [Changelog](https://github.com/Shopify/bootsnap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Shopify/bootsnap/compare/v1.16.0...v1.17.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-31 09:42:54 +00:00
David Cook
18b79668a5 Merge pull request #11727 from openfoodfoundation/dependabot/bundler/valid_email2-5.1.1
chore(deps): bump valid_email2 from 5.1.0 to 5.1.1
2023-10-31 14:32:44 +11:00
David Cook
d79c5c39cf Merge pull request #11723 from openfoodfoundation/dependabot/bundler/rubocop-1.57.2
chore(deps-dev): bump rubocop from 1.57.1 to 1.57.2
2023-10-31 14:31:01 +11:00
David Cook
1d96747570 Merge pull request #11716 from openfoodfoundation/dependabot/bundler/active_storage_validations-1.1.1
chore(deps): bump active_storage_validations from 1.0.4 to 1.1.1
2023-10-31 14:29:42 +11:00
David Cook
435bf6e6b0 Print robots tag for registration layout
This is copied from the darkswarm layout.
2023-10-31 14:03:32 +11:00
Mohamed ABDELLANI
6d0f7d7c81 render null shipment when shipment adjustment doesn't exist 2023-10-30 22:53:19 +01:00
Mohamed ABDELLANI
23a56d35a0 add tax_adjustment total to the invoice 2023-10-30 22:09:22 +01:00
Mohamed ABDELLANI
e16df2777a optimize DataPresenter#checkout_adjustments
reduce the complexity of the method
2023-10-30 21:58:37 +01:00
Mohamed ABDELLANI
c8f69c8778 always render shipment on the invoice 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
c513eb5d9d fix existing test 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
15aeb2f8e5 remove legacy template (used when invoice feature enable) 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
da89860f35 fix price per unit 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
c1ed8ed67c update the adjustments rows 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
716cf3e522 reorder the totals section 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
b7f601d140 show tax rate column regardless of the tax amount on the order 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
a08a2fd5f6 [skip ci] add terms of service link to the invoice. 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
a5fd0608c3 align the columns of the totals rows 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
a8f9b29a6d [skip ci]add the total price columns to the invoice 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
30537f7743 add "Weight/VOL." column to the invoice 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
b64058a71d swap tax rate with total price (incl tax) 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
1182544c47 update the view used when the invoice feature is enabled 2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
4634c2d965 add unit_price_price_and_unit to line_item serializer
*  unit_price_price_and_unit refers UnitPrice which refers to other attributes
that belong to variant and product.
Instead of collecting all the attributes that were using indirectly by the method and adding them to the serializers
I perefered to serialize the result of the method call.
2023-10-30 19:43:57 +01:00
Mohamed ABDELLANI
affecf53c6 add order cycle name to the invoice number section 2023-10-30 19:43:57 +01:00
dependabot[bot]
c27f616ac0 chore(deps-dev): bump rubocop-rails from 2.21.2 to 2.22.1
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.21.2 to 2.22.1.
- [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.21.2...v2.22.1)

---
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-10-30 09:10:27 +00:00
dependabot[bot]
16ff608e33 chore(deps): bump angular-rails-templates from 1.2.0 to 1.2.1
Bumps [angular-rails-templates](https://github.com/pitr/angular-rails-templates) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/pitr/angular-rails-templates/releases)
- [Changelog](https://github.com/pitr/angular-rails-templates/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pitr/angular-rails-templates/compare/v1.2.0...v1.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-30 09:08:50 +00:00
Maikel Linke
7f7f6f5c96 Remove unneeded require of hiredis-client 2023-10-30 16:28:18 +11:00
cyrillefr
a764cc0f89 Specs for the new action complete after capture
- In admin dashboard, clicking on capture leads to a completed order
- Modifications of actual specs to take into account new action
2023-10-29 22:05:50 +01:00
cyrillefr
7c89458a95 New locale (tooltip) 2023-10-29 22:05:50 +01:00
cyrillefr
31cc0494c2 Icon for the new action
- Similar to the actual capture action
2023-10-29 22:05:34 +01:00
cyrillefr
e1374d5837 Add Order completion after capturing event
- A new processing method
- Payment means that link to it
- Altering methods that handle next status choice
2023-10-29 21:58:03 +01:00
cyrillefr
d6daf25b98 Spec checking order in confirmation state transition to payment 2023-10-29 21:58:03 +01:00
cyrillefr
cd6c3c45e6 Allow an order in confirmation state to transition to payment 2023-10-29 21:58:03 +01:00
Ahmed Ejaz
df773aaee9 Merge branch 'master' into bugfix/11667-clone-tags-issue-for-OC 2023-10-28 14:57:43 +05:00
Ahmed Ejaz
adf65acee5 #11667, fix existing test case 2023-10-28 14:03:27 +05:00
Ahmed Ejaz
0e0b322707 #11667, assign tag_list to cloned exchange tag_list 2023-10-28 14:02:44 +05:00
dependabot[bot]
743a5e1a3c chore(deps): bump browserify-sign from 4.2.1 to 4.2.2
Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2.
- [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/browserify-sign/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: browserify-sign
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 16:23:32 +00:00
dependabot[bot]
255872ebe3 chore(deps): bump valid_email2 from 5.1.0 to 5.1.1
Bumps [valid_email2](https://github.com/micke/valid_email2) from 5.1.0 to 5.1.1.
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v5.1.0...v5.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 09:45:13 +00:00
Gaetan Craig-Riou
33de80f13c Fix checking if shipping method changed
We now check if the shipping method changed before we actually select
it. Fix the related spec.The spec was wrong because order.select_shipping_method
fails silently. That means the shipping method wasn't getting
updated on the order, thus the test was passing.
2023-10-27 14:20:31 +11:00
Gaetan Craig-Riou
4f961098c4 Update all locales with the latest Transifex translations 2023-10-27 11:36:13 +11:00
Filipe
f1d4ec9fe7 Merge pull request #11684 from ccozkan/issue-11609
Fix content aligning in subscriptions table
2023-10-26 16:20:33 +01:00
Filipe
aa9cacada8 Merge pull request #11676 from openfoodfoundation/dependabot/bundler/stripe-10.0.0
chore(deps): bump stripe from 9.4.0 to 10.0.0
2023-10-26 15:41:49 +01:00
dependabot[bot]
0919b2bc6c chore(deps-dev): bump rubocop from 1.57.1 to 1.57.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.57.1 to 1.57.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.57.1...v1.57.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-10-26 12:57:54 +00:00
Filipe
a54de4b522 Merge pull request #11691 from openfoodfoundation/dependabot/bundler/combine_pdf-1.0.24
chore(deps): bump combine_pdf from 1.0.23 to 1.0.24
2023-10-26 13:56:44 +01:00
Filipe
b67acaae21 Merge pull request #11694 from prateek0411999/bugfix/11666-warning_forfeit_remaining_amount
add condition on warning_forfeit_remaining_amount note
2023-10-26 13:44:22 +01:00
Filipe
3da8341946 Merge pull request #11695 from ccozkan/issue-8943
Make update button on enterprises primary details form clickable upon input to name field
2023-10-26 13:12:27 +01:00
Filipe
7b3c6e9f58 Merge pull request #11688 from mkllnk/enterprise-fee-report
Avoid error when generating Enterprise fees w/ Tax Report by Producer
2023-10-26 12:43:19 +01:00
Mohamed ABDELLANI
d6890e9828 check key class before call Rails.cache.delete 2023-10-26 10:27:00 +01:00
dependabot[bot]
38485a8010 chore(deps): bump active_storage_validations from 1.0.4 to 1.1.1
Bumps [active_storage_validations](https://github.com/igorkasyanchuk/active_storage_validations) from 1.0.4 to 1.1.1.
- [Release notes](https://github.com/igorkasyanchuk/active_storage_validations/releases)
- [Changelog](https://github.com/igorkasyanchuk/active_storage_validations/blob/master/CHANGES.md)
- [Commits](https://github.com/igorkasyanchuk/active_storage_validations/compare/1.0.4...1.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 09:25:54 +00:00
Mohamed ABDELLANI
5360df6cee replace hiredis gem with hiredis-client 2023-10-26 10:10:51 +01:00
David Cook
ed520ea679 Merge pull request #11703 from abdellani/remove-mini-portile2
removes mini_portile2
2023-10-26 09:40:38 +11:00
David Cook
7195314dc6 Merge pull request #11697 from openfoodfoundation/dependabot/bundler/mini_portile2-2.8.5
chore(deps): bump mini_portile2 from 2.8.4 to 2.8.5
2023-10-26 09:23:06 +11:00
Çağrı Özkan
924cee0876 Trigger build (empty commit) 2023-10-25 18:21:39 +03:00
Çağrı Özkan
7b21126a9c Use both onchange and oninput on ng_form.html.haml 2023-10-25 17:32:25 +03:00
Filipe
6280bfcebe Merge pull request #11706 from yasirazgar/11318_flaky_packing_report_spec
11318 - Fix flaky packing_report_spec.rb
2023-10-25 15:22:04 +01:00
Çağrı Özkan
38d1de896c Use oninput on ng_form.html.haml instead of onchange 2023-10-25 17:11:30 +03:00
dependabot[bot]
8fc4d6cd4d chore(deps): bump mini_portile2 from 2.8.4 to 2.8.5
Bumps [mini_portile2](https://github.com/flavorjones/mini_portile) from 2.8.4 to 2.8.5.
- [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.4...v2.8.5)

---
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-10-25 08:20:25 +00:00
Mohamed ABDELLANI
d77a94d377 add comment about mini_protile2 gem 2023-10-25 09:17:21 +01:00
David Cook
fac354e678 Merge pull request #11700 from macanudo527/fix_stylehash_12
Fix Style/HashSyntax 13/13
2023-10-25 10:40:52 +11:00
yasir azgar
3ba208e3d3 11318 - fix flaky packing_report_spec
fix rubocop DurationArithmetic
2023-10-24 22:21:42 +05:30
David Cook
08ac46fd91 Refactor spec: Only create necessary records
This was creating a lot of records for every single test. Now it's much more efficient and spec conditions are clearer.
2023-10-24 16:44:34 +11:00
David Cook
671dc570ec Refactor: with form builder 2023-10-24 15:21:14 +11:00
David Cook
aa4630d74c Mark fields as changed if they contain unsaved values.
This can happen when there's a validation error. The field with error will also be marked changed, but the error style will override it.

I'd like to move this into a FormBuilder. Existing formbuilder gems don't seem to support it (though I didn't look very hard).
2023-10-24 15:21:14 +11:00
David Cook
04032e61e2 Prettier 2023-10-24 15:21:13 +11:00
David Cook
fdad45bb46 Rename 'modified' state to 'changed'
This conveniently matches the terminology used in both JavaScript and ActiveModel::Dirty.
2023-10-24 15:21:13 +11:00
David Cook
ceb9d9af92 Add comment
I decided to look into why this is so complicated, in case some of the complexity can be removed. It can't :(
2023-10-24 15:21:13 +11:00
David Cook
1534908895 Move generic method to base class
Because rubocop complained about the size of ProductSet.
2023-10-24 15:21:13 +11:00
David Cook
89e53c88f3 Move context up a level
Best viewed with whitespace ignored.
2023-10-24 15:21:13 +11:00
David Cook
8293f24ed3 Remove redundant context
Best viewed with whitespace ignored.
2023-10-24 15:21:13 +11:00
David Cook
224b6f514b Remove concept of master variant
from old bulk product screen. Hmm I just realised we're deleting that screen soon anyway.

But this helps clean up the spec before I refactor it further.
2023-10-24 15:21:13 +11:00
David Cook
be6481dac3 Refactor spec: combine expectations
These expectations have the same conditions, so why set it up three times?
2023-10-24 15:21:13 +11:00
David Cook
3710aa2149 Refactor spec
Better to explicitly test for the change, and specify expected values.
2023-10-24 15:21:13 +11:00
Neal Chambers
cf072fb56f Update .rubocop_todo.yml 2023-10-24 08:49:48 +09:00
Neal Chambers
dc607b654d Fix Style/HashSyntax 2023-10-24 08:49:34 +09:00
David Cook
a2f8b0db16 Update ansible group name 2023-10-24 10:37:32 +11:00
Maikel
42f5469de5 Merge pull request #11674 from mkllnk/money
Format money amounts according to locale, not currency
2023-10-24 09:47:37 +11:00
Sigmund Petersen
0d557eb0f2 Merge branch 'master' into dependabot/bundler/combine_pdf-1.0.24 2023-10-23 09:38:02 +02:00
prateek0411999
a113b5ba01 add condition on warning_forfeit_remaining_amount note 2023-10-23 10:45:35 +05:30
Gaetan Craig-Riou
d5d043880a Fix scenario when no shipment available
I though that once the shipping method was set it's available on the
order, but apparently it's not always the case. At least some of the
test scenario have order with no shipment, thus no shipping method set.
2023-10-23 15:38:01 +11:00
Gaetan Craig-Riou
25af178011 Refactor updating order state
It makes the code a bit easier to read
2023-10-23 15:37:53 +11:00
Gaetan Craig-Riou
9f426add8d Merge pull request #11690 from openfoodfoundation/dependabot/npm_and_yarn/tom-select-2.2.3
chore(deps): bump tom-select from 2.2.2 to 2.2.3
2023-10-23 09:48:48 +11:00
Çağrı Özkan
e465015184 Add oninput:"make form dirty" to enterprise_form/name text field 2023-10-21 01:19:41 +03:00
Filipe
44a675bcda Merge branch 'master' into dependabot/bundler/combine_pdf-1.0.24 2023-10-20 16:44:08 +01:00
filipefurtad0
e645ef72a7 Update all locales with the latest Transifex translations 2023-10-20 12:27:28 +01:00
Konrad
2ba5ab7dc1 Merge pull request #11577 from jibees/10956-use-cable_ready-instead-of-morph
Admin, Orders list: when capturing an order, fix an issue that makes the tooltip invisible (+ errors in the console)
2023-10-20 11:56:53 +02:00
dependabot[bot]
06eac95a48 chore(deps): bump combine_pdf from 1.0.23 to 1.0.24
Bumps [combine_pdf](https://github.com/boazsegev/combine_pdf) from 1.0.23 to 1.0.24.
- [Release notes](https://github.com/boazsegev/combine_pdf/releases)
- [Changelog](https://github.com/boazsegev/combine_pdf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/boazsegev/combine_pdf/compare/v1.0.23...v1.0.24)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-20 09:20:47 +00:00
dependabot[bot]
c734f982a1 chore(deps): bump tom-select from 2.2.2 to 2.2.3
Bumps [tom-select](https://github.com/orchidjs/tom-select) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/orchidjs/tom-select/releases)
- [Commits](https://github.com/orchidjs/tom-select/compare/v2.2.2...v2.2.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-20 09:06:10 +00:00
Gaetan Craig-Riou
5ba21e486a Recalculate voucher voucher adjusment when needed
We need to recalculate the voucher adjustment(s) in the following
scenarii :
When a voucher as been added to the order and :
  * Moving to the payment step from details step, to take into account
    potential change in shipment fees. (this happen if we return to the
    details step after reaching the summary step)
  * Moving to the summary step from payment step, to take into account
    payment fees
2023-10-20 16:49:21 +11:00
Maikel Linke
b83651a7ae Avoid error when generating fee report
Instead some data is missing from the report. A slightly better outcome
but still wrong. This is tracked in another issue though.
2023-10-20 15:45:32 +11:00
Maikel Linke
4fc66f6585 Spec fee report failing on removed variant
Well, creating a unit test level spec in the first place. Edge cases
like this don't need to be tested in slow system specs.
2023-10-20 15:35:17 +11:00
Gaetan Craig-Riou
f9d2deeb17 Small clean up 2023-10-20 15:28:26 +11:00
Maikel Linke
43b1eca026 Remove unneeded report spec
Testing for the absence of behaviour is useful when changing code to
assert that the change is successful but in the long term, it doesn't
add any value. If you don't have any reason to believe that the report
may delete parameters then we don't need to test for that.
2023-10-20 14:22:43 +11:00
Maikel
d45fe44c9f Remove unused Code Climate badge
It always gave us a good score anyway because we ignored the bad code.
2023-10-20 10:22:42 +11:00
David Cook
8fad8b9f80 Merge pull request #11687 from filipefurtad0/fix_flaky_spec_#11686
Moves assertions within before do block
2023-10-20 09:57:41 +11:00
David Cook
801c30f4d5 Merge pull request #11685 from openfoodfoundation/dependabot/bundler/roadie-rails-3.1.0
chore(deps): bump roadie-rails from 3.0.0 to 3.1.0
2023-10-20 09:55:42 +11:00
David Cook
2d68d49c1f Merge pull request #11683 from openfoodfoundation/dependabot/npm_and_yarn/babel/traverse-7.23.2
chore(deps): bump @babel/traverse from 7.21.5 to 7.23.2
2023-10-20 09:51:32 +11:00
David Cook
3805988c6e Merge pull request #11682 from filipefurtad0/assert_status_on_order_confirmation_screen
Adds coverage on order confirmation page
2023-10-20 09:49:10 +11:00
Maikel
5d2d925eb6 Merge pull request #11547 from filipefurtad0/legal_invoices_associations_comparator_spec
Adds coverage on order-associated attributes
2023-10-20 08:52:27 +11:00
filipefurtad0
8d6ed5ec23 Moves assertions within before do block
Doing so, assures the removal of the invoice is finished, before clicking the 'Next - Order summary' button
2023-10-19 17:38:27 +01:00
filipefurtad0
c05716cea9 Addresses review suggestions from @dacook
I've noticed that it was necessary to include a reference to the order like 'order.adjustments << create(:adjustment, order:)' for the tests to pass

Updates test case description
2023-10-19 15:49:28 +01:00
dependabot[bot]
91f94505c2 chore(deps): bump roadie-rails from 3.0.0 to 3.1.0
Bumps [roadie-rails](https://github.com/Mange/roadie-rails) from 3.0.0 to 3.1.0.
- [Changelog](https://github.com/Mange/roadie-rails/blob/master/Changelog.md)
- [Commits](https://github.com/Mange/roadie-rails/compare/v3.0.0...v3.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 09:22:55 +00:00
dependabot[bot]
f35388ef3a chore(deps): bump @babel/traverse from 7.21.5 to 7.23.2
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.5 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 02:28:53 +00:00
Çağrı Özkan
a6bcac8a7d Remove text-center from subscription table td's 2023-10-19 05:16:20 +03:00
filipefurtad0
27ecd4224e Sets tests as shared example (further DRYes spec) 2023-10-18 19:12:58 +01:00
filipefurtad0
461ef48c3a DRYes spec 2023-10-18 18:26:42 +01:00
filipefurtad0
80f0b30e5c Adds coverage on order confirmation page
Related to the changes from PRs #11668 and #11114.
2023-10-18 16:02:31 +01:00
Filipe
caa655f500 Merge pull request #11668 from drummer83/master
Don't show credit owed when = 0 in order confirmation
2023-10-18 12:16:54 +01:00
Konrad
448eb8b3b1 Merge branch 'openfoodfoundation:master' into master 2023-10-18 12:41:12 +02:00
filipefurtad0
2004abc8be Sets pending test - issue #11350
changing the payment_total should not generate a new invoice; rather, it should update the current invoice
2023-10-18 11:20:48 +01:00
filipefurtad0
530cdacc77 Restructures tests as shared examples
Merges test files
2023-10-18 11:20:06 +01:00
filipefurtad0
8a1a14112b Moves tests to shared examples file 2023-10-18 11:20:05 +01:00
filipefurtad0
8b249ee050 Adds unit tests for different attributes 2023-10-18 11:19:03 +01:00
Maikel
0477bef53a Merge pull request #11657 from mkllnk/report-job-retries
Notify user about errors raised in reports
2023-10-18 15:38:34 +11:00
Gaetan Craig-Riou
b09054a76a Update order state when moving back through checkout step
Some important logic happens after the order transition from one state
to another. In particular, voucher are recalculated. To fix any
inconsistency, we make sure the order is the state matching the checkout
step we are on.
2023-10-18 09:45:05 +11:00
Gaetan Craig-Riou
d0e38c8d10 Add order event back_to_payment and back_to_address
It gives the possibility to move an order back to payment state or
address state when going through the checkout steps
2023-10-18 09:36:37 +11:00
dependabot[bot]
83269af410 chore(deps): bump stripe from 9.4.0 to 10.0.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 9.4.0 to 10.0.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/v9.4.0...v10.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 09:19:18 +00:00
Rachel Arnould
aecb55beb3 Merge pull request #11660 from dacook/products_v3_path
Hide old products screen when admin_style_v3 enabled
2023-10-17 10:45:01 +02:00
Gaetan Craig-Riou
d2952d46a6 Add the highlighted version of the "ship" icon 2023-10-17 13:35:01 +11:00
Gaetan Craig-Riou
7ce3fea7d5 Refactor tooltip on the backoffice orders page 2023-10-17 13:35:01 +11:00
Gaetan Craig-Riou
6a1664d2fd Refactor "What's this" tooltip 2023-10-17 13:33:15 +11:00
Gaetan Craig-Riou
01a13a814a Improve tooltip partial 2023-10-17 13:33:15 +11:00
Gaetan Craig-Riou
4639e53673 Remove insertToolTipMarkup
It's not great to have Stimulus controller rendering markup on `connect`
Stimulus is intended to add behavior to existing markup.
Plus add some documentation
2023-10-17 13:33:15 +11:00
Gaetan Craig-Riou
31c537c5e0 Revert to using morph instead of cable_ready
The issue is with with the stimilus tooltip controller, it add some
element to the DOM which create issue when it's modified by
StimulusReflex. See here for a more detailed explanation:
https://github.com/stimulusreflex/stimulus_reflex/issues/314#issuecomment-702479357
2023-10-17 13:33:15 +11:00
Jean-Baptiste Bellet
3525320590 We should use cable_ready.inner_html instead of morph
To be sure that every stimulus controllers attached to the DOM that is replaced is will connected.
What I saw is that when using `morph`, the stimulus controller (specially `tooltip_controller`) were not attached to the DOM (and not disconnected as well) that triggered some errors in the console.

Adds test case for payment capture thanks to @filipefurtad0
2023-10-17 13:33:15 +11:00
David Cook
ad9048c595 Merge pull request #11627 from dacook/reflex-locale
Ensure dynamic modals always use selected locale
2023-10-17 10:23:58 +11:00
Maikel Linke
c0938d1607 Simplify view with number helpers 2023-10-16 16:37:47 +11:00
Maikel Linke
fcb6e36480 Format money amounts according to locale
It used to be formatted according to the currency. So even if the
default currency is USD but your locale is French then you should see it
formatted as $10.000,00 instead of the US formatting of $10,000.00.
2023-10-16 11:19:11 +11:00
Maikel
c87a10a855 Merge pull request #11672 from openfoodfoundation/dependabot/bundler/bullet-7.1.2
chore(deps-dev): bump bullet from 7.1.1 to 7.1.2
2023-10-16 10:54:38 +11:00
Maikel
ba00106e38 Merge pull request #11671 from openfoodfoundation/dependabot/bundler/acts-as-taggable-on-10.0.0
chore(deps): bump acts-as-taggable-on from 9.0.1 to 10.0.0
2023-10-16 10:54:12 +11:00
dependabot[bot]
d76dbb3592 chore(deps-dev): bump bullet from 7.1.1 to 7.1.2
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.1.1 to 7.1.2.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.1.1...7.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-15 23:24:48 +00:00
dependabot[bot]
c4adcf93c0 chore(deps): bump acts-as-taggable-on from 9.0.1 to 10.0.0
Bumps [acts-as-taggable-on](https://github.com/mbleigh/acts-as-taggable-on) from 9.0.1 to 10.0.0.
- [Release notes](https://github.com/mbleigh/acts-as-taggable-on/releases)
- [Changelog](https://github.com/mbleigh/acts-as-taggable-on/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mbleigh/acts-as-taggable-on/compare/v9.0.1...v10.0.0)

---
updated-dependencies:
- dependency-name: acts-as-taggable-on
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-15 23:23:51 +00:00
Maikel
9c5b986ab6 Merge pull request #11664 from openfoodfoundation/dependabot/bundler/rubocop-1.57.1
chore(deps-dev): bump rubocop from 1.57.0 to 1.57.1
2023-10-16 10:05:14 +11:00
Maikel
08e799c5fa Merge pull request #11663 from dacook/tag_release
Update tag_release script
2023-10-16 10:02:41 +11:00
drummer83
c2b82651ee Don't show credit owed when = 0 2023-10-13 20:51:12 +02:00
Konrad
246fceb214 Merge pull request #11634 from lauriejefferson/11610-left-align-all-table-content
[BUU] Left-align headers of new orders table
2023-10-13 19:58:09 +02:00
David Cook
6e6854f564 Fix payment state indicator
Now the correct class is added, we can see the little coloured circles again.
2023-10-13 19:25:12 +02:00
lauriejefferson
e234b71b25 removed empty spaces 2023-10-13 19:25:12 +02:00
lauriejefferson
2020a9fa76 changed table row alignment to align-left and removed padding from table header 2023-10-13 19:25:12 +02:00
Konrad
5859d2ff78 Merge pull request #11114 from lauriejefferson/not-paid-order-confirmations-resemble-paid-orders-7603
Not paid order confirmations resemble paid orders 7603
2023-10-13 18:52:10 +02:00
Konrad
d7b234c062 Merge pull request #11593 from rioug/11363-vouchers-fix-tax-included-in-price-amount
[Vouchers] Fix tax included in price amount
2023-10-13 18:22:11 +02:00
David Cook
8f30b27b58 Guard against nil values
These are validated and shouldn't be nil, but I suspect we have corrupt data causing problems here.
2023-10-13 15:54:24 +02:00
David Cook
a0b64cb58a Remove unnecessary set_locale calls
The locale is now set in ApplicationReflex
2023-10-13 15:54:24 +02:00
David Cook
2915048afa Always set locale for reflexes
I considered using I18nHelper like we do in controllers, but that is for choosing a locale, which we don't need to do for reflexes.
2023-10-13 15:54:24 +02:00
dependabot[bot]
52498b6bf4 chore(deps-dev): bump rubocop from 1.57.0 to 1.57.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.57.0 to 1.57.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.57.0...v1.57.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-13 09:58:15 +00:00
David Cook
9276469c53 Update checklist 2023-10-13 11:56:21 +11:00
David Cook
4eb169ea0d Add a shortcut to draft new release
Next time, we can add a script to randomly choose a food-related release name ;)
2023-10-13 11:30:25 +11:00
David Cook
a13c95433e Merge pull request #11548 from macanudo527/add_foreign_key_script
Add Spec that Generates Migrations for Missing Foreign Keys
2023-10-13 11:20:47 +11:00
David Cook
0b2a0d9e58 Update all locales with the latest Transifex translations 2023-10-13 11:15:45 +11:00
David Cook
655c16cca0 New bulk products screen shares path with old
The feature toggle will determine which bulk products screen shows. An additional products_old path is also temporarily added for easy reference.

Later, when the old screen is full removed, we'll probably rename the _v3 classes to tidy up.
2023-10-13 10:39:45 +11:00
Maikel
45db61be53 Merge pull request #11655 from openfoodfoundation/dependabot/bundler/devise-4.9.3
chore(deps): bump devise from 4.9.2 to 4.9.3
2023-10-13 08:30:08 +11:00
Maikel
604cc10c3f Merge pull request #11654 from openfoodfoundation/dependabot/bundler/rubocop-1.57.0
chore(deps-dev): bump rubocop from 1.56.4 to 1.57.0
2023-10-13 08:29:29 +11:00
lauriejefferson
43232a5d63 removed not-paid styling for credit owed 2023-10-12 11:50:30 -04:00
Konrad
cc8898e074 Merge pull request #11219 from abdellani/fix-tax-rates-rendering-when-invoice-enabled
fix Viewing an invoice with the instance's invoice setting set to alternative model leads to an error 500
2023-10-12 17:47:27 +02:00
Konrad
26fa85d89b Merge pull request #11651 from HillaryOkello/master
Display ordered lists uniform with unordered lists in Trix editor
2023-10-12 17:00:43 +02:00
Konrad
f87186373c Merge pull request #11647 from dacook/image-validation
Only validate image when changed
2023-10-12 15:42:22 +02:00
Maikel Linke
702f3b7784 Notify user about errors raised in reports 2023-10-12 16:31:13 +11:00
Maikel Linke
f61a2fa2bf Rescue errors in report generation
So we can report them to Bugsnag and the job isn't marked as failed and
therefore won't repeat.
2023-10-12 16:01:52 +11:00
Maikel Linke
477ca39e58 Update spec 2023-10-12 15:40:06 +11:00
Maikel Linke
f4fde0a42c Trying to clarify voucher tax amount
The whole concept is confusing. Maybe translators will find better
versions.
2023-10-12 15:20:17 +11:00
Maikel Linke
f83e78a5b8 Clarify adjustment data only for display
We are not creating a new adjustment here.
2023-10-12 15:16:38 +11:00
Maikel Linke
74c8f06e80 Simplify helper with extracted method 2023-10-12 14:17:41 +11:00
Maikel Linke
45dd5cc40a Style/SingleLineDoEndBlock: Prefer multiline do...end block 2023-10-12 10:10:42 +11:00
dependabot[bot]
4b38817aff chore(deps-dev): bump rubocop from 1.56.4 to 1.57.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.56.4 to 1.57.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.56.4...v1.57.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-10-11 22:55:03 +00:00
Maikel
17c1ccc509 Merge pull request #11653 from openfoodfoundation/dependabot/bundler/paranoia-2.6.3
chore(deps): bump paranoia from 2.6.2 to 2.6.3
2023-10-12 09:52:39 +11:00
Maikel
e3e7031a91 Merge pull request #11649 from openfoodfoundation/dependabot/bundler/rswag-specs-2.11.0
chore(deps-dev): bump rswag-specs from 2.10.1 to 2.11.0
2023-10-12 09:51:41 +11:00
Maikel
5526006add Merge pull request #11652 from openfoodfoundation/dependabot/bundler/responders-3.1.1
chore(deps): bump responders from 3.1.0 to 3.1.1
2023-10-12 09:27:56 +11:00
dependabot[bot]
1efff07953 chore(deps): bump devise from 4.9.2 to 4.9.3
Bumps [devise](https://github.com/heartcombo/devise) from 4.9.2 to 4.9.3.
- [Release notes](https://github.com/heartcombo/devise/releases)
- [Changelog](https://github.com/heartcombo/devise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heartcombo/devise/compare/v4.9.2...v4.9.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-11 22:18:53 +00:00
dependabot[bot]
a8b4e9b070 chore(deps-dev): bump rswag-specs from 2.10.1 to 2.11.0
Bumps [rswag-specs](https://github.com/rswag/rswag) from 2.10.1 to 2.11.0.
- [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.10.1...2.11.0)

---
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-10-11 22:12:51 +00:00
Maikel
903bf8a725 Merge pull request #11650 from openfoodfoundation/dependabot/bundler/rswag-api-2.11.0
chore(deps): bump rswag-api from 2.10.1 to 2.11.0
2023-10-12 09:11:17 +11:00
dependabot[bot]
b8b6641a05 chore(deps): bump paranoia from 2.6.2 to 2.6.3
Bumps [paranoia](https://github.com/rubysherpas/paranoia) from 2.6.2 to 2.6.3.
- [Release notes](https://github.com/rubysherpas/paranoia/releases)
- [Changelog](https://github.com/rubysherpas/paranoia/blob/core/CHANGELOG.md)
- [Commits](https://github.com/rubysherpas/paranoia/compare/v2.6.2...v2.6.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-11 22:07:31 +00:00
dependabot[bot]
0d3a1417d6 chore(deps): bump responders from 3.1.0 to 3.1.1
Bumps [responders](https://github.com/heartcombo/responders) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/heartcombo/responders/releases)
- [Changelog](https://github.com/heartcombo/responders/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heartcombo/responders/compare/v3.1.0...v3.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-11 22:06:10 +00:00
Maikel
c047a2c70c Merge pull request #11648 from openfoodfoundation/dependabot/bundler/rswag-ui-2.11.0
chore(deps): bump rswag-ui from 2.10.1 to 2.11.0
2023-10-12 09:03:14 +11:00
Konrad
047360e839 Merge pull request #11646 from dacook/buu-products-menu
Show only the new products page in the menu
2023-10-11 21:31:38 +02:00
HillaryOkello
d8e5f7ae4c Remove padding-top for the ordered lists 2023-10-11 15:55:52 +03:00
Mohamed ABDELLANI
1c2aa1c370 fix linter issue 2023-10-11 11:00:37 +01:00
Mohamed ABDELLANI
c750602b52 remove duplicated code 2023-10-11 10:38:45 +01:00
dependabot[bot]
54d3b39b2e chore(deps): bump rswag-api from 2.10.1 to 2.11.0
Bumps [rswag-api](https://github.com/rswag/rswag) from 2.10.1 to 2.11.0.
- [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.10.1...2.11.0)

---
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-10-11 09:27:01 +00:00
dependabot[bot]
61bfde4e80 chore(deps): bump rswag-ui from 2.10.1 to 2.11.0
Bumps [rswag-ui](https://github.com/rswag/rswag) from 2.10.1 to 2.11.0.
- [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.10.1...2.11.0)

---
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-10-11 09:24:44 +00:00
Mohamed ABDELLANI
7cb200e21e fix linting errors 2023-10-11 09:27:16 +01:00
Mohamed ABDELLANI
4a74396bcc add 'app/models/invoice/data_presenter.rb' to Metrics/ClassLength:Exclude 2023-10-11 09:27:16 +01:00
Mohamed ABDELLANI
9950dd90f7 fix display_checkout_taxes_hash 2023-10-11 09:27:16 +01:00
Mohamed ABDELLANI
7eabb9a170 move include ::ActionView::Helpers::NumberHelper to Invoice::DataPresenter::Base 2023-10-11 09:27:16 +01:00
Mohamed ABDELLANI
aa4798d35c add adjustables to the list of objects to serialize when creating an invoice 2023-10-11 09:27:16 +01:00
Mohamed ABDELLANI
fc519da83b update the invoice system tests to run with invoice feature (enabled/disabled) 2023-10-11 09:27:16 +01:00
Mohamed ABDELLANI
d40338bed5 add adjustment originators to the order serialization
for some helpers like display_checkout_taxes_hash, it's needed to access the tax rates through the adjument's originator.
The adjustment's originator will store the minimal details: id, type and amount
2023-10-11 09:26:50 +01:00
Mohamed ABDELLANI
a2b06fa200 fix cloning all_eligible_adjustments array on DataPresenter#checkout_adjustments 2023-10-11 09:26:50 +01:00
Mohamed ABDELLANI
b027387bee add :originator_type to Invoice::AdjustmentSerializer 2023-10-11 09:26:50 +01:00
Mohamed ABDELLANI
68a6fb132a implement display_adjustment_tax_rates helper on the adjustment presenter
For every adjustment a list of tax rates will be created using TaxRateFinder.tax_rates_of.
This will prevent running the queries to find the tax rates during the invoice generation.
2023-10-11 09:26:50 +01:00
Mohamed ABDELLANI
33826631a3 reimplement the display_line_item_tax_rates helper on the line item presenter
1. reimplment the helper on the LintItem presenter
2. add the tax rate associated to the line items to the list of objects to serialize during the order serialization.
3. implement a presenter for the introducer tax rates.
2023-10-11 09:26:49 +01:00
Maikel
7fe7176e5d Merge pull request #11641 from dacook/release-template
Update feature toggle title
2023-10-11 16:56:56 +11:00
David Cook
472cd9b55c Merge pull request #11639 from openfoodfoundation/dependabot/bundler/bullet-7.1.1
chore(deps-dev): bump bullet from 7.1.0 to 7.1.1
2023-10-11 14:14:27 +11:00
David Cook
32b2e572b3 Merge pull request #11643 from openfoodfoundation/dependabot/bundler/sidekiq-7.1.6
chore(deps): bump sidekiq from 7.1.5 to 7.1.6
2023-10-11 14:01:13 +11:00
dependabot[bot]
ca2d175650 chore(deps-dev): bump bullet from 7.1.0 to 7.1.1
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.1.0 to 7.1.1.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.1.0...7.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-11 02:52:50 +00:00
David Cook
64ba01a55c Merge pull request #11637 from mkllnk/spec-report-order
Test customer report filtering without sorting
2023-10-11 13:49:25 +11:00
David Cook
69b2386c52 Merge pull request #11631 from openfoodfoundation/dependabot/bundler/awesome_nested_set-3.6.0
chore(deps): bump awesome_nested_set from 3.5.0 to 3.6.0
2023-10-11 13:47:55 +11:00
David Cook
fd6bd72e7a Merge pull request #11630 from openfoodfoundation/dependabot/bundler/stripe-9.4.0
chore(deps): bump stripe from 9.3.0 to 9.4.0
2023-10-11 13:46:49 +11:00
David Cook
b42cf9735f Only validate an image if it has been changed
Best viewed with whitespace ignored.
2023-10-11 10:12:52 +11:00
David Cook
31b5be73f9 Add spec 2023-10-11 10:12:52 +11:00
lauriejefferson
e056ba42db added 'credit owed' label and removed red styling when balance <= 0 2023-10-10 17:14:16 -04:00
David Cook
99205e435c Show only the new products page in the menu
When the feature toggle is enabled, we don't want to see the old products page. It's a bit broken and causes confusion. But we still want to be able to access it by the URL for now.
2023-10-10 22:09:26 +11:00
Konrad
0bd4fe315c Merge pull request #11620 from openfoodfoundation/dependabot/bundler/devise-i18n-1.12.0
chore(deps): bump devise-i18n from 1.11.0 to 1.12.0
2023-10-10 12:36:42 +02:00
dependabot[bot]
f57d139909 chore(deps): bump sidekiq from 7.1.5 to 7.1.6
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.1.5 to 7.1.6.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.1.5...v7.1.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-10 10:05:08 +00:00
David Cook
3d821722e1 Update feature toggle title
[skip ci] because this isn't covered (and doesn't need to be).
2023-10-10 16:30:49 +11:00
Maikel Linke
228f69f13e Test customer report filtering without sorting
The report doesn't seem to sort. So the specs don't expect that either
now. These specs were flaky before, depending on the random order in the
database query result.
2023-10-09 12:05:24 +11:00
Maikel
90c25d604b Merge pull request #11441 from macanudo527/fix_rails_HasManyOrHasOneDependent
Fix Rails/HasManyOrHasOneDependent
2023-10-09 11:44:23 +11:00
Maikel
b8f15ca52f Merge pull request #11632 from openfoodfoundation/dependabot/bundler/bullet-7.1.0
chore(deps-dev): bump bullet from 7.0.7 to 7.1.0
2023-10-09 10:56:00 +11:00
Konrad
6cfc20fcaa Merge pull request #11345 from abdellani/support-enabling-invoices-to-individual-users
Support enabling invoices to individual users
2023-10-08 22:22:33 +02:00
David Cook
1c0ebfe61e Add comment 2023-10-08 21:47:17 +02:00
Mohamed ABDELLANI
95e7900585 test print invoice button under ACTIONS 2023-10-08 21:47:17 +02:00
Mohamed ABDELLANI
13b366e7ff list send invoice and print invoice under actions even when the invoice feature is enabled 2023-10-08 21:47:17 +02:00
Mohamed ABDELLANI
a9719a798f fix order mailer tests 2023-10-08 21:47:17 +02:00
Mohamed ABDELLANI
f047deaf12 load the latest invoice when user tries to print an order 2023-10-08 21:47:17 +02:00
Mohamed ABDELLANI
3f4eab2a0a update the invoice renderer to check if the feature is enable for individual user 2023-10-08 21:47:17 +02:00
Mohamed ABDELLANI
dce096a56e check if invoices feature is enabled for the current user before showing invoices tab 2023-10-08 21:47:17 +02:00
Mohamed ABDELLANI
614c8a5060 update order mailer to check if invoices feature is enabled for the current user 2023-10-08 21:47:17 +02:00
Mohamed ABDELLANI
adecf64cf3 update bulk invoice job to check if the invoices feature is enabled for the current user 2023-10-08 21:47:17 +02:00
Mohamed ABDELLANI
bd2a1b3e22 check if invoices feature is enabled for the current user before printing a single invoice 2023-10-08 21:47:17 +02:00
Konrad
944925eb06 Merge pull request #11603 from murjax/prevent-customer-edit-shipped-9235
Prevent customers from editing shipped orders
2023-10-08 21:42:18 +02:00
Konrad
0a36f7983f Merge pull request #11623 from ccozkan/issue-11607-timeshift-in-customers-report
Fix occurring time shift in customers report results
2023-10-08 19:02:02 +02:00
Çağrı Özkan
877ea12645 Call in_time_zone on boundary parameters 2023-10-08 17:44:24 +02:00
Konrad
eb9c8bd678 Merge pull request #11618 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.0.7
chore(deps): bump trix from 2.0.6 to 2.0.7
2023-10-08 17:34:41 +02:00
Konrad
ef855e8887 Merge pull request #11619 from ccozkan/issue-11611
Add ability to customers report to filter with open ended boundaries
2023-10-08 16:28:52 +02:00
dependabot[bot]
ebfacea17b chore(deps): bump stripe from 9.3.0 to 9.4.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 9.3.0 to 9.4.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/v9.3.0...v9.4.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-10-06 12:25:38 +00:00
Rachel Arnould
abfd316b3d Merge pull request #11565 from dacook/buu-editing-part4-11059
[BUU] Inline error messages and validation
2023-10-06 14:23:58 +02:00
David Cook
117085aeba Transform weight before validation
I guess validates_length_from_database also validates numbers. That's not a bad thing.
So now it's being validated, we should validate the transformed value that will be saved to the database.
2023-10-06 14:15:07 +02:00
David Cook
9a9be8dacd Validate length of variant fields 2023-10-06 14:15:07 +02:00
David Cook
875d083a1d There's a gem for that [add gem] 2023-10-06 14:15:07 +02:00
David Cook
3ec6386e1c Validate length of some product fields
We know if the values are too long, so let's provide a useful message rather than generating an unhandled database error.
This code seems rather repetetive, it would be good to use a shared module. I wonder if there's a gem for that.

Note that the existing /products/*/edit screen doesn't even handle validation errors yet, but that's something for another day..
2023-10-06 14:15:07 +02:00
David Cook
fee126d6e1 Style form error messages
With an icon, and sentence case (upcase_first is similar to humanize, but simpler (https://dev.to/junko911/rails-helper-methods-to-change-the-form-of-strings-1h9c#upcase-first))
2023-10-06 14:15:07 +02:00
David Cook
3b19a19776 Show inline errors for product fields
The form helper () doesn't work for this case, but it seems we can call it directly like this instead. I'd like to fix the helper, but got stuck this time.
2023-10-06 14:15:07 +02:00
David Cook
5e478b8a76 Vertically align non-input content in table rows 2023-10-06 14:15:07 +02:00
David Cook
836f5a1fb3 Remove unused withError class
It added specificity but had no use.
I reviewed a couple of screens to make sure:
  - /admin/orders/Rx/customer
  - /admin/properties/new

I have to confess I don't know how Spree::Admin::BaseHelper is included, or where it's used.

Best viewed with whitespace ignored.
2023-10-06 14:15:07 +02:00
dependabot[bot]
734e80880b chore(deps-dev): bump bullet from 7.0.7 to 7.1.0
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.0.7 to 7.1.0.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.0.7...7.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 09:23:35 +00:00
dependabot[bot]
0adf44e525 chore(deps): bump awesome_nested_set from 3.5.0 to 3.6.0
Bumps [awesome_nested_set](https://github.com/collectiveidea/awesome_nested_set) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/collectiveidea/awesome_nested_set/releases)
- [Changelog](https://github.com/collectiveidea/awesome_nested_set/blob/master/CHANGELOG)
- [Commits](https://github.com/collectiveidea/awesome_nested_set/compare/v3.5.0...v3.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 09:16:36 +00:00
David Cook
9e04dc36d1 Merge pull request #11629 from mkllnk/tag-release
Add script to create patch release tags
2023-10-06 15:16:45 +11:00
Maikel Linke
74a8b1e721 Add script to create patch release tags 2023-10-06 13:58:37 +11:00
Neal Chambers
085d0f27f7 Move Timestamp Generation into its own Method 2023-10-06 11:19:31 +09:00
Neal Chambers
aaa42ce410 Add Filtering for Optional Relationships 2023-10-06 11:06:54 +09:00
Neal Chambers
3c51b48225 Fix Formatting and Bugs 2023-10-06 11:06:54 +09:00
Neal Chambers
6d22ec5605 Improve Migration Timestamping 2023-10-06 11:06:54 +09:00
Neal Chambers
2b4bf185d6 Replace Duplicate Model Detection with Column Specific Foreign Key Check 2023-10-06 11:06:54 +09:00
Neal Chambers
f02da9f59e Update schema.rb with new Foreign Keys 2023-10-06 11:06:54 +09:00
Neal Chambers
f1c61fa3aa Add Option to Write Migrations to Disk 2023-10-06 11:06:54 +09:00
Neal Chambers
fd8e94cb50 Update Migrations to Include Commented-Out Orphaned Record Query 2023-10-06 11:06:54 +09:00
Neal Chambers
2d6784b88d Allow Full Modulized Class Name to be Used for TODOs 2023-10-06 11:06:54 +09:00
Neal Chambers
d4c363ac39 Reduce Cyclomatic Complexity 2023-10-06 11:06:54 +09:00
Neal Chambers
099b2f455f Remove Unified Orphaned Records SQLs 2023-10-06 11:06:54 +09:00
Neal Chambers
9df42f596c Add SQL to Migration Files 2023-10-06 11:06:54 +09:00
Neal Chambers
7ec1f69e2a Create Foreign Key TODO 2023-10-06 11:06:54 +09:00
Neal Chambers
800d50d732 Add Foreign Key Column to Migrations 2023-10-06 11:06:54 +09:00
Neal Chambers
816ffe6e32 Convert rake task to spec 2023-10-06 11:06:54 +09:00
Neal Chambers
6729218846 Improve SQL query to Allow for Optional Relationships 2023-10-06 11:06:54 +09:00
Neal Chambers
72e75c0e2d Remove Delete on Cascade from Migrations 2023-10-06 11:06:54 +09:00
Neal Chambers
3590da6106 Remove Old Migrations 2023-10-06 11:06:54 +09:00
Neal Chambers
bf2c6128a7 Add Foreign Key Column 2023-10-06 11:06:54 +09:00
Neal Chambers
78cb4c6adc Add migrations to add foreign keys to database 2023-10-06 11:06:54 +09:00
Neal Chambers
5b87890141 Add SQL script to check for Orphaned Records 2023-10-06 11:06:54 +09:00
Neal Chambers
cb864411ee Add Rake Task that Generates Migrations for Missing Foreign Keys 2023-10-06 11:06:50 +09:00
David Cook
cd34e160bf Fix deleting of return_authorizations
return_authorizations have a stock_location_id, not the other way round. So there's no dependent field to nullify.
2023-10-06 10:58:49 +09:00
Neal Chambers
fec59e5ae2 Apply Changes Suggested by Code Review 2023-10-06 10:58:49 +09:00
Neal Chambers
cf07a055d0 Fix Rails/HasManyOrHasOneDependent with nil 2023-10-06 10:58:49 +09:00
Neal Chambers
e49489cd1c Fix invoices dependent relationship 2023-10-06 10:58:49 +09:00
Neal Chambers
d295a3bdae Update .rubocop_todo.yml for Reversions 2023-10-06 10:58:49 +09:00
Neal Chambers
2520d222bb Fix Rails/HasManyOrHasDependent with restrict_with_exception 2023-10-06 10:58:49 +09:00
Neal Chambers
180cd4abe6 Revert Complicated Rails/HasManyOrHasOneDependent Errors 2023-10-06 10:58:49 +09:00
Neal Chambers
e22e08e666 Change destroy to nullify 2023-10-06 10:58:49 +09:00
Neal Chambers
7c9bc58a4b Add nullify to orders relationship, instead of manually nullifying 2023-10-06 10:58:49 +09:00
Neal Chambers
921347f0f2 Update .rubocop_todo.yml 2023-10-06 10:58:49 +09:00
Neal Chambers
7f8ac94933 Fix Rails/HasManyOrHasOneDependent with nil 2023-10-06 10:58:49 +09:00
Neal Chambers
019b54ea95 Fix Rails/HasManyOrHasOneDependent with delete_all 2023-10-06 10:58:49 +09:00
Neal Chambers
070d2cb855 Fix stock_movements relation in variant 2023-10-06 10:58:49 +09:00
Neal Chambers
825342914d Fix Rails/HasManyOrHasOneDependent with nullify 2023-10-06 10:58:49 +09:00
Neal Chambers
b76fb10d46 Fix Rails/HasManyOrHasOneDependent with Destroy 2023-10-06 10:58:49 +09:00
Neal Chambers
53f5d63e4a Delete Rails/HasManyOrHasOneDependent TODOs 2023-10-06 10:58:49 +09:00
Maikel Linke
ff60dacebd Update all locales with the latest Transifex translations 2023-10-06 11:23:43 +11:00
David Cook
3f27fb69b3 Merge pull request #11625 from aisayo/patch-1
Update README.md
2023-10-05 09:52:03 +11:00
David Cook
ee13d1072c Merge pull request #11624 from filipefurtad0/make_seed_data_enteprise_visible
[dev ENV only] Adds attribute to enterprise factory
2023-10-05 09:10:23 +11:00
aisayo
97f315b363 Update README.md
Outdated instructions
2023-10-04 15:34:37 -04:00
filipefurtad0
0e699e9cee Adds attribute to enterprise factory
so that sample data rake task creates visible enterprises by default
2023-10-04 18:00:36 +01:00
lauriejefferson
0cda8d7d4c removed paid styling and added currency formatter to payment_total 2023-10-04 09:30:05 -04:00
Sigmund Petersen
4e8cd330b3 Merge pull request #11571 from dacook/buu-editing-fixups
[BUU] editing fixups
2023-10-04 13:48:31 +02:00
David Cook
6f43165006 Show generic error message when StimulusReflex fails
I decided not to invest the time to figure out how to test this..

The messages should have the same effect as the 500 error, but not technically a 500 because it's not handling a HTTP response. The documentation seems to state this covers server-side errors only (not network errors for example). I couldn't find any way to handle network errors with action cable.
2023-10-04 13:40:36 +02:00
David Cook
6d35b1ac71 Fix bulk form input styles
'header' fields are meant to be bold, and the field backgrounds are meant to match the cell background colour.
2023-10-04 13:40:36 +02:00
David Cook
cd63ab63d8 Refactor form code
Co-authored-by: Maikel <maikel@email.org.au>
2023-10-04 13:40:36 +02:00
David Cook
ed207e3df6 DRY up code 2023-10-04 13:40:36 +02:00
David Cook
4467758a9f Apply code suggestion
Co-authored-by: Jean-Baptiste Bellet <jb.bellet@gmail.com>
2023-10-04 13:40:36 +02:00
David Cook
136b370de1 Merge pull request #11621 from openfoodfoundation/dependabot/bundler/valid_email2-5.1.0
chore(deps): bump valid_email2 from 5.0.5 to 5.1.0
2023-10-04 15:33:26 +11:00
David Cook
7ffe318352 Merge pull request #11616 from openfoodfoundation/dependabot/bundler/sidekiq-7.1.5
chore(deps): bump sidekiq from 7.1.4 to 7.1.5
2023-10-04 15:21:03 +11:00
dependabot[bot]
2b2bb6d46b chore(deps): bump valid_email2 from 5.0.5 to 5.1.0
Bumps [valid_email2](https://github.com/micke/valid_email2) from 5.0.5 to 5.1.0.
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v5.0.5...v5.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-04 03:50:57 +00:00
dependabot[bot]
34829ea53e chore(deps): bump devise-i18n from 1.11.0 to 1.12.0
Bumps [devise-i18n](https://github.com/tigrish/devise-i18n) from 1.11.0 to 1.12.0.
- [Release notes](https://github.com/tigrish/devise-i18n/releases)
- [Changelog](https://github.com/tigrish/devise-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tigrish/devise-i18n/compare/v1.11.0...v1.12.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-04 03:49:24 +00:00
David Cook
057a9f73ed Merge pull request #11605 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.21.2
chore(deps-dev): bump rubocop-rails from 2.21.1 to 2.21.2
2023-10-04 14:49:03 +11:00
Maikel
05b30a72e5 Merge pull request #11604 from openfoodfoundation/dependabot/bundler/valid_email2-5.0.5
chore(deps): bump valid_email2 from 5.0.3 to 5.0.5
2023-10-04 14:45:45 +11:00
Maikel
2ac2b30b14 Merge pull request #11588 from filipefurtad0/split_subscription_spec
Splits bottleneck system/admin/subscriptions_spec.rb
2023-10-04 13:33:20 +11:00
Çağrı Özkan
f93fcd347b Rubocop fix 2023-10-04 02:00:21 +03:00
Çağrı Özkan
a5a13761a8 Filter with open ended boundaries upon missing params 2023-10-04 01:05:41 +03:00
Ryan Murphy
4db6570039 9235: Prevent customers from editing shipped orders 2023-10-03 08:36:57 -04:00
dependabot[bot]
f4fce6e69c chore(deps): bump trix from 2.0.6 to 2.0.7
Bumps [trix](https://github.com/basecamp/trix) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.0.6...v2.0.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 09:52:21 +00:00
filipefurtad0
14caf3b25c Moves helper into support folder
Wraps SubscripionHelper module around definitions
2023-10-03 09:49:26 +01:00
filipefurtad0
181ddcefbc Updates rubocop_todo file
Removes local untracked files
2023-10-03 09:49:26 +01:00
filipefurtad0
bc73d09438 Declares enable_subscriptions separately 2023-10-03 09:49:26 +01:00
filipefurtad0
96432ebec2 Splits files into new folder
Creates helper file for existing methods
2023-10-03 09:49:26 +01:00
filipefurtad0
8bc2feda23 Asserts for subscription instructions and tab 2023-10-03 09:49:26 +01:00
filipefurtad0
b554308f10 Sets correct context 2023-10-03 09:49:26 +01:00
dependabot[bot]
db3cdd95a3 chore(deps): bump sidekiq from 7.1.4 to 7.1.5
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.1.4 to 7.1.5.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.1.4...v7.1.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 05:28:17 +00:00
David Cook
2558855ad5 Merge pull request #11595 from openfoodfoundation/dependabot/bundler/rubocop-1.56.4
chore(deps-dev): bump rubocop from 1.56.3 to 1.56.4
2023-10-03 16:26:21 +11:00
dependabot[bot]
372defe20f chore(deps-dev): bump rubocop-rails from 2.21.1 to 2.21.2
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.21.1 to 2.21.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.21.1...v2.21.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 09:18:16 +00:00
dependabot[bot]
0cd87a7bbf chore(deps): bump valid_email2 from 5.0.3 to 5.0.5
Bumps [valid_email2](https://github.com/micke/valid_email2) from 5.0.3 to 5.0.5.
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v5.0.3...v5.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 09:06:58 +00:00
Maikel
b122c93055 Merge pull request #11586 from macanudo527/fix_stylehash_11
Fix Style/HashSyntax 12/13
2023-10-02 16:25:21 +11:00
Maikel Linke
fec6caf576 Remove unnecessary Rubocop disable 2023-10-02 16:18:51 +11:00
Gaetan Craig-Riou
7f2c1feaf8 Fix rubocop warning 2023-10-02 15:58:13 +11:00
Gaetan Craig-Riou
1a66f3d94f Fix system spec to take into account discounted tax 2023-10-02 15:58:13 +11:00
Gaetan Craig-Riou
8d639c14cb Add a fake adjustment voucher tax on admin order page
When tax are included in price, voucher tax is stored in the voucher
adjustment and not as its own adjustment. So we add a "fake adjustment"
for display purposes.
2023-10-02 15:58:12 +11:00
Gaetan Craig-Riou
8254bd9625 Take into account voucher tax part when displaying tax included in price 2023-10-02 15:58:12 +11:00
Maikel
350ca3b778 Merge pull request #11479 from filipefurtad0/split_split_checkout
Splits checkout files
2023-10-02 12:01:20 +11:00
Konrad
8150a8b04a Merge pull request #11579 from macanudo527/remove_delegate_belongs_to
Remove Deprecated delegate_belongs_to
2023-10-01 13:19:22 +02:00
Konrad
11ea4d93a9 Merge pull request #11584 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.0.6
chore(deps): bump trix from 2.0.5 to 2.0.6
2023-10-01 12:49:32 +02:00
Konrad
33d9ed4000 Merge pull request #11591 from dacook/admin-users-api-key-9833
Redirect to admin users edit path on success
2023-10-01 12:20:46 +02:00
Konrad
06ebeeac0f Merge pull request #11543 from rioug/11364-Voucher-fix-tax-report
[Vouchers] Fix Sales Tax Totals By Order report
2023-10-01 02:09:33 +02:00
dependabot[bot]
89414ba821 chore(deps-dev): bump rubocop from 1.56.3 to 1.56.4
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.56.3 to 1.56.4.
- [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.56.3...v1.56.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-29 09:53:53 +00:00
lauriejefferson
7320bb5af1 removed styling for paid orders and removed row for non oustanding balance 2023-09-28 20:02:58 -04:00
Neal Chambers
f3382d78c4 Update .rubocop_todo.yml 2023-09-29 08:51:48 +09:00
Neal Chambers
57d2f04330 Fix Style/HashSyntax 2023-09-29 08:51:48 +09:00
Gaetan Craig-Riou
dd0279c983 Update all locales with the latest Transifex translations 2023-09-28 11:52:49 +02:00
David Cook
e844d71abc Redirect to edit path on success
Simply rendering the edit form on the posted path is problematic. For example if you refresh the path you get a 404.
But if there's errors, we want to render the form with unsaved values so you can see the errors and try again.
2023-09-28 09:41:44 +10:00
Maikel
c1587b689a Merge pull request #11589 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.136.0
chore(deps): bump aws-sdk-s3 from 1.135.0 to 1.136.0
2023-09-28 09:20:36 +10:00
Maikel Linke
3fc78e1f7f Update Rubocop todo file 2023-09-28 08:26:35 +10:00
filipefurtad0
a634283ec5 Removes unecessary shipping method setup - guest 2023-09-27 22:20:31 +01:00
filipefurtad0
adede9df03 Removes unecessary shipping method setup - details 2023-09-27 22:19:37 +01:00
filipefurtad0
6763095f26 Removes unecessary shipping method setup - payment 2023-09-27 22:19:37 +01:00
filipefurtad0
3702a2e7b1 Removes unecessary shipping method setup - summary 2023-09-27 22:19:31 +01:00
filipefurtad0
25c58426db Moves split-checkout files to own folder
Removes split_ prefix
2023-09-27 21:45:03 +01:00
dependabot[bot]
4d7f21eec4 chore(deps): bump aws-sdk-s3 from 1.135.0 to 1.136.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.135.0 to 1.136.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-09-27 09:05:00 +00:00
Gaetan Craig-Riou
33f3c660a4 Fix rubocop warning 2023-09-26 11:21:05 +02:00
filipefurtad0
a4abedf3e3 Fixes rubocop issues 2023-09-26 10:18:28 +01:00
filipefurtad0
d3f9f989f6 Moves summary-step scenarios into dedicated file 2023-09-26 10:18:28 +01:00
filipefurtad0
67793c78ad Moves payment-step scenarios into dedicated file 2023-09-26 10:18:28 +01:00
filipefurtad0
a0611057f0 Moves details-step/not selecting shipping method scenarios into dedicated file 2023-09-26 10:18:28 +01:00
filipefurtad0
b8f7d6102e Moves guest/out of stock scenarios into dedicated file 2023-09-26 10:18:28 +01:00
Gaetan Craig-Riou
b129b9f1d0 DRY up specs 2023-09-26 10:50:58 +02:00
Gaetan Craig-Riou
e9051f5c58 As per review comment, clarify specs
And some DRYing
2023-09-26 10:26:06 +02:00
David Cook
91b251acd4 Refactor 2023-09-26 10:56:44 +10:00
Neal Chambers
50eb8f31f2 Remove Deprecated delegate_belongs_to 2023-09-26 09:50:08 +09:00
David Cook
4e05047cc6 Merge pull request #11583 from macanudo527/fix_stylehash_10
Fix Style/HashSyntax 11/13
2023-09-26 10:38:54 +10:00
dependabot[bot]
8797132117 chore(deps): bump trix from 2.0.5 to 2.0.6
Bumps [trix](https://github.com/basecamp/trix) from 2.0.5 to 2.0.6.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.0.5...v2.0.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 09:14:02 +00:00
Gaetan Craig-Riou
02aaf6f692 Remove voucher validation on code format
The code doesn't rely on label match any more so this restriction
is not necessary anymore
2023-09-25 09:49:55 +02:00
Gaetan Craig-Riou
097b775fa0 Add metadata before saving adjustment
Rails may put it all in one transaction

Co-authored-by: Maikel <maikel@email.org.au>
2023-09-25 17:44:16 +10:00
Neal Chambers
48132b055f Update .rubocop_todo.yml 2023-09-25 13:15:54 +09:00
Neal Chambers
70e218d2e9 Fix Style/HashSyntax 2023-09-25 13:15:38 +09:00
Maikel
51f125e301 Merge pull request #11582 from macanudo527/fix_stylehash_9
Fix Style/HashSyntax 10/13
2023-09-25 13:43:38 +10:00
Neal Chambers
232ffb1eb8 Update .rubocop_todo.yml 2023-09-24 22:41:48 +09:00
Neal Chambers
35e8f88943 Fix Style/HashSyntax 2023-09-24 22:41:27 +09:00
Rachel Arnould
aa489d4cd6 Merge pull request #11185 from jibees/11155-improve-customer-addresses-report
Admin, reports: improve customer addresses report
2023-09-22 18:06:47 +02:00
Jean-Baptiste Bellet
2803f1c6b2 Group all orders by customer_id, email and distributor_id
Therefore have one (and only) row per customer

Co-Authored-By: Maikel <maikel@email.org.au>
2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
9ce89125a4 Fix linter error: line is too long 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
d6c10170da Use plain text instead of computed date in specs
https://github.com/openfoodfoundation/openfoodnetwork/wiki/Code-Conventions#prefer-plain-text-over-method-calls-in-expected-values
2023-09-22 16:44:33 +01:00
jibees
5eab033a80 Improve indentation
Co-Authored-By: Maikel <maikel@email.org.au>
2023-09-22 16:44:33 +01:00
Maikel Linke
adc5bf6e93 Simplify date filter in customers report 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
82ccdcca70 Customers report has only one report: Customers
No more `addresses` report

+ Fix pre-existing rubocop issues

+ Create method to simplify and remove CyclomaticComplexity error
2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
5edc8d8ce1 Delete Mailing List report 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
c6c9cdca65 Add last completed order date 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
d2fbaa7cfd Add total amount spent at the shop for the customer 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
d55098f94f Add the number of orders for the customer 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
1378202732 Disable rubocop warning. Not sure how to handle it actually 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
cc26da6560 We'll need to get all the orders per line to count and sum them; prepare it 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
c134de850c Add filter on completed_at of an order 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
4f332504af Add new line at the end of file 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
9e295146cb Remove supplier filter 2023-09-22 16:44:33 +01:00
Jean-Baptiste Bellet
baff4b5399 Rename 'distributor' to 'hub' 2023-09-22 16:44:33 +01:00
Gaetan Craig-Riou
19fc1fab8c As per review, visit page directly to save time
We still visit the page as user would do once to make sure it is
working.
2023-09-22 11:35:56 +02:00
filipefurtad0
b913e5c851 Update all locales with the latest Transifex translations 2023-09-22 10:29:52 +01:00
Gaetan Craig-Riou
03ce39d5c5 Add metadata to tax related voucher adjustment
In the scenario where you have tax excluded from price, when adding
a voucher to an order, we create 2 voucher adjusments. One of them
represent the tax part of the voucher, and has a label starting with
"Tax". To better differentiate them and allow a reliable way to
query it, we add a metadata entry.
2023-09-22 11:16:21 +02:00
Rachel Arnould
a3ca7e9032 Merge pull request #11568 from jibees/11069-buu-fully-update-the-details-of-my-products-and-variants-1
🚧 [BUU] Add `Edit` link into a small menu on the last Actions column to the right of the table
2023-09-22 10:30:01 +02:00
Gaetan Craig-Riou
0a68300e40 Remove Voucher scenario
It is now covered by unit test
2023-09-22 10:22:47 +02:00
Gaetan Craig-Riou
25adaaa6ea Simplify test set up 2023-09-22 10:17:50 +02:00
Gaetan Craig-Riou
f54846829d Add test for #voucher_tax_adjustment
And mock calls to VoucherAdjustmentsService
2023-09-22 10:17:50 +02:00
Gaetan Craig-Riou
9e49da8fae Add unit test for Reporting::Reports::SalesTax::SalesTaxTotalsByOrder
And a small refactoring.
Currently it only covers tax excluded from price
2023-09-22 10:17:50 +02:00
Gaetan Craig-Riou
3197480121 Prevent voucher from starting with "Tax"
Plus spec
2023-09-22 10:17:50 +02:00
Gaetan Craig-Riou
bec5ad55dd Use VoucherAdjustmentsService to retrieve tax part of the voucher 2023-09-22 10:17:50 +02:00
Gaetan Craig-Riou
7c34145ed7 Add voucher_included_tax and voucher_excluded_tax
It retrieves the tax part of the voucher adjustment for tax included
in price and tax excluded from price respectively.
2023-09-22 10:17:40 +02:00
Gaetan Craig-Riou
b620e413f4 Merge pull request #11378 from mkllnk/dfc-ofn-product-group-id
[DFC API] Add custom OFN product id to DFC SuppliedProduct
2023-09-22 17:57:11 +10:00
Jean-Baptiste Bellet
b9cd8ee462 Factorize elements into beforeEach block 2023-09-22 09:34:36 +02:00
Jean-Baptiste Bellet
458a031558 Create a private function for event listener 2023-09-22 09:30:40 +02:00
Maikel Linke
847ddab4e6 Improve readability of assignment without blank lines 2023-09-22 17:18:49 +10:00
Maikel
886988e24a Merge pull request #11578 from macanudo527/fix_stylehash_8
Fix Style/HashSyntax 9/13
2023-09-22 15:09:46 +10:00
Neal Chambers
4a3a246e7a Update .rubocop_todo.yml 2023-09-22 09:08:50 +09:00
Neal Chambers
fe88a88206 Fix Style/HashSyntax 2023-09-22 09:08:50 +09:00
Maikel
3ed92312dd Merge pull request #11576 from openfoodfoundation/dependabot/bundler/puma-6.4.0
chore(deps): bump puma from 6.3.1 to 6.4.0
2023-09-22 09:57:07 +10:00
Maikel
998370163c Merge pull request #11575 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.135.0
chore(deps): bump aws-sdk-s3 from 1.134.0 to 1.135.0
2023-09-22 09:55:32 +10:00
Maikel
a2f9289031 Merge pull request #11570 from macanudo527/fix_stylehash_7
Fix Style/HashSyntax 8/13
2023-09-22 09:54:46 +10:00
Neal Chambers
22e3542de3 Update .rubocop_todo.yml 2023-09-21 22:58:42 +09:00
Neal Chambers
7ecd4a149b Fix Style/HashSyntax 2023-09-21 22:58:42 +09:00
Konrad
a55797d727 Merge pull request #11510 from rioug/11421-deactivate-voucher
[Vouchers] add activate/deactivate feature
2023-09-21 15:03:47 +02:00
Konrad
1e877f4183 Merge pull request #11555 from mkllnk/spree-orders
Remove duplicate association from Spree::User
2023-09-21 13:23:51 +02:00
Filipe
a587a10dfe Merge pull request #11573 from mkllnk/flaky-invoice-spec
Compare adjustments in deterministic order for invoices
2023-09-21 11:34:29 +01:00
jibees
4c82d27a7d Merge pull request #11574 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.7.0
chore(deps-dev): bump knapsack_pro from 5.6.0 to 5.7.0
2023-09-21 11:34:01 +02:00
dependabot[bot]
252c86ccc0 chore(deps): bump puma from 6.3.1 to 6.4.0
Bumps [puma](https://github.com/puma/puma) from 6.3.1 to 6.4.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.3.1...v6.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-21 09:31:34 +00:00
dependabot[bot]
d54a09f26a chore(deps): bump aws-sdk-s3 from 1.134.0 to 1.135.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.134.0 to 1.135.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-09-21 09:20:35 +00:00
dependabot[bot]
f44eae2d6b chore(deps-dev): bump knapsack_pro from 5.6.0 to 5.7.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.6.0 to 5.7.0.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.6.0...v5.7.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-09-21 09:16:47 +00:00
David Cook
52fb4f5287 Remove unused workflow
Sadly this one can't work for PRs created from forks.
2023-09-21 16:42:27 +10:00
Maikel Linke
6386a997d3 Compare adjustments in deterministic order for invoices
The comparator would sometimes compare two different adjustments when it
should have compared two versions of the same adjustment.
2023-09-21 16:37:07 +10:00
Maikel Linke
ee1611904b Fix typos in spec description 2023-09-21 16:37:07 +10:00
David Cook
f2e8063a22 Merge pull request #11572 from dacook/test-api-changes
Remove unnecessary space
2023-09-21 15:57:42 +10:00
David Cook
ec29038372 Remove unnecessary space 2023-09-21 15:54:40 +10:00
David Cook
23959c96bc Send a Slack notification when api-changes PRs are merged 2023-09-21 15:53:34 +10:00
Maikel Linke
07ac381a97 Ignore block length of response blocks
In Rswag request specs, the `response` block is like `describe` and is
just used to group several other blocks. It can be long and that's okay.
2023-09-21 09:19:21 +10:00
Maikel Linke
02f251c900 Import DFC SuppliedProduct as new variant of existing product 2023-09-21 09:04:57 +10:00
Maikel Linke
db5b6e5406 Enable DFC importer to import OFN objects 2023-09-21 09:04:28 +10:00
Maikel Linke
fcf7b94278 Add our own SuppliedProduct with custom property 2023-09-21 09:02:20 +10:00
Maikel Linke
c42f62e09f Add custom OFN product id to DFC SuppliedProduct
The Spree::Variant in OFN corresponds to a DFC SuppliedProduct. But
several Spree::Variant can be grouped under one Spree::Product which
wasn't exposed on the DFC API.

I'm adding a custom property here which can be used internally and
shouldn't break any other DFC tools.

A gotcha of this first test implementation:

The `ofn:` prefix has not been defined in the context. Software needs
to know that this is an Open Food Network attribute or ignore it.
We could define our own context and ontology and publish it on our
website but I don't see any benefit of that at this point.
2023-09-21 08:54:32 +10:00
Maikel Linke
2175c59a6b Load spec helper not knowing Rails
When the application is not preloaded then running Rspec doesn't know
Rails until the spec helper is loaded. So we can't use Rails to find the
path of the spec helper. This has been fixed before but the DFC Address
code was developed at the same time and missed.
2023-09-21 08:54:32 +10:00
Maikel
458767fe13 Merge pull request #11569 from macanudo527/fix_stylehash_6
Fix Style/HashSyntax 7/13
2023-09-21 08:35:39 +10:00
Rachel Arnould
15137caed2 Merge pull request #11509 from dacook/buu-editing-part3-11059
[BUU] Bulk form editing features
2023-09-20 19:27:05 +02:00
Neal Chambers
bad1f55cdd Update .rubocop_todo.yml 2023-09-20 23:47:52 +09:00
Neal Chambers
29df80945d Fix Style/HashSyntax 2023-09-20 23:46:26 +09:00
Maikel
d216b68993 Merge pull request #11562 from macanudo527/fix_stylehash_5
Fix Style/HashSyntax 6/13
2023-09-20 12:00:30 +10:00
jibees
964373ce2b Merge pull request #11566 from openfoodfoundation/dependabot/bundler/valid_email2-5.0.3
chore(deps): bump valid_email2 from 5.0.2 to 5.0.3
2023-09-19 16:25:46 +02:00
jibees
34d605111a Merge pull request #11567 from openfoodfoundation/dependabot/bundler/ffaker-2.23.0
chore(deps): bump ffaker from 2.22.0 to 2.23.0
2023-09-19 16:25:01 +02:00
Jean-Baptiste Bellet
2a98789571 Add vertical-ellipsis-menu as product/variant actions menu in products table
+ add specs
2023-09-19 16:08:27 +02:00
Jean-Baptiste Bellet
c76bc07f7f Creates a vertical-ellipsis-menu component 2023-09-19 15:32:50 +02:00
Jean-Baptiste Bellet
2c478f1d8e Link to product/variant edit page 2023-09-19 14:26:14 +02:00
Jean-Baptiste Bellet
0847f6b0f6 Create a new column actions for each rows (product+variant) 2023-09-19 14:25:55 +02:00
dependabot[bot]
f9aa4a9d67 chore(deps): bump ffaker from 2.22.0 to 2.23.0
Bumps [ffaker](https://github.com/ffaker/ffaker) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/ffaker/ffaker/releases)
- [Changelog](https://github.com/ffaker/ffaker/blob/main/Changelog.md)
- [Commits](https://github.com/ffaker/ffaker/compare/v2.22.0...v2.23.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-19 09:56:46 +00:00
dependabot[bot]
5eeb45ed25 chore(deps): bump valid_email2 from 5.0.2 to 5.0.3
Bumps [valid_email2](https://github.com/micke/valid_email2) from 5.0.2 to 5.0.3.
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v5.0.2...v5.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-19 09:46:32 +00:00
David Cook
759705efcf Add spec for onKeyup 2023-09-19 14:48:39 +10:00
David Cook
6bfdd1bc12 Split spec into multiple examples 2023-09-19 14:48:34 +10:00
David Cook
693d5bad4a Merge pull request #11551 from mkllnk/setup-node-version
Install the current node version in setup
2023-09-19 13:49:43 +10:00
David Cook
0af497ab23 Merge pull request #11539 from filipefurtad0/improve_tests_around_bulk_invoice_printing
[Release test automation] Adds assertions on bulk invoice creation
2023-09-19 13:49:19 +10:00
David Cook
fb93aeb195 Optimise spec 2023-09-19 13:39:36 +10:00
Neal Chambers
d1b8edaa94 Update .rubocop_todo.yml 2023-09-19 08:26:15 +09:00
Neal Chambers
42a6a02353 Fix Style/HashSyntax 2023-09-19 08:25:56 +09:00
filipefurtad0
6a31849fb4 Asserts on url from View File link 2023-09-18 10:43:13 +01:00
Gaetan Craig-Riou
c6e9a84633 Merge pull request #11557 from openfoodfoundation/dependabot/bundler/valid_email2-5.0.2
chore(deps): bump valid_email2 from 5.0.0 to 5.0.2
2023-09-18 19:29:08 +10:00
Rachel Arnould
00b7ae9600 Merge pull request #11496 from jibees/buu-css/ui-tweaks-on-legacy-backoffice-to-be-consitent-and-usable
🚧  BUU: update and tweak UI and CSS to fit V3 style to legacy
2023-09-18 10:53:28 +02:00
filipefurtad0
06ca2979dd Adds assertions on bulk invoice creation 2023-09-18 09:29:44 +01:00
Maikel
2c3561d47f Merge pull request #11554 from macanudo527/fix_stylehash_4
Fix Style/HashSyntax 5/13
2023-09-18 15:34:06 +10:00
Maikel
a1e3bae9b6 Merge pull request #11550 from openfoodfoundation/dependabot/bundler/stripe-9.3.0
chore(deps): bump stripe from 9.2.0 to 9.3.0
2023-09-18 15:31:42 +10:00
dependabot[bot]
6cf46c9bdc chore(deps): bump valid_email2 from 5.0.0 to 5.0.2
Bumps [valid_email2](https://github.com/micke/valid_email2) from 5.0.0 to 5.0.2.
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v5.0.0...v5.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 04:21:35 +00:00
Maikel
e2783cda05 Merge pull request #11549 from openfoodfoundation/dependabot/bundler/view_component-3.6.0
chore(deps): bump view_component from 3.5.0 to 3.6.0
2023-09-18 14:14:35 +10:00
Maikel Linke
4ebfe73f60 Remove duplicate association
Probably a relict from a Spree upgrade.
2023-09-18 12:38:01 +10:00
Neal Chambers
4beacfb970 Update .rubocop_todo.yml 2023-09-16 09:07:22 +09:00
Neal Chambers
4596997547 Fix Style/HashSyntax 2023-09-16 09:05:31 +09:00
Gaetan Craig-Riou
776f478038 Make update the only public method
I think this got lost when refactoring, but only `update` is meant
to be a public method, other than `new`.
2023-09-15 11:42:04 +02:00
jibees
0b4d0a1438 Merge pull request #11552 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.5.3
chore(deps): bump @floating-ui/dom from 1.5.2 to 1.5.3
2023-09-15 11:28:38 +02:00
dependabot[bot]
727afbc115 chore(deps): bump @floating-ui/dom from 1.5.2 to 1.5.3
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.5.2 to 1.5.3.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.5.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-09-15 09:14:48 +00:00
Jean-Baptiste Bellet
02bbd9a9ba Adjust colors and height for sidebar-item component 2023-09-15 11:05:59 +02:00
Jean-Baptiste Bellet
657f4d95d7 move sidebar-item into admin v3 context 2023-09-15 11:02:45 +02:00
Jean-Baptiste Bellet
fe81900639 Update select2.scss 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
10b6df6bd7 Tweak dashboard for a hub manager 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
7326241c70 Move pages/changetypeform to admin v3 context 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
ae04063643 Create and adjust big button 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
4aaf0ddc18 Move dashboard-single-ent into admin v3 context 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
a59c8adbbf Adjust color for edit action to $teal 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
241dbd1ded move plugins/powertip into admin v3 context 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
62465b9bbc Move components/actions into admin_v3 context 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
dfe79396f6 Use $teal color for some info in the order page 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
f71ace1d39 Move sections/orders scss file into admin v3 context 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
f110c55531 Add product_import into admin_v3 context and adjust some colors 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
8ae68b15a0 Adjust select2 multiple choices colors 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
beba709827 Move buttons/input stuff into related file
And adjust design for v3 style
2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
371e064f82 Adjust padding left right size for text-angular component in v3 context 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
6a771ad09c Move text-angular component rules to admin_style_v3 context 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
e3359dd240 Move text-angular rules into its own file 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
351fe1b430 Date / date range (flatpickr) colors customization 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
7e1c2dac45 Move flatpickr customization into admin_v3 context 2023-09-15 10:47:44 +02:00
Jean-Baptiste Bellet
4b3688f878 Move date picker into admin_v3 context 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
d72a4a758b Add border to table 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
705ec5e5f8 Change color of tagging component in admin/customers page 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
2fd5390374 Design background color of dropdown component 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
102f20ad9e Add enterprise_index_panels into admin_v3 context 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
3cfd4cdc9b No need to have light in v3 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
0d410d27ae No more green but $red (which is almost orange btw) for navigation 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
e434f7112a Add sidebar to admin_v3 context 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
8b0fc875da Use the same arrow 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
b355d8beb3 Change colors for dropdown components
It's a bit annoying: we do have several "selector" components.
 - built-in select
 - dropdown directive
 - select2 component
 - tom-select component

Each has its own design, and having common design a loooong time job ;)
2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
db4d6c8010 Don't need to change background color hovering 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
b0e6062bec Create a arrowDown mixin in order to display arrow for select compoentns 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
aacdeac1e5 Move dropdown into admin_v3 context 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
99d0b3f092 Prefer to use color-btn-hover-bg var instead of color-10
The variable name is easier to understand.
2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
549e9259d9 Fix comment 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
6ee48a04fc Remove file admin/plugins/select2 for adminV3 and copy content into
already used file: `components/select2`
2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
ccc59926f1 Update button background color when hovering on dashboard 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
5df211137e Tweak stimulus pagination (used on orders) to be up to date 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
f2941f9275 form legend are red 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
1b9a7aa81e Adjust height, border and background colors for inputs 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
98f9303c99 Tweak colors, size, ... for select2 to looks like tom-select
One day, we'll remplace select2 by tom-select
2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
e5086ce057 Adjust colors for select2 and remove useless ones 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
3a67f5c9d7 Integrate select2 to admin_v3 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
b8406be4b9 Add trix editor to admin_v3 css
That was an omission when installing trix
2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
03d5f8acc4 No need to specify padding when having a line height 2023-09-15 10:47:43 +02:00
Jean-Baptiste Bellet
48f1c65a91 Include dashboard_item into admin_v3 2023-09-15 10:47:43 +02:00
David Cook
e075d40525 Prevent accidentally leaving the page 2023-09-15 16:00:41 +10:00
David Cook
99ac48a258 Discarding changes reloads from DB
But it also clears any search filters. To confirm exactly what behaviour is desired before fixing...
2023-09-15 15:46:02 +10:00
David Cook
8ff67aca41 Disable filters and sorting when form is modified
Stimulus controllers aren't supposed to reach outside their own element (so we can't do this with targets). Perhaps the controller should be bigger to encompass more, but I wanted to see if I could avoid making a mega component that does everything. For now it seems appropriate just to pass a selector in.
Another option is to publish events on other controllers using Outlets, but I don't know if we need to go there just yet.
2023-09-15 15:45:48 +10:00
David Cook
e047f49998 Make form actions float over sort controls. 2023-09-15 15:45:48 +10:00
David Cook
15f7a8299b Show form actions only when modified 2023-09-15 15:45:48 +10:00
David Cook
daefada5a9 Show summary of modified records
I found myself trying to write Ruby in Javascript, and it's not nearly as pretty..
Javascript now has more advanced data structures like Map, but it's rather useless because it doesn't have the usual iterator methods (such as filter, map, reduce etc).

Also for the spec I wasn't sure of the best approach, so will gladly recieve feedback.
2023-09-15 15:45:48 +10:00
David Cook
18e40bebd0 Mark modified fields 2023-09-15 15:45:45 +10:00
Maikel Linke
ab157246df Install the current node version in setup 2023-09-15 15:25:16 +10:00
dependabot[bot]
b1f42c14ee chore(deps): bump stripe from 9.2.0 to 9.3.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 9.2.0 to 9.3.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/v9.2.0...v9.3.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-09-15 03:07:27 +00:00
dependabot[bot]
86b5791268 chore(deps): bump view_component from 3.5.0 to 3.6.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.5.0 to 3.6.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.5.0...v3.6.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-09-15 03:02:49 +00:00
Maikel
aad58f1c8b Merge pull request #11546 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.21.1
chore(deps-dev): bump rubocop-rails from 2.21.0 to 2.21.1
2023-09-15 12:59:54 +10:00
Maikel
2994227c35 Merge pull request #11542 from dacook/update-templates
Update templates
2023-09-15 11:42:12 +10:00
Maikel
0c87c16847 Merge pull request #11540 from macanudo527/fix_stylehash_3
Fix Style/HashSyntax 4/13
2023-09-15 11:32:03 +10:00
dependabot[bot]
f9aab96332 chore(deps-dev): bump rubocop-rails from 2.21.0 to 2.21.1
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.21.0 to 2.21.1.
- [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.21.0...v2.21.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-14 09:48:33 +00:00
Gaetan Craig-Riou
0c005ad734 Sales Tax Totals by order included tax, fix tax amount when voucher applied
Plus specs
2023-09-14 10:21:50 +02:00
Gaetan Craig-Riou
e7a52e4733 Update app/controllers/admin/enterprises_controller.rb
Simplify code

Co-authored-by: Maikel <maikel@email.org.au>
2023-09-14 17:57:31 +10:00
Neal Chambers
0c1cb5282c Update .rubocop_todo.yml 2023-09-14 16:25:49 +09:00
Neal Chambers
bf9db13bb3 Fix Style/HashSyntax 2023-09-14 16:25:49 +09:00
David Cook
814144d77d Remember to mention API changes
[skip ci]
2023-09-14 15:04:01 +10:00
David Cook
00b2c70239 Release categories are now automatically generated. 2023-09-14 15:03:56 +10:00
David Cook
b0c822c63b Remember to consider webhook changes as API changes too 2023-09-14 15:03:54 +10:00
David Cook
7ef4df0087 Update all locales with the latest Transifex translations 2023-09-14 13:47:58 +10:00
David Cook
0966864589 Merge pull request #11511 from dacook/fix-update-button-11349
Fix Update button sizing
2023-09-14 13:37:19 +10:00
David Cook
2e6e083667 [fixup] Fix Update button sizing
By disabling line wrap we can consistently predict how it will appear. The longest translation we currently have is 14 characters so this should be fine.
2023-09-14 09:37:10 +10:00
Maikel
8e226bc473 Merge pull request #11537 from filipefurtad0/fix_flaky_orders_cycle_supplier_totals_report_spec.rb
Renames product so it always appears first on the report results
2023-09-14 09:08:16 +10:00
Maikel
758c6e033f Merge pull request #11533 from macanudo527/fix_stylehash_2
Fix Style/HashSyntax 3/13
2023-09-14 09:04:03 +10:00
Maikel
0382b4c80a Merge pull request #11535 from openfoodfoundation/dependabot/bundler/newrelic_rpm-9.5.0
chore(deps): bump newrelic_rpm from 9.4.2 to 9.5.0
2023-09-14 08:45:44 +10:00
Konrad
c36c5be2c9 Merge pull request #11497 from Matt-Yorkley/import-tax-category
Fix error when importing entries with a tax category
2023-09-13 23:28:16 +02:00
Konrad
29a12c7235 Merge pull request #11013 from filipefurtad0/add_enterprise_fees_w_tax_report_by_producer
Adds enterprise fees w tax report by producer
2023-09-13 21:55:59 +02:00
David Cook
ee2520a1f6 Visit page directly to save time
Shaved a couple of seconds off, 35->33 sec.

And make it easier to hide from the list.
2023-09-13 19:09:55 +02:00
David Cook
b27f63fa60 Refactor: DRY up init code 2023-09-13 19:09:55 +02:00
David Cook
ef1ccca4fa Temporarily 'hide' report
The reports framework doesn't currently support hidden reports, but we can mark it with a strike-through at least.
2023-09-13 19:09:55 +02:00
David Cook
db8392ce81 Temporarily hide report 2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
4cb91da8b2 load only enterprise fees connected to incoming exchanges on the OC 2023-09-13 19:09:55 +02:00
filipefurtad0
af525f9f7f Fixes rubocop issues 2023-09-13 19:09:55 +02:00
filipefurtad0
131474e91d Updates test case
should list all the tax rates (2)
2023-09-13 19:09:55 +02:00
filipefurtad0
57f058eeb2 Updates test case
should list all the tax rates
2023-09-13 19:09:55 +02:00
filipefurtad0
fc9826b44a Updates test case
should filter by fee name
2023-09-13 19:09:55 +02:00
filipefurtad0
86e6697723 Updates test case
should filter by producer
2023-09-13 19:09:55 +02:00
filipefurtad0
7734b0417d Updates test case
should filter by distributor and order cycle (2)
2023-09-13 19:09:55 +02:00
filipefurtad0
d7a6db3eb0 Updates test case
should filter by distributor and order cycle
2023-09-13 19:09:55 +02:00
filipefurtad0
d8501e7d83 Updates test case
generates the report and displays fees for the respective suppliers
2023-09-13 19:09:55 +02:00
David Cook
47d5fe909e Deduplicate order2 setup 2023-09-13 19:09:55 +02:00
David Cook
8c514b2fe9 Deduplicate order setup 2023-09-13 19:09:55 +02:00
David Cook
b574e71fc9 Refactor: set included_in_price once
This saves the need for an update, and more importantly moves setup out of the before block which means we can finally deduplicate order setup.
2023-09-13 19:09:55 +02:00
David Cook
6e15049728 Refactor distributor 2023-09-13 19:09:55 +02:00
David Cook
bf2298829f Refactor order cycle setup more
Moving more code out of before blocks which will help us reduce duplication in following commits.
2023-09-13 19:09:55 +02:00
David Cook
ce57ac65f3 Refactor order cycle lets
It turns out the outgoing exchanges were never even used.
2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
9a22cdc5e7 test scenario: 'multiple orders, same enterprise fee, different tax rates' 2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
624b4c8ad2 fix calculation of the summary row's total excl tax 2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
a3f012c9fe calculate tax total using existing rows 2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
f0c3d7685e replace string reference with the translated string 2023-09-13 19:09:55 +02:00
David Cook
420494715f Tighten up spec
I noticed that the tests don't check if the right totals are shown for each section. Now we can be certain.
2023-09-13 19:09:55 +02:00
David Cook
b7e1a660c3 Rename supplier to be more specific
To ensure specs are matching the right supplier.
2023-09-13 19:09:55 +02:00
David Cook
e934bc7cb9 Ignore ClassLength
I'm never quite sure the best way to deal with these, so I added a comment to at least explain my justification.
2023-09-13 19:09:55 +02:00
David Cook
93cca56e68 Style/HashSyntax 2023-09-13 19:09:55 +02:00
filipefurtad0
019c7b3e71 Splits filtering tests between orders
Sets pending test case for orders with more than one supplier
2023-09-13 19:09:55 +02:00
filipefurtad0
e43661fd3c Adds/corrects comments around Added tax section 2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
080e81e0fe optimize join_supplier 2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
44e8d2d735 fix pending lint issues 2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
219c581f9a remove pending from "should filter by producer" 2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
6dd70d310c fix the calculation of the cost of produce
we want the cost of produce to only include the items produced by the supplier used to group the rows.
2023-09-13 19:09:55 +02:00
filipefurtad0
9837a4fcf2 Removes pending (3)
Reverts Included Tax values
2023-09-13 19:09:55 +02:00
filipefurtad0
1b4235eb1d Extends tests to inclusive tax scenario 2023-09-13 19:09:55 +02:00
filipefurtad0
bb0f9a6758 Adds pending test
on fees from order with line items from different suppliers

Adds pending test on producer filter
2023-09-13 19:09:55 +02:00
filipefurtad0
928337c3fd Adds a second supplier and product to the setup 2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
7a875723ca fix order_cycle summary row.
the summary row has to only include the line items coming from the supplier used in the grouping key
2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
7b0a99c652 fix enterprise fees listing
For every producer, we want to only show the enterprise fees that are applied to at lease one of his products.
To do that, we use the order cycle to build a list of the enterprise fees for every variant.
Every variant will have coordinator fee + additional fees coming from incoming/outgoing exchanges.
2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
1cd0f88c1e fix supplier filter 2023-09-13 19:09:55 +02:00
David Cook
9ae65e135b Rails/Pick
Prefer pick("sum(amount)") over pluck("sum(amount)").first
2023-09-13 19:09:55 +02:00
David Cook
55742f40d1 Show a line for cost of produce
Utilising a second group_by rule, we can add a second summary_row. The cost of produce is also inserted into the TOTALS row as per requirements.
2023-09-13 19:09:55 +02:00
David Cook
cc54e2e6c7 Add long report class to .rubocop_todo.yml
Long classes are a problem that would be good to resolve one day. But it's hard to resolve with the current reports framework.
2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
ee7668e713 implement enterprise fee report filters
squash Reformat/Refactor spec
2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
481b09edda test enterprise summary fee with tax report by producer
Reformat/Refactor spec
2023-09-13 19:09:55 +02:00
Mohamed ABDELLANI
2880fd5a87 implement EnterpriseFeesWithTaxReportByProducer
squash Re-format code

squash Apply suggestions from code review

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

squash More refactor

squash Update lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_producer.rb
2023-09-13 19:09:55 +02:00
Filipe
0f47ec0094 Merge pull request #11525 from jibees/11524-enlarged-unit-price-tooltip-image-on-variant-edit-page
BUU: Fix question mark icon for tooltip
2023-09-13 16:52:15 +01:00
Filipe
dae05e31ab Merge pull request #11501 from jibees/9146-improve-user-feedback-in-oc-edit-page-for-hidden-inventory
Improve user feedback in oc edit page for hidden inventory
2023-09-13 16:26:39 +01:00
jibees
9f675fed32 Merge pull request #11534 from openfoodfoundation/dependabot/bundler/faraday-2.7.11
chore(deps): bump faraday from 2.7.10 to 2.7.11
2023-09-13 15:02:29 +02:00
jibees
f7dd94268e Merge pull request #11536 from openfoodfoundation/dependabot/bundler/sidekiq-7.1.4
chore(deps): bump sidekiq from 7.1.3 to 7.1.4
2023-09-13 14:59:06 +02:00
filipefurtad0
263b5e280e Renames product so it always appears first on the report results 2023-09-13 11:33:58 +01:00
dependabot[bot]
2c79a8be3c chore(deps): bump sidekiq from 7.1.3 to 7.1.4
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.1.3 to 7.1.4.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.1.3...v7.1.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-13 10:02:05 +00:00
dependabot[bot]
866f9b9d9d chore(deps): bump newrelic_rpm from 9.4.2 to 9.5.0
Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.4.2 to 9.5.0.
- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)
- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.4.2...9.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-13 10:00:35 +00:00
dependabot[bot]
8adc0a9144 chore(deps): bump faraday from 2.7.10 to 2.7.11
Bumps [faraday](https://github.com/lostisland/faraday) from 2.7.10 to 2.7.11.
- [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.10...v2.7.11)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-13 09:59:46 +00:00
Neal Chambers
1fa0dc99fe Update .rubocop_todo.yml 2023-09-13 16:45:00 +09:00
Neal Chambers
ed06edda3f Fix Style/HashSyntax 2023-09-13 16:45:00 +09:00
Maikel
ead4f784ba Merge pull request #11528 from macanudo527/fix_stylehash_1
Fix Style/HashSyntax 2/13
2023-09-13 17:17:26 +10:00
Maikel
463ecf2880 Merge pull request #11508 from mkllnk/dfc-enterprise-groups
[DFC API] Add endpoint for enterprise groups
2023-09-13 16:50:05 +10:00
Maikel Linke
7e222ad83e Include address when showing group
It may be nice to show more data like social media URLs but the DFC
Connector hasn't implemented that yet and it's not specified in the
current issue.
2023-09-13 16:36:36 +10:00
Maikel Linke
88a3615de7 List groups when showing DFC Enterprise 2023-09-13 16:36:36 +10:00
Maikel Linke
cf18229e5b Avoid loading DFC catalog for Person or Groups endpoint 2023-09-13 16:36:36 +10:00
Maikel Linke
95d3987752 List enterprise groups on DFC API 2023-09-13 16:36:36 +10:00
Maikel Linke
a03fb01a8c List enterprises within groups on DFC API 2023-09-13 16:36:36 +10:00
Maikel Linke
2d91a61dcb Add DFC API EnterpriseGroups#show 2023-09-13 16:36:36 +10:00
David Cook
ae72158e87 Merge pull request #11494 from mkllnk/dfc-swagger-config
Group DFC API operations by endpoint in documentation
2023-09-13 14:57:14 +10:00
Neal Chambers
7c3e61104a Update .rubocop_todo.yml 2023-09-12 23:19:25 +09:00
Neal Chambers
4ffd3759cc Fix Style/HashSyntax 2023-09-12 23:19:05 +09:00
jibees
0ebdc8abca Merge pull request #11526 from openfoodfoundation/dependabot/bundler/sidekiq-7.1.3
chore(deps): bump sidekiq from 7.1.2 to 7.1.3
2023-09-12 15:54:25 +02:00
Gaetan Craig-Riou
9925399292 Sales Tax Totals by order, fix tax amount when voucher applied
Apply the tax discount to the tax collumn when a voucher is added
to the order, and update total excluding tax accordingly.
2023-09-12 14:36:28 +02:00
Gaetan Craig-Riou
a7bceb0b28 Add spec scenario where a voucher is added to the order
Voucher tax portion needs to be removed from the tax amount so we
can display the correct tax in the report.
2023-09-12 14:14:01 +02:00
Gaetan Craig-Riou
29a4bf88d7 DRY up specs 2023-09-12 14:13:04 +02:00
dependabot[bot]
1d430265a2 chore(deps): bump sidekiq from 7.1.2 to 7.1.3
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.1.2 to 7.1.3.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.1.2...v7.1.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 09:32:05 +00:00
Gaetan Craig-Riou
57f563f4bc Merge pull request #11516 from macanudo527/fix_rubocop_9
Fix Style/HashSyntax 1
2023-09-12 18:56:47 +10:00
Jean-Baptiste Bellet
637096534f Implement spec for #9146 issue 2023-09-12 10:20:26 +02:00
Jean-Baptiste Bellet
ff8b9465c7 Display info on outgoing products panel when some variants hidden 2023-09-12 10:20:26 +02:00
Jean-Baptiste Bellet
ff7629ba2c Display information on outgoing product when variant aren't available
Update en.yml
2023-09-12 10:20:26 +02:00
jibees
eecc0d5772 Merge pull request #11519 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.21.0
chore(deps-dev): bump rubocop-rails from 2.20.2 to 2.21.0
2023-09-11 16:31:03 +02:00
jibees
a08d9e5a3c Merge pull request #11523 from openfoodfoundation/dependabot/bundler/rubocop-1.56.3
chore(deps-dev): bump rubocop from 1.56.2 to 1.56.3
2023-09-11 16:30:23 +02:00
Jean-Baptiste Bellet
edc6ac801d Use the right colors for the question mark icon tooltip in admin style v3 2023-09-11 15:44:08 +02:00
Jean-Baptiste Bellet
75751f07b8 Move question-mark-icon into admin_style_v3 context 2023-09-11 15:31:30 +02:00
Jean-Baptiste Bellet
99ea4a63e0 No need to have a button: not conflicting with button styles 2023-09-11 15:29:09 +02:00
jibees
f05ed020f3 Merge pull request #11522 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.5.2
chore(deps): bump @floating-ui/dom from 1.5.1 to 1.5.2
2023-09-11 15:03:16 +02:00
Gaetan Craig-Riou
e44a0092ea Fix edge case when trying to deactivate the only availabe voucher
Plus spec
2023-09-11 12:00:48 +02:00
Gaetan Craig-Riou
48956b9bd1 As per review comment, simplify voucher view a little 2023-09-11 11:59:34 +02:00
dependabot[bot]
fe83be1853 chore(deps-dev): bump rubocop from 1.56.2 to 1.56.3
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.56.2 to 1.56.3.
- [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.56.2...v1.56.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 09:18:20 +00:00
dependabot[bot]
5b0b03dc5d chore(deps): bump @floating-ui/dom from 1.5.1 to 1.5.2
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.5.1 to 1.5.2.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.5.2/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-09-11 09:17:54 +00:00
Maikel
f885e80413 Merge pull request #11520 from openfoodfoundation/dependabot/bundler/rails-7.0.8
chore(deps): bump rails from 7.0.7.2 to 7.0.8
2023-09-11 15:48:37 +10:00
Maikel Linke
99529ff599 Put new rubocop violations on todo list 2023-09-11 15:44:15 +10:00
Maikel Linke
df3fc83c8e Remove version from DFC API URL in specs
We were aiming to use stable URLs to identify resources but the URL
helpers were still using dfc-v1.7 because that was the last and
overriding path of the mounted DFC Provider engine.
2023-09-11 15:00:08 +10:00
Maikel Linke
7654d37fc3 DRY, shorten swagger file names 2023-09-11 14:57:39 +10:00
Maikel Linke
fe2eecb69e DRY swagger-ui config with relative path 2023-09-11 14:57:38 +10:00
Maikel Linke
fc7c8757d9 Move DFC patches into our DFC engine
It seems to belong there and it's avoiding some loading issues with
Spring.
2023-09-11 14:57:38 +10:00
Maikel Linke
73193fbfd0 Explicitely load our DFC Connector patches
It makes sure we can extend functionality without conflicts.
2023-09-11 14:57:38 +10:00
Maikel Linke
191c4a79db Load spec helpers before Rails is loaded
Using Spring was hiding an loading error. When you start Rspec, Rails
and its engines are not loaded yet. So our way to load the spec helper
via `Rails.root` did not work when you ran specs on their own without
loading Rails with Spring first.
2023-09-11 14:57:38 +10:00
Maikel Linke
6316974146 Group DFC API operations by endpoint
Previously they were all in one long list called "default".
2023-09-11 14:57:38 +10:00
dependabot[bot]
ce7c9f0895 chore(deps): bump rails from 7.0.7.2 to 7.0.8
Bumps [rails](https://github.com/rails/rails) from 7.0.7.2 to 7.0.8.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v7.0.7.2...v7.0.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 04:05:35 +00:00
dependabot[bot]
29f476e559 chore(deps-dev): bump rubocop-rails from 2.20.2 to 2.21.0
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.20.2 to 2.21.0.
- [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.20.2...v2.21.0)

---
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-09-11 04:01:42 +00:00
Maikel
ecc04b05e3 Merge pull request #11512 from openfoodfoundation/dependabot/bundler/stripe-9.2.0
chore(deps): bump stripe from 9.1.0 to 9.2.0
2023-09-11 14:00:15 +10:00
Neal Chambers
e69e5eb0ec Update .rubocop_todo.yml 2023-09-09 09:02:14 +09:00
Neal Chambers
416d6e538a Fix Style/HashSyntax 2023-09-09 09:00:38 +09:00
Matt-Yorkley
839e580878 Fix error when importing entries with a tax category 2023-09-08 19:24:50 +01:00
Gaetan Craig-Riou
8face3d182 Merge pull request #11488 from macanudo527/fix_helperinstancevariable_2
Fix Rails/HelperInstanceVariable 2
2023-09-08 19:51:39 +10:00
dependabot[bot]
eb4517cf0b chore(deps): bump stripe from 9.1.0 to 9.2.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 9.1.0 to 9.2.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/v9.1.0...v9.2.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-09-08 09:15:23 +00:00
David Cook
99da60921f Fix Update button sizing
This was broken when upgrading [Foundation](https://github.com/openfoodfoundation/openfoodnetwork/pull/11349). For some reason the button.expand class now sets larger font size and padding, which overrides the button.small class. It's probably a bug but we'll have to work around it.
2023-09-08 10:20:26 +10:00
Maikel
1991970185 Merge pull request #11377 from mkllnk/dfc-update-request
[DFC API] Import known units when creating new products
2023-09-08 09:05:26 +10:00
Filipe
b64c1c2675 Merge pull request #11349 from dacook/foundation-sites-5.5.3
chore(deps): bump foundation-sites from 5.5.2 to 5.5.3
2023-09-07 18:33:43 +01:00
Filipe
ccabf5936d Merge pull request #11505 from drummer83/master
[Super admin] Highlight 'Configuration' tab on 'Terms of Service' page
2023-09-07 18:00:18 +01:00
Konrad
ea622cd2d7 Merge pull request #11487 from pedrocarmona/feature/invitation-email-locale
Send translated email when creating users via super admin interface
2023-09-07 16:41:59 +02:00
Gaetan Craig-Riou
f225cd78df Handle unique voucher code exception
Rails validation doesn't handle unique validation for soft deleted
object. So we rescue the exception raise by the database and display
a nice error message. We don't want an enterprise to be able to reuse
a code in case the voucher get reactivated.
2023-09-07 15:13:47 +02:00
Gaetan Craig-Riou
63cd8ccf28 Test scenario where a voucher is deactivated before end of checkout
A customer should be able to complete the checkout even if the voucher
has been deactivated after being added to the order.
2023-09-07 14:00:26 +02:00
Gaetan Craig-Riou
b955e0b25d Use depedend: nil on adjustment association
We want to keep the voucher adjustment associated with the Voucher
event when the voucher as been soft deleted, as we use this
functionality as activate/deactivate feature
2023-09-07 13:58:07 +02:00
David Cook
ab5e16effb chore(deps): bump foundation-sites from 5.5.2 to 5.5.3
Better 7 years late than never...

This resolves CWE-79: https://security.snyk.io/vuln/npm:foundation-sites:20150619
2023-09-07 11:45:37 +10:00
drummer83
a7ddf99ee4 Fix typo 2023-09-06 23:20:12 +02:00
drummer83
13d5b954e6 Add 'Terms of Service' to the tabs 2023-09-06 23:18:00 +02:00
Konrad
3b9ebf4e07 Merge pull request #11396 from abdellani/fix-if-tos-is-not-set
fix If ToS file is not set, customer needs to accept Terms on each checkout
2023-09-06 16:56:21 +02:00
Neal Chambers
dbb758b73a Update .rubocop_todo.yml 2023-09-06 22:36:51 +09:00
Neal Chambers
2da9ffd3cb Delete Unused Helper Functions 2023-09-06 22:36:51 +09:00
Neal Chambers
b1e40ed605 Fix Rails/HelperInstanceVariable 2023-09-06 22:36:46 +09:00
jibees
d8f4f58c77 Merge pull request #11499 from openfoodfoundation/dependabot/bundler/web-console-4.2.1
chore(deps-dev): bump web-console from 4.2.0 to 4.2.1
2023-09-06 08:52:58 +02:00
dependabot[bot]
954e080cbf chore(deps-dev): bump web-console from 4.2.0 to 4.2.1
Bumps [web-console](https://github.com/rails/web-console) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/rails/web-console/releases)
- [Changelog](https://github.com/rails/web-console/blob/main/CHANGELOG.markdown)
- [Commits](https://github.com/rails/web-console/compare/v4.2.0...v4.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-06 01:44:08 +00:00
David Cook
aaa3bebb93 Merge pull request #11495 from openfoodfoundation/dependabot/bundler/valid_email2-5.0.0
chore(deps): bump valid_email2 from 4.0.6 to 5.0.0
2023-09-06 11:39:26 +10:00
Gaetan Craig-Riou
d1b5dcab88 Add ability to activate deactivate a voucher
Plus controller specs
2023-09-05 15:48:59 +02:00
Gaetan Craig-Riou
79f4caaee2 Clean up spec 2023-09-05 15:48:30 +02:00
dependabot[bot]
3405865c0f chore(deps): bump valid_email2 from 4.0.6 to 5.0.0
Bumps [valid_email2](https://github.com/micke/valid_email2) from 4.0.6 to 5.0.0.
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v4.0.6...v5.0.0)

---
updated-dependencies:
- dependency-name: valid_email2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-05 09:48:34 +00:00
David Cook
a096c56658 Merge pull request #11484 from openfoodfoundation/mkllnk-patch-1
Add release note category "API changes"
2023-09-05 13:29:55 +10:00
Maikel Linke
997c8a49ca Combine system specs for efficiency 2023-09-05 10:51:38 +10:00
Pedro Carmona
51050036d4 Use instance default locale as the default locale for a new user 2023-09-05 01:00:35 +01:00
Pedro Carmona
c4830e3baa Send localized email when creating users via admin interface
Based on the current user locale
2023-09-05 01:00:35 +01:00
David Cook
0874c7ddb8 Merge pull request #11309 from filipefurtad0/legal_invoices_spec_comparator
[Invoices] Adds unit level test coverage order model attributes
2023-09-05 09:45:00 +10:00
Maikel
b1a88ab7a9 Merge pull request #11490 from mkllnk/sample-data-validation
Skip online validation of sample emails
2023-09-05 09:28:16 +10:00
Konrad
c50a3b4f86 Merge pull request #11489 from mkllnk/order_cycle_schedule
Require associations on join model
2023-09-04 21:37:30 +02:00
Konrad
fd6f2338e5 Merge pull request #11450 from mkllnk/feature-toggle-enterprise
Activate vouchers feature per user or enterprise
2023-09-04 21:30:41 +02:00
filipefurtad0
82ca115931 Removes unnecessary && operator
reloads instead of saving order again
2023-09-04 19:35:28 +01:00
filipefurtad0
4e54279b05 Rearranges relevant and non-relevant test cases 2023-09-04 19:32:06 +01:00
Konrad
406577ed2a Merge pull request #11140 from jibees/11129-add-trix-editor-to-product-description-editor
Admin, add trix editor to product description editor (both new and edit)
2023-09-04 20:22:14 +02:00
Gaetan Craig-Riou
08c131680d Merge pull request #11471 from mkllnk/variant-supplier
[DFC API] Replace service class with simple AR association
2023-09-04 23:59:37 +10:00
Jean-Baptiste Bellet
b6b64e9439 Add trix editor to new product form 2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
1d5d1c5405 Include trix-styles mixin in where content from trix is displayed 2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
34dab4003d Create a mixin that include list of styles for trix editor + content
Will be used elsewhere (in shopfront in particular)
2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
c402093081 Special case for unordered list in trix editor: should be overwritten 2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
ca6d12e8ed Actually, used in the shopfront context, links are orange 2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
3225c52898 Actually, this should not be sanitize before going through trix editor 2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
a8a35318f5 Add horizontal rule to trix editor 2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
4c27e79519 Sanitize content when display it on shop
Use the TrixSanitizer | TrixScrubber
2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
f9bc00e5cd We used to use <p> to seperate block between them. now use <div>
trix doesn't allow the use of `<p>` as block separator since it can not contain `<figure>`: use `<div>` and _emulate_ as `<p>` with margin bottom
2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
b6e047086a Update trixEditor rendering <a /> element: should be green 2023-09-04 15:46:54 +02:00
Jean-Baptiste Bellet
e200eccc42 Replace angular editor by trix editor 2023-09-04 15:46:54 +02:00
Gaetan Craig-Riou
50693dd5d2 Merge pull request #11468 from dacook/buu-editing-part2-11059
[BUU] Editing - part 2 (product and variant text fields) 🚧
2023-09-04 23:41:44 +10:00
Gaetan Craig-Riou
db52b29b8f Merge pull request #11476 from macanudo527/fix_rails_helperinstancevariable
Fix Rails/HelperInstanceVariable in injection_helper.rb
2023-09-04 22:30:14 +10:00
Maikel Linke
ae63a50719 Skip online validation of sample emails 2023-09-04 17:15:52 +10:00
Maikel Linke
38869cba2f Require associations on join model
It's actually required in the database already. This just simplifies the
code.
2023-09-04 17:07:07 +10:00
Maikel
8b9425a206 Merge pull request #11486 from openfoodfoundation/dependabot/bundler/activerecord-session_store-2.1.0
chore(deps): bump activerecord-session_store from 2.0.0 to 2.1.0
2023-09-04 13:16:11 +10:00
Maikel
2d090042a3 Merge pull request #11485 from openfoodfoundation/dependabot/bundler/stripe-9.1.0
chore(deps): bump stripe from 9.0.0 to 9.1.0
2023-09-04 12:49:26 +10:00
Maikel
4f981417a9 Merge pull request #11477 from mkllnk/flaky-enterprise-fee
Stabilise flaky enterprise fee spec
2023-09-04 12:45:46 +10:00
dependabot[bot]
8bd749301e chore(deps): bump activerecord-session_store from 2.0.0 to 2.1.0
Bumps [activerecord-session_store](https://github.com/rails/activerecord-session_store) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/rails/activerecord-session_store/releases)
- [Commits](https://github.com/rails/activerecord-session_store/compare/v2.0.0...v2.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-01 09:28:13 +00:00
dependabot[bot]
34fa41dac2 chore(deps): bump stripe from 9.0.0 to 9.1.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 9.0.0 to 9.1.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/v9.0.0...v9.1.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-09-01 09:26:36 +00:00
Maikel
f27ecb6bcd Add release note category "API changes"
[skip ci]
2023-09-01 14:14:47 +10:00
Maikel
bcfc15f102 Enable copy of translation update commands
The added `code` tag makes Github add the copy button.
2023-09-01 13:53:20 +10:00
Maikel Linke
ee3fe08378 Update all locales with the latest Transifex translations 2023-09-01 13:51:29 +10:00
David Cook
441b9febc8 Merge pull request #11454 from macanudo527/fix_rubocop_8
Fix Rubocop Style Errors
2023-09-01 13:22:38 +10:00
David Cook
32c0b5a3e2 Remove unnecessary details
As far as I can tell we didn't need to specify these for the tests.
2023-09-01 12:04:27 +10:00
Neal Chambers
4feb8f922e Fix Rails/HelperInstanceVariable in injection_helper.rb 2023-09-01 11:03:26 +09:00
David Cook
381ce1c2b9 Simplify order definition
There only needs to be one order at a time, and it can be created on-demand. We can simply override it in the specs that need to.
2023-09-01 12:00:29 +10:00
Maikel Linke
c439aaf32f Spec trying to ready a shipment twice 2023-09-01 08:55:56 +09:00
Neal Chambers
b0bb97a22f Fix ready to execute only if it isn't ready
Co-authored-by: Maikel <maikel@email.org.au>
2023-09-01 08:55:56 +09:00
Neal Chambers
819fa611e8 Fix Rails/Blank 2023-09-01 08:55:56 +09:00
Neal Chambers
8ae5b61252 Manually Fix Style/GuardClause 2023-09-01 08:55:56 +09:00
Neal Chambers
70e765bff6 Safely autocorrect Style/GuardClause
Inspecting 1488 files
......................C....C.C..........................C.........C.........................C............................................C..............................................................................................................C.C........................................CC..............................C...........C...........................................................................................................................................................................................................C........................................................................................................C.......................................................C.............C...........................................................................................C..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C...C....................................................................................................................C.............

Offenses:

app/controllers/admin/enterprises_controller.rb:50:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless params[:stimulus]
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:50:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless params[:stimulus]) instead of wrapping the code inside a conditional expression.
      if params[:stimulus]
      ^^
app/controllers/admin/enterprises_controller.rb:51:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        @enterprise.is_primary_producer = params[:is_primary_producer]
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:52:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        @enterprise.sells = params[:enterprise_sells]
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:53:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        render cable_ready: cable_car.morph("#side_menu", partial("admin/shared/side_menu")) ...
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:55:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/enterprises_controller.rb:56:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/enterprises_controller.rb:266:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless user_id.positive? && @enterprise.user_ids.include?(user_id)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:266:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless user_id.positive? && @enterprise.user_ids.include?(user_id)) instead of wrapping the code inside a conditional expression.
      if user_id.positive? && @enterprise.user_ids.include?(user_id)
      ^^
app/controllers/admin/enterprises_controller.rb:267:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        @enterprise.update_contact(user_id)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:268:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/enterprises_controller.rb:270:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/enterprises_controller.rb:272:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless attrs[:calculator_type].present? && attrs[:calculator_attributes].present?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:272:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless attrs[:calculator_type].present? && attrs[:calculator_attributes].present?) instead of wrapping the code inside a conditional expression.
      if attrs[:calculator_type].present? && attrs[:calculator_attributes].present?
      ^^
app/controllers/admin/enterprises_controller.rb:273:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        rule.update(calculator_type: attrs[:calculator_type])
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:274:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        attrs[:calculator_attributes].merge!( id: rule.calculator.id )
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:275:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/enterprises_controller.rb:278:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/enterprises_controller.rb:279:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return if spree_current_user.admin?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:279:7: C: [Corrected] Style/GuardClause: Use a guard clause (return if spree_current_user.admin?) instead of wrapping the code inside a conditional expression.
      unless spree_current_user.admin?
      ^^^^^^
app/controllers/admin/enterprises_controller.rb:280:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        params[:sets_enterprise_set][:collection_attributes].each do |_i, enterprise_params| ...
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:285:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/enterprises_controller.rb:289:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/enterprises_controller.rb:289:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return if spree_current_user.admin? || spree_current_user == @enterprise.owner
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:289:7: C: [Corrected] Style/GuardClause: Use a guard clause (return if spree_current_user.admin? || spree_current_user == @enterprise.owner) instead of wrapping the code inside a conditional expression.
      unless spree_current_user.admin? || spree_current_user == @enterprise.owner
      ^^^^^^
app/controllers/admin/enterprises_controller.rb:290:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        enterprise_params.delete :sells
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:291:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/enterprises_controller.rb:296:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/enterprises_controller.rb:299:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return if spree_current_user.admin?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:299:7: C: [Corrected] Style/GuardClause: Use a guard clause (return if spree_current_user.admin?) instead of wrapping the code inside a conditional expression.
      unless spree_current_user.admin?
      ^^^^^^
app/controllers/admin/enterprises_controller.rb:300:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        has_hub = spree_current_user.owned_enterprises.is_hub.any?
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:301:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        new_enterprise_is_producer = Enterprise.new(enterprise_params).is_primary_producer
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:302:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        enterprise_params[:sells] = has_hub && !new_enterprise_is_producer ? 'any' : 'none'
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:303:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/enterprises_controller.rb:307:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return if ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:307:7: C: [Corrected] Style/GuardClause: Use a guard clause (return if ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?) instead of wrapping the code inside a conditional expression.
      unless ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?
      ^^^^^^
app/controllers/admin/enterprises_controller.rb:308:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        enterprise_params.delete :owner_id
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:309:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/enterprises_controller.rb:309:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/enterprises_controller.rb:313:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return if spree_current_user.admin?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:313:7: C: [Corrected] Style/GuardClause: Use a guard clause (return if spree_current_user.admin?) instead of wrapping the code inside a conditional expression.
      unless spree_current_user.admin?
      ^^^^^^
app/controllers/admin/enterprises_controller.rb:314:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        bulk_params[:collection_attributes].each do |_i, enterprise_params| ...
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:316:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/enterprises_controller.rb:317:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/enterprises_controller.rb:321:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return if ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:321:7: C: [Corrected] Style/GuardClause: Use a guard clause (return if ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?) instead of wrapping the code inside a conditional expression.
      unless ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?
      ^^^^^^
app/controllers/admin/enterprises_controller.rb:322:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        enterprise_params.delete :user_ids
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/enterprises_controller.rb:323:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/enterprises_controller.rb:325:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/enterprises_controller.rb:332:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/order_cycles_controller.rb:185:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless json_request?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/order_cycles_controller.rb:185:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless json_request?) instead of wrapping the code inside a conditional expression.
      if json_request?
      ^^
app/controllers/admin/order_cycles_controller.rb:188:9: C: [Corrected] Layout/CommentIndentation: Incorrect indentation detected (column 8 instead of 6).
        #   to limit returned ocs to recent or undated
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/order_cycles_controller.rb:188:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        orders_close_at_gt = raw_params[:q]&.delete(:orders_close_at_gt) || 31.days.ago
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/order_cycles_controller.rb:189:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        raw_params[:q] = { ...
        ^^^^^^^^^^^^^^^^^^
app/controllers/admin/order_cycles_controller.rb:194:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        @collection = collection
        ^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/order_cycles_controller.rb:195:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/order_cycles_controller.rb:196:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/order_cycles_controller.rb:248:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return if Enterprise.managed_by(spree_current_user).include?(@order_cycle.coordinator)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/order_cycles_controller.rb:248:7: C: [Corrected] Style/GuardClause: Use a guard clause (return if Enterprise.managed_by(spree_current_user).include?(@order_cycle.coordinator)) instead of wrapping the code inside a conditional expression.
      unless Enterprise.managed_by(spree_current_user).include?(@order_cycle.coordinator)
      ^^^^^^
app/controllers/admin/order_cycles_controller.rb:249:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        order_cycle_params.delete_if do |k, _v| ...
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/order_cycles_controller.rb:252:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/order_cycles_controller.rb:254:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/product_import_controller.rb:59:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return if params[:file] || (params[:filepath] && File.exist?(params[:filepath]))
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/product_import_controller.rb:59:7: C: [Corrected] Style/GuardClause: Use a guard clause (return if params[:file] || (params[:filepath] && File.exist?(params[:filepath]))) instead of wrapping the code inside a conditional expression.
      unless params[:file] || (params[:filepath] && File.exist?(params[:filepath]))
      ^^^^^^
app/controllers/admin/product_import_controller.rb:60:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        redirect_to '/admin/product_import', notice: I18n.t(:product_import_file_not_found_notice)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/product_import_controller.rb:61:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/product_import_controller.rb:62:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/admin/product_import_controller.rb:93:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return if importer.item_count
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/product_import_controller.rb:93:7: C: [Corrected] Style/GuardClause: Use a guard clause (return if importer.item_count) instead of wrapping the code inside a conditional expression.
      unless importer.item_count
      ^^^^^^
app/controllers/admin/product_import_controller.rb:94:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        redirect_to '/admin/product_import', ...
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/product_import_controller.rb:96:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        true
        ^^^^
app/controllers/admin/product_import_controller.rb:97:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/admin/product_import_controller.rb:99:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/api/v0/shipments_controller.rb:48:11: C: Style/GuardClause: Use a guard clause (unless @shipment.can_ready?; render(json: { error: I18n.t(:cannot_ready, scope: "spree.api.shipment") },
                   status: :unprocessable_entity) && return; end) instead of wrapping the code inside a conditional expression.
          if @shipment.can_ready?
          ^^
app/controllers/application_controller.rb:118:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return if (@distributor = current_distributor)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/application_controller.rb:118:5: C: [Corrected] Style/GuardClause: Use a guard clause (return if (@distributor = current_distributor)) instead of wrapping the code inside a conditional expression.
    unless (@distributor = current_distributor)
    ^^^^^^
app/controllers/application_controller.rb:119:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      redirect_to main_app.root_path
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/application_controller.rb:120:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      false
      ^^^^^
app/controllers/application_controller.rb:121:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/application_controller.rb:122:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/application_controller.rb:125:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return if current_order_cycle
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/application_controller.rb:125:5: C: [Corrected] Style/GuardClause: Use a guard clause (return if current_order_cycle) instead of wrapping the code inside a conditional expression.
    unless current_order_cycle
    ^^^^^^
app/controllers/application_controller.rb:126:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      redirect_to main_app.shop_path
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/application_controller.rb:127:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/application_controller.rb:129:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/application_controller.rb:131:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return unless current_distributor_closed?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/application_controller.rb:131:5: C: [Corrected] Style/GuardClause: Use a guard clause (return unless current_distributor_closed?) instead of wrapping the code inside a conditional expression.
    if current_distributor_closed?
    ^^
app/controllers/application_controller.rb:132:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      current_order.empty!
      ^^^^^^^^^^^^^^^^^^^^
app/controllers/application_controller.rb:133:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      current_order.set_distribution! nil, nil
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/application_controller.rb:134:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      flash[:info] = I18n.t('order_cycles_closed_for_hub')
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/application_controller.rb:135:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      redirect_to main_app.root_url
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/application_controller.rb:136:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/application_controller.rb:139:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/home_controller.rb:7:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return unless ContentConfig.home_show_stats
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/home_controller.rb:7:5: C: [Corrected] Style/GuardClause: Use a guard clause (return unless ContentConfig.home_show_stats) instead of wrapping the code inside a conditional expression.
    if ContentConfig.home_show_stats
    ^^
app/controllers/home_controller.rb:8:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      @num_distributors = cached_count('distributors', Enterprise.is_distributor.activated.visible)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/home_controller.rb:9:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      @num_producers = cached_count('producers', Enterprise.is_primary_producer.activated.visible)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/home_controller.rb:10:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      @num_orders = cached_count('orders', Spree::Order.complete)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/home_controller.rb:11:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      @num_users = cached_count( ...
      ^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/home_controller.rb:14:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/home_controller.rb:15:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/spree/orders_controller.rb:136:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless params[:order] && params[:order][:line_items_attributes]
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/spree/orders_controller.rb:136:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless params[:order] && params[:order][:line_items_attributes]) instead of wrapping the code inside a conditional expression.
      if params[:order] && params[:order][:line_items_attributes]
      ^^
app/controllers/spree/orders_controller.rb:137:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        params[:order][:line_items_attributes] = ...
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/spree/orders_controller.rb:139:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/spree/orders_controller.rb:140:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/controllers/spree/orders_controller.rb:183:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless items.empty?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/spree/orders_controller.rb:183:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless items.empty?) instead of wrapping the code inside a conditional expression.
      if items.empty?
      ^^
app/controllers/spree/orders_controller.rb:184:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        flash[:error] = I18n.t(:orders_cannot_remove_the_final_item)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/spree/orders_controller.rb:185:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        redirect_to main_app.order_path(order_to_update)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/spree/orders_controller.rb:186:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/controllers/spree/orders_controller.rb:188:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/models/enterprise.rb:518:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return if owner.can_own_more_enterprises?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:518:5: C: [Corrected] Style/GuardClause: Use a guard clause (return if owner.can_own_more_enterprises?) instead of wrapping the code inside a conditional expression.
    unless owner.can_own_more_enterprises?
    ^^^^^^
app/models/enterprise.rb:519:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      errors.add(:owner, I18n.t(:enterprise_owner_error, email: owner.email, ...
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:521:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/models/enterprise.rb:522:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/models/enterprise.rb:546:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return unless is_hub
    ^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:546:5: C: [Corrected] Style/GuardClause: Use a guard clause (return unless is_hub) instead of wrapping the code inside a conditional expression.
    if is_hub
    ^^
app/models/enterprise.rb:547:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      enterprises.is_primary_producer.each do |enterprise| ...
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:553:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/models/enterprise.rb:555:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/models/enterprise.rb:557:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return if preferred_shopfront_taxon_order =~ /\A((\d+,)*\d+)?\z/
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:557:5: C: [Corrected] Style/GuardClause: Use a guard clause (return if preferred_shopfront_taxon_order =~ /\A((\d+,)*\d+)?\z/) instead of wrapping the code inside a conditional expression.
    unless preferred_shopfront_taxon_order =~ /\A((\d+,)*\d+)?\z/
    ^^^^^^
app/models/enterprise.rb:558:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      errors.add(:shopfront_category_ordering, "must contain a list of taxons.")
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:559:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/models/enterprise.rb:562:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/models/enterprise.rb:563:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return if preferred_shopfront_producer_order =~ /\A((\d+,)*\d+)?\z/
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:563:5: C: [Corrected] Style/GuardClause: Use a guard clause (return if preferred_shopfront_producer_order =~ /\A((\d+,)*\d+)?\z/) instead of wrapping the code inside a conditional expression.
    unless preferred_shopfront_producer_order =~ /\A((\d+,)*\d+)?\z/
    ^^^^^^
app/models/enterprise.rb:564:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      errors.add(:shopfront_category_ordering, "must contain a list of producers.")
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:565:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/models/enterprise.rb:569:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/models/enterprise_group.rb:80:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return unless permalink.blank? || permalink_changed?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_group.rb:80:5: C: [Corrected] Style/GuardClause: Use a guard clause (return unless permalink.blank? || permalink_changed?) instead of wrapping the code inside a conditional expression.
    if permalink.blank? || permalink_changed?
    ^^
app/models/enterprise_group.rb:81:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      requested = permalink.presence || permalink_was.presence || name.presence || 'group'
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_group.rb:82:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      self.permalink = create_unique_permalink(requested.parameterize)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_group.rb:83:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/models/enterprise_group.rb:84:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/models/producer_property.rb:16:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return unless name.present?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/producer_property.rb:16:5: C: [Corrected] Style/GuardClause: Use a guard clause (return unless name.present?) instead of wrapping the code inside a conditional expression.
    if name.present?
    ^^
app/models/producer_property.rb:16:12: C: [Correctable] Rails/Blank: Use if name.blank? instead of unless name.present?.
    return unless name.present?
           ^^^^^^^^^^^^^^^^^^^^
app/models/producer_property.rb:17:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      self.property = Spree::Property.find_by(name: name) || ...
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/producer_property.rb:19:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/models/producer_property.rb:20:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/models/product_import/entry_processor.rb:42:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless total_saved_count.zero?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/product_import/entry_processor.rb:42:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless total_saved_count.zero?) instead of wrapping the code inside a conditional expression.
      if total_saved_count.zero?
      ^^
app/models/product_import/entry_processor.rb:43:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        @importer.errors.add(:importer, ...
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/product_import/entry_processor.rb:45:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/models/product_import/entry_processor.rb:46:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/models/spree/order.rb:506:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless !completed? && shipments.any?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/order.rb:506:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless !completed? && shipments.any?) instead of wrapping the code inside a conditional expression.
      if !completed? && shipments.any?
      ^^
app/models/spree/order.rb:507:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        shipments.destroy_all
        ^^^^^^^^^^^^^^^^^^^^^
app/models/spree/order.rb:508:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        restart_checkout_flow
        ^^^^^^^^^^^^^^^^^^^^^
app/models/spree/order.rb:509:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/models/spree/order.rb:510:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/models/spree/preferences/preferable_class_methods.rb:67:9: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
        return unless method_defined? preference_description_getter_method(name)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/preferences/preferable_class_methods.rb:67:9: C: [Corrected] Style/GuardClause: Use a guard clause (return unless method_defined? preference_description_getter_method(name)) instead of wrapping the code inside a conditional expression.
        if method_defined? preference_description_getter_method(name)
        ^^
app/models/spree/preferences/preferable_class_methods.rb:68:11: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
          remove_method preference_description_getter_method(name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/preferences/preferable_class_methods.rb:69:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/models/spree/preferences/preferable_class_methods.rb:70:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
app/services/order_syncer.rb:90:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return unless !pickup_to_delivery || order.shipment.blank?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/order_syncer.rb:90:5: C: [Corrected] Style/GuardClause: Use a guard clause (return unless !pickup_to_delivery || order.shipment.blank?) instead of wrapping the code inside a conditional expression.
    if !pickup_to_delivery || order.shipment.blank?
    ^^
app/services/order_syncer.rb:91:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      order.updater.shipping_address_from_distributor
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/order_syncer.rb:92:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
app/services/order_syncer.rb:93:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
engines/order_management/app/services/order_management/order/updater.rb:166:9: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
        return unless payment.completed? || order.completed?
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/order_management/app/services/order_management/order/updater.rb:166:9: C: [Corrected] Style/GuardClause: Use a guard clause (return unless payment.completed? || order.completed?) instead of wrapping the code inside a conditional expression.
        if payment.completed? || order.completed?
        ^^
engines/order_management/app/services/order_management/order/updater.rb:167:11: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
          persist_totals
          ^^^^^^^^^^^^^^
engines/order_management/app/services/order_management/order/updater.rb:168:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
engines/order_management/app/services/order_management/order/updater.rb:169:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
lib/discourse/single_sign_on.rb:33:9: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
        raise "Bad signature for payload #{diags}" unless parsed["sso"] =~ %r{[^a-zA-Z0-9=\r\n/+]}m
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/discourse/single_sign_on.rb:33:9: C: [Corrected] Style/GuardClause: Use a guard clause (raise "Bad signature for payload #{diags}" unless parsed["sso"] =~ %r{[^a-zA-Z0-9=\r\n/+]}m) instead of wrapping the code inside a conditional expression.
        if parsed["sso"] =~ %r{[^a-zA-Z0-9=\r\n/+]}m
        ^^
lib/discourse/single_sign_on.rb:34:11: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
          raise "The SSO field should be Base64 encoded, using only A-Z, a-z, 0-9, +, /, " \ ...
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/discourse/single_sign_on.rb:37:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
lib/discourse/single_sign_on.rb:38:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
lib/discourse/single_sign_on.rb:39:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
lib/discourse/single_sign_on.rb:39:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
lib/discourse/single_sign_on.rb:40:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
lib/open_food_network/order_cycle_form_applicator.rb:76:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless manages_coordinator?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/open_food_network/order_cycle_form_applicator.rb:76:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless manages_coordinator?) instead of wrapping the code inside a conditional expression.
      if manages_coordinator?
      ^^
lib/open_food_network/order_cycle_form_applicator.rb:77:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        exchange.save!
        ^^^^^^^^^^^^^^
lib/open_food_network/order_cycle_form_applicator.rb:78:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        ExchangeVariantBulkUpdater.new(exchange).update!(variant_ids) unless variant_ids.nil?
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/open_food_network/order_cycle_form_applicator.rb:80:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        @touched_exchanges << exchange
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/open_food_network/order_cycle_form_applicator.rb:81:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
lib/open_food_network/order_cycle_form_applicator.rb:82:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
lib/open_food_network/order_cycle_form_applicator.rb:107:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless manages_coordinator?
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/open_food_network/order_cycle_form_applicator.rb:107:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless manages_coordinator?) instead of wrapping the code inside a conditional expression.
      if manages_coordinator?
      ^^
lib/open_food_network/order_cycle_form_applicator.rb:108:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        untouched_exchanges.each(&:destroy)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/open_food_network/order_cycle_form_applicator.rb:109:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
lib/open_food_network/order_cycle_form_applicator.rb:111:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
lib/spree/core/controller_helpers/respond_with.rb:42:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      raise ActionController::UnknownFormat unless format
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/spree/core/controller_helpers/respond_with.rb:42:7: C: [Corrected] Style/GuardClause: Use a guard clause (raise ActionController::UnknownFormat unless format) instead of wrapping the code inside a conditional expression.
      if format
      ^^
lib/spree/core/controller_helpers/respond_with.rb:43:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        _process_format(format)
        ^^^^^^^^^^^^^^^^^^^^^^^
lib/spree/core/controller_helpers/respond_with.rb:44:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        collector
        ^^^^^^^^^
lib/spree/core/controller_helpers/respond_with.rb:45:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
lib/spree/core/controller_helpers/respond_with.rb:46:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
lib/spree/core/controller_helpers/respond_with.rb:46:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
lib/spree/core/controller_helpers/respond_with.rb:47:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
lib/spree/core/controller_helpers/respond_with.rb:47:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
lib/spree/core/controller_helpers/respond_with.rb:48:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
lib/spree/core/controller_helpers/respond_with.rb:48:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
spec/support/request/distribution_helper.rb:10:7: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
      return unless order_cycle && page.has_select?('order_order_cycle_id')
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/request/distribution_helper.rb:10:7: C: [Corrected] Style/GuardClause: Use a guard clause (return unless order_cycle && page.has_select?('order_order_cycle_id')) instead of wrapping the code inside a conditional expression.
      if order_cycle && page.has_select?('order_order_cycle_id')
      ^^
spec/support/request/distribution_helper.rb:11:9: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
        select_by_value order_cycle.id, from: 'order_order_cycle_id'
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/request/distribution_helper.rb:12:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/support/request/distribution_helper.rb:13:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
spec/support/request/shop_workflow.rb:127:5: C: [Corrected] Layout/EmptyLineAfterGuardClause: Add empty line after guard clause.
    return unless oc.exchanges.from_enterprise(supplier).incoming.empty?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/request/shop_workflow.rb:127:5: C: [Corrected] Style/GuardClause: Use a guard clause (return unless oc.exchanges.from_enterprise(supplier).incoming.empty?) instead of wrapping the code inside a conditional expression.
    if oc.exchanges.from_enterprise(supplier).incoming.empty?
    ^^
spec/support/request/shop_workflow.rb:128:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      create(:exchange, order_cycle: oc, incoming: true, ...
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/request/shop_workflow.rb:130:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/support/request/shop_workflow.rb:131:1: C: [Corrected] Layout/EmptyLinesAroundMethodBody: Extra empty line detected at method body end.
spec/system/support/precompile_assets.rb:18:5: C: [Corrected] Style/GuardClause: Use a guard clause (next if Webpacker.dev_server.running?) instead of wrapping the code inside a conditional expression.
    if Webpacker.dev_server.running?
    ^^
spec/system/support/precompile_assets.rb:19:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/support/precompile_assets.rb:20:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
spec/system/support/precompile_assets.rb:20:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
spec/system/support/precompile_assets.rb:21:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      $stdout.puts "\n Precompiling assets.\n"
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/support/precompile_assets.rb:23:7: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
      Webpacker.compile
      ^^^^^^^^^^^^^^^^^
spec/system/support/precompile_assets.rb:24:1: C: [Corrected] Layout/EmptyLinesAroundBlockBody: Extra empty line detected at block body end.
spec/system/support/precompile_assets.rb:24:1: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.

1488 files inspected, 220 offenses detected, 218 offenses corrected, 1 more offense can be corrected with `rubocop -A`
2023-09-01 08:55:56 +09:00
Neal Chambers
afdddc9237 Safely autocorrect Style/FileRead
Inspecting 1488 files
.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C............................................................................................................................................................................

Offenses:

lib/tasks/karma.rake:33:15: C: [Corrected] Style/FileRead: Use File.read.
    unit_js = File.open('config/ng-test.conf.js', 'r').read
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/services/upload_sanitizer_spec.rb:13:41: C: [Corrected] Style/FileRead: Use File.read.
    let(:service) { UploadSanitizer.new(File.open(upload).read) }
                                        ^^^^^^^^^^^^^^^^^^^^^^

1488 files inspected, 2 offenses detected, 2 offenses corrected
2023-09-01 08:55:56 +09:00
Neal Chambers
4cce85378c Safely autocorrect Rails/WhereNot
Inspecting 1488 files
...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

lib/reporting/reports/users_and_enterprises/base.rb:27:14: C: [Corrected] Rails/WhereNot: Use where.not(enterprises: { id: nil }) instead of manually constructing negated SQL in where.
            .where("enterprises.id IS NOT NULL")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/users_and_enterprises/base.rb:39:14: C: [Corrected] Rails/WhereNot: Use where.not(enterprise_id: nil) instead of manually constructing negated SQL in where.
            .where("enterprise_id IS NOT NULL")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/users_and_enterprises/base.rb:40:14: C: [Corrected] Rails/WhereNot: Use where.not(user_id: nil) instead of manually constructing negated SQL in where.
            .where("user_id IS NOT NULL")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1488 files inspected, 3 offenses detected, 3 offenses corrected
2023-09-01 08:55:56 +09:00
Neal Chambers
f71ee22d2f Regenerate Rubocop's TODO file 2023-09-01 08:55:56 +09:00
filipefurtad0
e0031225d1 Covers order special instruction 2023-08-31 14:25:18 +01:00
filipefurtad0
3374c38d5c Covers order state - cancelled, resumed - changes 2023-08-31 14:25:18 +01:00
filipefurtad0
301c070fc3 Covers order currency change 2023-08-31 14:25:18 +01:00
filipefurtad0
2e72fe1bce Covers order number change 2023-08-31 14:25:18 +01:00
filipefurtad0
38eb84b1d8 Covers order total change 2023-08-31 14:25:18 +01:00
filipefurtad0
b0c362f75e Corrects description, if the order didn't change 2023-08-31 14:25:18 +01:00
filipefurtad0
79a38345e9 Passes order as argument
to invoice comparator
2023-08-31 14:25:18 +01:00
filipefurtad0
a223675e74 Covers shipping method change 2023-08-31 14:25:18 +01:00
filipefurtad0
0540548893 Adds coverage for included/added taxes
at the order-object level
2023-08-31 14:25:18 +01:00
filipefurtad0
8d382f3de4 Corrects description
for order-level, non-relevant attribute change
2023-08-31 14:25:18 +01:00
Maikel
67d5ffdc54 Merge pull request #11475 from filipefurtad0/uncomment_i18n_inflections_spec
Uncomments pluralize test
2023-08-31 17:20:35 +10:00
Maikel Linke
57b4f615e8 Fix DFC context in spec example 2023-08-31 17:06:20 +10:00
David Cook
63383e8ea1 Enable editing of variant price
Formatting of the price was copied from the existing bulk product screen.
2023-08-31 16:41:41 +10:00
David Cook
26d6dedd4d Fix FrozenString error
An error was apparent in specs when trying to assign a string as the price. It's not a problem when submitting the form in the browser, I don't know why.

But in any case, it shouldn't be trying to modify a variable passed as a parameter.
2023-08-31 16:41:41 +10:00
David Cook
b955cd8fee Enable editing of variant SKU
I'm not sure what the point of the product SKU was to be honest.. it will probably be removed in the product refactor.
2023-08-31 16:41:41 +10:00
David Cook
f69fc67d5e Refactor: using Rails form magic
Now we don't have to specify the field names on products, yay!

I tried desparately to get it working for the nested variant forms too, but sadly the form builder refuses to acknowledge the relationship. The form builder simply doesn't support a collection of objects in this way.

We could try creating a fake model similar to ProductSet that accepts_nested_attributes_for :products. But it woudl be better to create a custom form builder to do it.

Or, just manually specify field names for now!
2023-08-31 16:41:41 +10:00
David Cook
7f05a4913c Remove explicit index numbers from form names
I have to admit I don't fully understand why, but it seems to work, even though the rails guide says "only one level of arrayness is allowed (https://guides.rubyonrails.org/form_helpers.html#combining-them). Maybe it's ok here because it's not an array of arrays.

(I think this format is what the reflex spec was already testing).
2023-08-31 16:41:41 +10:00
David Cook
e17d16cb52 Enable editing of variant display_name
Best viewed with whitespace ignored.
Using Rails' nested attributes feature, which ModelSet already supports.
2023-08-31 16:41:41 +10:00
David Cook
5356e42efc Enable editing of product SKU 2023-08-31 16:41:41 +10:00
David Cook
9fe9d8557c Remove line-clamp for inputs
It doesn't work and we don't currently have a better solution for that.
2023-08-31 16:41:41 +10:00
David Cook
aff33b79ae Simplify form code
The form elements shouldn't need an `id` attribute.
2023-08-31 16:41:36 +10:00
Maikel Linke
514b8fa6ab Import DFC unit labels like bunch and jar 2023-08-31 16:27:55 +10:00
Maikel Linke
427d806b13 Remove ambiguous unit "cup"
The DFC doesn't actually specify which cup it means. I don't expect
anyone providing "cup" as unit to measure their produce and expect it to
calculate as a regular volume. It can just be seen as items.
2023-08-31 16:11:50 +10:00
Maikel Linke
5bfbf43a38 Spec bulk enterprise fee edit without row ids
It makes the spec robust to different sorting of the rows. It also hides
the knowledge of the full element ids.
2023-08-31 16:03:46 +10:00
Maikel Linke
bb336ff9c4 Avoid unnecessary requests in system specs
This spec was nested within another block that executed a form submit
which we don't actually need here. So I flattened the structure and
repeated the few missing lines of code. This speeds up the execution.

The fee type is important in the setup because it determines the order
of the fees on the page and we access the rows by their row index.

This commit is best viewed without whitespace changes.
2023-08-31 13:44:33 +10:00
Maikel Linke
1abbfc01d2 Stabilise enterprise fee spec
The problem here was that the second fee was created in a `let!` block
that came after a `before` block which visited the page. In some cases
it worked but sometimes the fee wasn't created yet when the page was
loaded. Form changes in the second row were not affecting the second fee
as intended.
2023-08-31 10:02:06 +10:00
Maikel Linke
50f7177a38 Use existing service to label weight&volume units
We still have the scale stored in two places but in our current system
that's part of a unit's "id".

If the DFC adds that value to its standard then we can use it for lookup
and don't need to repeat it.

* https://github.com/datafoodconsortium/taxonomies/issues/7
2023-08-31 09:48:24 +10:00
filipefurtad0
6bc8a1a850 Uncomments pluralize test 2023-08-30 22:57:46 +01:00
Maikel Linke
0da1b27795 Simplify code with association #supplied_variants
Rails makes it so easy.
2023-08-30 15:55:10 +10:00
Maikel Linke
01e1dc137e Simplify access of an enterprise's variants 2023-08-30 15:47:03 +10:00
Maikel
dea96fd3ab Merge pull request #11469 from openfoodfoundation/dependabot/bundler/rubocop-1.56.2
chore(deps-dev): bump rubocop from 1.56.1 to 1.56.2
2023-08-30 12:14:36 +10:00
Konrad
077bb41412 Merge pull request #11348 from abdellani/fix-non-empty-orders-in-cart-state-not-appearing
fix Non-empty orders in the cart state do not appear in orders page
2023-08-29 15:33:49 +02:00
David Cook
ff3802fe69 Merge pull request #11457 from filipefurtad0/renames_knapsack_nodes
Renames Knapsack nodes
2023-08-29 21:04:43 +10:00
dependabot[bot]
091544583f chore(deps-dev): bump rubocop from 1.56.1 to 1.56.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.56.1 to 1.56.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.56.1...v1.56.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-08-29 09:38:31 +00:00
David Cook
78585afc9c Fix format 2023-08-29 16:00:26 +10:00
filipefurtad0
0d1f3f82fd Balances build time
Two nodes were removed from models and three engines; these were and added to system_consumer and system_admin, respectively
2023-08-28 10:28:14 +01:00
filipefurtad0
3a6ca38432 Renames Knapsack nodes 2023-08-28 10:28:14 +01:00
Filipe
67fdc56270 Merge pull request #11427 from mkllnk/release-template
Generate all release note categories with labels
2023-08-28 10:04:57 +01:00
Maikel Linke
8114430248 Refactor DFC unit mapping for easier reading
I also updated the comments.
2023-08-28 17:13:04 +10:00
Maikel Linke
f96ab7c432 Import DFC bundle units like dozen or 6 pack 2023-08-28 17:13:04 +10:00
Maikel Linke
f096783098 Import all metric DFC units 2023-08-28 17:13:04 +10:00
Maikel Linke
43346e2671 Import imperial DFC units 2023-08-28 17:13:04 +10:00
Maikel Linke
9ddf536fa3 Import DFC milligram 2023-08-28 17:13:04 +10:00
Maikel Linke
5a8d95c443 Import DFC kilogram 2023-08-28 17:13:04 +10:00
Maikel Linke
996f3bb235 Spec current quantity unit conversion 2023-08-28 17:13:04 +10:00
Maikel Linke
96b79bce2d Encapsulate DFC-OFN data model bridge
Re-uses existing code and takes knowledge out of the controller.
2023-08-28 17:13:04 +10:00
Maikel Linke
9ab75e086a Use DFC Connector for SuppliedProduct update 2023-08-28 17:13:04 +10:00
Maikel Linke
faa112c3ae Spec DFC SuppliedProduct#update with new Prototype
I observed new data from the DFC Prototype. It now uses the DFC 1.8
ontology with the hasQuantity object.

It now also uses PUT requests for updates because PATCH is not as well
supported. Rails doesn't care though.

I couldn't observe a request for the CatalogItem yet because the
Prototype failed to send it.
2023-08-28 17:13:04 +10:00
Maikel
cf8d5a584e Merge pull request #11455 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.1.1
chore(deps-dev): bump jasmine-core from 5.1.0 to 5.1.1
2023-08-28 11:51:36 +10:00
Maikel
7e44c75456 Merge pull request #11453 from dacook/buu-labels
Buu labels
2023-08-28 11:50:35 +10:00
Maikel
86842847ad Merge pull request #11452 from dacook/flaky-spec-products_v3-11328
[Flaky] spec/system/admin/products_v3/products_spec.rb
2023-08-28 11:45:12 +10:00
Maikel
dd79761186 Merge pull request #11448 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.134.0
chore(deps): bump aws-sdk-s3 from 1.133.0 to 1.134.0
2023-08-28 11:43:31 +10:00
Maikel
0b869f2abe Merge pull request #11451 from mkllnk/flaky-voucher-specs
De-flake voucher specs by checking success
2023-08-28 11:16:43 +10:00
dependabot[bot]
00ea2e5b07 chore(deps-dev): bump jasmine-core from 5.1.0 to 5.1.1
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.1.0 to 5.1.1.
- [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.1.0...v5.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-25 09:09:08 +00:00
David Cook
7d6ba2d31f Clean up unneeded override 2023-08-25 17:23:05 +10:00
David Cook
451513ad04 Markup labels as.. labels
This means you can click on the label name to select the field, and accessibility software can read the label name.  I was motivated to do this so that we could update the spec to use label text rather than IDs. But it seems we can't do that with tom-select.

I've updated the styles for all form labels (in admin_style_v3 toggle) to match the design.
2023-08-25 17:19:46 +10:00
Maikel Linke
200729f198 Show incomplete orders when sorting by name
An inner join with the billing address was hiding some orders when
sorting by billing address name. Telling Rails that those fields are
referenced triggers an outer left join including orders without billing
address.

But when the Bulk Order Management page sorts by `bill_address_lastname`
then Ransack does most of the magic, except that we need to override the
select in combination with distinct results.
2023-08-25 16:15:11 +10:00
David Cook
4d79cdb0ea Ensure records are created before visiting the page
'let!' is executed in the same way as 'before', so it matters which order they are defined in.

For contexts with a single example, I just put it straight into the example.
2023-08-25 16:09:52 +10:00
Maikel Linke
d8da808901 Resolve pending spec, reported issue is fixed 2023-08-25 15:48:31 +10:00
David Cook
ccafdc4494 Remove redundant code
bill_address is already joined in this query.
The class variable isn't needed outside this scope.

Arguably I think the condition on the select isn't needed; it wouldn't hurt to always select spree_addresses. But I'll try to avoid changing too much..
2023-08-25 15:48:31 +10:00
Mohamed ABDELLANI
04312b05c6 add orders without billing address to SearchOrders#fetch_orders' results 2023-08-25 15:48:31 +10:00
David Cook
4f9651f5c9 Wait for pagination message to update
Hopefully this fixes openfoodfoundation/openfoodnetwork#11328
2023-08-25 14:52:50 +10:00
Maikel Linke
1a95476634 Combine some voucher system specs to save time
It also simplifies the spec code a bit not having a shared example.
2023-08-25 13:56:41 +10:00
Maikel Linke
233171a9ce De-flake voucher specs by checking success
Vouchers are applied via a reflex and we need to check for success
before trying to navigate further. The new helper does this in a
consistent way.
2023-08-25 13:56:41 +10:00
Maikel Linke
4be38ba8da Remove redundant system spec
System specs are expensive. And this spec just looked for the visibility
of certain elements while other tests actually use them and therefore
verify their function much more thoroughly.
2023-08-25 13:56:41 +10:00
Maikel
7414b5cbc9 Merge pull request #11397 from rioug/11331-add-required-field-dcf-enterprise
Add required enterprise fields to DFC API
2023-08-25 11:44:49 +10:00
Maikel
56f4eca79e Update engines/dfc_provider/app/controllers/dfc_provider/addresses_controller.rb
Fix type in comment

Co-authored-by: David Cook <david@redcliffs.net>
2023-08-25 11:31:00 +10:00
Maikel
a7e2d23e3b Merge pull request #11449 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.6.0
chore(deps-dev): bump knapsack_pro from 5.4.1 to 5.6.0
2023-08-25 10:50:32 +10:00
Maikel Linke
467d72dc31 Test voucher UI with most common feature toggle
People want to test vouchers mainly on a per-enterprise basis.
Replicating this in the system spec makes sure that we are testing the
conditionals in views.
2023-08-25 10:19:17 +10:00
Maikel Linke
e12cf2aa4c Simplify feature check for multiple actors at once
I think that it's a valid case to check a feature toggle against the
user and an enterprise. You may want to check with only one user first,
then activate it for a whole enterprise and lastly activate the feature
globally.
2023-08-25 10:19:17 +10:00
Maikel Linke
0cc450e815 Allow Vouchers feature per enterprise
I also kept the per-user check to be backwards-compatible. Some
instances have that enabled already. And for early testing, you may want
to test with only one user first before all customer see it.
2023-08-25 10:19:17 +10:00
Maikel Linke
02edd829b9 Allow to admin vouchers if you know the URL
The generic FeatureToggleConstraint in routing knows about the current
user but not about the enterprise to edit. We could create a new custom
constraint for routing but it's much easier to handle permissions in the
controller. Let's keep routes simple.
2023-08-25 10:19:17 +10:00
David Cook
aea0a629ee Merge pull request #11425 from macanudo527/fix_rails_activerecordoverride
Fix Rails/ActiveRecordOverride
2023-08-25 09:22:05 +10:00
dependabot[bot]
5b25fa80a2 chore(deps-dev): bump knapsack_pro from 5.4.1 to 5.6.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.4.1 to 5.6.0.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.4.1...v5.6.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-08-24 23:01:05 +00:00
dependabot[bot]
61109259e4 chore(deps): bump aws-sdk-s3 from 1.133.0 to 1.134.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.133.0 to 1.134.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-08-24 23:00:22 +00:00
Maikel
54e8df7c88 Merge pull request #11443 from openfoodfoundation/dependabot/bundler/ffaker-2.22.0
chore(deps): bump ffaker from 2.21.0 to 2.22.0
2023-08-25 08:56:34 +10:00
Maikel
0441453469 Merge pull request #11439 from mkllnk/unflake-customer-report-spec
Report customers in deterministic order
2023-08-25 08:54:21 +10:00
Neal Chambers
2bfa51cbb1 Fix Rails/ActiveRecordOverride 2023-08-25 08:51:27 +10:00
filipefurtad0
a39c465692 Update all locales with the latest Transifex translations 2023-08-24 21:36:53 +01:00
Filipe
cc3b7c68ae Merge pull request #11208 from dacook/buu-editing-11059
[BUU] Change name of my products 🚧
2023-08-24 21:19:52 +01:00
Filipe
10bc2a3ee6 Merge pull request #11430 from abdellani/fix-updating-invoices-data
fix order invoice generator must update the latest invoice
2023-08-24 20:58:37 +01:00
dependabot[bot]
221eea227f chore(deps): bump ffaker from 2.21.0 to 2.22.0
Bumps [ffaker](https://github.com/ffaker/ffaker) from 2.21.0 to 2.22.0.
- [Release notes](https://github.com/ffaker/ffaker/releases)
- [Changelog](https://github.com/ffaker/ffaker/blob/main/Changelog.md)
- [Commits](https://github.com/ffaker/ffaker/compare/v2.21.0...v2.22.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-24 09:58:42 +00:00
Filipe
020276a248 Merge pull request #11418 from macanudo527/fix_rubocop_7
Fix Rails and Style Autocorrect Rubocop Errors
2023-08-24 10:29:45 +01:00
Filipe
c5e1444613 Merge pull request #11206 from macanudo527/fix_class_length
Add Form Object to Schedules Controller
2023-08-24 09:28:50 +01:00
Konrad
c90b244a96 Merge pull request #11415 from abdellani/snail-when-setting-unit-value-to-0
fix Snail when setting "0" in the unit value field
2023-08-24 10:04:26 +02:00
Konrad
6ec022b731 Merge pull request #11391 from rioug/11362-fix-error-creating-percentage-voucher
[Vouchers] fix error when creating a percentage voucher
2023-08-24 09:09:30 +02:00
Maikel Linke
1c3574ce79 Include address in DFC Enterprise endpoint 2023-08-24 16:51:36 +10:00
Maikel Linke
20b09b5352 Add DFC Address API endpoint 2023-08-24 16:20:13 +10:00
Gaetan Craig-Riou
a8d15154a2 Link address to enterprise
+ spec
2023-08-24 15:55:15 +10:00
Gaetan Craig-Riou
86bb77ab9f Add AddressBuilder
It will let us include address in the various DFC API endpoint
2023-08-24 15:55:15 +10:00
Gaetan Craig-Riou
f5fb760128 Update Enterprise request spec
Check all the attributes supported by the DFC connector
2023-08-24 15:55:14 +10:00
Maikel Linke
244b9abd21 Spec with given data included in examples
And use in-memory data where possible to speed up specs.
2023-08-24 15:55:14 +10:00
Maikel Linke
5d05c3c0f1 DRY DFC enterprise spec 2023-08-24 15:55:14 +10:00
Gaetan Craig-Riou
18565f4a85 Add all the enterpise attributes supported by DFC connector 2023-08-24 15:55:14 +10:00
David Cook
3c617a51e0 Merge pull request #11433 from openfoodfoundation/dependabot/bundler/mime-types-3.5.1
chore(deps): bump mime-types from 3.5.0 to 3.5.1
2023-08-24 15:11:09 +10:00
David Cook
a96b712eb2 Merge pull request #11432 from openfoodfoundation/dependabot/bundler/activerecord-import-1.5.0
chore(deps): bump activerecord-import from 1.4.1 to 1.5.0
2023-08-24 15:10:02 +10:00
David Cook
4a877fe019 Merge pull request #11426 from mkllnk/style-has-many
Allow has_and_belongs_to_many to reduce code
2023-08-24 15:03:17 +10:00
dependabot[bot]
f0dce7765c chore(deps): bump activerecord-import from 1.4.1 to 1.5.0
Bumps [activerecord-import](https://github.com/zdennis/activerecord-import) from 1.4.1 to 1.5.0.
- [Changelog](https://github.com/zdennis/activerecord-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zdennis/activerecord-import/compare/v1.4.1...v1.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-24 02:54:17 +00:00
Maikel
79211bd856 Merge pull request #11438 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.133.0
chore(deps): bump aws-sdk-s3 from 1.132.1 to 1.133.0
2023-08-24 12:52:39 +10:00
Maikel
fba55fe9fd Merge pull request #11437 from openfoodfoundation/dependabot/bundler/rails-7.0.7.2
chore(deps): bump rails from 7.0.7 to 7.0.7.2
2023-08-24 12:51:08 +10:00
Maikel
d6572d9fde Merge pull request #11434 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.4.1
chore(deps-dev): bump knapsack_pro from 5.3.5 to 5.4.1
2023-08-24 12:46:33 +10:00
Neal Chambers
a363f88f2c Put Subscriptions back into Schedules Controller 2023-08-24 09:18:35 +09:00
Neal Chambers
7eab4d64ba Update .rubocop_todo.yml 2023-08-24 09:17:55 +09:00
Neal Chambers
134cbb4f04 Add Form Object to Fix Metrics/ClassLength 2023-08-24 09:17:53 +09:00
David Cook
a8d37d0899 Apply suggestions from code review
Rails is clever enough to not query the database without ids

Co-authored-by: Maikel <maikel@email.org.au>
2023-08-24 08:48:27 +10:00
Filipe
1021fd94b5 Merge pull request #11419 from openfoodfoundation/dependabot/bundler/stripe-9.0.0
chore(deps): bump stripe from 8.6.0 to 9.0.0
2023-08-23 17:35:29 +01:00
Mohamed ABDELLANI
928494af23 use Invoice#latest to fetch the most recent invoice 2023-08-23 11:57:30 +01:00
Mohamed ABDELLANI
f9e6f8bfa5 fix existing tests 2023-08-23 11:50:33 +01:00
dependabot[bot]
cd9bf6a62e chore(deps): bump stripe from 8.6.0 to 9.0.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 8.6.0 to 9.0.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.6.0...v9.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-23 11:42:43 +01:00
Maikel Linke
4c3d619260 Report customers in deterministic order
The result could be random before which led to a flaky spec. I could
have adjusted the spec but I thought that it may be better UX as well to
be deterministic, especially when exporting into spreadsheets.
2023-08-23 17:03:30 +10:00
Maikel Linke
226d270cc1 Remove now obsolete comment 2023-08-23 14:30:46 +10:00
Maikel Linke
58fc9fc8bb Update symbol for technical changes 2023-08-23 14:29:52 +10:00
Maikel
7e55421ab8 Convey feature toggle release category more clearly
Co-authored-by: David Cook <david@redcliffs.net>
2023-08-23 12:38:49 +10:00
dependabot[bot]
ea46d15ad4 chore(deps): bump aws-sdk-s3 from 1.132.1 to 1.133.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.132.1 to 1.133.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-08-23 02:28:35 +00:00
dependabot[bot]
752d77110d chore(deps): bump rails from 7.0.7 to 7.0.7.2
Bumps [rails](https://github.com/rails/rails) from 7.0.7 to 7.0.7.2.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v7.0.7...v7.0.7.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-23 02:28:07 +00:00
Maikel
57c44ffc72 Merge pull request #11429 from openfoodfoundation/dependabot/bundler/newrelic_rpm-9.4.2
chore(deps): bump newrelic_rpm from 9.4.1 to 9.4.2
2023-08-23 12:24:53 +10:00
Maikel
9bfb59d45f Merge pull request #11428 from openfoodfoundation/dependabot/bundler/rubocop-1.56.1
chore(deps-dev): bump rubocop from 1.56.0 to 1.56.1
2023-08-23 12:23:43 +10:00
Mohamed ABDELLANI
c689e2da8b remove ToS link on mails if ToS file is not set 2023-08-22 11:33:04 +01:00
Mohamed ABDELLANI
93c2cfd6c0 hide ToS from footer if the file is not set 2023-08-22 11:27:20 +01:00
Konrad
3aca33b8a6 Merge pull request #11230 from macanudo527/fix_products_controller
Add Query Object to Product Model to Fix Metrics/ClassLength
2023-08-22 11:38:09 +02:00
Mohamed ABDELLANI
b082475c35 update product's unit_value validation 2023-08-22 10:28:27 +01:00
Mohamed ABDELLANI
423163c4e9 hide agree to the ToS when not ToS file is set 2023-08-22 10:22:26 +01:00
Mohamed ABDELLANI
d47b47627c tos_accepted? returns true if the ToS file is not set 2023-08-22 10:22:26 +01:00
dependabot[bot]
067ddb7bcd chore(deps-dev): bump knapsack_pro from 5.3.5 to 5.4.1
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.3.5 to 5.4.1.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.3.5...v5.4.1)

---
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-08-22 09:04:55 +00:00
dependabot[bot]
238249e8ec chore(deps): bump mime-types from 3.5.0 to 3.5.1
Bumps [mime-types](https://github.com/mime-types/ruby-mime-types) from 3.5.0 to 3.5.1.
- [Changelog](https://github.com/mime-types/ruby-mime-types/blob/main/History.md)
- [Commits](https://github.com/mime-types/ruby-mime-types/compare/v3.5.0...v3.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-22 09:03:13 +00:00
Mohamed ABDELLANI
a896d414c2 optimize system test 2023-08-22 09:16:47 +01:00
Mohamed ABDELLANI
3ab288f435 fix product's unit value validation 2023-08-22 09:16:47 +01:00
Mohamed ABDELLANI
d4dbc0adb5 fix unit_value initialization on the product duplicator 2023-08-22 09:16:47 +01:00
Mohamed ABDELLANI
a9e4159839 validate unit_value > 0 on product model 2023-08-22 09:16:47 +01:00
David Cook
2edf504d65 Ignore long classes for now
As much as I hate to add to this list, this is still a work in progress so it's not worth refactoring at this point.
2023-08-22 11:51:05 +10:00
David Cook
b0e77df226 Style form actions area 2023-08-22 11:51:05 +10:00
David Cook
fccde964bf Enable 'medium' style for reset buttons 2023-08-22 11:46:56 +10:00
David Cook
7bf79441c8 Update link colours to match new design 2023-08-22 11:40:58 +10:00
David Cook
3cc5d7ba1d Copy form styles to v3 2023-08-22 11:40:58 +10:00
David Cook
37d1113e4c Align row headers with input contents
Inputs add extra padding, so we add the same padding to the header. Using an opt-in class, because I think we won't want this on all columns.
2023-08-22 11:40:58 +10:00
David Cook
8440c44a6f Remove unused style 2023-08-22 11:40:58 +10:00
David Cook
2b09ec7c21 [fixup] Left line for row hover 2023-08-22 11:40:58 +10:00
David Cook
be24247df2 [wip] Left line for row hover
But it's not perfect. Can we use a pseudo element instead?
2023-08-22 11:40:58 +10:00
David Cook
565ea23175 Hide borders from inputs until hover 2023-08-22 11:40:58 +10:00
David Cook
ef63c520c0 Aggregate errors 2023-08-22 11:40:58 +10:00
David Cook
a70f392654 Show error messages
It's kinda hard to test reflexes..
2023-08-22 11:40:58 +10:00
David Cook
a0dba001bc Attempt to save all records in bulk update
Before, it would abort after the first invalid record, and it doesn't tell you about the others. This way you find out about all at once.

This affects the existing Bulk Edit Products screen, and can result in longer error messages than before. But I would argue that's a good thing.

I think this is technically optional for BUU at this point, but a helpful improvement.
2023-08-22 11:40:58 +10:00
David Cook
71c36585bc Retain order when saving.
Perhaps this should be tested in the system spec too ("I can rename a product and still see it after saving"). But I'd like to find the compromise to avoid bulking up system specs too much. I think it's covered well enough by the reflex spec?
2023-08-22 11:40:58 +10:00
David Cook
6ffe1ec1ad Retain the order of products in the collection 2023-08-22 11:40:58 +10:00
David Cook
ae3cd6f7e0 Add bulk_update product form for product name
(For now at least,) we use one big standard Rails form, and ModelSet to update each record.
Submitting with Reflex allows us to manage the loading state along with the rest of the page (although I would rather use the built in HTTP POST standard).

Aria-label makes it a bit easier for testing (and accessibility software of course!). Technically it should have been aria-labelledby="id_of_column_header" but that would have resulted in more HTML and processing, which seemed silly.

Best viewed with whitespace ignored.
2023-08-22 11:40:58 +10:00
David Cook
a98242e5b4 Capybara: enable_aria_label 2023-08-22 11:40:58 +10:00
David Cook
e37a499125 Merge pull request #11383 from jibees/11274-buu-as-a-single-producer-i-should-not-be-able-to-see-the-producer-dropdown
🚧 Products V3: Do not display "Producers" selector if only one is possible
2023-08-22 11:33:12 +10:00
Maikel Linke
31d87ca087 Show producer filter only when multiple options
Also introducing a view spec here because the code was incorrectly
refactored before. The execution of the view spec takes only 100ms
which is much faster than a system spec.
2023-08-22 10:00:06 +10:00
Jean-Baptiste Bellet
6582a875c6 Do not display "Producers" selector if only one is possible
Fix #11274

Co-Authored-By: David Cook <david@redcliffs.net>
2023-08-22 10:00:06 +10:00
David Cook
71b297b5b5 Merge pull request #11417 from jibees/11410-go-back-to-top-after-selecting-a-page-in-pagination
🚧 BUU: Once products are loaded, scroll higher, ie. just above filters
2023-08-22 09:20:31 +10:00
Konrad
391d06130d Merge pull request #11395 from duleorlovic/google-map-region
Add Google map region parameter
2023-08-21 18:14:56 +02:00
Mohamed ABDELLANI
aaf1d22ccc fix order invoice generator must update the latest invoice 2023-08-21 16:10:05 +01:00
dependabot[bot]
397f365fe6 chore(deps): bump newrelic_rpm from 9.4.1 to 9.4.2
Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.4.1 to 9.4.2.
- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)
- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.4.1...9.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-21 09:28:35 +00:00
dependabot[bot]
c97b5b3693 chore(deps-dev): bump rubocop from 1.56.0 to 1.56.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.56.0 to 1.56.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.56.0...v1.56.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-21 09:27:48 +00:00
Maikel
af73720157 Merge pull request #11423 from openfoodfoundation/dependabot/bundler/puma-6.3.1
chore(deps): bump puma from 6.3.0 to 6.3.1
2023-08-21 14:04:20 +10:00
Maikel Linke
2917e2f849 Generate all release note categories with labels
If reviewers add the right labels to pull requests then the release
note categories can be generated automatically.
2023-08-21 10:39:52 +10:00
Maikel Linke
ff18270898 Allow has_and_belongs_to_many to reduce code
The Rails/HasAndBelongsToMany rule wants model classes for all
many-to-many relationship tables in the database. But our team thinks
that it's useful to declare has_and_belongs_to_many relationships which
don't require an additional model.
2023-08-21 10:12:33 +10:00
Neal Chambers
0b6b750706 Clarify Product Scope Query Spec 2023-08-20 13:01:34 +09:00
Neal Chambers
fc47c57603 Add helper method to products controller and Use query object 2023-08-20 13:00:39 +09:00
Neal Chambers
9e82ab8a0f Remove query scopes from product model 2023-08-20 13:00:39 +09:00
Neal Chambers
c125c42a6d Add Tests for Product Scope Query 2023-08-20 13:00:39 +09:00
Neal Chambers
a867f7c543 Add Product Scope Query 2023-08-20 13:00:36 +09:00
Maikel Linke
eb204c9e5b Style HashSyntax and reduce line length 2023-08-20 12:33:43 +09:00
Maikel Linke
e0acc25808 Fix subscription spec and add more coverage
One spec was only passing due to a bug. The setup wasn't complete and
despite the variant being unavailable in the order cycle it was reported
as being available. The order cycle has now been set up correctly.

Another spec was added to cover an edge case lead to a bug before this
pull request. When all subscription items where unavailable, all were
marked as available.
2023-08-20 12:33:43 +09:00
Neal Chambers
bc559b966c Safely autocorrect Style/FetchEnvVar
Inspecting 1483 files
..............................................................................................................................................................C.............................................................................................................................................................................CC.............................................................................................................................................................................C.................................................................................................................................................................................................................................................................................................................................................................C.................................................................................C..............................................................................................................................................................................................C.....................................................................................................................................................................................................................................C......................................................................................................................

Offenses:

app/helpers/discourse_helper.rb:9:5: C: [Corrected] Style/FetchEnvVar: Use ENV.fetch('DISCOURSE_URL') or ENV.fetch('DISCOURSE_URL', nil) instead of ENV['DISCOURSE_URL'].
    ENV['DISCOURSE_URL']
    ^^^^^^^^^^^^^^^^^^^^
app/models/spree/preferences/configuration.rb:35:10: C: [Corrected] Style/FetchEnvVar: Use ENV.fetch('RAILS_CACHE_ID') or ENV.fetch('RAILS_CACHE_ID', nil) instead of ENV['RAILS_CACHE_ID'].
        [ENV['RAILS_CACHE_ID'], self.class.name, name].flatten.join('::').underscore
         ^^^^^^^^^^^^^^^^^^^^^
app/models/spree/preferences/preferable.rb:84:10: C: [Corrected] Style/FetchEnvVar: Use ENV.fetch("RAILS_CACHE_ID") or ENV.fetch("RAILS_CACHE_ID", nil) instead of ENV["RAILS_CACHE_ID"].
        [ENV["RAILS_CACHE_ID"], self.class.name, name, id].join('::').underscore
         ^^^^^^^^^^^^^^^^^^^^^
app/services/default_country.rb:13:40: C: [Corrected] Style/FetchEnvVar: Use ENV.fetch("DEFAULT_COUNTRY_CODE") or ENV.fetch("DEFAULT_COUNTRY_CODE", nil) instead of ENV["DEFAULT_COUNTRY_CODE"].
    Spree::Country.cached_find_by(iso: ENV["DEFAULT_COUNTRY_CODE"]) || Spree::Country.first
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/default_country.rb:13:73: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
    Spree::Country.cached_find_by(iso: ENV.fetch("DEFAULT_COUNTRY_CODE",
                                                                        ^
app/services/default_country.rb:13:101: C: [Corrected] Layout/LineLength: Line is too long. [102/100]
    Spree::Country.cached_find_by(iso: ENV.fetch("DEFAULT_COUNTRY_CODE", nil)) || Spree::Country.first
                                                                                                    ^^
app/services/default_country.rb:14:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
nil)) || Spree::Country.first
^^^
spec/base_spec_helper.rb:51:49: C: [Corrected] Style/FetchEnvVar: Use ENV.fetch("SITE_URL") or ENV.fetch("SITE_URL", nil) instead of ENV["SITE_URL"].
ActionMailer::Base.default_url_options[:host] = ENV["SITE_URL"]
                                                ^^^^^^^^^^^^^^^
spec/controllers/spree/credit_cards_controller_spec.rb:8:20: C: [Corrected] Style/FetchEnvVar: Use ENV.fetch('STRIPE_SECRET_TEST_API_KEY') or ENV.fetch('STRIPE_SECRET_TEST_API_KEY', nil) instead of ENV['STRIPE_SECRET_TEST_API_KEY'].
    let(:secret) { ENV['STRIPE_SECRET_TEST_API_KEY'] }
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/order_balance_spec.rb:48:70: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
      expect(order_balance.display_amount).to eq(Spree::Money.new(20,
                                                                     ^
spec/models/order_balance_spec.rb:48:81: C: [Corrected] Style/FetchEnvVar: Use ENV.fetch('currency') or ENV.fetch('currency', nil) instead of ENV['currency'].
      expect(order_balance.display_amount).to eq(Spree::Money.new(20, currency: ENV['currency']))
                                                                                ^^^^^^^^^^^^^^^
spec/models/order_balance_spec.rb:48:101: C: [Corrected] Layout/LineLength: Line is too long. [108/100]
      expect(order_balance.display_amount).to eq(Spree::Money.new(20, currency: ENV.fetch('currency', nil)))
                                                                                                    ^^^^^^^^
spec/models/order_balance_spec.rb:49:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
currency: ENV.fetch('currency', nil)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/order_balance_spec.rb:49:98: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected.
                                                                  currency: ENV.fetch('currency',
                                                                                                 ^
spec/models/order_balance_spec.rb:49:101: C: [Corrected] Layout/LineLength: Line is too long. [104/100]
                                                                  currency: ENV.fetch('currency', nil)))
                                                                                                    ^^^^
spec/models/order_balance_spec.rb:50:1: C: [Corrected] Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.
nil)))
^^^
spec/support/vcr_setup.rb:10:50: C: [Corrected] Style/FetchEnvVar: Use ENV.fetch('STRIPE_SECRET_TEST_API_KEY') or ENV.fetch('STRIPE_SECRET_TEST_API_KEY', nil) instead of ENV['STRIPE_SECRET_TEST_API_KEY'].
  config.filter_sensitive_data('<HIDDEN_KEY>') { ENV['STRIPE_SECRET_TEST_API_KEY'] }
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/vcr_setup.rb:11:55: C: [Corrected] Style/FetchEnvVar: Use ENV.fetch('STRIPE_CUSTOMER') or ENV.fetch('STRIPE_CUSTOMER', nil) instead of ENV['STRIPE_CUSTOMER'].
  config.filter_sensitive_data('<HIDDEN_CUSTOMER>') { ENV['STRIPE_CUSTOMER'] }
                                                      ^^^^^^^^^^^^^^^^^^^^^^

1483 files inspected, 18 offenses detected, 18 offenses corrected
2023-08-20 12:33:43 +09:00
Neal Chambers
fd795d8513 Safely autocorrect Style/BlockComments
Inspecting 1483 files
....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C......................................................

Offenses:

spec/system/admin/tag_rules_spec.rb:209:1: C: [Corrected] Style/BlockComments: Do not use block comments.
=begin ...
^^^^^^
spec/system/admin/tag_rules_spec.rb:217:101: C: Layout/LineLength: Line is too long. [103/100]
      #       expect(default_fsm_tag_rule.preferred_matched_shipping_methods_visibility).to eq "hidden"
                                                                                                    ^^^
spec/system/admin/tag_rules_spec.rb:241:1: C: [Corrected] Layout/CommentIndentation: Incorrect indentation detected (column 0 instead of 6).
#       expect(foc_tag_rule.preferred_matched_order_cycles_visibility).to eq "hidden"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1483 files inspected, 3 offenses detected, 2 offenses corrected
2023-08-20 12:33:43 +09:00
Neal Chambers
06e217c527 Safely autocorrect Rails/WhereNot
Inspecting 1483 files
........................................................................................................................C..................................................................................................................C...........CC.C..........................................C......C..........C.........................C......................CC..........C........................................................................................................................C.......................................................................................................C........................................................C...........................................................................................................................................C......................................C.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/controllers/spree/admin/products_controller.rb:183:11: C: [Corrected] Rails/WhereNot: Use where.not(spree_variants: { import_date: nil }) instead of manually constructing negated SQL in where.
          where('spree_variants.import_date IS NOT NULL').
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/concerns/permalink_generator.rb:37:26: C: [Corrected] Rails/WhereNot: Use where.not(id: id) instead of manually constructing negated SQL in where.
      scope_with_deleted.where('id != ?', id)
                         ^^^^^^^^^^^^^^^^^^^^
app/models/concerns/permalink_generator.rb:37:40: C: [Corrected] Style/HashSyntax: Omit the hash value.
      scope_with_deleted.where.not(id: id)
                                       ^^
app/models/enterprise.rb:152:7: C: [Corrected] Rails/WhereNot: Use where.not(enterprises: { id: ready_enterprises }) instead of manually constructing negated SQL in where.
      where("enterprises.id NOT IN (?)", ready_enterprises)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:158:31: C: [Corrected] Rails/WhereNot: Use where.not(sells: 'none') instead of manually constructing negated SQL in where.
  scope :is_distributor, -> { where('sells != ?', 'none') }
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:479:17: C: [Corrected] Rails/WhereNot: Use where.not(id: id) instead of manually constructing negated SQL in where.
    dups = dups.where('id != ?', id) unless new_record?
                ^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:534:43: C: [Corrected] Rails/WhereNot: Use where.not(enterprises: { id: self }) instead of manually constructing negated SQL in where.
    enterprises = owner.owned_enterprises.where('enterprises.id != ?', self)
                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise.rb:583:7: C: [Corrected] Rails/WhereNot: Use where.not(enterprises: { id: id }) instead of manually constructing negated SQL in where.
      where('enterprises.id != ?', id).
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_fee.rb:40:24: C: [Corrected] Rails/WhereNot: Use where.not(spree_calculators: { type: PER_ORDER_CALCULATORS }) instead of manually constructing negated SQL in where.
    joins(:calculator).where('spree_calculators.type NOT IN (?)', PER_ORDER_CALCULATORS)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/enterprise_relationship.rb:78:19: C: [Corrected] Rails/WhereNot: Use where.not(name: perms) instead of manually constructing negated SQL in where.
      permissions.where('name NOT IN (?)', perms).destroy_all
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/product_import/inventory_reset_strategy.rb:27:16: C: [Corrected] Rails/WhereNot: Use where.not(id: excluded_items_ids) instead of manually constructing negated SQL in where.
      relation.where('id NOT IN (?)', excluded_items_ids)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/proxy_order.rb:19:25: C: [Corrected] Rails/WhereNot: Use where.not(proxy_orders: { canceled_at: nil }) instead of manually constructing negated SQL in where.
  scope :canceled, -> { where('proxy_orders.canceled_at IS NOT NULL') }
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/credit_card.rb:26:39: C: [Corrected] Rails/WhereNot: Use where.not(gateway_customer_profile_id: nil) instead of manually constructing negated SQL in where.
    scope :with_payment_profile, -> { where('gateway_customer_profile_id IS NOT NULL') }
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/product.rb:166:9: C: [Corrected] Rails/WhereNot: Use where.not(order_cycles: { id: nil }) instead of manually constructing negated SQL in where.
        where('order_cycles.id IS NOT NULL')
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/variant.rb:94:30: C: [Corrected] Rails/WhereNot: Use where.not(deleted_at: nil) instead of manually constructing negated SQL in where.
    scope :deleted, lambda { where('deleted_at IS NOT NULL') }
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/variant.rb:165:43: C: [Corrected] Rails/WhereNot: Use where.not(spree_prices: { amount: nil }) instead of manually constructing negated SQL in where.
                                          where('spree_prices.amount IS NOT NULL').
                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/spree/zone.rb:141:19: C: [Corrected] Rails/WhereNot: Use where.not(id: id) instead of manually constructing negated SQL in where.
      Spree::Zone.where('id != ?', id).update_all(default_tax: false) if default_tax
                  ^^^^^^^^^^^^^^^^^^^^
app/models/spree/zone.rb:141:33: C: [Corrected] Style/HashSyntax: Omit the hash value.
      Spree::Zone.where.not(id: id).update_all(default_tax: false) if default_tax
                                ^^
app/models/variant_override.rb:32:7: C: [Corrected] Rails/WhereNot: Use where.not(variant_overrides: { import_date: nil }) instead of manually constructing negated SQL in where.
      where('variant_overrides.import_date IS NOT NULL').
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/cap_quantity.rb:45:22: C: [Corrected] Rails/WhereNot: Use where.not(variant_id: available_variants_for.select(&:id)) instead of manually constructing negated SQL in where.
    order.line_items.where('variant_id NOT IN (?)', available_variants_for.select(&:id))
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/catalog/app/services/catalog/product_import/products_reset_strategy.rb:32:18: C: [Corrected] Rails/WhereNot: Use where.not(spree_variants: { id: excluded_items_ids }) instead of manually constructing negated SQL in where.
        relation.where('spree_variants.id NOT IN (?)', excluded_items_ids)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/order_management/app/services/order_management/subscriptions/proxy_order_syncer.rb:78:18: C: [Corrected] Rails/WhereNot: Use where.not(order_cycle_id: order_cycle_ids) instead of manually constructing negated SQL in where.
        orphaned.where('order_cycle_id NOT IN (?)', order_cycle_ids)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/users_and_enterprises/base.rb:27:14: C: [Corrected] Rails/WhereNot: Use where.not(enterprises: { id: nil }) instead of manually constructing negated SQL in where.
            .where("enterprises.id IS NOT NULL")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/users_and_enterprises/base.rb:39:14: C: [Corrected] Rails/WhereNot: Use where.not(enterprise_id: nil) instead of manually constructing negated SQL in where.
            .where("enterprise_id IS NOT NULL")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/users_and_enterprises/base.rb:40:14: C: [Corrected] Rails/WhereNot: Use where.not(user_id: nil) instead of manually constructing negated SQL in where.
            .where("user_id IS NOT NULL")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/tasks/data/anonymize_data.rake:50:16: C: [Corrected] Rails/WhereNot: Use where.not(user_id: nil) instead of manually constructing negated SQL in where.
      Customer.where("user_id IS NOT NULL")
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1483 files inspected, 26 offenses detected, 26 offenses corrected
2023-08-20 12:33:43 +09:00
Konrad
241239ac68 Merge pull request #11379 from dacook/respond_to-not_found
Respond to all formats for "not found" error
2023-08-18 18:47:09 +02:00
Konrad
0dc8996701 Merge pull request #11295 from Matt-Yorkley/scope-error
Remove product display_as cell
2023-08-18 18:16:16 +02:00
Konrad
df7d42a420 Merge pull request #11352 from abdellani/remove-dead-code-bulk-invoice
Remove dead code related to bulk invoice printing
2023-08-18 18:14:01 +02:00
Matt-Yorkley
2b9b79c828 Remove product display_as cell
This was attempting to reference the master variant, which is now gone. Fixes an Angular scope error.
2023-08-18 17:38:36 +02:00
Konrad
f3b09508ff Merge pull request #11347 from abdellani/fix-edit-order-button
fix cancel order button
2023-08-18 17:07:42 +02:00
Konrad
d8bc479a70 Merge pull request #11387 from jibees/10957-missing-translation-invalid-url
Admin, White Label: add translation for invalid URL in white label context
2023-08-18 15:59:39 +02:00
dependabot[bot]
fcb3a74b64 chore(deps): bump puma from 6.3.0 to 6.3.1
Bumps [puma](https://github.com/puma/puma) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.3.0...v6.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-18 09:10:32 +00:00
Jean-Baptiste Bellet
2abfa623f0 Once products start loading, scroll higher, ie. just above filters
can see the loading spinner then
2023-08-18 10:20:10 +02:00
jibees
5395bc56f8 Merge pull request #11416 from jibees/11197-buu-no-results-page-and-number-of-results-tweaks
🚧 BUU: No results page and number of results tweaks
2023-08-18 10:14:09 +02:00
Jean-Baptiste Bellet
06fccd8618 Totally hide input above its container 2023-08-18 09:46:57 +02:00
Jean-Baptiste Bellet
47115a0daf Change default label for searched products 2023-08-18 09:46:57 +02:00
Jean-Baptiste Bellet
721baa4d3f Increase button size 2023-08-18 09:46:57 +02:00
Jean-Baptiste Bellet
117c373985 Add "remove-sign" icon before text in disruptive button 2023-08-18 09:46:57 +02:00
Jean-Baptiste Bellet
d27b2084ed Do not underline text when it's a button 2023-08-18 09:46:56 +02:00
Jean-Baptiste Bellet
e4479e7935 Increase button height when no result 2023-08-18 09:46:56 +02:00
Jean-Baptiste Bellet
f5e7738c78 Introduce relaxed, regular and condensed button for specify height 2023-08-18 09:46:56 +02:00
Jean-Baptiste Bellet
5de0d79ca2 Increase distance from search container to 136px
116px + 20px (gap) = 136px
2023-08-18 09:46:56 +02:00
Jean-Baptiste Bellet
4219d0aa08 Change font size and weight 2023-08-18 09:46:56 +02:00
Maikel Linke
0acdf5833f Update all locales with the latest Transifex translations 2023-08-18 15:54:00 +10:00
David Cook
01f0de2f4e Merge pull request #11405 from macanudo527/fix_rubocop_rails_errors
Fix rubocop rails errors
2023-08-18 11:54:17 +10:00
David Cook
7a04f63d62 Merge pull request #11407 from jibees/10878-buu-pagination-tweaks
🚧 BUU: Pagination tweaks
2023-08-18 09:25:55 +10:00
jibees
e82ff80582 Merge pull request #11420 from openfoodfoundation/dependabot/bundler/newrelic_rpm-9.4.1
chore(deps): bump newrelic_rpm from 9.4.0 to 9.4.1
2023-08-17 13:46:47 +02:00
dependabot[bot]
47ca35c38e chore(deps): bump newrelic_rpm from 9.4.0 to 9.4.1
Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.4.0 to 9.4.1.
- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)
- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.4.0...9.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-17 09:28:40 +00:00
Neal Chambers
fe5288c015 Update .rubocop_todo.yml 2023-08-17 16:45:52 +09:00
Neal Chambers
3c9afcf360 Fix Rails/CompactBlank 2023-08-17 16:43:13 +09:00
Neal Chambers
871a8e6f2c Fix Rails/Blank 2023-08-17 16:42:46 +09:00
Neal Chambers
b78bbd2629 Fix Rails/ApplicationController 2023-08-17 16:42:41 +09:00
Jean-Baptiste Bellet
fa4dda9976 Finally, remove disabled rule that is unused
We only display active link
2023-08-17 09:26:10 +02:00
Jean-Baptiste Bellet
394e964b91 Specify for element that have href attr: the ones we want to hover 2023-08-17 09:26:10 +02:00
Jean-Baptiste Bellet
e7d36ed772 Let link have the cursor: pointer by default, and specify only for current 2023-08-17 09:26:10 +02:00
Jean-Baptiste Bellet
2405dfdaa3 Refine and adjust position of icon in button 2023-08-17 09:26:10 +02:00
Jean-Baptiste Bellet
1a8a4ee72b Change size of pagination
"it becomes extremely long for big catalogues"
2023-08-17 09:26:10 +02:00
Jean-Baptiste Bellet
66a106b1c9 hide pagination for single page catalogue
+ update specs then
2023-08-17 09:26:10 +02:00
Jean-Baptiste Bellet
3fb8726c6a Do not display arrows if they're disabled 2023-08-17 09:06:26 +02:00
Jean-Baptiste Bellet
b1ea77e611 Remove white background from dots 2023-08-17 09:06:26 +02:00
Jean-Baptiste Bellet
c252de87b6 Specify cursor in order to not be text 2023-08-17 09:06:26 +02:00
Jean-Baptiste Bellet
5fc4f7bdaf Design hover (like current) 2023-08-17 09:06:26 +02:00
Jean-Baptiste Bellet
9d8325c0d9 font weight to be 600 2023-08-17 09:06:26 +02:00
Jean-Baptiste Bellet
d914644c35 change not selected font color to $near-black, also for arrows 2023-08-17 09:06:26 +02:00
Jean-Baptiste Bellet
06af58e923 increase distance between arrows and numbers to be 36px 2023-08-17 09:06:26 +02:00
Jean-Baptiste Bellet
6e29dd95ef Increase distance between numbers to be 8px 2023-08-17 09:06:26 +02:00
Jean-Baptiste Bellet
a2da3c2f61 Better management of margin/gap between each button with flex display 2023-08-17 09:06:26 +02:00
Jean-Baptiste Bellet
9396e75806 Increase padding top and padding bottom 2023-08-17 09:06:26 +02:00
Maikel
5762492511 Merge pull request #11392 from dacook/release-template
Release template
2023-08-17 16:47:49 +10:00
Maikel
6377149e18 Merge pull request #11400 from jibees/buu-update/refactor-tests
🚧 BUU: refactor/improve testing
2023-08-17 16:32:00 +10:00
David Cook
a854dccf04 Simplify tag steps
Co-authored-by: Maikel <maikel@email.org.au>
2023-08-17 16:09:06 +10:00
Maikel
d0559d2a6c Merge pull request #11413 from openfoodfoundation/dependabot/bundler/newrelic_rpm-9.4.0
chore(deps): bump newrelic_rpm from 9.3.1 to 9.4.0
2023-08-17 15:36:28 +10:00
Maikel
27dcad205e Merge pull request #11337 from macanudo527/fix_rubocop_6
Fix autocorrect Rails Cops 2
2023-08-17 10:39:34 +10:00
jibees
132d2e792e Merge pull request #11406 from openfoodfoundation/dependabot/bundler/timecop-0.9.8
chore(deps-dev): bump timecop from 0.9.6 to 0.9.8
2023-08-16 17:07:56 +02:00
dependabot[bot]
21e38c424f chore(deps): bump newrelic_rpm from 9.3.1 to 9.4.0
Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.3.1 to 9.4.0.
- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)
- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.3.1...9.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-16 14:41:10 +00:00
jibees
afe05f1932 Merge pull request #11414 from openfoodfoundation/dependabot/bundler/rails-i18n-7.0.8
chore(deps): bump rails-i18n from 7.0.7 to 7.0.8
2023-08-16 16:40:05 +02:00
dependabot[bot]
33d5e8436f chore(deps): bump rails-i18n from 7.0.7 to 7.0.8
Bumps [rails-i18n](https://github.com/svenfuchs/rails-i18n) from 7.0.7 to 7.0.8.
- [Changelog](https://github.com/svenfuchs/rails-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/svenfuchs/rails-i18n/compare/v7.0.7...v7.0.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-16 09:49:57 +00:00
jibees
33fc5bd409 Merge pull request #11409 from dacook/script-update
Don't show extra red messages when gems missing
2023-08-16 09:01:20 +02:00
David Cook
9bef8b74f8 Merge pull request #11401 from jibees/some-buu-design-updates
🚧 BUU: some design updates + one small code fix
2023-08-16 11:41:33 +10:00
Maikel
fd7b00ac7f Merge pull request #11323 from mkllnk/dfc-import-context
Use known, statically cached DFC context
2023-08-16 11:35:57 +10:00
David Cook
b49de7d49e Simplify spec
What if Zucchini didn't appear at all? Better to test that the two products appear on the same page, in the correct order.
2023-08-16 11:13:54 +10:00
David Cook
412dac7556 Don't show extra red messages when gems missing
When a gem is missing, it looks like a big ugly error. But we don't need to see this, because bundle install will run next and tell us which gems its installing.

Bundle check isn't actually necessary because bundle install will handle this, but for some reason it's 300ms slower. So I chose to keep 'check' to help keep this script nice and quick.
2023-08-16 09:56:24 +10:00
David Cook
b320a1d289 Create release tag early for greater clarity
This way, it's clearer in the repo what is going to be released, and we don't need to copy/paste commit IDs.

([skip ci] because this branch only touches .md file)
2023-08-15 21:47:32 +10:00
David Cook
1cd87c170b Use new staging deployment method 2023-08-15 21:35:12 +10:00
David Cook
8b9d483227 Add more detailed notes for current process 2023-08-15 21:35:10 +10:00
Matt-Yorkley
70ba027603 Merge pull request #11221 from Matt-Yorkley/product-shipping-category
[Product Refactor] Shipping Category
2023-08-15 11:12:56 +01:00
dependabot[bot]
cd5c7e8fc7 chore(deps-dev): bump timecop from 0.9.6 to 0.9.8
Bumps [timecop](https://github.com/travisjeffery/timecop) from 0.9.6 to 0.9.8.
- [Changelog](https://github.com/travisjeffery/timecop/blob/master/History.md)
- [Commits](https://github.com/travisjeffery/timecop/compare/v0.9.6...v0.9.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-15 09:18:16 +00:00
David Cook
f4a6bec25d Code fix
Cache result.
2023-08-15 08:36:50 +02:00
Jean-Baptiste Bellet
200550588a Be as clause as possible from native <select />
Still need to wrap/ellipsis selected item...
2023-08-15 08:36:50 +02:00
Jean-Baptiste Bellet
0c11ea5868 Use tom-select to have a designed dropdown
Not sure this is the best solution, since it's not exactly the right usage of tom-select
2023-08-15 08:36:50 +02:00
Jean-Baptiste Bellet
6fe069608c Re-adjust tom-select to match admin v3 style 2023-08-15 08:36:50 +02:00
Jean-Baptiste Bellet
223d350b43 Use grid instead of flex in order to be more fixed and less flexible ;) 2023-08-15 08:36:50 +02:00
Jean-Baptiste Bellet
2814368670 Adjust inside container to content without any padding 2023-08-15 08:36:50 +02:00
David Cook
1155bd42ea Reflex test to reveal collation sorting varies on different OS...
https://dba.stackexchange.com/questions/106964/why-is-my-postgresql-order-by-case-insensitive

Uncommented, the spec fails on macOS (BSD).. but succeeds in Ubuntu (Linux). Weird.
2023-08-15 08:36:22 +02:00
David Cook
0f086df12b Setup StimulusReflex testing [add gem]
Surprisingly, the StimulusReflex framework [doesn't have many resources for testing](https://docs.stimulusreflex.com/appendices/testing.html), but thankfully someone's made a gem.
2023-08-15 08:36:22 +02:00
David Cook
e816228959 Sort products by name in ascending order
The order is specified above in fetch_products. I'm guessing this line was unintentional?

Original requirment doesn't say ascending but I think it's safe to assume (issue#10694).
2023-08-15 08:36:22 +02:00
David Cook
6dbfb36e52 Spec: use url helpers
To be consistent with other specs.
2023-08-15 08:36:22 +02:00
David Cook
9a3820db4f Tidy up spec
Although 'describe' and 'context' are the same simple constructs to label groups of examples, to humans they mean:
 * Describe a particular domain of functionality
 * Context means a different environment, IE something has been set up differently (generally with before and/or let blocks)

Also the default 'before' is :each, so we don't need to specify it.
2023-08-15 08:36:22 +02:00
David Cook
757ba27908 Optimise spec: only create objects when needed
Moving the 'clear filters' and 'no results' tests up into the first context.
2023-08-15 08:36:22 +02:00
David Cook
2a4d5af552 Remove redundant test
This is already covered in the following test.
2023-08-15 08:36:21 +02:00
David Cook
8949f1dc2e Convert route to resource
I don't know why the route helper now has "index" in the name.
2023-08-15 08:36:21 +02:00
jibees
364ae5c0c6 Merge pull request #11404 from rioug/11402-invoice-data-generator-fix-flacky-test
Invoice data generator, fix flaky test
2023-08-15 08:34:53 +02:00
Gaetan Craig-Riou
5a2155aeb7 Use the same sorting when choosing a line item to update
The presenter uses order.sorted_line_items, so use the same method
when picking up the line item to update.
2023-08-15 11:33:02 +10:00
David Cook
2196cd5be8 Merge pull request #11381 from openfoodfoundation/release_v4.4.7
Update translations for release v4.4.7
2023-08-15 10:21:34 +10:00
David Cook
8b666c67d6 Fix typo
🤦 Always, always preview changes before committing.
2023-08-15 09:54:42 +10:00
David Cook
54328d7b98 Mention browser limitations 2023-08-15 09:53:39 +10:00
Matt-Yorkley
75f246109f Fix assignment of default shipping category in variant new/edit pages 2023-08-14 21:02:48 +01:00
Matt-Yorkley
811a8cde7f Use optional: false instead of validates: presence 2023-08-14 21:02:48 +01:00
Matt-Yorkley
97d9aadb69 Update specs 2023-08-14 21:02:48 +01:00
Matt-Yorkley
dea2adc3d6 Update EntryValidator 2023-08-14 21:02:48 +01:00
Matt-Yorkley
42d04b6581 Update OrderAvailableShippingMethods service 2023-08-14 21:02:47 +01:00
Matt-Yorkley
a712eac333 Update shipping_category in /lib and /engines 2023-08-14 21:02:47 +01:00
Matt-Yorkley
5e0e60dfd6 Update reports 2023-08-14 21:02:47 +01:00
Matt-Yorkley
724c08c94d Set default shipping_category if absent 2023-08-14 21:02:47 +01:00
Matt-Yorkley
c18c525d9f Save shipping category selection to new variant when creating a new product 2023-08-14 21:02:47 +01:00
Matt-Yorkley
e3c488306c Migrate data for shipping_category_id 2023-08-14 21:02:47 +01:00
Matt-Yorkley
eefc356472 Update shipping_category usage in admin pages 2023-08-14 21:02:47 +01:00
Matt-Yorkley
0c634cf04f Update shipping_category permitted attributes 2023-08-14 21:02:47 +01:00
Matt-Yorkley
57d6fa006c Update shipping_category association in models 2023-08-14 21:02:47 +01:00
Matt-Yorkley
e2caebc374 Add shipping_category to variants table 2023-08-14 21:00:02 +01:00
Neal Chambers
ec49065739 Reword image_exists? to use Rails.public_path 2023-08-14 17:29:11 +09:00
Neal Chambers
e5740a82bd Safely autocorrect Rails/StripHeredoc
Inspecting 1484 files
........................................................................................................................................................................................................................................................C.........................................................................................................................................CC...........................................................................................................................................................................................................................................................................................................................................................................................C.......................................................................C....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/models/content_configuration.rb:74:48: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
  preference :footer_links_md, :text, default: <<-EOS.strip_heredoc
                                               ^^^^^^^^^^^^^^^^^^^^
app/queries/customers_with_balance.rb:23:5: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
    <<-SQL.strip_heredoc
    ^^^^^^^^^^^^^^^^^^^^
app/queries/outstanding_balance.rb:32:5: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
    <<-SQL.strip_heredoc
    ^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:71:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:84:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:96:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:109:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:119:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:135:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:151:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:161:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:168:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:182:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:192:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:208:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:218:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:228:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:235:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:253:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:274:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:289:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:310:13: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
            <<-JOIN_STRING.strip_heredoc
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/reporting/reports/enterprise_fee_summary/scope.rb:369:15: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
              <<-JOIN_STRING.strip_heredoc
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/tasks/data/truncate_data.rake:35:17: C: [Corrected] Rails/StripHeredoc: Use squiggly heredoc (<<~) instead of strip_heredoc.
      message = <<-MSG.strip_heredoc
                ^^^^^^^^^^^^^^^^^^^^
lib/tasks/data/truncate_data.rake:36:1: C: [Corrected] Layout/HeredocIndentation: Use 2 spaces for indentation in a heredoc.
      \n ...
^^^^^^^^

1484 files inspected, 25 offenses detected, 25 offenses corrected
2023-08-14 17:29:11 +09:00
Neal Chambers
94f1b89a9f Safely autocorrect Rails/RootPublicPath
Inspecting 1484 files
.............................................................................................C........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.........................................................................................C..........C..........................................................................................................................................................................................................................................................................................................C....................................................................................................................................................................C...................C.............................................................C.C.......C....................

Offenses:

app/controllers/concerns/request_timeouts.rb:19:22: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
               file: Rails.root.join("public/500.html"),
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/spree/core/controller_helpers/common.rb:45:30: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
                       file: Rails.root.join("public/404.html"),
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/controllers/api/v0/product_images_controller_spec.rb:13:22: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
    let(:pdf_path) { Rails.root.join("public/Terms-of-service.pdf") }
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/controllers/api/v0/terms_and_conditions_controller_spec.rb:15:31: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
      let(:terms_file_path) { Rails.root.join("public/Terms-of-service.pdf") }
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/terms_of_service_file_spec.rb:6:25: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
  let(:pdf) { File.open(Rails.root.join("public/Terms-of-service.pdf")) }
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_product_update_spec.rb:907:37: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
        attach_file 'image-upload', Rails.root.join("public/500.jpg"), visible: false
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/enterprises/terms_and_conditions_spec.rb:27:30: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
      let(:original_terms) { Rails.root.join("public/Terms-of-service.pdf") }
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/enterprises/terms_and_conditions_spec.rb:28:29: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
      let(:updated_terms) { Rails.root.join("public/Terms-of-ServiceUK.pdf") }
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/consumer/shopping/checkout_spec.rb:94:9: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
        Rails.root.join("public/Terms-of-service.pdf"),
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/consumer/shopping/embedded_groups_spec.rb:18:9: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
        Rails.root.join("public/embedded-group-preview.html")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/consumer/shopping/embedded_groups_spec.rb:26:9: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
        Rails.root.join("public/embedded-group-preview.html")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/consumer/split_checkout_spec.rb:986:35: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
        let(:system_terms_path) { Rails.root.join("public/Terms-of-service.pdf") }
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/consumer/split_checkout_spec.rb:987:33: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
        let(:shop_terms_path) { Rails.root.join("public/Terms-of-ServiceUK.pdf") }
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1484 files inspected, 13 offenses detected, 13 offenses corrected
2023-08-14 17:29:11 +09:00
Neal Chambers
b60fd6b572 Safely autocorrect Rails/I18nLazyLookup
Inspecting 1484 files
.......................................C....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/controllers/admin/proxy_orders_controller.rb:16:35: C: [Corrected] Rails/I18nLazyLookup: Use "lazy" lookup for the text used in controllers.
        render json: { errors: [t('admin.proxy_orders.cancel.could_not_cancel_the_order')] },
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/admin/proxy_orders_controller.rb:25:35: C: [Corrected] Rails/I18nLazyLookup: Use "lazy" lookup for the text used in controllers.
        render json: { errors: [t('admin.proxy_orders.resume.could_not_resume_the_order')] },
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1484 files inspected, 2 offenses detected, 2 offenses corrected
2023-08-14 17:29:11 +09:00
Neal Chambers
aaf2181768 Safely autocorrect Rails/FilePath
Inspecting 1484 files
.............................................................................................................................................................................................................................................................................................................C.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C....................C.....................................................................................................................................................................................................................................................................C.........................................................................................................................................................................................................C...........................................................................................................................................................

Offenses:

app/models/product_import/product_importer.rb:290:35: C: [Corrected] Rails/FilePath: Prefer Rails.root.join('path/to').
      return unless @file.path == Rails.root.join('tmp', 'product_import').to_s
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/tasks/karma.rake:42:5: C: [Corrected] Rails/FilePath: Prefer Rails.root.join('path/to').
    "#{Rails.root.join(I18n::JS::DEFAULT_EXPORT_DIR_PATH)}/translations.js"
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/tasks/karma.rake:42:5: C: [Correctable] Style/RedundantInterpolation: Prefer to_s over string interpolation.
    "#{Rails.root.join(I18n::JS::DEFAULT_EXPORT_DIR_PATH, 'translations.js')}"
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/tasks/karma.rake:42:59: C: [Corrected] Style/StringLiteralsInInterpolation: Prefer single-quoted strings inside interpolations.
    "#{Rails.root.join(I18n::JS::DEFAULT_EXPORT_DIR_PATH, "translations.js")}"
                                                          ^^^^^^^^^^^^^^^^^
spec/base_spec_helper.rb:58:25: C: [Corrected] Rails/FilePath: Prefer Rails.root.join('path/to').
  config.fixture_path = "#{::Rails.root}/spec/fixtures"
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/base_spec_helper.rb:58:25: C: [Correctable] Style/RedundantInterpolation: Prefer to_s over string interpolation.
  config.fixture_path = "#{Rails.root.join('spec/fixtures')}"
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/base_spec_helper.rb:58:44: C: [Corrected] Style/StringLiteralsInInterpolation: Prefer single-quoted strings inside interpolations.
  config.fixture_path = "#{Rails.root.join("spec/fixtures")}"
                                           ^^^^^^^^^^^^^^^
spec/models/content_configuration_spec.rb:15:19: C: [Corrected] Rails/FilePath: Prefer Rails.root.join('path/to').to_s.
      File.exist?(File.join(Rails.root, 'public', default_url))
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/content_configuration_spec.rb:15:19: C: [Corrected] Rails/RootPublicPath: Use Rails.public_path.
      File.exist?(Rails.root.join('public', default_url).to_s)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/downloads_helper.rb:7:5: C: [Corrected] Rails/FilePath: Prefer Rails.root.join('path/to').
    Rails.root.join("tmp", "capybara")
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1484 files inspected, 10 offenses detected, 8 offenses corrected, 2 more offenses can be corrected with `rubocop -A`
2023-08-14 17:29:11 +09:00
Neal Chambers
c36728625d Regenerate Rubocop's TODO file 2023-08-14 17:29:08 +09:00
Maikel Linke
91e4fb18ed Use input labels in Voucher system spec
It's more robust, and closer to what the user sees and does. It's also
verifying that the labels are correctly connected to the inputs.
2023-08-14 12:46:13 +10:00
Maikel Linke
ba53f31309 Use new hash syntax in Voucher spec 2023-08-14 12:40:54 +10:00
Maikel Linke
160cdc7f8e Clarify Voucher request spec not a controller spec 2023-08-14 12:25:56 +10:00
Maikel Linke
4b0e910dff Simplify default values in Voucher form 2023-08-14 12:23:00 +10:00
Maikel Linke
efe2dfff8e Let Rails handle Voucher type building 2023-08-14 11:51:34 +10:00
Maikel Linke
4d5e1ffb3b Simplify VouchersController with single param name
The Voucher form now deals with a generic Voucher instead of a subclass
which makes the naming easier and is less confusing when changing types.
2023-08-14 11:39:59 +10:00
Mohamed ABDELLANI
8370d7ce83 Update app/views/spree/admin/shared/_order_links.html.haml
Co-authored-by: jibees <jb.bellet@gmail.com>
2023-08-13 13:12:56 +01:00
Dusan Orlovic
b360e2ffaa Add Google map region parameter 2023-08-13 08:56:04 +02:00
Konrad
99daab07b7 Merge pull request #11297 from mkllnk/require-belongs-to--part2
Require belongs_to associations by default
2023-08-12 17:09:03 +02:00
Matt-Yorkley
613802f477 Update stage.yml 2023-08-11 13:50:34 +01:00
Matt-Yorkley
99907dc3a6 Update stage.yml 2023-08-11 13:48:31 +01:00
Matt-Yorkley
7084d0cb40 Update stage.yml 2023-08-11 13:44:38 +01:00
Matt-Yorkley
e33b0af6fe Update stage.yml 2023-08-11 13:42:14 +01:00
Matt-Yorkley
6dfeecead1 Update stage.yml 2023-08-11 13:30:35 +01:00
Rachel Arnould
5afe45d922 Merge pull request #11382 from jibees/11273-buu-remove-new_products_page-feature-toggle
🔧 Remove `new_products_page` and all associated controllers/components/...
2023-08-11 11:43:49 +02:00
David Cook
5a96f285c1 Update release title 2023-08-11 16:24:11 +10:00
David Cook
1a58914e43 Categories release notes by dependencies label
https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
2023-08-11 16:13:22 +10:00
Gaetan Craig-Riou
06f986ff52 Allow for creating a voucher with either flat or percentage rate
In the scenario when you get an error when trying to create a
percentage voucher, on the subsequent try we would be dealing with
a "percentage rate voucher". The code now handle any type of voucher
2023-08-11 16:09:48 +10:00
Gaetan Craig-Riou
61e6d55872 Merge pull request #10821 from rioug/10727-vouchers-percentage-rate
[Vouchers] Percentage rate
2023-08-11 16:06:09 +10:00
Gaetan Craig-Riou
a2def2424c Add a comment around the use of safe_constantize
It triggers a Brakeman error that can be safely ignored
2023-08-11 15:41:45 +10:00
Gaetan Craig-Riou
9c9a6234e1 Per review, clean up voucher specs
Add explicit 'order.item_total' to make specs more readable
2023-08-11 15:41:45 +10:00
Gaetan Craig-Riou
054eac0822 Use a better describe
Co-authored-by: David Cook <david@redcliffs.net>
2023-08-11 15:41:45 +10:00
Gaetan Craig-Riou
e6b53c0a42 Per review , Simplify creation of Voucher
We now check against known type to instanciate the correct voucher
instead of using a case
2023-08-11 15:41:45 +10:00
Gaetan Craig-Riou
3f63cfbc27 Fix Rubocop warning 2023-08-11 15:41:45 +10:00
Gaetan Craig-Riou
e8b374d0f2 Remove left over comment 2023-08-11 15:41:45 +10:00
Gaetan Craig-Riou
2828bd098d Refactor VoucherAdjustment service
We are taking advantage of having a FlatRate and a PercentageRate
model to simplify the code a little
2023-08-11 15:41:34 +10:00
Gaetan Craig-Riou
29a38467d2 Fix admin pages to work with refactored vouchers 2023-08-11 14:54:23 +10:00
Gaetan Craig-Riou
46e04ca7ee Refactor voucher: 3 percentage rate voucher 2023-08-11 14:54:23 +10:00
Gaetan Craig-Riou
def594ab81 Refactor voucher: 2 FlatRate voucher 2023-08-11 14:54:23 +10:00
Gaetan Craig-Riou
204f3933d0 Refactor voucher: 1 base voucher class
Refactor voucher to use a single table inheritance. It will simplify the
code and remove a bunch of conditional
2023-08-11 14:54:23 +10:00
Gaetan Craig-Riou
959e2308dd Add system specs for percentage based voucher
Similar to tax included in price scenario, adds a test for percentage
based voucher to check the adjustments are recalculated when needed.
Plus fix tax incluced in price specs to use new factory
2023-08-11 14:51:36 +10:00
Gaetan Craig-Riou
70bd714369 Finish calculation for percentage voucher
Add calculation when tax is not included in price
2023-08-11 14:51:36 +10:00
Gaetan Craig-Riou
cdb33aa0d0 Add calculation for percentage voucher
It include calculation for order with taxes included in the price
2023-08-11 14:30:48 +10:00
David Cook
e536393f02 Merge pull request #11389 from mkllnk/session_store
Remove ignored session store config
2023-08-11 14:27:44 +10:00
Gaetan Craig-Riou
cc9069e9c6 Add voucher type to admin screen
Plus specs
2023-08-11 14:19:26 +10:00
Gaetan Craig-Riou
619285ad4a Add voucher_type to voucher
And update related specs
voucher_type doesn't do anything for now.
2023-08-11 14:19:25 +10:00
Gaetan Craig-Riou
1be8daaf86 Add specs to cover re calculation
It is important that the calculated voucher adjustments don't change
if they are recalculated and it is equally important that they are
updated if the order has changed
2023-08-11 14:19:25 +10:00
David Cook
6ee6ad2b86 [fixup] Remove unnecessary template name
This was left over after trying different things to get this working.
2023-08-11 14:14:32 +10:00
Maikel
fc8e39987a Merge pull request #11385 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.132.1
chore(deps): bump aws-sdk-s3 from 1.132.0 to 1.132.1
2023-08-11 11:39:14 +10:00
Maikel Linke
7fe74e811e Remove ignored session store config
We set the session store in an initializer and therefore the development
config was overridden without having any effect.
2023-08-11 10:27:37 +10:00
Maikel Linke
a34a351cee Stabilise flaky spec with deterministic row order 2023-08-11 10:14:47 +10:00
Maikel
146b09dc57 Spec EnterpriseFee tax_category association
Co-authored-by: David Cook <david@redcliffs.net>
2023-08-11 10:14:47 +10:00
Maikel Linke
efbf1d6b8f Stabilise flaky assertion on PDF text
The PDF reader can't always place text elements in the right place. So
something that should be in one line can be in multiple lines and those
lines can be in a different order. I'm asserting the moving parts
separately as done in other places of this spec.
2023-08-11 10:14:47 +10:00
Maikel Linke
1b6eeb0928 Reduce line length of PaymentMethod class
Rubocop was complaining. So I found code that could be simplified and
specced it before refactoring.
2023-08-11 10:14:47 +10:00
Maikel Linke
faeb8ae8f8 Fix Exchange clone tagging
The validation of ActsAsTaggableOn::Taggable failed when trying to copy
tag ids during cloning. But I found that it's totally unnecessary
because `Exchange.dup` copies the `tag_list` attribute already and it
gets saved correctly. There's an existing spec for this.
2023-08-11 10:14:47 +10:00
Maikel Linke
4a13576f78 Remove now superfluous belongs_to default declaration 2023-08-11 10:14:47 +10:00
Maikel Linke
e6c679cb34 Apply belongs_to_required_by_default to all models
Unless they state otherwise.

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

In one case, Spree::Product, I also had to update the model because the
presence validation was somehow not recognised by the Shoulda matcher.
The error message may change slightly but the outcome should be the
same.
2023-08-11 10:14:47 +10:00
Maikel Linke
8ef6966891 Declare old belongs_to default on remaining models
It would take ages to go through all files now and assess all belongs_to
associations. So I just declare the old default and then we can move on
and apply the new default for the application while these classes still
use the old one. All new models will then use the new default which is
the goal of this excercise and we can refactor old classes when we touch
them anyway.
2023-08-11 10:14:43 +10:00
Maikel Linke
252f809463 Require CustomTab.belongs_to by default 2023-08-11 10:14:15 +10:00
Maikel Linke
070d1e722e Require EnterpriseRole.belongs_to by default 2023-08-11 10:14:14 +10:00
Maikel Linke
4dd2955400 Require EnterpriseRelationshipPermission.belongs_to by default
I had to change some specs to keep them simple but I don't think
anything is broken. In one case, it would have needed a lot more setup
to make the spec work. But in production, the permissions are never used
with ModelSet, for example.
2023-08-11 10:13:48 +10:00
Maikel Linke
cb494b84f2 Require EnterpriseRelationship.belongs_to by default 2023-08-11 10:13:29 +10:00
Maikel Linke
4b630f187b Require EnterpriseGroup.belongs_to by default 2023-08-11 10:13:10 +10:00
Maikel Linke
13b2f37884 Require EnterpriseFee.belongs_to by default 2023-08-11 10:13:09 +10:00
Maikel Linke
87ccfc94ef Require Enterprise.belongs_to by default
And remove a duplicate spec.
2023-08-11 10:13:09 +10:00
Konrad
60212f92c3 Merge pull request #11270 from rioug/9553-removing-cutomer-tag-when-search-for-tag
Fix removing customer tag when using search bar for said tag
2023-08-11 00:11:55 +02:00
Konrad
c3414143e6 Merge pull request #11222 from Matt-Yorkley/checkout-controller
Reduce controller size
2023-08-10 23:28:57 +02:00
Konrad
f59e681826 Merge pull request #11259 from cillian/single-line-voucher-code
Don't allow multi-line voucher codes
2023-08-10 23:09:55 +02:00
Jean-Baptiste Bellet
5b4b37032c Add translation for invalid URL in white label context 2023-08-10 15:22:35 +02:00
Matt-Yorkley
df077caafa Merge pull request #11375 from Matt-Yorkley/drop-unused-tables
Drop unused tables
2023-08-10 12:28:14 +01:00
Matt-Yorkley
f19d66f4d6 Drop unused tables 2023-08-10 12:27:31 +01:00
Matt-Yorkley
688b411e97 Merge pull request #11374 from Matt-Yorkley/drop-variant-master-column
Drop :is_master column from variants table
2023-08-10 12:25:59 +01:00
Matt-Yorkley
b82f368bec Drop :is_master column from variants table 2023-08-10 12:25:18 +01:00
Matt-Yorkley
128d5c29bd Merge pull request #11373 from Matt-Yorkley/drop-options-tables
Drop option_types and option_values tables
2023-08-10 12:21:39 +01:00
jibees
95612a8cb6 Merge pull request #11384 from openfoodfoundation/dependabot/bundler/rails-7.0.7
chore(deps): bump rails from 7.0.6 to 7.0.7
2023-08-10 12:13:07 +02:00
dependabot[bot]
4bbd9e9d49 chore(deps): bump aws-sdk-s3 from 1.132.0 to 1.132.1
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.132.0 to 1.132.1.
- [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-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-10 09:55:40 +00:00
dependabot[bot]
f08a7ea254 chore(deps): bump rails from 7.0.6 to 7.0.7
Bumps [rails](https://github.com/rails/rails) from 7.0.6 to 7.0.7.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v7.0.6...v7.0.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-10 09:53:38 +00:00
Jean-Baptiste Bellet
3b68674896 Remove new_products_page and all associated controller/components/
new_products_page` is dead, long live `admin_style_v3` !
2023-08-10 10:02:45 +02:00
jibees
f58fedfc86 Merge pull request #11376 from mkllnk/flaky-voucher-spec
Stabilise flaky checkout spec with voucher
2023-08-10 09:10:59 +02:00
David Cook
b58d15b5ed Update all locales with the latest Transifex translations 2023-08-10 16:54:26 +10:00
David Cook
f64a24a5bb Respond to all formats with html 2023-08-10 16:14:08 +10:00
David Cook
c191158a97 Use the newer syntax 2023-08-10 14:52:04 +10:00
Matt-Yorkley
5c0329ce17 Drop option_types and option_values tables 2023-08-10 11:52:10 +10:00
Maikel
8db8d6de8d Merge pull request #11372 from Matt-Yorkley/remove-variant-position
Remove unused variant :position attribute
2023-08-10 11:48:55 +10:00
Maikel
507803c2dc Merge pull request #11371 from jibees/8443-missing-translation-passwords-not-matching-or-too-short
Account creation: translate some messages around password creation
2023-08-10 11:40:56 +10:00
Maikel Linke
04bba2adf1 Stabilise flaky checkout spec with voucher
While applying a voucher the spec tried to proceed the checkout before
the voucher update completed rendering. It failed when the machine was
slow.

With rspec-slow-repeate I got 100% fail rate before and 100% pass after
this change.
2023-08-10 10:05:01 +10:00
Maikel
926c8aed94 Merge pull request #11354 from abdellani/fix-rename-invoice-generate-update-button
rename 'new invoice' button to 'create or update invoice'
2023-08-10 09:59:11 +10:00
Mohamed ABDELLANI
620dd70dd7 rename 'new invoice' button to 'create or update invoice' 2023-08-10 09:35:13 +10:00
Matt-Yorkley
a33b6e0ec9 Update variant sorting 2023-08-09 18:30:56 +01:00
Matt-Yorkley
e65efe0f85 Remove unused variant :position attribute 2023-08-09 18:24:46 +01:00
Rachel Arnould
4505beff98 Merge pull request #11327 from bouaik/fix-display-invoice-tab-for-completed-resumed-canceled-only
Fix display invoice tab for completed, resumed and canceled orders only
2023-08-09 18:37:02 +02:00
Jean-Baptiste Bellet
1f5dc1f864 Add ActiveRecords messages for translation in account creation 2023-08-09 16:58:08 +02:00
Rachel Arnould
2b108dfeee Merge pull request #11116 from abdellani/fix-show-date-only-on-invoices-list
render date without time on invoices list
2023-08-09 14:33:40 +02:00
jibees
249dea56f3 Merge pull request #11366 from openfoodfoundation/dependabot/bundler/rubocop-1.56.0
chore(deps-dev): bump rubocop from 1.55.1 to 1.56.0
2023-08-09 11:35:25 +02:00
dependabot[bot]
467a63cf12 chore(deps-dev): bump rubocop from 1.55.1 to 1.56.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.55.1 to 1.56.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.55.1...v1.56.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-08-09 09:20:52 +00:00
Konrad
89d8fa0306 Merge pull request #11346 from Matt-Yorkley/remove-multiple-taxons
[Product Refactor] Remove multiple taxons
2023-08-09 11:19:11 +02:00
Maikel
655fdf3fff Merge pull request #11353 from abdellani/remove-duplicated-keys-in-en-yml
Remove duplicated keys in en yml
2023-08-09 13:42:01 +10:00
Maikel
d149f71199 Merge pull request #11365 from dacook/setup-reduce-output
Setup script tweaks
2023-08-09 11:45:47 +10:00
Maikel
b50fa216eb Merge pull request #11117 from rioug/10857-voucher-error-moving-between-summary-and-cart-take2
[vouchers] error moving between summary and cart pages
2023-08-09 11:14:52 +10:00
David Cook
91c874737a Combine rake tasks to save time
The log:clear task seems to take quite a bit of time. At least we can speed up a bit by only booting up Rails once.

I'm more likely to run the script if it's quick ;)
2023-08-09 10:28:41 +10:00
David Cook
9d79c7cda7 Reduce bundler install output
bundle install always shows a very long list of all gems. But we really only want to know about the new gems being installed. Thankfully there's an option for that.
2023-08-09 10:26:11 +10:00
Matt-Yorkley
6fee1d2dde Use dependent: :restrict_with_error on Taxon/Product association 2023-08-08 11:36:31 +01:00
David Cook
1706b8b4bc fixup: Drop spree_products_taxons join table
Make it reversible for dev or staging.
2023-08-08 11:36:31 +01:00
David Cook
a9ca07f4fb fixup Update specs
Delete empty describe block
2023-08-08 11:36:31 +01:00
Matt-Yorkley
321047d663 Update specs 2023-08-08 11:36:31 +01:00
Matt-Yorkley
3d83ca01f7 Drop spree_products_taxons join table 2023-08-08 11:36:31 +01:00
Matt-Yorkley
3655f3019d Update products and inventory report 2023-08-08 11:36:31 +01:00
Matt-Yorkley
38d9f4f1da Update product v3 table 2023-08-08 11:36:31 +01:00
Matt-Yorkley
e4a49f5d02 Update product duplication 2023-08-08 11:36:31 +01:00
Matt-Yorkley
820f9530b2 Update product serializer 2023-08-08 11:36:31 +01:00
Matt-Yorkley
8d01e1f024 Update taxon specs 2023-08-08 11:36:31 +01:00
Matt-Yorkley
33d40ed750 Update association 2023-08-08 11:36:31 +01:00
Matt-Yorkley
cffd7073e2 Delete unused method 2023-08-08 11:36:31 +01:00
Matt-Yorkley
3898af2c37 Update factories and tests 2023-08-08 11:36:31 +01:00
Matt-Yorkley
a93809b75f Remove associated abilities 2023-08-08 11:36:31 +01:00
Matt-Yorkley
a69ab2ef71 Remove multiple taxons on products functionality 2023-08-08 11:36:31 +01:00
Mohamed ABDELLANI
982f30399f merge :errors values under one key 2023-08-08 10:34:11 +01:00
Mohamed ABDELLANI
024a01ba94 remove duplicated keys on en.yml 2023-08-08 10:34:05 +01:00
Mohamed ABDELLANI
70b61eb481 remove bulk invoice service 2023-08-08 08:41:33 +01:00
Mohamed ABDELLANI
fc01ffc509 remove InvoicesController#create 2023-08-08 08:38:32 +01:00
Gaetan Craig-Riou
fe6075319e Merge pull request #11344 from openfoodfoundation/dependabot/bundler/mime-types-3.5.0
chore(deps): bump mime-types from 3.4.1 to 3.5.0
2023-08-08 16:43:47 +10:00
Gaetan Craig-Riou
bb375ccee5 Merge pull request #11343 from openfoodfoundation/dependabot/npm_and_yarn/stimulus-3.2.2
chore(deps): bump stimulus from 3.2.1 to 3.2.2
2023-08-08 16:41:45 +10:00
Mohamed ABDELLANI
c185a47592 render the confirm model on the same component that includes the action on the order. 2023-08-08 07:32:20 +01:00
Gaetan Craig-Riou
6f10907555 Fix rubocop warnings 2023-08-08 15:37:05 +10:00
Gaetan Craig-Riou
a64023c3df Apply review suggestion, simplify code slightly 2023-08-08 15:29:23 +10:00
Gaetan Craig-Riou
4e468c81f9 Handle updating customer attribute when directive is destroyed
Handle any customer attribute not just tags
2023-08-08 15:29:22 +10:00
Gaetan Craig-Riou
41dbad629b Add system spec to cover deleting data when filtering
covers tag scenario and code scenario
2023-08-08 15:29:22 +10:00
Gaetan Craig-Riou
f96bd51344 Rework form to allow displaying the save bar when no result
When filtering by a tag, and then removing the tag on the filtered
customers, it let us show the save bar once the last customer has been
removed from the filtered list.
2023-08-08 15:28:13 +10:00
Gaetan Craig-Riou
dba8809057 Handle deleting tag when directive destroyed 2023-08-08 15:28:13 +10:00
dependabot[bot]
df76710ae8 chore(deps): bump mime-types from 3.4.1 to 3.5.0
Bumps [mime-types](https://github.com/mime-types/ruby-mime-types) from 3.4.1 to 3.5.0.
- [Changelog](https://github.com/mime-types/ruby-mime-types/blob/main/History.md)
- [Commits](https://github.com/mime-types/ruby-mime-types/compare/v3.4.1...v3.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-07 09:56:54 +00:00
dependabot[bot]
1af30bdff4 chore(deps): bump stimulus from 3.2.1 to 3.2.2
Bumps [stimulus](https://github.com/stimulusjs/stimulus) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/stimulusjs/stimulus/releases)
- [Changelog](https://github.com/hotwired/stimulus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stimulusjs/stimulus/compare/v3.2.1...v3.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-07 09:52:05 +00:00
Gaetan Craig-Riou
b731e8319b Merge pull request #11339 from openfoodfoundation/dependabot/npm_and_yarn/js-big-decimal-2.0.4
chore(deps): bump js-big-decimal from 2.0.1 to 2.0.4
2023-08-07 11:46:10 +10:00
Gaetan Craig-Riou
430aa685ce Merge pull request #11321 from mkllnk/dev-user-valid
Skip online domain validation of dev user email
2023-08-07 11:27:31 +10:00
Maikel
ccc5975517 Merge pull request #11320 from dacook/css-cleanup
SCSS cleanup
2023-08-07 10:23:49 +10:00
Maikel
4b0bffa095 Merge pull request #11256 from rioug/10997-add-new-relic-gem
Add new relic gem
2023-08-07 10:17:59 +10:00
Gaetan Craig-Riou
0103942dcb Disable new relic agent by default
It can be enable as needed by setting NEW_RELIC_AGENT_ENABLED env
variable to true and setting a license key
2023-08-07 09:37:36 +10:00
Gaetan Craig-Riou
de52ff4abf Move New Relic out of production, staging group 2023-08-07 09:37:36 +10:00
Gaetan Craig-Riou
5793cb14ee Add generated configuration 2023-08-07 09:37:36 +10:00
Gaetan Craig-Riou
c3d26b1900 Add the New Relic gem 2023-08-07 09:37:36 +10:00
Rachel Arnould
1b1279aa56 Merge pull request #11192 from abdellani/bulk-invoice-printing
fix Bulk invoice printing/sending
2023-08-04 12:02:43 +02:00
dependabot[bot]
760d237288 chore(deps): bump js-big-decimal from 2.0.1 to 2.0.4
Bumps [js-big-decimal](https://github.com/royNiladri/js-big-decimal) from 2.0.1 to 2.0.4.
- [Release notes](https://github.com/royNiladri/js-big-decimal/releases)
- [Commits](https://github.com/royNiladri/js-big-decimal/compare/v2.0.1...v2.0.4)

---
updated-dependencies:
- dependency-name: js-big-decimal
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-04 09:24:25 +00:00
Cillian O'Ruanaidh
d026438edc Revert "Validate voucher code length doesn't exceed the database column length i.e. 255 characters"
This reverts commit 0d0df82522.
2023-08-04 10:24:21 +01:00
Cillian O'Ruanaidh
9eba266efc Strip leading and trailing whitespace from code on assignment instead of before validation
Co-authored-by: Maikel <maikel@email.org.au>
2023-08-04 10:15:22 +01:00
Cillian O'Ruanaidh
ab0d899a17 Revert "Validate voucher code doesn't contain new line characters"
This reverts commit 0c0b85f4c4.
2023-08-04 10:04:14 +01:00
Gaetan Craig-Riou
6ed35f4cc1 Per review, delete only incomplete payments
Use destroy_all so we don't have to manually delete the payment fees
adjustment
2023-08-04 17:03:31 +10:00
Maikel Linke
ad37c401e5 Update translations 2023-08-04 13:48:29 +10:00
David Cook
42230c07b2 Merge pull request #11312 from macanudo527/fix_rubocop_5
Fix autocorrect Rails Cops
2023-08-04 11:13:52 +10:00
bouaik
41d649404f make suggested changes 2023-08-04 00:55:35 +01:00
Maikel
2b18effe6d Merge pull request #11322 from macanudo527/fix_remaining_line_length
Fix remaining Layout/LineLength Rubocop Errors
2023-08-04 09:34:00 +10:00
Maikel
64398066ce Merge pull request #11324 from openfoodfoundation/dependabot/npm_and_yarn/js-big-decimal-2.0.1
chore(deps): bump js-big-decimal from 1.4.1 to 2.0.1
2023-08-04 09:20:30 +10:00
Matt-Yorkley
dd9bdd9c0e Move address params handling into Checkout::Params 2023-08-04 08:43:15 +10:00
Matt-Yorkley
13a7c19a06 Extract checkout step(s) validation to a service 2023-08-04 08:43:15 +10:00
Matt-Yorkley
82b8bb74a1 Remove #before_save_hook method and clarify it's intention 2023-08-04 08:43:15 +10:00
Matt-Yorkley
f3899ee251 Extract some related methods to CheckoutSteps concern 2023-08-04 08:43:15 +10:00
Matt-Yorkley
d1bcdde49f Simplify split checkout errors 2023-08-04 08:43:15 +10:00
Filipe
69dfd53658 Merge pull request #11254 from rioug/11130-add-product-filter-order-report
11130 add product filter order report
2023-08-03 16:08:44 +01:00
Filipe
5c67d522b8 Merge pull request #11209 from openfoodfoundation/dependabot/npm_and_yarn/stimulus_reflex-3.5.0-rc3
chore(deps): bump stimulus_reflex from 3.5.0-rc2 to 3.5.0-rc3 + cable_ready from 5.0.0.rc2 to 5.0.1
2023-08-03 16:01:40 +01:00
Mohamed ABDELLANI
6c53f3b8b0 move pretty_date helper into invoice presenter 2023-08-03 15:12:02 +01:00
Mohamed ABDELLANI
c21ffd338b fix only date is expected on the invoices list table.
time is not supposed to be rendered on the invoices list table (only date)
2023-08-03 15:12:02 +01:00
Mohamed ABDELLANI
5358802ab5 replace Presenter#invoice_date with a delagator 2023-08-03 15:11:58 +01:00
Mohamed ABDELLANI
9a3aef525a add distributor's phone number to list of attributes to serialize 2023-08-03 15:06:04 +01:00
Mohamed ABDELLANI
d044959cec fix date formatting
implement a new helper `pretty_date`
2023-08-03 14:55:26 +01:00
Mohamed ABDELLANI
1a8c0f18b7 order invoices by "created_at desc" on the default scope 2023-08-03 14:55:26 +01:00
Mohamed ABDELLANI
8fecc9db4b render date without time on invoices list
+ sort invoices in the reverse order of the creation time
2023-08-03 14:55:26 +01:00
Mohamed ABDELLANI
24b1918df5 implment blank? on Address presenter
To keep the same method calls that are used on the legacy invoice template. I needed to redefine blank? on the address presenter.
2023-08-03 14:53:40 +01:00
Mohamed ABDELLANI
4449484402 replace double with instance_double 2023-08-03 14:53:40 +01:00
Mohamed ABDELLANI
2fb112aecd import BulkInvoiceJob#perform spec
1. remove the mocks
2. test the content of the generated pdf
3. remove the test of private methods
2023-08-03 14:53:40 +01:00
Mohamed ABDELLANI
c89c8a69bc optimize OrderMailer#invoice_email spec
Check if the email was sent without raising an error
Check if the email has an attached pdf
2023-08-03 14:52:45 +01:00
Mohamed ABDELLANI
9b80676d7d update the logic to send invoice
When the invoices feature is enabled, for every order, we check if
1. a new invoice must be generated
2. or, the latest invoice needs to be updated

the invoice rendrer input depends on the invoices flag.
if the feature is enabled, the input is supposed to be an invoice presenter
2023-08-03 14:52:45 +01:00
Mohamed ABDELLANI
7daa4d3a63 simplify filtering condition to select only invoiceable orders on OrdersReflex 2023-08-03 14:52:45 +01:00
Mohamed ABDELLANI
5ae2545918 Update app/jobs/bulk_invoice_job.rb
Co-authored-by: David Cook <david@redcliffs.net>
2023-08-03 14:52:45 +01:00
Mohamed ABDELLANI
687760046b update the bulk invoice job to print invoiceable orders
the invoices feature is enabled:
1. we filter non-invoiceable order
2. for each invoiceable order, we check if we need to generate a new invoice or update the latest invoice
2023-08-03 14:52:45 +01:00
Mohamed ABDELLANI
c921250d68 implement Spree::Order#invoiceable?
This will be used to filter the orders when running bulk print
2023-08-03 14:52:45 +01:00
Mohamed ABDELLANI
4f6ab69add implement OrderInvoiceGenerator service 2023-08-03 14:52:45 +01:00
Mohamed ABDELLANI
f24af3feb0 extract invoice printing logic into a seperated method 2023-08-03 14:52:45 +01:00
bouaik
0c849f08fd fix tests 2023-08-03 13:04:16 +01:00
bouaik
2c08602664 fix display invoice tab 2023-08-03 11:25:31 +01:00
Filipe
46cb1add63 Merge pull request #11126 from abdellani/show-invoice-number-on-invoices
Show invoice number on invoices
2023-08-03 10:48:34 +01:00
Filipe
c0a4bccb3e Merge pull request #11156 from Matt-Yorkley/product-tax-category
[Product Refactor] Tax category
2023-08-03 10:29:40 +01:00
dependabot[bot]
106938ddbf chore(deps): bump js-big-decimal from 1.4.1 to 2.0.1
Bumps [js-big-decimal](https://github.com/royNiladri/js-big-decimal) from 1.4.1 to 2.0.1.
- [Release notes](https://github.com/royNiladri/js-big-decimal/releases)
- [Commits](https://github.com/royNiladri/js-big-decimal/compare/v1.4.1...v2.0.1)

---
updated-dependencies:
- dependency-name: js-big-decimal
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-03 09:19:52 +00:00
Maikel Linke
f96636072e Use original DFC Connector.export implementation
We wanted to use our own context before but now I found a better way for
the connector to cache the context and therfore we can use the original
implementation again.
2023-08-03 16:45:31 +10:00
Maikel Linke
1daed8c29c Always load our DFC Connector patches
We want to use the preloaded context when exporting documents as well.
2023-08-03 16:45:30 +10:00
Maikel Linke
ff359664a9 Use cached DFC context 2023-08-03 16:45:30 +10:00
Neal Chambers
f5f9b80de7 Update .rubocop_todo.yml 2023-08-03 09:49:51 +09:00
Neal Chambers
a4f270bdec Fix Layout/LineLength 2023-08-03 09:49:47 +09:00
David Cook
32cc776725 Merge pull request #11177 from cyrillefr/Registration_of_an_enterprise_name_already_taken_stops_registration_process
Registration of an enterprise name already taken stops registration process
2023-08-03 10:37:47 +10:00
Maikel Linke
c8511ecd0d Remove superfluous line
The `<<` operation saves the association already.
2023-08-03 10:26:59 +10:00
Maikel Linke
6056c59301 Skip online domain validation of dev user email
We improved the email address validation to check the domain for
existing DNS entries. But our default user has the example.com domain
which is not resolved by my internet service provider.

I couldn't find a better way to deactivate this one check than
overriding the method in the validator. The code does not affect other
parts of the app unless you run multiple rake tasks in the same command
line with the database setup.
2023-08-03 10:22:00 +10:00
Maikel
76b7a9ea14 Merge pull request #11307 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.5.1
chore(deps): bump @floating-ui/dom from 1.4.5 to 1.5.1
2023-08-03 10:04:31 +10:00
David Cook
293e135a45 Move variables to one variables file
Note that color-tbl-border is not needed in the new admin_v3 styles.
2023-08-03 09:49:29 +10:00
David Cook
0aa4c144b9 Rename disabled button variable
TIL that underscores and dashes are treated the same in SCSS variables.
2023-08-03 09:49:29 +10:00
David Cook
1a02e108a5 Use red colour from the palette
It's very similar.
2023-08-03 09:49:29 +10:00
David Cook
9610281ed3 Rename variables 2023-08-03 09:49:29 +10:00
David Cook
b46e6c462d Rename table border variable
There are other vars named brd, but I think border is clearer and doesn't need to be abreviated here.
2023-08-03 09:49:29 +10:00
David Cook
c4a335548a Rename warning color variable
To match the others in the variables file.

Also `warning-orange` was unused.
2023-08-03 09:49:29 +10:00
David Cook
01a9095121 Move some variables to the palette 2023-08-03 09:49:29 +10:00
David Cook
2f801d346d Prettify some more css files 2023-08-03 09:49:29 +10:00
David Cook
14e07e38d3 Remove depdenency on darkswarm/mixins 2023-08-03 09:49:29 +10:00
David Cook
bf9cd09462 Remove dependence on darkswarm variables
There were all sorts of dependencies hiding in there, and it was overwriting some of the admin variables. Better to keep things separate and simple.

I discovered that there was one legitimate reason for importing them though: for styling the trix editor. I can't think of a good way to safely import them without affecting the other variables, so I just hardcoded the colours for now.
2023-08-03 09:47:44 +10:00
David Cook
9207724779 Copy legacy variables
I'd like to go through and remove these, but it will have to happen another day.
2023-08-03 09:47:44 +10:00
David Cook
828df3ed82 Consistently use red in forms
Errors and required fields now use the colour from the palette. The error messages in the old design are a bit darker now, but I think it's clearer. And it makes the new design look way better.

Also snuck in a tiny padding tweak.
2023-08-03 09:47:44 +10:00
Maikel
9c6e0418cb Merge pull request #11317 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.3.5
chore(deps-dev): bump knapsack_pro from 5.3.4 to 5.3.5
2023-08-03 08:18:52 +10:00
Filipe
f816d4b2d6 Merge pull request #11235 from jibees/11223-notices-tab-on-shopfront-persisting-after-selecting-an-order-cycle
Shopfront: On non-shop tab, when changing OC, switch to shop tab and hides non-shop tab content
2023-08-02 16:02:23 +01:00
Konrad
27e3a65440 Merge pull request #11234 from jibees/10867-vouchers-vouchers-page-is-shown-for-profile-enterprises
Show vouchers panel only if enterprise sells products (own or any)
2023-08-02 13:11:29 +02:00
Konrad
44d25dbb6a Merge pull request #11299 from cillian/order-name-sorting
Sort orders by last name, then first name i.e. the same way bulk order management works
2023-08-02 11:30:25 +02:00
Konrad
12f6457ab2 Merge pull request #11302 from bouaik/margin-guest-checkout
fix margin in guest checkout
2023-08-02 10:57:12 +02:00
Maikel
b73dfed4e9 Merge pull request #11308 from openfoodfoundation/dependabot/bundler/rubocop-1.55.1
chore(deps-dev): bump rubocop from 1.55.0 to 1.55.1
2023-08-02 16:29:36 +10:00
Maikel
7886e25f83 Merge pull request #11303 from macanudo527/fix_rubocop_script
Add file limit to Rubocop Autocorrect Script
2023-08-02 14:36:20 +10:00
dependabot[bot]
bff74e9472 chore(deps-dev): bump knapsack_pro from 5.3.4 to 5.3.5
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 5.3.4 to 5.3.5.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v5.3.4...v5.3.5)

---
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-08-02 03:17:45 +00:00
David Cook
ff76e3afa1 Merge pull request #11263 from mkllnk/dfc-connector-context
Dfc connector context
2023-08-02 13:16:28 +10:00
David Cook
44d1066e5c Merge pull request #11310 from Matt-Yorkley/image-magick
Rescue ImageMagick errors
2023-08-02 10:26:46 +10:00
Neal Chambers
0d2e2fa42c Add skip for cops that couldn't be autocorrected 2023-08-02 09:11:00 +09:00
Konrad
bc01207fec Merge pull request #11281 from jibees/11205-white-label-logo-image-not-displaying-correctly-on-mobile
White label: Update mobile variant size for white label logo to fit the same ratio
2023-08-02 00:10:14 +02:00
bouaik
5681c45a9e use classes like logged in checkout 2023-08-01 22:08:56 +01:00
Maikel Linke
bebdaace4b Prefer plain text in spec expectations 2023-08-01 23:06:26 +02:00
cyrillefr
d4c864a118 Add testing for modal warning that name is already in use 2023-08-01 23:06:26 +02:00
cyrillefr
057754305d Useless 'end' at end of coffeescript block 2023-08-01 23:06:26 +02:00
cyrillefr
05d610e598 Spec for (re)enabling 'Create Profile' button if not returning promise 2023-08-01 23:06:26 +02:00
cyrillefr
ae1e6032f6 Enable 'Create Profile' button via callback in case of not returning promise 2023-08-01 23:06:26 +02:00
Neal Chambers
f47f6efcd0 Safely autocorrect Rails/DurationArithmetic
Inspecting 1481 files
...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C.C.................................................................................................................................................................................................................................................................................C..............C..........................................................C...............................C....C..........CC................................................................

Offenses:

app/services/create_order_cycle.rb:41:24: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
      orders_close_at: Time.zone.now + 1.month
                       ^^^^^^^^^^^^^^^^^^^^^^^
spec/jobs/order_cycle_closing_job_spec.rb:7:74: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
    create(:order_cycle, automatic_notifications: true, orders_close_at: Time.zone.now - 1.minute)
                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^
spec/jobs/order_cycle_closing_job_spec.rb:10:74: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
    create(:order_cycle, automatic_notifications: true, orders_close_at: Time.zone.now + 1.minute)
                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^
spec/jobs/order_cycle_closing_job_spec.rb:13:75: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
    create(:order_cycle, automatic_notifications: false, orders_close_at: Time.zone.now - 1.minute)
                                                                          ^^^^^^^^^^^^^^^^^^^^^^^^
spec/jobs/order_cycle_opened_job_spec.rb:7:42: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
    create(:order_cycle, orders_open_at: Time.zone.now - 1.hour)
                                         ^^^^^^^^^^^^^^^^^^^^^^
spec/jobs/order_cycle_opened_job_spec.rb:13:42: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
    create(:order_cycle, orders_open_at: Time.zone.now + 1.minute)
                                         ^^^^^^^^^^^^^^^^^^^^^^^^
spec/services/permissions/order_spec.rb:26:58: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
                                           completed_at: Time.zone.now - 1.year)
                                                         ^^^^^^^^^^^^^^^^^^^^^^
spec/services/terms_of_service_spec.rb:21:71: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
      allow(customer).to receive(:terms_and_conditions_accepted_at) { Time.zone.now - 1.week }
                                                                      ^^^^^^^^^^^^^^^^^^^^^^
spec/services/terms_of_service_spec.rb:22:59: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
      allow(TermsOfServiceFile).to receive(:updated_at) { Time.zone.now - 2.weeks }
                                                          ^^^^^^^^^^^^^^^^^^^^^^^
spec/services/terms_of_service_spec.rb:36:71: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
      allow(customer).to receive(:terms_and_conditions_accepted_at) { Time.zone.now - 1.week }
                                                                      ^^^^^^^^^^^^^^^^^^^^^^
spec/services/terms_of_service_spec.rb:38:45: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
        ActiveStorage::Blob.new(created_at: Time.zone.now - 2.weeks)
                                            ^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:647:57: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
                                          completed_at: Time.zone.now + 1.week,
                                                        ^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:652:57: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
                                          completed_at: Time.zone.now + 2.weeks,
                                                        ^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:661:40: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
          oc3.update!(orders_close_at: Time.zone.now + 2.weeks)
                                       ^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/bulk_order_management_spec.rb:662:39: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
          oc3.update!(orders_open_at: Time.zone.now + 1.week)
                                      ^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/list_spec.rb:128:18: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
    oc_open_at = Time.zone.now - 2.weeks
                 ^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/order_cycles/list_spec.rb:129:19: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
    oc_close_at = Time.zone.now + 2.weeks
                  ^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:289:40: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
          order2.update!(completed_at: Time.zone.now - 2.weeks)
                                       ^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:290:40: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
          order3.update!(completed_at: Time.zone.now - 3.weeks)
                                       ^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:291:40: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
          order4.update!(completed_at: Time.zone.now - 4.weeks)
                                       ^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/orders_spec.rb:292:40: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
          order5.update!(completed_at: Time.zone.now - 5.weeks)
                                       ^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/orders_and_fulfillment_spec.rb:113:31: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
        let(:completed_at1) { Time.zone.now - 1500.hours } # 1500 hours in the past
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/orders_and_fulfillment_spec.rb:114:31: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
        let(:completed_at2) { Time.zone.now - 1700.hours } # 1700 hours in the past
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/orders_and_fulfillment_spec.rb:115:33: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
        let(:datetime_start1) { Time.zone.now - 1600.hours } # 1600 hours in the past
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/orders_and_fulfillment_spec.rb:116:33: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
        let(:datetime_start2) { Time.zone.now - 1800.hours } # 1600 hours in the past
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/orders_and_fulfillment_spec.rb:117:30: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
        let(:datetime_end) { Time.zone.now - 1400.hours } # 1400 hours in the past
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/system/admin/reports/packing_report_spec.rb:13:26: C: [Corrected] Style/RedundantParentheses: Don't use parentheses around a method call.
  let!(:open_datetime) { (1.month.ago).strftime("%Y-%m-%d 00:00") }
                         ^^^^^^^^^^^^^
spec/system/admin/reports/packing_report_spec.rb:13:27: C: [Corrected] Rails/DurationArithmetic: Do not add or subtract duration.
  let!(:open_datetime) { (Time.zone.now - 1.month).strftime("%Y-%m-%d 00:00") }
                          ^^^^^^^^^^^^^^^^^^^^^^^

1481 files inspected, 28 offenses detected, 28 offenses corrected
2023-08-01 22:50:21 +09:00
Neal Chambers
a263110799 Safely autocorrect Rails/DotSeparatedKeys
Inspecting 1481 files
........................................................................C................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/controllers/api/v1/base_controller.rb:72:66: C: [Corrected] Rails/DotSeparatedKeys: Use the dot-separated keys instead of specifying the :scope option.
        message = I18n.t(:missing_parameter, param: error.param, scope: :api)
                                                                 ^^^^^^^^^^^
app/controllers/api/v1/base_controller.rb:79:84: C: [Corrected] Rails/DotSeparatedKeys: Use the dot-separated keys instead of specifying the :scope option.
        message = I18n.t(:unpermitted_parameters, params: error.params.join(", "), scope: :api)
                                                                                   ^^^^^^^^^^^

1481 files inspected, 2 offenses detected, 2 offenses corrected
2023-08-01 22:50:21 +09:00
Neal Chambers
44cf2faa1e Safely autocorrect Rails/ActiveRecordCallbacksOrder
Inspecting 1481 files
...........................................................................................................................................................................................................................................................C..C.CC........................................................................C...C..........C..C..................CC........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

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

1481 files inspected, 35 offenses detected, 35 offenses corrected
2023-08-01 22:50:21 +09:00
Neal Chambers
a1560263a1 Safely autocorrect Rails/ActionOrder
Inspecting 1481 files
.........................................C.................C.........................................................CC........C..........C.C.........C..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

app/controllers/admin/resource_controller.rb:39:5: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
    def update
    ^^^^^^^^^^
app/controllers/admin/resource_controller.rb:39:5: C: [Corrected] Rails/ActionOrder: Action create should appear before update.
    def create ...
    ^^^^^^^^^^
app/controllers/admin/resource_controller.rb:51:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/admin/resource_controller.rb:52:5: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
    def update_positions
    ^^^^^^^^^^^^^^^^^^^^
app/controllers/api/v0/orders_controller.rb:13:7: C: [Corrected] Rails/ActionOrder: Action index should appear before show.
      def index ...
      ^^^^^^^^^
app/controllers/api/v0/orders_controller.rb:23:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def show
      ^^^^^^^^
app/controllers/api/v0/orders_controller.rb:28:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/api/v0/orders_controller.rb:29:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def update
      ^^^^^^^^^^
app/controllers/spree/admin/images_controller.rb:26:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def create
      ^^^^^^^^^^
app/controllers/spree/admin/images_controller.rb:37:7: C: [Corrected] Rails/ActionOrder: Action edit should appear before create.
      def edit ...
      ^^^^^^^^
app/controllers/spree/admin/images_controller.rb:40:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/images_controller.rb:41:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def update
      ^^^^^^^^^^
app/controllers/spree/admin/invoices_controller.rb:19:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def create
      ^^^^^^^^^^
app/controllers/spree/admin/invoices_controller.rb:43:7: C: [Corrected] Rails/ActionOrder: Action show should appear before create.
      def show ...
      ^^^^^^^^
app/controllers/spree/admin/invoices_controller.rb:49:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/invoices_controller.rb:50:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def poll
      ^^^^^^^^
app/controllers/spree/admin/products_controller.rb:23:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def new
      ^^^^^^^
app/controllers/spree/admin/products_controller.rb:23:7: C: [Corrected] Rails/ActionOrder: Action show should appear before new.
      def show ...
      ^^^^^^^^
app/controllers/spree/admin/products_controller.rb:24:7: C: [Corrected] Rails/ActionOrder: Action index should appear before show.
      def index ...
      ^^^^^^^^^
app/controllers/spree/admin/products_controller.rb:27:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/products_controller.rb:27:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def create
      ^^^^^^^^^^
app/controllers/spree/admin/products_controller.rb:28:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/products_controller.rb:28:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def new
      ^^^^^^^
app/controllers/spree/admin/products_controller.rb:28:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def index
      ^^^^^^^^^
app/controllers/spree/admin/products_controller.rb:28:7: C: [Corrected] Rails/ActionOrder: Action index should appear before new.
      def index ...
      ^^^^^^^^^
app/controllers/spree/admin/products_controller.rb:29:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def new
      ^^^^^^^
app/controllers/spree/admin/products_controller.rb:32:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/products_controller.rb:32:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def create
      ^^^^^^^^^^
app/controllers/spree/admin/products_controller.rb:33:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def edit
      ^^^^^^^^
app/controllers/spree/admin/products_controller.rb:36:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def create
      ^^^^^^^^^^
app/controllers/spree/admin/products_controller.rb:38:7: C: [Corrected] Rails/ActionOrder: Action show should appear before create.
      def show ...
      ^^^^^^^^
app/controllers/spree/admin/products_controller.rb:42:7: C: [Corrected] Rails/ActionOrder: Action index should appear before create.
      def index ...
      ^^^^^^^^^
app/controllers/spree/admin/products_controller.rb:43:7: C: [Corrected] Rails/ActionOrder: Action index should appear before create.
      def index ...
      ^^^^^^^^^
app/controllers/spree/admin/products_controller.rb:43:7: C: [Corrected] Rails/ActionOrder: Action index should appear before show.
      def index ...
      ^^^^^^^^^
app/controllers/spree/admin/products_controller.rb:47:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/products_controller.rb:48:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def edit
      ^^^^^^^^
app/controllers/spree/admin/products_controller.rb:48:7: C: [Corrected] Rails/ActionOrder: Action edit should appear before create.
      def edit ...
      ^^^^^^^^
app/controllers/spree/admin/products_controller.rb:51:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/products_controller.rb:52:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def update
      ^^^^^^^^^^
app/controllers/spree/admin/taxons_controller.rb:13:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def create
      ^^^^^^^^^^
app/controllers/spree/admin/taxons_controller.rb:29:7: C: [Corrected] Rails/ActionOrder: Action edit should appear before create.
      def edit ...
      ^^^^^^^^
app/controllers/spree/admin/taxons_controller.rb:34:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/taxons_controller.rb:35:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def update
      ^^^^^^^^^^
app/controllers/spree/admin/variants_controller.rb:17:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def edit
      ^^^^^^^^
app/controllers/spree/admin/variants_controller.rb:18:7: C: [Corrected] Rails/ActionOrder: Action new should appear before edit.
      def new ...
      ^^^^^^^
app/controllers/spree/admin/variants_controller.rb:21:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/variants_controller.rb:21:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def update
      ^^^^^^^^^^
app/controllers/spree/admin/variants_controller.rb:22:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def create
      ^^^^^^^^^^
app/controllers/spree/admin/variants_controller.rb:31:7: C: [Corrected] Rails/ActionOrder: Action new should appear before update.
      def new ...
      ^^^^^^^
app/controllers/spree/admin/variants_controller.rb:34:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/variants_controller.rb:35:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def create
      ^^^^^^^^^^
app/controllers/spree/admin/variants_controller.rb:35:7: C: [Corrected] Rails/ActionOrder: Action create should appear before update.
      def create ...
      ^^^^^^^^^^
app/controllers/spree/admin/variants_controller.rb:42:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
      def update
      ^^^^^^^^^^
app/controllers/spree/admin/variants_controller.rb:55:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/spree/admin/variants_controller.rb:56:7: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
      def search
      ^^^^^^^^^^
app/controllers/user_confirmations_controller.rb:14:3: C: [Corrected] Rails/ActionOrder: Action show should appear before new.
  def show ...
  ^^^^^^^^
app/controllers/user_confirmations_controller.rb:15:3: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
  def new
  ^^^^^^^
app/controllers/user_confirmations_controller.rb:19:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/user_confirmations_controller.rb:20:3: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
  def create
  ^^^^^^^^^^
app/controllers/user_confirmations_controller.rb:21:3: C: [Corrected] Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 2.
  def create
  ^^^^^^^^^^
app/controllers/user_confirmations_controller.rb:37:3: C: [Corrected] Rails/ActionOrder: Action show should appear before create.
  def show ...
  ^^^^^^^^
app/controllers/user_confirmations_controller.rb:42:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.
app/controllers/user_confirmations_controller.rb:43:1: C: [Corrected] Layout/EmptyLines: Extra blank line detected.

1481 files inspected, 63 offenses detected, 63 offenses corrected
2023-08-01 22:50:21 +09:00
Neal Chambers
e49c9e9061 Regenerate Rubocop's TODO file 2023-08-01 22:50:21 +09:00
Matt-Yorkley
885bc46d88 Update tax_category in product v3 table 2023-08-01 11:49:04 +01:00
David Cook
f7a137049f Merge pull request #11296 from dacook/hide-git-errors
Prevent git errors from showing in command output
2023-08-01 12:16:53 +10:00
Matt-Yorkley
91fc4b51b4 Rescue ImageMagick errors 2023-07-31 17:21:49 +01:00
Mohamed ABDELLANI
7d38a7b381 remove order number next to Tax Invoice 2023-07-31 17:01:36 +01:00
Mohamed ABDELLANI
760b17042b fix existing tests 2023-07-31 16:31:24 +01:00
Mohamed ABDELLANI
0ce8fae7c9 replace invoice_number method with delegate 2023-07-31 16:31:24 +01:00
Mohamed ABDELLANI
8abb9d2ecf add invoice number to alternative invoices 2023-07-31 16:31:24 +01:00
Mohamed ABDELLANI
e66cd5aaa3 add order number & invoice number to invoices 2023-07-31 16:31:24 +01:00
dependabot[bot]
8dcaba695e chore(deps-dev): bump rubocop from 1.55.0 to 1.55.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.55.0 to 1.55.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.55.0...v1.55.1)

---
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-31 09:50:50 +00:00
dependabot[bot]
c885b42df1 chore(deps): bump @floating-ui/dom from 1.4.5 to 1.5.1
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.4.5 to 1.5.1.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.5.1/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-07-31 09:44:08 +00:00
Gaetan Craig-Riou
85adb9f345 Fix rubocop warning 2023-07-31 15:19:04 +10:00
Gaetan Craig-Riou
2857930263 Fix voucher adjustment request spec
Error messages have been updated to be more user friendly. This spec
was missed somehow.
2023-07-31 14:06:36 +10:00
Gaetan Craig-Riou
089d2b9c84 Clear any existing payment and payment fees when adding a voucher
If a user come back to checkout step 2 from step 3, the order
will have payment and possibly payment fee existing. This can
interfere with voucher calculation, so we clear them.
The user can then select a payment method again if needed
2023-07-31 12:05:52 +10:00
Maikel
aa92aac5a9 Style FrozenStringLiteralComment
Co-authored-by: jibees <jb.bellet@gmail.com>
2023-07-31 11:19:10 +10:00
Matt-Yorkley
64b29d40a8 Migrate data for tax_category_id from products to variants 2023-07-31 09:23:40 +10:00
Matt-Yorkley
e2094665c5 Update enterprise fee report tax_category fetching 2023-07-31 09:23:20 +10:00
Matt-Yorkley
07774c4572 Update tax category specs 2023-07-31 09:23:20 +10:00
Matt-Yorkley
d1209dd49b Update order_with_taxes factory 2023-07-31 09:23:20 +10:00
Matt-Yorkley
b593e356b0 Update product factories 2023-07-31 09:23:20 +10:00
Matt-Yorkley
a84f9ebd2e Allow passing tax_category to new variant when creating a new product 2023-07-31 09:23:20 +10:00
Matt-Yorkley
0df121bcc8 Move tax_category validations test 2023-07-31 09:23:20 +10:00
Matt-Yorkley
b2a7a931f3 Update tax_category tests 2023-07-31 09:23:20 +10:00
Matt-Yorkley
4cb291290b Update product factory 2023-07-31 09:23:20 +10:00
Matt-Yorkley
5a48721af4 Update serializers, views, and JS for bulk products edit 2023-07-31 09:23:20 +10:00
Matt-Yorkley
363bbded43 Update permitted attributes 2023-07-31 09:23:20 +10:00
Matt-Yorkley
a52516bcbf Move tax_category dropdown in edit pages 2023-07-31 09:23:20 +10:00
Matt-Yorkley
b12c130e02 Add tax_category column to variants table 2023-07-31 09:23:20 +10:00
Matt-Yorkley
4934d09a4c Update delegation and method chaining between product and tax_category 2023-07-31 09:23:20 +10:00
Matt-Yorkley
d33e780411 Move tax_category association from product to variant 2023-07-31 09:23:19 +10:00
bouaik
addbbc4006 fix margin in guest checkout 2023-07-29 07:52:55 -04:00
Cillian O'Ruanaidh
8039c0106a Set firstname correctly in spec/system/admin/orders_spec.rb 2023-07-28 15:04:47 +01:00
Cillian O'Ruanaidh
276b94de5b Sort orders by last name, then first name i.e. the same way bulk order management works 2023-07-28 14:20:29 +01:00
Gaetan Craig-Riou
33ef8def08 Update order total after removing a voucher
We need to do this to make sure when display the payment method
again.
Plus spec
2023-07-28 14:52:25 +10:00
Gaetan Craig-Riou
f35001dacc Update voucher adjustment and order total when adding a voucher
This is needed so we can check if payment is needed and display
no payment required when no payment needed
2023-07-28 14:27:27 +10:00
David Cook
ef62fb885d Check if record actually saved
I'm not sure if it will ever make a difference, but I think this makes more sense.
2023-07-28 14:11:45 +10:00
David Cook
be1a72743a Pending spec: vouchers should not require payment 2023-07-28 14:11:31 +10:00
David Cook
895f534afa Remove unnecessary extra page load 2023-07-28 14:11:19 +10:00
David Cook
febe6501c0 Prevent git errors from showing in command output
This would be a very rare case, but one time the git command failed, printing out an obscure "fatal" message to stderr which caused confusion.
2023-07-28 12:07:52 +10:00
Maikel Linke
b9ebcc9b1b Remove version number from DFC API URLs
While it's quite common to version APIs it's not possible with current
DFC tools. The architecture also uses URLs as identifiers for objects
like products. Having the id of an object change just because the format
of its description changes doesn't make sense. The DFC may solve this by
adding a version number in a different way.

By removing the version from our API URL, all object ids (URIs) should
be stable from now on.
2023-07-27 15:38:36 +10:00
Maikel Linke
4872855471 Update DFC context to newest version
The new DFC Connector is based on the new DFC context which changed all
URLs of all data types.

There's also a better way to access semantic properties now.
2023-07-27 15:38:36 +10:00
dependabot[bot]
34fbcb0e02 chore(deps): bump datafoodconsortium-connector
Bumps datafoodconsortium-connector from 1.0.0.pre.alpha.6 to 1.0.0.pre.alpha.8.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-27 15:38:36 +10:00
Maikel Linke
3b5b9ec54d Avoid network request to DFC context on export
This protects us from the DFC website going down or the DFC updating
the context with breaking changes. We are in control of updating the
context now (opt-in to newer versions).
2023-07-27 15:38:36 +10:00
Jean-Baptiste Bellet
1a7e99143b Update mobile variant size for white label logo to fit the same ratio
Default size is 217*44. On mobile, we used to use 75*26, but with a different image.

With the white label, using the same image, we should have the same ratio between default and mobile ; that's why I've updated the width of the variant to 128.
2023-07-26 14:43:06 +02:00
Cillian O'Ruanaidh
0c0b85f4c4 Validate voucher code doesn't contain new line characters 2023-07-21 12:32:36 +01:00
Cillian O'Ruanaidh
0d0df82522 Validate voucher code length doesn't exceed the database column length i.e. 255 characters 2023-07-21 12:32:36 +01:00
Cillian O'Ruanaidh
5d66c8a578 Strip leading and trailing whitespace from voucher codes before validation 2023-07-21 12:32:36 +01:00
Cillian O'Ruanaidh
535ca954de Voucher codes should only be a single line so use a text field instead of a textarea 2023-07-21 12:12:36 +01:00
Gaetan Craig-Riou
f9afc0ba96 Fix rubocop warning 2023-07-21 14:51:40 +10:00
Gaetan Craig-Riou
196b674bf1 Add system spec to test filtering by product 2023-07-21 14:51:40 +10:00
Gaetan Craig-Riou
2fff77b2ee Report, add filtering by product for line items 2023-07-21 14:51:40 +10:00
Gaetan Craig-Riou
ec78de7cea Add product dropdown on Order and Fulfillment reports
It includes loading the selected product to populate the dropdown
when needed.
2023-07-21 14:51:40 +10:00
Gaetan Craig-Riou
b4a3aaab19 Add select variant stimulus controller
This is similar to variantAutocomplete directive used on the
new order page. It doesn't have all the same feature, but it's a
start
2023-07-21 14:51:40 +10:00
Jean-Baptiste Bellet
1750575f8c Need to update tab before updating panel since we retrieve panel from tab 2023-07-19 16:28:10 +02:00
Jean-Baptiste Bellet
695f76d3b6 Update format to be solve prettier warnings 2023-07-19 16:28:03 +02:00
Jean-Baptiste Bellet
0065ece6a6 Show vouchers panel only if enterprise sells products (own or any) 2023-07-19 16:02:16 +02:00
Jean-Baptiste Bellet
731fb3c0b3 Update cable_ready and stimulus_reflex as well
In order to reflect the one used in package.json
2023-07-19 09:05:31 +02:00
dependabot[bot]
385f3964ad chore(deps): bump stimulus_reflex from 3.5.0-rc2 to 3.5.0-rc3
Bumps [stimulus_reflex](https://github.com/stimulusreflex/stimulus_reflex) from 3.5.0-rc2 to 3.5.0-rc3.
- [Release notes](https://github.com/stimulusreflex/stimulus_reflex/releases)
- [Changelog](https://github.com/stimulusreflex/stimulus_reflex/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stimulusreflex/stimulus_reflex/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-19 09:05:31 +02:00
Gaetan Craig-Riou
a5b2bc6293 Per review, Refactor VoucherAdjustmentsService
Change #calculate to #update and clean up internal code
2023-07-18 15:16:21 +10:00
Gaetan Craig-Riou
a584f9aaec Refactor VoucherAdjustmentsService
It's more inline with existing coding style
2023-07-18 14:39:01 +10:00
Gaetan Craig-Riou
0e0850ef49 Add specs to cover re calculation
It is important that the calculated voucher adjustments don't change
if they are recalculated and it is equally important that they are
updated if the order has changed
2023-07-14 14:47:39 +10:00
Gaetan Craig-Riou
5a59396a41 Remove call to VoucherAdjustmentService when creating a voucher
Voucher will be automatically applied when the order transition to
the confirmation step. No need to do the work twice.
2023-07-14 14:47:39 +10:00
Gaetan Craig-Riou
3d9542fec2 Per review, rename amount to adjustment_amount
It was confusing as I was re assigning a variable given as a parameter
2023-07-14 14:47:39 +10:00
Gaetan Craig-Riou
41271192e1 Per review, Makes quantity change more explicit 2023-07-14 14:47:39 +10:00
Gaetan Craig-Riou
751056ba39 As per review comment, spell out voucher code when entering a voucher
Plus, update other related spec to be consistent
2023-07-14 14:47:39 +10:00
Gaetan Craig-Riou
789ce39ff4 Fixing Rubocop errors 2023-07-14 14:47:39 +10:00
Gaetan Craig-Riou
a8062e951a Add a scenario to make sure voucher adjustment a recalculated
This is specificly for voucher with a tax component, but it will
also become relevant for percentage based voucher.
2023-07-14 14:47:03 +10:00
Gaetan Craig-Riou
edabc56b5c Add voucher calculation after updating an order
This is to make sure the voucher are recalculated when a customer
update the order content from the `/cart` page. This is tested
with system test
2023-07-14 14:47:03 +10:00
Gaetan Craig-Riou
ca7dcb82b8 Apply voucher after transitionning to the confirmation step
Testing that VoucherAdjustmentsService.calculate has been called after a
transition doens't work, skipping test for now.
2023-07-14 14:47:03 +10:00
Gaetan Craig-Riou
366cca7984 Prevent voucher adjustment from bein updated when update is called 2023-07-14 14:47:03 +10:00
Gaetan Craig-Riou
87790b29ae Fix VoucherAdjustmentsService.calculate so we can call it mutiple time
It now uses `order.pre_discount_total` to make any calculation, that
means you can call it multiple time and you will still get the same
adjustment amount, included_tax and tax adjustment when needed. This
is assuming nothing changed on the order.
2023-07-14 14:47:03 +10:00
Gaetan Craig-Riou
60c0c54eb2 Update create_adjustment to create with an amount of 0
Amount calculation is handled by VoucherAdjustmentService.calculate
2023-07-14 14:47:03 +10:00
Matt-Yorkley
04bbea53e1 Move voucher processing out of checkout controller 2023-07-14 14:46:16 +10:00
lauriejefferson
3039ef5535 updated order partials and locales 2023-06-23 12:06:45 -04:00
lauriejefferson
d3dba87ca1 added styling and table rows for 'Not Paid' order confirmation' 2023-06-21 17:22:12 -04:00
1231 changed files with 77483 additions and 18692 deletions

8
.env
View File

@@ -52,6 +52,8 @@ SMTP_PASSWORD="f00d"
# see="https://developers.google.com/maps/documentation/javascript/get-api-key
# GOOGLE_MAPS_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# see https://developers.google.com/maps/documentation/javascript/localization#Region
# GOOGLE_MAPS_REGION="XX"
# Stripe details for instance account
# Find these under 'Developers' -> 'API keys' in your Stripe account dashboard.
@@ -61,3 +63,9 @@ SMTP_PASSWORD="f00d"
# STRIPE_INSTANCE_PUBLISHABLE_KEY="pk_test_xxxx" # This can be a test key or a live key
# STRIPE_CLIENT_ID="ca_xxxx" # This can be a development ID or a production ID
# STRIPE_ENDPOINT_SECRET="whsec_xxxx"
# New relic settings
# see: https://one.eu.newrelic.com/admin-portal/, Administration > API keys to get the license key
# NEW_RELIC_AGENT_ENABLED=true
# NEW_RELIC_APP_NAME="Open Food Network"
# NEW_RELIC_LICENSE_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

View File

@@ -4,6 +4,9 @@
SECRET_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
STRIPE_SECRET_TEST_API_KEY="bogus_key"
STRIPE_CUSTOMER="bogus_customer"
STRIPE_ACCOUNT="bogus_account"
STRIPE_CLIENT_ID="bogus_client_id"
STRIPE_PUBLIC_TEST_API_KEY="bogus_stripe_publishable_key"
SITE_URL="test.host"

View File

@@ -10,16 +10,21 @@ assignees: ''
## 1. Preparation on Thursday
- [ ] Merge pull requests in the [Ready To Go] column
- [ ] Include translations: `tx pull --force`
- [ ] Include translations: `script/release/update_locales`
- [ ] Increment version number: `git push upstream HEAD:refs/tags/vX.Y.Z`
- Major: if server changes are required (eg. provision with ofn-install)
- Minor: larger change that is irreversible (eg. migration deleting data)
- Patch: all others. Shortcut: `script/release/tag`
- [ ] [Draft new release]. Look at previous [releases] for inspiration.
- [ ] Notify [#instance-managers] of user-facing changes.
- Select new release tag
- _Generate release notes_ and check to ensure all items are arranged in the right category.
- [ ] Notify [#instance-managers] of user-facing :eyes:, API :warning: and experimental :construction: changes.
## 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 -->
- [ ] Test build: [Deploy to Staging] with release tag.
## 3. Finish on Tuesday
@@ -29,7 +34,7 @@ assignees: ''
<pre>
cd ofn-install
git pull
ansible-playbook --limit all-prod --extra-vars "git_version=vx.y.z" playbooks/deploy.yml
ansible-playbook --limit all_prod --extra-vars "git_version=vX.Y.Z" playbooks/deploy.yml
</pre>
</details>
- [ ] Notify [#instance-managers]:
@@ -40,9 +45,9 @@ 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%23%23%23+Experimental+features+for+testing+:sunglasses:%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
[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
[Find build]: https://semaphoreci.com/openfoodfoundation/openfoodnetwork-2/branches/master
[Deploy to Staging]: https://github.com/openfoodfoundation/openfoodnetwork/actions/workflows/stage.yml
[#global-community]: https://app.slack.com/client/T02G54U79/C59ADD8F2

View File

@@ -20,7 +20,12 @@
<!-- Please select one for your PR and delete the other. -->
Changelog Category: User facing changes | Technical changes
Changelog Category (reviewers may add a label for the release notes):
- [x] User facing changes
- [ ] API changes (V0, V1, DFC or Webhook)
- [ ] Technical changes only
- [ ] Feature toggled
<!-- Choose a pull request title above which explains your change to a
a user of the Open Food Network app. -->

30
.github/release.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
changelog:
# Categorise according to what an instance manager needs to know
categories:
# Posted in advance for #instance-managers
- title: "User-facing changes 👀"
labels:
- '*'
exclude:
labels:
- api changes
- dependencies
- feature toggled
- technical changes only
- title: "API changes ⚠️"
labels:
- api changes
- title: "Experimental features for testing 🚧" # may be tested by instance managers
labels:
- feature toggled
# Instance managers ignore below
- title: "Technical changes 🛠️"
labels:
- technical changes only
- title: "Dependencies 📦"
labels:
- dependencies

View File

@@ -17,7 +17,7 @@ permissions:
contents: read
jobs:
knapsack_rspec_controllers:
controllers:
runs-on: ubuntu-22.04
services:
postgres:
@@ -85,7 +85,7 @@ jobs:
git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3)
bundle exec rake knapsack_pro:rspec
knapsack_rspec_models:
models:
runs-on: ubuntu-22.04
services:
postgres:
@@ -106,10 +106,10 @@ jobs:
# [n] - where the n is a number of parallel jobs you want to run your tests on.
# Use a higher number if you have slow tests to split them between more parallel jobs.
# Remember to update the value of the `ci_node_index` below to (0..n-1).
ci_node_total: [7]
ci_node_total: [5]
# Indexes for parallel jobs (starting from zero).
# E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc.
ci_node_index: [0, 1, 2, 3, 4, 5, 6]
ci_node_index: [0, 1, 2, 3, 4]
steps:
- uses: actions/checkout@v3
@@ -154,7 +154,7 @@ jobs:
run: |
bundle exec rake knapsack_pro:rspec
knapsack_rspec_system_admin:
system_admin:
runs-on: ubuntu-22.04
services:
postgres:
@@ -175,10 +175,10 @@ jobs:
# [n] - where the n is a number of parallel jobs you want to run your tests on.
# Use a higher number if you have slow tests to split them between more parallel jobs.
# Remember to update the value of the `ci_node_index` below to (0..n-1).
ci_node_total: [10]
ci_node_total: [13]
# Indexes for parallel jobs (starting from zero).
# E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc.
ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
steps:
- uses: actions/checkout@v3
@@ -232,7 +232,7 @@ jobs:
retention-days: 7
if-no-files-found: ignore
knapsack_rspec_system_consumer:
system_consumer:
runs-on: ubuntu-22.04
services:
postgres:
@@ -253,10 +253,10 @@ jobs:
# [n] - where the n is a number of parallel jobs you want to run your tests on.
# Use a higher number if you have slow tests to split them between more parallel jobs.
# Remember to update the value of the `ci_node_index` below to (0..n-1).
ci_node_total: [10]
ci_node_total: [12]
# Indexes for parallel jobs (starting from zero).
# E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc.
ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
steps:
- uses: actions/checkout@v3
@@ -310,7 +310,7 @@ jobs:
retention-days: 7
if-no-files-found: ignore
knapsack_rspec_engines:
engines:
runs-on: ubuntu-22.04
services:
postgres:
@@ -331,10 +331,10 @@ jobs:
# [n] - where the n is a number of parallel jobs you want to run your tests on.
# Use a higher number if you have slow tests to split them between more parallel jobs.
# Remember to update the value of the `ci_node_index` below to (0..n-1).
ci_node_total: [5]
ci_node_total: [2]
# Indexes for parallel jobs (starting from zero).
# E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc.
ci_node_index: [0, 1, 2, 3, 4]
ci_node_index: [0, 1]
steps:
- uses: actions/checkout@v3
@@ -388,7 +388,7 @@ jobs:
retention-days: 7
if-no-files-found: ignore
knapsack_rspec_test_the_rest:
test_the_rest:
runs-on: ubuntu-22.04
services:
postgres:

View File

@@ -28,7 +28,7 @@ jobs:
with:
mapi-token: ${{ secrets.MAPI_TOKEN }}
api-url: http://localhost:3000
api-spec: swagger/v1/swagger.yaml
api-spec: swagger/v1.yaml
target: openfoodfoundation/openfoodnetwork
duration: 1min
sarif-report: mapi.sarif

View File

@@ -13,6 +13,10 @@ on:
- staging.openfoodnetwork.org.uk
- staging.openfoodnetwork.org.au
- staging.coopcircuits.fr
commit_ref:
description: "Commit Reference"
type: string
required: false
jobs:
deploy_pr:
@@ -59,4 +63,4 @@ jobs:
- name: Deploy to Staging
if: success()
run: |
ssh ofn-deploy@${{ inputs.server }} -o LogLevel=ERROR "$GITHUB_REF_NAME $GITHUB_SHA"
ssh ofn-deploy@${{ inputs.server }} -o LogLevel=ERROR "$GITHUB_REF_NAME ${{ inputs.commit_ref || github.sha }}"

View File

@@ -13,7 +13,8 @@ postcss.config.js
# SCSS
# Enabled: most of admin
/app/webpacker/css/admin/globals/
/app/webpacker/css/admin/globals/mixins.scss
/app/webpacker/css/admin/globals/variables.scss
/app/webpacker/css/admin/shared/
/app/webpacker/css/admin_v3/globals/variables.scss
/app/webpacker/css/darkswarm/

View File

@@ -39,6 +39,7 @@ Metrics/BlockLength:
"put",
"resource",
"resources",
"response",
"scenario",
"shared_examples",
"shared_examples_for",
@@ -53,6 +54,13 @@ Rails/ApplicationRecord:
# Migrations should not contain application code:
- "db/migrate/*.rb"
# Allow many-to-many associations without explicit model.
# - It avoids the additional code of a model class.
# - It simplifies the declaration of the association.
# - Rails may know that there are no callbacks associated.
Rails/HasAndBelongsToMany:
Enabled: false
Rails/SkipsModelValidations:
AllowedMethods:
- "touch"
@@ -62,6 +70,10 @@ Rails/SkipsModelValidations:
- "update_column"
- "update_columns"
Rails/OutputSafety:
Exclude:
- 'spec/**/*'
Style/Documentation:
Enabled: false

File diff suppressed because it is too large Load Diff

16
Gemfile
View File

@@ -17,7 +17,7 @@ gem "image_processing"
gem 'activemerchant', '>= 1.78.0'
gem 'angular-rails-templates', '>= 0.3.0'
gem 'awesome_nested_set'
gem 'ransack', '~> 2.6.0'
gem 'ransack', '~> 4.1.0'
gem 'responders'
gem 'rexml'
gem 'webpacker', '~> 5'
@@ -32,6 +32,7 @@ gem "db2fog", github: "openfoodfoundation/db2fog", branch: "rails-7"
gem "fog-aws", "~> 2.0" # db2fog does not support v3
gem "mime-types" # required by fog
gem "validates_lengths_from_database"
gem "valid_email2"
gem "catalog", path: "./engines/catalog"
@@ -92,7 +93,7 @@ gem 'bootsnap', require: false
gem 'geocoder'
gem 'gmaps4rails'
gem 'mimemagic', '> 0.3.5'
gem 'paper_trail', '~> 12.1'
gem 'paper_trail'
gem 'rack-rewrite'
gem 'rack-timeout'
gem 'roadie-rails'
@@ -103,8 +104,8 @@ gem 'redis', '>= 4.0', require: ['redis', 'redis/connection/hiredis']
gem 'sidekiq'
gem 'sidekiq-scheduler'
gem "cable_ready", "5.0.0.rc2"
gem "stimulus_reflex", "3.5.0.rc2"
gem "cable_ready", "5.0.1"
gem "stimulus_reflex", "3.5.0.rc3"
gem 'combine_pdf'
gem 'wicked_pdf'
@@ -133,11 +134,15 @@ gem 'flipper-ui'
gem "view_component"
gem 'view_component_reflex', '3.1.14.pre9'
# mini_portile2 is needed when installing with Vargant
# https://openfoodnetwork.slack.com/archives/CEBMTRCNS/p1668439152992899
gem 'mini_portile2', '~> 2.8'
gem "faraday"
gem "private_address_check"
gem 'newrelic_rpm'
group :production, :staging do
gem 'sd_notify' # For better Systemd process management. Used by Puma.
end
@@ -155,8 +160,9 @@ group :test, :development do
gem 'letter_opener', '>= 1.4.1'
gem 'rspec-rails', ">= 3.5.2"
gem 'rspec-retry', require: false
gem 'rswag-specs'
gem 'rswag'
gem 'shoulda-matchers'
gem 'stimulus_reflex_testing'
gem 'timecop'
end

View File

@@ -41,109 +41,110 @@ GEM
remote: https://rubygems.org/
specs:
Ascii85 (1.1.0)
actioncable (7.0.6)
actionpack (= 7.0.6)
activesupport (= 7.0.6)
actioncable (7.0.8)
actionpack (= 7.0.8)
activesupport (= 7.0.8)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (7.0.6)
actionpack (= 7.0.6)
activejob (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
actionmailbox (7.0.8)
actionpack (= 7.0.8)
activejob (= 7.0.8)
activerecord (= 7.0.8)
activestorage (= 7.0.8)
activesupport (= 7.0.8)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.0.6)
actionpack (= 7.0.6)
actionview (= 7.0.6)
activejob (= 7.0.6)
activesupport (= 7.0.6)
actionmailer (7.0.8)
actionpack (= 7.0.8)
actionview (= 7.0.8)
activejob (= 7.0.8)
activesupport (= 7.0.8)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
actionpack (7.0.6)
actionview (= 7.0.6)
activesupport (= 7.0.6)
actionpack (7.0.8)
actionview (= 7.0.8)
activesupport (= 7.0.8)
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.6)
actionpack (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
actiontext (7.0.8)
actionpack (= 7.0.8)
activerecord (= 7.0.8)
activestorage (= 7.0.8)
activesupport (= 7.0.8)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.0.6)
activesupport (= 7.0.6)
actionview (7.0.8)
activesupport (= 7.0.8)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
active_model_serializers (0.8.4)
activemodel (>= 3.0)
active_storage_validations (1.0.4)
active_storage_validations (1.1.4)
activejob (>= 5.2.0)
activemodel (>= 5.2.0)
activestorage (>= 5.2.0)
activesupport (>= 5.2.0)
activejob (7.0.6)
activesupport (= 7.0.6)
activejob (7.0.8)
activesupport (= 7.0.8)
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.6)
activesupport (= 7.0.6)
activerecord (7.0.6)
activemodel (= 7.0.6)
activesupport (= 7.0.6)
activerecord-import (1.4.1)
activemodel (7.0.8)
activesupport (= 7.0.8)
activerecord (7.0.8)
activemodel (= 7.0.8)
activesupport (= 7.0.8)
activerecord-import (1.5.1)
activerecord (>= 4.2)
activerecord-postgresql-adapter (0.0.1)
pg
activerecord-session_store (2.0.0)
actionpack (>= 5.2.4.1)
activerecord (>= 5.2.4.1)
activerecord-session_store (2.1.0)
actionpack (>= 6.1)
activerecord (>= 6.1)
cgi (>= 0.3.6)
multi_json (~> 1.11, >= 1.11.2)
rack (>= 2.0.8, < 3)
railties (>= 5.2.4.1)
activestorage (7.0.6)
actionpack (= 7.0.6)
activejob (= 7.0.6)
activerecord (= 7.0.6)
activesupport (= 7.0.6)
rack (>= 2.0.8, < 4)
railties (>= 6.1)
activestorage (7.0.8)
actionpack (= 7.0.8)
activejob (= 7.0.8)
activerecord (= 7.0.8)
activesupport (= 7.0.8)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (7.0.6)
activesupport (7.0.8)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
acts-as-taggable-on (9.0.1)
activerecord (>= 6.0, < 7.1)
acts-as-taggable-on (10.0.0)
activerecord (>= 6.1, < 7.2)
acts_as_list (1.0.4)
activerecord (>= 4.2)
addressable (2.8.4)
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
aes_key_wrap (1.1.0)
afm (0.2.2)
angular-rails-templates (1.2.0)
railties (>= 5.0, < 7.1)
angular-rails-templates (1.2.1)
railties (>= 5.0, < 7.2)
sprockets (>= 3.0, < 5)
sprockets-rails
tilt
angular_rails_csrf (5.0.0)
angular_rails_csrf (6.0.0)
railties (>= 3, < 8)
angularjs-file-upload-rails (2.4.1)
angularjs-rails (1.8.0)
@@ -151,37 +152,38 @@ GEM
activerecord (>= 3.1.0, < 8)
ast (2.4.2)
attr_required (1.0.1)
awesome_nested_set (3.5.0)
activerecord (>= 4.0.0, < 7.1)
aws-eventstream (1.2.0)
aws-partitions (1.792.0)
aws-sdk-core (3.179.0)
aws-eventstream (~> 1, >= 1.0.2)
awesome_nested_set (3.6.0)
activerecord (>= 4.0.0, < 7.2)
aws-eventstream (1.3.0)
aws-partitions (1.877.0)
aws-sdk-core (3.190.1)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
aws-sigv4 (~> 1.8)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sdk-kms (1.75.0)
aws-sdk-core (~> 3, >= 3.188.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.132.0)
aws-sdk-core (~> 3, >= 3.179.0)
aws-sdk-s3 (1.142.0)
aws-sdk-core (~> 3, >= 3.189.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0)
aws-sigv4 (~> 1.8)
aws-sigv4 (1.8.0)
aws-eventstream (~> 1, >= 1.0.2)
bcrypt (3.1.18)
bcp47_spec (0.2.1)
bcrypt (3.1.19)
bigdecimal (3.0.2)
bindata (2.4.15)
bindex (0.8.1)
bootsnap (1.16.0)
bootsnap (1.17.0)
msgpack (~> 1.2)
bugsnag (6.26.0)
bugsnag (6.26.1)
concurrent-ruby (~> 1.0)
builder (3.2.4)
bullet (7.0.7)
bullet (7.1.5)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
cable_ready (5.0.0.rc2)
cable_ready (5.0.1)
actionpack (>= 5.2)
actionview (>= 5.2)
activesupport (>= 5.2)
@@ -202,6 +204,7 @@ GEM
marcel (~> 1.0)
nokogiri (~> 1.10, >= 1.10.4)
rubyzip (>= 1.3.0, < 3)
cgi (0.3.6)
choice (0.2.0)
chronic (0.10.2)
coderay (1.1.3)
@@ -212,7 +215,7 @@ GEM
coffee-script-source
execjs
coffee-script-source (1.12.2)
combine_pdf (1.0.23)
combine_pdf (1.0.26)
matrix
ruby-rc4 (>= 0.1.5)
concurrent-ruby (1.2.2)
@@ -220,25 +223,25 @@ GEM
crack (0.4.5)
rexml
crass (1.0.6)
css_parser (1.11.0)
css_parser (1.16.0)
addressable
cuprite (0.14.3)
cuprite (0.15)
capybara (~> 3.0)
ferrum (~> 0.13.0)
ferrum (~> 0.14.0)
database_cleaner (2.0.2)
database_cleaner-active_record (>= 2, < 3)
database_cleaner-active_record (2.1.0)
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
datafoodconsortium-connector (1.0.0.pre.alpha.6)
virtual_assembly-semantizer (~> 1.0, >= 1.0.4)
datafoodconsortium-connector (1.0.0.pre.alpha.9)
virtual_assembly-semantizer (~> 1.0, >= 1.0.5)
date (3.3.3)
debug (1.8.0)
irb (>= 1.5.0)
reline (>= 0.3.1)
debug (1.9.1)
irb (~> 1.10)
reline (>= 0.3.8)
debugger-linecache (1.2.0)
devise (4.9.2)
devise (4.9.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
@@ -246,7 +249,7 @@ GEM
warden (~> 1.2.3)
devise-encryptable (0.2.0)
devise (>= 2.1.0)
devise-i18n (1.11.0)
devise-i18n (1.12.0)
devise (>= 4.9.0)
devise-token_authenticatable (1.1.0)
devise (>= 4.0.0, < 5.0.0)
@@ -267,18 +270,18 @@ GEM
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
railties (>= 5.0.0)
faraday (2.7.10)
faraday-net_http (>= 2.0, < 3.1)
ruby2_keywords (>= 0.0.4)
faraday (2.9.0)
faraday-net_http (>= 2.0, < 3.2)
faraday-follow_redirects (0.3.0)
faraday (>= 1, < 3)
faraday-net_http (3.0.2)
ferrum (0.13)
faraday-net_http (3.1.0)
net-http
ferrum (0.14)
addressable (~> 2.5)
concurrent-ruby (~> 1.1)
webrick (~> 1.7)
websocket-driver (>= 0.6, < 0.8)
ffaker (2.21.0)
ffaker (2.23.0)
ffi (1.15.5)
flipper (0.26.2)
concurrent-ruby (< 2)
@@ -315,8 +318,8 @@ GEM
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
geocoder (1.8.2)
globalid (1.1.0)
activesupport (>= 5.0)
globalid (1.2.1)
activesupport (>= 6.1)
gmaps4rails (2.1.2)
good_migrations (0.2.1)
activerecord (>= 3.1)
@@ -340,10 +343,11 @@ GEM
ruby-vips (>= 2.0.17, < 3)
immigrant (0.3.6)
activerecord (>= 3.0)
io-console (0.6.0)
io-console (0.7.1)
ipaddress (0.8.3)
irb (1.6.4)
reline (>= 0.3.0)
irb (1.11.0)
rdoc
reline (>= 0.3.8)
jmespath (1.6.2)
jquery-rails (4.4.0)
rails-dom-testing (>= 1, < 3)
@@ -351,22 +355,22 @@ GEM
thor (>= 0.14, < 2.0)
jquery-ui-rails (4.2.1)
railties (>= 3.2.16)
json (2.6.3)
json-canonicalization (0.3.1)
json (2.7.1)
json-canonicalization (0.4.0)
json-jwt (1.16.3)
activesupport (>= 4.2)
aes_key_wrap
bindata
faraday (~> 2.0)
faraday-follow_redirects
json-ld (3.2.3)
json-ld (3.3.0)
htmlentities (~> 4.3)
json-canonicalization (~> 0.3)
json-canonicalization (~> 0.3, >= 0.3.2)
link_header (~> 0.0, >= 0.0.8)
multi_json (~> 1.15)
rack (~> 2.2)
rdf (~> 3.2, >= 3.2.9)
json-schema (3.0.0)
rack (>= 2.2, < 4)
rdf (~> 3.3)
json-schema (4.1.1)
addressable (>= 2.8)
json_spec (1.1.5)
multi_json (~> 1.0)
@@ -374,7 +378,7 @@ GEM
jsonapi-serializer (2.2.0)
activesupport (>= 4.2)
jwt (2.7.1)
knapsack_pro (5.3.4)
knapsack_pro (6.0.4)
rake
language_server-protocol (3.17.0.3)
launchy (2.5.0)
@@ -385,7 +389,7 @@ GEM
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
loofah (2.21.3)
loofah (2.22.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
@@ -396,34 +400,37 @@ GEM
marcel (1.0.2)
matrix (0.4.2)
method_source (1.0.0)
mime-types (3.4.1)
mime-types (3.5.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2021.0225)
mime-types-data (3.2023.1205)
mimemagic (0.4.3)
nokogiri (~> 1)
rake
mini_magick (4.11.0)
mini_mime (1.1.2)
mini_portile2 (2.8.4)
minitest (5.18.1)
mini_mime (1.1.5)
mini_portile2 (2.8.5)
minitest (5.20.0)
monetize (1.12.0)
money (~> 6.12)
money (6.16.0)
i18n (>= 0.6.4, <= 2)
msgpack (1.7.1)
msgpack (1.7.2)
multi_json (1.15.0)
multi_xml (0.6.0)
net-imap (0.3.6)
net-http (0.4.1)
uri
net-imap (0.4.2)
date
net-protocol
net-pop (0.1.2)
net-protocol
net-protocol (0.2.1)
timeout
net-smtp (0.3.3)
net-smtp (0.4.0)
net-protocol
nio4r (2.5.9)
nokogiri (1.15.3)
newrelic_rpm (9.7.0)
nio4r (2.7.0)
nokogiri (1.16.0)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oauth2 (1.4.11)
@@ -456,13 +463,13 @@ GEM
orm_adapter (0.5.0)
pagy (5.10.1)
activesupport
paper_trail (12.3.0)
activerecord (>= 5.2)
request_store (~> 1.1)
parallel (1.23.0)
paranoia (2.6.2)
activerecord (>= 5.1, < 7.1)
parser (3.2.2.3)
paper_trail (15.1.0)
activerecord (>= 6.1)
request_store (~> 1.4)
parallel (1.24.0)
paranoia (2.6.3)
activerecord (>= 5.1, < 7.2)
parser (3.2.2.4)
ast (~> 2.4.1)
racc
paypal-sdk-core (0.3.4)
@@ -470,7 +477,7 @@ GEM
xml-simple
paypal-sdk-merchant (1.117.2)
paypal-sdk-core (~> 0.3.0)
pdf-reader (2.11.0)
pdf-reader (2.12.0)
Ascii85 (~> 1.0)
afm (~> 0.2.1)
hashery (~> 2.0)
@@ -481,15 +488,17 @@ GEM
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
public_suffix (5.0.3)
puma (6.3.0)
psych (5.1.2)
stringio
public_suffix (5.0.4)
puma (6.4.2)
nio4r (~> 2.0)
query_count (1.1.1)
activerecord (>= 4.2)
railties (>= 4.2)
raabro (1.4.0)
racc (1.7.1)
rack (2.2.7)
racc (1.7.3)
rack (2.2.8)
rack-mini-profiler (2.3.4)
rack (>= 1.2.0)
rack-oauth2 (1.21.3)
@@ -506,25 +515,25 @@ GEM
rack-test (2.1.0)
rack (>= 1.3)
rack-timeout (0.6.3)
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)
rails (7.0.8)
actioncable (= 7.0.8)
actionmailbox (= 7.0.8)
actionmailer (= 7.0.8)
actionpack (= 7.0.8)
actiontext (= 7.0.8)
actionview (= 7.0.8)
activejob (= 7.0.8)
activemodel (= 7.0.8)
activerecord (= 7.0.8)
activestorage (= 7.0.8)
activesupport (= 7.0.8)
bundler (>= 1.15.0)
railties (= 7.0.6)
railties (= 7.0.8)
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.1.1)
rails-dom-testing (2.2.0)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
@@ -536,46 +545,49 @@ GEM
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
rails-i18n (7.0.7)
rails-i18n (7.0.8)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
rails_safe_tasks (1.0.0)
railties (7.0.6)
actionpack (= 7.0.6)
activesupport (= 7.0.6)
railties (7.0.8)
actionpack (= 7.0.8)
activesupport (= 7.0.8)
method_source
rake (>= 12.2)
thor (~> 1.0)
zeitwerk (~> 2.5)
rainbow (3.1.1)
rake (13.0.6)
ransack (2.6.0)
activerecord (>= 6.0.4)
activesupport (>= 6.0.4)
rake (13.1.0)
ransack (4.1.1)
activerecord (>= 6.1.5)
activesupport (>= 6.1.5)
i18n
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rdf (3.2.9)
rdf (3.3.1)
bcp47_spec (~> 0.2)
link_header (~> 0.0, >= 0.0.8)
rdoc (6.6.2)
psych (>= 4.0.0)
redcarpet (3.6.0)
redis (4.8.1)
redis-client (0.14.1)
redis-client (0.18.0)
connection_pool
regexp_parser (2.8.1)
reline (0.3.3)
regexp_parser (2.8.3)
reline (0.4.1)
io-console (~> 0.5)
request_store (1.5.1)
rack (>= 1.4)
responders (3.1.0)
responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.6)
roadie (5.0.1)
roadie (5.2.0)
css_parser (~> 1.4)
nokogiri (~> 1.8)
roadie-rails (3.0.0)
railties (>= 5.1, < 7.1)
nokogiri (~> 1.15)
roadie-rails (3.1.0)
railties (>= 5.1, < 8.0)
roadie (~> 5.0)
rodf (1.2.0)
builder (>= 3.0)
@@ -592,10 +604,10 @@ GEM
rspec-expectations (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.5)
rspec-mocks (3.12.6)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-rails (6.0.3)
rspec-rails (6.1.0)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
@@ -606,40 +618,45 @@ GEM
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.12.1)
rswag-api (2.10.1)
railties (>= 3.1, < 7.1)
rswag-specs (2.10.1)
activesupport (>= 3.1, < 7.1)
json-schema (>= 2.2, < 4.0)
railties (>= 3.1, < 7.1)
rswag (2.13.0)
rswag-api (= 2.13.0)
rswag-specs (= 2.13.0)
rswag-ui (= 2.13.0)
rswag-api (2.13.0)
activesupport (>= 3.1, < 7.2)
railties (>= 3.1, < 7.2)
rswag-specs (2.13.0)
activesupport (>= 3.1, < 7.2)
json-schema (>= 2.2, < 5.0)
railties (>= 3.1, < 7.2)
rspec-core (>= 2.14)
rswag-ui (2.10.1)
actionpack (>= 3.1, < 7.1)
railties (>= 3.1, < 7.1)
rubocop (1.55.0)
rswag-ui (2.13.0)
actionpack (>= 3.1, < 7.2)
railties (>= 3.1, < 7.2)
rubocop (1.59.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.2.2.3)
parser (>= 3.2.2.4)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.28.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.29.0)
rubocop-ast (1.30.0)
parser (>= 3.2.1.0)
rubocop-rails (2.20.2)
rubocop-rails (2.23.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
ruby-graphviz (1.2.5)
rexml
ruby-progressbar (1.13.0)
ruby-rc4 (0.1.5)
ruby-vips (2.1.4)
ffi (~> 1.12)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
rufus-scheduler (3.8.2)
fugit (~> 1.1, >= 1.1.6)
@@ -655,9 +672,9 @@ GEM
tilt (>= 1.1, < 3)
sd_notify (0.1.1)
semantic_range (3.0.0)
shoulda-matchers (5.3.0)
shoulda-matchers (6.0.0)
activesupport (>= 5.2.0)
sidekiq (7.1.2)
sidekiq (7.2.0)
concurrent-ruby (< 2)
connection_pool (>= 2.3.0)
rack (>= 2.2.4)
@@ -675,7 +692,7 @@ GEM
spreadsheet_architect (5.0.0)
caxlsx (>= 3.3.0, < 4)
rodf (>= 1.0.0, < 2)
spring (4.1.1)
spring (4.1.3)
spring-commands-rspec (1.0.4)
spring (>= 0.9.1)
sprockets (3.7.2)
@@ -692,34 +709,38 @@ GEM
state_machines-activerecord (0.9.0)
activerecord (>= 6.0)
state_machines-activemodel (>= 0.9.0)
stimulus_reflex (3.5.0.rc2)
stimulus_reflex (3.5.0.rc3)
actioncable (>= 5.2, < 8)
actionpack (>= 5.2, < 8)
actionview (>= 5.2, < 8)
activesupport (>= 5.2, < 8)
cable_ready (>= 5.0.0.rc2)
cable_ready (~> 5.0)
nokogiri (~> 1.0)
rack (>= 2, < 4)
railties (>= 5.2, < 8)
redis (>= 4.0, < 6.0)
stimulus_reflex_testing (0.3.0)
stimulus_reflex (>= 3.3.0)
stringex (2.8.6)
stripe (8.6.0)
stringio (3.1.0)
stripe (10.3.0)
swd (1.3.0)
activesupport (>= 3)
attr_required (>= 0.0.5)
httpclient (>= 2.4)
temple (0.8.2)
thor (1.2.2)
thor (1.3.0)
thread-local (1.1.0)
tilt (2.1.0)
timecop (0.9.6)
tilt (2.3.0)
timecop (0.9.8)
timeout (0.4.0)
ttfunk (1.7.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (2.4.2)
unicode-display_width (2.5.0)
uniform_notifier (1.16.0)
valid_email2 (4.0.6)
uri (0.13.0)
valid_email2 (5.1.1)
activemodel (>= 3.2)
mail (~> 2.5)
validate_email (0.1.6)
@@ -728,8 +749,10 @@ GEM
validate_url (1.0.15)
activemodel (>= 3.0.0)
public_suffix
validates_lengths_from_database (0.8.0)
activerecord (>= 4)
vcr (6.2.0)
view_component (3.5.0)
view_component (3.10.0)
activesupport (>= 5.2.0, < 8.0)
concurrent-ruby (~> 1.0)
method_source (~> 1.0)
@@ -737,11 +760,11 @@ GEM
rails (>= 5.2, < 8.0)
stimulus_reflex (>= 3.5.0.pre2)
view_component (>= 2.28.0)
virtual_assembly-semantizer (1.0.4)
virtual_assembly-semantizer (1.0.5)
json-ld (~> 3.2, >= 3.2.3)
warden (1.2.9)
rack (>= 2.0.9)
web-console (4.2.0)
web-console (4.2.1)
actionview (>= 6.0.0)
activemodel (>= 6.0.0)
bindex (>= 0.4.0)
@@ -758,8 +781,8 @@ GEM
rack-proxy (>= 0.6.1)
railties (>= 5.2)
semantic_range (>= 2.3.0)
webrick (1.7.0)
websocket-driver (0.7.5)
webrick (1.8.1)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
whenever (1.0.0)
@@ -770,7 +793,7 @@ GEM
xml-simple (1.1.8)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.8)
zeitwerk (2.6.12)
PLATFORMS
ruby
@@ -796,7 +819,7 @@ DEPENDENCIES
bootsnap
bugsnag
bullet
cable_ready (= 5.0.0.rc2)
cable_ready (= 5.0.1)
cancancan (~> 1.15.0)
capybara
catalog!
@@ -847,13 +870,14 @@ DEPENDENCIES
mimemagic (> 0.3.5)
mini_portile2 (~> 2.8)
monetize (~> 1.11)
newrelic_rpm
oauth2 (~> 1.4.7)
omniauth-rails_csrf_protection
omniauth_openid_connect
openid_connect (~> 1.3)
order_management!
pagy (~> 5.1)
paper_trail (~> 12.1)
paper_trail
paranoia (~> 2.4)
paypal-sdk-merchant (= 1.117.2)
pdf-reader
@@ -870,7 +894,7 @@ DEPENDENCIES
rails-erd
rails-i18n
rails_safe_tasks (~> 1.0)
ransack (~> 2.6.0)
ransack (~> 4.1.0)
redcarpet
redis (>= 4.0)
responders
@@ -879,8 +903,8 @@ DEPENDENCIES
roo
rspec-rails (>= 3.5.2)
rspec-retry
rswag
rswag-api
rswag-specs
rswag-ui
rubocop
rubocop-rails
@@ -894,11 +918,13 @@ DEPENDENCIES
spring
spring-commands-rspec
state_machines-activerecord
stimulus_reflex (= 3.5.0.rc2)
stimulus_reflex (= 3.5.0.rc3)
stimulus_reflex_testing
stringex (~> 2.8.5)
stripe
timecop
valid_email2
validates_lengths_from_database
vcr
view_component
view_component_reflex (= 3.1.14.pre9)

View File

@@ -1,5 +1,4 @@
[![Build](https://github.com/openfoodfoundation/openfoodnetwork/actions/workflows/build.yml/badge.svg)](https://github.com/openfoodfoundation/openfoodnetwork/actions/workflows/build.yml)
[![Code Climate](https://codeclimate.com/github/openfoodfoundation/openfoodnetwork.png)](https://codeclimate.com/github/openfoodfoundation/openfoodnetwork)
# Open Food Network
@@ -45,7 +44,7 @@ We use [KnapsackPro](https://knapsackpro.com/) for optimal parallelisation of ou
## Licence
Copyright (c) 2012 - 2022 Open Food Foundation, released under the AGPL licence.
Copyright (c) 2012 - 2024 Open Food Foundation, released under the AGPL licence.
[survey]: https://docs.google.com/a/eaterprises.com.au/forms/d/1zxR5vSiU9CigJ9cEaC8-eJLgYid8CR8er7PPH9Mc-30/edit#
[slack-invite]: https://join.slack.com/t/openfoodnetwork/shared_invite/zt-9sjkjdlu-r02kUMP1zbrTgUhZhYPF~A

View File

@@ -135,6 +135,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
display_name: null
on_hand: null
price: null
tax_category_id: null
DisplayProperties.setShowVariants product.id, true
@@ -247,7 +248,6 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
else
product.variant_unit = product.variant_unit_scale = null
$scope.packVariant product, product.master if product.master
if product.variants
for id, variant of product.variants
@@ -298,7 +298,6 @@ filterSubmitProducts = (productsToFilter) ->
if product.hasOwnProperty("id")
filteredProduct = {id: product.id}
filteredVariants = []
filteredMaster = null
hasUpdatableProperty = false
if product.hasOwnProperty("variants")
@@ -308,16 +307,6 @@ filterSubmitProducts = (productsToFilter) ->
variantHasUpdatableProperty = result.hasUpdatableProperty
filteredVariants.push filteredVariant if variantHasUpdatableProperty
if product.master?.hasOwnProperty("unit_value")
filteredMaster ?= { id: product.master.id }
filteredMaster.unit_value = product.master.unit_value
if product.master?.hasOwnProperty("unit_description")
filteredMaster ?= { id: product.master.id }
filteredMaster.unit_description = product.master.unit_description
if product.master?.hasOwnProperty("display_as")
filteredMaster ?= { id: product.master.id }
filteredMaster.display_as = product.master.display_as
if product.hasOwnProperty("sku")
filteredProduct.sku = product.sku
hasUpdatableProperty = true
@@ -346,15 +335,9 @@ filterSubmitProducts = (productsToFilter) ->
if product.hasOwnProperty("category_id")
filteredProduct.primary_taxon_id = product.category_id
hasUpdatableProperty = true
if product.hasOwnProperty("tax_category_id")
filteredProduct.tax_category_id = product.tax_category_id
hasUpdatableProperty = true
if product.hasOwnProperty("inherits_properties")
filteredProduct.inherits_properties = product.inherits_properties
hasUpdatableProperty = true
if filteredMaster?
filteredProduct.master_attributes = filteredMaster
hasUpdatableProperty = true
if filteredVariants.length > 0 # Note that the name of the property changes to enable mass assignment of variants attributes with rails
filteredProduct.variants_attributes = filteredVariants
hasUpdatableProperty = true
@@ -389,6 +372,9 @@ filterSubmitVariant = (variant) ->
if variant.hasOwnProperty("display_name")
filteredVariant.display_name = variant.display_name
hasUpdatableProperty = true
if variant.hasOwnProperty("tax_category_id")
filteredVariant.tax_category_id = variant.tax_category_id
hasUpdatableProperty = true
if variant.hasOwnProperty("display_as")
filteredVariant.display_as = variant.display_as
hasUpdatableProperty = true

View File

@@ -11,14 +11,8 @@ angular.module("admin.indexUtils").directive "objForUpdate", (switchClass, pendi
pendingChanges.remove(scope.object().id, scope.attr)
scope.clear()
else
change =
object: scope.object()
type: scope.type
attr: scope.attr
value: if value? then value else ""
scope: scope
scope.pending()
pendingChanges.add(scope.object().id, scope.attr, change)
addPendingChange(scope.attr, value ? "")
scope.reset = (value) ->
scope.savedValue = value
@@ -34,3 +28,33 @@ angular.module("admin.indexUtils").directive "objForUpdate", (switchClass, pendi
scope.clear = ->
switchClass( element, "", ["update-pending", "update-error", "update-success"], false )
# When a list of customer is filtered and we removed the "filtered value" from a customer, we
# want to make sure the customer is updated. IE. filtering by tag, and removing said tag.
# Deleting the "filtered value" from a customer will remove the customer entry, thus
# removing "objForUpdate" directive from the active scope. That means $watch won't pick up
# the attribute changed.
# To ensure the customer is still updated, we check on the $destroy event to see if
# the attribute has changed, if so we queue up the change.
scope.$on '$destroy', (value) ->
# No update
return if scope.object()[scope.attr] is scope.savedValue
# For some reason the code attribute is removed from the object when cleared, so we add
# an emptyvalue so it gets updated properly
if scope.attr is "code" and scope.object()[scope.attr] is undefined
scope.object()["code"] = ""
# Queuing up change
addPendingChange(scope.attr, scope.object()[scope.attr])
# private
addPendingChange = (attr, value) ->
change =
object: scope.object()
type: scope.type
attr: attr
value: value
scope: scope
pendingChanges.add(scope.object().id, attr, change)

View File

@@ -24,6 +24,9 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
"order_bill_address_firstname",
"order_bill_address_lastname",
"order_bill_address_full_name",
"order_bill_address_full_name_reversed",
"order_bill_address_full_name_with_comma",
"order_bill_address_full_name_with_comma_reversed",
"variant_product_supplier_name",
"order_email",
"order_number",

View File

@@ -42,8 +42,10 @@ angular.module('admin.payments').factory 'Payment', (AdminStripeElements, curren
submit: =>
munged = @preprocess()
PaymentResource.create({order_id: munged.order_id}, munged, (response, headers, status)=>
$window.location.pathname = "/admin/orders/" + munged.order_id + "/payments"
PaymentResource.create({order_id: munged.order_id}, munged, (response, headers, status) ->
rawHtml = Object.values(response).join('').replace('[object Object]true', '')
document.body.innerHTML = rawHtml
$window.history.pushState({}, '', "/admin/orders/" + munged.order_id + "/payments")
, (response) ->
StatusMessage.display 'error', t("spree.admin.payments.source_forms.stripe.error_saving_payment")
)

View File

@@ -2,6 +2,9 @@ angular.module("admin.products").factory "VariantUnitManager", (availableUnits)
class VariantUnitManager
@units:
'weight':
0.001:
name: 'mg'
system: 'metric'
1.0:
name: 'g'
system: 'metric'
@@ -21,12 +24,21 @@ angular.module("admin.products").factory "VariantUnitManager", (availableUnits)
0.001:
name: 'mL'
system: 'metric'
0.01:
name: 'cL'
system: 'metric'
0.1:
name: 'dL'
system: 'metric'
1.0:
name: 'L'
system: 'metric'
1000.0:
name: 'kL'
system: 'metric'
4.54609:
name: 'gal'
system: 'metric'
'items':
1:
name: 'items'
@@ -60,8 +72,13 @@ angular.module("admin.products").factory "VariantUnitManager", (availableUnits)
@compatibleUnitScales: (scale, unitType) ->
scaleSystem = @units[unitType][scale]['system']
(parseFloat(scale) for scale, scaleInfo of @units[unitType] when scaleInfo['system'] == scaleSystem).sort (a, b) ->
a - b
if availableUnits
available = availableUnits.split(",")
(parseFloat(scale) for scale, scaleInfo of @units[unitType] when scaleInfo['system'] == scaleSystem and available.includes(scaleInfo['name'])).sort (a, b) ->
a - b
else
(parseFloat(scale) for scale, scaleInfo of @units[unitType] when scaleInfo['system'] == scaleSystem).sort (a, b) ->
a - b
@systemOfMeasurement: (scale, unitType) ->
if @units[unitType][scale]

View File

@@ -32,9 +32,6 @@ jQuery(function($) {
});
}
// Make flash messages dissapear
setTimeout('$(".flash").fadeOut()', 5000);
// Highlight hovered table column
$('table tbody tr td.actions a').hover(function(){
var tr = $(this).closest('tr');

View File

@@ -50,11 +50,11 @@ $(document).ready(function() {
if (quantity > maxQuantity) {
quantity = maxQuantity;
save.parents('tr').find('input.line_item_quantity').val(maxQuantity);
ofnAlert(t("js.admin.orders.quantity_adjusted"));
ofnAlert(t("js.admin.orders.quantity_unavailable"));
} else {
adjustItems(shipment_number, variant_id, quantity, true);
}
toggleItemEdit();
adjustItems(shipment_number, variant_id, quantity, true);
return false;
}
$('a.save-item').click(handle_save_click);

View File

@@ -9,10 +9,9 @@ angular.module('Darkswarm').controller "RegistrationFormCtrl", ($scope, Registra
$scope.create = (form) ->
if ($scope.valid(form))
$scope.disableButton()
EnterpriseRegistrationService.create().then(() ->
EnterpriseRegistrationService.create($scope.enableButton).then(() ->
$scope.enableButton()
)
end
$scope.update = (nextStep, form) ->
EnterpriseRegistrationService.update(nextStep) if $scope.valid(form)

View File

@@ -19,7 +19,7 @@
.name {{ product.name }}
.supplier {{ product.supplier_name }}
.exchange-product-variant{'ng-repeat' => 'variant in product.variants | visibleVariants:exchange:order_cycle.visible_variants_for_outgoing_exchanges | filter:variantSuppliedToOrderCycle'}
.exchange-product-variant{'ng-repeat' => 'variant in product.variants | visibleVariants:exchange:order_cycle.visible_variants_for_outgoing_exchanges | filter:variantSuppliedToOrderCycle as filteredVariants'}
%label
%input{ type: 'checkbox', name: 'order_cycle_outgoing_exchange_{{ $parent.$parent.$index }}_variants_{{ variant.id }}',
value: 1,
@@ -27,5 +27,8 @@
'id' => 'order_cycle_outgoing_exchange_{{ $parent.$parent.$index }}_variants_{{ variant.id }}',
'ng-disabled' => '!order_cycle.editable_variants_for_outgoing_exchanges.hasOwnProperty(exchange.enterprise_id) || order_cycle.editable_variants_for_outgoing_exchanges[exchange.enterprise_id].indexOf(variant.id) < 0' }
{{ variant.label }}
%em{ 'ng-if' => 'filteredVariants.length === 0' }
{{ 'js.admin.panels.exchange_products.no_variants' | t }}
%div{ 'ng-include' => "'admin/panels/exchange_products_panel_footer.html'" }

View File

@@ -1,5 +1,7 @@
.exchange-load-all-variants
%div
{{ 'js.admin.panels.exchange_products.variants_loaded' | t:{ num_of_variants_loaded: enterprises[exchange.enterprise_id].loaded_variants, total_number_of_variants: exchangeTotalVariants(exchange) } }}
%em{ 'ng-if': 'enterprises[exchange.enterprise_id].loaded_variants > exchangeTotalVariants(exchange)' }
{{ 'js.admin.panels.exchange_products.some_variants_hidden' | t }}
%a{ 'ng-click' => 'loadAllExchangeProducts(exchange)', 'ng-show' => 'enterprises[exchange.enterprise_id].last_page_loaded < enterprises[exchange.enterprise_id].num_of_pages' }
{{ 'js.admin.panels.exchange_products.load_all_variants' | t }}

View File

@@ -14,7 +14,7 @@
{{'hubs_delivery' | t}}
.row
.columns.small-12
%a.cta-hub{"ng-href" => "{{::enterprise.path}}#/shop", "ng-attr-target" => "{{ embedded_layout ? '_blank' : undefined}}",
%a.cta-hub{"ng-href" => "{{::enterprise.path}}#/shop_panel", "ng-attr-target" => "{{ embedded_layout ? '_blank' : undefined}}",
"ng-class" => "{primary: enterprise.active, secondary: !enterprise.active}",
"ng-click" => "$close()",
"ofn-change-hub" => "enterprise"}

View File

@@ -12,7 +12,7 @@
.row
.columns.small-12
%a.cta-hub{"ng-repeat" => "hub in enterprise.hubs | filter:{id: '!'+enterprise.id} | orderBy:'-active'",
"ng-href" => "{{::hub.path}}#/shop", "ofn-empties-cart" => "hub",
"ng-href" => "{{::hub.path}}#/shop_panel", "ofn-empties-cart" => "hub",
"ng-class" => "::{primary: hub.active, secondary: !hub.active}",
"ng-click" => "$close()",
"ofn-change-hub" => "hub"}

View File

@@ -11,7 +11,7 @@
%filter-selector{ 'selector-set' => "productPropertySelectors", objects: "[product] | propertiesWithValuesOf" }
.product-description{"ng-if" => "product.description_html"}
%p.text-small{"ng-bind-html" => "::product.description_html"}
%p.text-small{"ng-bind-html" => "::product.description_html", "data-controller" => "add-blank-to-link"}
.columns.small-12.medium-6.large-6.product-img
%img{"ng-src" => "{{::product.largeImage}}", "ng-if" => "::product.largeImage"}

View File

@@ -1 +1 @@
%button.question-mark-icon{"ng-class" => "{open: tt_isOpen}", type: 'button'}
.question-mark-icon{"ng-class" => "{open: tt_isOpen}", type: 'button'}

View File

@@ -1,14 +1,29 @@
# frozen_string_literal: true
class ConfirmModalComponent < ModalComponent
def initialize(id:, confirm_actions: nil, reflex: nil, controller: nil, message: nil,
confirm_reflexes: nil)
super(id: id, close_button: true)
# @param actions_alignment_class [String] possible classes: 'justify-space-around', 'justify-end'
def initialize(
id:,
reflex: nil,
controller: nil,
message: nil,
confirm_actions: nil,
confirm_reflexes: nil,
confirm_button_class: :primary,
confirm_button_text: I18n.t('js.admin.modals.confirm'),
cancel_button_text: I18n.t('js.admin.modals.cancel'),
actions_alignment_class: 'justify-space-around'
)
super(id:, close_button: true)
@confirm_actions = confirm_actions
@reflex = reflex
@confirm_reflexes = confirm_reflexes
@controller = controller
@message = message
@confirm_button_class = confirm_button_class
@confirm_button_text = confirm_button_text
@cancel_button_text = cancel_button_text
@actions_alignment_class = actions_alignment_class
end
private

View File

@@ -5,6 +5,6 @@
= render @message if @message
.modal-actions
%input{ class: "button icon-plus #{close_button_class}", type: 'button', value: t('js.admin.modals.cancel'), "data-action": "click->modal#close" }
%input{ class: "button icon-plus primary", type: 'button', value: t('js.admin.modals.confirm'), "data-action": @confirm_actions, "data-reflex": @confirm_reflexes }
%div{ class: "modal-actions #{@actions_alignment_class}" }
%input{ class: "button icon-plus #{close_button_class}", type: 'button', value: @cancel_button_text, "data-action": "click->modal#close" }
%input{ id: 'modal-confirm-button', class: "button icon-plus #{@confirm_button_class}", type: 'button', value: @confirm_button_text, "data-action": @confirm_actions, "data-reflex": @confirm_reflexes }

View File

@@ -1,4 +1,22 @@
.modal-actions {
display: flex;
justify-content: space-around;
&.justify-space-around {
justify-content: space-around;
}
&.justify-end {
justify-content: flex-end;
input[type="button"] {
margin: 0 5px;
}
@media only screen and (max-width: 1024px) {
flex-direction: column;
justify-content: space-around;
input[type="button"] {
margin: 5px 0;
}
}
}
}

View File

@@ -2,6 +2,6 @@
class HelpModalComponent < ModalComponent
def initialize(id:, close_button: true)
super(id: id, close_button: close_button)
super(id:, close_button:)
end
end

View File

@@ -2,6 +2,9 @@
visibility: visible;
position: fixed;
top: 3em;
&.in {
padding: 1.2rem;
}
}
/* prevent arrow on selected admin menu item appearing above modal */

View File

@@ -1,15 +0,0 @@
# frozen_string_literal: true
class PaginationComponent < ViewComponentReflex::Component
def initialize(pagy:, data:)
super
@count = pagy.count
@page = pagy.page
@per_page = pagy.items
@pages = pagy.pages
@next = pagy.next
@prev = pagy.prev
@data = data
@series = pagy.series
end
end

View File

@@ -1,16 +0,0 @@
= component_controller do
%nav{"aria-label": "pagination"}
.pagination
.pagination-prev{data: @prev.nil? ? nil : @data, "data-page": @prev, class: "#{'inactive' if @prev.nil?}"}
= I18n.t "components.pagination.previous"
.pagination-pages
- @series.each do |page|
- if page == :gap
.pagination-gap
- else
.pagination-page{data: @data, "data-page": page, class: "#{'active' if page.to_i == @page}"}
= page
.pagination-next{data: @next.nil? ? nil : @data, "data-page": @next, class: "#{'inactive' if @next.nil?}"}
= I18n.t "components.pagination.next"

View File

@@ -1,69 +0,0 @@
nav {
.pagination {
display: flex;
justify-content: space-between;
align-items: flex-start;
font-size: 14px;
.pagination-prev, .pagination-next {
cursor: pointer;
&:after, &:before {
font-size: 2em;
position: relative;
top: 3px;
}
&.inactive {
cursor: default;
color: $disabled-dark;
}
}
.pagination-prev {
margin-left: 10px;
&:before {
content: "";
margin-left: 10px;
margin-right: 10px;
}
}
.pagination-next {
margin-right: 10px;
&:after {
content: "";
margin-left: 10px;
margin-right: 10px;
}
}
.pagination-pages {
display: flex;
align-items: flex-end;
.pagination-gap, .pagination-page {
padding: 0 0.5rem;
margin-left: 10px;
margin-right: 10px;
}
.pagination-gap {
color: $disabled-dark;
}
.pagination-page {
color: $color-4;
cursor: pointer;
&.active {
border-top: 3px solid $spree-blue;
color: $spree-blue;
cursor: default;
}
}
}
}
}

View File

@@ -1,57 +0,0 @@
# frozen_string_literal: true
class ProductComponent < ViewComponentReflex::Component
DATETIME_FORMAT = '%F %T'
def initialize(product:, columns:)
super
@product = product
@image = @product.image if product.image.present?
@columns = columns.map do |c|
{
id: c[:value],
value: column_value(c[:value])
}
end
end
# This must be define when using ProductComponent.with_collection()
def collection_key
@product.id
end
# rubocop:disable Metrics/CyclomaticComplexity
def column_value(column)
case column
when 'name'
@product.name
when 'price'
@product.price
when 'unit'
"#{@product.variants.first.unit_value} #{@product.variant_unit}"
when 'producer'
@product.supplier.name
when 'category'
@product.taxons.map(&:name).join(', ')
when 'sku'
@product.sku
when 'on_hand'
@product.on_hand || 0
when 'on_demand'
@product.on_demand
when 'tax_category'
@product.tax_category.name
when 'inherits_properties'
@product.inherits_properties
when 'import_date'
format_date(@product.import_date)
end
end
# rubocop:enable Metrics/CyclomaticComplexity
private
def format_date(date)
date&.strftime(DATETIME_FORMAT) || ''
end
end

View File

@@ -1,6 +0,0 @@
%tr
- @columns.each do |column|
%td.products_column{class: column[:id]}
- if column[:id] == "name" && @image&.attachment.present?
= image_tag @image.url(:mini)
= column[:value]

View File

@@ -1,179 +0,0 @@
# frozen_string_literal: true
class ProductsTableComponent < ViewComponentReflex::Component
include Pagy::Backend
SORTABLE_COLUMNS = ['name', 'import_date'].freeze
SELECTABLE_COLUMNS = [
{ label: I18n.t("admin.products_page.columns_selector.price"), value: "price" },
{ label: I18n.t("admin.products_page.columns_selector.unit"), value: "unit" },
{ label: I18n.t("admin.products_page.columns_selector.producer"), value: "producer" },
{ label: I18n.t("admin.products_page.columns_selector.category"), value: "category" },
{ label: I18n.t("admin.products_page.columns_selector.sku"), value: "sku" },
{ label: I18n.t("admin.products_page.columns_selector.on_hand"), value: "on_hand" },
{ label: I18n.t("admin.products_page.columns_selector.on_demand"), value: "on_demand" },
{ label: I18n.t("admin.products_page.columns_selector.tax_category"), value: "tax_category" },
{
label: I18n.t("admin.products_page.columns_selector.inherits_properties"),
value: "inherits_properties"
},
{ label: I18n.t("admin.products_page.columns_selector.import_date"), value: "import_date" }
].sort do |a, b|
a[:label] <=> b[:label]
end.freeze
PER_PAGE_VALUE = [10, 25, 50, 100].freeze
PER_PAGE = PER_PAGE_VALUE.map { |value| { label: value, value: value } }
NAME_COLUMN = {
label: I18n.t("admin.products_page.columns.name"), value: "name", sortable: true
}.freeze
def initialize(user:)
super
@user = user
@selectable_columns = SELECTABLE_COLUMNS
@columns_selected = ['unit', 'price', 'on_hand', 'category', 'import_date']
@per_page = PER_PAGE
@per_page_selected = [10]
@categories = [{ label: "All", value: "all" }] +
Spree::Taxon.order(:name)
.map { |taxon| { label: taxon.name, value: taxon.id.to_s } }
@categories_selected = ["all"]
@producers = [{ label: "All", value: "all" }] +
OpenFoodNetwork::Permissions.new(@user)
.managed_product_enterprises.is_primary_producer.by_name
.map { |producer| { label: producer.name, value: producer.id.to_s } }
@producers_selected = ["all"]
@page = 1
@sort = { column: "name", direction: "asc" }
@search_term = ""
end
# any change on a "reflex_data_attributes" (defined in the template) will trigger a re render
def before_render
fetch_products
refresh_columns
end
# Element refers to the component the data is set on
def search_term
# Element is SearchInputComponent
@search_term = element.dataset['value']
end
def toggle_column
# Element is SelectorComponent
column = element.dataset['value']
@columns_selected = if @columns_selected.include?(column)
@columns_selected - [column]
else
@columns_selected + [column]
end
end
def click_sort
# Element is TableHeaderComponent
@sort = {
column: element.dataset['sort-value'],
direction: element.dataset['sort-direction'] == "asc" ? "desc" : "asc"
}
end
def toggle_per_page
# Element is SelectorComponent
selected = element.dataset['value'].to_i
@per_page_selected = [selected] if PER_PAGE_VALUE.include?(selected)
end
def toggle_category
# Element is SelectorWithFilterComponent
category_clicked = element.dataset['value']
@categories_selected = toggle_selector_with_filter(category_clicked, @categories_selected)
end
def toggle_producer
# Element is SelectorWithFilterComponent
producer_clicked = element.dataset['value']
@producers_selected = toggle_selector_with_filter(producer_clicked, @producers_selected)
end
def change_page
# Element is PaginationComponent
page = element.dataset['page'].to_i
@page = page if page > 0
end
private
def refresh_columns
@columns = @columns_selected.map do |column|
{
label: I18n.t("admin.products_page.columns.#{column}"),
value: column,
sortable: SORTABLE_COLUMNS.include?(column)
}
end.sort! { |a, b| a[:label] <=> b[:label] }
@columns.unshift(NAME_COLUMN)
end
def toggle_selector_with_filter(clicked, selected)
selected = if selected.include?(clicked)
selected - [clicked]
else
selected + [clicked]
end
if clicked == "all" || selected.empty?
selected = ["all"]
elsif selected.include?("all") && selected.length > 1
selected -= ["all"]
end
selected
end
def fetch_products
product_query = OpenFoodNetwork::Permissions.new(@user).editable_products.merge(product_scope)
@products = product_query.ransack(ransack_query).result
@pagy, @products = pagy(@products, items: @per_page_selected.first, page: @page)
end
def product_scope
scope = if @user.has_spree_role?("admin") || @user.enterprises.present?
Spree::Product
else
Spree::Product.active
end
scope.includes(product_query_includes)
end
def ransack_query
query = { s: "#{@sort[:column]} #{@sort[:direction]}" }
query = if @producers_selected.include?("all")
query.merge({ supplier_id_eq: "" })
else
query.merge({ supplier_id_in: @producers_selected })
end
query = query.merge({ name_cont: @search_term }) if @search_term.present?
if @categories_selected.include?("all")
query.merge({ primary_taxon_id_eq: "" })
else
query.merge({ primary_taxon_id_in: @categories_selected })
end
end
def product_query_includes
[
:image,
variants: [
:default_price,
:stock_locations,
:stock_items,
:variant_overrides
]
]
end
end

View File

@@ -1,21 +0,0 @@
= component_controller(class: "products-table") do
.products-table-form
.products-table-form_filter_results
= render(SearchInputComponent.new(value: @search_term, data: reflex_data_attributes(:search_term)))
.products-table-form_categories_selector
= render(SelectorWithFilterComponent.new(title: t("admin.products_page.filters.categories.title"), selected: @categories_selected, items: @categories, data: reflex_data_attributes(:toggle_category), selected_items_i18n_key: "admin.products_page.filters.categories.selected_categories"))
.products-table-form_producers_selector
= render(SelectorWithFilterComponent.new(title: t("admin.products_page.filters.producers.title"), selected: @producers_selected, items: @producers, data: reflex_data_attributes(:toggle_producer), selected_items_i18n_key: "admin.products_page.filters.producers.selected_producers"))
.products-table-form_per-page_selector
= render(SelectorComponent.new(title: t('admin.products_page.filters.per_page', count: @per_page_selected[0]), selected: @per_page_selected, items: @per_page, data: reflex_data_attributes(:toggle_per_page)))
.products-table-form_columns_selector
= render(SelectorComponent.new(title: t("admin.products_page.filters.columns"), selected: @columns_selected, items: @selectable_columns, data: reflex_data_attributes(:toggle_column)))
.products-table_table
%table
= render(TableHeaderComponent.new(columns: @columns, sort: @sort, data: reflex_data_attributes(:click_sort)))
%tbody
= render(ProductComponent.with_collection(@products, columns: @columns))
.products-table-form_pagination
= render(PaginationComponent.new(pagy: @pagy, data: reflex_data_attributes(:change_page)))

View File

@@ -1,47 +0,0 @@
.products-table {
.products-table-form {
display: grid;
grid-template-columns: repeat( auto-fit, minmax(250px, 1fr) );
grid-gap: 10px;
margin-bottom: 10px;
}
.products-table_table {
box-shadow: 0 10px 10px -1px rgb(0 0 0 / 10%);
}
.products-table-form_pagination {
position: relative;
top: -15px;
nav, .pagination {
margin-top: 0;
padding-top: 0;
}
}
}
.products-table.loading {
.products-table-form_pagination, .products-table_table {
position: relative;
&:before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.5);
}
}
.products-table_table {
&:before {
background-position: center;
background-repeat: no-repeat;
background-size: 50px 50px;
background-image: url("../images/spinning-circles.svg");
}
}
}

View File

@@ -1,9 +0,0 @@
# frozen_string_literal: true
class SearchInputComponent < ViewComponentReflex::Component
def initialize(value: nil, data: {})
super
@value = value
@data = data
end
end

View File

@@ -1,5 +0,0 @@
= component_controller do
%div.search-input
%input{type: 'text', placeholder: t("components.search_input.placeholder"), id: 'search_query', data: {action: 'debounced:input->search-input#search'}, value: @value}
.search-button{data: @data}
%i.fa.fa-search

View File

@@ -1,23 +0,0 @@
.search-input {
border: 1px solid $disabled-light;
height: 3em;
display: flex;
line-height: 3em;
align-items: center;
input {
border: none;
height: 3em;
width: 100%;
box-sizing: border-box;
padding-right: 5px;
}
.search-button {
padding-right: 10px;
padding-left: 5px;
cursor: pointer;
color: $color-4;
}
}

View File

@@ -1,17 +0,0 @@
# frozen_string_literal: true
class SelectorComponent < ViewComponentReflex::Component
def initialize(title:, selected:, items:, data: {})
super
@title = title
@items = items.map do |item|
{
label: item[:label],
value: item[:value],
selected: selected.include?(item[:value])
}
end
@selected = selected
@data = data
end
end

View File

@@ -1,11 +0,0 @@
= component_controller do
.selector.selector-close
.selector-main{ data: { action: "click->selector#toggle" } }
.selector-main-title
= @title
.selector-arrow
.selector-wrapper
.selector-items
- @items.each do |item|
.selector-item{ class: ("selected" if item[:selected]), data: @data, "data-value": item[:value] }
= item[:label]

View File

@@ -1,86 +0,0 @@
.selector {
position: relative;
.selector-main {
border: 1px solid $disabled-light;
height: 3em;
position: relative;
cursor: pointer;
.selector-main-title {
line-height: 3em;
padding-left: 10px;
padding-right: 10px;
}
.selector-arrow {
position: absolute;
right: 0px;
height: 3em;
width: 1.5em;
top: -1px;
&:after {
content: "";
position: absolute;
top: 50%;
right: 5px;
margin-top: -5px;
width: 0;
height: 0;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 5px solid $disabled-light;
}
}
}
.selector-wrapper {
position: absolute;
left: 0px;
right: 0px;
z-index: 1;
background-color: white;
margin-top: -1px;
border: 1px solid $disabled-light;
.selector-items {
overflow-y: auto;
min-height: 6em;
.selector-item {
padding-left: 10px;
padding-right: 10px;
border-bottom: 1px solid $disabled-light;
position: relative;
height: 3em;
line-height: 3em;
&:hover {
background-color: #eee;
cursor: pointer;
}
&:last-child {
border-bottom: none;
}
&.selected {
&:after {
content: "";
display: inline-block;
position: absolute;
right: 10px;
}
}
}
}
}
&.selector-close {
.selector-wrapper {
display: none;
}
}
}

View File

@@ -1,11 +0,0 @@
# frozen_string_literal: true
class SelectorWithFilterComponent < SelectorComponent
def initialize(title:, selected:, items:, data: {},
selected_items_i18n_key: 'components.selector_with_filter.selected_items')
super(title: title, selected: selected, items: items, data: data)
@selected_items = items.select { |item| @selected.include?(item[:value]) }
@selected_items_i18n_key = selected_items_i18n_key
@items = items
end
end

View File

@@ -1,22 +0,0 @@
= component_controller do
.super-selector.selector.selector-close
.selector-main{ data: { action: "click->selector-with-filter#toggle" } }
.super-selector-label
= @title
.super-selector-selected-items
- case @selected_items.length
- when 1, 2
- @selected_items.each do |item|
.super-selector-selected-item
= item[:label]
- else
.super-selector-selected-item
= t(@selected_items_i18n_key, count: @selected_items.length)
.selector-arrow
.selector-wrapper
.super-selector-search
%input{type: "text", placeholder: t("components.selector_with_filter.search_placeholder"), data: { action: "debounced:input->selector-with-filter#filter" } }
.selector-items
- @items.each do |item|
.selector-item{ class: ("selected" if item[:selected]), data: @data.merge({ "selector-with-filter-target": "items" }), "data-value": item[:value] }
= item[:label]

View File

@@ -1,51 +0,0 @@
.super-selector {
position: relative;
.selector-main {
.super-selector-label {
padding-left: 5px;
padding-right: 5px;
margin-left: 10px;
position: absolute;
top: -1em;
background-color: white;
}
}
.super-selector-selected-items {
margin-left: 5px;
margin-right: 2em;
margin-top: 7px;
display: flex;
.super-selector-selected-item {
border: 1px solid $pale-blue;
background-color: $spree-light-blue;
border-radius: 20px;
height: 2em;
padding-left: 10px;
padding-right: 10px;
display: inline-block;
margin-right: 5px;
padding-top: 2px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.selector-wrapper {
.super-selector-search {
border-bottom: 1px solid $disabled-light;
padding: 10px 5px;
input {
border: 1px solid $disabled-light;
box-sizing: border-box;
border-radius: 4px;
width: 100%;
}
}
}
}

View File

@@ -1,10 +0,0 @@
# frozen_string_literal: true
class TableHeaderComponent < ViewComponentReflex::Component
def initialize(columns:, sort:, data: {})
super
@columns = columns
@sort = sort
@data = data
end
end

View File

@@ -1,7 +0,0 @@
= component_controller do
%thead.table-header
%tr
- @columns.each do |column|
%th{class: (column[:sortable] ? "th-sortable " : "" ) + (@sort[:column] == column[:value] ? " th-sorted-#{@sort[:direction]}" : ""), data: (@data if column[:sortable] == true), "data-sort-value": column[:value], "data-sort-direction": @sort[:direction]}
= column[:label]

View File

@@ -1,23 +0,0 @@
thead.table-header {
th {
&.th-sortable {
cursor: pointer;
}
&.th-sorted-asc, &.th-sorted-desc {
&:after {
display: inline-block;
padding-left: 10px;
}
}
&.th-sorted-asc {
&:after {
content: "";
}
}
&.th-sorted-desc {
&:after {
content: "";
}
}
}
}

View File

@@ -0,0 +1,4 @@
.vertical-ellipsis-menu{ "data-controller": "vertical-ellipsis-menu--component" }
%i.fa.fa-ellipsis-v{ "data-action": "click->vertical-ellipsis-menu--component#toggle" }
.vertical-ellipsis-menu-content{ "data-vertical-ellipsis-menu--component-target": "content" }
= content

View File

@@ -0,0 +1,6 @@
# frozen_string_literal: true
module VerticalEllipsisMenu
class Component < ViewComponent::Base
end
end

View File

@@ -0,0 +1,62 @@
.vertical-ellipsis-menu {
position: relative;
width: $btn-relaxed-height;
i.fa-ellipsis-v {
cursor: pointer;
display: block;
height: $btn-relaxed-height;
width: $btn-relaxed-height;
line-height: $btn-relaxed-height;
text-align: center;
border-radius: 3px;
background-color: white;
}
.vertical-ellipsis-menu-content {
position: absolute;
top: 0;
right: 0;
padding-top: 5px;
padding-bottom: 5px;
background-color: white;
box-shadow: $box-shadow;
border-radius: 3px;
min-width: 80px;
display: none;
z-index: 100;
&.show {
display: block;
}
& > a {
display: block;
padding: 5px 10px;
cursor: pointer;
text-align: left;
border-left: 3px solid white;
color: $near-black;
text-decoration: none;
border-bottom: none;
&:hover {
background-color: $light-grey;
border-left: 3px solid $spree-blue;
}
&.delete {
color: $red;
&:hover {
border-left: 3px solid $red;
background-color: $fair-pink;
}
}
}
}
}
table.products td .vertical-ellipsis-menu {
float: right;
}

View File

@@ -0,0 +1,25 @@
import { Controller } from "stimulus";
export default class extends Controller {
static targets = ["content"];
connect() {
super.connect();
window.addEventListener("click", this.#hideIfClickedOutside);
}
toggle() {
this.contentTarget.classList.toggle("show");
}
#hideIfClickedOutside = (event) => {
if (this.element.contains(event.target)) {
return;
}
this.#hide();
};
#hide() {
this.contentTarget.classList.remove("show");
}
}

View File

@@ -11,7 +11,7 @@ module Admin
respond_override update: { json: {
success: lambda {
tag_rule_mapping = TagRule.mapping_for(Enterprise.where(id: @customer.enterprise))
render_as_json @customer, tag_rule_mapping: tag_rule_mapping
render_as_json @customer, tag_rule_mapping:
},
failure: lambda {
render json: { errors: @customer.errors.full_messages },
@@ -25,7 +25,7 @@ module Admin
format.json do
render json: @collection,
each_serializer: ::Api::Admin::CustomerWithBalanceSerializer,
tag_rule_mapping: tag_rule_mapping,
tag_rule_mapping:,
customer_tags: customer_tags_by_id
end
end
@@ -42,7 +42,7 @@ module Admin
@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
render_as_json @customer, tag_rule_mapping:
else
render json: { errors: @customer.errors.full_messages }, status: :bad_request
end

View File

@@ -38,7 +38,8 @@ module Admin
@enterprise_fee_set = EnterpriseFeesBulkUpdate.new(params)
if @enterprise_fee_set.save
redirect_to redirect_path, notice: I18n.t(:enterprise_fees_update_notice)
flash[:success] = I18n.t(:enterprise_fees_update_notice)
redirect_to redirect_path
else
redirect_to redirect_path,
flash: { error: @enterprise_fee_set.errors.full_messages.to_sentence }
@@ -48,7 +49,7 @@ module Admin
private
def load_enterprise_fee_set
@enterprise_fee_set = Sets::EnterpriseFeeSet.new collection: collection
@enterprise_fee_set = Sets::EnterpriseFeeSet.new collection:
end
def load_data
@@ -61,7 +62,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]
order_cycle ||= OrderCycle.new(coordinator: coordinator) if coordinator.present?
order_cycle ||= OrderCycle.new(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')

View File

@@ -39,7 +39,7 @@ module Admin
# The ! version is important to raise a RecordNotFound error.
def find_resource
permalink = params[:id] || params[:enterprise_group_id]
EnterpriseGroup.find_by!(permalink: permalink)
EnterpriseGroup.find_by!(permalink:)
end
private

View File

@@ -3,9 +3,8 @@
module Admin
class EnterpriseRolesController < Admin::ResourceController
def index
@enterprise_roles = EnterpriseRole.by_user_email
@users = Spree::User.order('spree_users.email')
@my_enterprises = @all_enterprises = Enterprise.by_name
@enterprise_roles, @users, @all_enterprises = Admin::EnterpriseRolesQuery.query
@my_enterprises = @all_enterprises
end
def create

View File

@@ -38,7 +38,7 @@ module Admin
format.html
format.json {
render_as_json @collection, ams_prefix: params[:ams_prefix],
spree_current_user: spree_current_user
spree_current_user:
}
end
end
@@ -47,12 +47,12 @@ module Admin
@object = Enterprise.where(permalink: params[:id]).
includes(users: [:ship_address, :bill_address]).first
@object.build_custom_tab if @object.custom_tab.nil?
if params[:stimulus]
@enterprise.is_primary_producer = params[:is_primary_producer]
@enterprise.sells = params[:enterprise_sells]
render cable_ready: cable_car.morph("#side_menu", partial("admin/shared/side_menu"))
.morph("#permalink", partial("admin/enterprises/form/permalink"))
end
return unless params[:stimulus]
@enterprise.is_primary_producer = params[:is_primary_producer]
@enterprise.sells = params[:enterprise_sells]
render cable_ready: cable_car.morph("#side_menu", partial("admin/shared/side_menu"))
.morph("#permalink", partial("admin/enterprises/form/permalink"))
end
def welcome
@@ -63,6 +63,7 @@ module Admin
tag_rules_attributes = params[object_name].delete :tag_rules_attributes
update_tag_rules(tag_rules_attributes) if tag_rules_attributes.present?
update_enterprise_notifications
update_vouchers
delete_custom_tab if params[:custom_tab] == 'false'
@@ -72,7 +73,7 @@ module Admin
format.html { redirect_to location_after_save }
format.js { render layout: false }
format.json {
render_as_json @object, ams_prefix: 'index', spree_current_user: spree_current_user
render_as_json @object, ams_prefix: 'index', spree_current_user:
}
end
else
@@ -125,7 +126,7 @@ module Admin
json: @collection,
each_serializer: Api::Admin::ForOrderCycle::EnterpriseSerializer,
order_cycle: @order_cycle,
spree_current_user: spree_current_user
spree_current_user:
)
end
end
@@ -135,7 +136,7 @@ module Admin
respond_to do |format|
format.json do
render_as_json @collection, ams_prefix: params[:ams_prefix] || 'basic',
spree_current_user: spree_current_user
spree_current_user:
end
end
end
@@ -182,7 +183,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]
@order_cycle ||= OrderCycle.new(coordinator: coordinator) if coordinator.present?
@order_cycle ||= OrderCycle.new(coordinator:) if coordinator.present?
enterprises = OpenFoodNetwork::OrderCyclePermissions.new(spree_current_user, @order_cycle)
.visible_enterprises
@@ -263,32 +264,44 @@ module Admin
def update_enterprise_notifications
user_id = params[:receives_notifications].to_i
if user_id.positive? && @enterprise.user_ids.include?(user_id)
@enterprise.update_contact(user_id)
end
return unless user_id.positive? && @enterprise.user_ids.include?(user_id)
@enterprise.update_contact(user_id)
end
def update_vouchers
params_voucher_ids = params[:enterprise][:voucher_ids].to_a.map(&:to_i)
voucher_ids = @enterprise.vouchers.map(&:id)
deleted_voucher_ids = @enterprise.vouchers.only_deleted.map(&:id)
vouchers_to_destroy = voucher_ids - params_voucher_ids
Voucher.where(id: vouchers_to_destroy).destroy_all if vouchers_to_destroy.present?
vouchers_to_restore = deleted_voucher_ids.intersection(params_voucher_ids)
Voucher.restore(vouchers_to_restore) if vouchers_to_restore.present?
end
def create_calculator_for(rule, attrs)
if attrs[:calculator_type].present? && attrs[:calculator_attributes].present?
rule.update(calculator_type: attrs[:calculator_type])
attrs[:calculator_attributes].merge!( id: rule.calculator.id )
end
return unless attrs[:calculator_type].present? && attrs[:calculator_attributes].present?
rule.update(calculator_type: attrs[:calculator_type])
attrs[:calculator_attributes].merge!( id: rule.calculator.id )
end
def check_can_change_bulk_sells
unless spree_current_user.admin?
params[:sets_enterprise_set][:collection_attributes].each do |_i, enterprise_params|
unless spree_current_user == Enterprise.find_by(id: enterprise_params[:id]).owner
enterprise_params.delete :sells
end
return if spree_current_user.admin?
params[:sets_enterprise_set][:collection_attributes].each do |_i, enterprise_params|
unless spree_current_user == Enterprise.find_by(id: enterprise_params[:id]).owner
enterprise_params.delete :sells
end
end
end
def check_can_change_sells
unless spree_current_user.admin? || spree_current_user == @enterprise.owner
enterprise_params.delete :sells
end
return if spree_current_user.admin? || spree_current_user == @enterprise.owner
enterprise_params.delete :sells
end
def override_owner
@@ -296,31 +309,31 @@ module Admin
end
def override_sells
unless spree_current_user.admin?
has_hub = spree_current_user.owned_enterprises.is_hub.any?
new_enterprise_is_producer = Enterprise.new(enterprise_params).is_primary_producer
enterprise_params[:sells] = has_hub && !new_enterprise_is_producer ? 'any' : 'none'
end
return if spree_current_user.admin?
has_hub = spree_current_user.owned_enterprises.is_hub.any?
new_enterprise_is_producer = Enterprise.new(enterprise_params).is_primary_producer
enterprise_params[:sells] = has_hub && !new_enterprise_is_producer ? 'any' : 'none'
end
def check_can_change_owner
unless ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?
return if ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?
enterprise_params.delete :owner_id
end
def check_can_change_bulk_owner
return if spree_current_user.admin?
bulk_params[:collection_attributes].each do |_i, enterprise_params|
enterprise_params.delete :owner_id
end
end
def check_can_change_bulk_owner
unless spree_current_user.admin?
bulk_params[:collection_attributes].each do |_i, enterprise_params|
enterprise_params.delete :owner_id
end
end
end
def check_can_change_managers
unless ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?
enterprise_params.delete :user_ids
end
return if ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?
enterprise_params.delete :user_ids
end
def strip_new_properties

View File

@@ -48,7 +48,7 @@ module Admin
@order_cycle_form = OrderCycleForm.new(@order_cycle, order_cycle_params, spree_current_user)
if @order_cycle_form.save
flash[:notice] = I18n.t(:order_cycles_create_notice)
flash[:success] = t('.success')
render json: { success: true,
edit_path: main_app.admin_order_cycle_incoming_path(@order_cycle) }
else
@@ -66,7 +66,7 @@ module Admin
if @order_cycle_form.save
update_nil_subscription_line_items_price_estimate(@order_cycle)
respond_to do |format|
flash[:notice] = I18n.t(:order_cycles_update_notice) if params[:reloading] == '1'
flash[:success] = t('.success') if params[:reloading] == '1'
format.html { redirect_to_after_update_path }
format.json { render json: { success: true } }
end
@@ -118,7 +118,7 @@ module Admin
@order_cycle = OrderCycle.find params[:id]
@order_cycle.clone!
redirect_to main_app.admin_order_cycles_path,
notice: I18n.t(:order_cycles_clone_notice, name: @order_cycle.name)
flash: { success: t('.success', name: @order_cycle.name) }
end
# Send notifications to all producers who are part of the order cycle
@@ -126,7 +126,7 @@ module Admin
OrderCycleNotificationJob.perform_later params[:id].to_i
redirect_to main_app.admin_order_cycles_path,
notice: I18n.t(:order_cycles_email_to_producers_notice)
flash: { success: t('.success') }
end
protected
@@ -182,17 +182,17 @@ module Admin
end
def load_data_for_index
if json_request?
# Split ransack params into all those that currently exist and new ones
# to limit returned ocs to recent or undated
orders_close_at_gt = raw_params[:q]&.delete(:orders_close_at_gt) || 31.days.ago
raw_params[:q] = {
g: [raw_params.delete(:q) || {}, { m: 'or',
orders_close_at_gt: orders_close_at_gt,
orders_close_at_null: true }]
}
@collection = collection
end
return unless json_request?
# Split ransack params into all those that currently exist and new ones
# to limit returned ocs to recent or undated
orders_close_at_gt = raw_params[:q]&.delete(:orders_close_at_gt) || 31.days.ago
raw_params[:q] = {
g: [raw_params.delete(:q) || {}, { m: 'or',
orders_close_at_gt:,
orders_close_at_null: true }]
}
@collection = collection
end
def redirect_to_after_update_path
@@ -245,10 +245,10 @@ module Admin
order_cycle_params.delete :coordinator_id
unless Enterprise.managed_by(spree_current_user).include?(@order_cycle.coordinator)
order_cycle_params.delete_if do |k, _v|
[:name, :orders_open_at, :orders_close_at].include? k.to_sym
end
return if Enterprise.managed_by(spree_current_user).include?(@order_cycle.coordinator)
order_cycle_params.delete_if do |k, _v|
[:name, :orders_open_at, :orders_close_at].include? k.to_sym
end
end

View File

@@ -56,9 +56,9 @@ module Admin
private
def validate_upload_presence
unless params[:file] || (params[:filepath] && File.exist?(params[:filepath]))
redirect_to '/admin/product_import', notice: I18n.t(:product_import_file_not_found_notice)
end
return if params[:file] || (params[:filepath] && File.exist?(params[:filepath]))
redirect_to '/admin/product_import', notice: I18n.t(:product_import_file_not_found_notice)
end
def process_data(method)
@@ -90,11 +90,11 @@ module Admin
end
def check_spreadsheet_has_data(importer)
unless importer.item_count
redirect_to '/admin/product_import',
notice: I18n.t(:product_import_no_data_in_spreadsheet_notice)
true
end
return if importer.item_count
redirect_to '/admin/product_import',
notice: I18n.t(:product_import_no_data_in_spreadsheet_notice)
true
end
def save_uploaded_file(upload)

View File

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

View File

@@ -13,7 +13,7 @@ module Admin
if @proxy_order.cancel
render_as_json @proxy_order
else
render json: { errors: [t('admin.proxy_orders.cancel.could_not_cancel_the_order')] },
render json: { errors: [t('.could_not_cancel_the_order')] },
status: :unprocessable_entity
end
end
@@ -22,7 +22,7 @@ module Admin
if @proxy_order.resume
render_as_json @proxy_order
else
render json: { errors: [t('admin.proxy_orders.resume.could_not_resume_the_order')] },
render json: { errors: [t('.could_not_resume_the_order')] },
status: :unprocessable_entity
end
end

View File

@@ -26,6 +26,8 @@ module Admin
.enabled?(:background_reports, spree_current_user)
if @background_reports && request.post?
rendering_options # stores user preferences
return background(report_format)
end
@@ -55,6 +57,15 @@ module Admin
@report_title = report_title
@rendering_options = rendering_options
@data = Reporting::FrontendData.new(spree_current_user)
variant_id_in = params[:variant_id_in]&.compact_blank
load_selected_variant if variant_id_in.present?
end
# Orders and Fulfillment Reports include a per product filter, load any selected product
def load_selected_variant
variant = Spree::Variant.find(params[:variant_id_in][0])
@variant_serialized = Api::Admin::VariantSerializer.new(variant)
end
def render_data?
@@ -71,11 +82,10 @@ module Admin
block: "start"
).broadcast
blob = ReportBlob.create_for_upload_later!(report_filename)
ReportJob.perform_later(
report_class: report_class, user: spree_current_user, params: params,
format: format, blob: blob, channel: ScopedChannel.for_id(params[:uuid]),
report_class:, user: spree_current_user, params:,
format:, filename: report_filename,
channel: ScopedChannel.for_id(params[:uuid]),
)
head :no_content

View File

@@ -24,18 +24,6 @@ module Admin
end
end
def update
if @object.update(permitted_resource_params)
flash[:success] = flash_message_for(@object, :successfully_updated)
respond_with(@object) do |format|
format.html { redirect_to location_after_save }
format.js { render layout: false }
end
else
respond_with(@object)
end
end
def create
@object.attributes = permitted_resource_params
if @object.save
@@ -49,9 +37,21 @@ module Admin
end
end
def update
if @object.update(permitted_resource_params)
flash[:success] = flash_message_for(@object, :successfully_updated)
respond_with(@object) do |format|
format.html { redirect_to location_after_save }
format.js { render layout: false }
end
else
respond_with(@object)
end
end
def update_positions
params[:positions].each do |id, index|
model_class.where(id: id).update_all(position: index)
model_class.where(id:).update_all(position: index)
end
respond_to do |format|

View File

@@ -1,22 +1,19 @@
# frozen_string_literal: true
require 'open_food_network/permissions'
require 'order_management/subscriptions/proxy_order_syncer'
module Admin
class SchedulesController < Admin::ResourceController
include PaperTrailLogging
before_action :adapt_params, only: [:update]
before_action :editable_order_cycle_ids_for_create, only: [:create]
before_action :editable_order_cycle_ids_for_update, only: [:update]
before_action :check_dependent_subscriptions, only: [:destroy]
after_action :sync_subscriptions_for_update, only: :update
respond_to :json
respond_override create: { json: {
OVERRIDE_RESPONSE = { json: {
success: lambda {
render_as_json @schedule,
editable_schedule_ids: permissions.editable_schedules.pluck(:id)
@@ -25,17 +22,10 @@ module Admin
render json: { errors: @schedule.errors.full_messages },
status: :unprocessable_entity
}
} }
respond_override update: { json: {
success: lambda {
render_as_json @schedule,
editable_schedule_ids: permissions.editable_schedules.pluck(:id)
},
failure: lambda {
render json: { errors: @schedule.errors.full_messages },
status: :unprocessable_entity
}
} }
} }.freeze
respond_override create: OVERRIDE_RESPONSE
respond_override update: OVERRIDE_RESPONSE
def index
respond_to do |format|
@@ -50,22 +40,23 @@ module Admin
end
def create
return respond_with(@schedule) if params[:order_cycle_ids].blank?
@schedule.attributes = permitted_resource_params
if @schedule.save
@schedule.order_cycle_ids = params[:order_cycle_ids]
@schedule.save!
sync_subscriptions_for_create
@schedule_form = ScheduleForm.new(params, spree_current_user, @schedule)
if @schedule_form.save
flash[:success] = flash_message_for(@schedule, :successfully_created)
@existing_order_cycle_ids = []
sync_subscriptions_for_create
end
respond_with(@schedule)
end
def update
@existing_order_cycle_ids = @schedule.order_cycle_ids
@object = ScheduleForm.new(params, spree_current_user, @schedule)
super
end
private
def collection
@@ -96,37 +87,6 @@ module Admin
params[:schedule][:order_cycle_ids] = params[:order_cycle_ids]
end
def editable_order_cycle_ids_for_create
return unless params[:order_cycle_ids]
@existing_order_cycle_ids = []
result = editable_order_cycles(params[:order_cycle_ids])
params[:order_cycle_ids] = result
end
def editable_order_cycle_ids_for_update
return unless params[:schedule][:order_cycle_ids]
@existing_order_cycle_ids = @schedule.order_cycle_ids
result = editable_order_cycles(params[:schedule][:order_cycle_ids])
params[:schedule][:order_cycle_ids] = result
@schedule.order_cycle_ids = result
end
def editable_order_cycles(requested)
permitted = OrderCycle
.where(id: params[:order_cycle_ids] | @existing_order_cycle_ids)
.merge(OrderCycle.managed_by(spree_current_user))
.pluck(:id)
result = @existing_order_cycle_ids
result |= (requested & permitted) # add any requested & permitted ids
# remove any existing and permitted ids that were not specifically requested
result -= ((result & permitted) - requested)
result
end
def check_dependent_subscriptions
return if Subscription.where(schedule_id: @schedule).empty?
@@ -140,14 +100,14 @@ module Admin
@permissions = OpenFoodNetwork::Permissions.new(spree_current_user)
end
def sync_subscriptions_for_update
return unless params[:schedule][:order_cycle_ids] && @object.errors.blank?
def sync_subscriptions_for_create
return unless params[:order_cycle_ids]
sync_subscriptions
end
def sync_subscriptions_for_create
return unless params[:order_cycle_ids]
def sync_subscriptions_for_update
return unless params[:schedule][:order_cycle_ids] && @schedule.errors.blank?
sync_subscriptions
end
@@ -155,6 +115,7 @@ module Admin
def sync_subscriptions
removed_ids = @existing_order_cycle_ids - @schedule.order_cycle_ids
new_ids = @schedule.order_cycle_ids - @existing_order_cycle_ids
return unless removed_ids.any? || new_ids.any?
subscriptions = Subscription.where(schedule_id: @schedule)

View File

@@ -21,7 +21,7 @@ module Admin
def update
Spree::Config.set(settings_params.to_h)
resource = t('admin.controllers.stripe_connect_settings.resource')
flash[:success] = t(:successfully_updated, resource: resource)
flash[:success] = t(:successfully_updated, resource:)
redirect_to_edit
end

View File

@@ -9,19 +9,33 @@ module Admin
end
def create
@voucher = Voucher.create(permitted_resource_params.merge(enterprise: @enterprise))
@voucher = Voucher.new(
permitted_resource_params.merge(enterprise: @enterprise)
)
if @voucher.save
flash[:success] = flash_message_for(@voucher, :successfully_created)
flash[:success] = I18n.t(:successfully_created, resource: "Voucher")
redirect_to edit_admin_enterprise_path(@enterprise, anchor: :vouchers_panel)
else
flash[:error] = @voucher.errors.full_messages.to_sentence
render :new
render_error
end
rescue ActiveRecord::SubclassNotFound
@voucher.errors.add(:type)
render_error
rescue ActiveRecord::RecordNotUnique
# Rails unique validation doesn't work with soft deleted object, so we rescue the database
# exception to display a nice message to the user
@voucher.errors.add(:code, :taken)
render_error
end
private
def render_error
flash[:error] = @voucher.errors.full_messages.to_sentence
render :new
end
def load_enterprise
@enterprise = OpenFoodNetwork::Permissions
.new(spree_current_user)
@@ -30,7 +44,7 @@ module Admin
end
def permitted_resource_params
params.require(:voucher).permit(:code, :amount)
params.require(:voucher).permit(:code, :amount, :type)
end
end
end

View File

@@ -1,7 +1,5 @@
# frozen_string_literal: true
require 'api/admin/enterprise_serializer'
module Api
module V0
class EnterpriseAttachmentController < Api::V0::BaseController
@@ -21,7 +19,7 @@ module Api
@enterprise.update!(attachment_name => nil)
render json: @enterprise,
serializer: Admin::EnterpriseSerializer,
spree_current_user: spree_current_user
spree_current_user:
end
protected

View File

@@ -5,11 +5,6 @@ module Api
class OrdersController < Api::V0::BaseController
include PaginationData
def show
authorize! :read, order
render json: order, serializer: Api::OrderDetailedSerializer, current_order: order
end
def index
authorize! :admin, Spree::Order
@@ -26,6 +21,11 @@ module Api
}
end
def show
authorize! :read, order
render json: order, serializer: Api::OrderDetailedSerializer, current_order: order
end
def update
authorize! :admin, order

View File

@@ -13,7 +13,7 @@ module Api
skip_authorization_check only: [:show, :bulk_products, :overridable]
def show
@product = find_product(params[:id])
@product = product_finder.find_product
render json: @product, serializer: Api::Admin::ProductSerializer
end
@@ -30,7 +30,7 @@ module Api
def update
authorize! :update, Spree::Product
@product = find_product(params[:id])
@product = product_finder.find_product
if @product.update(product_params)
render json: @product, serializer: Api::Admin::ProductSerializer, status: :ok
else
@@ -40,36 +40,20 @@ module Api
def destroy
authorize! :delete, Spree::Product
@product = find_product(params[:id])
@product = product_finder.find_product
authorize! :delete, @product
@product.destroy
render json: @product, serializer: Api::Admin::ProductSerializer, status: :no_content
end
def bulk_products
product_query = OpenFoodNetwork::Permissions.
new(current_api_user).
editable_products.
merge(product_scope)
if params[:import_date].present?
product_query = product_query.
imported_on(params[:import_date]).
group_by_products_id
end
@products = product_query.
ransack(query_params_with_defaults).
result
@products = product_finder.bulk_products
render_paged_products @products
end
def overridable
producer_ids = OpenFoodNetwork::Permissions.new(current_api_user).
variant_override_producers.by_name.select('enterprises.id')
@products = paged_products_for_producers producer_ids
@products = product_finder.paged_products_for_producers
render_paged_products @products, ::Api::Admin::ProductSimpleSerializer
end
@@ -78,7 +62,7 @@ module Api
#
def clone
authorize! :create, Spree::Product
original_product = find_product(params[:product_id])
original_product = product_finder.find_product_to_be_cloned
authorize! :update, original_product
@product = original_product.duplicate
@@ -88,37 +72,8 @@ module Api
private
def find_product(id)
product_scope.find(id)
end
def product_scope
if current_api_user.has_spree_role?("admin") || current_api_user.enterprises.present?
scope = Spree::Product
if params[:show_deleted]
scope = scope.with_deleted
end
else
scope = Spree::Product.active
end
scope.includes(product_query_includes)
end
def product_query_includes
[
image: { attachment_attachment: :blob },
variants: [:default_price, :stock_locations, :stock_items, :variant_overrides]
]
end
def paged_products_for_producers(producer_ids)
Spree::Product.where(nil).
merge(product_scope).
includes(variants: [:product, :default_price, :stock_items]).
where(supplier_id: producer_ids).
by_producer.by_name.
ransack(params[:q]).result
def product_finder
ProductScopeQuery.new(current_api_user, params)
end
def render_paged_products(products, product_serializer = ::Api::Admin::ProductSerializer)
@@ -135,10 +90,6 @@ module Api
}
end
def query_params_with_defaults
(params[:q] || {}).reverse_merge(s: 'created_at desc')
end
def product_params
@product_params ||=
params.permit(product: PermittedAttributes::Product.attributes)[:product].to_h

View File

@@ -44,14 +44,16 @@ module Api
def ready
authorize! :read, Spree::Shipment
unless @shipment.ready?
if @shipment.can_ready?
@shipment.ready!
else
render(json: { error: I18n.t(:cannot_ready, scope: "spree.api.shipment") },
status: :unprocessable_entity) && return
end
unless @shipment.ready? || @shipment.can_ready?
return render(
json: { error: I18n.t(:cannot_ready, scope: "spree.api.shipment") },
status: :unprocessable_entity
)
end
@shipment.ready! unless @shipment.ready?
render json: @shipment, serializer: Api::ShipmentSerializer, status: :ok
end
@@ -108,7 +110,7 @@ module Api
end
def get_or_create_shipment(stock_location_id)
@order.shipment || @order.shipments.create(stock_location_id: stock_location_id)
@order.shipment || @order.shipments.create(stock_location_id:)
end
def shipment_params

View File

@@ -69,14 +69,14 @@ module Api
end
def missing_parameter(error)
message = I18n.t(:missing_parameter, param: error.param, scope: :api)
message = I18n.t('api.missing_parameter', param: error.param)
render status: :unprocessable_entity,
json: json_api_error(message)
end
def unpermitted_parameters(error)
message = I18n.t(:unpermitted_parameters, params: error.params.join(", "), scope: :api)
message = I18n.t('api.unpermitted_parameters', params: error.params.join(", "))
render status: :unprocessable_entity,
json: json_api_error(message)

View File

@@ -115,25 +115,25 @@ class ApplicationController < ActionController::Base
end
def require_distributor_chosen
unless (@distributor = current_distributor)
redirect_to main_app.root_path
false
end
return if (@distributor = current_distributor)
redirect_to main_app.root_path
false
end
def require_order_cycle
unless current_order_cycle
redirect_to main_app.shop_path
end
return if current_order_cycle
redirect_to main_app.shop_path
end
def check_hub_ready_for_checkout
if current_distributor_closed?
current_order.empty!
current_order.set_distribution! nil, nil
flash[:info] = I18n.t('order_cycles_closed_for_hub')
redirect_to main_app.root_url
end
return unless current_distributor_closed?
current_order.empty!
current_order.set_distribution! nil, nil
flash[:info] = I18n.t('order_cycles_closed_for_hub')
redirect_to main_app.root_url
end
def current_distributor_closed?

View File

@@ -0,0 +1,148 @@
# frozen_string_literal: true
require 'open_food_network/address_finder'
class CheckoutController < BaseController
layout 'darkswarm'
include OrderStockCheck
include Spree::BaseHelper
include CheckoutCallbacks
include CheckoutSteps
include OrderCompletion
include CablecarResponses
include WhiteLabel
helper 'terms_and_conditions'
helper 'checkout'
helper 'spree/orders'
helper EnterprisesHelper
helper OrderHelper
before_action :set_checkout_redirect
before_action :hide_ofn_navigation, only: [:edit, :update]
def edit
if params[:step].blank?
redirect_to_step_based_on_order
else
update_order_state
check_step
end
return if available_shipping_methods.any?
flash[:error] = I18n.t('checkout.errors.no_shipping_methods_available')
end
def update
if confirm_order || update_order
return if performed?
check_payments_adjustments
clear_invalid_payments
advance_order_state
redirect_to_step
else
render_error
end
rescue Spree::Core::GatewayError => e
flash[:error] = I18n.t(:spree_gateway_error_flash_for_checkout, error: e.message)
@order.update_column(:state, "payment")
render cable_ready: cable_car.redirect_to(url: checkout_step_path(:payment))
end
private
def render_error
flash.now[:error] ||= I18n.t('checkout.errors.saving_failed')
render status: :unprocessable_entity, cable_ready: cable_car.
replace("#checkout", partial("checkout/checkout")).
replace("#flashes", partial("shared/flashes", locals: { flashes: flash }))
end
def check_payments_adjustments
@order.payments.each(&:ensure_correct_adjustment)
end
def clear_invalid_payments
@order.payments.with_state(:invalid).delete_all
end
def confirm_order
return unless summary_step? && @order.confirmation?
return unless validate_current_step
@order.customer.touch :terms_and_conditions_accepted_at
return true if redirect_to_payment_gateway
@order.process_payments!
@order.confirm!
order_completion_reset @order
end
def redirect_to_payment_gateway
return unless selected_payment_method&.external_gateway?
return unless (redirect_url = selected_payment_method.external_payment_url(order: @order))
render cable_ready: cable_car.redirect_to(url: redirect_url)
true
end
def selected_payment_method
@selected_payment_method ||= Checkout::PaymentMethodFetcher.new(@order).call
end
def update_order
return if params[:confirm_order] || @order.errors.any?
# Checking if shipping method updated before @order get updated. We can't use this guard
# clause in recalculate_voucher as by then the @order.shipping method would be the new one
shipping_method_updated = @order.shipping_method&.id != params[:shipping_method_id].to_i
@order.select_shipping_method(params[:shipping_method_id])
@order.update(order_params)
# We need to update voucher to take into account:
# * when moving away from "details" step : potential change in shipping method fees
# * when moving away from "payment" step : payment fees
recalculate_voucher(shipping_method_updated) if details_step? || payment_step?
@order.update_totals_and_states
validate_current_step
end
def recalculate_voucher(shipping_method_updated)
return if @order.voucher_adjustments.empty?
return unless shipping_method_updated
VoucherAdjustmentsService.new(@order).update
end
def validate_current_step
Checkout::Validation.new(@order, params).call && @order.errors.empty?
end
def advance_order_state
return if @order.complete?
OrderWorkflow.new(@order).advance_checkout(raw_params.slice(:shipping_method_id))
end
def order_params
@order_params ||= Checkout::Params.new(@order, params, spree_current_user).call
end
# Update order state based on the step we are loading to avoid discrepancy between step and order
# state. We need to do this when moving back to a previous checkout step, the update action takes
# care of moving the order state forward.
def update_order_state
return @order.back_to_payment if @order.confirmation? && payment_step?
return unless @order.after_delivery_state? && details_step?
@order.back_to_address
end
end

View File

@@ -0,0 +1,55 @@
# frozen_string_literal: true
module CheckoutSteps
extend ActiveSupport::Concern
private
def summary_step?
params[:step] == "summary"
end
def payment_step?
params[:step] == "payment"
end
def details_step?
params[:step] == "details"
end
def redirect_to_step_based_on_order
case @order.state
when "cart", "address", "delivery"
redirect_to checkout_step_path(:details)
when "payment"
redirect_to checkout_step_path(:payment)
when "confirmation"
redirect_to checkout_step_path(:summary)
else
redirect_to order_path(@order, order_token: @order.token)
end
end
def redirect_to_step
case params[:step]
when "details"
return redirect_to checkout_step_path(:payment)
when "payment"
return redirect_to checkout_step_path(:summary)
end
redirect_to_step_based_on_order
end
# Checkout step and allowed order state
# * step details : order state in cart, address or delivery
# * step payment : order state is payment
# * step summary : order state is confirmation
def check_step
case @order.state
when "cart", "address", "delivery"
redirect_to checkout_step_path(:details) unless details_step?
when "payment"
redirect_to checkout_step_path(:payment) if summary_step?
end
end
end

View File

@@ -5,11 +5,11 @@ module ExtraFields
extend ActiveSupport::Concern
def invalid_query_param(name, status, msg)
render status: status, json: json_api_error(msg, error_options:
render status:, json: json_api_error(msg, error_options:
{
title: I18n.t("api.query_param.error.title"),
source: { parameter: name },
status: status,
status:,
code: Rack::Utils::SYMBOL_TO_STATUS_CODE[status]
})
end

View File

@@ -5,7 +5,7 @@ module ManagerInvitations
def create_new_manager(email, enterprise)
password = Devise.friendly_token
new_user = Spree::User.create(email: email, unconfirmed_email: email, password: password)
new_user = Spree::User.create(email:, unconfirmed_email: email, password:)
new_user.reset_password_token = Devise.friendly_token
# Same time as used in Devise's lib/devise/models/recoverable.rb.
new_user.reset_password_sent_at = Time.now.utc

View File

@@ -74,8 +74,8 @@ module ReportsActions
def rendering_options
@rendering_options ||= ReportRenderingOptions.where(
user: spree_current_user,
report_type: report_type,
report_subtype: report_subtype
report_type:,
report_subtype:
).first_or_create do |report_rendering_options|
report_rendering_options.options = {
fields_to_show: if request.get?

View File

@@ -16,7 +16,7 @@ module RequestTimeouts
respond_to do |type|
type.html {
render status: :gateway_timeout,
file: Rails.root.join("public/500.html"),
file: Rails.public_path.join('500.html'),
formats: [:html],
layout: nil
}

View File

@@ -9,7 +9,7 @@ class ErrorsController < ApplicationController
event.add_metadata(:request, request.env)
end
render status: :not_found
render status: :not_found, formats: :html
end
def internal_server_error

View File

@@ -4,14 +4,14 @@ class HomeController < BaseController
layout 'darkswarm'
def index
if ContentConfig.home_show_stats
@num_distributors = cached_count('distributors', Enterprise.is_distributor.activated.visible)
@num_producers = cached_count('producers', Enterprise.is_primary_producer.activated.visible)
@num_orders = cached_count('orders', Spree::Order.complete)
@num_users = cached_count(
'users', Spree::Order.complete.select('DISTINCT spree_orders.user_id')
)
end
return unless ContentConfig.home_show_stats
@num_distributors = cached_count('distributors', Enterprise.is_distributor.activated.visible)
@num_producers = cached_count('producers', Enterprise.is_primary_producer.activated.visible)
@num_orders = cached_count('orders', Spree::Order.complete)
@num_users = cached_count(
'users', Spree::Order.complete.select('DISTINCT spree_orders.user_id')
)
end
def sell; end

View File

@@ -31,7 +31,7 @@ class LineItemsController < BaseController
def unauthorized
status = spree_current_user ? 403 : 401
render(body: nil, status: status) && return
render(body: nil, status:) && return
end
def not_found

View File

@@ -50,7 +50,7 @@ module PaymentGateways
payer_id: params[:PayerID]
),
amount: @order.total,
payment_method: payment_method
payment_method:
)
process_payment_completion!

View File

@@ -1,253 +0,0 @@
# frozen_string_literal: true
require 'open_food_network/address_finder'
class SplitCheckoutController < ::BaseController
layout 'darkswarm'
include OrderStockCheck
include Spree::BaseHelper
include CheckoutCallbacks
include OrderCompletion
include CablecarResponses
include WhiteLabel
helper 'terms_and_conditions'
helper 'checkout'
helper 'spree/orders'
helper EnterprisesHelper
helper OrderHelper
before_action :set_checkout_redirect
before_action :hide_ofn_navigation, only: [:edit, :update]
def edit
redirect_to_step_based_on_order unless params[:step]
check_step if params[:step]
return if available_shipping_methods.any?
flash[:error] = I18n.t('split_checkout.errors.no_shipping_methods_available')
end
def update
if confirm_order || update_order
return if performed?
check_payments_adjustments
clear_invalid_payments
advance_order_state
redirect_to_step
else
render_error
end
rescue Spree::Core::GatewayError => e
flash[:error] = I18n.t(:spree_gateway_error_flash_for_checkout, error: e.message)
@order.update_column(:state, "payment")
render cable_ready: cable_car.redirect_to(url: checkout_step_path(:payment))
end
private
def render_error
flash.now[:error] ||= I18n.t(
'split_checkout.errors.saving_failed',
messages: order_error_messages
)
render status: :unprocessable_entity, cable_ready: cable_car.
replace("#checkout", partial("split_checkout/checkout")).
replace("#flashes", partial("shared/flashes", locals: { flashes: flash }))
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?
# Reorder errors to make sure the most important ones are shown first
# and finally, return the error messages to sentence
reorder_errors.map(&:full_message).to_sentence
end
def no_ship_address_needed?
@order.errors[:shipping_method].present? || params[:ship_address_same_as_billing] == "1"
end
def remove_ship_address_errors
@order.errors.delete("ship_address.firstname")
@order.errors.delete("ship_address.address1")
@order.errors.delete("ship_address.city")
@order.errors.delete("ship_address.phone")
@order.errors.delete("ship_address.lastname")
@order.errors.delete("ship_address.zipcode")
end
def reorder_errors
@order.errors.sort_by do |e|
case e.attribute
when /email/i then 0
when /phone/i then 1
when /bill_address/i then 2 + bill_address_error_order(e)
else 20
end
end
end
def bill_address_error_order(error)
case error.attribute
when /firstname/i then 0
when /lastname/i then 1
when /address1/i then 2
when /city/i then 3
when /zipcode/i then 4
else 5
end
end
def check_payments_adjustments
@order.payments.each(&:ensure_correct_adjustment)
end
def clear_invalid_payments
@order.payments.with_state(:invalid).delete_all
end
def confirm_order
return unless summary_step? && @order.confirmation?
return unless validate_summary! && @order.errors.empty?
@order.customer.touch :terms_and_conditions_accepted_at
return true if redirect_to_payment_gateway
@order.process_payments!
@order.confirm!
order_completion_reset @order
end
def redirect_to_payment_gateway
return unless selected_payment_method&.external_gateway?
return unless (redirect_url = selected_payment_method.external_payment_url(order: @order))
render cable_ready: cable_car.redirect_to(url: redirect_url)
true
end
def selected_payment_method
@selected_payment_method ||= Checkout::PaymentMethodFetcher.new(@order).call
end
def update_order
return if params[:confirm_order] || @order.errors.any?
# If we have "pick up" shipping method (require_ship_address is set to false), use the
# distributor address as shipping address
use_shipping_address_from_distributor if shipping_method_ship_address_not_required?
@order.select_shipping_method(params[:shipping_method_id])
@order.update(order_params)
@order.update_totals_and_states
validate_current_step!
@order.errors.empty?
end
def use_shipping_address_from_distributor
@order.ship_address = @order.address_from_distributor
# Add the missing data
bill_address = params[:order][:bill_address_attributes]
@order.ship_address.firstname = bill_address[:firstname]
@order.ship_address.lastname = bill_address[:lastname]
@order.ship_address.phone = bill_address[:phone]
# Remove shipping address from parameter so we don't override the address we just set
params[:order].delete(:ship_address_attributes)
end
def shipping_method_ship_address_not_required?
selected_shipping_method = available_shipping_methods&.select do |sm|
sm.id.to_s == params[:shipping_method_id]
end
return false if selected_shipping_method.empty?
selected_shipping_method.first.require_ship_address == false
end
def summary_step?
params[:step] == "summary"
end
def payment_step?
params[:step] == "payment"
end
def advance_order_state
return if @order.complete?
OrderWorkflow.new(@order).advance_checkout(raw_params.slice(:shipping_method_id))
end
def validate_current_step!
step = ([params[:step]] & ["details", "payment", "summary"]).first
send("validate_#{step}!")
end
def validate_details!
return true if params[:shipping_method_id].present?
@order.errors.add :shipping_method, I18n.t('split_checkout.errors.select_a_shipping_method')
end
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
def validate_summary!
return true if params[:accept_terms]
return true unless TermsOfService.required?(@order.distributor)
@order.errors.add(:terms_and_conditions, t("split_checkout.errors.terms_not_accepted"))
end
def order_params
@order_params ||= Checkout::Params.new(@order, params, spree_current_user).call
end
def redirect_to_step_based_on_order
case @order.state
when "cart", "address", "delivery"
redirect_to checkout_step_path(:details)
when "payment"
redirect_to checkout_step_path(:payment)
when "confirmation"
redirect_to checkout_step_path(:summary)
else
redirect_to order_path(@order, order_token: @order.token)
end
end
def redirect_to_step
case params[:step]
when "details"
return redirect_to checkout_step_path(:payment)
when "payment"
return redirect_to checkout_step_path(:summary)
end
redirect_to_step_based_on_order
end
def check_step
case @order.state
when "cart", "address", "delivery"
redirect_to checkout_step_path(:details) unless params[:step] == "details"
when "payment"
redirect_to checkout_step_path(:payment) if params[:step] == "summary"
end
end
end

View File

@@ -9,6 +9,7 @@ module Spree
helper 'admin/injection'
helper 'admin/orders'
helper 'admin/enterprises'
helper 'admin/terms_of_service'
helper 'enterprise_fees'
helper 'angular_form'

View File

@@ -20,6 +20,10 @@ module Spree
render layout: !request.xhr?
end
def edit
@url_filters = ::ProductFilters.new.extract(request.query_parameters)
end
def create
@url_filters = ::ProductFilters.new.extract(request.query_parameters)
set_viewable
@@ -34,10 +38,6 @@ module Spree
end
end
def edit
@url_filters = ::ProductFilters.new.extract(request.query_parameters)
end
def update
@url_filters = ::ProductFilters.new.extract(request.query_parameters)
set_viewable

View File

@@ -10,57 +10,24 @@ module Spree
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])
def show
invoice_id = params[:id]
invoice_pdf = filepath(invoice_id)
render json: invoice_service.id, status: :ok
send_file(invoice_pdf, type: 'application/pdf', disposition: :inline)
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
OrderInvoiceGenerator.new(@order).generate_or_update_latest_invoice
redirect_back(fallback_location: spree.admin_dashboard_path)
end
def show
invoice_id = params[:id]
invoice_pdf = BulkInvoiceService.new.filepath(invoice_id)
private
send_file(invoice_pdf, type: 'application/pdf', disposition: :inline)
end
def poll
invoice_id = params[:invoice_id]
if BulkInvoiceService.new.invoice_created? invoice_id
render json: { created: true }, status: :ok
else
render json: { created: false }, status: :unprocessable_entity
end
end
protected
def invoice_data
@invoice_data ||= InvoiceDataGenerator.new(@order).generate
def filepath(invoice_id)
"tmp/invoices/#{invoice_id}.pdf"
end
end
end

View File

@@ -23,7 +23,7 @@ module Spree
flash[:error] = Spree.t('admin.mail_methods.testmail.delivery_error')
end
rescue StandardError => e
flash[:error] = Spree.t('admin.mail_methods.testmail.error') % { e: e }
flash[:error] = Spree.t('admin.mail_methods.testmail.error') % ({ e: })
ensure
redirect_to spree.edit_admin_mail_methods_url
end

View File

@@ -43,8 +43,8 @@ module Spree
def build_addresses
country_id = Address.default.country.id
@order.build_bill_address(country_id: country_id) if @order.bill_address.nil?
@order.build_ship_address(country_id: country_id) if @order.ship_address.nil?
@order.build_bill_address(country_id:) if @order.bill_address.nil?
@order.build_ship_address(country_id:) if @order.ship_address.nil?
end
def refresh_shipment_rates

View File

@@ -90,7 +90,8 @@ module Spree
end
def invoice
Spree::OrderMailer.invoice_email(@order.id).deliver_later
Spree::OrderMailer.invoice_email(@order.id,
current_user_id: spree_current_user.id ).deliver_later
flash[:success] = t('admin.orders.invoice_email_sent')
respond_with(@order) { |format|
@@ -99,11 +100,16 @@ module Spree
end
def print
if OpenFoodNetwork::FeatureToggle.enabled?(:invoices)
@order = @order.invoices.find(params[:invoice_id]).presenter
if OpenFoodNetwork::FeatureToggle.enabled?(:invoices, spree_current_user)
@order = if params[:invoice_id].present?
@order.invoices.find(params[:invoice_id]).presenter
else
OrderInvoiceGenerator.new(@order).generate_or_update_latest_invoice
@order.invoices.first.presenter
end
end
render_with_wicked_pdf InvoiceRenderer.new.args(@order)
render_with_wicked_pdf InvoiceRenderer.new.args(@order, spree_current_user)
end
private

View File

@@ -128,10 +128,6 @@ module Spree
def load_providers
providers = Gateway.providers.sort_by(&:name)
unless Rails.env.development? || Rails.env.test?
providers.reject! { |provider| provider.name.include? "Bogus" }
end
unless show_stripe?
providers.reject! { |provider| stripe_provider?(provider) }
end

View File

@@ -33,23 +33,15 @@ module Spree
return
end
if @order.completed?
authorize_stripe_sca_payment
@payment.process_offline!
flash[:success] = flash_message_for(@payment, :successfully_created)
OrderWorkflow.new(@order).complete! unless @order.completed?
redirect_to spree.admin_order_payments_path(@order)
else
OrderWorkflow.new(@order).complete!
authorize_stripe_sca_payment
@payment.process_offline!
flash[:success] = Spree.t(:new_order_completed)
redirect_to spree.edit_admin_order_url(@order)
end
authorize_stripe_sca_payment
@payment.process_offline!
flash[:success] = flash_message_for(@payment, :successfully_created)
redirect_to spree.admin_order_payments_path(@order)
rescue Spree::Core::GatewayError => e
flash[:error] = e.message.to_s
redirect_to spree.new_admin_order_payment_path(@order)
redirect_to spree.admin_order_payments_path(@order)
end
end
@@ -140,7 +132,8 @@ module Spree
#
# Otherwise redirect user to that step
def can_transition_to_payment
return if @order.payment? || @order.complete? || @order.canceled? || @order.resumed?
return if @order.confirmation? || @order.payment? ||
@order.complete? || @order.canceled? || @order.resumed?
flash[:notice] = Spree.t(:fill_in_customer_info)
redirect_to spree.edit_admin_order_customer_url(@order)
@@ -184,7 +177,8 @@ module Spree
end
def allowed_events
%w{capture void_transaction credit refund resend_authorization_email}
%w{capture void_transaction credit refund resend_authorization_email
capture_and_complete_order}
end
end
end

View File

@@ -16,8 +16,22 @@ module Spree
before_action :load_spree_api_key, only: [:index, :variant_overrides]
before_action :strip_new_properties, only: [:create, :update]
def index
@current_user = spree_current_user
@show_latest_import = params[:latest_import] || false
end
def show
session[:return_to] ||= request.referer
redirect_to( action: :edit )
end
def new
@object.shipping_category = DefaultShippingCategory.find_or_create
@object.shipping_category_id = DefaultShippingCategory.find_or_create.id
end
def edit
@url_filters = ::ProductFilters.new.extract(request.query_parameters)
end
def create
@@ -35,20 +49,6 @@ module Spree
end
end
def show
session[:return_to] ||= request.referer
redirect_to( action: :edit )
end
def index
@current_user = spree_current_user
@show_latest_import = params[:latest_import] || false
end
def edit
@url_filters = ::ProductFilters.new.extract(request.query_parameters)
end
def update
@url_filters = ::ProductFilters.new.extract(request.query_parameters)
@@ -82,14 +82,10 @@ module Spree
def clone
@new = @product.duplicate
raise "Clone failed" unless @new.save
flash[:success] = if @new.save
Spree.t('notice_messages.product_cloned')
else
Spree.t('notice_messages.product_not_cloned')
end
redirect_to spree.edit_admin_product_url(@new)
flash[:success] = t('.success')
redirect_to spree.admin_products_url
end
def group_buy_options
@@ -180,7 +176,7 @@ module Spree
select('DISTINCT spree_variants.import_date').
joins(:product).
where('spree_products.supplier_id IN (?)', editable_enterprises.collect(&:id)).
where('spree_variants.import_date IS NOT NULL').
where.not(spree_variants: { import_date: nil }).
where(spree_variants: { deleted_at: nil }).
order('spree_variants.import_date DESC')
end

View File

@@ -5,6 +5,12 @@ module Spree
class TaxonsController < Spree::Admin::BaseController
respond_to :html, :json, :js
def edit
@taxonomy = Taxonomy.find(params[:taxonomy_id])
@taxon = @taxonomy.taxons.find(params[:id])
@permalink_part = @taxon.permalink.split("/").last
end
def create
@taxonomy = Taxonomy.find(params[:taxonomy_id])
@taxon = @taxonomy.taxons.build(params[:taxon])
@@ -26,12 +32,6 @@ module Spree
end
end
def edit
@taxonomy = Taxonomy.find(params[:taxonomy_id])
@taxon = @taxonomy.taxons.find(params[:id])
@permalink_part = @taxon.permalink.split("/").last
end
def update
@taxonomy = Taxonomy.find(params[:taxonomy_id])
@taxon = @taxonomy.taxons.find(params[:id])

View File

@@ -3,6 +3,8 @@
module Spree
module Admin
class UsersController < ::Admin::ResourceController
helper I18nHelper
rescue_from Spree::User::DestroyWithOrdersError, with: :user_destroy_with_orders_error
after_action :sign_in_if_change_own_password, only: :update
@@ -28,11 +30,11 @@ module Spree
if @user.save
if roles
@user.spree_roles = roles.reject(&:blank?).collect{ |r| Spree::Role.find(r) }
@user.spree_roles = roles.compact_blank.collect{ |r| Spree::Role.find(r) }
end
flash.now[:success] = Spree.t(:created_successfully)
render :edit
flash[:success] = Spree.t(:created_successfully)
redirect_to edit_admin_user_path(@user)
else
render :new
end
@@ -45,12 +47,14 @@ module Spree
if @user.update(user_params)
if roles
@user.spree_roles = roles.reject(&:blank?).collect{ |r| Spree::Role.find(r) }
@user.spree_roles = roles.compact_blank.collect{ |r| Spree::Role.find(r) }
end
flash.now[:success] = update_message
flash[:success] = update_message
redirect_to edit_admin_user_path(@user)
else
render :edit
end
render :edit
end
protected
@@ -127,6 +131,10 @@ module Spree
params[:user][:email] != @user.email
end
def build_resource
model_class.new(locale: I18n.default_locale)
end
def user_params
::PermittedAttributes::User.new(params).call(
%i[enterprise_limit show_api_key_view]

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