Compare commits

...

652 Commits

Author SHA1 Message Date
filipefurtad0
680b6a7122 Update all locales with the latest Transifex translations 2023-04-07 10:17:13 +01:00
Filipe
d9e9add78b Merge pull request #10527 from vviekk/10456
Fixing 'unsaved' alert behaviour for order cycle edit forms
2023-04-06 17:05:49 +01:00
Filipe
8893824b06 Merge pull request #10635 from jibees/fix-content-security-policy-for-local-images
Fix content security policy: authorize `ENV["SITE_URL"]` as trusted domain for images
2023-04-06 11:25:05 +01:00
Filipe
e71a747925 Merge pull request #10667 from jibees/10662-flaky-specqueriescustomers_with_balance_specrb26
Flaky: Avoid flaky spec by sorting array before comparing on `spec/queries/customers_with_balance_spec.rb:26`
2023-04-06 10:47:32 +01:00
Jean-Baptiste Bellet
eedd421055 Avoid flaky spec by sorting array before comparing 2023-04-06 10:41:42 +02:00
Jean-Baptiste Bellet
bb502c2e65 Authorize localhost:3000 as trusted domain for images 2023-04-06 10:10:44 +02:00
Filipe
2f6b730ed4 Merge pull request #10614 from cillian/business-address-country-state-placeholders
Add placeholders to business address country and state select fields
2023-04-05 19:55:07 +01:00
Filipe
2ff464321c Merge pull request #10619 from openfoodfoundation/dependabot/npm_and_yarn/stimulus_reflex-3.5.0-rc1
Bump stimulus_reflex and cable_ready from 3.5.0-preX to 3.5.0-rc2
2023-04-05 17:37:15 +01:00
Filipe
fc8d9252d5 Merge pull request #10605 from abdellani/fix-impossible-to-reach-OCs-older-than-6-months
Fix load order cycles by date ranges
2023-04-05 17:33:51 +01:00
Rachel Arnould
3e5becf70a Merge pull request #10538 from jibees/10537-shopfront-product-description-is-too-long
Shopfront: Force product description to be on one line
2023-04-05 17:42:18 +02:00
Maikel
ef841b161f Merge pull request #10660 from MadisonBowron/master
Fix bug #10596, missing translation for editing shipping category
2023-04-05 16:12:20 +10:00
Maikel
c11dd2c1fb Merge pull request #10642 from macanudo527/fix_rubocop_errors
Fix Rubocop Layout/LineLength
2023-04-05 16:11:08 +10:00
Maikel Linke
8bbc545e39 Cover untranslated text by spec 2023-04-05 15:03:42 +10:00
Maikel
fc08913152 Merge pull request #10648 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.120.0
Bump aws-sdk-s3 from 1.119.2 to 1.120.0
2023-04-05 14:44:22 +10:00
Maikel
19ae3651fa Merge pull request #10643 from dacook/update-node-docker
Update node for docker
2023-04-05 14:43:24 +10:00
Jean-Baptiste Bellet
66307c9277 cable_ready changed its Content-Type ; update the mrujs one as well
Thanks @marcoroth for the great debugging session! 🙏
2023-04-05 14:19:34 +10:00
Jean-Baptiste Bellet
65084422cb cable_ready is already imported in app/webpacker/controllers/index.js 2023-04-05 14:19:34 +10:00
Jean-Baptiste Bellet
6f8ab56d2e Replace deprecated call render operations:
```
DEPRECATED: CableReady's `render operations:` call has been renamed to `render cable_ready:`. Please update your render call.
```
2023-04-05 14:19:34 +10:00
dependabot[bot]
ab6cdd4c78 Bump stimulus_reflex from 3.5.0-pre9 to 3.5.0-rc2
Updating JS and Ruby libraries. This commit was started by Dependabot
for 3.5.0-rc1. Then we updated to rc2.

Old Dependabot message about rc1:
Bumps [stimulus_reflex](https://github.com/stimulusreflex/stimulus_reflex) from 3.5.0-pre9 to 3.5.0-rc1.
- [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>

Bump cable_ready from 5.0.0-pre10 to 5.0.0-rc1

Bumps [cable_ready](https://github.com/stimulusreflex/cable_ready) from 5.0.0-pre10 to 5.0.0-rc1.
- [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/commits)

---
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-04-05 14:19:16 +10:00
David Cook
865d81d28f Apply suggestions from code review 2023-04-05 14:05:26 +10:00
emiliecm
5abda22831 Fix bug #10596, missing translation for editing shipping category 2023-04-04 19:48:16 -04:00
Cillian O'Ruanaidh
89dac47aa6 Add placeholders to business address country and state select fields 2023-04-04 19:22:22 +01:00
jibees
e18d973047 Merge pull request #10655 from filipefurtad0/fix_flaky_oc_form_spec
Sorts plucked shipping/payment methods
2023-04-04 15:34:39 +02:00
jibees
afeeaf0a9b Merge pull request #10657 from openfoodfoundation/dependabot/bundler/combine_pdf-1.0.23
Bump combine_pdf from 1.0.22 to 1.0.23
2023-04-04 14:31:06 +02:00
jibees
3010717ece Merge pull request #10656 from openfoodfoundation/dependabot/bundler/devise-4.9.2
Bump devise from 4.9.1 to 4.9.2
2023-04-04 14:30:11 +02:00
dependabot[bot]
0c48dbe0d5 Bump combine_pdf from 1.0.22 to 1.0.23
Bumps [combine_pdf](https://github.com/boazsegev/combine_pdf) from 1.0.22 to 1.0.23.
- [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.22...v1.0.23)

---
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-04-04 10:04:31 +00:00
dependabot[bot]
f7b215b7ac Bump devise from 4.9.1 to 4.9.2
Bumps [devise](https://github.com/heartcombo/devise) from 4.9.1 to 4.9.2.
- [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.1...v4.9.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-04 09:58:37 +00:00
filipefurtad0
29520542db Sorts plucked shipping/payment methods 2023-04-04 09:30:36 +01:00
Neal Chambers
940f806e5f Fix Rubocop Layout/LineLength 2023-04-04 09:44:15 +09:00
David Cook
c34ced2f65 Merge pull request #10639 from openfoodfoundation/dependabot/bundler/puma-6.2.1
Bump puma from 6.1.1 to 6.2.1
2023-04-04 10:08:57 +10:00
Filipe
2051d811cf Merge pull request #10567 from jibees/10557-allow-hide-of-ofn-main-navigation
White Label: Allow enterprise to hide ofn main navigation on `/shop`, `/cart`, `/checkout`, `/orders` pages
2023-04-03 20:29:37 +01:00
jibees
0335cf2441 Merge pull request #10647 from openfoodfoundation/dependabot/npm_and_yarn/webpack-dev-server-4.13.2
Bump webpack-dev-server from 4.13.1 to 4.13.2
2023-04-03 16:47:02 +02:00
jibees
d3ddc8a221 Merge pull request #10650 from openfoodfoundation/dependabot/bundler/devise-4.9.1
Bump devise from 4.9.0 to 4.9.1
2023-04-03 16:44:46 +02:00
jibees
25e00d5210 Merge pull request #10649 from openfoodfoundation/dependabot/bundler/capybara-3.39.0
Bump capybara from 3.38.0 to 3.39.0
2023-04-03 16:42:53 +02:00
jibees
2a556ab329 Merge pull request #10651 from openfoodfoundation/dependabot/bundler/rubocop-1.49.0
Bump rubocop from 1.48.1 to 1.49.0
2023-04-03 16:42:08 +02:00
dependabot[bot]
80a94011b8 Bump rubocop from 1.48.1 to 1.49.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.48.1 to 1.49.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.48.1...v1.49.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-04-03 10:06:36 +00:00
dependabot[bot]
d4f2704213 Bump devise from 4.9.0 to 4.9.1
Bumps [devise](https://github.com/heartcombo/devise) from 4.9.0 to 4.9.1.
- [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.0...v4.9.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 10:02:14 +00:00
dependabot[bot]
91bf3c67cd Bump capybara from 3.38.0 to 3.39.0
Bumps [capybara](https://github.com/teamcapybara/capybara) from 3.38.0 to 3.39.0.
- [Release notes](https://github.com/teamcapybara/capybara/releases)
- [Changelog](https://github.com/teamcapybara/capybara/blob/master/History.md)
- [Commits](https://github.com/teamcapybara/capybara/compare/3.38.0...3.39.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 10:01:25 +00:00
dependabot[bot]
307a9effb0 Bump aws-sdk-s3 from 1.119.2 to 1.120.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.119.2 to 1.120.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-04-03 10:00:03 +00:00
dependabot[bot]
56e8f7b0c6 Bump webpack-dev-server from 4.13.1 to 4.13.2
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.13.1 to 4.13.2.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.13.1...v4.13.2)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 09:58:14 +00:00
Maikel
de58aa1187 Merge pull request #10529 from mkllnk/setup
Update setup script with newest template and merge with old script
2023-04-03 15:44:29 +10:00
Maikel Linke
da0ef8531b Install our used bundler version 2023-04-03 14:37:31 +10:00
Maikel Linke
08f2254a0e Leverage bin/setup within script/setup
And remove duplicate output. `bin/setup` is the Rails default for
updating your environment after code updates and `script/setup` is our
convenience script for the initial setup and starting with sample data.
2023-04-03 14:37:31 +10:00
Maikel Linke
477524039f Update bundler version when necessary
Not just when it's missing.
2023-04-03 14:37:31 +10:00
Maikel Linke
e5e5bf8c17 Install ruby automatically if rbenv is available
People may use other ways to provide the right Ruby version but if they
use rbenv then we can use it automatically.
2023-04-03 14:37:30 +10:00
Maikel Linke
4999e231bc Avoid permission warning when running sudo as root
The command is switching to an unprivileged user which can't access
/root and therefore there was a warning when executing. Adding `--login`
to the sudo command switches to that user properly and avoids the
warning.
2023-04-03 14:36:07 +10:00
Maikel Linke
6b857a5683 Make code examples easier to copy without $ sign
The $ sign used to indicate shell commands. But with markdown it's
obvious that we are entering commands.

Github has a quick copy button for all code examples which used to copy
the $ sign as well. Removing it allows to copy and paste easier with
that button.
2023-04-03 14:35:52 +10:00
Maikel Linke
f12ee186ee Speed up setup script when restarting rails 2023-04-03 14:33:39 +10:00
Maikel Linke
93ef95f58e Update JS dependencies with setup script 2023-04-03 14:33:39 +10:00
Maikel Linke
49dd1dd1fa Update setup script with newest template
I used the script from a new Rails 7 project.
2023-04-03 14:32:22 +10:00
David Cook
04d2f3f50d Install nodenv to use correct Node version
Copying what we do for rbenv, using the same plugins that we use in https://github.com/openfoodfoundation/ofn-install/blob/master/roles/node/tasks/main.yml
2023-04-03 14:11:28 +10:00
David Cook
f43bdec0f4 Update to latest node v17
Really this should install nodenv though..
2023-04-03 11:41:54 +10:00
Jean-Baptiste Bellet
b79bd8ef05 Removes empty <p> tags from product description 2023-03-31 11:37:30 +02:00
Jean-Baptiste Bellet
4dfc56954c Force .product-description to be one line
and make it as a `div`
2023-03-31 10:41:27 +02:00
dependabot[bot]
8c08827d35 Bump puma from 6.1.1 to 6.2.1
Bumps [puma](https://github.com/puma/puma) from 6.1.1 to 6.2.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.1.1...v6.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-31 08:13:31 +00:00
Maikel Linke
a56081ad5b Update translations 2023-03-31 14:59:16 +11:00
jibees
996c6d35f3 Merge pull request #10633 from openfoodfoundation/dependabot/bundler/debug-1.7.2
Bump debug from 1.7.1 to 1.7.2
2023-03-30 14:08:13 +02:00
Jean-Baptiste Bellet
89036db666 Do not use a preference, but create a new column for hide_ofn_navigation 2023-03-30 09:19:17 +11:00
Jean-Baptiste Bellet
dd9fec58a4 Instead of parsing URLs pass order through method for Orders Ctrl
Use methods for before_actions

Maybe we should for hide_of_navigation too, but a name 'hide_ofn_navigation_for_order_distributor' seemed unhelpful..
2023-03-30 09:19:17 +11:00
Jean-Baptiste Bellet
4fa44e6c64 Put the white label behind a feature toggle white_label
+ update specs as well

+ for admin section also
2023-03-30 09:19:17 +11:00
Jean-Baptiste Bellet
4ad2a1a723 Prefer a concern that set a variable instead of a global helper
Therefor, for the right controllers, simply implements:

```
include WhiteLabel

before_action :hide_ofn_navigation, only: [:show, :edit]
```

This is mort robust, since we're working in a controller level, not parsing URLs...
2023-03-30 09:17:57 +11:00
Jean-Baptiste Bellet
5279be4dc6 Improve spec: visiting order confirmation with distributor
Two cases:
 - the current distributor is the same than the order of the order confirmation page
 - the current distributor *is not* the same than the order of the order confirmation page (and has not set `hide_ofn_navigation` preference to `true`)
2023-03-30 09:17:57 +11:00
Jean-Baptiste Bellet
348c1ff7da Hide the OFN navigation menu when distributor as set its preference
Hide, when preference is true, for page:
 - shop
 - cart
 - checkout
 - order confirmation
2023-03-30 09:17:57 +11:00
Jean-Baptiste Bellet
c20ae0de1e Edit hide_ofn_navigation in 'white label' panel for an enterprise 2023-03-30 09:17:57 +11:00
Jean-Baptiste Bellet
3452864503 Add "white label" panel in enterprise settings page 2023-03-30 09:17:57 +11:00
Jean-Baptiste Bellet
d2f29b7d73 Some refactoring to avoid rubocop class too long warning 2023-03-30 09:13:35 +11:00
Filipe
62cdda2ce2 Merge pull request #10523 from rioug/10431-voucher-minimum-backend
Voucher bare minimum backoffice
2023-03-29 20:21:57 +01:00
Filipe
e6123969d2 Merge pull request #10607 from mkllnk/zone-spec
Sort zones by name again, in the admin panel
2023-03-29 17:57:50 +01:00
Filipe
90ce52612d Merge pull request #10615 from mkllnk/background-report-job
Run background reports with Sidekiq, not fork
2023-03-29 17:38:48 +01:00
jibees
7e6d40f370 Merge pull request #10621 from openfoodfoundation/dependabot/bundler/valid_email2-4.0.6
Bump valid_email2 from 4.0.5 to 4.0.6
2023-03-29 17:13:34 +02:00
Filipe
b6e4ff908f Merge pull request #10566 from mkllnk/products-meta-description
Remove unused product meta description
2023-03-29 15:58:31 +01:00
Filipe
c16c1a5e62 Merge pull request #10544 from filipefurtad0/test_pdf_reports
Adds pdf comparison; removes csv, xlsx, pdf file fixtures
2023-03-29 14:03:25 +01:00
dependabot[bot]
3f5aceff99 Bump debug from 1.7.1 to 1.7.2
Bumps [debug](https://github.com/ruby/debug) from 1.7.1 to 1.7.2.
- [Release notes](https://github.com/ruby/debug/releases)
- [Commits](https://github.com/ruby/debug/compare/v1.7.1...v1.7.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-29 10:00:12 +00:00
dependabot[bot]
b8e9925601 Bump valid_email2 from 4.0.5 to 4.0.6
Bumps [valid_email2](https://github.com/micke/valid_email2) from 4.0.5 to 4.0.6.
- [Release notes](https://github.com/micke/valid_email2/releases)
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v4.0.5...v4.0.6)

---
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-03-29 07:51:47 +00:00
Maikel
667a514ed2 Merge pull request #10623 from jibees/10622-flaky-specservicesorder_cycle_form_specrb403
Flaky: Sort array to avoid flaky spec when comparing values
2023-03-29 16:32:44 +11:00
filipefurtad0
25108f4c70 Removes all fixture files; asserts on downloaded file
Changes helper method to assert there is one file only

load_file_txt will be useful in other spec files too, and could probably be moved to spec/support/file_helper.rb
2023-03-29 16:24:21 +11:00
Maikel Linke
6f83607aa8 Remove unused product meta description from DB 2023-03-29 14:35:16 +11:00
Maikel Linke
70aff98581 Remove unused product meta description from UI 2023-03-29 14:33:42 +11:00
Maikel
812fb974dd Merge pull request #10584 from openfoodfoundation/dependabot/bundler/devise-i18n-1.11.0
Bump devise-i18n from 1.10.3 to 1.11.0
2023-03-29 13:08:35 +11:00
filipefurtad0
0a91f3d392 Sorts all shipiping method arrays 2023-03-28 15:46:41 +02:00
Gaetan Craig-Riou
c7c19e47de Add feature toggle description 2023-03-28 13:46:51 +11:00
Gaetan Craig-Riou
e1845dddac Fix TabsAndPanelsController now that #! are removed from url
This PR https://github.com/openfoodfoundation/openfoodnetwork/pull/9729
remove #! from url. But unfortunately, AngularJs rewrite "example.com#panel"
as "example.com#/panel" thus breaking the original implementation.
2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
2e10336a47 Add ability to manage voucher for enterprise user
Update spec accordingly
2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
37d3c025e9 Make sure New voucher page can be accessed from voucher panel
Co-authored-by: David Cook <david@redcliffs.net>
2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
6eb52aa540 TabsAndPanelsController specs, add missinrg panel scenario 2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
6809198c96 Vouchers specs, remove obsolete step
Vouchers tabs now shows when returning from new voucher page,
no need to manually click on the 'vouchers' link in the menu
2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
3b7aebd6da Enable vouchers feature toggle when running vouchers specs 2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
7dc5bc87d1 Fix rubocop warnings 2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
0c43d0f16a Put vouchers admin screen behind 'vouchers' feature toggle 2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
fb1ad4c65f Remove non needed collumn from voucher list 2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
04748b6e0e Move voucher value to the model
Use Spree::Money to display amount with currency
2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
094fc039e9 Update tabs_and_panels to display tab and panel based on the url anchor
For Vouchers, this means the voucher tab and panel are displayed when
you come back to entreprise edit screen from the new vourcher page
2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
e4f40d14b8 Fix enterprise voucher tab
Add harcoded voucher amount
Add missing translation
2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
4085aa22dc Add create voucher action and system test 2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
a4add889a8 Add form on the new voucher page 2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
f9f6793d10 Add template and basic controller for backoffice voucher pages 2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
a62687b1a7 Fix warning : The implicit block expectation syntax is deprecated 2023-03-28 13:39:29 +11:00
Gaetan Craig-Riou
a48fd0828c Add Voucher model
A voucher belongs to an enterprise and an enterprise can have many
vouchers
2023-03-28 13:39:29 +11:00
Maikel
6cfb86e578 Link to merged feature toggle wiki page 2023-03-28 12:25:21 +11:00
Maikel
a168126cfa Merge pull request #10600 from mkllnk/features
Add all feature toggles with descriptions at boot
2023-03-28 10:58:40 +11:00
Jean-Baptiste Bellet
88c833ec83 Sort array to avoid flaky spec when comparing values 2023-03-27 15:57:46 +02:00
Konrad
c887efee54 Merge pull request #10519 from vviekk/viv/10515
Removing 'none' from shipping categories from product edit page
2023-03-27 14:01:11 +02:00
jibees
86abff224e Merge pull request #10616 from mkllnk/rails-7-schema
Update DB schema to Rails 7.0
2023-03-27 10:56:14 +02:00
vviekk
9a10c8c25a Removing none from shipping categories from product edit page 2023-03-27 11:56:10 +05:30
Maikel Linke
4461b33491 Sort zones by name again
Zones were intended to be sorted by name. But I guess that the syntax of
Ransack changed one day and we didn't notice because the spec was
creating entries in the right order already (which often reflects the
query result order without parameters). So the spec is fixed to fail if
the sorting doesn't happen and Ransack is configured to sort correctly.
The previous sort value was ignored.
2023-03-27 16:36:04 +11:00
Maikel Linke
5ae9016f09 Speed up spec by skipping additional page load
The login_as_admin helper has to load a page to log in. Providing the
page we want to go to avoids going to the default page first.
2023-03-27 16:36:04 +11:00
Maikel Linke
67ab8f63e0 Remove superfluous test setup
There are no zones at the start of the test. This is probably a
left-over from old times when specs were not encapsulated in
transactions.
2023-03-27 16:36:04 +11:00
Maikel Linke
40e64acd37 Update DB schema to Rails 7.0
This is the result of: `./bin/rails db:migrate`
2023-03-27 16:18:02 +11:00
Maikel Linke
78fea7c7f2 Run background reports with Sidekiq, not fork
Forking worked in theory but crashed the browser in system specs. It
also came with many other hurdles and isn't well known solution in the
Rails community. Sidekiq can give us better control over execution
limits as well.
2023-03-27 13:27:49 +11:00
Konrad
4c61666fc7 Merge pull request #10547 from vviekk/10419
Enable invoices config only controls Print bulk action
2023-03-26 13:53:20 +02:00
Konrad
0c6a12a6f0 Merge pull request #10241 from binarygit/provide-err-msg-when-using-text-in-var-field
Admin, edit variant: only allow numerical values for weight, height, width and depth fields
2023-03-26 13:03:20 +02:00
jibees
0da245f912 Merge pull request #10595 from jibees/10592-flaky-specservicesorder_cycle_form_specrb282
Flaky spec: Sort each array to ensure the order
2023-03-24 16:11:49 +01:00
jibees
eba0c9c4f7 Merge pull request #10609 from openfoodfoundation/dependabot/npm_and_yarn/prettier-2.8.7
Bump prettier from 2.8.6 to 2.8.7
2023-03-24 11:22:07 +01:00
dependabot[bot]
25618c009e Bump prettier from 2.8.6 to 2.8.7
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.6 to 2.8.7.
- [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.6...2.8.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-24 09:58:19 +00:00
jibees
068ac40a76 Merge pull request #10589 from openfoodfoundation/dependabot/npm_and_yarn/webpack-dev-server-4.13.1
Bump webpack-dev-server from 4.12.0 to 4.13.1
2023-03-24 10:52:01 +01:00
dependabot[bot]
5868fd1b7c Bump webpack-dev-server from 4.12.0 to 4.13.1
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.12.0 to 4.13.1.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.12.0...v4.13.1)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-24 09:36:40 +00:00
jibees
540129854e Merge pull request #10603 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.119.2
Bump aws-sdk-s3 from 1.119.1 to 1.119.2
2023-03-24 10:29:26 +01:00
jibees
f747ab568a Merge pull request #10604 from openfoodfoundation/dependabot/bundler/knapsack_pro-3.9.0
Bump knapsack_pro from 3.8.0 to 3.9.0
2023-03-24 10:23:01 +01:00
Jean-Baptiste Bellet
f9f619c036 Update all locales with the latest Transifex translations 2023-03-24 09:29:45 +01:00
Filipe
31ffeab4cd Merge pull request #10440 from mkllnk/rails7
Upgrade to Rails 7.0
2023-03-23 12:04:11 +00:00
Filipe
1673a18eb6 Merge pull request #9729 from binarygit/remove-angular-from-users
Admin, Enterprise Settings, Users tabs: remove tooltips directives + use reflex to invite user to be managers
2023-03-23 11:52:18 +00:00
Mohamed ABDELLANI
d3a25282de fix load order cycles by date ranges 2023-03-23 12:02:17 +01:00
Jean-Baptiste Bellet
29cdadd563 Avoid using exception but simply errors attribute contained in object
Co-Authored-By: Maikel <maikel@email.org.au>
2023-03-23 11:21:15 +01:00
Jean-Baptiste Bellet
8dffb38bf5 Sort each array to ensure the order
and then expect the right values.
2023-03-23 11:21:05 +01:00
binarygit
ecd5033efa Replace angular for when adding a new unregistered manager to an enterprise
Co-Authored-By: David Cook <david@redcliffs.net>
2023-03-23 11:21:05 +01:00
Jean-Baptiste Bellet
a13227defa Add I18N to all reflexes 2023-03-23 11:21:05 +01:00
Jean-Baptiste Bellet
465a295dfa Delete manager invitation controller 2023-03-23 11:21:05 +01:00
Jean-Baptiste Bellet
9c84a6936a Create a concern for manager invitations
Can be used elsewhere

Update manager_invitations.rb
2023-03-23 11:21:05 +01:00
dependabot[bot]
f3d687cbea Bump knapsack_pro from 3.8.0 to 3.9.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 3.8.0 to 3.9.0.
- [Release notes](https://github.com/KnapsackPro/knapsack_pro-ruby/releases)
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v3.8.0...v3.9.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-03-23 10:05:23 +00:00
dependabot[bot]
6894cb5dd7 Bump aws-sdk-s3 from 1.119.1 to 1.119.2
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.119.1 to 1.119.2.
- [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-03-23 10:04:05 +00:00
Filipe
809a57dbdb Merge pull request #10437 from openfoodfoundation/10436-the-cookie-policy-modal-does-not-appear-to-use-the-language-selected-by-the-user
Translate cookie policy into languages selected by the user
2023-03-23 10:00:38 +00:00
Filipe
6b30a654a6 Merge pull request #10516 from macanudo527/fix_taxonomy
Fix Sorting entries in a taxonomy is broken
2023-03-23 09:23:16 +00:00
Filipe
9b749ee2e0 Merge pull request #10466 from dacook/report-summaries
Report summaries in JSON (API) output
2023-03-22 23:34:48 +00:00
David Cook
c27974c5a3 Add marker for summary rows
This can be enabled in the reports API with the hidden parameter `fields_to_show[]=report_row_type` to help with parsing summary row output.
2023-03-22 11:47:26 +00:00
David Cook
6f41a4168d Allow headers and footers for JSON format
You wouldn't want it by default, but it can be enabled with a parameter like display_summary_row=true
2023-03-22 11:47:26 +00:00
David Cook
db7ac904e9 Allow column formatting and header/footer stripping to be specified independently
This will allow us to change the options in the following commit.
2023-03-22 11:47:26 +00:00
David Cook
96eaec908d Remove unused mock in specs
It looks like it was expected that the price and amount columns would be formatted, but this is not currently the case. So I cleaned this up to be less ambiguous.

If any of these columns were to be configured for formatting, this line could be added back to test for unformatted output.
2023-03-22 11:47:26 +00:00
Maikel Linke
e0fd180edd DRY Flipper UI config 2023-03-22 15:45:26 +11:00
Maikel Linke
fd68cbf56d Remove on-the-fly adding of feature toggle entries
We now have a new source of truth. You shouldn't use a feature toggle
without adding it to OpenFoodNetwork::FeatureToggle first. All toggles
are added at boot time already.
2023-03-22 15:36:08 +11:00
Maikel Linke
9a1b1498bf Add all feature toggles with descriptions at boot
So you can easily inspect and activate new features without trying to
use them first. It brings more visibility and will enable us to easily
remove retired features as well.
2023-03-22 15:36:08 +11:00
Filipe
12de3ae584 Merge pull request #10509 from mkllnk/filter-shipping-methods-by-category
Filter shipping methods by category
2023-03-21 17:47:22 +00:00
Rachel Arnould
75c3bf8b56 Merge pull request #9630 from binarygit/remove-angular-from-business-details
Remove angular from business details
2023-03-21 18:31:40 +01:00
Rachel Arnould
52c12ea896 Merge pull request #10554 from mkllnk/dfc-variants
Ignore master variants exporting to DFC
2023-03-21 18:30:05 +01:00
jibees
2e4bbb7740 Merge pull request #10590 from openfoodfoundation/dependabot/npm_and_yarn/prettier-2.8.6
Bump prettier from 2.8.5 to 2.8.6
2023-03-21 15:32:45 +01:00
dependabot[bot]
1b0880e7df Bump prettier from 2.8.5 to 2.8.6
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.5 to 2.8.6.
- [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.5...2.8.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-21 14:12:05 +00:00
Filipe
84f319894a Merge pull request #10594 from jibees/10593-deployment-failed-on-master
Move `webpack-*` as dependency (not devDependencies)
2023-03-21 14:09:52 +00:00
Jean-Baptiste Bellet
2a9b6f8e8c Sort each array to ensure the order
and then expect the right values.
2023-03-21 14:52:05 +01:00
Jean-Baptiste Bellet
c4e58eab3c Move webpack-* as dependency (not devDependencies) 2023-03-21 14:35:57 +01:00
Neal Chambers
920e9e65bd Merge remote-tracking branch 'origin/fix_taxonomy' into fix_taxonomy 2023-03-21 21:39:02 +09:00
David Cook
78b978efba Merge pull request #10458 from dacook/838-node-install-scripts
Node install script
2023-03-21 15:02:08 +11:00
Maikel Linke
31db35675b Add feature toggle for filtering shipping methods 2023-03-21 14:49:47 +11:00
Maikel Linke
6b25c36476 Filter ship methods by required shipping category
The products in an order may require several shipping categories like
refrigeration or express. We now filter the categories according to
their support of shipping categories.
2023-03-21 14:30:45 +11:00
Maikel Linke
73fa6295ec Simplify shipping method selection code 2023-03-21 14:30:44 +11:00
Maikel Linke
b5f43b3c1c Rename method because it's not changing the input
A common Ruby convention is to to use the bang naming `!` to mark method
which change the given parameter instead of returning a copy.
2023-03-21 14:30:44 +11:00
Maikel Linke
fcc68a0a19 Return new filtered list instead of modifying
This makes a clear distinction between the unfiltered and filtered list.
There may also be some gotchas when modifying the array of an
ActiveRecord relation. It also allows us to write shorter code without
storing a separate variable.
2023-03-21 14:30:44 +11:00
Maikel Linke
4c2d7c0d1c Rename confusing test variable
The "subject" is usually the code under test. In this spec it would be
the TagRuleApplicator and not the parameter given to it. So I renamed it
to avoid confusion here.
2023-03-21 14:30:44 +11:00
Maikel Linke
eee5e8eee7 Remove unnecessary tag rule code
The applicator converts the input to an array, even `nil` becomes an
empty array. Iterating over an empty array doesn't do anything either,
the result is the same.
2023-03-21 14:30:44 +11:00
Maikel Linke
e227cb912b Simplify tag rule spec
We don't need to know the internals. We want to know that the applicator
is not raising an error when we give `nil` or an empty collection.
2023-03-21 14:30:44 +11:00
Maikel Linke
6f3a0e8812 De-duplicate early for better performance 2023-03-21 14:30:44 +11:00
Maikel Linke
d7e4962fba Add method for easier reading 2023-03-21 14:30:44 +11:00
David Cook
7ad5181026 Merge pull request #10568 from openfoodfoundation/dependabot/npm_and_yarn/webpack-dev-server-4.12.0
Bump webpack-cli and webpack-dev-server from v3 to v4
2023-03-21 11:47:16 +11:00
jibees
c2133c8fa5 Merge pull request #10583 from openfoodfoundation/dependabot/bundler/flipper-active_record-0.26.2
Bump flipper-active_record from 0.26.0 to 0.26.2
2023-03-20 14:48:10 +01:00
dependabot[bot]
de5264138d Bump flipper-active_record from 0.26.0 to 0.26.2
Bumps [flipper-active_record](https://github.com/jnunemaker/flipper) from 0.26.0 to 0.26.2.
- [Release notes](https://github.com/jnunemaker/flipper/releases)
- [Changelog](https://github.com/jnunemaker/flipper/blob/main/Changelog.md)
- [Commits](https://github.com/jnunemaker/flipper/compare/v0.26.0...v0.26.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 13:30:57 +00:00
Jean-Baptiste Bellet
bfbcdba98c Modify configuration to match new version of webpacker
Error was:
```
ERROR in chunk admin [entry]
js/[name]-[contenthash].js
Cannot use [chunkhash] or [contenthash] for chunk in 'js/[name]-[contenthash].js' (use [hash] instead)
```
2023-03-20 11:34:57 +01:00
David Cook
0632553a4a Remove @webpack-cli/serve
This now gets included as a dependency of webpack-cli v4. If webpack-cli had been upgraded earlier, we never would have needed to specify this.
2023-03-20 11:34:57 +01:00
David Cook
a97d416bfd Bump webpack-cli from 3.3.12 to 4.10.0
I don't know why, but Dependabot decided not to: https://github.com/openfoodfoundation/openfoodnetwork/pull/9798#issuecomment-1288583629

This is required for webpack-dev-server v4.
2023-03-20 11:34:56 +01:00
dependabot[bot]
b306539163 Bump webpack-dev-server from 3.11.3 to 4.12.0
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 3.11.3 to 4.12.0.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v3.11.3...v4.12.0)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 11:33:31 +01:00
jibees
caea53ab91 Merge pull request #10582 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.2.5
Bump @floating-ui/dom from 1.2.4 to 1.2.5
2023-03-20 11:23:56 +01:00
jibees
d7ee0ca434 Merge pull request #10580 from openfoodfoundation/dependabot/bundler/flipper-ui-0.26.2
Bump flipper-ui from 0.26.0 to 0.26.2
2023-03-20 11:20:11 +01:00
jibees
7fa4aa62f9 Merge pull request #10581 from openfoodfoundation/dependabot/npm_and_yarn/prettier-2.8.5
Bump prettier from 2.8.4 to 2.8.5
2023-03-20 11:17:14 +01:00
dependabot[bot]
ca97adb724 Bump devise-i18n from 1.10.3 to 1.11.0
Bumps [devise-i18n](https://github.com/tigrish/devise-i18n) from 1.10.3 to 1.11.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.10.3...v1.11.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-03-20 09:59:49 +00:00
dependabot[bot]
6295ecc7cf Bump @floating-ui/dom from 1.2.4 to 1.2.5
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.2.4 to 1.2.5.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.5/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 09:58:48 +00:00
dependabot[bot]
b207d3e7fd Bump prettier from 2.8.4 to 2.8.5
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.4 to 2.8.5.
- [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.4...2.8.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 09:58:31 +00:00
dependabot[bot]
b4f3655fae Bump flipper-ui from 0.26.0 to 0.26.2
Bumps [flipper-ui](https://github.com/jnunemaker/flipper) from 0.26.0 to 0.26.2.
- [Release notes](https://github.com/jnunemaker/flipper/releases)
- [Changelog](https://github.com/jnunemaker/flipper/blob/main/Changelog.md)
- [Commits](https://github.com/jnunemaker/flipper/compare/v0.26.0...v0.26.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 09:58:17 +00:00
Jean-Baptiste Bellet
918e220557 Move $locationProvider configuration to another file
Actually the `config()` method of `admin_ofn` file did not run on `/admin/enterprises/*` pages for an unknown reason

Now those two files have the same configuration
2023-03-20 08:37:47 +01:00
binarygit
a397ba1ca9 Replace what's this tooltips
There are tooltips here that don't have a what's this?
There are many angular directives/methods being used that I haven't
looked into
Every select box is using select2
2023-03-20 08:37:47 +01:00
Maikel Linke
7cd235c84d Translate AngularJS templates in the browser
AngularJS templates are compiled as assets on deploy. Any translatable
text can't be translated in Ruby during compilation because it's static
text. It needs to be translated with an AngularJS filter in the browser.
2023-03-20 17:02:10 +11:00
Jean-Baptiste Bellet
e97cd0a1fd That particular spec is actually failing ; this must be solved 2023-03-20 16:59:19 +11:00
Jean-Baptiste Bellet
a56f061663 Prepare the spec to be factorized and to be used in different context 2023-03-20 16:59:19 +11:00
Maikel
512cb44df5 Merge pull request #10330 from mickenorlen/8909-add-balance-to-api-v1-customer-endpoint
Add balance to api v1 customers endpoint
2023-03-20 15:47:41 +11:00
Maikel
0ab8e62749 Merge pull request #10405 from jibees/upgrade-node-version
Upgrade node version
2023-03-20 10:55:41 +11:00
Mohamed ABDELLANI
008b12a75d remove "/" from the partial path to load sub-report filters 2023-03-20 10:41:28 +11:00
Maikel Linke
2e51d9be4a Include Rails version in db schema
So Rails knows which defaults to apply.
https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#rails-version-is-now-included-in-the-active-record-schema-dump
2023-03-20 10:41:28 +11:00
Maikel Linke
bd20e299f3 Support old cookie encryption
https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#key-generator-digest-class-changing-to-use-sha256
2023-03-20 10:41:28 +11:00
Maikel Linke
90a92421f4 Remove obsolete setting of Zeitwerk
It's the default now.
https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#the-setter-config-autoloader-has-been-deleted
2023-03-20 10:41:28 +11:00
Maikel Linke
84daa046ca Update I18n spec to Rails 7 2023-03-20 10:41:28 +11:00
Maikel Linke
61259bcfc2 Bump rails from 6.1.7 to 7.0.4
Result of:

    bundle update --conservative rails railties\
     actioncable actionmailbox actionmailer actionpack actiontext\
     actionview activejob activemodel activerecord activestorage activesupport
2023-03-20 10:41:15 +11:00
Maikel Linke
4f44d50943 Omit Rails version restriction 2023-03-20 10:38:57 +11:00
Konrad
2e426c701e Merge pull request #10232 from binarygit/show-correct-error-when-user-inputs-url-as-ig-acc
[Enterprise->Create] Show correct error message when user inputs url in instagram field
2023-03-19 21:57:02 +01:00
Konrad
99b3701e17 Merge pull request #10463 from openfoodfoundation/dependabot/bundler/devise-4.9.0
Bump devise from 4.8.1 to 4.9.0
2023-03-17 18:41:03 +01:00
Filipe
8bef0f9a43 Merge pull request #10337 from jibees/9419-send-invoices-per-email-in-bulk-from-the-admin-orders-page
Admin, orders list page: send invoices per email in bulk
2023-03-17 10:58:26 +00:00
jibees
d69aa04435 Merge pull request #10577 from openfoodfoundation/dependabot/bundler/flipper-0.26.2
Bump flipper from 0.26.0 to 0.26.2
2023-03-17 11:42:23 +01:00
dependabot[bot]
0b4a243d8e Bump flipper from 0.26.0 to 0.26.2
Bumps [flipper](https://github.com/jnunemaker/flipper) from 0.26.0 to 0.26.2.
- [Release notes](https://github.com/jnunemaker/flipper/releases)
- [Changelog](https://github.com/jnunemaker/flipper/blob/main/Changelog.md)
- [Commits](https://github.com/jnunemaker/flipper/compare/v0.26.0...v0.26.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-17 10:01:35 +00:00
David Cook
ced9784fb8 Merge pull request #10576 from openfoodfoundation/revert-10474-fix-customer-can-checkout-non-matching-shipping-and-product-categories
Revert "Fix: Customers can checkout with non-matching shipping and product categories"
2023-03-17 15:41:04 +11:00
David Cook
788457618f Check ship address required based on all available methods
This check was implemented based on 'allowed' shipping methods, but we need to revert that logic. So for now, we can check all 'available' shipping methods.

This could potentially result in the same query being run twice, because load_shipping_methods also loads it. I opted to keep things simple and not try to optimise here.
2023-03-17 13:06:45 +11:00
David Cook
ef607da2c1 Revert "Fix: Customers can checkout with non-matching shipping and product categories" 2023-03-17 10:40:53 +11:00
Filipe
9ea6fa5c44 Merge pull request #9687 from dacook/9616-order-cycle-open-webhook
Add webhook triggered on Order Cycle Open
2023-03-16 17:24:22 +00:00
Konrad
a945f8f72f Merge pull request #10522 from mkllnk/flipper-upgrade
Bump flipper* from 0.20.4 to 0.26.0
2023-03-16 17:24:33 +01:00
jibees
0c3ee2e8fc Merge pull request #10574 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-4.6.0
Bump jasmine-core from 4.5.0 to 4.6.0
2023-03-16 14:59:33 +01:00
dependabot[bot]
f6458e91c2 Bump jasmine-core from 4.5.0 to 4.6.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v4.5.0...v4.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-16 09:59:04 +00:00
David Cook
4757b82a80 Update all locales with the latest Transifex translations 2023-03-16 14:15:04 +11:00
David Cook
ad9e82e973 Merge pull request #10569 from openfoodfoundation/dependabot/bundler/sidekiq-7.0.7
Bump sidekiq from 7.0.6 to 7.0.7
2023-03-16 11:47:55 +11:00
Filipe
e8430eae6d Merge pull request #10460 from jibees/10400-pagination-in-bom-not-aggregating-results-from-quick-search-field
BOM: Add a search input that search for items with pagination
2023-03-15 16:31:32 +00:00
dependabot[bot]
584b013a49 Bump sidekiq from 7.0.6 to 7.0.7
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.0.6 to 7.0.7.
- [Release notes](https://github.com/sidekiq/sidekiq/releases)
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.0.6...v7.0.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 10:05:08 +00:00
Maikel
f15cb01f2a Merge pull request #10520 from mkllnk/return-auth-controller-spec
Correctly include order id in return auth spec for Rails 7 compatibility
2023-03-15 14:08:16 +11:00
Maikel Linke
f1a5c46685 Remove unnecessary Flipper memoizer config
Auto-config, yay.
2023-03-15 12:54:03 +11:00
Maikel Linke
00f2f92ce0 Remove unnecessary Flipper active_record config
This is now done automatically when including flipper-active_record in
the Gemfile.
2023-03-15 12:54:03 +11:00
Maikel Linke
fdd71cff51 Remove now unnecessary flipper_id method
Flipper does it for us.
2023-03-15 12:54:02 +11:00
Maikel Linke
c9ca020f05 Bump flipper* from 0.20.4 to 0.26.0 2023-03-15 12:54:02 +11:00
David Cook
d59074dabd Tidy up spec
The best way to check if something changed or not, is with 'change' of course.
2023-03-15 12:18:17 +11:00
jibees
6a874b9527 Merge pull request #10562 from openfoodfoundation/dependabot/bundler/rails-6.1.7.3
Bump rails from 6.1.7.2 to 6.1.7.3
2023-03-14 15:02:49 +01:00
dependabot[bot]
1f08da207f Bump rails from 6.1.7.2 to 6.1.7.3
Bumps [rails](https://github.com/rails/rails) from 6.1.7.2 to 6.1.7.3.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v6.1.7.2...v6.1.7.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-14 09:59:50 +00:00
Maikel Linke
9c3bdc6b9b Remove unnecessary table join
And use Rails syntax for clarity and future extensions.
2023-03-14 14:38:25 +11:00
Maikel Linke
2105c0d0ea Ignore master variants exporting to DFC 2023-03-14 14:38:24 +11:00
Maikel Linke
6e514acc77 Spec too many variants exported to DFC 2023-03-14 14:38:24 +11:00
Maikel Linke
b8338fb9af Removing engine namespace from services
Services are usually not namespaced because they are part of the app.
This engine has an isolated namespace which means that we don't need to
separate with out own namespacing here.
2023-03-14 13:49:21 +11:00
jibees
687d4593fb Merge pull request #10550 from openfoodfoundation/dependabot/bundler/database_cleaner-2.0.2
Bump database_cleaner from 2.0.1 to 2.0.2
2023-03-13 21:12:42 +01:00
dependabot[bot]
b62f88512f Bump database_cleaner from 2.0.1 to 2.0.2
Bumps [database_cleaner](https://github.com/DatabaseCleaner/database_cleaner) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/DatabaseCleaner/database_cleaner/releases)
- [Changelog](https://github.com/DatabaseCleaner/database_cleaner/blob/main/History.rdoc)
- [Commits](https://github.com/DatabaseCleaner/database_cleaner/compare/v2.0.1...v2.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 15:24:41 +00:00
jibees
6bdb89d090 Merge pull request #10551 from openfoodfoundation/dependabot/bundler/rubocop-1.48.1
Bump rubocop from 1.48.0 to 1.48.1
2023-03-13 16:16:56 +01:00
jibees
a63531c8c2 Merge pull request #10549 from openfoodfoundation/dependabot/bundler/ddtrace-1.10.1
Bump ddtrace from 1.10.0 to 1.10.1
2023-03-13 16:15:06 +01:00
jibees
de2a15e3e1 Merge pull request #10548 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.2.4
Bump @floating-ui/dom from 1.2.3 to 1.2.4
2023-03-13 16:14:00 +01:00
vviekk
2674df026a Fixing 'unsaved' alert behaviour for order cycle edit forms 2023-03-13 17:50:00 +05:30
dependabot[bot]
e5f5d42d59 Bump rubocop from 1.48.0 to 1.48.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.48.0 to 1.48.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.48.0...v1.48.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-03-13 10:05:22 +00:00
dependabot[bot]
f23de206d9 Bump ddtrace from 1.10.0 to 1.10.1
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 1.10.0 to 1.10.1.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v1.10.0...v1.10.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 10:03:01 +00:00
dependabot[bot]
729bcdf291 Bump @floating-ui/dom from 1.2.3 to 1.2.4
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.4/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 09:58:49 +00:00
vviekk
c1c0eca7c4 Enable invoices config only controls Print bulk action 2023-03-13 11:39:21 +05:30
David Cook
8f67e9839d Apply code suggestion
Avoids an error:
./script/nodenv-install.sh: line 13: brew: command not found

Co-authored-by: Maikel <maikel@email.org.au>
2023-03-10 13:38:59 +11:00
Maikel Linke
62d0ce290a Update translations 2023-03-10 11:42:36 +11:00
jibees
96ead52fcc Merge pull request #10536 from openfoodfoundation/dependabot/bundler/rack-2.2.6.3
Bump rack from 2.2.6.2 to 2.2.6.3
2023-03-09 14:55:19 +01:00
dependabot[bot]
ff708952ab Bump rack from 2.2.6.2 to 2.2.6.3
Bumps [rack](https://github.com/rack/rack) from 2.2.6.2 to 2.2.6.3.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.6.2...v2.2.6.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-09 02:40:19 +00:00
David Cook
fdeeab5750 Test twitter with (almost) real world example
I discovered that twitter doesn't have 'www' in the url anymore, no '@' symbol and interestingly no trailing slash. I added back the '@' just so we can test that still.

Using a regex group we can cater for optional www in a single regex.
2023-03-09 11:22:04 +11:00
David Cook
9e7e176cf9 Accept full URLs
It looks like the intention was there, so I made it work.
I've included a real world example, but added capitalisation to complete the test.
2023-03-09 11:21:52 +11:00
Konrad
2daa49406a Merge pull request #10506 from jibees/9868-product-import-empty-variant-names-recorded-differently-leads-to-variant-duplication
Product import: consider `display_name` with `null` or `empty` as value as equal
2023-03-08 16:58:32 +01:00
Konrad
125bc3d14b Merge pull request #10514 from jibees/9292-changes-to-incomingoutgoing-products-lists-triggering-failed-to-update-order-cycle-error
Do not update `estimate_price` of a variant that is not available for the shop on OrderCycle update
2023-03-08 15:45:11 +01:00
Rachel Arnould
02300d6bb6 Merge pull request #10496 from rioug/10479-split-checkout-fix-user-blocked-at-step1
[split checkout] Fix bug preventing user from reaching payment step
2023-03-08 15:44:50 +01:00
Rachel Arnould
aba3968bca Merge pull request #10447 from jibees/9148-no-bulk-delete-possible-on-bom-when-orders-have-multiple-items
Admin, BOM: can bulk delete line items of an order
2023-03-08 14:56:25 +01:00
Gaetan Craig-Riou
23c4298519 Fix bug when in specific scenario user couldn't proceed to payment step
When using a "pick up" shipping method, with a user who doesn't have a shipping address it was impossible to proceed to the payment step because shipping address was invalid.

To fix this, we ensure that "ship_address_same_as_billing" parameter is set to true when using a "pick up" shipping method.

use distributor address when shipping method doesn't require a ship address ; in doing this we follow the same logic as the legacy checkout
2023-03-08 10:49:37 +01:00
Jean-Baptiste Bellet
40a0d8e08c Improve design: make delete not a button but a link + close to file name 2023-03-08 10:38:28 +01:00
Jean-Baptiste Bellet
5cbec5521c Simplify ability
Co-Authored-By: David Cook <david@redcliffs.net>
2023-03-08 10:38:28 +01:00
Rachel Arnould
d7047bb4cc Merge pull request #10513 from jibees/10505-add-shopper-comment-to-order-detail-summary
SplitCheckout: Display special_instructions of the order as emphasized text if present on summary page
2023-03-08 10:30:40 +01:00
binarygit
8f6fdf3e31 [Admin, Enterprise Settings] Remove Angular from Business Details tab 2023-03-08 10:26:05 +01:00
Rachel Arnould
1ce029d8e4 Merge pull request #10497 from jibees/10495-split-checkout-label-of-checkbox-save-card-for-future-use-is-clickable-but-not-active
SplitCheckout: Make label clickable to check/uncheck checkbox on step 2
2023-03-08 10:20:00 +01:00
jibees
eb7d20d74d Merge pull request #10530 from mkllnk/flaky-service-spec
Stabilise spec with deterministic order
2023-03-08 09:04:29 +01:00
Maikel Linke
c4ba1e6616 Stabilise spec with deterministic order
The ids were returned in random order before.
2023-03-08 13:14:40 +11:00
Maikel
f97ccb4203 Merge pull request #10525 from openfoodfoundation/dependabot/bundler/ddtrace-1.10.0
Bump ddtrace from 1.9.0 to 1.10.0
2023-03-08 12:09:04 +11:00
Maikel
df8283661d Merge pull request #10487 from mkllnk/time-spec
Prepare caching spec for Rails 7
2023-03-08 11:37:44 +11:00
Maikel
d9ee56b4a5 Merge pull request #10524 from mkllnk/dfc-urls
Configure host for dfc_provider engine globally
2023-03-08 11:13:48 +11:00
dependabot[bot]
2230a1f179 Bump ddtrace from 1.9.0 to 1.10.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v1.9.0...v1.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 09:58:38 +00:00
Maikel Linke
a9c8d9f304 Configure host for dfc_provider engine globally
Passing the parameter all the time was pretty inconvenient.
2023-03-07 16:39:02 +11:00
David Cook
9d5ca2255b Apply suggestions from code review
Co-authored-by: Maikel <maikel@email.org.au>
2023-03-07 15:38:50 +11:00
David Cook
00a823b2fc 6. Add webhook endpoints to user developer settings screen
Allowing creation and deleting via the user association.
It probably won't be much effort to allow editing and multiple records, but I cut it down to the minimum needed to avoid any further delays.

I couldn't find a way to test a failure in the destroy method, but decided to keep the condition because I thought it was worth having.
2023-03-07 15:38:50 +11:00
David Cook
3d81a6e280 Prevent creating duplicate webhook notifications [migration]
Using the clever concurrency testing borrowed from SubscriptionPlacementJob, but I thought a shorter pause time (just 100ms) would be sufficient.

I considered doing this with a new 'state' field (upcoming/open/close), but decided to keep it simple.
2023-03-07 15:38:50 +11:00
David Cook
739df4be01 4. OrderCycleOpenedJob triggers webhook 2023-03-07 15:38:50 +11:00
David Cook
b91cabc510 Also send webhook payloads for distributor owners
But not supplier owners.
2023-03-07 15:38:50 +11:00
David Cook
ba152f12ee 3. Add OrderCycleWebhookService to create webhook payloads for an order cycle event 2023-03-07 15:38:50 +11:00
David Cook
778baba118 User may have many WebhookEndpoints [migration]
Although we won't be allowing multiple in the this PR, we certainly plan to in the future.

The migration helper add_reference couldn't handle the custom column name, so I had to put it together manually.
2023-03-07 15:38:50 +11:00
David Cook
85c98c6d3e 2. Add model WebhookEndpoint [migration]
This will store the URL for each user that wants a notification.

We probably don't need URL validation (it's not done on Enterprise for example). It could be validated by browser input, and anyway will be validated if the webhook actually works or not.

Inspired by Keygen: https://keygen.sh/blog/how-to-build-a-webhook-system-in-rails-using-sidekiq/
2023-03-07 15:38:50 +11:00
David Cook
de9546587a Prevent webhooks to private addresses (SSRF) [add gem]
Best reviewed with whitespace hidden.

Unfortunately the spec isn't allowed in CI. But it worked on my environment, I promise.
I chose `xit` so that it doesn't run unnecessarily. Perhaps we could use `pending` instead, which would execute, and notify us if it suddenly started working one day. But I doubt it.
2023-03-07 15:38:50 +11:00
David Cook
9741935955 Raise error on server error
And thus retry later.
I tried to test that it actually retries, or ensuring the job remained in the queue to be retried, but couldn't get it to work.
2023-03-07 15:38:50 +11:00
David Cook
9d19f37fec 1. Add WebhookDeliveryJob
This job is responsible for delivering a payload for one webhook event only. It allows the action to run asynchronously (and not slow down the calling process).
2023-03-07 15:38:50 +11:00
David Cook
718ac0ab80 Add Faraday for making HTTP requests [add gem]
It's the most popular and flexible option, so should be able to cater for our future needs best.
2023-03-07 15:38:47 +11:00
Neal Chambers
d95c5ff8a8 Use Spree Taxon Controller instead of API Taxon Controller
Add tests for reordering taxons
2023-03-07 13:22:59 +11:00
Maikel Linke
797b98d686 Remove Rails 5.0 controller spec workaround
We added a method to work around a bug. But that's not needed any more.
2023-03-07 08:46:36 +11:00
Maikel Linke
3dc3ebe584 Correctly include order id in return auth spec
The route to update a return authorization must include the order number
as id:

    /admin/orders/:order_id/return_authorizations/:id(.:format)

The spec only worked because the controller's ivars were not reset
between requests and the order was already set. But Rails 7 will reset
the ivars and it failed finding the order without a given id.
2023-03-07 08:46:36 +11:00
Jean-Baptiste Bellet
a7644f8e8b Update spec: can edit OC even if variant in subscription has been deleted 2023-03-06 17:12:09 +01:00
jibees
5dd2737811 Merge pull request #10517 from openfoodfoundation/dependabot/bundler/rubocop-1.48.0
Bump rubocop from 1.47.0 to 1.48.0
2023-03-06 15:23:25 +01:00
filipefurtad0
6d05d57846 Fixes spec when introducing invalid instagram link
It seems that only the slash at the end of the address is making it invalid, which does not correspond to the error message. This is a separate issue.
2023-03-06 15:02:49 +01:00
Jean-Baptiste Bellet
d9b534b829 + update spec as well 2023-03-06 14:52:32 +01:00
Jean-Baptiste Bellet
ac739108a2 Improve readability by generating search string for ransack 2023-03-06 11:31:36 +01:00
dependabot[bot]
a78768c291 Bump rubocop from 1.47.0 to 1.48.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.47.0 to 1.48.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.47.0...v1.48.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-03-06 10:02:43 +00:00
Neal Chambers
3f3ae97a40 Add tests for reordering taxons 2023-03-06 18:57:02 +09:00
binarygit
ae166ae220 Fix: User does not get stuck when going backwards while creating new ent 2023-03-06 09:29:04 +01:00
binarygit
533f7048bf [Enterprise->Create] Show correct error message when user inputs url in instagram field 2023-03-06 09:29:04 +01:00
Neal Chambers
e399e27a7d Merge remote-tracking branch 'origin/fix_taxonomy' into fix_taxonomy 2023-03-06 15:09:13 +09:00
Neal Chambers
63ba3defec Use Spree Taxon Controller instead of API Taxon Controller 2023-03-06 15:07:52 +09:00
Maikel
b9a7ff903f Merge pull request #10494 from filipefurtad0/test_xlsx_reports
Adds coverage for CSV and XLSX file download
2023-03-06 15:00:56 +11:00
Maikel
fc6b61fc87 Merge pull request #10503 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.2.3
Bump @floating-ui/dom from 1.2.1 to 1.2.3
2023-03-06 11:52:38 +11:00
Jean-Baptiste Bellet
131772f7b2 Variant can be "not available": next and don't update its estimate price 2023-03-03 15:07:10 +01:00
Jean-Baptiste Bellet
440e776e3a fee_calculator can be retrieved outside subscription_line_items iteration 2023-03-03 15:05:07 +01:00
filipefurtad0
56b9c28955 Splits test cases into respective context blocks
Reduces code
2023-03-03 11:39:03 +00:00
Jean-Baptiste Bellet
c34942dbf0 Display special_instructions of order as emphasized text if present
+ update spec as well
2023-03-03 11:12:11 +01:00
Jean-Baptiste Bellet
2814b1f399 Update all locales with the latest Transifex translations 2023-03-03 09:35:40 +01:00
Konrad
0e13e5408f Merge pull request #10467 from abdellani/fix_hub_supplier_can_control_shipping_payment_method
limit users who can update shipping/payment method of an order cycle
2023-03-03 09:27:37 +01:00
Maikel Linke
12906d1e13 Explicitely touch instead of noop save
When calling `save!` without changing any attributes then Rails doesn't
always touch other records because nothing changed. So I changed the
spec to `touch` explicitely and it turns out that everything passes.

Tada, our code seems correct and it was only the spec which seemed
broken in Rails 7.
2023-03-03 12:51:12 +11:00
Maikel Linke
103bc50bdc Make spec robust on very fast computers
I didn't observe it but if the spec code would run within the same
millisecond then we wouldn't be able to observe a change to
`updated_at`. Time travel solves this potential problem.
2023-03-03 12:51:12 +11:00
Maikel Linke
b6cccc2e1d Mark broken specs, possible broken caching
I found this because Rails 7 converts timestamps to database precision
straight away. While we may have some broken logic in the code, most of
these cases may just be broken spec code. Watch this space.
2023-03-03 12:34:55 +11:00
Maikel Linke
918e583d01 Account for Rails 7 rounding in time spec
Storing a timestamp to the database has less accuracy than a Ruby Time
object. So `updated_at` changes after being written and loaded from the
database. Rails 7 accounts for that by rounding it in the model already
before it's written to the database. That made one spec fail.
2023-03-03 12:34:55 +11:00
Maikel
6371f7eff6 Merge pull request #10474 from abdellani/fix-customer-can-checkout-non-matching-shipping-and-product-categories
Fix: Customers can checkout with non-matching shipping and product categories
2023-03-03 11:27:11 +11:00
Filipe
60bea89f5c Merge pull request #10135 from abdellani/fix_when_user_deletes_a_shipping_method_existing_orders_are_updated_with_a_random_shipping_method
Fix When user deletes a shipping method existing orders are updated with a random shipping method
2023-03-02 20:03:59 +00:00
Jean-Baptiste Bellet
7b8ccccdc3 display_name can actually be null or empty: consider them as equal 2023-03-02 17:15:57 +01:00
dependabot[bot]
fb01a6e244 Bump devise from 4.8.1 to 4.9.0
Bumps [devise](https://github.com/heartcombo/devise) from 4.8.1 to 4.9.0.
- [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.8.1...v4.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-02 14:47:11 +00:00
jibees
f88689e45f Merge pull request #10469 from openfoodfoundation/dependabot/bundler/sidekiq-7.0.6
Bump sidekiq from 7.0.5 to 7.0.6
2023-03-02 15:32:17 +01:00
jibees
1c1a7ffe9b Merge pull request #10444 from openfoodfoundation/dependabot/bundler/devise-i18n-1.10.3
Bump devise-i18n from 1.10.2 to 1.10.3
2023-03-02 15:30:01 +01:00
dependabot[bot]
0cae069769 Bump @floating-ui/dom from 1.2.1 to 1.2.3
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.2.1 to 1.2.3.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.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-03-02 12:45:36 +00:00
jibees
0aa11581af Merge pull request #10502 from openfoodfoundation/dependabot/npm_and_yarn/hotwired/turbo-7.3.0
Bump @hotwired/turbo from 7.2.5 to 7.3.0
2023-03-02 13:44:20 +01:00
dependabot[bot]
4d72c807ea Bump devise-i18n from 1.10.2 to 1.10.3
Bumps [devise-i18n](https://github.com/tigrish/devise-i18n) from 1.10.2 to 1.10.3.
- [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.10.2...v1.10.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-02 12:43:57 +00:00
dependabot[bot]
f182712188 Bump sidekiq from 7.0.5 to 7.0.6
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.0.5 to 7.0.6.
- [Release notes](https://github.com/sidekiq/sidekiq/releases)
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.0.5...v7.0.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-03-02 12:43:45 +00:00
jibees
1171577d5d Merge pull request #10489 from openfoodfoundation/dependabot/bundler/sidekiq-scheduler-5.0.2
Bump sidekiq-scheduler from 5.0.1 to 5.0.2
2023-03-02 13:42:54 +01:00
jibees
d05522c21c Merge pull request #10472 from openfoodfoundation/dependabot/bundler/omniauth_openid_connect-0.6.1
Bump omniauth_openid_connect from 0.6.0 to 0.6.1
2023-03-02 13:42:37 +01:00
jibees
cbdb3c2834 Merge pull request #10504 from openfoodfoundation/dependabot/bundler/rubocop-1.47.0
Bump rubocop from 1.46.0 to 1.47.0
2023-03-02 11:12:46 +01:00
dependabot[bot]
87c3165a24 Bump rubocop from 1.46.0 to 1.47.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.46.0 to 1.47.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.46.0...v1.47.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-03-02 10:02:09 +00:00
dependabot[bot]
81e96298b5 Bump @hotwired/turbo from 7.2.5 to 7.3.0
Bumps [@hotwired/turbo](https://github.com/hotwired/turbo) from 7.2.5 to 7.3.0.
- [Release notes](https://github.com/hotwired/turbo/releases)
- [Commits](https://github.com/hotwired/turbo/compare/v7.2.5...v7.3.0)

---
updated-dependencies:
- dependency-name: "@hotwired/turbo"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-02 09:57:36 +00:00
binarygit
fd81429f39 Specify weight, height, width and depth as numeric field 2023-03-01 16:32:18 +01:00
filipefurtad0
b99383185b Adds coverage for PDF file download 2023-03-01 14:32:35 +00:00
filipefurtad0
66485e2e16 Adds coverage for XLSX file download 2023-03-01 14:32:35 +00:00
filipefurtad0
c1b60d88d6 Adds coverage for CSV file download 2023-03-01 14:32:28 +00:00
dependabot[bot]
b734067785 Bump omniauth_openid_connect from 0.6.0 to 0.6.1
Bumps [omniauth_openid_connect](https://github.com/m0n9oose/omniauth_openid_connect) from 0.6.0 to 0.6.1.
- [Release notes](https://github.com/m0n9oose/omniauth_openid_connect/releases)
- [Changelog](https://github.com/omniauth/omniauth_openid_connect/blob/master/CHANGELOG.md)
- [Commits](https://github.com/m0n9oose/omniauth_openid_connect/compare/v0.6.0...v0.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 14:22:38 +00:00
jibees
e7bf912a23 Merge pull request #10490 from openfoodfoundation/dependabot/bundler/puma-6.1.1
Bump puma from 6.1.0 to 6.1.1
2023-03-01 15:14:57 +01:00
Jean-Baptiste Bellet
50bc48c96f Introduce some specs around searching in BOM 2023-03-01 14:54:46 +01:00
Jean-Baptiste Bellet
8ad532c41a Can search bill_address:phone, firstname, lastname and distributor:name 2023-03-01 14:54:46 +01:00
Jean-Baptiste Bellet
ebd5d706c2 Add search input
Actually this only search for `order_email` or `order_number` or `product_name` or `supplier_name`

+ Improve display by reduce each columns width
2023-03-01 14:40:12 +01:00
jibees
b07a0fca50 Merge pull request #10498 from openfoodfoundation/dependabot/bundler/knapsack_pro-3.8.0
Bump knapsack_pro from 3.7.0 to 3.8.0
2023-03-01 11:01:37 +01:00
Mohamed ABDELLANI
348f806bbe remove load_shipping_methods 2023-03-01 10:53:03 +01:00
Mohamed ABDELLANI
89037e160c Update app/controllers/concerns/checkout_callbacks.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-03-01 10:51:27 +01:00
Mohamed ABDELLANI
eab8e2be6c load exclusively the shipping methods that support all the shipping categories of the line items 2023-03-01 10:51:27 +01:00
dependabot[bot]
d146684acb Bump knapsack_pro from 3.7.0 to 3.8.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/KnapsackPro/knapsack_pro-ruby/releases)
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v3.7.0...v3.8.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-03-01 09:13:38 +00:00
Jean-Baptiste Bellet
08e23023b3 Make label clickable to check/uncheck checkbox 2023-03-01 08:46:33 +01:00
Maikel
c3fe399f0c Merge pull request #10476 from mkllnk/flaky-index-spec
Stabilise flaky spec with defined enterprise order
2023-03-01 10:05:44 +11:00
Maikel
182e5bd0ee Merge pull request #10493 from jibees/10492-background-reports-background_reports-breaks-pdf-and-xlsx-file-download
Reports, `background_reports` feature toggle activated: Force writing file in binary mode
2023-03-01 10:00:11 +11:00
Maikel
bccee0698f Merge pull request #10332 from jibees/8901-allow-product-description-to-show-images-in-the-shopfront
Shopfront: Allow product description with formatting and `<img />`
2023-03-01 09:56:41 +11:00
Konrad
11928859bc Merge pull request #10438 from jibees/10133-update-column-dropdown-everywhere
Redesign old columns dropdown component to match the design of the new one
2023-02-28 20:22:00 +01:00
Konrad
6a0b9cbb76 Merge pull request #10459 from openfoodfoundation/dependabot/bundler/stripe-8.3.0
Bump stripe from 8.0.0 to 8.3.0
2023-02-28 19:22:50 +01:00
Jean-Baptiste Bellet
8658b1a743 Remove quick filter that search only on displayed line items
+ remove specs as well
2023-02-28 15:39:31 +01:00
Jean-Baptiste Bellet
075e295fc2 Force writing file in binary mode
```
/Users/jibees/dev/openfoodnetwork/app/jobs/report_job.rb:22:in `write': "\\xFE" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
from /Users/jibees/dev/openfoodnetwork/app/jobs/report_job.rb:22:in `write'
from /Users/jibees/dev/openfoodnetwork/app/jobs/report_job.rb:8:in `perform'
```
2023-02-28 15:30:14 +01:00
jibees
151f96f673 Merge pull request #10486 from mkllnk/i18n-spec
Remove unused Spree translation checker
2023-02-28 14:28:39 +01:00
dependabot[bot]
2d7c593fe6 Bump sidekiq-scheduler from 5.0.1 to 5.0.2
Bumps [sidekiq-scheduler](https://github.com/moove-it/sidekiq-scheduler) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/moove-it/sidekiq-scheduler/releases)
- [Changelog](https://github.com/sidekiq-scheduler/sidekiq-scheduler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moove-it/sidekiq-scheduler/compare/v5.0.1...v5.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-28 10:52:14 +00:00
dependabot[bot]
5cded5ba8d Bump puma from 6.1.0 to 6.1.1
Bumps [puma](https://github.com/puma/puma) from 6.1.0 to 6.1.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.1.0...v6.1.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-02-28 09:57:59 +00:00
Maikel Linke
4f15b5a65b Specify raised error in spec and avoid warning
Before it said:

```
WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #<RuntimeError: Cannot use t(".legacy_translation") shortcut because path is not available>. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`.
```
2023-02-28 15:44:18 +11:00
Maikel Linke
bf1cbe615f Remove unused Spree translation checker
If we wanted similar functionality in the future then we would implement
it differently. At the moment, it's just unused code.
2023-02-28 15:44:18 +11:00
Maikel
890ab6796e Merge pull request #10413 from mkllnk/reports-params
Fix background processing of Enterprise Fee Summary report
2023-02-28 13:07:59 +11:00
Maikel Linke
10aa7730e5 Rename user var again for clarity 2023-02-28 12:50:55 +11:00
Maikel Linke
116e844004 Stabilise flaky spec with defined enterprise order 2023-02-28 12:42:55 +11:00
Maikel Linke
16289a62f1 Rename test vars for clarity 2023-02-28 12:42:55 +11:00
Maikel Linke
e9fa360d61 Take test setup as granted and simplify 2023-02-28 12:42:55 +11:00
Maikel Linke
e6eb9412d9 Simplify owner selection in spec
Instead of knowing the input id generated by select2, we now rely on the
fact that the owner is in the fifth column. Both could change but this
is less code.
2023-02-28 12:42:55 +11:00
Maikel Linke
401210ef44 DRY and clarify test case 2023-02-28 12:42:55 +11:00
Maikel Linke
f484518ee5 Remove unused test enterprise 2023-02-28 12:42:55 +11:00
Mohamed ABDELLANI
066c7bb449 promote OrderManagement::Stock::Estimator.calculate_cost to a public method 2023-02-27 17:49:54 +01:00
jibees
165fb59f64 Merge pull request #10482 from anansilva/10044-fix-activemodel-errors-deprecation-warning
Fix deprecation warning when accessing model errors
2023-02-27 17:29:33 +01:00
Filipe
42bc9d7f82 Merge pull request #10477 from mkllnk/js-specs
Remove old test setup code of feature specs
2023-02-27 15:54:40 +00:00
Mohamed ABDELLANI
25d8ce1737 fix shipping methods related tests 2023-02-27 15:56:14 +01:00
jibees
f8dce4053a Merge pull request #10473 from openfoodfoundation/dependabot/bundler/rubocop-1.46.0
Bump rubocop from 1.45.1 to 1.46.0
2023-02-27 15:36:53 +01:00
dependabot[bot]
c93945a111 Bump rubocop from 1.45.1 to 1.46.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.45.1 to 1.46.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.45.1...v1.46.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-02-27 14:26:22 +00:00
jibees
30b2f9164e Merge pull request #10484 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.18.0
Bump rubocop-rails from 2.17.4 to 2.18.0
2023-02-27 15:21:54 +01:00
Jean-Baptiste Bellet
5208094f05 Do not bulk send invoices if order is not 'complete' or 'resumed'
+ update specs as well
2023-02-27 14:30:59 +01:00
Jean-Baptiste Bellet
8926a3f08d Having a cleaner syntax a prefer using map() instead of forEach() 2023-02-27 14:30:59 +01:00
Jean-Baptiste Bellet
58ea3a10e8 Invert condition on can send invoice 2023-02-27 14:30:59 +01:00
Jean-Baptiste Bellet
5ca5c32da4 Factorize what could be into two methods: success and orders 2023-02-27 14:30:59 +01:00
Jean-Baptiste Bellet
7a1a1286d2 Factorize two reflexes into one: BulkActionsInOrdersListReflex 2023-02-27 14:30:59 +01:00
Jean-Baptiste Bellet
5e61aa8a77 Create the bulk send invoice action in order list
using the same pattern than SendConfirmationEmail action

Co-Authored-By: David Cook <david@redcliffs.net>
2023-02-27 14:30:59 +01:00
Jean-Baptiste Bellet
af92b9f464 Reorganize spec by dividing into two contexts: 'admin' and 'hub manager' 2023-02-27 14:30:59 +01:00
Jean-Baptiste Bellet
ffaf4a837f Extract common behavior to BulkActionsController 2023-02-27 14:30:58 +01:00
Jean-Baptiste Bellet
c83dac58a3 Confirm line items deletion that doesn't trigger an order cancelation 2023-02-27 11:09:59 +01:00
dependabot[bot]
f355f1ccfb Bump rubocop-rails from 2.17.4 to 2.18.0
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.17.4 to 2.18.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.17.4...v2.18.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-02-27 09:57:28 +00:00
Jean-Baptiste Bellet
166e2f525e New design uses lowercase for component title
and specify clicking inside the dropdown
2023-02-27 09:56:48 +01:00
Ana Nunes da Silva
d70c34fbd0 fix deprecation warning when accessing model errors 2023-02-26 21:04:16 +00:00
Konrad
27630a4304 Merge pull request #10442 from mkllnk/enterprise-fee-summary-report
Report deleted fees in Enterprise Fee Summary
2023-02-26 19:28:01 +01:00
Maikel Linke
953ff2bd08 Remove more unused spec helpers 2023-02-24 15:31:18 +11:00
Maikel Linke
d7fa508b60 Remove unused matcher have_flash_message 2023-02-24 15:19:54 +11:00
Maikel Linke
815cef16cc Remove browser test config from unit tests
Mailer specs still use Capybara but they don't use Javascript and don't
need this config.
2023-02-24 15:17:49 +11:00
Maikel Linke
3d5584e47c Update outdated comment 2023-02-24 15:10:46 +11:00
Maikel Linke
cb64361096 Remove old feature spec tag
Nowadays all system specs are run in a real browser.
2023-02-24 15:10:19 +11:00
Maikel Linke
bba41177b4 Remove old test setup code of feature specs
The `js: true` tag was only used in feature specs. Some system specs
still contain that tag but they don't require this file. So it's dead
code.
2023-02-24 15:04:03 +11:00
Maikel Linke
800ccf5037 Remove unused method 2023-02-24 10:40:09 +11:00
Maikel Linke
8c7b4f73f7 Detect transaction fee even if fee name is missing
The Enterprise Fee Summary report is not always providing a fee name.
While that may be a bug on its own, we handle that gracefully now.
2023-02-24 10:40:09 +11:00
Maikel Linke
8b0c4ee0ac Add unit test for failing Enterprise Fee Summary
I observed this data but I'm unsure about the root cause. It could be
that the SQL query fetching this data needs tweaking to return the fee
name in this case or it could be that it's not available (deleted).

In any case, I thought I document what's happening and make this
summarizer more robust before looking into the query.
2023-02-24 10:40:09 +11:00
Filipe
3ffe39d467 Merge pull request #10448 from vviekk/viv/10009
Fixing Enterprise creation submit button behavior
2023-02-23 16:00:53 +00:00
vviekk
956ed826a1 Adding test 2023-02-23 20:02:02 +05:30
Mohamed ABDELLANI
13383316af fix tests 2023-02-23 08:11:11 +01:00
Mohamed ABDELLANI
28f0d69540 Update app/services/order_cycle_form.rb
Co-authored-by: David Cook <david@redcliffs.net>
2023-02-23 07:22:49 +01:00
Mohamed ABDELLANI
e705aa51bd fix existing tests: OrderCycleForm expects an instance of Spree::User (and not an Enterprise) 2023-02-23 07:12:47 +01:00
Mohamed ABDELLANI
a7e6760028 limit users who can update shipping/payment method of an order cycle 2023-02-23 07:09:49 +01:00
David Cook
06d370a8ac Update all locales with the latest Transifex translations 2023-02-23 13:00:36 +11:00
David Cook
013533f7de Merge pull request #10397 from openfoodfoundation/dependabot/bundler/roo-2.10.0
Bump roo from 2.9.0 to 2.10.0
2023-02-23 10:53:50 +11:00
David Cook
d199dea5eb Style fix: Layout/EmptyLines 2023-02-23 10:12:06 +11:00
David Cook
084211f52a Add comments 2023-02-23 10:10:32 +11:00
Filipe
604fd75cff Merge pull request #10247 from abdellani/sales_tax_totals_by_order
sales tax totals by order report
2023-02-22 20:03:45 +00:00
Konrad
8b89c8d7e0 Merge pull request #10451 from cyrillefr/Sort-properly-date-chronologically-and-not-lexicographically
Sort correctly in Bulk Order Managment
2023-02-22 14:39:03 +01:00
cyrillefr
e4845f4165 Add a spec for sorting in Bulk Order management 2023-02-20 21:43:05 +01:00
cyrillefr
c015b2066f Sort correctly in Bulk Order Managment
Converting date to utc + iso8601 format is
    sufficient to ensure proper sorting.
2023-02-20 21:41:58 +01:00
Konrad
f7f49377b4 Merge pull request #10297 from cyrillefr/convert-admin-order-cancellation-workflow-to-stimulus-reflex
Convert admin order cancellation workflow to stimulus reflex
2023-02-20 21:38:33 +01:00
Mohamed ABDELLANI
960dd81b76 remove customer id filter 2023-02-20 14:58:51 +01:00
Mohamed ABDELLANI
dda61d17ee delegate distributor && order_cycle to the order in the OrderFeesHandler 2023-02-20 14:19:08 +01:00
Mohamed ABDELLANI
8ff197457e test accessing the Sales Tax Report By Order using different roles 2023-02-20 14:19:08 +01:00
Mohamed ABDELLANI
c43834915d sales_tax_totals_by_order report 2023-02-20 14:19:08 +01:00
Filipe
10d8e80c45 Merge pull request #10420 from anansilva/9311-remove-code-generating-receipts
Remove code generating receipts
2023-02-20 12:44:13 +00:00
Mohamed ABDELLANI
0738133e99 Update spec/system/admin/order_spec.rb
Co-authored-by: Filipe <49817236+filipefurtad0@users.noreply.github.com>
2023-02-20 09:55:29 +01:00
Mohamed ABDELLANI
15c241295e recreate the shipping rate that refers to the original shipping method if distributor no longer support it 2023-02-20 09:55:22 +01:00
jibees
4e2430ea58 Merge pull request #10454 from openfoodfoundation/dependabot/bundler/sidekiq-7.0.5
Bump sidekiq from 7.0.4 to 7.0.5
2023-02-17 14:57:42 +01:00
dependabot[bot]
4661b47ede Bump stripe from 8.0.0 to 8.3.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 8.0.0 to 8.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/v8.0.0...v8.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-02-17 10:04:03 +00:00
Maikel Linke
e2ea4d21f4 Update translations 2023-02-17 14:12:24 +11:00
David Cook
d377300f32 Support installations with homebrew (macOS)
The officially recommended installation for Mac is via Homebrew.
2023-02-17 10:36:10 +11:00
David Cook
b7a3f7263b Add script to install current node version
The API is conveniently exactly the same as rbenv.
2023-02-17 10:17:48 +11:00
Filipe
2f0e00370b Merge pull request #10385 from rioug/10350-BUU-read-only-product-list-take-2
New product page, add missing column and handle formatting
2023-02-16 18:41:05 +00:00
dependabot[bot]
45da8fddf1 Bump sidekiq from 7.0.4 to 7.0.5
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.0.4 to 7.0.5.
- [Release notes](https://github.com/sidekiq/sidekiq/releases)
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.0.4...v7.0.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-02-16 18:29:21 +00:00
Filipe
b91bb8961f Merge pull request #10434 from openfoodfoundation/dependabot/bundler/sidekiq-7.0.4
Upgrade sidekiq from 6.5.8 to 7.0.4 (incl new metrics tab)
2023-02-16 18:18:17 +00:00
Filipe
5e3b0cf47c Merge pull request #10433 from openfoodfoundation/dependabot/npm_and_yarn/rails/webpacker-5.4.4
Bump @rails/webpacker from 5.4.3 to 5.4.4
2023-02-16 18:05:13 +00:00
Filipe
ba46756cba Merge pull request #10445 from cyrillefr/Remov-I18nt-keys-from-automated-tests#9499
Remov i18nt keys from automated tests#9499
2023-02-16 17:51:08 +00:00
Filipe
f6c9246e20 Merge pull request #10343 from jibees/9538-track-404-errors-in-bugsnag
Notify bugsnag on 404 errors
2023-02-16 17:45:41 +00:00
Konrad
11e9329b97 Merge pull request #10351 from rioug/9874-order-cycle-creation-fix-needless-warning-and-data-loss
Order cycle creation, fix needless warning and add warning to prevent data loss
2023-02-16 16:08:37 +01:00
Rachel Arnould
1a7598d96d Merge pull request #10428 from jibees/9145-Splitcheckout,-add-error-message-when-no-shipping-methods-are-available-to-the-customer
SplitCheckout: improve error messages in flash banner to improve user experience
2023-02-16 15:33:12 +01:00
Jean-Baptiste Bellet
2eec3d625a Notify bugsnag on 404 errors 2023-02-16 13:45:42 +00:00
cyrillefr
ba30606052 Remove I18n keys from consumer specs 2023-02-16 14:33:17 +01:00
cyrillefr
f6f62515b5 Remove I18n keys in system admin specs 2023-02-16 14:33:09 +01:00
cyrillefr
a75892ccc1 Remove I18n keys in support specs 2023-02-16 14:28:14 +01:00
cyrillefr
0082653170 Remove I18n keys in service specs 2023-02-16 14:28:14 +01:00
cyrillefr
cc0b23c0bd Remove I18n keys in request specs 2023-02-16 14:28:14 +01:00
cyrillefr
b3ad5aeaca Remove I18n keys in model specs 2023-02-16 14:28:14 +01:00
cyrillefr
ffe9756f50 Removes I18n keys in mailer specs 2023-02-16 14:27:21 +01:00
dependabot[bot]
40eb5e320b Bump @rails/webpacker from 5.4.3 to 5.4.4
Bumps [@rails/webpacker](https://github.com/rails/webpacker) from 5.4.3 to 5.4.4.
- [Release notes](https://github.com/rails/webpacker/releases)
- [Changelog](https://github.com/rails/webpacker/blob/v5.4.4/CHANGELOG.md)
- [Commits](https://github.com/rails/webpacker/compare/v5.4.3...v5.4.4)

---
updated-dependencies:
- dependency-name: "@rails/webpacker"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-16 11:06:29 +00:00
jibees
4e4a392a8c Merge pull request #10443 from openfoodfoundation/dependabot/npm_and_yarn/cable_ready-5.0.0-pre10
Bump cable_ready from 5.0.0-pre9 to 5.0.0-pre10
2023-02-16 12:00:48 +01:00
Filipe
e3fa933699 Merge pull request #10381 from anansilva/8229-listing-orders-payment-state-cancelled-order
Update payment (cash/EFF) state on cancelled order
2023-02-15 12:06:38 +00:00
Jean-Baptiste Bellet
e5ca8b0ee1 Delete selected line items even if does not lead to order cancellation 2023-02-15 11:49:53 +01:00
Jean-Baptiste Bellet
cf8d9c6d07 Improve spec when deleting all items of an order
- Order1 has two line items
 - Check other Order2 does not change its state
 - Prepare context for the second spec: delete one line item of an order that does not trigger any order cancellation
2023-02-15 11:38:04 +01:00
Mikael Norlén
f645f8fc79 Improve schema method get_extra_fields
Use double-splat for passing options and improve examples
2023-02-15 11:14:28 +01:00
Mikael Norlén
3d06b75892 Simplify customers_with_balance spec
Improve variable names and use multiple expectations
2023-02-15 11:14:28 +01:00
Mikael Norlén
af23375b04 Separate Structure from JsonApiSchema
Class was getting too long
2023-02-15 11:14:28 +01:00
Mikael Norlén
f15a4cc943 Add autogenerated whitespaces to swagger.yml
These whitespaces were generated by
bundle exec rails rswag.

Might be related to a new version of rswag or
developers' trim trailing whitespace settings.
2023-02-15 11:14:28 +01:00
Mikael Norlén
e95d08cae8 Add balance to api v1 customers endpoint
- customers#show: Add balance (data_type: double) to customer attributes.
- customers#index: Add balance only if specified in extra_fields
query parameter: extra_fields[customer]=balance
2023-02-15 11:14:27 +01:00
Mikael Norlén
3989843a21 Add support for extra fields in JsonApiSchemas
As we are now supporting optional extra fields,
We need to be able to construct schemas where
extra fields are optionally included.
2023-02-15 11:14:27 +01:00
Mikael Norlén
22b1dd3232 Add support for extra_fields query parameter
Api now supports optional fields.
These are included with the extra_fields query param.

Syntax: extra_fields[type]=field1,field2
2023-02-15 11:14:27 +01:00
Mikael Norlén
96c0057b03 Use Customers as argument for CustomersWithBalance
Change argument for CustomersWithBalance from
enterprise_id to Customers collection.

We have the need to calculate balance for customers in general,
not just for customers in a given enterprise.
2023-02-15 11:14:27 +01:00
cyrillefr
78a6317c84 Remove I18n keys in reports lib specs 2023-02-15 11:08:19 +01:00
cyrillefr
fa57e37467 Remove I18n keys in User ctrllers spec 2023-02-15 11:08:19 +01:00
cyrillefr
7c24f6b26f Remove I18n keys from Pay/Stripe/Chkout Ctrllers spec 2023-02-15 11:08:19 +01:00
cyrillefr
f9f6abf740 Remove I18n keys from Api Ctrllers spec 2023-02-15 11:08:19 +01:00
cyrillefr
e6c0dd95c4 Remive I18n keys in Admin ctrller specs 2023-02-15 11:08:19 +01:00
dependabot[bot]
ade2eda638 Bump cable_ready from 5.0.0-pre9 to 5.0.0-pre10
Bumps [cable_ready](https://github.com/stimulusreflex/cable_ready) from 5.0.0-pre9 to 5.0.0-pre10.
- [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/commits)

---
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-02-15 09:57:26 +00:00
Jean-Baptiste Bellet
0a3d362282 Still improve error message for Billing address
```
"Bill" is a person's name, and I don't know his address
```

;)
2023-02-15 10:07:59 +01:00
Jean-Baptiste Bellet
08fb496f55 Don't need to show any ship_address errors if no ship selected nor
if the ship_address is the same than the billing one
2023-02-15 09:52:24 +01:00
Jean-Baptiste Bellet
4cea7b1957 Improve error message, and use the same than the view 2023-02-15 09:52:24 +01:00
Jean-Baptiste Bellet
88607a3dce Improve bill address error message
"(Street + House number)" instead of "address1"
and "postcode" instead of "zipcode"
2023-02-15 09:52:24 +01:00
Jean-Baptiste Bellet
a39598d049 Reorder error messages to improve readability
tbs;
2023-02-15 09:52:10 +01:00
Jean-Baptiste Bellet
9a03023b6b Replace bill_address phone by Customer phone to improve readability
TBS;
2023-02-15 09:44:26 +01:00
vviekk
2091eff671 Fixing Enterprise creation submit button behavior 2023-02-15 12:42:59 +05:30
David Cook
d3e0ff269f Remove unsupported config
In Sidekiq v7, this field is not recognised and gets passed through to Redis, which also doesn't recognise it and crashes.

It was added to avoid filling up Redis on dev, but it's actually a Sidekiq pro option which needs to be defined on jobs, so I guess it never worked.
2023-02-15 12:22:41 +11:00
Gaetan Craig-Riou
eb67340c52 Simplify usage of UnsavedChangesController
Remove the need to manually bind handleSubmit to onSubmit event
2023-02-15 10:51:23 +11:00
Gaetan Craig-Riou
75ed68c9cb UnsavedChangesController, automatically add onChange event handler to form elements 2023-02-15 10:30:52 +11:00
Maikel
255fc64fdb Merge pull request #10383 from filipefurtad0/add_pagination_BOM_spec
Adds a spec on BOM pagination
2023-02-15 09:38:43 +11:00
Ana Nunes da Silva
40bc53c16b Delete receipt printing preferences (migration) 2023-02-14 21:29:27 +00:00
Ana Nunes da Silva
6de1fdc4ff Remove jquery-1.8.0.js
Some js tests fail because they are dependant on jquery and we removed
jquery-1.8.0.js. Adding jquery2 to application_spec.js instead.
2023-02-14 21:28:53 +00:00
Jean-Baptiste Bellet
d9eb97bd05 As we are in transition, angularjs dropdown component use both css classes
And we should specify a bit the height of the component since it's used in different context
2023-02-14 16:15:44 +01:00
Jean-Baptiste Bellet
28286a4c3e Slightly change classes and markup to make dropdown use the new style
ie. `.ofn-drop-down-v2`
2023-02-14 16:15:44 +01:00
Jean-Baptiste Bellet
6ec219031d Avoid to specifically use a label component for menu_item
Then, add `label` CSS rule inside `menu_item` component
2023-02-14 15:47:55 +01:00
filipefurtad0
c84ec148db Adds a spec on BOM pagination
Adds coverage on bottom section of pagination

Extracts order line item creation to before block

Removes disabled option when asserting on button 2
2023-02-14 12:04:38 +00:00
jibees
eeb059ae17 Merge pull request #10435 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.119.1
Bump aws-sdk-s3 from 1.119.0 to 1.119.1
2023-02-14 12:29:58 +01:00
dependabot[bot]
7a5b7c4f64 Bump aws-sdk-s3 from 1.119.0 to 1.119.1
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.119.0 to 1.119.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-02-14 10:06:09 +00:00
dependabot[bot]
613c693774 Bump sidekiq from 6.5.8 to 7.0.4
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 6.5.8 to 7.0.4.
- [Release notes](https://github.com/sidekiq/sidekiq/releases)
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v6.5.8...v7.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-14 10:05:01 +00:00
Ana Nunes da Silva
696edac813 Remove qz gem dependency 2023-02-14 08:08:20 +00:00
Ana Nunes da Silva
f9817925aa Remove receipt printing translations 2023-02-14 08:08:20 +00:00
Ana Nunes da Silva
3e03988d93 Remove receipt printing settings 2023-02-14 08:08:20 +00:00
Ana Nunes da Silva
bb71b281d6 Remove print ticket links 2023-02-14 08:08:20 +00:00
Ana Nunes da Silva
cf519116ee Remove print ticket authorization 2023-02-14 08:08:20 +00:00
Ana Nunes da Silva
8dc50caaa8 Remove print ticket action 2023-02-14 08:08:20 +00:00
dependabot[bot]
f8c802ace4 Bump roo from 2.9.0 to 2.10.0
Bumps [roo](https://github.com/roo-rb/roo) from 2.9.0 to 2.10.0.
- [Release notes](https://github.com/roo-rb/roo/releases)
- [Changelog](https://github.com/roo-rb/roo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/roo-rb/roo/compare/v2.9.0...v2.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-14 02:59:25 +00:00
Maikel
9ea9ac99f9 Merge pull request #10356 from openfoodfoundation/dependabot/bundler/rspec-rails-6.0.1
Bump rspec-rails from 5.1.2 to 6.0.1
2023-02-14 13:57:38 +11:00
Gaetan Craig-Riou
1cf55cde4d Refactor column_value, to use a giant case
A giant case is more readable that the previous 'smart' solution.
It also disables a couple of Rubocop checks triggered by the giant case
2023-02-14 13:36:49 +11:00
Gaetan Craig-Riou
503e0ecba1 Fix category spec as per code review
- Use a hardcoded string for the expected categories (taxons), and fix
taxon step up to not use default taxon
- Fix constant typo
2023-02-14 13:36:12 +11:00
Maikel Linke
4aa6898ecb Reduce line length for easier reading 2023-02-14 12:33:29 +11:00
Maikel Linke
180434c5bd Avoid renaming params within report
I changed the used parameter names within the report so that we don't
have to rename the given parameter names when the report runs. This
avoids modifying the `params` object and therefore other problems.
2023-02-14 12:33:29 +11:00
Maikel Linke
7fe913713a Use same parameters for report job as for original
The Enterprise Fee Summary report modified the `params` object. So when
we pass the same `params` a second time to the report class it doesn't
find the same values. In some cases that would lead to a server error.

The next commit implements a better solution though.
2023-02-14 12:33:29 +11:00
Maikel
ecc2c7ba43 Merge pull request #10423 from mkllnk/suburbs
Remove unused suburbs table
2023-02-14 11:51:48 +11:00
Jean-Baptiste Bellet
32fc1eae61 Remove ship_address errors if shipping method isn't selected 2023-02-13 21:06:41 +01:00
Filipe
822f640997 Merge pull request #10427 from jibees/10417-flaky-rspec-specsystemadminproducts_specrb210
Fix flaky spec `spec/system/admin/products_spec.rb:210`
2023-02-13 16:39:21 +00:00
Filipe
2d0e64a7d3 Merge pull request #10426 from openfoodfoundation/dependabot/bundler/puma-6.1.0
Bump puma from 6.0.2 to 6.1.0
2023-02-13 15:08:25 +00:00
jibees
f5e1cbca08 Merge pull request #10321 from openfoodfoundation/dependabot/bundler/rails-6.1.7.2
Bump rails from 6.1.7 to 6.1.7.2
2023-02-13 14:12:39 +01:00
Jean-Baptiste Bellet
51272eef00 Actually, those two tests are in the same context
The diff is pretty hard to read, but i've put the two tests "removes it from the product list" and "keeps the line item on the order (admin)" under the same context and the same `before` block
2023-02-13 13:38:57 +01:00
dependabot[bot]
2f6a910a1c Bump rails from 6.1.7 to 6.1.7.2
Bumps [rails](https://github.com/rails/rails) from 6.1.7 to 6.1.7.2.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v6.1.7...v6.1.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-02-13 10:48:01 +00:00
jibees
9ca25df934 Merge pull request #10411 from mkllnk/paper_trail
Bump paper_trail from 12.1.0 to 12.3.0
2023-02-13 11:46:34 +01:00
Maikel Linke
a3e1193f28 Bump paper_trail from 12.1.0 to 12.3.0
No breaking changes but Rails 7 support.
2023-02-13 11:21:32 +01:00
jibees
889b132069 Merge pull request #10425 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.2.1
Bump @floating-ui/dom from 1.2.0 to 1.2.1
2023-02-13 11:18:09 +01:00
jibees
3e18445c36 Merge pull request #10424 from openfoodfoundation/dependabot/npm_and_yarn/js-big-decimal-1.4.1
Bump js-big-decimal from 1.3.15 to 1.4.1
2023-02-13 11:07:20 +01:00
dependabot[bot]
3c158cd061 Bump puma from 6.0.2 to 6.1.0
Bumps [puma](https://github.com/puma/puma) from 6.0.2 to 6.1.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.0.2...v6.1.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-02-13 10:05:55 +00:00
dependabot[bot]
c464f3a43d Bump @floating-ui/dom from 1.2.0 to 1.2.1
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.1/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-02-13 10:00:15 +00:00
dependabot[bot]
84be4aec7b Bump js-big-decimal from 1.3.15 to 1.4.1
Bumps [js-big-decimal](https://github.com/royNiladri/js-big-decimal) from 1.3.15 to 1.4.1.
- [Release notes](https://github.com/royNiladri/js-big-decimal/releases)
- [Commits](https://github.com/royNiladri/js-big-decimal/compare/v1.3.15...v1.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 09:59:31 +00:00
jibees
d9d18b086c Merge pull request #10410 from mkllnk/api-customers-order
Sort customers by id on API v1
2023-02-13 10:41:13 +01:00
Maikel Linke
80f015912a Remove unused suburbs table
Once upon a time it was used to search for enterprises in a certain
suburb. But we let Google Maps do that these days and the feature was
removed in 2015.

* c4fb4a8510
2023-02-13 17:18:02 +11:00
Maikel
3b6202313a Merge pull request #10422 from mkllnk/flaky-karma-specs
Avoid side effects in Javascript specs leading to flakiness
2023-02-13 12:37:06 +11:00
Maikel Linke
d05bb508de Avoid flaky spec by avoiding variable name conflict
Specs were sharing the same variable and could influence each other.
2023-02-13 12:23:45 +11:00
Maikel Linke
02ba8c1bf5 Remove side-effect in JS specs via global var
The code used the global BulkProducts which was shared amongst a group
of specs. Some were resetting the `products` attribute, others weren't
and the product object of one spec was leaking into the next.

One spec was also referencing a wrong attribute and must have passed
accidentally.
2023-02-13 12:18:05 +11:00
Konrad
3c83b053ce Merge pull request #10406 from jibees/10402-error-when-no-shipping-info-has-been-selected-in-split-checkout
SplitCheckout: Fix an issue raised when first time checkout user submit form without selecting shipping method
2023-02-13 00:36:04 +01:00
Maikel
64032c9207 Merge pull request #10416 from filipefurtad0/flaky_footer_spec
Addresses flakyness on footer links spec
2023-02-13 10:12:47 +11:00
Maikel
dee797c427 Merge pull request #10414 from openfoodfoundation/dependabot/bundler/redis-4.8.1
Bump redis from 4.8.0 to 4.8.1
2023-02-13 10:10:41 +11:00
Filipe
68b60a11b0 Merge pull request #10418 from openfoodfoundation/readme-patch-1
Update README.md
2023-02-10 14:53:20 +00:00
Sigmund Petersen
3b8f2ee4b3 Update README.md 2023-02-10 13:06:18 +01:00
Sigmund Petersen
8c91e3d8fd Update README.md 2023-02-10 13:04:13 +01:00
Sigmund Petersen
045db5dd49 Merge pull request #10415 from openfoodfoundation/link_to_welcome_devs_board
Update README.md
2023-02-10 12:59:19 +01:00
Filipe
24e8c0f973 Update README.md
Updates footer link for the Welcome new developers board
2023-02-10 11:40:16 +00:00
filipefurtad0
761a6731db Sets conctext: asserts within the modal 2023-02-10 11:31:18 +00:00
filipefurtad0
b1ca2c90ce Replaces I18n.t() by visible string
Removes superfluous js: true
2023-02-10 11:11:10 +00:00
Filipe
cd3897db30 Update README.md
Updates the link to the Welcome new developers board
2023-02-10 10:54:25 +00:00
dependabot[bot]
f3ffeaf3b4 Bump redis from 4.8.0 to 4.8.1
Bumps [redis](https://github.com/redis/redis-rb) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/redis/redis-rb/releases)
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v4.8.0...v4.8.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-10 10:03:15 +00:00
Maikel
76c6b438b5 Merge pull request #10369 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-4.5.0
Bump jasmine-core from 2.4.1 to 4.5.0
2023-02-10 16:05:04 +11:00
Maikel Linke
a08c7f7823 Sort customers by id on API v1 2023-02-10 15:52:35 +11:00
dependabot[bot]
c9da3200eb Bump rspec-rails from 5.1.2 to 6.0.1
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 5.1.2 to 6.0.1.
- [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/v5.1.2...v6.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-10 10:55:51 +11:00
Jean-Baptiste Bellet
b1d22f7982 Customer can be nil if first time they checkout 2023-02-09 17:11:11 +01:00
Jean-Baptiste Bellet
d65b1bb386 Fix various import issue: mock bugsnag 2023-02-09 16:50:40 +01:00
Jean-Baptiste Bellet
2633ee3606 Fix various import issue: taxons 2023-02-09 16:50:40 +01:00
Jean-Baptiste Bellet
4027eacc06 Fix various import issue: module('admin.enterprises') 2023-02-09 16:50:40 +01:00
Jean-Baptiste Bellet
236e77efd4 Fix various import: CurrentUser 2023-02-09 16:50:40 +01:00
Jean-Baptiste Bellet
a486a08bfc Fix various import issues: currentHub 2023-02-09 16:50:40 +01:00
dependabot[bot]
292338d467 Bump jasmine-core from 2.4.1 to 4.5.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 2.4.1 to 4.5.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v2.4.1...v4.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-09 16:50:40 +01:00
Jean-Baptiste Bellet
1fb4e27064 Upgrade to latest 17.* node version 2023-02-09 14:00:19 +01:00
Jean-Baptiste Bellet
9f2a17c3e9 Upgrade to node 17 which requires a --openssl-legacy-provider option
Node 17 moved to OpenSSL3, see https://nodejs.org/en/blog/release/v17.0.0/#openssl-3-0 for more.
2023-02-09 12:54:11 +01:00
Jean-Baptiste Bellet
ac639fa283 Upgrade node to the next LTS version
(which is in maintenance mode, but let's be incremental to test)
2023-02-09 10:56:28 +01:00
jibees
a3278ab6d3 Merge pull request #10404 from openfoodfoundation/dependabot/bundler/rubocop-1.45.1
Bump rubocop from 1.44.1 to 1.45.1
2023-02-09 10:15:34 +01:00
dependabot[bot]
416a2efea9 Bump rubocop from 1.44.1 to 1.45.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.44.1 to 1.45.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.44.1...v1.45.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-09 09:03:13 +00:00
David Cook
4cf45dcfe1 Update translations 2023-02-09 13:54:29 +11:00
David Cook
0f06c86008 Merge pull request #10367 from openfoodfoundation/dependabot/npm_and_yarn/mrujs-0.10.1
Bump mrujs from 0.7.4 to 0.10.1
2023-02-09 12:11:18 +11:00
Rachel Arnould
f8cceef932 Merge pull request #10312 from openfoodfoundation/dependabot/bundler/gitlab-omniauth-openid-connect-0.10.1
Bump gitlab-omniauth-openid-connect from 0.10.0 to 0.10.1
2023-02-08 16:05:05 +01:00
Filipe
d5b0891a74 Merge pull request #10382 from jibees/clean-database-for-report_inverse_columns_logic-feature-toggle
Remove `report_inverse_columns_logic` from list of feature toggle
2023-02-08 12:39:25 +00:00
Filipe
81b4433b02 Merge pull request #10393 from mkllnk/ransack
Bump ransack from 2.4.2 to 2.6.0
2023-02-08 12:12:13 +00:00
jibees
b73d78c785 Merge pull request #10399 from openfoodfoundation/dependabot/bundler/bugsnag-6.25.2
Bump bugsnag from 6.25.1 to 6.25.2
2023-02-08 10:26:31 +01:00
jibees
b7b80509dc Merge pull request #10396 from openfoodfoundation/dependabot/npm_and_yarn/prettier-2.8.4
Bump prettier from 2.8.3 to 2.8.4
2023-02-08 10:24:48 +01:00
dependabot[bot]
57d36d2ff1 Bump bugsnag from 6.25.1 to 6.25.2
Bumps [bugsnag](https://github.com/bugsnag/bugsnag-ruby) from 6.25.1 to 6.25.2.
- [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.25.1...v6.25.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-08 09:05:24 +00:00
dependabot[bot]
c38f1b88d3 Bump prettier from 2.8.3 to 2.8.4
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.3 to 2.8.4.
- [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.3...2.8.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-08 09:02:06 +00:00
jibees
8c6a32100d Merge pull request #10388 from openfoodfoundation/dependabot/npm_and_yarn/prettier-2.8.3
Bump prettier from 2.7.1 to 2.8.3
2023-02-08 09:26:36 +01:00
jibees
559b953e16 Merge pull request #10387 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.2.0
Bump @floating-ui/dom from 1.1.1 to 1.2.0
2023-02-08 09:25:03 +01:00
Konrad
73d98bd1b4 Merge pull request #10322 from jibees/8027-performance-improvement-on-adminenterprises
For super admin, add pagination on `/admin/enterprises`
2023-02-08 09:04:41 +01:00
Gaetan Craig-Riou
fd278e0086 Fix bug when submitting form triggered a warning and potentially left submit button disable
jquery-ujs automatically disable submit button when submitting the form.
If one choose cancel on the leaving page warning, then the submit buttons
end up in a disable state, with no way to re enable them. This fix
prevent the warning from being triggered when submitting the form, so
we can't end up in the scenario described.
2023-02-08 16:28:41 +11:00
Maikel
66a29e58d2 Merge pull request #10340 from mkllnk/job-process-waiting
Wait only for report jobs within Puma workers
2023-02-08 14:26:43 +11:00
Gaetan Craig-Riou
313fdab346 Fix rubocop warnings 2023-02-08 12:04:05 +11:00
Gaetan Craig-Riou
722b04a211 Add missing collumns on new_products page
It also includes specs for ProductComponent
2023-02-08 12:04:05 +11:00
Maikel Linke
97b5a7f99c Bump ransack from 2.4.2 to 2.6.0
Preparing for Rails 7.
2023-02-08 11:16:25 +11:00
Maikel
0ca7319e32 Merge pull request #10391 from jibees/10390-current-master-not-in-prod-missing-pagination-from-orders-page
Orders page and BOM page: use the same pagination file
2023-02-08 11:15:31 +11:00
Jean-Baptiste Bellet
80ba228910 Partial is used in two different contexts: orders and line_items
Distinguish them by adding a local variable model that could either be `orders` or `line_items`
2023-02-07 18:10:29 +01:00
Filipe
0f203a474c Merge pull request #10375 from jibees/10363-bom-page-is-not-finding-or-displaying-name-email-or-order-number-for-some-orders
BOM: Ensure orders informations are loaded for each line items
2023-02-07 16:34:57 +00:00
cyrillefr
c37564eea7 Modify spec for orders bulk cancelling 2023-02-07 15:49:56 +01:00
cyrillefr
abf90b8437 Modify spec for orders 2023-02-07 15:40:40 +01:00
cyrillefr
1682f6788d Delete unused code
Delete now unused code for Angular style bulk orders cancelling
  - the Angular controller file
  - the bulk_cancel method from controller
  - the corresponding entry in route
2023-02-07 15:40:40 +01:00
jibees
10bacea861 Merge pull request #10389 from dacook/use-same-node-version-in-ci
Use .node-version in CI
2023-02-07 14:54:13 +01:00
Jean-Baptiste Bellet
237b0f03b5 Remove report_inverse_columns_logic from list of feature toggle
Co-Authored-By: Maikel <maikel@email.org.au>
2023-02-07 14:41:53 +01:00
Ana Nunes da Silva
f4980fa84d Update void payments to checkout on resumed order 2023-02-07 12:29:59 +00:00
Ana Nunes da Silva
c9e6d24eb0 Add :resume event in Spree::Payment 2023-02-07 12:27:15 +00:00
Ana Nunes da Silva
f2b407c194 Add :void scope in Spree::Payment 2023-02-07 12:27:15 +00:00
Ana Nunes da Silva
b48b3ad42b Update: Untaken cash payments to void on cancelled order 2023-02-07 12:27:07 +00:00
David Cook
af5e44e3f3 Use .node-version in CI
This ensures that all our automated tests are using the same version.
I'm not sure it matters what version Prettier runs on, but thought it should be the same.

This is a down-grade, but it's better to match the version in production. The next step will be to upgrade again for production.
2023-02-07 21:25:20 +11:00
dependabot[bot]
68acca2530 Bump prettier from 2.7.1 to 2.8.3
Bumps [prettier](https://github.com/prettier/prettier) from 2.7.1 to 2.8.3.
- [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.7.1...2.8.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-07 09:02:25 +00:00
dependabot[bot]
180aabdb90 Bump @floating-ui/dom from 1.1.1 to 1.2.0
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.0/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-02-07 09:02:00 +00:00
Maikel
c82af88c48 Merge pull request #10371 from openfoodfoundation/dependabot/npm_and_yarn/karma-6.4.1
Bump karma from 6.3.20 to 6.4.1
2023-02-07 16:43:19 +11:00
Maikel
40eae3f84d Merge pull request #10378 from openfoodfoundation/dependabot/bundler/valid_email2-4.0.5
Bump valid_email2 from 4.0.4 to 4.0.5
2023-02-07 16:41:47 +11:00
cyrillefr
597e9eae2b Modify view to call Stimulus controller
- Also add call to a new Modal confirm component for
   handling of bulk orders cancellings
2023-02-06 19:47:36 +01:00
cyrillefr
332c95dec5 Modify actual modal confirm component
- Need to take into account some additional customn message
2023-02-06 19:47:36 +01:00
cyrillefr
7a967715aa Create Stimulus CancelOrder controller 2023-02-06 19:47:36 +01:00
cyrillefr
c302640644 Create a reflex that handles bulk orders cancelling 2023-02-06 19:47:36 +01:00
cyrillefr
ad0ffd2a64 Create a new service for orders bulk cancelling 2023-02-06 19:47:36 +01:00
Ana Nunes da Silva
8bd890f311 Add :checkout scope in Spree::Payment 2023-02-06 11:09:40 +00:00
dependabot[bot]
64e6bd8248 Bump mrujs from 0.7.4 to 0.10.1
Bumps [mrujs](https://github.com/ParamagicDev/mrujs) from 0.7.4 to 0.10.1.
- [Release notes](https://github.com/ParamagicDev/mrujs/releases)
- [Changelog](https://github.com/KonnorRogers/mrujs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ParamagicDev/mrujs/compare/v0.7.4...v0.10.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 10:45:12 +00:00
jibees
e066e5ca74 Merge pull request #10370 from openfoodfoundation/dependabot/npm_and_yarn/jquery-ui-1.13.2
Bump jquery-ui from 1.13.0 to 1.13.2
2023-02-06 11:43:47 +01:00
jibees
9317cc41b9 Merge pull request #10379 from openfoodfoundation/dependabot/bundler/responders-3.1.0
Bump responders from 3.0.1 to 3.1.0
2023-02-06 11:34:19 +01:00
dependabot[bot]
1a35882fb6 Bump responders from 3.0.1 to 3.1.0
Bumps [responders](https://github.com/heartcombo/responders) from 3.0.1 to 3.1.0.
- [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.0.1...v3.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 09:08:09 +00:00
dependabot[bot]
ec3d7174de Bump valid_email2 from 4.0.4 to 4.0.5
Bumps [valid_email2](https://github.com/micke/valid_email2) from 4.0.4 to 4.0.5.
- [Release notes](https://github.com/micke/valid_email2/releases)
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v4.0.4...v4.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-02-06 09:01:57 +00:00
Maikel
207a3c9ea7 Merge pull request #10357 from openfoodfoundation/dependabot/bundler/webpacker-5.4.4
Bump webpacker from 5.4.3 to 5.4.4
2023-02-06 16:26:40 +11:00
Maikel
9ff8433a8d Merge pull request #10344 from filipefurtad0/update_orders_spec_II
Update orders spec ii
2023-02-06 14:32:14 +11:00
jibees
6549ad7d2a Merge pull request #10366 from dacook/node-version
Update Node version
2023-02-03 15:12:08 +01:00
jibees
7d1b71e640 Merge pull request #10300 from dacook/add-webpack-cli
Add required webpack package
2023-02-03 14:22:50 +01:00
Jean-Baptiste Bellet
bddd887dcd Load orders only if current line_items are loaded
+ update spec as well
2023-02-03 12:25:47 +01:00
Jean-Baptiste Bellet
d00e75de70 We should load orders that are linked to line_items displayed
This should not be related to any pagination, search or whatever: actually we consolidate line_items with order additional info based on line_items.order.id.
2023-02-03 11:40:07 +01:00
Jean-Baptiste Bellet
06cbc120f5 Pagination is actually linked to line_items and not orders
We display line_items as rows in BOM
2023-02-03 11:37:51 +01:00
dependabot[bot]
e91c4f1318 Bump karma from 6.3.20 to 6.4.1
Bumps [karma](https://github.com/karma-runner/karma) from 6.3.20 to 6.4.1.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v6.3.20...v6.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 08:51:33 +00:00
jibees
428b8b0314 Merge pull request #10365 from dacook/webpack-config
Make webpack-cli a dev-only dependency
2023-02-03 09:49:43 +01:00
dependabot[bot]
7d5ddb9cf6 Bump jquery-ui from 1.13.0 to 1.13.2
Bumps [jquery-ui](https://github.com/jquery/jquery-ui) from 1.13.0 to 1.13.2.
- [Release notes](https://github.com/jquery/jquery-ui/releases)
- [Commits](https://github.com/jquery/jquery-ui/compare/1.13.0...1.13.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 08:48:37 +00:00
jibees
cc5632fd14 Merge pull request #10364 from dacook/dependabot-update-js-packages
Allow Dependabot to update package.json
2023-02-03 09:46:05 +01:00
Jean-Baptiste Bellet
9b2ed8846c load_enterprise_set_on_index is used only in one action
so let's call it inside the action.
2023-02-03 09:15:07 +01:00
Jean-Baptiste Bellet
e18454c55a Add pagination on enterprises page for super admin
Enterprises are stored in `@enterprise_set` variables, and we iterate over to show the list of enterprises to super admin.

Previously, we used to use `Sets::EnterpriseSet.new(collection)` instead of creating set based on `@collection`: this leads to call the `collection` method twice, which was probably very time consuming. This commit fix also that.

+ use paginated enterprises loading on bulk update but without testing if the current user is an admin
2023-02-03 09:15:07 +01:00
David Cook
785350a089 Bump Node to v14.21.2
Currently our CI and servers do not respect this setting, only dev environments that have a Node version manager do.

I checked a few prod servers, and they use this version already so now I'm making it official. But we should aim to upgrade further, the current version is v19.

    WARNING: node-v14.21.2-darwin-x64 is in LTS Maintenance mode and nearing its end of life.
    It only receives *critical* security updates, *critical* bug fixes and documentation updates.
2023-02-03 16:17:28 +11:00
David Cook
ef4731022e Recommend Node version manager
I chose to combine this in the above section to reduce the length of the document.

Note that the OS-specific pages in the wiki should be updated after this.
2023-02-03 16:06:34 +11:00
David Cook
8adb8a5eaf Make webpack-cli a dev-only dependency
We shouldn't need this in production. According to the [readme](https://www.npmjs.com/package/webpack-cli) it's only a dev dependency.
2023-02-03 15:26:00 +11:00
David Cook
a0d1183fc0 Use yarn to install dependencies
`reviewdoc-action-prettier` is automatically running npm, but we use Yarn, which handles unmet dependencies differently. Let's make it consistent.

This caused the linter to fail when it didn't need to (https://github.com/openfoodfoundation/openfoodnetwork/pull/10300#issuecomment-1413004039).
2023-02-03 15:21:58 +11:00
David Cook
3b49ba4de1 Allow Dependabot to update package.json
As per the industry standard, all version numbers are specified in package.json, so Dependabot is allowed to suggest increases when a new version is released. This is the default.

Discussed in https://community.openfoodnetwork.org/t/javascript-dependency-management-with-package-json/2753
2023-02-03 14:48:18 +11:00
Jean-Baptiste Bellet
ef4c99bf49 Replace gitlab-omniauth-openid-connect by omniauth_openid_connect
```

All changes in this gem are now upstreamed in omniauth_openid_connect
gem v0.6.0 under the OmniAuth group: https://github.com/omniauth/omniauth_openid_connect.

In your Gemfile, replace the line:

gem 'gitlab-omniauth-openid-connect', '~> 0.10', require: 'omniauth_openid_connect'

With:

gem 'omniauth_openid_connect', '~> 0.6'

The gitlab-omniauth-openid-connect gem is no longer updated.
```

Allow upgrading omniauth_openid_connect gem

The pinned version is the most recent and I would be happy for
Dependabot to suggest newer versions when available.
2023-02-03 12:17:17 +11:00
dependabot[bot]
40d767928e Bump gitlab-omniauth-openid-connect from 0.10.0 to 0.10.1
Bumps [gitlab-omniauth-openid-connect](https://gitlab.com/gitlab-org/gitlab-omniauth-openid-connect) from 0.10.0 to 0.10.1.
- [Release notes](https://gitlab.com/gitlab-org/gitlab-omniauth-openid-connect/tags)
- [Commits](https://gitlab.com/gitlab-org/gitlab-omniauth-openid-connect/compare/v0.10.0...v0.10.1)

---
updated-dependencies:
- dependency-name: gitlab-omniauth-openid-connect
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 12:16:15 +11:00
jibees
5e689b12fe Merge pull request #10345 from mkllnk/rspec-n
Enable RSpec's status file for --next-failure
2023-02-02 16:54:37 +01:00
jibees
518a029b59 Merge pull request #10353 from mkllnk/taggable
Bump acts-as-taggable-on from 8.1.0 to 9.0.1
2023-02-02 16:43:56 +01:00
jibees
2b14269dae Merge pull request #10359 from openfoodfoundation/dependabot/bundler/jwt-2.7.0
Bump jwt from 2.6.0 to 2.7.0
2023-02-02 16:42:35 +01:00
Jean-Baptiste Bellet
a463a39abc Update all locales with the latest Transifex translations 2023-02-02 16:11:57 +01:00
Filipe
99a0056d7f Merge pull request #10257 from rioug/9720-fix-imperial-weight-display-when-using-float-value
Fix decimal display for imperial weight on Cart, Order Confirmation page and Confirmation emails
2023-02-02 15:03:39 +00:00
Rachel Arnould
0973e79a91 Merge pull request #10274 from jibees/8905-convert-popup-to-flash-messages-
On `/cart` page, if consumer adds more quantity than available, use in-app flash message instead of native alert
2023-02-02 15:50:17 +01:00
Filipe
d0897ec677 Merge pull request #10248 from jibees/10117-reports-in-order-cycle-customer-totals-incorrect-sorting-when-lastname-first-letter-isnt-capitalized
Reports, Orders and fulfillment: Sort by customer lastname + firstname case insensitive
2023-02-02 14:39:10 +00:00
Jean-Baptiste Bellet
915174b513 Do not stack same flash messages
Very ugly in UI.
2023-02-02 15:28:35 +01:00
Jean-Baptiste Bellet
f5aae5f8b9 Remplace ouf of stock alert by Flash message 2023-02-02 15:28:35 +01:00
dependabot[bot]
e94fff0d69 Bump jwt from 2.6.0 to 2.7.0
Bumps [jwt](https://github.com/jwt/ruby-jwt) from 2.6.0 to 2.7.0.
- [Release notes](https://github.com/jwt/ruby-jwt/releases)
- [Changelog](https://github.com/jwt/ruby-jwt/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jwt/ruby-jwt/compare/v2.6.0...v2.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-02 09:04:00 +00:00
David Cook
14189aef5c Use yarn to install dependencies
reviewdoc-action-prettier is automatically running npm, but that fails. We use yarn so maybe if we call it first, npm won't get called? Worth a try.
2023-02-02 11:51:13 +11:00
David Cook
6dc54fbd22 Add required webpack package
Webpack won't run and tells me I need to install the new package:

> The command moved into a separate package: @webpack-cli/serve

But the latest version depends on webpack 5, so should we install an older version? I couldn't get that working either.
2023-02-02 11:39:26 +11:00
Filipe
1e3f754f96 Merge pull request #10318 from dacook/10272-remove-currency-from-calculators
Remove unused currency from calculators
2023-02-01 13:49:51 +00:00
Filipe
095e520777 Merge pull request #10339 from mkllnk/ssl
Remove unnecessary SSL code
2023-02-01 13:06:26 +00:00
jibees
452b38fa36 Merge pull request #10355 from openfoodfoundation/dependabot/bundler/sidekiq-scheduler-5.0.1
Bump sidekiq-scheduler from 5.0.0 to 5.0.1
2023-02-01 10:58:15 +01:00
jibees
496bc9120a Merge pull request #10354 from openfoodfoundation/dependabot/npm_and_yarn/hotwired/turbo-7.2.5
Bump @hotwired/turbo from 7.2.4 to 7.2.5
2023-02-01 10:51:37 +01:00
dependabot[bot]
a386d33197 Bump webpacker from 5.4.3 to 5.4.4
Bumps [webpacker](https://github.com/rails/webpacker) from 5.4.3 to 5.4.4.
- [Release notes](https://github.com/rails/webpacker/releases)
- [Changelog](https://github.com/rails/webpacker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/webpacker/compare/v5.4.3...v5.4.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 09:13:05 +00:00
dependabot[bot]
762e27b015 Bump sidekiq-scheduler from 5.0.0 to 5.0.1
Bumps [sidekiq-scheduler](https://github.com/moove-it/sidekiq-scheduler) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/moove-it/sidekiq-scheduler/releases)
- [Changelog](https://github.com/sidekiq-scheduler/sidekiq-scheduler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moove-it/sidekiq-scheduler/compare/v5.0.0...v5.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 09:03:29 +00:00
dependabot[bot]
29915cdbbd Bump @hotwired/turbo from 7.2.4 to 7.2.5
Bumps [@hotwired/turbo](https://github.com/hotwired/turbo) from 7.2.4 to 7.2.5.
- [Release notes](https://github.com/hotwired/turbo/releases)
- [Commits](https://github.com/hotwired/turbo/compare/v7.2.4...v7.2.5)

---
updated-dependencies:
- dependency-name: "@hotwired/turbo"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 09:01:50 +00:00
Gaetan Craig-Riou
5cfedddba4 UnsavedChanges controller, disabling submit button is now optional 2023-02-01 13:46:30 +11:00
David Cook
d5ae5c9af4 Revert "Bump rspec-rails from 5.1.2 to 6.0.1"
This reverts commit 1313b55531.

Because it also updates activemerchant. Dunno why, but it shouldn't have been merged (oops).
2023-02-01 12:16:32 +11:00
David Cook
01c6a8b9ec Merge pull request #9850 from openfoodfoundation/dependabot/bundler/rspec-rails-6.0.1
Bump rspec-rails from 5.1.2 to 6.0.1
2023-02-01 11:43:57 +11:00
Maikel Linke
44677fac87 Bump acts-as-taggable-on from 8.1.0 to 9.0.1 2023-02-01 11:41:14 +11:00
Maikel
dda85666e6 Merge pull request #10347 from openfoodfoundation/dependabot/bundler/ddtrace-1.9.0
Bump ddtrace from 1.8.0 to 1.9.0
2023-02-01 11:23:53 +11:00
Gaetan Craig-Riou
dd876dfd8d Order cycle form, disable the save and save and back button on page load
Buttons will be enabled once the form has been interacted with.
Update unsavedChanges stimulus controller to handle this. It should
still be generic enought that it can be reused.
2023-02-01 09:43:28 +11:00
Gaetan Craig-Riou
ef309c0fd0 Order cycle form, checkout options steps add user warning when leaving page and form has been changed
Add UnsavedChanges stimulus controller, it should be generic enough so
that it can reused somewhere else. It works with both 'beforeunload' event
and 'turbolinks:before-visit' when using turbo links.
2023-02-01 09:43:28 +11:00
Gaetan Craig-Riou
de97c59632 Order cycle exchange form, only set red border on pickup_time field if empty
The red border is set by setting pickup_time as $dirty, it then blocks next button and add leave page warning when it is not necessary, this is a fix for it.
2023-02-01 09:43:28 +11:00
filipefurtad0
5d4ab5c1f8 Adds the bang! when updating DB entries 2023-01-31 12:20:26 +00:00
dependabot[bot]
bf9cfd4990 Bump ddtrace from 1.8.0 to 1.9.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v1.8.0...v1.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-31 09:03:18 +00:00
Maikel Linke
d3251dc03f Enable RSpec's status file for --next-failure
With this config, we can use `rspec -n` which is shorthand for:

  rspec --only-failures --fail-fast --order defined

This is much easier than running specs by line numbers.
2023-01-31 15:45:21 +11:00
Maikel Linke
d3b80b7fc9 Clarify expecting a hash, not keyword arguments
The syntax was ambiguous and nwer version of rspec-rails catch that.
2023-01-31 15:40:33 +11:00
David Cook
d9aa125903 Merge pull request #10305 from heroinedor/feature/docker-dev
Docker dev environment improvement
2023-01-31 10:52:37 +11:00
filipefurtad0
444d689f14 Adds ordering by order total 2023-01-30 20:12:38 +00:00
filipefurtad0
801ebe5819 Adds ordering by billing address name 2023-01-30 20:12:38 +00:00
filipefurtad0
7f4e5d3f2e Adds ordering by customer name 2023-01-30 20:12:38 +00:00
filipefurtad0
107bb3df66 Adds ordering by shipment state 2023-01-30 20:12:38 +00:00
filipefurtad0
dcbf2ae96b Removes assertions on the Loading element 2023-01-30 20:12:38 +00:00
filipefurtad0
f2c0a77641 Adds ordering by payment state 2023-01-30 18:39:51 +00:00
filipefurtad0
958a1bde9f Adds ordering by order state 2023-01-30 17:35:23 +00:00
filipefurtad0
cff06011f1 Fixes rubocop issues; Adds ordering by order number 2023-01-30 17:21:29 +00:00
filipefurtad0
0e878d8ce1 Sets context for filters; Adds context for ordering 2023-01-30 17:08:03 +00:00
Filipe
678c60c9b6 Merge pull request #10175 from abdellani/tax_totals_with_rates_by_producer_report
Tax Totals with Rates by Producer Report
2023-01-30 13:56:48 +00:00
jibees
83335cfab4 Merge pull request #10342 from openfoodfoundation/dependabot/bundler/redcarpet-3.6.0
Bump redcarpet from 3.5.1 to 3.6.0
2023-01-30 10:20:33 +01:00
jibees
a762aa6ff9 Merge pull request #10341 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.1.1
Bump @floating-ui/dom from 1.1.0 to 1.1.1
2023-01-30 10:14:38 +01:00
dependabot[bot]
6b1d6e33c0 Bump redcarpet from 3.5.1 to 3.6.0
Bumps [redcarpet](https://github.com/vmg/redcarpet) from 3.5.1 to 3.6.0.
- [Release notes](https://github.com/vmg/redcarpet/releases)
- [Changelog](https://github.com/vmg/redcarpet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vmg/redcarpet/compare/v3.5.1...v3.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-30 09:06:42 +00:00
dependabot[bot]
24d29c6949 Bump @floating-ui/dom from 1.1.0 to 1.1.1
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.1.1/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-01-30 09:01:33 +00:00
Maikel Linke
1609cc49e3 Wait only for report jobs within Puma workers
Otherwise a root Puma worker will try to wait for its other child
processes as well while they live a long time.
2023-01-30 16:28:59 +11:00
Maikel Linke
8c458c2d48 Remove outdated SSL setting from database 2023-01-30 14:32:31 +11:00
Maikel Linke
0fc108a8e6 Remove useless option to allow SSL
It's an outdated Spree setting. We always enforce SSL in production and
staging while development and test environments are running without SSL.
This setting didn't have any effect.
2023-01-30 14:19:37 +11:00
Maikel Linke
f888a0eb21 Remove unnecessary rack-ssl gem
Rails comes with ActionDispatch::SSL which is enabled in staging and
production. We don't need this ancient gem last updated in 2014.
2023-01-30 14:08:55 +11:00
filipefurtad0
994232f6d1 Adds pagination test on orders page 2023-01-28 17:50:28 +00:00
jibees
a97fb0f46b Merge pull request #10336 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.119.0
Bump aws-sdk-s3 from 1.118.0 to 1.119.0
2023-01-27 10:29:38 +01:00
dependabot[bot]
73c81e626c Bump aws-sdk-s3 from 1.118.0 to 1.119.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.118.0 to 1.119.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-01-27 09:08:25 +00:00
Jean-Baptiste Bellet
634a54e3f1 Add image in description as they are now authorized 2023-01-26 18:21:28 +01:00
Jean-Baptiste Bellet
8f519eaf21 Factorize expects and include testing html inside modal and in description 2023-01-26 18:21:28 +01:00
Jean-Baptiste Bellet
dd0957fa72 Remove test no related to consumer spec
Furthermore, this test is more about testing the text editor (itself) which is an external library
2023-01-26 18:21:28 +01:00
Jean-Baptiste Bellet
6d68460950 Factorize sanitizer options between edition and displaying
by using the same `app/services/content_scrubber.rb`
2023-01-26 18:21:27 +01:00
Jean-Baptiste Bellet
79320331c0 As we trust description_html (previously sanitized), direct use HTML
via the AngularsJS `bind-html` attribute.

This will display formatting and images.
2023-01-26 17:44:51 +01:00
Jean-Baptiste Bellet
85d9650903 Allow img (and its attributes) to be displayed in the shopfront 2023-01-26 17:42:32 +01:00
Jean-Baptiste Bellet
970b7b6738 Allow attributes src (and alt) to display image for product description
on admin ie. `/admin/products/bread/edit`
2023-01-26 17:42:09 +01:00
David Cook
428b589357 Remove unused currency from calculators 2023-01-25 15:31:40 +11:00
Pipo Bimbo
118d3a9d8e separate log file for both steps of the tests 2023-01-24 08:50:33 +01:00
Pipo Bimbo
54acfbf7f2 documentation for docker on windows 2023-01-23 15:08:18 +01:00
Pipo Bimbo
5708fb04a5 switch from command scripts to powershell scripts 2023-01-23 14:15:16 +01:00
Pipo Bimbo
fa4ff7534b for windows and docker usage compatibilities, force certain files to use LF line endings, even on Windows 2023-01-23 14:10:41 +01:00
Pipo Bimbo
4bae28bbad removed node_modules folder mounting on docker because it is not possible to have node_modules files on Windows host used by yarn/npm process on docker container 2023-01-23 14:10:41 +01:00
Pipo Bimbo
e1b79db65e Set line endings to LF, even on Windows, for Shell scripts. Otherwise, execution within Docker fails. 2023-01-23 14:10:41 +01:00
Pipo Bimbo
d413a39c3c grep option -x does not work on windows installation due to EOL characters 2023-01-23 14:10:41 +01:00
Pipo Bimbo
d153adca9b docker server.bat files for use of docker on windows environment + documentation 2023-01-23 14:10:41 +01:00
Pipo Bimbo
38fe572943 Avoid spaces and line return around ruby version, especially for windows 2023-01-23 14:10:41 +01:00
Pipo Bimbo
ee1ad57c7f add docker build and seed scripts for windows 2023-01-23 14:10:41 +01:00
Mohamed ABDELLANI
19df15d75b move item group instruction from db to rails 2023-01-21 18:40:27 +01:00
Mohamed ABDELLANI
92c4bd9eb7 introduces format_percentage in ReportRowBuilder#format_cell 2023-01-21 18:40:27 +01:00
Mohamed ABDELLANI
4822be532b test Sales Tax Totals By Producer 2023-01-21 18:40:27 +01:00
Mohamed ABDELLANI
c87c8ed0df subreport filtering partial 2023-01-21 18:39:33 +01:00
dependabot[bot]
1313b55531 Bump rspec-rails from 5.1.2 to 6.0.1
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 5.1.2 to 6.0.1.
- [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/v5.1.2...v6.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-20 10:33:08 +00:00
Mohamed ABDELLANI
61037aa5ad sales tax totals by producers report 2023-01-17 08:37:47 +01:00
Gaetan Craig-Riou
6e76bcac4a Refactor option_value_value_unit_scaled to use to_d instead of calling BigDecimal
As we are now using truncate(2) we don't need to specify the number of significant digits
2023-01-11 15:35:30 +11:00
Gaetan Craig-Riou
91af282ccc Truncate scaled value unit to maximum of two decimals
ie truncate 12.50001234 to 12.5

When using imperial, the scalling calculation rounding results in value unit
having extra decimal when converted back to imperial

+ related spec
2023-01-11 11:04:32 +11:00
Jean-Baptiste Bellet
8958fe4199 Orders and fulfilment: Sort by lastname + firstname case insensitive 2023-01-06 15:36:12 +01:00
485 changed files with 11479 additions and 13858 deletions

View File

@@ -2,3 +2,4 @@
.gitignore
log/*
tmp/*
node_modules/

11
.gitattributes vendored Normal file
View File

@@ -0,0 +1,11 @@
# Set default behavior to automatically normalize line endings.
* text=auto
# Set line endings to LF, even on Windows. Otherwise, execution within Docker fails.
# See https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings#per-repository-settings
*.sh text eol=lf
# Same thing for following files, but they don't have an sh extension
pre-commit eol=lf
webpack-dev-server eol=lf
install-bundler eol=lf

View File

@@ -6,10 +6,12 @@ updates:
schedule:
interval: "daily"
open-pull-requests-limit: 10
# Only specific requirements are specified in Gemfile, so don't touch it.
versioning-strategy: lockfile-only
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
versioning-strategy: lockfile-only
# All versions are specified in package.json, so please update them.
versioning-strategy: increase

View File

@@ -57,7 +57,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 16
node-version-file: .node-version
- name: Install JS dependencies
run: yarn install --frozen-lockfile
@@ -126,7 +126,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 16
node-version-file: .node-version
- name: Install JS dependencies
run: yarn install --frozen-lockfile
@@ -195,7 +195,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 16
node-version-file: .node-version
- name: Install JS dependencies
run: yarn install --frozen-lockfile
@@ -273,7 +273,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 16
node-version-file: .node-version
- name: Install JS dependencies
run: yarn install --frozen-lockfile
@@ -351,7 +351,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 16
node-version-file: .node-version
- name: Install JS dependencies
run: yarn install --frozen-lockfile
@@ -429,7 +429,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 16
node-version-file: .node-version
- name: Install JS dependencies
run: yarn install --frozen-lockfile
@@ -489,7 +489,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 16
node-version-file: .node-version
- name: Install JS dependencies
run: yarn install --frozen-lockfile

View File

@@ -24,6 +24,14 @@ jobs:
steps:
- name: Check out code
uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: .node-version
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: prettier
uses: EPMatt/reviewdog-action-prettier@v1
with:

View File

@@ -1 +1 @@
14.16.1
17.9.1

View File

@@ -1,12 +1,12 @@
# This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1400`
# on 2022-08-29 05:26:26 UTC using RuboCop version 1.35.1.
# on 2023-04-01 00:21:28 UTC using RuboCop version 1.47.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
# Offense count: 2
# Offense count: 4
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include.
# Include: **/*.gemfile, **/Gemfile, **/gems.rb
@@ -15,7 +15,7 @@ Bundler/OrderedGems:
- 'Gemfile'
# Offense count: 4
# Configuration parameters: Include.
# Configuration parameters: Severity, Include.
# Include: **/*.gemspec
Gemspec/RequiredRubyVersion:
Exclude:
@@ -24,11 +24,65 @@ Gemspec/RequiredRubyVersion:
- 'engines/order_management/order_management.gemspec'
- 'engines/web/web.gemspec'
# Offense count: 28
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: with_first_argument, with_fixed_indentation
Layout/ArgumentAlignment:
Exclude:
- 'app/controllers/spree/users_controller.rb'
- 'app/controllers/user_confirmations_controller.rb'
- 'app/models/enterprise.rb'
- 'spec/lib/reports/packing/packing_report_spec.rb'
- 'spec/migrations/migrate_customer_names_spec.rb'
- 'spec/services/products_renderer_spec.rb'
- 'spec/system/admin/bulk_order_management_spec.rb'
- 'spec/system/admin/enterprise_fees_spec.rb'
- 'spec/system/admin/order_cycles/list_spec.rb'
- 'spec/system/admin/order_cycles/simple_spec.rb'
- 'spec/system/consumer/shopping/cart_spec.rb'
- 'spec/system/consumer/shopping/checkout_auth_spec.rb'
- 'spec/system/consumer/shopping/products_spec.rb'
# Offense count: 4
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: with_first_element, with_fixed_indentation
Layout/ArrayAlignment:
Exclude:
- 'spec/system/admin/customers_spec.rb'
- 'spec/system/admin/order_spec.rb'
- 'spec/system/admin/orders_spec.rb'
- 'spec/system/consumer/shopping/cart_spec.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyleAlignWith.
# SupportedStylesAlignWith: either, start_of_block, start_of_line
Layout/BlockAlignment:
Exclude:
- 'spec/services/products_renderer_spec.rb'
# Offense count: 5
# This cop supports safe autocorrection (--autocorrect).
Layout/BlockEndNewline:
Exclude:
- 'app/controllers/admin/subscriptions_controller.rb'
- 'spec/lib/open_food_network/enterprise_fee_calculator_spec.rb'
- 'spec/system/admin/orders_spec.rb'
# Offense count: 3
# This cop supports safe autocorrection (--autocorrect).
Layout/ClosingParenthesisIndentation:
Exclude:
- 'lib/reporting/queries/joins.rb'
- 'spec/system/admin/orders_spec.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Layout/EmptyLines:
Exclude:
- 'app/models/spree/payment.rb'
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
@@ -39,6 +93,71 @@ Layout/EmptyLinesAroundBlockBody:
- 'spec/requests/checkout/concurrency_spec.rb'
- 'spec/system/admin/order_cycles/list_spec.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowForAlignment, AllowBeforeTrailingComments, ForceEqualSignAlignment.
Layout/ExtraSpacing:
Exclude:
- 'spec/spec_helper.rb'
# Offense count: 3
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: consistent, consistent_relative_to_receiver, special_for_inner_method_call, special_for_inner_method_call_in_parentheses
Layout/FirstArgumentIndentation:
Exclude:
- 'spec/system/admin/orders_spec.rb'
- 'spec/system/admin/products_spec.rb'
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: special_inside_parentheses, consistent, align_braces
Layout/FirstHashElementIndentation:
Exclude:
- 'spec/services/products_renderer_spec.rb'
# Offense count: 13
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
# SupportedHashRocketStyles: key, separator, table
# SupportedColonStyles: key, separator, table
# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
Layout/HashAlignment:
Exclude:
- 'app/controllers/admin/subscriptions_controller.rb'
- 'app/controllers/spree/users_controller.rb'
- 'app/models/spree/image.rb'
- 'spec/migrations/migrate_customer_names_spec.rb'
- 'spec/models/enterprise_spec.rb'
- 'spec/support/request/stripe_stubs.rb'
- 'spec/system/admin/customers_spec.rb'
- 'spec/system/admin/order_spec.rb'
- 'spec/system/admin/orders_spec.rb'
- 'spec/system/admin/tag_rules_spec.rb'
- 'spec/system/consumer/shopping/cart_spec.rb'
# Offense count: 18
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: normal, indented_internal_methods
Layout/IndentationConsistency:
Exclude:
- 'spec/system/admin/order_cycles/complex_editing_spec.rb'
- 'spec/system/admin/order_cycles/complex_updating_specific_time_spec.rb'
- 'spec/system/admin/order_cycles/simple_spec.rb'
- 'spec/system/admin/order_spec.rb'
- 'spec/system/admin/orders_spec.rb'
- 'spec/system/admin/product_import_spec.rb'
- 'spec/system/consumer/split_checkout_spec.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Width, AllowedPatterns.
Layout/IndentationWidth:
Exclude:
- 'spec/services/products_renderer_spec.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowDoxygenCommentStyle, AllowGemfileRubyComment.
@@ -46,9 +165,9 @@ Layout/LeadingCommentSpace:
Exclude:
- 'spec/system/admin/enterprises_spec.rb'
# Offense count: 862
# Offense count: 603
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns, IgnoredPatterns.
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# URISchemes: http, https
Layout/LineLength:
Exclude:
@@ -61,11 +180,8 @@ Layout/LineLength:
- 'app/controllers/admin/subscriptions_controller.rb'
- 'app/controllers/api/v0/order_cycles_controller.rb'
- 'app/controllers/payment_gateways/paypal_controller.rb'
- 'app/controllers/spree/users_controller.rb'
- 'app/controllers/user_confirmations_controller.rb'
- 'app/helpers/angular_form_builder.rb'
- 'app/helpers/angular_form_helper.rb'
- 'app/helpers/checkout_helper.rb'
- 'app/helpers/enterprises_helper.rb'
- 'app/helpers/order_cycles_helper.rb'
- 'app/helpers/spree/orders_helper.rb'
@@ -84,7 +200,6 @@ Layout/LineLength:
- 'app/models/schedule.rb'
- 'app/models/spree/app_configuration.rb'
- 'app/models/spree/gateway/stripe_sca.rb'
- 'app/models/spree/image.rb'
- 'app/models/spree/line_item.rb'
- 'app/models/spree/order.rb'
- 'app/models/spree/payment_method.rb'
@@ -119,7 +234,6 @@ Layout/LineLength:
- 'spec/controllers/admin/bulk_line_items_controller_spec.rb'
- 'spec/controllers/admin/column_preferences_controller_spec.rb'
- 'spec/controllers/admin/enterprises_controller_spec.rb'
- 'spec/controllers/admin/manager_invitations_controller_spec.rb'
- 'spec/controllers/admin/order_cycles_controller_spec.rb'
- 'spec/controllers/admin/schedules_controller_spec.rb'
- 'spec/controllers/admin/stripe_accounts_controller_spec.rb'
@@ -129,17 +243,13 @@ Layout/LineLength:
- 'spec/controllers/admin/variant_overrides_controller_spec.rb'
- 'spec/controllers/api/v0/base_controller_spec.rb'
- 'spec/controllers/api/v0/exchange_products_controller_spec.rb'
- 'spec/controllers/api/v0/logos_controller_spec.rb'
- 'spec/controllers/api/v0/order_cycles_controller_spec.rb'
- 'spec/controllers/api/v0/orders_controller_spec.rb'
- 'spec/controllers/api/v0/products_controller_spec.rb'
- 'spec/controllers/api/v0/promo_images_controller_spec.rb'
- 'spec/controllers/api/v0/terms_and_conditions_controller_spec.rb'
- 'spec/controllers/cart_controller_spec.rb'
- 'spec/controllers/checkout_controller_spec.rb'
- 'spec/controllers/enterprises_controller_spec.rb'
- 'spec/controllers/line_items_controller_spec.rb'
- 'spec/controllers/registration_controller_spec.rb'
- 'spec/controllers/shops_controller_spec.rb'
- 'spec/controllers/spree/admin/orders/customer_details_controller_spec.rb'
- 'spec/controllers/spree/admin/orders/invoices_spec.rb'
@@ -148,12 +258,8 @@ Layout/LineLength:
- 'spec/controllers/spree/admin/variants_controller_spec.rb'
- 'spec/controllers/spree/credit_cards_controller_spec.rb'
- 'spec/controllers/spree/orders_controller_spec.rb'
- 'spec/controllers/stripe/callbacks_controller_spec.rb'
- 'spec/controllers/stripe/webhooks_controller_spec.rb'
- 'spec/controllers/user_confirmations_controller_spec.rb'
- 'spec/factories/order_factory.rb'
- 'spec/factories/stock_location_factory.rb'
- 'spec/helpers/enterprises_helper_spec.rb'
- 'spec/helpers/injection_helper_spec.rb'
- 'spec/helpers/order_cycles_helper_spec.rb'
- 'spec/helpers/spree/admin/base_helper_spec.rb'
@@ -167,13 +273,11 @@ Layout/LineLength:
- 'spec/lib/open_food_network/tag_rule_applicator_spec.rb'
- 'spec/lib/reports/customers_report_spec.rb'
- 'spec/lib/reports/order_cycle_management_report_spec.rb'
- 'spec/lib/reports/packing/packing_report_spec.rb'
- 'spec/lib/reports/products_and_inventory_report_spec.rb'
- 'spec/lib/reports/users_and_enterprises_report_spec.rb'
- 'spec/mailers/order_mailer_spec.rb'
- 'spec/mailers/producer_mailer_spec.rb'
- 'spec/mailers/subscription_mailer_spec.rb'
- 'spec/migrations/migrate_customer_names_spec.rb'
- 'spec/models/concerns/calculated_adjustments_spec.rb'
- 'spec/models/concerns/order_shipment_spec.rb'
- 'spec/models/concerns/product_stock_spec.rb'
@@ -205,7 +309,6 @@ Layout/LineLength:
- 'spec/models/variant_override_spec.rb'
- 'spec/requests/api/orders_spec.rb'
- 'spec/requests/checkout/failed_checkout_spec.rb'
- 'spec/routing/stripe_spec.rb'
- 'spec/serializers/api/admin/exchange_serializer_spec.rb'
- 'spec/serializers/api/admin/order_cycle_serializer_spec.rb'
- 'spec/services/address_geocoder_spec.rb'
@@ -226,72 +329,82 @@ Layout/LineLength:
- 'spec/support/features/datepicker_helper.rb'
- 'spec/support/matchers/select2_matchers.rb'
- 'spec/support/matchers/table_matchers.rb'
- 'spec/support/request/stripe_stubs.rb'
- 'spec/support/request/web_helper.rb'
- 'spec/system/admin/adjustments_spec.rb'
- 'spec/system/admin/bulk_order_management_spec.rb'
- 'spec/system/admin/bulk_product_update_spec.rb'
- 'spec/system/admin/configuration/content_spec.rb'
- 'spec/system/admin/customers_spec.rb'
- 'spec/system/admin/enterprise_fees_spec.rb'
- 'spec/system/admin/enterprise_relationships_spec.rb'
- 'spec/system/admin/enterprises/business_address_form_spec.rb'
- 'spec/system/admin/enterprises/images_spec.rb'
- 'spec/system/admin/enterprises/index_spec.rb'
- 'spec/system/admin/enterprises_spec.rb'
- 'spec/system/admin/multilingual_spec.rb'
- 'spec/system/admin/order_cycles/complex_editing_multiple_product_pages_spec.rb'
- 'spec/system/admin/order_cycles/complex_editing_spec.rb'
- 'spec/system/admin/order_cycles/complex_updating_specific_time_spec.rb'
- 'spec/system/admin/order_cycles/list_spec.rb'
- 'spec/system/admin/order_cycles/simple_spec.rb'
- 'spec/system/admin/order_spec.rb'
- 'spec/system/admin/orders_spec.rb'
- 'spec/system/admin/overview_spec.rb'
- 'spec/system/admin/payment_method_spec.rb'
- 'spec/system/admin/payments_stripe_spec.rb'
- 'spec/system/admin/product_import_spec.rb'
- 'spec/system/admin/products_spec.rb'
- 'spec/system/admin/reports/packing_report_spec.rb'
- 'spec/system/admin/schedules_spec.rb'
- 'spec/system/admin/shipping_methods_spec.rb'
- 'spec/system/admin/subscriptions_spec.rb'
- 'spec/system/admin/tag_rules_spec.rb'
- 'spec/system/admin/users_spec.rb'
- 'spec/system/admin/variant_overrides_spec.rb'
- 'spec/system/consumer/authentication_spec.rb'
- 'spec/system/consumer/caching/shops_caching_spec.rb'
- 'spec/system/consumer/cookies_spec.rb'
- 'spec/system/consumer/shopping/cart_spec.rb'
- 'spec/system/consumer/shopping/checkout_auth_spec.rb'
- 'spec/system/consumer/shopping/checkout_spec.rb'
- 'spec/system/consumer/shopping/checkout_stripe_spec.rb'
- 'spec/system/consumer/shopping/products_spec.rb'
- 'spec/system/consumer/shopping/shopping_spec.rb'
- 'spec/system/consumer/shopping/unit_price_spec.rb'
- 'spec/system/consumer/shopping/variant_overrides_spec.rb'
- 'spec/system/consumer/split_checkout_spec.rb'
- 'spec/system/support/precompile_assets.rb'
- 'spec/views/spree/admin/payment_methods/index.html.haml_spec.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Layout/MultilineBlockLayout:
Exclude:
- 'engines/order_management/app/services/order_management/subscriptions/validator.rb'
# Offense count: 7
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: symmetrical, new_line, same_line
Layout/MultilineMethodCallBraceLayout:
Exclude:
- 'lib/reporting/queries/joins.rb'
- 'spec/system/admin/orders_spec.rb'
- 'spec/system/admin/products_spec.rb'
# Offense count: 22
# Offense count: 6
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: aligned, indented, indented_relative_to_receiver
Layout/MultilineMethodCallIndentation:
Exclude:
- 'spec/controllers/api/v0/orders_controller_spec.rb'
- 'spec/system/admin/order_cycles/complex_editing_spec.rb'
- 'spec/system/admin/overview_spec.rb'
- 'spec/system/admin/payment_method_spec.rb'
- 'spec/system/admin/variant_overrides_spec.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: aligned, indented
Layout/MultilineOperationIndentation:
Exclude:
- 'app/models/spree/order.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: final_newline, final_blank_line
Layout/TrailingEmptyLines:
Exclude:
- 'Rakefile'
# Offense count: 69
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowInHeredoc.
Layout/TrailingWhitespace:
Exclude:
- 'app/controllers/spree/admin/shipping_methods_controller.rb'
- 'spec/controllers/spree/admin/shipping_methods_controller_spec.rb'
- 'app/controllers/spree/users_controller.rb'
- 'app/controllers/user_confirmations_controller.rb'
- 'app/models/enterprise.rb'
- 'app/models/spree/image.rb'
- 'spec/controllers/spree/credit_cards_controller_spec.rb'
- 'spec/controllers/user_confirmations_controller_spec.rb'
- 'spec/factories/order_factory.rb'
- 'spec/lib/reports/packing/packing_report_spec.rb'
- 'spec/models/enterprise_spec.rb'
- 'spec/services/products_renderer_spec.rb'
- 'spec/support/request/stripe_stubs.rb'
- 'spec/system/admin/bulk_order_management_spec.rb'
- 'spec/system/admin/customers_spec.rb'
- 'spec/system/admin/enterprise_fees_spec.rb'
- 'spec/system/admin/flatpickr_spec.rb'
- 'spec/system/admin/order_cycles/complex_editing_spec.rb'
- 'spec/system/admin/order_cycles/list_spec.rb'
- 'spec/system/admin/order_cycles/simple_spec.rb'
- 'spec/system/admin/order_spec.rb'
- 'spec/system/admin/product_import_spec.rb'
- 'spec/system/admin/shipping_methods_spec.rb'
- 'spec/system/flatpickr_spec.rb'
- 'spec/system/consumer/split_checkout_spec.rb'
# Offense count: 17
# Configuration parameters: AllowedMethods.
@@ -363,15 +476,23 @@ Lint/UnusedMethodArgument:
Exclude:
- 'lib/reporting/queries/query_interface.rb'
# Offense count: 5
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
Lint/UselessMethodDefinition:
Exclude:
- 'app/controllers/spree/user_registrations_controller.rb'
- 'app/models/spree/gateway.rb'
# Offense count: 28
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, CountRepeatedAttributes, Max.
# Offense count: 13
# Configuration parameters: CheckForMethodsWithNoSideEffects.
Lint/Void:
Exclude:
- 'spec/system/admin/order_cycles/complex_editing_spec.rb'
- 'spec/system/admin/order_cycles/complex_updating_specific_time_spec.rb'
- 'spec/system/admin/order_cycles/simple_spec.rb'
- 'spec/system/admin/order_spec.rb'
# Offense count: 27
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
Metrics/AbcSize:
Exclude:
- 'app/controllers/admin/enterprises_controller.rb'
@@ -381,7 +502,6 @@ Metrics/AbcSize:
- 'app/controllers/spree/admin/taxons_controller.rb'
- 'app/controllers/spree/admin/variants_controller.rb'
- 'app/controllers/spree/orders_controller.rb'
- 'app/helpers/checkout_helper.rb'
- 'app/helpers/spree/admin/navigation_helper.rb'
- 'app/models/enterprise_group.rb'
- 'app/models/enterprise_relationship.rb'
@@ -398,8 +518,8 @@ Metrics/AbcSize:
- 'lib/tasks/enterprises.rake'
- 'spec/services/order_checkout_restart_spec.rb'
# Offense count: 42
# Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
# Offense count: 41
# Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns.
# AllowedMethods: refine
Metrics/BlockLength:
Exclude:
@@ -423,7 +543,6 @@ Metrics/BlockLength:
- 'spec/factories/user_factory.rb'
- 'spec/factories/variant_factory.rb'
- 'spec/requests/api/orders_spec.rb'
- 'spec/spec_helper.rb'
- 'spec/support/cancan_helper.rb'
- 'spec/support/matchers/select2_matchers.rb'
- 'spec/support/matchers/table_matchers.rb'
@@ -436,12 +555,11 @@ Metrics/BlockNesting:
Exclude:
- 'app/models/spree/payment/processing.rb'
# Offense count: 45
# Offense count: 46
# Configuration parameters: CountComments, Max, CountAsOne.
Metrics/ClassLength:
Exclude:
- 'app/components/products_table_component.rb'
- 'app/controllers/admin/customers_controller.rb'
- 'app/controllers/admin/enterprises_controller.rb'
- 'app/controllers/admin/order_cycles_controller.rb'
- 'app/controllers/admin/resource_controller.rb'
@@ -478,8 +596,8 @@ Metrics/ClassLength:
- 'app/serializers/api/cached_enterprise_serializer.rb'
- 'app/serializers/api/enterprise_shopfront_serializer.rb'
- 'app/services/cart_service.rb'
- 'app/services/order_syncer.rb'
- 'app/services/order_cycle_form.rb'
- 'app/services/order_syncer.rb'
- 'engines/order_management/app/services/order_management/order/updater.rb'
- 'lib/open_food_network/enterprise_fee_calculator.rb'
- 'lib/open_food_network/order_cycle_form_applicator.rb'
@@ -489,7 +607,7 @@ Metrics/ClassLength:
- 'lib/reporting/reports/xero_invoices/base.rb'
# Offense count: 35
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, Max.
# Configuration parameters: AllowedMethods, AllowedPatterns, Max.
Metrics/CyclomaticComplexity:
Exclude:
- 'app/controllers/admin/enterprises_controller.rb'
@@ -522,17 +640,15 @@ Metrics/CyclomaticComplexity:
- 'lib/spree/localized_number.rb'
- 'spec/models/product_importer_spec.rb'
# Offense count: 26
# Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
# Offense count: 24
# Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns.
Metrics/MethodLength:
Exclude:
- 'app/controllers/admin/enterprises_controller.rb'
- 'app/controllers/payment_gateways/paypal_controller.rb'
- 'app/controllers/spree/admin/taxons_controller.rb'
- 'app/controllers/spree/orders_controller.rb'
- 'app/helpers/checkout_helper.rb'
- 'app/helpers/spree/admin/navigation_helper.rb'
- 'app/json_schemas/json_api_schema.rb'
- 'app/models/spree/ability.rb'
- 'app/models/spree/gateway/pay_pal_express.rb'
- 'app/models/spree/order/checkout.rb'
@@ -545,7 +661,7 @@ Metrics/MethodLength:
- 'lib/reporting/reports/xero_invoices/base.rb'
- 'lib/tasks/sample_data/product_factory.rb'
# Offense count: 51
# Offense count: 50
# Configuration parameters: CountComments, Max, CountAsOne.
Metrics/ModuleLength:
Exclude:
@@ -599,7 +715,6 @@ Metrics/ModuleLength:
- 'spec/services/variant_units/option_value_namer_spec.rb'
- 'spec/support/request/shop_workflow.rb'
- 'spec/support/request/stripe_stubs.rb'
- 'spec/support/request/web_helper.rb'
# Offense count: 7
# Configuration parameters: Max, CountKeywordArgs, MaxOptionalParameters.
@@ -611,12 +726,11 @@ Metrics/ParameterLists:
- 'spec/support/controller_requests_helper.rb'
- 'spec/system/admin/reports_spec.rb'
# Offense count: 5
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, Max.
# Offense count: 4
# Configuration parameters: AllowedMethods, AllowedPatterns, Max.
Metrics/PerceivedComplexity:
Exclude:
- 'app/controllers/spree/admin/taxons_controller.rb'
- 'app/helpers/checkout_helper.rb'
- 'app/models/enterprise_relationship.rb'
- 'app/models/spree/ability.rb'
- 'app/models/spree/order/checkout.rb'
@@ -632,9 +746,15 @@ Naming/AccessorMethodName:
- 'spec/support/request/shop_workflow.rb'
- 'spec/support/request/web_helper.rb'
# Offense count: 1
# Configuration parameters: AsciiConstants.
Naming/AsciiIdentifiers:
Exclude:
- 'spec/system/admin/products_spec.rb'
# Offense count: 1
# Configuration parameters: ForbiddenDelimiters.
# ForbiddenDelimiters: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
# ForbiddenDelimiters: (?i-mx:(^|\s)(EO[A-Z]{1}|END)(\s|$))
Naming/HeredocDelimiterNaming:
Exclude:
- 'app/models/content_configuration.rb'
@@ -650,7 +770,7 @@ Naming/MemoizedInstanceVariableName:
# Offense count: 1
# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
# AllowedNames: at, by, db, id, in, io, ip, of, on, os, pp, to
# AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
Naming/MethodParameterName:
Exclude:
- 'app/services/process_payment_intent.rb'
@@ -658,7 +778,7 @@ Naming/MethodParameterName:
# Offense count: 28
# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns.
# SupportedStyles: snake_case, normalcase, non_integer
# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339
# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64
Naming/VariableNumber:
Exclude:
- 'app/controllers/spree/orders_controller.rb'
@@ -672,7 +792,7 @@ Naming/VariableNumber:
- 'spec/requests/api/orders_spec.rb'
# Offense count: 1
# Configuration parameters: Include.
# Configuration parameters: Severity, Include.
# Include: app/models/**/*.rb
Rails/ActiveRecordOverride:
Exclude:
@@ -684,6 +804,12 @@ Rails/ApplicationController:
Exclude:
- 'engines/dfc_provider/app/controllers/dfc_provider/base_controller.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/ApplicationJob:
Exclude:
- 'app/jobs/report_job.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/ApplicationMailer:
@@ -700,29 +826,22 @@ Rails/Blank:
- 'engines/order_management/app/services/order_management/stock/package.rb'
- 'lib/stripe/authorize_response_patcher.rb'
# Offense count: 1
# Configuration parameters: EnforcedStyle, AllowToTime.
# SupportedStyles: strict, flexible
Rails/Date:
Exclude:
- 'spec/system/flatpickr_spec.rb'
# Offense count: 4
# Offense count: 5
# Configuration parameters: EnforcedStyle.
# SupportedStyles: slashes, arguments
Rails/FilePath:
Exclude:
- 'app/models/product_import/product_importer.rb'
- 'lib/tasks/karma.rake'
- 'spec/base_spec_helper.rb'
- 'spec/models/content_configuration_spec.rb'
- 'spec/support/downloads_helper.rb'
# Offense count: 12
# Offense count: 11
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/HasAndBelongsToMany:
Exclude:
- 'app/models/concerns/payment_method_distributors.rb'
- 'app/models/enterprise.rb'
- 'app/models/enterprise_group.rb'
- 'app/models/order_cycle.rb'
@@ -734,7 +853,7 @@ Rails/HasAndBelongsToMany:
- 'app/models/spree/variant.rb'
- 'app/models/spree/zone.rb'
# Offense count: 45
# Offense count: 47
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/HasManyOrHasOneDependent:
@@ -761,7 +880,7 @@ Rails/HasManyOrHasOneDependent:
- 'app/models/spree/user.rb'
- 'app/models/spree/variant.rb'
# Offense count: 62
# Offense count: 59
# Configuration parameters: Include.
# Include: app/helpers/**/*.rb
Rails/HelperInstanceVariable:
@@ -775,7 +894,7 @@ Rails/HelperInstanceVariable:
- 'app/helpers/spree/admin/orders_helper.rb'
- 'app/helpers/spree/orders_helper.rb'
# Offense count: 36
# Offense count: 37
# Configuration parameters: IgnoreScopes, Include.
# Include: app/models/**/*.rb
Rails/InverseOf:
@@ -839,7 +958,6 @@ Rails/OutputSafety:
- 'lib/reporting/queries/query_builder.rb'
- 'lib/reporting/queries/query_interface.rb'
- 'lib/spree/money.rb'
- 'spec/system/admin/order_print_ticket_spec.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
@@ -855,7 +973,7 @@ Rails/SkipsModelValidations:
- 'app/models/variant_override.rb'
- 'spec/models/spree/line_item_spec.rb'
# Offense count: 5
# Offense count: 4
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: strict, flexible
@@ -865,7 +983,6 @@ Rails/TimeZone:
- 'spec/controllers/spree/credit_cards_controller_spec.rb'
- 'spec/models/spree/tax_rate_spec.rb'
- 'spec/services/customer_order_cancellation_spec.rb'
- 'spec/system/admin/order_cycles/list_spec.rb'
# Offense count: 5
# Configuration parameters: Include.
@@ -879,7 +996,7 @@ Rails/UniqueValidationWithoutIndex:
- 'app/models/spree/zone.rb'
# Offense count: 1
# Configuration parameters: Environments.
# Configuration parameters: Severity, Environments.
# Environments: development, test, production
Rails/UnknownEnv:
Exclude:
@@ -898,7 +1015,7 @@ Style/BlockComments:
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowOnConstant.
# Configuration parameters: AllowOnConstant, AllowOnSelfClass.
Style/CaseEquality:
Exclude:
- 'spec/models/spree/payment_spec.rb'
@@ -948,8 +1065,9 @@ Style/ClassVars:
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns, IgnoredMethods.
# Configuration parameters: MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns.
# SupportedStyles: annotated, template, unannotated
# AllowedMethods: redirect
Style/FormatStringToken:
EnforcedStyle: unannotated
@@ -971,7 +1089,8 @@ Style/GlobalStdStream:
- 'lib/tasks/subscriptions/debug.rake'
- 'lib/tasks/subscriptions/test.rake'
# Offense count: 40
# Offense count: 39
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: MinBodyLength, AllowConsecutiveConditionals.
Style/GuardClause:
Exclude:
@@ -981,7 +1100,6 @@ Style/GuardClause:
- 'app/controllers/api/v0/shipments_controller.rb'
- 'app/controllers/application_controller.rb'
- 'app/controllers/home_controller.rb'
- 'app/controllers/spree/admin/shipping_methods_controller.rb'
- 'app/controllers/spree/orders_controller.rb'
- 'app/models/enterprise.rb'
- 'app/models/enterprise_group.rb'
@@ -1005,12 +1123,21 @@ Style/HashLikeCase:
Exclude:
- 'app/models/enterprise.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods.
Style/MethodCallWithoutArgsParentheses:
# Offense count: 11
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: InverseMethods, InverseBlocks.
Style/InverseMethods:
Exclude:
- 'spec/system/flatpickr_spec.rb'
- 'app/controllers/admin/resource_controller.rb'
- 'app/models/calculator/weight.rb'
- 'app/models/product_import/spreadsheet_entry.rb'
- 'app/models/spree/order/checkout.rb'
- 'app/models/spree/order_contents.rb'
- 'app/models/spree/payment.rb'
- 'app/services/order_cart_reset.rb'
- 'engines/order_management/app/services/order_management/stock/estimator.rb'
- 'lib/spree/localized_number.rb'
- 'spec/support/matchers/table_matchers.rb'
# Offense count: 3
Style/MissingRespondToMissing:
@@ -1019,6 +1146,12 @@ Style/MissingRespondToMissing:
- 'app/models/spree/gateway.rb'
- 'app/models/spree/preferences/configuration.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Style/MultilineTernaryOperator:
Exclude:
- 'spec/system/admin/subscriptions_spec.rb'
# Offense count: 22
# This cop supports safe autocorrection (--autocorrect).
Style/NestedModifier:
@@ -1034,14 +1167,21 @@ Style/NestedModifier:
- 'spec/system/admin/payments_stripe_spec.rb'
- 'spec/system/admin/reports_spec.rb'
# Offense count: 17
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowedMethods.
# AllowedMethods: be, be_a, be_an, be_between, be_falsey, be_kind_of, be_instance_of, be_truthy, be_within, eq, eql, end_with, include, match, raise_error, respond_to, start_with
Style/NestedParenthesizedCalls:
Exclude:
- 'spec/system/admin/products_spec.rb'
# Offense count: 16
# Configuration parameters: AllowedMethods.
# AllowedMethods: respond_to_missing?
Style/OptionalBooleanParameter:
Exclude:
- 'app/controllers/admin/subscriptions_controller.rb'
- 'app/mailers/spree/order_mailer.rb'
- 'app/mailers/spree/shipment_mailer.rb'
- 'app/models/concerns/calculated_adjustments.rb'
- 'app/models/enterprise_relationship.rb'
- 'app/models/product_import/entry_processor.rb'
@@ -1052,6 +1192,13 @@ Style/OptionalBooleanParameter:
- 'lib/spree/core/delegate_belongs_to.rb'
- 'spec/support/request/web_helper.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowSafeAssignment, AllowInMultilineConditions.
Style/ParenthesesAroundCondition:
Exclude:
- 'spec/system/support/precompile_assets.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
@@ -1062,12 +1209,11 @@ Style/PreferredHashMethods:
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowMultipleReturnValues.
Style/RedundantReturn:
Style/RedundantRegexpEscape:
Exclude:
- 'app/controllers/spree/admin/shipping_methods_controller.rb'
- 'app/models/spree/order.rb'
# Offense count: 209
# Offense count: 206
Style/Send:
Exclude:
- 'app/controllers/split_checkout_controller.rb'
@@ -1091,7 +1237,6 @@ Style/Send:
- 'spec/models/enterprise_spec.rb'
- 'spec/models/exchange_spec.rb'
- 'spec/models/spree/order_inventory_spec.rb'
- 'spec/models/spree/order_spec.rb'
- 'spec/models/spree/payment_spec.rb'
- 'spec/models/spree/return_authorization_spec.rb'
- 'spec/models/tag_rule/filter_order_cycles_spec.rb'

View File

@@ -28,14 +28,18 @@ RUN apt-get update && apt-get install -y \
gnupg
# Setup ENV variables
ENV PATH /usr/local/src/rbenv/shims:/usr/local/src/rbenv/bin:$PATH
ENV PATH /usr/local/src/rbenv/shims:/usr/local/src/rbenv/bin:/usr/local/src/nodenv/shims:/usr/local/src/nodenv/bin:$PATH
ENV RBENV_ROOT /usr/local/src/rbenv
ENV NODENV_ROOT /usr/local/src/nodenv
ENV CONFIGURE_OPTS --disable-install-doc
ENV BUNDLE_PATH /bundles
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so
WORKDIR /usr/src/app
COPY .ruby-version .
# trim spaces and line return from .ruby-version file
COPY .ruby-version .ruby-version.raw
RUN cat .ruby-version.raw | tr -d '\r\t ' > .ruby-version
# Install Rbenv & Ruby
RUN git clone --depth 1 https://github.com/rbenv/rbenv.git ${RBENV_ROOT} && \
@@ -50,10 +54,19 @@ RUN sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-
apt-get update && \
apt-get install -yqq --no-install-recommends postgresql-client-10 libpq-dev
# Install NodeJs and yarn
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - \
&& apt-get install --no-install-recommends -y nodejs \
&& npm install -g yarn
# trim spaces and line return from .node-version file
COPY .node-version .node-version.raw
RUN cat .node-version.raw | tr -d '\r\t ' > .node-version
# Install Node and Yarn with Nodenv
RUN git clone --depth 1 https://github.com/nodenv/nodenv.git ${NODENV_ROOT} && \
git clone --depth 1 https://github.com/nodenv/node-build.git ${NODENV_ROOT}/plugins/node-build && \
git clone --depth 1 https://github.com/pine/nodenv-yarn-install.git ${NODENV_ROOT}/plugins/nodenv-yarn-install && \
git clone --depth 1 https://github.com/nodenv/nodenv-package-rehash.git ${NODENV_ROOT}/plugins/nodenv-package-rehash && \
echo 'eval "$(nodenv init -)"' >> /etc/profile.d/nodenv.sh && \
nodenv install $(cat .node-version) && \
nodenv global $(cat .node-version)
# Install Chrome
RUN wget --quiet -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \

View File

@@ -11,6 +11,9 @@ Head to our wiki on [Learning Rails](https://github.com/openfoodfoundation/openf
The fastest way to make it work locally is to use Docker, you only need to setup git, see the [Docker setup guide](docker/README.md).
Otherwise, for a local setup you will need:
* Ruby and bundler (check current Ruby version in [.ruby-version](https://github.com/openfoodfoundation/openfoodnetwork/blob/master/.ruby-version) file)
- To manage versions, it's recommended to use [rbenv](https://github.com/rbenv/rbenv) or [RVM](https://rvm.io/)
* Node and yarn (check current Node version in [.node-version](https://github.com/openfoodfoundation/openfoodnetwork/blob/master/.node-version) file)
- [nodevn](https://github.com/nodenv/nodenv) is recommended.
* PostgreSQL database
* Redis (for background jobs)
* Chrome (for testing)
@@ -20,8 +23,6 @@ The following guides will provide OS-specific step-by-step instructions to get t
- [Debian Setup Guide][debian]
- [OSX Setup Guide][osx]
If you are likely to need to manage multiple version of ruby on your local machine, we recommend version managers such as [rbenv](https://github.com/rbenv/rbenv) or [RVM](https://rvm.io/).
For those new to Rails, the following tutorial will help get you up to speed with configuring a [Rails environment](http://guides.rubyonrails.org/getting_started.html).
### Get it
@@ -47,14 +48,14 @@ Fetch the latest version of `master` from `upstream` (ie. the main repo):
First, you need to create the database user the app will use by manually typing the following in your terminal:
```sh
$ sudo -u postgres psql -c "CREATE USER ofn WITH SUPERUSER CREATEDB PASSWORD 'f00d'"
sudo --login --user=postgres psql -c "CREATE USER ofn WITH SUPERUSER CREATEDB PASSWORD 'f00d'"
```
This will create the "ofn" user as superuser and allowing it to create databases. If this command fails, check the [troubleshooting section](#creating-the-database) for an alternative.
Next, it is _strongly recommended_ to run the setup script.
```sh
$ script/setup
./script/setup
```
If the script succeeds you're ready to start developing. If not, take a look at the output as it should be informative enough to help you troubleshoot.
@@ -113,13 +114,13 @@ Below are fixes to potential issues that can happen during the installation proc
#### Creating the database
If the ```$ sudo -u postgres psql -c "CREATE USER ofn WITH SUPERUSER CREATEDB PASSWORD 'f00d'"``` command doesn't work, you can run the following commands instead:
If the `sudo -u postgres psql -c "CREATE USER ofn WITH SUPERUSER CREATEDB PASSWORD 'f00d'"` command doesn't work, you can run the following commands instead:
```
$ createuser --superuser --pwprompt ofn
Enter password for new role: f00d
Enter it again: f00d
$ createdb open_food_network_dev --owner=ofn
$ createdb open_food_network_test --owner=ofn
createuser --superuser --pwprompt ofn
# Enter password for new role: f00d
# Enter it again: f00d
createdb open_food_network_dev --owner=ofn
createdb open_food_network_test --owner=ofn
```
If these commands succeed, you should be able to [continue the setup process](#get-it-running).

27
Gemfile
View File

@@ -6,7 +6,7 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}.git" }
gem 'dotenv-rails', require: 'dotenv/rails-now' # Load ENV vars before other gems
gem 'rails', '>= 6.1.4'
gem 'rails'
# Active Storage
gem "active_storage_validations"
@@ -17,7 +17,7 @@ gem 'activemerchant', '>= 1.78.0'
gem 'rexml'
gem 'angular-rails-templates', '>= 0.3.0'
gem 'awesome_nested_set'
gem 'ransack', '2.4.2'
gem 'ransack', '~> 2.6.0'
gem 'responders'
gem 'webpacker', '~> 5'
@@ -27,7 +27,7 @@ gem 'rails-i18n'
gem 'rails_safe_tasks', '~> 1.0'
gem "activerecord-import"
gem "db2fog", github: "openfoodfoundation/db2fog", branch: "rails-6"
gem "db2fog", github: "openfoodfoundation/db2fog", branch: "rails-7"
gem "fog-aws", "~> 2.0" # db2fog does not support v3
gem "mime-types" # required by fog
@@ -69,7 +69,7 @@ gem 'pagy', '~> 5.1'
gem 'rswag-api'
gem 'rswag-ui'
gem 'gitlab-omniauth-openid-connect', require: 'omniauth_openid_connect'
gem 'omniauth_openid_connect'
gem 'openid_connect', '~> 1.3'
gem 'omniauth-rails_csrf_protection'
@@ -83,16 +83,15 @@ gem 'actionpack-action_caching'
# AMS is deprecated, we will introduce an alternative at some point
gem "active_model_serializers", "0.8.4"
gem 'activerecord-session_store'
gem 'acts-as-taggable-on', '~> 8.1'
gem 'acts-as-taggable-on'
gem 'angularjs-file-upload-rails', '~> 2.4.1'
gem 'bigdecimal', '3.0.2'
gem 'bootsnap', require: false
gem 'geocoder'
gem 'gmaps4rails'
gem 'mimemagic', '> 0.3.5'
gem 'paper_trail', '~> 12.1.0'
gem 'paper_trail', '~> 12.1'
gem 'rack-rewrite'
gem 'rack-ssl', require: 'rack/ssl'
gem 'roadie-rails'
gem 'hiredis'
@@ -101,16 +100,16 @@ gem 'redis', '>= 4.0', require: ['redis', 'redis/connection/hiredis']
gem 'sidekiq'
gem 'sidekiq-scheduler'
gem "cable_ready", "5.0.0.pre9"
gem "stimulus_reflex", "3.5.0.pre9"
gem "cable_ready", "5.0.0.rc2"
gem "stimulus_reflex", "3.5.0.rc2"
gem 'combine_pdf'
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
gem 'immigrant'
gem 'roo'
gem 'spreadsheet_architect'
gem 'roo' # read spreadsheets
gem 'spreadsheet_architect' # write spreadsheets
gem 'whenever', require: false
@@ -126,8 +125,6 @@ gem 'jquery-rails', '4.4.0'
gem 'jquery-ui-rails', '~> 4.2'
gem "select2-rails", github: "openfoodfoundation/select2-rails", branch: "v349_with_thor_v1"
gem 'ofn-qz', github: 'openfoodfoundation/ofn-qz', branch: 'ofn-rails-4'
gem 'good_migrations'
gem 'flipper'
@@ -139,6 +136,9 @@ gem 'view_component_reflex', '3.1.14.pre9'
gem 'mini_portile2', '~> 2.8'
gem "faraday"
gem "private_address_check"
group :production, :staging do
gem 'ddtrace'
gem 'rack-timeout'
@@ -185,6 +185,5 @@ group :development do
gem 'spring-commands-rspec'
gem 'web-console'
gem 'rack-mini-profiler', '< 3.0.0'
end

View File

@@ -1,19 +1,12 @@
GIT
remote: https://github.com/openfoodfoundation/db2fog.git
revision: 5b63343847452f52aa42f7fc169d6ab3af57cda3
branch: rails-6
revision: 6e88c0ab9eeb23d7ad9964b27becb1c04a83141f
branch: rails-7
specs:
db2fog (0.9.2)
activerecord (>= 3.2.0, < 7.0)
activerecord (>= 3.2.0)
fog-core (~> 1.0)
rails (>= 3.2.0, < 7.0)
GIT
remote: https://github.com/openfoodfoundation/ofn-qz.git
revision: 467f6ea1c44529c7c91cac4c8211bbd863588c0b
branch: ofn-rails-4
specs:
ofn-qz (0.1.0)
rails (>= 3.2.0)
GIT
remote: https://github.com/openfoodfoundation/select2-rails.git
@@ -51,42 +44,49 @@ GEM
remote: https://rubygems.org/
specs:
Ascii85 (1.1.0)
actioncable (6.1.7)
actionpack (= 6.1.7)
activesupport (= 6.1.7)
actioncable (7.0.4.3)
actionpack (= 7.0.4.3)
activesupport (= 7.0.4.3)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.1.7)
actionpack (= 6.1.7)
activejob (= 6.1.7)
activerecord (= 6.1.7)
activestorage (= 6.1.7)
activesupport (= 6.1.7)
actionmailbox (7.0.4.3)
actionpack (= 7.0.4.3)
activejob (= 7.0.4.3)
activerecord (= 7.0.4.3)
activestorage (= 7.0.4.3)
activesupport (= 7.0.4.3)
mail (>= 2.7.1)
actionmailer (6.1.7)
actionpack (= 6.1.7)
actionview (= 6.1.7)
activejob (= 6.1.7)
activesupport (= 6.1.7)
net-imap
net-pop
net-smtp
actionmailer (7.0.4.3)
actionpack (= 7.0.4.3)
actionview (= 7.0.4.3)
activejob (= 7.0.4.3)
activesupport (= 7.0.4.3)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
actionpack (6.1.7)
actionview (= 6.1.7)
activesupport (= 6.1.7)
rack (~> 2.0, >= 2.0.9)
actionpack (7.0.4.3)
actionview (= 7.0.4.3)
activesupport (= 7.0.4.3)
rack (~> 2.0, >= 2.2.0)
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 (6.1.7)
actionpack (= 6.1.7)
activerecord (= 6.1.7)
activestorage (= 6.1.7)
activesupport (= 6.1.7)
actiontext (7.0.4.3)
actionpack (= 7.0.4.3)
activerecord (= 7.0.4.3)
activestorage (= 7.0.4.3)
activesupport (= 7.0.4.3)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (6.1.7)
activesupport (= 6.1.7)
actionview (7.0.4.3)
activesupport (= 7.0.4.3)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@@ -98,19 +98,19 @@ GEM
activemodel (>= 5.2.0)
activestorage (>= 5.2.0)
activesupport (>= 5.2.0)
activejob (6.1.7)
activesupport (= 6.1.7)
activejob (7.0.4.3)
activesupport (= 7.0.4.3)
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 (6.1.7)
activesupport (= 6.1.7)
activerecord (6.1.7)
activemodel (= 6.1.7)
activesupport (= 6.1.7)
activemodel (7.0.4.3)
activesupport (= 7.0.4.3)
activerecord (7.0.4.3)
activemodel (= 7.0.4.3)
activesupport (= 7.0.4.3)
activerecord-import (1.4.1)
activerecord (>= 4.2)
activerecord-postgresql-adapter (0.0.1)
@@ -121,24 +121,23 @@ GEM
multi_json (~> 1.11, >= 1.11.2)
rack (>= 2.0.8, < 3)
railties (>= 5.2.4.1)
activestorage (6.1.7)
actionpack (= 6.1.7)
activejob (= 6.1.7)
activerecord (= 6.1.7)
activesupport (= 6.1.7)
activestorage (7.0.4.3)
actionpack (= 7.0.4.3)
activejob (= 7.0.4.3)
activerecord (= 7.0.4.3)
activesupport (= 7.0.4.3)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (6.1.7)
activesupport (7.0.4.3)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
acts-as-taggable-on (8.1.0)
activerecord (>= 5.0, < 6.2)
acts-as-taggable-on (9.0.1)
activerecord (>= 6.0, < 7.1)
acts_as_list (1.0.4)
activerecord (>= 4.2)
addressable (2.8.1)
addressable (2.8.2)
public_suffix (>= 2.0.2, < 6.0)
aes_key_wrap (1.1.0)
afm (0.2.2)
@@ -158,16 +157,16 @@ GEM
awesome_nested_set (3.5.0)
activerecord (>= 4.0.0, < 7.1)
aws-eventstream (1.2.0)
aws-partitions (1.695.0)
aws-sdk-core (3.169.0)
aws-partitions (1.739.0)
aws-sdk-core (3.171.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.62.0)
aws-sdk-kms (1.63.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.118.0)
aws-sdk-s3 (1.120.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
@@ -175,26 +174,24 @@ GEM
aws-eventstream (~> 1, >= 1.0.2)
bcrypt (3.1.18)
bigdecimal (3.0.2)
bindata (2.4.12)
bindata (2.4.15)
bindex (0.8.1)
bootsnap (1.16.0)
msgpack (~> 1.2)
bugsnag (6.25.1)
bugsnag (6.25.2)
concurrent-ruby (~> 1.0)
builder (3.2.4)
bullet (7.0.7)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
cable_ready (5.0.0.pre9)
actioncable (>= 5.2)
cable_ready (5.0.0.rc2)
actionpack (>= 5.2)
actionview (>= 5.2)
activerecord (>= 5.2)
activesupport (>= 5.2)
railties (>= 5.2)
thread-local (>= 1.1.0)
cancancan (1.15.0)
capybara (3.38.0)
capybara (3.39.0)
addressable
matrix
mini_mime (>= 0.1.3)
@@ -218,10 +215,10 @@ GEM
coffee-script-source
execjs
coffee-script-source (1.12.2)
combine_pdf (1.0.22)
combine_pdf (1.0.23)
matrix
ruby-rc4 (>= 0.1.5)
concurrent-ruby (1.2.0)
concurrent-ruby (1.2.2)
connection_pool (2.3.0)
crack (0.4.5)
rexml
@@ -231,23 +228,24 @@ GEM
cuprite (0.14.3)
capybara (~> 3.0)
ferrum (~> 0.13.0)
database_cleaner (2.0.1)
database_cleaner-active_record (~> 2.0.0)
database_cleaner-active_record (2.0.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)
ddtrace (1.8.0)
debase-ruby_core_source (>= 0.10.16, <= 0.10.18)
libdatadog (~> 0.9.0.1.0)
libddwaf (~> 1.5.1.0.0)
date (3.3.3)
ddtrace (1.10.1)
debase-ruby_core_source (>= 0.10.16, <= 3.2.0)
libdatadog (~> 2.0.0.1.0)
libddwaf (~> 1.6.2.0.0)
msgpack
debase-ruby_core_source (0.10.18)
debug (1.7.1)
debase-ruby_core_source (3.2.0)
debug (1.7.2)
irb (>= 1.5.0)
reline (>= 0.3.1)
debugger-linecache (1.2.0)
devise (4.8.1)
devise (4.9.2)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
@@ -255,8 +253,8 @@ GEM
warden (~> 1.2.3)
devise-encryptable (0.2.0)
devise (>= 2.1.0)
devise-i18n (1.10.2)
devise (>= 4.8.0)
devise-i18n (1.11.0)
devise (>= 4.9.0)
devise-token_authenticatable (1.1.0)
devise (>= 4.0.0, < 5.0.0)
diff-lcs (1.5.0)
@@ -266,7 +264,7 @@ GEM
dotenv-rails (2.8.1)
dotenv (= 2.8.1)
railties (>= 3.2)
erubi (1.11.0)
erubi (1.12.0)
et-orbi (1.2.7)
tzinfo
excon (0.81.0)
@@ -276,12 +274,12 @@ GEM
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
railties (>= 5.0.0)
faraday (2.6.0)
faraday (2.7.4)
faraday-net_http (>= 2.0, < 3.1)
ruby2_keywords (>= 0.0.4)
faraday-follow_redirects (0.3.0)
faraday (>= 1, < 3)
faraday-net_http (3.0.1)
faraday-net_http (3.0.2)
ferrum (0.13)
addressable (~> 2.5)
concurrent-ruby (~> 1.1)
@@ -289,15 +287,17 @@ GEM
websocket-driver (>= 0.6, < 0.8)
ffaker (2.21.0)
ffi (1.15.5)
flipper (0.20.4)
flipper-active_record (0.20.4)
activerecord (>= 5.0, < 7)
flipper (~> 0.20.4)
flipper-ui (0.20.4)
flipper (0.26.2)
concurrent-ruby (< 2)
flipper-active_record (0.26.2)
activerecord (>= 4.2, < 8)
flipper (~> 0.26.2)
flipper-ui (0.26.2)
erubi (>= 1.0.0, < 2.0.0)
flipper (~> 0.20.4)
flipper (~> 0.26.2)
rack (>= 1.4, < 3)
rack-protection (>= 1.5.3, < 2.2.0)
rack-protection (>= 1.5.3, <= 4.0.0)
sanitize (< 7)
fog-aws (2.0.1)
fog-core (~> 1.38)
fog-json (~> 1.0)
@@ -322,11 +322,7 @@ GEM
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
geocoder (1.8.1)
gitlab-omniauth-openid-connect (0.10.0)
addressable (~> 2.7)
omniauth (>= 1.9, < 3)
openid_connect (~> 1.2)
globalid (1.0.1)
globalid (1.1.0)
activesupport (>= 5.0)
gmaps4rails (2.1.2)
good_migrations (0.2.1)
@@ -353,7 +349,7 @@ GEM
activerecord (>= 3.0)
io-console (0.6.0)
ipaddress (0.8.3)
irb (1.6.2)
irb (1.6.3)
reline (>= 0.3.0)
jmespath (1.6.2)
jquery-rails (4.4.0)
@@ -363,7 +359,7 @@ GEM
jquery-ui-rails (4.2.1)
railties (>= 3.2.16)
json (2.6.3)
json-jwt (1.16.0)
json-jwt (1.16.3)
activesupport (>= 4.2)
aes_key_wrap
bindata
@@ -376,25 +372,28 @@ GEM
rspec (>= 2.0, < 4.0)
jsonapi-serializer (2.2.0)
activesupport (>= 4.2)
jwt (2.6.0)
knapsack_pro (3.7.0)
jwt (2.7.0)
knapsack_pro (3.9.0)
rake
launchy (2.5.0)
addressable (~> 2.7)
letter_opener (1.8.1)
launchy (>= 2.2, < 3)
libdatadog (0.9.0.1.0)
libddwaf (1.5.1.0.0)
libdatadog (2.0.0.1.0)
libddwaf (1.6.2.0.0)
ffi (~> 1.0)
libv8-node (16.10.0.0)
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
loofah (2.19.1)
loofah (2.20.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
net-pop
net-smtp
marcel (1.0.2)
matrix (0.4.2)
method_source (1.0.0)
@@ -409,20 +408,25 @@ GEM
mini_portile2 (2.8.1)
mini_racer (0.6.3)
libv8-node (~> 16.10.0.0)
minitest (5.17.0)
minitest (5.18.0)
monetize (1.12.0)
money (~> 6.12)
money (6.16.0)
i18n (>= 0.6.4, <= 2)
msgpack (1.6.0)
msgpack (1.6.1)
multi_json (1.15.0)
multi_xml (0.6.0)
net-protocol (0.1.3)
net-imap (0.3.4)
date
net-protocol
net-pop (0.1.2)
net-protocol
net-protocol (0.2.1)
timeout
net-smtp (0.3.2)
net-smtp (0.3.3)
net-protocol
nio4r (2.5.8)
nokogiri (1.13.10)
nokogiri (1.14.2)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
oauth2 (1.4.11)
@@ -431,13 +435,16 @@ GEM
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 4)
omniauth (2.1.0)
omniauth (2.1.1)
hashie (>= 3.4.6)
rack (>= 2.2.3)
rack-protection
omniauth-rails_csrf_protection (1.0.1)
actionpack (>= 4.2)
omniauth (~> 2.0)
omniauth_openid_connect (0.6.1)
omniauth (>= 1.9, < 3)
openid_connect (~> 1.1)
openid_connect (1.4.2)
activemodel
attr_required (>= 1.0.0)
@@ -452,13 +459,13 @@ GEM
orm_adapter (0.5.0)
pagy (5.10.1)
activesupport
paper_trail (12.1.0)
paper_trail (12.3.0)
activerecord (>= 5.2)
request_store (~> 1.1)
parallel (1.22.1)
paranoia (2.6.1)
activerecord (>= 5.1, < 7.1)
parser (3.2.0.0)
parser (3.2.2.0)
ast (~> 2.4.1)
paypal-sdk-core (0.3.4)
multi_json (~> 1.0)
@@ -473,15 +480,16 @@ GEM
ttfunk
pg (1.2.3)
power_assert (2.0.2)
private_address_check (0.5.0)
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
public_suffix (5.0.0)
puma (6.0.2)
public_suffix (5.0.1)
puma (6.2.1)
nio4r (~> 2.0)
raabro (1.4.0)
racc (1.6.1)
rack (2.2.6.2)
racc (1.6.2)
rack (2.2.6.4)
rack-mini-profiler (2.3.4)
rack (>= 1.2.0)
rack-oauth2 (1.21.3)
@@ -490,31 +498,28 @@ GEM
httpclient
json-jwt (>= 1.11.0)
rack (>= 2.1.0)
rack-protection (2.1.0)
rack-protection (3.0.5)
rack
rack-proxy (0.7.0)
rack-proxy (0.7.6)
rack
rack-rewrite (1.5.1)
rack-ssl (1.4.1)
rack
rack-test (2.0.2)
rack-test (2.1.0)
rack (>= 1.3)
rack-timeout (0.6.3)
rails (6.1.7)
actioncable (= 6.1.7)
actionmailbox (= 6.1.7)
actionmailer (= 6.1.7)
actionpack (= 6.1.7)
actiontext (= 6.1.7)
actionview (= 6.1.7)
activejob (= 6.1.7)
activemodel (= 6.1.7)
activerecord (= 6.1.7)
activestorage (= 6.1.7)
activesupport (= 6.1.7)
rails (7.0.4.3)
actioncable (= 7.0.4.3)
actionmailbox (= 7.0.4.3)
actionmailer (= 7.0.4.3)
actionpack (= 7.0.4.3)
actiontext (= 7.0.4.3)
actionview (= 7.0.4.3)
activejob (= 7.0.4.3)
activemodel (= 7.0.4.3)
activerecord (= 7.0.4.3)
activestorage (= 7.0.4.3)
activesupport (= 7.0.4.3)
bundler (>= 1.15.0)
railties (= 6.1.7)
sprockets-rails (>= 2.0.0)
railties (= 7.0.4.3)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@@ -527,37 +532,40 @@ GEM
activesupport (>= 4.2)
choice (~> 0.2.0)
ruby-graphviz (~> 1.2)
rails-html-sanitizer (1.4.4)
rails-html-sanitizer (1.5.0)
loofah (~> 2.19, >= 2.19.1)
rails-i18n (7.0.6)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
rails_safe_tasks (1.0.0)
railties (6.1.7)
actionpack (= 6.1.7)
activesupport (= 6.1.7)
railties (7.0.4.3)
actionpack (= 7.0.4.3)
activesupport (= 7.0.4.3)
method_source
rake (>= 12.2)
thor (~> 1.0)
zeitwerk (~> 2.5)
rainbow (3.1.1)
rake (13.0.6)
ransack (2.4.2)
activerecord (>= 5.2.4)
activesupport (>= 5.2.4)
ransack (2.6.0)
activerecord (>= 6.0.4)
activesupport (>= 6.0.4)
i18n
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
redcarpet (3.5.1)
redis (4.8.0)
regexp_parser (2.6.2)
reline (0.3.2)
redcarpet (3.6.0)
redis (4.8.1)
redis-client (0.14.0)
connection_pool
regexp_parser (2.7.0)
reline (0.3.3)
io-console (~> 0.5)
request_store (1.5.0)
request_store (1.5.1)
rack (>= 1.4)
responders (3.0.1)
actionpack (>= 5.0)
railties (>= 5.0)
responders (3.1.0)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.5)
roadie (5.0.1)
css_parser (~> 1.4)
@@ -568,32 +576,32 @@ GEM
rodf (1.2.0)
builder (>= 3.0)
rubyzip (>= 1.0)
roo (2.9.0)
roo (2.10.0)
nokogiri (~> 1)
rubyzip (>= 1.3.0, < 3.0.0)
rspec (3.10.0)
rspec-core (~> 3.10.0)
rspec-expectations (~> 3.10.0)
rspec-mocks (~> 3.10.0)
rspec-core (3.10.2)
rspec-support (~> 3.10.0)
rspec-expectations (3.10.2)
rspec (3.12.0)
rspec-core (~> 3.12.0)
rspec-expectations (~> 3.12.0)
rspec-mocks (~> 3.12.0)
rspec-core (3.12.1)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.2)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-rails (5.1.2)
actionpack (>= 5.2)
activesupport (>= 5.2)
railties (>= 5.2)
rspec-core (~> 3.10)
rspec-expectations (~> 3.10)
rspec-mocks (~> 3.10)
rspec-support (~> 3.10)
rspec-support (~> 3.12.0)
rspec-rails (6.0.1)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
rspec-core (~> 3.11)
rspec-expectations (~> 3.11)
rspec-mocks (~> 3.11)
rspec-support (~> 3.11)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.10.3)
rspec-support (3.12.0)
rswag-api (2.8.0)
railties (>= 3.1, < 7.1)
rswag-specs (2.8.0)
@@ -604,25 +612,25 @@ GEM
rswag-ui (2.8.0)
actionpack (>= 3.1, < 7.1)
railties (>= 3.1, < 7.1)
rubocop (1.44.1)
rubocop (1.49.0)
json (~> 2.3)
parallel (~> 1.10)
parser (>= 3.2.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.24.1, < 2.0)
rubocop-ast (>= 1.28.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.24.1)
parser (>= 3.1.1.0)
rubocop-rails (2.17.4)
rubocop-ast (1.28.0)
parser (>= 3.2.1.0)
rubocop-rails (2.18.0)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
ruby-graphviz (1.2.5)
rexml
ruby-progressbar (1.11.0)
ruby-progressbar (1.13.0)
ruby-rc4 (0.1.5)
ruby-vips (2.1.4)
ffi (~> 1.12)
@@ -630,6 +638,9 @@ GEM
rubyzip (2.3.2)
rufus-scheduler (3.8.2)
fugit (~> 1.1, >= 1.1.6)
sanitize (6.0.1)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
sass (3.4.25)
sass-rails (5.0.8)
railties (>= 5.2.0)
@@ -641,13 +652,14 @@ GEM
semantic_range (3.0.0)
shoulda-matchers (5.3.0)
activesupport (>= 5.2.0)
sidekiq (6.5.8)
connection_pool (>= 2.2.5, < 3)
rack (~> 2.0)
redis (>= 4.5.0, < 5)
sidekiq-scheduler (5.0.0)
sidekiq (7.0.7)
concurrent-ruby (< 2)
connection_pool (>= 2.3.0)
rack (>= 2.2.4)
redis-client (>= 0.11.0)
sidekiq-scheduler (5.0.2)
rufus-scheduler (~> 3.2)
sidekiq (>= 4, < 8)
sidekiq (>= 6, < 8)
tilt (>= 1.4.0)
simplecov (0.22.0)
docile (~> 1.1)
@@ -675,18 +687,18 @@ GEM
state_machines-activerecord (0.8.0)
activerecord (>= 5.1)
state_machines-activemodel (>= 0.8.0)
stimulus_reflex (3.5.0.pre9)
actioncable (>= 5.2)
actionpack (>= 5.2)
actionview (>= 5.2)
activesupport (>= 5.2)
cable_ready (>= 5.0.0.pre9)
nokogiri
rack
railties (>= 5.2)
redis
stimulus_reflex (3.5.0.rc2)
actioncable (>= 5.2, < 8)
actionpack (>= 5.2, < 8)
actionview (>= 5.2, < 8)
activesupport (>= 5.2, < 8)
cable_ready (>= 5.0.0.rc2)
nokogiri (~> 1.0)
rack (>= 2, < 4)
railties (>= 5.2, < 8)
redis (>= 4.0, < 6.0)
stringex (2.8.5)
stripe (8.0.0)
stripe (8.3.0)
swd (1.3.0)
activesupport (>= 3)
attr_required (>= 0.0.5)
@@ -696,15 +708,15 @@ GEM
power_assert
thor (1.2.1)
thread-local (1.1.0)
tilt (2.0.11)
tilt (2.1.0)
timecop (0.9.6)
timeout (0.3.0)
timeout (0.3.2)
ttfunk (1.7.0)
tzinfo (2.0.5)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (2.4.2)
uniform_notifier (1.16.0)
valid_email2 (4.0.4)
valid_email2 (4.0.6)
activemodel (>= 3.2)
mail (~> 2.5)
validate_email (0.1.6)
@@ -736,7 +748,7 @@ GEM
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webpacker (5.4.3)
webpacker (5.4.4)
activesupport (>= 5.2)
rack-proxy (>= 0.6.1)
railties (>= 5.2)
@@ -753,7 +765,7 @@ GEM
xml-simple (1.1.8)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.6)
zeitwerk (2.6.7)
PLATFORMS
ruby
@@ -766,7 +778,7 @@ DEPENDENCIES
activerecord-import
activerecord-postgresql-adapter
activerecord-session_store
acts-as-taggable-on (~> 8.1)
acts-as-taggable-on
acts_as_list (= 1.0.4)
angular-rails-templates (>= 0.3.0)
angular_rails_csrf
@@ -779,7 +791,7 @@ DEPENDENCIES
bootsnap
bugsnag
bullet
cable_ready (= 5.0.0.pre9)
cable_ready (= 5.0.0.rc2)
cancancan (~> 1.15.0)
capybara
catalog!
@@ -799,6 +811,7 @@ DEPENDENCIES
digest
dotenv-rails
factory_bot_rails (= 6.2.0)
faraday
ffaker
flipper
flipper-active_record
@@ -807,7 +820,6 @@ DEPENDENCIES
foreman
fuubar (~> 2.5.1)
geocoder
gitlab-omniauth-openid-connect
gmaps4rails
good_migrations
haml
@@ -832,28 +844,28 @@ DEPENDENCIES
mini_racer
monetize (~> 1.11)
oauth2 (~> 1.4.7)
ofn-qz!
omniauth-rails_csrf_protection
omniauth_openid_connect
openid_connect (~> 1.3)
order_management!
pagy (~> 5.1)
paper_trail (~> 12.1.0)
paper_trail (~> 12.1)
paranoia (~> 2.4)
paypal-sdk-merchant (= 1.117.2)
pdf-reader
pg (~> 1.2.3)
private_address_check
pry (~> 0.13.0)
puma
rack-mini-profiler (< 3.0.0)
rack-rewrite
rack-ssl
rack-timeout
rails (>= 6.1.4)
rails
rails-controller-testing
rails-erd
rails-i18n
rails_safe_tasks (~> 1.0)
ransack (= 2.4.2)
ransack (~> 2.6.0)
redcarpet
redis (>= 4.0)
responders
@@ -877,7 +889,7 @@ DEPENDENCIES
spring
spring-commands-rspec
state_machines-activerecord
stimulus_reflex (= 3.5.0.pre9)
stimulus_reflex (= 3.5.0.rc2)
stringex (~> 2.8.5)
stripe
test-unit (~> 3.5)

View File

@@ -33,7 +33,7 @@ We also have a [Super Admin Guide][super-admin-guide] to help with configuration
## Testing
If you'd like to help out with testing, please introduce yourself on the #testing channel on [Slack][slack-invite] and download the [ZenHub browser extension][zenhub] to view the development pipeline. Also, do have a look in our [Welcome New QAs board](https://github.com/orgs/openfoodfoundation/projects/1) for some good first issues, both on manual and automated testing (RSpec/Capybara).
If you'd like to help out with testing, please introduce yourself on the #testing channel on [Slack][slack-invite] and download the [ZenHub browser extension][zenhub] to view the development pipeline. Also, do have a look in our [Welcome New QAs board][welcome-qa] for some good first issues, both on manual and automated testing (RSpec/Capybara).
We use [BrowserStack](https://www.browserstack.com/) as a manual testing tool. BrowserStack provides open source projects with unlimited and free of charge accounts. A big thanks to them!
@@ -52,5 +52,6 @@ Copyright (c) 2012 - 2022 Open Food Foundation, released under the AGPL licence.
[ofn-handbook]: https://ofn-user-guide.gitbook.io/ofn-handbook/
[ofn-install]: https://github.com/openfoodfoundation/ofn-install
[super-admin-guide]: https://ofn-user-guide.gitbook.io/ofn-super-admin-guide
[welcome-dev]: https://github.com/orgs/openfoodfoundation/projects/2
[welcome-dev]: https://github.com/orgs/openfoodfoundation/projects/5
[welcome-qa]: https://github.com/orgs/openfoodfoundation/projects/6
[zenhub]: https://www.zenhub.com/extension

View File

@@ -55,28 +55,12 @@ angular.module("admin.enterprises")
else
alert ("#{manager.email}" + " " + t("is_already_manager"))
$scope.inviteManager = ->
$scope.invite_errors = $scope.invite_success = null
email = $scope.newUser
$http.post("/admin/manager_invitations", {email: email, enterprise_id: $scope.Enterprise.id}).then (response)->
$scope.addManager({id: response.data.user, email: email})
$scope.invite_success = t('user_invited', email: email)
.catch (response) ->
$scope.invite_errors = response.data.errors
$scope.resetModal = ->
$scope.newUser = $scope.invite_errors = $scope.invite_success = null
$scope.removeLogo = ->
$scope.performEnterpriseAction("removeLogo", "immediate_logo_removal_warning", "removed_logo_successfully")
$scope.removePromoImage = ->
$scope.performEnterpriseAction("removePromoImage", "immediate_promo_image_removal_warning", "removed_promo_image_successfully")
$scope.removeTermsAndConditions = ->
$scope.performEnterpriseAction("removeTermsAndConditions", "immediate_terms_and_conditions_removal_warning", "removed_terms_and_conditions_successfully")
$scope.performEnterpriseAction = (enterpriseActionName, warning_message_key, success_message_key) ->
return unless confirm($scope.translation(warning_message_key))

View File

@@ -1,32 +0,0 @@
angular.module("admin.enterprises").directive 'termsAndConditionsWarning', ($rootScope, $compile, $templateCache, DialogDefaults, $timeout) ->
restrict: 'A'
scope: true
link: (scope, element, attr) ->
# This file input click handler will hold the browser file input dialog and show a warning modal
scope.hold_file_input_and_show_warning_modal = (event) ->
event.preventDefault()
scope.template = $compile($templateCache.get('admin/modals/terms_and_conditions_warning.html'))(scope)
if scope.template.dialog
scope.template.dialog(DialogDefaults)
scope.template.dialog('open')
$rootScope.$evalAsync()
element.bind 'click', scope.hold_file_input_and_show_warning_modal
# When the user presses continue in the warning modal, we open the browser file input dialog
scope.continue = ->
scope.template.dialog('close')
$rootScope.$evalAsync()
# unbind warning modal handler and click file input again to open the browser file input dialog
element.unbind('click').trigger('click')
# afterwards, bind warning modal handler again so that the warning is shown the next time
$timeout ->
element.bind 'click', scope.hold_file_input_and_show_warning_modal
return
scope.close = ->
scope.template.dialog('close')
$rootScope.$evalAsync()
return

View File

@@ -9,7 +9,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.sharedResource = false
$scope.columns = Columns.columns
$scope.sorting = SortOptions
$scope.pagination = Orders.pagination
$scope.pagination = LineItems.pagination
$scope.per_page_options = [
{id: 15, name: t('js.admin.orders.index.per_page', results: 15)},
{id: 50, name: t('js.admin.orders.index.per_page', results: 50)},
@@ -17,7 +17,14 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
]
$scope.page = 1
$scope.per_page = $scope.per_page_options[0].id
searchThrough = ["order_distributor_name",
"order_bill_address_phone",
"order_bill_address_firstname",
"order_bill_address_lastname",
"variant_product_supplier_name",
"order_email",
"order_number",
"product_name"].join("_or_") + "_cont"
$scope.confirmRefresh = ->
LineItems.allSaved() || confirm(t("unsaved_changes_warning"))
@@ -26,7 +33,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.distributorFilter = ''
$scope.supplierFilter = ''
$scope.orderCycleFilter = ''
$scope.quickSearch = ''
$scope.query = ''
$scope.startDate = undefined
$scope.endDate = undefined
event = new CustomEvent('flatpickr:clear')
@@ -44,7 +51,6 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.refreshData = ->
return "cancel" unless $scope.confirmRefresh()
$scope.loadOrders()
$scope.loadLineItems()
unless $scope.initialized
@@ -53,24 +59,15 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.dereferenceLoadedData()
$scope.loadOrders = ->
[formattedStartDate, formattedEndDate] = $scope.formatDates($scope.startDate, $scope.endDate)
RequestMonitor.load $scope.orders = Orders.index(
"q[state_not_eq]": "canceled",
"q[shipment_state_not_eq]": "shipped",
"q[completed_at_not_null]": "true",
"q[distributor_id_eq]": $scope.distributorFilter,
"q[order_cycle_id_eq]": $scope.orderCycleFilter,
"q[completed_at_gteq]": if formattedStartDate then formattedStartDate else undefined,
"q[completed_at_lt]": if formattedEndDate then formattedEndDate else undefined,
"page": $scope.page,
"per_page": $scope.per_page
"q[id_in][]": $scope.line_items.map((line_item) -> line_item.order.id)
)
$scope.loadLineItems = ->
[formattedStartDate, formattedEndDate] = $scope.formatDates($scope.startDate, $scope.endDate)
RequestMonitor.load LineItems.index(
"q[#{searchThrough}]": $scope.query,
"q[order_state_not_eq]": "canceled",
"q[order_shipment_state_not_eq]": "shipped",
"q[order_completed_at_not_null]": "true",
@@ -94,13 +91,15 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
RequestMonitor.load $scope.suppliers = Enterprises.index(action: "visible", ams_prefix: "basic", "q[is_primary_producer_eq]": "true")
$scope.dereferenceLoadedData = ->
RequestMonitor.load $q.all([$scope.orders.$promise, $scope.distributors.$promise, $scope.orderCycles.$promise, $scope.suppliers.$promise, $scope.line_items.$promise]).then ->
Dereferencer.dereferenceAttr $scope.orders, "distributor", Enterprises.byID
Dereferencer.dereferenceAttr $scope.orders, "order_cycle", OrderCycles.byID
RequestMonitor.load $q.all([$scope.distributors.$promise, $scope.orderCycles.$promise, $scope.suppliers.$promise, $scope.line_items.$promise]).then ->
Dereferencer.dereferenceAttr $scope.line_items, "supplier", Enterprises.byID
Dereferencer.dereferenceAttr $scope.line_items, "order", Orders.byID
$scope.bulk_order_form.$setPristine()
StatusMessage.clear()
$scope.loadOrders()
RequestMonitor.load $q.all([$scope.orders.$promise]).then ->
Dereferencer.dereferenceAttr $scope.line_items, "order", Orders.byID
Dereferencer.dereferenceAttr $scope.orders, "distributor", Enterprises.byID
Dereferencer.dereferenceAttr $scope.orders, "order_cycle", OrderCycles.byID
$scope.bulk_order_form.$setPristine()
StatusMessage.clear()
unless $scope.initialized
$scope.initialized = true
@@ -159,6 +158,10 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
else
Promise.all(LineItems.delete(item) for item in items).then(-> $scope.refreshData())
, "js.admin.deleting_item_will_cancel_order")
else
ofnDeleteLineItemsAlert(() ->
Promise.all(LineItems.delete(item) for item in lineItemsToDelete).then(-> $scope.refreshData())
, lineItemsToDelete.length)
$scope.allBoxesChecked = ->
checkedCount = $scope.filteredLineItems.reduce (count,lineItem) ->

View File

@@ -18,7 +18,6 @@ angular.module('admin.orderCycles')
$scope.submit = ($event, destination) ->
$event.preventDefault()
NavigationCheck.clear()
StatusMessage.display 'progress', t('js.saving')
OrderCycle.update(destination, $scope.order_cycle_form)

View File

@@ -35,7 +35,11 @@ angular.module('admin.orderCycles')
OrderCycle.removeExchangeFee(exchange, index)
$scope.order_cycle_form.$dirty = true
$scope.setPickupTimeFieldDirty = (index) ->
$scope.setPickupTimeFieldDirty = (index, pickup_time) ->
# if the pickup_time is already set we are in edit mode, so no need to set pickup_time field as dirty
# to show it is required (it has a red border when set to dirty)
return if pickup_time
$timeout ->
pickup_time_field_name = "order_cycle_outgoing_exchange_" + index + "_pickup_time"
$scope.order_cycle_form[pickup_time_field_name].$setDirty()

View File

@@ -33,9 +33,11 @@ angular.module("admin.orderCycles").controller "OrderCyclesCtrl", ($scope, $q, C
StatusMessage.display 'notice', "You have unsaved changes" if newVal
$scope.showMore = (days) ->
orderCycles = OrderCycles.index(ams_prefix: "index",
"q[orders_close_at_gt]": "#{daysFromToday($scope.ordersCloseAtLimit - days)}",
"q[orders_close_at_lteq]": "#{daysFromToday($scope.ordersCloseAtLimit)}"
)
$scope.ordersCloseAtLimit -= days
existingIDs = Object.keys(OrderCycles.byID)
orderCycles = OrderCycles.index(ams_prefix: "index", "q[orders_close_at_gt]": "#{daysFromToday($scope.ordersCloseAtLimit)}", "q[id_not_in][]": existingIDs)
orderCycles.$promise.then ->
$scope.orderCycles.push(orderCycle) for orderCycle in orderCycles
compileData()

View File

@@ -1,14 +0,0 @@
angular.module("admin.orders").controller "bulkCancelCtrl", ($scope, $http, $timeout) ->
$scope.cancelOrder = (orderIds, sendEmailCancellation, restock_items) ->
$http(
method: 'post'
url: "/admin/orders/bulk_cancel?order_ids=#{orderIds}&send_cancellation_email=#{sendEmailCancellation}&restock_items=#{restock_items}" ).then(->
window.location.reload()
)
$scope.cancelSelectedOrders = ->
ofnCancelOrderAlert((confirm, sendEmailCancellation, restock_items) ->
if confirm
$scope.cancelOrder $scope.selected_orders, sendEmailCancellation, restock_items
)

View File

@@ -14,7 +14,4 @@ angular.module("admin.resources").factory 'EnterpriseResource', ($resource) ->
'removePromoImage':
url: '/api/v0/enterprises/:id/promo_image.json'
method: 'DELETE'
'removeTermsAndConditions':
url: '/api/v0/enterprises/:id/terms_and_conditions.json'
method: 'DELETE'
})

View File

@@ -63,4 +63,3 @@ angular.module("admin.resources").factory 'Enterprises', ($q, $filter, Enterpris
removeLogo: performActionOnEnterpriseResource(EnterpriseResource.removeLogo)
removePromoImage: performActionOnEnterpriseResource(EnterpriseResource.removePromoImage)
removeTermsAndConditions: performActionOnEnterpriseResource(EnterpriseResource.removeTermsAndConditions)

View File

@@ -250,6 +250,18 @@ ofnCancelOrderAlert = function(callback, i18nKey) {
$('#custom-confirm').show();
}
ofnDeleteLineItemsAlert = function(callback, count) {
$('#custom-confirm .message').html(`${t("js.admin.orders.delete_line_items_html", {count: count})}`);
$('#custom-confirm button.confirm').click(() => {
$('#custom-confirm').hide();
callback();
});
$('#custom-confirm button.cancel').click(() => {
$('#custom-confirm').hide();
});
$('#custom-confirm').show();
}
ofnConfirm = function(callback) {
$('#custom-confirm .message').html(
` ${t("are_you_sure")}

View File

@@ -8,7 +8,7 @@ handle_move = (e, data) ->
node = data.rslt.o
new_parent = data.rslt.np
url = new URL(base_url)
url = new URL(Spree.routes.admin_taxonomy_taxons)
url.pathname = url.pathname + '/' + node.attr("id")
data = {
_method: "put",

View File

@@ -1,2 +1,3 @@
angular.module("admin.utils", ["templates", "ngSanitize"]).config ($httpProvider) ->
angular.module("admin.utils", ["templates", "ngSanitize"]).config ($httpProvider, $locationProvider) ->
$locationProvider.hashPrefix('')
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"

View File

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

View File

@@ -17,9 +17,12 @@ angular.module('Darkswarm').directive "ofnFlash", (flash, $timeout, RailsFlashLo
# Callback when a new flash message is pushed to flash service
show = (message, type)=>
if message
$scope.flashes.push({message: message, type: typePairings[type]})
$timeout($scope.delete, 10000)
return unless message
# if same message already exists, don't add it again
return if $scope.flashes.some((flash) -> flash.message == message)
$scope.flashes.push({message: message, type: typePairings[type]})
$timeout($scope.delete, 10000)
$scope.delete = ->
$scope.flashes.shift()

View File

@@ -1,4 +1,4 @@
angular.module('Darkswarm').directive "ofnOnHand", (StockQuantity) ->
angular.module('Darkswarm').directive "ofnOnHand", (StockQuantity, Messages) ->
restrict: 'A'
require: "ngModel"
scope: true
@@ -16,7 +16,7 @@ angular.module('Darkswarm').directive "ofnOnHand", (StockQuantity) ->
ngModel.$parsers.push (viewValue) ->
available_quantity = scope.available_quantity()
if parseInt(viewValue) > available_quantity
alert t("js.insufficient_stock", {on_hand: available_quantity})
Messages.flash({error: t("js.insufficient_stock", {on_hand: available_quantity})})
viewValue = available_quantity
ngModel.$setViewValue viewValue
ngModel.$render()

View File

@@ -55,6 +55,10 @@ angular.module('Darkswarm').factory "EnterpriseRegistrationService", ($http, Reg
).catch((response) ->
Loading.clear()
alert(t('failed_to_update_enterprise_unknown'))
if response.data.errors.instagram
igErr = document.querySelector("#instagram-error")
igErr.style.display = 'block'
igErr.textContent = response.data.errors.instagram[0]
)
prepare: =>

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,13 @@
.ofn-drop-down.right#columns-dropdown{ ng: { controller: 'ColumnsDropdownCtrl' } }
%span{ :class => 'icon-reorder' }= "&nbsp; #{t('admin.columns')}".html_safe
%span{ 'ng-class' => "expanded && 'icon-caret-up' || !expanded && 'icon-caret-down'" }
.ofn-drop-down.ofn-drop-down-v2.right#columns-dropdown{ ng: { controller: 'ColumnsDropdownCtrl' } }
.ofn-drop-down-label
= "&nbsp; #{t('admin.columns')}".html_safe
%span{ 'ng-class' => "expanded && 'icon-caret-up' || !expanded && 'icon-caret-down'" }
%div.menu{ 'ng-show' => "expanded" }
%div.menu_item{ ng: { repeat: "column in columns", click: "toggle(column)", class: "{selected: column.visible}" } }
%span.check
%span.name {{ column.name }}
%hr
%div.menu_item.text-center
%input.fullwidth.orange{ type: "button", ng: { value: "saved() ? 'Saved': 'Saving'", show: "saved() || saving", disabled: "saved()" } }
%input.fullwidth.red{ type: "button", :value => t('admin.column_save_as_default').html_safe, ng: { show: "!saved() && !saving", click: "saveColumnPreferences(action)"} }
.menu_items
.menu_item{ ng: { repeat: "column in columns", click: "toggle(column);" } }
%input.redesigned-input{ type: "checkbox", ng: { checked: "column.visible" } }
{{ column.name }}
%hr
%div.menu_item.text-center
%input.fullwidth.orange{ type: "button", ng: { value: "saved() ? 'Saved': 'Saving'", show: "saved() || saving", disabled: "saved()" } }
%input.fullwidth.red{ type: "button", :value => t('admin.column_save_as_default').html_safe, ng: { show: "!saved() && !saving", click: "saveColumnPreferences(action)"} }

View File

@@ -1,14 +0,0 @@
%div
.margin-bottom-30.text-center
.text-big
{{ 'js.admin.modals.terms_and_conditions_warning.title' | t }}
.margin-bottom-30
%p
{{ 'js.admin.modals.terms_and_conditions_warning.message_1' | t }}
.margin-bottom-30
%p
{{ 'js.admin.modals.terms_and_conditions_warning.message_2' | t }}
.text-center
%input.button.red{ type: 'button', value: t('js.admin.modals.close'), ng: { click: 'close()' } }
%input.button.red{ type: 'button', value: t('js.admin.modals.continue'), ng: { click: 'continue()' } }

View File

@@ -1,10 +1,11 @@
# frozen_string_literal: true
class ConfirmModalComponent < ModalComponent
def initialize(id:, confirm_actions: nil, controllers: nil)
def initialize(id:, confirm_actions: nil, controllers: nil, message: nil)
super(id: id, close_button: true)
@confirm_actions = confirm_actions
@controllers = controllers
@message = message
end
private

View File

@@ -3,6 +3,8 @@
.reveal-modal.fade.tiny.help-modal{ "data-modal-target": "modal" }
= content
= 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 }

View File

@@ -1,18 +1,26 @@
# frozen_string_literal: true
class ProductComponent < ViewComponentReflex::Component
DATETIME_FORMAT = '%F %T'
def initialize(product:, columns:)
super
@product = product
@image = @product.images[0] if product.images.any?
@columns = columns.map { |c|
@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, Metrics/MethodLength
def column_value(column)
case column
when 'name'
@@ -25,6 +33,27 @@ class ProductComponent < ViewComponentReflex::Component
@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 'available_on'
format_date(@product.available_on)
when 'import_date'
format_date(@product.import_date)
end
end
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength
private
def format_date(date)
date&.strftime(DATETIME_FORMAT) || ''
end
end

View File

@@ -3,27 +3,37 @@
class ProductsTableComponent < ViewComponentReflex::Component
include Pagy::Backend
SORTABLE_COLUMNS = ["name"].freeze
SELECTABLE_COMUMNS = [{ 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" }].sort { |a, b|
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.available_on"), value: "available_on" },
{ label: I18n.t("admin.products_page.columns_selector.import_date"), value: "import_date" }
].sort do |a, b|
a[:label] <=> b[:label]
}.freeze
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
NAME_COLUMN = {
label: I18n.t("admin.products_page.columns.name"), value: "name", sortable: true
}.freeze
def initialize(user:)
super
@user = user
@selectable_columns = SELECTABLE_COMUMNS
@columns_selected = ["price", "unit"]
@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" }] +
@@ -40,16 +50,20 @@ class ProductsTableComponent < ViewComponentReflex::Component
@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]
@@ -59,26 +73,33 @@ class ProductsTableComponent < ViewComponentReflex::Component
end
def click_sort
@sort = { column: element.dataset['sort-value'],
direction: element.dataset['sort-direction'] == "asc" ? "desc" : "asc" }
# 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
@@ -86,10 +107,13 @@ class ProductsTableComponent < ViewComponentReflex::Component
private
def refresh_columns
@columns = @columns_selected.map { |column|
{ label: I18n.t("admin.products_page.columns.#{column}"), value: column,
sortable: SORTABLE_COLUMNS.include?(column) }
}.sort! { |a, b| a[:label] <=> b[:label] }
@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
@@ -145,8 +169,13 @@ class ProductsTableComponent < ViewComponentReflex::Component
def product_query_includes
[
master: [:images],
variants: [:default_price, :stock_locations, :stock_items, :variant_overrides,
{ option_values: :option_type }]
variants: [
:default_price,
:stock_locations,
:stock_items,
:variant_overrides,
{ option_values: :option_type }
]
]
end
end

View File

@@ -67,7 +67,7 @@ module Admin
def collection
if json_request? && params[:enterprise_id].present?
CustomersWithBalance.new(managed_enterprise_id).query.
CustomersWithBalance.new(Customer.of(managed_enterprise_id)).query.
includes(
:enterprise,
{ bill_address: [:state, :country] },

View File

@@ -8,12 +8,12 @@ module Admin
class EnterprisesController < Admin::ResourceController
include GeocodeEnterpriseAddress
include CablecarResponses
include Pagy::Backend
# These need to run before #load_resource so that @object is initialised with sanitised values
prepend_before_action :override_owner, only: :create
prepend_before_action :override_sells, only: :create
before_action :load_enterprise_set, only: :index
before_action :load_countries, except: [:index, :register, :check_permalink]
before_action :load_methods_and_fees, only: [:edit, :update]
before_action :load_groups, only: [:new, :edit, :update, :create]
@@ -33,6 +33,8 @@ module Admin
include OrderCyclesHelper
def index
load_enterprise_set_on_index
respond_to do |format|
format.html
format.json {
@@ -48,7 +50,7 @@ module Admin
if params[:stimulus]
@enterprise.is_primary_producer = params[:is_primary_producer]
@enterprise.sells = params[:enterprise_sells]
render operations: cable_car.morph("#side_menu", partial("admin/shared/side_menu"))
render cable_ready: cable_car.morph("#side_menu", partial("admin/shared/side_menu"))
.morph("#permalink", partial("admin/enterprises/form/permalink"))
end
end
@@ -100,7 +102,8 @@ module Admin
end
def bulk_update
@enterprise_set = Sets::EnterpriseSet.new(collection, bulk_params)
load_enterprise_set_with_params(bulk_params)
if @enterprise_set.save
flash[:success] = I18n.t(:enterprise_bulk_update_success_notice)
@@ -148,8 +151,15 @@ module Admin
private
def load_enterprise_set
@enterprise_set = Sets::EnterpriseSet.new(collection) if spree_current_user.admin?
def load_enterprise_set_on_index
return unless spree_current_user.admin?
load_enterprise_set_with_params
end
def load_enterprise_set_with_params(params = {})
@pagy, @paginated_collection = pagy(@collection)
@enterprise_set = Sets::EnterpriseSet.new(@paginated_collection, params)
end
def load_countries

View File

@@ -18,7 +18,6 @@ module Admin
params.require(:preferences).permit(
:enable_invoices?,
:invoice_style2?,
:enable_receipt_printing?,
:enterprise_number_required_on_invoices?,
)
end

View File

@@ -1,47 +0,0 @@
# frozen_string_literal: true
module Admin
class ManagerInvitationsController < Spree::Admin::BaseController
authorize_resource class: false
def create
@email = params[:email]
@enterprise = Enterprise.find(params[:enterprise_id])
authorize! :edit, @enterprise
existing_user = Spree::User.find_by(email: @email)
if existing_user
render json: { errors: t('admin.enterprises.invite_manager.user_already_exists') },
status: :unprocessable_entity
return
end
new_user = create_new_manager
if new_user
render json: { user: new_user.id }, status: :ok
else
render json: { errors: t('admin.enterprises.invite_manager.error') },
status: :internal_server_error
end
end
private
def create_new_manager
password = Devise.friendly_token
new_user = Spree::User.create(email: @email, unconfirmed_email: @email, password: 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
new_user.save!
@enterprise.users << new_user
EnterpriseMailer.manager_invitation(@enterprise, new_user).deliver_later
new_user
end
end
end

View File

@@ -100,10 +100,13 @@ module Admin
order_cycle.schedules.each do |schedule|
Subscription.where(schedule_id: schedule.id).each do |subscription|
shop = Enterprise.managed_by(spree_current_user).find_by(id: subscription.shop_id)
fee_calculator = OpenFoodNetwork::EnterpriseFeeCalculator.new(shop, order_cycle)
subscription.subscription_line_items.nil_price_estimate.each do |line_item|
variant = OrderManagement::Subscriptions::
VariantsList.eligible_variants(shop).find_by(id: line_item.variant_id)
fee_calculator = OpenFoodNetwork::EnterpriseFeeCalculator.new(shop, order_cycle)
# If the variant is not available in the shop, the price estimate will be nil
next if variant.nil?
price = variant.price + fee_calculator.indexed_fees_for(variant)
line_item.update_column(:price_estimate, price)
end

View File

@@ -55,11 +55,10 @@ module Admin
def render_report_as(format)
if OpenFoodNetwork::FeatureToggle.enabled?(:background_reports, spree_current_user)
job = ReportJob.new
JobProcessor.perform_forked(
job,
job = ReportJob.perform_later(
report_class, spree_current_user, params, format
)
sleep 1 until job.done?
# This result has been rendered by Rails in safe mode already.
job.result.html_safe # rubocop:disable Rails/OutputSafety

View File

@@ -16,7 +16,8 @@ module Admin
respond_to do |format|
format.html do
if view_context.subscriptions_setup_complete?(@shops)
@order_cycles = OrderCycle.joins(:schedules).managed_by(spree_current_user).includes([:distributors, :cached_incoming_exchanges])
@order_cycles = OrderCycle.joins(:schedules).managed_by(spree_current_user)
.includes([:distributors, :cached_incoming_exchanges])
@payment_methods = Spree::PaymentMethod.managed_by(spree_current_user).includes(:taggings)
@payment_method_tags = payment_method_tags_by_id
@shipping_methods = Spree::ShippingMethod.managed_by(spree_current_user)
@@ -25,7 +26,10 @@ module Admin
render :setup_explanation
end
end
format.json { render_as_json @collection, ams_prefix: params[:ams_prefix], payment_method_tags: payment_method_tags_by_id }
format.json {
render_as_json @collection, ams_prefix: params[:ams_prefix],
payment_method_tags: payment_method_tags_by_id
}
end
end

View File

@@ -0,0 +1,36 @@
# frozen_string_literal: true
module Admin
class VouchersController < ResourceController
before_action :load_enterprise
def new
@voucher = Voucher.new
end
def create
voucher_params = permitted_resource_params.merge(enterprise: @enterprise)
@voucher = Voucher.create(voucher_params)
if @voucher.save
redirect_to(
"#{edit_admin_enterprise_path(@enterprise)}#vouchers_panel",
flash: { success: flash_message_for(@voucher, :successfully_created) }
)
else
flash[:error] = @voucher.errors.full_messages.to_sentence
render :new
end
end
private
def load_enterprise
@enterprise = Enterprise.find_by permalink: params[:enterprise_id]
end
def permitted_resource_params
params.require(:voucher).permit(:code)
end
end
end

View File

@@ -106,7 +106,9 @@ module Api
end
def json_api_error(message, **options)
{ errors: [{ detail: message }] }.merge(options)
error_options = options.delete(:error_options) || {}
{ errors: [{ detail: message }.merge(error_options)] }.merge(options)
end
def json_api_invalid(message, errors)

View File

@@ -6,11 +6,17 @@ module Api
module V1
class CustomersController < Api::V1::BaseController
include AddressTransformation
include ExtraFields
skip_authorization_check only: :index
before_action :authorize_action, only: [:show, :update, :destroy]
# Query parameters
before_action only: [:index] do
@extra_customer_fields = extra_fields :customer, [:balance]
end
def index
@pagy, customers = pagy(search_customers, pagy_options)
@@ -51,7 +57,11 @@ module Api
private
def customer
@customer ||= Customer.find(params[:id])
@customer ||= if action_name == "show"
CustomersWithBalance.new(Customer.where(id: params[:id])).query.first!
else
Customer.find(params[:id])
end
end
def authorize_action
@@ -61,7 +71,12 @@ module Api
def search_customers
customers = visible_customers.includes(:bill_address, :ship_address)
customers = customers.where(enterprise_id: params[:enterprise_id]) if params[:enterprise_id]
customers.ransack(params[:q]).result
if @extra_customer_fields.include?(:balance)
customers = CustomersWithBalance.new(customers).query
end
customers.ransack(params[:q]).result.order(:id)
end
def visible_customers

View File

@@ -5,6 +5,7 @@ require 'open_food_network/address_finder'
class CheckoutController < ::BaseController
include OrderStockCheck
include OrderCompletion
include WhiteLabel
layout 'darkswarm'
@@ -27,6 +28,8 @@ class CheckoutController < ::BaseController
before_action :associate_user
before_action :check_authorization
before_action :hide_ofn_navigation, only: :edit
helper 'spree/orders'
def edit; end

View File

@@ -0,0 +1,32 @@
# frozen_string_literal: true
# To be included in api controllers for handeling query params
module ExtraFields
extend ActiveSupport::Concern
def invalid_query_param(name, status, msg)
render status: status, json: json_api_error(msg, error_options:
{
title: I18n.t("api.query_param.error.title"),
source: { parameter: name },
status: status,
code: Rack::Utils::SYMBOL_TO_STATUS_CODE[status]
})
end
def extra_fields(type, available_fields)
fields = params.dig(:extra_fields, type)&.split(',')&.compact&.map(&:to_sym)
return [] if fields.blank?
unknown_fields = fields - available_fields
if unknown_fields.present?
invalid_query_param(
"extra_fields[#{type}]", :unprocessable_entity,
I18n.t("api.query_param.error.extra_fields", fields: unknown_fields.join(', '))
)
end
fields
end
end

View File

@@ -0,0 +1,19 @@
# frozen_string_literal: true
module ManagerInvitations
extend ActiveSupport::Concern
def create_new_manager(email, enterprise)
password = Devise.friendly_token
new_user = Spree::User.create(email: email, unconfirmed_email: email, password: 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
if new_user.save
enterprise.users << new_user
EnterpriseMailer.manager_invitation(enterprise, new_user).deliver_later
end
new_user
end
end

View File

@@ -31,7 +31,7 @@ module OrderStockCheck
flash[:info] = I18n.t('order_cycle_closed')
respond_to do |format|
format.cable_ready {
render status: :see_other, operations: cable_car.redirect_to(url: main_app.shop_path)
render status: :see_other, cable_ready: cable_car.redirect_to(url: main_app.shop_path)
}
format.json { render json: { path: main_app.shop_path }, status: :see_other }
format.html { redirect_to main_app.shop_path, status: :see_other }

View File

@@ -0,0 +1,14 @@
# frozen_string_literal: true
module WhiteLabel
extend ActiveSupport::Concern
include EnterprisesHelper
def hide_ofn_navigation(distributor = current_distributor)
return false unless OpenFoodNetwork::FeatureToggle.enabled?(:white_label)
# if the distributor has the hide_ofn_navigation preference set to true
# then we should hide the OFN navigation
@hide_ofn_navigation = distributor.hide_ofn_navigation
end
end

View File

@@ -7,6 +7,7 @@ class EnterprisesController < BaseController
helper Spree::ProductsHelper
include OrderCyclesHelper
include SerializerHelper
include WhiteLabel
protect_from_forgery except: :check_permalink
@@ -14,6 +15,7 @@ class EnterprisesController < BaseController
prepend_before_action :set_order_cycles, :require_distributor_chosen, :reset_order, only: :shop
before_action :clean_permalink, only: :check_permalink
before_action :hide_ofn_navigation, only: :shop
respond_to :js, only: :permalink_checker

View File

@@ -4,6 +4,11 @@ class ErrorsController < ApplicationController
layout "errors"
def not_found
Bugsnag.notify("404") do |event|
event.severity = "info"
event.add_metadata(:request, request.env)
end
render status: :not_found
end

View File

@@ -10,6 +10,7 @@ class SplitCheckoutController < ::BaseController
include CheckoutCallbacks
include OrderCompletion
include CablecarResponses
include WhiteLabel
helper 'terms_and_conditions'
helper 'checkout'
@@ -18,6 +19,7 @@ class SplitCheckoutController < ::BaseController
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]
@@ -41,7 +43,7 @@ class SplitCheckoutController < ::BaseController
rescue Spree::Core::GatewayError => e
flash[:error] = I18n.t(:spree_gateway_error_flash_for_checkout, error: e.message)
@order.update_column(:state, "payment")
render operations: cable_car.redirect_to(url: checkout_step_path(:payment))
render cable_ready: cable_car.redirect_to(url: checkout_step_path(:payment))
end
private
@@ -49,14 +51,58 @@ class SplitCheckoutController < ::BaseController
def render_error
flash.now[:error] ||= I18n.t(
'split_checkout.errors.saving_failed',
messages: @order.errors.full_messages.to_sentence
messages: order_error_messages
)
render status: :unprocessable_entity, operations: cable_car.
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 flash_error_when_no_shipping_method_available
flash[:error] = I18n.t('split_checkout.errors.no_shipping_methods_available')
end
@@ -86,7 +132,7 @@ class SplitCheckoutController < ::BaseController
return unless selected_payment_method&.external_gateway?
return unless (redirect_url = selected_payment_method.external_payment_url(order: @order))
render operations: cable_car.redirect_to(url: redirect_url)
render cable_ready: cable_car.redirect_to(url: redirect_url)
true
end
@@ -97,6 +143,10 @@ class SplitCheckoutController < ::BaseController
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.updater.update_totals_and_states
@@ -106,6 +156,29 @@ class SplitCheckoutController < ::BaseController
@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

View File

@@ -6,7 +6,6 @@ module Spree
def edit
@preferences_general = [:site_name, :default_seo_title, :default_meta_keywords,
:default_meta_description, :site_url]
@preferences_security = [:allow_ssl_in_production, :allow_ssl_in_staging]
@preferences_currency = [:display_currency, :hide_cents]
end

View File

@@ -9,15 +9,13 @@ module Spree
helper CheckoutHelper
before_action :load_order, only: [:edit, :update, :fire, :resend,
:invoice, :print, :print_ticket]
:invoice, :print]
before_action :load_distribution_choices, only: [:new, :edit, :update]
# Ensure that the distributor is set for an order when
before_action :ensure_distribution, only: :new
before_action :require_distributor_abn, only: :invoice
content_security_policy false, only: :print_ticket
respond_to :html, :json
def new
@@ -67,18 +65,6 @@ module Spree
load_spree_api_key
end
def bulk_cancel
order_ids = params[:order_ids].split(',')
Spree::Order.where(id: order_ids).find_each do |order|
order.send_cancellation_email = params[:send_cancellation_email] != "false"
order.restock_items = params.fetch(:restock_items, "true") == "true"
order.cancel
end
flash[:success] = Spree.t(:order_updated)
end
def fire
event = params[:e]
@order.send_cancellation_email = params[:send_cancellation_email] != "false"
@@ -117,10 +103,6 @@ module Spree
render_with_wicked_pdf InvoiceRenderer.new.args(@order)
end
def print_ticket
render template: "spree/admin/orders/ticket", layout: false
end
private
def order_params

View File

@@ -13,7 +13,7 @@ module Spree
def collection
params[:q] ||= {}
params[:q][:s] ||= "ascend_by_name"
params[:q][:s] ||= "name asc"
@search = super.ransack(params[:q])
@pagy, @zones = pagy(@search.result, items: Spree::Config[:orders_per_page])
@zones

View File

@@ -5,6 +5,7 @@ module Spree
include OrderCyclesHelper
include Rails.application.routes.url_helpers
include CablecarResponses
include WhiteLabel
layout 'darkswarm'
@@ -14,7 +15,8 @@ module Spree
respond_to :html, :json
before_action :check_authorization
before_action :set_current_order, only: :update
before_action :set_order_from_params, only: :show
before_action :set_current_order, only: [:edit, :update]
before_action :filter_order_params, only: :update
prepend_before_action :require_order_authentication, only: :show
@@ -23,10 +25,12 @@ module Spree
before_action :check_hub_ready_for_checkout, only: :edit
before_action :check_at_least_one_line_item, only: :update
def show
@order = Spree::Order.find_by!(number: params[:id])
before_action only: [:show, :edit] do
hide_ofn_navigation(@order.distributor)
end
def show; end
def empty
if @order = current_order
@order.empty!
@@ -37,7 +41,6 @@ module Spree
# Patching to redirect to shop if order is empty
def edit
@order = current_order(true)
@insufficient_stock_lines = @order.insufficient_stock_lines
@unavailable_order_variants = OrderCycleDistributedVariants.
new(current_order_cycle, current_distributor).unavailable_order_variants(@order)
@@ -101,11 +104,15 @@ module Spree
flash[:error] = I18n.t(:orders_could_not_cancel)
end
render status: :found,
operations: cable_car.redirect_to(url: request.referer || main_app.order_path(@order))
cable_ready: cable_car.redirect_to(url: request.referer || main_app.order_path(@order))
end
private
def set_order_from_params
@order = Spree::Order.find_by!(number: params[:id])
end
def set_current_order
@order = current_order(true)
end

View File

@@ -24,11 +24,11 @@ module Spree
if spree_user_signed_in?
flash[:success] = t('devise.success.logged_in_succesfully')
render operations: cable_car.redirect_to(
render cable_ready: cable_car.redirect_to(
url: return_url_or_default(after_sign_in_path_for(spree_current_user))
)
else
render status: :unauthorized, operations: cable_car.inner_html(
render status: :unauthorized, cable_ready: cable_car.inner_html(
"#login-feedback",
partial("layouts/alert", locals: { type: "alert", message: t('devise.failure.invalid') })
)
@@ -60,7 +60,7 @@ module Spree
end
def render_unconfirmed_response
render status: :unprocessable_entity, operations: cable_car.inner_html(
render status: :unprocessable_entity, cable_ready: cable_car.inner_html(
"#login-feedback",
partial("layouts/alert", locals: { type: "alert", message: t(:email_unconfirmed),
unconfirmed: true, tab: "login" })

View File

@@ -30,10 +30,11 @@ module Spree
registered = Spree::User.find_by(email: params[:email]).present?
if registered
render status: :ok, operations: cable_car.
render status: :ok, cable_ready: cable_car.
inner_html(
"#login-feedback",
partial("layouts/alert", locals: { type: "alert", message: t('devise.failure.already_registered') })
partial("layouts/alert",
locals: { type: "alert", message: t('devise.failure.already_registered') })
).
dispatch_event(name: "login:modal:open")
else
@@ -45,12 +46,14 @@ module Spree
@user = Spree::User.new(user_params)
if @user.save
render operations: cable_car.inner_html(
render cable_ready: cable_car.inner_html(
"#signup-feedback",
partial("layouts/alert", locals: { type: "success", message: t('devise.user_registrations.spree_user.signed_up_but_unconfirmed') })
partial("layouts/alert",
locals: { type: "success",
message: t('devise.user_registrations.spree_user.signed_up_but_unconfirmed') })
)
else
render status: :unprocessable_entity, operations: cable_car.morph(
render status: :unprocessable_entity, cable_ready: cable_car.morph(
"#signup-tab",
partial("layouts/signup_tab", locals: { signup_form_user: @user })
)

View File

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

View File

@@ -11,12 +11,12 @@ class UserPasswordsController < Spree::UserPasswordsController
self.resource = resource_class.send_reset_password_instructions(raw_params[resource_name])
if resource.errors.empty?
render operations: cable_car.inner_html(
render cable_ready: cable_car.inner_html(
"#forgot-feedback",
partial("layouts/alert", locals: { type: "success", message: t(:password_reset_sent) })
)
else
render status: :not_found, operations: cable_car.inner_html(
render status: :not_found, cable_ready: cable_car.inner_html(
"#forgot-feedback",
partial("layouts/alert", locals: { type: "alert", message: t(:email_not_found) })
)
@@ -26,7 +26,7 @@ class UserPasswordsController < Spree::UserPasswordsController
private
def render_unconfirmed_response
render status: :unprocessable_entity, operations: cable_car.inner_html(
render status: :unprocessable_entity, cable_ready: cable_car.inner_html(
"#forgot-feedback",
partial("layouts/alert",
locals: { type: "alert", message: t(:email_unconfirmed),

View File

@@ -0,0 +1,47 @@
# frozen_string_literal: true
class WebhookEndpointsController < ::BaseController
before_action :load_resource, only: :destroy
def create
webhook_endpoint = spree_current_user.webhook_endpoints.new(webhook_endpoint_params)
if webhook_endpoint.save
flash[:success] = t('.success')
else
flash[:error] = t('.error')
end
redirect_to redirect_path
end
def destroy
if @webhook_endpoint.destroy
flash[:success] = t('.success')
else
flash[:error] = t('.error')
end
redirect_to redirect_path
end
def load_resource
@webhook_endpoint = spree_current_user.webhook_endpoints.find(params[:id])
end
def webhook_endpoint_params
params.require(:webhook_endpoint).permit(:url)
end
def redirect_path
if request.referer.blank? || request.referer.include?(spree.account_path)
developer_settings_path
else
request.referer
end
end
def developer_settings_path
"#{spree.account_path}#/developer_settings"
end
end

View File

@@ -14,6 +14,7 @@ module Admin
producers.size == 1 ? producers.first.id : nil
end
# rubocop:disable Metrics/MethodLength
def enterprise_side_menu_items(enterprise)
is_shop = enterprise.sells != "none"
show_properties = !!enterprise.is_primary_producer
@@ -22,6 +23,14 @@ module Admin
show_enterprise_fees = can?(:manage_enterprise_fees,
enterprise) && (is_shop || enterprise.is_primary_producer)
build_enterprise_side_menu_items(is_shop, show_properties, show_shipping_methods,
show_payment_methods, show_enterprise_fees)
end
private
def build_enterprise_side_menu_items(is_shop, show_properties, show_shipping_methods,
show_payment_methods, show_enterprise_fees)
[
{ name: 'primary_details', icon_class: "icon-home", show: true, selected: 'selected' },
{ name: 'address', icon_class: "icon-map-marker", show: true },
@@ -34,13 +43,21 @@ module Admin
{ name: 'shipping_methods', icon_class: "icon-truck", show: show_shipping_methods },
{ name: 'payment_methods', icon_class: "icon-money", show: show_payment_methods },
{ name: 'enterprise_fees', icon_class: "icon-tasks", show: show_enterprise_fees },
{ name: 'vouchers', icon_class: "icon-ticket", show: true },
{ name: 'enterprise_permissions', icon_class: "icon-plug", show: true,
href: admin_enterprise_relationships_path },
{ name: 'inventory_settings', icon_class: "icon-list-ol", show: is_shop },
{ name: 'tag_rules', icon_class: "icon-random", show: is_shop },
{ name: 'shop_preferences', icon_class: "icon-shopping-cart", show: is_shop },
{ name: 'users', icon_class: "icon-user", show: true }
]
{ name: 'users', icon_class: "icon-user", show: true },
] + [add_white_label_if_feature_activated].compact
end
def add_white_label_if_feature_activated
return nil unless OpenFoodNetwork::FeatureToggle.enabled?(:white_label)
{ name: 'white_label', icon_class: "icon-leaf", show: true }
end
# rubocop:enable Metrics/MethodLength
end
end

View File

@@ -29,7 +29,8 @@ class AngularFormBuilder < ActionView::Helpers::FormBuilder
@template.ng_options_for_select(choices, angular_field), options
end
def ng_collection_select(method, collection, value_method, text_method, angular_field, options = {})
def ng_collection_select(method, collection, value_method,
text_method, angular_field, options = {})
options.reverse_merge!('id' => angular_id(method), 'ng-model' => angular_model(method).to_s)
@template.select_tag angular_name(method),

View File

@@ -139,8 +139,8 @@ module CheckoutHelper
def stripe_card_options(cards)
cards.map do |cc|
[
"#{cc.brand} #{cc.last_digits} #{I18n.t(:card_expiry_abbreviation)}:#{cc.month.to_s.rjust(2, '0')}/#{cc.year}",
cc.id
"#{cc.brand} #{cc.last_digits} #{I18n.t(:card_expiry_abbreviation)}:"\
"#{cc.month.to_s.rjust(2, '0')}/#{cc.year}", cc.id
]
end
end

View File

@@ -26,6 +26,12 @@ module ReportsHelper
end.uniq
end
def customer_email_options(order_customers)
order_customers.map do |customer|
[customer&.email, customer&.id]
end
end
def currency_symbol
Spree::Money.currency_symbol
end

View File

@@ -27,7 +27,7 @@ module Spree
private
def complete_order_links
[resend_confirmation_link] + invoice_links + ticket_links
[resend_confirmation_link] + invoice_links
end
def invoice_links
@@ -52,12 +52,6 @@ module Spree
end
end
def ticket_links
return [] unless Spree::Config[:enable_receipt_printing?]
[print_ticket_link, select_ticket_printer_link]
end
def edit_order_link
{ name: t(:edit_order),
url: spree.edit_admin_order_path(@order),
@@ -100,20 +94,6 @@ module Spree
confirm: t(:must_have_valid_business_number, enterprise_name: @order.distributor.name) }
end
def print_ticket_link
{ name: t(:print_ticket),
url: print_ticket_admin_order_path(@order),
icon: 'icon-print',
target: "_blank" }
end
def select_ticket_printer_link
{ name: t(:select_ticket_printer),
url: "#{print_ticket_admin_order_path(@order)}#select-printer",
icon: 'icon-print',
target: "_blank" }
end
def ship_order_link
{ name: t(:ship_order),
url: spree.fire_admin_order_path(@order, e: 'ship'),

View File

@@ -0,0 +1,27 @@
# frozen_string_literal: true
# Trigger jobs for any order cycles that recently opened
class OrderCycleOpenedJob < ApplicationJob
def perform
ActiveRecord::Base.transaction do
recently_opened_order_cycles.find_each do |order_cycle|
OrderCycleWebhookService.create_webhook_job(order_cycle, 'order_cycle.opened')
end
mark_as_opened(recently_opened_order_cycles)
end
end
private
def recently_opened_order_cycles
@recently_opened_order_cycles ||= OrderCycle
.where(opened_at: nil)
.where(orders_open_at: 1.hour.ago..Time.zone.now)
.lock.order(:id)
end
def mark_as_opened(order_cycles)
now = Time.zone.now
order_cycles.update_all(opened_at: now, updated_at: now)
end
end

View File

@@ -19,7 +19,7 @@ class ReportJob < ActiveJob::Base
private
def write(result)
File.write(filename, result)
File.write(filename, result, mode: "wb")
end
def read_result

View File

@@ -0,0 +1,50 @@
# frozen_string_literal: true
require "faraday"
require "private_address_check"
require "private_address_check/tcpsocket_ext"
# Deliver a webhook payload
# As a delayed job, it can run asynchronously and handle retries.
class WebhookDeliveryJob < ApplicationJob
# General failed request error that we're going to use to signal
# the job runner to retry our webhook worker.
class FailedWebhookRequestError < StandardError; end
queue_as :default
def perform(url, event, payload)
body = {
id: job_id,
at: Time.zone.now.to_s,
event: event,
data: payload,
}
# Request user-submitted url, preventing any private connections being made
# (SSRF).
# This method may allow the socket to open, but is necessary in order to
# protect from TOC/TOU.
# Note that private_address_check provides some methods for pre-validating,
# but they're not as comprehensive and so unnecessary here. Simply
# momentarily opening sockets probably can't cause DoS or other damage.
PrivateAddressCheck.only_public_connections do
notify_endpoint(url, body)
end
end
def notify_endpoint(url, body)
connection = Faraday.new(
request: { timeout: 30 },
headers: {
'User-Agent' => 'openfoodnetwork_webhook/1.0',
'Content-Type' => 'application/json',
}
)
response = connection.post(url, body.to_json)
# Raise a failed request error and let job runner handle retrying.
# In theory, only 5xx errors should be retried, but who knows.
raise FailedWebhookRequestError, response.status.to_s unless response.success?
end
end

View File

@@ -61,4 +61,9 @@ class CustomerSchema < JsonApiSchema
def self.relationships
[:enterprise]
end
# Optional attributes included with eg: CustomerSchema.schema(extra_fields: :balance)
def self.balance
{ balance: { type: :number, format: :double } }
end
end

View File

@@ -19,84 +19,77 @@ class JsonApiSchema
end
def schema(options = {})
{
type: :object,
properties: {
data: {
type: :object,
properties: data_properties(**options)
},
meta: { type: :object },
links: { type: :object }
},
required: [:data]
}
Structure.schema(data_properties(**options))
end
def collection(options)
{
type: :object,
properties: {
data: {
type: :array,
items: {
type: :object,
properties: data_properties(**options)
}
},
meta: {
type: :object,
properties: {
pagination: {
type: :object,
properties: {
results: { type: :integer, example: 250 },
pages: { type: :integer, example: 5 },
page: { type: :integer, example: 2 },
per_page: { type: :integer, example: 50 },
}
}
},
required: [:pagination]
},
links: {
type: :object,
properties: {
self: { type: :string },
first: { type: :string },
prev: { type: :string, nullable: true },
next: { type: :string, nullable: true },
last: { type: :string }
}
}
},
required: [:data, :meta, :links]
}
Structure.collection(data_properties(**options))
end
private
def data_properties(require_all: false)
def data_properties(require_all: false, extra_fields: nil)
extra_fields_result = get_extra_fields(extra_fields)
attributes = get_attributes(extra_fields_result)
required = get_required(require_all, extra_fields, extra_fields_result)
Structure.data_properties(object_name, attributes, required, relationship_properties)
end
def relationship_properties
relationships.to_h { |name| [name, relationship_schema(name)] }
end
# Example
# MySchema.schema(extra_fields: :my_method)
# => extra_fields_result = MySchema.my_method
# => attributes = attributes.merge(extra_fields_result)
#
# MySchema.schema(extra_fields: {name: :my_method, required: true, opts: {method_opt: true}})
# => extra_fields_result = MySchema.my_method(method_opt: true)
# => attributes = attributes.merge(extra_fields_result)
# => required += extra_fields_result.keys
#
# MySchema.schema(extra_fields: [:my_method, :another_method])
# => extra_fields_result = MySchema.my_method.merge(another_method)
# => attributes = attribtues.merge(extra_fields_result)
#
# To test use eg:
# MySchema.schema(extra_fields: :my_method)
# .dig(:properties, :data, :properties, :attributes)
def get_extra_fields(extra_fields)
case extra_fields
when Symbol
public_send(extra_fields)
when Hash
public_send(extra_fields[:name], **extra_fields[:opts].to_h)
when Array
obj = {}
extra_fields.each do |w|
obj.merge!(get_extra_fields(w))
end
obj
end
end
def get_required(require_all, extra_fields, extra_fields_result)
required = require_all ? all_attributes : required_attributes
{
id: { type: :string, example: "1" },
type: { type: :string, example: object_name },
attributes: {
type: :object,
properties: attributes,
required: required
},
relationships: {
type: :object,
properties: relationships.to_h do |name|
[
name,
relationship_schema(name)
]
end
}
}
if extra_fields.is_a?(Hash) && extra_fields[:required] == true && extra_fields_result.present?
required += extra_fields_result.keys
end
required
end
def get_attributes(extra_fields_result)
if [extra_fields_result, attributes].all?{ |obj| obj.respond_to?(:merge) }
attributes.merge(extra_fields_result)
else
attributes
end
end
def relationship_schema(name)

View File

@@ -0,0 +1,83 @@
# frozen_string_literal: true
# rubocop:disable Metrics/MethodLength
class JsonApiSchema
module Structure
extend self
def schema(data_properties)
{
type: :object,
properties: {
data: {
type: :object,
properties: data_properties
},
meta: { type: :object },
links: { type: :object }
},
required: [:data]
}
end
def collection(data_properties)
{
type: :object,
properties: {
data: {
type: :array,
items: {
type: :object,
properties: data_properties
}
},
meta: {
type: :object,
properties: {
pagination: {
type: :object,
properties: {
results: { type: :integer, example: 250 },
pages: { type: :integer, example: 5 },
page: { type: :integer, example: 2 },
per_page: { type: :integer, example: 50 },
}
}
},
required: [:pagination]
},
links: {
type: :object,
properties: {
self: { type: :string },
first: { type: :string },
prev: { type: :string, nullable: true },
next: { type: :string, nullable: true },
last: { type: :string }
}
}
},
required: [:data, :meta, :links]
}
end
def data_properties(object_name, attributes, required, relationship_properties)
{
id: { type: :string, example: "1" },
type: { type: :string, example: object_name },
attributes: {
type: :object,
properties: attributes,
required: required
},
relationships: {
type: :object,
properties: relationship_properties
}
}
end
end
end
# rubocop:enable Metrics/MethodLength

View File

@@ -7,7 +7,6 @@ module Calculator
extend Spree::LocalizedNumber
preference :amount, :decimal, default: 0
preference :currency, :string, default: Spree::Config[:currency]
localize_number :preferred_amount

View File

@@ -9,7 +9,6 @@ module Calculator
preference :first_item, :decimal, default: 0.0
preference :additional_item, :decimal, default: 0.0
preference :max_items, :integer, default: 0
preference :currency, :string, default: Spree::Config[:currency]
localize_number :preferred_first_item,
:preferred_additional_item

View File

@@ -7,7 +7,6 @@ module Calculator
extend Spree::LocalizedNumber
preference :amount, :decimal, default: 0
preference :currency, :string, default: Spree::Config[:currency]
localize_number :preferred_amount

View File

@@ -9,7 +9,6 @@ module Calculator
preference :minimal_amount, :decimal, default: 0
preference :normal_amount, :decimal, default: 0
preference :discount_amount, :decimal, default: 0
preference :currency, :string, default: Spree::Config[:currency]
localize_number :preferred_minimal_amount,
:preferred_normal_amount,

View File

@@ -17,7 +17,7 @@ class Enterprise < ApplicationRecord
}.freeze
VALID_INSTAGRAM_REGEX = %r{\A[a-zA-Z0-9._]{1,30}([^/-]*)\z}
searchable_attributes :sells, :is_primary_producer
searchable_attributes :sells, :is_primary_producer, :name
searchable_associations :properties
searchable_scopes :is_primary_producer, :is_distributor, :is_hub, :activated, :visible,
:ready_for_checkout, :not_ready_for_checkout
@@ -65,6 +65,7 @@ class Enterprise < ApplicationRecord
has_many :inventory_items
has_many :tag_rules
has_one :stripe_account, dependent: :destroy
has_many :vouchers
delegate :latitude, :longitude, :city, :state_name, to: :address
@@ -100,7 +101,11 @@ class Enterprise < ApplicationRecord
validate :shopfront_taxons
validate :shopfront_producers
validate :enforce_ownership_limit, if: lambda { owner_id_changed? && !owner_id.nil? }
validates :instagram, format: { with: VALID_INSTAGRAM_REGEX, message: Spree.t('errors.messages.invalid_instagram_url') }, allow_blank: true
validates :instagram,
format: {
with: VALID_INSTAGRAM_REGEX,
message: Spree.t('errors.messages.invalid_instagram_url')
}, allow_blank: true
before_validation :initialize_permalink, if: lambda { permalink.nil? }
before_validation :set_unused_address_fields
@@ -262,7 +267,8 @@ class Enterprise < ApplicationRecord
def plus_parents_and_order_cycle_producers(order_cycles)
oc_producer_ids = Exchange.in_order_cycle(order_cycles).incoming.pluck :sender_id
Enterprise.not_hidden.is_primary_producer.parents_of_one_union_others(id, oc_producer_ids | [id])
Enterprise.not_hidden.is_primary_producer
.parents_of_one_union_others(id, oc_producer_ids | [id])
end
def relatives_including_self
@@ -450,7 +456,8 @@ class Enterprise < ApplicationRecord
end
def strip_url(url)
url&.sub(%r{(https?://)?}, '')
# Strip protocol and trailing slash
url&.sub(%r{(https?://)?}, '')&.sub(%r{/\z}, '')
end
def correct_whatsapp_url(phone_number)
@@ -458,11 +465,11 @@ class Enterprise < ApplicationRecord
end
def correct_instagram_url(url)
url && strip_url(url.downcase).sub(%r{www.instagram.com/}, '').sub(%r{instagram.com/}, '').delete("@")
url && strip_url(url.downcase).sub(%r{(www\.)?instagram.com/}, '').delete("@")
end
def correct_twitter_url(url)
url && strip_url(url).sub(%r{www.twitter.com/}, '').delete("@")
url && strip_url(url).sub(%r{(www\.)?twitter.com/}, '').delete("@")
end
def set_unused_address_fields

View File

@@ -34,6 +34,7 @@ class OrderCycle < ApplicationRecord
attr_accessor :incoming_exchanges, :outgoing_exchanges
before_update :reset_opened_at, if: :will_save_change_to_orders_open_at?
before_update :reset_processed_at, if: :will_save_change_to_orders_close_at?
after_save :sync_subscriptions, if: :opening?
@@ -333,6 +334,14 @@ class OrderCycle < ApplicationRecord
errors.add(:orders_close_at, :after_orders_open_at)
end
def reset_opened_at
# Reset only if order cycle is opening again at a later date
return unless orders_open_at.present? && orders_open_at_was.present?
return unless orders_open_at > orders_open_at_was
self.opened_at = nil
end
def reset_processed_at
return unless orders_close_at.present? && orders_close_at_was.present?
return unless orders_close_at > orders_close_at_was

View File

@@ -10,7 +10,8 @@ module ProductImport
:variants_created, :variants_updated, :enterprise_products,
:total_enterprise_products, :products_reset_count
def initialize(importer, validator, import_settings, spreadsheet_data, editable_enterprises, import_time, updated_ids)
def initialize(importer, validator, import_settings, spreadsheet_data,
editable_enterprises, import_time, updated_ids)
@importer = importer
@validator = validator
@settings = Settings.new(import_settings)

View File

@@ -271,10 +271,16 @@ module ProductImport
end
def entry_matches_existing_variant?(entry, existing_variant)
existing_variant.display_name == entry.display_name &&
display_name_are_the_same?(entry, existing_variant) &&
existing_variant.unit_value == entry.unit_value.to_f
end
def display_name_are_the_same?(entry, existing_variant)
return true if entry.display_name.blank? && existing_variant.display_name.blank?
existing_variant.display_name == entry.display_name
end
def category_validation(entry)
category_name = entry.category

View File

@@ -179,6 +179,8 @@ module Spree
can [:admin, :create], :manager_invitation
can [:admin, :index], :oidc_setting
can [:admin, :create], Voucher
end
def add_product_management_abilities(user)
@@ -263,7 +265,7 @@ module Spree
def add_order_management_abilities(user)
can [:index, :create], Spree::Order
can [:read, :update, :fire, :resend, :invoice, :print, :print_ticket], Spree::Order do |order|
can [:read, :update, :fire, :resend, :invoice, :print], Spree::Order do |order|
# We allow editing orders with a nil distributor as this state occurs
# during the order creation process from the admin backend
order.distributor.nil? ||

View File

@@ -4,7 +4,7 @@ module Spree
class Address < ApplicationRecord
include AddressDisplay
searchable_attributes :firstname, :lastname
searchable_attributes :firstname, :lastname, :phone
searchable_associations :country, :state
belongs_to :country, class_name: "Spree::Country"

View File

@@ -33,8 +33,6 @@ module Spree
preference :allow_backorder_shipping, :boolean, default: false
preference :allow_checkout_on_gateway_error, :boolean, default: false
preference :allow_guest_checkout, :boolean, default: true
preference :allow_ssl_in_production, :boolean, default: true
preference :allow_ssl_in_staging, :boolean, default: true
# Replace with the name of a zone if you would like to limit the countries
preference :checkout_zone, :string, default: nil
preference :currency, :string, default: "USD"
@@ -125,10 +123,9 @@ module Spree
preference :matomo_site_id, :string, default: nil
preference :matomo_tag_manager_url, :string, default: nil
# Invoices & Receipts
# Invoices
preference :enable_invoices?, :boolean, default: true
preference :invoice_style2?, :boolean, default: false
preference :enable_receipt_printing?, :boolean, default: false
preference :enterprise_number_required_on_invoices?, :boolean, default: true
# Stripe payments

View File

@@ -11,7 +11,8 @@ module Spree
has_one_attached :attachment
validates :attachment, attached: true, content_type: %r{\Aimage/(png|jpeg|gif|jpg|svg\+xml|webp)\Z}
validates :attachment, attached: true,
content_type: %r{\Aimage/(png|jpeg|gif|jpg|svg\+xml|webp)\Z}
validate :no_attachment_errors
def variant(name)

View File

@@ -13,8 +13,8 @@ module Spree
include SetUnusedAddressFields
searchable_attributes :number, :state, :shipment_state, :payment_state, :distributor_id,
:order_cycle_id, :email, :total
searchable_associations :shipping_method, :bill_address
:order_cycle_id, :email, :total, :customer_id
searchable_associations :shipping_method, :bill_address, :distributor
searchable_scopes :complete, :incomplete
checkout_flow do
@@ -311,7 +311,8 @@ module Spree
# Creates new tax charges if there are any applicable rates. If prices already
# include taxes then price adjustments are created instead.
def create_tax_charge!
return if state.in?(["cart", "address", "delivery"]) && OpenFoodNetwork::FeatureToggle.enabled?(:split_checkout)
return if state.in?(["cart", "address", "delivery"]) &&
OpenFoodNetwork::FeatureToggle.enabled?(:split_checkout)
clear_legacy_taxes!
@@ -665,6 +666,7 @@ module Spree
def after_cancel
shipments.each(&:cancel!)
payments.checkout.each(&:void!)
OrderMailer.cancel_email(id).deliver_later if send_cancellation_email
update(payment_state: updater.update_payment_state)
@@ -672,6 +674,8 @@ module Spree
def after_resume
shipments.each(&:resume!)
payments.void.each(&:resume!)
update(payment_state: updater.update_payment_state)
end

View File

@@ -47,9 +47,11 @@ module Spree
scope :with_state, ->(s) { where(state: s.to_s) }
scope :completed, -> { with_state('completed') }
scope :incomplete, -> { where(state: %w(checkout pending requires_authorization)) }
scope :checkout, -> { with_state('checkout') }
scope :pending, -> { with_state('pending') }
scope :failed, -> { with_state('failed') }
scope :valid, -> { where.not(state: %w(failed invalid)) }
scope :void, -> { with_state('void') }
scope :authorization_action_required, -> { where.not(cvv_response_message: nil) }
scope :requires_authorization, -> { with_state("requires_authorization") }
scope :with_payment_intent, ->(code) { where(response_code: code) }
@@ -89,6 +91,10 @@ module Spree
event :complete_authorization do
transition from: [:requires_authorization], to: :completed
end
event :resume do
transition from: [:void], to: :checkout
end
after_transition to: :completed, do: :set_captured_at
end

View File

@@ -415,8 +415,8 @@ module Spree
# If the master cannot be saved, the Product object will get its errors
# and will be destroyed
rescue ActiveRecord::RecordInvalid
master.errors.each do |att, error|
errors.add(att, error)
master.errors.each do |error|
errors.add error.attribute, error.message
end
raise
end

View File

@@ -116,7 +116,22 @@ module Spree
# The call to Stock::Estimator below will replace the current shipping_method
original_shipping_method_id = shipping_method.try(:id)
self.shipping_rates = OrderManagement::Stock::Estimator.new(order).shipping_rates(to_package)
estimator = OrderManagement::Stock::Estimator.new(order)
distributor_shipping_rates = estimator.shipping_rates(to_package)
if original_shipping_method_id.present? &&
distributor_shipping_rates.map(&:shipping_method_id)
.exclude?(original_shipping_method_id)
cost = estimator.calculate_cost(shipping_method, to_package)
unless cost.nil?
original_shipping_rate = shipping_method.shipping_rates.new(cost: cost)
self.shipping_rates = distributor_shipping_rates + [original_shipping_rate]
self.selected_shipping_rate_id = original_shipping_rate.id
end
else
self.shipping_rates = distributor_shipping_rates
end
keep_original_shipping_method_selection(original_shipping_method_id)

View File

@@ -38,7 +38,10 @@ module Spree
has_many :customers
has_many :credit_cards
has_many :report_rendering_options, class_name: "::ReportRenderingOptions", dependent: :destroy
has_many :webhook_endpoints, dependent: :destroy
accepts_nested_attributes_for :enterprise_roles, allow_destroy: true
accepts_nested_attributes_for :webhook_endpoints
accepts_nested_attributes_for :bill_address
accepts_nested_attributes_for :ship_address
@@ -148,10 +151,6 @@ module Spree
spree_orders.incomplete.where(created_by_id: id).order('created_at DESC').first
end
def flipper_id
"#{self.class.name};#{id}"
end
def disabled
disabled_at.present?
end

View File

@@ -20,7 +20,7 @@ module Spree
belongs_to :product, -> { with_deleted }, touch: true, class_name: 'Spree::Product'
delegate_belongs_to :product, :name, :description, :permalink, :available_on,
:tax_category_id, :shipping_category_id, :meta_description,
:tax_category_id, :shipping_category_id,
:meta_keywords, :tax_category, :shipping_category
has_many :inventory_units, inverse_of: :variant

15
app/models/voucher.rb Normal file
View File

@@ -0,0 +1,15 @@
# frozen_string_literal: false
class Voucher < ApplicationRecord
belongs_to :enterprise
validates :code, presence: true, uniqueness: { scope: :enterprise_id }
def value
10
end
def display_value
Spree::Money.new(value)
end
end

View File

@@ -0,0 +1,6 @@
# frozen_string_literal: true
# Records a webhook url to send notifications to
class WebhookEndpoint < ApplicationRecord
validates :url, presence: true
end

View File

@@ -1,28 +1,22 @@
# frozen_string_literal: true
# Fetches the customers of the specified enterprise including the aggregated balance across the
# customer's orders. That is, we get the total balance for each customer with this enterprise.
# Adds an aggregated 'balance_value' to each customer based on their order history
#
class CustomersWithBalance
def initialize(enterprise)
@enterprise = enterprise
def initialize(customers)
@customers = customers
end
def query
Customer.of(enterprise).
@customers.
joins(left_join_complete_orders).
group("customers.id").
select("customers.*").
select(outstanding_balance_sum)
select("#{outstanding_balance_sum} AS balance_value")
end
private
attr_reader :enterprise
def outstanding_balance_sum
"SUM(#{OutstandingBalance.new.statement}) AS balance_value"
end
# The resulting orders are in states that belong after the checkout. Only these can be considered
# for a customer's balance.
def left_join_complete_orders
@@ -36,4 +30,8 @@ class CustomersWithBalance
states = Spree::Order::FINALIZED_STATES.map { |state| Arel::Nodes.build_quoted(state) }
Arel::Nodes::In.new(Spree::Order.arel_table[:state], states)
end
def outstanding_balance_sum
"SUM(#{OutstandingBalance.new.statement})::float"
end
end

View File

@@ -23,4 +23,8 @@ class ApplicationReflex < StimulusReflex::Reflex
def current_ability
Spree::Ability.new(current_user)
end
def with_locale(&block)
I18n.with_locale(current_user.locale, &block)
end
end

View File

@@ -0,0 +1,35 @@
# frozen_string_literal: true
class BulkActionsInOrdersListReflex < ApplicationReflex
def resend_confirmation_email(order_ids)
orders(order_ids).find_each do |o|
Spree::OrderMailer.confirm_email_for_customer(o.id, true).deliver_later if can? :resend, o
end
success("admin.resend_confirmation_emails_feedback", order_ids.count)
end
def send_invoice(order_ids)
count = 0
orders(order_ids).find_each do |o|
next unless o.distributor.can_invoice? && (o.resumed? || o.complete?)
Spree::OrderMailer.invoice_email(o.id).deliver_later
count += 1
end
success("admin.send_invoice_feedback", count)
end
private
def success(i18n_key, count)
flash[:success] = I18n.t(i18n_key, count: count)
cable_ready.dispatch_event(name: "modal:close")
morph "#flashes", render(partial: "shared/flashes", locals: { flashes: flash })
end
def orders(order_ids)
Spree::Order.where(id: order_ids)
end
end

View File

@@ -0,0 +1,9 @@
# frozen_string_literal: true
class CancelOrdersReflex < ApplicationReflex
def confirm(params)
OrdersBulkCancelService.new(params).call
cable_ready.dispatch_event(name: "modal:close")
# flash[:success] = Spree.t(:order_updated)
end
end

View File

@@ -0,0 +1,10 @@
# frozen_string_literal: false
class EnterpriseEditReflex < ApplicationReflex
def remove_terms_and_conditions
@enterprise = Enterprise.find(element.dataset['enterprise-id'])
throw :forbidden unless can?(:remove_terms_and_conditions, @enterprise)
@enterprise.terms_and_conditions.purge_later
end
end

View File

@@ -0,0 +1,42 @@
# frozen_string_literal: true
class InviteManagerReflex < ApplicationReflex
include ManagerInvitations
def invite
email = params[:email]
enterprise = Enterprise.find(params[:enterprise_id])
authorize! :edit, enterprise
existing_user = Spree::User.find_by(email: email)
locals = { error: nil, success: nil, email: email, enterprise: enterprise }
if existing_user
locals[:error] = I18n.t('admin.enterprises.invite_manager.user_already_exists')
return_morph(locals)
return
end
new_user = create_new_manager(email, enterprise)
if new_user.errors.empty?
locals[:success] = true
else
locals[:error] = new_user.errors.full_messages.to_sentence
end
return_morph(locals)
end
private
def return_morph(locals)
morph "#add_manager_modal",
with_locale {
render(partial: "admin/enterprises/form/add_new_unregistered_manager", locals: locals)
}
end
end

View File

@@ -1,13 +0,0 @@
# frozen_string_literal: true
class ResendConfirmationEmailReflex < ApplicationReflex
def confirm(order_ids)
Spree::Order.where(id: order_ids).find_each do |o|
Spree::OrderMailer.confirm_email_for_customer(o.id, true).deliver_later if can? :resend, o
end
flash[:success] = I18n.t("admin.resend_confirmation_emails_feedback", count: order_ids.count)
cable_ready.dispatch_event(name: "modal:close")
morph "#flashes", render(partial: "shared/flashes", locals: { flashes: flash })
end
end

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