Compare commits

...

1028 Commits

Author SHA1 Message Date
Jean-Baptiste Bellet
dab595f17f Update all locales with the latest Transifex translations 2023-07-07 17:11:40 +02:00
Filipe
f0bcb79c09 Merge pull request #11169 from openfoodfoundation/11164-admin-orders-actions-dropdown-is-not-well-placed
Fix container issues introduced by #11123
2023-07-07 11:15:14 +01:00
jibees
967c5a99c3 Merge pull request #11167 from openfoodfoundation/dependabot/bundler/faraday-2.7.10
chore(deps): bump faraday from 2.7.9 to 2.7.10
2023-07-07 11:50:01 +02:00
jibees
72fa132c17 Merge pull request #11172 from openfoodfoundation/dependabot/bundler/sanitize-6.0.2
chore(deps): bump sanitize from 6.0.1 to 6.0.2
2023-07-07 11:44:16 +02:00
dependabot[bot]
9f539df5e0 chore(deps): bump sanitize from 6.0.1 to 6.0.2
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.0.1...v6.0.2)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-07 09:06:22 +00:00
Gaetan Craig-Riou
fb3c99e52c Merge pull request #11121 from filipefurtad0/cart_state_orders_not_appearing_orders_page
Cart state orders not appearing orders page
2023-07-07 09:27:36 +10:00
Matt-Yorkley
eb71c65fc0 Merge pull request #11138 from Matt-Yorkley/variant-timestamps
Add timestamps to variants table
2023-07-06 18:22:19 +01:00
Matt-Yorkley
bbf53133cb Add timestamps to variants table 2023-07-06 16:16:03 +01:00
jibees
2e9442a7ab Merge pull request #11127 from openfoodfoundation/dependabot/bundler/vcr-6.2.0
chore(deps-dev): bump vcr from 6.1.0 to 6.2.0
2023-07-06 16:43:49 +02:00
dependabot[bot]
de384ac261 chore(deps-dev): bump vcr from 6.1.0 to 6.2.0
Bumps [vcr](https://github.com/vcr/vcr) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/vcr/vcr/releases)
- [Changelog](https://github.com/vcr/vcr/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vcr/vcr/compare/v6.1.0...v6.2.0)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-06 09:10:25 +00:00
David Cook
05a22b80bc Merge pull request #11123 from dacook/buu-products-table
[admin_style_v3] Products table with variants
2023-07-06 09:37:31 +10:00
Filipe
39b597096c Merge pull request #11137 from Matt-Yorkley/remove-product-permalink
Remove :permalink attribute from Product
2023-07-05 18:35:48 +01:00
jibees
de34b9b109 Merge pull request #11142 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.4.3
chore(deps): bump @floating-ui/dom from 1.4.2 to 1.4.3
2023-07-05 14:53:53 +02:00
dependabot[bot]
2a059fd879 chore(deps): bump rails from 7.0.5 to 7.0.6
Bumps [rails](https://github.com/rails/rails) from 7.0.5 to 7.0.6.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v7.0.5...v7.0.6)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-05 09:23:48 +00:00
dependabot[bot]
eba8d8db83 chore(deps-dev): bump rubocop from 1.52.1 to 1.54.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.52.1 to 1.54.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.52.1...v1.54.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-04 09:26:38 +00:00
filipefurtad0
e547e735c0 Adds test on API call for orders page
Removes unecessary assertion on http status
2023-07-03 11:51:46 +01:00
filipefurtad0
3f7958afe3 Adds regression test to issue #11120 2023-07-03 11:51:46 +01:00
dependabot[bot]
a9cb35dcc0 chore(deps): bump state_machines-activerecord from 0.8.0 to 0.9.0
Bumps [state_machines-activerecord](https://github.com/state-machines/state_machines-activerecord) from 0.8.0 to 0.9.0.
- [Commits](https://github.com/state-machines/state_machines-activerecord/compare/v0.8.0...v0.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 09:58:39 +00:00
Maikel
400d087789 Merge pull request #11133 from mkllnk/dfc-api-specs
OFN DFC API documenation in OpenAPI format generated with Rswag
2023-07-03 10:53:40 +10:00
Maikel
ffda344838 Merge pull request #11144 from mkllnk/remove-test-unit
Remove unused gem test-unit
2023-07-03 10:34:24 +10:00
Matt-Yorkley
fefa9288a4 Remove :permalink attribute from Product 2023-06-30 11:37:57 +01:00
Filipe
b175793b91 Merge pull request #10704 from abdellani/hide-customers-with-no-completed-orders
Hide users with no completed orders from a hub's customers list
2023-06-30 10:56:56 +01:00
dependabot[bot]
7c9cabbab7 chore(deps): bump faraday from 2.7.6 to 2.7.9
Bumps [faraday](https://github.com/lostisland/faraday) from 2.7.6 to 2.7.9.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.7.6...v2.7.9)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 09:14:06 +00:00
Gaetan Craig-Riou
ea73781668 Fix bulk order cancellation
Add unticking of "send cancellation email to customer" to match
the current test expectation
2023-06-20 10:03:55 +10:00
Maikel Linke
a9f8c7c4ab Update DFC API docs, describe all endpoints 2023-06-19 16:20:35 +10:00
Maikel Linke
ec8c710e3a Import simple DFC SuppliedProduct
OFN products and variants need more data like a price but the DFC
stores that in a different object. We may get a larger graph containing
that information but we don't have any test data yet.
2023-06-19 16:19:48 +10:00
Maikel Linke
df9e1ac2b4 Encapsulate SuppliedProductBuilder
And improve EnterpriseBuilder. It was builder products twice.
2023-06-19 16:19:48 +10:00
Maikel Linke
1adfb5463a Import DFC measures 2023-06-19 16:19:40 +10:00
Maikel Linke
949019a277 Map has* predicates to Connector attributes 2023-06-19 16:19:40 +10:00
Maikel Linke
bfd084d9b6 Import graphs including anonymous objects 2023-06-19 16:18:58 +10:00
Maikel Linke
3c6f90dbb3 Import from IO objects for convenience, efficiency
The Connector exports to a String but Rails' `request.body` is an IO
object. Since the used JSON-LD parser needs an IO object anyway and it
can lower the memory usage we take IO objects as well and handle
in-memory Strings only when given.
2023-06-19 16:18:58 +10:00
Maikel Linke
f5f8c349e1 Resolve DFC Connector objects when importing graph 2023-06-19 16:18:51 +10:00
Maikel Linke
12d56d725b Import properties which contains lists
Not just single values.
2023-06-19 16:18:51 +10:00
Maikel Linke
2abad60511 Import DFC graphs with multiple objects 2023-06-19 16:18:42 +10:00
Maikel Linke
15dd38d6c6 Import simple data from DFC 2023-06-19 16:16:18 +10:00
Maikel Linke
cceca5f936 Use Redis for caching in test environment
All other environments use it.
2023-06-19 15:35:17 +10:00
Maikel Linke
f6db69104f Update Gemfile.lock with new Ruby version 2023-06-19 15:03:44 +10:00
Maikel
7e20415490 Merge pull request #10888 from mkllnk/ruby3.1
Bump Ruby from 3.0.3 to 3.1.4
2023-06-19 10:08:20 +10:00
Maikel
101e72726c Merge pull request #11032 from dacook/show-current-version2
Show current version2
2023-06-19 10:07:49 +10:00
Konrad
dab5436444 Merge pull request #10532 from abdellani/invoices
Invoices
2023-06-18 21:44:29 +02:00
Mohamed ABDELLANI
d059680f4b remove white label from feature toggle 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
27c1fd0d30 test invoice model 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
639567e903 replace attr with attr_reader 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
fff0b1e577 Update lib/open_food_network/feature_toggle.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
7a0686786d Update db/migrate/20230308075421_create_invoices.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
73cdcca022 fix linter issues 2023-06-18 21:03:13 +02:00
Matt-Yorkley
4eb05a1d73 Reduce public interface of OrderInvoiceComparator 2023-06-18 21:03:13 +02:00
Matt-Yorkley
3946e7a6f5 Memoize presenters in OrderInvoiceComparator
This is now twice as fast and triggers half the number of database queries if both comparison methods get called
2023-06-18 21:03:13 +02:00
Matt-Yorkley
c6ec13443e Drop next_invoice_number method from Spree::Order 2023-06-18 21:03:13 +02:00
Matt-Yorkley
d3a31bd0bd Rename @invoice_presenter instance variable to @order in invoice templates 2023-06-18 21:03:13 +02:00
Matt-Yorkley
352ad20681 Fix display_checkout_taxes_hash in invoice_table4 template 2023-06-18 21:03:13 +02:00
Matt-Yorkley
68ab539ed3 Include completed_at attribute 2023-06-18 21:03:13 +02:00
Matt-Yorkley
113e1344f2 Include tax adjustments in serializer and presenter 2023-06-18 21:03:13 +02:00
Matt-Yorkley
5bbc63f716 Fix options_text displaying when there is no options_text 2023-06-18 21:03:13 +02:00
Matt-Yorkley
72e537b598 Update *_amount_with_adjustments methods on LineItem presenter
These methods are slightly different and they're both needed in the template for invoice4
2023-06-18 21:03:13 +02:00
Matt-Yorkley
208840b99d Use @invoice_presenter.checkout_adjustments 2023-06-18 21:03:13 +02:00
Matt-Yorkley
a44f24ad43 Remove prefixes from invoice data representation so it conforms to the same interface as order 2023-06-18 21:03:13 +02:00
Matt-Yorkley
8dba1618b1 Don't call information from @order in new invoice templates
Previously this template was calling various bits of data from the @order object and not the @invoice_presenter object
2023-06-18 21:03:13 +02:00
Matt-Yorkley
c3d6b2280f Update reference to removed method 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
0ed7599267 extract methods related to invoices from the order model to the OrderInvoiceComparator 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
61d58df56f fix linter issues 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
d86173c509 add feature toggle
seperate the invoice templates that rely on presenters from the old ones.
2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
fa14dc370b implement the invoice data generator 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
d9efd10ac0 update attributes relevant for the comparaison 2023-06-18 21:03:13 +02:00
Mohamed ABDELLANI
0fbf88190e Generate invoice model
There are three main components:
1. The invoice model
2. order serializers: serialize the order for the invoice
3. data presenters: the object that will be use to access the order's serialize data
2023-06-18 21:03:13 +02:00
Matt-Yorkley
ae24b2d688 Update ScopeVariantsForSearch logic to match both product and variant SKUs 2023-06-16 21:26:28 +01:00
Matt-Yorkley
0f253bb2a0 Blank out product SKU when cloning a product
This was effectively being done before for the product's sku (stored on the master variant) via the #duplicate_variant method, but now it needs to be done explicitly on the product in #duplicate_product
2023-06-16 21:26:28 +01:00
Matt-Yorkley
15000c7ed1 Remove unnecessary iterator 2023-06-16 21:26:28 +01:00
Matt-Yorkley
733dd3c428 Disable variant is_master column 2023-06-16 21:23:44 +01:00
Matt-Yorkley
be72bbebb9 Remove master images data migration tests 2023-06-16 21:23:44 +01:00
Matt-Yorkley
fbd09869bb Remove is_master from variant serializer 2023-06-16 21:23:44 +01:00
Matt-Yorkley
ced60d4382 Remove superfluous method from products controller 2023-06-16 21:23:44 +01:00
Matt-Yorkley
b59bdc75e9 Delete master variants 2023-06-16 21:23:44 +01:00
Matt-Yorkley
1daab8994d Remove is_master and not_master scopes 2023-06-16 21:23:44 +01:00
Matt-Yorkley
0703bb4583 Remove unused is_master references in tests 2023-06-16 21:23:44 +01:00
Matt-Yorkley
85059bfb26 Remove master variant validation conditionals 2023-06-16 21:23:44 +01:00
Matt-Yorkley
8247dce2dc Improve validation feedback on new variant page and add test coverage 2023-06-16 21:23:44 +01:00
Matt-Yorkley
618900767f Fix flaky spec: use milliseconds in cache service and remove sleep 2023-06-16 21:23:44 +01:00
Matt-Yorkley
1e36043a2e Set unit_value to true when cloning a product
This value doesn't get persisted, but it's presence is validated. The product's duplicated variants store the actual :unit_value attribute
2023-06-16 21:23:44 +01:00
Matt-Yorkley
1922598d2d Reorganise associations, validations, scopes and callbacks for clarity 2023-06-16 21:23:44 +01:00
Matt-Yorkley
3ef7d2c9ff Remove master variant from product 2023-06-16 21:23:44 +01:00
Matt-Yorkley
21cba0aa13 Migrate first master variant image to product image 2023-06-16 21:23:44 +01:00
Matt-Yorkley
7dc1091bc2 Migrate product image from master variant to product 2023-06-16 21:23:44 +01:00
Matt-Yorkley
d8649fc9fb Migrate master variant :sku to product 2023-06-16 21:21:40 +01:00
Matt-Yorkley
6b9b5ea347 Stop storing unit_value and unit_description on master variant 2023-06-16 21:21:40 +01:00
Matt-Yorkley
8c0b8dad85 Stop using master variant for storing :display_as value 2023-06-16 21:21:40 +01:00
Matt-Yorkley
1b06c20197 Stop using master variant as a potential store for prices 2023-06-16 21:21:40 +01:00
Matt-Yorkley
80a0138b48 Update old specs that rely on master variant instead of real variants 2023-06-16 21:21:40 +01:00
Matt-Yorkley
d4188da7c1 Simplify product images delegation mess 2023-06-16 21:21:40 +01:00
Matt-Yorkley
42a5a48816 Remove dead code 2023-06-16 21:21:40 +01:00
Matt-Yorkley
dd224b953d Update stage.yml 2023-06-16 14:24:23 +01:00
Matt-Yorkley
cfe5d9a740 Update stage.yml 2023-06-16 14:00:30 +01:00
Matt-Yorkley
09bfe14ae9 Update stage.yml 2023-06-16 13:39:12 +01:00
Mohamed ABDELLANI
68503e4e8b remove useless variable 2023-06-16 06:54:11 +01:00
Mohamed ABDELLANI
65bc8e23c1 move update instructions to let blocks 2023-06-16 06:50:45 +01:00
Mohamed ABDELLANI
2b79258fdc renamed: spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_order.rb -> spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_order_spec.rb 2023-06-16 06:39:38 +01:00
Mohamed ABDELLANI
c21a35a9fc fix typo on lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_order.rb 2023-06-16 06:38:15 +01:00
Mohamed ABDELLANI
c8c3e65498 Update lib/reporting/reports/list.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
2cfa435b54 Update spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_order.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
3e61830b40 optimize total_excl_tax & enterprise_fee_adjustemnt_ids 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
10fc816bba update rubocop_todo list 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
542811b9ad implement filtering by entreprise fee owner 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
9d53d775a6 add filtering by fee name 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
f66d9b9626 remove producers filter 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
83b951662a add filters 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
e9671e4e1f test enterprise fees with tax report by order 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
e9367b1f86 add enterprise fees with tax report by order 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
535f651c7e implement enterprise fee report filters 2023-06-16 06:35:01 +01:00
Mohamed ABDELLANI
a120329aa6 rename EnterpriseFeeSummary::Base to EnterpriseFeeSummary::FeeSummary 2023-06-16 06:35:01 +01:00
Maikel
4e1f735630 Include feature toggle heading in release notes 2023-06-16 14:13:41 +10:00
Maikel Linke
2453084a6b Update translations 2023-06-16 14:02:47 +10:00
Maikel
39183547aa Merge pull request #11033 from openfoodfoundation/revert-10455-dependabot/bundler/redis-5.0.6
Revert "Fix `redis` and `hiredis-client` version requirements "
2023-06-16 13:42:55 +10:00
Maikel
24000b2ce3 Revert "Fix redis and hiredis-client version requirements " 2023-06-16 13:09:25 +10:00
Maikel
8e86f76278 Merge pull request #11018 from openfoodfoundation/dependabot/bundler/sidekiq-7.1.2
chore(deps): bump sidekiq from 7.1.1 to 7.1.2
2023-06-16 12:08:25 +10:00
Maikel
4a91c180a3 Merge pull request #11017 from openfoodfoundation/dependabot/bundler/ddtrace-1.12.1
chore(deps): bump ddtrace from 1.12.0 to 1.12.1
2023-06-16 11:14:10 +10:00
Maikel
d192024786 Merge pull request #11019 from filipefurtad0/flaky_cache_spec
Clears cache around examples
2023-06-16 11:12:24 +10:00
Maikel
ec7de516aa Merge pull request #11011 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.124.0
chore(deps): bump aws-sdk-s3 from 1.123.1 to 1.124.0
2023-06-16 10:59:56 +10:00
David Cook
56e4b3b843 Load git version once at initialisation
Co-authored-by: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com>
2023-06-16 09:36:16 +10:00
David Cook
47745b5e49 Merge pull request #11004 from dacook/show-current-version
Show current version at bottom of admin dashboard
2023-06-16 09:26:00 +10:00
Matt-Yorkley
3301c7cabc Update stage.yml 2023-06-16 00:18:36 +01:00
David Cook
35d9837f24 Show current version at bottom of admin dashboard
With generic link to the releases page. We could provide a link to latest tag with `git describe --tags --abbrev=0`. But I thought it better to keep things simple.
2023-06-16 09:11:59 +10:00
Matt-Yorkley
436deb9797 Update stage.yml 2023-06-16 00:03:16 +01:00
Matt-Yorkley
57451f2639 Update stage.yml 2023-06-15 23:26:27 +01:00
Matt-Yorkley
d56ad66ab8 Update stage.yml 2023-06-15 20:57:40 +01:00
Matt-Yorkley
fc5a53ebd9 Update stage.yml 2023-06-15 20:53:20 +01:00
Matt-Yorkley
f27472106e Update stage.yml 2023-06-15 20:52:07 +01:00
Matt-Yorkley
5729e33f69 Merge pull request #11031 from Matt-Yorkley/deployment-workflow
Add workflow for deploying to staging
2023-06-15 20:40:10 +01:00
Matt-Yorkley
584f6297f5 Allow manual workflow triggers 2023-06-15 20:18:44 +01:00
Matt-Yorkley
12bf17e21e Add workflow for deploying to staging 2023-06-15 19:37:18 +01:00
Matt-Yorkley
7068df5d4b Merge pull request #10804 from Matt-Yorkley/public-images
Update ActiveStorage image processing
2023-06-15 15:49:11 +01:00
Konrad
7a10edff82 Merge pull request #10988 from jibees/10980-white-label-trix-bullets-and-numbers-are-displayed-outside-the-text-field
[White Label] Custom tab content editor: order and unordered list should have a margin-left set
2023-06-15 16:13:19 +02:00
Konrad
5c0db892e5 Merge pull request #10983 from jibees/10982-admin_style_v3-use-oidc-settings-instead-of-oidc-settings-in-navigation
[OIDC] Translate 'Enterprises' > 'OIDC Settings' tab title
2023-06-15 16:07:07 +02:00
filipefurtad0
598f69f42f Clears cache around examples
for specs testing cache
2023-06-15 11:28:01 +01:00
dependabot[bot]
ca5de6b0b2 chore(deps): bump sidekiq from 7.1.1 to 7.1.2
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.1.1 to 7.1.2.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.1.1...v7.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-15 10:05:58 +00:00
dependabot[bot]
b0c9c6e6e1 chore(deps): bump ddtrace from 1.12.0 to 1.12.1
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 1.12.0 to 1.12.1.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v1.12.0...v1.12.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-15 09:58:24 +00:00
David Cook
d195882645 Use builtin Rails method 2023-06-15 15:26:22 +10:00
Maikel Linke
a46917a7b7 Remove NULL possibility from customer flag
It should only be true or false. This was flagged by Rubocop. I also
added another Rubocop suggestion and combined two migrations because
they are related.
2023-06-15 12:02:45 +10:00
Maikel Linke
75cce8bc19 Simplify customer code
The API endpoint merges the created_manually flag in the params already.
No need to write it separately.
2023-06-15 12:02:45 +10:00
Maikel Linke
a655d3d787 Remove unnecessary writes on customer creation
The form only submits enterprise id and email address. We don't need to
assign any other attributes.
2023-06-15 12:02:45 +10:00
Maikel Linke
9bd6615dad Change spec to "unhide" customers on create 2023-06-15 12:02:45 +10:00
Maikel Linke
ebebcf7a13 Remove useless code 2023-06-15 12:02:45 +10:00
Maikel Linke
22a6861f6f Place class methods above instance methods 2023-06-15 12:02:45 +10:00
Mohamed ABDELLANI
298ae8ffc3 set create_manualll flag if the customer already exists 2023-06-15 12:02:45 +10:00
Maikel Linke
107b17addb Add index of much used created_manually column 2023-06-15 12:02:45 +10:00
Maikel Linke
9910d10eb8 Simplify and speed-up customers migration
This reduces the migration run time from 9.6 seconds to 0.16 seconds on
a production database.

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

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

Update spec/models/customer_spec.rb

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

Update spec/models/customer_spec.rb

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

authorize created_manually field to be set on APIv1
2023-06-15 12:02:45 +10:00
Maikel
701fef84f3 Merge pull request #10850 from mkllnk/require-belongs-to--part1
Require belongs_to associations - part 1
2023-06-15 09:20:42 +10:00
Konrad
cf3692e688 Merge pull request #10992 from openfoodfoundation/dependabot/bundler/active_storage_validations-1.0.4
chore(deps): bump active_storage_validations from 1.0.3 to 1.0.4
2023-06-14 22:25:16 +02:00
Konrad
863fed56ce Merge pull request #10455 from openfoodfoundation/dependabot/bundler/redis-5.0.6
Fix `redis` and `hiredis-client` version requirements
2023-06-14 22:09:13 +02:00
Filipe
e6d42a0c4f Merge pull request #10999 from Matt-Yorkley/bom-issues
Fix BOM order loading issue
2023-06-14 19:01:54 +01:00
Matt-Yorkley
64508d3c3d Add unit test for direct image URLs 2023-06-14 12:53:20 +01:00
Matt-Yorkley
395cf7fb8d Use direct image URLs for enterprise logos 2023-06-14 12:53:20 +01:00
Matt-Yorkley
5ad37ce6a5 Return default image url on ActiveStorage errors in image loading 2023-06-14 12:53:20 +01:00
dependabot[bot]
6e9721b64c chore(deps): bump aws-sdk-s3 from 1.123.1 to 1.124.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.123.1 to 1.124.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-14 09:58:54 +00:00
Matt-Yorkley
4c7e947738 Migrate data
So it turns out all images uploaded before the ActiveStorage migration are internally set to "public-read", and all images uploaded after the migration are internally set to "private". This migration switches all images in S3 buckets back to "public-read".
2023-06-14 10:56:10 +01:00
Matt-Yorkley
b510668ecf Render direct URLs for s3 images 2023-06-14 10:56:10 +01:00
Matt-Yorkley
6f12d012ed Use #url helper 2023-06-14 10:56:10 +01:00
Matt-Yorkley
551d0d3a93 Simplify calling #url_for in models 2023-06-14 10:56:10 +01:00
Matt-Yorkley
a898915724 Use named image variants 2023-06-14 10:56:10 +01:00
Matt-Yorkley
e54cff2274 Set images to public-read
Defining an alternate s3 configuration set to `public: true` means we can use it selectively. It sets the objects to `acl: "public-read"` by default (read-only) and means any image tags for those assets can use direct public links in the src attribute (without hitting the ActiveStorage::Representation endpoint). The default non-public service will still be used by default for any other files on instances using s3.
2023-06-14 10:56:10 +01:00
Matt-Yorkley
202b0041d1 Remove voucher processing from checkout edit action 2023-06-14 10:19:30 +01:00
Matt-Yorkley
1a744de37a Improve voucher #calculate tests 2023-06-14 10:19:30 +01:00
Matt-Yorkley
93df70c0a7 Use order total excluding discounts in voucher calculations 2023-06-14 10:19:30 +01:00
Matt-Yorkley
52806a35ee Fix Rubocop complaint 2023-06-14 10:19:30 +01:00
Matt-Yorkley
11382a518e Fix test setup in BOM spec 2023-06-14 10:19:30 +01:00
Matt-Yorkley
ef09492883 Update adjustment spec to use orders past delivery state 2023-06-14 10:19:30 +01:00
Matt-Yorkley
6fa381197a Don't tax fees before payment state 2023-06-14 10:19:30 +01:00
Matt-Yorkley
837e581c29 Reload order after cancelling it in tests that check shipment states 2023-06-14 10:19:30 +01:00
Matt-Yorkley
06c9697d0d Don't try to cancel shipments that might already be cancelled 2023-06-14 10:19:30 +01:00
Matt-Yorkley
c5dfecbb69 Reapply taxes at model level if order address changes
This should be done at the model level
2023-06-14 10:19:30 +01:00
Matt-Yorkley
a0f23fc510 Extract before_payment_state? method 2023-06-14 10:19:30 +01:00
Matt-Yorkley
13a22c56f4 Move taxing of admin adjustments out of customer details controller 2023-06-14 10:19:30 +01:00
Matt-Yorkley
65b6a75c9b Reorder callback definitions 2023-06-14 10:19:30 +01:00
Matt-Yorkley
a0d0f8fd2f Tidy up checkout tax spec 2023-06-14 10:19:30 +01:00
Maikel Linke
c2605b2606 Display loading spinner before quick reports
We had a race condition that could first display the report and then
replace it again with the "loading" spinner. That doesn't seem to happen
now that we changed the order of cable events.
2023-06-14 15:40:52 +10:00
Maikel Linke
91d0dabc1d Require associations on DistributorShippingMethod 2023-06-14 15:09:12 +10:00
Maikel Linke
bd11475fe1 Require associations on DistributorPaymentMethod 2023-06-14 15:08:22 +10:00
Maikel Linke
ed231ec512 Update belongs_to default in Customer model 2023-06-14 15:08:05 +10:00
Maikel Linke
fc00a48d67 Require associations of CoordinatorFee 2023-06-14 15:08:05 +10:00
Maikel Linke
c02c90317f Require user of column preference record
It doesn't make sense to have a preference without a user. And it was
already enforced in the database.
2023-06-14 15:07:43 +10:00
Maikel Linke
2d4cfd7548 Validate and enforce AdjustmentMetadata associations 2023-06-14 15:07:43 +10:00
Maikel Linke
d88781a083 Start to adopt new default to require belongs_to
Newer version of Rails have this option as default. We can slowly
transition to opt in gradually, model by model. Once all models are
covered, we can change the default and remove the setting from the
models again.

The style violation was added to the todo file because it's temporary.

We have 60 models using `belongs_to`. And changing them all at once
breaks some specs. So let's do it gradually.
2023-06-14 15:06:59 +10:00
Maikel
989a88e252 Merge pull request #10848 from mkllnk/totals-report
Fix error on summarising total_units in Order Cycle Supplier Totals report
2023-06-14 13:59:48 +10:00
Matt-Yorkley
074eb4b592 Move tax charge logic out of checkout controller and update payment transition 2023-06-13 17:53:46 +01:00
Matt-Yorkley
bf912ae4d3 Remove angular loading element in darkwarm layout 2023-06-13 17:35:13 +01:00
Filipe
9c42781ff1 Merge pull request #10913 from abdellani/remove-split-checkout-toggle-and-legacy-checkout
Remove split checkout toggle and legacy checkout
2023-06-13 17:00:07 +01:00
Matt-Yorkley
73b2d37224 Don't try to load orders if the number of line_items with the current filters applied is zero
This ends up sending a request to the orders endpoint with no filters and no search params, which then tries to load every order in the entire database if the user is superadmin, which blows up.
2023-06-13 15:47:19 +01:00
Mohamed ABDELLANI
2654d3b866 update the rubocop_todo list 2023-06-13 14:58:16 +01:00
Matt-Yorkley
5fa81d1333 Fix invalid test setup in old tax tests 2023-06-13 14:58:16 +01:00
Matt-Yorkley
4e7fab6914 Delete dead code Checkout#find_transition
This method is only called from tests and nowhere else in the codebase. We may as well remove it.
2023-06-13 14:58:16 +01:00
Matt-Yorkley
8d633234f4 Set voucher specs to pending temporarily 2023-06-13 14:58:16 +01:00
Matt-Yorkley
d5a625bdeb Fix Paypal spec 2023-06-13 14:58:16 +01:00
Matt-Yorkley
0e289a23c1 Set some legacy checkout specs that we might want to rewrite later to pending 2023-06-13 14:58:16 +01:00
Matt-Yorkley
5487aa19fc Fix missing checkout_state_path 2023-06-13 14:58:16 +01:00
Mohamed ABDELLANI
345f540723 fix spec/models/spree/tax_rate_spec.rb 2023-06-13 14:58:16 +01:00
Mohamed ABDELLANI
78617905c6 remove spec/requests/checkout/concurrency_spec.rb 2023-06-13 14:58:16 +01:00
Mohamed ABDELLANI
56204b2315 fix ./spec/routing/stripe_spec.rb 2023-06-13 14:58:16 +01:00
Mohamed ABDELLANI
905187f3ce fix ./spec/services/order_tax_adjustments_fetcher_spec.rb:100 2023-06-13 14:58:16 +01:00
Mohamed ABDELLANI
7e84579aa3 spec/system/consumer/shopping/checkout_stripe_spec
these tests are using the legacy checkout
2023-06-13 14:58:16 +01:00
Mohamed ABDELLANI
bd0e7cdfc8 remove legacy checkout tests 2023-06-13 14:58:16 +01:00
Mohamed ABDELLANI
907c65d98c run create_tax_charge! after transition to payment state 2023-06-13 14:58:16 +01:00
Mohamed ABDELLANI
c2aaf88e98 remove checkout controller 2023-06-13 14:58:16 +01:00
Mohamed ABDELLANI
fc0cca2210 remove legacy checkout view 2023-06-13 14:58:16 +01:00
jibees
c379dcacc5 Merge pull request #10993 from openfoodfoundation/dependabot/bundler/jwt-2.7.1
chore(deps): bump jwt from 2.7.0 to 2.7.1
2023-06-13 15:05:30 +02:00
jibees
64e6d639c1 Merge pull request #10995 from openfoodfoundation/dependabot/bundler/rubocop-1.52.1
chore(deps-dev): bump rubocop from 1.52.0 to 1.52.1
2023-06-13 15:03:45 +02:00
jibees
374904f473 Merge pull request #10996 from openfoodfoundation/dependabot/bundler/test-unit-3.6.0
chore(deps): bump test-unit from 3.5.9 to 3.6.0
2023-06-13 15:03:03 +02:00
jibees
fb7ae9fd58 Merge pull request #10991 from openfoodfoundation/dependabot/bundler/view_component-3.2.0
chore(deps): bump view_component from 3.1.0 to 3.2.0
2023-06-13 15:02:26 +02:00
dependabot[bot]
19bd05ce5a chore(deps): bump test-unit from 3.5.9 to 3.6.0
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.5.9 to 3.6.0.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.5.9...3.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 10:11:47 +00:00
dependabot[bot]
f9abec4346 chore(deps-dev): bump rubocop from 1.52.0 to 1.52.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.52.0 to 1.52.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.52.0...v1.52.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 10:10:38 +00:00
dependabot[bot]
3e7ad17f69 chore(deps): bump jwt from 2.7.0 to 2.7.1
Bumps [jwt](https://github.com/jwt/ruby-jwt) from 2.7.0 to 2.7.1.
- [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.7.0...v2.7.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 10:08:44 +00:00
dependabot[bot]
b813879330 chore(deps): bump active_storage_validations from 1.0.3 to 1.0.4
Bumps [active_storage_validations](https://github.com/igorkasyanchuk/active_storage_validations) from 1.0.3 to 1.0.4.
- [Release notes](https://github.com/igorkasyanchuk/active_storage_validations/releases)
- [Changelog](https://github.com/igorkasyanchuk/active_storage_validations/blob/master/CHANGES.md)
- [Commits](https://github.com/igorkasyanchuk/active_storage_validations/compare/1.0.3...1.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 10:02:26 +00:00
Filipe
12bb8db7b3 Merge pull request #10933 from Matt-Yorkley/fix-payment-intents
Fix ProcessPaymentIntent service
2023-06-13 11:00:27 +01:00
dependabot[bot]
c3846ad269 chore(deps): bump view_component from 3.1.0 to 3.2.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/viewcomponent/view_component/releases)
- [Changelog](https://github.com/ViewComponent/view_component/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/viewcomponent/view_component/compare/v3.1.0...v3.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 09:58:11 +00:00
Matt-Yorkley
93c3241bb5 Add more test coverage in stripe controller spec 2023-06-13 10:14:09 +01:00
Matt-Yorkley
abd55b2104 Move order to completed whether it's current state is payment or confirmation 2023-06-13 10:14:09 +01:00
Matt-Yorkley
47df9493ae Fix ProcessPaymentIntent service 2023-06-13 10:14:09 +01:00
Gaetan Craig-Riou
694e46d1fb Fix Bundler/OrderedGems 2023-06-13 15:35:40 +10:00
Gaetan Craig-Riou
4564021f79 Remove redis version limitation 2023-06-13 15:06:52 +10:00
David Cook
b85cf26907 Add comment 2023-06-13 15:00:09 +10:00
Jean-Baptiste Bellet
02432ee2ec Do not upgrade to redis >= 5
since Redis >= 3, < 5 is actually a requirement of Action Cable Redis subscription adapter until Rails 7.0.4.

https://github.com/rails/rails/blob/v6.1.7/actioncable/lib/action_cable/subscription_adapter/redis.rb
2023-06-13 15:00:09 +10:00
Jean-Baptiste Bellet
520ced350e Do not specify redis version 2023-06-13 14:59:19 +10:00
Jean-Baptiste Bellet
e41d1f2205 Following the doc, remove hiredis and use hiredis-client
Reference:
 - https://github.com/redis/redis-rb/issues/1178
 - https://github.com/redis/redis-rb#hiredis-binding
2023-06-13 14:59:19 +10:00
David Cook
c5ce49e08c Merge pull request #10948 from dacook/buu-table-styles
[admin_v3] Update all table styles
2023-06-13 13:08:55 +10:00
David Cook
e4c65ea87d Prettify palette file 2023-06-13 11:46:28 +10:00
David Cook
f007cf3dad Fix up table borders 2023-06-13 11:45:39 +10:00
David Cook
edcdcd3f74 Use header colour for table headers 2023-06-13 11:45:39 +10:00
David Cook
16534319b6 Replace dark blue with "Sherpa blue"
It looks like it’s used in headers, some buttons and a loading message
2023-06-13 11:45:39 +10:00
David Cook
d85ea628e2 Change default font colour to near-black
It looks like this is the main font colour in the new designs.
2023-06-13 11:45:39 +10:00
David Cook
821446e150 Style pagination links
And provide a basic hover state for most other buttons.
The pagination button hover and active states will need updating.

The darker background colour sometimes wraps a whole table (eg products table).
2023-06-13 11:45:39 +10:00
David Cook
744f95809a Remove uppercase styling of form elements 2023-06-13 11:45:39 +10:00
David Cook
fb17a679c0 First pass at new table colours
There is more to do, for example the dropshadows.

I've continued with the unopinionated colour naming (eg color-7), but would like to consider giving them more meaningfule names..
2023-06-13 11:45:39 +10:00
David Cook
2ae91bdbe2 Use variable for font size reset
The current value is 13px already, but I'd like to experiment changing this.

I'm not sure if we even need the reset, but am not delving into that right now.
2023-06-13 11:44:48 +10:00
David Cook
3967f54533 Use different variables and table styles for admin_v3 2023-06-13 11:44:48 +10:00
Konrad
6bd66585a9 Merge pull request #10935 from openfoodfoundation/dependabot/bundler/i18n-1.14.1
chore(deps): bump i18n from 1.13.0 to 1.14.1
2023-06-12 17:39:42 +02:00
Konrad
11f84b5276 Merge pull request #10934 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.123.1
chore(deps): bump aws-sdk-s3 from 1.122.0 to 1.123.1
2023-06-12 17:24:20 +02:00
Filipe
23239bad8b Merge pull request #10970 from openfoodfoundation/dependabot/bundler/knapsack_pro-5.1.0
chore(deps-dev): bump knapsack_pro from 4.1.0 to 5.1.0
2023-06-12 16:19:32 +01:00
Konrad
a207a445b1 Merge pull request #10907 from jibees/3041-missing-translation-in-product-variant-selection-upon-order-creation
Admin, Create an order, Select a product: translate some messages in the product selection search box
2023-06-12 17:08:52 +02:00
Jean-Baptiste Bellet
16256ee114 Order and Unordered list should have a margin-left set
Has been reset to 0 via `typography.scss`
2023-06-12 16:58:00 +02:00
dependabot[bot]
15e9c4eb37 chore(deps): bump i18n from 1.13.0 to 1.14.1
Bumps [i18n](https://github.com/ruby-i18n/i18n) from 1.13.0 to 1.14.1.
- [Release notes](https://github.com/ruby-i18n/i18n/releases)
- [Changelog](https://github.com/ruby-i18n/i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ruby-i18n/i18n/compare/v1.13.0...v1.14.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 14:44:01 +00:00
Konrad
3e3ae5d8ae Merge pull request #10929 from openfoodfoundation/dependabot/bundler/ddtrace-1.12.0
chore(deps): bump ddtrace from 1.11.1 to 1.12.0
2023-06-12 16:43:01 +02:00
Konrad
48c107bde1 Merge pull request #10974 from cillian/ignore-whitespace-in-product-import
Ignore leading and trailing whitespace when importing products via a spreadsheet
2023-06-12 16:32:15 +02:00
Konrad
80dd8755b0 Merge pull request #10915 from mkllnk/mini-racer
Remove unused mini_racer gem
2023-06-12 16:05:52 +02:00
Konrad
791518988d Merge pull request #10918 from openfoodfoundation/dependabot/bundler/view_component-3.1.0
chore(deps): bump view_component from 3.0.0 to 3.1.0
2023-06-12 15:36:21 +02:00
Jean-Baptiste Bellet
149ec5511c Translate select2 messages 2023-06-12 15:11:23 +02:00
dependabot[bot]
351343fb6c chore(deps): bump aws-sdk-s3 from 1.122.0 to 1.123.1
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.122.0 to 1.123.1.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 15:06:04 +02:00
dependabot[bot]
6145413b1a chore(deps): bump ddtrace from 1.11.1 to 1.12.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 1.11.1 to 1.12.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v1.11.1...v1.12.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 15:05:11 +02:00
dependabot[bot]
d87e40bb69 chore(deps): bump view_component from 3.0.0 to 3.1.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/viewcomponent/view_component/releases)
- [Changelog](https://github.com/ViewComponent/view_component/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/viewcomponent/view_component/compare/v3.0.0...v3.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 15:04:17 +02:00
Maikel Linke
d6859e0bf7 Remove unused mini_racer gem
All asset compilation is done with webpacker at the moment.
2023-06-12 15:01:11 +02:00
Konrad
1f2f5e2eec Merge pull request #10892 from openfoodfoundation/dependabot/bundler/rails-7.0.5
chore(deps): bump rails from 7.0.4.3 to 7.0.5
2023-06-12 14:58:07 +02:00
jibees
b53aba3844 Merge pull request #10986 from openfoodfoundation/dependabot/bundler/capybara-3.39.2
chore(deps-dev): bump capybara from 3.39.1 to 3.39.2
2023-06-12 14:42:48 +02:00
jibees
45dcdf1611 Merge pull request #10985 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.0.1
chore(deps-dev): bump jasmine-core from 5.0.0 to 5.0.1
2023-06-12 14:31:03 +02:00
jibees
8c971f2efa Merge pull request #10984 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.3.0
chore(deps): bump @floating-ui/dom from 1.2.9 to 1.3.0
2023-06-12 14:29:56 +02:00
dependabot[bot]
8a8200a039 chore(deps-dev): bump capybara from 3.39.1 to 3.39.2
Bumps [capybara](https://github.com/teamcapybara/capybara) from 3.39.1 to 3.39.2.
- [Changelog](https://github.com/teamcapybara/capybara/blob/master/History.md)
- [Commits](https://github.com/teamcapybara/capybara/compare/3.39.1...3.39.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 09:58:05 +00:00
dependabot[bot]
8a376e782a chore(deps-dev): bump jasmine-core from 5.0.0 to 5.0.1
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.0.0 to 5.0.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.0.0...v5.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 09:57:39 +00:00
dependabot[bot]
6ab1bfb2ab chore(deps): bump @floating-ui/dom from 1.2.9 to 1.3.0
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.2.9 to 1.3.0.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.3.0/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 09:57:18 +00:00
Sigmund Petersen
c2305615a6 Merge pull request #10971 from filipefurtad0/mouse_hover_spec
Adds spec for tooltips on orders page
2023-06-12 09:53:16 +02:00
Jean-Baptiste Bellet
ff0f81167a Translate 'Enterprises' > 'OIDC Settings' tab title 2023-06-12 09:19:16 +02:00
Gaetan Craig-Riou
41b3ddae08 Merge pull request #10714 from macanudo527/fix_linelength
Fix Style/LineLength
2023-06-12 09:53:23 +10:00
Konrad
fc09f95fa1 Merge pull request #10961 from jibees/10946-white-label-trix-editor-changes-on-the-custom-tab-content-do-not-trigger-the-update-button
[WhiteLabel] Make update button active when changing custom tab content
2023-06-09 21:46:02 +02:00
Konrad
13037d2d9d Merge pull request #10949 from jibees/10630-buu-as-an-enterprise-user-i-can-see-the-back-office-with-new-brand-colours
[`admin_style_v3`] As an enterprise user i can see the back office with new brand colours
2023-06-09 21:24:01 +02:00
Konrad
9125c730ed Merge pull request #10960 from jibees/customize-trix-editor-to-have-the-right-colors
[White Label] Customize colors of custom content editor to have beautiful toolbar
2023-06-09 20:35:36 +02:00
Matt-Yorkley
70170078d1 Merge pull request #10976 from Matt-Yorkley/payment-localized-number
Require localized_number in Payment class
2023-06-09 18:45:13 +01:00
Konrad
bd505bbee7 Merge pull request #10959 from jibees/10945-white-label-narrow-screen-width-no-marging-on-custom-tab-content
[WhiteLabel] Add some margin to custom tab content for a shop
2023-06-09 19:45:04 +02:00
Matt-Yorkley
24200de8dd Require localized_number in Payment class
There seems to be some contexts (jobs for subscriptions) where the Payment class loads but LocalizedNumber is an undefined constant. It lives in the /lib directory so it's not auto-loaded.
2023-06-09 18:16:37 +01:00
Konrad
d0f4c44add Merge pull request #10938 from jibees/10931-white-label-custom-tab-without-a-title-impossible-to-disable-the-custom-tab
[White Label] Validate the presence of a custom tab title before creating it (+ max 20 characters length)
2023-06-09 19:01:13 +02:00
Cillian O'Ruanaidh
5cde4de512 Ignore leading and trailing whitespace in spreadsheet when importing products 2023-06-09 16:23:18 +01:00
Konrad
502b5e8664 Merge pull request #10937 from jibees/10900-white-label-remove-ofn-navigation-for-small-width-screens
[White Label] Remove ofn navigation for small width screens as well when option is activated
2023-06-09 16:28:22 +02:00
Konrad
35fef9e7ac Merge pull request #10876 from dacook/prettier-css-admin
Prettier css admin
2023-06-09 16:02:11 +02:00
filipefurtad0
24913476ac Adds spec for tooltips on orders page 2023-06-09 11:23:42 +01:00
dependabot[bot]
515a9a9b1c chore(deps-dev): bump knapsack_pro from 4.1.0 to 5.1.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 4.1.0 to 5.1.0.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v4.1.0...v5.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-09 10:02:21 +00:00
Neal Chambers
a65b43d32f Update .rubocop_todo.yml 2023-06-09 16:39:29 +09:00
Neal Chambers
9a8551e3ea Shorten Where Statement 2023-06-09 16:39:29 +09:00
Neal Chambers
a35a07b441 Rewrite sum to be more Readable 2023-06-09 16:39:29 +09:00
Neal Chambers
449430cabc Indent code to be more Readable 2023-06-09 16:39:29 +09:00
Neal Chambers
252697b782 Rewrite If and Unless Statements to be more Readable 2023-06-09 16:39:26 +09:00
Maikel Linke
ec865627d2 Wait for page setup to avoid flaky spec
I'm hiding a real bug here. There's a race condition when the cable event of
the finished report is sent before the loading spinner rendered. The
spinner then overwrites the report again. I added a spec for that but
don't have a solution yet.

I also noticed that the loading spinner is not displayed in testing but
we can assert on the CSS class of the container.
2023-06-09 16:22:01 +10:00
Jean-Baptiste Bellet
74fd1814e4 Create a trixeditor controller and broadcast a change event on form
Therefore, AngularJS can set form as dirty

+ add associated spec
2023-06-09 08:03:17 +02:00
Maikel Linke
d312a5912a Style Layout/MultilineMethodCallIndentation 2023-06-09 14:45:06 +10:00
Maikel Linke
828b2f6f44 Replace too long list of arguments with keywords
Rubocop was complaining about too many arguments. But
`ApplicationJob#perform` needs all arguments handled in one call. While
we could allow the `perform` method generally to have more arguments,
there could be other methods called `perform` which should still be
scrutinised. Instead, it seems acceptable to me to have more arguments
as long as they are clearly named as keyword arguments. Rails uses this
a lot to document all options including their default values, for
example in Active Storage. It's better then bundling several arguments
in an undocumented hash just to reduce the number of given arguments.

And once we upgraded to Ruby 3.1, we can clean the method calls up as
well. `call(user: user)` becomes `call(user:)` without repetition.
2023-06-09 14:44:54 +10:00
Maikel Linke
e56c06571c Remove outdated report timeout handling
Since we don't wait for the report any more, a timeout is very unlikely
and we don't need special handling for it.
2023-06-09 14:44:54 +10:00
Matt-Yorkley
7caf4b03d4 Improve flakyness on report specs 2023-06-09 14:44:53 +10:00
Matt-Yorkley
b230b37284 Update report email spec 2023-06-09 14:44:53 +10:00
Matt-Yorkley
524d1f0264 Switch to tighter Channel scoping...
This is not a normal pattern for setting up ActionCable channels, so it might need some notes. It ensures the broadcasts from the ReportJob are unique not just to the user session but also to the specific tab in the user's browser. Otherwise if the user has two different report pages open in separate tabs with the same session, the broadcast would overwrite the #report-table element in both of them.
2023-06-09 14:44:53 +10:00
Matt-Yorkley
a3ef604797 Run reports in background 2023-06-09 14:44:53 +10:00
Matt-Yorkley
ced959ad6a Load reports show page without all the legacy javascript 2023-06-09 14:44:53 +10:00
Matt-Yorkley
242c74ceaf DRY admin javascript imports 2023-06-09 14:44:53 +10:00
Maikel Linke
6803e0a8f9 Fix error on summarising total_units 2023-06-09 09:55:33 +10:00
Maikel Linke
71e4d2c6ed Spec total_units report column
Current reports don't deal with invalid legacy data.
2023-06-09 09:55:33 +10:00
Maikel Linke
00e171a8f1 Reduce indentation in report spec
Specs should also test from the outside instead of declaring modules and
test from within those modules.
2023-06-09 09:55:33 +10:00
Jean-Baptiste Bellet
5d43285834 Update all locales with the latest Transifex translations 2023-06-08 17:36:04 +02:00
Filipe
ca03e1596b Merge pull request #10952 from Matt-Yorkley/full-name
Improve nil-safety in variant naming methods
2023-06-08 16:26:28 +01:00
Filipe
c12415a340 Merge pull request #10955 from Matt-Yorkley/bulk-invoice-bug
Ensure directory exists before saving invoices pdf
2023-06-08 15:22:27 +01:00
Matt-Yorkley
f4261b85b8 Merge pull request #10940 from Matt-Yorkley/order-tidyup
Order class tidyup
2023-06-08 15:06:59 +01:00
Filipe
7974e1eaa6 Merge pull request #10936 from abdellani/fix-order-progressing-automatically-on-BOO
fix Viewing an order in state "confirmation" changes the state to "complete"
2023-06-08 14:50:04 +01:00
Jean-Baptiste Bellet
457d5a6c83 Override some css classes, to have a beautiful trix editor toolbar buttons
- buttons background are transparent (instead of blue)
 - buttons background on hovering are transparent (instead of green)
 - disabled buttons cursor is default (instead of pointer)
2023-06-08 11:43:59 +02:00
Jean-Baptiste Bellet
05104841cd Add some margin to custom tab content via columns css class 2023-06-08 11:36:06 +02:00
Jean-Baptiste Bellet
d1d050e6a4 Limit size to 20 char for the custom tab title 2023-06-08 11:27:07 +02:00
David Cook
e2ba18f828 Set sentence case tab names in Ruby instead of CSS
I chose .capitalize instead of .humanize, because the latter has extra features which may not be desired.
2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
d6cb483f0d Adjust color to the title of the page 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
d7f7ff7436 Remove background, border and adjust margin top 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
905220a055 Add new color: $color-8 #191c1d Near-black 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
b865d8c1c0 Copy/Paste file admin/shared/layout under admin_v3 folder
+ prettier
2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
51f47fc351 Add border bottom when hovering or selected
+ add some padding to separate those borders then
2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
1b4236640d Add border with box-shadow to menu and sub-menu 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
2057449dac Add new color: $color-7 #EFF1F2 Light grey 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
ba98039e95 Adjust color to orange when selected or hover 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
d51786ac9e Adjust font size for labels in menu 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
ccd7466ede No more white on labels but dark grey 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
b163d4a584 Remove background-color on menu 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
a4d3011e27 Add new color: $color-9 #2E3132 Dark Grey 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
dd48092728 Prettier file 2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
5ee3550ebd Change case to Sentence case
CSS property `capitalize` uppercase all first letter of each words.

I need to use a small trick with `::first-letter` selector
2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
eab46b67e3 Copy/Paste file admin/components/navigation under admin_v3 folder
+ prettier
2023-06-08 11:24:44 +02:00
Jean-Baptiste Bellet
e34f4a9971 AdminV3: Remove icon from icon from primary navigation menu
Co-Authored-By: Maikel <maikel@email.org.au>
2023-06-08 11:24:43 +02:00
Neal Chambers
dde775d2b7 Remove Old Code and Comments 2023-06-08 15:20:04 +10:00
Neal Chambers
3432e30465 Fix Style/UnlessGuard 2023-06-08 15:20:04 +10:00
Neal Chambers
12aa4f9970 Fix Layout/IndentationStyle 2023-06-08 15:20:04 +10:00
Neal Chambers
b04879604a Rewrite Ternary Expression to Prevent Layout/LineLength 2023-06-08 15:20:04 +10:00
Maikel Linke
4ecbbae55e Adapt large browser window as default
We were really close to that anyway. It simplifies the code a bit.
2023-06-08 13:51:29 +10:00
Maikel Linke
7cf68cd33b Ensure that specs restore default window size 2023-06-08 13:51:25 +10:00
Maikel Linke
241b307762 Fix typos 2023-06-08 11:34:05 +10:00
David Cook
7d26158e06 Code cleanup
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-08 11:31:37 +10:00
Maikel Linke
99fbf80b4c Style Layout/MultilineMethodCallIndentation 2023-06-08 11:15:42 +10:00
Matt-Yorkley
98f78927b7 Update app/jobs/bulk_invoice_job.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-08 00:56:24 +01:00
Matt-Yorkley
bf051fc35b Pull checkout-workflow-related callback methods out into the Checkout module which defines checkout state changes 2023-06-07 18:54:20 +01:00
Matt-Yorkley
760bf269ca Pull validations-related methods out into a separate module 2023-06-07 18:54:20 +01:00
Matt-Yorkley
bed2fe69f6 Update regression tests 2023-06-07 16:39:37 +01:00
jibees
c6b5eda85c Merge pull request #10951 from openfoodfoundation/dependabot/bundler/faraday-2.7.6
chore(deps): bump faraday from 2.7.5 to 2.7.6
2023-06-07 17:34:10 +02:00
Matt-Yorkley
b091a0ed1a Ensure directory exists before saving pdf
These directories can get wiped during deployments
2023-06-07 16:25:53 +01:00
Mohamed ABDELLANI
fbf55cf7bd Merge pull request #2 from Matt-Yorkley/fix-order-progressing-automatically-on-BOO
Fix pre-existing issues with admin order controller
2023-06-07 13:49:06 +01:00
David Cook
3ce48848f0 Prettify the rest 2023-06-07 14:23:57 +02:00
David Cook
548a6f8d2e Prettify app/webpacker/css/admin/plugins/ 2023-06-07 14:23:57 +02:00
David Cook
10c52959ad Prettify app/webpacker/css/admin/hacks/ 2023-06-07 14:23:57 +02:00
David Cook
08dc3e3cbe Prettify more admin css
yarn prettier --write
2023-06-07 14:23:02 +02:00
David Cook
fbf5862c66 Ignore some css subfolders
Prettier changes these files dramatically and they're arguably not easier to read.
2023-06-07 14:21:34 +02:00
dependabot[bot]
01dcf068f9 chore(deps): bump rails from 7.0.4.3 to 7.0.5
Bumps [rails](https://github.com/rails/rails) from 7.0.4.3 to 7.0.5.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v7.0.4.3...v7.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-07 14:12:34 +02:00
Matt-Yorkley
b58b555e38 Improve flaky spec 2023-06-07 13:01:37 +01:00
Matt-Yorkley
983353e078 Remove dead code
I'm pretty sure this was here because advancing the order was adding order errors in some cases
2023-06-07 13:01:37 +01:00
Matt-Yorkley
968bf882c4 Fix flaky spec 2023-06-07 13:01:37 +01:00
Matt-Yorkley
daf243996b Improve flaky spec 2023-06-07 13:01:37 +01:00
Matt-Yorkley
7a7ab17db4 Improve customer tests 2023-06-07 13:01:37 +01:00
Matt-Yorkley
6daf29400f Improve distribution and line items tests 2023-06-07 13:01:37 +01:00
Matt-Yorkley
f3ee10dd5a Simplify by moving conditional to guard clause 2023-06-07 13:01:37 +01:00
Matt-Yorkley
cf0f148dba Advance order when creating a shipment
This action gets called from the order edit page when adding line items and it's one of the places that needs to advance the order *before* redirecting back to the order edit action
2023-06-07 13:01:37 +01:00
Matt-Yorkley
bb73d70e57 Improve nil-safety in variant naming methods 2023-06-07 12:17:50 +01:00
dependabot[bot]
24343c769e chore(deps): bump faraday from 2.7.5 to 2.7.6
Bumps [faraday](https://github.com/lostisland/faraday) from 2.7.5 to 2.7.6.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.7.5...v2.7.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-07 09:57:34 +00:00
Filipe
2d28a57c6f Merge pull request #10922 from jibees/10903-white-label-make-logo-url-link-more-tolerant-in-terms-of-format-and-add-example
[White Label] Make logo url link more tolerant in terms of format
2023-06-07 10:00:31 +01:00
Maikel
1c9a09d88d Merge pull request #10943 from openfoodfoundation/dependabot/bundler/paranoia-2.6.2
chore(deps): bump paranoia from 2.6.1 to 2.6.2
2023-06-07 16:31:01 +10:00
Maikel Linke
1ebacf96ad Ignore accidental spaces around whitelabel URL 2023-06-07 13:12:06 +10:00
Matt-Yorkley
acc34d1deb Update advance to payment logic 2023-06-07 00:58:43 +01:00
Matt-Yorkley
e1b37090be Use _path helper instead of _url 2023-06-07 00:58:43 +01:00
Matt-Yorkley
6e8ed1f612 Hide secondary form until the order has line items 2023-06-07 00:58:43 +01:00
Matt-Yorkley
c7bb24e2a0 Remove dead code and clarify update logic 2023-06-07 00:58:43 +01:00
Matt-Yorkley
e88843c733 Ensure order number is generated nicely on new records 2023-06-07 00:58:43 +01:00
Matt-Yorkley
67c3e09dba Use RESTful routes for orders controller actions 2023-06-07 00:35:47 +01:00
Konrad
1b6147db30 Merge pull request #10896 from jibees/10571-bom-orders-not-sorted-by-most-recent-date
BOM: Sort by order completed at desc for line items by default
2023-06-06 17:37:54 +02:00
Matt-Yorkley
2bfb57a1a1 Clarify shipments partial inclusion 2023-06-06 14:59:53 +01:00
Matt-Yorkley
8813edaed8 Fix variables in form partial 2023-06-06 14:59:03 +01:00
Jean-Baptiste Bellet
7dc8c4b891 Hide OFN navigation also on small width screens 2023-06-06 14:55:41 +02:00
Jean-Baptiste Bellet
a8b85a65e9 Add context for visiting a path 2023-06-06 14:44:05 +02:00
Jean-Baptiste Bellet
5c3e07db52 Test that OFN navigation is on mobile views as well 2023-06-06 14:44:05 +02:00
dependabot[bot]
10ca09eaef chore(deps): bump paranoia from 2.6.1 to 2.6.2
Bumps [paranoia](https://github.com/rubysherpas/paranoia) from 2.6.1 to 2.6.2.
- [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.1...v2.6.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-06 10:00:41 +00:00
Jean-Baptiste Bellet
daaeca88e8 Add some helpers to test mobile views 2023-06-06 12:00:16 +02:00
Mohamed ABDELLANI
77554e21fc move advance_to_payment on order's details page from edit to update 2023-06-06 10:23:01 +01:00
Matt-Yorkley
7c72969792 Move Order #state_changed method out into Checkout concern (alongside order states logic) 2023-06-05 23:54:04 +01:00
Matt-Yorkley
a62e51c0d0 Remove Order #refresh_shipment_rates method 2023-06-05 23:54:04 +01:00
Matt-Yorkley
1a7d70772a Make Order #products_available_from_new_distribution method private 2023-06-05 23:54:04 +01:00
Matt-Yorkley
3dd4e7ef03 Delegate order updater method 2023-06-05 23:54:04 +01:00
Matt-Yorkley
8a27dd84fe Make Order #disallow_guest_order method private 2023-06-05 21:30:49 +01:00
Matt-Yorkley
05a715a43a Remove Order #distribution_set? method 2023-06-05 21:30:46 +01:00
Matt-Yorkley
17b10d10c0 Make Order #deliver_order_confirmation_email method private 2023-06-05 21:30:43 +01:00
Matt-Yorkley
10dbeb32b2 Remove Order #credit_cards method 2023-06-05 21:30:40 +01:00
Matt-Yorkley
b3bd112cdb Remove Order #shipped_shipments method 2023-06-05 21:30:36 +01:00
Jean-Baptiste Bellet
93cf562d59 Update en.yml 2023-06-05 15:48:02 +02:00
Jean-Baptiste Bellet
5938577bd1 Update custom_tab_spec.rb 2023-06-05 15:43:11 +02:00
Jean-Baptiste Bellet
1594d1c718 Validate custom tab title 2023-06-05 15:41:33 +02:00
Jean-Baptiste Bellet
abe63e5b04 Add context for visiting a path 2023-06-05 12:08:43 +02:00
Jean-Baptiste Bellet
40111910b6 Validates white_label_logo_link on enterprise model 2023-06-05 11:24:07 +02:00
Jean-Baptiste Bellet
4edb159ef8 Avoid flaky spec by matching the array
Context: https://github.com/openfoodfoundation/openfoodnetwork/actions/runs/5081492387/jobs/9129944001?pr=10896
2023-06-05 10:05:09 +02:00
Jean-Baptiste Bellet
ccb183d60b Sort by order_date desc for line_items in BOM
+ update spec to have different order time
2023-06-05 10:05:09 +02:00
jibees
a785b4d5e0 Merge pull request #10928 from openfoodfoundation/dependabot/bundler/rubocop-1.52.0
chore(deps-dev): bump rubocop from 1.51.0 to 1.52.0
2023-06-05 09:28:04 +02:00
Maikel Linke
16fba20686 Update rubocop todo file 2023-06-05 12:13:35 +10:00
Maikel Linke
1cbb45a618 Style Lint/RedundantSafeNavigation
The cop suggested to change more but they were false positives:

* https://github.com/rubocop/rubocop/pull/11915
2023-06-05 12:09:32 +10:00
Maikel Linke
38bd31d0e3 Style Layout/TrailingWhitespace 2023-06-05 10:42:21 +10:00
Konrad
750b6b284d Merge pull request #10910 from jibees/10902-white-label-for-uploading-custom-logo-use-same-design-as-for-enterprise-logobanner-and-provide-required-image-dimensions
[White Label] Backoffice: improve design for logo used in shopfront
2023-06-04 14:50:49 +02:00
dependabot[bot]
78338864d8 chore(deps-dev): bump rubocop from 1.51.0 to 1.52.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.51.0 to 1.52.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.51.0...v1.52.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-02 09:57:30 +00:00
filipefurtad0
840da55941 Update all locales with the latest Transifex translations 2023-06-02 09:17:23 +01:00
Jean-Baptiste Bellet
880ba85791 Add http to white label logo link if this do not start with http 2023-06-01 17:37:05 +02:00
Jean-Baptiste Bellet
ced8f8aa58 Use shared_examples as we will test many URLs later on
"It's a Surprise Tool That Will Help Us Later"
2023-06-01 17:37:05 +02:00
jibees
d63c47e0f1 Merge pull request #10920 from openfoodfoundation/dependabot/bundler/sidekiq-scheduler-5.0.3
chore(deps): bump sidekiq-scheduler from 5.0.2 to 5.0.3
2023-06-01 17:26:54 +02:00
jibees
fd7d68d0a8 Merge pull request #10919 from openfoodfoundation/dependabot/bundler/rspec-rails-6.0.3
chore(deps-dev): bump rspec-rails from 6.0.2 to 6.0.3
2023-06-01 17:25:58 +02:00
Jean-Baptiste Bellet
2e0191e603 Improve UX: same as enterprise logo and promo image 2023-06-01 17:16:22 +02:00
Filipe
12159edaca Merge pull request #10833 from Matt-Yorkley/order-angular
Remove Angular from admin orders index page
2023-06-01 13:57:39 +01:00
Filipe
2ba0f635f2 Merge pull request #10860 from Matt-Yorkley/order-cycle-deleting
Delete exchange variants in bulk when deleting an order cycle
2023-06-01 13:49:32 +01:00
Filipe
d67227deb8 Merge pull request #10812 from Matt-Yorkley/options-values
Remove OptionValue and OptionType code
2023-06-01 13:49:16 +01:00
Matt-Yorkley
1128fd9c02 Visual tweak to ship/capture buttons and success feedback 2023-06-01 12:13:12 +01:00
dependabot[bot]
3e46115f79 chore(deps): bump sidekiq-scheduler from 5.0.2 to 5.0.3
Bumps [sidekiq-scheduler](https://github.com/moove-it/sidekiq-scheduler) from 5.0.2 to 5.0.3.
- [Release notes](https://github.com/moove-it/sidekiq-scheduler/releases)
- [Changelog](https://github.com/sidekiq-scheduler/sidekiq-scheduler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moove-it/sidekiq-scheduler/compare/v5.0.2...v5.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 10:00:31 +00:00
dependabot[bot]
e428944849 chore(deps-dev): bump rspec-rails from 6.0.2 to 6.0.3
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/rspec/rspec-rails/releases)
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v6.0.2...v6.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 09:59:07 +00:00
Matt-Yorkley
e99c328643 Update app/services/variant_units/variant_and_line_item_naming.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-01 10:12:19 +01:00
Matt-Yorkley
0ac10472cf Update app/models/spree/line_item.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-06-01 10:12:19 +01:00
Matt-Yorkley
7f5d1be792 Guard against unsaved variant's product in OptionValueNamer for product import 2023-06-01 10:12:19 +01:00
Matt-Yorkley
a20277c3a7 Completely remove option_values and option_types from the codebase 2023-06-01 10:12:19 +01:00
Matt-Yorkley
35b41fc7fe Persist unit_value on variant and "option value text" on variant and line_item and improve related AR callbacks 2023-06-01 10:12:19 +01:00
Matt-Yorkley
bfcf1203ac Delete dead code 2023-06-01 10:11:20 +01:00
Matt-Yorkley
896e4c45f2 Clarify confusing class 2023-06-01 10:11:20 +01:00
Matt-Yorkley
3e5ecba738 Remove unhelpful Helper 2023-06-01 10:11:20 +01:00
Matt-Yorkley
e5eb622ac7 Cut dead code 2023-06-01 10:11:20 +01:00
Filipe
6b98e2b3cb Merge pull request #10911 from jibees/10901-white-label-customized-logo-on-small-screens-doesnt-use-the-customized-url
[White Label] Small width screens : use the white label link if exists for logo in nav bar
2023-06-01 08:16:53 +01:00
Filipe
61b70a25d9 Merge pull request #10897 from openfoodfoundation/dependabot/npm_and_yarn/mrujs-1.0.0
chore(deps): bump mrujs from 0.10.1 to 1.0.0
2023-06-01 08:03:32 +01:00
Filipe
e0d24ed5c0 Merge pull request #10912 from openfoodfoundation/dependabot/bundler/puma-6.3.0
chore(deps): bump puma from 6.2.2 to 6.3.0
2023-06-01 07:42:22 +01:00
Filipe
2d4d8e26f5 Merge pull request #10875 from jibees/10561-allow-user-to-create-custom-tab-in-shop-navigation
[White Label] Allow user to create custom tab in shop navigation
2023-06-01 07:21:25 +01:00
Maikel
add725b6c0 Merge pull request #10861 from mkllnk/dfc-import
Update products with DFC Prototype
2023-06-01 08:48:39 +10:00
Filipe
5f429c77f8 Merge pull request #10791 from dacook/10630-new-brand-colours
[admin_v3] New brand colours in admin interface
2023-05-31 16:03:18 +01:00
dependabot[bot]
1b6815515e chore(deps): bump puma from 6.2.2 to 6.3.0
Bumps [puma](https://github.com/puma/puma) from 6.2.2 to 6.3.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.2.2...v6.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 10:01:43 +00:00
Jean-Baptiste Bellet
ac30e8b9da Use the white label link if exists, otherwise, use the main_app.root_path 2023-05-31 10:46:23 +02:00
Filipe
668a573f12 Merge pull request #10908 from filipefurtad0/flaky_simple_spec
Changes date through keystrokes; removes Retry option
2023-05-30 16:43:36 +01:00
filipefurtad0
c5358b1303 Changes date through keystrokes; removes Retry option 2023-05-30 10:02:44 +01:00
jibees
7b6077d01f Merge pull request #10905 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.2.9
chore(deps): bump @floating-ui/dom from 1.2.8 to 1.2.9
2023-05-29 14:57:34 +02:00
dependabot[bot]
841a021bc4 chore(deps): bump @floating-ui/dom from 1.2.8 to 1.2.9
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.2.8 to 1.2.9.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.9/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 09:59:12 +00:00
jibees
7ea2aa699d Merge pull request #10904 from mkllnk/update-job-spec
Simplify background report spec after rspec fix
2023-05-29 10:19:31 +02:00
Maikel Linke
3fa62ceccf Simplify background report spec after rspec fix
The rspec-rails gem had an issue which was fixed in the last release.
Now we can remove my workaround and simplify the spec.
2023-05-29 13:25:44 +10:00
David Cook
24c407f920 Merge pull request #10898 from openfoodfoundation/dependabot/bundler/sidekiq-7.1.1
chore(deps): bump sidekiq from 7.1.0 to 7.1.1
2023-05-29 13:09:15 +10:00
Maikel Linke
77f716306d Remove redundant test 2023-05-29 10:07:34 +10:00
Konrad
fff02a7ddb Merge pull request #10893 from jibees/10853-white-label-remove-ofn-logo-on-navigation-menu-for-small-width-screens
[White Label] Small width screens: Hide OFN logo and use the customized logo if activated
2023-05-28 12:00:49 +02:00
Maikel Linke
0dcd87dda9 Update stock and SKU from DFC
The input has been observed with the nginx access log including
$request_body when the DFC Protoype pushed an update.
2023-05-28 10:39:08 +02:00
Maikel Linke
375b3a3cb0 Update variant's quantity from DFC 2023-05-28 10:39:08 +02:00
Maikel Linke
48a52582e6 Update variant description with DFC description
We used the name before because the DFC Prototype only displays the
description.
2023-05-28 10:39:08 +02:00
Maikel Linke
63837381e0 Update DFC test data with observation
This request came from the current DFC prototype. The changes are
probably implementing DFC v1.7.

I observed by including `$request_body` in the nginx log on the staging
server.
2023-05-28 10:39:08 +02:00
Maikel Linke
50ef06c973 Name DFC test data to clarify content
The DFC has several products like PhysicalProduct and SuppliedProduct.
Here we have a supplied product.
2023-05-28 10:39:08 +02:00
Maikel Linke
7344eb678b Remove now unused helper
It was only used in controller specs which were all converted to request
specs.
2023-05-28 10:39:08 +02:00
Maikel Linke
dde4ea9334 Convert CatalogItems controller spec to request spec 2023-05-28 10:39:08 +02:00
Maikel Linke
207a15e55c Convert SuppliedProducts controller spec to request spec 2023-05-28 10:39:08 +02:00
Maikel Linke
742468efd2 Convert EnterpriseController spec to request spec
Also testing request of unrelated enterprise instead of non-existing
enterprise because authorisation is important to test.
2023-05-28 10:39:08 +02:00
Maikel Linke
d338c61d2c Convert PersonsController spec request spec
It's much more realistic and also tests the routing and authentication.
Besides using real authentication I also improved the matchers.
2023-05-28 10:39:08 +02:00
Maikel Linke
67c29dd38f Activate DFC provider engine, remove feature toggle 2023-05-28 10:39:08 +02:00
Jean-Baptiste Bellet
01b3b3b5bb Add some specs around tab for a shop 2023-05-26 15:19:27 +02:00
Jean-Baptiste Bellet
6b29f7e3c5 Sanitize content with a new TrixScrubber
specifically made for trix editor with its allowed tags
2023-05-26 15:19:27 +02:00
Jean-Baptiste Bellet
f26ecdf4f9 Don't need to pass the order through the nested view 2023-05-26 15:19:27 +02:00
Jean-Baptiste Bellet
6775e0b8f1 Add custom_ prefix to avoid name collision
One can name the custom tab `shop` which can be confusing.
2023-05-26 15:19:27 +02:00
Jean-Baptiste Bellet
9e67bd5824 Use specified values to be sure they aren't empty 2023-05-26 15:19:27 +02:00
dependabot[bot]
2f1e3a5c96 chore(deps): bump sidekiq from 7.1.0 to 7.1.1
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.1.0 to 7.1.1.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.1.0...v7.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 10:01:59 +00:00
dependabot[bot]
856fcd9e18 chore(deps): bump mrujs from 0.10.1 to 1.0.0
Bumps [mrujs](https://github.com/KonnorRogers/mrujs) from 0.10.1 to 1.0.0.
- [Changelog](https://github.com/KonnorRogers/mrujs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KonnorRogers/mrujs/compare/v0.10.1...v1.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 09:58:38 +00:00
Matt-Yorkley
e34c2acba8 Move CablecarResponses include to ApplicationController 2023-05-26 10:35:41 +01:00
Matt-Yorkley
2373d044f7 Update app/services/orders_bulk_cancel_service.rb
Co-authored-by: Maikel <maikel@email.org.au>
2023-05-26 10:33:23 +01:00
Jean-Baptiste Bellet
a24604f146 Remove unused enterprise declaration 2023-05-26 10:24:11 +02:00
David Cook
14345ef1fa Change warning orange to Mojo
> That way we only have one orangy/red colour and we start simplifying things.
2023-05-26 15:11:23 +10:00
David Cook
0df7c45a61 Change warning red to Mojo
Some templates still had this colour hardcoded. They are using angular so I didn't spend time updating them.
2023-05-26 15:11:23 +10:00
David Cook
dcf857cafb Move warning colour definition to CSS
This also changes the orange to red, but that's part of the plan.
2023-05-26 15:11:23 +10:00
David Cook
e674c53535 Change error red color to Mojo
color-5 is used for error messages.
2023-05-26 15:11:23 +10:00
David Cook
719a704985 Change blue colour as per design
https://github.com/openfoodfoundation/openfoodnetwork/issues/10630#issue-1644928392
2023-05-26 15:11:23 +10:00
David Cook
60ec24b92b Use variables for spree-blue
Aka 'Havelock Blue', which is going to be changing.
2023-05-26 15:11:23 +10:00
David Cook
e928e74ae6 Use different palette for admin styles v3
Note that mail.css is still referring to the old palette.
2023-05-26 15:10:49 +10:00
David Cook
31fa9c2c04 Add admin_style_v3 feature toggle 2023-05-26 15:10:27 +10:00
David Cook
01b3901b08 Add admin_style_v3
Individual files may be copied in order to replace the old files.

NOTE: these may need manually re-syncing. If any of the copied files have changed on master in the meantime, we'll need to manaully review to consider bringing those changes to the new design.
2023-05-26 15:10:27 +10:00
David Cook
9051318147 Move colour palette to new file
This seemed like a good separation which will probably help with the upcoming changes.

Co-authored-by: jibees <jb.bellet@gmail.com>
2023-05-26 15:09:59 +10:00
Maikel
b013d3f2d4 Merge pull request #10895 from jibees/10894-flaky-speccontrollersapiv0order_cycles_controller_specrb89
Fix flaky spec: Prefer using `match_array` over `eq` to compare array
2023-05-26 14:06:14 +10:00
Maikel Linke
2e52a633ae Acknowledge new style violations 2023-05-26 13:34:48 +10:00
Maikel Linke
15ef826ac1 Style Style/ClassAndModuleChildren 2023-05-26 13:27:34 +10:00
Maikel Linke
f674d5cd37 Style Layout/TrailingEmptyLines 2023-05-26 13:26:30 +10:00
David Cook
875f68b0e2 Update one more translation 2023-05-26 11:46:22 +10:00
Jean-Baptiste Bellet
cf9342f2c4 Prefer using match_array over eq to compare array
As we don't need order: https://rubydoc.info/github/rspec/rspec-expectations/RSpec%2FMatchers:match_array
2023-05-25 15:24:25 +02:00
Jean-Baptiste Bellet
eea1db4c4a Hide OFN logo and use the customized logo if activated 2023-05-25 15:17:04 +02:00
jibees
8dde81c498 Merge pull request #10891 from openfoodfoundation/dependabot/bundler/test-unit-3.5.9
chore(deps): bump test-unit from 3.5.8 to 3.5.9
2023-05-25 13:34:38 +02:00
dependabot[bot]
2084d84c7a chore(deps): bump test-unit from 3.5.8 to 3.5.9
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.5.8 to 3.5.9.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.5.8...3.5.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-25 09:58:28 +00:00
Filipe
8b7ca292af Merge pull request #10884 from openfoodfoundation/10882-cookie-banner-is-displayed-on-every-page-even-after-accepting
Do not show cookies banner once user accept it
2023-05-25 10:36:27 +01:00
Jean-Baptiste Bellet
f961548da2 Deactivate file upload for trix editor
Source: https://benborgers.com/posts/trix-disable-files
2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
e434eb17f0 Use full width since we use a WYSIWYG editor with toolbar 2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
bb211bfc84 Allow HTML via trix editor for custom tab content
+ update spec as well
2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
4dede3b361 Add trix editor 2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
6e677f15ec Can delete custom tab if uncheck the checkbox 2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
f0665b0862 Add custom tab on shop 2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
916b2313ab Some links does not include _panel suffix. Add if needed.
Yep. Sounds like a hack.

+ Use the right URL anchor with `_panel` in href for each tab

+ update specs
2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
fc21fdb485 Customize default tab: could be either shop or home 2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
6b1d1ddbce On order cycle change, go to shop panel 2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
a28a792642 Allow communication between controllers via event 2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
bb6b1e59f9 Use tabs_and_panels_controller.js instead of PageSelectionCtrl
Prefer StimulusJS over Angular
2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
925b0e0308 Add a form in admin to create/update a custom tab for an enterprise 2023-05-25 09:19:51 +02:00
Jean-Baptiste Bellet
839419791f Create CustomTab model, that belongs to an enterprise 2023-05-25 09:19:51 +02:00
David Cook
f890d9ceb4 Update all locales with the latest Transifex translations 2023-05-25 17:12:10 +10:00
jibees
abc0a29ddb Merge pull request #10889 from mkllnk/dead-code
Remove dead reference to removed model
2023-05-25 09:10:14 +02:00
Maikel Linke
86c35fe2dc Remove dead reference to removed model 2023-05-25 16:13:33 +10:00
Filipe
6d032002f1 Merge pull request #10750 from jibees/10560-allow-hide-of-groups-tab-in-shop-navigation
White Label: allow hide of groups tab in shop navigation
2023-05-24 21:11:04 +01:00
filipefurtad0
ca107c036c Enables caching for cookies_spec.rb 2023-05-24 19:46:28 +02:00
jibees
e60376e6bd Merge pull request #10885 from openfoodfoundation/dependabot/bundler/faraday-2.7.5
chore(deps): bump faraday from 2.7.4 to 2.7.5
2023-05-24 15:18:10 +02:00
jibees
d704157fef Merge pull request #10886 from openfoodfoundation/dependabot/bundler/knapsack_pro-4.1.0
chore(deps-dev): bump knapsack_pro from 4.0.0 to 4.1.0
2023-05-24 15:17:16 +02:00
dependabot[bot]
b985ab8d99 chore(deps-dev): bump knapsack_pro from 4.0.0 to 4.1.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 4.0.0 to 4.1.0.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v4.0.0...v4.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-24 10:10:08 +00:00
dependabot[bot]
d60ba96fe9 chore(deps): bump faraday from 2.7.4 to 2.7.5
Bumps [faraday](https://github.com/lostisland/faraday) from 2.7.4 to 2.7.5.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.7.4...v2.7.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-24 10:08:17 +00:00
Jean-Baptiste Bellet
3cd53cbd41 Adds some keys to this cached element, due to cookie banner
Once the user accept the cookie, we should not show the cookie banner element. This is handled via `app/helpers/footer_links_helper.rb#cookies_policy_link` and boolean:

```
!Web::CookiesConsent.new(cookies, request.host).exists? && Spree::Config.cookies_consent_banner_toggle
```
2023-05-24 10:45:06 +02:00
Maikel Linke
b4deb21872 Bump Ruby from 3.0.3 to 3.1.4
Major 3.1 highlights:

* https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released/
2023-05-24 16:52:34 +10:00
Maikel
32d425dd58 Merge pull request #10880 from openfoodfoundation/dependabot/bundler/knapsack_pro-4.0.0
Bump knapsack_pro from 3.11.0 to 4.0.0
2023-05-24 14:05:09 +10:00
Maikel
ce1317933b Merge pull request #10815 from Pauloparakleto/issue-7483
refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
2023-05-24 11:57:44 +10:00
Maikel
340f10b323 Merge pull request #10539 from filipefurtad0/spec_for_enterprise_fee_selection_tax_inherit
Adds a spec to check enterprise fees creation
2023-05-24 11:29:27 +10:00
Maikel
8c11bf3033 Merge pull request #10839 from mkllnk/valid-email
Validate user's email address
2023-05-24 10:37:00 +10:00
Konrad
0854287b92 Merge pull request #10744 from jibees/10556-remove-ofn-header-banner-in-order-confirmation-emails
White Label: remove OFN banner from order confirmation emails when `hide_ofn_navigation` is activated for the shop
2023-05-24 01:14:16 +02:00
dependabot[bot]
6dc1cb6baa Bump knapsack_pro from 3.11.0 to 4.0.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 3.11.0 to 4.0.0.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v3.11.0...v4.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-23 10:01:38 +00:00
Maikel Linke
ef3422bf58 Update syntax and clarify use of outdated gem 2023-05-23 08:23:58 +02:00
Maikel Linke
90cbac7176 Validate email domains
The gem checks the DNS system for a valid domain entry.
2023-05-23 08:23:58 +02:00
Maikel Linke
ffc45f77cf Validate user email syntax on change
We probably have invalid entries in the database and we don't want these
records to suddenly become invalid. People would not be able to log in.
2023-05-23 08:23:58 +02:00
Maikel Linke
101b9025b4 Spec user email validation
The pending spec addresses:

 * https://github.com/openfoodfoundation/openfoodnetwork/issues/10808
2023-05-23 08:23:58 +02:00
Konrad
b56b36f617 Merge pull request #10859 from filipefurtad0/change_voucher_default_message_en
[Vouchers] Updates warning_forfeit_remaining_amount default message
2023-05-23 08:20:41 +02:00
filipefurtad0
5e248aa715 Improving shared_example naming 2023-05-22 12:27:04 +01:00
filipefurtad0
554d515875 Introduces prefix to simplify assertions 2023-05-22 12:27:04 +01:00
Matt-Yorkley
459ef5f0d1 Only delete related exchange variants if exchange is outgoing 2023-05-22 11:09:29 +01:00
Jean-Baptiste Bellet
0bec7562a0 When hide_groups_tab is set to false, do not display group in shopfront
Co-Authored-By: Maikel <maikel@email.org.au>
2023-05-22 10:29:57 +02:00
Jean-Baptiste Bellet
0d98ec8f4c In admin, add form to set hide_groups_tab attribute
+ add specs
2023-05-22 10:29:56 +02:00
Jean-Baptiste Bellet
38cc8a89d1 Add hide_groups_tab to Enterprise model 2023-05-22 10:29:56 +02:00
Matt-Yorkley
7c5067ff42 Update "special instructions" note tooltip and add missing test coverage 2023-05-21 14:06:14 +01:00
Matt-Yorkley
005d95e882 Fix "Resend Confirmation" link and add missing test coverage 2023-05-21 13:33:29 +01:00
Matt-Yorkley
dcdcdb4fc0 Align filter buttons centrally 2023-05-21 00:15:32 +01:00
Matt-Yorkley
abf00353ea Permit explicit params 2023-05-21 00:15:32 +01:00
Matt-Yorkley
be1ed2bbcf Update tomselect multiselect styling 2023-05-21 00:15:32 +01:00
Matt-Yorkley
52450028a1 Fix checkbox alignment 2023-05-21 00:15:32 +01:00
Matt-Yorkley
d50ac4bf45 Reinstate dropdown-with-prepend 2023-05-21 00:15:32 +01:00
Matt-Yorkley
4ddde65a04 Reimplement saving and restoring submitted search filters between page loads 2023-05-21 00:15:32 +01:00
Matt-Yorkley
7d33e0f74d Allow programmatically refreshing flatpickr element via "flatpickr:change" event after changing the select's value externally 2023-05-21 00:15:32 +01:00
Matt-Yorkley
2ba2a826db Clean up event handlers on disconnect in Flatpickr controller 2023-05-21 00:15:32 +01:00
Matt-Yorkley
d64a9afece Replace angular ofn-with-tip directive on capture/ship buttons 2023-05-21 00:15:32 +01:00
Matt-Yorkley
770880c062 Update specs 2023-05-21 00:15:32 +01:00
Matt-Yorkley
310577c49d Close dropdown after selection with multiselect
This conforms with the previous select2 multiselect behaviour
2023-05-21 00:15:32 +01:00
Matt-Yorkley
c3cf79f5ef Delete angular ordersCtrl 2023-05-21 00:15:32 +01:00
Matt-Yorkley
71c4f2a5be Update styling on multiselect tabs for tom-select 2023-05-21 00:15:32 +01:00
Matt-Yorkley
95f1643cec Combine related reflex actions 2023-05-21 00:15:32 +01:00
Matt-Yorkley
bee46720f4 Combine bulk action controllers and pass reflex as an argument 2023-05-21 00:15:32 +01:00
Matt-Yorkley
5930d0c1f5 Make bulk actions more generic 2023-05-21 00:15:32 +01:00
Matt-Yorkley
55d9deb5bd Update order cancelling bulk action 2023-05-21 00:15:32 +01:00
Matt-Yorkley
134f1ab151 Replace angular bulkInvoiceCtrl 2023-05-21 00:15:32 +01:00
Matt-Yorkley
27290e5b57 Make modal controller creatable and destroyable 2023-05-21 00:15:32 +01:00
Matt-Yorkley
25aecfa5b9 Add reflex for shipping orders 2023-05-21 00:15:32 +01:00
Matt-Yorkley
e58a37f65b Add reflex for capturing orders 2023-05-21 00:15:32 +01:00
Matt-Yorkley
61849d84e7 Extract order capturing to OrderCaptureService 2023-05-21 00:15:32 +01:00
Matt-Yorkley
73b41154cc Update admin flashes 2023-05-21 00:15:32 +01:00
Matt-Yorkley
048df6230b Remove angular from admin orders index page 2023-05-21 00:15:32 +01:00
Matt-Yorkley
5ad68f25e3 Handle old jquery_ujs buttons 2023-05-21 00:15:30 +01:00
Matt-Yorkley
3df166fb2f Drop jquery_ujs 2023-05-20 19:47:41 +01:00
Matt-Yorkley
59fd4ad251 Tidy up JS imports 2023-05-20 19:47:41 +01:00
Matt-Yorkley
48a8f57262 Prep admin JS 2023-05-20 19:47:41 +01:00
Matt-Yorkley
f181b35a90 Add minimal admin js setup 2023-05-20 19:47:41 +01:00
Matt-Yorkley
c4bc0a7bbd Rename select-all-controller 2023-05-20 19:47:41 +01:00
paulo-felipe
3a35f12801 chore(spec/system/admin/subscriptions_spec.rb): issue #7483
Group together sample tests to avoid rebuilding browser state.
2023-05-19 19:55:27 -03:00
paulo-felipe
c9ab092f7c chore(spec/system/admin/subscriptions_spec.rb): issue #7483
Add back comment explaining bill address has been pre-loaded.
2023-05-19 19:55:27 -03:00
paulo-felipe
1e1d4b07d1 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Remove the old chained smoke test.
2023-05-19 19:55:27 -03:00
paulo-felipe
bd05f40b17 lint(spec/system/admin/subscriptions_spec.rb): issue #7483
Solve line too long offense and separate variables from expectations.
2023-05-19 19:55:27 -03:00
paulo-felipe
105d695f18 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
add unit test to check creation of standing line items when click create subscription without changing shipping address.
2023-05-19 19:55:27 -03:00
paulo-felipe
4df550fcf1 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
add unit test to check basic Subscription properties when click create subscription without changing shipping address.
2023-05-19 19:55:27 -03:00
paulo-felipe
49ceec8b8e refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
share common before action Create subscription between samples.
2023-05-19 19:55:27 -03:00
paulo-felipe
03aade4072 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context when click Create Subscription button on third page after click next button previously on second page.

It has selector for price, input for quantity and selector for total price.
2023-05-19 19:55:27 -03:00
paulo-felipe
f0da85d723 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context when click Create Subscription button on third page after click next button previously on second page.
2023-05-19 19:55:27 -03:00
paulo-felipe
8c709e13e0 lint(spec/system/admin/subscriptions_spec.rb): issue #7483
Solve line too lng offense.
2023-05-19 19:55:27 -03:00
paulo-felipe
c63a8d12f7 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context on third page and adding a product AND deleting the existing product AND adding a new product and click next button.
2023-05-19 19:55:26 -03:00
paulo-felipe
5a5aa4c067 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context on third page and adding a product AND deleting the existing product AND adding a new product.
2023-05-19 19:55:26 -03:00
paulo-felipe
5776bdb31c refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context on third page and adding a product AND deleting the existing product.
2023-05-19 19:55:26 -03:00
paulo-felipe
b0623ab4de refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context on third page and adding a product.
2023-05-19 19:55:26 -03:00
paulo-felipe
f05e2618be refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context on third page and click next button without adding at least one product.
2023-05-19 19:55:26 -03:00
paulo-felipe
35ce463811 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context on third page.
2023-05-19 19:55:26 -03:00
paulo-felipe
7efc68281e refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context when using copy button to fill in ship address.
2023-05-19 19:55:26 -03:00
paulo-felipe
aa16110e9a refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context when resetting the billing address after clearing the bill address. MOve scenario to its before do block.
2023-05-19 19:55:26 -03:00
paulo-felipe
39a76861f3 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context when resetting the billing address after clearing the bill address.
2023-05-19 19:55:26 -03:00
paulo-felipe
79ff13e8ba refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Move on second page to a before action and clearing some elements of bill address to a before action. Let the unit test with the action isolated.
2023-05-19 19:55:26 -03:00
paulo-felipe
573ab1beb0 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context on second page when clearing some elements of the bill address.
2023-05-19 19:55:26 -03:00
paulo-felipe
384ad1ba12 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Group context for first page scenarios. Extract common customer actions to its before do block.
2023-05-19 19:55:26 -03:00
paulo-felipe
77857a0168 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Add context when date field is filled. It goes to the next page with preloaded data.
2023-05-19 19:55:26 -03:00
paulo-felipe
47b0d626e2 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Isolate when no field is filled on first screen describe it better as per reviewer suggestion.
2023-05-19 19:55:26 -03:00
paulo-felipe
0bf7e53ce4 refactor(spec/system/admin/subscriptions_spec.rb): issue #7483
Isolate when no field is filled on first screen.
2023-05-19 19:55:26 -03:00
Konrad
fed7c3da51 Merge pull request #10761 from rioug/vouchers-any-amount
[Vouchers] Flat rate of any amount
2023-05-19 17:39:33 +02:00
Matt-Yorkley
a8559e621f Simplify exchange variant callback and prefer delete over destroy
Delete is faster than destroy but should only be used if the object has no callbacks or touches.
2023-05-19 11:26:33 +01:00
Matt-Yorkley
434c9ae110 Delete exchange variants in bulk when deleting an order cycle 2023-05-19 10:46:55 +01:00
David Cook
9d7316c553 Use a fixed value for voucher factory 2023-05-19 17:19:54 +10:00
Maikel Linke
37441be371 Update translations 2023-05-19 14:33:23 +10:00
Maikel
0d403f4087 Merge pull request #10814 from Matt-Yorkley/serializer-eager-loading
Improve eager-loading on admin products page
2023-05-19 14:31:25 +10:00
Maikel
f943b411c5 Merge pull request #10823 from abdellani/fix-file-name-used-as-parameter
[Security] Validate product import file path
2023-05-19 14:28:09 +10:00
Maikel
7af14e37fa Merge pull request #10488 from mkllnk/dfc-connector
Serialize DFC catalog items with DFC Connector
2023-05-19 11:31:23 +10:00
filipefurtad0
8d2885e147 Updates spec after merging #10512 2023-05-18 16:04:30 +01:00
filipefurtad0
51b144f174 Covers editing into invalid combinations 2023-05-18 15:59:48 +01:00
filipefurtad0
4e2095f0fb Tests enterprise fee creation
...when inheriting tax category from product

as shared examples
2023-05-18 15:59:48 +01:00
Filipe
3d1b0816ed Merge pull request #10512 from abdellani/fix-tax-not-charged-when-tax-category-set-to-inherit-from-product
Prevent saving the enterprise fee when a per order calculator is selected along with 'Inherit from product'
2023-05-18 13:43:14 +01:00
Konrad
39bb1f6f41 Merge pull request #10832 from Matt-Yorkley/cloning
Clone all ExchangeVariant objects in bulk
2023-05-18 14:32:30 +02:00
filipefurtad0
c99829e457 Updates spec to reflect change on en.yml 2023-05-18 12:11:37 +01:00
filipefurtad0
7ea3834900 Updates warning_forfeit_remaining_amount default message 2023-05-18 11:57:15 +01:00
David Cook
360a241402 Style fix 2023-05-18 10:07:52 +10:00
Filipe
0d23b63bbd Merge pull request #10779 from dacook/10634-remove-admin_style_v2
10634 Remove admin_style_v2 feature
2023-05-17 15:37:05 +01:00
Konrad
19caadb1a0 Merge pull request #10800 from dacook/remove-localisation
Also remove localized number logic from weight calculator
2023-05-17 14:57:26 +02:00
David Cook
c0c123a92a Remove localized number logic from weight calculator
Follow-on from a46eef291c
2023-05-17 14:10:58 +02:00
Konrad
f26bef5f98 Merge pull request #10813 from saunmanoj888/fix-fullname-search-issue-on-bulk-orders
Fix searching issue with full name on bulk order management
2023-05-17 13:58:04 +02:00
saunmanoj888
aee7645e29 Fix searching issue with full name on bulk order management 2023-05-17 13:14:10 +02:00
Konrad
02873d7596 Merge pull request #10817 from Matt-Yorkley/permissions-scoping
Scope orders before bulk actions
2023-05-17 12:44:07 +02:00
Matt-Yorkley
e1b0a03819 Scope orders before bulk actions 2023-05-17 12:03:40 +02:00
Jean-Baptiste Bellet
2336981ca0 Do not display OFN banner on order confirmation email if white label 2023-05-17 11:35:18 +02:00
Jean-Baptiste Bellet
dfafbfe996 Create an order confirmation email preview of the last completed order
Available on `/rails/mailers/order_mailer/confirm_email_for_customer`
2023-05-17 11:35:06 +02:00
Jean-Baptiste Bellet
f7d06fe0e8 Do not display OFN banner on subscription confirmation email if white label
+ add specs that test for the presence of the footer logo which is in the header (I know it's a bit contradictory)
2023-05-17 11:34:35 +02:00
Jean-Baptiste Bellet
3ed89fc2db Create a subscription confirmation email preview of the last completed order
Available on: `/rails/mailers/subscription_mailer/confirmation_email`
2023-05-17 11:34:16 +02:00
Maikel Linke
eaf3bd0bae Update spec after new import file validation 2023-05-17 15:18:29 +10:00
Mohamed ABDELLANI
fcb8550cb1 extract file path sanitizer to an independent class 2023-05-17 15:09:48 +10:00
Mohamed ABDELLANI
4d5ba6a7e6 add file path validation 2023-05-17 15:09:48 +10:00
Maikel Linke
a0d05b26d1 Spec current product import vulnerabilities
I didn't use pending specs but deliberately passing specs on wrong
behaviour. This is not how it should be but how it is at the moment.
2023-05-17 15:09:01 +10:00
Konrad
4a66b62fa7 Merge pull request #10825 from jibees/10824-remove-feature-toggle-on-white-label-feature
Activate white label feature
2023-05-16 13:50:58 +02:00
Maikel
16329e953f Merge pull request #10844 from openfoodfoundation/dependabot/npm_and_yarn/jasmine-core-5.0.0
Bump jasmine-core from 4.6.0 to 5.0.0
2023-05-16 17:50:39 +10:00
Gaetan Craig-Riou
abf2105df7 Admin::VoucherController check enterprise permission 2023-05-16 16:20:04 +10:00
Gaetan Craig-Riou
355af9e818 Per review comment, build enterprise instead of create
Speed up testing by removing unnecessarily created record
2023-05-16 16:20:04 +10:00
Gaetan Craig-Riou
b585f77be4 Make enterprise mandatory for a voucher
It should have already been the case...
2023-05-16 16:20:04 +10:00
Gaetan Craig-Riou
2d8fa24862 Add a voucher factory
As vouchers are getting more complicated, it makes sense to use a
factory to simplify writing test.
2023-05-16 16:20:04 +10:00
Gaetan Craig-Riou
b427e420ce Update admin pages to allow entering an amount 2023-05-16 16:20:04 +10:00
Gaetan Craig-Riou
15eee8175e Add amount to voucher
Change value to amount to be more consistent
2023-05-16 16:19:59 +10:00
Maikel
10c918be75 Merge pull request #10732 from mkllnk/report-email
[Hidden] Notify about completed report with download link via email
2023-05-16 10:25:23 +10:00
Maikel
a979f7c8df Merge pull request #10587 from rioug/10432-vouchers-bare-minimum-checkout
10432 vouchers bare minimum checkout
2023-05-16 09:19:06 +10:00
Maikel Linke
08aff56e20 Expire report files after 1 week, maximum for S3
We didn't see this in tests which use disk storage. But AWS S3 has a
maximum of one week for URL expiry.
2023-05-15 19:41:45 +02:00
Maikel Linke
5ae04a5a3e Hide report link which only works at unknown time
It was bad UX to show a link that doesn't work straight away. At the
time, it was the only way to download the report but now we send an
email which is a much better way to go.

I leave the rest of the code because we want to implement a reflex which
shows the download link once it's ready.
2023-05-15 19:41:45 +02:00
Maikel Linke
299bc253a4 Expire report download links in a month, not 5mins 2023-05-15 19:41:45 +02:00
Maikel Linke
8a8c53ceee Add ReportMailer preview for devs 2023-05-15 19:41:45 +02:00
Maikel Linke
860fe85af9 Add report download link to email notification
I added a system spec to verify that the download link can be generated
within the mailer in a background job. ActiveStorage is a bit particular
when it comes to genererating URLs and depending on the situation it may
generate a redirect URL, a proxy URL or link directly to the storage.
But we want a redirect URL here.
2023-05-15 19:41:45 +02:00
Maikel Linke
cf5a8a26ce Notify only about slow reports
It would be annoying to get an email for reports which display on the
screen immediately.
2023-05-15 19:41:45 +02:00
Maikel Linke
1f4af7f990 Send (dummy) email when background report is done
I'll fill it out in future commits.
2023-05-15 19:41:45 +02:00
Jean-Baptiste Bellet
aaa9bac4dd Remove white_label feature toggle
White label is now activated for everyone.

+ add mock for `spec/controllers/spree/orders_controller_spec.rb`
2023-05-15 17:10:50 +02:00
jibees
d43678c68b Merge pull request #10827 from filipefurtad0/logging_out_spec
Adds test case for logging out
2023-05-15 15:33:56 +02:00
Jean-Baptiste Bellet
ec0cbc5bf9 Avoid warning by being more precise about *.erb files 2023-05-15 15:29:28 +02:00
jibees
a1e4c45daa Merge pull request #10843 from openfoodfoundation/dependabot/bundler/rubocop-1.51.0
Bump rubocop from 1.50.2 to 1.51.0
2023-05-15 15:03:24 +02:00
jibees
edeedc0704 Merge pull request #10841 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.2.8
Bump @floating-ui/dom from 1.2.7 to 1.2.8
2023-05-15 15:02:22 +02:00
jibees
d2539b34e0 Merge pull request #10840 from openfoodfoundation/dependabot/bundler/rails-i18n-7.0.7
Bump rails-i18n from 7.0.6 to 7.0.7
2023-05-15 15:01:12 +02:00
jibees
fea3957481 Merge pull request #10845 from openfoodfoundation/dependabot/bundler/test-unit-3.5.8
Bump test-unit from 3.5.7 to 3.5.8
2023-05-15 15:00:03 +02:00
jibees
b183832fbb Merge pull request #10842 from openfoodfoundation/dependabot/bundler/capybara-3.39.1
Bump capybara from 3.39.0 to 3.39.1
2023-05-15 12:22:59 +02:00
dependabot[bot]
8a352132a0 Bump test-unit from 3.5.7 to 3.5.8
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.5.7 to 3.5.8.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.5.7...3.5.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 10:00:55 +00:00
dependabot[bot]
0e59a5db91 Bump jasmine-core from 4.6.0 to 5.0.0
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 4.6.0 to 5.0.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v4.6.0...v5.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 10:00:22 +00:00
dependabot[bot]
340fe91e07 Bump rubocop from 1.50.2 to 1.51.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.50.2 to 1.51.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.50.2...v1.51.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 10:00:15 +00:00
dependabot[bot]
6c126cfc33 Bump capybara from 3.39.0 to 3.39.1
Bumps [capybara](https://github.com/teamcapybara/capybara) from 3.39.0 to 3.39.1.
- [Changelog](https://github.com/teamcapybara/capybara/blob/master/History.md)
- [Commits](https://github.com/teamcapybara/capybara/compare/3.39.0...3.39.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 09:59:19 +00:00
dependabot[bot]
82c6eaab4e Bump @floating-ui/dom from 1.2.7 to 1.2.8
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.2.7 to 1.2.8.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.8/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 09:57:51 +00:00
dependabot[bot]
d4918893a7 Bump rails-i18n from 7.0.6 to 7.0.7
Bumps [rails-i18n](https://github.com/svenfuchs/rails-i18n) from 7.0.6 to 7.0.7.
- [Changelog](https://github.com/svenfuchs/rails-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/svenfuchs/rails-i18n/compare/v7.0.6...v7.0.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 09:57:24 +00:00
jibees
1e05bc5b5c Merge pull request #10789 from jibees/10770-bom-cancelling-an-order-always-restocks-the-line-item
BOM: when deleting the last item of order that leads to order cancellation, take into account the restock items checkbox
2023-05-15 09:50:13 +02:00
Mohamed ABDELLANI
7f52684488 add check_calculators_compatibility_with_taxes before running enterprise bulk update 2023-05-15 07:35:52 +01:00
Gaetan Craig-Riou
5eb6097101 Fix error handling when creating a voucher adjustment
I wrongly assumed that `voucher.create_adjustment` would return nil
if failing to create an adjustment. I will in fact return an
adjustment object with errors.
2023-05-15 13:42:40 +10:00
David Cook
ccff3379ea Update schema.rb
On a freshly mirrored prod db, I found these changes.

I don't know why.. but hopefully this is correct.
2023-05-15 13:42:40 +10:00
Gaetan Craig-Riou
d29119f5c5 Remove non need belongs_to associations from Adjustments
It turns out the "tax_rate" association isn't used and wasn't working.
Same for the "voucher" one, which I added to be consistent with existing
code.
Both of these weren't caught by the specs because you can't test associations
with a custome relation with 'shouda-matchers' see: https://github.com/thoughtbot/shoulda-matchers/issues/981
2023-05-15 13:42:40 +10:00
Gaetan Craig-Riou
b67f5ae154 Fixing Rubocop issue
My editor automatically remove blank character on empty line, that's
why rubocop got grumpy here.
2023-05-15 13:42:40 +10:00
Matt-Yorkley
9b1725d39f Fix model name in adjustment association 2023-05-15 13:42:40 +10:00
Gaetan Craig-Riou
b80274f49d Per review comment, Use named value on voucher submit button to distinguish between submission types
The voucher apply button is inside form that has another a submit button,
it leads to a weird situation where either one will submit the whole
payments page form. Adding a named parameter on the voucher apply button
means we can distinguish between the two by checking for the presence
of params[:apply_voucher].
2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
92bcd937dc Per review comment, remove form object from the partial
This partial is rendered inside another <form> element, nested form
don't work.
2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
0a249d7722 Fix ButtonEnableToggleController to remove hacky button disable
As per review comment, use data-disable-with="false" do prevent Rails
from automatically enabling the "Apply" button. We can then remove
the timeout hack.
2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
236f6926d9 Cleaning up left over TODOs 2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
aa526a639c Checkout payment page, enable voucher "apply" button when code entered
The "apply" button is disabled by default. If left enabled, a customer
could try to apply an empty voucher, which results in system trying
to move to the order summary step, an unexpected behaviour!
We only enable the button when something is entered in the input.
2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
e5f14177d3 Fix rubocop warning
I guess the new cops are effective :)
2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
815dcbcefe Fix translations 2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
a2e1e6ca33 Review comment, use dig to access voucher_code param 2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
2f1fe6d096 Fix rubocop warning 2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
17e32a89f8 Add VoucherAdjustmentsService to handle calculation
Refactor Voucher to move voucher adjustments calculation
to VoucherAdjustmentsService
2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
56e981d300 Refactor Voucher to get rid of CalculatedAdjustments
Voucher adjustment have complicated calculation that prevent us from
using Spree::Calculator, and we need to override CalculatedAdjustments
method, so no point using it.
We still keep the same methods to stay as consitent as possible in
regards to adjustments
2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
3f37554ff9 Add VoucherAdjustmentsController and specs
Refactor split checkout to use the new controller. But unfortunately
we can't have nested form, so adding a voucher is still handled by
SplitCheckoutController.
2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
43ab881181 Rename order association to voucher_adjustments
The name vouchers is a bit confusing as the order is linked to a
voucher adjutment and not the actual voucher
2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
fe9b94a80e Fix cart disappearing bug after adding a voucher
The split checkout page uses `mrujs` and `CableCar` to set the form as
a remote one and perform `CableCar` operation if any : https://mrujs.com/how-tos/integrate-cablecar
The previous solution broke the cart handled by angularJS, it looks like
`morpdom` (https://mrujs.com/references/remote-forms-and-links Navigation Adapter section )
was doing something that angularJS didn't like when redirecting to
the current page.
With the power of `CableCar`, we now replace the #voucher-section on the
split checkout page instead of doing a redirect.
2023-05-15 13:42:39 +10:00
Gaetan Craig-Riou
94294fa161 Voucher adjustment, add ordering by created_at
It gives us a consistent result when calling #vouchers
2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
a1ad25f217 Fix failing specs 2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
bb9d835bd8 Fix rubocop warning 2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
87cc525d27 Refactor #vouchers
Use "has_many" instead of a method
2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
4b5d6d7eac Fix voucher adjustments association
Add missing, "inverse_of" and "dependent" options. Use :nullify as
for "dependent" because we would want to keep the adjustments on order
even if the voucher is deleted.
2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
58469adfeb Adjustments spec, add association test 2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
5064bf5383 Allow voucher adjustment to be created with an amount of 0
Although unlikely, we should still be able to create a voucher amount
with. This can happen if the order.total is for instance.
2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
9789911523 Rework how voucher are applied to an order and handle tax calculation
At the time when we can apply a voucher to an order (payment step) we
don't have any data on possible taxes and payment fees. These are
calculated when we move to the summary step. So voucher are applied in
two step:
- create an "open" voucher adjustment on the order when a customer enters
a voucher code.
- when we move to the summary step, recalulate the amount and
possible tax for the voucher adjustment, once taxes and payment fees
have been included in the order. And then close the original and update
order to reflect the changes
2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
d157d91054 When voucher cover more than order total, use only amount needed
The checkout payment step will also show a warning.
The amount used is stored in the adjustment created, so we will be able
to track how much has been used down the line.
2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
3f609d3842 Add error message if adding a voucher fails
It's not really useful to the user but better than failing silently
2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
596c775af6 Add controller spec to cover voucher in split checkout 2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
74e0b0f6b5 Add voucher adjustment loading to CheckoutCallbacks
This is needed so the voucher is loaded properly when the "checkout"
partials are render via cable_car.
2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
74a8730f04 Highlight voucher on order summary step 2023-05-15 13:42:38 +10:00
Gaetan Craig-Riou
856386fcb0 SplitCheckoutController refactor add_voucher
Now all redirection/render_error happen in #update, it makes it
easier to understand.
2023-05-15 13:42:37 +10:00
Gaetan Craig-Riou
e487ed0532 Add link to remove voucher when a voucher has been applied
Improve styling to match the design
2023-05-15 13:42:37 +10:00
Gaetan Craig-Riou
b6213b25e9 add acts_as_paranoid to voucher
This is so the relation
`belongs_to :originator, -> { with_deleted }, polymorphic: true`
setup in Spree::Adjustement works as expected.
2023-05-15 13:42:37 +10:00
Gaetan Craig-Riou
a9d9b33f7d First take at adding a voucher to an order
Use voucher.create_adjustment to add an adjustment to the order
Currently doesn't take into account tax part
2023-05-15 13:42:37 +10:00
Gaetan Craig-Riou
3ec58d8791 Add #vouchers, return an array of voucher adjustments 2023-05-15 13:42:37 +10:00
Gaetan Craig-Riou
9b680e1a92 Add CalculatedAdjustments to Voucher
Vouchers are only flat rate of 10 for now, so we add a FlatRate
calculator in a before_validation callback
2023-05-15 13:42:37 +10:00
Gaetan Craig-Riou
f7ee01b9f8 Add voucher input on checkout payment's step
Voucher input is displayed  only if the distributor has any voucher
2023-05-15 13:42:37 +10:00
Maikel
4f7059d0c7 Merge pull request #10838 from filipefurtad0/fix_negative_adjustment_error
Adds minus sign to validation criteria
2023-05-15 11:07:45 +10:00
Gaetan Craig-Riou
d715b6b3bb Spec fix LocalisedNumber validation to allow negative number
As part of this PR https://github.com/openfoodfoundation/openfoodnetwork/pull/10329
LocalisedNumber validation was tightened, but that means negative number
were not valid anymore.

This commit has been cherry-picked after this fix has already been
applied. Now we just change the order of characters in the regex because
humans are used to reading the minus at the beginning of the number. But
this change doesn't change the logic at all.
2023-05-15 10:55:59 +10:00
Maikel
5045e26792 Merge pull request #10834 from mkllnk/variant-spec
Improve readability and performance of variant spec
2023-05-15 09:48:06 +10:00
filipefurtad0
0442f2da7e Fixes spec warning
An example was being ignored due to legacy syntax - WARNING: ignoring the provided expectation message argument since it is not a string or a proc.
2023-05-14 23:02:44 +01:00
filipefurtad0
e7ab839fb3 Adds minus sign as validation criteria
Removes pending from passing examples
2023-05-14 23:02:44 +01:00
filipefurtad0
596b318778 Adds spec on negative adjustment
with different localization settings

Using shared examples and setting failing

ones as pending
2023-05-14 23:02:00 +01:00
Filipe
3c7337b53a Merge pull request #10836 from jibees/10835-on-small-width-screen-the-cart-element-is-missplaced
Fix bad indentation (and hierarchy) of DOM elements causing bad rendering on small width screens
2023-05-12 11:24:49 +01:00
Jean-Baptiste Bellet
60edb4363e Fix bad indentation (and hierarchy)
`%section` must be siblings each others

introduced by https://github.com/openfoodfoundation/openfoodnetwork/pull/10772
2023-05-12 09:30:37 +02:00
Maikel Linke
6596225a99 Fix typo in VCR cassette name 2023-05-12 14:48:00 +10:00
Maikel Linke
87c4c5373b Spec more variant naming with realistic data 2023-05-12 14:10:54 +10:00
Maikel Linke
f70607259a Spec Variant#product_and_full_name with real data
Mocking skips a lot of code execution which we want to test as well.
2023-05-12 13:34:34 +10:00
Maikel Linke
ce180caad9 Test with in-memory data when possible
This should speed up specs but I observed only one second less run time.
2023-05-12 13:21:58 +10:00
Maikel Linke
01be934caf Reduce spec run time by not creating unused subject
The `variant` instance isn't used in all specs and doesn't need to be
created every time. This reduced run time from 1min5sec to 43sec on my
machine.
2023-05-12 13:21:58 +10:00
Maikel Linke
54c6559b97 Move Spree::Variant spec out of Spree module
I also discovered that some specs were just in the Spee module and not
within the `describe Variant` block. I moved them inside the block.
2023-05-12 13:21:19 +10:00
Maikel
93c0a06403 Merge pull request #10829 from filipefurtad0/flaky_order_spec_error
Splits assertions to allow JS table populate
2023-05-12 11:49:06 +10:00
Maikel Linke
636b365304 Tell Rubocop and devs about bulk insert 2023-05-12 10:30:47 +10:00
Jean-Baptiste Bellet
51d6fb81dd Fwd to request the restock_items input value when adjusting items qty 2023-05-11 22:58:44 +02:00
Jean-Baptiste Bellet
f679d8733e Pass the restock_items params to each methods and request call
+ update spec to test whether the restock item checkbox is checked or not.
2023-05-11 22:58:44 +02:00
Matt-Yorkley
b139087c5f Clone ExchangeVariant objects in bulk
An ExchangeVariant is a simple representation of a join table between Exchange and Variant. Previously this code was triggering an additional INSERT query for every variant added to the newly cloned exchange. Some exchanges have ~3000 variants! The code now creates them in bulk in a single INSERT statement. When cloning large order cycles this can improve performance by ~1000% or so.
2023-05-11 20:51:20 +01:00
Filipe
1bdb668cd3 Merge pull request #10769 from Matt-Yorkley/visible-line-items-query
Improve `Permissions::Order#visible_line_items` querying
2023-05-11 15:36:32 +01:00
filipefurtad0
d035d4bb87 Update all locales with the latest Transifex translations 2023-05-11 15:25:39 +01:00
Mohamed ABDELLANI
6771d2e7be test enterprise fees creation with tax category inheritance flag 2023-05-11 12:46:17 +01:00
Mohamed ABDELLANI
a22fe9f948 fix existing invalid enterprise fees 2023-05-11 12:46:17 +01:00
Maikel Linke
25b7f1749c Simplify error when tax rate can't be inherited
I changed the text to focus on the resolution: the user needs to choose
a tax category or a different calculator.

I associated the error to the model to prevent the attribute name from
being included in the error message. Alternatively, we could have
changed the name of the attribute to match the UI. But this error
affects the combination of two attributes, none of them is invalid on
its own.

I'm using Rails' default lazy lookup for error messages which results in
shorter code and a standard structure.

I also added a simple spec.
2023-05-11 12:46:17 +01:00
Mohamed ABDELLANI
89eb3a1967 fix existing tests 2023-05-11 12:46:17 +01:00
Mohamed ABDELLANI
7eca32e84f prevent saving the enterprise fee when a per order calculator is selected along with 'Inherit from product' 2023-05-11 12:46:17 +01:00
filipefurtad0
f5eb72c804 Adds sleep(1) 2023-05-11 11:29:24 +01:00
Konrad
2836751698 Merge pull request #10805 from jibees/10717-bo-orders-changing-customer-does-not-update-customer_id
Admin, Edit customer details for an order: when changing to another customer, update `customer_id` as well
2023-05-10 19:08:57 +02:00
Filipe
bf7a559a32 Merge pull request #10772 from Matt-Yorkley/view-caching
Locale-aware Fragment Caching
2023-05-10 11:18:08 +01:00
filipefurtad0
82f307ae61 Adds test case for logging out 2023-05-10 10:41:43 +01:00
Matt-Yorkley
d90653c682 Merge pull request #10793 from jibees/fix-webpack-configuration-use-the-default-one
Use the default webpack configuration for dev env
2023-05-10 10:09:28 +01:00
jibees
ca5300284c Merge pull request #10820 from Matt-Yorkley/js-dependencies
Remove indirect JS dependencies
2023-05-10 09:57:05 +02:00
Matt-Yorkley
406cb572ea Remove indirect JS dependencies 2023-05-10 09:27:00 +02:00
jibees
ca90b5cee2 Merge pull request #10810 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.122.0
Bump aws-sdk-s3 from 1.121.0 to 1.122.0
2023-05-10 09:23:44 +02:00
jibees
760860a06d Merge pull request #10811 from openfoodfoundation/dependabot/bundler/knapsack_pro-3.11.0
Bump knapsack_pro from 3.10.0 to 3.11.0
2023-05-10 09:21:46 +02:00
jibees
189207f751 Merge pull request #10822 from openfoodfoundation/dependabot/bundler/debug-1.8.0
Bump debug from 1.7.2 to 1.8.0
2023-05-10 09:20:34 +02:00
Matt-Yorkley
1bd9182cea Update menu cache blocks 2023-05-09 16:46:09 +01:00
David Cook
04a5c7452e Remove admin_style_v2 description
Partially reverts 9a1b1498bf
2023-05-09 21:26:47 +10:00
David Cook
e29df5ea8f Remove unused secondary class
This partially reverts 97c3aaebb2 because it referred to the new feature toggle which has been removed.
2023-05-09 21:26:47 +10:00
David Cook
3ec659d82b Revert pull #10025
[WIP 🚧 ] Admin, behind feature toggle admin_style_v2: adjust some colors

This reverts commits 60f0a58508ce77666fa96c73d76dc0620f23daaf~1..09bcc772ff089f911a56bb
2023-05-09 21:26:47 +10:00
David Cook
be70cd7893 Revert pull #10054
[WIP 🚧 ] Admin/Orders, behind feature toggle admin_style_v2: adjust colors

This reverts commits 5cab0f7f3d495daaeb97fd786208a24355b630fe..4ef5609b0eb08fe7e48803de166ae3e979103c1b
2023-05-09 21:26:47 +10:00
David Cook
0ff540e1e3 Revert pull #10080
[WIP 🚧 ] Admin - Order edition, behind feature toggle admin_style_v2: adjust colors

This reverts commits faf106b2824f248812f523c10b688bd9b254dc14..74b618230ff736ac7929246e2c83ed95067a4dd0
2023-05-09 21:25:29 +10:00
David Cook
c21ff075de Revert pull #10131
[WIP 🚧 ] /admin/order_cycles behind feature toggle admin_style_v2

This reverts commits ccfc632149f062fca546784c7c2f14708d91a08e~1..e403a2c174def34cfa115eab038c86923482bfbf
2023-05-09 21:24:25 +10:00
dependabot[bot]
969d0b6687 Bump debug from 1.7.2 to 1.8.0
Bumps [debug](https://github.com/ruby/debug) from 1.7.2 to 1.8.0.
- [Release notes](https://github.com/ruby/debug/releases)
- [Commits](https://github.com/ruby/debug/compare/v1.7.2...v1.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-09 10:03:20 +00:00
Maikel Linke
3c6f55732d Add dummy product type to DFC export 2023-05-09 17:01:00 +10:00
Maikel Linke
b2e8af0cd1 Add stock to DFC Offer as well 2023-05-09 16:51:26 +10:00
Maikel Linke
c81230d334 Add old DFC API name for prototype compatibility 2023-05-09 16:51:26 +10:00
Maikel Linke
54137067dd Export variant's display_name if present
The `#name` method is simply delegated to a variant's product.
2023-05-09 16:51:26 +10:00
Maikel Linke
0c5ab783ca Update DFC API route to reflect Connector version 2023-05-09 16:51:26 +10:00
Maikel Linke
80edc44ef5 Replace SuppliedProductSerializer with DFC Connector
And remove the BaseSerializer because this was the last serializer.
2023-05-09 16:51:26 +10:00
Maikel Linke
0b808a4b1e Add product quantity to DFC export 2023-05-09 16:51:26 +10:00
Maikel Linke
1e23cf1c92 Replace EnterpriseSerializer with DFC Connector
And move same test coverage to a new builder spec.
2023-05-09 16:51:26 +10:00
Maikel Linke
683ad0f5b9 Replace PersonSerializer with DFC Connector
And the address serializer was just an empty placeholder.
2023-05-09 16:51:26 +10:00
Maikel Linke
c60d622818 List catalog items with DFC Connector 2023-05-09 16:51:25 +10:00
Maikel Linke
7f8ce08d4e Include DFC Offer in the export with valid id 2023-05-09 16:51:25 +10:00
Maikel Linke
78cf3b5a1d Serialize DFC catalog item with DFC Connector
This is work in progress. The DFC Connector uses a more recent DFC
version and other endpoints still use the old serializers. We need to
update those endpoints as well and update the version number in the API
URL.
2023-05-09 16:51:25 +10:00
Maikel Linke
5187201796 Add DFC vocabularies
- Add a script for downloading updated files.
- Add a service for easier loading of vocab files.
2023-05-09 16:51:25 +10:00
Maikel Linke
352c350840 Add gem datafoodconsortium-connector
We hope that replacing our own JSON generation with this gem will reduce
maintenance. Same for parsing DFC input.
2023-05-09 16:51:25 +10:00
David Cook
8fe20ecfbe Merge pull request #10794 from openfoodfoundation/dependabot/npm_and_yarn/babel/core-7.21.8
Bump @babel/core from 7.21.5 to 7.21.8
2023-05-09 16:37:42 +10:00
Maikel
83141ec05c Merge pull request #10818 from mkllnk/schema-order
Fixup order of statements in db schema
2023-05-09 14:21:03 +10:00
Matt-Yorkley
4b707b9310 Extract locale file digest logic to a separate class and add tests 2023-05-08 14:09:00 +01:00
Matt-Yorkley
1c277e5547 Cache some html fragments 2023-05-08 14:07:50 +01:00
Matt-Yorkley
be48a6c295 Implement cache_with_locale helper for fragment caching with locales 2023-05-08 14:07:50 +01:00
Matt-Yorkley
11f45dc2f8 Give ContentConfig an updated_at attribute and a usable cache_key 2023-05-08 14:07:50 +01:00
Konrad
4303cabe56 Merge pull request #10792 from mkllnk/feature-deletion
Remove unknown (deleted) feature toggles at boot
2023-05-08 14:49:42 +02:00
Maikel Linke
f1f3ecc4f7 Fixup order of statements in db schema
It looks like the resolution of a merge conflict introduced the wrong
ordering of schema statements. Rails wants to sort tables alphabetically
and running `./bin/rails db:migrate` on a fresh database altered the
schema.rb file. This should be fixed here.

Rails also omits the default setting of `precision: 6` since Rails 7.
The vouchers feature was developed during the upgrade to Rails 7.
2023-05-08 14:37:33 +10:00
Maikel
ad033e8d44 Merge pull request #10767 from Matt-Yorkley/remove-session-cookie-upgrader
Remove SessionCookieUpgrader from middleware
2023-05-08 12:50:42 +10:00
Gaetan Craig-Riou
f25a3650bd Merge pull request #10802 from openfoodfoundation/dependabot/bundler/ddtrace-1.11.1
Bump ddtrace from 1.11.0 to 1.11.1
2023-05-08 11:45:07 +10:00
Konrad
e4d8dd9f87 Merge pull request #10780 from dacook/enable-prettier-css
Enable prettier for Admin SCSS
2023-05-06 18:24:58 +02:00
Matt-Yorkley
1995a44848 Improve eager-loading on admin products page adn resolve issue with serializer
For some reason eager-loaded data isn't passed to nested serializers when using associations. Defining the association as a method and passing in some optional paramaters resolves the issue.

This reduces queries run by the controller action by around 75%, as well as the response times.
2023-05-06 17:15:27 +01:00
dependabot[bot]
b29d38f3fb Bump knapsack_pro from 3.10.0 to 3.11.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 3.10.0 to 3.11.0.
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v3.10.0...v3.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-05 10:01:08 +00:00
dependabot[bot]
1c52fe1648 Bump aws-sdk-s3 from 1.121.0 to 1.122.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.121.0 to 1.122.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-05 09:59:02 +00:00
David Cook
a170b93cc1 Simplify further
Co-authored-by: Maikel <maikel@email.org.au>
2023-05-05 15:34:23 +10:00
Maikel Linke
2a943ecafb Spec setting up all feature toggle names 2023-05-05 11:09:10 +10:00
Jean-Baptiste Bellet
3a1579104f Submit customer_id as params when updating customer details on order 2023-05-04 16:40:58 +02:00
jibees
ec4c7b79bf Merge pull request #10803 from openfoodfoundation/dependabot/bundler/rspec-rails-6.0.2
Bump rspec-rails from 6.0.1 to 6.0.2
2023-05-04 13:55:37 +02:00
dependabot[bot]
9f12295a89 Bump rspec-rails from 6.0.1 to 6.0.2
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/rspec/rspec-rails/releases)
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v6.0.1...v6.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-04 09:58:54 +00:00
dependabot[bot]
46fd6b1a3a Bump ddtrace from 1.11.0 to 1.11.1
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v1.11.0...v1.11.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-04 09:58:25 +00:00
Jean-Baptiste Bellet
8a5608435c Update all locales with the latest Transifex translations 2023-05-03 17:30:48 +02:00
Konrad
d02d0b8847 Merge pull request #10763 from openfoodfoundation/dependabot/bundler/ddtrace-1.11.0
Bump ddtrace from 1.10.1 to 1.11.0
2023-05-03 17:27:13 +02:00
Konrad
4b6ef7796e Merge pull request #10762 from mkllnk/report-encoding
Preserve encoding of stored reports
2023-05-03 17:08:44 +02:00
Konrad
b60a6fbd05 Merge pull request #10329 from thejwuscript/9861-improve-input-validation
Improve input validation on new and edit Payment Method pages
2023-05-03 16:11:21 +02:00
jibees
2e267091f6 Merge pull request #10795 from openfoodfoundation/dependabot/bundler/knapsack_pro-3.10.0
Bump knapsack_pro from 3.9.0 to 3.10.0
2023-05-03 14:31:11 +02:00
dependabot[bot]
eb3fe1b7a5 Bump knapsack_pro from 3.9.0 to 3.10.0
Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 3.9.0 to 3.10.0.
- [Release notes](https://github.com/KnapsackPro/knapsack_pro-ruby/releases)
- [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v3.9.0...v3.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-03 10:06:11 +00:00
dependabot[bot]
61f34a23a7 Bump @babel/core from 7.21.5 to 7.21.8
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.21.5 to 7.21.8.
- [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.21.8/packages/babel-core)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-03 09:57:57 +00:00
Jean-Baptiste Bellet
2d7356f2bb Use the default webpack configuration for dev env
We used to override the output filename but this was a misunderstanding of an error (due to webpacke(r) incompatibles versions)

https://medium.com/@web_developer/hash-vs-chunkhash-vs-contenthash-e94d38a32208

https://github.com/webpack/webpack.js.org/issues/2096

Context: https://github.com/openfoodfoundation/openfoodnetwork/pull/10631#pullrequestreview-1410083331
2023-05-03 10:10:17 +02:00
jibees
62c2d9a290 Merge pull request #10782 from openfoodfoundation/dependabot/bundler/sidekiq-7.1.0
Bump sidekiq from 7.0.9 to 7.1.0
2023-05-03 09:56:07 +02:00
jibees
a329aab007 Merge pull request #10774 from openfoodfoundation/dependabot/npm_and_yarn/babel/core-7.21.5
Bump @babel/core and @babel/preset-env from 7.21.4 to 7.21.5
2023-05-03 09:26:10 +02:00
Maikel Linke
e24198fe85 Bump @babel/preset-env from 7.21.4 to 7.21.5
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.21.4 to 7.21.5.
- [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.21.5/packages/babel-preset-env)

I did this manually:

```
$ yarn upgrade "@babel/preset-env"
yarn upgrade v1.22.19
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " > stimulus_reflex@3.5.0-rc2" has unmet peer dependency "@hotwired/stimulus@>= 3.0".
[4/4] Rebuilding all packages...
success Saved lockfile.
success Saved 35 new dependencies.
info Direct dependencies
└─ @babel/preset-env@7.21.5
info All dependencies
├─ @babel/code-frame@7.21.4
├─ @babel/helper-builder-binary-assignment-operator-visitor@7.21.5
├─ @babel/helper-function-name@7.21.0
├─ @babel/helper-module-imports@7.21.4
├─ @babel/helper-replace-supers@7.21.5
├─ @babel/helper-string-parser@7.21.5
├─ @babel/helper-wrap-function@7.20.5
├─ @babel/highlight@7.18.6
├─ @babel/parser@7.21.5
├─ @babel/plugin-transform-arrow-functions@7.21.5
├─ @babel/plugin-transform-computed-properties@7.21.5
├─ @babel/plugin-transform-for-of@7.21.5
├─ @babel/plugin-transform-modules-commonjs@7.21.5
├─ @babel/plugin-transform-regenerator@7.21.5
├─ @babel/plugin-transform-unicode-escapes@7.21.5
├─ @babel/preset-env@7.21.5
├─ @babel/regjsgen@0.8.0
├─ @babel/template@7.20.7
├─ @babel/traverse@7.21.5
├─ @jridgewell/resolve-uri@3.1.0
├─ color-convert@1.9.3
├─ escape-string-regexp@1.0.5
├─ is-core-module@2.12.0
├─ js-tokens@4.0.0
├─ jsesc@2.5.2
├─ ms@2.1.2
├─ regenerate-unicode-properties@10.1.0
├─ regenerator-runtime@0.13.11
├─ regexpu-core@5.3.2
├─ regjsparser@0.9.1
├─ to-fast-properties@2.0.0
├─ unicode-canonical-property-names-ecmascript@2.0.0
├─ unicode-match-property-ecmascript@2.0.0
├─ unicode-match-property-value-ecmascript@2.1.0
└─ unicode-property-aliases-ecmascript@2.1.0
Done in 16.54s.
```
2023-05-03 15:33:57 +10:00
Maikel Linke
b30e962cdd Remove unknown (deleted) feature toggles at boot 2023-05-03 15:20:26 +10:00
Maikel Linke
5f1f717974 Spec FeatureToggle.setup! 2023-05-03 15:02:08 +10:00
Maikel Linke
b6f2fe0e92 Avoid defining modules in specs
We avoid some indent and show how code outside of the module works.
2023-05-03 14:58:59 +10:00
dependabot[bot]
a9bf7a2498 Bump @babel/core from 7.21.4 to 7.21.5
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.21.4 to 7.21.5.
- [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.21.5/packages/babel-core)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-03 12:18:41 +10:00
David Cook
e11518938f Prettify admin components scss
Largely whitespace, but some other updates too, including uppercase colour codes and standardising numbers.

Best viewed with whitespace ignored.
2023-05-03 12:10:58 +10:00
David Cook
c4dc5e0718 Prettier: use double quotes by default
Unfortunately Prettier won't let you do one rule at a time (https://stackoverflow.com/q/63813336/421243), so I'll break it into file chunks.
2023-05-03 12:10:58 +10:00
David Cook
c67d61a376 Don't ignore admin scss for prettying
...and watch the changes flow in!
2023-05-03 12:09:22 +10:00
David Cook
0b4556e72b Allow line length up to 100char
Same as we have for Ruby code: https://github.com/openfoodfoundation/openfoodnetwork/blob/master/.rubocop_styleguide.yml#L78-L80

This will avoid unnecessary reformatting.
2023-05-03 12:09:22 +10:00
David Cook
8c7f92d42e Explicitly ignore each css folder
With the goal to progressively un-ignore them.
2023-05-03 12:09:22 +10:00
Konrad
21a0017352 Merge pull request #10756 from jibees/10743-admin-add-unregistered-users-modal-some-html-is-rendered-as-plain-text-instead-of-being
Admin, Add unregistered user: Fix a reflex-morph issue that lead to a HTML escaping error
2023-05-02 19:28:48 +02:00
Konrad
d115c4ce2c Merge pull request #10733 from jibees/9782-shops-list-overlapping-and-overflowing-texts-on-mobile2
Shops list: fix some overlapping and overflowing texts on mobile
2023-05-02 12:15:19 +02:00
dependabot[bot]
b05d46c3e3 Bump sidekiq from 7.0.9 to 7.1.0
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.0.9 to 7.1.0.
- [Release notes](https://github.com/sidekiq/sidekiq/releases)
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.0.9...v7.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-02 09:57:28 +00:00
jibees
aae0fc59fb Merge pull request #10768 from Matt-Yorkley/query-logs
Improve query logging in development
2023-05-02 11:44:19 +02:00
Gaetan Craig-Riou
d1f7cc1b2a Merge pull request #10764 from Matt-Yorkley/remove-data-hooks
Remove `data-hook` attributes
2023-05-02 16:35:46 +10:00
Gaetan Craig-Riou
964481f188 Merge pull request #10765 from Matt-Yorkley/update-webpack-packages
Update webpack packages
2023-05-02 15:19:37 +10:00
Maikel
9bca22ae3b Merge pull request #10775 from openfoodfoundation/dependabot/bundler/mini_portile2-2.8.2
Bump mini_portile2 from 2.8.1 to 2.8.2
2023-05-02 11:54:37 +10:00
dependabot[bot]
064c843c90 Bump mini_portile2 from 2.8.1 to 2.8.2
Bumps [mini_portile2](https://github.com/flavorjones/mini_portile) from 2.8.1 to 2.8.2.
- [Release notes](https://github.com/flavorjones/mini_portile/releases)
- [Changelog](https://github.com/flavorjones/mini_portile/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flavorjones/mini_portile/compare/v2.8.1...v2.8.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 10:02:13 +00:00
Maikel
482d438ec9 Merge pull request #10766 from filipefurtad0/remove_asertion_on_js_element_loading_orders
Removes assertions on transient JS element - "Loading orders"
2023-05-01 13:36:44 +10:00
Maikel Linke
9f0a66659a Delete now unused SessionCookieUpgrader 2023-05-01 13:35:52 +10:00
Konrad
1176ea2a5f Merge pull request #9941 from basilawwad/conditionally-send-cancellation-email
Conditionally send cancellation email when cancelling order.
2023-04-28 21:54:42 +02:00
Matt-Yorkley
dfc651ed2c Convert Permissions::Order#visible_line_items to a relation with or query
This change looks innocuous but the result of converting this into a nice relation instead of two queries stuck together with the pipe operator (|) can make a huge difference when chaining this into subqueries. The result set is ultimately the same, but the queries can be built without first returning all the ids and then sticking those ids in an array.
2023-04-28 19:13:22 +01:00
Matt-Yorkley
f42a9e3a66 Add query_count gem in development
A very simple gem that counts the total number of queries triggered by each request and displays a little number in the log. Nice.
2023-04-28 15:02:02 +01:00
Matt-Yorkley
8d9a8d8db5 Enable verbose query logs in development
This is a new feature in Rails 7. Whenever a query is triggered it not only show you the query (as before), but also tells you (directly in the logs) exactly which line of code was responsible for triggering the query. It's unbelievably useful for debugging and performance work.
2023-04-28 14:35:16 +01:00
Matt-Yorkley
84df1bfeab Remove SessionCookieUpgrader from middleware
This was a transitional bit of code to allow us to rename our session cookies without killing active sessions and logging users out. It's done it's job, the transition is finished, and it isn't doing anything useful now. It can be removed from the middleware stack.
2023-04-28 14:01:15 +01:00
Matt-Yorkley
b9431cd121 Remove data-hook attributes 2023-04-28 13:03:13 +01:00
filipefurtad0
74d18fb6ff Removes assertions on transient JS element 2023-04-28 12:48:59 +01:00
Matt-Yorkley
5e26e49764 Update webpack packages
`webpack-cli` is a dependency of `@rails/webpacker` but needs to be at version 3.x, we can just cut it from the explicit dependecy list and the correct version will be installed.

`webpack-dev-server` version 3.x corresponds (unhelpfully) to `webpacker` 4.x, and needs to be left that way. Dependabot tries to change it occasionally, but it should not be updated to 4.x
2023-04-28 12:48:21 +01:00
dependabot[bot]
c9dada4215 Bump ddtrace from 1.10.1 to 1.11.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 1.10.1 to 1.11.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v1.10.1...v1.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-28 10:00:28 +00:00
Maikel Linke
630169f8bb Preserve encoding of stored reports
Active Storage reads stored strings as ASCII and that can clash with
Rails' default UTF-8 encoding when special characters are present.
2023-04-28 16:38:06 +10:00
Gaetan Craig-Riou
152af5e105 Merge pull request #10751 from mkllnk/mail-config
Remove unused feature to intercept emails
2023-04-28 16:28:41 +10:00
David Cook
918425fd93 Remove customised error message
We're now handling these values on the frontend, so can keep this simple.

fixes up:
 Add numericality validation for *
 Add translation for Active Record error message
2023-04-28 14:02:12 +10:00
David Cook
a46eef291c Remove localized number logic from calculators
The browser is now responsible for dealing with the decimal separator, for all numeric preferences (as input[type=number]; see Spree::Admin::BaseHelper::preference_field_tag). Calculators are the only place that numeric preferences are used.

It will enforce that only one comma or dot (depending on user's locale) is entered, thus avoiding any ambiguity, and mis-interpretation (eg 100,001 could be interpreted as more than 100 thousand or 100 with a decimal place).
2023-04-28 13:54:16 +10:00
David Cook
d2fbb0bde2 Update translations
js: admin: orders: order_state: confirmation
2023-04-27 14:49:28 +10:00
David Cook
c42dfdde10 Merge pull request #10748 from openfoodfoundation/dependabot/bundler/view_component-3.0.0
Bump view_component from 2.82.0 to 3.0.0
2023-04-27 14:46:09 +10:00
Jean-Baptiste Bellet
959dcb82e1 Morph the form itself instead of morphing a parent DOM element
This seems to avoid HTML parsing error
2023-04-26 17:41:28 +02:00
jibees
51d5817665 Merge pull request #10755 from openfoodfoundation/dependabot/bundler/i18n-1.13.0
Bump i18n from 1.12.0 to 1.13.0
2023-04-26 15:45:59 +02:00
jibees
a8384b3155 Merge pull request #10754 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.2.7
Bump @floating-ui/dom from 1.2.6 to 1.2.7
2023-04-26 15:44:04 +02:00
Konrad
394bfd00d8 Merge pull request #10586 from jibees/10563-allow-custom-url-on-logo-click
White Label: can link an URL to the white label logo
2023-04-26 13:52:10 +02:00
dependabot[bot]
bda1a527d3 Bump i18n from 1.12.0 to 1.13.0
Bumps [i18n](https://github.com/ruby-i18n/i18n) from 1.12.0 to 1.13.0.
- [Release notes](https://github.com/ruby-i18n/i18n/releases)
- [Changelog](https://github.com/ruby-i18n/i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ruby-i18n/i18n/compare/v1.12.0...v1.13.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-26 09:57:48 +00:00
dependabot[bot]
77bd832dd6 Bump @floating-ui/dom from 1.2.6 to 1.2.7
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.2.6 to 1.2.7.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.7/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-26 09:57:09 +00:00
Jean-Baptiste Bellet
b1de28eeea When there is a white_label_logo_link pref. use it!
+ update spec as well

 + use an an helper to get the main logo link for a shopfront

Co-Authored-By: Maikel <maikel@email.org.au>
2023-04-26 11:04:47 +02:00
Jean-Baptiste Bellet
679fcc0114 When removing the logo, also delete white_label_logo_link preference
since it has no sense without the logo
2023-04-26 11:04:47 +02:00
Jean-Baptiste Bellet
35778ecf1d If enterprise has a white_label_logo attached, then can edit its link 2023-04-26 11:04:47 +02:00
Jean-Baptiste Bellet
70a6e9f44b Add a white_label_logo_link attribute to enterprise model 2023-04-26 11:04:47 +02:00
Jean-Baptiste Bellet
30ba29382a Avoid name collision by renaming some classes with a prefix flex-
This classes should only be used with `.flex`
2023-04-26 09:52:24 +02:00
Jean-Baptiste Bellet
9584205a8e Use .flex class in utilities.scss file
No need to have multiple definition as already included
2023-04-26 09:51:28 +02:00
Jean-Baptiste Bellet
3644dbc0fd Small fix of a prettier formatter error 2023-04-26 09:51:17 +02:00
Jean-Baptiste Bellet
05a7276c9c Create an utilities.scss file that contains some utility classes
Finally Tailwind is coming? ;)
2023-04-26 09:47:23 +02:00
David Cook
1fc60d498a Merge pull request #10746 from openfoodfoundation/dependabot/bundler/rswag-specs-2.9.0
Bump rswag-specs from 2.8.0 to 2.9.0
2023-04-26 14:08:30 +10:00
Maikel Linke
dae8703b02 Remove unused feature to intercept emails
This option came from Spree and we never used it. The config input field
is disabled in the admin interface and I checked our managed databases.

I don't think that we will want this feature in the future either.
Staging sends unmodified emails which is more realistic and we haven't
had a use case to intercept those emails. There's still the BCC option
if we need additional access.
2023-04-26 13:50:31 +10:00
Maikel
3078c599f9 Merge pull request #10747 from openfoodfoundation/dependabot/bundler/rswag-ui-2.9.0
Bump rswag-ui from 2.8.0 to 2.9.0
2023-04-26 12:04:09 +10:00
dependabot[bot]
5d91ac217d Bump rswag-specs from 2.8.0 to 2.9.0
Bumps [rswag-specs](https://github.com/rswag/rswag) from 2.8.0 to 2.9.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.8.0...2.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-26 02:03:53 +00:00
Maikel
f2edb6d404 Merge pull request #10745 from openfoodfoundation/dependabot/bundler/rswag-api-2.9.0
Bump rswag-api from 2.8.0 to 2.9.0
2023-04-26 12:02:38 +10:00
David Cook
7cd1b5d5db Update link
The old project was closed in favour of a new one.
2023-04-26 09:44:58 +10:00
dependabot[bot]
ad82f66173 Bump rswag-api from 2.8.0 to 2.9.0
Bumps [rswag-api](https://github.com/rswag/rswag) from 2.8.0 to 2.9.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.8.0...2.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-25 10:10:17 +00:00
dependabot[bot]
62bfa9e04c Bump view_component from 2.82.0 to 3.0.0
Bumps [view_component](https://github.com/viewcomponent/view_component) from 2.82.0 to 3.0.0.
- [Release notes](https://github.com/viewcomponent/view_component/releases)
- [Changelog](https://github.com/ViewComponent/view_component/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/viewcomponent/view_component/compare/v2.82.0...v3.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-25 09:38:51 +00:00
dependabot[bot]
28c9d72342 Bump rswag-ui from 2.8.0 to 2.9.0
Bumps [rswag-ui](https://github.com/rswag/rswag) from 2.8.0 to 2.9.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.8.0...2.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-25 09:38:22 +00:00
jibees
7317d6ca34 Merge pull request #10742 from filipefurtad0/fix_broken_build
Considers recent changes on login test helpers
2023-04-25 11:36:56 +02:00
filipefurtad0
edb8da4b4d Considers recent changes on login test helpers
PR #10696 introduced changes on the login helpers which were not considered, when merging a recent PR; This broke the build
2023-04-24 18:35:10 +01:00
Konrad
00d5bd9165 Merge pull request #10684 from MadisonBowron/master
Fix admin product variants form to close issues #10579 & Wishlist: 430
2023-04-24 18:18:01 +02:00
Jean-Baptiste Bellet
1730c9eb60 Fix one warning: Modal window with text has been opened, ...
```
Modal window with text `An invoice for this order will be sent to the customer. Are you sure you want to continue?` has been opened, but you didn't wrap your code into (`accept_prompt` | `dismiss_prompt` | `accept_confirm` | `dismiss_confirm` | `accept_alert`), accepting by default
```
2023-04-24 15:18:35 +02:00
Jean-Baptiste Bellet
5b9815f4a3 Test that restock has been called or not, depending on checkbox checked 2023-04-24 15:03:14 +02:00
jibees
445eb45ad7 Merge pull request #10737 from openfoodfoundation/dependabot/npm_and_yarn/prettier-2.8.8
Bump prettier from 2.8.7 to 2.8.8
2023-04-24 14:43:20 +02:00
jibees
8770471ada Merge pull request #10738 from openfoodfoundation/dependabot/npm_and_yarn/karma-6.4.2
Bump karma from 6.4.1 to 6.4.2
2023-04-24 14:43:07 +02:00
dependabot[bot]
6d45940ca4 Bump karma from 6.4.1 to 6.4.2
Bumps [karma](https://github.com/karma-runner/karma) from 6.4.1 to 6.4.2.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v6.4.1...v6.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 09:58:22 +00:00
dependabot[bot]
69383ac621 Bump prettier from 2.8.7 to 2.8.8
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.7 to 2.8.8.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.7...2.8.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 09:58:05 +00:00
Maikel
945cb84127 Merge pull request #10683 from filipefurtad0/update-the-build-env-to-ubuntu-2204
Updates build environment to Ubuntu 22.04
2023-04-24 15:27:05 +10:00
Maikel
343a2db1bf Merge pull request #10722 from mkllnk/rubocop-autocorrect-script
Add script for bulk autocorrect with Rubocop
2023-04-24 10:58:43 +10:00
Maikel Linke
de8f5e13b3 Explain gotcha in case it breaks one day 2023-04-24 09:39:21 +10:00
Konrad
75b5d1fd6f Merge pull request #10712 from jibees/6133-backoffice-orders-endless-spinner-and-error-500-after-skipping-oc-selector
Admin, create new order: distributor and order cycle are now mandatory on step 1 (aka the set_distribution step)
2023-04-22 16:04:15 +02:00
Konrad
0c1606e50c Merge pull request #10728 from jibees/10718-missing-translation-confirmation-order-state
Admin, `/orders`: adds translation for order in `confirmation` state
2023-04-22 11:56:23 +02:00
jibees
fa05554f15 Merge pull request #10734 from openfoodfoundation/dependabot/npm_and_yarn/karma-chrome-launcher-3.2.0
Bump karma-chrome-launcher from 3.1.1 to 3.2.0
2023-04-21 14:13:19 +02:00
Jean-Baptiste Bellet
2cc509de15 Do not check Metrics/BlockLength for shared_examples_for block
They can contains a lot of `it` tests
2023-04-21 11:59:24 +02:00
dependabot[bot]
41afad73e4 Bump karma-chrome-launcher from 3.1.1 to 3.2.0
Bumps [karma-chrome-launcher](https://github.com/karma-runner/karma-chrome-launcher) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/karma-runner/karma-chrome-launcher/releases)
- [Changelog](https://github.com/karma-runner/karma-chrome-launcher/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma-chrome-launcher/compare/v3.1.1...v3.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-21 09:57:29 +00:00
Jean-Baptiste Bellet
b17b25516f Use a UTF-8 character 2023-04-21 10:37:20 +02:00
Jean-Baptiste Bellet
8444fca19a Fix syntax error 2023-04-21 10:36:47 +02:00
Jean-Baptiste Bellet
18d90114fe Be more responsive: use flex, ellipsis, less columns 2023-04-21 10:36:21 +02:00
Gaetan Craig-Riou
2f17a02974 Merge pull request #10726 from mkllnk/spec-email-helper
Remove useless email test setup
2023-04-21 15:43:19 +10:00
Gaetan Craig-Riou
135bc7e2f8 Removing env variable $runs_on
Seting "env" under "jobs" doesn't work it gets picked up as a job. I moved
runs_on to the top level env. but I couldn't fine a way to get it to work.
I tried all syntax I could think of: $runs_on, ${{ runs_on }}  env.runs_on,
${{ env.runs_on }} and their capitalized versions.
2023-04-21 15:14:20 +10:00
Gaetan Craig-Riou
3810d79cad Merge pull request #10695 from macanudo527/rename_inversables
Rename Inversable Method Names
2023-04-21 11:38:58 +10:00
Maikel Linke
4960402643 Update translations 2023-04-21 09:45:45 +10:00
jibees
3557c10cd6 Merge pull request #10730 from openfoodfoundation/dependabot/bundler/stringex-2.8.6
Bump stringex from 2.8.5 to 2.8.6
2023-04-20 15:50:19 +02:00
jibees
45dd421f1f Merge pull request #10729 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.121.0
Bump aws-sdk-s3 from 1.120.1 to 1.121.0
2023-04-20 15:48:46 +02:00
Jean-Baptiste Bellet
81606e841a Canceling an order: clicking on cancel btn or cancel action in dropdown 2023-04-20 14:38:59 +02:00
basilawwad
e633670e01 Use a shared_examples for the order cancellation tests 2023-04-20 14:38:59 +02:00
Filipe
11653c9430 Merge pull request #10575 from jibees/10559-allow-upload-of-custom-header-logo
White Label: can upload a custom header logo
2023-04-20 13:27:52 +01:00
dependabot[bot]
d068094044 Bump stringex from 2.8.5 to 2.8.6
Bumps [stringex](https://github.com/rsl/stringex) from 2.8.5 to 2.8.6.
- [Release notes](https://github.com/rsl/stringex/releases)
- [Commits](https://github.com/rsl/stringex/compare/v2.8.5...v2.8.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-20 10:06:33 +00:00
dependabot[bot]
b892bf726e Bump aws-sdk-s3 from 1.120.1 to 1.121.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.120.1 to 1.121.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-20 10:00:05 +00:00
Jean-Baptiste Bellet
76357789a3 Avoid line break between state wording and its little colored circle 2023-04-20 09:09:29 +02:00
Jean-Baptiste Bellet
5dd7246b85 Rename confirm to use confirmation
`confirmation` is the state used by order model
2023-04-20 09:07:01 +02:00
Jean-Baptiste Bellet
ba45dd84dd Solves rubocop linter errors 2023-04-20 08:46:19 +02:00
Jean-Baptiste Bellet
92e2a83e0e Use Rails7 command for image variant syntax 2023-04-20 08:45:03 +02:00
Jean-Baptiste Bellet
f42f513f8c Display white_label_logo image when hide_ofn_navigation is set to true
for both desktop and mobile view
2023-04-20 08:45:03 +02:00
Jean-Baptiste Bellet
54342254b6 Do not show white label logo is hide_ofn_navigation is not checked
They are both strongly linked
2023-04-20 08:45:03 +02:00
Jean-Baptiste Bellet
470761da86 Add a simple CheckboxDisplay controller that show/hide content
depending on the checkbox state (checked or not)
2023-04-20 08:45:03 +02:00
Jean-Baptiste Bellet
6fdf9fa038 Add/Remove white label logo in enterprise preferences panel 2023-04-20 08:45:03 +02:00
Jean-Baptiste Bellet
bbec01a9cb Create a concern for reflexes that handle Enterprise update 2023-04-20 08:45:03 +02:00
Jean-Baptiste Bellet
e3001cc8c4 Add white_label_logo to enterprise model as attachment
Co-Authored-By: Maikel <maikel@email.org.au>
2023-04-20 08:45:03 +02:00
Jean-Baptiste Bellet
ad0d0e393e ConfirmModalComponent is ready to receive data-reflex
And not only `data-action`
2023-04-20 08:45:03 +02:00
Jean-Baptiste Bellet
2690ff5eb5 Add comment, which links these two files together 2023-04-20 08:45:03 +02:00
jibees
2594382488 Merge pull request #10723 from openfoodfoundation/dependabot/bundler/sidekiq-7.0.9
Bump sidekiq from 7.0.8 to 7.0.9
2023-04-20 08:31:46 +02:00
Maikel Linke
9b3cfe80ff Remove useless clearing of test emails
They are cleared by the test environment anyway.
2023-04-20 13:35:40 +10:00
Maikel Linke
04d33adaf2 Remove duplicate declaration of test mail delivery
Our test environment sets the mail delivery method already. We don't
have to do it in individual spec files.
2023-04-20 13:28:59 +10:00
Maikel Linke
915bd19d7b Remove useless email test setup
We always deliver emails these days.
2023-04-20 12:18:04 +10:00
Maikel Linke
9998025687 Remove useless test header setup for emails
Once upon a time we needed a helper to set the `from` header of emails.
This is now set in the ApplicationMailer and not necessary any more.
2023-04-20 12:15:34 +10:00
Maikel Linke
1955a6719c Fix commit message formatting
Git needs a blank line between the summary and the longer description.
And `echo` doesn't interpret `\n` by default.
2023-04-20 11:19:32 +10:00
Maikel Linke
f71e5ee43c Limit number of rubocop autocorrect runs
The typical use case is to create a small number of commits for a pull
request to ease the review. And you can still run it for all cops with
`-n 999` or `-n -0`.
2023-04-20 11:19:32 +10:00
Maikel Linke
0ac2358f2c Regenerate Rubocop's TODO file without timestamp 2023-04-20 10:34:35 +10:00
dependabot[bot]
946b69242c Bump sidekiq from 7.0.8 to 7.0.9
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.0.8 to 7.0.9.
- [Release notes](https://github.com/sidekiq/sidekiq/releases)
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.0.8...v7.0.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-19 09:58:13 +00:00
Jean-Baptiste Bellet
a27b64a66b Add confirmation state translation 2023-04-19 11:32:51 +02:00
Jean-Baptiste Bellet
0f54d3950d Save can have a context: simplify then 2023-04-19 10:15:35 +02:00
Jean-Baptiste Bellet
7e306693a8 Use Rails standard naming: same name for the route and the method 2023-04-19 10:15:35 +02:00
Maikel Linke
213fb42a05 Safely autocorrect Gemspec/RequireMFA
Inspecting 1404 files
.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................W.....................W....................................W...........................W.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

engines/catalog/catalog.gemspec:7:1: W: [Corrected] Gemspec/RequireMFA: metadata['rubygems_mfa_required'] must be set to 'true'.
Gem::Specification.new do |s| ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/catalog/catalog.gemspec:14:1: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
s.metadata['rubygems_mfa_required'] = 'true'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/dfc_provider/dfc_provider.gemspec:9:1: W: [Corrected] Gemspec/RequireMFA: metadata['rubygems_mfa_required'] must be set to 'true'.
Gem::Specification.new do |spec| ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/dfc_provider/dfc_provider.gemspec:21:1: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
spec.metadata['rubygems_mfa_required'] = 'true'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/order_management/order_management.gemspec:7:1: W: [Corrected] Gemspec/RequireMFA: metadata['rubygems_mfa_required'] must be set to 'true'.
Gem::Specification.new do |s| ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/order_management/order_management.gemspec:14:1: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
s.metadata['rubygems_mfa_required'] = 'true'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/web/web.gemspec:7:1: W: [Corrected] Gemspec/RequireMFA: metadata['rubygems_mfa_required'] must be set to 'true'.
Gem::Specification.new do |s| ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/web/web.gemspec:14:1: C: [Corrected] Layout/IndentationConsistency: Inconsistent indentation detected.
s.metadata['rubygems_mfa_required'] = 'true'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1404 files inspected, 8 offenses detected, 8 offenses corrected
2023-04-19 15:35:30 +10:00
Maikel Linke
bde46fa1e9 Safely autocorrect Gemspec/DeprecatedAttributeAssignment
Inspecting 1404 files
.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................W.....................W....................................W...........................W.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

engines/catalog/catalog.gemspec:14:3: W: [Corrected] Gemspec/DeprecatedAttributeAssignment: Do not set test_files in gemspec.
  s.test_files = Dir["test/**/*"]
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/dfc_provider/dfc_provider.gemspec:17:3: W: [Corrected] Gemspec/DeprecatedAttributeAssignment: Do not set test_files in gemspec.
  spec.test_files = Dir['spec/**/*']
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/order_management/order_management.gemspec:14:3: W: [Corrected] Gemspec/DeprecatedAttributeAssignment: Do not set test_files in gemspec.
  s.test_files = Dir["spec/**/*"]
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
engines/web/web.gemspec:14:3: W: [Corrected] Gemspec/DeprecatedAttributeAssignment: Do not set test_files in gemspec.
  s.test_files = Dir["test/**/*"]
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1404 files inspected, 4 offenses detected, 4 offenses corrected
2023-04-19 15:35:29 +10:00
Maikel Linke
dc560d3793 Safely autocorrect Bundler/OrderedGems
Inspecting 1404 files
.C..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Offenses:

Gemfile:18:1: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem angular-rails-templates should appear before rexml.
gem 'angular-rails-templates', '>= 0.3.0'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:19:1: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem awesome_nested_set should appear before rexml.
gem 'awesome_nested_set'
^^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:20:1: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem ransack should appear before rexml.
gem 'ransack', '~> 2.6.0'
^^^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:21:1: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem responders should appear before rexml.
gem 'responders'
^^^^^^^^^^^^^^^^
Gemfile:74:1: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem omniauth-rails_csrf_protection should appear before openid_connect.
gem 'omniauth-rails_csrf_protection'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:154:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem debug should appear before factory_bot_rails.
  gem 'debug', '>= 1.0.0'
  ^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:155:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem debug should appear before fuubar.
  gem 'debug', '>= 1.0.0'
  ^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:156:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem debug should appear before json_spec.
  gem 'debug', '>= 1.0.0'
  ^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:157:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem debug should appear before knapsack_pro.
  gem 'debug', '>= 1.0.0'
  ^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:158:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem debug should appear before letter_opener.
  gem 'debug', '>= 1.0.0'
  ^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:159:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem debug should appear before rspec-rails.
  gem 'debug', '>= 1.0.0'
  ^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:160:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem debug should appear before rspec-retry.
  gem 'debug', '>= 1.0.0'
  ^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:161:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem debug should appear before rswag-specs.
  gem 'debug', '>= 1.0.0'
  ^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:162:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem debug should appear before shoulda-matchers.
  gem 'debug', '>= 1.0.0'
  ^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:163:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem debug should appear before timecop.
  gem 'debug', '>= 1.0.0'
  ^^^^^^^^^^^^^^^^^^^^^^^
Gemfile:179:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem foreman should appear before rails-erd.
  gem 'foreman'
  ^^^^^^^^^^^^^
Gemfile:180:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem listen should appear before rails-erd.
  gem 'listen'
  ^^^^^^^^^^^^
Gemfile:181:3: C: [Corrected] Bundler/OrderedGems: Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem pry should appear before rails-erd.
  gem 'pry', '~> 0.13.0'
  ^^^^^^^^^^^^^^^^^^^^^^

1404 files inspected, 18 offenses detected, 18 offenses corrected
2023-04-19 15:35:29 +10:00
Maikel Linke
52f134fc9e Regenerate Rubocop's TODO file 2023-04-19 15:35:29 +10:00
Maikel Linke
c08e264afa Add script for bulk autocorrect with Rubocop
We also had an old script which wasn't used and needed manual steps.
2023-04-19 15:35:29 +10:00
Neal Chambers
4e32bfd70b Rename Inversable Method Names 2023-04-18 22:58:06 +09:00
Jean-Baptiste Bellet
722c660697 Do not show any links to other steps when no distribution set
distribution means tuple: distributor + order cycle
2023-04-18 14:36:47 +02:00
Jean-Baptiste Bellet
ac666a6fce Validate presence of distributor and order_cycle in set_distribution step 2023-04-18 14:36:47 +02:00
Jean-Baptiste Bellet
ba1d985932 update the set_distribution form on the same path
and use the same method `OrdersController#set_distribution`
2023-04-18 14:36:47 +02:00
Jean-Baptiste Bellet
0f28d318ac Fix rubocop error and prefer using a return clause 2023-04-18 14:36:47 +02:00
Jean-Baptiste Bellet
6172d1f2e5 Extract method on_update that will be used elsewhere 2023-04-18 14:36:47 +02:00
Jean-Baptiste Bellet
05a040b4c3 No need to ensure if the distribution is set on new action
This will be handled by validation on set_distribution action
2023-04-18 14:36:47 +02:00
Jean-Baptiste Bellet
73a81310f8 Create a new url /orders/ORDER_ID/distribution
That handles the step when distributor and order_cycle must be selected
2023-04-18 14:21:23 +02:00
David Cook
43e51cb592 Simplify login spec helpers, avoid long lines
Follow on from 5c6d9a092e
2023-04-18 10:01:23 +10:00
David Cook
6570891349 Fix linter issues
Although I don't think the size was an issue here, small hashes can easily fit on one line.
2023-04-18 09:50:08 +10:00
David Cook
0f3e2ae572 Use browser validation for calculator values
They're all numbers, so we can reliably validate in the browser, removing the need for additional validation logic.
They will still be validated server-side, and in the unlikely even that there is an error, the generic 'Calculator is invalid' message will appear, with the relevant fields highlighted red. I think that's fine.
2023-04-18 09:50:08 +10:00
David Cook
f0110d20a2 Move config to base helper
This config is relevant for all specs, including system specs.
2023-04-18 09:50:08 +10:00
David Cook
353acfd6ae Validate associated calculator with built in error handling
Except that pesky generic message was appearing. I still don't know how to control that so just deleted it.
2023-04-18 09:39:39 +10:00
David Cook
e43a018dc7 [wip] Copy each calculator error
But we still have the duplicate problem.
Wait a minute, it copies them in the same format that I am copying them. So.. I don't need to copy them at all!

Now I see that we just needed the right format in the translation file.
2023-04-18 09:39:39 +10:00
David Cook
f6fac018ea [wip] Use a custom message format for associated errors
This is much simpler. Multiple messages get combined onto one line though, which is not perfect.

And.. it still seems to duplicate the errors. Weird, it's fine on my frontend though.
2023-04-18 09:39:39 +10:00
David Cook
ce1bd12760 Consolidate specs
It takes time to set up this test case. Given that there's no interactions in the expectations, we should save time to generate it only once.
2023-04-18 09:39:39 +10:00
David Cook
364ccc2146 Add comment 2023-04-18 09:39:39 +10:00
James Wu
2a7cb50fa9 Keep and display submitted data on new payment method page 2023-04-18 09:39:39 +10:00
James Wu
29ddc68d20 Fix duplicate validation error message 2023-04-18 09:39:39 +10:00
James Wu
d40f3414ea fixup! Add translation for Active Record error message 2023-04-18 09:39:39 +10:00
James Wu
f5e2edb028 fixup! Modify Calculator validation error messages [wip]
DC: the error message has now become "Amount Invalid input".
2023-04-18 09:39:39 +10:00
James Wu
7af26e6579 Add errors for invalid input with number localization enabled 2023-04-18 09:39:39 +10:00
James Wu
824d4adf21 Rename spec file 2023-04-18 09:39:39 +10:00
James Wu
00cc8da2fc Fix rubocop class length error 2023-04-18 09:39:39 +10:00
James Wu
ae5f2cc19d Fix error saving data on new Calculator 2023-04-18 09:39:39 +10:00
James Wu
41ce4fbc16 Fix cache issue with invalid form data 2023-04-18 09:39:39 +10:00
James Wu
48753df5f0 Improve input validation and error notification 2023-04-18 09:39:39 +10:00
James Wu
1f3e66316b Modify Calculator validation error messages 2023-04-18 09:39:39 +10:00
James Wu
6b1426d0c6 Add numericality validation for PriceSack 2023-04-18 09:39:39 +10:00
James Wu
c68987c0f2 Add numericality validation for PerItem 2023-04-18 09:39:39 +10:00
James Wu
2cb25e6366 Add numericality validation for FlexiRate 2023-04-18 09:39:39 +10:00
James Wu
073f46e590 Add numericality validation for FlatRate 2023-04-18 09:39:39 +10:00
James Wu
23beea8a13 Add numericality validation for FlatPercentPerItem 2023-04-18 09:39:39 +10:00
James Wu
096e388fdf Add numericality validation for FlatPercentItemTotal 2023-04-18 09:39:39 +10:00
James Wu
3dfaf882a3 Add translation for Active Record error message 2023-04-18 09:39:39 +10:00
James Wu
7b51f45b4d Fix spelling in test description 2023-04-18 09:39:39 +10:00
James Wu
b9b2fa7c94 Fix error converting String to BigDecimal 2023-04-18 09:39:39 +10:00
James Wu
ee30d3d139 Fix PaymentMethodFactory creating extra Calculator 2023-04-18 09:39:39 +10:00
MadisonBowron
697f2795d4 Remove arbitrary comments 2023-04-14 01:25:14 -04:00
filipefurtad0
7d51979c06 Updates build environment to Ubuntu 22.04
Creates environment variable to set OS version
2023-04-12 09:19:14 +02:00
MadisonBowron
8c6e0a841c Fix rubocop extra blank line error 2023-04-11 15:35:37 -04:00
MadisonBowron
9d0a69cceb Fix admin product variants form to close issues #10579 & #430 2023-04-10 18:53:01 -04:00
1006 changed files with 30512 additions and 12539 deletions

View File

@@ -5,6 +5,8 @@
#
# cp .env.development .env.local
VERBOSE_QUERY_LOGS=true
SECRET_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
OFN_REDIS_URL="redis://localhost:6379/1"

View File

@@ -40,7 +40,7 @@ The full process is described at https://github.com/openfoodfoundation/openfoodn
[Ready To Go]: #zenhub
[Transifex pull request]: https://github.com/openfoodfoundation/openfoodnetwork/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+head%3Atransifex
[Draft new release]: https://github.com/openfoodfoundation/openfoodnetwork/releases/new?tag=v&title=v+Code+Name&body=Congrats%0A%0ADescription%0A%0A%23%23+User+facing+changes+:eyes:%0A%0A%0A%0A%23%23+Technical+changes+:wrench:%0A%0A
[Draft new release]: https://github.com/openfoodfoundation/openfoodnetwork/releases/new?tag=v&title=v+Code+Name&body=Congrats%0A%0ADescription%0A%0A%23%23+User+facing+changes+:eyes:%0A%0A%0A%23%23%23+Experimental+features+for+testing+:sunglasses:%0A%0A%0A%23%23+Technical+changes+:wrench:%0A%0A
[releases]: https://github.com/openfoodfoundation/openfoodnetwork/releases
[#instance-managers]: https://app.slack.com/client/T02G54U79/CG7NJ966B
[#testing]: https://openfoodnetwork.slack.com/app_redirect?channel=C02TZ6X00

View File

@@ -18,7 +18,7 @@ permissions:
jobs:
knapsack_rspec_controllers:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:10
@@ -86,7 +86,7 @@ jobs:
bundle exec rake knapsack_pro:rspec
knapsack_rspec_models:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:10
@@ -155,7 +155,7 @@ jobs:
bundle exec rake knapsack_pro:rspec
knapsack_rspec_system_admin:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:10
@@ -233,7 +233,7 @@ jobs:
if-no-files-found: ignore
knapsack_rspec_system_consumer:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:10
@@ -311,7 +311,7 @@ jobs:
if-no-files-found: ignore
knapsack_rspec_engines:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:10
@@ -389,7 +389,7 @@ jobs:
if-no-files-found: ignore
knapsack_rspec_test_the_rest:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:10
@@ -459,7 +459,7 @@ jobs:
bundle exec rake knapsack_pro:rspec
non_knapsack_jest_karma:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:10

62
.github/workflows/stage.yml vendored Normal file
View File

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

View File

@@ -1,17 +1,26 @@
# Basically, ignore everythings expect app/webpacker/controllers/*.js and app/webpacker/packs/*.js
*.css
*.scss
# Except v2
!/app/webpacker/css/admin/v2/**/*.scss
# Ignore a lot of things, but we should enable where it can be helpful.
*.md
*.yml
*.yaml
*.json
*.html
# JS
# Enabled: app/webpacker/controllers/*.js and app/webpacker/packs/*.js
babel.config.js
postcss.config.js
# SCSS
# Enabled: most of admin
/app/webpacker/css/admin/globals/
/app/webpacker/css/admin/shared/
/app/webpacker/css/admin_v3/globals/variables.scss
/app/webpacker/css/darkswarm/
/app/webpacker/css/mail/
/app/webpacker/css/shared/
# More
/app/assets/
/config/
/coverage/

View File

@@ -1 +1,3 @@
{}
{
"printWidth": 100
}

View File

@@ -40,9 +40,13 @@ Metrics/BlockLength:
"resources",
"scenario",
"shared_examples",
"shared_examples_for",
"xdescribe",
]
Metrics/ParameterLists:
CountKeywordArgs: false
Rails/ApplicationRecord:
Exclude:
# Migrations should not contain application code:

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
3.0.3
3.1.4

View File

@@ -71,5 +71,5 @@ From here, your pull request will progress through the [Review, Test, Merge & De
[slack-dev]: https://openfoodnetwork.slack.com/messages/C2GQ45KNU
[ofn-transifex]: https://www.transifex.com/open-food-foundation/open-food-network/
[i18n]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Internationalisation-%28i18n%29
[welcome-dev]: https://github.com/orgs/openfoodfoundation/projects/2
[welcome-dev]: https://github.com/orgs/openfoodfoundation/projects/5
[ci]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Continuous-Integration

18
Gemfile
View File

@@ -1,9 +1,10 @@
# frozen_string_literal: true
source 'https://rubygems.org'
ruby "3.0.3"
git_source(:github) { |repo_name| "https://github.com/#{repo_name}.git" }
ruby File.read('.ruby-version').chomp
gem 'dotenv-rails', require: 'dotenv/rails-now' # Load ENV vars before other gems
gem 'rails'
@@ -14,11 +15,11 @@ gem "aws-sdk-s3", require: false
gem "image_processing"
gem 'activemerchant', '>= 1.78.0'
gem 'rexml'
gem 'angular-rails-templates', '>= 0.3.0'
gem 'awesome_nested_set'
gem 'ransack', '~> 2.6.0'
gem 'responders'
gem 'rexml'
gem 'webpacker', '~> 5'
gem 'i18n'
@@ -63,6 +64,7 @@ gem 'devise-token_authenticatable'
gem 'jwt', '~> 2.3'
gem 'oauth2', '~> 1.4.7' # Used for Stripe Connect
gem 'datafoodconsortium-connector'
gem 'jsonapi-serializer'
gem 'pagy', '~> 5.1'
@@ -70,8 +72,8 @@ gem 'rswag-api'
gem 'rswag-ui'
gem 'omniauth_openid_connect'
gem 'openid_connect', '~> 1.3'
gem 'omniauth-rails_csrf_protection'
gem 'openid_connect', '~> 1.3'
gem 'angularjs-rails', '1.8.0'
gem 'bugsnag'
@@ -114,12 +116,8 @@ gem 'spreadsheet_architect' # write spreadsheets
gem 'whenever', require: false
gem 'test-unit', '~> 3.5'
gem 'coffee-rails', '~> 5.0.0'
gem 'mini_racer'
gem 'angular_rails_csrf'
gem 'jquery-rails', '4.4.0'
@@ -141,7 +139,6 @@ gem "faraday"
gem "private_address_check"
group :production, :staging do
gem 'ddtrace'
gem 'sd_notify' # For better Systemd process management. Used by Puma.
end
@@ -150,6 +147,7 @@ group :test, :development do
gem 'capybara'
gem 'cuprite'
gem 'database_cleaner', require: false
gem 'debug', '>= 1.0.0'
gem "factory_bot_rails", '6.2.0', require: false
gem 'fuubar', '~> 2.5.1'
gem 'json_spec', '~> 1.1.4'
@@ -160,7 +158,6 @@ group :test, :development do
gem 'rswag-specs'
gem 'shoulda-matchers'
gem 'timecop'
gem 'debug', '>= 1.0.0'
end
group :test do
@@ -175,10 +172,11 @@ end
group :development do
gem 'debugger-linecache'
gem 'rails-erd'
gem 'foreman'
gem 'listen'
gem 'pry', '~> 0.13.0'
gem 'query_count'
gem 'rails-erd'
gem 'rubocop'
gem 'rubocop-rails'
gem 'spring'

View File

@@ -44,73 +44,73 @@ GEM
remote: https://rubygems.org/
specs:
Ascii85 (1.1.0)
actioncable (7.0.4.3)
actionpack (= 7.0.4.3)
activesupport (= 7.0.4.3)
actioncable (7.0.6)
actionpack (= 7.0.6)
activesupport (= 7.0.6)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (7.0.4.3)
actionpack (= 7.0.4.3)
activejob (= 7.0.4.3)
activerecord (= 7.0.4.3)
activestorage (= 7.0.4.3)
activesupport (= 7.0.4.3)
actionmailbox (7.0.6)
actionpack (= 7.0.6)
activejob (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.0.4.3)
actionpack (= 7.0.4.3)
actionview (= 7.0.4.3)
activejob (= 7.0.4.3)
activesupport (= 7.0.4.3)
actionmailer (7.0.6)
actionpack (= 7.0.6)
actionview (= 7.0.6)
activejob (= 7.0.6)
activesupport (= 7.0.6)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
actionpack (7.0.4.3)
actionview (= 7.0.4.3)
activesupport (= 7.0.4.3)
rack (~> 2.0, >= 2.2.0)
actionpack (7.0.6)
actionview (= 7.0.6)
activesupport (= 7.0.6)
rack (~> 2.0, >= 2.2.4)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actionpack-action_caching (1.2.2)
actionpack (>= 4.0.0)
actiontext (7.0.4.3)
actionpack (= 7.0.4.3)
activerecord (= 7.0.4.3)
activestorage (= 7.0.4.3)
activesupport (= 7.0.4.3)
actiontext (7.0.6)
actionpack (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.0.4.3)
activesupport (= 7.0.4.3)
actionview (7.0.6)
activesupport (= 7.0.6)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
active_model_serializers (0.8.4)
activemodel (>= 3.0)
active_storage_validations (1.0.3)
active_storage_validations (1.0.4)
activejob (>= 5.2.0)
activemodel (>= 5.2.0)
activestorage (>= 5.2.0)
activesupport (>= 5.2.0)
activejob (7.0.4.3)
activesupport (= 7.0.4.3)
activejob (7.0.6)
activesupport (= 7.0.6)
globalid (>= 0.3.6)
activemerchant (1.123.0)
activesupport (>= 4.2)
builder (>= 2.1.2, < 4.0.0)
i18n (>= 0.6.9)
nokogiri (~> 1.4)
activemodel (7.0.4.3)
activesupport (= 7.0.4.3)
activerecord (7.0.4.3)
activemodel (= 7.0.4.3)
activesupport (= 7.0.4.3)
activemodel (7.0.6)
activesupport (= 7.0.6)
activerecord (7.0.6)
activemodel (= 7.0.6)
activesupport (= 7.0.6)
activerecord-import (1.4.1)
activerecord (>= 4.2)
activerecord-postgresql-adapter (0.0.1)
@@ -121,14 +121,14 @@ GEM
multi_json (~> 1.11, >= 1.11.2)
rack (>= 2.0.8, < 3)
railties (>= 5.2.4.1)
activestorage (7.0.4.3)
actionpack (= 7.0.4.3)
activejob (= 7.0.4.3)
activerecord (= 7.0.4.3)
activesupport (= 7.0.4.3)
activestorage (7.0.6)
actionpack (= 7.0.6)
activejob (= 7.0.6)
activerecord (= 7.0.6)
activesupport (= 7.0.6)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (7.0.4.3)
activesupport (7.0.6)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
@@ -137,7 +137,7 @@ GEM
activerecord (>= 6.0, < 7.1)
acts_as_list (1.0.4)
activerecord (>= 4.2)
addressable (2.8.2)
addressable (2.8.4)
public_suffix (>= 2.0.2, < 6.0)
aes_key_wrap (1.1.0)
afm (0.2.2)
@@ -157,17 +157,17 @@ GEM
awesome_nested_set (3.5.0)
activerecord (>= 4.0.0, < 7.1)
aws-eventstream (1.2.0)
aws-partitions (1.742.0)
aws-sdk-core (3.171.0)
aws-partitions (1.780.0)
aws-sdk-core (3.175.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.63.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (1.67.0)
aws-sdk-core (~> 3, >= 3.174.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.120.1)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-s3 (1.126.0)
aws-sdk-core (~> 3, >= 3.174.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.5.2)
@@ -191,7 +191,7 @@ GEM
railties (>= 5.2)
thread-local (>= 1.1.0)
cancancan (1.15.0)
capybara (3.39.0)
capybara (3.39.2)
addressable
matrix
mini_mime (>= 0.1.3)
@@ -219,7 +219,7 @@ GEM
matrix
ruby-rc4 (>= 0.1.5)
concurrent-ruby (1.2.2)
connection_pool (2.4.0)
connection_pool (2.4.1)
crack (0.4.5)
rexml
crass (1.0.6)
@@ -234,14 +234,10 @@ GEM
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
datafoodconsortium-connector (1.0.0.pre.alpha.6)
virtual_assembly-semantizer (~> 1.0, >= 1.0.4)
date (3.3.3)
ddtrace (1.10.1)
debase-ruby_core_source (>= 0.10.16, <= 3.2.0)
libdatadog (~> 2.0.0.1.0)
libddwaf (~> 1.6.2.0.0)
msgpack
debase-ruby_core_source (3.2.0)
debug (1.7.2)
debug (1.8.0)
irb (>= 1.5.0)
reline (>= 0.3.1)
debugger-linecache (1.2.0)
@@ -274,7 +270,7 @@ GEM
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
railties (>= 5.0.0)
faraday (2.7.4)
faraday (2.7.10)
faraday-net_http (>= 2.0, < 3.1)
ruby2_keywords (>= 0.0.4)
faraday-follow_redirects (0.3.0)
@@ -321,7 +317,7 @@ GEM
fuubar (2.5.1)
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
geocoder (1.8.1)
geocoder (1.8.2)
globalid (1.1.0)
activesupport (>= 5.0)
gmaps4rails (2.1.2)
@@ -338,7 +334,7 @@ GEM
hiredis (0.6.3)
htmlentities (4.3.4)
httpclient (2.8.3)
i18n (1.12.0)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
i18n-js (3.9.2)
i18n (>= 0.6.6)
@@ -349,7 +345,7 @@ GEM
activerecord (>= 3.0)
io-console (0.6.0)
ipaddress (0.8.3)
irb (1.6.3)
irb (1.6.4)
reline (>= 0.3.0)
jmespath (1.6.2)
jquery-rails (4.4.0)
@@ -359,12 +355,20 @@ GEM
jquery-ui-rails (4.2.1)
railties (>= 3.2.16)
json (2.6.3)
json-canonicalization (0.3.1)
json-jwt (1.16.3)
activesupport (>= 4.2)
aes_key_wrap
bindata
faraday (~> 2.0)
faraday-follow_redirects
json-ld (3.2.3)
htmlentities (~> 4.3)
json-canonicalization (~> 0.3)
link_header (~> 0.0, >= 0.0.8)
multi_json (~> 1.15)
rack (~> 2.2)
rdf (~> 3.2, >= 3.2.9)
json-schema (3.0.0)
addressable (>= 2.8)
json_spec (1.1.5)
@@ -372,23 +376,21 @@ GEM
rspec (>= 2.0, < 4.0)
jsonapi-serializer (2.2.0)
activesupport (>= 4.2)
jwt (2.7.0)
knapsack_pro (3.9.0)
jwt (2.7.1)
knapsack_pro (5.1.2)
rake
language_server-protocol (3.17.0.3)
launchy (2.5.0)
addressable (~> 2.7)
letter_opener (1.8.1)
launchy (>= 2.2, < 3)
libdatadog (2.0.0.1.0)
libddwaf (1.6.2.0.0)
ffi (~> 1.0)
libv8-node (16.10.0.0)
link_header (0.0.8)
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
loofah (2.20.0)
loofah (2.21.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
nokogiri (>= 1.12.0)
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
@@ -405,18 +407,16 @@ GEM
rake
mini_magick (4.11.0)
mini_mime (1.1.2)
mini_portile2 (2.8.1)
mini_racer (0.6.3)
libv8-node (~> 16.10.0.0)
minitest (5.18.0)
mini_portile2 (2.8.2)
minitest (5.18.1)
monetize (1.12.0)
money (~> 6.12)
money (6.16.0)
i18n (>= 0.6.4, <= 2)
msgpack (1.6.1)
msgpack (1.7.1)
multi_json (1.15.0)
multi_xml (0.6.0)
net-imap (0.3.4)
net-imap (0.3.6)
date
net-protocol
net-pop (0.1.2)
@@ -426,8 +426,8 @@ GEM
net-smtp (0.3.3)
net-protocol
nio4r (2.5.9)
nokogiri (1.14.3)
mini_portile2 (~> 2.8.0)
nokogiri (1.15.3)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oauth2 (1.4.11)
faraday (>= 0.17.3, < 3.0)
@@ -462,11 +462,12 @@ GEM
paper_trail (12.3.0)
activerecord (>= 5.2)
request_store (~> 1.1)
parallel (1.22.1)
paranoia (2.6.1)
parallel (1.23.0)
paranoia (2.6.2)
activerecord (>= 5.1, < 7.1)
parser (3.2.2.0)
parser (3.2.2.3)
ast (~> 2.4.1)
racc
paypal-sdk-core (0.3.4)
multi_json (~> 1.0)
xml-simple
@@ -479,17 +480,19 @@ GEM
ruby-rc4
ttfunk
pg (1.2.3)
power_assert (2.0.2)
private_address_check (0.5.0)
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
public_suffix (5.0.1)
puma (6.2.2)
puma (6.3.0)
nio4r (~> 2.0)
query_count (1.1.1)
activerecord (>= 4.2)
railties (>= 4.2)
raabro (1.4.0)
racc (1.6.2)
rack (2.2.6.4)
racc (1.7.1)
rack (2.2.7)
rack-mini-profiler (2.3.4)
rack (>= 1.2.0)
rack-oauth2 (1.21.3)
@@ -506,41 +509,43 @@ GEM
rack-test (2.1.0)
rack (>= 1.3)
rack-timeout (0.6.3)
rails (7.0.4.3)
actioncable (= 7.0.4.3)
actionmailbox (= 7.0.4.3)
actionmailer (= 7.0.4.3)
actionpack (= 7.0.4.3)
actiontext (= 7.0.4.3)
actionview (= 7.0.4.3)
activejob (= 7.0.4.3)
activemodel (= 7.0.4.3)
activerecord (= 7.0.4.3)
activestorage (= 7.0.4.3)
activesupport (= 7.0.4.3)
rails (7.0.6)
actioncable (= 7.0.6)
actionmailbox (= 7.0.6)
actionmailer (= 7.0.6)
actionpack (= 7.0.6)
actiontext (= 7.0.6)
actionview (= 7.0.6)
activejob (= 7.0.6)
activemodel (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
bundler (>= 1.15.0)
railties (= 7.0.4.3)
railties (= 7.0.6)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
rails-dom-testing (2.1.1)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-erd (1.7.2)
activerecord (>= 4.2)
activesupport (>= 4.2)
choice (~> 0.2.0)
ruby-graphviz (~> 1.2)
rails-html-sanitizer (1.5.0)
loofah (~> 2.19, >= 2.19.1)
rails-i18n (7.0.6)
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
rails-i18n (7.0.7)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
rails_safe_tasks (1.0.0)
railties (7.0.4.3)
actionpack (= 7.0.4.3)
activesupport (= 7.0.4.3)
railties (7.0.6)
actionpack (= 7.0.6)
activesupport (= 7.0.6)
method_source
rake (>= 12.2)
thor (~> 1.0)
@@ -554,11 +559,13 @@ GEM
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rdf (3.2.9)
link_header (~> 0.0, >= 0.0.8)
redcarpet (3.6.0)
redis (4.8.1)
redis-client (0.14.1)
connection_pool
regexp_parser (2.8.0)
regexp_parser (2.8.1)
reline (0.3.3)
io-console (~> 0.5)
request_store (1.5.1)
@@ -583,48 +590,49 @@ GEM
rspec-core (~> 3.12.0)
rspec-expectations (~> 3.12.0)
rspec-mocks (~> 3.12.0)
rspec-core (3.12.1)
rspec-core (3.12.2)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.2)
rspec-expectations (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.3)
rspec-mocks (3.12.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-rails (6.0.1)
rspec-rails (6.0.3)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
rspec-core (~> 3.11)
rspec-expectations (~> 3.11)
rspec-mocks (~> 3.11)
rspec-support (~> 3.11)
rspec-core (~> 3.12)
rspec-expectations (~> 3.12)
rspec-mocks (~> 3.12)
rspec-support (~> 3.12)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.12.0)
rswag-api (2.8.0)
rswag-api (2.9.0)
railties (>= 3.1, < 7.1)
rswag-specs (2.8.0)
rswag-specs (2.9.0)
activesupport (>= 3.1, < 7.1)
json-schema (>= 2.2, < 4.0)
railties (>= 3.1, < 7.1)
rspec-core (>= 2.14)
rswag-ui (2.8.0)
rswag-ui (2.9.0)
actionpack (>= 3.1, < 7.1)
railties (>= 3.1, < 7.1)
rubocop (1.50.2)
rubocop (1.54.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.2.0.0)
parser (>= 3.2.2.3)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.28.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.28.0)
rubocop-ast (1.29.0)
parser (>= 3.2.1.0)
rubocop-rails (2.19.1)
rubocop-rails (2.20.2)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
@@ -638,7 +646,7 @@ GEM
rubyzip (2.3.2)
rufus-scheduler (3.8.2)
fugit (~> 1.1, >= 1.1.6)
sanitize (6.0.1)
sanitize (6.0.2)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
sass (3.4.25)
@@ -652,12 +660,12 @@ GEM
semantic_range (3.0.0)
shoulda-matchers (5.3.0)
activesupport (>= 5.2.0)
sidekiq (7.0.8)
sidekiq (7.1.2)
concurrent-ruby (< 2)
connection_pool (>= 2.3.0)
rack (>= 2.2.4)
redis-client (>= 0.11.0)
sidekiq-scheduler (5.0.2)
redis-client (>= 0.14.0)
sidekiq-scheduler (5.0.3)
rufus-scheduler (~> 3.2)
sidekiq (>= 6, < 8)
tilt (>= 1.4.0)
@@ -680,13 +688,13 @@ GEM
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
state_machines (0.5.0)
state_machines-activemodel (0.8.0)
activemodel (>= 5.1)
state_machines (>= 0.5.0)
state_machines-activerecord (0.8.0)
activerecord (>= 5.1)
state_machines-activemodel (>= 0.8.0)
state_machines (0.6.0)
state_machines-activemodel (0.9.0)
activemodel (>= 6.0)
state_machines (>= 0.6.0)
state_machines-activerecord (0.9.0)
activerecord (>= 6.0)
state_machines-activemodel (>= 0.9.0)
stimulus_reflex (3.5.0.rc2)
actioncable (>= 5.2, < 8)
actionpack (>= 5.2, < 8)
@@ -697,20 +705,18 @@ GEM
rack (>= 2, < 4)
railties (>= 5.2, < 8)
redis (>= 4.0, < 6.0)
stringex (2.8.5)
stringex (2.8.6)
stripe (8.5.0)
swd (1.3.0)
activesupport (>= 3)
attr_required (>= 0.0.5)
httpclient (>= 2.4)
temple (0.8.2)
test-unit (3.5.7)
power_assert
thor (1.2.1)
thor (1.2.2)
thread-local (1.1.0)
tilt (2.1.0)
timecop (0.9.6)
timeout (0.3.2)
timeout (0.4.0)
ttfunk (1.7.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
@@ -725,8 +731,8 @@ GEM
validate_url (1.0.15)
activemodel (>= 3.0.0)
public_suffix
vcr (6.1.0)
view_component (2.82.0)
vcr (6.2.0)
view_component (3.3.0)
activesupport (>= 5.2.0, < 8.0)
concurrent-ruby (~> 1.0)
method_source (~> 1.0)
@@ -734,6 +740,8 @@ GEM
rails (>= 5.2, < 8.0)
stimulus_reflex (>= 3.5.0.pre2)
view_component (>= 2.28.0)
virtual_assembly-semantizer (1.0.4)
json-ld (~> 3.2, >= 3.2.3)
warden (1.2.9)
rack (>= 2.0.9)
web-console (4.2.0)
@@ -765,7 +773,7 @@ GEM
xml-simple (1.1.8)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.7)
zeitwerk (2.6.8)
PLATFORMS
ruby
@@ -799,8 +807,8 @@ DEPENDENCIES
combine_pdf
cuprite
database_cleaner
datafoodconsortium-connector
db2fog!
ddtrace
debug (>= 1.0.0)
debugger-linecache
devise
@@ -841,7 +849,6 @@ DEPENDENCIES
mime-types
mimemagic (> 0.3.5)
mini_portile2 (~> 2.8)
mini_racer
monetize (~> 1.11)
oauth2 (~> 1.4.7)
omniauth-rails_csrf_protection
@@ -857,6 +864,7 @@ DEPENDENCIES
private_address_check
pry (~> 0.13.0)
puma
query_count
rack-mini-profiler (< 3.0.0)
rack-rewrite
rack-timeout
@@ -892,7 +900,6 @@ DEPENDENCIES
stimulus_reflex (= 3.5.0.rc2)
stringex (~> 2.8.5)
stripe
test-unit (~> 3.5)
timecop
valid_email2
vcr
@@ -907,7 +914,7 @@ DEPENDENCIES
wkhtmltopdf-binary
RUBY VERSION
ruby 3.0.3p157
ruby 3.1.4p223
BUNDLED WITH
2.4.3

View File

@@ -12,5 +12,6 @@ angular.module("ofn.admin", [
"admin.orders"
]).config ($httpProvider, $locationProvider, $qProvider) ->
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"
# for the next line, you should also probably check file: app/assets/javascripts/admin/utils/utils.js.coffee
$locationProvider.hashPrefix('')
$qProvider.errorOnUnhandledRejections(false)

View File

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

View File

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

View File

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

View File

@@ -9,6 +9,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.sharedResource = false
$scope.columns = Columns.columns
$scope.sorting = SortOptions
$scope.sorting.toggle("order_date")
$scope.pagination = LineItems.pagination
$scope.per_page_options = [
{id: 15, name: t('js.admin.orders.index.per_page', results: 15)},
@@ -22,6 +23,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
"order_bill_address_phone",
"order_bill_address_firstname",
"order_bill_address_lastname",
"order_bill_address_full_name",
"variant_product_supplier_name",
"order_email",
"order_number",
@@ -60,6 +62,8 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.dereferenceLoadedData()
$scope.loadOrders = ->
return $scope.orders = [] unless $scope.line_items.length
RequestMonitor.load $scope.orders = Orders.index(
"q[id_in][]": $scope.line_items.map((line_item) -> line_item.order.id)
)
@@ -78,6 +82,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
"q[order_order_cycle_id_eq]": $scope.orderCycleFilter,
"q[order_completed_at_gteq]": if formattedStartDate then formattedStartDate else undefined,
"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
)
@@ -121,16 +126,16 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
else
StatusMessage.display 'failure', t "unsaved_changes_error"
$scope.cancelOrder = (order, sendEmailCancellation) ->
$scope.cancelOrder = (order, sendEmailCancellation, restock_items) ->
return $http(
method: 'GET'
url: "/admin/orders/#{order.number}/fire?e=cancel&send_cancellation_email=#{sendEmailCancellation}")
url: "/admin/orders/#{order.number}/fire?e=cancel&send_cancellation_email=#{sendEmailCancellation}&restock_items=#{restock_items}")
$scope.deleteLineItem = (lineItem) ->
if lineItem.order.item_count == 1
ofnCancelOrderAlert((confirm, sendEmailCancellation) ->
ofnCancelOrderAlert((confirm, sendEmailCancellation, restock_items) ->
if confirm
$scope.cancelOrder(lineItem.order, sendEmailCancellation).then(->
$scope.cancelOrder(lineItem.order, sendEmailCancellation, restock_items).then(->
$scope.refreshData()
)
else
@@ -152,11 +157,11 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
willCancelOrders = true if (order.item_count == itemsPerOrder.get(order).length)
if willCancelOrders
ofnCancelOrderAlert((confirm, sendEmailCancellation) ->
ofnCancelOrderAlert((confirm, sendEmailCancellation, restock_items) ->
if confirm
itemsPerOrder.forEach (items, order) =>
if order.item_count == items.length
$scope.cancelOrder(order, sendEmailCancellation).then(-> $scope.refreshData())
$scope.cancelOrder(order, sendEmailCancellation, restock_items).then(-> $scope.refreshData())
else
Promise.all(LineItems.delete(item) for item in items).then(-> $scope.refreshData())
, "js.admin.deleting_item_will_cancel_order")

View File

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

View File

@@ -1,32 +0,0 @@
angular.module("admin.orders").controller "bulkInvoiceCtrl", ($scope, $http, $timeout) ->
$scope.createBulkInvoice = ->
$scope.invoice_id = null
$scope.poll = 1
$scope.loading = true
$scope.message = null
$scope.error = null
$scope.poll_wait = 5 # 5 Seconds between each check
$scope.poll_retries = 80 # Maximum checks before stopping
$http.post('/admin/orders/invoices', {order_ids: $scope.selected_orders}).then (response) ->
$scope.invoice_id = response.data
$scope.pollBulkInvoice()
$scope.pollBulkInvoice = ->
$timeout($scope.nextPoll, $scope.poll_wait * 1000)
$scope.nextPoll = ->
$http.get('/admin/orders/invoices/'+$scope.invoice_id+'/poll').then (response) ->
$scope.loading = false
$scope.message = t('js.admin.orders.index.bulk_invoice_created')
.catch (response) ->
$scope.poll++
if $scope.poll > $scope.poll_retries
$scope.loading = false
$scope.error = t('js.admin.orders.index.bulk_invoice_failed')
return
$scope.pollBulkInvoice()

View File

@@ -1,117 +0,0 @@
angular.module("admin.orders").controller "ordersCtrl", ($scope, $timeout, RequestMonitor, Orders, SortOptions, $window, $filter, $location, KeyValueMapStore) ->
$scope.RequestMonitor = RequestMonitor
$scope.pagination = Orders.pagination
$scope.orders = Orders.all
$scope.sortOptions = SortOptions
$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.selected_orders = []
$scope.checkboxes = {}
$scope.selected = false
$scope.select_all = false
$scope.poll = 0
$scope.rowStatus = {}
KeyValueMapStore.localStorageKey = 'ordersFilters'
KeyValueMapStore.storableKeys = ["q", "sorting", "page", "per_page"]
$scope.initialise = ->
unless KeyValueMapStore.restoreValues($scope)
$scope.setDefaults()
$scope.fetchResults()
$scope.setDefaults = ->
$scope.per_page = 15
$scope.q = {
completed_at_not_null: true
}
e = new CustomEvent("flatpickr_clear");
window.dispatchEvent(e)
$scope.clearFilters = () ->
KeyValueMapStore.clearKeyValueMap()
$scope.setDefaults()
$scope.fetchResults()
$scope.fetchResults = (page=1) ->
startDateWithTime = $scope.appendStringIfNotEmpty($scope.q?.completed_at_gteq, ' 00:00:00')
endDateWithTime = $scope.appendStringIfNotEmpty($scope.q?.completed_at_lteq, ' 23:59:59')
$scope.resetSelected()
params = {
'q[completed_at_gteq]': startDateWithTime,
'q[completed_at_lteq]': endDateWithTime,
'q[state_eq]': $scope.q?.state_eq,
'q[number_cont]': $scope.q?.number_cont,
'q[email_cont]': $scope.q?.email_cont,
'q[bill_address_firstname_start]': $scope.q?.bill_address_firstname_start,
'q[bill_address_lastname_start]': $scope.q?.bill_address_lastname_start,
# Set default checkbox values to null. See: https://github.com/openfoodfoundation/openfoodnetwork/pull/3076#issuecomment-440010498
'q[completed_at_not_null]': $scope.q?.completed_at_not_null || null,
'q[distributor_id_in][]': $scope.q?.distributor_id_in,
'q[order_cycle_id_in][]': $scope.q?.order_cycle_id_in,
'q[s]': $scope.sorting || 'completed_at desc',
shipping_method_id: $scope.q?.shipping_method_id,
per_page: $scope.per_page,
page: page
}
KeyValueMapStore.setStoredValues($scope)
RequestMonitor.load(Orders.index(params).$promise)
$scope.appendStringIfNotEmpty = (baseString, stringToAppend) ->
return baseString unless baseString
return baseString if baseString.endsWith(stringToAppend)
baseString + stringToAppend
$scope.resetSelected = ->
$scope.selected_orders.length = 0
$scope.selected = false
$scope.select_all = false
$scope.checkboxes = {}
$scope.toggleSelection = (id) ->
index = $scope.selected_orders.indexOf(id)
if index == -1
$scope.selected_orders.push(id)
else
$scope.selected_orders.splice(index, 1)
$scope.toggleAll = ->
$scope.selected_orders.length = 0
$scope.orders.forEach (order) ->
$scope.checkboxes[order.id] = $scope.select_all
$scope.selected_orders.push order.id if $scope.select_all
$scope.$watch 'sortOptions', (sort) ->
return unless sort && sort.predicate != ""
$scope.sorting = sort.getSortingExpr()
$scope.fetchResults()
, true
$scope.capturePayment = (order) ->
$scope.rowAction('capture', order)
$scope.shipOrder = (order) ->
$scope.rowAction('ship', order)
$scope.rowAction = (action, order) ->
$scope.rowStatus[order.id] = "loading"
Orders[action](order).$promise.then (data) ->
$scope.rowStatus[order.id] = "success"
$timeout(->
$scope.rowStatus[order.id] = null
, 1500)
, (error) ->
$scope.rowStatus[order.id] = "error"
$scope.changePage = (newPage) ->
$scope.page = newPage
$scope.fetchResults(newPage)

View File

@@ -1,5 +0,0 @@
angular.module("admin.orders").directive "invoicesModal", ($modal) ->
restrict: 'C'
link: (scope, elem, attrs, ctrl) ->
elem.on "click", (ev) =>
scope.uploadModal = $modal.open(templateUrl: 'admin/modals/bulk_invoice.html', controller: ctrl, scope: scope, windowClass: 'simple-modal')

View File

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

View File

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

View File

@@ -15,7 +15,7 @@ $(document).ready(function() {
console.log(msg);
});
}
$('[data-hook=admin_order_edit_form] a.ship').click(handle_ship_click);
$('.admin-order-edit-form a.ship').click(handle_ship_click);
//handle shipping method edit click
$('a.edit-method').click(toggleMethodEdit);
@@ -37,7 +37,7 @@ $(document).ready(function() {
console.log(msg);
});
}
$('[data-hook=admin_order_edit_form] a.save-method').click(handle_shipping_method_save);
$('.admin-order-edit-form a.save-method').click(handle_shipping_method_save);
//handle tracking info edit/delete
@@ -64,8 +64,8 @@ $(document).ready(function() {
return Spree.url( Spree.routes.orders_api + "/" + order_number + "/shipments/" + shipmentNumber + ".json");
}
$('[data-hook=admin_order_edit_form] a.save-tracking').click(saveTrackingInfo);
$('[data-hook=admin_order_edit_form] a.delete-tracking').click(deleteTrackingInfo);
$('.admin-order-edit-form a.save-tracking').click(saveTrackingInfo);
$('.admin-order-edit-form a.delete-tracking').click(deleteTrackingInfo);
// handle note edit/delete
@@ -96,8 +96,8 @@ $(document).ready(function() {
});
}
$('[data-hook=admin_order_edit_form] a.save-note').click(saveNote);
$('[data-hook=admin_order_edit_form] a.delete-note').click(deleteNote);
$('.admin-order-edit-form a.save-note').click(saveNote);
$('.admin-order-edit-form a.delete-note').click(deleteNote);
// Makes API call for notes/tracking info
makeApiCall = function(url, params) {

View File

@@ -100,6 +100,7 @@ adjustItems = function(shipment_number, variant_id, quantity, restock_item){
doAdjustItems(shipment_number, variant_id, quantity, inventory_units, restock_item, () => {
var redirectTo = new URL(Spree.routes.cancel_order.toString());
redirectTo.searchParams.append("send_cancellation_email", sendEmailCancellation);
redirectTo.searchParams.append("restock_item", restock_item);
window.location.href = redirectTo.toString();
});
}

View File

@@ -10,6 +10,12 @@ angular.module("admin.utils").directive "variantAutocomplete", ($timeout) ->
element.select2
placeholder: t('admin.orders.select_variant')
minimumInputLength: 3
formatInputTooShort: ->
t('admin.select2.minimal_search_length', count: 3)
formatSearching: ->
t('admin.select2.searching')
formatNoMatches: ->
t('admin.select2.no_matches')
ajax:
url: Spree.routes.variants_search
datatype: "json"

View File

@@ -5,8 +5,8 @@ angular.module("admin.utils").factory "StatusMessage", ->
alert: {style: {color: 'grey'}}
notice: {style: {color: 'grey'}}
success: {style: {color: '#9fc820'}}
failure: {style: {color: '#da5354'}}
error: {style: {color: '#da5354'}}
failure: {style: {color: '#C85136'}}
error: {style: {color: '#C85136'}}
statusMessage:
text: ""

View File

@@ -1,3 +1,4 @@
angular.module("admin.utils", ["templates", "ngSanitize"]).config ($httpProvider, $locationProvider) ->
# for the next line, you should also probably check file: app/assets/javascripts/admin/admin_ofn.js.coffee
$locationProvider.hashPrefix('')
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"

View File

@@ -0,0 +1,15 @@
// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
//= require jquery2
//= require admin/spree/spree-select2
//= require admin/spree/handlebar_extensions
//= require i18n/translations
//= require darkswarm/i18n.translate.js
window.angular = { module: function(noop){ return { value: function(){} } } }

View File

@@ -29,24 +29,6 @@
#
#= require angular-flash.min.js
#
#= require moment/min/moment.min.js
#= require moment/locale/ar.js
#= require moment/locale/ca.js
#= require moment/locale/de.js
#= require moment/locale/en-gb.js
#= require moment/locale/es.js
#= require moment/locale/fil.js
#= require moment/locale/fr.js
#= require moment/locale/it.js
#= require moment/locale/nb.js
#= require moment/locale/nl-be.js
#= require moment/locale/pt-br.js
#= require moment/locale/pt.js
#= require moment/locale/ru.js
#= require moment/locale/sv.js
#= require moment/locale/tr.js
#= require moment/locale/pl.js
#
#= require modernizr
#
#= require foundation-sites/js/foundation.js
@@ -67,11 +49,3 @@ document.addEventListener "turbo:before-render", ->
rootscope = null
window.injector = null
true
document.addEventListener "ajax:beforeSend", (event) =>
window.Turbo.navigator.adapter.progressBar.setValue(0)
window.Turbo.navigator.adapter.progressBar.show()
document.addEventListener "ajax:complete", (event) =>
window.Turbo.navigator.adapter.progressBar.setValue(100)
window.Turbo.navigator.adapter.progressBar.hide()

View File

@@ -1,22 +0,0 @@
angular.module('Darkswarm').controller "AccordionCtrl", ($scope, localStorageService, $timeout, $document, CurrentHub) ->
$scope.accordionSections = ["details", "billing", "shipping", "payment"]
$scope.accordion = { details: true, billing: true, shipping: true, payment: true }
$scope.show = (section) ->
$scope.accordion[section] = true
$scope.scrollTo = (section) ->
# Scrolling is confused by our position:fixed top bar - add an offset to scroll
# to the correct location, plus 5px buffer
offset_height = $("nav.top-bar").height() + 5
$document.scrollTo($("##{section}"), offset_height, 400)
$scope.$on 'purchaseFormInvalid', (event, form) ->
# Scroll to first invalid section
for section in $scope.accordionSections
if not form[section].$valid
$scope.show section
$timeout ->
$scope.scrollTo(section)
, 50
break

View File

@@ -1,12 +0,0 @@
angular.module('Darkswarm').controller "BillingCtrl", ($scope, $timeout, $controller) ->
angular.extend this, $controller('FieldsetMixin', {$scope: $scope})
$scope.name = "billing"
$scope.nextPanel = "shipping"
$scope.summary = ->
[$scope.order.bill_address.address1,
$scope.order.bill_address.city,
$scope.order.bill_address.zipcode]
$timeout $scope.onTimeout

View File

@@ -1,43 +0,0 @@
angular.module('Darkswarm').controller "CheckoutCtrl", ($scope, localStorageService, Checkout, CurrentUser, CurrentHub, $http) ->
$scope.Checkout = Checkout
$scope.submitted = false
# Bind to local storage
$scope.fieldsToBind = ["bill_address", "email", "payment_method_id", "shipping_method_id", "ship_address"]
prefix = "order_#{Checkout.order.id}#{CurrentUser.id or ""}#{CurrentHub.hub.id}"
for field in $scope.fieldsToBind
localStorageService.bind $scope, "Checkout.order.#{field}", Checkout.order[field], "#{prefix}_#{field}"
localStorageService.bind $scope, "Checkout.ship_address_same_as_billing", true, "#{prefix}_sameasbilling"
localStorageService.bind $scope, "Checkout.default_bill_address", false, "#{prefix}_defaultasbilladdress"
localStorageService.bind $scope, "Checkout.default_ship_address", false, "#{prefix}_defaultasshipaddress"
$scope.order = Checkout.order # Ordering is important
$scope.secrets = Checkout.secrets
$scope.enabled = !!CurrentUser.id?
$scope.purchase = (event, form) ->
event.preventDefault()
$scope.formdata = form
$scope.submitted = true
if CurrentUser.id
$scope.validateForm(form)
else
$scope.ensureUserIsGuest()
$scope.validateForm = ->
if $scope.formdata.$valid
$scope.Checkout.purchase()
else
$scope.$broadcast 'purchaseFormInvalid', $scope.formdata
$scope.ensureUserIsGuest = (callback = null) ->
$http.post("/user/registered_email", {email: $scope.order.email})
.then (response)->
window.CableReady.perform(response.data)
.catch ->
$scope.validateForm() if $scope.submitted
callback() if callback

View File

@@ -1,8 +0,0 @@
angular.module('Darkswarm').controller "CountryCtrl", ($scope, availableCountries) ->
$scope.countries = availableCountries
$scope.countriesById = $scope.countries.reduce (obj, country) ->
obj[country.id] = country
obj
, {}

View File

@@ -1,24 +0,0 @@
angular.module('Darkswarm').controller "DetailsCtrl", ($scope, $timeout, $http, CurrentUser, SpreeUser, $controller) ->
angular.extend this, $controller('FieldsetMixin', {$scope: $scope})
$scope.name = "details"
$scope.nextPanel = "billing"
$scope.login_or_next = (event) ->
event.preventDefault()
unless CurrentUser.id
$scope.ensureUserIsGuest($scope.next)
return
$scope.next()
$scope.summary = ->
[$scope.fullName(),
$scope.order.email,
$scope.order.bill_address.phone]
$scope.fullName = ->
[$scope.order.bill_address.firstname ? null,
$scope.order.bill_address.lastname ? null].join(" ").trim()
$timeout $scope.onTimeout

View File

@@ -1,19 +0,0 @@
angular.module('Darkswarm').controller "PaymentCtrl", ($scope, $timeout, savedCreditCards, Dates, $controller) ->
angular.extend this, $controller('FieldsetMixin', {$scope: $scope})
$scope.savedCreditCards = savedCreditCards
$scope.name = "payment"
$scope.months = Dates.months
$scope.years = Dates.years
$scope.secrets.card_month = "1"
$scope.secrets.card_year = moment().year()
for card in savedCreditCards when card.is_default
$scope.secrets.selected_card = card.id
break
$scope.summary = ->
[$scope.Checkout.paymentMethod()?.name]
$timeout $scope.onTimeout

View File

@@ -1,11 +0,0 @@
angular.module('Darkswarm').controller "ShippingCtrl", ($scope, $timeout, ShippingMethods, $controller) ->
angular.extend this, $controller('FieldsetMixin', {$scope: $scope})
$scope.ShippingMethods = ShippingMethods
$scope.name = "shipping"
$scope.nextPanel = "payment"
$scope.summary = ->
[$scope.Checkout.shippingMethod()?.name]
$timeout $scope.onTimeout

View File

@@ -25,6 +25,8 @@ angular.module('Darkswarm').controller "OrderCycleChangeCtrl", ($scope, $rootSco
Cart.reloadFinalisedLineItems()
ChangeableOrdersAlert.reload()
$rootScope.$broadcast 'orderCycleSelected'
event = new CustomEvent('orderCycleSelected')
window.dispatchEvent(event)
$scope.closesInLessThan3Months = () ->
moment().diff(moment(OrderCycle.orders_close_at(), "YYYY-MM-DD HH:mm:SS Z"), 'days') > -75

View File

@@ -1,22 +0,0 @@
angular.module('Darkswarm').controller "PageSelectionCtrl", ($scope, $rootScope, $location) ->
$scope.selectedPage = ->
# The path looks like `/contact` for the URL `https://ofn.org/shop#/contact`.
# We remove the slash at the beginning.
page = $location.path()[1..]
return $scope.whitelist[0] unless page
# If the path points to an unrelated path like `/login`, stay where we were.
return $scope.lastPage unless page in $scope.whitelist
$scope.lastPage = page
page
$scope.whitelistPages = (pages) ->
$scope.whitelist = pages
$scope.lastPage = pages[0]
# when an order cycle is changed, ensure the shop tab is active to save a click
$rootScope.$on "orderCycleSelected", ->
if $scope.selectedPage() != "shop"
$location.path("shop")

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
.seven.columns.alpha
%h5#status-message{ ng: { show: "StatusMessage.invalidMessage == ''", style: 'StatusMessage.statusMessage.style' } }
{{ StatusMessage.statusMessage.text || "&nbsp;" }}
%h5#status-message{ ng: { show: "StatusMessage.invalidMessage !== ''" }, style: 'color: #da5354' }
%h5#status-message{ ng: { show: "StatusMessage.invalidMessage !== ''" }, style: 'color: #C85136' }
{{ StatusMessage.invalidMessage || "&nbsp;" }}
.nine.columns.omega.text-right{ ng: { transclude: true } }

View File

@@ -15,6 +15,6 @@
.columns.small-12.medium-6.large-6.product-img
%img{"ng-src" => "{{::product.largeImage}}", "ng-if" => "::product.largeImage"}
%img.placeholder{ src: "/noimage/large.png", "ng-if" => "::!product.largeImage"}
%img.placeholder{ src: Spree::Image.default_image_url(:large), "ng-if" => "::!product.largeImage"}
%ng-include{src: "'partials/close.html'"}

View File

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

View File

@@ -0,0 +1,13 @@
# frozen_string_literal: true
class SessionChannel < ApplicationCable::Channel
def self.for_request(request)
"SessionChannel:#{request.session.id}"
end
def subscribed
return reject if current_user.nil?
stream_from "SessionChannel:#{session_id}"
end
end

View File

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

View File

@@ -1,4 +1,4 @@
%div{ id: @id, "data-controller": "modal #{@controllers}", "data-action": "keyup@document->modal#closeIfEscapeKey" }
%div{ id: @id, "data-controller": "modal #{@controller}", "data-action": "keyup@document->modal#closeIfEscapeKey", "data-#{@controller}-reflex-value": @reflex }
.reveal-modal-bg.fade{ "data-modal-target": "background", "data-action": "click->modal#close" }
.reveal-modal.fade.tiny.help-modal{ "data-modal-target": "modal" }
= content
@@ -7,4 +7,4 @@
.modal-actions
%input{ class: "button icon-plus #{close_button_class}", type: 'button', value: t('js.admin.modals.cancel'), "data-action": "click->modal#close" }
%input{ class: "button icon-plus primary", type: 'button', value: t('js.admin.modals.confirm'), "data-action": @confirm_actions }
%input{ class: "button icon-plus primary", type: 'button', value: t('js.admin.modals.confirm'), "data-action": @confirm_actions, "data-reflex": @confirm_reflexes }

View File

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

View File

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

View File

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

View File

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

View File

@@ -18,6 +18,8 @@ module Admin
end
end
ContentConfig.updated_at = Time.zone.now
flash[:success] =
t(:successfully_updated, resource: I18n.t('admin.contents.edit.your_content'))

View File

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

View File

@@ -7,6 +7,7 @@ module Admin
before_action :load_enterprise_fee_set, only: :index
before_action :load_data
before_action :check_enterprise_fee_input, only: [:bulk_update]
before_action :check_calculators_compatibility_with_taxes, only: [:bulk_update]
def index
@include_calculators = params[:include_calculators].present?
@@ -24,7 +25,6 @@ module Admin
format.json {
render_as_json @collection, controller: self, include_calculators: @include_calculators
}
# format.json { @presented_collection = @collection.each_with_index.map { |ef, i| EnterpriseFeePresenter.new(self, ef, i) } }
end
end
@@ -62,7 +62,7 @@ module Admin
when :for_order_cycle
order_cycle = OrderCycle.find_by(id: params[:order_cycle_id]) if params[:order_cycle_id]
coordinator = Enterprise.find_by(id: params[:coordinator_id]) if params[:coordinator_id]
order_cycle = OrderCycle.new(coordinator: coordinator) if order_cycle.nil? && coordinator.present?
order_cycle ||= OrderCycle.new(coordinator: coordinator) if coordinator.present?
enterprises = OpenFoodNetwork::OrderCyclePermissions.new(spree_current_user,
order_cycle).visible_enterprises
EnterpriseFee.for_enterprises(enterprises).order('enterprise_id', 'fee_type', 'name')
@@ -119,5 +119,17 @@ module Admin
end
end
end
def check_calculators_compatibility_with_taxes
enterprise_fee_bulk_params['collection_attributes'].each do |_, enterprise_fee|
next unless enterprise_fee['inherits_tax_category'] == "true"
next unless EnterpriseFee::PER_ORDER_CALCULATORS.include?(enterprise_fee['calculator_type'])
flash[:error] = I18n.t(
'activerecord.errors.models.enterprise_fee.inherit_tax_requires_per_item_calculator'
)
return redirect_to redirect_path
end
end
end
end

View File

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

View File

@@ -29,7 +29,6 @@ module Admin
after_action :geocode_address_if_use_geocoder, only: [:create, :update]
helper 'spree/products'
include OrderCyclesHelper
def index
@@ -47,6 +46,7 @@ module Admin
def edit
@object = Enterprise.where(permalink: params[:id]).
includes(users: [:ship_address, :bill_address]).first
@object.build_custom_tab if @object.custom_tab.nil?
if params[:stimulus]
@enterprise.is_primary_producer = params[:is_primary_producer]
@enterprise.sells = params[:enterprise_sells]
@@ -64,6 +64,8 @@ module Admin
update_tag_rules(tag_rules_attributes) if tag_rules_attributes.present?
update_enterprise_notifications
delete_custom_tab if params[:custom_tab] == 'false'
if @object.update(enterprise_params)
flash[:success] = flash_message_for(@object, :successfully_updated)
respond_with(@object) do |format|
@@ -119,8 +121,12 @@ module Admin
def for_order_cycle
respond_to do |format|
format.json do
render json: @collection,
each_serializer: Api::Admin::ForOrderCycle::EnterpriseSerializer, order_cycle: @order_cycle, spree_current_user: spree_current_user
render(
json: @collection,
each_serializer: Api::Admin::ForOrderCycle::EnterpriseSerializer,
order_cycle: @order_cycle,
spree_current_user: spree_current_user
)
end
end
end
@@ -136,6 +142,11 @@ module Admin
protected
def delete_custom_tab
@object.custom_tab.destroy if @object.custom_tab.present?
enterprise_params.delete(:custom_tab_attributes)
end
def build_resource
enterprise = super
enterprise.address ||= Spree::Address.new
@@ -171,7 +182,7 @@ module Admin
when :for_order_cycle
@order_cycle = OrderCycle.find_by(id: params[:order_cycle_id]) if params[:order_cycle_id]
coordinator = Enterprise.find_by(id: params[:coordinator_id]) if params[:coordinator_id]
@order_cycle = OrderCycle.new(coordinator: coordinator) if @order_cycle.nil? && coordinator.present?
@order_cycle ||= OrderCycle.new(coordinator: coordinator) if coordinator.present?
enterprises = OpenFoodNetwork::OrderCyclePermissions.new(spree_current_user, @order_cycle)
.visible_enterprises
@@ -179,7 +190,7 @@ module Admin
if enterprises.present?
enterprises.includes(
supplied_products:
[:supplier, { master: [:images], variants: { option_values: :option_type } }]
[:supplier, :variants, :image]
)
end
when :index
@@ -188,7 +199,8 @@ module Admin
editable_enterprises.
order('is_primary_producer ASC, name')
elsif json_request?
OpenFoodNetwork::Permissions.new(spree_current_user).editable_enterprises.ransack(params[:q]).result
OpenFoodNetwork::Permissions.new(spree_current_user)
.editable_enterprises.ransack(params[:q]).result
else
Enterprise.where("1=0")
end
@@ -196,7 +208,6 @@ module Admin
OpenFoodNetwork::Permissions.new(spree_current_user).visible_enterprises
.includes(:shipping_methods, :payment_methods).ransack(params[:q]).result
else
# TODO was ordered with is_distributor DESC as well, not sure why or how we want to sort this now
OpenFoodNetwork::Permissions.new(spree_current_user).
editable_enterprises.
order('is_primary_producer ASC, name')
@@ -317,7 +328,9 @@ module Admin
:producer_properties_attributes).nil?
names = Spree::Property.pluck(:name)
enterprise_params[:producer_properties_attributes].each do |key, property|
enterprise_params[:producer_properties_attributes].delete key unless names.include? property[:property_name]
unless names.include? property[:property_name]
enterprise_params[:producer_properties_attributes].delete key
end
end
end
end

View File

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

View File

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

View File

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

View File

@@ -40,8 +40,11 @@ module Admin
def index
respond_to do |format|
format.json do
render_as_json @collection, ams_prefix: params[:ams_prefix],
editable_schedule_ids: permissions.editable_schedules.pluck(:id)
render_as_json(
@collection,
ams_prefix: params[:ams_prefix],
editable_schedule_ids: permissions.editable_schedules.pluck(:id)
)
end
end
end
@@ -119,7 +122,8 @@ module Admin
.pluck(:id)
result = @existing_order_cycle_ids
result |= (requested & permitted) # add any requested & permitted ids
result -= ((result & permitted) - requested) # remove any existing and permitted ids that were not specifically requested
# remove any existing and permitted ids that were not specifically requested
result -= ((result & permitted) - requested)
result
end

View File

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

View File

@@ -26,11 +26,14 @@ module Admin
private
def load_enterprise
@enterprise = Enterprise.find_by permalink: params[:enterprise_id]
@enterprise = OpenFoodNetwork::Permissions
.new(spree_current_user)
.editable_enterprises
.find_by(permalink: params[:enterprise_id])
end
def permitted_resource_params
params.require(:voucher).permit(:code)
params.require(:voucher).permit(:code, :amount)
end
end
end

View File

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

View File

@@ -80,8 +80,12 @@ module Api
end
def permitted_ransack_params
[:name_or_meta_keywords_or_variants_display_as_or_variants_display_name_or_supplier_name_cont,
:with_properties, :primary_taxon_id_in_any]
[
"#{[:name, :meta_keywords, :variants_display_as,
:variants_display_name, :supplier_name]
.join('_or_')}_cont",
:with_properties, :primary_taxon_id_in_any
]
end
def distributor

View File

@@ -47,17 +47,15 @@ module Api
def capture
authorize! :admin, order
pending_payment = order.pending_payments.first
payment_capture = OrderCaptureService.new(order)
return payment_capture_failed unless order.payment_required? && pending_payment
if pending_payment.capture!
if payment_capture.call
render json: order.reload, serializer: Api::Admin::OrderSerializer, status: :ok
elsif payment_capture.gateway_error.present?
error_during_processing(payment_capture.gateway_error)
else
payment_capture_failed
end
rescue Spree::Core::GatewayError => e
error_during_processing(e)
end
private

View File

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

View File

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

View File

@@ -21,7 +21,9 @@ module Api
@shipment.refresh_rates
@shipment.save!
render json: @shipment.reload, serializer: Api::ShipmentSerializer, status: :ok
OrderWorkflow.new(@order).advance_to_payment if @order.line_items.any?
render json: @shipment, serializer: Api::ShipmentSerializer, status: :ok
end
def update
@@ -32,7 +34,7 @@ module Api
@shipment.fee_adjustment.fire_events(:open)
if @shipment.update(shipment_params)
@order.updater.update_totals_and_states
@order.update_totals_and_states
end
@shipment.fee_adjustment.close

View File

@@ -9,12 +9,12 @@ module Api
before_action :product
def index
@variants = scope.includes(option_values: :option_type).ransack(params[:q]).result
@variants = scope.ransack(params[:q]).result
render json: @variants, each_serializer: Api::VariantSerializer
end
def show
@variant = scope.includes(option_values: :option_type).find(params[:id])
@variant = scope.find(params[:id])
render json: @variant, serializer: Api::VariantSerializer
end
@@ -50,15 +50,15 @@ module Api
private
def product
@product ||= Spree::Product.find_by(permalink: params[:product_id]) if params[:product_id]
@product ||= Spree::Product.find(params[:product_id]) if params[:product_id]
end
def scope
if @product
variants = if current_api_user.has_spree_role?("admin") || params[:show_deleted]
@product.variants_including_master.with_deleted
@product.variants.with_deleted
else
@product.variants_including_master
@product.variants
end
else
variants = Spree::Variant.where(nil)

View File

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

View File

@@ -9,6 +9,7 @@ require 'spree/core/controller_helpers/common'
require 'open_food_network/referer_parser'
class ApplicationController < ActionController::Base
include CablecarResponses
include Pagy::Backend
include RequestTimeouts

View File

@@ -1,187 +0,0 @@
# frozen_string_literal: true
require 'open_food_network/address_finder'
class CheckoutController < ::BaseController
include OrderStockCheck
include OrderCompletion
include WhiteLabel
layout 'darkswarm'
helper 'terms_and_conditions'
helper 'checkout'
# We need pessimistic locking to avoid race conditions.
# Otherwise we fail on duplicate indexes or end up with negative stock.
prepend_around_action CurrentOrderLocker, only: [:edit, :update]
prepend_before_action :check_hub_ready_for_checkout
prepend_before_action :check_order_cycle_expiry
prepend_before_action :require_order_cycle
prepend_before_action :require_distributor_chosen
before_action :load_order
before_action :handle_insufficient_stock
before_action :associate_user
before_action :check_authorization
before_action :hide_ofn_navigation, only: :edit
helper 'spree/orders'
def edit; end
def update
params_adapter = Checkout::FormDataAdapter.new(permitted_params, @order, spree_current_user)
return action_failed unless @order.update(params_adapter.params[:order] || {})
checkout_workflow(params_adapter.shipping_method_id)
rescue Spree::Core::GatewayError => e
gateway_error(e)
action_failed(e)
rescue StandardError => e
flash[:error] = I18n.t("checkout.failed")
action_failed(e)
ensure
@order.update_order!
end
private
def check_authorization
authorize!(:edit, current_order, session[:access_token])
end
def load_order
load_checkout_order
return handle_invalid_stock unless valid_order_line_items?
before_address
setup_for_current_state
end
def handle_invalid_stock
reset_order_to_cart
respond_to do |format|
format.html do
redirect_to main_app.cart_path
end
format.json do
render json: { path: main_app.cart_path }, status: :bad_request
end
end
end
def setup_for_current_state
method_name = :"before_#{@order.state}"
__send__(method_name) if respond_to?(method_name, true)
end
def before_address
associate_user
finder = OpenFoodNetwork::AddressFinder.new(@order.email, @order.customer, spree_current_user)
@order.bill_address = finder.bill_address
@order.ship_address = finder.ship_address
end
def before_payment
current_order.payments.destroy_all if request.put?
end
def checkout_workflow(shipping_method_id)
while @order.state != "complete"
if @order.state == "payment"
update_payment_total
return if redirect_to_payment_gateway
return action_failed if @order.errors.any?
return action_failed unless @order.process_payments!
end
next if OrderWorkflow.new(@order).next({ "shipping_method_id" => shipping_method_id })
return action_failed
end
update_response
end
def update_payment_total
@order.updater.update_totals
@order.updater.update_pending_payment
end
def redirect_to_payment_gateway
return unless selected_payment_method.external_gateway?
return unless (redirect_url = selected_payment_method.external_payment_url(order: @order))
render json: { path: redirect_url }, status: :ok
true
end
def selected_payment_method
@selected_payment_method ||= Spree::PaymentMethod.find(
params.dig(:order, :payments_attributes, 0, :payment_method_id)
)
end
def update_response
if order_complete?
processing_succeeded
update_succeeded_response
else
action_failed(RuntimeError.new("Order not complete after the checkout workflow"))
end
end
def order_complete?
@order.state == "complete" || @order.completed?
end
def update_succeeded_response
respond_to do |format|
format.html do
respond_with(@order, location: order_completion_route)
end
format.json do
render json: { path: order_completion_route }, status: :ok
end
end
end
def action_failed(error = RuntimeError.new(order_processing_error))
processing_failed(error)
action_failed_response
end
def action_failed_response
respond_to do |format|
format.html do
render :edit
end
format.json do
discard_flash_errors
render json: { errors: @order.errors, flash: flash.to_hash }.to_json, status: :bad_request
end
end
end
def permitted_params
PermittedAttributes::Checkout.new(params).call
end
def discard_flash_errors
# Marks flash errors for deletion after the current action has completed.
# This ensures flash errors generated during XHR requests are not persisted in the
# session for longer than expected.
flash.discard(:error)
end
end

View File

@@ -30,6 +30,8 @@ module CheckoutCallbacks
@order.manual_shipping_selection = true
@order.checkout_processing = true
@voucher_adjustment = @order.voucher_adjustments.first
redirect_to(main_app.shop_path) && return if redirect_to_shop?
redirect_to_cart_path && return unless valid_order_line_items?
end

View File

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

View File

@@ -13,8 +13,6 @@ module OrderStockCheck
def handle_insufficient_stock
return if sufficient_stock?
reset_order_to_cart
flash[:error] = Spree.t(:inventory_error_flash_for_insufficient_quantity)
redirect_to main_app.cart_path
end
@@ -43,10 +41,4 @@ module OrderStockCheck
def sufficient_stock?
@sufficient_stock ||= @order.insufficient_stock_lines.blank?
end
def reset_order_to_cart
return if OpenFoodNetwork::FeatureToggle.enabled? :split_checkout, spree_current_user
OrderCheckoutRestart.new(@order).call
end
end

View File

@@ -5,10 +5,15 @@ module WhiteLabel
include EnterprisesHelper
def hide_ofn_navigation(distributor = current_distributor)
return false unless OpenFoodNetwork::FeatureToggle.enabled?(:white_label)
# if the distributor has the hide_ofn_navigation preference set to true
# then we should hide the OFN navigation
@hide_ofn_navigation = distributor.hide_ofn_navigation
# if the distributor has the hide_ofn_navigation preference
# set to false, there is no need to check the white_label_logo preference
return unless @hide_ofn_navigation
@white_label_logo = distributor.white_label_logo
@white_label_distributor = distributor
end
end

View File

@@ -4,7 +4,6 @@ require 'open_food_network/enterprise_injection_data'
class EnterprisesController < BaseController
layout "darkswarm"
helper Spree::ProductsHelper
include OrderCyclesHelper
include SerializerHelper
include WhiteLabel

View File

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

View File

@@ -24,12 +24,13 @@ class SplitCheckoutController < ::BaseController
def edit
redirect_to_step_based_on_order unless params[:step]
check_step if params[:step]
recalculate_tax if params[:step] == "summary"
flash_error_when_no_shipping_method_available if available_shipping_methods.none?
end
def update
return process_voucher if params[:apply_voucher].present?
if confirm_order || update_order
return if performed?
@@ -59,6 +60,27 @@ class SplitCheckoutController < ::BaseController
replace("#flashes", partial("shared/flashes", locals: { flashes: flash }))
end
def render_voucher_section_or_redirect
respond_to do |format|
format.cable_ready { render_voucher_section }
format.html { redirect_to checkout_step_path(:payment) }
end
end
# Using the power of cable_car we replace only the #voucher_section instead of reloading the page
def render_voucher_section
render(
status: :ok,
cable_ready: cable_car.replace(
"#voucher-section",
partial(
"split_checkout/voucher_section",
locals: { order: @order, voucher_adjustment: @order.voucher_adjustments.first }
)
)
)
end
def order_error_messages
# Remove ship_address.* errors if no shipping method is not selected
remove_ship_address_errors if no_ship_address_needed?
@@ -149,7 +171,7 @@ class SplitCheckoutController < ::BaseController
@order.select_shipping_method(params[:shipping_method_id])
@order.update(order_params)
@order.updater.update_totals_and_states
@order.update_totals_and_states
validate_current_step!
@@ -179,10 +201,48 @@ class SplitCheckoutController < ::BaseController
selected_shipping_method.first.require_ship_address == false
end
def process_voucher
if add_voucher
VoucherAdjustmentsService.calculate(@order)
render_voucher_section_or_redirect
elsif @order.errors.present?
render_error
end
end
def add_voucher
if params.dig(:order, :voucher_code).blank?
@order.errors.add(:voucher, I18n.t('split_checkout.errors.voucher_not_found'))
return false
end
# Fetch Voucher
voucher = Voucher.find_by(code: params[:order][:voucher_code], enterprise: @order.distributor)
if voucher.nil?
@order.errors.add(:voucher, I18n.t('split_checkout.errors.voucher_not_found'))
return false
end
adjustment = voucher.create_adjustment(voucher.code, @order)
unless adjustment.valid?
@order.errors.add(:voucher, I18n.t('split_checkout.errors.add_voucher_error'))
adjustment.errors.each { |error| @order.errors.import(error) }
return false
end
true
end
def summary_step?
params[:step] == "summary"
end
def payment_step?
params[:step] == "payment"
end
def advance_order_state
return if @order.complete?
@@ -248,9 +308,4 @@ class SplitCheckoutController < ::BaseController
redirect_to checkout_step_path(:payment) if params[:step] == "summary"
end
end
def recalculate_tax
@order.create_tax_charge!
@order.update_order!
end
end

View File

@@ -14,7 +14,7 @@ module Spree
def update_order
@order.reload
@order.updater.update_totals_and_states
@order.update_totals_and_states
end
def collection

View File

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

View File

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

View File

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

View File

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

View File

@@ -8,51 +8,50 @@ module Spree
include OpenFoodNetwork::SpreeApiKeyLoader
helper CheckoutHelper
before_action :load_order, only: [:edit, :update, :fire, :resend,
:invoice, :print]
before_action :load_distribution_choices, only: [:new, :edit, :update]
# Ensure that the distributor is set for an order when
before_action :ensure_distribution, only: :new
before_action :load_order, only: [:edit, :update, :fire, :resend, :invoice, :print]
before_action :load_distribution_choices, only: [:new, :create, :edit, :update]
before_action :require_distributor_abn, only: :invoice
before_action :restore_saved_query!, only: :index
respond_to :html, :json
def index
orders = SearchOrders.new(search_params, spree_current_user).orders
@pagy, @orders = pagy(orders, items: params[:per_page] || 15)
update_search_results if searching?
end
def new
@order = Order.create
@order.created_by = spree_current_user
@order.save
redirect_to spree.edit_admin_order_url(@order)
@order = Spree::Order.new
end
def edit
@order.shipments.map(&:refresh_rates)
end
OrderWorkflow.new(@order).advance_to_payment
@order.errors.clear
def create
@order = Spree::Order.new(order_params.merge(created_by: spree_current_user))
if @order.save(context: :require_distribution)
redirect_to spree.admin_order_customer_path(@order)
else
render :new
end
end
def update
@order.recreate_all_fees!
on_update
unless @order.cart?
@order.create_tax_charge!
@order.update_order!
end
if params[:set_distribution_step] && @order.update(order_params)
return redirect_to spree.admin_order_customer_path(@order)
end
unless order_params.present? && @order.update(order_params) && @order.line_items.present?
if @order.line_items.empty? && !params[:suppress_error_msg]
@order.errors.add(:line_items, Spree.t('errors.messages.blank'))
end
order_updated = order_params.present? && @order.update(order_params)
unless order_updated && line_items_present?
flash[:error] = @order.errors.full_messages.join(', ') if @order.errors.present?
return redirect_to spree.edit_admin_order_path(@order)
end
OrderWorkflow.new(@order).advance_to_payment
if @order.complete?
redirect_to spree.edit_admin_order_path(@order)
else
@@ -100,11 +99,61 @@ module Spree
end
def print
if OpenFoodNetwork::FeatureToggle.enabled?(:invoices)
@order = @order.invoices.find(params[:invoice_id]).presenter
end
render_with_wicked_pdf InvoiceRenderer.new.args(@order)
end
private
def line_items_present?
return true if @order.line_items.any?
@order.errors.add(:line_items, Spree.t('errors.messages.blank'))
false
end
def update_search_results
session[:admin_orders_search] = search_params
render cable_ready: cable_car.inner_html(
"#orders-index",
partial("spree/admin/orders/table", locals: { pagy: @pagy, orders: @orders })
)
end
def searching?
params[:q].present? && request.format.symbol == :cable_ready
end
def search_params
default_filters.deep_merge(
params.permit(:page, :per_page, :shipping_method_id, q: {})
).to_h.with_indifferent_access
end
def default_filters
{ q: { completed_at_not_null: 1, s: "completed_at desc" } }
end
def restore_saved_query!
return unless request.format.html?
@_params = ActionController::Parameters.new(session[:admin_orders_search] || {})
@stored_query = search_params.to_query
end
def on_update
@order.recreate_all_fees!
return if @order.cart?
@order.create_tax_charge!
@order.update_order!
end
def order_params
return params[:order] if params[:order].blank?
@@ -142,17 +191,6 @@ module Spree
ocs.closed +
ocs.undated
end
def ensure_distribution
unless @order
@order = Spree::Order.new
@order.generate_order_number
@order.save!
end
return if @order.distribution_set?
render 'set_distribution', locals: { order: @order }
end
end
end
end

View File

@@ -7,7 +7,6 @@ module Spree
before_action :load_data
before_action :validate_payment_method_provider, only: [:create]
before_action :load_hubs, only: [:new, :edit, :update]
before_action :validate_calculator_preferred_value, only: [:update]
respond_to :html
@@ -17,6 +16,10 @@ module Spree
@payment_method = payment_method_class.constantize.new(base_params)
@object = @payment_method
if !base_params["calculator_type"] && gateway_params["calculator_type"]
@payment_method.calculator_type = gateway_params["calculator_type"]
end
load_hubs
if @payment_method.save
@@ -44,6 +47,7 @@ module Spree
redirect_to spree.edit_admin_payment_method_path(@payment_method)
else
respond_with(@payment_method)
clear_preference_cache
end
end
@@ -182,33 +186,23 @@ module Spree
end
end
# Ensure the calculator to be updated is the correct type
if params_for_update["calculator_type"] && params_for_update["calculator_attributes"]
add_type_to_calculator_attributes(params_for_update)
end
params_for_update
end
end
def validate_calculator_preferred_value
return if calculator_preferred_values.all? do |value|
preferred_value_from_params = gateway_params.dig(:calculator_attributes, value)
preferred_value_from_params.nil? || Float(preferred_value_from_params,
exception: false)
def clear_preference_cache
@payment_method.calculator.preferences.each_key do |key|
Rails.cache.delete(@payment_method.calculator.preference_cache_key(key))
end
flash[:error] = I18n.t(:calculator_preferred_value_error)
redirect_to spree.edit_admin_payment_method_path(@payment_method)
end
def calculator_preferred_values
[
:preferred_amount,
:preferred_flat_percent,
:preferred_flat_percent,
:preferred_first_item,
:preferred_additional_item,
:preferred_max_items,
:preferred_normal_amount,
:preferred_discount_amount,
:preferred_minimal_amount
]
def add_type_to_calculator_attributes(hash)
hash["calculator_attributes"]["type"] = hash["calculator_type"]
end
end
end

View File

@@ -129,7 +129,8 @@ module Spree
@payment_methods.first
end
@previous_cards = @order.credit_cards.with_payment_profile
credit_card_ids = @order.payments.from_credit_card.pluck(:source_id).uniq
@previous_cards = CreditCard.where(id: credit_card_ids).with_payment_profile
end
# At this point admin should have passed through Customer Details step

View File

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

View File

@@ -7,7 +7,6 @@ require 'open_food_network/permissions'
module Spree
module Admin
class ProductsController < ::Admin::ResourceController
helper 'spree/products'
include OpenFoodNetwork::SpreeApiKeyLoader
include OrderCyclesHelper
include EnterprisesHelper
@@ -23,10 +22,6 @@ module Spree
def create
delete_stock_params_and_set_after do
if params[:product][:prototype_id].present?
@prototype = Spree::Prototype.find(params[:product][:prototype_id])
end
@object.attributes = permitted_resource_params
if @object.save
flash[:success] = flash_message_for(@object, :successfully_created)
@@ -108,7 +103,7 @@ module Spree
protected
def find_resource
Product.find_by!(permalink: params[:id])
Product.find(params[:id])
end
def location_after_save
@@ -117,7 +112,6 @@ module Spree
def load_data
@taxons = Taxon.order(:name)
@option_types = OptionType.order(:name)
@tax_categories = TaxCategory.order(:name)
@shipping_categories = ShippingCategory.order(:name)
end
@@ -127,8 +121,7 @@ module Spree
end
def product_includes
[{ variants: [:images, { option_values: :option_type }] },
{ master: [:images, :default_price] }]
[:image, { variants: [:images] }]
end
def collection_actions
@@ -188,7 +181,6 @@ module Spree
joins(:product).
where('spree_products.supplier_id IN (?)', editable_enterprises.collect(&:id)).
where('spree_variants.import_date IS NOT NULL').
where(spree_variants: { is_master: false }).
where(spree_variants: { deleted_at: nil }).
order('spree_variants.import_date DESC')
end
@@ -214,7 +206,7 @@ module Spree
end
def set_stock_levels(product, on_hand, on_demand)
variant = product_variant(product)
variant = product.variants.first
begin
variant.on_demand = on_demand if on_demand.present?
@@ -234,14 +226,6 @@ module Spree
end
end
def product_variant(product)
if product.variants.any?
product.variants.first
else
product.master
end
end
def set_product_master_variant_price_to_zero
@product.price = 0 if @product.price.nil?
end

View File

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

View File

@@ -10,7 +10,7 @@ module Spree
layout 'darkswarm'
rescue_from ActiveRecord::RecordNotFound, with: :render_404
helper 'spree/products', 'spree/orders'
helper 'spree/orders'
respond_to :html, :json
@@ -78,7 +78,7 @@ module Spree
format.html do
if params.key?(:checkout)
@order.next_transition.run_callbacks if @order.cart?
redirect_to main_app.checkout_state_path(@order.checkout_steps.first)
redirect_to main_app.checkout_step_path(@order.checkout_steps.first)
elsif @order.complete?
redirect_to main_app.order_path(@order)
else

View File

@@ -0,0 +1,32 @@
# frozen_string_literal: true
class VoucherAdjustmentsController < BaseController
include CablecarResponses
def destroy
@order = current_order
@order.voucher_adjustments.find_by(id: params[:id])&.destroy
respond_to do |format|
format.cable_ready { render_voucher_section }
format.html { redirect_to checkout_step_path(:payment) }
end
end
private
# Using the power of cable_car we replace only the #voucher_section instead of reloading the page
def render_voucher_section
render(
status: :ok,
cable_ready: cable_car.replace(
"#voucher-section",
partial(
"split_checkout/voucher_section",
locals: { order: @order, voucher_adjustment: @order.voucher_adjustments.first }
)
)
)
end
end

View File

@@ -49,13 +49,8 @@ module Admin
{ name: 'tag_rules', icon_class: "icon-random", show: is_shop },
{ name: 'shop_preferences', icon_class: "icon-shopping-cart", show: is_shop },
{ name: 'users', icon_class: "icon-user", show: true },
] + [add_white_label_if_feature_activated].compact
end
def add_white_label_if_feature_activated
return nil unless OpenFoodNetwork::FeatureToggle.enabled?(:white_label)
{ name: 'white_label', icon_class: "icon-leaf", show: true }
{ name: 'white_label', icon_class: "icon-leaf", show: true },
]
end
end
end

View File

@@ -34,7 +34,13 @@ class AngularFormBuilder < ActionView::Helpers::FormBuilder
options.reverse_merge!('id' => angular_id(method), 'ng-model' => angular_model(method).to_s)
@template.select_tag angular_name(method),
@template.ng_options_from_collection_for_select(collection, value_method, text_method, angular_field), options
@template.ng_options_from_collection_for_select(
collection,
value_method,
text_method,
angular_field
),
options
end
private

View File

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

View File

@@ -68,4 +68,14 @@ module ApplicationHelper
wicked_pdf_stylesheet_pack_tag(source)
end
end
def cache_with_locale(key = nil, options = {}, &block)
cache(cache_key_with_locale(key, I18n.locale), options) do
yield(block)
end
end
def cache_key_with_locale(key, locale)
Array.wrap(key) + [locale.to_s, I18nDigests.for_locale(locale)]
end
end

View File

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

View File

@@ -77,7 +77,8 @@ module EnterprisesHelper
end
def subscriptions_enabled?
spree_current_user.admin? || spree_current_user.enterprises.where(enable_subscriptions: true).any?
spree_current_user.admin? ||
spree_current_user.enterprises.where(enable_subscriptions: true).any?
end
def enterprise_url_selector(enterprise)
@@ -87,4 +88,10 @@ module EnterprisesHelper
main_app.producers_url
end
end
def main_logo_link(enterprise)
return enterprise.white_label_logo_link if enterprise&.white_label_logo_link.present?
main_app.root_path
end
end

View File

@@ -89,16 +89,6 @@ module InjectionHelper
render partial: "json/injection_ams", locals: { name: "orderCycleData", json: json }
end
def inject_available_shipping_methods
inject_json_array "shippingMethods", available_shipping_methods,
Api::ShippingMethodSerializer, current_order: current_order
end
def inject_available_payment_methods
inject_json_array "paymentMethods", available_payment_methods,
Api::PaymentMethodSerializer, current_order: current_order
end
def inject_taxons
inject_json_array "taxons", Spree::Taxon.all.to_a, Api::TaxonSerializer
end

View File

@@ -36,6 +36,13 @@ module OrderCyclesHelper
shipping_and_payment_methods: true
end
def distributors_with_editable_shipping_and_payment_methods(order_cycle)
return order_cycle.distributors if Enterprise
.managed_by(spree_current_user).exists?(order_cycle.coordinator.id)
order_cycle.distributors.managed_by(spree_current_user)
end
def order_cycle_status_class(order_cycle)
if order_cycle.undated?
'undated'
@@ -53,7 +60,8 @@ module OrderCyclesHelper
end
def simple_index
@simple_index ||= !OpenFoodNetwork::Permissions.new(spree_current_user).can_manage_complex_order_cycles?
@simple_index ||=
!OpenFoodNetwork::Permissions.new(spree_current_user).can_manage_complex_order_cycles?
end
def pickup_time(order_cycle = current_order_cycle)
@@ -73,7 +81,8 @@ module OrderCyclesHelper
def validated_enterprise_options(enterprises, options = {})
enterprises.map do |e|
disabled_message = nil
if options[:shipping_and_payment_methods] && (e.shipping_methods.empty? || e.payment_methods.available.empty?)
if options[:shipping_and_payment_methods] &&
(e.shipping_methods.empty? || e.payment_methods.available.empty?)
if e.shipping_methods.empty? && e.payment_methods.available.empty?
disabled_message = I18n.t(:no_shipping_or_payment)
elsif e.shipping_methods.empty?

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