Compare commits

...

2684 Commits

Author SHA1 Message Date
Maikel
7fc9a6bf93 Merge pull request #13829 from mkllnk/ruby-3.3
Bump ruby from 3.2.9p265 to 3.3.10p183
2026-01-13 12:22:28 +11:00
David Cook
781bf940f6 Merge pull request #13837 from mkllnk/fix-seeds
Fix database seeding with admin user
2026-01-13 12:02:32 +11:00
Maikel Linke
92382ca473 Remove outdated warning
We only create a user when seeding the database and we check that
there's no user already. We don't have a use case for adding an admin
user to a database with user data.

It also referred to a spree task that doesn't exist in our code base.
2026-01-13 11:02:49 +11:00
Maikel Linke
76a3e913df Remove unnecessary load 2026-01-13 11:00:02 +11:00
Maikel Linke
23ab6bb489 Create seed admin user without prompting for details
We don't really need it. In development, we use default values. And when
preparing a new server, we set env vars.

This fixes a broken dependency on HighLine. I found removal easier than
fixing something we don't use.
2026-01-13 10:59:31 +11:00
David Cook
c799f15067 Update ruby-build with homebrew if installed
This is commonly used on Mac.
2026-01-12 15:09:49 +11:00
David Cook
54f1047dcb Merge pull request #13830 from mkllnk/highline
Bump highline from 2.0.3 to 3.1.2 to support newer rubies
2026-01-12 11:14:06 +11:00
Maikel
c1e599deef Merge pull request #13833 from mkllnk/nodenv
Add instructions how to install nodenv
2026-01-12 10:40:54 +11:00
Maikel Linke
476daf0d30 Add instructions how to install nodenv 2026-01-09 13:47:41 +11:00
Maikel Linke
18ef5cc69a Update all locales with the latest Transifex translations 2026-01-09 12:04:46 +11:00
Maikel
a69528c432 Merge pull request #13803 from pacodelaluna/add-cloud-storage-configuration-for-s3-compatible-alternatives
Add a new cloud storage configuration for s3-compatible alternatives
2026-01-09 12:03:08 +11:00
Maikel
9dfecde6a7 Merge pull request #13765 from rioug/variant-tag-clean-old-flipper-groups
[Variant tags] Remove flipper groups that are not used anymore
2026-01-09 12:01:08 +11:00
Filipe
c73f28b434 Merge pull request #13815 from mkllnk/secrets
Replace deprecated Rails secrets with credentials
2026-01-08 18:46:33 +00:00
Filipe
0cd9fa91a8 Merge pull request #13798 from rioug/13790-upgrade-stripe
Upgrade stripe to version 15
2026-01-08 18:25:11 +00:00
François Turbelin
252943e9de Adjust context using allow method for Application Record spec 2026-01-08 13:08:09 +00:00
François Turbelin
cab4b2fb28 Add a new cloud storage configuration for s3-compatible alternatives 2026-01-08 13:08:09 +00:00
Filipe
80bd6defcb Merge pull request #13789 from prikeshsavla/13537-upgrade-active-storage-validations-gem
Upgraded gem active_storage_validations to 3.0.2 and fixed any upgrade related issues
2026-01-08 13:06:53 +00:00
Filipe
bd367cb154 Merge pull request #13795 from prikeshsavla/13392-fix-producer-name-text-encoding
Fix encoding issue using ng-bind-html
2026-01-08 12:03:00 +00:00
Filipe
d0f48687e2 Merge pull request #13777 from rioug/13481-webhook-payment
Payment status change webhook
2026-01-08 11:26:41 +00:00
Filipe
25063d2c4d Merge pull request #13649 from deivid-rodriguez/fix-removal-flash-message-translations
Improve translations of some flash messages
2026-01-07 16:33:34 +00:00
Maikel
bad04b70a9 Merge pull request #13832 from dacook/pr-template-headings
Increase PR headings to level 2
2026-01-07 17:19:36 +11:00
David Cook
5479572a08 Increase headings to level 2
h4 is rendered as bold text the same size as content.
2026-01-07 17:00:34 +11:00
Maikel Linke
79a9dbcf68 Bump highline from 2.0.3 to 3.1.2 to support newer rubies 2026-01-07 14:12:59 +11:00
Maikel Linke
61c7c26822 Remove version restriction on highline
It came from a very old version of the Spree code.
2026-01-07 14:09:42 +11:00
Maikel Linke
969dcae8d0 Remove unnecessary require statement 2026-01-07 14:08:10 +11:00
Maikel Linke
ce5a95ff4f Bump bundler from 2.4.19 to 2.5.22 (default gem) 2026-01-07 12:24:03 +11:00
Maikel Linke
0d5330d388 Bump ruby from 3.2.9p265 to 3.3.10p183 2026-01-07 12:21:13 +11:00
Gaetan Craig-Riou
06bfd07fec Merge pull request #13824 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.16
Bump trix from 2.1.15 to 2.1.16
2026-01-05 11:12:11 +11:00
Maikel
e98cf78b4c Merge pull request #13819 from openfoodfoundation/dependabot/bundler/haml_lint-0.68.0
Bump haml_lint from 0.67.0 to 0.68.0
2026-01-02 16:50:21 +11:00
dependabot[bot]
13229cc0c1 Bump trix from 2.1.15 to 2.1.16
Bumps [trix](https://github.com/basecamp/trix) from 2.1.15 to 2.1.16.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.15...v2.1.16)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-31 09:01:27 +00:00
dependabot[bot]
3173c79e8f Bump haml_lint from 0.67.0 to 0.68.0
Bumps [haml_lint](https://github.com/sds/haml-lint) from 0.67.0 to 0.68.0.
- [Release notes](https://github.com/sds/haml-lint/releases)
- [Changelog](https://github.com/sds/haml-lint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sds/haml-lint/compare/v0.67.0...v0.68.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 09:04:24 +00:00
David Cook
ca14d557c1 Merge pull request #13814 from mkllnk/dfc-events-unauthorised
Correctly respond to unauthorised requests on DFC events endpoint
2025-12-22 10:42:23 +11:00
Gaetan Craig-Riou
59a3a5bd92 Merge pull request #13816 from openfoodfoundation/dependabot/bundler/dotenv-3.2.0
Bump dotenv from 3.1.8 to 3.2.0
2025-12-22 09:44:15 +11:00
dependabot[bot]
a226088f5c Bump dotenv from 3.1.8 to 3.2.0
Bumps [dotenv](https://github.com/bkeepers/dotenv) from 3.1.8 to 3.2.0.
- [Release notes](https://github.com/bkeepers/dotenv/releases)
- [Changelog](https://github.com/bkeepers/dotenv/blob/main/Changelog.md)
- [Commits](https://github.com/bkeepers/dotenv/compare/v3.1.8...v3.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 09:04:48 +00:00
Maikel Linke
e91fab5702 Remove legacy config for secret key 2025-12-19 14:22:25 +11:00
Maikel Linke
e09853af0c Replace deprecated Rails secrets
Use new credentials interface.
2025-12-19 13:28:05 +11:00
Maikel
c65fcc1072 Merge pull request #13812 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.208.0
Bump aws-sdk-s3 from 1.207.0 to 1.208.0
2025-12-19 10:41:27 +11:00
Maikel
3bb68ec07e Merge pull request #13811 from openfoodfoundation/dependabot/bundler/webmock-3.26.1
Bump webmock from 3.25.1 to 3.26.1
2025-12-19 10:39:45 +11:00
Maikel Linke
2c97638aa1 Enhance readability 2025-12-19 10:21:02 +11:00
Maikel Linke
ceee9671d9 Replace method with name conflict causing error 2025-12-19 10:16:46 +11:00
dependabot[bot]
6b494be7ff Bump aws-sdk-s3 from 1.207.0 to 1.208.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.207.0 to 1.208.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-version: 1.208.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-18 19:38:08 +00:00
dependabot[bot]
a6855e6bc1 Bump webmock from 3.25.1 to 3.26.1
Bumps [webmock](https://github.com/bblimke/webmock) from 3.25.1 to 3.26.1.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.25.1...v3.26.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 09:01:49 +00:00
Gaetan Craig-Riou
7ca43eb4a1 Merge pull request #13810 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.207.0
Bump aws-sdk-s3 from 1.206.0 to 1.207.0
2025-12-17 10:21:50 +11:00
dependabot[bot]
74b5ac559f Bump aws-sdk-s3 from 1.206.0 to 1.207.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.206.0 to 1.207.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-version: 1.207.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 09:02:51 +00:00
Maikel
07c236497c Merge pull request #13808 from openfoodfoundation/dependabot/bundler/vcr-6.3.1
Bump vcr from 6.2.0 to 6.3.1
2025-12-16 14:50:27 +11:00
Filipe
caf2ff9bb4 Merge pull request #13752 from deivid-rodriguez/always_generate_button_tags
Always generate `<button>` tags, rather than `<input>` of type "button"
2025-12-15 18:46:38 +00:00
Filipe
1b2a17d7e4 Merge pull request #13754 from deivid-rodriguez/no-changes-after-delete-customer
Properly handle changes in `code` attribute when a customer is deleted
2025-12-15 17:58:04 +00:00
Filipe
ce46115139 Merge pull request #13648 from deivid-rodriguez/improve-enterprise-removal
Improve enterprise removal
2025-12-15 16:54:05 +00:00
dependabot[bot]
9fd2ff7620 Bump vcr from 6.2.0 to 6.3.1
Bumps [vcr](https://github.com/vcr/vcr) from 6.2.0 to 6.3.1.
- [Release notes](https://github.com/vcr/vcr/releases)
- [Changelog](https://github.com/vcr/vcr/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vcr/vcr/compare/v6.2.0...v6.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 09:02:43 +00:00
Gaetan Craig-Riou
98a25c1c7f Merge pull request #13805 from openfoodfoundation/dependabot/bundler/newrelic_rpm-9.24.0
Bump newrelic_rpm from 9.23.0 to 9.24.0
2025-12-15 09:26:49 +11:00
Ahmed Ejaz
6b78f8b855 Merge pull request #13804 from rioug/13802-revert-enbling-variant-tag-no-inventory
[Inventory] display inventory link for user who manage enterprises with inventory and enterprises without inventory
2025-12-13 01:13:34 +05:00
Ahmed Ejaz
1e2b28c559 Update all locales with the latest Transifex translations 2025-12-13 01:05:55 +05:00
dependabot[bot]
12b86a35af Bump newrelic_rpm from 9.23.0 to 9.24.0
Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.23.0 to 9.24.0.
- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)
- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.23.0...9.24.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 09:02:49 +00:00
Maikel
4577bde692 Merge pull request #13772 from mkllnk/dfc-webhook
Import farm data from LiteFarm
2025-12-12 16:59:30 +11:00
Maikel Linke
af6be02ba4 Fix social media import 2025-12-12 16:46:43 +11:00
Maikel Linke
0dabca583f Set stronger secret password for managers
And avoid depending on Devise for this.
2025-12-12 15:17:57 +11:00
Maikel Linke
d7603755bf Mark Litefarm farms as primary producers 2025-12-12 14:46:11 +11:00
Maikel Linke
f9d255a266 Continue on fail of Litefarm import
And report validation errors.
2025-12-12 14:03:37 +11:00
Gaetan Craig-Riou
bcf4507795 Only show hub with inventory enabled 2025-12-12 13:04:44 +11:00
Gaetan Craig-Riou
9967ba2d06 Allow managing inventory and variant tag at the same time
For users with enterprise with inventory and enterpises with variant
tag, allow access to the inventory page and display variant tag only for
the enterprises its enabled for.
2025-12-12 12:38:22 +11:00
Maikel Linke
f90f71cf68 Update real Litefarm data 2025-12-10 17:18:17 +11:00
Maikel Linke
fe8a0a908e Import DFC country by name or ISO code 2025-12-10 17:17:51 +11:00
Maikel Linke
bf6176c883 Test failed image import 2025-12-10 16:24:54 +11:00
Maikel Linke
ffdfb7d450 Doc: explain when OIDC secrets are required 2025-12-10 16:24:54 +11:00
Maikel Linke
3aa4c2a25f Import more fields from Litefarm 2025-12-10 16:24:54 +11:00
Maikel Linke
3331aaa382 Fetch data from URL provided by Litefarm
So we don't have to distinguish between staging and production. They
will provide the right URL.
2025-12-10 16:24:54 +11:00
Maikel Linke
b302dcfbec Update existing enterprises 2025-12-10 16:24:54 +11:00
Maikel Linke
7dfc4d21ca Record updated Litefarm data 2025-12-10 16:24:53 +11:00
Maikel Linke
f332a6934b Move growing enterprise creation to own class 2025-12-10 16:24:53 +11:00
Maikel Linke
baad0135f9 Import enterprises and owners with minimal data
Still missing:

* Check for existing enterprises.
* Import all the available data.
2025-12-10 16:24:53 +11:00
Maikel Linke
1973e36634 Extract token and HTTP layer for re-use
Calling a webhook as a platform and fetching enterprise data will have
the same auth.
2025-12-10 16:24:53 +11:00
Maikel Linke
2e62531232 Authenticate only as platform to call webhooks 2025-12-10 16:24:53 +11:00
Maikel Linke
d811103a71 Add dummy webhook endpoint for LiteFarm 2025-12-10 16:24:53 +11:00
Gaetan Craig-Riou
e1f4210aa8 Upgrade stripe to version 15 2025-12-10 16:16:32 +11:00
Gaetan Craig-Riou
f3efed7aeb Merge pull request #13796 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.206.0
Bump aws-sdk-s3 from 1.205.0 to 1.206.0
2025-12-10 10:36:35 +11:00
Gaetan Craig-Riou
584b976dff Per review, small code improvment 2025-12-10 10:28:12 +11:00
Gaetan Craig-Riou
4073238654 Per review, fix test webhook
- only show button for payment status changed webhook
- update translation
2025-12-10 10:28:12 +11:00
Gaetan Craig-Riou
d7505bcef4 Add Payments::WebhookPayload to manage payload data
It includes test data so any change in the payload should not affect
the test webhook enpoint functionality
2025-12-10 10:28:12 +11:00
Gaetan Craig-Riou
f6a7225c47 Per review, remove the ensure 2025-12-10 10:28:12 +11:00
Gaetan Craig-Riou
377f33b64f Use a better selector to pick table row 2025-12-10 10:28:12 +11:00
Gaetan Craig-Riou
73b27f14ab Per review, fix comment 2025-12-10 10:28:12 +11:00
Gaetan Craig-Riou
0b497fbb77 Fix order payment spec 2025-12-10 10:28:12 +11:00
Gaetan Craig-Riou
5e4df41ec8 Add button to send test data to endpoint
It will allow a user to easily test the endpoint
2025-12-10 10:28:12 +11:00
Gaetan Craig-Riou
72085be896 Format account.scss with prettier 2025-12-10 10:28:11 +11:00
Gaetan Craig-Riou
e0bc8f9cdc Fix webhook endpoints controller spec 2025-12-10 10:28:11 +11:00
Gaetan Craig-Riou
efcb442a80 Add spec to test notification is triggered 2025-12-10 10:28:11 +11:00
Gaetan Craig-Riou
a38023475c Trigger payment webhook when a payment status changes
It used ActiveSupport::Notifications and a listener :
StatusChangedListenerService to trigger the WebhookService
2025-12-10 10:28:11 +11:00
Gaetan Craig-Riou
4a6ba29b99 Add Payments::WebhookService
It enqueues jobs to post the generated payload to the various configured
webhook endpoints for payment status change
2025-12-10 10:28:11 +11:00
Gaetan Craig-Riou
7f961d90c2 Enable active_job.use_big_decimal_serializer
It prevents the following deprecation warning:
DEPRECATION WARNING: Primitive serialization of BigDecimal job arguments is deprecated as it may serialize via .to_s using certain queue adapters.
       Enable config.active_job.use_big_decimal_serializer to use BigDecimalSerializer instead, which will be mandatory in Rails 7.2.
2025-12-10 10:28:11 +11:00
Gaetan Craig-Riou
0ac4021729 Update spec to include payment status webhook 2025-12-10 10:28:11 +11:00
Gaetan Craig-Riou
ac662de789 Fix spec use actual translation 2025-12-10 10:28:11 +11:00
Gaetan Craig-Riou
23c57cb354 Add UI to manage payment staus webhook endpoint 2025-12-10 10:28:11 +11:00
Gaetan Craig-Riou
d6ef56af6e Fix existing code to support webhook_type 2025-12-10 10:28:11 +11:00
Gaetan Craig-Riou
059e36318e Add type to WebhookEnpoints
Add migration to update existing endpoint to "order_cycle_opened" type
2025-12-10 10:28:08 +11:00
Gaetan Craig-Riou
7a72121b1b Remove flipper groups that are not used anymore 2025-12-10 10:25:33 +11:00
dependabot[bot]
01278c3ee6 Bump aws-sdk-s3 from 1.205.0 to 1.206.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.205.0 to 1.206.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-version: 1.206.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 09:07:25 +00:00
Prikesh Savla
c01cca33c7 Fix encoding issue for Producer name to allow special characters in the text using ng-bind-html 2025-12-09 11:43:12 +05:30
Prikesh Savla
631306cfb3 Extended imageImport and ImageBuilder to get the content type of the file for the attacment for avoiding issues for files without extensions.
Updated config/locale/en.yml for the active_storage_validations related error messages
2025-12-09 08:06:29 +05:30
Gaetan Craig-Riou
da7f46de1f Merge pull request #13792 from openfoodfoundation/dependabot/bundler/rubocop-rspec_rails-2.32.0
Bump rubocop-rspec_rails from 2.31.0 to 2.32.0
2025-12-09 10:47:10 +11:00
Filipe
20107986a6 Merge pull request #13725 from rioug/13642-disable-inventory-not-using
[Variant Tags] Enable variant tag for enterprise with no inventory
2025-12-08 20:38:14 +00:00
Prikesh Savla
f4d59305d7 Upgraded gem active_storage_validations from 1.1.2 to 3.0.2 and fixed any upgrade related issues
Changed all references of processable_image to processable_file which was a breaking change from v1 to v2 https://github.com/igorkasyanchuk/active_storage_validations/tree/3.0.2?tab=readme-ov-file#upgrading-from-1x-to-2x

Also it upgraded the way of validating files from just the file name and content type, so tests also needed to change for file upload checks

Refactored all the similar file image validator content type in Spree::Image::ACCEPTED_CONTENT_TYPES and Updated ImageBuilder.import method to use the url.path when getting filename.
2025-12-08 22:12:01 +05:30
filipefurtad0
dbd0100044 Update all locales with the latest Transifex translations 2025-12-08 10:59:33 +00:00
dependabot[bot]
7f108353e3 Bump rubocop-rspec_rails from 2.31.0 to 2.32.0
Bumps [rubocop-rspec_rails](https://github.com/rubocop/rubocop-rspec_rails) from 2.31.0 to 2.32.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec_rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec_rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec_rails/compare/v2.31.0...v2.32.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 09:06:45 +00:00
Gaetan Craig-Riou
e1775eaad8 Merge pull request #13788 from openfoodfoundation/dependabot/bundler/jwt-2.10.2
Bump jwt from 2.8.1 to 2.10.2
2025-12-08 09:49:04 +11:00
Gaetan Craig-Riou
ad9ebc2f92 Merge pull request #13787 from openfoodfoundation/dependabot/bundler/undercover-0.8.3
Bump undercover from 0.8.2 to 0.8.3
2025-12-08 09:39:32 +11:00
dependabot[bot]
fa4351599f Bump jwt from 2.8.1 to 2.10.2
Bumps [jwt](https://github.com/jwt/ruby-jwt) from 2.8.1 to 2.10.2.
- [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.8.1...v2.10.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-05 09:05:46 +00:00
dependabot[bot]
e5ba0843d8 Bump undercover from 0.8.2 to 0.8.3
Bumps [undercover](https://github.com/grodowski/undercover) from 0.8.2 to 0.8.3.
- [Release notes](https://github.com/grodowski/undercover/releases)
- [Changelog](https://github.com/grodowski/undercover/blob/master/CHANGELOG.md)
- [Commits](https://github.com/grodowski/undercover/compare/v0.8.2...v0.8.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-05 09:05:03 +00:00
Maikel
71fe5bc107 Merge pull request #13780 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.34.2
Bump rubocop-rails from 2.33.4 to 2.34.2
2025-12-05 15:27:29 +11:00
Gaetan Craig-Riou
3c3b591655 Updated rubocop_todo to include new cops 2025-12-05 11:32:33 +11:00
dependabot[bot]
39c7fbef46 Bump rubocop-rails from 2.33.4 to 2.34.2
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.33.4 to 2.34.2.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.33.4...v2.34.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-05 11:32:33 +11:00
Gaetan Craig-Riou
cff52beb06 Merge pull request #13783 from openfoodfoundation/dependabot/bundler/rubocop-rspec-3.8.0
Bump rubocop-rspec from 3.7.0 to 3.8.0
2025-12-05 09:40:43 +11:00
Gaetan Craig-Riou
c4fec2ee76 Merge pull request #13782 from openfoodfoundation/dependabot/bundler/spreadsheet_architect-5.1.0
Bump spreadsheet_architect from 5.0.0 to 5.1.0
2025-12-05 09:37:59 +11:00
dependabot[bot]
952fc15a64 Bump rubocop-rspec from 3.7.0 to 3.8.0
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v3.7.0...v3.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 09:02:31 +00:00
dependabot[bot]
2cbd5b5255 Bump spreadsheet_architect from 5.0.0 to 5.1.0
Bumps [spreadsheet_architect](https://github.com/westonganger/spreadsheet_architect) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/westonganger/spreadsheet_architect/releases)
- [Changelog](https://github.com/westonganger/spreadsheet_architect/blob/master/CHANGELOG.md)
- [Commits](https://github.com/westonganger/spreadsheet_architect/compare/v5.0.0...v5.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 09:01:45 +00:00
Gaetan Craig-Riou
9f77c5912f Merge pull request #13779 from openfoodfoundation/dependabot/bundler/ffaker-2.25.0
Bump ffaker from 2.23.0 to 2.25.0
2025-12-03 13:04:28 +11:00
Gaetan Craig-Riou
1e4c0cb2cc Merge pull request #13778 from openfoodfoundation/dependabot/bundler/bootsnap-1.19.0
Bump bootsnap from 1.18.3 to 1.19.0
2025-12-03 11:56:22 +11:00
Rachel Arnould
ded139458d Merge pull request #13759 from drummer83/storno
Add a unique translatable string for the button that cancels an order
2025-12-02 15:58:44 +01:00
dependabot[bot]
e5f9c39352 Bump ffaker from 2.23.0 to 2.25.0
Bumps [ffaker](https://github.com/ffaker/ffaker) from 2.23.0 to 2.25.0.
- [Release notes](https://github.com/ffaker/ffaker/releases)
- [Changelog](https://github.com/ffaker/ffaker/blob/main/Changelog.md)
- [Commits](https://github.com/ffaker/ffaker/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 09:07:17 +00:00
dependabot[bot]
f0554d8ae2 Bump bootsnap from 1.18.3 to 1.19.0
Bumps [bootsnap](https://github.com/rails/bootsnap) from 1.18.3 to 1.19.0.
- [Changelog](https://github.com/rails/bootsnap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/bootsnap/compare/v1.18.3...v1.19.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 09:03:26 +00:00
Gaetan Craig-Riou
e37caf7a96 Merge pull request #13774 from openfoodfoundation/dependabot/bundler/angular-rails-templates-1.4.0
Bump angular-rails-templates from 1.3.1 to 1.4.0
2025-12-01 10:37:40 +11:00
Gaetan Craig-Riou
03653bee60 Merge pull request #13773 from openfoodfoundation/dependabot/bundler/foreman-0.90.0
Bump foreman from 0.88.1 to 0.90.0
2025-12-01 10:36:41 +11:00
Gaetan Craig-Riou
43cf6e4147 Per review, use string for group name 2025-12-01 09:58:53 +11:00
dependabot[bot]
7f01658f47 Bump angular-rails-templates from 1.3.1 to 1.4.0
Bumps [angular-rails-templates](https://github.com/pitr/angular-rails-templates) from 1.3.1 to 1.4.0.
- [Release notes](https://github.com/pitr/angular-rails-templates/releases)
- [Changelog](https://github.com/pitr/angular-rails-templates/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pitr/angular-rails-templates/compare/v1.3.1...v1.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-28 09:03:30 +00:00
dependabot[bot]
7701561755 Bump foreman from 0.88.1 to 0.90.0
Bumps [foreman](https://github.com/ddollar/foreman) from 0.88.1 to 0.90.0.
- [Changelog](https://github.com/ddollar/foreman/blob/main/Changelog.md)
- [Commits](https://github.com/ddollar/foreman/compare/v0.88.1...v0.90.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-28 09:02:50 +00:00
Maikel Linke
0bdee785bb Update all locales with the latest Transifex translations 2025-11-28 12:37:53 +11:00
Maikel
1029b61bb0 Merge pull request #13742 from mkllnk/market-organic
Add Market Organic as available platform
2025-11-28 12:15:57 +11:00
Gaetan Craig-Riou
065e7a420b Merge pull request #13770 from openfoodfoundation/dependabot/bundler/pagy-9.4.0
Bump pagy from 9.3.4 to 9.4.0
2025-11-28 10:32:22 +11:00
Gaetan Craig-Riou
fe4b6accb0 Merge pull request #13767 from openfoodfoundation/dependabot/bundler/turbo-rails-2.0.20
Bump turbo-rails from 2.0.5 to 2.0.20
2025-11-28 10:28:12 +11:00
Gaetan Craig-Riou
1049ec277c Add migration to enable the correct group and disable old ones 2025-11-28 10:21:32 +11:00
Filipe
b3314d7441 Merge pull request #13689 from rahsheen/fix/13396-cloned-order-cycles-not-processed
Clear opened_at when cloning order cycle
2025-11-27 18:52:09 +00:00
David Rodríguez
c526e72539 Improve enterprise removal (failure case)
Make sure failure to delete due to dependent objects is handled through
activemodel errors and not by rescuing
`ActiveRecord::DeleteRestrictionError` exceptions.

Previously we would display two alert prompts, and we would weirdly
display the content of our 500 error page on top of the screen.

Now, we display a flash error message explaining the reason to fail to
remove it.
2025-11-27 19:10:15 +01:00
David Rodríguez
e217a6fca8 Make enterprise unit specs about removal consistent
And not dependent on implementation details.
2025-11-27 19:09:45 +01:00
David Rodríguez
6aa7ef3c21 Improve enterprise removal (success case)
Make enterprise removal use turbo, which provides the following
benefits:

* More responsive removal since there's no full page reload.
* A success flash message (previously nothing was displayed).
* No double alert prompt.

It also goes in the direction of removing mrujs in favor of turbo.
2025-11-27 19:09:35 +01:00
dependabot[bot]
77121dfacf Bump pagy from 9.3.4 to 9.4.0
Bumps [pagy](https://github.com/ddnexus/pagy) from 9.3.4 to 9.4.0.
- [Release notes](https://github.com/ddnexus/pagy/releases)
- [Changelog](https://github.com/ddnexus/pagy/blob/9.4.0/CHANGELOG.md)
- [Commits](https://github.com/ddnexus/pagy/compare/9.3.4...9.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-27 09:02:19 +00:00
David Cook
04323388ad Merge pull request #13766 from openfoodfoundation/dependabot/bundler/combine_pdf-1.0.31
Bump combine_pdf from 1.0.26 to 1.0.31
2025-11-27 10:35:15 +11:00
David Rodríguez
bf0e5c0d44 Let "Tag Rule" and "Voucher" be translated in flash messages 2025-11-26 12:18:06 +01:00
David Rodríguez
6bd2f5af8d Use Spree.t directly for translating the successfully_removed flash message
Since none of the current keys have a `%{resource}` parameter.
2025-11-26 12:18:06 +01:00
David Rodríguez
7bf54088a6 Use Spree.t directly for translating the not_found message
Since none of the current keys interpolate a `%{resource}` parameter.
2025-11-26 12:18:06 +01:00
David Rodríguez
4792040240 Cover tax category removal with a spec 2025-11-26 12:18:05 +01:00
dependabot[bot]
700be792e5 Bump turbo-rails from 2.0.5 to 2.0.20
Bumps [turbo-rails](https://github.com/hotwired/turbo-rails) from 2.0.5 to 2.0.20.
- [Release notes](https://github.com/hotwired/turbo-rails/releases)
- [Commits](https://github.com/hotwired/turbo-rails/compare/v2.0.5...v2.0.20)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-26 09:04:01 +00:00
dependabot[bot]
9f2ece379a Bump combine_pdf from 1.0.26 to 1.0.31
Bumps [combine_pdf](https://github.com/boazsegev/combine_pdf) from 1.0.26 to 1.0.31.
- [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.26...v1.0.31)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-26 09:02:07 +00:00
Maikel
2662371507 Merge pull request #13755 from deivid-rodriguez/no-default-stylesheet-media
Pass media attribute explicitly to stylesheet link tags
2025-11-26 15:45:46 +11:00
Gaetan Craig-Riou
172647f1cd Rework group to enable variant tag and inventory
To make it easier to manage, enterprises with no inventory will have
variant tag enabled, and enterprises with inventory will have inventory
enabled.
Add migration to disable old group and enabled new group
2025-11-26 13:29:40 +11:00
Maikel
24fc3e9e86 Merge pull request #13748 from mkllnk/connector
Bump DFC version from 1.14 to 1.16 with new country and phone format
2025-11-26 12:32:02 +11:00
Gaetan Craig-Riou
b064173b7a Merge pull request #13758 from openfoodfoundation/dependabot/bundler/debug-1.11.0
Bump debug from 1.9.2 to 1.11.0
2025-11-26 10:58:07 +11:00
Gaetan Craig-Riou
f95581cd1f Merge pull request #13756 from openfoodfoundation/dependabot/bundler/whenever-1.1.0
Bump whenever from 1.0.0 to 1.1.0
2025-11-26 10:57:13 +11:00
Konrad
b113fe08e1 Add a unique translatable string for the button that cancels an order (button at the top of the edit order page) to allow a different translation than the regular 'Cancel' button. 2025-11-25 10:20:16 +01:00
dependabot[bot]
93d73f4763 Bump debug from 1.9.2 to 1.11.0
Bumps [debug](https://github.com/ruby/debug) from 1.9.2 to 1.11.0.
- [Release notes](https://github.com/ruby/debug/releases)
- [Commits](https://github.com/ruby/debug/compare/v1.9.2...v1.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 09:06:09 +00:00
dependabot[bot]
154d17969c Bump whenever from 1.0.0 to 1.1.0
Bumps [whenever](https://github.com/javan/whenever) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/javan/whenever/releases)
- [Changelog](https://github.com/javan/whenever/blob/main/CHANGELOG.md)
- [Commits](https://github.com/javan/whenever/compare/v1.0.0...v1.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 09:01:45 +00:00
David Rodríguez
e32dcd53b5 Pass media attribute explicitly to stylesheet link tags
So that we can enable Rails default behavior for potential future such link
tags without changing current behavior.
2025-11-25 08:08:59 +01:00
David Rodríguez
dc631026d4 Properly handle changes in code attribute when a customer is deleted
Previously, `null` and empty value would be confused when a customer is
removed, resulting in incorrect pending changes being added, and thus a
"You have unsaved changes" message getting displayed and the save button
not getting disabled.
2025-11-25 07:44:00 +01:00
David Cook
44c4a66970 Merge pull request #13741 from mkllnk/gem-coop
Replace rubygems.org with gem.coop
2025-11-25 13:01:03 +11:00
Gaetan Craig-Riou
d05834b896 Merge pull request #13751 from openfoodfoundation/dependabot/bundler/dotenv-3.1.8
Bump dotenv from 3.1.2 to 3.1.8
2025-11-25 11:39:29 +11:00
Gaetan Craig-Riou
854e136d09 Merge pull request #13750 from openfoodfoundation/dependabot/bundler/flipper-active_record-1.3.6
Bump flipper-active_record from 1.3.0 to 1.3.6
2025-11-25 11:37:19 +11:00
Gaetan Craig-Riou
7f3fc4ff91 Merge pull request #13749 from openfoodfoundation/dependabot/bundler/view_component-4.1.1
Bump view_component from 3.12.1 to 4.1.1
2025-11-25 11:32:31 +11:00
David Rodríguez
c05532c166 Always generate <button> tags, rather than <input> of type "button" 2025-11-24 12:11:03 +01:00
dependabot[bot]
62ae62db5a Bump dotenv from 3.1.2 to 3.1.8
Bumps [dotenv](https://github.com/bkeepers/dotenv) from 3.1.2 to 3.1.8.
- [Release notes](https://github.com/bkeepers/dotenv/releases)
- [Changelog](https://github.com/bkeepers/dotenv/blob/main/Changelog.md)
- [Commits](https://github.com/bkeepers/dotenv/compare/v3.1.2...v3.1.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 09:13:22 +00:00
dependabot[bot]
a6fc49abce Bump flipper-active_record from 1.3.0 to 1.3.6
Bumps [flipper-active_record](https://github.com/flippercloud/flipper) from 1.3.0 to 1.3.6.
- [Release notes](https://github.com/flippercloud/flipper/releases)
- [Changelog](https://github.com/flippercloud/flipper/blob/main/Changelog.md)
- [Commits](https://github.com/flippercloud/flipper/compare/v1.3.0...v1.3.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 09:12:40 +00:00
dependabot[bot]
528c5a3593 Bump view_component from 3.12.1 to 4.1.1
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.12.1 to 4.1.1.
- [Release notes](https://github.com/viewcomponent/view_component/releases)
- [Changelog](https://github.com/ViewComponent/view_component/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/viewcomponent/view_component/compare/v3.12.1...v4.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 09:12:02 +00:00
Maikel Linke
81165cd82b Replace country names with standard ISO code concepts
The DFC version 1.16.0 introduced this new standardisation.
2025-11-24 16:59:41 +11:00
Maikel Linke
faf50a1922 Bump datafoodconsortium-connector from 1.1.0 to 1.2.0 2025-11-24 16:45:06 +11:00
Maikel Linke
5f237adda2 Publish phone numbers as objects
The standard introduced this a while ago but I didn't notice.

We have to update integrations like Disco Regen now.
2025-11-24 16:44:23 +11:00
Maikel Linke
2e09a96c4b Document new managedBy attribute on DFC API 2025-11-24 15:19:34 +11:00
Gaetan Craig-Riou
6ae47c208a Per review, don't use one line rescue
One line rescue will rescue any exception and doesn't allow for rescuing
specific exception: https://thoughtbot.com/blog/don-t-inline-rescue-in-ruby
2025-11-24 13:47:32 +11:00
Gaetan Craig-Riou
82139a9ac0 Merge pull request #13747 from mkllnk/doc-reset
Show reset tasks in task list `./bin/rails -T`
2025-11-24 13:19:33 +11:00
Gaetan Craig-Riou
6d9946c3c6 Merge pull request #13738 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.205.0
Bump aws-sdk-s3 from 1.151.0 to 1.205.0
2025-11-24 13:17:41 +11:00
Maikel Linke
f58b6bcada Show reset tasks in task list ./bin/rails -T
I wrote them a while ago but noticed only now that they don't show up in
the overview.
2025-11-24 12:59:41 +11:00
Maikel
dc13ef4162 Merge pull request #13743 from deivid-rodriguez/bump-prettier
Bump prettier and let Dependabot handle further updates
2025-11-24 12:06:19 +11:00
Maikel
dcb48272f5 Merge pull request #13746 from rioug/security-255-code-injection
[Security]  Fix potential code injection
2025-11-24 12:01:44 +11:00
Gaetan Craig-Riou
08bc374576 Merge pull request #13740 from openfoodfoundation/dependabot/bundler/image_processing-1.14.0
Bump image_processing from 1.12.2 to 1.14.0
2025-11-24 09:48:37 +11:00
Gaetan Craig-Riou
afbf0a5d0e Merge pull request #13739 from openfoodfoundation/dependabot/bundler/database_cleaner-2.1.0
Bump database_cleaner from 2.0.2 to 2.1.0
2025-11-24 09:32:45 +11:00
Gaetan Craig-Riou
7e034a3037 Merge pull request #13737 from openfoodfoundation/dependabot/npm_and_yarn/webpack-4.47.0
Bump webpack from 4.46.0 to 4.47.0
2025-11-24 09:21:11 +11:00
Ahmed Ejaz
2db2fb2f11 Update all locales with the latest Transifex translations 2025-11-24 03:07:32 +05:00
Gaetan Craig-Riou
74d2a94181 Add input validation to prevent code injection
Plus spec
2025-11-23 13:46:36 +11:00
rahsheen
7a5b273e71 update specs 2025-11-22 10:51:17 -05:00
rahsheen
0b6e7593db Set oc.opened at nil when cloning service 2025-11-22 10:51:17 -05:00
David Rodríguez
6d0d91c56a Let prettier updates be handled by Dependabot 2025-11-21 12:49:44 +01:00
David Rodríguez
a509d49ec6 Bump prettier to 3.6.2
And fix new style issues.
2025-11-21 12:49:06 +01:00
Filipe
dddc945c42 Merge pull request #13679 from deivid-rodriguez/customer-edition
Improve `/admin/customers` form handling
2025-11-21 10:51:55 +00:00
Filipe
12c0363b7e Merge pull request #13716 from chahmedejaz/bugfix/13554-sorting-on-demand-products
"On hand" value influences sorting of "on demand" products/variants
2025-11-21 10:05:44 +00:00
Gaetan Craig-Riou
bb0903cd4a Fix rubocop issue
And revert the autoformating of short hand rescue
2025-11-21 16:15:47 +11:00
Gaetan Craig-Riou
e93cb485a1 Per review, use exists? so we run only one query 2025-11-21 16:07:46 +11:00
Maikel Linke
fbce264dd7 Adjust webhook URL for Market Organic 2025-11-21 14:16:47 +11:00
Maikel Linke
3c1313bfa0 Add Market Organic as available platform 2025-11-21 14:16:47 +11:00
Maikel Linke
4ca420bd84 Correct needed scope of access token 2025-11-21 14:16:41 +11:00
Maikel Linke
134ea28249 Remove obsolete DPM option 2025-11-21 13:47:00 +11:00
Maikel Linke
78cfc0db65 Replace rubygems.org with gem.coop
Several maintainers of RubyGems created gem.coop as a community-governed
service after a takeover by RubyCentral, pushed by Shopify.

We are moving with the community that reflects our values best.
2025-11-21 12:59:30 +11:00
dependabot[bot]
816e06d37c Bump image_processing from 1.12.2 to 1.14.0
Bumps [image_processing](https://github.com/janko/image_processing) from 1.12.2 to 1.14.0.
- [Changelog](https://github.com/janko/image_processing/blob/master/CHANGELOG.md)
- [Commits](https://github.com/janko/image_processing/compare/v1.12.2...v1.14.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 01:21:08 +00:00
dependabot[bot]
2e80b7d92f Bump database_cleaner from 2.0.2 to 2.1.0
Bumps [database_cleaner](https://github.com/DatabaseCleaner/database_cleaner) from 2.0.2 to 2.1.0.
- [Changelog](https://github.com/DatabaseCleaner/database_cleaner/blob/main/History.rdoc)
- [Commits](https://github.com/DatabaseCleaner/database_cleaner/compare/v2.0.2...v2.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 01:20:30 +00:00
dependabot[bot]
753173e2be Bump aws-sdk-s3 from 1.151.0 to 1.205.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.151.0 to 1.205.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-version: 1.205.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 01:19:54 +00:00
dependabot[bot]
c9954f0823 Bump webpack from 4.46.0 to 4.47.0
Bumps [webpack](https://github.com/webpack/webpack) from 4.46.0 to 4.47.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.46.0...v4.47.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 01:18:20 +00:00
Maikel
80f5fa30c4 Merge pull request #13736 from deivid-rodriguez/unify-dependabot-strategy
Unify dependabot strategy
2025-11-21 12:17:15 +11:00
Gaetan Craig-Riou
9194d0ba2b Merge pull request #13733 from openfoodfoundation/dependabot/bundler/rubocop-1.81.7
Bump rubocop from 1.81.6 to 1.81.7
2025-11-21 10:16:12 +11:00
Gaetan Craig-Riou
e00c993a98 Merge pull request #13732 from openfoodfoundation/dependabot/bundler/undercover-0.8.2
Bump undercover from 0.8.1 to 0.8.2
2025-11-21 10:11:54 +11:00
Gaetan Craig-Riou
800333f65b Merge pull request #13731 from openfoodfoundation/dependabot/bundler/arel-helpers-2.17.0
Bump arel-helpers from 2.14.0 to 2.17.0
2025-11-21 10:10:33 +11:00
Ahmed Ejaz
64df7cc9bc Refactor backorderable_name tests for clarity and consistency in product sorting 2025-11-20 06:06:56 +05:00
Ahmed Ejaz
b23fec268e fix lint issues 2025-11-20 05:08:07 +05:00
Ahmed Ejaz
7b7a7d3418 Add backorderable_name sorting and enhance combined sorting tests 2025-11-20 05:01:08 +05:00
David Rodríguez
6fa99b187d Unify Dependabot strategy
Let's do the same we do for Ruby dependencies.
2025-11-19 14:47:44 +01:00
David Rodríguez
a009dacd41 Pin version of foundation
Reading through open issues, I think it's more likely that we end up
removing it rather than upgrading it.

So let's fix it like when we don't want certain dependencies to be
managed by Dependabot.
2025-11-19 14:45:52 +01:00
dependabot[bot]
472ba98ec2 Bump rubocop from 1.81.6 to 1.81.7
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.81.6 to 1.81.7.
- [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.81.6...v1.81.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 09:02:45 +00:00
dependabot[bot]
91cd3356b0 Bump undercover from 0.8.1 to 0.8.2
Bumps [undercover](https://github.com/grodowski/undercover) from 0.8.1 to 0.8.2.
- [Release notes](https://github.com/grodowski/undercover/releases)
- [Changelog](https://github.com/grodowski/undercover/blob/master/CHANGELOG.md)
- [Commits](https://github.com/grodowski/undercover/compare/v0.8.1...v0.8.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 09:02:08 +00:00
dependabot[bot]
67ef142546 Bump arel-helpers from 2.14.0 to 2.17.0
Bumps [arel-helpers](https://github.com/camertron/arel-helpers) from 2.14.0 to 2.17.0.
- [Changelog](https://github.com/camertron/arel-helpers/blob/master/CHANGELOG.md)
- [Commits](https://github.com/camertron/arel-helpers/compare/v2.14.0...v2.17.0)

---
updated-dependencies:
- dependency-name: arel-helpers
  dependency-version: 2.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 09:01:31 +00:00
Maikel
0aa4993a4d Merge pull request #13686 from mkllnk/litefarm-market-organic
Allow Litefarm and Market.Organic to access DFC API
2025-11-19 15:11:51 +11:00
Gaetan Craig-Riou
98176bd5de Merge pull request #13730 from openfoodfoundation/dependabot/bundler/redcarpet-3.6.1
Bump redcarpet from 3.6.0 to 3.6.1
2025-11-19 10:10:20 +11:00
Gaetan Craig-Riou
dde0e23a79 Merge pull request #13729 from openfoodfoundation/dependabot/bundler/wicked_pdf-2.8.2
Bump wicked_pdf from 2.8.1 to 2.8.2
2025-11-19 10:08:42 +11:00
Gaetan Craig-Riou
d1021210e6 Merge pull request #13728 from openfoodfoundation/dependabot/bundler/rubocop-factory_bot-2.28.0
Bump rubocop-factory_bot from 2.27.1 to 2.28.0
2025-11-19 10:08:08 +11:00
dependabot[bot]
bfa472a293 Bump redcarpet from 3.6.0 to 3.6.1
Bumps [redcarpet](https://github.com/vmg/redcarpet) from 3.6.0 to 3.6.1.
- [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.6.0...v3.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 09:02:38 +00:00
dependabot[bot]
9d14c1026c Bump wicked_pdf from 2.8.1 to 2.8.2
Bumps [wicked_pdf](https://github.com/mileszs/wicked_pdf) from 2.8.1 to 2.8.2.
- [Release notes](https://github.com/mileszs/wicked_pdf/releases)
- [Changelog](https://github.com/mileszs/wicked_pdf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mileszs/wicked_pdf/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 09:02:04 +00:00
dependabot[bot]
c653743a56 Bump rubocop-factory_bot from 2.27.1 to 2.28.0
Bumps [rubocop-factory_bot](https://github.com/rubocop/rubocop-factory_bot) from 2.27.1 to 2.28.0.
- [Release notes](https://github.com/rubocop/rubocop-factory_bot/releases)
- [Changelog](https://github.com/rubocop/rubocop-factory_bot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-factory_bot/compare/v2.27.1...v2.28.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 09:01:30 +00:00
Gaetan Craig-Riou
28af42371b Add migration to turn varian tags on 2025-11-18 14:07:59 +11:00
Gaetan Craig-Riou
acfe180e1d Fix check inventory enabled
Inventory cannot be enabled if variant tag is also enabled
Re generated the rubocop todo to account for Product::Importer, it has
too many line but it's temporary. Once the inventory is removed it won't
be an issue anymore
2025-11-18 13:56:46 +11:00
Gaetan Craig-Riou
7d20eb4fea Add group to enable variant tag for old enterprise
It will allow enterprises with inventory enabled but which are not using
the inventory to have variant tag enable.
2025-11-18 13:56:46 +11:00
Filipe
a1ee1eac4c Merge pull request #13680 from rioug/13674-enable-variant-tag-new-enterprise
[Variant tags] Enable variant tag for enterprise created after 11th of August and super admins
2025-11-17 23:05:11 +00:00
Gaetan Craig-Riou
84b351e076 Merge pull request #13723 from openfoodfoundation/dependabot/npm_and_yarn/js-yaml-3.14.2
Bump js-yaml from 3.14.1 to 3.14.2
2025-11-18 09:51:04 +11:00
Ahmed Ejaz
9f7faac842 Remove .tool-versions file 2025-11-18 03:49:06 +05:00
dependabot[bot]
02c1b309f3 Bump js-yaml from 3.14.1 to 3.14.2
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 22:36:10 +00:00
Gaetan Craig-Riou
58028df3b7 Merge pull request #13721 from openfoodfoundation/dependabot/bundler/newrelic_rpm-9.23.0
Bump newrelic_rpm from 9.22.0 to 9.23.0
2025-11-18 09:29:31 +11:00
Gaetan Craig-Riou
638c139bca Merge pull request #13720 from openfoodfoundation/dependabot/bundler/bugsnag-6.28.0
Bump bugsnag from 6.26.4 to 6.28.0
2025-11-18 09:28:23 +11:00
Gaetan Craig-Riou
5adfdf11fb Merge pull request #13719 from openfoodfoundation/dependabot/bundler/angular_rails_csrf-7.0.2
Bump angular_rails_csrf from 6.0.0 to 7.0.2
2025-11-18 09:26:57 +11:00
dependabot[bot]
152a7b7fe9 Bump newrelic_rpm from 9.22.0 to 9.23.0
Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.22.0 to 9.23.0.
- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)
- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.22.0...9.23.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 09:05:19 +00:00
dependabot[bot]
5c998bfc77 Bump bugsnag from 6.26.4 to 6.28.0
Bumps [bugsnag](https://github.com/bugsnag/bugsnag-ruby) from 6.26.4 to 6.28.0.
- [Release notes](https://github.com/bugsnag/bugsnag-ruby/releases)
- [Changelog](https://github.com/bugsnag/bugsnag-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bugsnag/bugsnag-ruby/compare/v6.26.4...v6.28.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 09:04:19 +00:00
dependabot[bot]
97ca8702d4 Bump angular_rails_csrf from 6.0.0 to 7.0.2
Bumps [angular_rails_csrf](https://github.com/jsanders/angular_rails_csrf) from 6.0.0 to 7.0.2.
- [Release notes](https://github.com/jsanders/angular_rails_csrf/releases)
- [Changelog](https://github.com/bodrovis/angular_rails_csrf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsanders/angular_rails_csrf/compare/v6.0.0...v7.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 09:03:44 +00:00
Maikel
e194ebf0f3 Merge pull request #13552 from openfoodfoundation/dependabot/npm_and_yarn/jest-30.2.0
Bump jest from 27.5.1 to 30.2.0
2025-11-17 15:21:57 +11:00
Gaetan Craig-Riou
f6fc8a6993 Merge pull request #13715 from openfoodfoundation/dependabot/bundler/rexml-3.4.2
Bump rexml from 3.3.9 to 3.4.2
2025-11-17 15:07:10 +11:00
Gaetan Craig-Riou
cbf6b4462e Merge pull request #13712 from openfoodfoundation/dependabot/bundler/shoulda-matchers-7.0.1
Bump shoulda-matchers from 6.2.0 to 7.0.1
2025-11-17 15:04:52 +11:00
Gaetan Craig-Riou
c03580180a Merge pull request #13711 from openfoodfoundation/dependabot/bundler/geocoder-1.8.6
Bump geocoder from 1.8.3 to 1.8.6
2025-11-17 15:03:06 +11:00
Gaetan Craig-Riou
77b72134d8 Merge pull request #13710 from openfoodfoundation/dependabot/bundler/good_migrations-0.3.1
Bump good_migrations from 0.2.1 to 0.3.1
2025-11-17 15:02:16 +11:00
Ahmed Ejaz
c638e2e65e Update specs to prioritize name order in case of on-demand products 2025-11-16 17:02:47 +05:00
dependabot[bot]
25ac714cc6 Bump rexml from 3.3.9 to 3.4.2
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.9 to 3.4.2.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.9...v3.4.2)

---
updated-dependencies:
- dependency-name: rexml
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 23:10:57 +00:00
Filipe
475e6c33f1 Merge pull request #13498 from chahmedejaz/task/13497-upgrade-activemerchant-gem
Upgrade ActiveMerchant to v1.137.0 and rexml to 3.3.9
2025-11-14 23:09:47 +00:00
Ahmed Ejaz
ae70a1372b Remove version constraints for activemerchant and angular-rails-templates in Gemfile 2025-11-15 01:46:30 +05:00
Ahmed Ejaz
6eb6bf634f Update activemerchant version constraint to '>= 1.137.0' in Gemfile and Gemfile.lock 2025-11-15 01:46:30 +05:00
Ahmed Ejaz
a82209af85 Update activemerchant version constraint to '~> 1.137.0' in Gemfile and Gemfile.lock 2025-11-15 01:46:30 +05:00
Ahmed Ejaz
ecf0d53f0a Revert "revert "Bump rexml from 3.2.9 to 3.3.9""
This reverts commit c821b0a285.
2025-11-15 01:46:30 +05:00
Filipe
fc047e3f7c Merge pull request #13668 from openfoodfoundation/dependabot/npm_and_yarn/leaflet-providers-3.0.0
Bump leaflet-providers from 2.0.0 to 3.0.0
2025-11-14 18:21:59 +00:00
Filipe
d9e3076a3b Merge pull request #13654 from pacodelaluna/check-enterprise-image-logic
Improve enterprise images-related logic
2025-11-14 18:15:50 +00:00
Filipe
271e895486 Merge pull request #13676 from deivid-rodriguez/z-index
Fix tag rule visibility select box options hidden by save bar
2025-11-14 17:41:52 +00:00
Filipe
3e02a03312 Merge pull request #13650 from rioug/13539-update-variant-multi-producer
Fix update multi producer products
2025-11-14 16:56:16 +00:00
dependabot[bot]
ec31ff418d Bump shoulda-matchers from 6.2.0 to 7.0.1
Bumps [shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers) from 6.2.0 to 7.0.1.
- [Release notes](https://github.com/thoughtbot/shoulda-matchers/releases)
- [Changelog](https://github.com/thoughtbot/shoulda-matchers/blob/main/CHANGELOG.md)
- [Commits](https://github.com/thoughtbot/shoulda-matchers/compare/v6.2.0...v7.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 01:38:47 +00:00
dependabot[bot]
22f3577b0d Bump geocoder from 1.8.3 to 1.8.6
Bumps [geocoder](https://github.com/alexreisner/geocoder) from 1.8.3 to 1.8.6.
- [Changelog](https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alexreisner/geocoder/compare/v1.8.3...v1.8.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 01:36:45 +00:00
dependabot[bot]
9c9773f493 Bump good_migrations from 0.2.1 to 0.3.1
Bumps [good_migrations](https://github.com/testdouble/good-migrations) from 0.2.1 to 0.3.1.
- [Changelog](https://github.com/testdouble/good-migrations/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testdouble/good-migrations/compare/v0.2.1...v0.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 01:35:47 +00:00
Gaetan Craig-Riou
33cea470ad Merge pull request #13704 from deivid-rodriguez/more-dependabot
Update all webpack related dependencies together
2025-11-14 12:32:34 +11:00
Gaetan Craig-Riou
17ac3507a6 Merge pull request #13701 from openfoodfoundation/dependabot/bundler/angular-rails-templates-1.3.1
Bump angular-rails-templates from 1.2.1 to 1.3.1
2025-11-14 12:06:34 +11:00
Ahmed Ejaz
763655f0e5 Enhance product sorting for On-Demand items and add backorderable name support 2025-11-14 06:04:32 +05:00
Gaetan Craig-Riou
7cf0a95688 Merge pull request #13700 from openfoodfoundation/dependabot/bundler/rswag-ui-2.17.0
Bump rswag-ui from 2.16.0 to 2.17.0
2025-11-14 11:25:14 +11:00
Gaetan Craig-Riou
c641fae2b9 Merge pull request #13699 from openfoodfoundation/dependabot/bundler/rails-7.1.6
Bump rails from 7.1.5.2 to 7.1.6
2025-11-14 11:23:21 +11:00
Gaetan Craig-Riou
526df1cb9c Merge pull request #13698 from openfoodfoundation/dependabot/bundler/acts-as-taggable-on-13.0.0
Bump acts-as-taggable-on from 10.0.0 to 13.0.0
2025-11-14 11:20:47 +11:00
Gaetan Craig-Riou
f4e9daec80 Merge pull request #13706 from deivid-rodriguez/tweak-reviewdog
Let reviewdog use github-pr-annotation formatter
2025-11-14 10:44:51 +11:00
Ahmed Ejaz
3e2cd839cc add .tools-versions for asdf version manager 2025-11-14 04:38:52 +05:00
Gaetan Craig-Riou
b9a790ba20 Per review, comment out transform configuration
We are using the default one, no need to actually specify it, and also
updated the documentaion link to the latest documentation.
2025-11-14 10:32:14 +11:00
Maikel Linke
aaad1bc0b3 Accept short client ids in tokens 2025-11-14 10:00:16 +11:00
Maikel Linke
d7f4a5c874 Allow Market.Organic to access DFC API 2025-11-14 10:00:16 +11:00
Maikel Linke
f8ca8ae942 Trust FDC dev realm to sign tokens 2025-11-14 10:00:16 +11:00
Maikel Linke
2805ea4926 Allow LiteFarm to access DFC API 2025-11-14 10:00:16 +11:00
David Rodríguez
36ac5dc44e Let reviewdog use github-pr-annotation formatter
This is already the default for forked PRs, and most (if not all) PRs to
this repository come from forks anyways.
2025-11-13 20:39:09 +01:00
David Rodríguez
49a976810b Update all webpack related dependencies together 2025-11-13 08:45:18 +01:00
David Rodríguez
f6d605a3aa Dismiss success message automatically after 5 seconds
We were already eventually removing the "success" border style on
inputs. I think it makes sense to do the same for the success message
itself. That's how our standard "flash messages" already work.
2025-11-13 08:37:52 +01:00
David Rodríguez
6901323827 Fix success message taking 5 seconds to show up
This is pretty black magic to me, but my understanding is that:

* When submitting customer forms, we use `$q.all()` on the result of
  submitting each form asynchronously in order to decide whether to
  display a success message (no errors) or a failure message.

* The value returned for each particular form submission was the return
  value of either `change.scope.success()` or `change.scope.error()`.
  These use the `switchClass` factory, which changes a particular DOM
  element's class to the proper pending/success/error class, but in the
  success case, it also sets a timeout to remove the class using
  `$timeout()`, which is a promise, and that was its return value.

* Because of the above, `$q.all()` was actually waiting for the
  `$timeout()` promise to be fulfilled before proceeding.

The fix is to not return a `$timeout()` promise from the `switchClass`
factory when a timeout is passed, but instead set a timeout on the
element, but return the element itself regardless.
2025-11-13 08:37:52 +01:00
David Rodríguez
186fe0503f Show orange border when input has changes
Even if it's on focus.
2025-11-13 08:37:52 +01:00
David Rodríguez
e990e5ffd5 Don't show flash messages in customer edition form
They don't actually show up when the customer is saved, but the next
time the page is reloaded. We already have the save bar for the same
purpose so it's not necessary.
2025-11-13 08:37:52 +01:00
David Rodríguez
3d7207d8c5 Properly track changes in code attribute
If the code was initially nil, some value is added, and then removed, we
would not detect that the code has not actually changed.
2025-11-13 08:37:52 +01:00
David Rodríguez
4b31352e4f Wait for page before checking DB 2025-11-13 08:37:51 +01:00
David Rodríguez
278a8b1ec2 Let save-bar properly track form state
* Keep save bar visible as long as there's a customer form displayed.
* Only display "You have unsaved changes" when there's any difference
  from the original values. If form changes are reverted, hide that
  note.
* Similarly, only let the button be enabled if there are any actual
  changes to be saved.
2025-11-13 08:37:51 +01:00
Gaetan Craig-Riou
b96a0875f3 Turn on cleaning up of globals.
It will be come default in future jest release, currently jest isn't
emitting any warning so there is no reason to wait to turn it on.
2025-11-13 09:44:22 +11:00
Gaetan Craig-Riou
4e62e20fa8 Fix test to work with new jsdom restriction
since jsdom 21, it's no longer possible to mock window.location
See : https://github.com/jsdom/jsdom/issues/3492
2025-11-11 14:58:48 +11:00
Gaetan Craig-Riou
2729fb14d6 Fix jest configuration to work with version 28
Per migration guide : https://jest-archive-august-2023.netlify.app/docs/28.x/upgrading-to-jest28/
2025-11-11 14:58:43 +11:00
dependabot[bot]
5dab6f67f2 Bump jest from 27.5.1 to 30.2.0
Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) from 27.5.1 to 30.2.0.
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v30.2.0/packages/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 14:56:15 +11:00
dependabot[bot]
3aa48fcd18 Bump angular-rails-templates from 1.2.1 to 1.3.1
Bumps [angular-rails-templates](https://github.com/pitr/angular-rails-templates) from 1.2.1 to 1.3.1.
- [Release notes](https://github.com/pitr/angular-rails-templates/releases)
- [Changelog](https://github.com/pitr/angular-rails-templates/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pitr/angular-rails-templates/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 02:50:19 +00:00
dependabot[bot]
e5fd5a0d4c Bump rswag-ui from 2.16.0 to 2.17.0
Bumps [rswag-ui](https://github.com/rswag/rswag) from 2.16.0 to 2.17.0.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/2.17.0/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.16.0...2.17.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 02:48:08 +00:00
David Cook
ad5a22a69b Merge pull request #13691 from rioug/fix-order-cycle-flaky-spec
Fix flaky spec
2025-11-11 13:47:41 +11:00
dependabot[bot]
43b3114237 Bump rails from 7.1.5.2 to 7.1.6
Bumps [rails](https://github.com/rails/rails) from 7.1.5.2 to 7.1.6.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v7.1.5.2...v7.1.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 02:47:34 +00:00
dependabot[bot]
a83109cb05 Bump acts-as-taggable-on from 10.0.0 to 13.0.0
Bumps [acts-as-taggable-on](https://github.com/mbleigh/acts-as-taggable-on) from 10.0.0 to 13.0.0.
- [Release notes](https://github.com/mbleigh/acts-as-taggable-on/releases)
- [Changelog](https://github.com/mbleigh/acts-as-taggable-on/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mbleigh/acts-as-taggable-on/compare/v10.0.0...v13.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 02:46:59 +00:00
David Cook
72327a352e Merge pull request #13685 from deivid-rodriguez/no-raw-credit-card-data
Change CreditCardRemover specs to not send raw credit card data
2025-11-11 13:46:45 +11:00
David Cook
35ef895cff Merge pull request #13677 from deivid-rodriguez/tweak-dependabot
Update turbo_power npm and rubygem packages together
2025-11-11 13:44:21 +11:00
David Cook
52e4293e90 Merge pull request #13673 from deivid-rodriguez/bump-state-machines
Bump state_machines related gems again
2025-11-11 13:22:53 +11:00
Gaetan Craig-Riou
460d109bd2 Update product ability
A user has product permission if it is a supplier of at least one of the
product's variants
2025-11-11 11:35:19 +11:00
Gaetan Craig-Riou
7d0f17fe1a Merge pull request #13693 from openfoodfoundation/dependabot/npm_and_yarn/testing-library/dom-10.4.1
Bump @testing-library/dom from 9.3.4 to 10.4.1
2025-11-11 09:55:17 +11:00
Gaetan Craig-Riou
cff6fcf52e Merge pull request #13697 from openfoodfoundation/dependabot/bundler/roadie-rails-3.4.0
Bump roadie-rails from 3.2.0 to 3.4.0
2025-11-11 09:50:52 +11:00
Gaetan Craig-Riou
4083aa82b8 Merge pull request #13696 from openfoodfoundation/dependabot/bundler/digest-3.2.1
Bump digest from 3.2.0 to 3.2.1
2025-11-11 09:47:02 +11:00
Gaetan Craig-Riou
ac61ef1f81 Merge pull request #13695 from openfoodfoundation/dependabot/bundler/paper_trail-17.0.0
Bump paper_trail from 15.1.0 to 17.0.0
2025-11-11 09:45:13 +11:00
Gaetan Craig-Riou
924c421b75 Merge pull request #13694 from openfoodfoundation/dependabot/bundler/devise-i18n-1.15.0
Bump devise-i18n from 1.12.1 to 1.15.0
2025-11-11 09:41:43 +11:00
dependabot[bot]
71262d18a0 Bump @testing-library/dom from 9.3.4 to 10.4.1
Bumps [@testing-library/dom](https://github.com/testing-library/dom-testing-library) from 9.3.4 to 10.4.1.
- [Release notes](https://github.com/testing-library/dom-testing-library/releases)
- [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/dom-testing-library/compare/v9.3.4...v10.4.1)

---
updated-dependencies:
- dependency-name: "@testing-library/dom"
  dependency-version: 10.4.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 22:41:11 +00:00
David Rodríguez
9645660d87 Fix tag rule visibility select box options hidden by save bar 2025-11-10 17:32:11 +01:00
filipefurtad0
f18487ea68 Update all locales with the latest Transifex translations 2025-11-10 11:22:54 +00:00
dependabot[bot]
13a955d45a Bump roadie-rails from 3.2.0 to 3.4.0
Bumps [roadie-rails](https://github.com/Mange/roadie-rails) from 3.2.0 to 3.4.0.
- [Changelog](https://github.com/Mange/roadie-rails/blob/master/Changelog.md)
- [Commits](https://github.com/Mange/roadie-rails/compare/v3.2.0...v3.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 09:41:12 +00:00
dependabot[bot]
7a06c72534 Bump digest from 3.2.0 to 3.2.1
Bumps [digest](https://github.com/ruby/digest) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/ruby/digest/releases)
- [Commits](https://github.com/ruby/digest/compare/v3.2.0...v3.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 09:40:38 +00:00
dependabot[bot]
cdb572f347 Bump paper_trail from 15.1.0 to 17.0.0
Bumps [paper_trail](https://github.com/paper-trail-gem/paper_trail) from 15.1.0 to 17.0.0.
- [Release notes](https://github.com/paper-trail-gem/paper_trail/releases)
- [Changelog](https://github.com/paper-trail-gem/paper_trail/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paper-trail-gem/paper_trail/compare/v15.1.0...v17.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 09:39:38 +00:00
dependabot[bot]
8f44b06244 Bump devise-i18n from 1.12.1 to 1.15.0
Bumps [devise-i18n](https://github.com/devise-i18n/devise-i18n) from 1.12.1 to 1.15.0.
- [Release notes](https://github.com/devise-i18n/devise-i18n/releases)
- [Changelog](https://github.com/devise-i18n/devise-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/devise-i18n/devise-i18n/compare/v1.12.1...v1.15.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 09:39:04 +00:00
Gaetan Craig-Riou
e8b81c1ff6 Fix variant filtering
We don't want to filter out variant missing producer, so that the user
can address the problem.
2025-11-10 16:29:27 +11:00
Gaetan Craig-Riou
ab443fa50f Refactor the clone template to use local variable
and add define locals on the template
2025-11-10 16:29:27 +11:00
Gaetan Craig-Riou
25d55fec24 Filter out variant the user is not allowed to update
With a product with mutiple variant, we can end in a scenario where a
user sees variant associated to producer it doesn't have permission for.
This prevents the user from updating any variant. This fix filter out
variant a user shoudn't be seeing
2025-11-10 16:29:27 +11:00
Gaetan Craig-Riou
61f8b5c7f4 Add strict locals for some products V3 templates
Rails now allows you to define which local a template is expecting:
https://edgeguides.rubyonrails.org/7_1_release_notes.html#allow-templates-to-set-strict-locals
2025-11-10 16:29:27 +11:00
Maikel
7c4714288d Merge pull request #13675 from deivid-rodriguez/unify-linters
Unify linters and linter related tools
2025-11-10 16:24:36 +11:00
Maikel
b6e393eabb Merge pull request #13662 from filipefurtad0/spec_deprecation_nil_in_sum
Catches exceptions on final_weight_volume inputs
2025-11-10 15:25:49 +11:00
Gaetan Craig-Riou
d18aeb9918 Merge pull request #13687 from openfoodfoundation/dependabot/bundler/openid_connect-2.3.1
Bump openid_connect from 2.3.0 to 2.3.1
2025-11-10 15:15:32 +11:00
Gaetan Craig-Riou
6596afc562 Fix flaky spec, contain_exactly doesn't care about the order 2025-11-10 13:29:30 +11:00
Maikel
587f76415b Merge pull request #13656 from pacodelaluna/replace-alias-attribute-with-alias-method
Replace alias_attribute with alias_method
2025-11-10 11:50:33 +11:00
dependabot[bot]
665aee6eb0 Bump openid_connect from 2.3.0 to 2.3.1
Bumps [openid_connect](https://github.com/nov/openid_connect) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/nov/openid_connect/releases)
- [Changelog](https://github.com/nov/openid_connect/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nov/openid_connect/compare/v2.3.0...v2.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 00:48:19 +00:00
Gaetan Craig-Riou
5e505c1240 Merge pull request #13683 from openfoodfoundation/dependabot/bundler/omniauth_openid_connect-0.8.0
Bump omniauth_openid_connect from 0.7.1 to 0.8.0
2025-11-10 11:46:51 +11:00
Gaetan Craig-Riou
e948f89625 Merge pull request #13682 from openfoodfoundation/dependabot/bundler/activerecord-session_store-2.2.0
Bump activerecord-session_store from 2.1.0 to 2.2.0
2025-11-10 11:31:56 +11:00
Gaetan Craig-Riou
f42b91f414 Merge pull request #13681 from openfoodfoundation/dependabot/bundler/spring-4.4.0
Bump spring from 4.2.1 to 4.4.0
2025-11-10 11:25:57 +11:00
Gaetan Craig-Riou
3e8a34c5f3 Per dicussion, remove super admin from migration 2025-11-10 11:14:56 +11:00
Gaetan Craig-Riou
1101310845 Enable variant_tag for recent enterprise and admins
Recent entperise are enterprise created after 11th of August which
should not have access to inventory
2025-11-10 11:14:56 +11:00
Gaetan Craig-Riou
0745028c06 Fix checking if variant tag is enabled
variant_tag feature check should happen per enterprise basis, but we
still want super admin to so see variant tag. To do so we check if the
user is amdin or if any of the current user enterprise has variant tag
enable.
2025-11-10 11:14:56 +11:00
Rachel Arnould
94bda6d0f8 Merge pull request #13592 from rioug/13266-tag-variant-tag-rule
[Variant tags] Add tag rules for variant
2025-11-07 14:14:50 +01:00
David Rodríguez
915d03a66a Change CreditCardRemover specs to not send raw credit card data
If I re-record cassettes for these specs using my test API key, I get
the following errors:

```
1) Stripe::CreditCardRemover#remove Stripe customer exists and is not deleted deletes the credit card clone and the customer
   Failure/Error:
     Stripe::PaymentMethod.create(
       {
         type: 'card',
         card: {
           number: '4242424242424242',
           exp_month: 8,
           exp_year: Time.zone.now.year.next,
           cvc: '314',
         },
       },

   Stripe::CardError:
     Sending credit card numbers directly to the Stripe API is generally unsafe. We suggest you use test tokens that map to the test card you are using, see https://stripe.com/docs/testing. To enable testing raw card data APIs, see https://support.stripe.com/questions/enabling-access-to-raw-card-data-apis.
   # ./spec/lib/stripe/credit_card_remover_spec.rb:16:in `block (3 levels) in <main>'
   # ./spec/lib/stripe/credit_card_remover_spec.rb:44:in `block (4 levels) in <main>'
   # ./spec/lib/stripe/credit_card_remover_spec.rb:56:in `block (4 levels) in <main>'
   # ./spec/base_spec_helper.rb:208:in `block (2 levels) in <main>'
   # ./spec/base_spec_helper.rb:155:in `block (3 levels) in <main>'
   # ./spec/base_spec_helper.rb:155:in `block (2 levels) in <main>'
   # -e:1:in `<main>'
```

Use test payment methods instead as suggested by the error.
2025-11-06 18:30:45 +01:00
Filipe
1422b440e4 Merge pull request #13493 from dacook/bump-stripe-v13
Bump stripe to v13
2025-11-06 13:48:52 +00:00
Filipe
95ad87d840 Merge pull request #13666 from chahmedejaz/bugfix/13519-order-disappear-from-orders-page
Order lines are deleted when one tries to capture a payment after order cycle is closed
2025-11-06 13:07:36 +00:00
Konrad
7357419f6f Merge pull request #13652 from navaneethkp36/13651-fix-button-size-order-confirmation
Make the width of "Back to Store" and "Back to Website" buttons consistent with other buttons in order confirmation page
2025-11-05 19:29:42 +01:00
François Turbelin
e07ebc21b9 Use instance_double when possible in enterprise model spec 2025-11-05 16:31:20 +01:00
filipefurtad0
8e5404a268 Replaces negative assertion with a positive assertion
Adds test case on white spece

Refactors to have tests as shared_examples
2025-11-05 11:12:55 +00:00
filipefurtad0
04fc729a5a Changes tests not to trigger error
after https://github.com/openfoodfoundation/openfoodnetwork/pull/13571 was merged
2025-11-05 10:34:52 +00:00
filipefurtad0
8818a98230 Catches exceptions on final_weight_volume inputs 2025-11-05 10:34:52 +00:00
David Rodríguez
d3efa3afa6 Remove pretty-quick
Because:

* We already have reviewdog running prettier in CI.
* We already removed the associated commit hooks.
* Running plain prettier is already very fast in our case.
2025-11-05 10:08:04 +01:00
David Rodríguez
4414879b3f Completely remove codeclimate as well
Most of it is already disabled, and the stuff that's not actually
disabled don't seem worth enough for me to keep it.
2025-11-05 10:08:04 +01:00
David Rodríguez
3c7aac59e9 Remove ancient rubocop plugin from codeclimate config
We already get RuboCop offense information through reviewdog.
2025-11-05 10:08:04 +01:00
David Rodríguez
41cd40a55b Completely get rid of hound
We already get RuboCop offense information through reviewdog.
2025-11-05 10:08:04 +01:00
David Rodríguez
a0e8111b3a Remove spurious scss-lint configuration
It was broken due to several reasons:

* Bad globs from not catching up after file renames.
* Bad rule indentation.

Also, the scss-lint project itself recommends using other tools, because
it relies on the ruby SASS implementation while upstream has moved to a
dart-based implementation.

Even when you fix the config and try to run the tool, you feel the pain
of this deviation:

```
$ scss-lint
(...)

app/webpacker/css/admin/grid.scss:10:1 [E] Syntax: Syntax Error: Invalid CSS after "$col-width: math": expected selector or at-rule, was ".div($total-col..."

(...)
```

The grid.scss file use using `math.div` feature, which is only supported
by the `sass` version based on dart. `scss-lint` will never be able to
parse this file at all.

Also, we're already handling scss rule formatting through prettier.

Because of all these reasons, it's best to forget about scss-lint.
2025-11-05 10:08:03 +01:00
David Rodríguez
8f07ee5bf7 Move haml-lint from hound to reviewdog
We can somewhat easily get it passing and integrate nice with reviewdog
by adding a TODO file for the rules that we had enabled, so that we
don't need to correct anything now, but we still get alerted for new
offenses. So I say let's keep it and enforce it from now on.
2025-11-05 10:08:03 +01:00
David Rodríguez
43da235d15 Make sure all linters run even if some of them fails 2025-11-05 10:08:03 +01:00
dependabot[bot]
3252de19a3 Bump omniauth_openid_connect from 0.7.1 to 0.8.0
Bumps [omniauth_openid_connect](https://github.com/omniauth/omniauth_openid_connect) from 0.7.1 to 0.8.0.
- [Changelog](https://github.com/omniauth/omniauth_openid_connect/blob/master/CHANGELOG.md)
- [Commits](https://github.com/omniauth/omniauth_openid_connect/compare/v0.7.1...v0.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 09:04:05 +00:00
dependabot[bot]
fd3bd062fe Bump activerecord-session_store from 2.1.0 to 2.2.0
Bumps [activerecord-session_store](https://github.com/rails/activerecord-session_store) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/rails/activerecord-session_store/releases)
- [Changelog](https://github.com/rails/activerecord-session_store/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/activerecord-session_store/compare/v2.1.0...v2.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 09:02:12 +00:00
dependabot[bot]
029d447d98 Bump spring from 4.2.1 to 4.4.0
Bumps [spring](https://github.com/rails/spring) from 4.2.1 to 4.4.0.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v4.2.1...v4.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 09:01:40 +00:00
David Cook
8e5fac9fb3 Merge pull request #13632 from rioug/security-247-code-injection
[security] Fix potential code injection
2025-11-05 16:34:37 +11:00
Gaetan Craig-Riou
30c0bcc910 Merge pull request #13678 from deivid-rodriguez/remove-debugger-linecache
Remove debugger-linecache
2025-11-05 11:14:11 +11:00
Gaetan Craig-Riou
1a4ba9b689 Merge pull request #13672 from openfoodfoundation/dependabot/bundler/i18n-tasks-1.0.15
Bump i18n-tasks from 1.0.14 to 1.0.15
2025-11-05 10:21:46 +11:00
Gaetan Craig-Riou
4de8191e27 Merge pull request #13579 from openfoodfoundation/dependabot/bundler/flipper-ui-1.3.6
Bump flipper-ui from 1.3.0 to 1.3.6
2025-11-05 10:06:43 +11:00
Gaetan Craig-Riou
472ca5a16b Merge pull request #13490 from openfoodfoundation/dependabot/bundler/turbo_power-0.7.0
Bump turbo_power from 0.6.2 to 0.7.0
2025-11-05 10:00:07 +11:00
Gaetan Craig-Riou
dab626031b Merge pull request #13041 from openfoodfoundation/dependabot/npm_and_yarn/turbo_power-0.7.1
Bump turbo_power from 0.7.0 to 0.7.1
2025-11-05 09:57:40 +11:00
Ahmed Ejaz
913dded766 Refactor order cycle handling to simplify closed cycle checks and improve redirection messaging 2025-11-05 02:50:01 +05:00
filipefurtad0
a36b7ce01a deletes all old VCR cassettes 2025-11-04 15:40:45 +00:00
David Cook
e4be336630 Bump Stripe to v13 2025-11-04 15:36:53 +00:00
David Cook
cae13df2c7 Bump Stripe to v12
re-recording cassettes with script/test-stripe-live
2025-11-04 15:32:05 +00:00
David Cook
81796db6e5 Fix date-dependent spec 2025-11-04 15:17:45 +00:00
David Cook
ba3553854e Allow script to continue if you've already deleted the old files 2025-11-04 15:17:45 +00:00
David Rodríguez
c386d1af01 Remove debugger-linecache
This gem has not been updated since 2013 and serves no purpose these
days.
2025-11-04 10:22:37 +01:00
David Rodríguez
9566075dee Tweak Dependabot config 2025-11-04 08:57:10 +01:00
dependabot[bot]
9916b361e4 Bump turbo_power from 0.6.2 to 0.7.0
Bumps [turbo_power](https://github.com/marcoroth/turbo_power-rails) from 0.6.2 to 0.7.0.
- [Release notes](https://github.com/marcoroth/turbo_power-rails/releases)
- [Commits](https://github.com/marcoroth/turbo_power-rails/compare/v0.6.2...v0.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 11:05:43 +00:00
François Turbelin
b2d7d797d9 Use wrap_parameters to handle address params on Customer v1 API 2025-11-03 11:35:39 +01:00
David Rodríguez
7076afecfb Bump state_machines related gems again
This fixes warnings like

```
$ bundle exec rspec spec/system/admin/users_spec.rb:179
(...)
Instance method "invalid?" is already defined in Spree::Payment(id: integer, amount: decimal, order_id: integer, created_at: datetime, updated_at: datetime, source_id: integer, source_type: string, payment_method_id: integer, state: string, response_code: string, avs_response: string, identifier: string, cvv_response_code: string, cvv_response_message: text, captured_at: datetime, redirect_auth_url: string),
use generic helper instead or set StateMachines::Machine.ignore_method_conflicts = true.

(...)
```
2025-11-03 10:56:16 +01:00
François Turbelin
e385b9f708 Revert "Use customer-nested params for Customer v1 API writing operations"
This reverts commit cf4cd311b3.
2025-11-03 10:32:26 +01:00
dependabot[bot]
2b9b02aeea Bump i18n-tasks from 1.0.14 to 1.0.15
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.14 to 1.0.15.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.14...v1.0.15)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-version: 1.0.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 09:06:01 +00:00
dependabot[bot]
009b5e5ff1 Bump flipper-ui from 1.3.0 to 1.3.6
Bumps [flipper-ui](https://github.com/flippercloud/flipper) from 1.3.0 to 1.3.6.
- [Release notes](https://github.com/flippercloud/flipper/releases)
- [Changelog](https://github.com/flippercloud/flipper/blob/main/Changelog.md)
- [Commits](https://github.com/flippercloud/flipper/compare/v1.3.0...v1.3.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 17:31:57 +11:00
dependabot[bot]
7c310e7e46 Bump turbo_power from 0.7.0 to 0.7.1
Bumps [turbo_power](https://github.com/marcoroth/turbo_power) from 0.7.0 to 0.7.1.
- [Release notes](https://github.com/marcoroth/turbo_power/releases)
- [Commits](https://github.com/marcoroth/turbo_power/compare/v0.7.0...v0.7.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 05:17:35 +00:00
Gaetan Craig-Riou
bd0db57768 Per review, more concise code 2025-11-03 15:58:27 +11:00
Gaetan Craig-Riou
bb8ecccc31 Fix variant tag rules endpoint
It now returns tag rules filtered on the preferred variant tags and not
the prefered customer tags
2025-11-03 15:50:12 +11:00
Gaetan Craig-Riou
ffd5817749 Add spec for variant_tag_rules 2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
1a68236c3c Add variant_tag_rule ability
It's needed to allow enterprise user to get a tag autocomplete. Classic
mistake of not testing with a non superadmin user.
2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
c057bab493 Use route helpers for autocomplete url
Co-authored-by: Maikel <maikel@email.org.au>
2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
59340c7cff Per review, remove unnecessary new translation 2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
aebb18da99 Per review, improve specs 2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
ce60335a60 Per review, fix leftover comment 2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
307acdd9d1 Per review, fixing specs descriptions 2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
d51e257904 Fix order cycle tag rule specs
It works better when you actually save the changes to the tag_list...
2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
07a3e83dc6 Fix enterprise specs
Plus small refactor
2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
38f58b168a Fix tag rules spec
Make sure the autocomplete dropdown list is hidden by default
2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
34abca5ff1 Add missing js unit test got TagListInput component 2025-11-03 14:25:48 +11:00
Gaetan Craig-Riou
145764a921 Add testing library
See :https://testing-library.com/docs/
It allows us to query DOM node in way that's similar to how a user would
interect with element on the page. It's particularly usefull for
elements that trigger AJAX request.
2025-11-03 14:25:40 +11:00
Gaetan Craig-Riou
9bbe573335 Fix test to match the improved controller 2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
c5d5694f24 Tweaked jest configuration
- include app/components in the directories to search for modules, ie we
  can require view component js controller like this :
  `import tag_list_input_controller from "tag_list_input_component/tag_list_input_controller";`
- fixed the regexp to skip transformation so it skips any modules
  starting by "stimulus"
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
ab194a0e80 Add styling for the dropdown
It's mostly the same styling as the AngularJs version but with updated
colors
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
749944fc25 Rework TagListInputComponent to integrate autocomplete
The component now will try to load a list of existing tag if you give an
`autocomplete_url`. I tried to keep the tag input and the autocomplete
functionality decoupled but is wasn't really possible. Instead I opted
to sub class the Autocomplete stimulus controller, but it only gets
initialised if we pass an `autocomplete_url`.
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
3cffc5538a Add tag filtering for tag autocomplete 2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
6d7908e1f8 Style formatting 2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
965b34318f Add new component to provide tag autocomplete for variant tag
It uses composition and inject the TagListInputComponent as a depency,
which should be more flexible that creating a sub class. This new
component could potentially be made more generic if needed
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
3bb9eb9765 Add endpoint to provide autocomplete tag for variant
It return a list of available tags and number of related rules, based on
the given enterprise and a partial match on the given tag
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
bd39595917 Add ability to pass option to the tag input field
And also render any content given to the component via block
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
81e16a9cdf Add stimulus-autocomplete package
https://github.com/afcapel/stimulus-autocomplete/tree/main
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
c38c8bcff2 Pass the variant_tag_enbabled options to relevant services
Plus add integration testing for variant tag rule filtering.
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
7633af8ff2 Call VariantTagRulesFilterer when variant_tag feature is enabled
We only support either inventory or variant_tag feature, with the later
taking precedence if both are turned on.
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
94c0ebd897 Fix error in the muliple tag rules spec 2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
7b3db4bae4 Add VariantTagRuleFilterer to filter variants by tag rule 2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
b1d95cac7f Display filter by variant tag rule
We only support one of filter by inventory variants or filter by variants
at any given time, based on enabled feature. If both features inventory
and variant tag are enabled, variant tag takes precedence.
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
3f297a8afa Add tag rule to filter by variant 2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
af111a9625 Clean up tag rules specs
Remove unnecessary use mocking and use of `__send__`
2025-11-03 14:25:05 +11:00
Gaetan Craig-Riou
96f715b62b Merge pull request #13661 from deivid-rodriguez/ruby-3.2
Bump Ruby from 3.1.7 to 3.2.9
2025-11-03 13:29:40 +11:00
Maikel
33b4e38fc5 Merge pull request #13664 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.12.1
Bump jasmine-core from 5.12.0 to 5.12.1
2025-11-03 13:11:49 +11:00
Maikel
27e4ae9892 Merge pull request #13639 from deivid-rodriguez/verify-latest-reviewdog
Upgrade to latest reviewdog
2025-11-03 12:28:01 +11:00
Gaetan Craig-Riou
f434d8b066 Merge pull request #13658 from openfoodfoundation/dependabot/bundler/paranoia-2.6.4
Bump paranoia from 2.6.3 to 2.6.4
2025-11-03 12:05:44 +11:00
Gaetan Craig-Riou
43d471f93d Merge pull request #13657 from openfoodfoundation/dependabot/npm_and_yarn/hotwired/turbo-8.0.20
Bump @hotwired/turbo from 8.0.13 to 8.0.20
2025-11-03 12:03:58 +11:00
Ahmed Ejaz
3794f69cad Add shared examples to handle closed order cycle in checkout process 2025-11-02 01:48:10 +05:00
François Turbelin
cf4cd311b3 Use customer-nested params for Customer v1 API writing operations 2025-10-31 14:39:55 +01:00
François Turbelin
275326eaa6 Replace alias_attribute with alias_method 2025-10-31 14:26:33 +01:00
dependabot[bot]
526f8be676 Bump leaflet-providers from 2.0.0 to 3.0.0
Bumps [leaflet-providers](https://github.com/leaflet-extras/leaflet-providers) from 2.0.0 to 3.0.0.
- [Changelog](https://github.com/leaflet-extras/leaflet-providers/blob/master/CHANGELOG.md)
- [Commits](https://github.com/leaflet-extras/leaflet-providers/commits/v3.0.0)

---
updated-dependencies:
- dependency-name: leaflet-providers
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-31 09:01:59 +00:00
David Rodríguez
0c392d5302 Drop version constraints for pg and pry entirely, so their versions can be fully managed by Dependabot
Co-authored-by: Maikel <maikel@email.org.au>
2025-10-31 09:18:12 +01:00
David Rodríguez
e71a2603bd Bump pry to a version that plays nice with Ruby 3.2
Otherwise you get the following error when starting RSpec:

```
(...)
An error occurred while loading base_spec_helper.
Failure/Error: require 'pry' unless ENV['CI']

NameError:
  undefined method `=~' for class `Pry::Code'
# ./spec/base_spec_helper.rb:10:in `<top (required)>'
No examples found.
(...)
```
2025-10-31 09:18:11 +01:00
David Rodríguez
5aea527962 Use Bundler version that comes with Ruby 3.2.9 by default 2025-10-31 09:18:11 +01:00
David Rodríguez
05b3e97a0e Bump Ruby from 3.1.7 to 3.2.9
Release announcements:

* https://www.ruby-lang.org/en/news/2025/07/24/ruby-3-2-9-released/
* https://www.ruby-lang.org/en/news/2025/03/26/ruby-3-2-8-released/
* https://www.ruby-lang.org/en/news/2025/02/04/ruby-3-2-7-released/
* https://www.ruby-lang.org/en/news/2024/10/30/ruby-3-2-6-released/
* https://www.ruby-lang.org/en/news/2024/07/26/ruby-3-2-5-released/
* https://www.ruby-lang.org/en/news/2024/04/23/ruby-3-2-4-released/
* https://www.ruby-lang.org/en/news/2024/01/18/ruby-3-2-3-released/
* https://www.ruby-lang.org/en/news/2023/03/30/ruby-3-2-2-released/
* https://www.ruby-lang.org/en/news/2023/02/08/ruby-3-2-1-released/
* https://www.ruby-lang.org/en/news/2022/12/25/ruby-3-2-0-released/

Also autocorrect new offenses.
2025-10-31 09:18:11 +01:00
Maikel Linke
f9b76fadbd Update all locales with the latest Transifex translations 2025-10-31 16:05:11 +11:00
Maikel
64f44b8a9b Merge pull request #13571 from pacodelaluna/update_sum_calcultation
Update sum calculation in order_cycle_customer_totals spec
2025-10-31 16:03:11 +11:00
Maikel Linke
5dfb7645cb Avoid enabling rubocop rule listed in todo file 2025-10-31 15:39:58 +11:00
Maikel Linke
74927dd03d Regenerate Rubocop todo file 2025-10-31 15:30:17 +11:00
François Turbelin
71dd398131 Apply cosmetics and fix specs 2025-10-31 15:20:44 +11:00
François Turbelin
245f0caedb Adjust sum for remaining reports 2025-10-31 15:20:44 +11:00
François Turbelin
18bc95c6a3 Update sum calculation in order_cycle_customer_totals spec 2025-10-31 15:20:44 +11:00
Ahmed Ejaz
243190491b Fix specs 2025-10-31 04:40:44 +05:00
dependabot[bot]
7213dcf124 Bump jasmine-core from 5.12.0 to 5.12.1
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.12.0 to 5.12.1.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.12.0...v5.12.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 09:02:08 +00:00
David Rodríguez
e90569bdcc Adjust error format to latest prettier output
To avoid generating an unnecessary annotation.
2025-10-29 11:55:11 +01:00
David Rodríguez
404e27ab71 Run reviewdog directly
So that we can control the version we run without depending on external
actions, and so that we use a consistent version for all linters.

At the same time, unify to running the latest version of reviewdog,
0.21.0, which also involves changing the deprecated `fail_on_error` flag
previously used by prettier action to `fail_level`.
2025-10-29 11:55:10 +01:00
David Rodríguez
5af6d534df Use "nofilter" for prettier
Now that we fixed all prettier issues.
2025-10-29 11:55:03 +01:00
David Rodríguez
65410aabad Speed up rubocop reviewdog by skipping install
Since we already run `bundle install` at the beginning of the job.
2025-10-29 11:55:03 +01:00
David Rodríguez
2e78ea62b6 Change linters workflow label to reviewdog 2025-10-29 11:55:03 +01:00
David Rodríguez
201461918d Fix prettier offense
I accidentally introduced this, not sure how, when correcting all
prettier issues.
2025-10-29 11:55:03 +01:00
dependabot[bot]
3efe0c7835 Bump paranoia from 2.6.3 to 2.6.4
Bumps [paranoia](https://github.com/rubysherpas/paranoia) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/rubysherpas/paranoia/releases)
- [Changelog](https://github.com/rubysherpas/paranoia/blob/core/CHANGELOG.md)
- [Commits](https://github.com/rubysherpas/paranoia/compare/v2.6.3...v2.6.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-29 09:02:20 +00:00
dependabot[bot]
e3d453e397 Bump @hotwired/turbo from 8.0.13 to 8.0.20
Bumps [@hotwired/turbo](https://github.com/hotwired/turbo) from 8.0.13 to 8.0.20.
- [Release notes](https://github.com/hotwired/turbo/releases)
- [Commits](https://github.com/hotwired/turbo/compare/8.0.13...v8.0.20)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-29 09:01:59 +00:00
Maikel
0ecfc23c67 Merge pull request #13644 from deivid-rodriguez/more-rspec-fixes
Fix Rspec warnings and the broken Stripe intent API specs that fixing them revealed
2025-10-29 15:04:22 +11:00
Maikel
ff16b575c4 Merge pull request #13653 from deivid-rodriguez/bump-rubocop
Bump rubocop to 1.86.6
2025-10-29 12:00:31 +11:00
Maikel
faa826a76e Merge pull request #13647 from deivid-rodriguez/remove-obsoleted-gem
Remove obsolete gem
2025-10-29 11:44:59 +11:00
Maikel
1e02084f95 Merge pull request #13646 from deivid-rodriguez/bump-ruby
Bump Ruby from 3.1.4 to 3.1.7
2025-10-29 11:43:04 +11:00
Maikel
44cca40db6 Merge pull request #13643 from deivid-rodriguez/fix-prettier-issues
Fix all existing prettier issues
2025-10-29 11:36:54 +11:00
David Cook
52174b1e06 Merge pull request #13645 from deivid-rodriguez/review-dog-write-checks
Fix reviewdog workflow failing to create checks
2025-10-29 09:17:26 +11:00
François Turbelin
c01818f57b Improve entreprise spec on white label logo part 2025-10-28 18:29:25 +01:00
François Turbelin
f5e3d104e2 Add validation for enterprise white_label_logo 2025-10-28 18:19:12 +01:00
François Turbelin
ba9dca4b05 Avoid urls generation when the logo attachment is not saved yet 2025-10-28 18:19:12 +01:00
François Turbelin
efb7da316a Use update! to save enterprise logo on API v0 2025-10-28 18:19:12 +01:00
Filipe
cdf0777d8e Merge pull request #13641 from openfoodfoundation/dependabot/bundler/knapsack_pro-8.4.0
Bump knapsack_pro from 8.1.2 to 8.4.0
2025-10-28 12:31:44 +00:00
David Cook
9cb7c46b44 Merge pull request #13631 from rioug/13117-upgrade-node
Upgrade to node version 24
2025-10-28 10:52:34 +11:00
David Rodríguez
4c6d894bc0 Bump RuboCop to 1.86.6
There were a few changes needed:

* Plugins are now specified through `plugin:` config keyword.
* All plugin gems need to be specified explicitly in Gemfile since they
  are no longer dependencies of plugins already specified explicitly.
* All plugin gems need to be updated in other to use the new APIs.
* One cop was renamed.
* New offenses safe to correct were corrected directly with `bundle exec
  rubocop -a`.
* New offenses unsafe to correct were added to the TODO configuration
  with `bundle exec rubocop --auto-gen-config --auto-gen-only-exclude
  --exclude-limit 1400 --no-auto-gen-timestamp`.
2025-10-27 11:30:33 +01:00
David Rodríguez
27975252f5 Rename pm_card to payment_method_id
And also remove a couple of now unused `let`'s that were already using
this terminology.

Co-authored-by: David Cook <david@openfoodnetwork.org.au>
2025-10-27 10:52:36 +01:00
David Rodríguez
9fc82776ec Move Stripe test payment method handling to a single place
And comment a bit on them.

Co-authored-by: David Cook <david@openfoodnetwork.org.au>
2025-10-27 10:45:45 +01:00
David Rodríguez
2c8bf82426 Migrate some spec to not send raw card numbers to Stripe API
If I regenerate the VCR cassetes for
spec/lib/stripe/payment_intent_validator_spec.rb, I get a lot of errors
like this:

```
Stripe::CardError:

Sending credit card numbers directly to the Stripe API is generally
unsafe. We suggest you use test tokens that map to the test card you are
using, see https://stripe.com/docs/testing. To enable testing raw card
data APIs, see
https://support.stripe.com/questions/enabling-access-to-raw-card-data-apis.
```

It seems the sandbox environment associated to my developer API keys is
not allowed to send raw credit card data.

Instead of requesting Stripe support to enable that, or regenerate
cassettes with the API keys in Bitwarden, I figured we could migrate the
tests to not use raw credit card data.
2025-10-27 09:08:30 +01:00
David Rodríguez
121019411c Fix spec instantiating payment method with wrong source
Previous error is fixed, which allows the spec to proceed further, and
reveals that the current cassettes are missing some requests:

```
  1) Stripe::PaymentIntentValidator#call as a guest when payment intent is valid valid non-3D credit cards are correctly handled behaves like payments intents from Visa returns payment intent id and does not raise
     Failure/Error:
       payment_intent_response = Stripe::PaymentIntent.retrieve(
         payment_intent_id,
         stripe_account: stripe_account_id
       )

     VCR::Errors::UnhandledHTTPRequestError:

       ================================================================================
       An HTTP request has been made that VCR does not know how to handle:
         GET https://api.stripe.com/v1/payment_intents/pi_3P8hNGKuuB1fWySn0dvhu9lG

       VCR is currently using the following cassette:

       (...)
```
2025-10-27 09:08:29 +01:00
David Rodríguez
1a5eb5b39a Remove raise_error negative block to fix RSpec warnings
Currently RSpec warns these specs like this:

```
WARNING: Using `expect { }.not_to raise_error(SpecificErrorClass)` risks false positives, since literally any other error would cause the
expectation to pass, including those raised by Ruby (e.g. `NoMethodError`, `NameError` and `ArgumentError`), meaning the code you are intending
to test may not even get reached. Instead consider using `expect { }.not_to raise_error` or `expect { }.to raise_error(DifferentSpecificErrorClass)`.
This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`.
Called from /path/to/spec/lib/stripe/payment_intent_validator_spec.rb:53:in `block (7 levels) in <main>'.
```

The warnings are super accurate in this particular case: the inner
assertion is not actually getting reached due to a previous unrelated
error.

Since there's an inner assertion already, I think it's best to
completely remove to `raise_error` negative block, since it just hides
errors and buys us nothing.

By removing it, the underlying error surfaces:

```
  1) Stripe::PaymentIntentValidator#call as a guest when payment intent is valid valid non-3D credit cards are correctly handled behaves like payments intents from Visa returns payment intent id and does not raise
     Failure/Error:
       create(:payment, amount: payment_intent.amount, payment_method:,
                        response_code: payment_intent.id, source: pm_card)

     NoMethodError:
       undefined method `has_query_constraints?' for Stripe::PaymentMethod:Class

               elsif (klass || self.klass).has_query_constraints? || options[:query_constraints]
                                          ^^^^^^^^^^^^^^^^^^^^^^^
     Shared Example Group: "payments intents" called from ./spec/lib/stripe/payment_intent_validator_spec.rb:75
     # ./spec/lib/stripe/payment_intent_validator_spec.rb:16:in `block (3 levels) in <main>'
     # ./spec/lib/stripe/payment_intent_validator_spec.rb:19:in `block (3 levels) in <main>'
     # ./spec/lib/stripe/payment_intent_validator_spec.rb:53:in `block (7 levels) in <main>'
     # ./spec/base_spec_helper.rb:208:in `block (2 levels) in <main>'
     # ./spec/base_spec_helper.rb:155:in `block (3 levels) in <main>'
     # ./spec/base_spec_helper.rb:155:in `block (2 levels) in <main>'
     # -e:1:in `<main>'
```
2025-10-27 09:08:29 +01:00
David Rodríguez
2bd536298b Showcase the problem with some specs
They're always passing because an error (different from `StripeError`),
is actually making them pass.
2025-10-27 09:08:29 +01:00
Ahmed Ejaz
7415503b63 Update all locales with the latest Transifex translations 2025-10-27 05:55:44 +05:00
Ahmed Ejaz
895e142e2c Enhance order cycle closure handling with improved messaging and redirection logic 2025-10-26 02:08:53 +05:00
Navaneeth
f1ffadd39c Make the width of "Back to Store" and "Back to Website" buttons consistent with other buttons in order confirmation page 2025-10-25 22:15:14 +05:30
Filipe
cc35d118eb Merge pull request #13627 from guidoDutra/10261/bad-table-format-in-edit-order-page
fix table format in edit order page
2025-10-24 13:16:49 +01:00
David Rodríguez
e09d78dfb2 Remove obsolete gem
Even without it, Rails seems to do this by default:

```console
$ RAILS_ENV=production SITE_URL=foo.bar SECRET_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bin/rails db:drop
I, [2025-10-23T12:38:12.383244 #32647]  INFO -- : [dotenv] Loaded .env
I, [2025-10-23T12:38:12.383292 #32647]  INFO -- : [dotenv] Loaded .env
W, [2025-10-23T12:38:12.411675 #32647]  WARN -- [Bugsnag]: No valid API key has been set, notifications will not be sent
bin/rails aborted!
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database.
If you are sure you want to continue, run the same command with the environment variable:
DISABLE_DATABASE_ENVIRONMENT_CHECK=1

Tasks: TOP => db:drop => db:check_protected_environments
(See full trace by running task with --trace)
```

And the gem hasn't been updated in 10 years, so probably best to get rid
of it.
2025-10-23 12:41:37 +02:00
David Rodríguez
dad7cfc180 Bump Ruby from 3.1.4 to 3.1.7
Release announcmenets:

* https://www.ruby-lang.org/en/news/2024/04/23/ruby-3-1-5-released/
* https://www.ruby-lang.org/en/news/2024/05/29/ruby-3-1-6-released/
* https://www.ruby-lang.org/en/news/2025/03/26/ruby-3-1-7-released/
2025-10-23 10:34:21 +02:00
David Rodríguez
678497914f Fix reviewdog workflow failing to create checks 2025-10-22 19:59:10 +02:00
David Rodríguez
852e7fa81e Fix all existing prettier issues 2025-10-22 15:30:36 +02:00
dependabot[bot]
fb437fb34d Bump knapsack_pro from 8.1.2 to 8.4.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 8.1.2 to 8.4.0.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v8.1.2...v8.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-22 09:02:10 +00:00
Maikel
025f8b25b1 Merge pull request #13637 from deivid-rodriguez/fix-missing-stripe-js-error-in-edge-case
Fix JS error when Stripe connect is disabled but Stripe API keys are setup
2025-10-22 13:09:58 +11:00
Maikel
3017f61047 Merge pull request #13638 from deivid-rodriguez/refactor-specs
Remove only usage of `STRIPE_PUBLIC_TEST_API_KEY` env and refactor specs that were using it
2025-10-22 13:08:31 +11:00
Maikel
8cb3d06f7c Merge pull request #13635 from deivid-rodriguez/testing-stripe-wiki
Link to Stripe testing wiki page from the cassette regeneration script
2025-10-22 13:02:21 +11:00
Maikel
8f442e82ed Merge pull request #13634 from openfoodfoundation/dependabot/bundler/activerecord-import-2.2.0
Bump activerecord-import from 1.6.0 to 2.2.0
2025-10-22 13:00:43 +11:00
David Rodríguez
b28886dd38 Normalize casing 2025-10-21 17:34:40 +02:00
David Rodríguez
bd4f115185 Create account directly with the proper stripe_user_id 2025-10-21 17:34:40 +02:00
David Rodríguez
c43650034f Remove unnecessary test specific environment variable 2025-10-21 17:34:40 +02:00
David Rodríguez
94bc787283 Remove unused let 2025-10-21 17:34:40 +02:00
David Rodríguez
58851a8e67 Move client_id let to the only spec using it 2025-10-21 17:34:39 +02:00
David Rodríguez
c3e2382600 Move let! to the only spec using it 2025-10-21 17:34:39 +02:00
David Rodríguez
802878b4eb Fix JS error when Stripe connect is disabled but Stripe API keys are setup 2025-10-21 17:24:34 +02:00
Filipe
69d8fc3cad Merge pull request #13624 from chahmedejaz/bugfix/13556-fix-500-error-on-stripe-checkout
Error 500 checking out with Stripe, after navigating back to the Summary page
2025-10-21 14:34:53 +01:00
David Rodríguez
6a226e476d Link to Stripe testing wiki page from the cassette regeneration script
I think this is the more relevant wiki page for someone looking into
regenerating cassettes.

Also, no need to mention bitwarden explicitly, the wiki page already
explains everything.
2025-10-21 14:38:10 +02:00
dependabot[bot]
479d52a2bb Bump activerecord-import from 1.6.0 to 2.2.0
Bumps [activerecord-import](https://github.com/zdennis/activerecord-import) from 1.6.0 to 2.2.0.
- [Changelog](https://github.com/zdennis/activerecord-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zdennis/activerecord-import/compare/v1.6.0...v2.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-21 09:02:00 +00:00
Gaetan Craig-Riou
8afd6eb0ab Upgrade node to 24.10.0
This is the latest node 24 version which set to be the next lts.
2025-10-21 15:56:50 +11:00
Gaetan Craig-Riou
8d4a1ff320 Update spec to cover new code path 2025-10-21 15:48:27 +11:00
Gaetan Craig-Riou
1f0e541743 Update spec description wording 2025-10-21 15:48:27 +11:00
Gaetan Craig-Riou
adb7563ccb Fix possible code injection
It will fix this security issue :
https://github.com/openfoodfoundation/openfoodnetwork/security/code-scanning/247
2025-10-21 15:48:27 +11:00
Gaetan Craig-Riou
73688b9544 Merge pull request #13630 from openfoodfoundation/dependabot/bundler/webmock-3.25.1
Bump webmock from 3.23.1 to 3.25.1
2025-10-21 10:02:14 +11:00
dependabot[bot]
02ea3cb61c Bump webmock from 3.23.1 to 3.25.1
Bumps [webmock](https://github.com/bblimke/webmock) from 3.23.1 to 3.25.1.
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.23.1...v3.25.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 09:26:20 +00:00
Maikel
c7d0594257 Merge pull request #13622 from deivid-rodriguez/no-reviewdog-master
Don't run reviewdog on pushes
2025-10-20 16:34:06 +11:00
Maikel
4eee7ad603 Merge pull request #13604 from deivid-rodriguez/silent-puma
Silence capybara starting puma during system specs
2025-10-20 16:26:18 +11:00
David Cook
23f7f2974a Merge pull request #13618 from deivid-rodriguez/remove-unnecessary-sleeps
Remove unnecessary explicit sleeps
2025-10-20 16:06:44 +11:00
Maikel
8105b919e0 Merge pull request #13600 from deivid-rodriguez/profile-enables-dev-caching
The PROFILE env variable should actually enable, not disable, caching
2025-10-20 16:03:20 +11:00
David Cook
53ef5148e9 Merge pull request #13617 from deivid-rodriguez/upgrade-cache-format-version
Upgrade cache format version
2025-10-20 15:41:52 +11:00
David Cook
93e6f9034c Merge pull request #13602 from deivid-rodriguez/bump-mini_magick
Update mini_magick to a version that plays nice with imagemagick v7
2025-10-20 15:26:20 +11:00
David Cook
125a92346c Merge pull request #13599 from deivid-rodriguez/fix-duplicate-key-warning
Fix duplicate keys warnings in some views
2025-10-20 15:21:40 +11:00
Gaetan Craig-Riou
31b8fe16cb Merge pull request #13623 from deivid-rodriguez/follow-up-to-old-rename
Follow up to old ofnEmptiesCart to ofnChangeHub rename
2025-10-20 10:53:47 +11:00
Gaetan Craig-Riou
cbffea8d30 Merge pull request #13616 from openfoodfoundation/dependabot/bundler/state_machines-activerecord-0.31.0
Bump state_machines-activerecord from 0.9.0 to 0.31.0
2025-10-20 09:50:30 +11:00
Ahmed Ejaz
10917161b0 Refactor order cycle expiry handling to allow skipping order emptying during checkout 2025-10-20 01:42:20 +05:00
Guido Oliveira
be9da62d98 fix table format in edit order page 2025-10-19 07:58:40 -03:00
filipefurtad0
7320fa3f09 Update all locales with the latest Transifex translations 2025-10-17 10:17:14 +01:00
Ahmed Ejaz
9f6c149735 Add check for payment authorization state in StripeScaPaymentAuthorize and corresponding spec 2025-10-17 05:25:45 +05:00
David Rodríguez
50578647ee Follow up to old ofnEmptiesCart to ofnChangeHub rename
This happened back in 2015 through
9c9051498b, but two places were missed.

One was a code comment so did not affect anything (other than confused
code readers I guess?). The other one did create a regression but was
later fixed by 18d966f0de in 2021.
2025-10-16 12:56:17 +02:00
David Rodríguez
a28f05fddc Don't run reviewdog on pushes
As configured, it's meant to annotate PRs with linter errors (so you
don't have to skim through logs). So it does not make sense for pushes.

In fact, on pushes rubocop action is doing nothing, and prettier action
is failing with:

> reviewdog: this is not PullRequest build.
> sed: couldn't write 80 items to stdout: Broken pipe
2025-10-16 12:34:37 +02:00
Rachel Arnould
c4c266246c Merge pull request #13507 from rioug/tag-rules-remove-angular
[Variant Tags] Remove angular from tag rule admin page
2025-10-15 23:16:05 +02:00
David Rodríguez
d6c044fd5b Remove unnecessary explicit sleeps
Capybara helpers already wait for the content to show up (and we already
have a default of 10 seconds configured), so I don't think waiting more is
actually the problem in these specs.

But if we wanted to wait more, I think it's better to pass the `:wait`
option to capybara matchers, because that's a "maximum waiting value"
but we'll still proceed earlier if the content shows up.

Using the same idea, I changed the positive assertions to happen first,
because negative assertions do spend "max wait time" waiting, while
positive assertions only wait until the content shows up.
2025-10-15 13:09:52 +02:00
David Rodríguez
a75ea5b506 Upgrade cache format version
It's supposed to be faster and more compact, and the previous format
will become unsupported in Rails 7.2 as per Rails boot warnings:

> DEPRECATION WARNING: Support for `config.active_support.cache_format_version = 6.1` has been deprecated and will be removed in Rails 7.2.
>
> Check the Rails upgrade guide at https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#new-activesupport-cache-serialization-format
> for more information on how to upgrade.
>    (called from <main> at /path/to/config/environment.rb:5)
2025-10-15 12:17:03 +02:00
dependabot[bot]
7f937fd4b1 Bump state_machines-activerecord from 0.9.0 to 0.31.0
Bumps [state_machines-activerecord](https://github.com/state-machines/state_machines-activerecord) from 0.9.0 to 0.31.0.
- [Release notes](https://github.com/state-machines/state_machines-activerecord/releases)
- [Changelog](https://github.com/state-machines/state_machines-activerecord/blob/master/CHANGELOG.md)
- [Commits](https://github.com/state-machines/state_machines-activerecord/compare/v0.9.0...state_machines-activerecord/v0.31.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-15 09:02:41 +00:00
Gaetan Craig-Riou
b4a64185dd Merge pull request #13576 from dacook/test-log-level
Add env var option for test log level
2025-10-15 13:40:23 +11:00
Gaetan Craig-Riou
a905acb56e Merge pull request #13601 from openfoodfoundation/dependabot/bundler/redis-5.4.1
Bump redis from 5.2.0 to 5.4.1
2025-10-15 13:22:37 +11:00
Ahmed Ejaz
067fa80d0f Merge pull request #13458 from rioug/docker-upgrade-postgres
Docker upgrade postgres
2025-10-15 02:24:16 +05:00
David Rodríguez
667ce5eda2 Silence capybara starting puma during system specs
##### Before

```
$ bin/rspec spec/system/admin/order_cycles/simple_spec.rb:460
Running via Spring preloader in process 79308
Run options: include {:locations=>{"./spec/system/admin/order_cycles/simple_spec.rb"=>[460]}}

As an administrator
    I want to manage simple order cycles
  as an enterprise user
    that is a manager of the coordinator
      when variants are hidden via inventory settings
Capybara starting Puma...
* Version 6.5.0, codename: Sky's Version
* Min threads: 0, max threads: 4
* Listening on http://127.0.0.1:51103
        shows a warning when going to 'outgoing products' tab

Finished in 3.95 seconds (files took 0.45949 seconds to load)
1 example, 0 failures
```

##### After

```
$ bin/rspec spec/system/admin/order_cycles/simple_spec.rb:460
Running via Spring preloader in process 79234
Run options: include {:locations=>{"./spec/system/admin/order_cycles/simple_spec.rb"=>[460]}}

As an administrator
    I want to manage simple order cycles
  as an enterprise user
    that is a manager of the coordinator
      when variants are hidden via inventory settings
        shows a warning when going to 'outgoing products' tab

Finished in 4.03 seconds (files took 0.49981 seconds to load)
1 example, 0 failures
```
2025-10-14 20:34:05 +02:00
dependabot[bot]
980cc9c724 Bump redis from 5.2.0 to 5.4.1
Bumps [redis](https://github.com/redis/redis-rb) from 5.2.0 to 5.4.1.
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v5.2.0...v5.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 09:01:55 +00:00
David Rodríguez
c72f9477cd bundle update mini_magick
This is mainly to shush a lot of warnings when running the test suite,
like the following:

```
WARNING: The convert command is deprecated in IMv7, use "magick" instead of "convert" or "magick convert"
```
2025-10-14 08:17:12 +02:00
David Rodríguez
8787eed863 The PROFILE env variable should actually enable, not disable, caching
I think this may be a typo from 6d8ddd1edac17a431222c86482bceb83e8a7d32f?
2025-10-14 08:03:15 +02:00
David Rodríguez
e2b6199f26 Fix duplicate keys warnings in some views
We're passing the `id` key twice, and with different value, resulting in
warnings like:

> /path/to/app/views/producers/index.html.haml:27: warning: key :id is duplicated and overwritten on line 31

Use only the latest value passed to remove the warning.

##### Before

```
$ bundle exec rspec -e "displays in an iframe" -e "logging in with a redirect set"

(...)

Run options: include {:full_description=>/(?-mix:displays\ in\ an\ iframe)|(?-mix:logging\ in\ with\ a\ redirect\ set)/}
Capybara starting Puma...
* Version 6.5.0, codename: Sky's Version
* Min threads: 0, max threads: 4
* Listening on http://127.0.0.1:50292
/path/to/app/views/producers/index.html.haml:27: warning: key :id is duplicated and overwritten on line 31
./path/to/app/views/groups/show.html.haml:68: warning: key :id is duplicated and overwritten on line 72
Modal window with text `Unable to load map. Please check your browser settings and allow 3rd party cookies for this website.` has been opened, but you didn't wrap your code into (`accept_prompt` | `dismiss_prompt` | `accept_confirm` | `dismiss_confirm` | `accept_alert`), accepting by default
.

Finished in 4.54 seconds (files took 4.04 seconds to load)
2 examples, 0 failures
```

##### After

```
$ bundle exec rspec -e "displays in an iframe" -e "logging in with a redirect set"

(...)

Run options: include {:full_description=>/(?-mix:displays\ in\ an\ iframe)|(?-mix:logging\ in\ with\ a\ redirect\ set)/}
Capybara starting Puma...
* Version 6.5.0, codename: Sky's Version
* Min threads: 0, max threads: 4
* Listening on http://127.0.0.1:50256
.Modal window with text `Unable to load map. Please check your browser settings and allow 3rd party cookies for this website.` has been opened, but you didn't wrap your code into (`accept_prompt` | `dismiss_prompt` | `accept_confirm` | `dismiss_confirm` | `accept_alert`), accepting by default
.

Finished in 4.17 seconds (files took 4.1 seconds to load)
2 examples, 0 failures
```
2025-10-14 07:58:32 +02:00
Maikel
49d345e608 Merge pull request #13597 from deivid-rodriguez/fix-rspec-warning
Fix RSpec warning when running `Reporting::ReportRenderer.render_as` unit spec
2025-10-14 14:02:42 +11:00
David Cook
12a6f9ac40 Merge pull request #13593 from openfoodfoundation/dependabot/bundler/flipper-1.3.6
Bump flipper from 1.3.0 to 1.3.6
2025-10-14 14:02:01 +11:00
Maikel
7d4efe75c3 Merge pull request #13596 from deivid-rodriguez/upgrade-caniuse-lite-to-fix-webpack-warnings
Update caniuse-lite to fix `bin/webpack-dev-server` warnings
2025-10-14 14:01:39 +11:00
Maikel
2cd41f3b8f Merge pull request #13595 from deivid-rodriguez/migrate-old-rspec-syntax
Use supported RSpec syntax
2025-10-14 13:52:40 +11:00
Maikel
436d919fc3 Merge pull request #13594 from deivid-rodriguez/typo
Fix typo in getting started guide
2025-10-14 13:51:43 +11:00
Maikel Linke
7a12e7426f Pass actors instead of AR associations to Flipper
Apparently they removed support for checking collections of actors.
2025-10-14 13:32:51 +11:00
David Cook
bd58969fb5 Reduce test logging by default
These logs are rarely checked, and can take up a lot of disk space.

I wanted to reduce the dev log level too, but then realised it also affects the dev server stdout. So now the other suggestions seem like a good idea.. (eg link development.log to /dev/null)

Oh well, this change will at least reduce one source of unnecessary disk usage in a default installation, so I think worth doing.
2025-10-14 12:30:36 +11:00
David Cook
0a385cc67c Use same variable name as prod, staging and test 2025-10-14 12:07:12 +11:00
David Cook
be5a630b9d [fixup] shorter variable name 2025-10-14 12:06:14 +11:00
David Rodríguez
98889365f1 Fix RSpec warning when running Reporting::ReportRenderer.render_as unit spec
Before:

```
$ bundle exec rspec -e ".render_as"

(...)

Run options: include {:full_description=>/\.render_as/}
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 #<ActionController::BadRequest: report_format should be in [:csv, :json, :html, :xlsx, :pdf]>. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /path/to/spec/lib/reports/report_renderer_spec.rb:34:in `block (3 levels) in <main>'.
.

Finished in 0.02544 seconds (files took 4.08 seconds to load)
1 example, 0 failures
```

After this patch:

```
$ bundle exec rspec -e ".render_as"

(...)

Run options: include {:full_description=>/\.render_as/}
.

Finished in 0.02488 seconds (files took 4.09 seconds to load)
1 example, 0 failures
```
2025-10-13 20:46:15 +02:00
David Rodríguez
9227660faf Update caniuse-lite to fix bin/webpack-dev-server warnings
This is the result of running:

$  npx update-browserslist-db@latest

And fixes warnings like

> Browserslist: caniuse-lite is outdated. Please run:
>   npx update-browserslist-db@latest
>   Why you should do it regularly: https://github.com/browserslist/update-db#readme

when running `bin/webpack-dev-server`.
2025-10-13 20:27:22 +02:00
David Rodríguez
bdafc1ff02 Use supported RSpec syntax
This spec was using a very old syntax no longer supported by RSpec. It's
not currently influencing specs result because the spec running into
the error is currently set as "pending". However, the spec is still run
and the error is still visible.

Fixing the syntax does not fix the spec, but lets it get a bit further.
2025-10-13 16:05:59 +02:00
David Rodríguez
9457b0505d Fix typo in getting started guide 2025-10-13 15:54:43 +02:00
dependabot[bot]
755116e713 Bump flipper from 1.3.0 to 1.3.6
Bumps [flipper](https://github.com/flippercloud/flipper) from 1.3.0 to 1.3.6.
- [Release notes](https://github.com/flippercloud/flipper/releases)
- [Changelog](https://github.com/flippercloud/flipper/blob/main/Changelog.md)
- [Commits](https://github.com/flippercloud/flipper/compare/v1.3.0...v1.3.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 09:20:50 +00:00
David Cook
4852ee2c6e Merge pull request #13587 from mkllnk/json-response
Clean up request specs testing JSON
2025-10-13 14:24:26 +11:00
Maikel
9ba215316b Merge pull request #13513 from mkllnk/add-cqcm-staging-server
Add CQCM staging server to platforms to share data with
2025-10-13 13:42:12 +11:00
Maikel
084f7a8a47 Merge pull request #13590 from openfoodfoundation/dependabot/bundler/newrelic_rpm-9.22.0
Bump newrelic_rpm from 9.9.0 to 9.22.0
2025-10-13 10:05:50 +11:00
Gaetan Craig-Riou
7c60dfb75c Merge pull request #13591 from openfoodfoundation/dependabot/bundler/rack-2.2.20
Bump rack from 2.2.19 to 2.2.20
2025-10-13 09:55:05 +11:00
dependabot[bot]
e2410105ce Bump rack from 2.2.19 to 2.2.20
Bumps [rack](https://github.com/rack/rack) from 2.2.19 to 2.2.20.
- [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.19...v2.2.20)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-10 18:59:10 +00:00
dependabot[bot]
8b0207f4b1 Bump newrelic_rpm from 9.9.0 to 9.22.0
Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.9.0 to 9.22.0.
- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)
- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.9.0...9.22.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-10 09:02:15 +00:00
Maikel Linke
d3319cfd69 Replace global spec helpers with faster let 2025-10-10 16:44:50 +11:00
Maikel Linke
378b5e656e Use already parsed JSON in specs
Existing helpers provide indifferent access already.
2025-10-10 16:44:08 +11:00
Maikel Linke
b2da57b496 Publish supplier of catalog item 2025-10-10 16:18:22 +11:00
Maikel Linke
c6a34cfe34 Move catalog_item builder into the right module 2025-10-10 16:18:22 +11:00
Maikel Linke
591a279927 DRY controller 2025-10-10 16:18:22 +11:00
Maikel Linke
86774b3e4e Tell data proxy the enterprise to update 2025-10-10 16:18:22 +11:00
Maikel Linke
2761cee5e6 Publish coordinates of addresses 2025-10-10 16:18:22 +11:00
Maikel Linke
9460d17417 Publish DFC endpoints as JSON 2025-10-10 16:18:22 +11:00
Maikel Linke
404c07a590 Spec DFC endpoint configuration
It looks like puma finds the file only under `/.well-known/dfc` and not
`/.well-known/dfc/` with a slash in staging environment while it works
here in dev and test.

And in any case, just placing the file in `public/` doesn't produce the
right content type.
2025-10-10 16:18:22 +11:00
Maikel Linke
f2f0d954c6 Move source of truth of platforms into one place
The first test tokens had an inconsistent client_id and I had to
introduce multiple mappings to get the right config. But that has been
harmonised and we can put the config in one place.
2025-10-10 16:18:22 +11:00
Maikel Linke
1028d42e35 Update test token for new dev client id 2025-10-10 16:18:22 +11:00
Maikel Linke
91ad63d1ed Use test token as source of truth for validity 2025-10-10 16:18:22 +11:00
Maikel Linke
2780ae78f7 Add CQCM production servers 2025-10-10 16:18:21 +11:00
Maikel Linke
bf661159c6 Notify data proxy of permission changes 2025-10-10 16:18:21 +11:00
Maikel Linke
ad78ef14ef Automate replacement of generated image URLs in Swagger doc 2025-10-10 16:18:21 +11:00
Maikel Linke
c7efa43cdb Add well-known config for SiB directory proxy 2025-10-10 16:18:21 +11:00
Maikel Linke
df6e553661 Add SuppliedProducts index endpoint 2025-10-10 16:18:21 +11:00
Maikel Linke
4d59343f6c List enterprises on DFC API 2025-10-10 16:18:21 +11:00
Maikel Linke
44d29e98e0 Fix publishing all enterprises when listing catalog 2025-10-10 16:18:21 +11:00
Maikel Linke
06c27d6aaf Spec current publish of catalog of all enterprises 2025-10-10 16:18:21 +11:00
Maikel Linke
cb9edfaed8 Show DPM platforms enabled for user 2025-10-10 16:18:21 +11:00
Maikel Linke
51a3085452 Add CQCM staging server to platforms 2025-10-10 16:18:21 +11:00
Maikel
8ccceccd92 Merge pull request #13580 from openfoodfoundation/dependabot/bundler/digest-3.2.0
Bump digest from 3.1.1 to 3.2.0
2025-10-10 11:16:05 +11:00
Filipe
5e58f11006 Merge pull request #13474 from garethdavisrogers/add-report-name-and-details
Add report name and details
2025-10-09 12:42:22 +01:00
Ahmed Ejaz
5d8ecc5e5c Merge pull request #13584 from openfoodfoundation/fix/dependabot-pr-error
use pull_request_target to run action in context of the base repo rather than forked dependabot repo
2025-10-09 03:37:35 +05:00
Ahmed Ejaz
12e70d729a use pull_request_target to run action in context of the base repo rather than forked dependabot repo 2025-10-09 03:33:41 +05:00
Gareth Rogers
dc61580da1 Merge branch 'master' into add-report-name-and-details 2025-10-08 17:23:28 -04:00
Gareth
b956d6f21b Added test coverage, converted instance_double to double as we do not need the actual method 2025-10-08 17:17:04 -04:00
dependabot[bot]
b5e3681eab Bump digest from 3.1.1 to 3.2.0
Bumps [digest](https://github.com/ruby/digest) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/ruby/digest/releases)
- [Commits](https://github.com/ruby/digest/compare/v3.1.1...v3.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 09:02:21 +00:00
Maikel
c45ac93a12 Merge pull request #13575 from mkllnk/hanging-specs
Deactivate Puffing Billy to avoid hanging specs
2025-10-08 16:54:18 +11:00
David Cook
60ee33053d Apply suggestions from code review 2025-10-08 14:15:56 +11:00
David Cook
a4ea311439 Add env var option for test log level
The test log level is already debug by default, but perhaps you don't want that because it results in a very large file over time, which isn't automatically cleaned up.

In that case, why not change the default, maybe to :info?
2025-10-08 14:02:05 +11:00
Maikel Linke
5b383237ea Deactivate Puffing Billy to avoid hanging specs 2025-10-08 13:26:37 +11:00
Maikel
de8029f877 Merge pull request #13564 from mkllnk/config-log
Make log-level configurable in staging
2025-10-08 13:24:56 +11:00
Gaetan Craig-Riou
d818162a9f Merge pull request #13568 from openfoodfoundation/dependabot/bundler/undercover-0.8.1
Bump undercover from 0.7.4 to 0.8.1
2025-10-08 09:56:22 +11:00
Gaetan Craig-Riou
9bd4d29027 Merge pull request #13567 from openfoodfoundation/dependabot/bundler/mime-types-3.7.0
Bump mime-types from 3.5.2 to 3.7.0
2025-10-08 09:51:59 +11:00
Gaetan Craig-Riou
742d442929 Merge pull request #13566 from openfoodfoundation/dependabot/bundler/rails-i18n-7.0.10
Bump rails-i18n from 7.0.9 to 7.0.10
2025-10-08 09:45:04 +11:00
Gaetan Craig-Riou
f08f744077 Merge pull request #13565 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.12.0
Bump jasmine-core from 5.11.0 to 5.12.0
2025-10-08 09:44:05 +11:00
Gaetan Craig-Riou
72ab0ba3f5 Merge pull request #13573 from openfoodfoundation/dependabot/bundler/rack-2.2.19
Bump rack from 2.2.18 to 2.2.19
2025-10-08 09:39:42 +11:00
dependabot[bot]
bb4b483469 Bump rack from 2.2.18 to 2.2.19
Bumps [rack](https://github.com/rack/rack) from 2.2.18 to 2.2.19.
- [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.18...v2.2.19)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 19:44:09 +00:00
Gareth Rogers
585073a326 Merge branch 'master' into add-report-name-and-details 2025-10-07 11:02:56 -04:00
Gareth
c3189892af Removed other rows for now. Can be added in future PRs 2025-10-07 11:01:55 -04:00
Gareth
417011909c Removed other filter rows. They weren't working and maybe not even relevant. The idea was to include order cycles and distributor ids as well, but it wasn't really requested so I'm taking it out. 2025-10-07 11:01:55 -04:00
Gareth
9ed612410f Changed default checking behavior of metadata controller 2025-10-07 11:01:55 -04:00
David Cook
7098cf2224 Merge pull request #13570 from openfoodfoundation/task/13521-move-dependabot-to-code-review
Remove project write permissions from Dependabot PR workflow
2025-10-07 10:12:55 +11:00
Ahmed Ejaz
4713e9046c Remove project write permissions from Dependabot PR workflow 2025-10-07 03:57:11 +05:00
David Cook
037030cf60 Merge pull request #13548 from mkllnk/test_rake
Configure rake specs in one place
2025-10-07 09:31:02 +11:00
dependabot[bot]
286f05d05c Bump undercover from 0.7.4 to 0.8.1
Bumps [undercover](https://github.com/grodowski/undercover) from 0.7.4 to 0.8.1.
- [Release notes](https://github.com/grodowski/undercover/releases)
- [Changelog](https://github.com/grodowski/undercover/blob/master/CHANGELOG.md)
- [Commits](https://github.com/grodowski/undercover/compare/v0.7.4...v0.8.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 09:06:51 +00:00
dependabot[bot]
e9a750ce6d Bump mime-types from 3.5.2 to 3.7.0
Bumps [mime-types](https://github.com/mime-types/ruby-mime-types) from 3.5.2 to 3.7.0.
- [Changelog](https://github.com/mime-types/ruby-mime-types/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mime-types/ruby-mime-types/compare/v3.5.2...v3.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 09:06:17 +00:00
dependabot[bot]
8942f3c72b Bump rails-i18n from 7.0.9 to 7.0.10
Bumps [rails-i18n](https://github.com/svenfuchs/rails-i18n) from 7.0.9 to 7.0.10.
- [Changelog](https://github.com/svenfuchs/rails-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/svenfuchs/rails-i18n/compare/v7.0.9...v7.0.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 09:05:35 +00:00
dependabot[bot]
23b2c8e11b Bump jasmine-core from 5.11.0 to 5.12.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.11.0 to 5.12.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.11.0...v5.12.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 09:05:06 +00:00
Gaetan Craig-Riou
9a9e9763cc Merge pull request #13546 from openfoodfoundation/task/13521-move-dependabot-to-code-review
Automate Dependabot PRs to Code Review column via GitHub Action
2025-10-06 16:21:14 +11:00
Maikel Linke
90cd2e0ba2 Make log-level configurable in staging
The new comment and code come from the Rails 8.0 default files.
2025-10-06 15:20:25 +11:00
Maikel
8c02bde7f2 Merge pull request #13472 from openfoodfoundation/dependabot/bundler/rswag-ui-2.16.0
Bump rswag-ui from 2.13.0 to 2.16.0
2025-10-06 15:14:58 +11:00
dependabot[bot]
8c1e0bae92 Bump rswag-ui from 2.13.0 to 2.16.0
Bumps [rswag-ui](https://github.com/rswag/rswag) from 2.13.0 to 2.16.0.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.13.0...2.16.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 03:54:07 +00:00
Maikel
09c7288b11 Merge pull request #13471 from openfoodfoundation/dependabot/bundler/rspec-rails-7.1.1
Bump rspec-rails from 6.1.2 to 7.1.1
2025-10-06 14:51:22 +11:00
dependabot[bot]
d27ffe5fca Bump rspec-rails from 6.1.2 to 7.1.1
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 6.1.2 to 7.1.1.
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v6.1.2...v7.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 02:34:38 +00:00
David Cook
6c94650e51 Merge pull request #13516 from mkllnk/lock-sprockets
Lock sprockets dependency to major version 3
2025-10-06 12:05:10 +11:00
Ahmed Ejaz
79bb469332 Update all locales with the latest Transifex translations 2025-10-06 03:54:40 +05:00
Ahmed Ejaz
2c4df63879 Add permissions for contents, pull-requests, and project in workflow 2025-10-06 03:35:57 +05:00
Ahmed Ejaz
9f5d73184f Add .secrets file to define GitHub secrets values locally 2025-10-04 19:24:07 +05:00
Ahmed Ejaz
4a5938c0f7 Add installation retrieval mode and payload for Dependabot token generation 2025-10-04 18:50:47 +05:00
Gareth Rogers
f414e04dea Merge branch 'master' into add-report-name-and-details 2025-10-01 09:54:51 -04:00
Filipe
ef4d3ec138 Merge pull request #13506 from chahmedejaz/task/13505-remove-stripe-redirect-monkey-patch
Remove Stripe redirect monkeypatch and ensure reliable checkout flow
2025-10-01 13:03:58 +01:00
Gareth Rogers
0a9eb173ea Add report name and details to CSV files 2025-10-01 13:59:43 +10:00
Gaetan Craig-Riou
f5a9ec7fa9 Merge pull request #13551 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.11.0
Bump jasmine-core from 5.10.0 to 5.11.0
2025-10-01 09:29:17 +10:00
filipefurtad0
e190b87f12 Update all locales with the latest Transifex translations 2025-09-29 15:54:51 +01:00
Filipe
ff2e0f4d45 Merge pull request #13533 from chahmedejaz/task/13435-sort-products-by-on-hand-amount
Sort product list by 'on hand' amount
2025-09-29 15:07:00 +01:00
dependabot[bot]
d50bcbb70a Bump jasmine-core from 5.10.0 to 5.11.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.10.0 to 5.11.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.10.0...v5.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 10:21:25 +00:00
Ahmed Ejaz
782f813a15 Add Dependabot PR test event and update workflow for token generation 2025-09-29 11:35:48 +05:00
Gaetan Craig-Riou
9b0545c33f Merge pull request #13550 from openfoodfoundation/dependabot/bundler/rack-2.2.18
Bump rack from 2.2.14 to 2.2.18
2025-09-29 09:39:35 +10:00
Gaetan Craig-Riou
55f162ff4a Create tag when tag input lose focus
This reflect the current behaviour of the angular tag input.
Plus fix spec helper.
2025-09-29 09:36:19 +10:00
Gaetan Craig-Riou
ede7650fc9 Replace space by -, to match angular tag functionality 2025-09-29 09:36:12 +10:00
dependabot[bot]
7631fd422e Bump rack from 2.2.14 to 2.2.18
Bumps [rack](https://github.com/rack/rack) from 2.2.14 to 2.2.18.
- [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.14...v2.2.18)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-25 17:32:06 +00:00
Gaetan Craig-Riou
c2c2a9503c Rename stimulus controller based on the new shorter naming 2025-09-24 10:47:59 +10:00
Gaetan Craig-Riou
bc1823e276 Add http error handling
Because we are using fetch here to manually request turbo stream we have
to handle errors ourselves.
2025-09-24 10:46:37 +10:00
Gaetan Craig-Riou
01d5830480 Move turbo http error handling to its own file 2025-09-24 10:46:37 +10:00
Gaetan Craig-Riou
bad7369e67 Per review, fix tag rule filter spec 2025-09-24 10:46:37 +10:00
Gaetan Craig-Riou
ab65b2d745 Per review, fix various syntax/misspell 2025-09-24 10:46:37 +10:00
Gaetan Craig-Riou
f38aa73434 Per review, remove test class
It's better to use an anonymous class, and it also prevent the test
class from leaking the global namespace
2025-09-24 10:46:37 +10:00
Gaetan Craig-Riou
3862e0206c Limit to only one tag per tag rule 2025-09-24 10:46:34 +10:00
Gaetan Craig-Riou
3a0722f39c Remove tag related methods 2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
42f7f2606b Remove reordering testing
This functionality has been removed
2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
9d9f7e8717 Remove Angularjs files related to tag rules 2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
0cf244b211 Document variant filtering rule behavior
Add test to conver scenario where we have conficting rules
2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
646ba18b8a Fix bug, load tag rule types when update errors 2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
8bd631fbb7 Clean up tag rule form component template
Consolidate everything in one template and move visibility options to
the component.
2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
5c3acf38d7 Clean up stimulus usage
Use value and parameter when possible instead of relying on hidden
input
2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
afdc40d230 Move helper function to component
It's only used in the component so there is no need to keep it as an
helper.
2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
771573af1c Fix system spec to work with refactored screen 2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
953122b6f6 Fix adding new rule
We separate the default tag rules and the various tag rule groups by an
index of 1000. This is so the previous group does not overlap with the
current group. Rails will managed the non continusly numbered
tag_rule_attributes param just fine. It saves us from having to manage
the numbering of tag_rule_attributes in javascript
2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
75325e2935 Consolidate modal to add rule into a component 2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
7e48007d09 Add new tag group and add rule to tag group 2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
50ab0a494c Move tag rule group form to a component 2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
d3ef744daf Display existing grouped tag rules 2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
ccdd12bf59 Small improvment
- add value for preferred customer tags
- allow passing html options to preferred customer tags hidden field
2025-09-24 10:40:43 +10:00
Gaetan Craig-Riou
b66b033999 Small improvement
- allow passing html options to the hidden field with the tags values,
  to be used to add stimulus directive
- dispatch an input event when the hidden field with tags value gets
  updated, it allows stimulus controller (or javascript) to react to
  update
2025-09-24 10:40:34 +10:00
Gaetan Craig-Riou
35d37639af Refactor tag rule filter input
Consolidated four partials into one
2025-09-24 10:38:53 +10:00
Gaetan Craig-Riou
6790cad089 Add deleting tag rule
TagRuleController is now a subclass of Spree::Admin::BaseController
because Admin::ResourceController did not play well with turbo_stream.
And to be honest we did not need all the functionality provided by the
ResourceController
2025-09-24 10:38:53 +10:00
Gaetan Craig-Riou
7087d1b290 Add default tag rule
I tried to leverage turbo as much as possible
2025-09-24 10:38:53 +10:00
Gaetan Craig-Riou
8f0cdf8722 Move individual tag rule form to a component 2025-09-24 10:38:53 +10:00
Gaetan Craig-Riou
25f6db09a5 TagListInputComponent removed dependency on the form
This allows us to use the component in a context where there is no form
object defined.
2025-09-24 10:38:47 +10:00
Gaetan Craig-Riou
11006c3a60 Display default rule 2025-09-24 10:36:21 +10:00
Gaetan Craig-Riou
b2a3715a8b Fix bug
Don't add a leading coma when the tag list is empty
2025-09-24 10:36:21 +10:00
Gaetan Craig-Riou
693789d526 Merge pull request #13549 from openfoodfoundation/dependabot/npm_and_yarn/leaflet-geosearch-4.2.2
Bump leaflet-geosearch from 4.2.1 to 4.2.2
2025-09-24 09:49:41 +10:00
dependabot[bot]
d26b407801 Bump leaflet-geosearch from 4.2.1 to 4.2.2
Bumps [leaflet-geosearch](https://github.com/smeijer/leaflet-geosearch) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/smeijer/leaflet-geosearch/releases)
- [Commits](https://github.com/smeijer/leaflet-geosearch/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: leaflet-geosearch
  dependency-version: 4.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-22 09:12:58 +00:00
Maikel Linke
6d284023fe Configure rake specs in one place
So we don't have to add it to every rake spec file.
2025-09-22 17:27:58 +10:00
Maikel Linke
570b72868b Simplify task loading code 2025-09-22 17:27:58 +10:00
Maikel Linke
286d9f8e7d Remove unneeded declaration of Rails environment task in specs 2025-09-22 17:27:58 +10:00
Ahmed Ejaz
b0c3265cdb update migration test to assert nil cvv_response_message for ineligible payments 2025-09-22 11:57:38 +05:00
Ahmed Ejaz
6bb709e85e update test description to reflect patching of redirect_auth_url in cvv_result 2025-09-22 11:57:37 +05:00
filipefurtad0
fe257162b7 Update all locales with the latest Transifex translations 2025-09-22 07:56:21 +01:00
Ahmed Ejaz
b510736a8d refactor migration to use SpreePayment model instead of Spree::Payment 2025-09-22 11:55:43 +05:00
Ahmed Ejaz
2df0078ea9 fix lint issues 2025-09-22 11:55:43 +05:00
Ahmed Ejaz
ca079e6e26 add migration to migrate cvv_message_response value to redirect_auth_url
- As per the patch, cvv_message_response contains 3D verification URL for those payments which require it. So need to migrate to the new column to maintain data integrity
2025-09-22 11:55:43 +05:00
Ahmed Ejaz
ac06126f59 replace cvv_response_message usage with redirect_auth_url 2025-09-22 11:55:43 +05:00
Ahmed Ejaz
aecb5f49c9 fix spec as per current response we get for cvv_result 2025-09-22 11:54:20 +05:00
Ahmed Ejaz
a18fd54916 Simplify redirect logic in PaymentsController 2025-09-22 11:54:20 +05:00
Ahmed Ejaz
626b802ea7 add redirect_auth_url column and replace cvv_response_message for redirection
- Added redirect_auth_url column to spree_payments table
- Updated payment redirection logic to use redirect_auth_url instead of cvv_response_message
- Cleans up old monkeypatch usage and improves Stripe checkout reliability
2025-09-22 11:54:20 +05:00
Ahmed Ejaz
28ab41c47f Potential fix for code scanning alert no. 253: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-09-18 03:17:22 +05:00
Ahmed Ejaz
17a85e9c1c Update GitHub Actions workflow to use specific Dependabot token and set organization name explicitly 2025-09-18 03:01:44 +05:00
Maikel
9e746d1b40 Merge pull request #13531 from rioug/better-stimulus-name-for-component
Load component stimulus controller with a shorter name
2025-09-17 17:10:37 +10:00
Filipe
273f78b214 Merge pull request #13530 from mkllnk/hub-address-feature
Remove retired hub_address feature
2025-09-16 17:23:42 +01:00
Filipe
bd1d9892a2 Merge pull request #13487 from rioug/security-241-fix-url-sanitization
Fix url sanitization for Stripe authorisation URL
2025-09-16 16:40:11 +01:00
David Cook
cb825df75b Merge pull request #13536 from openfoodfoundation/dependabot/npm_and_yarn/leaflet-geosearch-4.2.1
Bump leaflet-geosearch from 4.2.0 to 4.2.1
2025-09-16 15:32:29 +10:00
Filipe
bfcadfd7c0 Merge pull request #13404 from cyrillefr/UnsavedChangesMustAppearOnRemovingSingleTagFromOrderCycle
Fixes Save button does not enable when removing only tag in OC
2025-09-15 13:27:26 +01:00
dependabot[bot]
255b5f1cd5 Bump leaflet-geosearch from 4.2.0 to 4.2.1
Bumps [leaflet-geosearch](https://github.com/smeijer/leaflet-geosearch) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/smeijer/leaflet-geosearch/releases)
- [Commits](https://github.com/smeijer/leaflet-geosearch/compare/v4.2.0...v4.2.1)

---
updated-dependencies:
- dependency-name: leaflet-geosearch
  dependency-version: 4.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-15 09:27:26 +00:00
Ahmed Ejaz
dffcd446fd Simplify backorderable priority SQL query in product sorting concern 2025-09-15 12:03:04 +05:00
Ahmed Ejaz
1987f0b667 Remove redundant SQL string checks in product sorting specs for clarity 2025-09-15 11:57:33 +05:00
Ahmed Ejaz
0b5efae8c4 Refactor sorting expectations in product_sort_by_stocks_spec for clarity and accuracy 2025-09-15 11:56:07 +05:00
Gaetan Craig-Riou
36bb7cb317 Fix vertical ellipsis menu compoenent spec 2025-09-15 10:46:16 +10:00
Ahmed Ejaz
49dbe1d039 Refactor comments for clarity in product sorting concerns 2025-09-15 02:15:03 +05:00
Ahmed Ejaz
c326aa6b23 Add comprehensive specs for sorting functionality 2025-09-15 01:59:40 +05:00
Ahmed Ejaz
ec91d717c7 Fix default sorting for 'on_hand' column to 'name asc' in admin products table 2025-09-13 01:31:38 +05:00
Ahmed Ejaz
da843d1ba1 Add sorting by stock levels using ransacker and update locale for 'on_hand' header 2025-09-13 01:11:21 +05:00
filipefurtad0
2c4b3ab8fc Update all locales with the latest Transifex translations 2025-09-12 08:41:29 +01:00
Gaetan Craig-Riou
1c7fbd1d2d Rename vertical ellipsis menu component files
There is no need to have a different name scheme to shorten stimulus
controller name. It's now inline with the other components
2025-09-10 15:27:56 +10:00
Gaetan Craig-Riou
8042dac74f Fix stimulus controller name to use the shorter version 2025-09-10 15:10:10 +10:00
Gaetan Craig-Riou
ad1ce00223 Generate a better stimulus name for component controller
Using the helper `definitionsFromContext` generate quite long name for
stimulus controller in component, ie :
`tag-list-input-component--tag-list-input`.
This custom loader will generate much more readable name, ie L
`tag-list-input`. It's expecting the following pattern :
ofn_component/ofn_controller.js and will fall back to the default
of replacing "_" by "- and "/" by "--" for controller not matching
the pattern.
2025-09-10 15:03:31 +10:00
Maikel Linke
d916ed2c96 Remove retired hub_address feature 2025-09-10 09:59:47 +10:00
Filipe
da66a2947c Merge pull request #13502 from cillian/replace-darker-background-disable-dynamically-inline-alert-page-alert-directives
Replace darker-background, disable-dynamically, inline-alert and page-alert Angular directives
2025-09-08 16:28:51 +01:00
David Cook
646d3b8ed9 Merge pull request #13524 from mkllnk/cleanup
Code cleanup
2025-09-08 14:31:34 +10:00
Gaetan Craig-Riou
1f15f094ce Per review, check the URL is from a stripe subdomain 2025-09-08 11:00:11 +10:00
filipefurtad0
adddee2c3c Update all locales with the latest Transifex translations 2025-09-05 09:52:44 +01:00
Cillian O'Ruanaidh
74e7bd5172 Update spec/system/consumer/shopping/cart_spec.rb test to use new disabled selector 2025-09-05 09:38:20 +01:00
Cillian O'Ruanaidh
66859f44ca Include LinkHelper which includes new :link_to_or_disable method to fix spec/views/spree/orders/edit.html.haml_spec.rb test 2025-09-05 09:38:20 +01:00
Cillian O'Ruanaidh
6f7a547e15 Add a :link_to_or_disabled helper method 2025-09-05 09:38:20 +01:00
Cillian O'Ruanaidh
c057c72321 Replace ofn-page-alert angular directive 2025-09-05 09:38:20 +01:00
Cillian O'Ruanaidh
7a3b4d394b Replace inline-alert angular directive 2025-09-05 09:38:20 +01:00
Cillian O'Ruanaidh
32e3fc0175 Replace disable-dynamically angular directive 2025-09-05 09:38:20 +01:00
Cillian O'Ruanaidh
23c9410a25 Replace darker-background angular directive 2025-09-05 09:38:20 +01:00
Maikel
7e9c5ea58b Merge pull request #13523 from filipefurtad0/content_spec_html
Adds coverage to homepage alert HTML content
2025-09-05 14:35:07 +10:00
Maikel Linke
6c313a1b5a Remove duplicate include of TimeHelpers in specs 2025-09-05 14:30:46 +10:00
Maikel Linke
244a88a1cd Removed unused user from report classes
We needed them for a feature toggle that doesn't exist anymore.
2025-09-05 14:29:01 +10:00
filipefurtad0
589315780c Adds coverage to homepage alert HTML content 2025-09-04 19:07:29 +01:00
Ahmed Ejaz
1654bb2b0a Rename job from 'move-pr-to-project' to 'move-pr-to-code-review' for clarity 2025-09-04 05:57:40 +05:00
Ahmed Ejaz
9f396a40b7 Update condition to move Dependabot PRs to Code Review for bump titles 2025-09-04 05:53:48 +05:00
Ahmed Ejaz
4bf1b7ac08 Add workflow to automatically move Dependabot PRs to Code Review 2025-09-04 05:53:28 +05:00
Gaetan Craig-Riou
2910082584 Merge pull request #13517 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.10.0
Bump jasmine-core from 5.9.0 to 5.10.0
2025-09-03 16:54:57 +10:00
dependabot[bot]
70b5fda632 Bump jasmine-core from 5.9.0 to 5.10.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.9.0 to 5.10.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.9.0...v5.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 18:05:10 +00:00
Maikel Linke
8bc82685ae Bump sprockets from 3.7.2 to 3.7.5
Changelog: https://github.com/rails/sprockets/blob/3.x/CHANGELOG.md
2025-09-01 16:56:22 +10:00
Maikel Linke
63125705ac Lock version of sprockets 2025-09-01 16:54:44 +10:00
Maikel Linke
9bf2dad343 Update all locales with the latest Transifex translations 2025-08-29 15:15:19 +10:00
David Cook
05b3417f77 Merge pull request #13512 from mkllnk/remove-timecop-usage
Remove remaining Timecop usage
2025-08-29 14:09:50 +10:00
Maikel Linke
403aa6ac6f Remove remaining Timecop usage 2025-08-29 11:16:20 +10:00
Filipe
fbad3ee9f4 Merge pull request #13484 from cesarlr/patch-1
Update Gemfile.lock
2025-08-28 19:38:59 +01:00
Filipe
ddb8b2d08f Merge pull request #13496 from dacook/fix-link
Fix link to enterprise payment methods tab
2025-08-28 19:17:37 +01:00
Filipe
42c9ee033a Merge pull request #13503 from AndreyUsyaev/usandy/fix-i18n-sells-options
Fix missed I18n translations for enterprises sells options
2025-08-28 18:50:07 +01:00
Maikel Linke
524634b4ea Bump wkhtmltopdf-binary from 0.12.6.9 to 0.12.6.10 to support Debian 13 2025-08-28 11:46:21 +01:00
César López Ramírez
0b97171bb0 Update Gemfile.lock
Upgrade wkhtmltopdf-binary to support Ubuntu 24.04
2025-08-28 11:46:21 +01:00
Filipe
b0c7e29b0d Merge pull request #13468 from mkllnk/rails-config-updates
Add Rails 7.0 and 7.1 framework defaults
2025-08-28 11:44:44 +01:00
Andrey Usyaev
3d7799df19 Fix code review remarks 2025-08-27 13:21:44 +03:00
Andrey Usyaev
5f02d88a86 Fix missed I18n translations for enterprises sells options 2025-08-27 13:21:44 +03:00
Maikel
bdae8e6478 Merge pull request #13475 from mkllnk/dfc-sib-tokens
Accept tokens from Startin'Blox OIDC server
2025-08-27 14:55:30 +10:00
Gaetan Craig-Riou
053ef05baf Merge pull request #13480 from mkllnk/time-travel
Replace Timecop with Rails' time helpers
2025-08-27 09:34:58 +10:00
Ahmed Ejaz
7fcb31d563 Update all locales with the latest Transifex translations 2025-08-25 11:49:44 +05:00
Gaetan Craig-Riou
31a7374808 Merge pull request #13444 from garethdavisrogers/fix-docker-dependency-and-db-dev-env
Added cmake dep to dockerfile and added script for db:schema:load tha…
2025-08-25 14:10:10 +10:00
Gareth
e5ce06ae39 Updated branch 2025-08-22 12:49:24 -04:00
Gareth Rogers
5f64204d51 Merge branch 'master' into fix-docker-dependency-and-db-dev-env 2025-08-22 08:31:27 -04:00
Maikel Linke
94b75540e4 Replace Timecop with Rails' time helpers
Rails 4.1 added time helpers but we never bothered using them. But now
I'm getting rid of the Timecop dependency and use standard helpers.

Beware though that the new helpers always freeze time. When you travel
to a certain date then the clock stops ticking while Timecop maintained
the passing of time.

The freezing of time could cause problems if you are trying to enforce a
timeout. But all current specs don't seem affected.

In most cases, the freezing will make it easier to avoid flaky specs.
2025-08-22 16:57:04 +10:00
Maikel Linke
6e489d7770 Enforce required DFC permissions 2025-08-22 16:46:59 +10:00
Maikel Linke
81b1169e77 Configure undercover to exclude files 2025-08-22 16:13:20 +10:00
Maikel
4b558b4820 Merge pull request #13501 from openfoodfoundation/dependabot/npm_and_yarn/sha.js-2.4.12
Bump sha.js from 2.4.11 to 2.4.12
2025-08-22 16:12:26 +10:00
Maikel
e224b8f63b Merge pull request #13500 from openfoodfoundation/dependabot/npm_and_yarn/cipher-base-1.0.6
Bump cipher-base from 1.0.4 to 1.0.6
2025-08-22 16:11:30 +10:00
Maikel
80bb0606b4 Merge pull request #13499 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.7.4
Bump @floating-ui/dom from 1.7.3 to 1.7.4
2025-08-22 15:50:47 +10:00
dependabot[bot]
499fcc791e Bump sha.js from 2.4.11 to 2.4.12
Bumps [sha.js](https://github.com/crypto-browserify/sha.js) from 2.4.11 to 2.4.12.
- [Changelog](https://github.com/browserify/sha.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/sha.js/compare/v2.4.11...v2.4.12)

---
updated-dependencies:
- dependency-name: sha.js
  dependency-version: 2.4.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-21 15:48:41 +00:00
dependabot[bot]
30dae3c3ea Bump cipher-base from 1.0.4 to 1.0.6
Bumps [cipher-base](https://github.com/crypto-browserify/cipher-base) from 1.0.4 to 1.0.6.
- [Changelog](https://github.com/browserify/cipher-base/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/cipher-base/compare/v1.0.4...v1.0.6)

---
updated-dependencies:
- dependency-name: cipher-base
  dependency-version: 1.0.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-21 15:23:41 +00:00
dependabot[bot]
af247c32a3 Bump @floating-ui/dom from 1.7.3 to 1.7.4
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.7.3 to 1.7.4.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.7.4/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-21 09:48:24 +00:00
Gareth
6f9dcf7e27 remove bundle check 2025-08-20 11:04:40 -04:00
Gareth
2d064bab64 Created a bundler service that runs once removing responsibilities from any other services. The bundler service always runs install which should still be pretty fast if nothing or only a few gems have changed. A healthcheck won't work unless bundler runs continuously which is impractical. Instead, a checksum is generated on bundle install and sentinels in the other services have a definite confirmation that bundle is complete. The nice thing about this approach is that web, webpack, and sidekiq (which share the same bundles dependencies) will not concurrently run bundle install solving dep install redundancies. 2025-08-20 10:13:20 -04:00
Gareth
b69eb9bdff Specified BUNDLE_PATH AND BUNDLE_APP_CONFIG in Dockerfile 2025-08-20 08:48:21 -04:00
David Cook
f79c1879bd Test that you can actually get to Stripe to connect your account
Well.. almost.
2025-08-20 13:06:59 +10:00
David Cook
646d538a3d Fix broken link
This link would go to the enterprise edit screen, but didn't successfully select the payment methods panel.

Ideally, the spec would try to follow the link and verify that you can see the Connect with Stripe button. But it opens the link in a new tab and I'm not sure how to test that.
2025-08-20 11:54:47 +10:00
David Cook
90288b8cbf Merge pull request #13492 from chahmedejaz/revert/dependabot/bundler/rexml-3.3.9
500 Error preventing check out with Stripe payment method
2025-08-19 10:50:09 +10:00
Ahmed Ejaz
c821b0a285 revert "Bump rexml from 3.2.9 to 3.3.9" 2025-08-19 05:27:58 +05:00
Gareth
b95d798a27 Fixed webpack service so that web relies on its bundles. This has re-enabled JS 2025-08-18 12:24:27 -04:00
Gareth
e1e4aeac1f Added conditions to sidekiq too as it races db as well. Everything seems functional now 2025-08-18 11:52:52 -04:00
Gareth
c7ae47053e Added health check to avoid docker container racing 2025-08-18 11:38:57 -04:00
Gareth Rogers
5892ae1800 Merge branch 'master' into fix-docker-dependency-and-db-dev-env 2025-08-18 09:32:21 -04:00
Gaetan Craig-Riou
c37376d67e Merge pull request #13485 from openfoodfoundation/dependabot/bundler/bullet-8.0.8
Bump bullet from 7.1.6 to 8.0.8
2025-08-18 13:58:39 +10:00
Gaetan Craig-Riou
d3a2c09f66 Upgrade to postgres 16
Postgres 16 is shipped with Ubuntu 24 which is the version we will be
moving to in production
2025-08-18 10:45:54 +10:00
Gaetan Craig-Riou
d596e692d8 Upgrade postgres to version 14
This is the version currently availablein Ubuntu 22
2025-08-18 10:45:24 +10:00
Gaetan Craig-Riou
2df95dcbab No need to expose the postgres port
There is no need to expose the port to the host, all container will be
running in the same network, so they will have access to database port.
2025-08-18 10:45:18 +10:00
Ahmed Ejaz
7aa9b164e6 Add scope for ordering products by stock levels and update admin table header for on_hand sorting 2025-08-17 07:16:46 +05:00
Gareth
74368f939b By creating the db in the container on composition, the first migration file rejects the schema of the empty database. All I had to do was remove db creation from docker so that db:prepare will default to creating open_food_network_dev from schema.rb rather than perceiving a mismatch from the precreated docker db 2025-08-15 14:23:13 -04:00
Gareth
cb02cd39fe Reverting unexpected change to schema.rb as requested 2025-08-15 12:27:10 -04:00
dependabot[bot]
49ec5b2089 Bump bullet from 7.1.6 to 8.0.8
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.1.6 to 8.0.8.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.1.6...8.0.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-15 09:56:17 +00:00
Maikel
92ef5fe3d5 Merge pull request #13483 from openfoodfoundation/dependabot/bundler/pdf-reader-2.15.0
Bump pdf-reader from 2.12.0 to 2.15.0
2025-08-15 10:29:09 +10:00
Filipe
ae477b7e52 Merge pull request #13455 from kirst-n/13366-only-load-necessary-flatpickr
Optimise loading of language-specific date pickers
2025-08-14 23:24:59 +01:00
Filipe
0e191e5fca Merge pull request #13459 from rioug/13454-fix-redeemeing-voucher-when-using-paypal
[VINE] Redeem voucher before redirecting to payment url
2025-08-14 16:30:22 +01:00
dependabot[bot]
64f9ea6fc0 Bump pdf-reader from 2.12.0 to 2.15.0
Bumps [pdf-reader](https://github.com/yob/pdf-reader) from 2.12.0 to 2.15.0.
- [Changelog](https://github.com/yob/pdf-reader/blob/main/CHANGELOG)
- [Commits](https://github.com/yob/pdf-reader/compare/v2.12.0...v2.15.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 10:01:32 +00:00
Maikel
058c6749da Merge pull request #13477 from openfoodfoundation/dependabot/bundler/timecop-0.9.10
Bump timecop from 0.9.8 to 0.9.10
2025-08-14 13:20:18 +10:00
Maikel
2d15ec4458 Merge pull request #13478 from openfoodfoundation/dependabot/bundler/activerecord-7.1.5.2
Bump activerecord from 7.1.5.1 to 7.1.5.2
2025-08-14 13:18:58 +10:00
dependabot[bot]
56eaa8bb98 Bump activerecord from 7.1.5.1 to 7.1.5.2
Bumps [activerecord](https://github.com/rails/rails) from 7.1.5.1 to 7.1.5.2.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v8.0.2.1/activerecord/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v7.1.5.1...v7.1.5.2)

---
updated-dependencies:
- dependency-name: activerecord
  dependency-version: 7.1.5.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 01:21:32 +00:00
Gaetan Craig-Riou
118e18a78e Tighten url validation
Per recommendation from https://github.com/openfoodfoundation/openfoodnetwork/security/code-scanning/241
2025-08-13 22:27:42 +10:00
Gaetan Craig-Riou
cbced144d5 Clean up styling 2025-08-13 22:21:35 +10:00
dependabot[bot]
1e1f1e1e1b Bump timecop from 0.9.8 to 0.9.10
Bumps [timecop](https://github.com/travisjeffery/timecop) from 0.9.8 to 0.9.10.
- [Changelog](https://github.com/travisjeffery/timecop/blob/master/History.md)
- [Commits](https://github.com/travisjeffery/timecop/compare/v0.9.8...v0.9.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 09:58:01 +00:00
Maikel Linke
1d2115766a Show product groups to platform user
I removed the caching of `managed_enterprises` in Permissions because
it's just a scope and calling it again is very cheap. And that makes the
method a lot easier to read now that we have a conditional here.

Accessing the managed enterprises via the user instead of a separate
scope on the Enterprise model also reduce the SQL queries. We may want
to use this method in more places. I prefer to keep the
admin-conditional in a permissions class instead of in the model.
2025-08-13 15:06:31 +10:00
Maikel Linke
6814ef43f4 Show addresses to platform users 2025-08-13 15:06:25 +10:00
Maikel Linke
c9e8294561 DRY with shared context 2025-08-13 15:02:09 +10:00
Maikel Linke
82d0e1bf68 Show enterprise to authorised platform user 2025-08-13 15:02:09 +10:00
Maikel Linke
b16e541a81 Show DFC catalog to authorised platform 2025-08-13 15:02:09 +10:00
Maikel Linke
c12d494de3 Demonstrate authentication as DFC client app 2025-08-13 15:02:09 +10:00
Maikel Linke
9be27842e1 Accepts tokens from Startin'Blox OIDC server
The API controllers don't know the new type of user yet and will raise
errors but we can work on that bit by bit.
2025-08-13 15:02:09 +10:00
Maikel Linke
2a7754edbf Add test for current token validation 2025-08-13 15:02:09 +10:00
Maikel Linke
cfeafbfc51 Update API docs with latest version 2025-08-13 15:02:08 +10:00
Maikel
1f8a9f9c76 Merge pull request #13470 from openfoodfoundation/dependabot/bundler/rack-2.2.14
Bump rack from 2.2.11 to 2.2.14
2025-08-13 12:45:59 +10:00
Maikel
b1893942ac Merge pull request #13469 from openfoodfoundation/dependabot/bundler/net-imap-0.4.20
Bump net-imap from 0.4.10 to 0.4.20
2025-08-13 12:40:50 +10:00
dependabot[bot]
ad59ed4d40 Bump rack from 2.2.11 to 2.2.14
Bumps [rack](https://github.com/rack/rack) from 2.2.11 to 2.2.14.
- [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.11...v2.2.14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 00:02:14 +00:00
Maikel
8491a167ed Merge pull request #13350 from mkllnk/dfc-ui
Add permission module with example data
2025-08-13 10:00:53 +10:00
Maikel Linke
05b00f16ad Move config option to a better place 2025-08-12 20:24:16 +10:00
Maikel Linke
78fdaa68c8 Update config files with Rails 7.1 templates 2025-08-12 20:24:16 +10:00
dependabot[bot]
59277292fb Bump net-imap from 0.4.10 to 0.4.20
Bumps [net-imap](https://github.com/ruby/net-imap) from 0.4.10 to 0.4.20.
- [Release notes](https://github.com/ruby/net-imap/releases)
- [Commits](https://github.com/ruby/net-imap/compare/v0.4.10...v0.4.20)

---
updated-dependencies:
- dependency-name: net-imap
  dependency-version: 0.4.20
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 06:54:11 +00:00
Maikel Linke
e8813833fa Add Rails 7.1 framework defaults template 2025-08-12 15:43:45 +10:00
Gaetan Craig-Riou
354a7ab687 Merge pull request #13465 from openfoodfoundation/dependabot/bundler/fugit-1.11.1
Bump fugit from 1.8.1 to 1.11.1
2025-08-12 15:06:20 +10:00
Gaetan Craig-Riou
a5a1ee9bd9 Merge pull request #13462 from openfoodfoundation/dependabot/bundler/thor-1.4.0
Bump thor from 1.3.1 to 1.4.0
2025-08-12 15:02:23 +10:00
Gaetan Craig-Riou
ad3f78ef69 Merge pull request #13466 from openfoodfoundation/dependabot/bundler/uri-0.13.2
Bump uri from 0.13.0 to 0.13.2
2025-08-12 14:58:40 +10:00
Gaetan Craig-Riou
e02497b163 Merge pull request #13467 from openfoodfoundation/dependabot/bundler/rails-html-sanitizer-1.6.1
Bump rails-html-sanitizer from 1.6.0 to 1.6.1
2025-08-12 14:57:59 +10:00
Gaetan Craig-Riou
7d2d94398f Merge pull request #13464 from openfoodfoundation/dependabot/bundler/cgi-0.3.7
Bump cgi from 0.3.6 to 0.3.7
2025-08-12 14:49:47 +10:00
Gaetan Craig-Riou
0ecf004ff2 Merge pull request #13463 from openfoodfoundation/dependabot/bundler/rexml-3.3.9
Bump rexml from 3.2.9 to 3.3.9
2025-08-12 14:48:06 +10:00
dependabot[bot]
444f448207 Bump rails-html-sanitizer from 1.6.0 to 1.6.1
Bumps [rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/rails/rails-html-sanitizer/releases)
- [Changelog](https://github.com/rails/rails-html-sanitizer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/rails-html-sanitizer/compare/v1.6.0...v1.6.1)

---
updated-dependencies:
- dependency-name: rails-html-sanitizer
  dependency-version: 1.6.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 04:31:53 +00:00
dependabot[bot]
d9381b23d7 Bump uri from 0.13.0 to 0.13.2
Bumps [uri](https://github.com/ruby/uri) from 0.13.0 to 0.13.2.
- [Release notes](https://github.com/ruby/uri/releases)
- [Commits](https://github.com/ruby/uri/compare/v0.13.0...v0.13.2)

---
updated-dependencies:
- dependency-name: uri
  dependency-version: 0.13.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 04:31:50 +00:00
dependabot[bot]
6a9a2884d6 Bump fugit from 1.8.1 to 1.11.1
Bumps [fugit](https://github.com/floraison/fugit) from 1.8.1 to 1.11.1.
- [Changelog](https://github.com/floraison/fugit/blob/master/CHANGELOG.md)
- [Commits](https://github.com/floraison/fugit/compare/v1.8.1...v1.11.1)

---
updated-dependencies:
- dependency-name: fugit
  dependency-version: 1.11.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 04:31:11 +00:00
dependabot[bot]
70edd4b898 Bump cgi from 0.3.6 to 0.3.7
Bumps [cgi](https://github.com/ruby/cgi) from 0.3.6 to 0.3.7.
- [Release notes](https://github.com/ruby/cgi/releases)
- [Commits](https://github.com/ruby/cgi/compare/v0.3.6...v0.3.7)

---
updated-dependencies:
- dependency-name: cgi
  dependency-version: 0.3.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 04:31:07 +00:00
dependabot[bot]
b57a2befd9 Bump rexml from 3.2.9 to 3.3.9
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.9 to 3.3.9.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.9...v3.3.9)

---
updated-dependencies:
- dependency-name: rexml
  dependency-version: 3.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 04:27:20 +00:00
dependabot[bot]
fef9a78198 Bump thor from 1.3.1 to 1.4.0
Bumps [thor](https://github.com/rails/thor) from 1.3.1 to 1.4.0.
- [Release notes](https://github.com/rails/thor/releases)
- [Commits](https://github.com/rails/thor/compare/v1.3.1...v1.4.0)

---
updated-dependencies:
- dependency-name: thor
  dependency-version: 1.4.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 04:24:48 +00:00
Maikel
dd86736170 Merge pull request #13461 from openfoodfoundation/dependabot/bundler/webrick-1.8.2
Bump webrick from 1.8.1 to 1.8.2
2025-08-12 13:54:23 +10:00
Maikel
0d8c7ef118 Merge pull request #13460 from openfoodfoundation/dependabot/bundler/nokogiri-1.18.9
Bump nokogiri from 1.16.5 to 1.18.9
2025-08-12 13:52:57 +10:00
dependabot[bot]
20730b8768 Bump webrick from 1.8.1 to 1.8.2
Bumps [webrick](https://github.com/ruby/webrick) from 1.8.1 to 1.8.2.
- [Release notes](https://github.com/ruby/webrick/releases)
- [Commits](https://github.com/ruby/webrick/compare/v1.8.1...v1.8.2)

---
updated-dependencies:
- dependency-name: webrick
  dependency-version: 1.8.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 03:43:07 +00:00
dependabot[bot]
ad7c69189b Bump nokogiri from 1.16.5 to 1.18.9
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.16.5 to 1.18.9.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.16.5...v1.18.9)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-version: 1.18.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 03:22:15 +00:00
Maikel Linke
a5f44cb9b2 Update inflection config to Rails 7.0 template 2025-08-12 12:49:06 +10:00
Maikel Linke
97d21d8cbe Update parameter filtering to Rails 7.0 template 2025-08-12 12:45:48 +10:00
Maikel Linke
7afdd13b64 Update CSP config with Rails 7.0 template 2025-08-12 12:41:24 +10:00
Maikel Linke
54c446f0a3 Update asset config to Rails 7.0 templates 2025-08-12 12:30:30 +10:00
Maikel Linke
4454c90575 Update test config with Rails 7.0 template 2025-08-12 12:22:23 +10:00
Maikel Linke
dd3a61acdf Update production config with Rails 7.0 default 2025-08-12 12:10:22 +10:00
Maikel Linke
6d8ddd1eda Update development config with Rails 7.0 defaults 2025-08-12 12:10:19 +10:00
Maikel Linke
b8e8ab15d1 Update environment config with Rails 7.0 default 2025-08-12 11:06:33 +10:00
Maikel Linke
bf1d2f3620 Update boot config from Rails 7.0 template 2025-08-12 10:59:46 +10:00
Maikel Linke
43026ddc6a Update application config with Rails 7.0 defaults 2025-08-12 10:56:34 +10:00
Maikel Linke
18b83d2423 Add Rails 7.0 framework defaults templates 2025-08-12 10:42:37 +10:00
Maikel Linke
3a72aefc1c Fail test when timeout reached
In this example it didn't matter but if we re-use the helper then it
needs to raise an error after the timeout has been reached.
2025-08-12 09:54:48 +10:00
David Cook
e855ea0dbd Merge pull request #13453 from mkllnk/rails-7.1
Allow only existing deprecations in Rails 7.1
2025-08-12 09:44:25 +10:00
David Cook
1eba950e19 Merge pull request #13451 from mkllnk/remove-person
Remove Person from product catalog
2025-08-12 09:42:40 +10:00
David Cook
9cd04c087e Merge pull request #13450 from mkllnk/engine-ruby-version
Losen engine gemspec requirement for Dependabot
2025-08-12 09:40:01 +10:00
David Cook
459d25e533 Merge pull request #13447 from mkllnk/cover-rake
Report code coverage on rake tasks
2025-08-12 09:37:51 +10:00
Kirst
b06e562425 Remove flatpickr controller test that isn't useful based on feedback 2025-08-11 20:29:11 +10:00
Kirst
2936cfebca Remove I18n assignment from flatpickr controller test from feedback 2025-08-11 20:29:11 +10:00
Kirst
b8ad428b5d Load only specified flatpickr locale
Dynamically import only the requested flatpickr locale.

English locale is bundled by default, so passing null triggers flatpickr's built-in English fallback without an explicit import.
2025-08-11 20:28:47 +10:00
Maikel Linke
ca34d24847 Replace long waits with better polling
Capybara polls under the hood as well. So we do something similar here
but tailored to the tested code. This reduced the test run time on my
machine from 35 seconds to 15 seconds.
2025-08-11 17:07:44 +10:00
Maikel Linke
6e581fce75 Remove unnecessary styling
The early dev versions of the DPM needed these styles. Now the module
looks fine without any additional styles.
2025-08-11 16:29:08 +10:00
Gaetan Craig-Riou
66041061fb Redeem VINE voucher before redirecting to payment url
When using paypal, we need to redeem the voucher before redirecting to
the payment gateway url, otherwise the voucher will never get redeemed.
2025-08-11 16:28:04 +10:00
Maikel Linke
e54c27c900 Use more precise regex 2025-08-11 16:23:08 +10:00
Maikel Linke
b3d3d6bf06 Allow DPM feature for specific users 2025-08-11 15:25:50 +10:00
Maikel Linke
5876c52318 Test all known scopes 2025-08-11 15:15:00 +10:00
Maikel Linke
842f4ae40e Re-enable CSRF check supported by DPM now 2025-08-11 15:13:35 +10:00
Maikel Linke
342ef4e9eb Complete smoke test of DFC data sharing
Working within a shadow root of the web component isn't well supported
by Capybara and I needed to find some workarounds. It's not pretty but
it works (on my machine). *fingers crossed*
2025-08-08 14:00:41 +10:00
Maikel Linke
210201514e Add gem capybara-shadowdom to access web component 2025-08-08 14:00:41 +10:00
Maikel Linke
2d3f18a71b Load DFC Permissions module in system spec
But we can't access the inside of the component yet.
2025-08-08 14:00:41 +10:00
Maikel Linke
9d284b7110 Set language to display scope labels 2025-08-08 14:00:41 +10:00
Maikel Linke
994f1ca6c6 Update scope ids 2025-08-08 14:00:41 +10:00
Maikel Linke
f65e4797cf Add feature toggle for DFC dev platform 2025-08-08 14:00:40 +10:00
Maikel Linke
52aeec5ac4 Update and list scopes for real 2025-08-08 14:00:40 +10:00
Maikel Linke
7032b3f463 Add endpoint to update scopes of platform
Dummy implementation only.
2025-08-08 14:00:40 +10:00
Maikel Linke
c26686b430 Add DfcPermission model to persist granted scopes 2025-08-08 14:00:38 +10:00
Maikel Linke
60c8f4ee20 Add DFC API endpoint for listing platforms
Only listing example JSON for now.

This is not part of the official DFC API but it's a DFC-related API and
therefore we put it in the same namespace.

The DFC Permission Module will make authenticated requests to grant
certain platforms certain permissions.
2025-08-08 14:00:01 +10:00
Maikel Linke
25f396c126 Add permission module with example data
It's basically just copied from the Readme file still pointing to the
development server and it's not interacting with OFN just yet.
2025-08-08 14:00:01 +10:00
Maikel Linke
0166abcd2a Remove deprecated and unnecessary config 2025-08-08 11:18:34 +10:00
Maikel Linke
4cd0071dd4 Allow only existing deprecations
* Allow deprecated cache_format_version
* Allow deprecated Rails.application.secrets
* Allow deprecated Passing the class as positional argument
* Allow deprecated alias_attribute with non-attribute targets
* Allow deprecated model aliases
* Allow deprecated action_dispatch.show_exceptions
2025-08-08 11:17:41 +10:00
Maikel Linke
32c96b72ad Update all locales with the latest Transifex translations 2025-08-08 10:24:04 +10:00
Maikel
30701d61e2 Merge pull request #13232 from chitty/rails7.1
Bump Rails to 7.1
2025-08-08 10:09:58 +10:00
Carlos Chitty
45b712ddcd Set latest invoce date explicitly in Orders::GenerateInvoiceService test
Solves CI failure:
https://github.com/openfoodfoundation/openfoodnetwork/actions/runs/14760883756/job/41441014958?pr=13232
2025-08-07 17:44:52 +02:00
Carlos Chitty
3153e99497 Update OpenOrderCycleJob test "syncing remote products" to expect 58 queries instead of 59
The main point of the test is to alert us if the query count increased (https://github.com/openfoodfoundation/openfoodnetwork/pull/13232#discussion_r2199896280).
The missing query in rails 7.1:

Spree::StockItem Load  SELECT "spree_stock_items"."id", "spree_stock_items"."variant_id", "spree_stock_items"."count_on_hand", "spree_stock_items"."created_at", "spree_stock_items"."updated_at", "spree_stock_items"."backorderable", "spree_stock_items"."deleted_at", "spree_stock_items"."lock_version" FROM "spree_stock_items" WHERE "spree_stock_items"."id" = $1 LIMIT $2 FOR UPDATE
2025-08-07 17:44:52 +02:00
Carlos Chitty
a2f263e081 User Rails.env.local?
https://github.com/rails/rails/pull/46786
Solves rubocop failure in rails 7.1 bump branch https://github.com/openfoodfoundation/openfoodnetwork/actions/runs/14739687970/job/41374340281?pr=13232
2025-08-07 17:44:52 +02:00
Carlos Chitty
3cb6a2617b Do not fail tests on deprecation warnings for the next rails version (7.2) 2025-08-07 17:44:52 +02:00
Carlos Chitty
420deca437 Bump rails from 7.0.8 to 7.1.5.1 2025-08-07 17:44:52 +02:00
Filipe
76aebf8a72 Merge pull request #13436 from chahmedejaz/task/13432-decommission-old-products-screen
Decommission Old Products UI and Related Code
2025-08-07 17:39:43 +02:00
Maikel Linke
1ec570375f Remove Person from product catalog
Early versions of the DFC standard demanded that all data is published
in relationship to the authenticated user. But that is not necessary
anymore and can add complications when a platform is authenticated as
client user.
2025-08-07 14:56:35 +10:00
Maikel Linke
75c33b29d5 Losen engine gemspec requirement for Dependabot
Dependabot doesn't seem to be able to resolve the version correctly. We
got this message:

```
Could not find compatible versions

Because every version of web depends on Ruby = 0.0.1
  and Gemfile depends on web >= 0,
  Ruby = 0.0.1 is required.
So, because current Ruby version is = 3.1.4,
  version solving has failed.
```
2025-08-07 12:59:32 +10:00
Maikel
1bfff91c72 Merge pull request #13449 from openfoodfoundation/dependabot/npm_and_yarn/tmp-0.2.4
Bump tmp from 0.2.1 to 0.2.4
2025-08-07 10:24:15 +10:00
Maikel Linke
d469552afc Fix schema version 2025-08-07 10:13:14 +10:00
Gareth
3750898c44 Looks like db:prepare never fully ran and that's why it did not work. The issue seems to be using foreman with web, webpack, and sidekiq in the same script. Though not dependent on each other, the build order or port assignment was causing web to exit early upon build 2025-08-06 15:21:30 -04:00
Gareth
d34f8900d7 divided foreman queued services into 3 containers. Web was exiting seemingly at random and seems to be a conflict between web, web-pack, and sidekiq being run through foreman. The division into 3 dev containers has been very consistent in building the project correctly 2025-08-06 15:05:45 -04:00
dependabot[bot]
e6cffde8fb Bump tmp from 0.2.1 to 0.2.4
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.1 to 0.2.4.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.1...v0.2.4)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-06 18:31:11 +00:00
Maikel
910ded1a8c Typo
[skip ci]
2025-08-05 13:49:44 +10:00
Maikel Linke
2555a9e710 Ignore breaking code coverage for coverage spec
When we test our code coverage compilation, it breaks the code coverage
report for the current rspec process. By running that code separately,
we gain a correct coverage report for the rest of the code again.

So unfortunately, we can't report on the code coverage of this
particular task and have to ignore it. But at least CI depends on the
correct function of this task and would fail if it didn't work.
2025-08-05 12:45:05 +10:00
Maikel Linke
f532c4712e Load rake tasks only once for code coverage
Apparently, Rake's way of reloading the task code confuses the code
coverage report. Code tested by rake task specs was not recognised as
covered even though it was.
2025-08-05 12:44:13 +10:00
Gaetan Craig-Riou
3af28c4b5b Merge pull request #13441 from mkllnk/cover-more
Check more code for coverage
2025-08-04 16:49:56 +10:00
David Cook
63b864253d Merge pull request #13442 from mkllnk/puffing-billy
Add gem puffing-billy to record browser requests
2025-08-04 12:35:34 +10:00
David Cook
8efeec4301 Merge pull request #13440 from mkllnk/tidy
Remove unused test helper
2025-08-04 12:03:43 +10:00
Maikel Linke
bed33928e0 Declare simplecov as direct dependency
The undercover docs recommended to remove it from the Gemfile but that's
only valid if you use only undercover. We do rely directly on the
simplecov gem to generate reports though.
2025-08-04 11:55:26 +10:00
Maikel Linke
bb7a31b286 Update all locales with the latest Transifex translations 2025-08-01 12:37:40 +10:00
Ahmed Ejaz
75b2fe1dd4 revert API removals 2025-08-01 01:48:21 +05:00
Maikel Linke
c0924fbe5e Use new Undercover formatter for :nocov: support 2025-07-31 14:56:17 +10:00
Maikel Linke
d72bc49409 Compare coverage to upstream master when on fork 2025-07-31 14:56:17 +10:00
Maikel Linke
06867ff7ea Remove unnecessary simplecov filters
* /schemas doesn't exist.
* /lib/generators doesn't exist.
* /vendor doesn't contain rb files.
* /public doesn't contain rb files.
* /swagger doesn't contain rb files.
* /log doens't contain rb files.
2025-07-31 14:56:17 +10:00
Maikel Linke
76a1fe7767 Ignore inaccurate coverage of rake tasks
I tried several ways to get code coverage for rake tasks but I haven't
succeeded yet. Somehow rake is confusing simplecov.
2025-07-31 14:56:11 +10:00
Maikel Linke
3363c523ea Check more code for coverage
* ApplicationJob should be covered by tests.
* Spec should all be executed, except `xit` which should be avoided and
  can be flagged.
2025-07-31 14:53:51 +10:00
Maikel
91628f8daa Merge pull request #13443 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.7.3
Bump @floating-ui/dom from 1.7.2 to 1.7.3
2025-07-31 11:52:14 +10:00
Gareth
addf36a304 dummy commit for docker token check 2025-07-30 20:44:05 -04:00
Gareth
6a912b7d8c Added cmake dep to dockerfile and added script for db:schema:load that runs only if the schema is different than the latest migration 2025-07-30 20:12:53 -04:00
dependabot[bot]
f3dfbab109 Bump @floating-ui/dom from 1.7.2 to 1.7.3
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.7.3/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 10:00:39 +00:00
Maikel Linke
d01474ebcd Ignore Chrome's automatic requests to Google services 2025-07-30 12:25:34 +10:00
Maikel Linke
a062a7b697 Add Billy proxy to Chrome in system specs
And demonstrate the use of puffing-billy browser proxy.

Billy can cache and record responses to browser requests. For that to
work we need to allow network connections and disable VCR. But instead I
found that the Billy proxy is just like any other Ruby backend code and
its connections can be recorded with VCR instead.

And instead of stubbing requests via Billy.proxy, we can use standard
Webmock `stub_request`. Now we use puffing-billy just to relay browser
requests via our Ruby app.
2025-07-29 14:37:27 +10:00
Maikel Linke
fe8b805e1f Add gem puffing-billy 2025-07-29 14:37:27 +10:00
Maikel Linke
f3f43225cb Remove unused test helper 2025-07-29 13:42:51 +10:00
Maikel
65604f5b04 Merge pull request #13437 from dacook/remove-unused-method
Remove unused method
2025-07-28 16:29:15 +10:00
David Cook
661bb29029 Remove unused method
The name doesn't appear in the codebase so I guess it's unused.
2025-07-28 13:19:16 +10:00
Gaetan Craig-Riou
b725697972 Merge pull request #13433 from mkllnk/inventory-switch-august-4
Disable inventory only for future enterprises
2025-07-28 12:02:54 +10:00
David Cook
b8546db1e5 Update date for 11th Aug 2025-07-28 11:43:31 +10:00
Gaetan Craig-Riou
bc25a5ecd6 Merge pull request #13428 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.9.0
Bump jasmine-core from 5.8.0 to 5.9.0
2025-07-28 11:37:48 +10:00
Gaetan Craig-Riou
71de96e0a6 Merge pull request #13430 from openfoodfoundation/dependabot/npm_and_yarn/form-data-3.0.4
Bump form-data from 3.0.1 to 3.0.4
2025-07-28 10:50:12 +10:00
David Cook
23bcdc1cb7 Merge pull request #13434 from mkllnk/private-address-test
Provide open port for private address test
2025-07-28 09:27:07 +10:00
David Cook
60ac1c9fbe Merge pull request #13414 from mkllnk/remove-unused-hub
Remove unused instance variable
2025-07-28 09:22:15 +10:00
Ahmed Ejaz
fcd4d073c4 Update all locales with the latest Transifex translations 2025-07-27 08:02:49 +05:00
Ahmed Ejaz
df4cf4b768 Fix specs 2025-07-27 07:58:04 +05:00
Ahmed Ejaz
3f39d94bd3 Remove conditional rendering for previous page icon in pagination 2025-07-27 07:21:10 +05:00
Ahmed Ejaz
acfe3f6589 Remove admin_style_v3 feature toggle and related conditional logic 2025-07-27 07:20:16 +05:00
Ahmed Ejaz
1717c5376b Remove deprecated migrations for admin style v3 activation 2025-07-27 07:11:07 +05:00
Ahmed Ejaz
1426b6eeb7 Remove legacy admin styles in favor of v3 styling
Completes migration to the new admin v3 styling system by:
- Removing conditional stylesheet inclusion in admin head
- Deleting all legacy admin style files and components
- Making admin-style-v3 the default and only stylesheet

This change reduces maintenance overhead and simplifies the admin styling codebase by removing the old styling system that was being conditionally loaded based on feature flags.
2025-07-27 07:02:53 +05:00
Ahmed Ejaz
188b2eb754 Simplify pagination next button by removing conditional icon rendering 2025-07-27 06:44:02 +05:00
Ahmed Ejaz
6e055ddbdf Remove icon parameters from admin navigation tabs for simplification 2025-07-27 06:32:44 +05:00
Ahmed Ejaz
025fc784a8 Refactor products_return_to_url method to remove url_filters parameter and simplify usage in views 2025-07-27 06:26:12 +05:00
Ahmed Ejaz
fefd0239e6 Remove unused product image controller and directive; delete product image update route 2025-07-27 06:15:14 +05:00
Ahmed Ejaz
0fa67c69fd Remove bulk product update functionality
Removes the bulk product update feature and its associated components:
- Removes Angular-based bulk product editing controller and views
- Deletes bulk product API endpoints and related controller actions
- Removes product cloning and variant deletion functionality
- Removes associated JavaScript tests and specs

This appears to be part of a larger effort to modernize/simplify the product management interface, removing legacy Angular-based bulk editing in favor of a different approach.
2025-07-27 06:03:14 +05:00
Ahmed Ejaz
44cbe55c96 Update product routes and views for consistency and clarity 2025-07-27 05:25:50 +05:00
Filipe
56d3ac247d Merge pull request #13426 from cyrillefr/AlignPriceColumnTextToTheLeft
Align Cart Price column texts to the left
2025-07-24 22:51:36 +01:00
Filipe
0ed08f8f9d Merge pull request #13402 from mkllnk/hub-address
Hide the delivery address for pickup on checkout summary
2025-07-24 19:57:31 +01:00
Maikel Linke
667b49b7f1 Show hub address for pickup only when feature enabled 2025-07-24 15:24:32 +10:00
Maikel Linke
dd6d1ea64b Provide open port for private address test 2025-07-24 14:19:32 +10:00
Maikel Linke
f0dd1885c9 Fix: Check feature toggle for hub early 2025-07-24 13:41:26 +10:00
Maikel Linke
05b6200c8f Remove unused instance variable
I noticed this when reviewing another pull request.
2025-07-24 13:37:14 +10:00
Maikel Linke
fcd6897240 Prepare delivery details partial for conditional display 2025-07-24 13:30:40 +10:00
Maikel Linke
c23c773942 Simplify view code 2025-07-24 13:30:39 +10:00
Maikel
7af960fceb Merge pull request #13409 from filipefurtad0/sets_docker_no_sandbox_option_chrome
[Cuprite setup] Adds a DOCKER variable, to disable sandbox mode for system tests
2025-07-24 13:12:15 +10:00
Maikel Linke
45a0705379 Disable inventory only for future enterprises 2025-07-24 13:00:14 +10:00
Ahmed Ejaz
6da1200b64 Refactor product routes to remove feature toggle constraints and simplify access 2025-07-24 02:30:37 +05:00
Gaetan Craig-Riou
1cf31f4028 Merge pull request #13431 from dacook/bump-undercover
Bump undercover to 0.7.4
2025-07-23 10:36:19 +10:00
David Cook
6df71f28ca Bump undercover to 0.7.4
And its dependencies.
2025-07-23 09:42:06 +10:00
dependabot[bot]
9272d6d82f Bump form-data from 3.0.1 to 3.0.4
Bumps [form-data](https://github.com/form-data/form-data) from 3.0.1 to 3.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/v3.0.4/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v3.0.1...v3.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 3.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 22:56:43 +00:00
Filipe
a8114e42a7 Merge pull request #13381 from rioug/add-feature-flag-inventory
Add feature flag to enable inventory
2025-07-21 17:59:54 +01:00
dependabot[bot]
17e02e7304 Bump jasmine-core from 5.8.0 to 5.9.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.8.0 to 5.9.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.8.0...v5.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 10:36:34 +00:00
Gaetan Craig-Riou
6ba80f57b3 Disable Choose products from when inventory disabled 2025-07-21 13:47:28 +10:00
Gaetan Craig-Riou
d90200fb3f Disable Coordinator inventory when inventory is off 2025-07-21 11:41:30 +10:00
cyrillefr
08114b495a Align Cart Price column texts to the left 2025-07-17 14:17:57 +02:00
filipefurtad0
7b6b3d907c Update all locales with the latest Transifex translations 2025-07-15 18:58:34 +01:00
cyrillefr
8011449ce7 Adding a spec with one single tag
- need to add ids to ru the spec
2025-07-14 18:15:01 +02:00
Filipe
cf9ffd8931 Merge pull request #13419 from chahmedejaz/bugfix/13416-orders-page-inaccessible-by-admins
Orders page inaccessible as superadmin (error 504)
2025-07-14 13:50:51 +01:00
Ahmed Ejaz
e6b9373570 Refactor line items search to improve security and maintainability
Moves search field configuration from frontend to backend to prevent potential security issues with exposing internal field names. The change also improves maintainability by centralizing search logic in the controller.

Adds conditional logic to use name_alias for non-admin users when searching distributor names, enhancing data access control.
2025-07-13 18:07:14 +05:00
Ahmed Ejaz
ec44947b37 Add special handling for admin users in order permissions
Modifies order and line item permission logic to give admin users full access to all orders and line items, bypassing the regular complex joins queries to get orders editable by producers. These complex joins are needed for regular users but for user admins we need to return all orders.
2025-07-13 05:34:55 +05:00
Gaetan Craig-Riou
c0639b37bb Merge pull request #13412 from openfoodfoundation/dependabot/npm_and_yarn/hotkeys-js-3.13.15
Bump hotkeys-js from 3.13.14 to 3.13.15
2025-07-12 14:47:40 +10:00
filipefurtad0
38388be4da Only the .env.test.local file (not tracked) should be changed
This prevents contributors from inadvertently committing changes on the .env.test file (which is tracked)

Reverts changes to .env.test and changes README.md accordingly
2025-07-10 19:53:00 +01:00
filipefurtad0
352f1ba900 Adds a DOCKER env variable, to disable sandbox mode for system tests
Fixes rubocop offense - || instead of or

Comments out the DOCKER variable

Corrects the syntax for Markdown inline code
2025-07-10 19:53:00 +01:00
dependabot[bot]
7a0ecc777a Bump hotkeys-js from 3.13.14 to 3.13.15
Bumps [hotkeys-js](https://github.com/jaywcjlove/hotkeys-js) from 3.13.14 to 3.13.15.
- [Release notes](https://github.com/jaywcjlove/hotkeys-js/releases)
- [Commits](https://github.com/jaywcjlove/hotkeys-js/compare/v3.13.14...v3.13.15)

---
updated-dependencies:
- dependency-name: hotkeys-js
  dependency-version: 3.13.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 09:41:28 +00:00
Gaetan Craig-Riou
aeefe841bf Merge pull request #13403 from chitty/cch/image_variant_url_for
Do not try to generate a URL for unpersisted blobs in development/test environment
2025-07-09 14:15:07 +10:00
Gaetan Craig-Riou
70757ccdef Add migration to enable inventory for existing Enterprises 2025-07-09 13:48:53 +10:00
Gaetan Craig-Riou
7450f8a530 Fix spec, enable inventory when needed 2025-07-09 13:43:18 +10:00
Gaetan Craig-Riou
618d597f6d ScopeVariantToHub require an Enterprise object
The hub parameter is used to check if inventory is enabled, so it breaks
if we just pass an id
2025-07-09 13:43:18 +10:00
Gaetan Craig-Riou
b7f969eed9 Move the inventory feature check to ScopeVariantToHub
Per review, the check is done on the same enterprise as the one use to
initialize ScopeVariantToHub. So it makes sense to move the actual
feature check to ScopeVariantToHub#scope
2025-07-09 13:43:12 +10:00
Gaetan Craig-Riou
b28e30cb6c Inventory is disabled by default
It will be enabled on release for existing Enterprises, we can use the
added group "enterprise_created_before_2025_07_04" to do so.
2025-07-09 11:35:27 +10:00
Gaetan Craig-Riou
681eee9309 Scope variant only when inventory is enabled
This wasn't pick up our specs, so I am not actually sure it's
usefull.Still for consistency sake we don't want to scope if inventory
is disabled
2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
6937a133ae Move inventory enabled check to OpenFoodNetwork::ScopeVariantToHub 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
ddc45e1cd8 Post rebase, fix inventory landing page spec 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
28a11f1fee Enabled inventory by default
Currently inventory is enabled by default, but we enventually want to
disabled it by default. So we disable inventory for specs, it will be
enabled on specific specs to test inventory related code path.
2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
1c4febd332 Enable inventory for variant override test 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
9e1de75db6 Scope variant only when inventory is enabled 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
8829f6ad03 Only scope variant when inventory is enabled 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
6212cd4d07 Only add variant override permission if inventory enabled
The permission shoul not be needed if inventory is disabled, but it will
prevent importing into the inventory if somehow we try to import into
inventory with inventory disabled.
2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
29a24b7305 Scope variant to hub only when inventory enabled 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
7c31c951a1 Refactor spec to use instance_double 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
33bac6f816 Fix specs to take into account inventory feature 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
a6f0a36b6d Enable inventory feature for inventory related specs 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
b253950075 Add feature flag for variant override specs 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
b19b987ed0 Remove variant rule type when inventory disabled 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
dc84d32028 Disable link to inventory related settings for enterprise
Metrics/CyclomaticComplexity is disabled on `enterprise_side_menu_items`
because even though there is a lot of branching it's still readable
2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
82c99891eb Only scope with variant override when inventory enabled 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
f30b899569 Disable inventory option for product import 2025-07-09 11:35:26 +10:00
Gaetan Craig-Riou
cd8b7cd239 First step disable inventory 2025-07-09 11:35:26 +10:00
David Cook
d80481a106 Merge pull request #13405 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.7.2
Bump @floating-ui/dom from 1.7.1 to 1.7.2
2025-07-08 09:52:28 +10:00
David Cook
174be39c5e Merge pull request #13399 from openfoodfoundation/dependabot/npm_and_yarn/pbkdf2-3.1.3
Bump pbkdf2 from 3.1.1 to 3.1.3
2025-07-08 09:38:12 +10:00
Ahmed Ejaz
5f694276f1 Update all locales with the latest Transifex translations 2025-07-07 03:53:59 +05:00
Filipe
affb5d7281 Merge pull request #13338 from chahmedejaz/task/13287-add-producer-seller-ability-to-edit-orders
Allow producer who are also seller to edit their products on hubs' orders
2025-07-04 14:26:39 +01:00
Maikel
87b9eeb2f1 Merge pull request #13407 from rioug/fix-undercover-ci-step
CI - Do not run undercover CI step on the master branch
2025-07-02 11:04:29 +10:00
Gaetan Craig-Riou
81c75b2b71 Do not run undercover on the master branch
No need to compare master to itself.
2025-07-02 10:12:28 +10:00
dependabot[bot]
ec6d490676 Bump @floating-ui/dom from 1.7.1 to 1.7.2
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.7.1 to 1.7.2.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.7.2/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 12:15:11 +00:00
filipefurtad0
80aa8d71a5 Update all locales with the latest Transifex translations 2025-06-30 11:51:30 +01:00
Filipe
0408b74987 Merge pull request #13375 from chahmedejaz/task/13130-add-customer-email-and-phone-to-notify-producer-emails
Add customer email and phone to notify producer emails when enabled
2025-06-30 11:48:18 +01:00
cyrillefr
be0894653a Fixes Save button does not enable when removing only tag in OC 2025-06-30 12:41:41 +02:00
David Cook
9e9cc28062 Update spec/mailers/producer_mailer_spec.rb 2025-06-30 09:19:38 +02:00
Ahmed Ejaz
80fc0a5790 Exclude customer personal information from order summary in email 2025-06-30 09:19:38 +02:00
Ahmed Ejaz
5a13aa1c8a Add phone and email fields to customer order summary in ProducerMailer 2025-06-30 09:19:38 +02:00
Gaetan Craig-Riou
aabf3c861a Merge pull request #13398 from mkllnk/configure-wait-time
Increase default timeout in system specs
2025-06-30 13:34:41 +10:00
Gaetan Craig-Riou
01e4ca7d93 Merge pull request #13101 from filipefurtad0/adds_undercover_gem_to_the_stack
Adds undercover gem to the stack
2025-06-30 13:30:49 +10:00
Ahmed Ejaz
838e88a502 Refactor display_value_for_producer method to use Spree::Ability for supplier edit permissions 2025-06-29 19:41:41 +05:00
Ahmed Ejaz
4b19d38c58 Refactor variant creation in hub actions spec to use supplier association for clarity 2025-06-29 19:13:44 +05:00
Ahmed Ejaz
7725fae992 Refactor order cycle and order management abilities to improve producer edit permissions 2025-06-29 19:13:31 +05:00
Carlos Chitty
b43fa55a7b Do not try to generate a URL for unpersisted blobs in development/test environment
Explicitly raise an error in `image_variant_url_for` if an Active Storage variant's blob is not persisted.

This addresses `ArgumentError`/`URI::InvalidURIError` in Rails 7.1, which occurs when attempting to generate a URL for an unsaved Active Storage blob. By raising, we ensure existing error handling in calling methods (e.g., `Spree::Image#url`) can provide graceful fallbacks (default image URLs).

This should only affect test and development environments where blobs may not be immediately persisted. Tests in `SuppliedProductImporter` have been updated to reflect this behavior.

References:
  - Suggestion: https://github.com/openfoodfoundation/openfoodnetwork/pull/13232#discussion_r2071116581
  - Example of failing test due to this: https://github.com/openfoodfoundation/openfoodnetwork/actions/runs/14739687958/job/41374346184?pr=13232
  - Related: https://github.com/rails/rails/issues/50234
2025-06-27 15:05:52 -04:00
filipefurtad0
1478990eac Removes fake method and spec 2025-06-27 12:29:32 +01:00
Maikel Linke
4a1e32e790 Spec fake method to show undercover working 2025-06-27 12:28:16 +01:00
filipefurtad0
75e0a71e10 Adds a fake method with no test coverage to test Undercover gem 2025-06-27 12:24:25 +01:00
filipefurtad0
e0efb34fe8 Adds undercover command to the build file
build setup patch
2025-06-27 12:24:22 +01:00
filipefurtad0
4cb9d870b4 Changes rake task to include merging of the lcov result files 2025-06-27 12:24:22 +01:00
filipefurtad0
5b7675cd9b Adds config file for undercover
undercover setup patch
2025-06-27 12:24:18 +01:00
filipefurtad0
b6fc117b17 Adds undercover gem to the gemfile 2025-06-25 14:58:23 +01:00
dependabot[bot]
d5c79be7d9 Bump pbkdf2 from 3.1.1 to 3.1.3
---
updated-dependencies:
- dependency-name: pbkdf2
  dependency-version: 3.1.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-24 09:47:41 +00:00
Maikel Linke
7d80033c8e Increase default timeout in system specs 2025-06-24 11:57:38 +10:00
Ahmed Ejaz
1b9d64ad5e Refactor search functionality in variants controller spec to include order_id for improved filtering 2025-06-21 16:39:15 +05:00
Ahmed Ejaz
c648249160 Refactor order view specs to improve clarity in expectations 2025-06-21 16:19:31 +05:00
Ahmed Ejaz
765ce68c11 Add order_id to order controller, variant autocomplete, and search parameters for improved order management 2025-06-21 16:19:31 +05:00
Ahmed Ejaz
020d90b957 Enhance line item management abilities by consolidating permissions for Spree::Order 2025-06-21 16:19:31 +05:00
Ahmed Ejaz
8d407b1dc9 Fix lint issues 2025-06-21 16:19:31 +05:00
Ahmed Ejaz
fe1b8aaab3 Add hub actions spec for producer order management functionality 2025-06-21 16:19:31 +05:00
Ahmed Ejaz
ade35f2fa2 Fixes specs and update code respectively 2025-06-21 16:19:31 +05:00
Ahmed Ejaz
cd01a27bdd Add distributor_name_alias to searchable attributes and implement ransacker for filtering line items 2025-06-21 16:19:31 +05:00
Ahmed Ejaz
2f9c856645 Refactors order and line item permissions logic
Simplifies permission checking by:
- Extracting common managed/coordinated orders logic into separate method
- Combining producer-editable and managed/coordinated order clauses
- Merging producer and admin line item permission checks into single query
2025-06-21 16:19:31 +05:00
Ahmed Ejaz
8e8878e43a Add search_variants_as parameter to variant search functionality 2025-06-21 16:19:31 +05:00
Ahmed Ejaz
a37e08c2fd Refactor order management permissions for producers
Introduces granular permissions control for producers editing orders:

- Adds new :edit_as_producer_only permission for suppliers
- Refactors ability checks to clearly separate producer vs admin/distributor access
- Updates order views to properly restrict actions based on user role
- Prevents admins from being restricted by producer-only edit mode
2025-06-21 16:16:58 +05:00
Maikel Linke
75b2119dd1 Update all locales with the latest Transifex translations 2025-06-20 13:59:47 +10:00
Filipe
6ccc588113 Merge pull request #13342 from chitty/cch/refactor-unit-price
refactor: move unit price formatting logic out of model into helper
2025-06-19 16:19:03 +01:00
Gaetan Craig-Riou
7115eb3c0e Merge pull request #13372 from chitty/cch/add-respond-to-missing
Add `respond_to_missing?` and replace `method_missing` with explicit preference methods
2025-06-19 18:47:08 +10:00
Maikel
98ebbb2203 Merge pull request #13383 from openfoodfoundation/dependabot/npm_and_yarn/hotkeys-js-3.13.14
Bump hotkeys-js from 3.13.12 to 3.13.14
2025-06-19 15:31:23 +10:00
Maikel
3c1ee5f033 Merge pull request #13384 from cyrillefr/MetricsModuleLength
Fixes offenses Metrics/ModuleLength in engines spec
2025-06-19 15:30:27 +10:00
Maikel
23b8192b2c Merge pull request #13380 from openfoodfoundation/dependabot/npm_and_yarn/brace-expansion-1.1.12
Bump brace-expansion from 1.1.11 to 1.1.12
2025-06-19 15:19:52 +10:00
Carlos Chitty
37bf3f495f Refactor preference access to use define_method instead of method_missing
Replaces dynamic method handling with explicit getters and setters to
avoid recursion issues and improve clarity.
2025-06-18 13:59:46 -04:00
Carlos Chitty
f909bb2c30 Add respond_to_missing? to classes defining method_missing to improve respond_to? behavior 2025-06-18 13:59:42 -04:00
Maikel
213b977725 Merge pull request #13379 from dacook/map-currency
Map currency to DFC codes
2025-06-18 11:32:33 +10:00
David Cook
f723fe025e Rename file 2025-06-18 11:12:01 +10:00
David Cook
1525501a9d Monkey-patch SemanticObject module directly
This is the module that defines semanticPropertiesMap.
2025-06-18 11:11:58 +10:00
cyrillefr
a4c6514275 Style Metrics/ModuleLength in spec file 2025-06-17 15:46:30 +02:00
cyrillefr
8aba6e9782 Style Metrics/ModuleLength in spec file 2025-06-17 15:41:51 +02:00
cyrillefr
9a2cd3965c Style Metrics/ModuleLength in spec file 2025-06-17 15:38:25 +02:00
cyrillefr
b9eeb53901 Style Metrics/ModuleLength in spec file 2025-06-17 15:31:17 +02:00
cyrillefr
e19caa0caa Style Metrics/ModuleLength in spec file 2025-06-17 15:27:31 +02:00
cyrillefr
05995bc026 Style Metrics/ModuleLength in spec file 2025-06-17 15:12:09 +02:00
cyrillefr
6b2297b0e6 Style Metrics/ModuleLength in spec file 2025-06-17 15:09:46 +02:00
cyrillefr
46ba6b7f9c Style Metrics/ModuleLength in spec file 2025-06-17 14:50:35 +02:00
cyrillefr
e88a9dab4b Style Metrics/ModuleLength in spec file 2025-06-17 14:47:45 +02:00
cyrillefr
6a44c45699 Style Metrics/ModuleLength in spec file 2025-06-17 14:37:35 +02:00
cyrillefr
bb0a6b7f8d Style Metrics/ModuleLength in spec file 2025-06-17 14:33:15 +02:00
cyrillefr
abaa7c35a7 Style Metrics/ModuleLength in spec file 2025-06-17 14:18:42 +02:00
cyrillefr
97c4cd382b Style Metrics/ModuleLength in spec file 2025-06-17 14:05:21 +02:00
cyrillefr
089caa228f Style Metrics/ModuleLength in spec file 2025-06-17 13:48:22 +02:00
cyrillefr
d9194d3dce Style Metrics/ModuleLength in spec file 2025-06-17 13:44:43 +02:00
cyrillefr
a792a550b3 Style Metrics/ModuleLength in spec file 2025-06-17 13:40:55 +02:00
cyrillefr
8c50ed9a45 Style Metrics/ModuleLength in spec file 2025-06-17 13:38:29 +02:00
cyrillefr
9d09fa9d54 Style Metrics/ModuleLength in spec file 2025-06-17 13:35:23 +02:00
cyrillefr
8234cc580d Style Metrics/ModuleLength in spec file 2025-06-17 13:31:22 +02:00
cyrillefr
88b390dac6 Style Metrics/ModuleLength in spec file 2025-06-17 13:22:05 +02:00
cyrillefr
583acfcc79 Style Metrics/ModuleLength in spec file 2025-06-17 13:02:54 +02:00
cyrillefr
d9010c3cf3 Style Metrics/ModuleLength in spec file 2025-06-17 11:51:40 +02:00
cyrillefr
1837d6a381 Style Metrics/ModuleLength in spec file 2025-06-17 11:48:33 +02:00
cyrillefr
5b1b48afc6 Style Metrics/ModuleLength in spec file 2025-06-17 11:35:10 +02:00
cyrillefr
a872544b10 Style Metrics/ModuleLength in spec file 2025-06-17 11:28:54 +02:00
cyrillefr
2b1f75e87e Style Metrics/ModuleLength in spec file 2025-06-17 11:23:03 +02:00
cyrillefr
9b1c95cbc2 Style Metrics/ModuleLength in spec file 2025-06-17 11:20:06 +02:00
cyrillefr
3743efd5e4 Style Metrics/ModuleLength in spec file 2025-06-17 11:13:45 +02:00
dependabot[bot]
19e654b9e4 Bump hotkeys-js from 3.13.12 to 3.13.14
Bumps [hotkeys-js](https://github.com/jaywcjlove/hotkeys-js) from 3.13.12 to 3.13.14.
- [Release notes](https://github.com/jaywcjlove/hotkeys-js/releases)
- [Commits](https://github.com/jaywcjlove/hotkeys-js/compare/v3.13.12...v3.13.14)

---
updated-dependencies:
- dependency-name: hotkeys-js
  dependency-version: 3.13.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 09:04:36 +00:00
cyrillefr
6b0f690170 Style Metrics/ModuleLength in spec file 2025-06-17 11:02:21 +02:00
cyrillefr
ffe93fc470 Style Metrics/ModuleLength in spec file 2025-06-17 10:52:58 +02:00
David Cook
a4f28a2fac Merge pull request #13377 from mkllnk/style
Style Metrics/ModuleLength in some spec files
2025-06-17 12:37:49 +10:00
dependabot[bot]
c1e6fff275 Bump brace-expansion from 1.1.11 to 1.1.12
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 02:23:01 +00:00
Maikel
b5b50f0b5a Merge pull request #13378 from openfoodfoundation/dependabot/npm_and_yarn/hotkeys-js-3.13.12
Bump hotkeys-js from 3.13.11 to 3.13.12
2025-06-17 11:42:05 +10:00
David Cook
f9764b697d Found a cleaner way to patch inspect
I tried to move on, I really did, but I already had these things in my head and they suddenly clicked together, so I thought it worth updating now.
2025-06-17 10:52:20 +10:00
David Cook
0f3626f12d Monkey-patch a cleaner inspect
I would love to have hooked into the pretty inspect features which provide a better format, with indentation and colours for the console. But I couldn't find out how to.
2025-06-17 10:52:20 +10:00
David Cook
be1f4e91e1 Map currency to DFC codes
Probably should have just hardcoded it. Hopefully we can remove this soon anyway.
2025-06-17 10:50:24 +10:00
Carlos Chitty
3dcc4428fa Fix escaped HTML in unit price by marking output as html_safe 2025-06-16 12:53:41 +01:00
Carlos Chitty
2fe49b2070 Instantiate UnitPrice only once in app/models/spree/line_item.rb
Co-authored-by: Maikel <maikel@email.org.au>
2025-06-16 12:53:41 +01:00
Carlos Chitty
85e4f749f9 refactor: move unit price formatting logic out of model into helper
Solves Psych::DisallowedClass errors
Example: https://github.com/openfoodfoundation/openfoodnetwork/actions/runs/14739687958/job/41374343627?pr=13232

unit_price returns object with amount and unit, as mentioned in https://github.com/openfoodfoundation/openfoodnetwork/pull/6905\#discussion_r578401368
2025-06-16 12:53:41 +01:00
dependabot[bot]
b671dfda5d Bump hotkeys-js from 3.13.11 to 3.13.12
Bumps [hotkeys-js](https://github.com/jaywcjlove/hotkeys-js) from 3.13.11 to 3.13.12.
- [Release notes](https://github.com/jaywcjlove/hotkeys-js/releases)
- [Commits](https://github.com/jaywcjlove/hotkeys-js/compare/v3.13.11...v3.13.12)

---
updated-dependencies:
- dependency-name: hotkeys-js
  dependency-version: 3.13.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 10:34:44 +00:00
Gaetan Craig-Riou
e6ef52f91c Merge pull request #13374 from filipefurtad0/unit_price_checks
Adds Unit price checks
2025-06-16 18:31:03 +10:00
Maikel Linke
da5b147d29 Style Metrics/ModuleLength in spec file
Best viewed without whitespace changes.
2025-06-16 16:51:50 +10:00
Maikel Linke
b2fd4ccb11 Style Metrics/ModuleLength in spec file
Best viewed without whitespace changes.
2025-06-16 16:50:38 +10:00
Maikel Linke
5a497bc6ee Style Metrics/ModuleLength in spec file
Best viewed without whitespace changes.
2025-06-16 16:46:30 +10:00
Maikel Linke
77b7b5ea47 Style Metrics/ModuleLength in spec file
Best viewed without whitespace changes.
2025-06-16 16:45:00 +10:00
Maikel Linke
035e67c33f Style Metrics/ModuleLength in spec file
Best viewed without whitespace changes.
2025-06-16 16:43:47 +10:00
Maikel Linke
8e1fb76327 Style Metrics/ModuleLength in spec file
Best viewed without whitespace changes.
2025-06-16 16:13:11 +10:00
Maikel Linke
441844dd79 Style Metrics/ModuleLength in spec file
Best viewed without whitespace changes.
2025-06-16 16:11:08 +10:00
Maikel Linke
55f9afef77 Regenerate Rubocop's TODO file 2025-06-16 16:07:05 +10:00
Ahmed Ejaz
a9dee9d0ca Update all locales with the latest Transifex translations 2025-06-15 15:21:37 +05:00
filipefurtad0
2465880e77 Adds checks to unit price on order confirmation page 2025-06-14 13:39:59 +01:00
filipefurtad0
7c89f32eb7 Adds checks to unit price on shopfront and cart 2025-06-14 13:30:10 +01:00
filipefurtad0
229a87cf72 Removes debugger superfluous debuger flag 2025-06-14 13:28:41 +01:00
Filipe
4f3887fcc8 Merge pull request #13362 from jarihu/Add-Finnish-to-Flatpickr
Add Finnish to flatpickr controller
2025-06-12 23:47:02 +01:00
Maikel
77af4af277 Merge pull request #13370 from openfoodfoundation/dependabot/npm_and_yarn/hotkeys-js-3.13.11
Bump hotkeys-js from 3.13.10 to 3.13.11
2025-06-11 15:18:32 +10:00
dependabot[bot]
677c53303c Bump hotkeys-js from 3.13.10 to 3.13.11
Bumps [hotkeys-js](https://github.com/jaywcjlove/hotkeys-js) from 3.13.10 to 3.13.11.
- [Release notes](https://github.com/jaywcjlove/hotkeys-js/releases)
- [Commits](https://github.com/jaywcjlove/hotkeys-js/compare/v3.13.10...v3.13.11)

---
updated-dependencies:
- dependency-name: hotkeys-js
  dependency-version: 3.13.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 10:10:16 +00:00
Maikel
a186de2f8f Merge pull request #13163 from cyrillefr/FixRailsUniqueValidationWithoutIndex
Fixes Rails/UniqueValidationWithoutIndex (part of #11482)
2025-06-10 16:35:13 +10:00
Maikel
ceeb5f0a3a Merge pull request #13367 from dacook/bump-stimulus_reflex-gem
Bump stimulus_reflex gem to 3.5.5
2025-06-10 15:06:33 +10:00
David Cook
418514b57d Bump stimulus_reflex gem to 3.5.5
Why didn't dependabot do this?
We have already updated the js package to 3.5.5.

hopefully this will help with some SR flakiness that is occurring on au_prod and au_staging bulkinvoice actions (but uk_staging seems fine)
2025-06-10 14:10:23 +10:00
David Cook
aa68b69fce Merge pull request #13364 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.8.0
Bump jasmine-core from 5.7.1 to 5.8.0
2025-06-10 11:09:03 +10:00
dependabot[bot]
87aed5d77f Bump jasmine-core from 5.7.1 to 5.8.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.7.1 to 5.8.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.7.1...v5.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 09:43:29 +00:00
Jari Huttunen
287cd74b33 Merge branch 'openfoodfoundation:master' into Add-Finnish-to-Flatpickr 2025-06-07 23:44:11 +03:00
Jari Huttunen
d217a1394b Add Finnish to flatpickr controller 2025-06-07 23:34:09 +03:00
filipefurtad0
a95767eb04 Update all locales with the latest Transifex translations 2025-06-06 13:04:23 +01:00
Filipe
f1138b7a9d Merge pull request #13349 from mkllnk/vine-error-message
Clarify voucher code not found can mean fully redeemed
2025-06-06 12:46:11 +01:00
Gaetan Craig-Riou
cb1a7629c5 Merge pull request #13341 from chitty/rubocop-style--fixes
Rubocop Style corrections for Style/NestedModifier and Style/ReturnNilInPredicateMethodDefinition
2025-06-05 17:33:39 +10:00
Carlos Chitty
63d284e81a Use Orders::WorkflowService#complete! and #advance_to_payment in specs to replace code causing Style/NestedModifier rubocop offenses
Rewrite the loop "break unless a = order.next! while !order.delivery?" to correct the offenses. Not adding a helper because the change was only needed in a couple of places.
2025-06-04 12:46:58 -04:00
Carlos Chitty
00aa60c8a3 Correct Style/ReturnNilInPredicateMethodDefinition rubocop offenses
Explicitly return false instead of nil
2025-06-04 10:25:50 -04:00
Gaetan Craig-Riou
a1e0feef14 Merge pull request #13354 from openfoodfoundation/dependabot/npm_and_yarn/pretty-quick-4.2.2
Bump pretty-quick from 4.1.1 to 4.2.2
2025-06-03 19:00:45 +10:00
dependabot[bot]
1ce167ef16 Bump pretty-quick from 4.1.1 to 4.2.2
Bumps [pretty-quick](https://github.com/prettier/pretty-quick) from 4.1.1 to 4.2.2.
- [Release notes](https://github.com/prettier/pretty-quick/releases)
- [Changelog](https://github.com/prettier/pretty-quick/blob/v4.2.2/CHANGELOG.md)
- [Commits](https://github.com/prettier/pretty-quick/compare/v4.1.1...v4.2.2)

---
updated-dependencies:
- dependency-name: pretty-quick
  dependency-version: 4.2.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 07:43:00 +00:00
Gaetan Craig-Riou
5093fd6eb6 Merge pull request #13353 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.7.1
Bump @floating-ui/dom from 1.7.0 to 1.7.1
2025-06-03 17:40:55 +10:00
dependabot[bot]
0700c65557 Bump @floating-ui/dom from 1.7.0 to 1.7.1
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.7.0 to 1.7.1.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.7.1/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 09:53:27 +00:00
Maikel Linke
94cb1f45a0 Update all locales with the latest Transifex translations 2025-06-02 11:58:57 +10:00
cyrillefr
6f9a347b77 Add modified schema 2025-05-29 15:12:13 +10:00
cyrillefr
774aaf4fd8 Fixes Rails/UniqueValidationWithoutIndex (part of #11482)
- When you define a uniqueness validation in Active Record model,
  you also should add a unique index for the column.
- Cf. https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsuniquevalidationwithoutindex
- Therefore : migration files to match DB structure and Ruby code.
2025-05-29 15:11:17 +10:00
Maikel Linke
ef22269324 Clarify voucher code not found can mean fully redeemed 2025-05-29 14:18:32 +10:00
Maikel Linke
c9ec7e13d3 Add missing spec cassette 2025-05-29 11:42:53 +10:00
Maikel
d18328c3d1 Merge pull request #13347 from jarihu/add-fi-locale
Add Finnish locale support
2025-05-29 11:13:33 +10:00
Maikel
2b3cc71b3d Merge pull request #13339 from cyrillefr/FixSecurityOpenOffense
Fixes Rubocop SecurityOpen offense
2025-05-29 10:51:47 +10:00
Jari Huttunen
6c7676b1a1 Add Finnish locale 2025-05-28 10:02:17 +03:00
cyrillefr
400f431f88 Importer goal is to dl a file over https instead of local file 2025-05-27 17:10:48 +02:00
Maikel
e42015cfd3 Merge pull request #13340 from openfoodfoundation/dependabot/npm_and_yarn/stimulus_reflex-3.5.5
Bump stimulus_reflex from 3.5.4 to 3.5.5
2025-05-27 11:11:23 +10:00
dependabot[bot]
37d647be94 Bump stimulus_reflex from 3.5.4 to 3.5.5
Bumps [stimulus_reflex](https://github.com/stimulusreflex/stimulus_reflex) from 3.5.4 to 3.5.5.
- [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/compare/v3.5.4...v3.5.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 09:54:46 +00:00
cyrillefr
0ac5da33b0 Fixes Rubocop SecurityOpen offense 2025-05-26 08:17:00 +02:00
Maikel
d267fa2ea7 Merge pull request #13336 from openfoodfoundation/dependabot/npm_and_yarn/stimulus_reflex-3.5.4
Bump stimulus_reflex from 3.5.3 to 3.5.4
2025-05-26 11:48:57 +10:00
Maikel
99bd0cd313 Merge pull request #13335 from cyrillefr/FixRSpecRailsInferredSpecType
Fixes RSpecRailsInferredSpecType offenses
2025-05-26 11:47:55 +10:00
Ahmed Ejaz
a127aa1134 Update all locales with the latest Transifex translations 2025-05-25 16:04:37 +05:00
Konrad
d7c39fcab7 Merge pull request #13297 from filipefurtad0/fix_#13264_BOM
Fixes bad display from Producer name on BOM page
2025-05-23 18:56:36 +02:00
dependabot[bot]
d98ca6f4c1 Bump stimulus_reflex from 3.5.3 to 3.5.4
Bumps [stimulus_reflex](https://github.com/stimulusreflex/stimulus_reflex) from 3.5.3 to 3.5.4.
- [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/compare/v3.5.3...v3.5.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-23 09:44:32 +00:00
cyrillefr
b431b414a1 Fixes RSpecRailsInferredSpecType on routing 2025-05-21 09:45:03 +02:00
cyrillefr
758d78bfe4 Fixes RSpecRailsInferredSpecType 2025-05-21 09:43:24 +02:00
cyrillefr
2f5981af59 Fixes RSpecRailsInferredSpecType on models 2025-05-21 09:41:00 +02:00
cyrillefr
5788698e8e Fixes RSpecRailsInferredSpecType offenses in jobs & mailers 2025-05-20 12:57:11 +02:00
cyrillefr
8be1045f23 Fixes RSpecRailsInferredSpecType offenses in helpers 2025-05-20 12:54:04 +02:00
cyrillefr
67f5ae811b Fixes RSpecRailsInferredSpecType offenses in remaining controllers 2025-05-20 12:51:50 +02:00
cyrillefr
cf9395f42f Fixes RSpecRailsInferredSpecType in spree admin controllers 2025-05-20 12:45:34 +02:00
cyrillefr
a7eb95afc5 Fixes RSpecRailsInferredSpecType in base controllers 2025-05-20 12:45:34 +02:00
cyrillefr
90d8d9fc30 Fixes RSpecRailsInferredSpecType offense in api v0 2025-05-20 12:45:34 +02:00
cyrillefr
60413c2a12 Fixes RSpecRails InferredSpecType offenses in controller admin 2025-05-20 12:45:34 +02:00
cyrillefr
7cc4cb0181 Fixes RSpecRailsInferredSpecType cop in engines 2025-05-20 12:45:34 +02:00
Konrad
60914ac8cc Merge pull request #13326 from mcmpp/instance_configuration_options_inline
Change the layout for instance configuration options
2025-05-19 15:28:40 +02:00
filipefurtad0
56855277d7 Update all locales with the latest Transifex translations 2025-05-16 20:08:46 +01:00
Filipe
93ac10bb75 Merge pull request #13262 from cillian/remove-angular-on-enterprise-images-and-white-label-sections
Remove Angular from the Settings > Images section
2025-05-16 20:03:55 +01:00
Filipe
d6785b2f5a Merge pull request #13312 from mkllnk/stock-movement
Stop creating stock movements
2025-05-16 19:30:31 +01:00
Konrad
c657e31d07 Merge pull request #13318 from dacook/fix-13315
Prevent error on inventory page when logged out
2025-05-16 20:23:17 +02:00
Konrad
6432eceee5 Merge pull request #13313 from cyrillefr/FilterSelectionListNotDisplayingFullNames
Fixes dotted shipping method names bad display in select (filters)
2025-05-16 19:58:13 +02:00
Konrad
af3bb4c419 Merge pull request #13310 from mkllnk/reset-products
Fix product reset on import
2025-05-16 18:49:20 +02:00
Filipe
97ceed6cbe Merge pull request #13263 from chahmedejaz/bugfix/13180-oc-search-on-bom
Fix Order Cycle search on BOM page is not working for more than 5 OCs
2025-05-16 10:59:55 +01:00
Maikel
9c5d393ad1 Merge pull request #13328 from drummer83/typo_exiting
Fix typo in yml files: exiting vs. existing
2025-05-16 15:43:27 +10:00
Maikel
277c51cd51 Merge pull request #13327 from cyrillefr/FixRSpecRailsHttpStatus
Fixes RSpec Rails HttpStatus offenses
2025-05-16 15:41:06 +10:00
Filipe
3efa2832de Merge pull request #13257 from ashishp91/13221-make-shipped-orders-uneditable
13221 - Don't allow shipped orders to be editable
2025-05-15 19:23:33 +01:00
Mikel Cordovilla
f767437f5a Display instance config checkboxes inline 2025-05-15 11:46:04 +02:00
Konrad
943d21a767 Fix typo in yml files: exiting vs. existing 2025-05-15 10:03:48 +02:00
cyrillefr
529f3b85eb Fixes RSpec Rails HttpStatus offenses 2025-05-15 08:46:02 +02:00
Maikel
a37b3ed28b Merge pull request #13325 from cyrillefr/FixRSpecRailsHaveHttpStatus
Fixes RSpecRails HaveHttpStatus rubocop offenses
2025-05-15 12:31:18 +10:00
Mikel Cordovilla
559a85e4f2 In the instance configuration some of the options displayed as block instead of inline 2025-05-14 15:36:55 +02:00
cyrillefr
7f842d77ea Fixes RSpec Rails HaveHttpStatus cop in services & support 2025-05-14 11:47:03 +02:00
cyrillefr
8135aeaeda Fixes RSpec Rails HaveHttpStatus cop in requests 2025-05-14 11:04:01 +02:00
cyrillefr
5063a772f0 Fixes RSpec Rails HaveHttpStatus cop in controllers 2025-05-14 10:58:04 +02:00
cyrillefr
f810e500b5 Fixes RSpec Rails HaveHttpStatus cop in api v0 2025-05-14 10:46:36 +02:00
cyrillefr
b9e1eb2984 Fixes RSpecRails HaveHttpStatus cop in admin specs 2025-05-14 10:28:57 +02:00
Filipe
371d0fbf79 Merge pull request #13281 from rioug/13172-search-by-tags
[Variant tags] Search products by tags
2025-05-14 07:38:59 +01:00
David Cook
71b65b4b98 Merge pull request #13306 from cyrillefr/FixRubocopNamingVariableNumber
Fixes Rubocop naming variable number
2025-05-14 09:39:32 +10:00
Maikel Linke
d650d06049 Delete StockMovement model
I'm not dropping the database table just yet. Let's keep this change
reversible without data loss. And dropping the table would break the
currently running app code during deploy. We can do that another time.
2025-05-13 15:24:26 +10:00
Maikel Linke
be312246ec Stop referring to stock movements 2025-05-13 15:24:26 +10:00
Maikel Linke
729e62d7db Remove unused stock move originator parameter 2025-05-13 15:24:26 +10:00
David Cook
6a5faaef22 Add expectation for redirect 2025-05-13 15:20:07 +10:00
David Cook
82f94e3969 Ensure user is loaded before loading data 2025-05-13 15:12:16 +10:00
Maikel Linke
2197656606 Stop creating stock movements
Spree added stock movements to track the movements between stock
locations. But we got rid of stock locations and the only stock
movements we have now are just records of stock level changes.

These records were not created in all cases though and there were also
not created for variant overrides (inventory items). And since these
records aren't visible anywhere, I think it's best we remove them
altogether.

I do think that some kind of log would be useful but I don't think that
AR records like this are the best solution for that. And the
StockMovement model just added complexity to our already complex stock
level storage. The actual adjustment of the count_on_hand attribute of
the StockItem was performed in an after_create hook of the
StockMovement. Now we call it explicitely.
2025-05-13 14:56:29 +10:00
David Cook
ffea1cca81 Replace JB's method with mine
Obviously I'm biased, but I like mine better.
2025-05-13 14:52:20 +10:00
David Cook
d62740da10 Update helper to exclude line items
_scrolls down_ Oh... JB already did that 😆
Nice to see we were thinking along the same lines.
2025-05-13 14:52:06 +10:00
David Cook
fa9ed1a66b Add expectation for other line items 2025-05-13 14:42:46 +10:00
David Cook
3b1f267465 Declare which line items are being expected. 2025-05-13 14:41:03 +10:00
David Cook
cf30b792f9 Refactor: move shared code to context 2025-05-13 14:40:41 +10:00
David Cook
6daf94875a Rename varianbles based on OC number
It was a bit confusing that they don't line up.
2025-05-13 14:23:51 +10:00
cyrillefr
0fcf161889 Requested changes: menu_xx are to be ignored from cop 2025-05-12 17:16:15 +02:00
cyrillefr
7387b4078a Key shipping_method_names is not used any more 2025-05-12 15:19:00 +02:00
cyrillefr
e61d951dcf Requested changes - translation useless
- also useless in specs
2025-05-12 14:46:27 +02:00
David Cook
f199fb182b Add specs 2025-05-12 17:35:10 +10:00
Gaetan Craig-Riou
7f2638f910 Update app/components/tag_list_input_component/tag_list_input_component.html.haml
replace merge by double splat

Co-authored-by: David Cook <david@redcliffs.net>
2025-05-12 13:23:46 +10:00
David Cook
9034eaa049 Merge pull request #13303 from mkllnk/remove-old-integrations
Remove old integrations and rebalance specs
2025-05-12 12:33:46 +10:00
Gaetan Craig-Riou
b5de7b3c5f Merge pull request #13311 from mkllnk/count-on-hand
Remove useless method
2025-05-12 10:40:16 +10:00
Ahmed Ejaz
db0922a7cf 13180: increase filter time to 1 year 2025-05-12 01:14:51 +05:00
Ahmed Ejaz
6cdff7c4c7 Update all locales with the latest Transifex translations 2025-05-12 00:11:09 +05:00
Cillian O'Ruanaidh
119218b2b5 Don't try to render image preview if image is corrupt on S3 and its URL can be generated 2025-05-10 12:35:40 +01:00
cyrillefr
36cada0510 Fixes dotted shipping method names bad display in select 2025-05-09 10:26:49 +02:00
Maikel Linke
4cd088f7a7 Remove useless method 2025-05-09 11:40:18 +10:00
Maikel Linke
524d6e87b7 Fix product reset on import 2025-05-09 11:27:10 +10:00
Maikel
0dab580d3e Merge pull request #13308 from openfoodfoundation/dependabot/npm_and_yarn/hotkeys-js-3.13.10
Bump hotkeys-js from 3.13.9 to 3.13.10
2025-05-09 10:08:52 +10:00
Maikel
5072d65eb7 Merge pull request #13307 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.15
Bump trix from 2.1.14 to 2.1.15
2025-05-09 10:07:57 +10:00
Filipe
df81fa89f8 Merge pull request #13293 from cyrillefr/FixStimulusErrorOnPrintingWithBulkAction
Fixes StimulusJS error on printing w bulk action
2025-05-08 22:52:58 +01:00
Filipe
674f88162e Merge pull request #13291 from slothmock/fix-#11967+testing
Fix #11967 - limit variant unit name input
2025-05-08 22:39:20 +01:00
Ashish Gaur
71949701ac Merge branch 'master' into 13221-make-shipped-orders-uneditable 2025-05-08 21:56:46 +05:30
Filipe
d8fa3e2a19 Merge pull request #13292 from mkllnk/oc-notify
Process order cycle emails individually to avoid duplicates
2025-05-08 13:15:00 +01:00
dependabot[bot]
8391ab845f Bump hotkeys-js from 3.13.9 to 3.13.10
Bumps [hotkeys-js](https://github.com/jaywcjlove/hotkeys-js) from 3.13.9 to 3.13.10.
- [Release notes](https://github.com/jaywcjlove/hotkeys-js/releases)
- [Commits](https://github.com/jaywcjlove/hotkeys-js/compare/v3.13.9...v3.13.10)

---
updated-dependencies:
- dependency-name: hotkeys-js
  dependency-version: 3.13.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 09:52:44 +00:00
dependabot[bot]
e9a205fec9 Bump trix from 2.1.14 to 2.1.15
Bumps [trix](https://github.com/basecamp/trix) from 2.1.14 to 2.1.15.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.14...v2.1.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 09:52:21 +00:00
cyrillefr
42daf314c4 Fixes variable number naming offenses in spec variables 2025-05-08 09:28:01 +02:00
cyrillefr
55ad9429db Fixes variable number naming offenses in spree module 2025-05-08 09:24:28 +02:00
Maikel Linke
0cf9cf3122 Combine system specs for better balance 2025-05-08 12:11:28 +10:00
Maikel
5d4f8313f3 Merge pull request #13305 from filipefurtad0/split_system_specs
Split system specs
2025-05-08 10:40:57 +10:00
Maikel
4ef17d3794 Merge pull request #13300 from filipefurtad0/fix_flaky_simple_spec_again
Adds tests to toggle the css sections (distributed products)
2025-05-08 10:39:17 +10:00
Maikel
bc3f847a9d Merge pull request #13299 from cyrillefr/FixRubocopNamingMethodParameterName
Fixes NamingMethodParameterName rubocop offense
2025-05-08 10:34:50 +10:00
Ashish Gaur
c4ab8bb1e7 13221 Revert back schema changes 2025-05-07 13:37:55 +05:30
Gaetan Craig-Riou
b82bd6c0dc Per rebview, add missing aria-label translation 2025-05-07 15:18:54 +10:00
Gaetan Craig-Riou
eb1919cce9 Update spec/system/admin/products_v3/index_spec.rb
Co-authored-by: Maikel <maikel@email.org.au>
2025-05-07 14:58:41 +10:00
Gaetan Craig-Riou
652cbd8874 Merge pull request #13294 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.7.1
Bump jasmine-core from 5.7.0 to 5.7.1
2025-05-07 14:03:45 +10:00
Gaetan Craig-Riou
b3834d0476 Merge pull request #13295 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.7.0
Bump @floating-ui/dom from 1.6.13 to 1.7.0
2025-05-07 14:03:02 +10:00
Gaetan Craig-Riou
532ce7a4d7 Merge pull request #13298 from dacook/cleanup-address-finder
Cleanup AddressFinder
2025-05-07 12:16:04 +10:00
filipefurtad0
af8059c22f Splits shopping_spec 2025-05-06 18:08:51 +01:00
filipefurtad0
e7edc068ef Splits order_spec 2025-05-06 17:25:01 +01:00
Maikel Linke
87f81a51d4 Test system with more workers
System specs have been quite slow, taking up to 10 minutes per worker.
But now that we freed up a worker from linting and two workers from
models, we can add these to the system specs to reduce the time to test
completion.
2025-05-06 11:44:38 +10:00
Maikel Linke
1b7aa6406f Test controllers and models in one job
The execution time is relatively low but reducing the model workers from
2 to 1 would increase the execution time too much. Combining controllers
and models allows for better balancing.
2025-05-06 11:44:38 +10:00
Maikel Linke
ba46b597f5 Run all linters in the same job
This saves a bit of setup time. And it frees up a worker for the main
integration tests.
2025-05-06 11:31:41 +10:00
Maikel Linke
5cb2d0e061 Remove defunct Mapi workflow
A contributor added this workflow to promote their service. But we never
found a use for it and at some point it broke because we didn't update
it. It has been disabled for two years now. Let's clean it up.
2025-05-06 11:25:56 +10:00
Maikel Linke
4c6d7148b5 Remove custom brakeman config, now using default
I activated the default Brakeman config via Github security settings.
2025-05-06 11:25:12 +10:00
Maikel
6446676853 Merge pull request #13301 from filipefurtad0/update_knapsack_pro
Updates Knapsack Pro
2025-05-06 11:09:32 +10:00
filipefurtad0
e069cad034 Updates Knapsack Pro 2025-05-05 20:16:56 +01:00
filipefurtad0
81d35741a1 Adds tests to toggle the css sections
It's a lucky guess, but the idea is that pre-loading the CSS sections and its contents makes it slightly faster, for following assertions, which are the flaky offenders
2025-05-05 19:50:32 +01:00
Ashish Gaur
5fc3fe03ee 13221 Add spec for checking flash error is shown when editing a shipped order 2025-05-05 20:37:59 +05:30
Ashish Gaur
4d01b2b976 13221 Revert adding product_name to line_items table 2025-05-05 20:10:55 +05:30
Ashish Gaur
8d96411741 13221 Fix rubocop issues 2025-05-05 20:03:47 +05:30
Ashish Gaur
c533111509 13221 Don't allow shipped orders to process update request 2025-05-05 20:03:47 +05:30
Ashish Gaur
e122fe3d2d 13221 Use have_select2 in rspec to test s2id matcher 2025-05-05 20:03:47 +05:30
Ashish Gaur
58b6a97d3e Add spec for order not editable after shipping 2025-05-05 20:03:47 +05:30
Ashish Gaur
475cfdc8f0 Show cannot add item to shipped order in the Add products section 2025-05-05 20:03:47 +05:30
Ashish Gaur
42e2d3cdd5 13221 - Don't allow shipped orders to be editable 2025-05-05 20:03:47 +05:30
cyrillefr
f6df412355 Fixes NamingMethodParameterName rubocop offense 2025-05-05 10:39:15 +02:00
Maikel
45a0185744 Merge pull request #13279 from filipefurtad0/reproduce_12933_stock_reset
Reproduces bug #12933, setting the test case as pending
2025-05-05 14:58:41 +10:00
Gaetan Craig-Riou
347d20c3fb Add system test for tags 2025-05-05 14:57:02 +10:00
Gaetan Craig-Riou
0ca3dca675 Per review, extract tags options from template
Now it also scope the tags to the available variant, ie the logged in
user will only see only tag that was used by them.
2025-05-05 14:56:50 +10:00
Gaetan Craig-Riou
ba4b241240 Add link to where the patch came from 2025-05-05 14:54:55 +10:00
Gaetan Craig-Riou
8c1c51cb6d Put tag filter behind feature flag 2025-05-05 14:54:55 +10:00
Gaetan Craig-Riou
4d970af2fc Re style tag to match tom select tags 2025-05-05 14:54:55 +10:00
Gaetan Craig-Riou
19fdfbaccb Style the select tag filter 2025-05-05 14:54:55 +10:00
Gaetan Craig-Riou
57af1de680 Remove closeAfterSelect option
We need the dropdown to stay open after select so that a multi-selection
select work as expected.
Docs : https://tom-select.js.org/docs/
2025-05-05 14:54:55 +10:00
Gaetan Craig-Riou
e7aae5a03c Add tag search
First minimal implementation with a basic filter UI. Only support search
by any of the selected tags
2025-05-05 14:54:55 +10:00
Gaetan Craig-Riou
3bb0176887 Set up variant tags as searchable 2025-05-05 14:54:54 +10:00
David Cook
0225db6840 Refactor without setter methods
This class was originally built to flexibly accept paramters in any order. It also allowed you to specify multiple of the same type of parameter, with the later one overriding the earlier.

This is too flexible and likely to cause mistakes. And besides, we don't use that feature!
2025-05-05 12:59:27 +10:00
David Cook
3ec14607a6 Merge pull request #13286 from chitty/apr29-rubocop-style-corrections
Rubocop Style corrections
2025-05-05 12:53:57 +10:00
David Cook
29a14848ea Merge pull request #13285 from cyrillefr/FixRubocopNamingMemoizedInstanceVariableName
Fixes Rubocop Naming NamingMemoizedInstanceVariableName cop
2025-05-05 12:48:28 +10:00
David Cook
eadfa8c965 Update from code review
Co-authored-by: Gaetan Craig-Riou <40413322+rioug@users.noreply.github.com>
2025-05-05 12:09:58 +10:00
Gaetan Craig-Riou
2107c05f15 Merge pull request #13289 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.14
Bump trix from 2.1.13 to 2.1.14
2025-05-05 10:33:40 +10:00
filipefurtad0
074d7194d9 Adapts existing spec to check for unusual characters on the supplier name 2025-05-04 20:49:48 +01:00
filipefurtad0
01b6ff6d09 Update all locales with the latest Transifex translations 2025-05-03 17:39:57 +01:00
Filipe
846cb4dd89 Merge pull request #13252 from rioug/13159-add-tag-variant
[Variant tags]  Add variant tag on Bulk Edit Product screen
2025-05-03 17:34:51 +01:00
filipefurtad0
44e02b76f9 Adds the ng-bind html parameter to the producer column 2025-05-03 16:58:00 +01:00
Cillian O'Ruanaidh
d8959fd7a5 Don't cast remove image parameters to booleans. 2025-05-02 13:07:31 +01:00
Cillian O'Ruanaidh
65efd3b66c Render confirm remove image modal outside of form so a simple :button_to can be used instead of submitting via Stimulus controller. 2025-05-02 13:07:31 +01:00
Cillian O'Ruanaidh
ace5d5eb08 Add a :truthy? helper instead of ActiveModel::Type::Boolean.cast 2025-05-02 13:07:31 +01:00
Cillian O'Ruanaidh
28c9c53dc0 Keep original translations for when images are removed successfully 2025-05-02 13:07:31 +01:00
Cillian O'Ruanaidh
a9a4156251 Remove Angular and Stimulus Reflex from the Settings > Images section 2025-05-02 13:07:31 +01:00
dependabot[bot]
ac7768df05 Bump @floating-ui/dom from 1.6.13 to 1.7.0
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.6.13 to 1.7.0.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.7.0/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 09:58:03 +00:00
dependabot[bot]
fb7c74471e Bump jasmine-core from 5.7.0 to 5.7.1
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.7.0 to 5.7.1.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.7.0...v5.7.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 09:57:54 +00:00
cyrillefr
31fedfe083 Fixes StimulusJS error on printing w bulk action 2025-05-02 09:06:36 +02:00
Maikel Linke
8daa01e228 Process OC emails individually to avoid duplicates
Errors or delays can cause multiple duplicate emails to the same
suppliers.
2025-05-02 16:58:00 +10:00
Jordan 'slothmock' Mock
0be87314df Fix #11967 - limit variant unit name input to 20 characters 2025-05-01 23:45:41 +01:00
Jordan 'slothmock' Mock
35198cebcb Fix #11967 - limit variant unit name input to 20 characters 2025-05-01 23:33:07 +01:00
dependabot[bot]
43b874d18b Bump trix from 2.1.13 to 2.1.14
Bumps [trix](https://github.com/basecamp/trix) from 2.1.13 to 2.1.14.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.13...v2.1.14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 09:52:24 +00:00
Gaetan Craig-Riou
da8675826e Per review, remove :variant_tag context 2025-04-30 14:56:31 +10:00
Gaetan Craig-Riou
212b122700 Add translation for default placeholder in TagListInputComponent 2025-04-30 14:56:31 +10:00
Gaetan Craig-Riou
df785e907d Update app/components/tag_list_input_component/tag_list_input_controller.js
Co-authored-by: Maikel <maikel@email.org.au>
2025-04-30 13:53:30 +10:00
Gaetan Craig-Riou
a8b5a79b4b Merge pull request #13283 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.7.0
Bump jasmine-core from 5.6.0 to 5.7.0
2025-04-30 11:54:21 +10:00
Carlos Chitty
d0c687650e Autocorrect Style/HashEachMethods offenses 2025-04-29 15:16:34 -04:00
Carlos Chitty
446be6e127 Fix test failure due to hash interpreted as block in matcher
Wrap hash in parentheses to ensure it's passed as an argument rather than a block.
2025-04-29 15:16:29 -04:00
Carlos Chitty
63168086e7 Autocorrect Style/HashConversion offenses 2025-04-29 14:27:31 -04:00
Carlos Chitty
17a5b5e620 autocorrect Style/ArrayIntersect offenses 2025-04-29 14:20:50 -04:00
Filipe
d20ed5c757 Merge pull request #13275 from slothmock/fix-#13264
Fix #13264 - missing 'ng-bind-html'
2025-04-29 18:45:15 +01:00
Filipe
69bb78e39c Merge pull request #13213 from chahmedejaz/task/13128-add-order-number-to-notify-producer-email
Add order number to notify producer emails and make customer code available for everyone
2025-04-29 18:22:06 +01:00
Filipe
bf2277b6da Merge pull request #13255 from piyush828-design/pagy_upgrade
Upgrade pagy version to latest
2025-04-29 16:12:58 +01:00
cyrillefr
fbb4954ff7 Fixes Rubocop Naming NamingMemoizedInstanceVariableName cop 2025-04-29 13:27:47 +02:00
dependabot[bot]
017babc695 Bump jasmine-core from 5.6.0 to 5.7.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.6.0 to 5.7.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.6.0...v5.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-29 09:28:57 +00:00
Maikel
e02b765463 Merge pull request #13282 from cyrillefr/FixRubocopNamingHeredocDelimiterNaming
Fixes Rubocop HeredocDelimiterNaming offense
2025-04-29 12:44:58 +10:00
Ahmed Ejaz
6f9b5e2c54 fix specs
- add a new class .line-items in the orders-summary to better differentiate the line-items summary vs customer-details. This css class is not defined, just .customer-order for customer details. It's only used to make a differentiation in the specs
- use the updated `parsed_email` memoized helper method for mail body content
2025-04-28 15:11:54 +05:00
Ahmed Ejaz
d9c15cf414 update locale to use lazy loading 2025-04-28 15:11:54 +05:00
Ahmed Ejaz
57c30591bc 13128: add order number in OC report
- Make Customer Code independant of Customer Names setting
2025-04-28 15:11:52 +05:00
cyrillefr
2dce79a93d Fixes Rubocop HeredocDelimiterNaming offense 2025-04-28 09:47:55 +02:00
piyush828-design
0bb6860343 Merge branch 'master' into pagy_upgrade 2025-04-28 11:23:44 +05:30
David Cook
e900c95213 Merge pull request #13276 from filipefurtad0/pagy_pagination_spec
Adds coverage to pagination (pagy bump)
2025-04-28 13:18:58 +10:00
David Cook
7ed5ca8e1c Clarify number of users expected 2025-04-28 12:23:53 +10:00
Gaetan Craig-Riou
6f0c5c7a1c Merge pull request #13277 from cyrillefr/FixRubocopAccessorMethodNameOffense
Fixes Rubocop Naming/AccessorMethodName offenses
2025-04-28 10:24:16 +10:00
filipefurtad0
ff9e2a33ce Reproduces bug #12933, setting the test case as pending 2025-04-27 14:17:28 +01:00
piyush828-design
5e890bb361 Merge branch 'master' into pagy_upgrade 2025-04-24 17:46:39 +05:30
Jordan Mock
3bb14fbfdb Merge branch 'master' into fix-#13264 2025-04-24 13:13:37 +01:00
Jordan 'sloth' Mock
b56411145c Incorrect place for origianl fix. Thanks to Blane W for pointint out the correct line. 2025-04-24 13:05:40 +01:00
filipefurtad0
1d0d294a09 Adds coverage related to S1 regression #13002 2025-04-24 10:24:13 +01:00
cyrillefr
6fb1737672 Rename get method in spec web helper 2025-04-24 09:29:40 +02:00
cyrillefr
8d5292c4ed Rename set method in spec helper and calls 2025-04-24 09:29:40 +02:00
cyrillefr
9d2cb5f0e7 Rename get method in core controller helper 2025-04-24 09:29:40 +02:00
cyrillefr
7e8661b936 Rename a set method in Post checkout service 2025-04-24 09:29:40 +02:00
cyrillefr
7812d5f58a Replace set_methods in order model 2025-04-24 09:29:40 +02:00
cyrillefr
9996fcb54d Strips set prefix from method in ProducerMailer 2025-04-24 09:29:40 +02:00
piyush828-design
6f2f8e9542 fixed users page breaking 2025-04-24 12:49:47 +05:30
Maikel Linke
4756078ab9 Update all locales with the latest Transifex translations 2025-04-24 13:53:46 +10:00
Gaetan Craig-Riou
bb882ddfa3 Per review, simplify disabling of default action
Turns out you can just call `event.preventDefault()` on the action and
there is no need actually use hotkeys to do that.
2025-04-24 13:53:23 +10:00
Filipe
40d4b0c811 Merge pull request #13269 from drummer83/remove_txt-mails
Remove text versions of emails
2025-04-23 22:44:39 +01:00
filipefurtad0
e3fff0869e Adds test case on pagination for zones index page 2025-04-23 19:45:06 +01:00
filipefurtad0
c8a91a9d44 Fixes deprecation on trailing hashes for sort_link
Running the spec was pointing to the following deprecation - Passing two trailing hashes to  is deprecated, merge the trailing hashes into a single one. (called at /home/ffurtado/openfoodnetwork/app/views/spree/admin/users/index.html.haml:16)
2025-04-23 19:45:06 +01:00
filipefurtad0
a84c0ffd73 Adds test case on pagination for users index page 2025-04-23 19:45:06 +01:00
Jordan Mock
c14c760033 Fix #13272 - missing 'ng-bind'
This PR fixes issue #13272 where supplier and product names containing HTML character entities (e.g. &#227;) were rendered as raw text on the /admin/inventory page.

For example, a supplier name intended to appear as:

Pãtes du Contentin

would incorrectly display as:

P&#227;tes du Contentin

Cause:
AngularJS’s {{ ... }} interpolation inserts raw strings into the DOM without decoding HTML entities.
2025-04-23 14:05:21 +01:00
Filipe
6a9493a581 Merge pull request #13256 from ashishp91/missing_translations_for_tax_category
Use translation for "none" in reports
2025-04-23 13:10:13 +01:00
Filipe
07842bf5eb Merge pull request #13081 from pacodelaluna/do-not-allow-spaces-in-external-billing-id
Do not allow spaces in external billing
2025-04-23 12:20:02 +01:00
David Cook
280886241a Merge pull request #13259 from piyush828-design/add_coverage_10597
Added tests for edit and delete
2025-04-23 13:05:13 +10:00
piyush828-design
8c564d344b Merge branch 'master' into add_coverage_10597 2025-04-22 11:37:54 +05:30
piyush828-design
ed0b7f88a4 updated specs 2025-04-22 11:26:56 +05:30
Gaetan Craig-Riou
b29345007d Increase query count to take into account tag query 2025-04-22 13:57:55 +10:00
Gaetan Craig-Riou
1479be787b Prevent adding empty tag 2025-04-22 13:42:09 +10:00
Gaetan Craig-Riou
31afdfd8c4 Disable "enter" hotkeys only on tag input element
We are still able to use enter to submit the form on anyother input.The
tag input creates a new tag when enter is pressed
2025-04-22 13:42:09 +10:00
Gaetan Craig-Riou
6ff47eab3b Clean up css, we dont' need a different font for tags 2025-04-22 13:42:09 +10:00
Gaetan Craig-Riou
034feabcff Javascript code linting 2025-04-22 13:42:09 +10:00
Gaetan Craig-Riou
aba6240736 Per review, use css :has() pseudo class
It saves writing some custom javascript, less code to maintain!
2025-04-22 13:42:09 +10:00
Gaetan Craig-Riou
90ca224680 Fix tag display for long name 2025-04-22 13:42:08 +10:00
Gaetan Craig-Riou
6417c87047 Add visual feedback when adding tag errors
Highlight the tag name in red, if trying to add a tag that already
exists.
2025-04-22 13:42:08 +10:00
Gaetan Craig-Riou
157de25f36 Prettyfy code 2025-04-22 13:41:02 +10:00
Gaetan Craig-Riou
9e1a80c327 Mock hotkeys.js 2025-04-22 13:41:02 +10:00
Gaetan Craig-Riou
94cc774f27 Fix html used in test
It get rids of errors, even if they didn't affect the test result it's
noise we don't need
2025-04-22 13:41:02 +10:00
Gaetan Craig-Riou
559249b621 Improve tagListInputController to integrate with bulkFormController
tagListInputController is not a standard form controller so we had to
make a few changes to integrate with the change tracking used int
bulkFormController. Mainly we make sure to manually trigger event when
deleting a tags, and we handle the change highlight.
2025-04-22 13:41:01 +10:00
Gaetan Craig-Riou
c15e16900d Add stimulus tag list input controller
It handles the UI to display the list of tags, and lets you add and
remove tags from the list.
2025-04-22 13:41:01 +10:00
Gaetan Craig-Riou
6ff4c2c3aa Disable submitting form with enter key
We need to the enter key available to create new tags
2025-04-22 13:41:01 +10:00
Gaetan Craig-Riou
d6ed536eb7 Add example of component stimulus controller naming convention 2025-04-22 13:41:01 +10:00
Gaetan Craig-Riou
3585499fba Move tag list input to a component 2025-04-22 13:41:01 +10:00
Gaetan Craig-Riou
352203747a Add tag styling 2025-04-22 13:41:01 +10:00
Gaetan Craig-Riou
87a80d3efe Add Tags collumn
Currently display the list of tags, no fancy UI.
Updating works
2025-04-22 13:41:01 +10:00
Gaetan Craig-Riou
00db5091e7 Add "variant_tag" feature toggle 2025-04-22 13:41:01 +10:00
Gaetan Craig-Riou
d3b653b257 Add "variant_tag" to variant 2025-04-22 13:41:01 +10:00
David Cook
e1c6709472 Merge pull request #13251 from cyrillefr/FixRailsLexicallyScopedActionFilterPartI
Adresses Rails/LexicallyScoped offenses
2025-04-22 11:26:11 +10:00
Ahmed Ejaz
915dccc92d Update all locales with the latest Transifex translations 2025-04-22 01:45:38 +05:00
Konrad
d97cb9ccb3 Update specs 2025-04-21 20:11:50 +02:00
Konrad
f63552ca38 Deletes remaining text versions of emails
This is in preparation for advancing the white labelling feature of emails and adding more specs in that regard

Related discussion on Slack: https://openfoodnetwork.slack.com/archives/C2GQ45KNU/p1722902361401869?thread_ts=1721485724.245519&cid=C2GQ45KNU
2025-04-21 20:11:50 +02:00
Filipe
d2fa2e612c Merge pull request #13113 from chahmedejaz/task/13031-allow-producers-to-edit-orders
Allow producer to edit their products on hubs' orders
2025-04-21 11:28:36 +01:00
Ahmed Ejaz
7642c54667 remove the disabled button 2025-04-21 03:38:06 +05:00
Filipe
cb9db54cd3 Merge pull request #13240 from rioug/13100-do-not-remove-fee-product-removed-from-OC
[Enterprise Fees] Keep fees on product when a product is removed from the order cycle
2025-04-20 21:57:56 +01:00
Filipe
3236cbb0b8 Merge pull request #13191 from mkllnk/dfc-reset
Reset stock for absent products in DFC catalog
2025-04-20 21:34:49 +01:00
Ahmed Ejaz
3443c79169 Update all locales with the latest Transifex translations 2025-04-21 00:40:49 +05:00
François Turbelin
318bc1dae0 Add tests 2025-04-17 21:29:23 +02:00
piyush828-design
3202d0ea81 fixed test failure 2025-04-16 18:24:32 +05:30
piyush828-design
da5cef26db upgraded pagy to latest version 2025-04-16 17:46:31 +05:30
piyush828-design
e76b001348 Upgrade pagy version to latest 2025-04-16 17:46:31 +05:30
piyush828-design
5849ae57de Added tests for edit and delete 2025-04-16 12:11:52 +05:30
cyrillefr
a66a6197c7 Disable cop Rails LexicallyScopedActionFilter 2025-04-15 14:12:46 +02:00
David Cook
cf55a920da Manually add variable for translation
Normally I'd avoid editing these files, but this results in translations appearing exactly as they did prior to the PR. Ideally I would notify translators to re-translate but I don't know that there's a good process for that. Hopefully this is fine and doesn't cause any conflicts...
2025-04-14 15:39:44 +10:00
Ahmed Ejaz
d12455ccbe update schema 2025-04-13 21:45:04 +05:00
Ahmed Ejaz
87c957541d refactor: fix rubocop lint issues 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
213209b460 hide customer info on bulk orders page 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
4e2198cd4f hide shipping icons from suppliers 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
eee5d5c8ad fix buggy spec:
- this before block was causing multiple nevigation to the index
  - one from the spec itself, one from here.
2025-04-13 21:35:55 +05:00
Ahmed Ejaz
293b30cfa6 simplify block 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
f2adcbf2b8 fix syntax error 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
acdffb0aa1 revert "remove subquery for optimization"
- we are using OR between two queries here: 53ec6621bc/app/services/search_orders.rb (L31-L32)
- so to make it compatible with this, had to revert

Throws following error:
Relation passed to #or must be structurally compatible. Incompatible values: [:left_outer_joins]
2025-04-13 21:35:55 +05:00
Ahmed Ejaz
3474734418 implement spree_current_user let! so that user creation doesn't get captured in the scoper queries 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
0500294480 rename is_producer to is_producer_only 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
a4f1f542be rename distributor_allows_order_editing to filter_by_supplier 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
adbdc64c13 remove subquery for optimization 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
f132d99df4 remove ids usage 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
9867d0bc3a fix flaky spec error:
Ferrum::BrowserError:
       Argument should belong to the same JavaScript world as target object
2025-04-13 21:35:55 +05:00
Ahmed Ejaz
ccfd0edbf1 fix lint issues 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
bf6934db94 add specs 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
b803e18f42 fix lint issues 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
20146a8e11 update respective specs 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
bc3917ebc1 incorporate show_customer_names_to_suppliers setting 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
4bc578f38f restrict page sections from supplier 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
3e71f8293c add bulk_management ability 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
d9308799b0 add ability search supplier products in orders 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
19c5fec9a9 add ability update supplier line_items in orders 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
0a61910cf6 add ability to view supplier products containing orders 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
93fb3fd7d9 add enterprise producers_to_edit_orders setting 2025-04-13 21:35:55 +05:00
Ahmed Ejaz
408ccc5c16 Update all locales with the latest Transifex translations 2025-04-12 23:33:20 +05:00
Ashish Gaur
2da170912f Use translation for none in reports 2025-04-12 12:01:06 +05:30
David Cook
6e344de7e2 Merge pull request #13254 from dacook/fix-schema
Remove accidental line from schema
2025-04-11 12:12:56 +10:00
David Cook
f3cec40322 Remove accidental line from schema
This was accidentally included in merged PR #13192 but is due to be added in unmerged PR #13113

I rectified this in my dev env and regenerated schema to ensure it was correct (I didn't manually edit it).
2025-04-11 11:09:28 +10:00
filipefurtad0
6a49668307 Update all locales with the latest Transifex translations 2025-04-10 16:00:54 +01:00
François Turbelin
9529acd477 Adjust the regexp 2025-04-09 23:23:37 +02:00
François Turbelin
243d81c786 Revert "Improve the no-white-spaces regexp for enterprises"
This reverts commit baf89053638628052752f345b357d630d7484046.
2025-04-09 23:20:51 +02:00
François Turbelin
98251b306e Improve the no-white-spaces regexp for enterprises 2025-04-09 22:34:25 +02:00
Gaetan Craig-Riou
6d78ee8be4 Fix rubocop warning 2025-04-09 22:34:23 +02:00
Filipe
9f988f7a02 Merge pull request #13216 from drummer83/email_header
Email header: Improve logo, resizing and styles
2025-04-09 12:00:09 +01:00
Filipe
c17821687d Merge pull request #13243 from cyrillefr/GoButtonResumeEnabledAfterFailedReport
Fixes button staying disabled after report fail
2025-04-09 10:19:06 +01:00
Filipe
c3cb51441f Merge pull request #13192 from dacook/display-customer-contacts-in-reports-13129
[FF] Add option to display customer contact details to suppliers in reports
2025-04-08 20:34:44 +01:00
cyrillefr
5c3db6cab8 Removes unused action from filter in controller 2025-04-08 14:04:37 +02:00
cyrillefr
0ef3b06cdf Requested changes 2025-04-07 13:12:51 +02:00
David Cook
5dcdf0caed Merge pull request #13247 from cyrillefr/FixRailsRubocopIssueInverseOfInOrder
Fix Rubocop InverseOf offense in Order model
2025-04-07 16:45:50 +10:00
David Cook
369b93f0dd Update tip
By updating the translation key, all other locales will be notified to update their translations too.
2025-04-07 16:33:39 +10:00
Ahmed Ejaz
34e8bc83b9 Update all locales with the latest Transifex translations 2025-04-05 03:49:47 +05:00
cyrillefr
019c703b1c Fix Rubocop InverseOf offense in Order
- also fix failing spec due to adding inverse
2025-04-03 12:39:06 +02:00
cyrillefr
6666896fa3 Requested changes 2025-04-02 14:46:22 +02:00
David Cook
5c5a115daa Fix typo 2025-04-02 10:40:46 +11:00
Konrad
d42d86b763 Reduce max-width of logo to reflect the proposed aspect ratio of 640px / 130px (= 247px / 50px) 2025-04-01 18:37:59 +02:00
Konrad
3b0b023624 Remove unused styles
Class "btn": not used in any of the emails and invoices

Class "column-wrap": not used in any of the emails and invoices

Class "collapse": margin and padding are set globally to zero already, padding is not used, but we need margin to overwrite it for h6
2025-04-01 18:36:25 +02:00
Konrad
9ee37ee0b6 Update specs 2025-04-01 18:11:13 +02:00
Konrad
db3a8a6b30 Header: Improve logo, resizing and styles
Use the site's main logo instead of footer logo to allow for better contrast on gray background (dark text on gray instead of white text on gray)

The table's background color is defined in the parent table already

Limit the max width and max height of the logo and resize the logo accordingly instead of forcing it to squeeze into a fixed size
2025-04-01 18:11:13 +02:00
cyrillefr
f0a5c76b45 Fixes button staying disabled after report fail
- added a test
2025-04-01 17:25:53 +02:00
Filipe
a7c77dc894 Merge pull request #13084 from abdulazizali77/bugfix/11529-report-by-enterprise-fee-from-lineitems
Fetch variant enterprise fees from order lineitems adjustments #11529
2025-04-01 16:13:51 +01:00
Filipe
bb527a2cbd Merge pull request #13224 from Tresor11/tb-rescue-not-found-error-for-enterprise
Fix: Admin visiting non-existent enterprise raises error
2025-04-01 15:00:41 +01:00
Gaetan Craig-Riou
1279ab21a6 Fix delete fee logic
A fee can be associated to both the incoming and outgoing exchange, the
previous logic did not account for that, resulting in the fee not being
correctly removed.
Now the delete logic also check for the metadata enterprise role to see
if any additional fee need to be removed.
2025-04-01 13:46:34 +11:00
Gaetan Craig-Riou
3744ba9198 create_*_adjustment now return the adjustment 2025-04-01 13:46:34 +11:00
Gaetan Craig-Riou
223faa5569 Move #recreate_all_fees! spec to HandleFeesService
Spree::Order just delegate Orders::HandleFeesService so there is no
point testing fees in the order spec
2025-04-01 13:46:34 +11:00
Gaetan Craig-Riou
b5bc6b84d7 Update Orders::HandleFeesService#recreate_all_fees!
We now update or create line item fees instead of deleting them and
recreating them. This is to cover the case when a product has been
removed from an Order Cycle but we want to keep the fee already applied
on existing order. This was an issue only if the existing order got
updated after the product was removed.
2025-04-01 13:46:34 +11:00
Gaetan Craig-Riou
d83f8ded0d Remove Module from spec and some stylying
Also remove unnecessary use of `__send__`
2025-04-01 13:46:34 +11:00
Gaetan Craig-Riou
2a0caca570 Refactor EnterpriseFee.clear_all_adjustments
Renamed to clear_order_adjustments, it doesn't clear line item
adjustment
2025-04-01 13:46:34 +11:00
Gaetan Craig-Riou
02a9aaf1ec Refactor spec 2025-04-01 13:46:34 +11:00
Trésor Bireke
5e7f0f8a1a Merge branch 'master' into tb-rescue-not-found-error-for-enterprise 2025-04-01 01:10:17 +02:00
Gaetan Craig-Riou
0537a56b47 Merge pull request #13239 from cyrillefr/FixRailsRubocopIssueInverseOfInPayments
Fixes rubocop offense inverse_of on payment model
2025-04-01 09:59:01 +11:00
David Cook
bf3cfeb9fa Merge pull request #13236 from mkllnk/deprecations
Alert us to deprecation warnings
2025-04-01 09:53:02 +11:00
David Cook
d8eab7875f Merge pull request #13235 from mkllnk/stock-aggregation
[API change] Remove unused ProductStock concern
2025-04-01 09:45:24 +11:00
David Cook
176e33d6bf Rubocop fixes 2025-04-01 09:29:27 +11:00
Tresor11
507705a4eb Update method name to require
This commit updates the method name to be called required_enterprise
since we only expect it to raise an error when the enterprise is not found.
2025-03-31 22:28:38 +03:00
cyrillefr
09a6da0c57 Fixes rubocop offense inverse_of on payment model
- some clean up unused method too
2025-03-31 17:10:43 +02:00
David Cook
e02ef08b06 Consolidate translations for hidden field
The string '< Hidden >' was agreed on as a good default, so we will use the hidden_field key.
I also moved the definition in en.yml up to the more general area at the start of admin.reports section (before it was hidden between report-specific keys.
2025-03-31 16:24:07 +11:00
David Cook
729dc9d658 Move mask logic to separate module
And cross-reference similar files so we don't miss it next time\!
2025-03-31 16:16:27 +11:00
David Cook
19b6cbcc9b Packing reports: Display phone numbers to suppliers 2025-03-31 16:16:27 +11:00
David Cook
9c296b691f Remove unnecessary parameter
We've never needed it and still don't need it for the next feature
2025-03-31 16:16:27 +11:00
David Cook
38fca53e91 Refactor
Using a more specific name for the mask rule, and making way for a second standardised rule.
2025-03-31 16:16:27 +11:00
David Cook
f40a00dde3 Expand spec to cover existing behaviour
And use let to avoid extra db query
2025-03-31 16:16:27 +11:00
David Cook
47b6888fe6 Display customer emails & phone numbers to suppliers
when permitted.

The MaskDataService is used by the report framework, so this should affect all reports. It would be nice to test all reports, but I figured it wasn't worth it (already we only test one report for masking names).
2025-03-31 16:16:27 +11:00
David Cook
b05a42f3bb Refactor spec 2025-03-31 16:16:27 +11:00
David Cook
98ab910fb4 Refactor 2025-03-31 16:16:27 +11:00
David Cook
4402854a2a AddEnableProducersToEditOrdersToEnterprises
With system spec for setting the preference. The enterprise edit page seems under-tested..
2025-03-31 16:16:27 +11:00
David Cook
02db30202b Use rails form helper methods
This helps ensure the labels are attached to the radio buttons, so you can click on the words to select the option.
2025-03-31 16:16:27 +11:00
Maikel
b9901b91fe Merge pull request #13234 from mkllnk/rspec-sql
Bump rspec-sql from 0.0.2 to 0.0.3
2025-03-31 12:24:31 +11:00
Gaetan Craig-Riou
421b753e0a Merge pull request #13231 from chitty/more-rubocop-style-corrections
Correct rubocop Style/* offenses
2025-03-31 10:49:20 +11:00
Maikel
f61b2ae22e Merge pull request #13229 from mcmpp/Add_basque_language
Add basque language
2025-03-31 10:45:59 +11:00
Gaetan Craig-Riou
aee80ddf1d Merge pull request #13230 from filipefurtad0/specs_mailer_reply_to_changes
Adds tests to recent reply_to email changes
2025-03-31 10:38:59 +11:00
David Cook
91a9a3cd77 Merge pull request #13226 from cyrillefr/FixRailsInversOfPartI
Fixes some Rails InverseOf offenses
2025-03-31 09:48:51 +11:00
filipefurtad0
b975986639 Update all locales with the latest Transifex translations 2025-03-29 11:22:49 +00:00
Filipe
37ef5d5b02 Merge pull request #13214 from chahmedejaz/task/13179-expand-notes-edit-order
Fix expand notes field when editing order
2025-03-28 16:43:29 +00:00
Abdul Aziz Ali
8b34505b36 Fix query group and pluck #11529 2025-03-28 19:12:09 +08:00
Abdul Aziz Ali
abe4c5e0da Filter fees by metadata.enterprise_role 'supplier' #11529 2025-03-28 18:30:44 +08:00
Maikel Linke
4962304a48 Deal with nil values in sum
Rails was doing that for us but Rails 7.1 won't.
2025-03-28 17:01:26 +11:00
Maikel Linke
007154ef28 Notify Bugsnag on deprecations in staging & production
The behaviour was set to `notify` already but we were missing a
notification handler. Now we'll get alerted about deprecations which
were not covered by specs.
2025-03-28 17:01:26 +11:00
Maikel Linke
db513470e0 Fail CI on unknown deprecation warnings 2025-03-28 17:01:26 +11:00
Maikel Linke
b3ddfde1c3 Remove empty ProductStock concern 2025-03-28 14:49:47 +11:00
Maikel Linke
a48a1e1171 DRY importer spec 2025-03-28 14:48:40 +11:00
Maikel Linke
ca9f32ceae [API change] Remove unused Product#on_hand 2025-03-28 14:48:40 +11:00
Maikel Linke
d55d4dd8ed Remove unused Product#on_demand 2025-03-28 14:00:40 +11:00
Maikel Linke
0334f3688e Upload to and download from Transifex 2025-03-28 11:12:10 +11:00
Maikel Linke
eddae28ce0 Fix locale syntax 2025-03-28 11:05:53 +11:00
Mikel Cordovilla Mesonero
2904b64b2a Merge branch 'master' into Add_basque_language 2025-03-27 18:54:53 +01:00
Mikel Cordovilla Mesonero
a5fd1ec7b1 Update config/locales/eu.yml
Co-authored-by: Maikel <maikel@email.org.au>
2025-03-27 16:12:30 +01:00
Mikel Cordovilla Mesonero
3af00d5f7a Update config/locales/eu.yml
Co-authored-by: Maikel <maikel@email.org.au>
2025-03-27 16:12:17 +01:00
Maikel
9e1a66c1e5 Merge pull request #13233 from chitty/bump-puma-to-6.5
Bump puma to v6.5.0
2025-03-27 16:10:21 +11:00
Maikel Linke
60eb50066e Bump rspec-sql from 0.0.2 to 0.0.3 2025-03-27 15:21:08 +11:00
Maikel Linke
406018e7eb Simplify resetting variants
I was hoping to reduce the query count but it stayed the same. In fact,
I'm expecting the query count to be higher with this version. The
DfcCatalogImporter queries all variants and links at once while the OC
job is not pre-loading the variants at the moment. We can optimise the
job though.

If we kept the old version and there were multiple catalogs per variant
then we would call the importer with the reset multiple times. The job
is iterating through each link only once though. So depending on the
ratio of catalogs to variants, I'm not sure which version would be more
efficient.

No version is properly dealing with the edge-case of multiple catalogs
per variant anyway. Imagine there are two catalogs with different stock
levels. Which one do we choose? Or do we add up?
And if the variant disappears from one catalog we still want to sell it
through the other. But depending on the order of processing, we may
reset the variant if it's missing in the last catalog. But let's worry
about that when it actually happens. Maybe it will be better to restrict
variants to one catalog.
2025-03-27 15:12:45 +11:00
Maikel Linke
1a5b6bbc8f Reset stock for unavailable products on OC open 2025-03-27 14:40:50 +11:00
Maikel Linke
9e3ff412f9 Simplify controller 2025-03-27 13:36:48 +11:00
Maikel Linke
48e3b5b05e Move more reset variant code for re-use 2025-03-27 13:36:48 +11:00
Maikel Linke
c43bd0c24b Move variant reset code to shared service 2025-03-27 13:36:48 +11:00
Maikel Linke
e35a29cc29 Remember local stock of backordered products
When retail variants are mapped to wholesale variants, we usually have a
some leftover stock at the end of an order cycle. For example, we
backordered a slab of 12 cans of tomatoes but our customers bought only
9 of those. Then we have 3 left for the next order cycle.

Even when the product is not available for backorder with the supplier,
we still want to sell off our leftover stock, the three cans of tomatoes
in our example.

And it might be that the product will come back in the future.
2025-03-27 13:36:48 +11:00
Maikel Linke
2a81d26ef1 Simplify complex method 2025-03-27 13:36:48 +11:00
Maikel Linke
c60718feea List absent products in import preview 2025-03-27 13:36:48 +11:00
Maikel
a2e68e1f3c Explain stock reset further
Co-authored-by: David Cook <david@redcliffs.net>
2025-03-27 13:36:48 +11:00
Maikel Linke
11be8360e3 Prettier and localised display of import stats 2025-03-27 13:36:47 +11:00
Maikel Linke
a6c08fe2ad Reset stock for absent products in DFC catalog 2025-03-27 13:36:47 +11:00
Maikel Linke
8a8602158b Test link in HTML email with Capybara 2025-03-27 12:06:05 +11:00
Maikel Linke
b554248cfe Test for email content 2025-03-27 11:48:41 +11:00
Maikel Linke
1b8ebc3105 Test with known text 2025-03-27 11:38:35 +11:00
Maikel Linke
edcb04ed50 Save time by not storing test data in DB 2025-03-27 11:31:16 +11:00
Maikel Linke
e12c51edd1 Use RSpec matchers for emails 2025-03-27 11:29:15 +11:00
Maikel
249410bed1 Merge pull request #13228 from rioug/13217-add-order-fees-testing
[Enterprise fees] Add system testing for various enterprise fees
2025-03-27 10:49:23 +11:00
cyrillefr
da26f5833f Requested changes 2025-03-26 19:44:08 +01:00
Carlos Chitty
24aaf9ab4c bump puma 2025-03-26 13:03:13 -04:00
Carlos Chitty
ecb303fef5 Correct Style/SlicingWithRange rubocop offenses 2025-03-26 11:16:24 -04:00
Carlos Chitty
58a16d89a3 Correct Style/RedundantInitialize rubocop offense 2025-03-26 11:16:24 -04:00
Carlos Chitty
7f734cf2f8 Autocorrect Style/PreferredHashMethods rubocop offense 2025-03-26 11:16:24 -04:00
Carlos Chitty
be76e714c6 Autocorrect Style/GlobalStdStream offenses 2025-03-26 11:16:24 -04:00
Carlos Chitty
1109ccfc3d Correct Style/FrozenStringLiteralComment rubocop offense 2025-03-26 11:16:24 -04:00
Carlos Chitty
9c8e0899d1 Correct Style/CaseEquality rubocop offense 2025-03-26 11:16:20 -04:00
filipefurtad0
e017b14f31 Adds spec for payment authorization emails 2025-03-26 12:19:02 +00:00
filipefurtad0
df3cbe84b6 Asserts that the order shipment and pick up emails have the distributors email as reply to address 2025-03-26 12:19:02 +00:00
filipefurtad0
98cba128e0 Asserts that the invoice email has the distributors email as reply to address 2025-03-26 12:18:55 +00:00
filipefurtad0
ea82b162ac Asserts that the order cancellation email for customer has the distributors email as reply to address 2025-03-26 12:00:48 +00:00
filipefurtad0
9a161cae5b Asserts that the order confirmation email for shops has the customer's email as reply to address 2025-03-26 12:00:48 +00:00
filipefurtad0
6ee1c8ca29 Asserts that the order cancellation email for shops has the customer's email as reply to address 2025-03-26 12:00:41 +00:00
filipefurtad0
c95c598f82 Asserts that the enterprise welcome email has no reply to address
Asserts that manager invitation email has the inviting enterprise as reply to address
2025-03-26 11:57:59 +00:00
Mikel Cordovilla
355c775516 Add basque language 2025-03-26 11:57:22 +01:00
Gaetan Craig-Riou
d8f2bb09d0 Re enable assertion
It's working fine with the current design
2025-03-26 12:50:42 +11:00
Gaetan Craig-Riou
1ee3e9a2a1 Add proper fee testing
The previous version wasn't testing anything as there was no fees set
up.
Now we check that fees are applied as expected, and also that supplier
fees are applied only to the expected product.
2025-03-26 12:50:35 +11:00
Maikel
83186608a0 Merge pull request #13227 from chitty/rubocop-style-autocorrection-fix
Autocorrect rubocop offenses Style/RedundantAssignment and Style/RedundantArgument
2025-03-26 10:16:35 +11:00
cyrillefr
1d24674386 Fixes some Rails InverseOf offenses 2025-03-25 18:46:00 +01:00
Carlos Chitty
dca2714aa7 Autocorrect rubocop offense Style/RedundantArgument 2025-03-25 13:35:56 -04:00
Carlos Chitty
ba693e3ecf Autocorrect rubocop offense Style/RedundantAssignment 2025-03-25 13:33:50 -04:00
Filipe
9fa42cae47 Merge pull request #13143 from mkllnk/admin-in-same-tab
Open admin dashboard in same tab by default
2025-03-25 17:10:51 +00:00
Filipe
2a3927caad Merge pull request #13176 from drummer83/reply-to-email-address_part2
Add a 'reply to' email address to some more emails
2025-03-25 17:00:02 +00:00
Maikel
11dbd5620d Merge pull request #13167 from dacook/sync-products-on-oc-opened-12986
[DFC Orders] Sync remote products when order cycle opens
2025-03-25 11:02:59 +11:00
Maikel Linke
177a910aac Disable printing expected error 2025-03-25 10:38:35 +11:00
Maikel Linke
973d1be90b Style EmptyBlock 2025-03-25 10:38:35 +11:00
Maikel Linke
7abaaed5b6 Make test fail when we are not locking 2025-03-25 10:38:35 +11:00
Maikel Linke
dcedffac2f Ensure we wait for all threads in spec 2025-03-25 10:38:34 +11:00
David Cook
ff7c23c8f9 Rename OrderCycleOpenedJob
This name better reflects what it's doing.

As this job is scheduled automatically by Sidekiq, I think there shouldn't be any jobs with the old name in redis. So I didn't bother keeping a placholder for the old name.

And Clean up unused include
2025-03-25 10:38:34 +11:00
David Cook
6738101ebd Raise error if record not found, and don't retry too many times
After 10 minutes, I'd consider that it failed to open the order cycle. Who would want their products to sync, or get a notification at a random time during the order cycle?

Best viewed with whitespace ignored.
2025-03-25 10:38:34 +11:00
David Cook
75dcee12a8 Re-record fixture
And document how to run it.
2025-03-25 10:38:34 +11:00
David Cook
428bcc8988 Only update one timestamp
> The order cycle itself is not changed. It's just that time passed and it's now considered open/closed.
2025-03-25 10:38:34 +11:00
David Cook
317cbd4b32 Use existing method
Co-authored-by: Maikel <maikel@email.org.au>
2025-03-25 10:38:34 +11:00
David Cook
801beadb67 Reduce specificy of test
I guess we lose some of the detail in the db.
2025-03-25 10:38:34 +11:00
David Cook
4400b74f7e Explicitly set timecop freeze time
and in that case, might as well define it once at the top.

But it didn't help with spec failures.. see next commit
2025-03-25 10:38:34 +11:00
David Cook
23dc0f7298 Change concurrency check to be based on order_cycle.opened_at
Being based on the DB value should be more robust.

This prevents an order cycle from being "opened" when it's already open. But note that the order cycle can become "unopened" (see OrderCycle#reset_opened_at).

Nice to see the database query count drop, but I must confess I don't know why!
2025-03-25 10:38:34 +11:00
David Cook
eff8fdb28b Move to new job
And re-organise specs.

TOFIX: concurrency test now fails. why?

Use correct testing methods
2025-03-25 10:38:34 +11:00
David Cook
a8490a9b11 Record the exact event time for the webhook
There might be a delay before it gets sent, so it's better to record the time the event occurred at.
It would have been simpler to just add it to the data hash, but I felt it was an important detail for an event and should be at the top level along with event name.

In the case of order cycle opening, this is the same as opened_at. I've included this in the payload for clarity too.
2025-03-25 10:38:30 +11:00
David Cook
6f5a58ac47 Refactor spec
It was probably better to be explicit at each test, but this one is always repeated and approaches the line length, so I wanted to just define it once at the top.
2025-03-25 10:27:47 +11:00
David Cook
05e1a5b39d Mark each order cycle as opened once pre-conditions have been processed 2025-03-25 10:27:47 +11:00
David Cook
5b21c81ca5 Synchronise remote products when order cycle opens
I considered pre-loading the variant and product with includes, But can't do that here because it's a polymorphic relationship.
2025-03-25 10:27:47 +11:00
Gaetan Craig-Riou
bdced0b9e2 Merge pull request #13207 from mkllnk/dfc-missing-product
Gracefully handle product missing from catalog
2025-03-24 10:12:48 +11:00
Maikel
08dd446d54 Merge pull request #13223 from cyrillefr/FixRailsTimeZone
Fixes Rails TimeZone rubocop offenses
2025-03-24 10:07:01 +11:00
Ahmed Ejaz
806965b2cd add textarea field plus the preformatted tag to display paragraph formatting in the notes 2025-03-24 00:43:07 +05:00
Tresor11
5b3bae85ca Rescue Not Found Error for Enterprise for admin
Currently when an admin tries to edit an no-existing enterprise, a
NoMethodError is raised.

This commit adds a set_enterprise setter method to the
enterprises controller that sets the @enterprise instance variable to
have the same value as the enterprise object defined in the the edit
method; this method also rescues the NotFound error  in case
the enterprise is not found and redirects the user to the enterprises
index page with a error message.
2025-03-22 00:35:27 +03:00
Ahmed Ejaz
bcfb55702b Update all locales with the latest Transifex translations 2025-03-22 01:29:17 +05:00
cyrillefr
fa4fc7c3c5 Fixes Rails TimeZone rubocop offenses 2025-03-21 13:13:52 +01:00
Filipe
353e7ecff0 Merge pull request #13153 from mkllnk/dfc-images
Update images in DFC product import on URL change
2025-03-21 09:59:36 +00:00
Maikel
c60bb2776c Merge pull request #13201 from dacook/breaking-change-labels
Categorise breaking-change labels in release notes
2025-03-21 10:39:48 +11:00
David Cook
da3bd4eae9 Use spaces in label names
The labels on GitHub have already been updated.

[skip ci]
2025-03-20 15:31:34 +11:00
David Cook
1d55c234a4 Rename release category title
Much less alarming than 'breaking'.
2025-03-20 15:18:57 +11:00
Maikel Linke
dc749092b4 Simplify authorisation required email 2025-03-20 09:58:46 +11:00
Abdul Aziz Ali
6a525c18ac remove incoming exchange filtering #11529 2025-03-19 08:23:30 +08:00
Maikel
a27491bc39 Merge pull request #13218 from openfoodfoundation/revert-13144-13100-removed-fee-when-product-removed
Revert "Update line items enterprise fee instead of deleting and recreating "
2025-03-19 09:57:30 +11:00
Gaetan Craig-Riou
11e08dcc26 Revert "Update line items enterprise fee instead of deleting and recreating " 2025-03-19 09:40:02 +11:00
drummer83
71fa0f09c6 Add 'reply to' email address to order emails for shops 2025-03-18 16:07:55 +01:00
drummer83
aff5cd8d44 Add 'reply to' email address to payment emails 2025-03-18 16:07:55 +01:00
Filipe
e524b3ddb1 Merge pull request #13197 from dacook/reload-payments-12693
Fix obscure issue when choosing payment method in checkout
2025-03-18 12:04:33 +00:00
Filipe
3c801a2656 Merge pull request #13182 from mkllnk/invalid-dfc-catalog-url
Rescue from invalid DFC catalog URLs
2025-03-18 10:57:26 +00:00
Maikel
a0b5bd53f1 Merge pull request #13210 from dacook/test-locale
Ensure tests run with specified locale
2025-03-18 09:57:25 +11:00
Gaetan Craig-Riou
afb25a5209 Merge pull request #13209 from cyrillefr/FixRubocopLintIssuesIV
Fixes some rubocop linting offenses - part IV
2025-03-18 09:43:01 +11:00
Ahmed Ejaz
cd894dac59 Revert "TEST"
This reverts commit 65a64c6eb3.
2025-03-18 03:35:45 +05:00
Ahmed Ejaz
65a64c6eb3 TEST 2025-03-18 03:32:23 +05:00
David Cook
c882924a60 Add comment to .env.test
[skip ci]
2025-03-17 13:52:52 +11:00
David Cook
bf01b945ff Update all locales with the latest Transifex translations 2025-03-17 10:02:27 +11:00
Ahmed Ejaz
86f5385aec 13179: fix notes field length issue
- notes field was a children of label element
- due to this its size was bound by the label element
- now this commit makes it a sibling, making it occupy the width of column width
2025-03-16 16:00:56 +05:00
Filipe
b3c7968e50 Merge pull request #13144 from rioug/13100-removed-fee-when-product-removed
Update line items enterprise fee instead of deleting and recreating
2025-03-14 10:12:50 +00:00
Maikel
4a1a965f74 Merge pull request #13205 from openfoodfoundation/dependabot/npm_and_yarn/babel/helpers-7.26.10
chore(deps): bump @babel/helpers from 7.21.5 to 7.26.10
2025-03-14 16:45:55 +11:00
dependabot[bot]
72d7e44bb9 chore(deps): bump @babel/helpers from 7.21.5 to 7.26.10
Bumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.21.5 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 03:43:58 +00:00
Maikel
07cc9fa711 Merge pull request #13204 from openfoodfoundation/dependabot/npm_and_yarn/babel/runtime-7.26.10
chore(deps): bump @babel/runtime from 7.15.3 to 7.26.10
2025-03-14 14:42:05 +11:00
Maikel Linke
b15ffe7a4e Restore empty block with comment
RSpec tags are too complex for this simple setup.
2025-03-14 11:26:04 +11:00
cyrillefr
ba58a7b924 Fix: inconsiderate use of RSpec.configure 2025-03-13 10:08:35 +01:00
David Cook
1bbd6b58fd Run tests with specified locale
We changed .env.test a while ago, but I just discovered it hadn't taken any effect because it was overwritten here. Now it's loaded from env var.
2025-03-13 11:56:16 +11:00
cyrillefr
e26d591d24 Fixes some rubocop linting offenses - part VI 2025-03-12 21:23:49 +01:00
Maikel Linke
a082a95ea1 Split method into simpler pieces 2025-03-12 13:03:35 +11:00
Maikel Linke
2f5667a294 Gracefully handle product missing from catalog 2025-03-12 12:56:08 +11:00
David Cook
1213455350 Merge pull request #13202 from mkllnk/flaky-cache
Ensure we test for the right text after AJAX loads filters
2025-03-12 10:12:11 +11:00
David Cook
19ae49aa68 Merge pull request #13200 from mkllnk/caching
Make sure the first page load is complete before updating database
2025-03-12 10:11:00 +11:00
David Cook
37b6312458 Merge pull request #13196 from mkllnk/reviewdog
Fail Reviewdog Rubocop check on any found issues
2025-03-12 10:08:24 +11:00
dependabot[bot]
ad593e521c chore(deps): bump @babel/runtime from 7.15.3 to 7.26.10
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.15.3 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 23:02:47 +00:00
David Cook
b5065de7d9 Update app/views/checkout/_tabs.html.haml
Co-authored-by: Gaetan Craig-Riou <40413322+rioug@users.noreply.github.com>
2025-03-12 10:01:45 +11:00
Gaetan Craig-Riou
ba1456b215 Merge pull request #13203 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.13
chore(deps): bump trix from 2.1.12 to 2.1.13
2025-03-12 10:01:22 +11:00
dependabot[bot]
cdc14ace5d chore(deps): bump trix from 2.1.12 to 2.1.13
Bumps [trix](https://github.com/basecamp/trix) from 2.1.12 to 2.1.13.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.12...v2.1.13)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 09:13:12 +00:00
Maikel Linke
84fa679165 Revert "Run flaky spec 250 times to surely fail"
This reverts commit 46b5fddf76.
2025-03-11 17:12:36 +11:00
Maikel Linke
fc73d8cd4a Ensure we test for the right text after AJAX loads filters 2025-03-11 17:02:48 +11:00
Maikel Linke
46b5fddf76 Run flaky spec 250 times to surely fail 2025-03-11 16:49:01 +11:00
Maikel Linke
64a8b5845a Add feature toggle open_in_same_tab for admin dashboard
This allows us to test what users actually want.
2025-03-11 16:38:51 +11:00
David Cook
55cbe51592 Prevent Turbo pre-fetch which changes cart state 2025-03-11 16:19:34 +11:00
David Cook
f37742d84a Prevent exception when payment has been cleared
Note that in the real world, this avoids a crash, but still requires the user to click the button two more times before it will work, with no hints as to why. So not a great help.
2025-03-11 16:19:21 +11:00
Maikel Linke
caf40e7301 Open admin dashboard in same tab by default 2025-03-11 16:13:27 +11:00
David Cook
25eb00f69c Spec for #12693
I tried to build it within  context "with existing invalid payments", but couldn't get it to work so created a different one.
2025-03-11 16:10:54 +11:00
David Cook
0f923405cb Attempt to spec for error
It didn't catch the error I was looking for. I'm not sure if it is a valid use case, but it still seems helpful to add coverage for current functionality.
2025-03-11 16:08:27 +11:00
David Cook
bd6f718bef Add reminder to check for breaking changes
[skip ci]
2025-03-11 15:58:28 +11:00
David Cook
08045d950b Categorise breaking-change labels in release notes 2025-03-11 15:51:28 +11:00
Maikel
2c25ab0f09 Merge pull request #13199 from cyrillefr/FixRubocopLintIssuesIII
Fixes some rubocop linting offenses - part III
2025-03-11 13:58:22 +11:00
Gaetan Craig-Riou
0480ddb59c Add comment 2025-03-11 10:41:32 +11:00
Gaetan Craig-Riou
f2c3ab8b03 Per review, improve test expectation 2025-03-11 10:37:49 +11:00
Gaetan Craig-Riou
9c45801e37 Code formatting 2025-03-11 10:31:28 +11:00
Gaetan Craig-Riou
756a469a41 Update all locales with the latest Transifex translations 2025-03-10 13:43:25 +11:00
Ahmed Ejaz
37de45b60e Merge pull request #13189 from chahmedejaz/bugfix/13019-page-redirect-from-shopfront
Page is redirected to root after login from shopfront page
2025-03-09 06:14:44 +05:00
Maikel Linke
fc2515eac1 Make sure the first page load is complete before updating database 2025-03-07 13:08:50 +11:00
cyrillefr
9bb617d748 Fixes some rubocop linting offenses - part III 2025-03-06 23:42:53 +01:00
Maikel
9ffc249e37 Merge pull request #13194 from openfoodfoundation/dependabot/npm_and_yarn/pretty-quick-4.1.1
chore(deps-dev): bump pretty-quick from 4.0.0 to 4.1.1
2025-03-06 13:15:23 +11:00
Maikel Linke
73ae43302e Update deprecated Reviewdog option 2025-03-06 12:55:56 +11:00
David Cook
d3b7db0082 Merge pull request #13186 from cyrillefr/FixRubocopLintIssuesII
Fixes some rubocop linting offenses - part II
2025-03-06 11:33:56 +11:00
Maikel
2e4b59daaf Remove orphaned comment 2025-03-06 11:28:25 +11:00
David Cook
45eedd1e89 Simplify expresssion
It's worth noting that a falsy value won't get cached (as before).
But I didn't take the time to investigate if that makes a difference or not.
2025-03-06 10:14:24 +11:00
David Cook
633cdaca56 Remove unused method
I believe it's unused since e4d307fe5e
2025-03-06 09:49:50 +11:00
David Cook
af4129a33c Merge pull request #13184 from openfoodfoundation/dependabot/npm_and_yarn/hotwired/turbo-8.0.13
chore(deps): bump @hotwired/turbo from 8.0.12 to 8.0.13
2025-03-06 09:19:45 +11:00
dependabot[bot]
18ee09ea92 chore(deps-dev): bump pretty-quick from 4.0.0 to 4.1.1
Bumps [pretty-quick](https://github.com/prettier/pretty-quick) from 4.0.0 to 4.1.1.
- [Release notes](https://github.com/prettier/pretty-quick/releases)
- [Changelog](https://github.com/prettier/pretty-quick/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/pretty-quick/compare/v4.0.0...v4.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 09:24:32 +00:00
Ahmed Ejaz
b61c9500f9 13019: fix redirect issue 2025-03-05 01:35:46 +05:00
Konrad
de784209bb Merge pull request #13187 from chahmedejaz/task/13127-add-shipment-state-to-oc-customer-totals-report
Add shipment state to OC customer totals report
2025-03-04 20:25:44 +01:00
Maikel Linke
4c086e3d40 Update images in DFC product import on URL change 2025-03-04 20:02:03 +01:00
Konrad
6d67a913d9 Merge pull request #13147 from dacook/cleanup
Speed up super admin dashboard
2025-03-04 18:09:20 +01:00
Konrad
fcc9e3dc8b Merge pull request #13171 from cyrillefr/EnterpriseFeesPageTrueInsteadOfBlankOption
Remove true as select default first option
2025-03-04 18:07:24 +01:00
David Cook
155641218a Merge pull request #13183 from mkllnk/rake-reset
Add task to reset database with sample data
2025-03-04 10:57:12 +11:00
Ahmed Ejaz
434434f451 13127 - add shipment state in the oc customer total report 2025-03-04 04:09:04 +05:00
David Cook
de6e61f4b5 Cleanup a few more unused translation keys 2025-03-03 14:46:24 +01:00
David Cook
94c331cbdd Ignore certain keys
That brings the count down to 'only' 1057.

There's probably a lot of other keys that are dynamically generated, I did *not* review them all.
We could consider saving the output of this command to a todo file.
2025-03-03 14:46:24 +01:00
David Cook
d8488395ee Add i18n-tasks gem
And check fo unused translations:

  bundle exec i18n-tasks unused -l en -f key-values | wc -l
  1277

Wow, really??
2025-03-03 14:46:24 +01:00
David Cook
b623665b66 Remove unused spree_admin_enterprises translations
I searched the codebase for these keys, but couldn't find them
The next ones look unused too.
I thought we had a plugin to help with that..
2025-03-03 14:46:24 +01:00
David Cook
9adf3a22af Show only first 25 enterprises
I thought about reducing it further, but maybe people are used to having a large list. Let's see how this performs
2025-03-03 14:46:24 +01:00
David Cook
b9aada47e0 Remove superfluous %div from haml ID elements
Div is the default element in HAML, so we don't need to specify it.
2025-03-03 14:46:24 +01:00
David Cook
5a1190cdda Remove superfluous %div from haml elements with class
Div is the default element in HAML, so we don't need to specify it. https://haml.info/docs/yardoc/file.REFERENCE.html#implicit-div-elements
2025-03-03 14:46:24 +01:00
cyrillefr
446b948889 Fixes some rubocop linting offenses - part II 2025-03-03 14:03:47 +01:00
dependabot[bot]
5205b64d16 chore(deps): bump @hotwired/turbo from 8.0.12 to 8.0.13
Bumps [@hotwired/turbo](https://github.com/hotwired/turbo) from 8.0.12 to 8.0.13.
- [Release notes](https://github.com/hotwired/turbo/releases)
- [Commits](https://github.com/hotwired/turbo/commits/8.0.13)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 09:52:14 +00:00
Maikel Linke
2e3c32f9d3 Add task to reset database with sample data 2025-03-03 13:14:51 +11:00
Maikel Linke
f9322ac71b Style: simplify controller method 2025-03-03 12:23:58 +11:00
Maikel Linke
7f8581fd9f DRY controller methods which became too long 2025-03-03 12:23:58 +11:00
Maikel Linke
9d5ce0ede5 Remove surrounding whitespace from pasted DFC URL 2025-03-03 12:23:58 +11:00
Maikel Linke
b6153fc155 Rescue from invalid DFC catalog URLs
This mistake should be dealt with differently but I wanted to make sure
that a really invalid URL is handled well, too.
2025-03-03 12:23:58 +11:00
Maikel
5bef8b7dde Merge pull request #13178 from cyrillefr/FixRubocopLintIssuesI
Fixes some rubocop linting offenses
2025-02-28 10:40:56 +11:00
filipefurtad0
ce7d4dca40 Update all locales with the latest Transifex translations 2025-02-27 16:59:48 -06:00
Filipe
feccef0b36 Merge pull request #13157 from drummer83/email_styled_password
Create styled email for reset password instructions
2025-02-27 16:53:04 -06:00
Filipe
cf3213cf96 Merge pull request #13168 from dacook/dfc-product-import-select-all-12301
[DFC Orders] Select/deselect all on DFC Product Import
2025-02-27 16:43:37 -06:00
Filipe
9a0bcac3c2 Merge pull request #13156 from drummer83/orders_input_align
Align inputs on orders list and adjust position of checkboxes for reports
2025-02-27 16:04:16 -06:00
cyrillefr
027d4ccbad Fixes some rubocop linting offenses - part I
- Lint/RedundantSafeNavigation
- Lint/SelfAssignment
- Lint/UselessMethodDefinition
2025-02-27 16:28:00 +01:00
David Cook
5a1d6b749e Fix spec
The label got changed in a separate PR that was merged around the same time.
It's my fault for changing the label.
2025-02-26 15:57:12 +11:00
Maikel Linke
6a0144f171 Update all locales with the latest Transifex translations 2025-02-24 15:50:39 +11:00
Maikel
ff8fe58268 Merge pull request #13151 from mkllnk/dfc-stock-limit
Fix reset stock when importing DFC products
2025-02-24 15:47:12 +11:00
Maikel
462886447a Merge pull request #13126 from mkllnk/oidc-error
Direct people to refresh OIDC connection when needed
2025-02-24 15:45:48 +11:00
Filipe
bd893eb3d5 Merge pull request #13139 from drummer83/reply-to-email-address
Add a 'reply to' email address where it makes sense and has been missing
2025-02-21 13:09:42 -06:00
cyrillefr
96d6718e6d Remove true as select default first option 2025-02-21 14:20:59 +01:00
Konrad
7cd3c32787 Merge pull request #13164 from rioug/fix-user-controlled-method-execution
Fix user controlled method execution
2025-02-21 12:59:40 +01:00
Filipe
9baed8536c Merge pull request #13121 from rioug/13054-out-of-stock-autoremove
Autoremove/update item from the cart if stock changed during checkout
2025-02-20 22:35:40 -06:00
Filipe
f715c366ea Merge pull request #13160 from chahmedejaz/task/13097-add-columns-in-packing-reports
Add shipping method and shipment state to packing reports
2025-02-20 19:49:03 -06:00
Filipe
f7b471da08 Merge pull request #13148 from mkllnk/dfc-variants
Add DFC product groups with variants
2025-02-20 18:53:00 -06:00
Konrad
48688311d1 Merge pull request #13165 from chahmedejaz/bugfix/unable-to-view-images-in-dev-env
Fix base urls for assets in development
2025-02-20 07:56:09 +01:00
David Cook
7444ddccd1 Wait, There's A Lifecycle Callback For That 2025-02-20 12:52:27 +11:00
David Cook
7acc78b6d8 Revert "Delegate events to the parent element"
This reverts commit e31c16df43.
2025-02-20 12:49:25 +11:00
David Cook
e31c16df43 Delegate events to the parent element
Ok so I wasn't as smart as I thought I was. The stimulus controller knows when its element is added/removed from the DOM (and calls connect/disconnect appropriately). But if any child elements are added, they don't automatically have my new event handlers.

So I borrowed jQuery's event delegation concept, and listen for any events that 'bubble' up to the controller element, and delegate them as needed.

Alternatively, maybe I could have used a Mutation Observer, but I think it's best to avoid where possible.

Or of course, we could just revert my change and keep the 'data-action's in the HTML. I'm curious to hear opinions on this.."
2025-02-20 12:46:27 +11:00
David Cook
4cb1b0a48e Add total count of selected items
I noticed there's a controller for that too, so might as well make use of it. The orders page has it at the top, because that's where the bulk action menu is. But on this page, the action is the import button so I put it there.
2025-02-20 12:15:53 +11:00
David Cook
6e7766a2c2 Increase font size 2025-02-20 12:15:53 +11:00
David Cook
57fb855147 Ensure label reaches to edge of table cell
Best viewed with whitespace ignored
2025-02-20 12:15:49 +11:00
David Cook
b370b207b5 Automatically bind toggleCheckbox action 2025-02-20 12:14:49 +11:00
David Cook
b92c046119 Automatically bind toggleAll action
We are already specifying the element's role ('all') in the HTML. Its behaviour should be predefined; there's no need to also specify in the HTML.

The eventhandler doesn't need to be cleand up on disconnect, because they are removed along with the DOM object.
2025-02-20 11:24:21 +11:00
David Cook
c2e54104d0 Add select/deselect all checkbox
There's A Controller For That.
(But I think it makes the HTML ugly..)
2025-02-20 10:56:53 +11:00
Gaetan Craig-Riou
8116ad986e Delete fees when fee are removed from the Order Cycle
This is to be consistent with the current behavior
2025-02-19 15:34:39 +11:00
Gaetan Craig-Riou
67ad532908 Handle scenario where the enterprise fee has been deleted 2025-02-19 15:34:32 +11:00
Gaetan Craig-Riou
12a54dd8f0 Move #recreate_all_fees! spec to HandleFeesService
Spree::Order just delegate Orders::HandleFeesService so there is no
point testing fees in the order spec
2025-02-19 15:13:35 +11:00
Gaetan Craig-Riou
46315c4045 Update Orders::HandleFeesService#recreate_all_fees!
We now update or create line item fees instead of deleting them and
recreating them. This is to cover the case when a product has been
removed from an Order Cycle but we want to keep the fee already applied
on existing order. This was an issue only if the existing order got
updated after the product was removed.
2025-02-19 15:13:26 +11:00
Gaetan Craig-Riou
2fc393037a Add order_cycle_per_item_enterprise_fee_applicators_for
It retrieves all the per item fees associated with an order cycle and
create the appropriate Fee Applicator.
2025-02-19 15:11:24 +11:00
Gaetan Craig-Riou
c6fab57827 Remove Module from spec and some stylying
Also remove unnecessary use of `__send__`
2025-02-19 15:11:24 +11:00
David Cook
859a20b7a7 Ensure both email formats contain url 2025-02-19 14:20:28 +11:00
Maikel Linke
691e988fbb Fix Roadie dev config to inline CSS in emails
Roadie doesn't work with asset host:

* https://github.com/Mange/roadie-rails?tab=readme-ov-file#known-issues

And we don't need it.
2025-02-19 13:29:34 +11:00
Ahmed Ejaz
216348d361 fix base urls for assets in development 2025-02-19 05:09:19 +05:00
David Cook
96b8a4c068 Merge pull request #13134 from dacook/fix-locale-12301
Update label and change default dev locale
2025-02-19 09:38:14 +11:00
Ahmed Ejaz
d0650fdab0 Fix ABC size rubocop issue 2025-02-19 02:20:33 +05:00
Konrad
29c3ef3f5e Merge pull request #13154 from mkllnk/flaky-line-items
Fix order of line item based report rows
2025-02-18 15:28:02 +01:00
Ahmed Ejaz
1611b2a31f Add shipping method and shipment state to packing reports 2025-02-18 12:42:34 +05:00
Maikel Linke
699db02098 Remove enterprise id from DFC product group URL
A Spree::Product represented as product group is not directly associated
to an enterprise. In theory, it could have multiple enterprises through
its variants. So we better don't include the id in the URL.

```
-http://test.host/api/dfc/enterprises/10000/product_groups/90000
+http://test.host/api/dfc/product_groups/90000
```

This makes it simpler as well.
2025-02-18 16:19:27 +11:00
David Cook
664119ddcf Update test for multi-part email
Now that it's a multi-part email, we have to select the html part for the test.
Another option is to simply check mail.to_s, but this also includes mail headers so doesn't specifically test the body.
2025-02-18 16:15:04 +11:00
David Cook
c9f5dd2d0b Refactor: rename subject to be consistent
Hmm, in different specs it gets called 'mail', 'email', 'message'. The object is a Mail::Message object. The method to generate the object is called `mail`, so I went with that.
2025-02-18 16:07:22 +11:00
Gaetan Craig-Riou
0ae855047d Fix User controlled method execution
Add white list for the fire endpoint to limit which action can be taken.
Add specs for fire endpoint
2025-02-18 14:42:26 +11:00
Gaetan Craig-Riou
e386640b57 Add missing translation 2025-02-18 14:41:43 +11:00
Maikel Linke
5d495b94b3 Use product group attributes for Spree::Product updates 2025-02-18 13:08:49 +11:00
Maikel Linke
11a1d4e09e Reduce complexity of controller 2025-02-18 13:08:49 +11:00
Maikel Linke
3d435ae781 Include product group objects in our catalog response
And when we import a catalog, we don't try to import those product
groups as Spree::Variant. We just see them as reference to
Spree::Product.
2025-02-18 13:08:49 +11:00
Maikel Linke
fba7c24ebd Product group can be present or just linked 2025-02-18 13:08:49 +11:00
Maikel Linke
516759062f Import variants for the same product group
When importing another catalog, it's probably referring to external
product groups. Storing the external link allows us to group several
variants and replicate the same structure within OFN.
2025-02-18 13:08:48 +11:00
Maikel Linke
c1e0c6ed34 Import variants for existing products via new DFC attribute 2025-02-18 13:08:48 +11:00
Maikel Linke
fbdc6c9bd0 Split growing supplied product builder 2025-02-18 13:08:46 +11:00
Maikel Linke
2043d1f8df Remove custom syntactical sugar
It just makes Rswag specs look more different to other request specs and
I found that discouraging. It's good to know that the parameter is just
specified with `let` and that it works exactly in the same way as `let`
in other specs.

The downside is maybe that it's not obvious that those `let` statements
have to correspond with the parameters for the request but error
messages will tell you if you got it wrong. And there's also the
`parameter` declaration to make that clear.
2025-02-18 12:58:10 +11:00
Maikel Linke
6707516203 Automatically document responses for DFC API w/o tag 2025-02-18 12:58:10 +11:00
Maikel Linke
42b6ecbf31 Move rswag specifc config to rswag helper 2025-02-18 12:58:09 +11:00
Maikel Linke
d39da6d0da Provide endpoint to show a product group
Our Spree::Product corresponds to a DFC SuppliedProduct with variants.
2025-02-18 12:58:09 +11:00
Maikel Linke
35d7bf7a3b Add dfc-b:isVariantOf to supplied products 2025-02-18 12:58:09 +11:00
Maikel Linke
61b54e922a Remove impossible error rescue
This block got duplicated in a previous PR.
2025-02-18 12:20:01 +11:00
Maikel Linke
4027ce0c05 Style links within flash errors
The default aqua link colour looked aweful on orange/red background. I
tried a few different standard colours but couldn't get it right. So I
reverted to the web standard link style: underline. That's looks pretty
good. I personally think that we should use the more for links.
2025-02-18 12:15:17 +11:00
Maikel Linke
ffe4084b7f Link to OIDC settings from error message
The colour of the link is really bad though.
2025-02-18 12:15:13 +11:00
Maikel Linke
bb503e12a3 Direct people to refresh OIDC connection
Not the best UX but the easiest next step to implement. Next we should:

* Include link in error message instead of redirecting straight there.
  Otherwise users may feel disoriented.
* Provide a custom error message?
2025-02-18 12:14:12 +11:00
Maikel Linke
00a2894e93 Clear invalid OIDC tokens 2025-02-18 11:48:17 +11:00
Gaetan Craig-Riou
29032a913c Merge pull request #13162 from mkllnk/script-rails
Delete old, unused script/rails
2025-02-18 11:01:43 +11:00
Gaetan Craig-Riou
db0547543e Use the new OutOfStockModalComponent
It will now redirect to the shop page if the out of stock check results
in an empty order
2025-02-18 10:47:10 +11:00
Gaetan Craig-Riou
4a2f22e56d Add OutOfStockModalComponent
It encapsulate the logic for the out of stock modal
2025-02-18 10:47:03 +11:00
David Cook
11ee6a3ef5 Merge pull request #13158 from drummer83/test_email
Quick beautification of test email
2025-02-17 17:07:20 +11:00
Gaetan Craig-Riou
9d59f87b30 Dispatch "closing" event when closing modal
This allow for any other controller to trigger an action when the modal
is closed
2025-02-17 16:50:49 +11:00
Gaetan Craig-Riou
4a63efd342 Remove redundant || 2025-02-17 16:50:18 +11:00
Maikel Linke
ef98e4e384 Delete old, unused script 2025-02-17 12:25:59 +11:00
Gaetan Craig-Riou
4b33951fa0 Merge pull request #13155 from openfoodfoundation/dependabot/npm_and_yarn/dompurify-3.2.4
chore(deps): bump dompurify from 3.2.3 to 3.2.4
2025-02-17 12:02:37 +11:00
Gaetan Craig-Riou
a8b375f3de Merge pull request #13152 from openfoodfoundation/dependabot/npm_and_yarn/elliptic-6.6.1
chore(deps): bump elliptic from 6.6.0 to 6.6.1
2025-02-17 11:58:24 +11:00
David Cook
3a57623b5d Merge pull request #13146 from mkllnk/dfc-connector
Bump datafoodconsortium-connector to support product variants
2025-02-17 11:13:57 +11:00
drummer83
e98fa485b5 Quick beautification of test email 2025-02-16 19:50:18 +01:00
drummer83
4dc0f0e5be Create styled email for reset password instructions 2025-02-16 19:12:56 +01:00
drummer83
94f58d2f5e Adjust margin-top for checkboxes on the report pages
Apply it only to the checkboxes on the report pages, not to one on the orders page.
2025-02-16 17:42:43 +01:00
drummer83
5651687a25 Align input fields correctly on orders page
The margin-top is not needed here. It will be added where needed in a separate commit.
2025-02-16 17:35:58 +01:00
dependabot[bot]
5fd826a954 chore(deps): bump dompurify from 3.2.3 to 3.2.4
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.2.3 to 3.2.4.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.2.3...3.2.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-14 21:15:09 +00:00
Maikel Linke
1e34237b22 Fix order of line item based report rows
The orders_and_fulfillment_spec would sometimes fail when the database
would return line items in a different order than they were created.
Without specific `order` clause the order of rows can be random.

The additional sorting may lead to more server load but also ensures
more consistent results for users.
2025-02-14 16:41:43 +11:00
filipefurtad0
bf62d16ca5 Update all locales with the latest Transifex translations 2025-02-13 22:43:05 -06:00
Filipe
e7ef5984d5 Merge pull request #13125 from dacook/dfc-product-import-list-12301
[DFC Orders] List products to import on screen
2025-02-13 22:34:32 -06:00
Filipe
00dd555715 Merge pull request #13131 from krisztin/12846-Back-office-form-border-update-for-contrast
Updating form field borders for better contrast
2025-02-13 22:21:39 -06:00
Filipe
dfe978520d Merge pull request #13115 from dacook/oidc-record-not-unique
Catch error and provide message
2025-02-13 21:53:56 -06:00
Filipe
9f7405500a Merge pull request #12621 from cyrillefr/KeepStockSelectionWhenErrorOnSaving
Keep stock selection when error on saving
2025-02-13 21:20:48 -06:00
dependabot[bot]
b13cdb5e46 chore(deps): bump elliptic from 6.6.0 to 6.6.1
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.6.0 to 6.6.1.
- [Commits](https://github.com/indutny/elliptic/compare/v6.6.0...v6.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-14 02:08:55 +00:00
Maikel
7b8cd19125 Merge pull request #13150 from openfoodfoundation/dependabot/npm_and_yarn/tom-select-2.4.3
chore(deps): bump tom-select from 2.4.2 to 2.4.3
2025-02-14 13:07:38 +11:00
Maikel
ca256f055e Merge pull request #13142 from filipefurtad0/add_tests_to_#13037
Adds coverage on supplier option to charge tax
2025-02-14 12:43:15 +11:00
Maikel Linke
db874b18a4 Fix reset stock when importing DFC products 2025-02-14 10:27:09 +11:00
dependabot[bot]
9e20cf80b2 chore(deps): bump tom-select from 2.4.2 to 2.4.3
Bumps [tom-select](https://github.com/orchidjs/tom-select) from 2.4.2 to 2.4.3.
- [Release notes](https://github.com/orchidjs/tom-select/releases)
- [Commits](https://github.com/orchidjs/tom-select/compare/v2.4.2...v2.4.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-13 09:13:47 +00:00
filipefurtad0
77b857a30d Adds test case when the hub is owner of the fee 2025-02-12 21:22:19 -06:00
filipefurtad0
48f5df349a Adds test case on included tax 2025-02-12 21:22:19 -06:00
filipefurtad0
85ec771e27 Adds coverage on supplier option to charge tax 2025-02-12 21:22:19 -06:00
Maikel Linke
9ac56ab02b Remove outdated spec
A while ago I was told that an absent stock limitation means unlimited
stock. But that can't be distinguished from just not wanting to update
the stock level.

In the meantime, a new stock policy model was proposed. But for now we
have a workaround, setting `-1` as value for unlimited stock.

* https://github.com/datafoodconsortium/ontology/discussions/112
2025-02-13 11:22:04 +11:00
Maikel Linke
a1a78f22fb Remove loading of old DFC context 2025-02-13 10:50:41 +11:00
Maikel Linke
b22c0a3d2d Bump datafoodconsortium-connector from 1.0.0.pre.alpha.13 to 1.1.0 2025-02-13 10:50:28 +11:00
David Cook
13f5009563 Refactor
Co-authored-by: Maikel <maikel@email.org.au>
2025-02-13 09:34:19 +11:00
cyrillefr
2bc5ed49e6 Changes in spec
Due to the splitting of products_v3_spec in 4 parts.
2025-02-12 16:01:21 +01:00
cyrillefr
0aecb6873a Requested changes
- 2 new methods for reading either current/desired on hand/on demand
  depending on variant state. Goal is to get rid of send method in View
- referring in on_hand/on_demand is in fact irrelevant. In the piece of
  code, only desired on_hand/on_demand can be called as we are only in
  new variant (non persisted) mode
- View does not use send method anymore, replaced by current_or_desired
- refactor of the spec -> 2 examples in one to get more speed.
2025-02-12 16:01:21 +01:00
cyrillefr
1d3906d431 Fixes linter error 2025-02-12 16:01:21 +01:00
cyrillefr
6d6164c8f6 Keep stock selection when error on saving
- added 2 not to be persisted attributes aimed at dealing with the UI
- added them to the permitted list
- updated view to switch mode about on_hand/on_demand
  that is: from an already persisted variant or not
    - Not persisted deals with on_*_desired not to be persisted fields
    - Persisted mode deals with regular on_* fields
- the corresponding spec for both on_hand/on_demand
2025-02-12 16:01:21 +01:00
David Cook
f6f1a005cb Add spec
Oh, and a transaction block. Because the controller after hooks tried to update the DB which resulted in
  PG::InFailedSqlTransaction: ERROR:  current transaction is aborted, commands ignored until end of transaction block

Even for a small rescue statement, it's worth adding a spec. You never know what might not be working!
2025-02-12 16:10:36 +11:00
Maikel
020ccedabe Merge pull request #13141 from mkllnk/dfc-error-logging
Report DFC server errors to Bugsnag
2025-02-12 15:43:46 +11:00
Maikel Linke
d9cb1e8e74 Improve var naming, thanks Gaetan 2025-02-12 15:33:33 +11:00
David Cook
9b935be4d6 Catch error and provide message 2025-02-12 15:29:49 +11:00
David Cook
2d577e9e46 Merge pull request #13136 from mkllnk/flaky-oc-spec
Hopefully fix flaky OC spec
2025-02-12 14:29:43 +11:00
David Cook
f35ba03cab Merge pull request #13135 from mkllnk/flaky-payment-method-spec
Fix flaky payment method spec
2025-02-12 14:27:40 +11:00
David Cook
363cc10755 Update comment
[skip ci]
2025-02-12 14:08:51 +11:00
krisztin
f1ae375697 Add new border scss variable to old admin variables
Tags' rules are still coming from the old admin styles hence had to add
the new (admin_v3) border variable to the old one.
Has a hard coded colour value of #2e3132 as it has no access
to the new colours.
2025-02-11 20:48:54 +00:00
Maikel Linke
079d09b8b8 Report simple values easily 2025-02-11 15:36:07 +11:00
Maikel Linke
fa7edbb073 Alert ensures to pass metadata correctly 2025-02-11 15:27:58 +11:00
Maikel Linke
b23eac1004 Omit setting Bugsnag release stage to default value 2025-02-11 14:59:01 +11:00
Maikel Linke
c90472ebf9 Update Bugsnag config naming 2025-02-11 14:57:46 +11:00
Maikel Linke
cc6a3f4e5b Use Bugsnag key with valid format in specs
That's why Bugsnag wasn't active in CI.
2025-02-11 14:55:40 +11:00
Maikel Linke
b50e711757 Add deployed version to Bugsnag 2025-02-11 13:32:51 +11:00
Maikel Linke
710e1654d0 Report DFC server errors to Bugsnag 2025-02-11 13:01:05 +11:00
Maikel Linke
9d30f007a9 Format spec file 2025-02-11 12:36:00 +11:00
Gaetan Craig-Riou
fec1021848 Merge pull request #13138 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.6.0
chore(deps-dev): bump jasmine-core from 5.5.0 to 5.6.0
2025-02-11 09:53:48 +11:00
Gaetan Craig-Riou
ad87d58b4f Merge pull request #13137 from openfoodfoundation/dependabot/npm_and_yarn/leaflet-geosearch-4.2.0
chore(deps): bump leaflet-geosearch from 4.1.0 to 4.2.0
2025-02-11 09:51:54 +11:00
drummer83
40fbdc596a Add a 'reply to' email address where it makes sense and has been missing until now
This includes the following emails:

Manager invitation email: reply to inviting enterprise

Authorize payment email: reply to distributor

Order cancellation email: reply to distributor

Shipment notification email: reply to distributor
2025-02-10 21:51:04 +01:00
dependabot[bot]
b9a0556154 chore(deps-dev): bump jasmine-core from 5.5.0 to 5.6.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.5.0 to 5.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/v5.5.0...v5.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>
2025-02-10 09:18:15 +00:00
dependabot[bot]
623a75a025 chore(deps): bump leaflet-geosearch from 4.1.0 to 4.2.0
Bumps [leaflet-geosearch](https://github.com/smeijer/leaflet-geosearch) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/smeijer/leaflet-geosearch/releases)
- [Commits](https://github.com/smeijer/leaflet-geosearch/compare/v4.1.0...v4.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 09:18:05 +00:00
Maikel Linke
5e1690f736 Restore missed expectation
A previous pull request re-wrote this spec but omitted the main
expectation of this spec block.

* https://github.com/openfoodfoundation/openfoodnetwork/pull/11852/files
2025-02-10 16:49:11 +11:00
Maikel Linke
1e1754db4b Hopefully fix flaky OC spec
I couldn't reproduce this reliably but I found the loading of AngularJS
components a bit slow sometimes. So this is just a guess.
2025-02-10 16:45:33 +11:00
Gaetan Craig-Riou
e87477b679 Refactor EnterpriseFee.clear_all_adjustments
Renamed to clear_order_adjustments, it doesn't clear line item
adjustment
2025-02-10 16:28:19 +11:00
Maikel Linke
ecd873be59 Fix flaky payment method spec
This didn't come up on CI because CI is probably waiting long enough for
the flash to disappear. But locally it failed every time for me.
2025-02-10 16:12:37 +11:00
Gaetan Craig-Riou
0f1b81cc3e Refactor spec 2025-02-10 16:10:13 +11:00
Maikel
90f0c4badf Merge pull request #13122 from mkllnk/rubocop-binary
Add option to define your own rubocop command
2025-02-10 15:33:31 +11:00
Gaetan Craig-Riou
ce47f9e700 Fix typo in translation code 2025-02-10 14:58:53 +11:00
Gaetan Craig-Riou
db3534e621 Per review, fix memoization 2025-02-10 14:47:37 +11:00
Gaetan Craig-Riou
bf72a89853 Clean up left over comment 2025-02-10 14:25:50 +11:00
David Cook
314c58b878 Rename en_TEST to en_TST
Because it doesn't fit in db field spree_users.local with limit: 6.
We could extend the field but it seemed silly because it's only used in test/dev environments.
2025-02-10 14:11:09 +11:00
David Cook
bbc7f21ecd Rename field label
This could have been done in Transifex, but I figured it would be quicker to just go ahead and update here.
2025-02-10 14:11:03 +11:00
David Cook
e7054f7f13 Use test locale instead of real one in development
en_AU contains translations for most keys, and is subject to change. So if you change the value of an existing key in en.yml, you won't see the change in your dev environment.

Maybe it's confusing because it's not called 'development', but I think the comment above explains well enough.
2025-02-10 14:04:20 +11:00
David Cook
71782de83a Apply suggestion from code review
Co-authored-by: Maikel <maikel@email.org.au>
2025-02-10 10:35:59 +11:00
David Cook
4624d49e5e Add translations 2025-02-10 10:33:09 +11:00
filipefurtad0
ed6292aae8 Update all locales with the latest Transifex translations 2025-02-07 15:44:00 -06:00
Filipe
da5856686d Merge pull request #13112 from Yassir4/12620-fix-rubocop-rails-response-parse-body
fix rubocop Rails/ResponseParseBody
2025-02-07 15:44:29 -06:00
Filipe
2d6e627944 Merge pull request #13124 from Yassir4/10685-fix-product-description-truncation
Fix product description truncation
2025-02-07 15:24:23 -06:00
Filipe
d09efec1ec Merge pull request #13037 from chahmedejaz/task/13013-add-columns-supplier-report
Add columns to "pay your supplier" report
2025-02-07 10:04:52 -06:00
krisztin
49bf5997b7 Update all borders for inputs
Inputs include custom made ones such as tags, select2s and tom selects.
Some border radii were using mixins but not utilising it, hence they
are now variables.
2025-02-07 14:29:27 +00:00
krisztin
4bd925e3ec Add and update new input border variables
1. Border colour did not have sufficient contrast. New contrast ratio
passes WCAG AA for Graphical Objects and user interface components.

2. New border variable to aid consistency and future maintanance.
2025-02-07 14:21:31 +00:00
David Cook
9f7000009d Only import selected products 2025-02-06 17:10:01 +11:00
David Cook
447ff3cffd Show list of products to import
If there's a matching product in OFN already, a link will appear.
2025-02-06 16:28:15 +11:00
David Cook
c3b23a9fba Move import to new action
Making way for a review step.
2025-02-06 13:50:26 +11:00
David Cook
8acefed857 Swap input positions
Makes it clearer where things are going from, and to. I will re-use this order on the next screen.
2025-02-06 13:50:26 +11:00
Hartani Yassir
2753f5694a Fix product description truncation 2025-02-05 11:55:47 +01:00
Gaetan Craig-Riou
07c6548491 Merge pull request #13120 from dacook/update-caniuse-lite
Update caniuse-lite
2025-02-05 16:24:17 +11:00
David Cook
16b8f38d88 Merge pull request #13082 from pacodelaluna/lighten-docker-compose-setup
Lighten Docker Compose setup
2025-02-05 09:28:57 +11:00
François Turbelin
0fdf789249 Clean remaining config for Docker system specs 2025-02-04 22:59:31 +01:00
François Turbelin
5ad388911b Update README for Docker with new default Dockerfile 2025-02-04 22:59:31 +01:00
François Turbelin
db8a193234 Put back Dockerfile for Ubuntu 2025-02-04 22:59:17 +01:00
Maikel Linke
8bfbb74bf3 Pass any option to rubocop 2025-02-04 16:13:24 +11:00
Maikel Linke
b9bff1598d Add option to define your own rubocop command
In development, you may choose to use this script in your Git pre-commit hook.
Then you want the fastest possible execution to not be delayed in your
Git operations. While the default is the safest option, you can now
define your own optimised command to avoid loading the whole Rails app
environment.
2025-02-04 15:59:58 +11:00
Maikel
0eb9dcc8f6 Merge pull request #13109 from mkllnk/product-type-lookup
DFC import: Find broader taxon if we don't have a specific one
2025-02-04 15:56:13 +11:00
Maikel Linke
757a1548e6 Fix whitespace 2025-02-04 15:52:28 +11:00
Gaetan Craig-Riou
8db2445203 Add comment to make sure both out of stock modal get updated.
There is no easy way to share template between AngularJS and Rails. The
modal in `edit.html.haml` is a copy of app/assets/javascripts/templates/out_of_stock.html.haml,
so we need to update both if either of them is updated.
2025-02-04 15:42:05 +11:00
Gaetan Craig-Riou
0315fc9690 Remove spec namespacing, left over from spree 2025-02-04 15:42:05 +11:00
Gaetan Craig-Riou
90eecc783d Fix stripe controller 2025-02-04 15:42:05 +11:00
Gaetan Craig-Riou
851cccb823 Fix paypal controller 2025-02-04 15:42:05 +11:00
Gaetan Craig-Riou
c311b8ac32 Code styling 2025-02-04 15:42:05 +11:00
Gaetan Craig-Riou
69abdca3ef Fix insufficient stock modal styling 2025-02-04 15:42:05 +11:00
Gaetan Craig-Riou
08ad2af91a Make sure Orders::CheckStockService is only instanciated once 2025-02-04 15:42:05 +11:00
Gaetan Craig-Riou
cdcab7c7c6 Update insufficient stock logic
We now check for insufficient stock when loading the checkout details
or before updating the order.
2025-02-04 15:39:47 +11:00
Gaetan Craig-Riou
e548e74ebe Update out stock modal
It replicates the modal used by the cart :
app/assets/javascripts/templates/out_of_stock.html.haml
2025-02-04 15:39:47 +11:00
Gaetan Craig-Riou
7d62a7f5dd Add CheckStockService#update_line_items
Update line item if any related variant has run out of stock or has had
stock reduced
2025-02-04 15:39:47 +11:00
Gaetan Craig-Riou
c73c2dd8a8 Add basic out of stock modal 2025-02-04 15:39:47 +11:00
Gaetan Craig-Riou
a7cde069c6 Add Orders::CheckStockService and spec
Move sufficient_stock? to Orders::CheckStockService
2025-02-04 15:39:40 +11:00
David Cook
8019ad7c1c Update caniuse-lite
As per the notice from webpacker:

Browserslist: caniuse-lite is outdated. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
2025-02-04 11:23:17 +11:00
Hartani Yassir
69f3f9f62d use format.json in UserRegistrationController#create 2025-02-03 19:02:48 +01:00
Ahmed Ejaz
5dddf8b69a fix specs 2025-01-31 17:34:34 +05:00
Ahmed Ejaz
d86965bc14 add total tax on product summary 2025-01-31 17:34:34 +05:00
Ahmed Ejaz
393154bae3 13013: fix specs 2025-01-31 17:34:34 +05:00
Ahmed Ejaz
e8b185256e 13013: add specs 2025-01-31 17:34:34 +05:00
Ahmed Ejaz
71b2b7f97f 13013: add tax on product column 2025-01-31 17:34:34 +05:00
Ahmed Ejaz
6a613a2203 13013: add producer charges gst column 2025-01-31 17:34:33 +05:00
Hartani Yassir
ace735b230 Merge branch 'master' into 12620-fix-rubocop-rails-response-parse-body 2025-01-31 11:23:15 +01:00
Hartani Yassir
bd41426aef fix rubocop Rails/ResponseParseBody 2025-01-31 10:47:03 +01:00
filipefurtad0
c08f925ff8 Update all locales with the latest Transifex translations 2025-01-30 22:03:47 -06:00
Filipe
54fad01a91 Merge pull request #13104 from mkllnk/test-seeds
Remove unused preference default_country_id
2025-01-30 21:59:46 -06:00
Filipe
32c4b4557b Merge pull request #13086 from rioug/fix-tax-rate-refund
Remove tax rate refund code path
2025-01-30 21:54:30 -06:00
Filipe
e2161660b3 Merge pull request #13090 from mkllnk/replace-spree-roles
Replace spree roles
2025-01-30 21:30:56 -06:00
Maikel
139dba6637 Merge pull request #13108 from dacook/reduce-rack-timeout-logs
Log rack-timeout ready and completed messages in DEBUG mode
2025-01-31 10:49:41 +11:00
Maikel Linke
c9f319aa96 Find broader taxon if we don't have a specific one
For example, when importing `beef` products associate the type `meat-product`
instead because we don't have a specific beef category.
2025-01-30 11:10:47 +11:00
David Cook
a0833af780 Log rack-timeout ready and completed messages in DEBUG mode
Instead of default INFO, because it pollutes the logs unnecessarily.

Error messages will still be logged the same as before.
2025-01-30 10:20:58 +11:00
Maikel Linke
26d09acafe Move taxon discovery to own class for additions 2025-01-30 10:17:20 +11:00
Maikel Linke
1fcefcfcd0 Remove now useless wrapper class 2025-01-30 10:11:03 +11:00
Maikel Linke
236e706f2c Replace custom product type discovery with DFC lookup
We didn't actually need the extra class.
2025-01-30 10:08:32 +11:00
Maikel
0797614769 Merge pull request #13106 from openfoodfoundation/dependabot/npm_and_yarn/tom-select-2.4.2
chore(deps): bump tom-select from 2.4.1 to 2.4.2
2025-01-30 08:51:23 +11:00
dependabot[bot]
c84881252c chore(deps): bump tom-select from 2.4.1 to 2.4.2
Bumps [tom-select](https://github.com/orchidjs/tom-select) from 2.4.1 to 2.4.2.
- [Release notes](https://github.com/orchidjs/tom-select/releases)
- [Commits](https://github.com/orchidjs/tom-select/compare/v2.4.1...v2.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-29 09:19:24 +00:00
Gaetan Craig-Riou
1ee2f4d18e Merge pull request #13103 from mkllnk/gmaps-region-code
Simplify default country code lookup
2025-01-29 09:54:43 +11:00
Maikel Linke
6885184bcc Remove unused preference default_country_id 2025-01-28 16:31:45 +11:00
Maikel Linke
1a393592b4 Reduce database writes seeding zones 2025-01-28 15:47:32 +11:00
Maikel
f8e55f1eb3 Merge pull request #13098 from cillian/osm-marker-positioning
Specify OpenStreetMap marker size and tip position so they are positioned correctly at all zoom levels
2025-01-28 13:40:18 +11:00
Maikel Linke
e1f62148c9 Remove now unnecessary country seeding for assets 2025-01-28 13:26:42 +11:00
Maikel Linke
ea6efa9164 Simplify default country code lookup
The code was using the code from the environment variables to load a
reocrd from the database to then return the initial code again.

The only use of `DefaultCountry.code` is currently in the geocoder JS
compilation. Now it doesn't need the database anymore.
2025-01-28 13:22:26 +11:00
Maikel
4b6c3fe1d0 Merge pull request #13099 from rioug/compile-test-asset-path
Specify test assets output path
2025-01-28 10:58:41 +11:00
Gaetan Craig-Riou
3bf01602d9 Specify test assets output path
Test assets need to be compiled to a specific path for system test
to work. It was mistakenly remove here :
https://github.com/openfoodfoundation/openfoodnetwork/pull/13096/files#diff-46b7721b943217c3670f6818a10c2661ec1f9f72dfea66469fd9f026dc74c36a
2025-01-27 14:14:54 +11:00
Gaetan Craig-Riou
fa4785bc85 Merge pull request #13096 from mkllnk/assets
Compile assets on demand in test local environment
2025-01-27 13:00:10 +11:00
Gaetan Craig-Riou
6fb86dd4ac Merge pull request #13093 from mkllnk/dfc-token-error
Handle wrong OIDC tokens gracefully
2025-01-27 12:56:23 +11:00
Gaetan Craig-Riou
c4d74ac10d Apply Rubocop linting 2025-01-27 11:03:54 +11:00
Gaetan Craig-Riou
6ef73acfcd Fix seeding file for Spree::Zones 2025-01-27 11:03:48 +11:00
David Cook
ffad3f249b Update comment
See: https://github.com/openfoodfoundation/openfoodnetwork/blob/master/spec/system/admin/adjustments_spec.rb
2025-01-27 11:02:50 +11:00
Gaetan Craig-Riou
be78c2ac41 Fix system admin adjustment spec 2025-01-27 11:02:50 +11:00
Gaetan Craig-Riou
900b751559 Revert change from d58aa2b14f44fa15b67a18cf3457eccaaca5a56c
Turns out there seem to be a legitimate use for this code, see
spec/system/admin/adjustments_spec.rb ie, adding a manual discount to an
order using an adjustment.
2025-01-27 11:02:50 +11:00
Gaetan Craig-Riou
cd7e92c6ca Fix various spec 2025-01-27 11:02:41 +11:00
Gaetan Craig-Riou
6b7373e4cf Clean up spec syntax 2025-01-27 11:01:07 +11:00
Gaetan Craig-Riou
6e8eb443c1 Consolidate .adjust specs 2025-01-27 11:01:07 +11:00
Gaetan Craig-Riou
42df158669 Fix TaxRate#compute_amount
Remove the code path that can create a tax refund, it is unlikely to
happen with the configuration our instances are using. Instead return 0
do that no adjustment gets created
2025-01-27 11:01:07 +11:00
Gaetan Craig-Riou
5e42a9be55 Fix TaxRate spec to work with the zone changes 2025-01-27 11:01:07 +11:00
Gaetan Craig-Riou
d4a060c6a2 Fix Zone system spec 2025-01-27 11:01:07 +11:00
Gaetan Craig-Riou
f7998f6570 Fix zone new form to allow adding state or country 2025-01-27 11:01:07 +11:00
Gaetan Craig-Riou
a953e3dde3 Fix Spree::Zone spec and factory 2025-01-27 11:01:07 +11:00
Gaetan Craig-Riou
75c0752340 Sree::Zone, require at least one member
Add validations and specs
2025-01-27 11:01:07 +11:00
Gaetan Craig-Riou
bcb4525cdd Clean up spec, use describe instead of context
Although `describe` and `context` are functionally equivalent, they
don't convey the same message
2025-01-27 11:01:07 +11:00
François Turbelin
e5e6403995 Merge branch 'master' into lighten-docker-compose-setup 2025-01-26 22:16:38 +01:00
François Turbelin
a6666dd061 Use only new Dockerfile 2025-01-26 22:15:46 +01:00
François Turbelin
a1c95e1837 Use new Dockerfile in Docker Compose 2025-01-26 21:44:07 +01:00
François Turbelin
f8336edb07 Revert "Don't allow spaces in external billing id"
This reverts commit 39825a9ecb.
2025-01-25 21:05:37 +01:00
Cillian O'Ruanaidh
ff7c1e6d1f Specify OpenStreetMap marker size and tip position so they are positioned correctly at all zoom levels 2025-01-25 12:55:48 +00:00
Konrad
01036e6321 Merge pull request #13087 from mkllnk/stock-location
Remove class Spree::StockLocation
2025-01-25 12:41:37 +01:00
Maikel Linke
95625c16b2 Comment on seeds 2025-01-24 16:55:19 +11:00
Maikel Linke
690d137971 Combine rake tasks for efficiency 2025-01-24 16:54:56 +11:00
David Cook
09fe6d7542 Merge pull request #13091 from mkllnk/flaky-ship
Fix flaky spec of order shipment
2025-01-24 15:02:19 +11:00
David Cook
f6bd1c49ee Apply suggestions from code review 2025-01-24 14:52:54 +11:00
David Cook
bb040812aa Refactor spec 2025-01-24 14:49:18 +11:00
David Cook
e38d305ca1 Merge pull request #13089 from mkllnk/haml-up-remove
Remove unneeded HAML upgrade script
2025-01-24 14:23:56 +11:00
David Cook
46c92db415 Merge pull request #13088 from mkllnk/controller-helpers
Remove unused helper module
2025-01-24 14:22:46 +11:00
filipefurtad0
3e4d689903 Update all locales with the latest Transifex translations 2025-01-23 19:51:48 -06:00
Filipe
adf1c63c11 Merge pull request #13072 from rioug/update-action-cable-config
Update ActionCable config
2025-01-23 19:24:44 -06:00
Maikel Linke
f21f8f38da Compile assets on demand in test environment
We still do it in CI to prevent flaky specs. Otherwise, when a spec
needs to compile assets, it may time out.
2025-01-24 12:10:09 +11:00
Filipe
5d360730c7 Merge pull request #13023 from rioug/12907-fix-checkout-shipping-fee
[Checkout] Shipping fees update, remove order callback
2025-01-23 18:50:31 -06:00
Maikel Linke
8636d3fc00 Handle wrong OIDC tokens gracefully
If you copy and paste only part of a token then a general DecodeError is
raised. It's the parent class for all other related errors like for
expired signatures.

Now we just fail authentication instead of raising a server error.
2025-01-24 09:01:04 +11:00
Maikel Linke
7b8b7b6bbc Satisfy Rubocop on new migrations 2025-01-23 08:39:40 +11:00
Maikel
2d77b54685 Merge pull request #13092 from openfoodfoundation/dependabot/npm_and_yarn/leaflet-geosearch-4.1.0
chore(deps): bump leaflet-geosearch from 4.0.0 to 4.1.0
2025-01-23 08:38:09 +11:00
Konrad
0b8807146e Merge pull request #13058 from mkllnk/currency-config
Remove unused app config options
2025-01-22 11:27:12 +01:00
dependabot[bot]
486af8f58b chore(deps): bump leaflet-geosearch from 4.0.0 to 4.1.0
Bumps [leaflet-geosearch](https://github.com/smeijer/leaflet-geosearch) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/smeijer/leaflet-geosearch/releases)
- [Commits](https://github.com/smeijer/leaflet-geosearch/compare/v4.0.0...v4.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-22 09:57:36 +00:00
Maikel
c258bee44d Merge pull request #13065 from mkllnk/dfc-amend-nothing
Admin updates can trigger new backorders until the order cycle is closed
2025-01-22 16:32:23 +11:00
Maikel Linke
c975a2c8c4 Fix flaky spec of order shipment
I found that a delay in the reflex handling the request could fail the
spec. Added a sleep in the reflex to reproduce the fail. The I added
expectations for the page content to wait until the page was updated and
that fixed the specs.
2025-01-22 15:34:09 +11:00
Maikel Linke
ea9a5c8dd5 Remove class Spree::Role 2025-01-22 14:59:49 +11:00
Maikel Linke
d49cea5e3d Use admin flag instead of user role 2025-01-22 14:59:49 +11:00
Maikel Linke
920002e084 Copy admin attribute to users 2025-01-22 14:05:50 +11:00
Maikel Linke
698d1daa57 Add admin attribute to users 2025-01-22 14:05:23 +11:00
Maikel Linke
f8f6c80aa9 Remove unused helper module
SimpleCov says that it's not used. So let's see about that. If any
included helpers are used, we can bring them back individually.
2025-01-22 13:51:35 +11:00
Maikel Linke
a2459a3742 Remove class Spree::StockLocation
The database table is still there and can stay for a while until we are
confident that nothing is broken in production.
2025-01-22 12:09:17 +11:00
Maikel Linke
64608beaa8 Remove DefaultStockLocation created in setup 2025-01-22 12:01:57 +11:00
Maikel Linke
187a78b78d Remove stock location from add-variant JS 2025-01-22 11:58:15 +11:00
Maikel Linke
70ebe7b964 Remove stock location from specs 2025-01-22 11:52:25 +11:00
Maikel Linke
33ed0998a9 Removing old references to stock location 2025-01-22 11:34:54 +11:00
Maikel Linke
f098327808 Remove now useless wrapper method 2025-01-22 11:31:27 +11:00
Maikel Linke
c27aa00bed Make old migration independent of app code 2025-01-22 11:25:58 +11:00
Maikel Linke
8e15d571e7 Remove StockLocation from Packer 2025-01-22 11:20:05 +11:00
Maikel Linke
d5ff1f5c71 Remove StockItem#stock_location 2025-01-22 11:20:05 +11:00
Maikel Linke
87d20877ad Remove Shipment#stock_location 2025-01-22 11:20:05 +11:00
Maikel Linke
33c6f3b94f Remove StockLocation#stock_item 2025-01-22 11:20:05 +11:00
Maikel Linke
aa9daed66e Remove unused StockLocation#stock_items
And the reverse association.
2025-01-22 11:20:05 +11:00
Maikel Linke
6dfa184a15 Remove unused StockLocation#stock_movements 2025-01-22 11:20:05 +11:00
Maikel Linke
34fdcface2 Remove unused StockLocation#stock_item_or_create 2025-01-22 11:20:04 +11:00
Maikel Linke
450576a938 Remove unused StockLocation#count_on_hand 2025-01-22 11:20:04 +11:00
Maikel Linke
1650ccd55a Remove unused StockLocation#backorderable? 2025-01-22 11:20:04 +11:00
Maikel Linke
531c068347 Remove StockLocation#fill_status, now on Variant 2025-01-22 11:20:04 +11:00
Maikel Linke
a4b92f289c Move fill_status spec to prepare removal from StockLocation 2025-01-22 11:20:04 +11:00
Maikel Linke
68a0f8df1f Remove detour via StockLocation updating stock 2025-01-22 11:20:04 +11:00
Maikel Linke
248110cfb3 Make stock location association optional
Prepare for removal
2025-01-22 11:20:04 +11:00
Gaetan Craig-Riou
31c717349f Merge pull request #13085 from mkllnk/ci-runs
Reduce parallel CI runs from 45 to 27
2025-01-22 09:38:49 +11:00
Maikel Linke
cf35e48d14 Remove unused app config options
This has been defined in ENV for a while
2025-01-21 20:11:05 +01:00
Maikel Linke
917e0ff01a Remove unnecessary storage of currency 2025-01-21 20:11:05 +01:00
Maikel Linke
ed926e9e26 Remove unnecessary storage of checkout zone 2025-01-21 20:11:05 +01:00
David Cook
51300eecd9 Merge pull request #13079 from mkllnk/dfc-price
Publish price as in new DFC standard
2025-01-21 16:42:19 +11:00
Maikel Linke
ca12e35537 Reduce parallel CI runs from 45 to 27
This should shave off 18 minutes of overhead time for 18 fewer worker
runs in total. It also means that forks with only 20 parallel worker
should complete quicker.
2025-01-21 16:20:21 +11:00
Maikel
a1df61c612 Merge pull request #13076 from mkllnk/police-migrations
Police migrations
2025-01-21 11:36:34 +11:00
Maikel Linke
fcc31fffcd Fix user seeding 2025-01-21 11:21:08 +11:00
Maikel Linke
971d5bea44 Police new migrations 2025-01-21 11:19:58 +11:00
Maikel Linke
8c68179069 Style default user creation 2025-01-21 11:19:57 +11:00
Maikel Linke
042cc238c8 Modernise db default scripts 2025-01-21 11:17:31 +11:00
Maikel Linke
25a90a44f9 Modernise seeds file 2025-01-21 11:17:29 +11:00
Maikel Linke
8383441f79 List ignored files more explicitely 2025-01-21 11:12:59 +11:00
Maikel
229ee7028c Merge pull request #13064 from mkllnk/negative-stock
Don't show stock for on-demand inventory items
2025-01-21 11:05:50 +11:00
Gaetan Craig-Riou
fcd366cc06 Fix spec
Payment needs to be linked to the order, in order for the payment
callback to update `order.payment_total`
2025-01-21 10:52:32 +11:00
Gaetan Craig-Riou
0ca164a354 Fix spec
Use a completed payment, instead of trying to complete a payment
2025-01-21 10:51:08 +11:00
Abdul Aziz Ali
a15cb58ab5 fetch variant enterprise fees from order lineitems adjustments #11529 2025-01-21 06:53:42 +08:00
Gaetan Craig-Riou
d7ae91c23e Per review, specify the actual expected value 2025-01-20 16:21:19 +11:00
Gaetan Craig-Riou
17e7f7d26d Small linting fix 2025-01-20 16:16:00 +11:00
Gaetan Craig-Riou
c71ae35685 Fix payment_total calculation
For payment that complete during the checkout (Paypal, Stripe) the
amount was recorded twice against `order.payment_total`. This is because
the `payment_total` gets updated in an afer_save Payment callback when a
payment is completed, and then once more when we process payment in
`Spree::Order#process_each_payment`.
This is an existing  issue on master, but it was hidden by the
`update_shipping_fees!` callback, it trigerred an update of the order's
total, which then updated `order.payment_total` with the correct value.
Now that we removed the callback, the bug showed up.

Note, I updated the stripe specs for consistency even though they are
currently disabled.
2025-01-20 16:07:32 +11:00
Gaetan Craig-Riou
1cf5dac979 Merge pull request #13077 from mkllnk/simplecov
Fix artifact download for Simplecov collation
2025-01-20 09:41:38 +11:00
François Turbelin
39822e1761 Launch new Docker procfile from Docker Compose 2025-01-19 22:17:31 +01:00
François Turbelin
49e66c3d23 Add a Procfile for Docker 2025-01-19 21:01:05 +01:00
François Turbelin
2acde5423d Remove extra containers 2025-01-19 21:00:28 +01:00
François Turbelin
39825a9ecb Don't allow spaces in external billing id 2025-01-19 20:57:31 +01:00
filipefurtad0
d0a3d4996e Update all locales with the latest Transifex translations 2025-01-17 16:53:56 -06:00
Filipe
a472f3e4f5 Merge pull request #13068 from vishaldeepak/variant-with-tax
New variants should inherit tax category in UI
2025-01-17 10:57:22 -06:00
Filipe
ace3bfa2a5 Merge pull request #13061 from kernal053/add-voucher-label-to-edit-cart-page
Add 'Voucher:' before voucher code on edit cart page
2025-01-16 22:51:57 -06:00
Maikel Linke
06d9d96f54 Fix error on removed product from catalog 2025-01-17 12:21:28 +11:00
Filipe
3c1dd10219 Merge pull request #13047 from mkllnk/spree-roles
Clarify that our only user role is "admin" and simplify code
2025-01-16 18:06:49 -06:00
Filipe
5726eeffaa Merge pull request #13038 from chahmedejaz/task/13032-plural-variant-unit-names
Add plural form for flower farming variant unit names
2025-01-16 17:51:07 -06:00
Maikel Linke
84648690a6 Publish price as in new DFC standard 2025-01-16 09:45:26 +11:00
Gaetan Craig-Riou
1afa7fe5c0 Per review, small improvment 2025-01-15 15:44:24 -06:00
Gaetan Craig-Riou
a8d1d0c591 Update spec to properly update line items on an order
User Order::Contents#update_item to update line item on an order, it
ensures the order is properly updated
2025-01-15 15:44:24 -06:00
Gaetan Craig-Riou
9e7e40a5a8 Update spec to properly test shipping fee update 2025-01-15 15:44:24 -06:00
Gaetan Craig-Riou
f9bd720341 Add spec for #update_shipping_fees!
And update related specs
2025-01-15 15:44:24 -06:00
Gaetan Craig-Riou
20df5c23e8 Remove before save callback to update shipping fees
It should be handled in the controller, it's currently handled in
`Spree::OrderContents#remove`. As long as we don't manually remove line
item from an order we should be good.
Currently it gets trigerred each time the order is saved, which seems to
happen mutiple time when we finalize an order. It's a bit useless to
recalculated the fees over and over
Context, it was added here : 217eda8362
2025-01-15 15:44:24 -06:00
Maikel Linke
c9eed4f5b8 Trigger new backorder only when user checks out
When an admin creates an order, then AmendBackorderJob is called which
can also trigger a new backorder if needed.

This means that we are not creating backorders via subscriptions any
more. It has never been requested and we can bring that back if needed.
2025-01-15 15:52:57 +11:00
Maikel Linke
18ec97992d Remove unneeded HAML upgrade script
We updated a long time ago and I now copied those scripts to a Gist to
share with others:

* https://gist.github.com/mkllnk/bab2d474d686a2e3b88914129aee63e1
2025-01-15 12:55:13 +11:00
Maikel Linke
6b76fbc817 Fix artifact download for Simplecov collation
v4 of the artifact actions works differently to v3.
2025-01-15 12:44:34 +11:00
Gaetan Craig-Riou
a3e939e0ac Add OFN_REDIS_CABLE_URL env variable
It lets us specify a redis url to be used with ActionCable
2025-01-15 10:59:29 +11:00
Maikel
eace31f1fc Merge pull request #13074 from rioug/sync-prod-databse-schema
Sync prod database schema
2025-01-15 08:23:40 +11:00
Gaetan Craig-Riou
600195a726 Allow null for customers.created_manually
Some production database don't allow null for customers.created_maually,
we want to allow it to bring the database inline with schema.rb
2025-01-14 12:10:22 +11:00
Gaetan Craig-Riou
e2e12ccb52 Remove spree_variants default value and constraint
Some of the production database have default value for `weight` and
`unit_value` has well as check constraint. We want to remove them to
bring the database schema inline with schema.rb
2025-01-14 12:09:40 +11:00
Rachel Arnould
92c45084dc Merge pull request #12980 from pacodelaluna/add-external-billing-id-on-enterprises
Add external billing id on enterprises
2025-01-13 17:03:40 +01:00
David Cook
244e0524c7 Re-instate check for external_billing_id 2025-01-13 16:54:17 +01:00
François Turbelin
96c7c828c1 Fix specs 2025-01-13 16:54:17 +01:00
François Turbelin
9c153c6083 Improve specs 2025-01-13 16:54:17 +01:00
François Turbelin
e946b50515 Isolate into an Admin Only section 2025-01-13 16:54:17 +01:00
François Turbelin
3ef5b41282 Remove Admin Only tab logic 2025-01-13 16:54:17 +01:00
François Turbelin
a007fdaab8 Revert "Put back permalink fields on primary details panel"
This reverts commit d90ca538fb5b02e942842f1f9c1f44232f44027d.
2025-01-13 16:54:17 +01:00
François Turbelin
983e3e717b Revert "Fix spec"
This reverts commit b40e8a1ff9072721c468a7c012e1e4a9d47e3957.
2025-01-13 16:54:17 +01:00
François Turbelin
1e3f86625f Revert "Add spinner"
This reverts commit 16506c44fa8aee0a588c01a253b78b023a8f3a39.
2025-01-13 16:54:17 +01:00
François Turbelin
9cd3bbf46f Revert "Use params value only if present"
This reverts commit 5cd50b1c1ff66398f470d51fdafacf26663a2730.
2025-01-13 16:54:17 +01:00
François Turbelin
f9f5d0eb51 Revert "Do explicit save in specs when switching tabs"
This reverts commit 3230159dceeb1485b0c6ec2422ea282b39431e0c.
2025-01-13 16:54:17 +01:00
François Turbelin
0b0b6a04e1 Do explicit save in specs when switching tabs 2025-01-13 16:54:17 +01:00
François Turbelin
0f77d1bad5 Use params value only if present 2025-01-13 16:54:17 +01:00
François Turbelin
cd38e02cac Add spinner 2025-01-13 16:54:17 +01:00
François Turbelin
d6faa23fc2 Fix spec 2025-01-13 16:54:17 +01:00
François Turbelin
9dc364979a Put back permalink fields on primary details panel 2025-01-13 16:54:17 +01:00
François Turbelin
3c7c02da2f Repair specs 2025-01-13 16:54:17 +01:00
François Turbelin
657df9eb8f Repair field placeholder translation 2025-01-13 16:54:17 +01:00
François Turbelin
6ae3c8b102 Add external_billing_id field on revenues_by_hub report 2025-01-13 16:54:17 +01:00
François Turbelin
e37881837b Add unit tests for admin entreprises changes 2025-01-13 16:54:17 +01:00
François Turbelin
57c237c72d Move admin_only tab upper 2025-01-13 16:54:17 +01:00
François Turbelin
6030d7e05b Handle the async action for entreprises sells field changes 2025-01-13 16:54:17 +01:00
François Turbelin
30dfae7e18 Deal with translations 2025-01-13 16:54:17 +01:00
François Turbelin
14334b02bf Add new field on enterprise admin form 2025-01-13 16:54:17 +01:00
François Turbelin
772f1f8fde Add external_billing_id field on enterprises table 2025-01-13 16:54:17 +01:00
Gaetan Craig-Riou
a5c199d397 Set action cable to use the unused redis instance 2025-01-13 15:05:56 +11:00
Vishal Deepak
1586c8ef28 New varaints should inherit tax category in UI 2025-01-10 13:30:18 +05:30
Maikel
e2bc86faa9 Merge pull request #12491 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.25.0
chore(deps-dev): bump rubocop-rails from 2.24.1 to 2.28.0
2025-01-10 13:03:25 +11:00
David Cook
7f2266ef40 Merge pull request #13066 from mkllnk/fix-flaky-order-spec
Fix flaky admin order spec
2025-01-10 12:26:46 +11:00
Maikel Linke
b8c5b24c17 Fix flaky admin order spec
We were trying to assert values in the database withou waiting for he
update to finish. First expecting the changed values on the screen
ensures that Capybara waits for the action to finish. Then we can check
the database.
2025-01-10 09:54:50 +11:00
Maikel Linke
f8788d358e UNSAFE style Rails/RootPathnameMethods 2025-01-10 09:14:34 +11:00
Maikel Linke
c1198c8e1f UNSAFE Style Rails/CompactBlank 2025-01-10 09:14:34 +11:00
Maikel Linke
6cf1a0500d Bump rubocop-rails from 2.25.0 to 2.28.0 2025-01-10 09:14:04 +11:00
David Cook
314126a937 Update all locales with the latest Transifex translations 2025-01-10 09:08:52 +11:00
Maikel Linke
f9d436b1c9 Simplify subscription query
The artificial limit of 100 years was just set because the old SQL query
wouldn't deal with `null` well. Comparing with null always is always
false and returns nothing.

But Rails is now clever enough to interpret `begins_at..nil` as open
end query. This shouldn't have any practical impact as there's unlikely
to be an order cycle closing in more than 100 years. And if there was,
it would be confusing that it's not treated like other order cycles
ending in 80 years.
2025-01-10 08:57:20 +11:00
Maikel Linke
49ec9a3136 Style Rails/WhereRange 2025-01-10 08:43:58 +11:00
dependabot[bot]
2937595a33 chore(deps-dev): bump rubocop-rails from 2.24.1 to 2.25.0
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.24.1 to 2.25.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.24.1...v2.25.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>
2025-01-10 08:34:00 +11:00
Maikel Linke
dc7b6245fd Allow creating backorders before order cycle opens
Admins may want to pre-process some orders manually for going public.
And it's good to reserve stock for these.

At some point in the future, the supplier may have an order cycle with
its own times but the current FDC implementation allows orders at any
time.
2025-01-09 13:32:43 +11:00
Maikel Linke
884206b4ed Place new backorder when there's none to amend 2025-01-09 13:28:09 +11:00
Maikel Linke
2297b650f8 Skip amending backorder if there's none 2025-01-09 12:10:07 +11:00
Maikel Linke
a3ec3e74ae Hide stock level of on-demand inventory items
We changed to tracking stock of on-demand items to be able to place
backorders. This is mostly hidden in the app but was still visible on
the inventory page. Now we are hiding that here, too.
2025-01-09 10:06:04 +11:00
Maikel Linke
0805501445 Format spec data with less indent 2025-01-09 10:06:04 +11:00
Maikel
edf236778e Merge pull request #13063 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.6.13
Bump @floating-ui/dom from 1.6.12 to 1.6.13
2025-01-09 08:54:47 +11:00
dependabot[bot]
bf98603fcf Bump @floating-ui/dom from 1.6.12 to 1.6.13
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.6.12 to 1.6.13.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.6.13/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>
2025-01-08 09:29:52 +00:00
Maikel
5f486bd611 Merge pull request #13036 from chahmedejaz/bugfix/13024-dfc-catalog-syncs-for-blank-cart
Fix DFC catalog syncs for blank cart
2025-01-08 12:53:19 +11:00
Maikel
1df3a6bb66 Merge pull request #13049 from mkllnk/dfc-wholesale-stock
Calculate stock from DFC wholesale variants
2025-01-08 12:32:44 +11:00
Konrad
8e0c0392d9 Merge pull request #12991 from murjax/remove-sku-11973
Remove product SKU from product pages and report
2025-01-07 21:14:39 +01:00
Konrad
428eb465c0 Merge pull request #13009 from MrBowmanXD/dev
Added the :selected option with the default tax category #12989
2025-01-07 20:04:28 +01:00
Rachel Arnould
1147976069 Merge pull request #13011 from drummer83/ConnApps
Make Connected Apps links available in Transifex
2025-01-07 15:31:46 +01:00
kernal053
45a4b33920 Ensure existing format 'Voucher: Code' on edit cart page. Handle rubocop warning 2025-01-07 09:17:24 +05:30
Maikel Linke
0bd6fe6709 Fix setting stock from wholesale offer 2025-01-07 11:03:36 +11:00
Maikel Linke
21195c5750 Calculate stock from wholesale products 2025-01-07 11:03:36 +11:00
Maikel Linke
faad7fa95c Move wholesale calculation for re-use 2025-01-07 11:03:36 +11:00
Maikel Linke
ddaeff7c53 Use DfcCatalog in offer broker 2025-01-07 11:03:34 +11:00
Maikel Linke
ef08ae49fe DRY DFC catalog logic for re-use 2025-01-07 10:49:37 +11:00
Konrad
7e3baabd23 Merge pull request #12983 from saunmanoj888/12957-hide-search-filter-for-no-products
Back Office Product List - Hide search field and filters when there are no products in list
2025-01-07 00:16:59 +01:00
David Cook
a89d65cfc7 Merge pull request #13057 from mkllnk/remove-local-storage
Remove local storage
2025-01-06 11:45:27 +11:00
Gaetan Craig-Riou
ab57618e59 Merge pull request #13044 from mkllnk/dfc-store-order-links-only
Remove old, replaced backorder lookup
2025-01-06 10:11:34 +11:00
Konrad
cdcc6871fd Merge pull request #12979 from cillian/remove-unused-angular-directives-2024-11
Remove unused renderSvg, ofnDisableScroll, integer, ofnScrollTo angular directives
2025-01-04 15:50:38 +01:00
kernal053
98adefbd67 Add 'Voucher:' before voucher code on edit cart page. Add spec correspondigly 2025-01-04 14:26:02 +05:30
Cillian O'Ruanaidh
ce38c1a3d5 Remove unused :ofn-scroll-to angular directive 2025-01-03 14:31:21 +01:00
Cillian O'Ruanaidh
6923349de6 Remove unused :integer angular directive 2025-01-03 14:31:21 +01:00
Cillian O'Ruanaidh
1fb987f0bd Remove unused :disable-scroll angular directive 2025-01-03 14:31:21 +01:00
Cillian O'Ruanaidh
0b389b8ff4 Remove unused :render-svg angular directive 2025-01-03 14:31:21 +01:00
Konrad
35fa4155e4 Merge pull request #12998 from kernal053/add-voucher-to-order-confirmation-emails
Add 'Voucher:' before voucher code on order confirmation emails
2025-01-03 14:01:45 +01:00
Maikel
1b03ee1a02 Merge pull request #13040 from openfoodfoundation/dependabot/npm_and_yarn/stimulus_reflex-3.5.3
Bump stimulus_reflex from 3.5.1 to 3.5.3
2025-01-03 15:29:20 +11:00
kernal053
bad32e226e Fix label for other adjustments and add spec correspodingly 2025-01-02 16:29:48 +01:00
kernal053
65f7980246 remove locale files changes except en.yml inorder to avoid conflict with Transifex 2025-01-02 16:29:48 +01:00
kernal053
65abda2a38 add voucher label & correspoding code with translation for order confirmation mailer 2025-01-02 16:29:48 +01:00
kernal053
f99f2c81ac Add 'Voucher:' before voucher code on order confirmation emails 2025-01-02 16:29:48 +01:00
David Cook
bc53e4301c Bump cable_ready package 2025-01-02 16:32:18 +11:00
David Cook
807782cc2a Bump cable_ready gem 2025-01-02 16:29:03 +11:00
David Cook
6adc6321f5 Bump stimulus_reflex gem 2025-01-02 16:28:37 +11:00
Maikel Linke
558d4debdb Remove unused AngularJS local storage 2025-01-02 15:40:13 +11:00
Maikel Linke
8f761fc438 Remove unused localStorageService clearing 2025-01-02 15:23:43 +11:00
Maikel Linke
be98544537 Remove unused AngularJS service KeyValueMapStore 2025-01-02 15:19:55 +11:00
David Cook
7f3b1c0d7a Merge pull request #13029 from mkllnk/flaky-order-cycle-spec
Add timepicker helper with added expectation to reduce flakiness
2025-01-02 13:45:28 +11:00
dependabot[bot]
d71b282fda Bump stimulus_reflex from 3.5.1 to 3.5.3
Bumps [stimulus_reflex](https://github.com/stimulusreflex/stimulus_reflex) from 3.5.1 to 3.5.3.
- [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/compare/v3.5.1...v3.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-02 02:29:54 +00:00
Maikel
f5856d54da Merge pull request #13053 from openfoodfoundation/dependabot/npm_and_yarn/js-big-decimal-2.2.0
Bump js-big-decimal from 2.1.0 to 2.2.0
2025-01-02 13:28:48 +11:00
Maikel
386970adb0 Merge pull request #13050 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.12
Bump trix from 2.1.11 to 2.1.12
2025-01-02 13:27:56 +11:00
David Cook
deee451b88 Merge pull request #12867 from dacook/turbo-error-messages
Alert user when error requesting a report
2025-01-02 11:28:10 +11:00
dependabot[bot]
77864fc149 Bump js-big-decimal from 2.1.0 to 2.2.0
Bumps [js-big-decimal](https://github.com/royNiladri/js-big-decimal) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/royNiladri/js-big-decimal/releases)
- [Commits](https://github.com/royNiladri/js-big-decimal/compare/v2.1.0...v2.2.0)

---
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>
2024-12-30 09:51:47 +00:00
Filipe
5fdd0e5d42 Merge pull request #12954 from rioug/fix-shipment-not-updated
Ensure shipment gets updated when an order is updated
2024-12-26 15:56:12 -06:00
dependabot[bot]
38ed025d88 Bump trix from 2.1.11 to 2.1.12
Bumps [trix](https://github.com/basecamp/trix) from 2.1.11 to 2.1.12.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.11...v2.1.12)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 09:48:27 +00:00
Maikel
b8aa970040 Merge pull request #13048 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.11
Bump trix from 2.1.10 to 2.1.11
2024-12-20 15:40:08 +11:00
Filipe
e2e2285f81 Merge pull request #13027 from chahmedejaz/bugfix/13026-reset-variant-unit-name
Changing a variant unit scale from items to weight/volume does not remove variant unit name
2024-12-19 18:27:39 -06:00
Maikel Linke
c1f8d3035a Sleep after selecting time for stability 2024-12-20 11:15:49 +11:00
Maikel Linke
f74492190d Select time like the user does
It makes it easier to understand. It didn't improve stability.
2024-12-20 11:15:49 +11:00
Maikel Linke
874c464088 Tidy one spec example 2024-12-20 11:15:49 +11:00
dependabot[bot]
5a69acb742 Bump trix from 2.1.10 to 2.1.11
Bumps [trix](https://github.com/basecamp/trix) from 2.1.10 to 2.1.11.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.10...v2.1.11)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-19 09:17:56 +00:00
Maikel Linke
72376da98f Assess stability without retry 2024-12-19 16:29:33 +11:00
Maikel Linke
a30f764a22 Add timepicker helper with added expectation 2024-12-19 16:29:33 +11:00
Maikel Linke
5db8cb452e Leverage Rails' caching when checking for admin
The privileges of a user should never change within a request
life cycle. The `spree_roles` association is very small, between 0 and 2
items are quickly searched in memory without the need of additional
database queries.

From memory, I've seen a lot of spree_roles queries in log files per
request. This should reduce it to one.
2024-12-19 10:12:31 +11:00
Maikel Linke
54f83b45c8 Replace has_spree_role? with simpler admin?
We have only one role, so let's get rid of the unneeded method.

Now we are in a better place to get rid of Spree::Role and replace it
with a simple boolean.
2024-12-19 09:19:01 +11:00
Maikel Linke
a7140d1f60 Use only admin role, on demand
We are now creating the role on demand which removes the need for
seeding it as well.
2024-12-19 09:02:04 +11:00
Maikel Linke
a529d95fc5 Remove unused user role from seeding
We only ever check for the admin role.
2024-12-19 08:54:39 +11:00
Maikel Linke
fa82f80ab9 Use plain static value for spree_roles 2024-12-19 08:50:10 +11:00
Maikel Linke
a7dfa36883 Typo: we sync catalogs, not categories 2024-12-18 13:01:23 +11:00
Maikel Linke
60b62d41d6 Remove old, replaced backorder lookup 2024-12-17 13:48:03 +11:00
Maikel
0f706a9929 Merge pull request #13034 from mkllnk/rbenv-install
Install rbenv automatically if missing
2024-12-17 12:47:22 +11:00
Maikel
b9483ce63d Update script/rbenv-install.sh
Co-authored-by: David Cook <david@redcliffs.net>
2024-12-17 11:51:47 +11:00
David Cook
a3a79686db Don't catch other 4xx errors 2024-12-17 11:16:56 +11:00
David Cook
0616827419 Catch errors and alert the user
I'm not sure why, but Turbo was swallowing the unauthorized error, so I thought we should alert the user to help with debugging.
Same with network error, it gave no feedback before.

I think this is testable in theory, but I haven't invested the time on it.
2024-12-17 10:37:28 +11:00
Ahmed Ejaz
71ee7d5390 13032: add pularal variant names for flower farms 2024-12-17 00:16:20 +05:00
David Cook
e689844a0f Merge pull request #13033 from mkllnk/dfc-pricing
DFC Orders: Calculate wholesale price for imported retail variants
2024-12-16 15:37:30 +11:00
David Cook
5c08446515 Merge pull request #13039 from rioug/fix-es-unit-scale
Use the correct spanish translation for Unit Scale
2024-12-16 12:27:21 +11:00
Gaetan Craig-Riou
ad7ba3e680 Use the correct spanish translation for Unit Scale 2024-12-16 11:25:23 +11:00
Gaetan Craig-Riou
e54a1afe52 Merge pull request #13035 from openfoodfoundation/dependabot/npm_and_yarn/hotkeys-js-3.13.9
Bump hotkeys-js from 3.13.7 to 3.13.9
2024-12-16 10:49:43 +11:00
filipefurtad0
7d0bcfa06a Update all locales with the latest Transifex translations 2024-12-13 10:53:25 -06:00
Filipe
9bfac66412 Merge pull request #13012 from chahmedejaz/task/13007-customer-code-in-order-cycle-email
Add customer code to notify producer emails when enabled
2024-12-13 10:50:02 -06:00
dependabot[bot]
e26a1d4d3d Bump hotkeys-js from 3.13.7 to 3.13.9
Bumps [hotkeys-js](https://github.com/jaywcjlove/hotkeys-js) from 3.13.7 to 3.13.9.
- [Release notes](https://github.com/jaywcjlove/hotkeys-js/releases)
- [Commits](https://github.com/jaywcjlove/hotkeys-js/compare/v3.13.7...v3.13.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-12 09:51:55 +00:00
Maikel Linke
8d1d0c27c9 Install rbenv automatically if missing
This small script addition will allow us to remove the rbenv
installation from our Ansible provisioning scripts.
2024-12-12 17:15:53 +11:00
Maikel Linke
13e008e91e Calculate wholesale price for imported retail variants 2024-12-12 16:08:45 +11:00
Maikel Linke
e47a57fa3c DRY with offer broker we'll need anyway 2024-12-12 15:48:42 +11:00
Maikel Linke
d5c3e94b24 OfferBroker needs only catalog URL, no other URLs 2024-12-12 15:45:42 +11:00
Maikel Linke
9b965f657c Use OIDC account factory 2024-12-12 15:22:35 +11:00
Maikel
58c39166e1 Merge pull request #13000 from mkllnk/dfc-amend-order
Amend DFC backorder completely
2024-12-12 12:47:13 +11:00
Ahmed Ejaz
b6eca58798 13024: fix dfc catalog sync for blank cart 2024-12-12 04:28:15 +05:00
Maikel Linke
bf41658d32 Fix nil error when amending backorder 2024-12-11 12:40:46 +11:00
Maikel Linke
88837b55b9 Amend backorder also when resuming order 2024-12-11 12:40:46 +11:00
Maikel Linke
9c0a15f431 Amend backorders on admin update orders 2024-12-11 12:40:46 +11:00
Maikel Linke
fcbaefb2c8 Update each backorder only once in bulk cancel 2024-12-11 12:40:46 +11:00
Maikel Linke
9ca1b48d2e Move backorder amendment out of order callback
Triggering it for each order is inefficient when we cancel them in bulk.
The callback doesn't allow us to optimise this.
2024-12-11 12:40:46 +11:00
Maikel Linke
e76d6ad3df Spec current order cancellation amending backorder
The cancellation happens async in Javascript. Therefore we need to wait
for and outcome on the page to know that the action finished. The
expectation needs to be around that whole block.

We actually want only one job enqueued if the same backorder is
affected. Time to fix that.
2024-12-11 12:40:46 +11:00
Maikel Linke
e1febc6e00 Simplify page actions 2024-12-11 12:40:46 +11:00
Maikel Linke
7d27f46d68 Simplify negated expectation 2024-12-11 12:40:46 +11:00
Maikel Linke
7d7253cf0e Re-use BackorderUpdater to complete backorder 2024-12-11 12:40:46 +11:00
Maikel Linke
4fa4eb1b4e Move backorder update code to re-usable class 2024-12-11 12:40:46 +11:00
Maikel Linke
d16cd8c84e Amend backorder completely
Update every single order line to reflect local orders and stock levels.

New cases supported:

* Add lines for orders created by an admin.
* Create backorder line after increase of local line item quantity.
* Adjust local stock after variant has been removed from order cycle.
2024-12-11 12:40:46 +11:00
Gaetan Craig-Riou
9870abfb1c Merge pull request #13025 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.10
Bump trix from 2.1.9 to 2.1.10
2024-12-11 10:08:00 +11:00
Gaetan Craig-Riou
8e46c0f897 Apply changes from https://github.com/openfoodfoundation/openfoodnetwork/pull/13016 2024-12-11 10:04:57 +11:00
Ahmed Ejaz
3e031ab735 13026: reset variant unit name if unit is not items 2024-12-11 03:14:11 +05:00
dependabot[bot]
141000f0df Bump trix from 2.1.9 to 2.1.10
Bumps [trix](https://github.com/basecamp/trix) from 2.1.9 to 2.1.10.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-10 21:47:00 +00:00
Maikel
7302c2d161 Merge pull request #12990 from openfoodfoundation/dependabot/npm_and_yarn/tom-select-2.4.1
Bump tom-select from 2.3.1 to 2.4.1
2024-12-11 08:45:16 +11:00
Maikel Linke
4be4c7622b Clean up Haml 2024-12-10 15:32:09 +11:00
Ahmed Ejaz
604a47bd96 13007: add specs for text mail 2024-12-10 05:49:35 +05:00
Ahmed Ejaz
241a6d8128 13007: fix specs 2024-12-10 05:34:33 +05:00
Ahmed Ejaz
bb70d21a35 13007: add specs 2024-12-10 05:34:32 +05:00
Ahmed Ejaz
626a269cf8 13007: only show business name when all customers have one 2024-12-10 05:34:32 +05:00
Ahmed Ejaz
302336ab02 13007: add business name in order cycle report email 2024-12-10 05:34:27 +05:00
filipefurtad0
ee2a6bf2e6 Update all locales with the latest Transifex translations 2024-12-09 16:46:51 -06:00
Filipe
7ca5927411 Merge pull request #12996 from chahmedejaz/bugfix/12993-fix-order-cycle-report-text-version
Order cycle mail reports to producers display different data in html and txt versions
2024-12-09 16:32:46 -06:00
dependabot[bot]
2926a9662c Bump tom-select from 2.3.1 to 2.4.1
Bumps [tom-select](https://github.com/orchidjs/tom-select) from 2.3.1 to 2.4.1.
- [Release notes](https://github.com/orchidjs/tom-select/releases)
- [Commits](https://github.com/orchidjs/tom-select/compare/v2.3.1...v2.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 22:27:56 +00:00
David Cook
118ed915dc Merge pull request #13020 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.9
Bump trix from 2.1.8 to 2.1.9
2024-12-10 09:23:28 +11:00
Filipe
6e40e4da60 Merge pull request #13018 from chahmedejaz/task/13008-add-tax-category-in-all-products-report
Add 'tax category' to the All Products report
2024-12-09 16:21:01 -06:00
dependabot[bot]
693bef1e7a Bump trix from 2.1.8 to 2.1.9
Bumps [trix](https://github.com/basecamp/trix) from 2.1.8 to 2.1.9.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 20:41:14 +00:00
Manuel Gonçalves
0d4904d9e4 Small change in spec file 2024-12-09 09:07:22 +00:00
Manuel Gonçalves
5def2b53e5 Added a spec file in order to test the tax categories helper 2024-12-08 10:52:14 +00:00
Ahmed Ejaz
42940f4729 12993: add total tax incl. 2024-12-08 01:05:21 +05:00
Ahmed Ejaz
f2da3bb11c 12993: html sanitize city and zip 2024-12-08 01:05:02 +05:00
Ahmed Ejaz
f8003b00db 12993: translate tax incl and qty 2024-12-08 01:03:38 +05:00
Filipe
521b72a6c9 Merge pull request #13004 from chahmedejaz/bugfix/12982-unable-to-close-confirmation-modals
[Orders Page] Fix Confirmation modals do not auto-close
2024-12-07 10:33:56 -06:00
Filipe
aa4552aac4 Merge pull request #13001 from chahmedejaz/bugfix/12973-product-import-never-completes
Bulk product import stalling at 66% when missing info
2024-12-05 16:34:43 -06:00
Ahmed Ejaz
93a3130851 12973: add specs 2024-12-05 16:18:21 -06:00
Ahmed Ejaz
f3a30f94db 12973: fix error rendering on UI
- The caught errors do not get rendered to the UI because of incorrect rendering methods
2024-12-05 16:18:21 -06:00
Ahmed Ejaz
16cae2dbcc 12973: fix error raised in variant creation
- if the sheet doesn't have the units present, then the variant is not saved due to model validation
- After that, while assigning on_hand value, error is raised that the variant is not created first
- Now this commit makes sure that the variant is created before implementing above logic
2024-12-05 16:18:21 -06:00
Gaetan Craig-Riou
cedf040b47 Per review, test on create and update 2024-12-04 22:15:56 +11:00
Gaetan Craig-Riou
4a6e4d4c6d Ensure shipment is updated when using update_or_create
`Spree::OrderContents#update_or_create` is used to update the cart when
on the /shop page. If you start an order and proceed to the "Order
summary" step, and then decide to update your order by using the shop
link next to the cart, such update wouldn't update the shipment.
This result in the order page in the backoffice displaying the wrong data,
and more importantly, in the stock not being updated.
So now we ensure shipment will be updated, which result in the checkout
flow being restarted, thus making sure the shipment is updated.
2024-12-04 16:30:45 +11:00
Maikel
4c71ea3866 Merge pull request #12994 from mkllnk/dfc-update-voc
Add new DFC vocabulary for order states
2024-12-04 12:57:03 +11:00
Gaetan Craig-Riou
bc970927a5 Merge pull request #13017 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.5.0
Bump jasmine-core from 5.4.0 to 5.5.0
2024-12-04 09:49:37 +11:00
Ahmed Ejaz
c331d57cdb 13008: add tax category in all products report 2024-12-04 03:36:42 +05:00
dependabot[bot]
5845fee663 Bump jasmine-core from 5.4.0 to 5.5.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.4.0 to 5.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/v5.4.0...v5.5.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>
2024-12-03 09:38:47 +00:00
Manuel Gonçalves
3199118bae Removed the :selected attribute when the tax category is not required (like original version) 2024-12-03 08:54:35 +00:00
Maikel
de938f6f10 Merge pull request #12949 from rioug/12859-use-VINE-voucher
[City OFN Voucher] A shopper can use a VINE voucher
2024-12-03 14:04:44 +11:00
Maikel
697f430156 Merge pull request #12992 from mkllnk/errors
Add simpler Alert.raise interface to notify Bugsnag
2024-12-03 13:29:11 +11:00
Maikel Linke
c41c15b895 Fix missed Alert call with order object 2024-12-03 13:02:08 +11:00
Manuel Gonçalves
980f86ce89 Fixed the lint errors 2024-12-02 21:22:12 +00:00
Ahmed Ejaz
af200ab4a0 12993: fix lint issues 2024-12-02 18:40:18 +05:00
Ahmed Ejaz
4c6c1eedb1 12993: use html safe strings wherever required 2024-12-02 18:23:24 +05:00
Ahmed Ejaz
bbdee7c0f3 12993: add included tax in text report 2024-12-02 18:04:18 +05:00
Ahmed Ejaz
11959515b8 12993: update the condition to display details 2024-12-02 18:04:17 +05:00
David Cook
cb781536b6 Merge pull request #12905 from macanudo527/docker/use_alpine_image
Add Alpine Image for Docker
2024-12-02 09:57:51 +11:00
drummer83
53d2166579 Make Connected Apps links available in Transifex 2024-12-01 23:55:26 +01:00
Manuel Gonçalves
d95bb7736a Fixed the logic and moved the code to a helper file 2024-12-01 20:43:31 +00:00
Manuel Gonçalves
7d5bb4a6fa Added the :selected option with the default tax category 2024-12-01 15:13:49 +00:00
Maikel Linke
5719d0682d Remove duplicate lines, dev leftovers 2024-11-29 16:16:43 +11:00
Maikel Linke
c4c95d472e Use defined DFC orders states 2024-11-29 16:16:42 +11:00
Maikel Linke
3e7f61c4d1 Add new DFC vocabulary
So that we can use order states programmatically.
2024-11-29 16:16:42 +11:00
Maikel
db76cd1659 Merge pull request #13005 from mkllnk/map-spec
Remove failing map spec
2024-11-29 14:10:57 +11:00
Maikel Linke
e791184468 Remove failing map spec
I couldn't fix it easily. But I also think that the testing approach had
low value here.

It raised:

```
Failures:

  1) Map map can load does not show alert
     Failure/Error:
       assert_raises(Capybara::ModalNotFound) do
         accept_alert { visit '/map' }
       end

     Minitest::Assertion:
       Capybara::ModalNotFound expected but nothing was raised.

     [Screenshot Image]: /home/runner/work/openfoodnetwork/openfoodnetwork/tmp/capybara/screenshots/failures_r_spec_example_groups_map_map_can_load_does_not_show_alert_64.png

     # ./spec/system/consumer/map_spec.rb:11:in `block (3 levels) in <top (required)>'
     # ./spec/system/support/cuprite_setup.rb:39:in `block (2 levels) in <top (required)>'
     # ./spec/base_spec_helper.rb:153:in `block (3 levels) in <main>'
     # ./spec/base_spec_helper.rb:153:in `block (2 levels) in <main>'
```
2024-11-29 13:46:01 +11:00
filipefurtad0
23287573f4 Update all locales with the latest Transifex translations 2024-11-28 20:21:43 -06:00
Maikel
925ac2ea6a Merge pull request #12862 from dacook/anonymise-customer-names
Anonymise customer first and last names
2024-11-29 09:17:19 +11:00
Filipe
355c9686e3 Merge pull request #12963 from murjax/map-network-check-8230
Show alert if map cannot load
2024-11-28 12:26:22 -06:00
Filipe
58d174fad9 Merge pull request #12969 from chahmedejaz/task/12919-remove-empty-option-from-unit-scale-dropdown
[Products] Empty option on unit scale dropdown
2024-11-28 09:31:42 -06:00
Filipe
d90c4f6aed Merge pull request #12995 from chahmedejaz/bugfix/12968-product-import-update
Impossible to update product sold by weight with product import
2024-11-28 08:38:58 -06:00
Gaetan Craig-Riou
f5b9ca361c Use the voucher adjustment amount for redeeming 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
16d6e1f935 Remove unused error translation 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
1e6fbadd8b Fix Vine::VoucherRedeemerService to handle exceptions 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
d102652c03 Fix Vine::VoucherValidatorService to handle exceptions 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
1b50217242 Re worked the Vine::ApiService to raise exception on error
Log Client and Server error, and re raise exception for the caller
to handle
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
73819a4638 Fix unique validator for vouche code
Paranoia doesn't support unique validation including deleted records:
  https://github.com/rubysherpas/paranoia/pull/333
We use a custom validator, ScopedUniquenessValidator to avoid the issue
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
9ab2a3ae3d Per review, fix a some minor issues 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
d413a142c9 Update various voucher related file to use the new Vouchers::Vine 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
48ad7ed8a0 Add voucher used by multiple enterprise and recycle code scenario
Plus optimise code with `find_or_initialize_by` as suggested in review
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
a2c4c44eea Move Vine voucher to Vouchers::Vine
A Vine voucher is really a specific type of FlatRate voucher but because
a Vine voucher can be used by mutiple enterprise, it can be considered
different enough to warrant it's own class.
It still share a lot of the behaviour of a FlatRate voucher, so to avoid
duplication, all the shared functionality have been moved to a
Vouchers::FlatRatable concern.
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
e7ece294cc Better error for VineVoucherValidatorService
Co-authored-by: David Cook <david@redcliffs.net>
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
d7313ffec9 Per review, improve Vine::VoucherValidatorService
plus specs
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
b42cba8c37 Add vine_voucher factory 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
7726c7d129 Per review, rename not_vine scope to local
- use IS DISTINCT FROM instead of two conditions
- added spec for scope
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
d4d995851f Display voucher section if connected to VINE 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
12cf62c2ff Refactor, add OrderManagement::Order::Updater#update_voucher
Move the logic to update a voucher and associated order to
`OrderManagement`
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
0569b30e0d Refactor Vine related services
Move them under Vine module to keep the code nicely organised
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
9f3da1af4f Reddeem VINE voucher when firing "capture_and_complete_order"o
'Spree::Payment#capture_and_complete!' will try to complete the order,
so we want to redeem any VINE voucher associated with the order first.
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
afb336d789 Add spec for fire event "capture_and_complete_order" 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
92c4cb9b7f Redeem VINE voucher when creating a new payment
Creating a new payment will try to complete the order, so we want to
redeem any VINE voucher associated with the order first
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
724d5a2ca0 Add spec for creating a payment from admin page 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
6251814152 Hide VINE voucher from admin voucher page 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
cf13dc2ff6 Add system spec when completing order with VINE voucher 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
4906c19c8e Checkout Summary, remove shared example 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
129ccc33f8 CheckoutController, add VINE voucher redemption 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
9399c7e129 Add VineVoucherRedeemerService
It handles redeeming a voucher
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
c17eddd69b Add Voucher#vine?
And small refactor
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
b30096317c VineApiService, add voucher_redemptions
It is used to redeem a voucher
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
c89b4fb86b Add system spec fot adding VINE voucher to order 2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
3a367ceb6e Handle adding a VINE voucher to an order
Plus specs
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
f9fb7bf399 Add VineVoucherValidatorService and spec
It handles validating and creating vine voucher
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
0f9b933117 Add extra column to Voucher
They are used to store additional informations for VINE vouchers
2024-11-28 13:35:01 +01:00
Gaetan Craig-Riou
7cbe77668a VineApiService, add voucher_validation
It is used to validate a voucher using the given short code
2024-11-28 13:35:01 +01:00
Rachel Arnould
479eacc956 Merge pull request #12964 from chahmedejaz/task/12890-add-data-to-dfc-affiliate-sales-endpoint
Add cities and countries to DFC affiliate sales data endpoint
2024-11-28 10:46:20 +01:00
Neal Chambers
e7213dba68 Revise README 2024-11-28 08:39:51 +09:00
Neal Chambers
078e191d26 Sync Docker Container to the Host 2024-11-28 08:39:51 +09:00
Neal Chambers
b554eda7c7 Add Windows Docker Commands to README 2024-11-28 08:39:51 +09:00
Neal Chambers
477447ad92 Rewrite Powershell Scripts for Alternative Dockerfile 2024-11-28 08:39:51 +09:00
Neal Chambers
039399ee37 Simplify Docker Build 2024-11-28 08:39:51 +09:00
Neal Chambers
d36438037a Revise Docker README 2024-11-28 08:39:51 +09:00
Neal Chambers
5b58f7b20e Add Dockerfile back in 2024-11-28 08:39:51 +09:00
Neal Chambers
02e2214caa Revert "Remove bundle exec from docker commands"
This reverts commit 2d193a689406cf826e241314acd661fd87a6ae37.
2024-11-28 08:39:51 +09:00
Neal Chambers
0ec8d13641 Optimize Dockerfile 2024-11-28 08:39:51 +09:00
Neal Chambers
151fc7bf85 Revise docker scripts to use optional dockfiles 2024-11-28 08:39:51 +09:00
Neal Chambers
15c920c911 Refactor Alpine Dockerfile 2024-11-28 08:39:51 +09:00
Neal Chambers
b4aaa0fae1 Add Helpful Docker Commands 2024-11-28 08:39:51 +09:00
Neal Chambers
efe0a2a701 Add Redis Test URL for Spree Preferences 2024-11-28 08:39:51 +09:00
Neal Chambers
3f905cce16 Remove bundle exec from docker commands 2024-11-28 08:39:51 +09:00
Neal Chambers
5c5213e872 Use Alpine Image for Docker 2024-11-28 08:39:51 +09:00
David Cook
3a7aed154c Merge pull request #13003 from chahmedejaz/bugfix/13002-orders-pagination
[Orders Page] - Fix Pagination not working
2024-11-28 09:28:30 +11:00
Ahmed Ejaz
60ace5d3ff 12982: add hu locale config for flatpickr 2024-11-28 03:18:34 +05:00
Ahmed Ejaz
1dec3debe1 12982: update close guard condition
- Execute the close method only when the current context modal is opened
2024-11-28 03:12:11 +05:00
Ahmed Ejaz
711f37bce1 13002: fix the search-controller error
- productForm is not accessible on the orders page
- putting the check to do the scrollIntoView only if the productForm is available
2024-11-27 17:49:21 +05:00
Filipe
a493d70f5c Merge pull request #12950 from macanudo527/unlock_bigdecimal
Fix rounding issues by upgrading decimal maths library
2024-11-25 19:18:19 -06:00
Ahmed Ejaz
c0887b1806 12890: remove city from response 2024-11-25 19:29:31 +05:00
Ahmed Ejaz
3d09ac01cc 12968: fix existing specs
- As per the new changes, unit_type change will create a new product rather than give errors.
- on bulk-update screen as well, two products can have same name with different unit_type
2024-11-25 17:29:27 +05:00
Ahmed Ejaz
3a3d729dcb 12968: fix product import update 2024-11-25 16:36:13 +05:00
Ahmed Ejaz
283706114e 12968: update condition to match variant with unit scale 2024-11-25 16:36:13 +05:00
Ahmed Ejaz
7ca544540b 12890: fix product names 2024-11-24 15:24:39 +05:00
filipefurtad0
7a2a6fab21 Update all locales with the latest Transifex translations 2024-11-22 16:36:15 -06:00
Filipe
0f4ca50d0e Merge pull request #12962 from bouaik/Scroll-to-top-when-using-pagination
Scroll to top when using pagination
2024-11-22 15:13:38 -06:00
Maikel Linke
b1b4b10417 Update API docs 2024-11-22 12:40:54 +05:00
Ahmed Ejaz
3b83200a14 12890: fix specs 2024-11-22 12:40:54 +05:00
Ahmed Ejaz
7cd8311dcb 12890: add cities and countries data 2024-11-22 12:40:54 +05:00
Maikel
3ec8cd24d3 Merge pull request #12960 from mkllnk/dfc-link-backorder
Store link to open backorder
2024-11-22 10:22:43 +11:00
saunmanoj888
87d7f73ba9 Hide search filters when no product is present 2024-11-22 00:15:08 +05:30
Maikel Linke
14e7c57102 Deactivate some specs on CI
Somehow Bugsnag doesn't report in CI environment and I have no idea how
to circumvent that. And I don't want to spend more time on this.
2024-11-21 16:17:27 +11:00
Maikel Linke
9f859f420d Remove unnecessary error creation 2024-11-21 15:58:56 +11:00
Maikel Linke
af33fc357e Use shorter Alert syntax
I still think that some of these objects won't be visible in Bugsnag but
I don't want to test any more on cases that were broken before and may
not be relevant now.
2024-11-21 15:58:56 +11:00
Maikel Linke
6a8cc410d2 Replace broken order data
Bugsnag expects a string as value, not an ActiveRecord object. The
result was just "filtered" data, not showing any of the order's
attributes.

Since wanting to share the order data seems a common pattern, I added a
convenience method for it.
2024-11-21 15:58:55 +11:00
Maikel Linke
61e7c1db07 Replace obsolete ErrorLogger 2024-11-21 15:58:55 +11:00
Maikel Linke
0d8df5d2a8 Replace Bugsnag calls with Alert.raise 2024-11-21 15:58:55 +11:00
Maikel Linke
73a1698aad Add live test for Bugsnag
Needs human to review Bugsnag account.
2024-11-21 15:28:19 +11:00
Maikel Linke
97d41c230e Add simpler Bugsnag wrapper 2024-11-21 15:28:19 +11:00
Maikel Linke
1b4efd2164 Revert "Notify bugsnag on 404 errors"
This reverts commit 2eec3d625a.

We started tracking 404 errors out of interest without an actual problem
to solve. Now we face rate-limiting in our Bugsnag account. And we
didn't use these 404 reports in the two years this code was active. We
don't even act on all 500 errors. So while our resources are so
constrained, let's keep our focus on the severe errors and user reports
and ignore the rest. 404 errors are mostly generated by vulnerability
scanners.
2024-11-21 15:28:19 +11:00
Maikel Linke
1e13005fb5 Enable Bugsnag testing in any Rails env with ENV var 2024-11-21 15:28:19 +11:00
Maikel
d0dcc92ca7 Merge pull request #12976 from dacook/update-docker-readme
Update docker readme
2024-11-21 13:25:42 +11:00
Ryan Murphy
bab7756017 Remove product SKU from product pages and report 2024-11-20 19:12:29 -05:00
Filipe
22f3afc7f7 Merge pull request #12930 from chahmedejaz/task/12878-add-variant-name-in-od-report
Report Orders and Distributors should display variant
2024-11-20 12:23:36 -06:00
Maikel Linke
46048dcd18 Handle empty backorder
Backorder can become empty after a customer cancels their order. Then we
don't want to fail but also don't need to place an order.
2024-11-19 15:53:59 +11:00
Maikel Linke
a8fb6492f4 Lookup backorder for updates with saved link 2024-11-19 15:53:59 +11:00
Maikel Linke
4610141ed8 Add shortcut to order's exchange 2024-11-19 15:53:59 +11:00
Maikel Linke
8098131dba Store link to open backorder
We don't use the link yet, but it's there.
2024-11-19 15:53:59 +11:00
Maikel Linke
597d9ad314 Add semantic links to Exchange 2024-11-19 15:53:59 +11:00
Maikel Linke
1ce0b25bb0 Switch SemanticLink to use new association
And ActiveRecord magic does the rest when used correctly.
2024-11-19 15:53:58 +11:00
Maikel Linke
c07ec6cdfd Polymorphically associate SemanticLinks to variant 2024-11-19 15:53:58 +11:00
Maikel Linke
48e8ad3dd0 Add subject column to semantic links 2024-11-19 15:53:58 +11:00
David Cook
60d4cd60ff Merge pull request #12972 from duleorlovic/12971_add_serbian_lang
Add Serbian lang: tx pull -l sr fix #12971
2024-11-19 09:46:59 +11:00
Ahmed Ejaz
d62d3041b4 12878: add relations in model 2024-11-18 11:45:02 +05:00
Ahmed Ejaz
42fc0f7230 12878: add model in migration 2024-11-18 11:13:02 +05:00
filipefurtad0
328aee6a03 Update all locales with the latest Transifex translations 2024-11-17 20:47:52 -06:00
Rachel Arnould
db79af45fb Merge pull request #12879 from chahmedejaz/task/12776-pay-suppliers-report
[Flower Farms] - Pay Suppliers Report
2024-11-15 11:36:29 +01:00
Ahmed Ejaz
ed7685222e 12776: fix included tax on fees 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
4965e2bb9a Update lib/reporting/reports/suppliers/helpers/line_items_access_helper.rb
Co-authored-by: David Cook <david@redcliffs.net>
2024-11-15 11:09:56 +01:00
Ahmed Ejaz
6b3b29ac39 12776: refactor spec 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
9bcdac8f30 12776: rename vat to tax 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
e2d999da8d 12776: use EnterpriseFeeCalculator in specs 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
bc57447d54 12776: refactor supplier_adjustments method 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
f3e086ad59 12776: remove unnecessary include 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
298c0e8d7f fix reported issues:
- wrong enterprise fees
- always 0 tax on fees
2024-11-15 11:09:56 +01:00
Ahmed Ejaz
ed559b5257 update specs to have more line items 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
1fbdf25296 12776: fix missing order numbers 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
ec0d2d346b use to_date for locale based formating 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
68c0d98736 add slash for abn acn 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
458c8f7608 Update lib/reporting/reports/suppliers/helpers/columns_helper.rb
Co-authored-by: David Cook <david@redcliffs.net>
2024-11-15 11:09:56 +01:00
Ahmed Ejaz
654263a823 add systems spec 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
77f9c6587c fix specs 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
13a614a5aa fix rubocop lines issue 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
add973f1ff 12776: add new line 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
4349e42a84 12776: add specs 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
7cb28fd064 12776: add supplier report 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
122a64e488 12776: add new report option 2024-11-15 11:09:56 +01:00
Ahmed Ejaz
39fa8e0ace 12878: fix migration class name 2024-11-14 11:04:28 +05:00
Maikel
8c6c1e28ff Merge pull request #12967 from rioug/fix-bugsnag-notify
Fix Bugsnag call to notify
2024-11-14 13:42:23 +11:00
David Cook
d9809fc1f4 Update docker readme
I think it was misleading, and considering the challenges everyone seems to have, we need to be more realistic.

[skip ci]
2024-11-14 09:56:59 +11:00
Neal Chambers
7a5074cc90 Refactor option_value_value_unit_scaled for correct unit value scaling and update sales tax report spec for clarity 2024-11-13 16:28:18 +09:00
Neal Chambers
41ffe848ed Update BigDecimal to Latest Version 2024-11-13 16:28:18 +09:00
Neal Chambers
0797314360 Fix inaccuracies introduced with truncation 2024-11-13 16:28:18 +09:00
Neal Chambers
3302f0e78d Improve Precision of Spec for New Version of BigDecimal 2024-11-13 16:28:18 +09:00
David Cook
889bec7404 Merge pull request #12961 from mkllnk/total-on-hand
Remove unused stock aggregation
2024-11-13 16:35:55 +11:00
David Cook
3f91027c51 Merge pull request #12953 from mkllnk/test-secret-collision
Avoid collision of test secrets
2024-11-13 15:58:41 +11:00
Gaetan Craig-Riou
2f9200b68b Per review, use a better name 2024-11-11 14:03:10 +11:00
filipefurtad0
5d9bb9a8d5 Update all locales with the latest Transifex translations 2024-11-10 18:03:57 -06:00
Filipe
7b677796c1 Merge pull request #12797 from rioug/report-fix-supplier
Fix supplier loading on Product & inventory report
2024-11-10 18:03:20 -06:00
Dusan Orlovic
528c851e89 Add Serbian lang: tx pull -l sr fix #12971 2024-11-10 20:43:13 +01:00
Ahmed Ejaz
bafb881c46 12919: add unit scale prompt 2024-11-10 14:57:45 +05:00
Ryan Murphy
32ab821839 8230 - Map spec update 2024-11-06 08:43:37 -05:00
Gaetan Craig-Riou
eb66244b74 Fix Bugsnag call to notify
Make sure we add metadata as expected:
https://docs.bugsnag.com/platforms/ruby/rails/reporting-handled-errors/#add_metadata
2024-11-06 14:01:48 +11:00
Ryan Murphy
008d764c34 Show alert if map cannot load 2024-11-05 18:37:17 -05:00
Gaetan Craig-Riou
9afd545897 Merge pull request #12959 from openfoodfoundation/dependabot/npm_and_yarn/jquery-ui-1.14.1
Bump jquery-ui from 1.14.0 to 1.14.1
2024-11-04 10:25:26 +11:00
Gaetan Craig-Riou
36f7063897 Merge pull request #12958 from openfoodfoundation/dependabot/npm_and_yarn/elliptic-6.6.0
Bump elliptic from 6.5.7 to 6.6.0
2024-11-04 10:00:23 +11:00
Gaetan Craig-Riou
a53a697e66 Merge pull request #12956 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.8
Bump trix from 2.1.7 to 2.1.8
2024-11-04 09:58:42 +11:00
Gaetan Craig-Riou
e9349ce79d Merge pull request #12955 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.6.12
Bump @floating-ui/dom from 1.6.11 to 1.6.12
2024-11-04 09:57:39 +11:00
bouaik
8709c137c7 Scroll to top when using pagination 2024-11-01 11:39:41 +01:00
Maikel Linke
271475893d Remove unused stock aggregation 2024-11-01 16:46:35 +11:00
filipefurtad0
49a24ebd33 Update all locales with the latest Transifex translations 2024-10-31 19:05:25 -06:00
Filipe
a08b0a8b32 Merge pull request #12917 from nicogaldamez/ignore-name-column-for-customers
Ignores name column on customer model
2024-10-31 17:35:47 -06:00
Filipe
0d97f992b9 Merge pull request #12943 from mkllnk/sanitise
Sanitise HTML attributes in the database
2024-10-31 17:32:56 -06:00
Filipe
996d2f0d46 Merge pull request #12947 from mkllnk/staging-baseline
Add scripts to save and restore baseline data
2024-10-31 16:47:23 -06:00
dependabot[bot]
f01a33c545 Bump jquery-ui from 1.14.0 to 1.14.1
Bumps [jquery-ui](https://github.com/jquery/jquery-ui) from 1.14.0 to 1.14.1.
- [Release notes](https://github.com/jquery/jquery-ui/releases)
- [Commits](https://github.com/jquery/jquery-ui/compare/1.14.0...1.14.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-31 09:58:26 +00:00
dependabot[bot]
48c88d426e Bump elliptic from 6.5.7 to 6.6.0
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.7 to 6.6.0.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.7...v6.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-31 02:16:59 +00:00
dependabot[bot]
f646a30dca Bump trix from 2.1.7 to 2.1.8
Bumps [trix](https://github.com/basecamp/trix) from 2.1.7 to 2.1.8.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.7...v2.1.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-30 09:47:49 +00:00
dependabot[bot]
1e21939963 Bump @floating-ui/dom from 1.6.11 to 1.6.12
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.6.11 to 1.6.12.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.6.12/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-30 09:47:37 +00:00
Maikel Linke
337113000f Avoid collision of test secrets
A test was failing locally because I have the OpenID client secret set
in my environment. And the dummy value was the same as another test key.
So it got replaced with the wrong value.
2024-10-30 16:03:29 +11:00
David Cook
3756e368c8 Merge pull request #12921 from rioug/12908-error-when-tax-refund
Add Bugsnag notification if we reach tax rate refund code
2024-10-30 14:51:40 +11:00
Gaetan Craig-Riou
54acc97fa1 Merge pull request #12951 from MichaelDimmitt/fix-typo
fix typo
2024-10-30 11:08:12 +11:00
michael
0f6f7b332c fix typo 2024-10-29 08:18:14 -04:00
Maikel
946471923a Merge pull request #12895 from dacook/update-release-template
Update release template
2024-10-29 16:11:18 +11:00
Maikel Linke
3f353690c7 Load staging baseline even if db in use 2024-10-29 12:44:46 +11:00
Maikel
b8822ee179 Merge pull request #12945 from mkllnk/dfc-amend-after-cancel
Amend backorder after cancellations
2024-10-29 11:26:18 +11:00
Gaetan Craig-Riou
701504fbb3 Merge pull request #12938 from mkllnk/restock
Spec restock after order cancellation
2024-10-28 09:56:01 +11:00
filipefurtad0
e9900ec1c7 Update all locales with the latest Transifex translations 2024-10-25 09:35:51 -06:00
Maikel Linke
8a0d9d99e5 Add scripts to save and restore baseline data 2024-10-25 15:07:39 +11:00
Maikel Linke
decf1e6f03 Move old Buildkite scripts to archive folder
We could delete them all but I want use some of their wisdom for new CI
scripts.
2024-10-25 14:23:33 +11:00
Maikel Linke
e0638b1765 Amend backorder after cancellations
The new job class blends code from the BackorderJob and the
CompleteBackorderJob for the specific case of adjusting quantities after
an order has been cancelled.

I would like to write a more general class which can be used for any
order amendmends but this was the quickest solution to cater for
currently running pilots.
2024-10-24 17:08:50 +11:00
Maikel Linke
a5f677f748 Create OidcAccount factory for simpler specs 2024-10-24 17:08:45 +11:00
Maikel Linke
63c83a19d6 Fix backorder spec with incomplete test data 2024-10-24 16:21:39 +11:00
Maikel
762e6ec568 Merge pull request #12940 from dacook/bug-12939
Bug 12939
2024-10-24 10:30:37 +11:00
Maikel Linke
d2e5087668 Remove redundant HTML sanitisation
We don't need to run the sanitiser each time we read an attribute. It's
a waste of time.
2024-10-24 08:47:11 +11:00
Maikel Linke
169e1cf288 Sanitise HTML attributes in the database 2024-10-24 08:47:11 +11:00
David Cook
45ca2961ec Avoid crash 2024-10-23 22:06:53 +11:00
David Cook
1d75aa45ef spec 2024-10-23 21:55:49 +11:00
David Cook
a123369f8d Merge pull request #12935 from mkllnk/dfc-doc-deterministic
Make DFC API docs deterministic
2024-10-23 16:59:55 +11:00
Maikel Linke
90589ae868 Spec restock after order cancellation 2024-10-23 16:35:59 +11:00
Maikel Linke
167a69d2ef Spec change in order state more precisely 2024-10-23 14:46:12 +11:00
Maikel Linke
09524e266f Fix method name description 2024-10-23 14:42:02 +11:00
Maikel
1c58b061b4 Merge pull request #12934 from rioug/fix-unit-price-spec
Use the correct spanish translation
2024-10-22 10:21:26 +11:00
Gaetan Craig-Riou
24df29ddf5 Use the correct spanish translation
Translation has been updated so we need to use the correct spanish
word
2024-10-22 10:10:00 +11:00
drummer83
9f084057a1 Update all locales with the latest Transifex translations 2024-10-21 11:11:39 +02:00
Gaetan Craig-Riou
3f22e8cca7 Fix Bugsnag payload data 2024-10-21 11:13:42 +11:00
Konrad
c3b5456433 Merge pull request #12912 from chahmedejaz/task/12911-remove-admin-v3-toggle
Remove the admin_style_v3 toggle from Production and Staging environments
2024-10-19 13:41:14 +02:00
Konrad
7b0519dab9 Merge pull request #12927 from mkllnk/report-dates
Filter reports by last 3 months by default
2024-10-19 13:12:20 +02:00
Ahmed Ejaz
355541e8de Update db/migrate/20241011071014_update_item_name_to_product_in_od_report.rb
Co-authored-by: David Cook <david@redcliffs.net>
2024-10-18 12:32:14 +05:00
Ahmed Ejaz
e10c3dc59b add specs for migration 2024-10-18 12:31:05 +05:00
Maikel
2609298d88 Merge pull request #12929 from mkllnk/dfc-backorder-fix
Handle case of BackorderJob having no work
2024-10-18 10:04:36 +11:00
Maikel
783de09987 Merge pull request #12932 from mkllnk/dfc-offline-token
Request offline access when connecting OIDC account
2024-10-18 10:03:25 +11:00
Maikel Linke
7b8aeb7ef8 Request offline access when connecting OIDC account 2024-10-18 09:39:49 +11:00
Maikel Linke
9c7105e764 Handle case of BackorderJob having no work 2024-10-17 15:39:32 +11:00
Maikel
afff200680 Merge pull request #12923 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.7
Bump trix from 2.1.6 to 2.1.7
2024-10-17 15:26:18 +11:00
Maikel Linke
6c431d4052 Fixup specs to use the new datepicker tools 2024-10-17 15:08:02 +11:00
Maikel Linke
2b8487cc6d Parse given datetime for reports properly 2024-10-17 15:08:02 +11:00
Maikel Linke
b9a72381fc Fix datepicker infinite loop
The new default dates were not aligned with the assumption that the
datepicker would open on the current date. The datepicker helper would
try to navigate to the previous month or next month in relation to the
reference date. Now with the wrong reference date, it would infinitely
go into the past or future, not finding the right year and month.

I chose a more robust approach of setting the year and month directly
which the user can do as well. Then we don't need a reference date.
2024-10-17 15:06:56 +11:00
Maikel Linke
ea8e925077 Show default date range to user in date picker 2024-10-17 13:16:12 +11:00
Maikel Linke
a13e5ced3d Select default dates for Packing report, too 2024-10-17 13:16:12 +11:00
Maikel Linke
aa7fffa5a2 Filter reports by last 3 months by default
The values are not shown on the screen and the user doesn't know which
default dates are applied but the filtering works.
2024-10-17 13:16:12 +11:00
Maikel Linke
3227922c76 Use reports helper to DRY 2024-10-17 13:16:12 +11:00
Maikel Linke
aa2a5757ec Move Customers report spec to own file 2024-10-17 13:16:12 +11:00
David Cook
197363b199 Merge pull request #12924 from openfoodfoundation/dependabot/npm_and_yarn/hotwired/turbo-8.0.12
Bump @hotwired/turbo from 8.0.11 to 8.0.12
2024-10-17 09:49:22 +11:00
Konrad
a023443c75 Merge pull request #12880 from rioug/5574-fix-checkout-order-total-calc
Fix checkout order total and payment fees calculation
2024-10-16 21:16:34 +02:00
Nicolás Galdámez
2e29426834 Deletes failing test
It was a test associated with the migration from name to first_name +
last_name
2024-10-16 08:32:18 -03:00
Nicolás Galdámez
8e4d306901 Ignores name column on customer model
It's not being used because now there are columns for first name and
last name
2024-10-16 08:32:18 -03:00
dependabot[bot]
38196e8ff3 Bump @hotwired/turbo from 8.0.11 to 8.0.12
Bumps [@hotwired/turbo](https://github.com/hotwired/turbo) from 8.0.11 to 8.0.12.
- [Release notes](https://github.com/hotwired/turbo/releases)
- [Commits](https://github.com/hotwired/turbo/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-16 09:12:53 +00:00
dependabot[bot]
475c9fb4ab Bump trix from 2.1.6 to 2.1.7
Bumps [trix](https://github.com/basecamp/trix) from 2.1.6 to 2.1.7.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.6...v2.1.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-16 09:12:41 +00:00
Ahmed Ejaz
c48162388c 12911: remove admin_style_v3 toggle for prod and staging 2024-10-16 13:14:42 +05:00
Gaetan Craig-Riou
f024aff45d Add Bugsnag notification if we reach tax rate refund code
The original Spree code allow for a tax adjustment to be considered a
refund in a specific scenario:
- instance is using inclusive tax
- instance that applies different tax rate in different tax zones

This scenario should not happen with how our instances are configured
More info: https://github.com/openfoodfoundation/openfoodnetwork/pull/6565#discussion_r566535431
2024-10-16 11:37:21 +11:00
Maikel
ed668ded0a Merge pull request #12913 from mkllnk/dfc-import-items
Import product's invalid weight as 1 item
2024-10-16 10:47:12 +11:00
Gaetan Craig-Riou
b461d499ad Merge pull request #12914 from mkllnk/remove-stock-location-from-return-authorization
Remove StockLocation from ReturnAuthorization
2024-10-16 10:26:09 +11:00
Gaetan Craig-Riou
c1c281122f Merge pull request #12898 from dacook/buu-producer-specs
[BUU] Add missing specs
2024-10-16 10:05:20 +11:00
David Cook
8c4cc051a4 Merge pull request #12916 from openfoodfoundation/dependabot/npm_and_yarn/hotwired/turbo-8.0.11
Bump @hotwired/turbo from 8.0.10 to 8.0.11
2024-10-16 10:01:50 +11:00
David Cook
d5b2408947 Reveal un-implemented tests 2024-10-16 09:51:04 +11:00
Maikel Linke
1eb70370c7 Import product's invalid weight as 1 item
We previously stored a scale which made the product screen believe that
we are dealing with weight.
2024-10-16 09:27:49 +11:00
Filipe
97b6289263 Merge pull request #12787 from rioug/move-variant-unit-attributes-to-variant
[Product Refactor] Move variant unit sizes to variant
2024-10-15 19:58:45 +01:00
dependabot[bot]
bda28dfaf7 Bump @hotwired/turbo from 8.0.10 to 8.0.11
Bumps [@hotwired/turbo](https://github.com/hotwired/turbo) from 8.0.10 to 8.0.11.
- [Release notes](https://github.com/hotwired/turbo/releases)
- [Commits](https://github.com/hotwired/turbo/compare/v8.0.10...v8.0.11)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-15 09:13:53 +00:00
Maikel Linke
d1ebe4e1d1 Make DFC API docs deterministic 2024-10-15 15:47:31 +11:00
Maikel Linke
a64aea4b9c Remove StockLocation from ReturnAuthorization
We have only one default location and don't need it associated to
anything.
2024-10-15 13:36:57 +11:00
David Cook
cc9b764f0f Fix rubocop 2024-10-15 10:37:20 +11:00
David Cook
ac5fa21ff2 Clean up 2024-10-15 10:33:20 +11:00
Gaetan Craig-Riou
781fcf21b9 Merge pull request #12910 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.4.0
Bump jasmine-core from 5.3.0 to 5.4.0
2024-10-15 10:22:30 +11:00
Gaetan Craig-Riou
56d2642191 Merge pull request #12889 from openfoodfoundation/dependabot/npm_and_yarn/trix-2.1.6
Bump trix from 2.1.5 to 2.1.6
2024-10-15 10:20:43 +11:00
Rachel Arnould
f54552f939 Merge pull request #12886 from rioug/12855-VINE-connected-app
[Citi OFN Voucher] Add VINE connected app
2024-10-14 15:32:09 +02:00
dependabot[bot]
fb5740b38b Bump trix from 2.1.5 to 2.1.6
Bumps [trix](https://github.com/basecamp/trix) from 2.1.5 to 2.1.6.
- [Release notes](https://github.com/basecamp/trix/releases)
- [Commits](https://github.com/basecamp/trix/compare/v2.1.5...v2.1.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 09:40:36 +00:00
dependabot[bot]
db14080a7f Bump jasmine-core from 5.3.0 to 5.4.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.3.0...v5.4.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>
2024-10-14 09:27:08 +00:00
Gaetan Craig-Riou
01337c12f0 Post rebase, fix product cloning spec 2024-10-14 15:02:35 +11:00
Gaetan Craig-Riou
f8eeca856e Fix invoice print specs 2024-10-14 15:02:35 +11:00
Gaetan Craig-Riou
67c11333f3 Use AdminTooltipComponent, instead of partial 2024-10-14 15:02:35 +11:00
Gaetan Craig-Riou
40afe7e0ab Fix rebase issue 2024-10-14 15:02:34 +11:00
Gaetan Craig-Riou
ef1f3207f7 Update spec/system/admin/products_v3/update_spec.rb
Co-authored-by: Maikel <maikel@email.org.au>
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
b0433bd8f5 Re add test for invalid cloned products
There is no easy way to make the original product invalid, but we can
make sure the cloned product will be invalid. The cloned product add
"COPe OF " in front of the product's name, so by starting with a name
that's long enough, the cloned product will have a name longer that 255
char and will then be invalid.
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
755a394704 Fix spec to remove reliance on browser's message
Client side validation messages depend on the browser's locale, which
we have no controll over. Now we just check a message is set.
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
04e14bf38b Per review, check value are saved in the database 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
ce0c7929a7 Per review, remove the use of raw 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
2a671d491d Remove commented out code 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
7c2c614f90 Update spec/models/spree/variant_spec.rb
Co-authored-by: David Cook <david@redcliffs.net>
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
3bb2232bc1 Remove non updatable check when updating a product
After the product redactor it only checked for the "description" on
product, which is actually skipped when doing an update.
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
377f035ea8 Fix bulk coop report
The current spec is useless, but it has been addressed on master
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
dbca2e2b56 Add all columns moved to variant to ignored_columns 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
0695b434a2 Fix rebase issue 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
9db417319d Improve variant related validation when creating product
I disabled Metrics/AbcSize for ensure_standard_variant as I don't think
that's hard to understand the code. And utimately it will be removed
once product actually becomes optional.
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
a500c75ee9 Add stying for the unit pop out 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
630c398b12 Move unit popout css to a partial 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
64f60d1c8c Fix small bug on edit variant page
- make sure the weight is only cleared when needed
- make sure the displayed unit is up to date
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
218d07c90d Fix product import controller 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
83a619b097 Fix bulk order management page 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
fa986f3fc2 Fix orders and fulfillment report 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
977b6e6c2a Fix minor differences in local env and CI 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
f7446749ff Fix Unit price system spec 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
844cab458e Post rebase fix product import system spec 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
8ec1f61cd7 Fix legacy bulk edit product system spec 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
893b541dca Fix product system spec
The pending spec are to be fix after a rebase, master currently as
some changes which will make this easier
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
4ae392490b Fix variant system spec 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
cda57fdb44 Add toggleOnHand action
It replicate the behavior of setOnDemand angular directive
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
25171413ef Update Spree::Price parsing to match LocalizedNumber.parse
Spree::Price parsing was returning 0.0 when given a an empty string as
price, resulting in a variant being valid even if no price was given. It
only happened if `Spree::LocalizedNumber` wasn't used.
Spree::LocalizedNumber` return nil if given a blank number.
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
4ad6971121 Fix Bulk product edit system spec after rebase 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
8f38762393 Add missing translations for variant form 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
d55950a3c5 Fix rebase issue 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
45075a0ccd Fix rebase typo 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
144a09916c Use instance_double instead of double
Instance double, amongst other thing,  verifies that any methods being
stubbed would be present on an instance of the class
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
00dfe6810f Fix ProductDuplicator
There isn't away I could think of to create an invalid product, so I
removed those test
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
058d7eeb69 Use unit_value_with_description 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
324a4ff591 Backport fix for hungarian instance 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
7f16b6acde Update variant form and rip out angular 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
ce268ec175 Add systemOfMeasurement to VariantUnitManager 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
cc85fed7cc Add localizeCurrency and specs 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
45b0686130 Add PriceParser and UnitPrices and specs
This is in preparation for removing angular from the variant update
page.

Converted using  https://www.codeconvert.ai/coffeescript-to-javascript-converter
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
4cd83d3fd4 Prettify javascript
Also update .prettierignore so that spec files get prettified as well
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
768825d689 Fix Bulk Edit product part 2
Note, the empty entry for unit scale need a css fix , currently showing
at half height
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
e8234ee4a0 Fix Bulk products edit page , part 1 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
94030527a4 Update jest configuration to include webpacker dir
This allows the test environment to correctly resolve import of
services in controller ie: `import OptionValueNamer from
"js/services/option_value_namer";`

The added benefit is we can now import package to be tested directly
without having to specify the whole relative path ie in test file you
can do : `import variant_controller from "controllers/variant_controller";`
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
6ff9650eaf Fix legacy bulk edit products UI 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
b1b534aa1b Fix product and variant api serializer 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
cd74a73680 Consolidate angular option value namer spec
Merge the two spec files into the correct one.
2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
36c4d24c93 Fix angular option value namer 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
9b4cd014bf Fix DFC supplied product builder 2024-10-14 15:01:18 +11:00
Gaetan Craig-Riou
c8bf23bdc2 Fix UnitPrice spec 2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
df82dd0759 Fix API v0 variants controller spec 2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
5ec39f994a Fix spree admin products controller spec 2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
8a31153d6d Fix API v0 products controller spec 2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
4109fbde70 Fix variant controller spec 2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
37ae217afc Fix product set spec 2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
4fd115897a Refactor ProductImport::EntryValidator
Move comparaison function to ProductImport::SpreadsheetEntry
2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
e22804712e Fix product importer 2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
d7d253e58d Fix Unit Price service 2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
e2c762f06b Refactor, use instance_double in variant spec 2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
1ad7123a9d Fix Spree::LineItem 2024-10-14 14:56:47 +11:00
Gaetan Craig-Riou
1793aa3532 Migrate unit sizes to variant 2024-10-14 14:56:46 +11:00
Gaetan Craig-Riou
d0fe1585d7 Move variant unit attributes to variant 2
Update Spree::Product and spec
2024-10-14 14:56:46 +11:00
Gaetan Craig-Riou
f58a3a859f Move variant unit attributes to variant 1
Update Spree::Variant model and spec
2024-10-14 14:56:46 +11:00
Gaetan Craig-Riou
3b89cd5957 Fix option value namer
Uses the variant  variant_unit, variant_unit_name, variant_unit_scale
2024-10-14 14:56:46 +11:00
Gaetan Craig-Riou
e33ed5141b Fix weigths and measures
Use variant_unit, variant_unit_scale from the variant
2024-10-14 14:56:46 +11:00
Gaetan Craig-Riou
4d81b145ca Add variant_unit_scale, variant_unit_name to variant 2024-10-14 14:56:46 +11:00
Konrad
7211b0d64a Merge pull request #12897 from rioug/12891-product-preview-fix-price
[Product Preview] Fix price currency display
2024-10-12 18:14:01 +02:00
Ahmed Ejaz
641b7beee3 add specs 2024-10-12 04:47:45 +05:00
Ahmed Ejaz
60e8db9adc 12878: add migration to show new column product column 2024-10-12 03:52:00 +05:00
Ahmed Ejaz
b7285e48b3 12878: update unit to full_name to display in variant column 2024-10-12 03:50:11 +05:00
Maikel
52c1491b15 Merge pull request #12906 from mkllnk/dfc-stock-import
Fail gracefully on DFC product import errors
2024-10-11 13:50:09 +11:00
Maikel Linke
95ff0d8d4a Fail gracefully on DFC product import errors 2024-10-11 12:10:23 +11:00
Maikel Linke
7d2d14320f Spec that connector update fixed bug 2024-10-11 09:54:29 +11:00
Maikel
7d1551ed04 Merge pull request #12904 from mkllnk/dfc-connector
Bump DFC connector from 1.0.0.pre.alpha.12 to 1.0.0.pre.alpha.13
2024-10-11 09:52:45 +11:00
Maikel Linke
3e71459346 Update API doc 2024-10-11 09:15:42 +11:00
Maikel Linke
ce2c80283c Bump datafoodconsortium-connector from 1.0.0.pre.alpha.12 to 1.0.0.pre.alpha.13
Changed

- Use nil as default value for all types except arrays.
2024-10-11 09:12:40 +11:00
Maikel Linke
2be3f7b86d Update all locales with the latest Transifex translations 2024-10-10 17:08:38 +11:00
Maikel
2d975c5534 Merge pull request #12899 from mkllnk/dfc-stock-check
DFC Orders update for pilot 1 and 2
2024-10-10 17:06:18 +11:00
Maikel Linke
86c91143b7 Update more variant data on import 2024-10-10 16:59:04 +11:00
Maikel Linke
cde757efbd Split growing class 2024-10-10 16:58:01 +11:00
Maikel Linke
260e7ba817 Update products when importing them multiple times
Instead of creating a new variant every time.
2024-10-10 16:57:58 +11:00
Maikel Linke
bda506528f Fix import of zero-weight products
We don't allow variants to have zero weight or volume. But a DFC import
in production showed that some catalogs list products with zero weight.
Despite the products having a weight, it's simpler to treat these as
items.
2024-10-10 14:08:02 +11:00
Maikel Linke
e429cb7198 Style growing class 2024-10-10 14:06:42 +11:00
Maikel Linke
a838ef4a21 DRY DFC product import 2024-10-10 14:04:54 +11:00
Maikel Linke
f0b6403c1d Fix locally flaky spec around date filters
This spec would fail on Australian systems early in the morning or in
other timezones accordingly.
2024-10-10 09:58:01 +11:00
Maikel Linke
71ca292c92 Synchronise stock with DFC catalog during checkout
This will delay the checkout request by a few seconds if there's stock
to sync. But we minimise the chance of missing reduced stock from orders
on another platform.

We still have a gap between the checkout and placing a backorder. In
that time we can't guarantee enough stock. But let's tackle that after
the pilot.
2024-10-09 14:47:07 +11:00
David Cook
bc87c98e92 Add some specs for the producer dropdowns 2024-10-09 13:02:39 +11:00
Gaetan Craig-Riou
5b8e0d734f Use Spree::Money to display prices
This is to ensure the correct currency and currency configuration is
applied.
2024-10-09 11:02:24 +11:00
David Cook
216883101e Update release template
[skip ci]
2024-10-08 21:02:02 +11:00
Maikel Linke
adf0340153 Remove duplicate method
The method `CheckoutCallbacks#valid_order_line_items?` was a duplicate
of `OrderStockCheck#valid_order_line_items?`.

Apparently, it had been extracted twice:

 * 1d074c2151
 * 06eb98bdf4

But the first commit duplicated the method while the second moved the
original declaration.
2024-10-08 16:57:36 +11:00
Maikel Linke
664f324db6 Sync stock of multiple linked catalogs
And the logic becomes a bit simpler.
2024-10-08 16:37:35 +11:00
Gaetan Craig-Riou
08308ba08e Fix spec checking if VINE api is set up
The condition for checking the error now match a real scenario
2024-10-08 16:15:35 +11:00
Maikel Linke
c609107379 Avoid race condition between checkout and stock sync 2024-10-08 16:03:10 +11:00
Gaetan Craig-Riou
df67b53971 Re add VINE_API_URL env variable
And add error handling if the variable is not set
2024-10-08 13:26:57 +11:00
Maikel
6f2c5b5f7f Merge pull request #12888 from mkllnk/dfc-stock
[DFC Orders] Backorder stock controlled products
2024-10-08 10:57:59 +11:00
Gaetan Craig-Riou
a3d8ae693d Add encryption for ConnectedApps::Vine#data
Added layer of security, we encrypt the API key and related secret.
It requires setting up some encryption keys that can be generated wiht
`bin/rails db:encryption:init`
2024-10-07 15:09:58 +11:00
Gaetan Craig-Riou
b14a1e72f3 Handle api secret
The VINE Api require a secret and an API key to be used. The secret is
used to sign the request. The secret is linked to the API key so we need
to store it along side the key.
2024-10-07 15:09:58 +11:00
Gaetan Craig-Riou
224738e0a1 Per review, clean up code 2024-10-07 15:09:51 +11:00
Gaetan Craig-Riou
10c3c53aad Fix translation per review. 2024-10-07 11:23:22 +11:00
Gaetan Craig-Riou
e5b7f89b32 Merge pull request #12887 from mkllnk/stock-cleanup2
Remove unneeded StockLocation code
2024-10-07 09:40:46 +11:00
filipefurtad0
b7c34ced26 Update all locales with the latest Transifex translations 2024-10-05 22:35:38 +01:00
Rachel Arnould
f5baa42bfc Merge pull request #12860 from chahmedejaz/bugfix/12852-fix-select2-choices-fixed-height
[BUU] Fix Display ordering in shopfront field to allow re-ordering of the sequence
2024-10-04 16:59:54 +02:00
Maikel Linke
86238cc0ee Update all locales with the latest Transifex translations 2024-10-04 17:10:58 +10:00
Maikel Linke
61aa02b3c3 Sync stock with DFC catalog after cart update 2024-10-04 16:25:17 +10:00
Maikel Linke
4b2099625c Clarify method action with name
Thanks, David.
2024-10-04 14:34:17 +10:00
Maikel Linke
f8bd0a1cc7 Adjust backorder for stock controlled items
We aggregate quantities over the whole order cycle to account for
cancelations and order adjustments by admins.
2024-10-03 15:58:53 +10:00
Maikel Linke
09de223c93 Backorder stock controlled products 2024-10-03 13:30:16 +10:00
Maikel Linke
74c80c9fff Prepare BackorderJob for stock controlled items
We want to trigger the backordering for any linked product now. So let's
do that check early and then select the variants in the background.
It means less data passed to the job and less space for race conditions.
2024-10-03 13:28:20 +10:00
Maikel Linke
11f3bbc566 Remove leftover recording 2024-10-03 13:28:17 +10:00
Maikel Linke
e5ee398f26 Re-use default stock location in specs 2024-10-03 08:24:16 +10:00
Maikel Linke
99c098f567 Ignore StockLocation#active, it's always active 2024-10-03 08:24:16 +10:00
Maikel Linke
4b1d7d8a41 Remove dead permission to access StockLocation
We don't have any UI to edit stock locations. So this ability is unused.
2024-10-03 08:24:15 +10:00
Maikel Linke
1e3c18f3f6 Remove unneeded method StockLocation#propagate_variant 2024-10-03 08:24:15 +10:00
Gaetan Craig-Riou
22428fc78d ConnectedApps controller, handle ConnectedApps::Vine
Add logiv to connect and disconnect VINE API plus spec
2024-10-02 16:44:27 +10:00
Gaetan Craig-Riou
f980cb45f6 Add logic for ConnectedApps::Vine#connect and disconnect 2024-10-02 16:44:27 +10:00
Gaetan Craig-Riou
097c6dee2f Add VineApiService and specs
It handles connection to the VINE API
2024-10-02 16:44:21 +10:00
Gaetan Craig-Riou
63a1b390e2 Merge pull request #12885 from mkllnk/stock-cleanup
Remove use of unnecessary backorderable default column
2024-10-02 16:24:08 +10:00
Gaetan Craig-Riou
1a30cf6495 Hide VINE token 2024-10-02 16:19:03 +10:00
Gaetan Craig-Riou
f7708d69a7 Add VineJwtService
Generate a JWT token to be used to connect to the VINE api
2024-10-02 16:16:28 +10:00
Gaetan Craig-Riou
6eb5986c68 Merge pull request #12884 from mkllnk/oc-index
Add database index to order cycle dates
2024-10-02 16:01:50 +10:00
Maikel Linke
4d9f396f40 Ignore unused column spree_stock_locations.backorderable_default 2024-10-02 15:16:05 +10:00
Maikel Linke
ac3730096f Update specs to assume backorderable default 2024-10-02 15:13:00 +10:00
Maikel Linke
662467a1a4 Use database default value for stock_items.backorderable 2024-10-02 15:09:44 +10:00
Maikel Linke
af07358914 Assume on-demand is false by default
We have only one stock location and that has the default set to false.
Now we can simplify code.

The mentioned Bugsnag notification has not been found. The stock item is
always present in this case but it doesn't hurt to guard against it with
`&.`.
2024-10-02 15:06:48 +10:00
Maikel Linke
8e7e5fc20f Add database index to order cycle dates 2024-10-02 12:05:13 +10:00
Gaetan Craig-Riou
aa5feb6605 Remove system spec
It's covered by unit test of order updater
2024-10-02 09:33:02 +10:00
Maikel
3c613f80a3 Merge pull request #12875 from macanudo527/docker/upgrade_to_dockerv2
Use Dockerv2
2024-10-02 08:53:24 +10:00
Gaetan Craig-Riou
83b6f58100 Merge pull request #12881 from mkllnk/card-payment-spec
Fix date dependent spec
2024-10-01 13:30:49 +10:00
Maikel Linke
17c32ae09a Spec change more clearly 2024-10-01 13:16:16 +10:00
Maikel Linke
0474c591de Fix date-dependent spec 2024-10-01 13:14:09 +10:00
Maikel
196956140e Merge pull request #12856 from mkllnk/dfc-order
Place backorders for linked products via DFC integration
2024-10-01 10:51:00 +10:00
Gaetan Craig-Riou
b2b6847882 Fix test data
The future is now ! :D
2024-10-01 10:38:33 +10:00
Gaetan Craig-Riou
d01d312b4f Fix updating pending payment
Check if payment actually have an adjustment before trying to update it
2024-10-01 10:22:47 +10:00
Gaetan Craig-Riou
a74cf97083 Fix spec when adding a product with transaction fee
Previous iteration did not actually check the payment fee had been
updated. It also checks the order total get correctly updated.
Spec is passing, so fixing the order updater also fix this bug
: https://github.com/openfoodfoundation/openfoodnetwork/issues/12512
2024-10-01 09:49:44 +10:00
Gaetan Craig-Riou
03dbd54b25 Fix order updater to update payment fees
The order updater did not take into account payment fees on pending
payment.
2024-09-30 16:15:59 +10:00
Gaetan Craig-Riou
fafd86a2db Revert change made in https://github.com/openfoodfoundation/openfoodnetwork/pull/12538
Although the change fix the issue in the back office scenario, it has
the side effect of getting the order total out of sync. Updating a
payment adjustment need to be followed by udpating the order total and
payment amount to keep everything in sync.
2024-09-30 16:04:44 +10:00
Gaetan Craig-Riou
91f2ca9286 Merge pull request #12734 from cillian/replace-text-angular-with-trix
Replace text angular editor with trix editor in About Us and Shopfront message fields
2024-09-30 09:40:48 +10:00
filipefurtad0
3015beab99 Update all locales with the latest Transifex translations 2024-09-27 18:02:50 -06:00
Filipe
da0660c119 Merge pull request #12857 from chahmedejaz/task/12626-add-clone-failure-explaination
[BUU] Fix No explanation why cloning failed
2024-09-27 17:58:31 -06:00
Filipe
852dd41f89 Merge pull request #12836 from wandji20/wb-OFN-11600
Add browser unsaved changes modal when navigating from order summary page [OFN-11600]
2024-09-27 17:41:04 -06:00
Filipe
48993232d1 Merge pull request #12833 from dacook/page-titles
[admin] Update page titles
2024-09-27 16:59:43 -06:00
wandji20
0002b2e019 Clean up hardcoded values and improve readability 2024-09-27 16:52:55 -06:00
wandji20
84a2e6c24d Add browser unsaved changes modal when navigation form order sumary page [OFN-11600] 2024-09-27 16:52:55 -06:00
David Cook
be4e0a259e Specify alternate html_title
Because the page title has extra content.
2024-09-27 15:48:28 -06:00
David Cook
c362e8dd0d Use page titles in HTML head
This is much  more meaningful than the controller name, and is helpful for browser tab history.
2024-09-27 15:48:28 -06:00
Ahmed Ejaz
1550ca5da0 fix the choice drag issue
- disabled width on select2-search-choice-close so that it doesn't cover whole option
2024-09-27 16:57:35 +05:00
Cillian O'Ruanaidh
f474afaceb Merge in latest :master and resolve conflict in app/models/enterprise.rb 2024-09-27 10:11:26 +01:00
Sigmund Petersen
8c71760556 Merge pull request #12784 from wandji20/wb-OFN-12774
Make OC edit warning modal cancel button redirect user to OC list [OFN-12774]
2024-09-27 10:42:54 +02:00
wandji20
37ab832b86 Remove window unload event listener from edit order cycle cancel link 2024-09-27 10:02:49 +02:00
wandji20
a11873559b Make OC edit warning modal cancel button redirect user to OC list [OFN-12774] 2024-09-27 10:02:49 +02:00
Maikel Linke
51b3770188 Keep failed backorder job in dead set
From Sidekiq's view, the job is successful when we rescue an error and
it will discard it. But we want the option to inspect the job and retry
it. Failing jobs are also reported to Bugsnag automatically.

I didn't specify `retry: false` because that discards the job as well.
But `retry: 0` should sent it straight to the dead set. No automatic
retries but it's treated like a failed job.
2024-09-26 14:32:55 +10:00
Maikel Linke
989a6d57e0 Notify user of failed backorder completion 2024-09-26 14:32:55 +10:00
Maikel Linke
495634b60c Send error notification to owner 2024-09-26 14:32:55 +10:00
Maikel Linke
49fd1dc4a6 Report backorder errors instead of failing checkout 2024-09-26 14:32:55 +10:00
Maikel Linke
e31e45b875 Place backorders in the background 2024-09-26 14:32:55 +10:00
Maikel Linke
61fec653cf Abstract OrderLocker for re-use 2024-09-26 14:32:55 +10:00
Maikel Linke
eece738865 Restore concurrency spec for the checkout
This was abandoned when the checkout was re-designed. But I want to
refactor the order locking mechanism and it would be good to know that I
don't break anything.
2024-09-26 14:32:55 +10:00
Maikel Linke
2465780c1c Import prices and stock levels from DFC catalog
We were already importing stock levels from offers but now we are
looking at catalog items as well.
2024-09-26 14:32:01 +10:00
Neal Chambers
21b7e6e567 Use Dockerv2 2024-09-26 09:21:00 +09:00
Gaetan Craig-Riou
eb8050d61d Add spec reproducing the bug 2024-09-25 15:58:28 +10:00
Maikel Linke
9f43244312 Import on-demand stock setting in DFC import 2024-09-25 10:55:41 +10:00
Maikel Linke
66f080232f Import DFC product images 2024-09-25 10:55:41 +10:00
Maikel Linke
7f62b49da5 Move catalog loading to where it's needed 2024-09-25 10:55:41 +10:00
Maikel Linke
070b93c531 Fall back to givin product id w/o retail variant 2024-09-25 10:55:40 +10:00
Maikel Linke
fb96f8f936 Fall back to given product w/o wholesale variant
The class is moving to providing all data with several methods instead
of a data class containing the information. That should be more
flexible. Still some work to do.
2024-09-25 10:55:40 +10:00
Maikel Linke
4303f0e974 Build API URLs to work with any FDC Shopify shop
We can extend this service class when there are other APIs. And
hopefully the DFC will provide a standard for this discovery at some
point.
2024-09-25 10:55:40 +10:00
Maikel Linke
2eec4c73bf Apply 4 hour completion delay only to one enterprise 2024-09-25 10:55:40 +10:00
Maikel Linke
5ef85aef3e Handle backorder cancellations 2024-09-25 10:55:40 +10:00
Maikel Linke
283db8f9d0 Adjust quantities of backorder before completion 2024-09-25 10:55:40 +10:00
Maikel Linke
95e620a78b Add lookup of variants by semantic id 2024-09-25 10:55:40 +10:00
Maikel Linke
c948efd9ce Add structure to adjust final quantities 2024-09-25 10:55:40 +10:00
Maikel Linke
95bc0cc679 Reduce complexity of BackorderJob 2024-09-25 10:55:40 +10:00
Maikel Linke
efe2b724e6 Find wholesale offer for retail variant 2024-09-25 10:55:40 +10:00
Maikel Linke
14c32c0d2e Reduce complexity 2024-09-25 10:55:40 +10:00
Maikel Linke
8f4f873ba0 Move offer finding into separate class
It's going to be more complicated.
2024-09-25 10:55:40 +10:00
Maikel Linke
c0ae2ede2c Complete order 4 hours after order cycle closed 2024-09-25 10:55:40 +10:00
Maikel Linke
3ec53a7d71 Parse updated order result 2024-09-25 10:55:40 +10:00
Maikel Linke
3849db7c48 Simplify order update call 2024-09-25 10:55:39 +10:00
Maikel Linke
7b286ea31d Complete test for FDC Orders API
Previous specs testing the live API assumed an order to be present or
not present. You needed to provide the right state before recording. I
condensed more into one test that completes the cycle and is repeatable,
assuming no order to start with.
2024-09-25 10:55:39 +10:00
Maikel Linke
3e0eb8708e Simplify service with ivar 2024-09-25 10:55:39 +10:00
Maikel Linke
c7fa3ff819 Simplify order update logic 2024-09-25 10:55:39 +10:00
Maikel Linke
f839452df9 Complete an open order 2024-09-25 10:55:39 +10:00
Maikel Linke
a7a38890f4 Add needed quantities to existing line items 2024-09-25 10:55:39 +10:00
Maikel Linke
caa6d284f0 Find and update existing open order 2024-09-25 10:55:39 +10:00
Maikel Linke
827e37cada Start moving backorder logic to service
The job class is getting too big.
2024-09-25 10:55:39 +10:00
Maikel Linke
6c6927af84 Add SaleSession with correct OrderCycle times
Apparently, the FDC implementation uses those dates to finalise orders.
2024-09-25 10:55:39 +10:00
Maikel Linke
439f0cac64 Raise errors on DFC requests
The simplified API was only returning the response body, not allowing us
to inspect if an error occurred. Since an error should be an exception
when communicating with a standardised protocol, we raise an error and
keep our simple API.
2024-09-25 10:55:39 +10:00
Maikel Linke
98966f6b89 Place backorders for DFC products 2024-09-25 10:55:39 +10:00
Maikel Linke
260e4f7b00 Create BackorderJob to place wholesale orders 2024-09-25 10:55:39 +10:00
Gaetan Craig-Riou
0824430da5 Add Vine connected app
The connection/disconnection logic is yet to be implemented
2024-09-24 10:43:55 +10:00
Gaetan Craig-Riou
099da3fc6c Merge pull request #12872 from mkllnk/enterprise-serialiser
Clean up enterprise serialiser for shop page speed
2024-09-23 10:14:44 +10:00
Gaetan Craig-Riou
7078c4ef03 Merge pull request #12871 from openfoodfoundation/dependabot/npm_and_yarn/body-parser-1.20.3
Bump body-parser from 1.20.2 to 1.20.3
2024-09-23 10:09:49 +10:00
Maikel Linke
318790d207 Remove unused join table
Enterprises used to have products and products have variants. But now
enterprises have variants directly.
2024-09-20 16:44:25 +10:00
Maikel Linke
2be8ef96be Remove unreachable code
These two methods return early if `active` is falsey. So for the rest of
the method we can assume `active` to be truthy.
2024-09-20 16:35:41 +10:00
Maikel Linke
f6e4b107b0 Update all locales with the latest Transifex translations 2024-09-20 09:46:02 +10:00
Filipe
a5d17b4da9 Merge pull request #12459 from mkllnk/description-html
Sanitise HTML in long description of enterprise
2024-09-19 16:12:45 -06:00
Filipe
83ab9594f6 Merge pull request #12854 from chahmedejaz/task/11200-conditionally-hide-producer-column
[BUU2] Hide producer column when there's only one producer in the admin account
2024-09-19 15:42:15 -06:00
Filipe
562a24524b Merge pull request #12848 from rioug/12770-product-preview
Product preview
2024-09-19 15:20:18 -06:00
Filipe
2809194b42 Merge pull request #12847 from dacook/fix-bug-12835
Fix bug #12835 for producer reports
2024-09-19 14:31:04 -06:00
Maikel
7d3eff2abb Merge pull request #12845 from wandji20/wb-OFN-12281
Fix- chore(deps): bump debounced from 0.0.5 to 1.0.2
2024-09-19 11:22:30 +10:00
dependabot[bot]
c0a49df150 Bump body-parser from 1.20.2 to 1.20.3
Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.2 to 1.20.3.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.20.2...1.20.3)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-18 23:20:33 +00:00
David Cook
f8bb33a9e8 Merge pull request #12869 from openfoodfoundation/dependabot/npm_and_yarn/hotwired/turbo-8.0.10
Bump @hotwired/turbo from 8.0.6 to 8.0.10
2024-09-19 09:19:24 +10:00
dependabot[bot]
24a25d31a0 Bump @hotwired/turbo from 8.0.6 to 8.0.10
Bumps [@hotwired/turbo](https://github.com/hotwired/turbo) from 8.0.6 to 8.0.10.
- [Release notes](https://github.com/hotwired/turbo/releases)
- [Commits](https://github.com/hotwired/turbo/compare/8.0.6...v8.0.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-18 09:50:44 +00:00
David Cook
4822a9ebcd Merge pull request #12868 from rioug/fix-buu-permission
[BUU] Add missing permission check on product actions
2024-09-18 17:25:24 +10:00
Gaetan Craig-Riou
68fa903d61 Add missing permission check on buu action
Plus request spec
2024-09-18 10:24:09 +10:00
wandji20
c2e0c94f2e Remove unused debounced plugin 2024-09-17 11:56:07 +01:00
David Cook
296997d558 Test to ensure report abilities 2024-09-17 13:23:14 +10:00
David Cook
a9ad6a2851 Grant product managers ability to create reports
We missed this in c31416c, oops.
2024-09-17 13:08:49 +10:00
David Cook
1078e7cd36 Update specs
The key here is the enterprise_relationship. This is required for the supplier to have permission to see the orders.

Curiously, the unit test still passes. All will be revealed in the next commit..
2024-09-17 12:55:22 +10:00
Gaetan Craig-Riou
40c4d38e45 Add permission check 2024-09-17 12:01:53 +10:00
Gaetan Craig-Riou
a25937321a Remove ability of any admin user to see all product
And fix related spec
2024-09-17 11:46:55 +10:00
wandji20
a8db288425 Improve debounced initialised events 2024-09-17 01:56:44 +01:00
dependabot[bot]
a106eb10b6 Bump debounced from 0.0.5 to 1.0.2
Bumps [debounced](https://github.com/hopsoft/debounced) from 0.0.5 to 1.0.2.
- [Release notes](https://github.com/hopsoft/debounced/releases)
- [Commits](https://github.com/hopsoft/debounced/commits/v1.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-17 01:36:37 +01:00
David Cook
a6d71f8dd1 Merge pull request #12861 from openfoodfoundation/dependabot/npm_and_yarn/express-4.21.0
Bump express from 4.19.2 to 4.21.0
2024-09-17 09:26:41 +10:00
David Cook
5c300d6d41 Merge pull request #12864 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.6.11
Bump @floating-ui/dom from 1.6.10 to 1.6.11
2024-09-17 09:26:24 +10:00
dependabot[bot]
bb4ff5adc2 Bump @floating-ui/dom from 1.6.10 to 1.6.11
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.6.10 to 1.6.11.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.6.11/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 09:29:53 +00:00
David Cook
9c51615b03 Anonymise customer first and last names
These were added a couple of years ago in https://github.com/openfoodfoundation/openfoodnetwork/pull/8763
But I guess we never noticed the names weren't getting anonymised.

The old 'name' field is still in the DB. It was kept for compatibility during migraiton but never cleaned up. I've added the tech debt task to the welcome new devs board now: https://github.com/openfoodfoundation/openfoodnetwork/issues/8835
2024-09-16 11:42:58 +10:00
dependabot[bot]
be548c506d Bump express from 4.19.2 to 4.21.0
Bumps [express](https://github.com/expressjs/express) from 4.19.2 to 4.21.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-15 23:49:21 +00:00
Gaetan Craig-Riou
955f8ba5ae Merge pull request #12858 from openfoodfoundation/dependabot/npm_and_yarn/hotwired/turbo-8.0.6
Bump @hotwired/turbo from 8.0.5 to 8.0.6
2024-09-16 09:48:22 +10:00
Konrad
ad94da975a Add hint about the required Transifex Client 2024-09-14 21:30:54 +02:00
drummer83
f33eb23909 Update all locales with the latest Transifex translations 2024-09-14 20:50:45 +02:00
Ahmed Ejaz
9d5806b858 12626: remove invalid_fields_error locale 2024-09-14 18:10:58 +05:00
Ahmed Ejaz
35f9c420fd 12852: remove unnecessary !important 2024-09-14 18:04:52 +05:00
Ahmed Ejaz
052e3b6380 12852: add remove choice icon for select2 2024-09-14 17:42:10 +05:00
Ahmed Ejaz
1545708d4e 12852: remove fix height for the select2-choices 2024-09-14 17:18:09 +05:00
Ahmed Ejaz
2a4d275f4b 12626: use rails default error messages 2024-09-14 02:44:43 +05:00
dependabot[bot]
9ead14b8a0 Bump @hotwired/turbo from 8.0.5 to 8.0.6
Bumps [@hotwired/turbo](https://github.com/hotwired/turbo) from 8.0.5 to 8.0.6.
- [Release notes](https://github.com/hotwired/turbo/releases)
- [Commits](https://github.com/hotwired/turbo/compare/v8.0.5...8.0.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-13 09:26:22 +00:00
Gaetan Craig-Riou
38721d9f36 Per review, fix the tab spec
Both tabs have the product name, so add check got the image on the
product details tab.
2024-09-13 14:33:46 +10:00
Gaetan Craig-Riou
3f6aaa74cc Remove duplicated styling for tabs
It uses the same styling as #admin now share via mixins
2024-09-13 14:14:30 +10:00
Ahmed Ejaz
c08683412c 12626: add a fallback message 2024-09-13 01:43:37 +05:00
Ahmed Ejaz
4a38d7ef57 12626: add explaination for clone failure 2024-09-12 03:47:53 +05:00
Ahmed Ejaz
243a4a55b4 11200: add spec for display producer column 2024-09-11 12:03:49 +05:00
Ahmed Ejaz
5be53a40a9 11200: rename products scope 2024-09-11 11:54:38 +05:00
Ahmed Ejaz
76fdf3725a 11200: add explanations 2024-09-11 11:41:01 +05:00
Gaetan Craig-Riou
67f037280a Add comment in shop view file
It wasn't possible to directly reuse the shopfront views because they
are still using angular.
2024-09-11 14:50:37 +10:00
Gaetan Craig-Riou
776b9fcdab Re enable images partial import 2024-09-11 14:24:24 +10:00
Gaetan Craig-Riou
7e84d41e8c Simplify modal opening by just rendering the modal in turbo stream 2024-09-11 14:20:41 +10:00
Gaetan Craig-Riou
68491559f3 Merge pull request #12790 from filipefurtad0/revisit_Orders_and_Distributors_report
Improves test coverage on Orders and Distributors report
2024-09-11 10:28:55 +10:00
Ahmed Ejaz
f8d3467d46 11200: add specs 2024-09-11 01:59:43 +05:00
Ahmed Ejaz
1580d539df 11200: coniditonally hide producer column 2024-09-11 00:56:52 +05:00
Maikel
e2aac8ca1d Merge pull request #12851 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.3.0
Bump jasmine-core from 5.2.0 to 5.3.0
2024-09-10 13:50:11 +10:00
Maikel
15a2513815 Merge pull request #12849 from openfoodfoundation/dependabot/npm_and_yarn/turbo_power-0.7.0
Bump turbo_power from 0.6.2 to 0.7.0
2024-09-10 13:49:26 +10:00
Gaetan Craig-Riou
00768f6ba0 Add sytem spec for product preview on product edit page 2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
908caa984b Add system spec for product preview 2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
6993750757 Fix product v3 action system spec 2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
379e5acfe5 Fix product preview modal opening
The previous solution failed to take into account that it would have been
trigger on any turbo steam rendering action, not just the product preview
one. Now the open event is dispatched when the product preview
controller is connected, which happens when the modal html is rendered.
2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
5bf6bdf7f0 Fix some display issue with long description 2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
8de7c304fe Add AdminTooltipComponent
I left the stimulus controller separated as it is generic enough
2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
b6695ba9a2 Add product preview on product edit page
Plus translation
2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
e8de76dc46 Add style for Shop
As before, move imported css to partials to avoid duplication. And use
mixin and variable to handle tooltip styling
2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
55733555bf Add style for Product details
Only import relevant css, which has been move to their own partial to
avoid duplication
2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
f59ee96011 Copy foundation-sites css relevant to the modal
The frontend is based on fondation-sites to provide responsive design,
we can't just import in the backend. So opted for copying the part we
needed
2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
2b74bbd45d Add styling for tabs 2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
d56ab9257b Add tab switch and shop tab 2024-09-10 13:29:40 +10:00
Gaetan Craig-Riou
f24a4edc68 Add product detail to the modal 2024-09-10 13:29:39 +10:00
Gaetan Craig-Riou
27dd5def57 Open modal before rendering the received html
This way we don't see a blank modal waiting for the content to load
2024-09-10 13:29:39 +10:00
Gaetan Craig-Riou
561f4648d2 Improve tooltip partial
Set up default value optiona locals variable
2024-09-10 13:29:39 +10:00
Gaetan Craig-Riou
64d3091db9 Add product preview modal
Plus open modal when clicking on "preview" link.
It's using event to communicate between stimulus controller :
https://stimulus.hotwired.dev/reference/controllers#cross-controller-coordination-with-events
2024-09-10 13:29:39 +10:00
Gaetan Craig-Riou
0a9b858f2a Add the ability to pass options ModalComponent
Now you can add another stimulus controller or action to the modal
2024-09-10 13:29:39 +10:00
Gaetan Craig-Riou
4756ab47c2 Wire preview link via turbo-stream 2024-09-10 13:29:39 +10:00
Gaetan Craig-Riou
0a04342712 Remove event listener on disconnect
It prevents memory leak
2024-09-10 13:29:39 +10:00
filipefurtad0
556539d1b1 Removes pending from fixed issue
The pending was not signalling the bug fix as ordering needed to be corrected
2024-09-09 18:07:57 -06:00
filipefurtad0
b7aaab204c Adds timer restriction with Timecop
The datet-time-picker test case was failing for me locally, but passing on GH-Actions. Controlling the time should prevent this type of flakyness
2024-09-09 18:07:57 -06:00
filipefurtad0
632184b0a8 Addresses Davids review 2024-09-09 18:07:57 -06:00
filipefurtad0
8500f6c198 Addresses reviews. The biggest change is moving the table CSS
into its helper, which touches other system specs (namely orders_and_fulfillment_spec.rb).

Rubocop fixup
2024-09-09 18:07:57 -06:00
filipefurtad0
ec4dba71c2 Adds flatpickr test 2024-09-09 18:07:57 -06:00
filipefurtad0
6117d70fae Replaces code with shared examples
This spec was appearently flaky, let's see if this change stabilizes it. It came up here: https://github.com/openfoodfoundation/openfoodnetwork/actions/runs/10639846576/job/29498582671?pr=12790

Removes CSV tests based on permissions

Not sure we need these tests, proposing to remove them and use shared examples to test file download
2024-09-09 18:07:57 -06:00
filipefurtad0
2e5c526170 Adds basic coverage on report file download
Moves file download into report helper

Removes pdf file assertation

Removes test on PDF file on sales tax report

Removes PDF testing from helper
2024-09-09 18:07:57 -06:00
filipefurtad0
32e32117e3 Adds test case around hub filters 2024-09-09 18:07:57 -06:00
filipefurtad0
2a1d494301 Adds coverage for table contents 2024-09-09 18:07:57 -06:00
filipefurtad0
fd45dea9f7 Moves report test case into dedicated file
Sets up an enterprise user instead of an admin user
2024-09-09 18:07:57 -06:00
filipefurtad0
9073f0e5a8 Update all locales with the latest Transifex translations 2024-09-09 10:13:11 -06:00
dependabot[bot]
c4f2c1c3ca Bump jasmine-core from 5.2.0 to 5.3.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.2.0...v5.3.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>
2024-09-09 09:12:18 +00:00
dependabot[bot]
a23bbf8537 Bump turbo_power from 0.6.2 to 0.7.0
Bumps [turbo_power](https://github.com/marcoroth/turbo_power) from 0.6.2 to 0.7.0.
- [Release notes](https://github.com/marcoroth/turbo_power/releases)
- [Commits](https://github.com/marcoroth/turbo_power/compare/v0.6.2...v0.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 09:11:49 +00:00
Konrad
6fac32b446 Merge pull request #12799 from chahmedejaz/bugfix/12777-incorrect-invoice-unit-display
Fix Display Unit As field is not Displaying on Invoice and Report
2024-09-06 12:55:03 +02:00
Konrad
cf21c03619 Merge pull request #12827 from johansenja/only-fetch-active-open-shops
Optimise shops page: Only inject distributors with active order cycles
2024-09-05 13:04:17 +02:00
David Cook
0f7f1130f1 Update spec/system/admin/invoice_print_spec.rb 2024-09-05 10:49:45 +02:00
Ahmed Ejaz
009d033e4c 12777: add specs 2024-09-05 10:49:45 +02:00
Ahmed Ejaz
983addff0d 12777: use unit_to_display method for variant unit
- This method prioritize display_as and after that considers options_text
2024-09-05 10:49:45 +02:00
Maikel Linke
d061fe8ad9 Remove unnecessary sanitising
Existing descriptions have been sanitised in a migration. New
descriptions are sanitised when assigned. That should cover everything.
2024-09-05 12:38:33 +10:00
Maikel Linke
53286c22ba Sanitise existing long descriptions of enterprises 2024-09-05 12:07:05 +10:00
Maikel
0cf8f079e4 Merge pull request #12840 from openfoodfoundation/dependabot/github_actions/dot-github/workflows/actions/download-artifact-4.1.7
Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows
2024-09-05 10:26:20 +10:00
Maikel
f2163a42c4 Merge pull request #12841 from filipefurtad0/reproduce_#12835
Reproduces bug #12835
2024-09-05 10:04:34 +10:00
Maikel Linke
05b25c78bb Bump all artifact actions to v4 2024-09-05 09:57:05 +10:00
filipefurtad0
cc3181c820 Adds unit spec regression test 2024-09-04 16:51:33 -06:00
Joseph Johansen
9cd39d5c91 Improve specificity of closed_shops API test data 2024-09-04 11:46:44 +01:00
Joseph Johansen
7d2f3bfa2f Ensure excluded shops are captured by #closed_shops 2024-09-04 11:46:44 +01:00
Joseph Johansen
6df0b24bcf Add implementation 2024-09-04 11:46:44 +01:00
Joseph Johansen
cf5e182cf7 Add specs for ShopsListService 2024-09-04 11:46:44 +01:00
dependabot[bot]
74bbc7c3c0 Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.1.7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4.1.7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-04 07:13:07 +00:00
filipefurtad0
4773d1c82e Reproduces bug #12835 2024-09-03 20:15:29 -06:00
Maikel
fde18ebf24 Merge pull request #12839 from johansenja/include-hidden-files-code-cov-chunk-upload
Enable include-hidden-files for uploading code coverage chunks
2024-09-04 10:19:47 +10:00
Joseph Johansen
fd2cbb67db Enable include-hidden-files for upload code coverage chunks 2024-09-03 18:50:34 +01:00
Maikel
3f1d99d77c Merge pull request #12831 from mkllnk/anonymous-orders
Share anonymised sales data on DFC API with authorised users
2024-09-03 10:59:30 +10:00
David Cook
9cfcab4f02 Merge pull request #12834 from rioug/12832-Fix-karma-test
Fix karma test
2024-09-02 14:08:23 +10:00
Gaetan Craig-Riou
703ad26773 Fix spec to make the test usefull 2024-09-02 12:23:27 +10:00
Gaetan Craig-Riou
627c9eede2 Fix spec using confirm pop up
For some reason, karma hang and fails with a timeout error if javascrpit
`confirm` pop up isn't mocked.

Plus fix spec to actually check the pop up has been displayed
2024-09-02 12:18:44 +10:00
David Cook
f9a76342f8 Merge pull request #12830 from filipefurtad0/remove_pdf_file_test_from_reports
Removes test on PDF file on sales tax report
2024-09-02 11:15:13 +10:00
Maikel Linke
d52134dad8 Filter sales data by dates 2024-08-30 15:00:06 +10:00
Maikel Linke
1016656781 Publish data only of participating distributors 2024-08-30 14:34:39 +10:00
Maikel Linke
bd1611630f Build DFC data for sales 2024-08-30 14:34:32 +10:00
Maikel Linke
ce28c10c7e Move sales data generation to a service object
There will be lots and lots. The sales data root object is also the
authenticated person. The data has its own URL (semantic id) which
doens't need to contain the user id.

The service object can also be tested more easily. I'm setting up the
test data here.
2024-08-30 14:30:46 +10:00
Maikel Linke
4342d3b912 Add DFC API endpoint for sales data 2024-08-30 14:30:46 +10:00
Maikel Linke
af3aed827a Update all locales with the latest Transifex translations 2024-08-30 09:59:49 +10:00
Maikel
f73be6447e Merge pull request #12824 from chahmedejaz/task/12823-fully-enable-admin-style-v3
[BUU] Fully enable admin_style_v3
2024-08-30 09:56:23 +10:00
Filipe
98eabc9d0f Merge pull request #12826 from chahmedejaz/bugfix/12815-fix-inconsistent-unit-values
Fix Inconsistent Behavior When Editing Products to mg Units in Hungarian Locale
2024-08-29 17:47:44 -06:00
Filipe
169cbbe1a1 Merge pull request #12793 from rioug/12768_fix_bulk_coop_report
Fix bulk coop report
2024-08-29 15:20:48 -06:00
filipefurtad0
72a503c3c1 Removes test on PDF file on sales tax report 2024-08-29 11:46:22 -06:00
Konrad
afc4c1e967 Merge pull request #12760 from wandji20/wb-OFN-12744
UX improvements for creation of new products [OFN-12744]
2024-08-29 17:22:36 +02:00
Rachel Arnould
d76c4bddb0 Merge pull request #12806 from drummer83/typo
Fix typos in "category" and unify capitals on "Back To Xyz List" buttons
2024-08-29 16:40:35 +02:00
Konrad
ae993784d8 Merge pull request #12813 from chahmedejaz/task/12810-increase-price-column-width
[BUU] Fix the too Narrow Price field
2024-08-29 15:22:27 +02:00
Filipe
d1abe22c32 Merge pull request #12805 from mkllnk/update-wicked-pdf-config-syntax
Update deprecated WickedPdf config syntax
2024-08-28 21:35:40 -06:00
Filipe
2817b8891e Merge pull request #12814 from dacook/buu/cell-padding
Increase column space in bulk products table
2024-08-28 21:30:03 -06:00
Filipe
ab87610d91 Merge pull request #12807 from kernal053/fix-broken-column-after-cloning
Fix broken column after cloning product
2024-08-28 21:03:53 -06:00
David Cook
54252f5444 Add comment 2024-08-29 09:42:59 +10:00
Ahmed Ejaz
7b6b0dbb78 12815: use en formatting for unit value conversion 2024-08-29 03:36:46 +05:00
Maikel
b2e15f52cf Merge pull request #12822 from johansenja/include-coverage-assets
Fix artifact path for simplecov report upload
2024-08-29 08:10:38 +10:00
Ahmed Ejaz
5d18c48b6c 12823: fully enable admin_style_v3 flag 2024-08-29 02:09:29 +05:00
Konrad
0c2dcbc50d Merge pull request #12812 from chahmedejaz/bugfix/12809-irresponsive-products-column-widths
[BUU] Fix Table width not responsive to the amount of selected columns
2024-08-28 16:45:07 +02:00
Joseph Johansen
4a028b2238 Fix artifact path for simplecov report upload 2024-08-28 11:09:01 +01:00
Maikel
43a366005c Merge pull request #12798 from johansenja/enable-simplecov
Set up code coverage metrics with simplecov
2024-08-28 12:07:53 +10:00
Maikel Linke
64470e977a Avoid name clash in simplecov task
A variable and a method were called the same.
Also made method calls more obvious with parenthesis.
2024-08-28 11:31:01 +10:00
Maikel Linke
a696c66857 Clean up tmp dir after test and avoid collisions
Best viewed ignoring whitespace changes.
2024-08-28 11:27:42 +10:00
Maikel Linke
cfeb0afbd4 Update all locales with the latest Transifex translations 2024-08-28 09:45:24 +10:00
Maikel Linke
4968e3dc8d Update all locales with the latest Transifex translations 2024-08-28 09:12:52 +10:00
David Cook
5324747f89 Reduce cell padding
This is closer to the original design:
* 6px between inputs
* 6px vertical padding on condensed rows
* 12px vertical padding on relaxed rows

Note that 'relaxed' rows are now smaller than the regular rows, which was not the original intention. But we haven't got spare time to do a broader review of table styles right now.
2024-08-26 16:53:19 +10:00
Gaetan Craig-Riou
ef2856d169 Remove added eventListener on disconnect
It's good practise to remove added event listener to avoid memory leak
2024-08-26 11:15:26 +10:00
Ahmed Ejaz
d9c79ee49c 12810: increase price width
- make it to 10% which makes sure that any price value acceptable by the system is displayed fully
- Reduce On Hand to 8% to make up for some space for the above
2024-08-24 17:37:59 +05:00
Ahmed Ejaz
d1f9b0855d 12809: fix the class name for the producer column in product 2024-08-24 02:05:04 +05:00
drummer83
b82726e7ba Unify the capital letters of the "Back To Xyz List" buttons and update specs
I decided to use the most frequently used version as the default, which is every word beginning with a capital letter
2024-08-23 13:23:57 +02:00
drummer83
7e7ab2e36d Fix typo in "categeory" (additional e) and update specs 2024-08-23 13:20:46 +02:00
kernal053
e35a5179bb Fix broken column after cloning product 2024-08-23 16:01:56 +05:30
Joseph Johansen
85385a1989 Rename uploads so combined report is listed first alphabetically 2024-08-23 11:26:45 +01:00
Joseph Johansen
a816814819 Update CI workflow to upload results and call rake task 2024-08-23 11:26:41 +01:00
Cillian O'Ruanaidh
60afa4d465 Revert whitespace changes in config/locales/en.yml 2024-08-23 10:07:32 +01:00
Cillian O'Ruanaidh
dd5175558e Don't make any changes to non :en locales. 2024-08-23 10:03:34 +01:00
wandji20
94b98867d8 Revert use of searchableDropdownComponent for product unit 2024-08-23 09:57:37 +01:00
wandji20
35ef1b9c7f Refactor new product dropdown to use SeachableDropdown component [OFN-12744] 2024-08-23 09:57:37 +01:00
wandji20
8badfb2505 Allow extra attributes to be passed to searchable dropdown component [OFN-12744] 2024-08-23 09:57:37 +01:00
wandji20
d61acd2cc1 Unify error messages and display on new product form [OFN-12744] 2024-08-23 09:57:37 +01:00
wandji20
7417cee20a Fix leaked trix editor event listener [OFN-12744] 2024-08-23 09:57:37 +01:00
Cillian O'Ruanaidh
98951161b1 Revert "Add Trix translations for all the different English locale regions"
This reverts commit 70ca03173c.
2024-08-23 09:54:23 +01:00
Cillian O'Ruanaidh
a745249f3b Revert "Reuse 'Please insert a URL' translation from text angular editor in the Trix editor" for all locales except :en
This reverts commit 2d6ffc0ca1.
2024-08-23 09:52:57 +01:00
Cillian O'Ruanaidh
63c62cae08 Simplify setting of Trix editor translations
Co-authored-by: David Cook <david@redcliffs.net>
2024-08-23 09:47:48 +01:00
Maikel Linke
d489c77efe Update deprecated WickedPdf config syntax
Avoids warning:

> WickedPdf.config= is deprecated and will be removed in future versions. Use WickedPdf.configure instead.
2024-08-23 15:57:59 +10:00
Maikel
e2423ad612 Merge pull request #12800 from filipefurtad0/adds_retry_option_on_edit_spec
Adds retry option to flaky edit_spec.rb
2024-08-23 12:02:59 +10:00
filipefurtad0
8b036113d9 Update all locales with the latest Transifex translations 2024-08-22 17:33:21 -06:00
Maikel
7f09044ae1 Merge pull request #12755 from johansenja/optimise-shops-page6
Optimise shops page: Enable injected enterprise data to be scoped to specific enterprise ids
2024-08-23 09:26:22 +10:00
Maikel
e9c7e1778c Merge pull request #12782 from mkllnk/reports
Add fallback report loading in case websockets fail
2024-08-23 09:23:42 +10:00
filipefurtad0
32cd14ef54 Adds slep(2) 2024-08-22 15:55:31 -06:00
filipefurtad0
ad585f1eab Adds retry option to flaky test case
...does so on another flaky test case
2024-08-22 15:55:31 -06:00
Filipe
d9368c1bfc Merge pull request #12781 from wandji20/wb-OFN-12775
Add warning popup to order cycle list [OFN-12775]
2024-08-22 15:39:27 -06:00
wandji20
b6bfb4e866 Refactor order cycle same_dates method 2024-08-22 22:21:17 +01:00
wandji20
4d222c61c6 Improve readability of order_cycle_set process method 2024-08-22 22:17:12 +01:00
wandji20
d599cf77a2 Fix failing specs 2024-08-22 22:17:12 +01:00
wandji20
8f7505d53d Refactor oc datetime content partial and include warning modal in oc list [OFN-12775] 2024-08-22 22:17:12 +01:00
wandji20
867e17301f Support passing oc confirmation params for oc list [OFN-12775] 2024-08-22 22:17:12 +01:00
wandji20
95135ca526 Move order_cycle datetime verification logic to service files [OFN-12775] 2024-08-22 22:17:12 +01:00
wandji20
de063fecb1 Move same_datetime_value method to OrderCycle model [OFN-12775] 2024-08-22 22:17:12 +01:00
Filipe
ef9ca33913 Merge pull request #12772 from drummer83/E500_sub
Display admin order page instead of shopfront order page to avoid error 500
2024-08-22 13:26:20 -06:00
Konrad
2710eafc33 Merge pull request #12779 from EdwardLi-coder/clearer_error_message_and_clean_up
Clearer error message and clean up for Product Categories
2024-08-22 18:15:50 +02:00
Joseph Johansen
4718fdb0be Optimise Spree::Taxon.supplied_taxons 2024-08-22 17:41:00 +02:00
Joseph Johansen
ce6ae04147 Add spec for confirming correct values when scoped 2024-08-22 17:41:00 +02:00
johansenja
1621f97fdb Use subject method in spec
Co-authored-by: Gaetan Craig-Riou <40413322+rioug@users.noreply.github.com>
2024-08-22 17:41:00 +02:00
Joseph Johansen
96f9894f41 Add enterprise_ids to cache key 2024-08-22 17:41:00 +02:00
Joseph Johansen
66b519bd1c Undo minor unneeded changes 2024-08-22 17:41:00 +02:00
Joseph Johansen
1b8e256e8a Add unit tests 2024-08-22 17:41:00 +02:00
Joseph Johansen
b73e529bfc Scope injected enterprise properties to specific enterprises 2024-08-22 17:41:00 +02:00
Konrad
25b1620707 Merge pull request #12743 from wandji20/wb-OFN-12214
(Fix) chore(deps): bump wicked_pdf from 2.6.3 to 2.8.0 [OFN-12214]
2024-08-22 17:34:20 +02:00
Joseph Johansen
5f9b14df9f Implement rake task to combine results 2024-08-21 13:02:31 +01:00
Joseph Johansen
922b853e3a Define specs for rake task to combine results 2024-08-21 13:02:31 +01:00
Joseph Johansen
8d747a2508 Enable coverage in base_spec_helper 2024-08-21 13:02:31 +01:00
Gaetan Craig-Riou
ef6e37e7ca Fix suppliers_of_products_distributed_by
Plus spec

Left over from product refactor, it was missed because it's not covered
by unit or integration test
2024-08-21 13:05:34 +10:00
Gaetan Craig-Riou
a50be52cde Merge pull request #12792 from openfoodfoundation/dependabot/npm_and_yarn/elliptic-6.5.7
Bump elliptic from 6.5.4 to 6.5.7
2024-08-21 09:56:19 +10:00
Gaetan Craig-Riou
d62d002bc5 Merge pull request #12780 from dacook/optimise-12714
Optimise subscriptions admin
2024-08-21 09:50:27 +10:00
Gaetan Craig-Riou
ffc2fed9b5 Remove unused code 2024-08-20 16:43:22 +10:00
Maikel
0c7448ba43 Merge pull request #12726 from mkllnk/order-stock-spec
Track (negative) stock for on-demand products and overrides
2024-08-20 15:05:16 +10:00
Gaetan Craig-Riou
24afd40414 Fix bulk coop supplier report 2024-08-20 14:32:35 +10:00
Maikel
524aec7868 Merge pull request #12788 from openfoodfoundation/dependabot/npm_and_yarn/mrujs-1.0.2
Bump mrujs from 1.0.1 to 1.0.2
2024-08-20 14:30:47 +10:00
David Cook
f2eb4b05f4 Avoid copying gigantic array 2024-08-20 14:00:13 +10:00
David Cook
ffaf1b4ea0 Cache distributor 2024-08-20 14:00:13 +10:00
David Cook
eb547f4861 Add test on number of db queries
Hmm, I think I seen an opportunity to clean up already.
2024-08-20 14:00:13 +10:00
David Cook
c9daca22d5 Rename spec to match class name 2024-08-20 14:00:13 +10:00
dependabot[bot]
7b22740289 Bump elliptic from 6.5.4 to 6.5.7
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.4 to 6.5.7.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.4...v6.5.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-20 03:52:13 +00:00
Maikel
66c8a5c424 Merge pull request #12789 from chahmedejaz/bugfix/12783-fix-artifact-upload-names-conflict
Fix Artifact Upload Conflicts with Unique Node-Based Names
2024-08-20 13:51:13 +10:00
David Cook
cfeac651b6 Merge pull request #12785 from filipefurtad0/spec_for_#12768
Reproduces S2 bug #12768
2024-08-20 13:45:07 +10:00
EdwardLi-coder
05315ff8e0 delete spree.new_taxon 2024-08-20 08:11:49 +08:00
EdwardLi-coder
c4ee6b14ff clear error message and clean up 2024-08-20 08:11:49 +08:00
filipefurtad0
a78f46259c Asserts on the flash warning first
The warning first displays "Saving..." before confirming changes are saved.
I'm not entirelly sure, but it seems that asserting on this first, before asserting on other page elements stabilizes the spec.
2024-08-19 13:58:03 -06:00
filipefurtad0
1e79fde236 Reproduces S2 bug #12768 2024-08-19 13:58:03 -06:00
Ahmed Ejaz
a9fe52a4ff Revert "12783 - validate artifact upload"
This reverts commit 075f5499f8.
2024-08-19 23:29:12 +05:00
Ahmed Ejaz
075f5499f8 12783 - validate artifact upload 2024-08-19 23:16:39 +05:00
Ahmed Ejaz
ed61f7e7bc 12783: use unique artifact name based on node index 2024-08-19 22:57:04 +05:00
dependabot[bot]
bd6019036e Bump mrujs from 1.0.1 to 1.0.2
Bumps [mrujs](https://github.com/KonnorRogers/mrujs) from 1.0.1 to 1.0.2.
- [Changelog](https://github.com/KonnorRogers/mrujs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KonnorRogers/mrujs/compare/v1.0.1...v1.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-19 09:31:52 +00:00
Konrad
0bbc3d2758 Merge pull request #12766 from mkllnk/magick-dep
Remove direct dependency on MiniMagick
2024-08-18 18:39:48 +02:00
Konrad
ae6182579b Merge pull request #12762 from EdwardLi-coder/change_colour_of_complete_order
change colour of "complete order"
2024-08-18 15:08:46 +02:00
Konrad
1e05811917 Merge pull request #12745 from johansenja/optimise-shops-page5
Improve effiency of OrderCycle.earliest_closing_times
2024-08-18 14:40:49 +02:00
Konrad
5f86a26f42 Merge pull request #12733 from wandji20/wb-OFN-6567
Update product variant unit display name, price, and total price width on different screen sizes [OFN-6567]
2024-08-18 13:25:24 +02:00
Konrad
3f1b907ef2 Merge pull request #12740 from wandji20/wb-OFN-12532-v1
Pluralize admin products search result [OFN-12532-v1]
2024-08-18 12:18:18 +02:00
Cillian O'Ruanaidh
08ab405893 Rename method for looking up trix attribute or action by translation key 2024-08-16 17:02:03 +01:00
Cillian O'Ruanaidh
ae2e92f09d Don't need to set value on hidden fields for Trix editors, it will be set automatically 2024-08-16 16:20:53 +01:00
Cillian O'Ruanaidh
b174080e29 Fix Layout/LineLength Rubocop violation in spec/system/admin/enterprises_spec.rb 2024-08-16 16:08:41 +01:00
Cillian O'Ruanaidh
a2c3ac2f60 Fix expected placeholder in test after updating translation 2024-08-16 16:00:08 +01:00
Cillian O'Ruanaidh
429e2b0a86 Fix issue where Trix editor translations were not being set correctly in Chrome 2024-08-16 15:44:09 +01:00
Cillian O'Ruanaidh
70ca03173c Add Trix translations for all the different English locale regions 2024-08-16 15:43:09 +01:00
Cillian O'Ruanaidh
7961ff7976 Don't add translations for Trix buttons and functions we are not using 2024-08-16 15:33:49 +01:00
Cillian O'Ruanaidh
2d6ffc0ca1 Reuse 'Please insert a URL' translation from text angular editor in the Trix editor 2024-08-16 15:31:59 +01:00
Maikel Linke
d9c296cdb3 Stabilise flaky report specs
It looks like we have a new race condition that may only be a problem in
specs. If you trigger one report, it displays via websockets and then
you trigger the next report, there may still be some Javascript active
that displays the first report while the second one is loading. I'm not
sure if users would navigate that fast though.

To minimise the problem, I adjusted the polling to leave more room for
the default websockets response.
2024-08-16 17:08:57 +10:00
Maikel Linke
23aa762be2 Add fallback report loading in case websockets fail
This also resolves a race condition scenario. Even if the report gets
rendered via websockets before the controller response is rendered then
the fallback script loads the report again. It's not the most beautiful
but probably okay until we replace websockts altogether.

I'm leaving websockets in at the moment because it can render the report
much quicker than polling can.
2024-08-16 15:24:34 +10:00
Maikel Linke
61f2954973 Add TurboPower Rails gem for nice helpers
The helpers are more convenient but also allow us to add options like
smooth scrolling. I thought that looked nicer and is less confusing.

Please note that the `scroll_into_view` helper uses the `targets`
attribute instead of `target`. That attribute needs CSS selectors with a
leading `#` for ids.
2024-08-16 14:37:57 +10:00
Maikel Linke
d354317c73 Replace cable_ready report loading w/ Turbo stream
I'm adding TurboPower for the scroll_into_view action. It adds all the
nice CableReady actions to Turbo Streams.

Note that I omitted `block: "start"` because that option is the default
in Javascript. And the generic `action` method doesn't support
parameters like this anyway. I'll work on that in the next commit.

I also re-introduced a race condition by rendering the "loading"
indicator after triggering the report rendering job. I'm planning to
resolve that later.
2024-08-16 14:37:57 +10:00
Maikel Linke
19ef047193 Create observable reports blob early
This will allow us to check for completion of the report later in case
websockets fail.
2024-08-16 14:37:57 +10:00
Maikel Linke
037eb456c0 Remove unused controller ivar 2024-08-16 14:37:57 +10:00
Maikel Linke
aed78f3138 Simplify reports controller code branching 2024-08-16 14:37:57 +10:00
Maikel Linke
c31416c536 Separate showing and rendering report 2024-08-16 14:37:57 +10:00
David Cook
917079931e Merge pull request #12778 from chahmedejaz/bugfix/12596-fix-annoying-oc-warning-display
[BUU] Fix Messy flash notifications on new products page
2024-08-16 10:29:43 +10:00
Ahmed Ejaz
46e54f48c9 12596: keep flash[:notice] check 2024-08-15 14:50:32 +05:00
Konrad
059dceb304 Merge pull request #12735 from chahmedejaz/bugfix/12698-fix-products-stateful-navigataion
Fix 'Back to products list' stateful navigation
2024-08-15 10:43:13 +02:00
David Cook
f0abe650f6 Update all locales with the latest Transifex translations 2024-08-15 16:56:59 +10:00
Ahmed Ejaz
282df9859e 12596 - fix specs
- As we are only showing the oc warning once now we need these steps where we are dismissing the oc warning after each navigation. Just keeping the first notice dismiss after login
2024-08-15 05:59:17 +05:00
Ahmed Ejaz
3474c60f4c 12596 - fix annoying oc warning display
- such that it only displays once per user session
2024-08-15 05:59:17 +05:00
Konrad
503148b13b Merge pull request #12653 from wandji20/wb-OFN-11613
Add warning modal to order cycle with attached schedule general setting form [OFN-11613]
2024-08-14 18:14:33 +02:00
Konrad
8442c7d334 Merge pull request #12749 from wandji20/wb-OFN-11636
Remove awesome nested set gem and dependencies [OFN-11636]
2024-08-14 17:43:11 +02:00
drummer83
f154de66f9 Display admin order page instead of shopfront order page to avoid error 500 2024-08-14 14:44:59 +02:00
wandji20
4a30493716 Improve code style [OFN-12214] 2024-08-13 18:29:27 +01:00
wandji20
f325857e1f Strip end of long invoice table header names due to names not properly parsed when converting pdf to text [OFN-12214] 2024-08-13 18:23:27 +01:00
wandji20
58872a7017 Include mail stylsheet tag in invoice pdf files and mailer layout [OFN-12214] 2024-08-13 18:23:18 +01:00
wandji20
7392079d4d Move mail related styles to asset pipeline [OFN-12214] 2024-08-13 17:11:29 +01:00
wandji20
506126c1d3 Bump wicked_pdf to version 2.8.1 2024-08-13 17:11:29 +01:00
wandji20
fa004d0897 Remove wicked pdf stylsheet include tag in order report pdf [OFN-12214] 2024-08-13 17:11:29 +01:00
dependabot[bot]
db7add88fe chore(deps): bump wicked_pdf from 2.6.3 to 2.8.0
Bumps [wicked_pdf](https://github.com/mileszs/wicked_pdf) from 2.6.3 to 2.8.0.
- [Release notes](https://github.com/mileszs/wicked_pdf/releases)
- [Changelog](https://github.com/mileszs/wicked_pdf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mileszs/wicked_pdf/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-13 17:11:29 +01:00
Ahmed Ejaz
b14cd08990 12698 - keep old UI URL as it is 2024-08-13 14:23:39 +05:00
Maikel Linke
f21aca234c Remove direct dependency on MiniMagick
We still depend on it as long as we set it as image processor but now we
can switch to another image processor without changing the code around
error handling.

We now rescue from unknown errors during image processing which should
make the app more robust.
2024-08-13 15:25:58 +10:00
EdwardLi-coder
93a6ff4b50 remove background-color 2024-08-13 09:38:20 +08:00
David Cook
50ebfe412c Merge pull request #12764 from openfoodfoundation/dependabot/npm_and_yarn/js-big-decimal-2.1.0
Bump js-big-decimal from 2.0.7 to 2.1.0
2024-08-13 11:31:05 +10:00
David Cook
e59ab6b2d9 Merge pull request #12763 from openfoodfoundation/dependabot/npm_and_yarn/mrujs-1.0.1
Bump mrujs from 1.0.0 to 1.0.1
2024-08-13 11:28:24 +10:00
Gaetan Craig-Riou
417d39f684 Merge pull request #12757 from EdwardLi-coder/upload_artifact_v3_to_v4
update artifact v3 to v4
2024-08-13 09:35:04 +10:00
wandji20
35169f66dc Include order cycle spec for non-simple cycles [OFN-11613] 2024-08-12 23:16:04 +01:00
Ahmed Ejaz
64568f4aa4 Revert "test artifact upload from different nodes at the same time"
This reverts commit 8a2be468fc.
2024-08-13 00:57:58 +05:00
Ahmed Ejaz
734aebbaaa update uploaded artifact names to be different 2024-08-13 00:42:59 +05:00
Ahmed Ejaz
8a2be468fc test artifact upload from different nodes at the same time 2024-08-13 00:22:10 +05:00
Gaetan Craig-Riou
feb429fee7 Fix typo 2024-08-12 18:47:16 +01:00
wandji20
b75101f24f Fix rebase issue [OFN-11636] 2024-08-12 18:47:16 +01:00
wandji20
1e71db9315 Remove permalinmk from taxons [OFN-11636] 2024-08-12 18:47:16 +01:00
wandji20
82b742608d Remove jquery/js.tree plugin [OFN-11636] 2024-08-12 18:47:16 +01:00
Maikel Linke
49aa9e0768 Make taxonomy migration reversible 2024-08-12 18:47:16 +01:00
wandji20
a85cfab506 Remove awesome nested set gem and dependencies [OFN-11636] 2024-08-12 18:47:16 +01:00
Ahmed Ejaz
e2e3aa9281 12698: add specs 2024-08-12 15:16:47 +05:00
dependabot[bot]
6bd0f2c088 Bump js-big-decimal from 2.0.7 to 2.1.0
Bumps [js-big-decimal](https://github.com/royNiladri/js-big-decimal) from 2.0.7 to 2.1.0.
- [Release notes](https://github.com/royNiladri/js-big-decimal/releases)
- [Commits](https://github.com/royNiladri/js-big-decimal/compare/v2.0.7...v2.1.0)

---
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>
2024-08-12 09:26:19 +00:00
dependabot[bot]
ab2968ffd2 Bump mrujs from 1.0.0 to 1.0.1
Bumps [mrujs](https://github.com/KonnorRogers/mrujs) from 1.0.0 to 1.0.1.
- [Changelog](https://github.com/KonnorRogers/mrujs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KonnorRogers/mrujs/compare/v1.0.0...v1.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 09:25:57 +00:00
EdwardLi-coder
83bf19084b remove fail test 2024-08-12 16:29:52 +08:00
Edward Li
40a59c988b Merge branch 'openfoodfoundation:master' into upload_artifact_v3_to_v4 2024-08-12 16:17:53 +08:00
Gaetan Craig-Riou
43d983cac2 Remoce left over console.log 2024-08-12 09:05:48 +01:00
wandji20
ad3e772944 Refactor and update order cycle form controller [OFN-11613] 2024-08-12 09:05:48 +01:00
wandji20
6a438a07fe Add stimulus controler to monitor order cycle status message data attribute change and trigger warning modal [OFN-11613] 2024-08-12 09:05:48 +01:00
wandji20
ea238829a8 Revert front end validation and implement backend validation for changes in datetime order cycle values [OFN-11613] 2024-08-12 09:05:48 +01:00
wandji20
91fddeaa8b Fix failing spec [OFN-11613] 2024-08-12 09:05:48 +01:00
wandji20
0de8a90b14 Add warning modal to order cycle with attached schedule general setting form [OFN-11613] 2024-08-12 09:05:48 +01:00
EdwardLi-coder
9fe128d494 add fail test 2024-08-12 16:04:22 +08:00
David Cook
193e17b625 Merge pull request #12759 from EdwardLi-coder/admin_style_v3-for-75%
[BUU] Activate admin_style_v3 for 75% of users
2024-08-12 17:59:25 +10:00
David Cook
6ad03e6d5c Remove comment 2024-08-12 17:49:09 +10:00
EdwardLi-coder
97a72dfde7 change colour of "complete order" 2024-08-12 12:01:02 +08:00
Gaetan Craig-Riou
1f55ff4b72 Merge pull request #12729 from mkllnk/fdc-update
Remove now unneeded FDC compatibility code from product import
2024-08-12 11:14:44 +10:00
EdwardLi-coder
be13d43e0c delete Archive failed tests screenshots 2024-08-11 00:20:18 +08:00
EdwardLi-coder
af7b663334 update admin_style_v3-for-75% 2024-08-10 23:55:58 +08:00
EdwardLi-coder
da24638079 update artifact v3 to v4 2024-08-10 22:04:17 +08:00
Cillian O'Ruanaidh
a6d3909e95 Replace text-angular editor with trix editor in fields for shop messages and about fields for enterprises and enterprise groups 2024-08-09 10:37:23 +01:00
Maikel Linke
ec828c335d Remove superfluous FDC-specific request class 2024-08-07 15:09:05 +10:00
Maikel Linke
6d03a8ddf3 Test that the FDC is now complying with the DFC 2024-08-07 15:09:05 +10:00
Joseph Johansen
5ca7f40a4e Add unit test 2024-08-06 16:12:13 +01:00
Joseph Johansen
a2f4df191a Improve effiency of OrderCycle.earliest_closing_times 2024-08-06 16:12:13 +01:00
wandji20
b49da46842 Pluralize admin products search result [OFN-12532-v1] 2024-08-06 08:52:51 +01:00
Ahmed Ejaz
c101c4e42f 12698 - fix 'go back to products' stateful navigation 2024-08-05 13:51:59 +05:00
wandji20
2d24593403 Update product variant unit display name, price, and total price widths on different screen sizes [OFN-6567] 2024-08-02 13:03:42 +01:00
Maikel Linke
2201d2e8c2 VariantOverride with on_demand now overriding stock
Otherwise we would try to take stock from the producer stock level
without respecting their on-demand settings. So from now on:
If stock level or on_demand are set on the override then it's not using
producer stock levels.
2024-08-02 14:40:17 +10:00
Maikel Linke
b6c407971d Allow on-demand VariantOverride to track stock
We allowed this for producer stock and need to do the same for inventory
stock. This will allow us to create backorders for missing, but promised
stock.
2024-08-02 14:40:17 +10:00
Maikel Linke
cd8dc41b15 Update stock specs and add pending cases 2024-08-02 14:40:17 +10:00
Maikel Linke
a1887bdc76 Update stock levels of on-demand items
We weren't bothering with stock when items were on demand anyway. But we
want to track stock now so that we can backorder more when local stock
levels become negative.
2024-08-02 14:40:17 +10:00
Maikel Linke
e9f89362f4 Remove validation of positive stock when on demand
We weren't allowing negative stock to stop any bug from accidentally
drawing too much stock. But now we want to implement a backordering
logic that depends on negative stock levels to know how much is needed
to replenish stock levels.
2024-08-02 14:40:17 +10:00
Maikel Linke
675b7febdf Test stock logic on variant level
VariantOverrides are bolted onto variants to change their logic.
2024-08-02 14:40:17 +10:00
Maikel Linke
90fdf59415 Test current stock logic on shipment level
During checkout, stock is adjusted when a shipment is finalised. The
chain is:

* Order state change to complete.
* Trigger Order#finalize! which updates shipments.
* Trigger Shipment#finalize! which adjusts stock on the variant.
* A variant holds stock in stock items or in a variant override.
2024-08-02 14:40:17 +10:00
1788 changed files with 154569 additions and 88137 deletions

View File

@@ -1,56 +0,0 @@
version: "2"
plugins:
rubocop:
enabled: true
channel: "rubocop-1-12"
config:
file: ".rubocop.yml"
scss-lint:
enabled: true
checks:
ImportantRule:
enabled: false
VendorPrefix:
enabled: false
LeadingZero:
enabled: false
PropertySortOrder:
enabled: false
StringQuotes:
enabled: false
DeclarationOrder:
enabled: false
NestingDepth:
enabled: false
duplication:
enabled: true
exclude_patterns:
- "db/**"
- "config/initializers/active_record_postgresql_referential_integrity_patch.rb"
checks:
argument-count:
enabled: false
complex-logic:
enabled: false
file-lines:
enabled: false
method-complexity:
enabled: false
method-count:
enabled: false
method-lines:
enabled: false
nested-control-flow:
enabled: false
return-statements:
enabled: false
similar-code:
enabled: false
identical-code:
enabled: false
exclude_patterns:
- "spec/**/*"
- "vendor/**/*"
- "app/assets/javascripts/shared/*"
- "app/assets/javascripts/jquery-migrate-1.0.0.js"

9
.env
View File

@@ -61,3 +61,12 @@ SMTP_PASSWORD="f00d"
# NEW_RELIC_AGENT_ENABLED=true
# NEW_RELIC_APP_NAME="Open Food Network"
# NEW_RELIC_LICENSE_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Database encryption configuration, required for VINE connected app
# Generate with bin/rails db:encryption:init
# ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# VINE API settings
# VINE_API_URL="https://vine-staging.openfoodnetwork.org.au/api/v1"

View File

@@ -6,9 +6,9 @@
# cp .env.development .env.local
# Locale for translation. Using a locale other than `en` tests the
# successful fallback to `en`. You will also see up-to-date text used
# in production
LOCALE="en_AU"
# successful fallback to `en`. To see up-to-date text used in production,
# set another locale in a local env file.
LOCALE="en_TST"
VERBOSE_QUERY_LOGS=true
@@ -16,11 +16,17 @@ SECRET_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
OFN_REDIS_URL="redis://localhost:6379/1"
OFN_REDIS_JOBS_URL="redis://localhost:6379/2"
OFN_REDIS_CABLE_URL="redis://localhost:6379/0"
SITE_URL="0.0.0.0:3000"
SITE_URL="localhost:3000"
# Deactivate rack-timeout in development.
# https://github.com/zombocom/rack-timeout#configuring
RACK_TIMEOUT_SERVICE_TIMEOUT="0"
RACK_TIMEOUT_WAIT_TIMEOUT="0"
RACK_TIMEOUT_WAIT_OVERTIME="0"
# Database encryption configuration, required for VINE connected app
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY="dev_primary_key"
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY="dev_determinnistic_key"
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT="dev_derivation_salt"

View File

@@ -1,8 +1,17 @@
# ENV vars for the test environment
# Override locally with `.env.test.local`
# Locale for translation.
LOCALE="en_TEST"
# Test env specific variables
#
# Adjust this to your computer. When you start test-driven development, you may
# want to reduce this value to avoid waiting for a test that you expect to fail.
CAPYBARA_MAX_WAIT_TIME="10"
# General app specific variables
# Locale for translation. Using a locale other than `en` tests the
# successful fallback to `en`.
LOCALE="en_TST"
OFN_REDIS_JOBS_URL="redis://localhost:6379/2"
@@ -11,10 +20,17 @@ STRIPE_INSTANCE_SECRET_KEY="bogus_key"
STRIPE_CUSTOMER="bogus_customer"
STRIPE_ACCOUNT="bogus_account"
STRIPE_CLIENT_ID="bogus_client_id"
STRIPE_PUBLIC_TEST_API_KEY="bogus_stripe_publishable_key"
SITE_URL="test.host"
# OIDC Settings for DFC authentication
# Find secrets in BitWarden.
# To get a refresh token: log into the OIDC provider, connect your OFN user to it at /admin/oidc_settings, then copy the token from the database:
# ./bin/rails runner 'puts "OPENID_REFRESH_TOKEN=\"#{OidcAccount.last.refresh_token}\""'
OPENID_APP_ID="test-provider"
OPENID_APP_SECRET="12345"
OPENID_APP_SECRET="dummy-openid-app-secret-token"
OPENID_REFRESH_TOKEN="dummy-refresh-token"
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY="test_primary_key"
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY="test_deterministic_key"
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT="test_derivation_salt"

View File

@@ -7,11 +7,13 @@ assignees: ''
---
## 1. Preparation on Thursday
## 1. Drafting on Friday
- [ ] Merge pull requests in the [Ready To Go] column
- [ ] Include translations: `script/release/update_locales`
- You need the [Transifex Client] installed on your local dev environement to run the script.
- [ ] Increment version number: `git push upstream HEAD:refs/tags/vX.Y.Z`
Check for [minor or major breaking changes]
- Major: if server changes are required (eg. provision with ofn-install)
- Minor: larger change that is irreversible (eg. migration deleting data)
- Patch: all others. Shortcut: `script/release/tag`
@@ -25,8 +27,9 @@ assignees: ''
- [ ] Move this issue to Test Ready.
- [ ] Notify `@testers` in [#testing].
- [ ] Test build: [Deploy to Staging] with release tag.
- [ ] Notify a deployer to deploy it
## 3. Finish on Tuesday
## 3. Deployment at beginning of week
- [ ] Publish and notify [#global-community] (this is automatically posted with a plugin)
- [ ] Deploy the new release to all managed instances.
@@ -39,7 +42,7 @@ assignees: ''
</details>
- [ ] Notify [#instance-managers]:
> @instance_managers The new release has been deployed.
- [ ] [Create issue] for next release and confirm with next release manager in [#core-devs].
- [ ] [Create issue] for next release and confirm with next release drafter in [#delivery-circle].
The full process is described at https://github.com/openfoodfoundation/openfoodnetwork/wiki/Releasing.
@@ -52,4 +55,6 @@ The full process is described at https://github.com/openfoodfoundation/openfoodn
[Deploy to Staging]: https://github.com/openfoodfoundation/openfoodnetwork/actions/workflows/stage.yml
[#global-community]: https://app.slack.com/client/T02G54U79/C59ADD8F2
[Create issue]: https://github.com/openfoodfoundation/openfoodnetwork/issues/new?assignees=&labels=&projects=&template=release.md&title=Release
[#core-devs]: https://openfoodnetwork.slack.com/archives/GK2T38QPJ
[#delivery-circle]: https://openfoodnetwork.slack.com/archives/C01T75H6G0Z
[Transifex Client]: https://developers.transifex.com/docs/cli
[minor or major breaking changes]: https://github.com/openfoodfoundation/openfoodnetwork/pulls?q=label%3A%22breaking+change%22%2C%22major+breaking+change%22

View File

@@ -1,4 +1,4 @@
#### What? Why?
## What? Why?
- Closes # <!-- Insert issue number here. -->
@@ -7,7 +7,7 @@
#### What should we test?
## What should we test?
<!-- List which features should be tested and how.
This can be similar to the Steps to Reproduce in the issue.
Also think of other parts of the app which could be affected
@@ -16,7 +16,7 @@
- Visit ... page.
-
#### Release notes
## Release notes
<!-- Please select one for your PR and delete the other. -->
@@ -33,12 +33,12 @@ Changelog Category (reviewers may add a label for the release notes):
The title of the pull request will be included in the release notes.
#### Dependencies
## Dependencies
<!-- Does this PR depend on another one?
Add the link or remove this section. -->
#### Documentation updates
## Documentation updates
<!-- Are there any wiki pages that need updating after merging this PR?
List them here or remove this section. -->

View File

@@ -4,7 +4,28 @@
# Most of the configuration here is not used for security updates though.
version: 2
multi-ecosystem-groups:
turbo_power:
schedule:
interval: "daily"
updates:
- package-ecosystem: "bundler"
directory: "/"
patterns: ["turbo_power"]
multi-ecosystem-group: "turbo_power"
# Only specific requirements are specified in Gemfile, so don't touch it.
versioning-strategy: lockfile-only
- package-ecosystem: "npm"
directory: "/"
patterns: ["turbo_power"]
multi-ecosystem-group: "turbo_power"
# Only specific requirements are specified in package.json, so don't touch it.
versioning-strategy: lockfile-only
- package-ecosystem: "bundler"
directory: "/"
@@ -19,5 +40,5 @@ updates:
schedule:
interval: "daily"
# All versions are specified in package.json, so please update them.
versioning-strategy: increase
# Only specific requirements are specified in package.json, so don't touch it.
versioning-strategy: lockfile-only

6
.github/release.yml vendored
View File

@@ -14,6 +14,12 @@ changelog:
- technical changes only
- user facing changes
# These will require a minor or major version increment
- title: "Significant changes 🚀"
labels:
- breaking change
- major breaking change
# Posted in advance for #instance-managers
- title: "User-facing changes 👀"
labels:

15
.github/test-events/dependabot-pr.json vendored Normal file
View File

@@ -0,0 +1,15 @@
{
"pull_request": {
"number": 13545,
"title": "Bump test from 7.0.4 to 7.0.8",
"user": {
"login": "dependabot[bot]"
}
},
"repository": {
"owner": {
"login": "openfoodfoundation"
},
"name": "openfoodnetwork"
}
}

View File

@@ -1,51 +0,0 @@
# This workflow integrates Brakeman with GitHub's Code Scanning feature
# Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications
name: Brakeman Scan
# This section configures the trigger for the workflow. Feel free to customize depending on your convention
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
permissions:
contents: read
jobs:
brakeman-scan:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
name: Brakeman Scan
runs-on: ubuntu-latest
steps:
# Checkout the repository to the GitHub Actions runner
- name: Checkout
uses: actions/checkout@v3
# Customize the ruby version depending on your needs
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '2.7'
- name: Setup Brakeman
env:
BRAKEMAN_VERSION: '5.4.0'
run: |
gem install brakeman --version $BRAKEMAN_VERSION
# Execute Brakeman CLI and generate a SARIF output with the security issues identified during the analysis
- name: Scan
continue-on-error: true
run: |
git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3)
brakeman -f sarif -o output.sarif.json .
# Upload the SARIF file generated in the previous step
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: output.sarif.json

View File

@@ -3,7 +3,7 @@ name: Build
on:
workflow_dispatch:
push:
branches-ignore:
branches-ignore:
- 'dependabot/**'
pull_request:
@@ -17,76 +17,7 @@ permissions:
contents: read
jobs:
controllers:
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
strategy:
fail-fast: false
matrix:
# [n] - where the n is a number of parallel jobs you want to run your tests on.
# Use a higher number if you have slow tests to split them between more parallel jobs.
# Remember to update the value of the `ci_node_index` below to (0..n-1).
ci_node_total: [8]
# Indexes for parallel jobs (starting from zero).
# E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc.
ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7]
steps:
- uses: actions/checkout@v3
- name: Setup redis
uses: supercharge/redis-github-action@1.4.0
with:
redis-version: 6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
# JS is required in order for webpacker to compile, in order to render templates containing image urls
- uses: actions/setup-node@v3
with:
node-version-file: .node-version
cache: yarn
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up database
run: |
bin/rake db:create db:schema:load
- name: Run tests
env:
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC: 864ef557d85ea8e603e086c0387d5154
KNAPSACK_PRO_CI_NODE_TOTAL: ${{ matrix.ci_node_total }}
KNAPSACK_PRO_CI_NODE_INDEX: ${{ matrix.ci_node_index }}
KNAPSACK_PRO_LOG_LEVEL: info
# if you use Knapsack Pro Queue Mode you must set below env variable
# to be able to retry CI build and run previously recorded tests
# https://github.com/KnapsackPro/knapsack_pro-ruby#knapsack_pro_fixed_queue_split-remember-queue-split-on-retry-ci-node
# KNAPSACK_PRO_FIXED_QUEUE_SPLIT: false
# RSpec split test files by test examples feature - it's optional
# https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it
#KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true
KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/controllers/**/*_spec.rb}"
run: |
git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3)
bin/rake knapsack_pro:rspec
models:
controllers_and_models:
runs-on: ubuntu-22.04
services:
postgres:
@@ -116,7 +47,7 @@ jobs:
- name: Setup redis
uses: supercharge/redis-github-action@1.4.0
with:
with:
redis-version: 6
- name: Set up Ruby
@@ -124,13 +55,22 @@ jobs:
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
# JS is required in order for webpacker to compile, in order to render templates containing image urls
- uses: actions/setup-node@v3
with:
node-version-file: .node-version
cache: yarn
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up database
run: |
bin/rake db:create db:schema:load
bin/rails db:create db:schema:load
- name: Run tests
env:
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC: 09476e2ce491c12083df62768667c674
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC: 864ef557d85ea8e603e086c0387d5154
KNAPSACK_PRO_CI_NODE_TOTAL: ${{ matrix.ci_node_total }}
KNAPSACK_PRO_CI_NODE_INDEX: ${{ matrix.ci_node_index }}
KNAPSACK_PRO_LOG_LEVEL: info
@@ -141,11 +81,21 @@ jobs:
# RSpec split test files by test examples feature - it's optional
# https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it
#KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true
KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/models/**/*_spec.rb}"
KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/controllers/**/*_spec.rb,spec/models/**/*_spec.rb}"
run: |
bin/rake knapsack_pro:rspec
git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3)
bin/rails assets:precompile knapsack_pro:rspec
system_admin:
- name: Save SimpleCov file
uses: actions/upload-artifact@v4
with:
name: simplecov-chunk-controllers-${{ matrix.ci_node_index }}
path: coverage/*.*
retention-days: 2 # doesn't need to be long, because it's the combined results that matter
if-no-files-found: ignore
include-hidden-files: true
system:
runs-on: ubuntu-22.04
services:
postgres:
@@ -166,16 +116,16 @@ jobs:
# [n] - where the n is a number of parallel jobs you want to run your tests on.
# Use a higher number if you have slow tests to split them between more parallel jobs.
# Remember to update the value of the `ci_node_index` below to (0..n-1).
ci_node_total: [14]
ci_node_total: [19]
# Indexes for parallel jobs (starting from zero).
# E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc.
ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
steps:
- uses: actions/checkout@v3
- name: Setup redis
uses: supercharge/redis-github-action@1.4.0
with:
with:
redis-version: 6
- name: Set up Ruby
@@ -193,7 +143,7 @@ jobs:
- name: Set up database
run: |
bin/rake db:create db:schema:load
bin/rails db:create db:schema:load
- name: Run tests
@@ -209,94 +159,25 @@ jobs:
# RSpec split test files by test examples feature - it's optional
# https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it
#KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true
KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/system/admin/**/*_spec.rb}"
KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/system/admin/**/*_spec.rb,spec/system/consumer/**/*_spec.rb}"
run: |
bin/rake knapsack_pro:queue:rspec
bin/rails assets:precompile knapsack_pro:queue:rspec
- name: Archive failed tests screenshots
if: failure()
uses: actions/upload-artifact@v3
- name: Save SimpleCov file
uses: actions/upload-artifact@v4
with:
name: failed-tests-screenshots
path: tmp/capybara/screenshots/*.png
retention-days: 7
name: simplecov-chunk-system-${{ matrix.ci_node_index }}
path: coverage/*.*
retention-days: 2 # doesn't need to be long, because it's the combined results that matter
if-no-files-found: ignore
system_consumer:
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
strategy:
fail-fast: false
matrix:
# [n] - where the n is a number of parallel jobs you want to run your tests on.
# Use a higher number if you have slow tests to split them between more parallel jobs.
# Remember to update the value of the `ci_node_index` below to (0..n-1).
ci_node_total: [12]
# Indexes for parallel jobs (starting from zero).
# E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc.
ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
steps:
- uses: actions/checkout@v3
- name: Setup redis
uses: supercharge/redis-github-action@1.4.0
with:
redis-version: 6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- uses: actions/setup-node@v3
with:
node-version-file: .node-version
cache: yarn
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up database
run: |
bin/rake db:create db:schema:load
- name: Run tests
env:
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC: e52bd4390c853e6c5bdfe4d0334586c1
KNAPSACK_PRO_CI_NODE_TOTAL: ${{ matrix.ci_node_total }}
KNAPSACK_PRO_CI_NODE_INDEX: ${{ matrix.ci_node_index }}
KNAPSACK_PRO_LOG_LEVEL: info
# if you use Knapsack Pro Queue Mode you must set below env variable
# to be able to retry CI build and run previously recorded tests
# https://github.com/KnapsackPro/knapsack_pro-ruby#knapsack_pro_fixed_queue_split-remember-queue-split-on-retry-ci-node
KNAPSACK_PRO_FIXED_QUEUE_SPLIT: true
# RSpec split test files by test examples feature - it's optional
# https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it
#KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true
KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/system/consumer/**/*_spec.rb}"
run: |
bin/rake knapsack_pro:queue:rspec
include-hidden-files: true
- name: Archive failed tests screenshots
if: failure()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: failed-tests-screenshots
name: failed-system_${{ matrix.ci_node_index }}-tests-screenshots
path: tmp/capybara/screenshots/*.png
retention-days: 7
if-no-files-found: ignore
@@ -331,7 +212,7 @@ jobs:
- name: Setup redis
uses: supercharge/redis-github-action@1.4.0
with:
with:
redis-version: 6
- name: Set up Ruby
@@ -350,7 +231,7 @@ jobs:
- name: Set up database
run: |
bin/rake db:create db:schema:load
bin/rails db:create db:schema:load
- name: Run tests
@@ -369,16 +250,16 @@ jobs:
KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/lib/**/*_spec.rb,spec/migrations/**/*_spec.rb,spec/serializers/**/*_spec.rb,engines/**/*_spec.rb}"
run: |
bin/rake knapsack_pro:rspec
bin/rails assets:precompile knapsack_pro:rspec
- name: Archive failed tests screenshots
if: failure()
uses: actions/upload-artifact@v3
- name: Save SimpleCov file
uses: actions/upload-artifact@v4
with:
name: failed-tests-screenshots
path: tmp/capybara/screenshots/*.png
retention-days: 7
name: simplecov-chunk-engines-${{ matrix.ci_node_index }}
path: coverage/*.*
retention-days: 2 # doesn't need to be long, because it's the combined results that matter
if-no-files-found: ignore
include-hidden-files: true
test_the_rest:
runs-on: ubuntu-22.04
@@ -401,16 +282,16 @@ jobs:
# [n] - where the n is a number of parallel jobs you want to run your tests on.
# Use a higher number if you have slow tests to split them between more parallel jobs.
# Remember to update the value of the `ci_node_index` below to (0..n-1).
ci_node_total: [5]
ci_node_total: [3]
# Indexes for parallel jobs (starting from zero).
# E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc.
ci_node_index: [0, 1, 2, 3, 4]
ci_node_index: [0, 1, 2]
steps:
- uses: actions/checkout@v3
- name: Setup redis
uses: supercharge/redis-github-action@1.4.0
with:
with:
redis-version: 6
- name: Set up Ruby
@@ -429,7 +310,7 @@ jobs:
- name: Set up database
run: |
bin/rake db:create db:schema:load
bin/rails db:create db:schema:load
- name: Run tests
env:
@@ -446,7 +327,16 @@ jobs:
#KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true
KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN: "{engines/**/*_spec.rb,spec/models/**/*_spec.rb,spec/controllers/**/*_spec.rb,spec/serializers/**/*_spec.rb,spec/lib/**/*_spec.rb,spec/migrations/**/*_spec.rb,spec/system/**/*_spec.rb}"
run: |
bin/rake knapsack_pro:rspec
bin/rails assets:precompile knapsack_pro:rspec
- name: Save SimpleCov file
uses: actions/upload-artifact@v4
with:
name: simplecov-chunk-the-rest-${{ matrix.ci_node_index }}
path: coverage/*.*
retention-days: 2 # doesn't need to be long, because it's the combined results that matter
if-no-files-found: ignore
include-hidden-files: true
non_knapsack_jest_karma:
runs-on: ubuntu-22.04
@@ -485,3 +375,41 @@ jobs:
- name: Run jest tests
run: yarn jest
collate_simplecov_results:
runs-on: ubuntu-22.04
needs:
- controllers_and_models
- engines
- system
- test_the_rest
steps:
- uses: actions/checkout@v3
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Download individual results from individual runners
uses: actions/download-artifact@v4
with:
pattern: simplecov-chunk-*
path: tmp/simplecov
- name: collate results from each of the workers
run: bundle exec rake 'simplecov:collate_results[tmp/simplecov]'
- name: Upload collated results
uses: actions/upload-artifact@v4
with:
name: combined-simplecov-report
path: coverage/**/*.*
retention-days: 7
if-no-files-found: ignore
include-hidden-files: true
- name: Compare SimpleCov results with Undercover
run: |
git fetch --no-tags origin ${{ github.event.pull_request.base.ref }}:master
bundle exec undercover
if: ${{ github.ref != 'refs/heads/master' }} # Does not run on master, as we can't fetch master in the master branch

View File

@@ -1,50 +1,30 @@
name: Linters
on: [push, pull_request]
on: [pull_request]
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
rubocop:
name: runner / rubocop
lint:
name: reviewdog
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: .node-version
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- run: git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3)
- name: rubocop
uses: reviewdog/action-rubocop@v2
- uses: reviewdog/action-setup@v1
with:
rubocop_version: gemfile
rubocop_extensions: rubocop-rails:gemfile rubocop-rspec:gemfile
reporter: github-pr-check
level: error
filter_mode: nofilter
use_bundler: true
fail_on_error: true
prettier:
name: runner / prettier
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
reviewdog_version: v0.21.0
- uses: actions/setup-node@v3
with:
node-version-file: .node-version
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- run: git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3)
- name: prettier
uses: EPMatt/reviewdog-action-prettier@v1
with:
github_token: ${{ secrets.github_token }}
reporter: github-pr-check
level: error
fail_on_error: true
- run: ./script/reviewdog.sh
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.github_token }}

View File

@@ -1,51 +0,0 @@
name: 'Mayhem for API'
on: workflow_dispatch
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
test:
permissions:
contents: read # to fetch code (actions/checkout)
security-events: write # to upload SARIF results (github/codeql-action/upload-sarif)
if: ${{ github.repository_owner == 'openfoodfoundation' }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
steps:
- uses: actions/checkout@v3
- run: docker/build
- run: docker-compose up --detach
- run: until curl -f -s http://localhost:3000; do echo "waiting for api server"; sleep 1; done
- run: docker-compose exec -T db psql postgresql://ofn:f00d@localhost:5432/open_food_network_dev --command="update spree_users set spree_api_key='testing' where login='ofn@example.com'"
# equivalent to Flipper.enable(:api_v1)
- run: docker-compose exec -T db psql postgresql://ofn:f00d@localhost:5432/open_food_network_dev --command="insert into flipper_features (key, created_at, updated_at) values ('api_v1', localtimestamp, localtimestamp)"
- run: docker-compose exec -T db psql postgresql://ofn:f00d@localhost:5432/open_food_network_dev --command="insert into flipper_gates (feature_key, key, value, created_at, updated_at) values ('api_v1', 'boolean', 'true', localtimestamp, localtimestamp)"
# Run Mayhem for API
- name: Run Mayhem for API
uses: ForAllSecure/mapi-action@v1
continue-on-error: true
with:
mapi-token: ${{ secrets.MAPI_TOKEN }}
api-url: http://localhost:3000
api-spec: swagger/v1.yaml
target: openfoodfoundation/openfoodnetwork
duration: 1min
sarif-report: mapi.sarif
html-report: mapi.html
run-args: |
--header-auth
X-Api-Token: testing
# Archive HTML report
- name: Archive Mayhem for API report
uses: actions/upload-artifact@v3
with:
name: mapi-report
path: mapi.html
# Upload SARIF file (only available on public repos or github enterprise)
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: mapi.sarif

View File

@@ -0,0 +1,151 @@
name: Auto-move Dependabot PRs to Code Review
permissions:
contents: read
pull-requests: read
on:
pull_request_target:
types: [opened]
jobs:
move-pr-to-code-review:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' || startsWith(github.event.pull_request.title, 'Bump')
steps:
- name: Generate GitHub App Token
id: app-token
uses: tibdex/github-app-token@v2
with:
app_id: ${{ secrets.DEPENDABOT_PR_APP_ID }}
private_key: ${{ secrets.DEPENDABOT_PR_APP_PRIVATE_KEY }}
installation_retrieval_mode: id
installation_retrieval_payload: ${{ secrets.DEPENDABOT_PR_APP_INSTALLATION_ID }}
- name: Move PR to Code Review in Project v2
uses: actions/github-script@v7
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
const projectNumber = 8; // for "OFN Delivery board"
const org = "openfoodfoundation";
const repo = context.repo.repo;
const prNumber = context.payload.pull_request.number;
const statusFieldName = "Status";
const statusValue = "Code review 🔎";
// ---- Helper: Get PR Node ID ----
async function getPrNodeId(owner, repo, number) {
const res = await github.graphql(`
query($owner: String!, $repo: String!, $number: Int!) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $number) {
id
number
title
}
}
}
`, { owner, repo, number });
return res.repository.pullRequest.id;
}
console.log("🚀 Starting ProjectV2 automation...");
// ---- Step 1: Get Project and Fields ----
const projectRes = await github.graphql(`
query($org: String!, $number: Int!) {
organization(login: $org) {
projectV2(number: $number) {
id
title
fields(first: 50) {
nodes {
... on ProjectV2Field {
id
name
}
... on ProjectV2SingleSelectField {
id
name
options {
id
name
}
}
}
}
}
}
}
`, { org, number: projectNumber });
const project = projectRes.organization.projectV2;
if (!project) throw new Error(`❌ Project #${projectNumber} not found`);
console.log(`✅ Found project: ${project.title} (${project.id})`);
const statusField = project.fields.nodes.find(f => f.name === statusFieldName);
if (!statusField) throw new Error(`❌ Field '${statusFieldName}' not found`);
const option = statusField.options.find(o => o.name === statusValue);
if (!option) throw new Error(`❌ Option '${statusValue}' not found in '${statusFieldName}'`);
console.log(`✅ Found field '${statusFieldName}' and option '${statusValue}'`);
// ---- Step 2: Get PR Node ID ----
const prNodeId = await getPrNodeId(org, repo, prNumber);
console.log(`✅ PR #${prNumber} node ID: ${prNodeId}`);
// ---- Step 3: Check if PR is already in Project ----
const itemRes = await github.graphql(`
query($prId: ID!) {
node(id: $prId) {
... on PullRequest {
projectItems(first: 50) {
nodes {
id
project { id title }
}
}
}
}
}
`, { prId: prNodeId });
let projectItem = itemRes.node.projectItems.nodes.find(i => i.project.id === project.id);
if (!projectItem) {
console.log(" PR not yet in project, adding...");
const addRes = await github.graphql(`
mutation($projectId: ID!, $contentId: ID!) {
addProjectV2ItemById(input: {projectId: $projectId, contentId: $contentId}) {
item { id }
}
}
`, { projectId: project.id, contentId: prNodeId });
projectItem = addRes.addProjectV2ItemById.item;
console.log(`✅ Added PR to project: ${projectItem.id}`);
} else {
console.log(` PR already in project: ${projectItem.id}`);
}
// ---- Step 4: Update Status ----
await github.graphql(`
mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $optionId: String!) {
updateProjectV2ItemFieldValue(input: {
projectId: $projectId,
itemId: $itemId,
fieldId: $fieldId,
value: { singleSelectOptionId: $optionId }
}) {
projectV2Item { id }
}
}
`, {
projectId: project.id,
itemId: projectItem.id,
fieldId: statusField.id,
optionId: option.id,
});
console.log(`🎉 Moved PR #${prNumber} → '${statusValue}'`);

1
.gitignore vendored
View File

@@ -59,3 +59,4 @@ yarn-debug.log*
/config/credentials.yml.enc
/config/master.key
.secrets

View File

@@ -2,19 +2,12 @@
# frameworks such as Jekyll/Middleman
skip_frontmatter: false
inherits_from: .haml-lint_todo.yml
linters:
AltText:
enabled: false
ClassAttributeWithStaticValue:
enabled: true
ClassesBeforeIds:
enabled: true
ConsecutiveComments:
enabled: true
ConsecutiveSilentScripts:
enabled: true
max_consecutive: 2
@@ -32,7 +25,6 @@ linters:
enabled: true
LineLength:
enabled: true
max: 80
MultilinePipe:
@@ -47,24 +39,11 @@ linters:
RuboCop:
enabled: false
RubyComments:
enabled: true
SpaceBeforeScript:
enabled: true
SpaceInsideHashAttributes:
enabled: true
style: no_space
TagName:
enabled: true
TrailingWhitespace:
enabled: true
UnnecessaryInterpolation:
enabled: true
UnnecessaryStringOutput:
enabled: true

153
.haml-lint_todo.yml Normal file
View File

@@ -0,0 +1,153 @@
# This configuration was generated by
# `haml-lint --auto-gen-config`
# on 2025-10-30 09:19:50 +0100 using Haml-Lint version 0.66.0.
# The point is for the user to remove these configuration records
# one by one as the lints are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of Haml-Lint, may require this file to be generated again.
linters:
# Offense count: 35
ClassAttributeWithStaticValue:
enabled: false
# Offense count: 77
ClassesBeforeIds:
enabled: false
# Offense count: 18
ConsecutiveComments:
enabled: false
# Offense count: 22
ConsecutiveSilentScripts:
exclude:
- "app/views/admin/contents/_fieldset.html.haml"
- "app/views/admin/enterprises/form/_tag_rules.html.haml"
- "app/views/admin/order_cycles/edit.html.haml"
- "app/views/admin/products_v3/product_preview.turbo_stream.haml"
- "app/views/admin/reports/_date_range_form.html.haml"
- "app/views/checkout/_details.html.haml"
- "app/views/checkout/_payment.html.haml"
- "app/views/spree/admin/adjustments/_adjustments_table.html.haml"
- "app/views/spree/admin/orders/customer_details/_address_form.html.haml"
- "app/views/spree/admin/tax_categories/index.html.haml"
- "app/views/spree/admin/users/index.html.haml"
# Offense count: 14
FinalNewline:
exclude:
- "app/assets/javascripts/templates/shared/question_mark_with_tooltip.html.haml"
- "app/views/admin/enterprises/form/_social.html.haml"
- "app/views/admin/json/_injection_ams.html.haml"
- "app/views/admin/order_cycles/_date_time_warning_modal_content.html.haml"
- "app/views/admin/order_cycles/edit.html.haml"
- "app/views/admin/product_import/_ams_data.html.haml"
- "app/views/admin/reports/_row_group.haml"
- "app/views/admin/reports/filters/_enterprise_fee_summary.html.haml"
- "app/views/admin/reports/filters/_users_and_enterprises.html.haml"
- "app/views/shop/_blocked_cookies.html.haml"
- "app/views/spree/admin/orders/_invoice/_order_note.html.haml"
- "app/views/spree/admin/orders/invoice4.html.haml"
- "app/views/spree/admin/taxons/destroy_taxon.turbo_stream.haml"
- "app/views/spree/admin/users/_email_confirmation.html.haml"
# Offense count: 130
IdNames:
enabled: false
# Offense count: 5
Indentation:
exclude:
- "app/views/admin/products_v3/clone.turbo_stream.haml"
- "app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml"
- "app/views/spree/admin/taxons/destroy_taxon.turbo_stream.haml"
# Offense count: 191
InlineStyles:
enabled: false
# Offense count: 589
InstanceVariables:
enabled: false
# Offense count: 2
LeadingCommentSpace:
exclude:
- "app/views/admin/reports/_row_group.haml"
# Offense count: 2331
LineLength:
enabled: false
# Offense count: 1
MultilinePipe:
exclude:
- "app/views/admin/reports/_rendering_options.html.haml"
# Offense count: 2
MultilineScript:
exclude:
- "app/views/admin/products_v3/product_preview.turbo_stream.haml"
- "app/views/checkout/_voucher_section.html.haml"
# Offense count: 2
RepeatedId:
exclude:
- "app/assets/javascripts/templates/admin/save_bar.html.haml"
# Offense count: 24
RubyComments:
enabled: false
# Offense count: 104
SpaceBeforeScript:
enabled: false
# Offense count: 3345
SpaceInsideHashAttributes:
enabled: false
# Offense count: 22
TrailingEmptyLines:
enabled: false
# Offense count: 73
TrailingWhitespace:
enabled: false
# Offense count: 13
UnnecessaryInterpolation:
exclude:
- "app/components/example_component/example_component.html.haml"
- "app/views/admin/product_import/_entries_table.html.haml"
- "app/views/admin/product_import/import.html.haml"
- "app/views/admin/variant_overrides/_filters.html.haml"
- "app/views/registration/steps/_introduction.html.haml"
- "app/views/spree/order_mailer/_shipping.html.haml"
- "app/views/spree/order_mailer/invoice_email.html.haml"
- "app/views/spree/shared/_shipment_delivery_details.html.haml"
- "app/views/spree/shared/_shipment_pickup_details.html.haml"
# Offense count: 68
UnnecessaryStringOutput:
enabled: false
# Offense count: 14
ViewLength:
exclude:
- "app/assets/javascripts/templates/admin/panels/enterprise_package.html.haml"
- "app/views/admin/customers/index.html.haml"
- "app/views/admin/enterprises/_new_form.html.haml"
- "app/views/admin/enterprises/form/_shop_preferences.html.haml"
- "app/views/admin/product_import/_import_review.html.haml"
- "app/views/admin/products_v3/product_preview.turbo_stream.haml"
- "app/views/checkout/_details.html.haml"
- "app/views/groups/show.html.haml"
- "app/views/producer_mailer/order_cycle_report.html.haml"
- "app/views/shared/_footer.html.haml"
- "app/views/spree/admin/orders/bulk_management.html.haml"
- "app/views/spree/admin/orders/invoice4.html.haml"
- "app/views/spree/admin/products/new.html.haml"
- "app/views/spree/admin/variants/_form.html.haml"

View File

@@ -1,6 +0,0 @@
rubocop:
config_file: .rubocop_styleguide.yml
scss:
config_file: .scss-lint.yml
haml:
config_file: .haml-lint.yml

View File

@@ -1 +1 @@
17.9.1
24.10.0

View File

@@ -5,6 +5,7 @@
*.yaml
*.json
*.html
**/*.rb
# JS
# Enabled: app/webpacker/controllers/*.js and app/webpacker/packs/*.js
@@ -27,6 +28,5 @@ postcss.config.js
/coverage/
/engines/
/public/
/spec/
/tmp/
/vendor/

View File

@@ -4,7 +4,7 @@
#
# The configuration is split into three files. Look into those files for more details.
#
require:
plugins:
- rubocop-capybara
- rubocop-factory_bot
- rubocop-rails

View File

@@ -3,15 +3,20 @@
# These are the rules we agreed upon and we work towards.
AllCops:
NewCops: enable
MigratedSchemaVersion: "20250111000000"
Exclude:
- bin/**/*
- db/**/*
- config/**/*
- db/bad_migrations/*
- db/migrate/201*
- db/migrate/202[0-4]*
- db/schema.rb
- script/**/*
- vendor/**/*
- node_modules/**/*
# Excluding: inadequate Naming/FileName rule rejects GemFile name with camelcase
- engines/web/Gemfile
- .undercover
Bundler/DuplicatedGem:
Enabled: false
@@ -89,7 +94,7 @@ Metrics/PerceivedComplexity:
Enabled: true
Max: 14 # default 8
Naming/PredicateName:
Naming/PredicatePrefix:
Enabled: false
Naming/VariableNumber:
@@ -98,6 +103,8 @@ Naming/VariableNumber:
- street_address_2
AllowedPatterns:
- _v[\d]+
# Cf. conversation https://github.com/openfoodfoundation/openfoodnetwork/pull/13306#pullrequestreview-2831644286
- menu_[\d]
Rails/ApplicationRecord:
Exclude:
@@ -111,6 +118,10 @@ Rails/ApplicationRecord:
Rails/HasAndBelongsToMany:
Enabled: false
# Cf. conversation https://github.com/openfoodfoundation/openfoodnetwork/pull/13251
Rails/LexicallyScopedActionFilter:
Enabled: false
Rails/OutputSafety:
Exclude:
- spec/**/*

View File

@@ -1,89 +1,43 @@
# This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1400 --no-auto-gen-timestamp`
# using RuboCop version 1.64.1.
# using RuboCop version 1.81.7.
# 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: 1
# This cop supports safe autocorrection (--autocorrect).
Layout/EmptyLines:
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: RequireParenthesesForMethodChains.
Lint/AmbiguousRange:
Exclude:
- 'app/services/products_renderer.rb'
- 'app/models/concerns/permalink_generator.rb'
# Offense count: 16
# Configuration parameters: AllowComments, AllowEmptyLambdas.
Lint/EmptyBlock:
# Offense count: 6
Lint/CopDirectiveSyntax:
Exclude:
- 'engines/catalog/config/routes.rb'
- 'spec/components/distributor_title_component_spec.rb'
- 'spec/components/example_component_spec.rb'
- 'spec/controllers/admin/subscription_line_items_controller_spec.rb'
- 'spec/controllers/api/v0/shipments_controller_spec.rb'
- 'spec/controllers/concerns/extra_fields_spec.rb'
- 'spec/factories.rb'
- 'spec/factories/enterprise_factory.rb'
- 'spec/jobs/order_cycle_opened_job_spec.rb'
- 'spec/jobs/subscription_placement_job_spec.rb'
- 'spec/models/product_import/entry_validator_spec.rb'
# Offense count: 4
# Configuration parameters: AllowComments.
Lint/EmptyClass:
Exclude:
- 'spec/lib/reports/report_loader_spec.rb'
# Offense count: 1
# Configuration parameters: AllowComments.
Lint/EmptyFile:
Exclude:
- 'spec/lib/open_food_network/enterprise_injection_data_spec.rb'
- 'app/services/orders/bulk_cancel_service.rb'
- 'lib/tasks/simplecov.rake'
- 'spec/models/database_spec.rb'
- 'spec/system/admin/bulk_order_management_spec.rb'
- 'spec/system/admin/enterprise_relationships_spec.rb'
# Offense count: 2
Lint/FloatComparison:
Lint/DuplicateMethods:
Exclude:
- 'app/models/spree/order.rb'
- 'engines/order_management/app/services/order_management/subscriptions/form.rb'
# Offense count: 3
Lint/UselessConstantScoping:
Exclude:
- 'app/services/weights_and_measures.rb'
- 'lib/reporting/report_metadata_builder.rb'
# Offense count: 1
Lint/UselessOr:
Exclude:
- 'app/models/product_import/entry_validator.rb'
- 'app/models/spree/gateway/pay_pal_express.rb'
# Offense count: 1
Lint/IneffectiveAccessModifier:
Exclude:
- 'app/models/spree/user.rb'
# Offense count: 1
Lint/NoReturnInBeginEndBlocks:
Exclude:
- 'app/controllers/payment_gateways/stripe_controller.rb'
# Offense count: 4
# This cop supports unsafe autocorrection (--autocorrect-all).
Lint/RedundantDirGlobSort:
Exclude:
- 'engines/catalog/spec/spec_helper.rb'
- 'engines/dfc_provider/spec/spec_helper.rb'
- 'spec/base_spec_helper.rb'
- 'spec/system_helper.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedMethods.
# AllowedMethods: instance_of?, kind_of?, is_a?, eql?, respond_to?, equal?, presence, present?
Lint/RedundantSafeNavigation:
Exclude:
- 'app/models/spree/payment.rb'
# Offense count: 1
Lint/SelfAssignment:
Exclude:
- 'app/models/spree/order/checkout.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AutoCorrect.
Lint/UselessMethodDefinition:
Exclude:
- 'app/models/spree/gateway.rb'
# Offense count: 24
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
@@ -92,7 +46,6 @@ Metrics/AbcSize:
- 'app/controllers/admin/enterprises_controller.rb'
- 'app/controllers/payment_gateways/paypal_controller.rb'
- 'app/controllers/spree/admin/payments_controller.rb'
- 'app/controllers/spree/admin/taxons_controller.rb'
- 'app/controllers/spree/admin/variants_controller.rb'
- 'app/controllers/spree/orders_controller.rb'
- 'app/helpers/spree/admin/navigation_helper.rb'
@@ -122,12 +75,12 @@ Metrics/BlockLength:
- 'lib/tasks/data.rake'
# Offense count: 1
# Configuration parameters: CountBlocks, Max.
# Configuration parameters: CountBlocks, CountModifierForms, Max.
Metrics/BlockNesting:
Exclude:
- 'app/models/spree/payment/processing.rb'
# Offense count: 46
# Offense count: 49
# Configuration parameters: CountComments, Max, CountAsOne.
Metrics/ClassLength:
Exclude:
@@ -137,12 +90,12 @@ Metrics/ClassLength:
- 'app/controllers/admin/resource_controller.rb'
- 'app/controllers/admin/subscriptions_controller.rb'
- 'app/controllers/application_controller.rb'
- 'app/controllers/checkout_controller.rb'
- 'app/controllers/payment_gateways/paypal_controller.rb'
- 'app/controllers/spree/admin/orders_controller.rb'
- 'app/controllers/spree/admin/payment_methods_controller.rb'
- 'app/controllers/spree/admin/payments_controller.rb'
- 'app/controllers/spree/admin/products_controller.rb'
- 'app/controllers/spree/admin/users_controller.rb'
- 'app/controllers/spree/orders_controller.rb'
- 'app/models/enterprise.rb'
- 'app/models/invoice/data_presenter.rb'
@@ -168,6 +121,9 @@ Metrics/ClassLength:
- 'app/services/cart_service.rb'
- 'app/services/order_cycles/form_service.rb'
- 'app/services/orders/sync_service.rb'
- 'app/services/permissions/order.rb'
- 'app/services/products_renderer.rb'
- 'app/services/sets/product_set.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'
@@ -178,12 +134,12 @@ Metrics/ClassLength:
- 'lib/reporting/reports/enterprise_fee_summary/scope.rb'
- 'lib/reporting/reports/xero_invoices/base.rb'
# Offense count: 32
# Offense count: 37
# Configuration parameters: AllowedMethods, AllowedPatterns, Max.
Metrics/CyclomaticComplexity:
Exclude:
- 'app/controllers/admin/enterprises_controller.rb'
- 'app/controllers/spree/admin/taxons_controller.rb'
- 'app/controllers/spree/admin/payments_controller.rb'
- 'app/controllers/spree/orders_controller.rb'
- 'app/helpers/checkout_helper.rb'
- 'app/helpers/order_cycles_helper.rb'
@@ -199,24 +155,26 @@ Metrics/CyclomaticComplexity:
- 'app/models/spree/preferences/preferable_class_methods.rb'
- 'app/models/spree/return_authorization.rb'
- 'app/models/spree/tax_rate.rb'
- 'app/models/spree/variant.rb'
- 'app/models/spree/zone.rb'
- 'lib/open_food_network/enterprise_issue_validator.rb'
- 'lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb'
- 'lib/reporting/reports/orders_and_fulfillment/order_cycle_supplier_totals.rb'
- 'lib/reporting/reports/payments/itemised_payment_totals.rb'
- 'lib/reporting/reports/payments/payment_totals.rb'
- 'lib/reporting/reports/sales_tax/sales_tax_totals_by_producer.rb'
- 'lib/reporting/reports/xero_invoices/base.rb'
- 'lib/spree/core/controller_helpers/order.rb'
- 'lib/spree/core/controller_helpers/respond_with.rb'
- 'lib/spree/localized_number.rb'
- 'spec/models/product_importer_spec.rb'
# Offense count: 24
# Offense count: 22
# 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/spree/admin/navigation_helper.rb'
- 'app/models/spree/ability.rb'
- 'app/models/spree/gateway/pay_pal_express.rb'
- 'app/models/spree/order/checkout.rb'
@@ -229,7 +187,7 @@ Metrics/MethodLength:
- 'lib/spree/localized_number.rb'
- 'lib/tasks/sample_data/product_factory.rb'
# Offense count: 49
# Offense count: 10
# Configuration parameters: CountComments, Max, CountAsOne.
Metrics/ModuleLength:
Exclude:
@@ -241,46 +199,7 @@ Metrics/ModuleLength:
- 'app/helpers/spree/admin/orders_helper.rb'
- 'app/models/spree/order/checkout.rb'
- 'app/models/spree/payment/processing.rb'
- 'engines/catalog/spec/services/catalog/product_import/products_reset_strategy_spec.rb'
- 'engines/order_management/spec/services/order_management/order/updater_spec.rb'
- 'engines/order_management/spec/services/order_management/stock/package_spec.rb'
- 'engines/order_management/spec/services/order_management/subscriptions/estimator_spec.rb'
- 'engines/order_management/spec/services/order_management/subscriptions/form_spec.rb'
- 'engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb'
- 'engines/order_management/spec/services/order_management/subscriptions/summarizer_spec.rb'
- 'engines/order_management/spec/services/order_management/subscriptions/summary_spec.rb'
- 'engines/order_management/spec/services/order_management/subscriptions/validator_spec.rb'
- 'engines/order_management/spec/services/order_management/subscriptions/variants_list_spec.rb'
- 'lib/open_food_network/column_preference_defaults.rb'
- 'spec/controllers/admin/customers_controller_spec.rb'
- 'spec/controllers/admin/order_cycles_controller_spec.rb'
- 'spec/controllers/api/v0/order_cycles_controller_spec.rb'
- 'spec/controllers/api/v0/orders_controller_spec.rb'
- 'spec/controllers/payment_gateways/stripe_controller_spec.rb'
- 'spec/controllers/spree/admin/adjustments_controller_spec.rb'
- 'spec/controllers/spree/admin/payment_methods_controller_spec.rb'
- 'spec/controllers/spree/admin/variants_controller_spec.rb'
- 'spec/lib/open_food_network/address_finder_spec.rb'
- 'spec/lib/open_food_network/enterprise_fee_calculator_spec.rb'
- 'spec/lib/open_food_network/order_cycle_form_applicator_spec.rb'
- 'spec/lib/open_food_network/order_cycle_permissions_spec.rb'
- 'spec/lib/open_food_network/permissions_spec.rb'
- 'spec/lib/open_food_network/scope_variant_to_hub_spec.rb'
- 'spec/lib/open_food_network/tag_rule_applicator_spec.rb'
- 'spec/lib/reports/customers_report_spec.rb'
- 'spec/lib/reports/enterprise_fee_summary/authorizer_spec.rb'
- 'spec/lib/reports/order_cycle_management_report_spec.rb'
- 'spec/lib/reports/products_and_inventory_report_spec.rb'
- 'spec/lib/reports/users_and_enterprises_report_spec.rb'
- 'spec/models/spree/adjustment_spec.rb'
- 'spec/models/spree/credit_card_spec.rb'
- 'spec/models/spree/line_item_spec.rb'
- 'spec/models/spree/order/tax_spec.rb'
- 'spec/models/spree/product_spec.rb'
- 'spec/models/spree/shipping_method_spec.rb'
- 'spec/models/spree/tax_rate_spec.rb'
- 'spec/services/permissions/order_spec.rb'
- 'spec/services/variant_units/option_value_namer_spec.rb'
- 'spec/support/request/stripe_stubs.rb'
# Offense count: 7
@@ -297,340 +216,143 @@ Metrics/ParameterLists:
# Configuration parameters: AllowedMethods, AllowedPatterns, Max.
Metrics/PerceivedComplexity:
Exclude:
- 'app/controllers/spree/admin/taxons_controller.rb'
- 'app/models/enterprise_relationship.rb'
- 'app/models/spree/ability.rb'
- 'app/models/spree/order/checkout.rb'
# Offense count: 8
Naming/AccessorMethodName:
Exclude:
- 'app/controllers/spree/admin/taxonomies_controller.rb'
- 'app/mailers/producer_mailer.rb'
- 'app/models/spree/order.rb'
- 'app/services/checkout/post_checkout_actions.rb'
- 'lib/spree/core/controller_helpers/common.rb'
- 'spec/support/request/shop_workflow.rb'
- 'spec/support/request/web_helper.rb'
# Offense count: 1
# Configuration parameters: ForbiddenDelimiters.
# ForbiddenDelimiters: (?i-mx:(^|\s)(EO[A-Z]{1}|END)(\s|$))
Naming/HeredocDelimiterNaming:
# Configuration parameters: EnforcedStyle, AllowedPatterns, ForbiddenIdentifiers, ForbiddenPatterns.
# SupportedStyles: snake_case, camelCase
# ForbiddenIdentifiers: __id__, __send__
Naming/MethodName:
Exclude:
- 'app/models/content_configuration.rb'
# Offense count: 5
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyleForLeadingUnderscores.
# SupportedStylesForLeadingUnderscores: disallowed, required, optional
Naming/MemoizedInstanceVariableName:
Exclude:
- 'app/mailers/producer_mailer.rb'
- 'app/models/concerns/balance.rb'
- 'lib/open_food_network/address_finder.rb'
- 'engines/dfc_provider/lib/dfc_provider/catalog_item.rb'
# Offense count: 1
# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
# 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'
- 'engines/dfc_provider/lib/dfc_provider/catalog_item.rb'
# Offense count: 28
# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns.
# SupportedStyles: snake_case, normalcase, non_integer
# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64
Naming/VariableNumber:
Exclude:
- 'app/controllers/spree/orders_controller.rb'
- 'app/models/content_configuration.rb'
- 'app/models/preference_sections/main_links_section.rb'
- 'lib/spree/core/controller_helpers/common.rb'
- 'spec/controllers/spree/admin/search_controller_spec.rb'
- 'spec/factories/stock_location_factory.rb'
- 'spec/models/spree/stock_item_spec.rb'
- 'spec/models/spree/tax_rate_spec.rb'
- 'spec/requests/api/orders_spec.rb'
# Offense count: 142
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: ResponseMethods.
# ResponseMethods: response, last_response
RSpecRails/HaveHttpStatus:
Exclude:
- 'spec/controllers/admin/bulk_line_items_controller_spec.rb'
- 'spec/controllers/admin/order_cycles_controller_spec.rb'
- 'spec/controllers/admin/subscriptions_controller_spec.rb'
- 'spec/controllers/api/v0/base_controller_spec.rb'
- 'spec/controllers/api/v0/customers_controller_spec.rb'
- 'spec/controllers/api/v0/enterprises_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/product_images_controller_spec.rb'
- 'spec/controllers/api/v0/products_controller_spec.rb'
- 'spec/controllers/api/v0/promo_images_controller_spec.rb'
- 'spec/controllers/api/v0/reports/packing_report_spec.rb'
- 'spec/controllers/api/v0/reports_controller_spec.rb'
- 'spec/controllers/api/v0/shipments_controller_spec.rb'
- 'spec/controllers/api/v0/statuses_controller_spec.rb'
- 'spec/controllers/api/v0/taxons_controller_spec.rb'
- 'spec/controllers/api/v0/terms_and_conditions_controller_spec.rb'
- 'spec/controllers/api/v0/variants_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/shop_controller_spec.rb'
- 'spec/controllers/spree/admin/orders/payments/payments_controller_spec.rb'
- 'spec/controllers/spree/admin/orders_controller_spec.rb'
- 'spec/controllers/spree/admin/products_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_passwords_controller_spec.rb'
- 'spec/controllers/user_registrations_controller_spec.rb'
- 'spec/requests/api/routes_spec.rb'
- 'spec/requests/checkout/stripe_sca_spec.rb'
- 'spec/requests/home_controller_spec.rb'
- 'spec/requests/omniauth_callbacks_controller_spec.rb'
- 'spec/services/embedded_page_service_spec.rb'
- 'spec/support/api_helper.rb'
# Offense count: 8
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: numeric, symbolic, be_status
RSpecRails/HttpStatus:
Exclude:
- 'spec/controllers/spree/admin/products_controller_spec.rb'
- 'spec/requests/api/orders_spec.rb'
# Offense count: 144
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Inferences.
RSpecRails/InferredSpecType:
Exclude:
- 'engines/dfc_provider/spec/requests/addresses_spec.rb'
- 'engines/dfc_provider/spec/requests/catalog_items_spec.rb'
- 'engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb'
- 'engines/dfc_provider/spec/requests/enterprise_groups_spec.rb'
- 'engines/dfc_provider/spec/requests/enterprises_spec.rb'
- 'engines/dfc_provider/spec/requests/offers_spec.rb'
- 'engines/dfc_provider/spec/requests/persons_spec.rb'
- 'engines/dfc_provider/spec/requests/social_medias_spec.rb'
- 'engines/dfc_provider/spec/requests/supplied_products_spec.rb'
- 'engines/web/spec/helpers/cookies_policy_helper_spec.rb'
- 'spec/controllers/admin/bulk_line_items_controller_spec.rb'
- 'spec/controllers/admin/column_preferences_controller_spec.rb'
- 'spec/controllers/admin/customers_controller_spec.rb'
- 'spec/controllers/admin/enterprises_controller_spec.rb'
- 'spec/controllers/admin/inventory_items_controller_spec.rb'
- 'spec/controllers/admin/invoice_settings_controller_spec.rb'
- 'spec/controllers/admin/matomo_settings_controller_spec.rb'
- 'spec/controllers/admin/order_cycles_controller_spec.rb'
- 'spec/controllers/admin/product_import_controller_spec.rb'
- 'spec/controllers/admin/proxy_orders_controller_spec.rb'
- 'spec/controllers/admin/reports_controller_spec.rb'
- 'spec/controllers/admin/schedules_controller_spec.rb'
- 'spec/controllers/admin/stripe_accounts_controller_spec.rb'
- 'spec/controllers/admin/stripe_connect_settings_controller_spec.rb'
- 'spec/controllers/admin/subscription_line_items_controller_spec.rb'
- 'spec/controllers/admin/subscriptions_controller_spec.rb'
- 'spec/controllers/admin/tag_rules_controller_spec.rb'
- 'spec/controllers/admin/terms_of_service_files_controller_spec.rb'
- 'spec/controllers/admin/variant_overrides_controller_spec.rb'
- 'spec/controllers/api/v0/customers_controller_spec.rb'
- 'spec/controllers/api/v0/enterprise_fees_controller_spec.rb'
- 'spec/controllers/api/v0/enterprises_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/product_images_controller_spec.rb'
- 'spec/controllers/api/v0/products_controller_spec.rb'
- 'spec/controllers/api/v0/promo_images_controller_spec.rb'
- 'spec/controllers/api/v0/reports/packing_report_spec.rb'
- 'spec/controllers/api/v0/reports_controller_spec.rb'
- 'spec/controllers/api/v0/shipments_controller_spec.rb'
- 'spec/controllers/api/v0/shops_controller_spec.rb'
- 'spec/controllers/api/v0/statuses_controller_spec.rb'
- 'spec/controllers/api/v0/terms_and_conditions_controller_spec.rb'
- 'spec/controllers/api/v0/variants_controller_spec.rb'
- 'spec/controllers/base_controller_spec.rb'
- 'spec/controllers/cart_controller_spec.rb'
- 'spec/controllers/checkout_controller_spec.rb'
- 'spec/controllers/enterprises_controller_spec.rb'
- 'spec/controllers/groups_controller_spec.rb'
- 'spec/controllers/line_items_controller_spec.rb'
- 'spec/controllers/payment_gateways/paypal_controller_spec.rb'
- 'spec/controllers/payment_gateways/stripe_controller_spec.rb'
- 'spec/controllers/registration_controller_spec.rb'
- 'spec/controllers/shop_controller_spec.rb'
- 'spec/controllers/shops_controller_spec.rb'
- 'spec/controllers/spree/admin/adjustments_controller_spec.rb'
- 'spec/controllers/spree/admin/base_controller_spec.rb'
- 'spec/controllers/spree/admin/countries_controller_spec.rb'
- 'spec/controllers/spree/admin/general_settings_controller_spec.rb'
- 'spec/controllers/spree/admin/orders/customer_details_controller_spec.rb'
- 'spec/controllers/spree/admin/orders/invoices_spec.rb'
- 'spec/controllers/spree/admin/orders/payments/payments_controller_refunds_spec.rb'
- 'spec/controllers/spree/admin/orders/payments/payments_controller_spec.rb'
- 'spec/controllers/spree/admin/orders_controller_spec.rb'
- 'spec/controllers/spree/admin/overview_controller_spec.rb'
- 'spec/controllers/spree/admin/payment_methods_controller_spec.rb'
- 'spec/controllers/spree/admin/products_controller_spec.rb'
- 'spec/controllers/spree/admin/return_authorizations_controller_spec.rb'
- 'spec/controllers/spree/admin/search_controller_spec.rb'
- 'spec/controllers/spree/admin/shipping_categories_controller_spec.rb'
- 'spec/controllers/spree/admin/shipping_methods_controller_spec.rb'
- 'spec/controllers/spree/admin/tax_rates_controller_spec.rb'
- 'spec/controllers/spree/admin/tax_settings_controller_spec.rb'
- 'spec/controllers/spree/admin/variants_controller_spec.rb'
- 'spec/controllers/spree/api_keys_controller_spec.rb'
- 'spec/controllers/spree/credit_cards_controller_spec.rb'
- 'spec/controllers/spree/orders_controller_spec.rb'
- 'spec/controllers/spree/user_sessions_controller_spec.rb'
- 'spec/controllers/spree/users_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/controllers/user_passwords_controller_spec.rb'
- 'spec/controllers/user_registrations_controller_spec.rb'
- 'spec/controllers/webhook_endpoints_controller_spec.rb'
- 'spec/helpers/admin/enterprises_helper_spec.rb'
- 'spec/helpers/admin/orders_helper_spec.rb'
- 'spec/helpers/admin/reports_helper_spec.rb'
- 'spec/helpers/admin/subscriptions_helper_spec.rb'
- 'spec/helpers/application_helper_spec.rb'
- 'spec/helpers/checkout_helper_spec.rb'
- 'spec/helpers/i18n_helper_spec.rb'
- 'spec/helpers/injection_helper_spec.rb'
- 'spec/helpers/link_helper_spec.rb'
- 'spec/helpers/navigation_helper_spec.rb'
- 'spec/helpers/order_cycles_helper_spec.rb'
- 'spec/helpers/serializer_helper_spec.rb'
- 'spec/helpers/shop_helper_spec.rb'
- 'spec/helpers/spree/admin/base_helper_spec.rb'
- 'spec/helpers/spree/admin/general_settings_helper_spec.rb'
- 'spec/helpers/spree/admin/orders_helper_spec.rb'
- 'spec/helpers/spree/orders_helper_spec.rb'
- 'spec/helpers/tax_helper_spec.rb'
- 'spec/helpers/terms_and_conditions_helper_spec.rb'
- 'spec/jobs/connect_app_job_spec.rb'
- 'spec/mailers/producer_mailer_spec.rb'
- 'spec/mailers/subscription_mailer_spec.rb'
- 'spec/models/column_preference_spec.rb'
- 'spec/models/connected_app_spec.rb'
- 'spec/models/customer_spec.rb'
- 'spec/models/invoice_spec.rb'
- 'spec/models/oidc_account_spec.rb'
- 'spec/models/proxy_order_spec.rb'
- 'spec/models/report_blob_spec.rb'
- 'spec/models/semantic_link_spec.rb'
- 'spec/models/spree/gateway/stripe_sca_spec.rb'
- 'spec/models/subscription_spec.rb'
- 'spec/models/tag_rule/filter_order_cycles_spec.rb'
- 'spec/models/tag_rule/filter_payment_methods_spec.rb'
- 'spec/models/tag_rule/filter_products_spec.rb'
- 'spec/models/tag_rule/filter_shipping_methods_spec.rb'
- 'spec/models/tag_rule_spec.rb'
- 'spec/models/webhook_endpoint_spec.rb'
- 'spec/requests/admin/images_spec.rb'
- 'spec/requests/admin/product_import_spec.rb'
- 'spec/requests/admin/vouchers_spec.rb'
- 'spec/requests/api/orders_spec.rb'
- 'spec/requests/api/routes_spec.rb'
- 'spec/requests/api/v1/customers_spec.rb'
- 'spec/requests/api_docs_spec.rb'
- 'spec/requests/checkout/paypal_spec.rb'
- 'spec/requests/checkout/routes_spec.rb'
- 'spec/requests/checkout/stripe_sca_spec.rb'
- 'spec/requests/errors_spec.rb'
- 'spec/requests/home_controller_spec.rb'
- 'spec/requests/large_request_spec.rb'
- 'spec/requests/omniauth_callbacks_controller_spec.rb'
- 'spec/requests/spree/admin/overview_spec.rb'
- 'spec/requests/spree/admin/payments_spec.rb'
- 'spec/requests/voucher_adjustments_spec.rb'
- 'spec/routing/stripe_spec.rb'
# Offense count: 22
# Configuration parameters: IgnoreScopes, Include.
# Include: app/models/**/*.rb
Rails/InverseOf:
# Offense count: 60
# Configuration parameters: Mode, AllowedMethods, AllowedPatterns, AllowBangMethods, WaywardPredicates.
# AllowedMethods: call
# WaywardPredicates: nonzero?
Naming/PredicateMethod:
Exclude:
- 'app/controllers/admin/product_import_controller.rb'
- 'app/controllers/api/v0/order_cycles_controller.rb'
- 'app/controllers/spree/admin/overview_controller.rb'
- 'app/controllers/spree/admin/payments_controller.rb'
- 'app/controllers/voucher_adjustments_controller.rb'
- 'app/forms/enterprise_fees_bulk_update.rb'
- 'app/forms/schedule_form.rb'
- 'app/helpers/spree/orders_helper.rb'
- 'app/models/concerns/variant_stock.rb'
- 'app/models/enterprise.rb'
- 'app/models/enterprise_fee.rb'
- 'app/models/invoice/data_presenter.rb'
- 'app/models/order_cycle.rb'
- 'app/models/spree/country.rb'
- 'app/models/spree/inventory_unit.rb'
- 'app/models/spree/line_item.rb'
- 'app/models/product_import/entry_processor.rb'
- 'app/models/product_import/entry_validator.rb'
- 'app/models/spree/order.rb'
- 'app/models/spree/order_contents.rb'
- 'app/models/spree/payment.rb'
- 'app/models/spree/price.rb'
- 'app/models/spree/product.rb'
- 'app/models/spree/stock_item.rb'
- 'app/models/spree/taxonomy.rb'
- 'app/models/spree/variant.rb'
- 'app/models/subscription_line_item.rb'
- 'app/models/spree/payment/processing.rb'
- 'app/models/spree/state_change.rb'
- 'app/models/spree/user.rb'
- 'app/reflexes/admin/orders_reflex.rb'
- 'app/serializers/api/admin/for_order_cycle/enterprise_serializer.rb'
- 'app/serializers/api/admin/index_enterprise_serializer.rb'
- 'app/serializers/api/admin/index_order_cycle_serializer.rb'
- 'app/serializers/api/admin/order_cycle_serializer.rb'
- 'app/serializers/api/admin/order_serializer.rb'
- 'app/serializers/api/admin/schedule_serializer.rb'
- 'app/serializers/api/admin/subscription_line_item_serializer.rb'
- 'app/serializers/api/admin/user_serializer.rb'
- 'app/serializers/api/admin/variant_serializer.rb'
- 'app/serializers/api/enterprise_shopfront_serializer.rb'
- 'app/serializers/api/enterprise_thin_serializer.rb'
- 'app/serializers/api/order_serializer.rb'
- 'app/serializers/api/uncached_enterprise_serializer.rb'
- 'app/services/cart_service.rb'
- 'app/services/orders/fetch_adjustments_service.rb'
- 'app/services/orders/workflow_service.rb'
- 'app/services/sets/model_set.rb'
- 'app/services/sets/order_cycle_set.rb'
- 'app/services/sets/product_set.rb'
- 'engines/dfc_provider/app/controllers/dfc_provider/addresses_controller.rb'
- 'lib/open_food_network/order_cycle_form_applicator.rb'
- 'lib/open_food_network/order_cycle_permissions.rb'
- 'lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_order.rb'
- 'lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_producer.rb'
- 'lib/tasks/data/check_invalid_address_used.rake'
# Offense count: 35
# Configuration parameters: Include.
# Include: app/controllers/**/*.rb, app/mailers/**/*.rb
Rails/LexicallyScopedActionFilter:
# Offense count: 3
# Configuration parameters: EnforcedStyle, AllowedIdentifiers, AllowedPatterns, ForbiddenIdentifiers, ForbiddenPatterns.
# SupportedStyles: snake_case, camelCase
Naming/VariableName:
Exclude:
- 'app/controllers/admin/enterprise_groups_controller.rb'
- 'engines/dfc_provider/lib/dfc_provider/catalog_item.rb'
# Offense count: 6
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/FindByOrAssignmentMemoization:
Exclude:
- 'app/controllers/admin/customers_controller.rb'
- 'app/controllers/admin/resource_controller.rb'
- 'app/controllers/api/v0/enterprise_fees_controller.rb'
- 'app/controllers/api/v0/order_cycles_controller.rb'
- 'lib/stripe/account_connector.rb'
# Offense count: 32
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/OrderArguments:
Exclude:
- 'app/controllers/admin/enterprise_fees_controller.rb'
- 'app/controllers/admin/enterprises_controller.rb'
- 'app/controllers/admin/order_cycles_controller.rb'
- 'app/controllers/admin/producer_properties_controller.rb'
- 'app/controllers/admin/product_import_controller.rb'
- 'app/controllers/admin/schedules_controller.rb'
- 'app/controllers/admin/subscriptions_controller.rb'
- 'app/controllers/concerns/checkout_callbacks.rb'
- 'app/controllers/registration_controller.rb'
- 'app/controllers/spree/admin/adjustments_controller.rb'
- 'app/controllers/spree/admin/payment_methods_controller.rb'
- 'app/controllers/spree/admin/payments_controller.rb'
- 'app/controllers/api/v0/states_controller.rb'
- 'app/controllers/spree/admin/overview_controller.rb'
- 'app/controllers/spree/admin/products_controller.rb'
- 'app/helpers/enterprises_helper.rb'
- 'app/models/enterprise.rb'
- 'app/models/enterprise_group.rb'
- 'app/models/enterprise_relationship_permission.rb'
- 'app/models/order_cycle.rb'
- 'app/models/product_import/product_importer.rb'
- 'app/models/schedule.rb'
- 'app/models/spree/country.rb'
- 'app/models/spree/order.rb'
- 'app/models/spree/shipping_rate.rb'
- 'app/models/spree/user.rb'
- 'app/models/spree/zone.rb'
- 'app/models/subscription_line_item.rb'
- 'app/models/tag_rule.rb'
- 'app/models/variant_override.rb'
- 'lib/open_food_network/address_finder.rb'
- 'spec/services/orders/generate_invoice_service_spec.rb'
- 'spec/system/admin/order_cycles/simple_spec.rb'
# Offense count: 3
# This cop supports safe autocorrection (--autocorrect).
Rails/Presence:
Exclude:
- 'app/controllers/admin/enterprises_controller.rb'
- 'app/models/spree/product.rb'
# Offense count: 6
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Severity.
Rails/RedirectBackOrTo:
Exclude:
- 'app/controllers/admin/order_cycles_controller.rb'
- 'app/controllers/locales_controller.rb'
- 'app/controllers/spree/admin/invoices_controller.rb'
- 'app/controllers/spree/admin/orders_controller.rb'
- 'app/controllers/spree/admin/return_authorizations_controller.rb'
- 'app/controllers/spree/admin/search_controller.rb'
- 'app/controllers/spree/admin/shipping_methods_controller.rb'
- 'app/controllers/spree/admin/users_controller.rb'
- 'app/controllers/spree/admin/zones_controller.rb'
- 'app/controllers/spree/users_controller.rb'
# Offense count: 56
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Include.
# Include: spec/controllers/**/*.rb, spec/requests/**/*.rb, test/controllers/**/*.rb, test/integration/**/*.rb
Rails/ResponseParsedBody:
Exclude:
- 'spec/controllers/admin/bulk_line_items_controller_spec.rb'
- 'spec/controllers/admin/customers_controller_spec.rb'
- 'spec/controllers/admin/order_cycles_controller_spec.rb'
- 'spec/controllers/admin/proxy_orders_controller_spec.rb'
- 'spec/controllers/admin/schedules_controller_spec.rb'
- 'spec/controllers/admin/stripe_accounts_controller_spec.rb'
- 'spec/controllers/admin/subscription_line_items_controller_spec.rb'
- 'spec/controllers/admin/subscriptions_controller_spec.rb'
- 'spec/controllers/cart_controller_spec.rb'
- 'spec/controllers/line_items_controller_spec.rb'
- 'spec/controllers/spree/admin/search_controller_spec.rb'
- 'spec/controllers/spree/credit_cards_controller_spec.rb'
- 'spec/controllers/user_registrations_controller_spec.rb'
# Offense count: 7
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: strict, flexible
Rails/TimeZone:
Exclude:
- 'app/models/spree/gateway/pay_pal_express.rb'
- 'spec/controllers/spree/credit_cards_controller_spec.rb'
- 'spec/services/order_cycles/webhook_service_spec.rb'
- 'spec/services/orders/customer_cancellation_service_spec.rb'
# Offense count: 1
# Configuration parameters: TransactionMethods.
@@ -638,45 +360,25 @@ Rails/TransactionExitStatement:
Exclude:
- 'app/services/place_proxy_order.rb'
# Offense count: 5
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/UniqueValidationWithoutIndex:
Exclude:
- 'app/models/customer.rb'
- 'app/models/exchange.rb'
- 'app/models/spree/stock_item.rb'
- 'app/models/spree/tax_category.rb'
- 'app/models/spree/zone.rb'
# Offense count: 1
Security/Open:
Exclude:
- 'app/services/image_importer.rb'
# Offense count: 7
# Offense count: 3
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/ArrayIntersect:
Exclude:
- 'app/models/spree/ability.rb'
- 'app/models/tag_rule/filter_order_cycles.rb'
- 'app/models/tag_rule/filter_payment_methods.rb'
- 'app/models/tag_rule/filter_products.rb'
- 'app/models/tag_rule/filter_shipping_methods.rb'
- 'lib/open_food_network/tag_rule_applicator.rb'
- 'spec/support/matchers/select2_matchers.rb'
- 'app/models/spree/variant.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowOnConstant, AllowOnSelfClass.
Style/CaseEquality:
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/BitwisePredicate:
Exclude:
- 'spec/models/spree/payment_spec.rb'
- 'app/helpers/admin/enterprises_helper.rb'
# Offense count: 23
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# Configuration parameters: EnforcedStyle, EnforcedStyleForClasses, EnforcedStyleForModules.
# SupportedStyles: nested, compact
# SupportedStylesForClasses: ~, nested, compact
# SupportedStylesForModules: ~, nested, compact
Style/ClassAndModuleChildren:
Exclude:
- 'app/models/calculator/flat_percent_per_item.rb'
@@ -702,87 +404,35 @@ Style/ClassAndModuleChildren:
- 'lib/open_food_network/locking.rb'
- 'spec/models/spree/payment_method_spec.rb'
# Offense count: 1
# Offense count: 14
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: always, always_true, never
Style/FrozenStringLiteralComment:
Style/CollectionQuerying:
Exclude:
- '.simplecov'
# Offense count: 6
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/GlobalStdStream:
Exclude:
- 'lib/tasks/data.rake'
- 'lib/tasks/missing_payments.rake'
- 'lib/tasks/sample_data/logging.rb'
- 'lib/tasks/subscriptions/debug.rake'
- 'lib/tasks/subscriptions/test.rake'
# Offense count: 12
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowSplatArgument.
Style/HashConversion:
Exclude:
- 'app/controllers/admin/column_preferences_controller.rb'
- 'app/controllers/admin/variant_overrides_controller.rb'
- 'app/controllers/spree/admin/products_controller.rb'
- 'app/models/order_cycle.rb'
- 'app/controllers/spree/credit_cards_controller.rb'
- 'app/models/product_import/product_importer.rb'
- 'app/models/spree/shipping_method.rb'
- 'app/serializers/api/admin/exchange_serializer.rb'
- 'app/services/variants_stock_levels.rb'
- 'spec/controllers/admin/inventory_items_controller_spec.rb'
- 'spec/controllers/admin/variant_overrides_controller_spec.rb'
- 'app/models/product_import/spreadsheet_entry.rb'
- 'app/models/spree/order.rb'
- 'app/models/spree/order_inventory.rb'
- 'app/models/spree/payment_method.rb'
- 'app/models/spree/user.rb'
- 'app/models/stripe_account.rb'
- 'app/services/order_cycles/warning_service.rb'
- 'lib/reporting/report_renderer.rb'
- 'lib/tasks/sample_data.rake'
# Offense count: 13
# Offense count: 2
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedReceivers.
# AllowedReceivers: Thread.current
Style/HashEachMethods:
Style/HashSlice:
Exclude:
- 'app/controllers/admin/enterprises_controller.rb'
- 'app/controllers/spree/admin/shipping_methods_controller.rb'
- 'app/forms/enterprise_fees_bulk_update.rb'
- 'app/models/product_import/entry_processor.rb'
- 'app/models/spree/preferences/configuration.rb'
- 'app/services/sets/model_set.rb'
- 'lib/reporting/reports/sales_tax/sales_tax_totals_by_producer.rb'
- 'spec/models/product_importer_spec.rb'
- 'spec/support/cancan_helper.rb'
- 'app/services/product_filters.rb'
- 'lib/reporting/report_row_builder.rb'
# Offense count: 4
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/MapToHash:
Exclude:
- 'lib/reporting/report_query_template.rb'
- 'lib/reporting/report_row_builder.rb'
- 'lib/reporting/reports/enterprise_fee_summary/fee_summary.rb'
- 'lib/tasks/sample_data/user_factory.rb'
# Offense count: 3
Style/MissingRespondToMissing:
Exclude:
- 'app/helpers/application_helper.rb'
- 'app/models/spree/gateway.rb'
- 'app/models/spree/preferences/configuration.rb'
# Offense count: 22
# This cop supports safe autocorrection (--autocorrect).
Style/NestedModifier:
Exclude:
- 'spec/controllers/admin/subscriptions_controller_spec.rb'
- 'spec/controllers/line_items_controller_spec.rb'
- 'spec/controllers/spree/admin/orders_controller_spec.rb'
- 'spec/controllers/spree/orders_controller_spec.rb'
- 'spec/factories/order_factory.rb'
- 'spec/models/proxy_order_spec.rb'
- 'spec/models/spree/line_item_spec.rb'
- 'spec/services/place_proxy_order_spec.rb'
- 'spec/system/admin/payments_stripe_spec.rb'
- 'spec/system/admin/reports_spec.rb'
# Offense count: 38
Style/OpenStructUse:
Exclude:
@@ -812,47 +462,21 @@ Style/OptionalBooleanParameter:
- 'lib/spree/core/controller_helpers/order.rb'
- 'spec/support/request/web_helper.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: short, verbose
Style/PreferredHashMethods:
Exclude:
- 'app/controllers/api/v0/shipments_controller.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Methods.
Style/RedundantArgument:
Exclude:
- 'engines/dfc_provider/app/services/authorization_control.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Style/RedundantAssignment:
Exclude:
- 'spec/models/database_spec.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AutoCorrect, AllowComments.
Style/RedundantInitialize:
Exclude:
- 'spec/models/spree/gateway_spec.rb'
# Offense count: 19
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedMethods, AllowedPatterns.
Style/ReturnNilInPredicateMethodDefinition:
Exclude:
- 'app/models/order_cycle.rb'
- 'app/serializers/api/admin/customer_serializer.rb'
- 'engines/order_management/app/services/order_management/subscriptions/validator.rb'
# Offense count: 3
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/SlicingWithRange:
Style/RedundantFormat:
Exclude:
- 'app/helpers/spree/admin/navigation_helper.rb'
- 'app/services/embedded_page_service.rb'
- 'engines/order_management/app/services/order_management/subscriptions/validator.rb'
- 'spec/models/product_importer_spec.rb'
- 'spec/requests/checkout/stripe_sca_spec.rb'
- 'spec/system/consumer/account/cards_spec.rb'
# Offense count: 8
# Configuration parameters: Max.
Style/SafeNavigationChainLength:
Exclude:
- 'app/controllers/concerns/extra_fields.rb'
- 'app/services/customer_syncer.rb'
- 'app/services/fdc_offer_broker.rb'
- 'engines/dfc_provider/app/services/dfc_catalog.rb'
- 'engines/dfc_provider/app/services/image_builder.rb'
- 'engines/dfc_provider/app/services/quantitative_value_builder.rb'

View File

@@ -1 +1 @@
3.1.4
3.3.10

View File

@@ -1,19 +0,0 @@
scss_files: 'app/assets/stylesheets/**/*.css.scss'
exclude: 'app/assets/stylesheets/shared/**'
linters:
ImportantRule:
enabled: false
VendorPrefix:
enabled: false
LeadingZero:
enabled: false
PropertySortOrder:
enabled: false
StringQuotes:
enabled: false
DeclarationOrder:
enabled: false
NestingDepth:
enabled: false

4
.secrets.example Normal file
View File

@@ -0,0 +1,4 @@
# .secrets file define github secrets value locally
DEPENDABOT_PR_APP_ID=123456
DEPENDABOT_PR_APP_INSTALLATION_ID=123456
DEPENDABOT_PR_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n....\n-----END RSA PRIVATE KEY-----"

View File

@@ -1,17 +1,18 @@
#!/bin/env ruby
# frozen_string_literal: true
SimpleCov.start 'rails' do
# The rails profile contains some filters already:
#
# - "/test/"
# - "/features/"
# - "/spec/"
# - "/autotest/"
# - /^\/config\//
# - /^\/db\//
add_filter '/bin/'
add_filter '/config/'
add_filter '/jobs/application_job.rb'
add_filter '/schemas/'
add_filter '/lib/generators'
add_filter '/spec/'
add_filter '/vendor/'
add_filter '/public'
add_filter '/swagger'
add_filter '/config/' # to include engine config
add_filter '/script'
add_filter '/log'
add_filter '/db'
add_filter '/lib/tasks/sample_data/'
formatter SimpleCov::Formatter::SimpleFormatter
end

9
.undercover Normal file
View File

@@ -0,0 +1,9 @@
#!/bin/env ruby
# frozen_string_literal: true
--compare master
# This shouldn't be needed in undercover > 0.7.4
#
# * https://github.com/grodowski/undercover/issues/233
--exclude-files "bin/*,db/*,config/*,spec/*,engines/*/config/*,engines/*/spec/*"

View File

@@ -1,92 +1,34 @@
FROM ubuntu:20.04
FROM ruby:3.3.10-alpine3.19 AS base
ENV LANG=C.UTF-8 \
LC_ALL=C.UTF-8 \
TZ=Europe/London \
RAILS_ROOT=/usr/src/app \
BUNDLE_PATH=/bundles \
BUNDLE_APP_CONFIG=/bundles
RUN apk --no-cache upgrade && \
apk add --no-cache tzdata postgresql-client imagemagick imagemagick-jpeg && \
apk add --no-cache --virtual wkhtmltopdf
ENV TZ Europe/London
WORKDIR $RAILS_ROOT
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Development dependencies
FROM base AS development-base
RUN apk add --no-cache --virtual .build-deps \
build-base postgresql-dev git nodejs yarn && \
apk add --no-cache --virtual .dev-utils \
bash curl less vim chromium-chromedriver zlib-dev openssl-dev cmake\
readline-dev yaml-dev sqlite-dev libxml2-dev libxslt-dev libffi-dev vips-dev && \
curl -o /usr/local/bin/wait-for-it https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh && \
chmod +x /usr/local/bin/wait-for-it
RUN echo "deb http://security.ubuntu.com/ubuntu bionic-security main" >> /etc/apt/sources.list
# Install yarn dependencies separately for caching
FROM development-base AS yarn-dependencies
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
# Install all the requirements
RUN apt-get update && apt-get install -y \
curl \
git \
build-essential \
software-properties-common \
wget \
zlib1g-dev \
libreadline-dev \
libyaml-dev \
libffi-dev \
libxml2-dev \
libxslt1-dev \
wait-for-it \
imagemagick \
unzip \
libjemalloc-dev \
libssl-dev \
ca-certificates \
gnupg
# Setup ENV variables
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
# 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} && \
git clone --depth 1 https://github.com/rbenv/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build && \
echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh && \
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install $(cat .ruby-version) && \
rbenv global $(cat .ruby-version)
# Install Postgres
RUN sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main' >> /etc/apt/sources.list.d/pgdg.list" && \
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null && \
apt-get update && \
apt-get install -yqq --no-install-recommends postgresql-client-10 libpq-dev
# 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 - && \
sh -c "echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list.d/google-chrome.list" && \
apt-get update && \
apt-get install -fy google-chrome-stable
# Install Chromedriver
RUN wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip && \
unzip chromedriver_linux64.zip -d /usr/bin && \
chmod u+x /usr/bin/chromedriver
# Copy code and install app dependencies
COPY . /usr/src/app/
# Install Bundler
RUN ./script/install-bundler
# Install front-end dependencies
RUN yarn install
# Run bundler install in parallel with the amount of available CPUs
RUN bundle install --jobs="$(nproc)"
# Install Ruby gems
FROM development-base
COPY . $RAILS_ROOT
COPY Gemfile Gemfile.lock ./
RUN bundle install --jobs "$(nproc)"
COPY --from=yarn-dependencies $RAILS_ROOT/node_modules ./node_modules

93
Dockerfile.ubuntu Normal file
View File

@@ -0,0 +1,93 @@
FROM ubuntu:20.04
ENV TZ Europe/London
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN echo "deb http://security.ubuntu.com/ubuntu bionic-security main" >> /etc/apt/sources.list
# Install all the requirements
RUN apt-get update && apt-get install -y \
curl \
git \
build-essential \
software-properties-common \
wget \
zlib1g-dev \
libreadline-dev \
libyaml-dev \
libffi-dev \
libxml2-dev \
libxslt1-dev \
wait-for-it \
imagemagick \
unzip \
libjemalloc-dev \
libssl-dev \
ca-certificates \
gnupg \
cmake
# Setup ENV variables
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
# 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} && \
git clone --depth 1 https://github.com/rbenv/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build && \
echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh && \
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install $(cat .ruby-version) && \
rbenv global $(cat .ruby-version)
# Install Postgres
RUN sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main' >> /etc/apt/sources.list.d/pgdg.list" && \
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null && \
apt-get update && \
apt-get install -yqq --no-install-recommends postgresql-client-10 libpq-dev
# 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 - && \
sh -c "echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list.d/google-chrome.list" && \
apt-get update && \
apt-get install -fy google-chrome-stable
# Install Chromedriver
RUN wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip && \
unzip chromedriver_linux64.zip -d /usr/bin && \
chmod u+x /usr/bin/chromedriver
# Copy code and install app dependencies
COPY . /usr/src/app/
# Install Bundler
RUN ./script/install-bundler
# Install front-end dependencies
RUN yarn install
# Run bundler install in parallel with the amount of available CPUs
RUN bundle install --jobs="$(nproc)"

View File

@@ -31,7 +31,7 @@ This project needs specific ruby/bundler versions as well as node/yarn specific
* Install or change your Ruby version according to the one specified at [.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/).
* Install [nodenv](https://github.com/nodenv/nodenv) to ensure the correct [.node-version](https://github.com/openfoodfoundation/openfoodnetwork/blob/master/.node-version) is used.
- [nodevn](https://github.com/nodenv/nodenv) is recommended as a node version manager.
- [nodenv](https://github.com/nodenv/nodenv) is recommended as a node version manager.
* PostgreSQL database
* Redis (for background jobs)
* Chrome (for testing)
@@ -73,7 +73,7 @@ To login as the default user, use:
email: ofn@example.com
password: ofn123
Seee [Locale and sample data] about loading data.
See [Locale and sample data] about loading data.
### Testing

35
Gemfile
View File

@@ -1,6 +1,6 @@
# frozen_string_literal: true
source 'https://rubygems.org'
source 'https://gem.coop'
git_source(:github) { |repo_name| "https://github.com/#{repo_name}.git" }
ruby File.read('.ruby-version').chomp
@@ -14,17 +14,19 @@ gem "active_storage_validations"
gem "aws-sdk-s3", require: false
gem "image_processing"
gem 'activemerchant', '>= 1.78.0'
gem 'angular-rails-templates', '>= 0.3.0'
gem 'awesome_nested_set'
gem 'activemerchant'
gem 'angular-rails-templates'
gem 'ransack', '~> 4.1.0'
gem 'responders'
gem 'webpacker', '~> 5'
# Indirect dependency but we access it directly in JS specs.
# It turns out to be hard to upgrade but please do if you can.
gem 'sprockets', '~> 3.7'
gem 'i18n'
gem 'i18n-js', '~> 3.9.0'
gem 'rails-i18n'
gem 'rails_safe_tasks', '~> 1.0'
gem "activerecord-import"
gem "db2fog", github: "openfoodfoundation/db2fog", branch: "rails-7"
@@ -41,13 +43,13 @@ gem 'web', path: './engines/web'
gem "activerecord-postgresql-adapter"
gem "arel-helpers", "~> 2.12"
gem "pg", "~> 1.2.3"
gem "pg"
gem 'acts_as_list', '1.0.4'
gem 'cancancan', '~> 1.15.0'
gem 'digest'
gem 'ffaker'
gem 'highline', '2.0.3' # Necessary for the install generator
gem 'highline'
gem 'json'
gem 'monetize', '~> 1.11'
gem 'paranoia', '~> 2.4'
@@ -55,7 +57,7 @@ gem 'state_machines-activerecord'
gem 'stringex', '~> 2.8.5', require: false
gem 'paypal-sdk-merchant', '1.117.2'
gem 'stripe'
gem 'stripe', '~> 15'
gem 'devise'
gem 'devise-encryptable'
@@ -66,7 +68,7 @@ gem 'oauth2', '~> 1.4.7' # Used for Stripe Connect
gem 'datafoodconsortium-connector'
gem 'jsonapi-serializer'
gem 'pagy', '~> 5.1'
gem 'pagy', '~> 9'
gem 'rswag-api'
gem 'rswag-ui'
@@ -87,7 +89,7 @@ gem "active_model_serializers", "0.8.4"
gem 'activerecord-session_store'
gem 'acts-as-taggable-on'
gem 'angularjs-file-upload-rails', '~> 2.4.1'
gem 'bigdecimal', '3.0.2'
gem 'bigdecimal'
gem 'bootsnap', require: false
gem 'geocoder'
gem 'gmaps4rails'
@@ -105,6 +107,7 @@ gem 'sidekiq-scheduler'
gem "cable_ready"
gem "stimulus_reflex"
gem "turbo_power"
gem "turbo-rails"
gem 'combine_pdf'
@@ -152,6 +155,7 @@ end
group :test, :development do
gem 'bullet'
gem 'capybara'
gem 'capybara-shadowdom'
gem 'cuprite'
gem 'database_cleaner', require: false
gem 'debug', '>= 1.0.0'
@@ -166,13 +170,14 @@ group :test, :development do
gem 'rswag'
gem 'shoulda-matchers'
gem 'stimulus_reflex_testing', github: "podia/stimulus_reflex_testing", branch: :main
gem 'timecop'
end
group :test do
gem 'pdf-reader'
gem 'puffing-billy'
gem 'rails-controller-testing'
gem 'simplecov', require: false
gem 'undercover', require: false
gem 'vcr', require: false
gem 'webmock', require: false
# See spec/spec_helper.rb for instructions
@@ -180,15 +185,19 @@ group :test do
end
group :development do
gem 'debugger-linecache'
gem 'foreman'
gem 'haml_lint', require: false
gem 'i18n-tasks'
gem 'listen'
gem 'pry', '~> 0.13.0'
gem 'pry'
gem 'query_count'
gem 'rails-erd'
gem 'rubocop'
gem 'rubocop-capybara'
gem 'rubocop-factory_bot'
gem 'rubocop-rails'
gem 'rubocop-rspec'
gem 'rubocop-rspec_rails'
gem 'spring'
gem 'spring-commands-rspec'
gem 'spring-commands-rubocop'

File diff suppressed because it is too large Load Diff

5
Procfile.docker Normal file
View File

@@ -0,0 +1,5 @@
# Foreman Procfile for Docker env. Start all dev server processes with: `bundle exec foreman start -f Procfile.docker`
webpack: WEBPACKER_DEV_SERVER_HOST=0.0.0.0 ./bin/webpack-dev-server
sidekiq: DEV_CACHING=true bundle exec sidekiq -q mailers -q default
rails: WEBPACKER_DEV_SERVER_HOST=0.0.0.0 DEV_CACHING=true bundle exec rails s -p 3000 -b 0.0.0.0

View File

@@ -10,11 +10,11 @@
//= require jquery.ui.all
//= require jquery.powertip
//= require jquery.cookie
//= require jquery.jstree/jquery.jstree
//= require jquery.vAlign
//= require angular
//= require angular-resource
//= require angular-animate
//= require angular-sanitize
//= require angularjs-file-upload
//= require ../shared/ng-infinite-scroll.min.js
//= require ../shared/ng-tags-input.min.js
@@ -61,19 +61,11 @@
//= require ./variant_overrides/variant_overrides
// text, dates and translations
//= require textAngular-rangy.min.js
// This replaces angular-sanitize. We should include only one.
// https://github.com/textAngular/textAngular#where-to-get-it
//= require textAngular-sanitize.min.js
//= require textAngular.min.js
//= require i18n/translations
//= require darkswarm/i18n.translate.js
// foundation
//= require ../shared/mm-foundation-tpls-0.9.0-20180826174721.min.js
// LocalStorage
//= require ../shared/angular-local-storage.js
// requires the rest of the JS code in this folder
//= require_tree .

View File

@@ -1,397 +0,0 @@
angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout, $filter, $http, $window, $location, BulkProducts, DisplayProperties, DirtyProducts, VariantUnitManager, StatusMessage, producers, Taxons, Columns, tax_categories, RequestMonitor, SortOptions, ErrorsParser, ProductFiltersUrl) ->
$scope.StatusMessage = StatusMessage
$scope.columns = Columns.columns
$scope.variant_unit_options = VariantUnitManager.variantUnitOptions()
$scope.RequestMonitor = RequestMonitor
$scope.pagination = BulkProducts.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)},
{id: 100, name: t('js.admin.orders.index.per_page', results: 100)}
]
$scope.q = {
producerFilter: ""
categoryFilter: ""
importDateFilter: ""
query: ""
sorting: ""
}
$scope.sorting = "name asc"
$scope.producers = producers
$scope.taxons = Taxons.all
$scope.tax_categories = tax_categories
$scope.page = 1
$scope.per_page = 15
$scope.products = BulkProducts.products
$scope.DisplayProperties = DisplayProperties
$scope.sortOptions = SortOptions
$scope.initialise = ->
$scope.q = ProductFiltersUrl.loadFromUrl($location.search())
$scope.fetchProducts()
$scope.$watchCollection '[q.query, q.producerFilter, q.categoryFilter, q.importDateFilter, per_page]', ->
$scope.page = 1 # Reset page when changing filters for new search
$scope.changePage = (newPage) ->
$scope.page = newPage
$scope.fetchProducts()
$scope.fetchProducts = ->
removeClearedValues()
params = {
'q[name_cont]': $scope.q.query,
'q[variants_supplier_id_eq]': $scope.q.producerFilter,
'q[variants_primary_taxon_id_eq]': $scope.q.categoryFilter,
'q[s]': $scope.sorting,
import_date: $scope.q.importDateFilter,
page: $scope.page,
per_page: $scope.per_page
}
RequestMonitor.load(BulkProducts.fetch(params).$promise).then ->
# update url with the filters used
$location.search(ProductFiltersUrl.generate($scope.q))
$scope.resetProducts()
removeClearedValues = ->
delete $scope.q.producerFilter if $scope.q.producerFilter == "0"
delete $scope.q.categoryFilter if $scope.q.categoryFilter == "0"
delete $scope.q.importDateFilter if $scope.q.importDateFilter == "0"
$timeout ->
if $scope.showLatestImport
$scope.q.importDateFilter = $scope.importDates[1].id
$scope.resetProducts = ->
DirtyProducts.clear()
StatusMessage.clear()
$scope.updateOnHand = (product) ->
on_demand_variants = []
if product.variants
on_demand_variants = (variant for id, variant of product.variants when variant.on_demand)
unless product.on_demand || on_demand_variants.length > 0
product.on_hand = $scope.onHand(product)
$scope.onHand = (product) ->
onHand = 0
if product.hasOwnProperty("variants") and product.variants instanceof Object
for id, variant of product.variants
onHand = onHand + parseInt(if variant.on_hand > 0 then variant.on_hand else 0)
else
onHand = "error"
onHand
$scope.shiftTab = (tab) ->
$scope.visibleTab.visible = false unless $scope.visibleTab == tab || $scope.visibleTab == undefined
tab.visible = !tab.visible
$scope.visibleTab = tab
$scope.resetSelectFilters = ->
$scope.q.query = ""
$scope.q.producerFilter = "0"
$scope.q.categoryFilter = "0"
$scope.q.importDateFilter = "0"
$scope.fetchProducts()
$scope.$watch 'sortOptions', (sort) ->
return unless sort && sort.predicate != ""
$scope.sorting = sort.getSortingExpr(defaultDirection: "asc")
$scope.fetchProducts()
, true
confirm_unsaved_changes = () ->
(DirtyProducts.count() > 0 and confirm(t("unsaved_changes_confirmation"))) or (DirtyProducts.count() == 0)
editProductUrl = (product, variant) ->
"/admin/products/" + product.id + ((if variant then "/variants/" + variant.id else "")) + "/edit"
$scope.editWarn = (product, variant) ->
if confirm_unsaved_changes()
$window.location.href = ProductFiltersUrl.buildUrl(editProductUrl(product, variant), $scope.q)
$scope.toggleShowAllVariants = ->
showVariants = !DisplayProperties.showVariants 0
$scope.products.forEach (product) ->
DisplayProperties.setShowVariants product.id, showVariants
DisplayProperties.setShowVariants 0, showVariants
$scope.addVariant = (product) ->
# Set new variant category to same as last product variant category to keep compactibility with deleted variant callback to set new variant category
newVariantId = $scope.nextVariantId();
newVariantCategoryId = product.variants[product.variants.length - 1]?.category_id
product.variants.push
id: newVariantId
unit_value: null
unit_description: null
on_demand: false
display_as: null
display_name: null
on_hand: null
price: null
tax_category_id: null
category_id: newVariantCategoryId
DisplayProperties.setShowVariants product.id, true
DirtyProducts.addVariantProperty(product.id, newVariantId, 'category_id', newVariantCategoryId)
$scope.nextVariantId = ->
$scope.variantIdCounter = 0 unless $scope.variantIdCounter?
$scope.variantIdCounter -= 1
$scope.variantIdCounter
$scope.deleteProduct = (product) ->
if confirm(t('are_you_sure'))
$http(
method: "DELETE"
url: "/api/v0/products/" + product.id
).then (response) ->
$scope.products.splice $scope.products.indexOf(product), 1
DirtyProducts.deleteProduct product.id
$scope.displayDirtyProducts()
$scope.deleteVariant = (product, variant) ->
if product.variants.length > 1
if !$scope.variantSaved(variant)
$scope.removeVariant(product, variant)
else
if confirm(t("are_you_sure"))
$http(
method: "DELETE"
url: "/api/v0/products/" + product.id + "/variants/" + variant.id
).then (response) ->
$scope.removeVariant(product, variant)
else
alert(t("delete_product_variant"))
$scope.removeVariant = (product, variant) ->
product.variants.splice product.variants.indexOf(variant), 1
DirtyProducts.deleteVariant product.id, variant.id
$scope.displayDirtyProducts()
$scope.cloneProduct = (product) ->
BulkProducts.cloneProduct product
$scope.hasVariants = (product) ->
product.variants.length > 0
$scope.hasUnit = (product) ->
product.variant_unit_with_scale?
$scope.variantSaved = (variant) ->
variant.hasOwnProperty('id') && variant.id > 0
$scope.hasOnDemandVariants = (product) ->
(variant for id, variant of product.variants when variant.on_demand).length > 0
$scope.submitProducts = ->
# Pack pack $scope.products, so they will match the list returned from the server,
# then pack $scope.dirtyProducts, ensuring that the correct product info is sent to the server.
$scope.packProduct product for id, product of $scope.products
$scope.packProduct product for id, product of DirtyProducts.all()
productsToSubmit = filterSubmitProducts(DirtyProducts.all())
if productsToSubmit.length > 0
$scope.updateProducts productsToSubmit # Don't submit an empty list
else
StatusMessage.display 'alert', t("products_change")
$scope.updateProducts = (productsToSubmit) ->
$scope.displayUpdating()
$http(
method: "POST"
url: "/admin/products/bulk_update"
data:
products: productsToSubmit
filters:
'q[name_cont]': $scope.q.query
'q[variants_supplier_id_eq]': $scope.q.producerFilter
'q[variants_primary_taxon_id_eq]': $scope.q.categoryFilter
'q[s]': $scope.sorting
import_date: $scope.q.importDateFilter
page: $scope.page
per_page: $scope.per_page
).then((response) ->
DirtyProducts.clear()
BulkProducts.updateVariantLists(response.data.products || [])
$timeout -> $scope.displaySuccess()
).catch (response) ->
if response.status == 400 && response.data.errors?
errorsString = ErrorsParser.toString(response.data.errors, response.status)
$scope.displayFailure t("products_update_error") + "\n" + errorsString
else
$scope.displayFailure t("products_update_error_data") + response.status
$scope.cancel = (destination) ->
$window.location = destination
$scope.packProduct = (product) ->
if product.variant_unit_with_scale
match = product.variant_unit_with_scale.match(/^([^_]+)_([\d\.]+)$/)
if match
product.variant_unit = match[1]
product.variant_unit_scale = parseFloat(match[2])
else
product.variant_unit = product.variant_unit_with_scale
product.variant_unit_scale = null
else
product.variant_unit = product.variant_unit_scale = null
if product.variants
for id, variant of product.variants
$scope.packVariant product, variant
$scope.packVariant = (product, variant) ->
if variant.hasOwnProperty("unit_value_with_description")
match = variant.unit_value_with_description.match(/^([\d\.\,]+(?= |$)|)( |)(.*)$/)
if match
product = BulkProducts.find product.id
variant.unit_value = parseFloat(match[1].replace(",", "."))
variant.unit_value = null if isNaN(variant.unit_value)
if variant.unit_value && product.variant_unit_scale
variant.unit_value = parseFloat(window.bigDecimal.multiply(variant.unit_value, product.variant_unit_scale, 2))
variant.unit_description = match[3]
$scope.incrementLimit = ->
if $scope.limit < $scope.products.length
$scope.limit = $scope.limit + 5
$scope.displayUpdating = ->
StatusMessage.display 'progress', t("saving")
$scope.displaySuccess = ->
StatusMessage.display 'success',t("products_changes_saved")
$scope.bulk_product_form.$setPristine()
$scope.displayFailure = (failMessage) ->
StatusMessage.display 'failure', t("products_update_error_msg") + " #{failMessage}"
$scope.displayDirtyProducts = ->
count = DirtyProducts.count()
switch count
when 0 then StatusMessage.clear()
when 1 then StatusMessage.display 'notice', t("one_product_unsaved")
else StatusMessage.display 'notice', t("products_unsaved", n: count)
filterSubmitProducts = (productsToFilter) ->
filteredProducts = []
if productsToFilter instanceof Object
angular.forEach productsToFilter, (product) ->
if product.hasOwnProperty("id")
filteredProduct = {id: product.id}
filteredVariants = []
hasUpdatableProperty = false
if product.hasOwnProperty("variants")
angular.forEach product.variants, (variant) ->
result = filterSubmitVariant variant
filteredVariant = result.filteredVariant
variantHasUpdatableProperty = result.hasUpdatableProperty
filteredVariants.push filteredVariant if variantHasUpdatableProperty
if product.hasOwnProperty("sku")
filteredProduct.sku = product.sku
hasUpdatableProperty = true
if product.hasOwnProperty("name")
filteredProduct.name = product.name
hasUpdatableProperty = true
if product.hasOwnProperty("price")
filteredProduct.price = product.price
hasUpdatableProperty = true
if product.hasOwnProperty("variant_unit_with_scale")
filteredProduct.variant_unit = product.variant_unit
filteredProduct.variant_unit_scale = product.variant_unit_scale
hasUpdatableProperty = true
if product.hasOwnProperty("variant_unit_name")
filteredProduct.variant_unit_name = product.variant_unit_name
hasUpdatableProperty = true
if product.hasOwnProperty("on_hand") and filteredVariants.length == 0 #only update if no variants present
filteredProduct.on_hand = product.on_hand
hasUpdatableProperty = true
if product.hasOwnProperty("on_demand") and filteredVariants.length == 0 #only update if no variants present
filteredProduct.on_demand = product.on_demand
hasUpdatableProperty = true
if product.hasOwnProperty("inherits_properties")
filteredProduct.inherits_properties = product.inherits_properties
hasUpdatableProperty = true
if filteredVariants.length > 0 # Note that the name of the property changes to enable mass assignment of variants attributes with rails
filteredProduct.variants_attributes = filteredVariants
hasUpdatableProperty = true
filteredProducts.push filteredProduct if hasUpdatableProperty
filteredProducts
filterSubmitVariant = (variant) ->
hasUpdatableProperty = false
filteredVariant = {}
if not variant.deleted_at? and variant.hasOwnProperty("id")
filteredVariant.id = variant.id unless variant.id <= 0
if variant.hasOwnProperty("sku")
filteredVariant.sku = variant.sku
hasUpdatableProperty = true
if variant.hasOwnProperty("on_hand")
filteredVariant.on_hand = variant.on_hand
hasUpdatableProperty = true
if variant.hasOwnProperty("on_demand")
filteredVariant.on_demand = variant.on_demand
hasUpdatableProperty = true
if variant.hasOwnProperty("price")
filteredVariant.price = variant.price
hasUpdatableProperty = true
if variant.hasOwnProperty("unit_value")
filteredVariant.unit_value = variant.unit_value
hasUpdatableProperty = true
if variant.hasOwnProperty("unit_description")
filteredVariant.unit_description = variant.unit_description
hasUpdatableProperty = true
if variant.hasOwnProperty("display_name")
filteredVariant.display_name = variant.display_name
hasUpdatableProperty = true
if variant.hasOwnProperty("tax_category_id")
filteredVariant.tax_category_id = variant.tax_category_id
hasUpdatableProperty = true
if variant.hasOwnProperty("category_id")
filteredVariant.primary_taxon_id = variant.category_id
hasUpdatableProperty = true
if variant.hasOwnProperty("display_as")
filteredVariant.display_as = variant.display_as
hasUpdatableProperty = true
if variant.hasOwnProperty("producer_id")
filteredVariant.supplier_id = variant.producer_id
hasUpdatableProperty = true
{filteredVariant: filteredVariant, hasUpdatableProperty: hasUpdatableProperty}
toObjectWithIDKeys = (array) ->
object = {}
for i of array
if array[i] instanceof Object and array[i].hasOwnProperty("id")
object[array[i].id] = angular.copy(array[i])
object[array[i].id].variants = toObjectWithIDKeys(array[i].variants) if array[i].hasOwnProperty("variants") and array[i].variants instanceof Array
object

View File

@@ -11,6 +11,9 @@ angular.module("admin.customers").controller "customersCtrl", ($scope, $q, $filt
$scope.confirmRefresh = (event) ->
event.preventDefault() unless pendingChanges.unsavedCount() == 0 || confirm(t("unsaved_changes_warning"))
$scope.hasUnsavedChanges = ->
pendingChanges.yes()
$scope.$watch "shop_id", ->
if $scope.shop_id?
CurrentShop.shop = $filter('filter')($scope.shops, {id: parseInt($scope.shop_id)}, true)[0]

View File

@@ -4,31 +4,30 @@ angular.module("ofn.admin").directive "ofnDisplayAs", (OptionValueNamer) ->
scope.$watchCollection ->
return [
scope.$eval(attrs.ofnDisplayAs).unit_value_with_description
scope.product.variant_unit_name
scope.product.variant_unit_with_scale
scope.variant.variant_unit_name
scope.variant.variant_unit_with_scale
]
, ->
[variant_unit, variant_unit_scale] = productUnitProperties()
[unit_value, unit_description] = variantUnitProperties(variant_unit_scale)
variant_object =
variant_object =
unit_value: unit_value
unit_description: unit_description
product:
variant_unit_scale: variant_unit_scale
variant_unit: variant_unit
variant_unit_name: scope.product.variant_unit_name
variant_unit_scale: variant_unit_scale
variant_unit: variant_unit
variant_unit_name: scope.variant.variant_unit_name
scope.placeholder_text = new OptionValueNamer(variant_object).name()
productUnitProperties = ->
# get relevant product properties
if scope.product.variant_unit_with_scale?
match = scope.product.variant_unit_with_scale.match(/^([^_]+)_([\d\.]+)$/)
if scope.variant.variant_unit_with_scale?
match = scope.variant.variant_unit_with_scale.match(/^([^_]+)_([\d\.]+)$/)
if match
variant_unit = match[1]
variant_unit_scale = parseFloat(match[2])
else
variant_unit = scope.product.variant_unit_with_scale
variant_unit = scope.variant.variant_unit_with_scale
variant_unit_scale = null
else
variant_unit = variant_unit_scale = null
@@ -45,4 +44,4 @@ angular.module("ofn.admin").directive "ofnDisplayAs", (OptionValueNamer) ->
unit_value = null if isNaN(unit_value)
unit_value *= variant_unit_scale if unit_value && variant_unit_scale
unit_description = match[3]
[unit_value, unit_description]
[unit_value, unit_description]

View File

@@ -1,8 +0,0 @@
angular.module("ofn.admin").directive "ofnMaintainUnitScale", ->
require: "ngModel"
link: (scope, element, attrs, ngModel) ->
scope.$watch 'product.variant_unit_with_scale', (newValue, oldValue) ->
if not (oldValue == newValue)
# Triggers track-variant directive to track the unit_value, so that changes to the unit are passed to the server
ngModel.$setViewValue ngModel.$viewValue

View File

@@ -1,8 +0,0 @@
angular.module("ofn.admin").directive "ofnTrackMaster", (DirtyProducts) ->
require: "ngModel"
link: (scope, element, attrs, ngModel) ->
ngModel.$parsers.push (viewValue) ->
if ngModel.$dirty
DirtyProducts.addMasterProperty scope.product.id, scope.product.master.id, attrs.ofnTrackMaster, viewValue
scope.displayDirtyProducts()
viewValue

View File

@@ -1 +1 @@
angular.module("admin.enterprise_groups", ["admin.side_menu", "admin.users", "textAngular"])
angular.module("admin.enterprise_groups", ["admin.side_menu", "admin.users", "ngSanitize"])

View File

@@ -55,12 +55,6 @@ angular.module("admin.enterprises")
else
alert ("#{manager.email}" + " " + t("is_already_manager"))
$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.performEnterpriseAction = (enterpriseActionName, warning_message_key, success_message_key) ->
return unless confirm($scope.translation(warning_message_key))

View File

@@ -3,24 +3,9 @@ angular.module("admin.enterprises", [
"admin.utils",
"admin.shippingMethods",
"admin.users",
"textAngular",
"admin.side_menu",
"admin.taxons",
'admin.indexUtils',
'admin.tagRules',
'admin.dropdown',
'ngSanitize']
)
# For more options: https://github.com/textAngular/textAngular/blob/master/src/textAngularSetup.js
.config [
'$provide', ($provide) ->
$provide.decorator 'taTranslations', [
'$delegate'
(taTranslations) ->
taTranslations.insertLink = {
tooltip: t('admin.enterprises.form.shop_preferences.shopfront_message_link_tooltip'),
dialogPrompt: t('admin.enterprises.form.shop_preferences.shopfront_message_link_prompt')
}
taTranslations
]
]

View File

@@ -4,15 +4,16 @@ angular.module("admin.indexUtils").directive "objForUpdate", (switchClass, pendi
type: "@objForUpdate"
attr: "@attrForUpdate"
link: (scope, element, attrs) ->
scope.savedValue = scope.object()[scope.attr]
scope.savedValue = scope.object()[scope.attr] || ""
scope.$watch "object().#{scope.attr}", (value) ->
if value == scope.savedValue
strValue = value || ""
if strValue == scope.savedValue
pendingChanges.remove(scope.object().id, scope.attr)
scope.clear()
else
scope.pending()
addPendingChange(scope.attr, value ? "")
addPendingChange(scope.attr, strValue)
scope.reset = (value) ->
scope.savedValue = value
@@ -37,16 +38,13 @@ angular.module("admin.indexUtils").directive "objForUpdate", (switchClass, pendi
# To ensure the customer is still updated, we check on the $destroy event to see if
# the attribute has changed, if so we queue up the change.
scope.$on '$destroy', (value) ->
# No update
return if scope.object()[scope.attr] is scope.savedValue
currentValue = scope.object()[scope.attr] || ""
# For some reason the code attribute is removed from the object when cleared, so we add
# an emptyvalue so it gets updated properly
if scope.attr is "code" and scope.object()[scope.attr] is undefined
scope.object()["code"] = ""
# No update
return if currentValue is scope.savedValue
# Queuing up change
addPendingChange(scope.attr, scope.object()[scope.attr])
addPendingChange(scope.attr, currentValue)
# private

View File

@@ -16,7 +16,10 @@ angular.module("admin.indexUtils").factory "pendingChanges", ($q, resources, Sta
remove: (id, attr) =>
if @pendingChanges.hasOwnProperty("#{id}")
delete @pendingChanges["#{id}"]["#{attr}"]
delete @pendingChanges["#{id}"] if @changeCount( @pendingChanges["#{id}"] ) < 1
if @changeCount( @pendingChanges["#{id}"] ) < 1
delete @pendingChanges["#{id}"]
StatusMessage.clear()
submitAll: (form=null) =>
all = []
@@ -47,5 +50,8 @@ angular.module("admin.indexUtils").factory "pendingChanges", ($q, resources, Sta
unsavedCount: ->
Object.keys(@pendingChanges).length
yes: ->
@unsavedCount() > 0
changeCount: (objectChanges) ->
Object.keys(objectChanges).length

View File

@@ -1,4 +1,4 @@
angular.module("admin.indexUtils").factory "switchClass", ($timeout) ->
angular.module("admin.indexUtils").factory "switchClass", ($timeout, StatusMessage) ->
return (element, classToAdd, removeClasses, timeout) ->
$timeout.cancel element.timeout if element.timeout
element.removeClass className for className in removeClasses
@@ -7,4 +7,6 @@ angular.module("admin.indexUtils").factory "switchClass", ($timeout) ->
if timeout && intRegex.test(timeout)
element.timeout = $timeout(->
element.removeClass classToAdd
StatusMessage.clear()
, timeout, true)
element

View File

@@ -19,18 +19,6 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.page = 1
$scope.per_page = $scope.per_page_options[0].id
$scope.filterByVariantId = null
searchThrough = ["order_distributor_name",
"order_bill_address_phone",
"order_bill_address_firstname",
"order_bill_address_lastname",
"order_bill_address_full_name",
"order_bill_address_full_name_reversed",
"order_bill_address_full_name_with_comma",
"order_bill_address_full_name_with_comma_reversed",
"variant_supplier_name",
"order_email",
"order_number",
"product_name"].join("_or_") + "_cont"
$scope.confirmRefresh = ->
LineItems.allSaved() || confirm(t("unsaved_changes_warning"))
@@ -75,11 +63,10 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
[formattedStartDate, formattedEndDate] = $scope.formatDates($scope.startDate, $scope.endDate)
RequestMonitor.load LineItems.index(
"q[#{searchThrough}]": $scope.query,
"q[variant_id_eq]": $scope.filterByVariantId if $scope.filterByVariantId,
"q[order_state_not_eq]": "canceled",
"q[order_shipment_state_not_eq]": "shipped",
"q[order_completed_at_not_null]": "true",
"q[variant_id_eq]": $scope.filterByVariantId if $scope.filterByVariantId,
"q[order_distributor_id_eq]": $scope.distributorFilter,
"q[variant_supplier_id_eq]": $scope.supplierFilter,
"q[order_order_cycle_id_eq]": $scope.orderCycleFilter,
@@ -87,7 +74,8 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
"q[order_completed_at_lt]": if formattedEndDate then formattedEndDate else undefined,
"q[s]": "order_completed_at desc",
"page": $scope.page,
"per_page": $scope.per_page
"per_page": $scope.per_page,
"search_query": $scope.query
)
$scope.formatDates = (startDate, endDate) ->
@@ -97,7 +85,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.loadAssociatedData = ->
RequestMonitor.load $scope.distributors = Enterprises.index(action: "visible", ams_prefix: "basic", "q[sells_in][]": ["own", "any"])
RequestMonitor.load $scope.orderCycles = OrderCycles.index(ams_prefix: "basic", as: "distributor", "q[orders_close_at_gt]": "#{moment().subtract(90,'days').format()}")
RequestMonitor.load $scope.orderCycles = OrderCycles.index(ams_prefix: "basic", as: "distributor", "q[orders_close_at_gt]": "#{moment().subtract(1,'year').format()}")
RequestMonitor.load $scope.suppliers = Enterprises.index(action: "visible", ams_prefix: "basic", "q[is_primary_producer_eq]": "true")
$scope.dereferenceLoadedData = ->
@@ -199,14 +187,14 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.refreshData()
$scope.getLineItemScale = (lineItem) ->
if lineItem.units_product && lineItem.units_variant && (lineItem.units_product.variant_unit == "weight" || lineItem.units_product.variant_unit == "volume")
lineItem.units_product.variant_unit_scale
if lineItem.units_variant && lineItem.units_variant.variant_unit_scale && (lineItem.units_variant.variant_unit == "weight" || lineItem.units_variant.variant_unit == "volume")
lineItem.units_variant.variant_unit_scale
else
1
$scope.sumUnitValues = ->
sum = $scope.filteredLineItems?.reduce (sum, lineItem) ->
if lineItem.units_product.variant_unit == "items"
if lineItem.units_variant.variant_unit == "items"
sum + lineItem.quantity
else
sum + $scope.roundToThreeDecimals(lineItem.final_weight_volume / $scope.getLineItemScale(lineItem))
@@ -214,7 +202,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.sumMaxUnitValues = ->
sum = $scope.filteredLineItems?.reduce (sum,lineItem) ->
if lineItem.units_product.variant_unit == "items"
if lineItem.units_variant.variant_unit == "items"
sum + lineItem.max_quantity
else
sum + lineItem.max_quantity * $scope.roundToThreeDecimals(lineItem.units_variant.unit_value / $scope.getLineItemScale(lineItem))
@@ -228,39 +216,41 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
return false if !lineItem.hasOwnProperty('final_weight_volume') || !(lineItem.final_weight_volume > 0)
true
$scope.getScale = (unitsProduct, unitsVariant) ->
if unitsProduct.hasOwnProperty("variant_unit") && (unitsProduct.variant_unit == "weight" || unitsProduct.variant_unit == "volume")
unitsProduct.variant_unit_scale
else if unitsProduct.hasOwnProperty("variant_unit") && unitsProduct.variant_unit == "items"
$scope.getScale = (unitsVariant) ->
if unitsVariant.hasOwnProperty("variant_unit") && (unitsVariant.variant_unit == "weight" || unitsVariant.variant_unit == "volume")
unitsVariant.variant_unit_scale
else if unitsVariant.hasOwnProperty("variant_unit") && unitsVariant.variant_unit == "items"
1
else
null
$scope.getFormattedValueWithUnitName = (value, unitsProduct, unitsVariant, scale) ->
unit_name = VariantUnitManager.getUnitName(scale, unitsProduct.variant_unit)
$scope.getFormattedValueWithUnitName = (value, unitsVariant, scale) ->
unit_name = VariantUnitManager.getUnitName(scale, unitsVariant.variant_unit)
$scope.roundToThreeDecimals(value) + " " + unit_name
$scope.getGroupBySizeFormattedValueWithUnitName = (value, unitsProduct, unitsVariant) ->
scale = $scope.getScale(unitsProduct, unitsVariant)
$scope.getGroupBySizeFormattedValueWithUnitName = (value, unitsVariant) ->
scale = $scope.getScale(unitsVariant)
if scale && value
value = value / scale if scale != 28.35 && scale != 1 && scale != 453.6 # divide by scale if not smallest unit
$scope.getFormattedValueWithUnitName(value, unitsProduct, unitsVariant, scale)
$scope.getFormattedValueWithUnitName(value, unitsVariant, scale)
else
''
$scope.formattedValueWithUnitName = (value, unitsProduct, unitsVariant) ->
scale = $scope.getScale(unitsProduct, unitsVariant)
$scope.formattedValueWithUnitName = (value, unitsVariant) ->
scale = $scope.getScale(unitsVariant)
if scale
$scope.getFormattedValueWithUnitName(value, unitsProduct, unitsVariant, scale)
$scope.getFormattedValueWithUnitName(value, unitsVariant, scale)
else
''
$scope.fulfilled = (sumOfUnitValues) ->
# A Units Variant is an API object which holds unit properies of a variant
if $scope.selectedUnitsProduct.hasOwnProperty("group_buy_unit_size")&& $scope.selectedUnitsProduct.group_buy_unit_size > 0 &&
$scope.selectedUnitsProduct.hasOwnProperty("variant_unit")
if $scope.selectedUnitsProduct.variant_unit == "weight" || $scope.selectedUnitsProduct.variant_unit == "volume"
scale = $scope.selectedUnitsProduct.variant_unit_scale
if $scope.selectedUnitsProduct.hasOwnProperty("group_buy_unit_size") && $scope.selectedUnitsProduct.group_buy_unit_size > 0 &&
$scope.selectedUnitsVariant.hasOwnProperty("variant_unit")
if $scope.selectedUnitsVariant.variant_unit == "weight" || $scope.selectedUnitsVariant.variant_unit == "volume"
scale = $scope.selectedUnitsVariant.variant_unit_scale
sumOfUnitValues = sumOfUnitValues * scale unless scale == 28.35 || scale == 453.6
$scope.roundToThreeDecimals(sumOfUnitValues / $scope.selectedUnitsProduct.group_buy_unit_size)
else

View File

@@ -19,6 +19,8 @@ angular.module('admin.orderCycles')
$scope.submit = ($event, destination) ->
$event.preventDefault()
$scope.order_cycle?.trigger_action = $($event.target).data('trigger-action');
$scope.order_cycle?.confirm = $($event.target).data('confirm');
StatusMessage.display 'progress', t('js.saving')
OrderCycle.update(destination, $scope.order_cycle_form)

View File

@@ -1,7 +1,11 @@
angular.module("admin.orderCycles").controller "OrderCyclesCtrl", ($scope, $q, Columns, StatusMessage, RequestMonitor, OrderCycles, Enterprises, Schedules, Dereferencer) ->
$scope.RequestMonitor = RequestMonitor
$scope.columns = Columns.columns
$scope.saveAll = -> OrderCycles.saveChanges($scope.order_cycles_form)
$scope.saveAll = ($event) ->
trigger_action = $($event.target).data('trigger-action')
confirm = $($event.target).data('confirm')
OrderCycles.saveChanges($scope.order_cycles_form, { trigger_action, confirm })
$scope.ordersCloseAtLimit = -31 # days
$scope.resetSelectFilters = ->

View File

@@ -22,6 +22,8 @@ angular.module('admin.orderCycles').controller "AdminSimpleEditOrderCycleCtrl",
$scope.submit = ($event, destination) ->
$event.preventDefault()
$scope.order_cycle?.trigger_action = $($event.target).data('trigger-action');
$scope.order_cycle?.confirm = $($event.target).data('confirm');
StatusMessage.display 'progress', t('js.saving')
OrderCycle.mirrorIncomingToOutgoingProducts()
OrderCycle.update(destination, $scope.order_cycle_form) if OrderCycle.confirmNoDistributors()

View File

@@ -161,7 +161,11 @@ angular.module('admin.orderCycles').factory 'OrderCycle', ($resource, $window, $
StatusMessage.display('failure', t('js.order_cycles.create_failure'))
update: (destination, form) ->
oc = new OrderCycleResource({order_cycle: this.dataForSubmit()})
oc = new OrderCycleResource({
order_cycle: this.dataForSubmit(),
confirm: this.order_cycle.confirm,
trigger_action: this.order_cycle.trigger_action
})
oc.$update {order_cycle_id: this.order_cycle.id, reloading: (if destination? then 1 else 0)}, (data) =>
form.$setPristine() if form
if destination?
@@ -171,6 +175,8 @@ angular.module('admin.orderCycles').factory 'OrderCycle', ($resource, $window, $
, (response) ->
if response.data.errors?
StatusMessage.display('failure', response.data.errors[0])
else if (response.data.trigger_action)
StatusMessage.display('notice', t('js.order_cycles.unsaved_changes'), response.data.trigger_action)
else
StatusMessage.display('failure', t('js.order_cycles.update_failure'))

View File

@@ -5,6 +5,8 @@ angular.module("admin.orders").controller "orderCtrl", ($scope, shops, orderCycl
$scope.distributor_id = parseInt($attrs.ofnDistributorId)
$scope.order_cycle_id = parseInt($attrs.ofnOrderCycleId)
$scope.search_variants_as = $attrs.ofnSearchVariantsAs
$scope.order_id = $attrs.ofnOrderId
$scope.validOrderCycle = (oc) ->
$scope.orderCycleHasDistributor oc, parseInt($scope.distributor_id)

View File

@@ -15,4 +15,4 @@ angular.module("admin.paymentMethods").controller "StripeController", ($scope, $
permalink = shops.filter((shop) ->
shop.id == $scope.paymentMethod.preferred_enterprise_id
)[0].permalink
"/admin/enterprises/#{permalink}/edit#/payment_methods"
"/admin/enterprises/#{permalink}/edit#/payment_methods_panel"

View File

@@ -1,24 +0,0 @@
angular.module("admin.products").controller "editUnitsCtrl", ($scope, VariantUnitManager) ->
$scope.product =
variant_unit: angular.element('#variant_unit').val()
variant_unit_scale: angular.element('#variant_unit_scale').val()
$scope.variant_unit_options = VariantUnitManager.variantUnitOptions()
if $scope.product.variant_unit == 'items'
$scope.variant_unit_with_scale = 'items'
else
$scope.variant_unit_with_scale = $scope.product.variant_unit + '_' + $scope.product.variant_unit_scale.replace(/\.0$/, '');
$scope.setFields = ->
if $scope.variant_unit_with_scale == 'items'
variant_unit = 'items'
variant_unit_scale = null
else
options = $scope.variant_unit_with_scale.split('_')
variant_unit = options[0]
variant_unit_scale = options[1]
$scope.product.variant_unit = variant_unit
$scope.product.variant_unit_scale = variant_unit_scale

View File

@@ -1,8 +0,0 @@
angular.module("ofn.admin").controller "ProductImageCtrl", ($scope, ProductImageService) ->
$scope.imageUploader = ProductImageService.imageUploader
$scope.imagePreview = ProductImageService.imagePreview
$scope.$watch 'product.image_url', (newValue, oldValue) ->
if newValue != oldValue
$scope.imagePreview = newValue
$scope.uploadModal.close()

View File

@@ -1,15 +1,14 @@
# Controller for "New Products" form (spree/admin/products/new)
angular.module("admin.products")
.controller "unitsCtrl", ($scope, VariantUnitManager, OptionValueNamer, UnitPrices, PriceParser) ->
$scope.product = { master: {} }
$scope.product.master.product = $scope.product
$scope.product = {}
$scope.placeholder_text = ""
$scope.$watchCollection '[product.variant_unit_with_scale, product.master.unit_value_with_description, product.price, product.variant_unit_name]', ->
$scope.$watchCollection '[product.variant_unit_with_scale, product.unit_value_with_description, product.price, product.variant_unit_name]', ->
$scope.processVariantUnitWithScale()
$scope.processUnitValueWithDescription()
$scope.processUnitPrice()
$scope.placeholder_text = new OptionValueNamer($scope.product.master).name() if $scope.product.variant_unit_scale
$scope.placeholder_text = new OptionValueNamer($scope.product).name() if $scope.product.variant_unit_scale
$scope.variant_unit_options = VariantUnitManager.variantUnitOptions()
@@ -38,24 +37,24 @@ angular.module("admin.products")
# Extract unit_value and unit_description from text field unit_value_with_description,
# and update hidden variant fields
$scope.processUnitValueWithDescription = ->
if $scope.product.master.hasOwnProperty("unit_value_with_description")
match = $scope.product.master.unit_value_with_description.match(/^([\d\.,]+(?= *|$)|)( *)(.*)$/)
if $scope.product.hasOwnProperty("unit_value_with_description")
match = $scope.product.unit_value_with_description.match(/^([\d\.,]+(?= *|$)|)( *)(.*)$/)
if match
$scope.product.master.unit_value = PriceParser.parse(match[1])
$scope.product.master.unit_value = null if isNaN($scope.product.master.unit_value)
$scope.product.master.unit_value = window.bigDecimal.multiply($scope.product.master.unit_value, $scope.product.variant_unit_scale, 2) if $scope.product.master.unit_value && $scope.product.variant_unit_scale
$scope.product.master.unit_description = match[3]
$scope.product.unit_value = PriceParser.parse(match[1])
$scope.product.unit_value = null if isNaN($scope.product.unit_value)
$scope.product.unit_value = window.bigDecimal.multiply($scope.product.unit_value, $scope.product.variant_unit_scale, 2) if $scope.product.unit_value && $scope.product.variant_unit_scale
$scope.product.unit_description = match[3]
else
value = $scope.product.master.unit_value
value = window.bigDecimal.divide(value, $scope.product.variant_unit_scale, 2) if $scope.product.master.unit_value && $scope.product.variant_unit_scale
$scope.product.master.unit_value_with_description = value + " " + $scope.product.master.unit_description
value = $scope.product.unit_value
value = window.bigDecimal.divide(value, $scope.product.variant_unit_scale, 2) if $scope.product.unit_value && $scope.product.variant_unit_scale
$scope.product.unit_value_with_description = value + " " + $scope.product.unit_description
# Calculate unit price based on product price and variant_unit_scale
$scope.processUnitPrice = ->
price = $scope.product.price
scale = $scope.product.variant_unit_scale
unit_type = $scope.product.variant_unit
unit_value = $scope.product.master.unit_value
unit_value = $scope.product.unit_value
variant_unit_name = $scope.product.variant_unit_name
$scope.unit_price = UnitPrices.displayableUnitPrice(price, scale, unit_type, unit_value, variant_unit_name)

View File

@@ -1,32 +0,0 @@
angular.module("admin.products").controller "variantUnitsCtrl", ($scope, VariantUnitManager, $timeout, UnitPrices, PriceParser) ->
$scope.unitName = (scale, type) ->
VariantUnitManager.getUnitName(scale, type)
$scope.$watchCollection "[unit_value_human, variant.price]", ->
$scope.processUnitPrice()
$scope.processUnitPrice = ->
if ($scope.variant)
price = $scope.variant.price
scale = $scope.scale
unit_type = angular.element("#product_variant_unit").val()
if (unit_type != "items")
$scope.updateValue()
unit_value = $scope.unit_value
else
unit_value = 1
variant_unit_name = angular.element("#product_variant_unit_name").val()
$scope.unit_price = UnitPrices.displayableUnitPrice(price, scale, unit_type, unit_value, variant_unit_name)
$scope.scale = angular.element('#product_variant_unit_scale').val()
$scope.updateValue = ->
unit_value_human = angular.element('#unit_value_human').val()
$scope.unit_value = bigDecimal.multiply(PriceParser.parse(unit_value_human), $scope.scale, 2)
variant_unit_value = angular.element('#variant_unit_value').val()
$scope.unit_value_human = parseFloat(bigDecimal.divide(variant_unit_value, $scope.scale, 2))
$timeout -> $scope.processUnitPrice()
$timeout -> $scope.updateValue()

View File

@@ -1,6 +0,0 @@
angular.module("ofn.admin").directive "imageModal", ($modal, ProductImageService) ->
restrict: 'C'
link: (scope, elem, attrs, ctrl) ->
elem.on "click", (ev) =>
scope.uploadModal = $modal.open(templateUrl: 'admin/modals/image_upload.html', controller: ctrl, scope: scope, windowClass: 'simple-modal')
ProductImageService.configure(scope.product)

View File

@@ -1,19 +0,0 @@
angular.module("admin.products").directive "setOnDemand", ->
link: (scope, element, attr) ->
onHand = element.context.querySelector("#variant_on_hand")
onDemand = element.context.querySelector("#variant_on_demand")
disableOnHandIfOnDemand = ->
if onDemand.checked
onHand.disabled = 'disabled'
onHand.dataStock = onHand.value
onHand.value = t('admin.products.variants.infinity')
disableOnHandIfOnDemand()
onDemand.addEventListener 'change', (event) ->
disableOnHandIfOnDemand()
if !onDemand.checked
onHand.removeAttribute('disabled')
onHand.value = onHand.dataStock

View File

@@ -1 +1 @@
angular.module("admin.products", ["textAngular", "admin.utils", "OFNShared"])
angular.module("admin.products", ["ngSanitize", "admin.utils", "OFNShared"])

View File

@@ -13,16 +13,16 @@ angular.module("admin.products").factory "OptionValueNamer", (VariantUnitManager
name_fields.join ' '
value_scaled: ->
@variant.product.variant_unit_scale?
@variant.variant_unit_scale?
option_value_value_unit: ->
if @variant.unit_value?
if @variant.product.variant_unit in ["weight", "volume"]
if @variant.variant_unit in ["weight", "volume"]
[value, unit_name] = @option_value_value_unit_scaled()
else
value = @variant.unit_value
unit_name = @pluralize(@variant.product.variant_unit_name, value)
unit_name = @pluralize(@variant.variant_unit_name, value)
value = parseInt(value, 10) if value == parseInt(value, 10)
@@ -58,14 +58,13 @@ angular.module("admin.products").factory "OptionValueNamer", (VariantUnitManager
# to >= 1 when expressed in it.
# If there is none available where this is true, use the smallest
# available unit.
product = @variant.product
scales = VariantUnitManager.compatibleUnitScales(product.variant_unit_scale, product.variant_unit)
scales = VariantUnitManager.compatibleUnitScales(@variant.variant_unit_scale, @variant.variant_unit)
variantUnitValue = @variant.unit_value
# sets largestScale = last element in filtered scales array
[_, ..., largestScale] = (scales.filter (s) -> variantUnitValue / s >= 1)
if (largestScale)
[largestScale, VariantUnitManager.getUnitName(largestScale, product.variant_unit)]
[largestScale, VariantUnitManager.getUnitName(largestScale, @variant.variant_unit)]
else
[scales[0], VariantUnitManager.getUnitName(scales[0], product.variant_unit)]
[scales[0], VariantUnitManager.getUnitName(scales[0], @variant.variant_unit)]

View File

@@ -8,10 +8,4 @@ angular.module("admin.resources").factory 'EnterpriseResource', ($resource) ->
isArray: true
'update':
method: 'PUT'
'removeLogo':
url: '/api/v0/enterprises/:id/logo.json'
method: 'DELETE'
'removePromoImage':
url: '/api/v0/enterprises/:id/promo_image.json'
method: 'DELETE'
})

View File

@@ -1,6 +0,0 @@
angular.module("admin.resources").factory 'ProductResource', ($resource) ->
$resource('/admin/product/:id/:action.json', {}, {
'index':
url: '/api/v0/products/bulk_products.json'
method: 'GET'
})

View File

@@ -39,17 +39,6 @@ angular.module("admin.resources").factory 'Enterprises', ($q, $filter, Enterpris
resetAttribute: (enterprise, attribute) ->
enterprise[attribute] = @pristineByID[enterprise.id][attribute]
performActionOnEnterpriseResource = (resourceAction) ->
(enterprise) ->
deferred = $q.defer()
resourceAction({id: enterprise.permalink}, ((data) =>
@pristineByID[enterprise.id] = angular.copy(data)
deferred.resolve(data)
), ((response) ->
deferred.reject(response)
))
deferred.promise
findByID: (id) ->
@byID[id]
@@ -61,5 +50,3 @@ angular.module("admin.resources").factory 'Enterprises', ($q, $filter, Enterpris
$filter('filter')(enterprises, term)
removeLogo: performActionOnEnterpriseResource(EnterpriseResource.removeLogo)
removePromoImage: performActionOnEnterpriseResource(EnterpriseResource.removePromoImage)

View File

@@ -29,13 +29,13 @@ angular.module("admin.resources").factory 'OrderCycles', ($q, $injector, OrderCy
deferred.reject(response)
deferred.promise
saveChanges: (form) ->
saveChanges: (form, params = {}) ->
changed = {}
for id, orderCycle of @byID when not @saved(orderCycle)
changed[Object.keys(changed).length] = @changesFor(orderCycle)
if Object.keys(changed).length > 0
StatusMessage.display('progress', "Saving...")
OrderCycleResource.bulkUpdate { order_cycle_set: { collection_attributes: changed } }, (data) =>
OrderCycleResource.bulkUpdate { order_cycle_set: { collection_attributes: changed }, confirm: params['confirm'], trigger_action: params['trigger_action'] }, (data) =>
for orderCycle in data
delete orderCycle.coordinator
delete orderCycle.producers
@@ -47,8 +47,10 @@ angular.module("admin.resources").factory 'OrderCycles', ($q, $injector, OrderCy
, (response) =>
if response.data.errors?
StatusMessage.display('failure', response.data.errors[0])
else if (response.data.trigger_action)
StatusMessage.display('notice', t('js.order_cycles.unsaved_changes'), response.data.trigger_action)
else
StatusMessage.display('failure', "Oh no! I was unable to save your changes.")
StatusMessage.display('failure', t('js.order_cycles.bulk_save_error'))
saved: (order_cycle) ->
@diff(order_cycle).length == 0

View File

@@ -1,78 +0,0 @@
angular.module("ofn.admin").factory "BulkProducts", (ProductResource, dataFetcher, $http) ->
new class BulkProducts
products: []
pagination: {}
fetch: (params) ->
ProductResource.index params, (data) =>
@products.length = 0
@addProducts data.products
angular.extend(@pagination, data.pagination)
cloneProduct: (product) ->
$http.post("/api/v0/products/" + product.id + "/clone").then (response) =>
dataFetcher("/api/v0/products/" + response.data.id + "?template=bulk_show").then (newProduct) =>
@unpackProduct newProduct
@insertProductAfter(product, newProduct)
updateVariantLists: (serverProducts) ->
for server_product in serverProducts
product = @findProductInList(server_product.id, @products)
product.variants = server_product.variants
@loadVariantUnitValues product
find: (id) ->
@findProductInList id, @products
findProductInList: (id, product_list) ->
products = (product for product in product_list when product.id == id)
if products.length == 0 then null else products[0]
addProducts: (products) ->
for product in products
@unpackProduct product
@products.push product
insertProductAfter: (product, newProduct) ->
index = @products.indexOf(product)
@products.splice(index + 1, 0, newProduct)
unpackProduct: (product) ->
#$scope.matchProducer product
@loadVariantUnit product
loadVariantUnit: (product) ->
product.variant_unit_with_scale =
if product.variant_unit && product.variant_unit_scale && product.variant_unit != 'items'
"#{product.variant_unit}_#{product.variant_unit_scale}"
else if product.variant_unit
product.variant_unit
else
null
@loadVariantUnitValues product if product.variants
@loadVariantUnitValue product, product.master if product.master
loadVariantUnitValues: (product) ->
for variant in product.variants
@loadVariantUnitValue product, variant
loadVariantUnitValue: (product, variant) ->
unit_value = @variantUnitValue product, variant
unit_value = if unit_value? then unit_value else ''
variant.unit_value_with_description = "#{unit_value} #{variant.unit_description || ''}".trim()
variantUnitValue: (product, variant) ->
if variant.unit_value?
if product.variant_unit_scale
variant_unit_value = @divideAsInteger variant.unit_value, product.variant_unit_scale
parseFloat(window.bigDecimal.round(variant_unit_value, 2))
else
variant.unit_value
else
null
# forces integer division to avoid javascript floating point imprecision
# using one billion as the multiplier so that it works for numbers with up to 9 decimal places
divideAsInteger: (a, b) ->
(a * 1000000000) / (b * 1000000000)

View File

@@ -1,29 +0,0 @@
angular.module("admin.indexUtils").factory 'KeyValueMapStore', (localStorageService)->
new class KeyValueMapStore
localStorageKey: ''
storableKeys: []
constructor: ->
localStorageService.setStorageType("sessionStorage")
getStoredKeyValueMap: ->
localStorageService.get(@localStorageKey) || {}
setStoredValues: (source) ->
keyValueMap = {}
for key in @storableKeys
keyValueMap[key] = source[key]
localStorageService.set(@localStorageKey, keyValueMap)
restoreValues: (target) ->
storedKeyValueMap = @getStoredKeyValueMap()
return false if _.isEmpty(storedKeyValueMap)
for k,v of storedKeyValueMap
target[k] = v
return true
clearKeyValueMap: () ->
localStorageService.remove(@localStorageKey)

View File

@@ -187,18 +187,17 @@ addVariantFromStockLocation = function() {
$('#stock_details').hide();
var variant_id = $('input.variant_autocomplete').val();
var stock_location_id = $(this).data('stock-location-id');
var quantity = $("input.quantity[data-stock-location-id='" + stock_location_id + "']").val();
var quantity = $("input.quantity").val();
var shipment = _.find(shipments, function(shipment){
return shipment.stock_location_id == stock_location_id && (shipment.state == 'ready' || shipment.state == 'pending');
return shipment.state == 'ready' || shipment.state == 'pending';
});
if(shipment==undefined){
$.ajax({
type: "POST",
url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments.json"),
data: { variant_id: variant_id, quantity: quantity, stock_location_id: stock_location_id }
data: { variant_id: variant_id, quantity: quantity }
}).done(function( msg ) {
window.location.reload();
}).error(function( msg ) {

View File

@@ -1,21 +0,0 @@
root = exports ? this
root.taxon_tree_menu = (obj, context) ->
base_url = Spree.url(Spree.routes.taxonomy_taxons)
admin_base_url = Spree.url(Spree.routes.admin_taxonomy_taxons)
edit_url = Spree.url(Spree.routes.admin_taxonomy_taxons + '/' + obj.attr("id") + "/edit");
create:
label: "<i class='icon-plus'></i> " + Spree.translations.add,
action: (obj) -> context.create(obj)
rename:
label: "<i class='icon-pencil'></i> " + Spree.translations.rename,
action: (obj) -> context.rename(obj)
remove:
label: "<i class='icon-trash'></i> " + Spree.translations.remove,
action: (obj) -> context.remove(obj)
edit:
separator_before: true,
label: "<i class='icon-edit'></i> " + Spree.translations.edit,
action: (obj) -> window.location = edit_url.toString()

View File

@@ -1,139 +0,0 @@
handle_ajax_error = (XMLHttpRequest, textStatus, errorThrown) ->
$.jstree.rollback(last_rollback)
$("#ajax_error").show().html("<strong>" + server_error + "</strong><br />" + taxonomy_tree_error)
handle_move = (e, data) ->
last_rollback = data.rlbk
position = data.rslt.cp
node = data.rslt.o
new_parent = data.rslt.np
url = new URL(Spree.routes.admin_taxonomy_taxons)
url.pathname = url.pathname + '/' + node.attr("id")
data = {
_method: "put",
"taxon[position]": position,
"taxon[parent_id]": if !isNaN(new_parent.attr("id")) then new_parent.attr("id") else undefined
}
$.ajax
type: "POST",
dataType: "json",
url: url.toString(),
data: data,
error: handle_ajax_error
true
handle_create = (e, data) ->
last_rollback = data.rlbk
node = data.rslt.obj
name = data.rslt.name
position = data.rslt.position
new_parent = data.rslt.parent
data = {
"taxon[name]": name,
"taxon[position]": position
"taxon[parent_id]": if !isNaN(new_parent.attr("id")) then new_parent.attr("id") else undefined
}
$.ajax
type: "POST",
dataType: "json",
url: base_url.toString(),
data: data,
error: handle_ajax_error,
success: (data,result) ->
node.attr('id', data.id)
handle_rename = (e, data) ->
last_rollback = data.rlbk
node = data.rslt.obj
name = data.rslt.new_name
# change the name inside the main input field as well if taxon is the root one
document.getElementById("taxonomy_name").value = name if node.parents("[id]").attr("id") == "taxonomy_tree"
url = new URL(base_url)
url.pathname = url.pathname + '/' + node.attr("id")
$.ajax
type: "POST",
dataType: "json",
url: url.toString(),
data: {_method: "put", "taxon[name]": name },
error: handle_ajax_error
handle_delete = (e, data) ->
last_rollback = data.rlbk
node = data.rslt.obj
delete_url = new URL(base_url)
delete_url.pathname = delete_url.pathname + '/' + node.attr("id")
if confirm(Spree.translations.are_you_sure_delete)
$.ajax
type: "POST",
dataType: "json",
url: delete_url.toString(),
data: {_method: "delete"},
error: handle_ajax_error
else
$.jstree.rollback(last_rollback)
last_rollback = null
root = exports ? this
root.setup_taxonomy_tree = (taxonomy_id) ->
if taxonomy_id != undefined
# this is defined within admin/taxonomies/edit
root.base_url = Spree.url(Spree.routes.taxonomy_taxons)
$.ajax
url: base_url.pathname.replace("/taxons", "/jstree"),
success: (taxonomy) ->
last_rollback = null
conf =
json_data:
data: taxonomy,
ajax:
url: (e) ->
base_url.pathname + '/' + e.attr('id') + '/jstree'
themes:
theme: "apple",
url: "/assets/jquery.jstree/themes/apple/style.css"
strings:
new_node: new_taxon,
loading: Spree.translations.loading + "..."
crrm:
move:
check_move: (m) ->
position = m.cp
node = m.o
new_parent = m.np
# no parent or cant drag and drop
if !new_parent || node.attr("rel") == "root"
return false
# can't drop before root
if new_parent.attr("id") == "taxonomy_tree" && position == 0
return false
true
contextmenu:
items: (obj) ->
taxon_tree_menu(obj, this)
plugins: ["themes", "json_data", "dnd", "crrm", "contextmenu"]
$("#taxonomy_tree").jstree(conf)
.bind("move_node.jstree", handle_move)
.bind("remove.jstree", handle_delete)
.bind("create.jstree", handle_create)
.bind("rename.jstree", handle_rename)
.bind "loaded.jstree", ->
$(this).jstree("core").toggle_node($('.jstree-icon').first())
$("#taxonomy_tree a").on "dblclick", (e) ->
$("#taxonomy_tree").jstree("rename", this)
# surpress form submit on enter/return
$(document).keypress (e) ->
if e.keyCode == 13
e.preventDefault()

View File

@@ -1,58 +0,0 @@
angular.module("admin.tagRules").controller "TagRulesCtrl", ($scope, $http, $filter, enterprise) ->
$scope.tagGroups = enterprise.tag_groups
$scope.defaultTagGroup = enterprise.default_tag_group
$scope.visibilityOptions = [ { id: "visible", name: t('js.tag_rules.visible') }, { id: "hidden", name: t('js.tag_rules.not_visible') } ]
$scope.updateRuleCounts = ->
index = $scope.defaultTagGroup.rules.length
for tagGroup in $filter('orderBy')($scope.tagGroups, 'position')
tagGroup.startIndex = index
index = index + tagGroup.rules.length
$scope.updateRuleCounts()
$scope.updateTagsRulesFor = (tagGroup) ->
for tagRule in tagGroup.rules
tagRule.preferred_customer_tags = (tag.text for tag in tagGroup.tags).join(",")
$scope.addNewRuleTo = (tagGroup, ruleType) ->
newRule =
id: null
is_default: tagGroup == $scope.defaultTagGroup
preferred_customer_tags: (tag.text for tag in tagGroup.tags).join(",")
type: "TagRule::#{ruleType}"
switch ruleType
when "FilterShippingMethods"
newRule.peferred_shipping_method_tags = []
newRule.preferred_matched_shipping_methods_visibility = "visible"
when "FilterPaymentMethods"
newRule.peferred_payment_method_tags = []
newRule.preferred_matched_payment_methods_visibility = "visible"
when "FilterProducts"
newRule.peferred_variant_tags = []
newRule.preferred_matched_variants_visibility = "visible"
when "FilterOrderCycles"
newRule.peferred_exchange_tags = []
newRule.preferred_matched_order_cycles_visibility = "visible"
tagGroup.rules.push(newRule)
$scope.updateRuleCounts()
$scope.addNewTag = ->
$scope.tagGroups.push { tags: [], rules: [], position: $scope.tagGroups.length + 1 }
$scope.deleteTagRule = (tagGroup, tagRule) ->
index = tagGroup.rules.indexOf(tagRule)
return unless index >= 0
if tagRule.id is null
tagGroup.rules.splice(index, 1)
$scope.updateRuleCounts()
else
if confirm("Are you sure?")
$http
method: "DELETE"
url: "/admin/enterprises/#{enterprise.id}/tag_rules/#{tagRule.id}.json"
.then ->
tagGroup.rules.splice(index, 1)
$scope.updateRuleCounts()
$scope.enterprise_form.$setDirty()

View File

@@ -1,11 +0,0 @@
angular.module("admin.tagRules").directive "invertNumber", ->
restrict: "A"
require: "ngModel"
link: (scope, element, attrs, ngModel) ->
ngModel.$parsers.push (viewValue) ->
return -parseInt(viewValue) unless isNaN(parseInt(viewValue))
viewValue
ngModel.$formatters.push (modelValue) ->
return -parseInt(modelValue) unless isNaN(parseInt(modelValue))
modelValue

View File

@@ -1,31 +0,0 @@
angular.module("admin.tagRules").directive 'newTagRuleDialog', ($rootScope, $compile, $templateCache, DialogDefaults) ->
restrict: 'A'
scope:
tagGroup: '='
addNewRuleTo: '='
link: (scope, element, attr) ->
# Compile modal template
template = $compile($templateCache.get('admin/new_tag_rule_dialog.html'))(scope)
scope.ruleTypes = [
{ id: "FilterProducts", name: t('js.tag_rules.show_hide_variants') }
{ id: "FilterShippingMethods", name: t('js.tag_rules.show_hide_shipping') }
{ id: "FilterPaymentMethods", name: t('js.tag_rules.show_hide_payment') }
{ id: "FilterOrderCycles", name: t('js.tag_rules.show_hide_order_cycles') }
]
scope.ruleType = scope.ruleTypes[0].id
# Set Dialog options
template.dialog(DialogDefaults)
# Link opening of dialog to click event on element
element.bind 'click', (e) ->
template.dialog('open')
$rootScope.$evalAsync()
scope.addRule = (tagGroup, ruleType) ->
scope.addNewRuleTo(tagGroup, ruleType)
template.dialog('close')
$rootScope.$evalAsync()
return

View File

@@ -1,41 +0,0 @@
angular.module("admin.tagRules").directive "tagRule", ->
restrict: "C"
templateUrl: "admin/tag_rules/tag_rule.html"
link: (scope, element, attrs) ->
scope.opt =
"TagRule::FilterShippingMethods":
textTop: t('js.admin.tag_rules.shipping_method_tagged_top')
textBottom: t('js.admin.tag_rules.shipping_method_tagged_bottom')
taggable: "shipping_method"
tagsAttr: "shipping_method_tags"
tagListAttr: "preferred_shipping_method_tags"
inputTemplate: "admin/tag_rules/filter_shipping_methods_input.html"
tagListFor: (rule) ->
rule.preferred_shipping_method_tags
"TagRule::FilterPaymentMethods":
textTop: t('js.admin.tag_rules.payment_method_tagged_top')
textBottom: t('js.admin.tag_rules.payment_method_tagged_bottom')
taggable: "payment_method"
tagsAttr: "payment_method_tags"
tagListAttr: "preferred_payment_method_tags"
inputTemplate: "admin/tag_rules/filter_payment_methods_input.html"
tagListFor: (rule) ->
rule.preferred_payment_method_tags
"TagRule::FilterOrderCycles":
textTop: t('js.admin.tag_rules.order_cycle_tagged_top')
textBottom: t('js.admin.tag_rules.order_cycle_tagged_bottom')
taggable: "exchange"
tagsAttr: "exchange_tags"
tagListAttr: "preferred_exchange_tags"
inputTemplate: "admin/tag_rules/filter_order_cycles_input.html"
tagListFor: (rule) ->
rule.preferred_exchange_tags
"TagRule::FilterProducts":
textTop: t('js.admin.tag_rules.inventory_tagged_top')
textBottom: t('js.admin.tag_rules.inventory_tagged_bottom')
taggable: "variant"
tagsAttr: "variant_tags"
tagListAttr: "preferred_variant_tags"
inputTemplate: "admin/tag_rules/filter_products_input.html"
tagListFor: (rule) ->
rule.preferred_variant_tags

View File

@@ -1,6 +0,0 @@
angular.module("admin.utils").directive "textangularLinksTargetBlank", () ->
restrict: 'CA'
link: (scope, element, attrs) ->
setTimeout ->
element.find(".ta-editor").scope().defaultTagAttributes.a.target = '_blank'
, 500

View File

@@ -1,11 +0,0 @@
angular.module("admin.utils").directive "textangularStrip", () ->
restrict: 'CA'
link: (scope, element, attrs) ->
scope.stripFormatting = ($html) ->
element = document.createElement("div")
element.innerHTML = String($html)
allTags = element.getElementsByTagName("*")
for child in allTags
child.removeAttribute("style")
child.removeAttribute("class")
return element.innerHTML

View File

@@ -26,6 +26,8 @@ angular.module("admin.utils").directive "variantAutocomplete", ($timeout) ->
order_cycle_id: scope.order_cycle_id
eligible_for_subscriptions: scope.eligible_for_subscriptions
include_out_of_stock: scope.include_out_of_stock
search_variants_as: scope.search_variants_as
order_id: scope.order_id
results: (data, page) ->
window.variants = data # this is how spree auto complete JS code picks up variants
results: data

View File

@@ -9,6 +9,7 @@ angular.module("admin.utils")
$window.onbeforeunload = @onBeforeUnloadHandler
$rootScope.$on "$locationChangeStart", @locationChangeStartHandler
$window.onBeforeUnloadHandler = @onBeforeUnloadHandler
# Action for regular browser navigation.
onBeforeUnloadHandler: ($event) =>

View File

@@ -10,7 +10,9 @@ angular.module("admin.utils").factory "StatusMessage", ->
statusMessage:
text: ""
style: {}
style: {},
type: null,
actionName: null
invalidMessage: ""
@@ -23,11 +25,15 @@ angular.module("admin.utils").factory "StatusMessage", ->
active: ->
@statusMessage.text != ''
display: (type, text) ->
display: (type, text, actionName = null) ->
@statusMessage.text = text
@statusMessage.type = type
@statusMessage.actionName = actionName
@statusMessage.style = @types[type].style
null
clear: ->
@statusMessage.text = ''
@statusMessage.style = {}
@statusMessage.type = null
@statusMessage.actionName = null

View File

@@ -17,7 +17,6 @@
#= require angular-google-maps.min.js
#= require ../shared/mm-foundation-tpls-0.9.0-20180826174721.min.js
#= require ../shared/ng-infinite-scroll.min.js
#= require ../shared/angular-local-storage.js
#= require ../shared/angular-slideables.js
#= require ../shared/shared
#= require_tree ../shared/directives

View File

@@ -1,7 +1,6 @@
angular.module("Darkswarm", [
'ngResource',
'mm.foundation',
'LocalStorageModule',
'infinite-scroll',
'angular-flash.service',
'templates',

View File

@@ -1,6 +1,6 @@
angular.module('Darkswarm').directive "activeTableHubLink", (CurrentHub, CurrentOrder) ->
# Change the text of the hub link based on CurrentHub
# To be used with ofnEmptiesCart
# To be used with ofnChangeHub
# Takes "change" and "shop" as text string attributes
restrict: "A"
scope:

View File

@@ -1,11 +0,0 @@
angular.module('Darkswarm').directive "darkerBackground", ->
restrict: "A"
link: (scope, elm, attr)->
toggleClass = (value) ->
elm.closest('.page-view').toggleClass("with-darker-background", value)
toggleClass(true)
# if an OrderCycle is selected, disable darker background
scope.$watch 'order_cycle.order_cycle_id', (newvalue, oldvalue) ->
toggleClass(false) if newvalue

View File

@@ -1,14 +0,0 @@
# Allows disabling of link buttons via disabled attribute.
# This is normally ignored, ie the link appears disabled but is still clickable.
angular.module('Darkswarm').directive "disableDynamically", ->
restrict: 'A'
link: (scope, element, attrs) ->
element.on 'click', (e) ->
if attrs.disabled
e.preventDefault()
return
scope.$on "$destroy", ->
element.off("click")

View File

@@ -1,10 +0,0 @@
angular.module('Darkswarm').directive "ofnDisableScroll", ()->
# Stops scrolling from incrementing or decrementing input value
# Useful for number inputs
restrict: 'A'
link: (scope, element, attrs)->
element.bind 'focus', ->
element.bind 'mousewheel', (e)->
e.preventDefault()
element.bind 'blur', ->
element.unbind 'mousewheel'

View File

@@ -1,7 +0,0 @@
angular.module('Darkswarm').directive "ofnInlineAlert", ->
restrict: 'A'
scope: true
link: (scope, elem, attrs) ->
scope.visible = true
scope.close = ->
scope.visible = false

View File

@@ -1,5 +0,0 @@
angular.module('Darkswarm').directive "integer", ->
restrict: 'A'
link: (scope, elem, attr) ->
elem.bind 'input', ->
elem.val Math.round(elem.val())

View File

@@ -20,10 +20,13 @@ angular.module('Darkswarm').directive 'mapSearch', ($timeout, Search) ->
$timeout =>
map = ctrl.getMap()
searchBox = scope.createSearchBox map
scope.bindSearchResponse map, searchBox
scope.biasResults map, searchBox
scope.performUrlSearch map
if !map
alert(t('gmap_load_failure'))
else
searchBox = scope.createSearchBox map
scope.bindSearchResponse map, searchBox
scope.biasResults map, searchBox
scope.performUrlSearch map
scope.createSearchBox = (map) ->
map.controls[google.maps.ControlPosition.TOP_LEFT].push scope.input

View File

@@ -13,6 +13,8 @@ angular.module('Darkswarm').directive 'ofnOpenStreetMap', ($window, MapCentreCal
buildMarker = (enterprise, latlng, title) ->
icon = L.icon
iconAnchor: [14, 33]
iconSize: [28, 33]
iconUrl: enterprise.icon
marker = L.marker latlng,
draggable: true,

View File

@@ -1,21 +0,0 @@
angular.module('Darkswarm').directive "ofnPageAlert", ($timeout) ->
restrict: 'A'
scope: true
link: (scope, elem, attrs) ->
moveSelectors = [".off-canvas-wrap .inner-wrap",
".off-canvas-wrap .inner-wrap .fixed",
".off-canvas-fixed .top-bar",
".off-canvas-fixed ofn-flash",
".off-canvas-fixed nav.tab-bar",
".off-canvas-fixed .page-alert"]
container_elems = $(moveSelectors.join(", "))
# Wait a moment after page load before showing the alert. Otherwise we often miss the
# start of the animation.
$timeout ->
container_elems.addClass("move-up")
, 1000
scope.close = ->
container_elems.removeClass("move-up")

View File

@@ -1,14 +0,0 @@
angular.module('Darkswarm').directive "renderSvg", ()->
# Magical directive that'll render SVGs from URLs
# If only there were a neater way of doing this
restrict: 'E'
priority: 99
template: "<svg-wrapper></svg-wrapper>"
# Fetch SVG via ajax, inject into page using DOM
link: (scope, elem, attr)->
if /.svg/.test attr.path # Only do this if we've got an svg
$.ajax
url: attr.path
success: (html)->
elem.html($(html).find("svg"))

View File

@@ -1,9 +0,0 @@
angular.module('Darkswarm').directive "ofnScrollTo", ($location, $anchorScroll)->
# Onclick sets $location.hash to attrs.ofnScrollTo
# Then triggers anchorScroll
restrict: 'A'
link: (scope, element, attrs)->
element.bind 'click', (ev)->
ev.stopPropagation()
$location.hash attrs.ofnScrollTo
$anchorScroll()

View File

@@ -1,4 +1,4 @@
angular.module('Darkswarm').factory 'Cart', (CurrentOrder, Variants, $timeout, $http, $modal, $rootScope, $resource, localStorageService, Messages) ->
angular.module('Darkswarm').factory 'Cart', (CurrentOrder, Variants, $timeout, $http, $modal, $rootScope, $resource, Messages) ->
# Handles syncing of current cart/order state to server
new class Cart
dirty: false
@@ -113,7 +113,6 @@ angular.module('Darkswarm').factory 'Cart', (CurrentOrder, Variants, $timeout, $
clear: ->
@line_items = []
localStorageService.clearAll() # One day this will have to be moar GRANULAR
isOnlyItemInOrder: (id) =>
deletedItem = @line_items_finalised.find((item) -> item.id == id)

View File

@@ -1,546 +0,0 @@
/**
* An Angular module that gives you access to the browsers local storage
* @version v0.5.0 - 2016-08-29
* @link https://github.com/grevory/angular-local-storage
* @author grevory <greg@gregpike.ca>
* @license MIT License, http://www.opensource.org/licenses/MIT
*/
(function (window, angular) {
var isDefined = angular.isDefined,
isUndefined = angular.isUndefined,
isNumber = angular.isNumber,
isObject = angular.isObject,
isArray = angular.isArray,
extend = angular.extend,
toJson = angular.toJson;
angular
.module('LocalStorageModule', [])
.provider('localStorageService', function() {
// You should set a prefix to avoid overwriting any local storage variables from the rest of your app
// e.g. localStorageServiceProvider.setPrefix('yourAppName');
// With provider you can use config as this:
// myApp.config(function (localStorageServiceProvider) {
// localStorageServiceProvider.prefix = 'yourAppName';
// });
this.prefix = 'ls';
// You could change web storage type localstorage or sessionStorage
this.storageType = 'localStorage';
// Cookie options (usually in case of fallback)
// expiry = Number of days before cookies expire // 0 = Does not expire
// path = The web path the cookie represents
// secure = Wether the cookies should be secure (i.e only sent on HTTPS requests)
this.cookie = {
expiry: 30,
path: '/',
secure: false
};
// Decides wether we should default to cookies if localstorage is not supported.
this.defaultToCookie = true;
// Send signals for each of the following actions?
this.notify = {
setItem: true,
removeItem: false
};
// Setter for the prefix
this.setPrefix = function(prefix) {
this.prefix = prefix;
return this;
};
// Setter for the storageType
this.setStorageType = function(storageType) {
this.storageType = storageType;
return this;
};
// Setter for defaultToCookie value, default is true.
this.setDefaultToCookie = function (shouldDefault) {
this.defaultToCookie = !!shouldDefault; // Double-not to make sure it's a bool value.
return this;
};
// Setter for cookie config
this.setStorageCookie = function(exp, path, secure) {
this.cookie.expiry = exp;
this.cookie.path = path;
this.cookie.secure = secure;
return this;
};
// Setter for cookie domain
this.setStorageCookieDomain = function(domain) {
this.cookie.domain = domain;
return this;
};
// Setter for notification config
// itemSet & itemRemove should be booleans
this.setNotify = function(itemSet, itemRemove) {
this.notify = {
setItem: itemSet,
removeItem: itemRemove
};
return this;
};
this.$get = ['$rootScope', '$window', '$document', '$parse','$timeout', function($rootScope, $window, $document, $parse, $timeout) {
var self = this;
var prefix = self.prefix;
var cookie = self.cookie;
var notify = self.notify;
var storageType = self.storageType;
var webStorage;
// When Angular's $document is not available
if (!$document) {
$document = document;
} else if ($document[0]) {
$document = $document[0];
}
// If there is a prefix set in the config lets use that with an appended period for readability
if (prefix.substr(-1) !== '.') {
prefix = !!prefix ? prefix + '.' : '';
}
var deriveQualifiedKey = function(key) {
return prefix + key;
};
// Removes prefix from the key.
var underiveQualifiedKey = function (key) {
return key.replace(new RegExp('^' + prefix, 'g'), '');
};
// Check if the key is within our prefix namespace.
var isKeyPrefixOurs = function (key) {
return key.indexOf(prefix) === 0;
};
// Checks the browser to see if local storage is supported
var checkSupport = function () {
try {
var supported = (storageType in $window && $window[storageType] !== null);
// When Safari (OS X or iOS) is in private browsing mode, it appears as though localStorage
// is available, but trying to call .setItem throws an exception.
//
// "QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to add something to storage
// that exceeded the quota."
var key = deriveQualifiedKey('__' + Math.round(Math.random() * 1e7));
if (supported) {
webStorage = $window[storageType];
webStorage.setItem(key, '');
webStorage.removeItem(key);
}
return supported;
} catch (e) {
// Only change storageType to cookies if defaulting is enabled.
if (self.defaultToCookie)
storageType = 'cookie';
$rootScope.$broadcast('LocalStorageModule.notification.error', e.message);
return false;
}
};
var browserSupportsLocalStorage = checkSupport();
// Directly adds a value to local storage
// If local storage is not available in the browser use cookies
// Example use: localStorageService.add('library','angular');
var addToLocalStorage = function (key, value, type) {
setStorageType(type);
// Let's convert undefined values to null to get the value consistent
if (isUndefined(value)) {
value = null;
} else {
value = toJson(value);
}
// If this browser does not support local storage use cookies
if (!browserSupportsLocalStorage && self.defaultToCookie || self.storageType === 'cookie') {
if (!browserSupportsLocalStorage) {
$rootScope.$broadcast('LocalStorageModule.notification.warning', 'LOCAL_STORAGE_NOT_SUPPORTED');
}
if (notify.setItem) {
$rootScope.$broadcast('LocalStorageModule.notification.setitem', {key: key, newvalue: value, storageType: 'cookie'});
}
return addToCookies(key, value);
}
try {
if (webStorage) {
webStorage.setItem(deriveQualifiedKey(key), value);
}
if (notify.setItem) {
$rootScope.$broadcast('LocalStorageModule.notification.setitem', {key: key, newvalue: value, storageType: self.storageType});
}
} catch (e) {
$rootScope.$broadcast('LocalStorageModule.notification.error', e.message);
return addToCookies(key, value);
}
return true;
};
// Directly get a value from local storage
// Example use: localStorageService.get('library'); // returns 'angular'
var getFromLocalStorage = function (key, type) {
setStorageType(type);
if (!browserSupportsLocalStorage && self.defaultToCookie || self.storageType === 'cookie') {
if (!browserSupportsLocalStorage) {
$rootScope.$broadcast('LocalStorageModule.notification.warning', 'LOCAL_STORAGE_NOT_SUPPORTED');
}
return getFromCookies(key);
}
var item = webStorage ? webStorage.getItem(deriveQualifiedKey(key)) : null;
// angular.toJson will convert null to 'null', so a proper conversion is needed
// FIXME not a perfect solution, since a valid 'null' string can't be stored
if (!item || item === 'null') {
return null;
}
try {
return JSON.parse(item);
} catch (e) {
return item;
}
};
// Remove an item from local storage
// Example use: localStorageService.remove('library'); // removes the key/value pair of library='angular'
//
// This is var-arg removal, check the last argument to see if it is a storageType
// and set type accordingly before removing.
//
var removeFromLocalStorage = function () {
// can't pop on arguments, so we do this
var consumed = 0;
if (arguments.length >= 1 &&
(arguments[arguments.length - 1] === 'localStorage' ||
arguments[arguments.length - 1] === 'sessionStorage')) {
consumed = 1;
setStorageType(arguments[arguments.length - 1]);
}
var i, key;
for (i = 0; i < arguments.length - consumed; i++) {
key = arguments[i];
if (!browserSupportsLocalStorage && self.defaultToCookie || self.storageType === 'cookie') {
if (!browserSupportsLocalStorage) {
$rootScope.$broadcast('LocalStorageModule.notification.warning', 'LOCAL_STORAGE_NOT_SUPPORTED');
}
if (notify.removeItem) {
$rootScope.$broadcast('LocalStorageModule.notification.removeitem', {key: key, storageType: 'cookie'});
}
removeFromCookies(key);
}
else {
try {
webStorage.removeItem(deriveQualifiedKey(key));
if (notify.removeItem) {
$rootScope.$broadcast('LocalStorageModule.notification.removeitem', {
key: key,
storageType: self.storageType
});
}
} catch (e) {
$rootScope.$broadcast('LocalStorageModule.notification.error', e.message);
removeFromCookies(key);
}
}
}
};
// Return array of keys for local storage
// Example use: var keys = localStorageService.keys()
var getKeysForLocalStorage = function (type) {
setStorageType(type);
if (!browserSupportsLocalStorage) {
$rootScope.$broadcast('LocalStorageModule.notification.warning', 'LOCAL_STORAGE_NOT_SUPPORTED');
return [];
}
var prefixLength = prefix.length;
var keys = [];
for (var key in webStorage) {
// Only return keys that are for this app
if (key.substr(0, prefixLength) === prefix) {
try {
keys.push(key.substr(prefixLength));
} catch (e) {
$rootScope.$broadcast('LocalStorageModule.notification.error', e.Description);
return [];
}
}
}
return keys;
};
// Remove all data for this app from local storage
// Also optionally takes a regular expression string and removes the matching key-value pairs
// Example use: localStorageService.clearAll();
// Should be used mostly for development purposes
var clearAllFromLocalStorage = function (regularExpression, type) {
setStorageType(type);
// Setting both regular expressions independently
// Empty strings result in catchall RegExp
var prefixRegex = !!prefix ? new RegExp('^' + prefix) : new RegExp();
var testRegex = !!regularExpression ? new RegExp(regularExpression) : new RegExp();
if (!browserSupportsLocalStorage && self.defaultToCookie || self.storageType === 'cookie') {
if (!browserSupportsLocalStorage) {
$rootScope.$broadcast('LocalStorageModule.notification.warning', 'LOCAL_STORAGE_NOT_SUPPORTED');
}
return clearAllFromCookies();
}
if (!browserSupportsLocalStorage && !self.defaultToCookie)
return false;
var prefixLength = prefix.length;
for (var key in webStorage) {
// Only remove items that are for this app and match the regular expression
if (prefixRegex.test(key) && testRegex.test(key.substr(prefixLength))) {
try {
removeFromLocalStorage(key.substr(prefixLength));
} catch (e) {
$rootScope.$broadcast('LocalStorageModule.notification.error', e.message);
return clearAllFromCookies();
}
}
}
return true;
};
// Checks the browser to see if cookies are supported
var browserSupportsCookies = (function() {
try {
return $window.navigator.cookieEnabled ||
("cookie" in $document && ($document.cookie.length > 0 ||
($document.cookie = "test").indexOf.call($document.cookie, "test") > -1));
} catch (e) {
$rootScope.$broadcast('LocalStorageModule.notification.error', e.message);
return false;
}
}());
// Directly adds a value to cookies
// Typically used as a fallback if local storage is not available in the browser
// Example use: localStorageService.cookie.add('library','angular');
var addToCookies = function (key, value, daysToExpiry, secure) {
if (isUndefined(value)) {
return false;
} else if(isArray(value) || isObject(value)) {
value = toJson(value);
}
if (!browserSupportsCookies) {
$rootScope.$broadcast('LocalStorageModule.notification.error', 'COOKIES_NOT_SUPPORTED');
return false;
}
try {
var expiry = '',
expiryDate = new Date(),
cookieDomain = '';
if (value === null) {
// Mark that the cookie has expired one day ago
expiryDate.setTime(expiryDate.getTime() + (-1 * 24 * 60 * 60 * 1000));
expiry = "; expires=" + expiryDate.toGMTString();
value = '';
} else if (isNumber(daysToExpiry) && daysToExpiry !== 0) {
expiryDate.setTime(expiryDate.getTime() + (daysToExpiry * 24 * 60 * 60 * 1000));
expiry = "; expires=" + expiryDate.toGMTString();
} else if (cookie.expiry !== 0) {
expiryDate.setTime(expiryDate.getTime() + (cookie.expiry * 24 * 60 * 60 * 1000));
expiry = "; expires=" + expiryDate.toGMTString();
}
if (!!key) {
var cookiePath = "; path=" + cookie.path;
if (cookie.domain) {
cookieDomain = "; domain=" + cookie.domain;
}
/* Providing the secure parameter always takes precedence over config
* (allows developer to mix and match secure + non-secure) */
if (typeof secure === 'boolean') {
if (secure === true) {
/* We've explicitly specified secure,
* add the secure attribute to the cookie (after domain) */
cookieDomain += "; secure";
}
// else - secure has been supplied but isn't true - so don't set secure flag, regardless of what config says
}
else if (cookie.secure === true) {
// secure parameter wasn't specified, get default from config
cookieDomain += "; secure";
}
$document.cookie = deriveQualifiedKey(key) + "=" + encodeURIComponent(value) + expiry + cookiePath + cookieDomain;
}
} catch (e) {
$rootScope.$broadcast('LocalStorageModule.notification.error', e.message);
return false;
}
return true;
};
// Directly get a value from a cookie
// Example use: localStorageService.cookie.get('library'); // returns 'angular'
var getFromCookies = function (key) {
if (!browserSupportsCookies) {
$rootScope.$broadcast('LocalStorageModule.notification.error', 'COOKIES_NOT_SUPPORTED');
return false;
}
var cookies = $document.cookie && $document.cookie.split(';') || [];
for(var i=0; i < cookies.length; i++) {
var thisCookie = cookies[i];
while (thisCookie.charAt(0) === ' ') {
thisCookie = thisCookie.substring(1,thisCookie.length);
}
if (thisCookie.indexOf(deriveQualifiedKey(key) + '=') === 0) {
var storedValues = decodeURIComponent(thisCookie.substring(prefix.length + key.length + 1, thisCookie.length));
try {
return JSON.parse(storedValues);
} catch(e) {
return storedValues;
}
}
}
return null;
};
var removeFromCookies = function (key) {
addToCookies(key,null);
};
var clearAllFromCookies = function () {
var thisCookie = null;
var prefixLength = prefix.length;
var cookies = $document.cookie.split(';');
for(var i = 0; i < cookies.length; i++) {
thisCookie = cookies[i];
while (thisCookie.charAt(0) === ' ') {
thisCookie = thisCookie.substring(1, thisCookie.length);
}
var key = thisCookie.substring(prefixLength, thisCookie.indexOf('='));
removeFromCookies(key);
}
};
var getStorageType = function() {
return storageType;
};
var setStorageType = function(type) {
if (type && storageType !== type) {
storageType = type;
browserSupportsLocalStorage = checkSupport();
}
return browserSupportsLocalStorage;
};
// Add a listener on scope variable to save its changes to local storage
// Return a function which when called cancels binding
var bindToScope = function(scope, key, def, lsKey, type) {
lsKey = lsKey || key;
var value = getFromLocalStorage(lsKey, type);
if (value === null && isDefined(def)) {
value = def;
} else if (isObject(value) && isObject(def)) {
value = extend(value, def);
}
$parse(key).assign(scope, value);
return scope.$watch(key, function(newVal) {
addToLocalStorage(lsKey, newVal, type);
}, isObject(scope[key]));
};
// Add listener to local storage, for update callbacks.
if (browserSupportsLocalStorage) {
if ($window.addEventListener) {
$window.addEventListener("storage", handleStorageChangeCallback, false);
$rootScope.$on('$destroy', function() {
$window.removeEventListener("storage", handleStorageChangeCallback);
});
} else if($window.attachEvent){
// attachEvent and detachEvent are proprietary to IE v6-10
$window.attachEvent("onstorage", handleStorageChangeCallback);
$rootScope.$on('$destroy', function() {
$window.detachEvent("onstorage", handleStorageChangeCallback);
});
}
}
// Callback handler for storage changed.
function handleStorageChangeCallback(e) {
if (!e) { e = $window.event; }
if (notify.setItem) {
if (isKeyPrefixOurs(e.key)) {
var key = underiveQualifiedKey(e.key);
// Use timeout, to avoid using $rootScope.$apply.
$timeout(function () {
$rootScope.$broadcast('LocalStorageModule.notification.changed', { key: key, newvalue: e.newValue, storageType: self.storageType });
});
}
}
}
// Return localStorageService.length
// ignore keys that not owned
var lengthOfLocalStorage = function(type) {
setStorageType(type);
var count = 0;
var storage = $window[storageType];
for(var i = 0; i < storage.length; i++) {
if(storage.key(i).indexOf(prefix) === 0 ) {
count++;
}
}
return count;
};
return {
isSupported: browserSupportsLocalStorage,
getStorageType: getStorageType,
setStorageType: setStorageType,
set: addToLocalStorage,
add: addToLocalStorage, //DEPRECATED
get: getFromLocalStorage,
keys: getKeysForLocalStorage,
remove: removeFromLocalStorage,
clearAll: clearAllFromLocalStorage,
bind: bindToScope,
deriveKey: deriveQualifiedKey,
underiveKey: underiveQualifiedKey,
length: lengthOfLocalStorage,
defaultToCookie: this.defaultToCookie,
cookie: {
isSupported: browserSupportsCookies,
set: addToCookies,
add: addToCookies, //DEPRECATED
get: getFromCookies,
remove: removeFromCookies,
clearAll: clearAllFromCookies
}
};
}];
});
})(window, window.angular);

View File

@@ -1,5 +1,4 @@
window.OFNShared = angular.module("OFNShared", [
"mm.foundation",
"LocalStorageModule"
]).config ($httpProvider) ->
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"

View File

@@ -1,2 +1,3 @@
- # NOTE: make sure that any changes in this template are reflected in app/views/admin/products_v3/product_preview.turbo_stream.haml
%li{ "ng-class": "{active: selector.active}" }
%a{ tooltip: "{{selector.object.value}}", "tooltip-placement": "bottom", "ng-transclude": true, "ng-class": "{active: selector.active, 'has-tip': selector.object.value}" }

View File

@@ -2,13 +2,13 @@
.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" }
.menu{ 'ng-show' => "expanded" }
.menu_items
.menu_item{ "ng-repeat": "column in columns", "ng-click": "toggle(column);" }
%input{ type: "checkbox", "ng-checked": "column.visible" }
%span
{{ column.name }}
%hr
%div.menu_item.text-center
.menu_item.text-center
%input.fullwidth.orange{ type: "button", "ng-value": "saved() ? 'Saved': 'Saving'", "ng-show": "saved() || saving", "ng-disabled": "saved()" }
%input.fullwidth.red{ type: "button", value: t('admin.column_save_as_default').html_safe, "ng-show": "!saved() && !saving", "ng-click": "saveColumnPreferences(action)" }

View File

@@ -2,7 +2,7 @@
%i.fa.fa-times-circle{'aria-hidden' => "true"}
%form#image_upload{ name: 'form', novalidate: true, enctype: 'multipart/form-data', multipart: true, "ng-controller": "ProductImageCtrl" }
%div.image-preview
.image-preview
%img.spinner{ src: image_path("/spinning-circles.svg"), "ng-hide": "!imageUploader.isUploading" }
%img.preview{ "ng-src": "{{imagePreview}}", "ng-class": "{'faded': imageUploader.isUploading}" }

View File

@@ -1,10 +0,0 @@
#new-tag-rule-dialog
.text-normal.margin-bottom-30.text-center
{{ 'js.admin.new_tag_rule_dialog.select_rule_type' | t }}
.text-center.margin-bottom-30
-# %select.fullwidth{ 'select2-min-search' => 5, 'ng-model' => 'newRuleType', 'ng-options' => 'ruleType.id as ruleType.name for ruleType in availableRuleTypes' }
%input.ofn-select2.fullwidth{ id: 'rule_type_selector', data: "ruleTypes", "min-search": "5", "ng-model": "ruleType" }
.text-center
%input.button.red.icon-plus{ type: 'button', value: "{{ 'js.admin.new_tag_rule_dialog.add_rule' | t }}", "ng-click": 'addRule(tagGroup, ruleType)' }

View File

@@ -15,7 +15,7 @@
.exchange-product{'ng-repeat' => 'product in enterprises[exchange.enterprise_id].supplied_products | filter:visibleProducts:exchange:order_cycle.visible_variants_for_outgoing_exchanges' }
.exchange-product-details
%label
%img{'ng-src' => '{{ product.image_url }}'}
%img{'ng-src' => '{{ product.image_url }}'}
.name {{ product.name }}
.supplier {{ product.supplier_name }}

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