Compare commits

...

278 Commits

Author SHA1 Message Date
Maikel
95839f88f2 Merge pull request #9623 from mkllnk/fix-storybook
Load storybook only in development
2022-09-02 16:32:19 +10:00
Maikel Linke
728eee6d3f Load storybook after view_component has been loaded automatically 2022-09-02 16:10:19 +10:00
Maikel Linke
7089bd597e Avoid loading view_component engine manually
We load view_component in the application config and it should be
automatic anyway.
2022-09-02 16:08:09 +10:00
Maikel Linke
2aade10aaf Load storybook only in development
The gem is not available in other environments an the app fails to boot.
2022-09-02 16:07:25 +10:00
Maikel
4057df5b93 Merge pull request #9586 from openfoodfoundation/dependabot/bundler/stripe-7.1.0
Bump stripe from 7.0.0 to 7.1.0
2022-09-02 13:34:11 +10:00
Filipe
8270a3f386 Merge pull request #9513 from filipefurtad0/matomo_tag_on_register_page
Add matomo_tag to /register pages
2022-09-01 10:19:54 +01:00
Maikel Linke
30a9e80024 Update translations 2022-09-01 11:55:03 +10:00
Maikel
612001fc3f Merge pull request #9600 from mkllnk/rubocop
Update rubocop config to avoid deprecation
2022-09-01 11:42:15 +10:00
Maikel
2a93968370 Merge pull request #9599 from mkllnk/load-storybook
Avoid storybook deprecation warning
2022-09-01 11:41:27 +10:00
Maikel
b0a4fcdc26 Merge pull request #9598 from mkllnk/spec-typos
Correct typo in spec which lead to flakiness
2022-09-01 11:39:38 +10:00
Maikel
04778c6fa8 Merge pull request #9597 from saunmanoj888/fix-account-setting-headers-alignment
Fix alignment for header Developer settings under Accounts settings
2022-08-31 16:01:41 +10:00
Filipe
8ace56956b Merge pull request #9560 from binarygit/replace-tooltip
Replace tooltip on Enterprise Settings /contact page
2022-08-30 16:23:09 +01:00
Maikel
b74c368de2 Merge pull request #9602 from filipefurtad0/fix_flaky_invoice_spec
Adds specific tax rates to each type of cost
2022-08-30 09:47:53 +10:00
filipefurtad0
e0a20bf8af Adds specific tax rates to each type of cost 2022-08-29 17:36:39 +01:00
Maikel Linke
17afdb5912 Update rubocop config to avoid deprecation 2022-08-29 15:31:18 +10:00
Maikel Linke
d55a43d4b1 Avoid storybook deprecation warning
Loading the engine directly is deprecated and I followed the current
documentation to load storybook in the app. This avoids a warning:

> DEPRECATION WARNING: This manually engine loading is deprecated and will be removed in v1.0.0. Remove `require "view_component/storybook/engine"`. (called from <top (required)> at config/application.rb:30)
2022-08-29 14:57:14 +10:00
Maikel Linke
bf3da0531e Correct grammar in spec description 2022-08-29 14:43:43 +10:00
Maikel Linke
3a365b6dc6 Remove useless braces 2022-08-29 14:42:11 +10:00
Maikel Linke
ee7dc821ca Correct typo in spec which lead to flakiness
I'm not sure why this spec passed on CI when it was retried but it was
obviously wrong. Correcting that copy&paste error seems to make the spec
pass.
2022-08-29 14:39:43 +10:00
Maikel
07018370e0 Merge pull request #9595 from openfoodfoundation/dependabot/bundler/jwt-2.5.0
Bump jwt from 2.4.1 to 2.5.0
2022-08-29 11:43:27 +10:00
Maikel
bba665e2e1 Merge pull request #9577 from filipefurtad0/invoice-spec
Moves invoice_spec.rb into /system; sets :rack_test as webdriver
2022-08-29 11:34:20 +10:00
saunmanoj888
5e69320ff5 Fix header alignmnet 2022-08-27 15:31:19 +05:30
dependabot[bot]
d0242d28d2 Bump jwt from 2.4.1 to 2.5.0
Bumps [jwt](https://github.com/jwt/ruby-jwt) from 2.4.1 to 2.5.0.
- [Release notes](https://github.com/jwt/ruby-jwt/releases)
- [Changelog](https://github.com/jwt/ruby-jwt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jwt/ruby-jwt/compare/v2.4.1...v2.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-26 09:04:29 +00:00
Maikel
9dbdcc9181 Merge pull request #9592 from openfoodfoundation/dependabot/bundler/redis-4.8.0
Bump redis from 4.7.1 to 4.8.0
2022-08-25 09:55:45 +10:00
Maikel
7819495d57 Merge pull request #9590 from openfoodfoundation/dependabot/bundler/puma-5.6.5
Bump puma from 5.6.4 to 5.6.5
2022-08-25 09:54:50 +10:00
Maikel
8723520848 Merge pull request #9585 from mkllnk/revert-stripe-update
Restore ability to check out with Stripe while storing a new card
2022-08-25 09:51:59 +10:00
binarygit
b76d9045ce Replace power-tip in enterprises/edit/<name>/contact with floatingUI 2022-08-24 13:31:45 +05:45
Maikel
b42d6cf2ac Merge pull request #9587 from openfoodfoundation/dependabot/bundler/valid_email2-4.0.4
Bump valid_email2 from 4.0.3 to 4.0.4
2022-08-24 16:52:13 +10:00
Maikel
f78e72af0d Merge pull request #9588 from openfoodfoundation/dependabot/bundler/rubocop-1.35.1
Bump rubocop from 1.35.0 to 1.35.1
2022-08-24 16:51:14 +10:00
dependabot[bot]
5e021b76b5 Bump valid_email2 from 4.0.3 to 4.0.4
Bumps [valid_email2](https://github.com/micke/valid_email2) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/micke/valid_email2/releases)
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v4.0.3...v4.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-24 06:50:55 +00:00
Maikel
d03a5458ff Merge pull request #9582 from openfoodfoundation/dependabot/bundler/view_component-2.69.0
Bump view_component from 2.68.0 to 2.69.0
2022-08-24 16:49:45 +10:00
dependabot[bot]
3aef0b4029 Bump stripe from 7.0.0 to 7.1.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v7.0.0...v7.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-24 06:48:28 +00:00
Maikel
cd5a83e814 Merge pull request #9581 from openfoodfoundation/dependabot/bundler/webmock-3.18.1
Bump webmock from 3.17.1 to 3.18.1
2022-08-24 16:47:45 +10:00
dependabot[bot]
a943d2fee6 Bump redis from 4.7.1 to 4.8.0
Bumps [redis](https://github.com/redis/redis-rb) from 4.7.1 to 4.8.0.
- [Release notes](https://github.com/redis/redis-rb/releases)
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v4.7.1...v4.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-24 06:47:28 +00:00
Maikel
b016ebd5b4 Merge pull request #9567 from openfoodfoundation/dependabot/bundler/bullet-7.0.3
Bump bullet from 7.0.2 to 7.0.3
2022-08-24 16:47:07 +10:00
Maikel
314459df92 Merge pull request #9566 from openfoodfoundation/dependabot/bundler/test-prof-1.0.10
Bump test-prof from 1.0.9 to 1.0.10
2022-08-24 16:46:29 +10:00
dependabot[bot]
eb0051c033 Bump puma from 5.6.4 to 5.6.5
Bumps [puma](https://github.com/puma/puma) from 5.6.4 to 5.6.5.
- [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/v5.6.4...v5.6.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 09:04:05 +00:00
dependabot[bot]
ca9a7d255e Bump rubocop from 1.35.0 to 1.35.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.35.0 to 1.35.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.35.0...v1.35.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 09:06:17 +00:00
Maikel Linke
7cb74f2452 Revert "Merge pull request #9456 from openfoodfoundation/dependabot/bundler/activemerchant-1.126.0"
This reverts commit 82f38c9aea, reversing
changes made to 689720b749.
2022-08-22 15:31:57 +10:00
dependabot[bot]
8f42c6fbed Bump view_component from 2.68.0 to 2.69.0
Bumps [view_component](https://viewcomponent.org) from 2.68.0 to 2.69.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>
2022-08-19 09:05:47 +00:00
dependabot[bot]
bb233c5656 Bump webmock from 3.17.1 to 3.18.1
Bumps [webmock](https://github.com/bblimke/webmock) from 3.17.1 to 3.18.1.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.17.1...v3.18.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-19 09:05:12 +00:00
filipefurtad0
be021f4697 Removes spec/features from the build-run 🎉 2022-08-17 23:25:02 +01:00
filipefurtad0
f47d86c15b Sets cuprite as default; sets rack_test in before/after blocks 2022-08-17 23:25:02 +01:00
Filipe
ae391f8af4 Merge pull request #9414 from Philwi/user-generates-api-key
Let users view and regenerates api key
2022-08-17 21:36:13 +01:00
Filipe
f28c52342c Merge pull request #9532 from jibees/9492-translate-404,-500,-422-errors-pages
Translate 404, 500, 422 errors pages
2022-08-17 21:12:04 +01:00
Filipe
d3f1d4a5f9 Merge pull request #9529 from Philwi/make-the-shop-url-clickable
Make the shop url clickable
2022-08-17 20:47:07 +01:00
Filipe
cedfa35a98 Merge pull request #9341 from jibees/9336-redirect-to-login_path-if-user-is-disabled
Disabled_at logic: redirect to login path if user is disabled
2022-08-17 20:33:57 +01:00
Filipe
c11b7ed268 Merge pull request #9407 from Philwi/handle-for-invalid-referer-for-embedded-page-service
Handle for invalid referer for embedded page service
2022-08-17 18:40:43 +01:00
Filipe
b992daa1d8 Merge pull request #9510 from binarygit/convert-enterprises/edit-page-to-stimulus
Convert enterprises/edit page to stimulus
2022-08-17 18:11:59 +01:00
Filipe
10aa534f52 Merge pull request #9554 from apricot12/9179-Note-on-invoices
Add order note at the end of both invoices following current UI patterns.
2022-08-17 17:41:23 +01:00
Filipe
de990b906d Merge pull request #9563 from aintluks/bulk-coop-report-csv
Disable header row bulk_coop report
2022-08-17 16:43:37 +01:00
Maikel Linke
41ef2a4ea5 Run invoice spec as feature spec 2022-08-17 16:30:57 +10:00
filipefurtad0
077479346e Moves invoice_print_spec into system 2022-08-17 16:21:54 +10:00
binarygit
19c33e4050 Add floating UI 2022-08-17 11:39:13 +05:45
Maikel
1ff3d4a534 Merge pull request #9571 from openfoodfoundation/dependabot/bundler/view_component-2.68.0
Bump view_component from 2.64.0 to 2.68.0
2022-08-17 15:06:46 +10:00
dependabot[bot]
8ae6a36b33 Bump bullet from 7.0.2 to 7.0.3
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.0.2 to 7.0.3.
- [Release notes](https://github.com/flyerhzm/bullet/releases)
- [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.0.2...7.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-17 04:59:40 +00:00
dependabot[bot]
d8687f30cd Bump test-prof from 1.0.9 to 1.0.10
Bumps [test-prof](https://github.com/test-prof/test-prof) from 1.0.9 to 1.0.10.
- [Release notes](https://github.com/test-prof/test-prof/releases)
- [Changelog](https://github.com/test-prof/test-prof/blob/master/CHANGELOG.md)
- [Commits](https://github.com/test-prof/test-prof/compare/v1.0.9...v1.0.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-17 04:58:49 +00:00
Maikel
bff2ddb8db Merge pull request #9565 from openfoodfoundation/dependabot/bundler/rubocop-1.35.0
Bump rubocop from 1.33.0 to 1.35.0
2022-08-17 14:56:36 +10:00
Lucas da Costa
2a9db0eea4 Disable header row bulk_coop report 2022-08-16 16:32:19 -03:00
Filipe
5c41022f76 Merge pull request #9165 from filipefurtad0/tax_split_checkout
[Split Checkout] Adds spec to test Tax charges (repoducing issue #9153)
2022-08-16 19:30:32 +01:00
dependabot[bot]
a9dec41cc1 Bump view_component from 2.64.0 to 2.68.0
Bumps [view_component](https://viewcomponent.org) from 2.64.0 to 2.68.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>
2022-08-16 09:04:18 +00:00
Maikel
918cbb8d92 Merge pull request #9570 from mkllnk/bundle-lock
Clean up Gemfile.lock after manual change
2022-08-16 16:16:19 +10:00
Maikel Linke
7cc7de7a5f Clean up Gemfile.lock
It was manually edited before which introduced a couple inconsistencies.
I'm fixing this up here by running `bundle` and restoring the bundler
version.
2022-08-16 16:10:30 +10:00
Maikel Linke
56d8d1eaf7 Scope helper methods to relevant test cases
Global methods are usually not a good idea.
2022-08-15 17:34:21 +01:00
dependabot[bot]
b57685e9d5 Bump rubocop from 1.33.0 to 1.35.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.33.0 to 1.35.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.33.0...v1.35.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 07:36:07 +00:00
Maikel
a3fa4a0d3e Merge pull request #9543 from filipefurtad0/remove_selenium_webdriver
Removes selenium-webdriver and webdriver gems; updates spec_helper
2022-08-15 17:34:46 +10:00
Maikel Linke
d86aeaa22a Remove unnecessary after-spec code 2022-08-15 16:51:53 +10:00
filipefurtad0
97f18d7b86 Changes names from helpers to prevent leak between specs 2022-08-15 16:13:37 +10:00
filipefurtad0
bded15a869 Updates spec for inclusive; adds pending related to epic 7540 2022-08-15 16:13:37 +10:00
filipefurtad0
fff5927cdf Changes pick-up into delivery shipping method
On line 62 we set the dependency on the shipping address to calculate taxes. Therefore, we might be better off mocking a delivery-shipping method instead of a pick-up shipping method and assuring the customers shipping address is used for this accordingly.
2022-08-15 16:13:37 +10:00
filipefurtad0
f9881b9af5 Removes if blocks from assert_db_
Initianlly, I thought it would be agood idea to have both setups - for included and added tax - in the same file. Hence, the private section would need to cover all cases. The PR has now two separate files, each one for the two tax types, so it seems unecessary to have these if blocks there. I think it is more readable this way.
2022-08-15 16:13:37 +10:00
filipefurtad0
79182a2d32 Removes test on 9131; moves test on 9153 into respective context 2022-08-15 16:13:37 +10:00
Jean-Baptiste Bellet
77eec6e6f3 Check step params and redirect if step is inconsistent to order state 2022-08-15 16:13:37 +10:00
filipefurtad0
a6e3f43344 Adds bug reproducing steps 2022-08-15 16:13:36 +10:00
filipefurtad0
f525a9f5da Adds inclusive tax-spec 2022-08-15 16:13:36 +10:00
filipefurtad0
2427bfa6ea Spec tax charging on legacy and split checkout 2022-08-15 16:13:36 +10:00
Maikel Linke
7eea4fdd1c Adds zone_with_state_member to zone factory
And make zone factories more flexible.
2022-08-15 16:13:36 +10:00
Filipe
dde4bd39b2 Merge pull request #9351 from vsmay98/9338-redirect-disabled-user-to-homepage
Redirect to homepage with flash error when disabled user trying to access any page
2022-08-12 13:52:19 +01:00
Maikel Linke
091c271237 Spec API key changes more precisely 2022-08-12 15:44:59 +10:00
Philipp Winkler
141a2a507d Make shop url clickable 2022-08-11 22:14:51 +02:00
Jean-Baptiste Bellet
36aabbb5b6 Update all locales with the latest Transifex translations 2022-08-11 18:14:48 +02:00
Filipe
82f38c9aea Merge pull request #9456 from openfoodfoundation/dependabot/bundler/activemerchant-1.126.0
Bump activemerchant from 1.123.0 to 1.126.0
2022-08-11 17:10:31 +01:00
Filipe
689720b749 Merge pull request #9437 from jibees/8897-preselect-default-card-and-do-not-allow-to-charge-if-no-card-is-marked-as-default
User account, Credit cards: Do not allow to check "Allow charges" if no credit cards marked as default
2022-08-11 16:34:42 +01:00
Filipe
50600b9d00 Merge pull request #9462 from openfoodfoundation/dependabot/bundler/pagy-5.10.1
Bump pagy from 5.1.2 to 5.10.1
2022-08-11 16:20:03 +01:00
filipefurtad0
232088f3a2 Adds the tag matomo code to the darkswarm template 2022-08-11 15:40:15 +01:00
filipefurtad0
66b9679a7c Adds matomo_tag to /register pages template 2022-08-11 14:07:02 +01:00
filipefurtad0
42753d85c7 Creates new file for matomo tag code 2022-08-11 14:07:02 +01:00
filipefurtad0
3eca13e2bc Renames general tracking code file; updates darkswarm 2022-08-11 14:07:02 +01:00
Rachel Arnould
abdef21381 Update FUNDING.yml 2022-08-11 14:45:42 +02:00
filipefurtad0
1fd09617cb Changes cookies_spec from feature to system spec 2022-08-11 10:44:22 +01:00
filipefurtad0
e5eb74f077 Updates spec_helper 2022-08-11 10:44:22 +01:00
Jean-Baptiste Bellet
f474947d2d Do not remove 500.html file since it is used by nxginx
in case of critical problems when application cannot respond
2022-08-11 11:41:39 +02:00
filipefurtad0
d1b90193a4 Removes selenium-webdriver & webdrivers gems 2022-08-11 10:34:24 +01:00
Nihal Mohammed
53ee5c32eb Add order note at the end of both invoices following current UI patterns
Add translation for note title in invoice

Update invoice spec to also test for order note
2022-08-10 23:02:13 +05:30
binarygit
79ba223e12 Delete angular code for side_menu 2022-08-10 15:14:15 +05:45
binarygit
27552c99b8 Render enterprise groups #edit and #new page using stimulus 2022-08-10 15:14:09 +05:45
binarygit
6b56a8df0a Display/hide side-menu items when values in primary details change 2022-08-10 15:11:53 +05:45
binarygit
e18a242b90 Render admin/enterprises/<name>/edit page using stimulus 2022-08-10 15:08:59 +05:45
jibees
4a3bd510a7 Merge pull request #9544 from jibees/upgrade-yarn-
Upgrade `yarn.lock` since it seemed to be derived
2022-08-10 09:06:16 +02:00
jibees
bb85473eba Merge pull request #9550 from openfoodfoundation/dependabot/bundler/webmock-3.17.1
Bump webmock from 3.17.0 to 3.17.1
2022-08-10 08:57:39 +02:00
jibees
d5fa5e298e Merge pull request #9551 from openfoodfoundation/dependabot/bundler/debug-1.6.2
Bump debug from 1.6.1 to 1.6.2
2022-08-10 08:57:08 +02:00
Jean-Baptiste Bellet
dab4939819 Upgrade yarn.lock since it seemed to be derived 2022-08-10 08:45:24 +02:00
jibees
43b29af922 Merge pull request #9545 from Philwi/control-capybara-headless-mode-via-environment-variable
Control capybara headless mode for testing via environment variable
2022-08-10 08:05:26 +02:00
dependabot[bot]
2c1acc14e6 Bump debug from 1.6.1 to 1.6.2
Bumps [debug](https://github.com/ruby/debug) from 1.6.1 to 1.6.2.
- [Release notes](https://github.com/ruby/debug/releases)
- [Commits](https://github.com/ruby/debug/compare/v1.6.1...v1.6.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-10 06:02:35 +00:00
dependabot[bot]
84f9da4a23 Bump webmock from 3.17.0 to 3.17.1
Bumps [webmock](https://github.com/bblimke/webmock) from 3.17.0 to 3.17.1.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.17.0...v3.17.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-10 06:00:05 +00:00
jibees
d817319aa4 Merge pull request #9539 from openfoodfoundation/dependabot/bundler/sidekiq-6.5.4
Bump sidekiq from 6.5.3 to 6.5.4
2022-08-10 07:58:25 +02:00
Philipp Winkler
093b851395 Control headless mode for testing via environment variable 2022-08-09 20:57:52 +02:00
Filipe
e3a150226e Merge pull request #9507 from openfoodfoundation/dependabot/bundler/stripe-7.0.0
Bump stripe from 5.42.0 to 7.0.0
2022-08-09 12:33:36 +01:00
Rachel Arnould
5122ed9af4 Update FUNDING.yml 2022-08-09 10:11:17 +02:00
Rachel Arnould
ac5a3beb15 Update FUNDING.yml 2022-08-09 10:10:44 +02:00
dependabot[bot]
19481fc55e Bump sidekiq from 6.5.3 to 6.5.4
Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/mperham/sidekiq/releases)
- [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/mperham/sidekiq/compare/v6.5.3...v6.5.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-09 06:48:01 +00:00
Maikel Linke
c8cab8aae5 Update mocked responses to get a ListObject 2022-08-09 15:13:16 +10:00
dependabot[bot]
d7428015ac Bump stripe from 5.42.0 to 7.0.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 5.42.0 to 7.0.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v5.42.0...v7.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-09 15:13:16 +10:00
Maikel
700f91efb5 Merge pull request #9449 from filipefurtad0/packing_report
Updates specs on Packing and Payment Reports
2022-08-09 14:56:22 +10:00
Maikel
43e4047447 Merge pull request #9495 from filipefurtad0/invoice_print_spec
Invoice print spec: added tax
2022-08-09 14:54:23 +10:00
Maikel
892e843e9e Merge pull request #9533 from filipefurtad0/remove_bye_bug
Removes byebug and pry-byebug; keeps pry 🧹
2022-08-09 10:39:21 +10:00
filipefurtad0
85904f57b8 Removes byebug and pry-byebug; keeps pry 2022-08-08 15:22:45 +01:00
Jean-Baptiste Bellet
60a5bf682b Handle errors page through controller ErrorsController 2022-08-08 15:36:46 +02:00
Jean-Baptiste Bellet
47c07831c1 Create an ErrorsController that handle errors thrown application 2022-08-08 15:36:23 +02:00
jibees
b5e23717f2 Merge pull request #9531 from mkllnk/awesome-print
Remove unnecessary awesome_print gem
2022-08-08 14:21:11 +02:00
jibees
d8d99c930e Merge pull request #9530 from openfoodfoundation/dependabot/bundler/webmock-3.17.0
Bump webmock from 3.15.0 to 3.17.0
2022-08-08 14:09:48 +02:00
filipefurtad0
ce96094f49 Adds around block with time.freeze 2022-08-08 12:23:11 +01:00
Maikel Linke
6c655e6fbc Remove unnecessary awesome_print gem
Most people don't know it and it has now been superseeded by new
versions of irb and debug.
2022-08-08 15:39:59 +10:00
Maikel Linke
2d1483febb Remove misleading comment
That comment was in the original commit of this source code and was
related to another gem which has long been removed.
2022-08-08 15:38:30 +10:00
Maikel
42d7383ff0 Merge pull request #9446 from jibees/add-prettier
Add prettier linter for stimulusjs files
2022-08-08 14:41:47 +10:00
Maikel Linke
df4ddf45c4 Only check, not fix in pre-commit hook 2022-08-08 14:40:58 +10:00
Jean-Baptiste Bellet
e0b40222dd add pre-commit hook
with husky and pretty-quick
2022-08-08 14:40:58 +10:00
Jean-Baptiste Bellet
61928cbc05 Run prettier formatter 2022-08-08 14:40:58 +10:00
Jean-Baptiste Bellet
c6884f96e1 Add prettier as a GH action 2022-08-08 14:40:58 +10:00
Jean-Baptiste Bellet
f0b5a04f6b Ignore everything but js files related to stimulusjs 2022-08-08 14:40:58 +10:00
Jean-Baptiste Bellet
b8ffddb533 Add prettier to our stack 2022-08-08 14:40:58 +10:00
dependabot[bot]
71536767b5 Bump webmock from 3.15.0 to 3.17.0
Bumps [webmock](https://github.com/bblimke/webmock) from 3.15.0 to 3.17.0.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.15.0...v3.17.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 04:18:03 +00:00
Maikel
938056d1d8 Merge pull request #9453 from openfoodfoundation/dependabot/bundler/angular_rails_csrf-5.0.0
Bump angular_rails_csrf from 4.5.0 to 5.0.0
2022-08-08 14:16:56 +10:00
Maikel
63d2d69d08 Clarify copying of test build URL
And removing an unused translation step
2022-08-08 12:47:28 +10:00
Maikel
78ec086111 Merge pull request #9501 from Michaelcode2/master
Added file "uk.yml" to directory openfoodnetwork/config/locales/
2022-08-08 12:34:01 +10:00
Philipp Winkler
bf53a02270 Add api key toggle view checkbox 2022-08-07 09:48:49 +02:00
filipefurtad0
2aded5b459 Clarifies pending examples 2022-08-05 17:43:02 +01:00
filipefurtad0
5aa6b14756 Fixes tax values 2022-08-05 16:41:35 +01:00
filipefurtad0
07bd84ffbb Tests added tax - legacy and alternative invoices 2022-08-05 16:41:35 +01:00
filipefurtad0
d2794f328f Tests included tax - legacy and alternative invoices 2022-08-05 16:41:35 +01:00
filipefurtad0
8b146fc72a Adds included_in_price trait on broken specs 2022-08-05 16:41:35 +01:00
filipefurtad0
0c491a6651 Adds test case for added tax 2022-08-05 16:41:35 +01:00
filipefurtad0
e8529754f1 Updates order and product factory to consider added tax 2022-08-05 16:41:35 +01:00
dependabot[bot]
d95dc84c34 Bump pagy from 5.1.2 to 5.10.1
Bumps [pagy](https://github.com/ddnexus/pagy) from 5.1.2 to 5.10.1.
- [Release notes](https://github.com/ddnexus/pagy/releases)
- [Changelog](https://github.com/ddnexus/pagy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ddnexus/pagy/compare/5.1.2...5.10.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 14:59:59 +00:00
Filipe
b61ee0211f Merge pull request #9525 from filipefurtad0/adds_debug_gem
Adds debug gem to the stack
2022-08-05 15:58:45 +01:00
filipefurtad0
c777a00874 Adds debug gem to the stack, bundled with 2.1.4 2022-08-05 14:01:47 +01:00
jibees
a0a2dab44f Merge pull request #9523 from openfoodfoundation/dependabot/bundler/sidekiq-6.5.3
Bump sidekiq from 6.5.1 to 6.5.3
2022-08-05 11:31:58 +02:00
jibees
f0aa7f44a5 Merge pull request #9524 from openfoodfoundation/dependabot/bundler/rubocop-1.33.0
Bump rubocop from 1.32.0 to 1.33.0
2022-08-05 11:31:18 +02:00
dependabot[bot]
a51940937a Bump rubocop from 1.32.0 to 1.33.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.32.0 to 1.33.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.32.0...v1.33.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 09:06:01 +00:00
dependabot[bot]
f1e401070a Bump sidekiq from 6.5.1 to 6.5.3
Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.1 to 6.5.3.
- [Release notes](https://github.com/mperham/sidekiq/releases)
- [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/mperham/sidekiq/compare/v6.5.1...v6.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 09:05:41 +00:00
Jean-Baptiste Bellet
999b04ef99 Update all locales with the latest Transifex translations 2022-08-05 09:18:05 +02:00
Maikel
da5e8fcb9f Merge pull request #9130 from georgethoppil/remove-from-customerlist
Update orders and delete subscriptions when customer deleted
2022-08-05 10:35:07 +10:00
Rachel Arnould
e22b9997fe Update README.md 2022-08-04 16:58:51 +02:00
dependabot[bot]
609cbe2893 Bump angular_rails_csrf from 4.5.0 to 5.0.0
Bumps [angular_rails_csrf](https://github.com/jsanders/angular_rails_csrf) from 4.5.0 to 5.0.0.
- [Release notes](https://github.com/jsanders/angular_rails_csrf/releases)
- [Changelog](https://github.com/jsanders/angular_rails_csrf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsanders/angular_rails_csrf/compare/v4.5.0...v5.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 12:15:53 +00:00
jibees
425970aba2 Merge pull request #9519 from openfoodfoundation/dependabot/bundler/view_component-2.64.0
Bump view_component from 2.63.0 to 2.64.0
2022-08-04 14:14:32 +02:00
jibees
ace5151afa Merge pull request #9518 from openfoodfoundation/dependabot/npm_and_yarn/storybook/addon-docs-6.5.10
Bump @storybook/addon-docs from 6.5.9 to 6.5.10
2022-08-04 14:14:14 +02:00
jibees
3b652581b5 Merge pull request #9517 from openfoodfoundation/dependabot/npm_and_yarn/storybook/server-6.5.10
Bump @storybook/server from 6.5.9 to 6.5.10
2022-08-04 14:14:06 +02:00
jibees
17692e722a Merge pull request #9516 from openfoodfoundation/dependabot/npm_and_yarn/storybook/addon-controls-6.5.10
Bump @storybook/addon-controls from 6.5.9 to 6.5.10
2022-08-04 14:13:56 +02:00
jibees
a2826b0fdf Merge pull request #9515 from openfoodfoundation/dependabot/bundler/angular-rails-templates-1.2.0
Bump angular-rails-templates from 1.1.0 to 1.2.0
2022-08-04 14:13:43 +02:00
dependabot[bot]
d766f6c0b2 Bump view_component from 2.63.0 to 2.64.0
Bumps [view_component](https://github.com/github/view_component) from 2.63.0 to 2.64.0.
- [Release notes](https://github.com/github/view_component/releases)
- [Changelog](https://github.com/github/view_component/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/github/view_component/compare/v2.63.0...v2.64.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>
2022-08-04 09:06:59 +00:00
dependabot[bot]
0f715e531c Bump @storybook/addon-docs from 6.5.9 to 6.5.10
Bumps [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/addons/docs) from 6.5.9 to 6.5.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.10/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.10/addons/docs)

---
updated-dependencies:
- dependency-name: "@storybook/addon-docs"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 09:05:54 +00:00
dependabot[bot]
fba83f847b Bump @storybook/server from 6.5.9 to 6.5.10
Bumps [@storybook/server](https://github.com/storybookjs/storybook/tree/HEAD/app/server) from 6.5.9 to 6.5.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.10/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.10/app/server)

---
updated-dependencies:
- dependency-name: "@storybook/server"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 09:05:41 +00:00
dependabot[bot]
5603745744 Bump @storybook/addon-controls from 6.5.9 to 6.5.10
Bumps [@storybook/addon-controls](https://github.com/storybookjs/storybook/tree/HEAD/addons/controls) from 6.5.9 to 6.5.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.10/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.10/addons/controls)

---
updated-dependencies:
- dependency-name: "@storybook/addon-controls"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 09:05:26 +00:00
dependabot[bot]
2b2f9c205e Bump angular-rails-templates from 1.1.0 to 1.2.0
Bumps [angular-rails-templates](https://github.com/pitr/angular-rails-templates) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/pitr/angular-rails-templates/releases)
- [Changelog](https://github.com/pitr/angular-rails-templates/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pitr/angular-rails-templates/compare/v1.1.0...v1.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 09:05:14 +00:00
jibees
feff2b726b Merge pull request #9430 from openfoodfoundation/dependabot/bundler/rspec-rails-5.1.2
Bump rspec-rails from 5.0.2 to 5.1.2
2022-08-04 09:51:54 +02:00
Maikel Linke
8b3d513aa2 Don't upgrade rspec-mocks which seems to be buggy
One of our specs failed even though it was correct:

- spec/controllers/spree/admin/base_controller_spec.rb
2022-08-04 15:54:43 +10:00
Filipe
dd17f98edb Merge pull request #9196 from jibees/8912-change-order-creation-form-steps-order
Admin, Order creation: Change steps ordering
2022-08-03 09:09:43 +01:00
Maikel
c9adcd1479 Merge pull request #9406 from filipefurtad0/oaf_reports_specs
Orders and fulfilments report specs improvement (cont. #9350)
2022-08-03 15:25:38 +10:00
jibees
29c8b0b1a5 Merge pull request #9504 from openfoodfoundation/dependabot/npm_and_yarn/babel/preset-env-7.18.10
Bump @babel/preset-env from 7.18.9 to 7.18.10
2022-08-02 15:13:04 +02:00
jibees
6404c7427c Merge pull request #9503 from openfoodfoundation/dependabot/bundler/webmock-3.15.0
Bump webmock from 3.14.0 to 3.15.0
2022-08-02 15:12:39 +02:00
jibees
85eab5b436 Merge pull request #9502 from openfoodfoundation/dependabot/bundler/view_component-2.63.0
Bump view_component from 2.62.0 to 2.63.0
2022-08-02 15:12:08 +02:00
Michael
912713a0c9 added Ukrainian lang. file uk.yml, corrected uk:Ukrainian 2022-08-02 13:22:17 +03:00
dependabot[bot]
ca3b9f8085 Bump @babel/preset-env from 7.18.9 to 7.18.10
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.18.9 to 7.18.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.10/packages/babel-preset-env)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 09:08:43 +00:00
dependabot[bot]
ac00a20639 Bump webmock from 3.14.0 to 3.15.0
Bumps [webmock](https://github.com/bblimke/webmock) from 3.14.0 to 3.15.0.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.14.0...v3.15.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 09:07:46 +00:00
dependabot[bot]
139c994e06 Bump view_component from 2.62.0 to 2.63.0
Bumps [view_component](https://github.com/github/view_component) from 2.62.0 to 2.63.0.
- [Release notes](https://github.com/github/view_component/releases)
- [Changelog](https://github.com/github/view_component/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/github/view_component/compare/v2.62.0...v2.63.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>
2022-08-02 09:05:18 +00:00
Michael
3621616f7c Delete en_UA.yml 2022-08-02 11:53:17 +03:00
Michael
41ddd653a0 Added file "uk.yml" to openfoodnetwork/config/locales/
Added file "uk.yml" to directory openfoodnetwork/config/locales/
Ukrainian language translation (UA)
2022-08-02 11:52:36 +03:00
Michael
d8c7c0141a added Ukrainian translation file en_UA.yml 2022-08-02 11:34:12 +03:00
Rachel Arnould
3fa2dd4772 Merge pull request #9496 from saunmanoj888/change-translation-calculator-to-fees
Change translation for calculator section from Calculator to Fees
2022-08-02 10:10:23 +02:00
Rachel Arnould
cf26c465cc Merge pull request #9390 from binarygit/feature/update-orders-table
Feature/update orders table
2022-08-02 10:10:03 +02:00
Rachel Arnould
1bc50fd7cb Merge pull request #9404 from jibees/9384-reports-format-all-money-as-number
Admin, Reports: format all currency columns as numerical values (and no as currency value)
2022-08-02 10:09:22 +02:00
Maikel
719724de0b Merge pull request #9440 from mkllnk/webp
Support WEBP images again
2022-08-02 17:19:24 +10:00
saunmanoj888
804ed81acb Change translation for calculator section from Calculator to Fees 2022-07-31 01:04:02 +05:30
jibees
e980f8882c Merge pull request #9476 from openfoodfoundation/dependabot/bundler/bootsnap-1.13.0
Bump bootsnap from 1.12.0 to 1.13.0
2022-07-29 17:07:40 +02:00
dependabot[bot]
73f910e90c Bump bootsnap from 1.12.0 to 1.13.0
Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.12.0 to 1.13.0.
- [Release notes](https://github.com/Shopify/bootsnap/releases)
- [Changelog](https://github.com/Shopify/bootsnap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Shopify/bootsnap/compare/v1.12.0...v1.13.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-29 09:03:09 +00:00
jibees
5135d32cd8 Merge pull request #9472 from openfoodfoundation/dependabot/bundler/dotenv-rails-2.8.1
Bump dotenv-rails from 2.7.6 to 2.8.1
2022-07-28 15:12:19 +02:00
jibees
91d87c887b Merge pull request #9469 from openfoodfoundation/dependabot/bundler/pdf-reader-2.10.0
Bump pdf-reader from 2.5.0 to 2.10.0
2022-07-28 15:10:52 +02:00
georgethoppil
786fe55fc8 Removing dependent destroy on order 2022-07-28 13:41:15 +02:00
georgethoppil
b202678a6b Delete proxy orders when subscription is deleted 2022-07-28 13:41:14 +02:00
GeorgeThoppil
0e8d2d307b Clearer translation wording for has_associated_subscriptions 2022-07-28 13:41:14 +02:00
GeorgeThoppil
832b8caa8b Update spec when deleting customer with subscription and remove unused translation key 2022-07-28 13:41:14 +02:00
GeorgeThoppil
a50b75659f Update orders and delete subscriptions when customer deleted 2022-07-28 13:41:14 +02:00
dependabot[bot]
df44898557 Bump dotenv-rails from 2.7.6 to 2.8.1
Bumps [dotenv-rails](https://github.com/bkeepers/dotenv) from 2.7.6 to 2.8.1.
- [Release notes](https://github.com/bkeepers/dotenv/releases)
- [Changelog](https://github.com/bkeepers/dotenv/blob/master/Changelog.md)
- [Commits](https://github.com/bkeepers/dotenv/compare/v2.7.6...v2.8.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-28 09:04:46 +00:00
dependabot[bot]
5a70985e0e Bump rspec-rails from 5.0.2 to 5.1.2
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 5.0.2 to 5.1.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/v5.0.2...v5.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-28 08:50:45 +00:00
Jean-Baptiste Bellet
4791b570e4 Update specs ; Expect customer creation later when creating order
The terms are a bit confusing. Updating "Customer Details" updates attributes of the order which will later be used to create a customer.
Customers are not created while the order is in `cart` state. That happens later when the order advances automatically.
2022-07-28 09:52:37 +02:00
Jean-Baptiste Bellet
f087b7184c Update specs to reflect order steps changes 2022-07-28 09:31:42 +02:00
Jean-Baptiste Bellet
fa9c2b24f2 Select Customer Details as step title for Set Distribution step 2022-07-28 09:31:42 +02:00
Jean-Baptiste Bellet
e3683d25ca Change second step order: Customer Details instead of Order Details
This second step comes from a first one, which is Set Distribution
2022-07-28 09:31:42 +02:00
dependabot[bot]
21c0baa965 Bump activemerchant from 1.123.0 to 1.126.0
Bumps [activemerchant](https://github.com/activemerchant/active_merchant) from 1.123.0 to 1.126.0.
- [Release notes](https://github.com/activemerchant/active_merchant/releases)
- [Changelog](https://github.com/activemerchant/active_merchant/blob/master/CHANGELOG)
- [Commits](https://github.com/activemerchant/active_merchant/compare/v1.123.0...v1.126.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-28 01:10:42 +00:00
Maikel Linke
75a8d9caf0 Update translations 2022-07-28 11:09:29 +10:00
Maikel
1089a66fff Merge pull request #9465 from openfoodfoundation/dependabot/bundler/rails-6.1.6.1
Bump rails from 6.1.6 to 6.1.6.1
2022-07-28 11:08:39 +10:00
jibees
1feb7b4065 Merge pull request #9457 from openfoodfoundation/dependabot/bundler/i18n-1.12.0
Bump i18n from 1.8.10 to 1.12.0
2022-07-27 16:12:45 +02:00
dependabot[bot]
e7cbcf2b51 Bump pdf-reader from 2.5.0 to 2.10.0
Bumps [pdf-reader](https://github.com/yob/pdf-reader) from 2.5.0 to 2.10.0.
- [Release notes](https://github.com/yob/pdf-reader/releases)
- [Changelog](https://github.com/yob/pdf-reader/blob/main/CHANGELOG)
- [Commits](https://github.com/yob/pdf-reader/compare/v2.5.0...v2.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 14:12:07 +00:00
jibees
7b7c6ec7d7 Merge pull request #9467 from openfoodfoundation/dependabot/bundler/combine_pdf-1.0.22
Bump combine_pdf from 1.0.21 to 1.0.22
2022-07-27 16:09:38 +02:00
jibees
db99ecf255 Merge pull request #9466 from openfoodfoundation/dependabot/bundler/json-2.6.2
Bump json from 2.6.1 to 2.6.2
2022-07-27 16:09:23 +02:00
dependabot[bot]
87846529a2 Bump combine_pdf from 1.0.21 to 1.0.22
Bumps [combine_pdf](https://github.com/boazsegev/combine_pdf) from 1.0.21 to 1.0.22.
- [Release notes](https://github.com/boazsegev/combine_pdf/releases)
- [Changelog](https://github.com/boazsegev/combine_pdf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/boazsegev/combine_pdf/compare/v1.0.21...v1.0.22)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 13:01:48 +00:00
dependabot[bot]
e50f298a0a Bump i18n from 1.8.10 to 1.12.0
Bumps [i18n](https://github.com/ruby-i18n/i18n) from 1.8.10 to 1.12.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.8.10...v1.12.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 13:00:22 +00:00
dependabot[bot]
bbc54d4467 Bump json from 2.6.1 to 2.6.2
Bumps [json](https://github.com/flori/json) from 2.6.1 to 2.6.2.
- [Release notes](https://github.com/flori/json/releases)
- [Changelog](https://github.com/flori/json/blob/master/CHANGES.md)
- [Commits](https://github.com/flori/json/compare/v2.6.1...v2.6.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 13:00:22 +00:00
Jean-Baptiste Bellet
006bcd2cf8 Add Symbol class allowed for YAML deserialization 2022-07-27 15:00:19 +02:00
jibees
e56c803610 Merge pull request #9464 from openfoodfoundation/dependabot/bundler/bootsnap-1.12.0
Bump bootsnap from 1.10.1 to 1.12.0
2022-07-27 14:58:56 +02:00
jibees
5a9ff58bcf Merge pull request #9463 from openfoodfoundation/dependabot/bundler/active_storage_validations-0.9.8
Bump active_storage_validations from 0.9.7 to 0.9.8
2022-07-27 11:27:48 +02:00
Jean-Baptiste Bellet
7747f2592e Add BigDecimal classe allowed for YAML deserialization
The soft enforcement of the Rails 6.1.6.1 security update in picked up
one more classes that were serialized in the database with YAML: BigDecimal
2022-07-27 11:26:42 +02:00
dependabot[bot]
59504c3d84 Bump rails from 6.1.6 to 6.1.6.1
Bumps [rails](https://github.com/rails/rails) from 6.1.6 to 6.1.6.1.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v6.1.6...v6.1.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 07:29:49 +00:00
dependabot[bot]
57535af982 Bump bootsnap from 1.10.1 to 1.12.0
Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.10.1 to 1.12.0.
- [Release notes](https://github.com/Shopify/bootsnap/releases)
- [Changelog](https://github.com/Shopify/bootsnap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Shopify/bootsnap/compare/v1.10.1...v1.12.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 07:29:10 +00:00
dependabot[bot]
66358240dc Bump active_storage_validations from 0.9.7 to 0.9.8
Bumps [active_storage_validations](https://github.com/igorkasyanchuk/active_storage_validations) from 0.9.7 to 0.9.8.
- [Release notes](https://github.com/igorkasyanchuk/active_storage_validations/releases)
- [Changelog](https://github.com/igorkasyanchuk/active_storage_validations/blob/master/CHANGES.md)
- [Commits](https://github.com/igorkasyanchuk/active_storage_validations/commits/0.9.8)

---
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>
2022-07-27 07:28:51 +00:00
jibees
a283a7fe49 Merge pull request #9451 from openfoodfoundation/dependabot/bundler/rubocop-1.32.0
Bump rubocop from 1.22.2 to 1.32.0
2022-07-27 09:27:23 +02:00
jibees
42cdfe3c1e Merge pull request #9455 from openfoodfoundation/dependabot/bundler/test-unit-3.5.3
Bump test-unit from 3.5.0 to 3.5.3
2022-07-27 09:26:52 +02:00
jibees
806dd6254b Merge pull request #9461 from openfoodfoundation/dependabot/bundler/valid_email2-4.0.3
Bump valid_email2 from 4.0.0 to 4.0.3
2022-07-27 09:26:34 +02:00
jibees
40b53442a8 Merge pull request #9460 from openfoodfoundation/dependabot/bundler/capybara-3.37.1
Bump capybara from 3.36.0 to 3.37.1
2022-07-27 09:26:01 +02:00
dependabot[bot]
7662d3fd6a Bump rubocop from 1.22.2 to 1.32.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.22.2 to 1.32.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.22.2...v1.32.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 06:29:18 +00:00
dependabot[bot]
e4ea9d8cd1 Bump test-unit from 3.5.0 to 3.5.3
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.5.0 to 3.5.3.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.5.0...3.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 06:29:16 +00:00
dependabot[bot]
c6374555b9 Bump valid_email2 from 4.0.0 to 4.0.3
Bumps [valid_email2](https://github.com/micke/valid_email2) from 4.0.0 to 4.0.3.
- [Release notes](https://github.com/micke/valid_email2/releases)
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v4.0.0...v4.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 06:28:36 +00:00
dependabot[bot]
bda5ca33d9 Bump capybara from 3.36.0 to 3.37.1
Bumps [capybara](https://github.com/teamcapybara/capybara) from 3.36.0 to 3.37.1.
- [Release notes](https://github.com/teamcapybara/capybara/releases)
- [Changelog](https://github.com/teamcapybara/capybara/blob/master/History.md)
- [Commits](https://github.com/teamcapybara/capybara/compare/3.36.0...3.37.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 06:28:11 +00:00
jibees
7a10037de8 Merge pull request #9459 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.15.2
Bump rubocop-rails from 2.13.2 to 2.15.2
2022-07-27 08:27:58 +02:00
jibees
a8d5fede17 Merge pull request #9458 from openfoodfoundation/dependabot/bundler/view_component-2.62.0
Bump view_component from 2.57.1 to 2.62.0
2022-07-27 08:27:01 +02:00
dependabot[bot]
daa2bd5127 Bump rubocop-rails from 2.13.2 to 2.15.2
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.13.2 to 2.15.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.13.2...v2.15.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>
2022-07-27 02:08:59 +00:00
dependabot[bot]
506574aefd Bump view_component from 2.57.1 to 2.62.0
Bumps [view_component](https://github.com/github/view_component) from 2.57.1 to 2.62.0.
- [Release notes](https://github.com/github/view_component/releases)
- [Changelog](https://github.com/github/view_component/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/github/view_component/compare/v2.57.1...v2.62.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>
2022-07-27 02:08:12 +00:00
Maikel
4f099da58f Merge pull request #9452 from openfoodfoundation/dependabot/bundler/rswag-specs-2.5.1
Bump rswag-specs from 2.4.0 to 2.5.1
2022-07-27 12:06:50 +10:00
Maikel Linke
59c9f0957b Simplify default card logic 2022-07-27 11:14:18 +10:00
jibees
6baa36cdaa Merge pull request #9454 from openfoodfoundation/dependabot/bundler/rails-i18n-7.0.5
Bump rails-i18n from 7.0.1 to 7.0.5
2022-07-26 17:15:10 +02:00
jibees
e0a8b320a9 Merge pull request #9450 from openfoodfoundation/dependabot/bundler/timecop-0.9.5
Bump timecop from 0.9.4 to 0.9.5
2022-07-26 17:12:24 +02:00
filipefurtad0
116f503cf6 Updates Payments reports spec 2022-07-26 16:07:29 +01:00
filipefurtad0
023ebe1909 Asserts on pre-filling of dates; removes manual date selection 2022-07-26 16:07:29 +01:00
dependabot[bot]
d54eb48662 Bump rswag-specs from 2.4.0 to 2.5.1
Bumps [rswag-specs](https://github.com/rswag/rswag) from 2.4.0 to 2.5.1.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.4.0...2.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-26 14:13:06 +00:00
dependabot[bot]
542e8e22bf Bump rails-i18n from 7.0.1 to 7.0.5
Bumps [rails-i18n](https://github.com/svenfuchs/rails-i18n) from 7.0.1 to 7.0.5.
- [Release notes](https://github.com/svenfuchs/rails-i18n/releases)
- [Changelog](https://github.com/svenfuchs/rails-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/svenfuchs/rails-i18n/commits/v7.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-26 14:12:46 +00:00
dependabot[bot]
e0426d6dc0 Bump timecop from 0.9.4 to 0.9.5
Bumps [timecop](https://github.com/travisjeffery/timecop) from 0.9.4 to 0.9.5.
- [Release notes](https://github.com/travisjeffery/timecop/releases)
- [Changelog](https://github.com/travisjeffery/timecop/blob/master/History.md)
- [Commits](https://github.com/travisjeffery/timecop/compare/v0.9.4...v0.9.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-26 14:10:19 +00:00
jibees
a09900c98d Merge pull request #9433 from openfoodfoundation/dependabot/bundler/rswag-api-2.5.1
Bump rswag-api from 2.4.0 to 2.5.1
2022-07-26 16:10:15 +02:00
jibees
f563fcad7f Merge pull request #9434 from openfoodfoundation/dependabot/bundler/letter_opener-1.8.1
Bump letter_opener from 1.7.0 to 1.8.1
2022-07-26 16:09:56 +02:00
jibees
34b76f8683 Merge pull request #9401 from openfoodfoundation/dependabot/bundler/selenium-webdriver-4.3.0
Bump selenium-webdriver from 4.0.3 to 4.3.0
2022-07-26 16:09:42 +02:00
jibees
ec82bdda97 Merge pull request #9376 from openfoodfoundation/dependabot/bundler/jwt-2.4.1
Bump jwt from 2.3.0 to 2.4.1
2022-07-26 16:09:32 +02:00
jibees
e4c2df4989 Merge pull request #9326 from openfoodfoundation/dependabot/bundler/sidekiq-6.5.1
Bump sidekiq from 6.3.1 to 6.5.1
2022-07-26 16:09:22 +02:00
jibees
a1f577dc01 Merge pull request #9400 from openfoodfoundation/dependabot/bundler/rswag-ui-2.5.1
Bump rswag-ui from 2.4.0 to 2.5.1
2022-07-26 16:09:11 +02:00
jibees
edbf92424d Merge pull request #9377 from openfoodfoundation/dependabot/bundler/paranoia-2.6.0
Bump paranoia from 2.4.3 to 2.6.0
2022-07-26 16:08:58 +02:00
jibees
35c18664fc Merge pull request #9389 from jibees/9388-handle-plural-in-order-selection-component
Handle plural (and 0) on orders selection component
2022-07-26 15:57:58 +02:00
jibees
be568cdfa6 Update config/locales/en.yml
Co-authored-by: Maikel <maikel@email.org.au>
2022-07-26 14:42:55 +02:00
Jean-Baptiste Bellet
0bb90d764c Allow charges is disabled if no saved cards marked as default 2022-07-26 14:42:55 +02:00
Jean-Baptiste Bellet
34c8748b9c Mark the next credit cards with payment profile as default 2022-07-26 14:42:55 +02:00
Jean-Baptiste Bellet
875c22346e Add a tooltip on <td /> when input is disabled, ie no default saved cards
Co-Authored-By: Maikel <maikel@email.org.au>
2022-07-26 14:42:54 +02:00
filipefurtad0
c57d5a2408 Updates spec to smoke-test Pack by Product 2022-07-26 12:49:08 +01:00
Maikel
825058472b Merge pull request #9425 from openfoodfoundation/dependabot/npm_and_yarn/stimulus-3.1.0
Bump stimulus from 3.0.1 to 3.1.0
2022-07-26 16:49:33 +10:00
Maikel Linke
b419f063dc Support WEBP images again
We introduced a list of formats we support and forgot to add webp. Now I
added that as allowed format again and modified the error message.

I removed the first sentence from the error message because it's very
similar to the default error which is shown as well.
2022-07-26 11:09:41 +10:00
Maikel Linke
0ebc803e22 Simplify reports SQL query 2022-07-26 11:05:41 +10:00
dependabot[bot]
cd2119707a Bump rswag-ui from 2.4.0 to 2.5.1
Bumps [rswag-ui](https://github.com/rswag/rswag) from 2.4.0 to 2.5.1.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.4.0...2.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:56:05 +00:00
dependabot[bot]
8c27406a7a Bump paranoia from 2.4.3 to 2.6.0
Bumps [paranoia](https://github.com/rubysherpas/paranoia) from 2.4.3 to 2.6.0.
- [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/2.4.3...v2.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:55:49 +00:00
dependabot[bot]
b6defc76a8 Bump jwt from 2.3.0 to 2.4.1
Bumps [jwt](https://github.com/jwt/ruby-jwt) from 2.3.0 to 2.4.1.
- [Release notes](https://github.com/jwt/ruby-jwt/releases)
- [Changelog](https://github.com/jwt/ruby-jwt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jwt/ruby-jwt/compare/v2.3.0...v2.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:55:29 +00:00
dependabot[bot]
50529d7ab3 Bump sidekiq from 6.3.1 to 6.5.1
Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.3.1 to 6.5.1.
- [Release notes](https://github.com/mperham/sidekiq/releases)
- [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/mperham/sidekiq/compare/v6.3.1...v6.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:55:12 +00:00
dependabot[bot]
b695f3d47f Bump selenium-webdriver from 4.0.3 to 4.3.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.0.3 to 4.3.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/commits/selenium-4.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:54:43 +00:00
dependabot[bot]
90ce61fa47 Bump letter_opener from 1.7.0 to 1.8.1
Bumps [letter_opener](https://github.com/ryanb/letter_opener) from 1.7.0 to 1.8.1.
- [Release notes](https://github.com/ryanb/letter_opener/releases)
- [Changelog](https://github.com/ryanb/letter_opener/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ryanb/letter_opener/compare/v1.7.0...v1.8.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:13:23 +00:00
dependabot[bot]
7c2352f2d6 Bump rswag-api from 2.4.0 to 2.5.1
Bumps [rswag-api](https://github.com/rswag/rswag) from 2.4.0 to 2.5.1.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.4.0...2.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:13:07 +00:00
dependabot[bot]
ef7194af85 Bump stimulus from 3.0.1 to 3.1.0
Bumps [stimulus](https://github.com/stimulusjs/stimulus) from 3.0.1 to 3.1.0.
- [Release notes](https://github.com/stimulusjs/stimulus/releases)
- [Changelog](https://github.com/hotwired/stimulus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stimulusjs/stimulus/compare/v3.0.1...v3.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:12:14 +00:00
Jean-Baptiste Bellet
09adc8f690 In Enterprise Fees Summary report, SUM column should be numeric
+ update specs as well
2022-07-25 15:08:39 +02:00
filipefurtad0
86b448445f Adds test cases on Distributor Totals by Supplier 2022-07-22 14:05:33 +01:00
filipefurtad0
ba9ba7da95 Adds test cases to OC Supplier Totals by Distributor 2022-07-22 14:05:33 +01:00
filipefurtad0
f02e1ea04a Adds test cases to Order Cycle Supplier Totals 2022-07-22 14:05:33 +01:00
filipefurtad0
f88b31ec67 Adds assertion on table headers for different sub-report types 2022-07-22 14:05:33 +01:00
filipefurtad0
6906dd47e8 Changes I18n to strings and cleans up Order Cycle Customer Totals 2022-07-22 14:04:58 +01:00
Jean-Baptiste Bellet
2a35c48498 Do not format price as currency, but as number
for all the `Packing Reports`, ie
Pack By Customer
Pack By Supplier
Pack By Product
2022-07-22 09:28:36 +02:00
Jean-Baptiste Bellet
ce0031934a Do not format sum_total as currency, but as number
For the `Bulk Co-op Supplier Report` report
2022-07-22 09:27:52 +02:00
Jean-Baptiste Bellet
a3cb1e6ecc Can Allow charges only if one card is marked as default 2022-07-21 14:42:36 +02:00
Maikel Linke
dd6c066f5a DRY view with JS translation 2022-07-20 17:01:10 +10:00
binarygit
1d54777d72 Replace view with status column in past orders table 2022-07-19 13:30:11 +05:45
binarygit
5e7bfc05d2 Remove link from order number in open/past orders table 2022-07-13 20:10:45 +05:45
binarygit
3c741f0686 Add flash after an order is cancelled 2022-07-13 18:45:43 +05:45
Philipp Winkler
6291e3c587 Handle invalid referer for embedded page service 2022-07-11 22:07:00 +02:00
Jean-Baptiste Bellet
06b1c9aa40 Handle plural (and 0) on orders selection component 2022-07-06 09:48:12 +02:00
Vishal Jain
3143cc9d92 skip disabled user check for session controller 2022-07-05 11:35:11 +05:30
Vishal Jain
84b711e130 redirect disabled user to homepage 2022-06-24 18:09:15 +05:30
Jean-Baptiste Bellet
4007b17b1e Redirect to login path also if user is disabled
+ update spec as well
2022-06-22 15:51:11 +02:00
185 changed files with 8445 additions and 2361 deletions

4
.github/FUNDING.yml vendored
View File

@@ -1,8 +1,8 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
github: openfoodfoundation
patreon: # Replace with a single Patreon username
open_collective: ofnusa
open_collective: #
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry

View File

@@ -17,24 +17,12 @@ assignees: ''
## Testing
- [ ] [Find build] of the release commit and copy it below.
- [ ] Move this issue to Test Ready and notify testers.
- [ ] Test: :warning: link to the build of the release commit https://semaphoreci.com/openfoodfoundation/openfoodnetwork-2/branches/master
- [ ] Move this issue to Test Ready.
- [ ] Notify testers.
- [ ] Test build: <!-- paste build link here, e.g. https://semaphore...builds/1234 -->
## Finish on Tuesday
- [ ] Update translations unless content has been removed from config/locales/en.yml between this release draft and current master.
<details><summary>Command line instructions</summary>
<pre>
git checkout master # same version as the release draft
git fetch upstream
git diff upstream/master -- config/locales/en.yml
tx pull --force # if no changes or only additions in the locale
git checkout --detach # if we need to commit new translations
git commit -a -m "Update translations"
git tag vx.y.z # put the release number in here
git push upstream vx.y.z
</pre>
</details>
- [ ] Publish and notify [#global-community]:
> The next release is ready: https://github.com/openfoodfoundation/openfoodnetwork/releases/latest
- [ ] Deploy the new release to all managed instances.

View File

@@ -36,7 +36,6 @@ jobs:
specs:
- "spec/controllers"
- "spec/models"
- "spec/features/admin/[a-o0-9]*_spec.rb"
- "spec/lib"
- "spec/migrations"
- "spec/serializers"

View File

@@ -16,3 +16,16 @@ jobs:
reporter: github-pr-check
level: error
fail_on_error: true
prettier:
name: runner / prettier
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- name: prettier
uses: EPMatt/reviewdog-action-prettier@v1
with:
github_token: ${{ secrets.github_token }}
reporter: github-pr-check
level: error
fail_on_error: true

4
.husky/pre-commit Executable file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
yarn pretty-quick --check --staged

21
.prettierignore Normal file
View File

@@ -0,0 +1,21 @@
# Basically, ignore everythings expect app/webpacker/controllers/*.js and app/webpacker/packs/*.js
*.css
*.scss
*.md
*.yml
*.yaml
*.json
*.html
babel.config.js
postcss.config.js
.storybook/
/app/assets/
/config/
/coverage/
/engines/
/public/
/spec/
/tmp/
/vendor/

1
.prettierrc.json Normal file
View File

@@ -0,0 +1 @@
{}

View File

@@ -23,7 +23,7 @@ Metrics:
Enabled: true
Metrics/BlockLength:
IgnoredMethods: [
AllowedMethods: [
"class_eval",
"collection",
"context",
@@ -41,6 +41,7 @@ Metrics/BlockLength:
"resources",
"scenario",
"shared_examples",
"xdescribe",
]
Rails/SkipsModelValidations:

View File

@@ -1,13 +1,13 @@
# This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1400`
# on 2022-03-29 16:07:39 UTC using RuboCop version 1.22.2.
# on 2022-08-29 05:26:26 UTC using RuboCop version 1.35.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
# Offense count: 1
# Cop supports --auto-correct.
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include.
# Include: **/*.gemfile, **/Gemfile, **/gems.rb
Bundler/OrderedGems:
@@ -25,20 +25,13 @@ Gemspec/RequiredRubyVersion:
- 'engines/web/web.gemspec'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
Layout/ClosingParenthesisIndentation:
Exclude:
- 'lib/reporting/queries/joins.rb'
# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: EmptyLineBetweenMethodDefs, EmptyLineBetweenClassDefs, EmptyLineBetweenModuleDefs, AllowAdjacentOneLineDefs, NumberOfEmptyLines.
Layout/EmptyLineBetweenDefs:
Exclude:
- 'spec/lib/reports/report_loader_spec.rb'
# Offense count: 2
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: empty_lines, no_empty_lines
Layout/EmptyLinesAroundBlockBody:
@@ -47,15 +40,15 @@ Layout/EmptyLinesAroundBlockBody:
- 'spec/system/admin/order_cycles/list_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowDoxygenCommentStyle, AllowGemfileRubyComment.
Layout/LeadingCommentSpace:
Exclude:
- 'spec/system/admin/enterprises_spec.rb'
# Offense count: 856
# Cop supports --auto-correct.
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
# Offense count: 862
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns, IgnoredPatterns.
# URISchemes: http, https
Layout/LineLength:
Exclude:
@@ -68,7 +61,6 @@ Layout/LineLength:
- 'app/controllers/admin/subscriptions_controller.rb'
- 'app/controllers/api/v0/order_cycles_controller.rb'
- 'app/controllers/payment_gateways/paypal_controller.rb'
- 'app/controllers/spree/admin/reports_controller.rb'
- 'app/controllers/spree/users_controller.rb'
- 'app/controllers/user_confirmations_controller.rb'
- 'app/helpers/angular_form_builder.rb'
@@ -85,7 +77,6 @@ Layout/LineLength:
- 'app/models/concerns/variant_stock.rb'
- 'app/models/customer.rb'
- 'app/models/enterprise.rb'
- 'app/models/enterprise_group.rb'
- 'app/models/product_import/entry_processor.rb'
- 'app/models/product_import/spreadsheet_entry.rb'
- 'app/models/product_import/unit_converter.rb'
@@ -111,23 +102,15 @@ Layout/LineLength:
- 'engines/order_management/app/services/order_management/subscriptions/validator.rb'
- 'engines/order_management/spec/services/order_management/order/updater_spec.rb'
- 'engines/web/app/helpers/web/cookies_policy_helper.rb'
- 'engines/web/spec/features/consumer/cookies_spec.rb'
- 'lib/discourse/single_sign_on.rb'
- 'lib/open_food_network/enterprise_fee_applicator.rb'
- 'lib/open_food_network/enterprise_fee_calculator.rb'
- 'lib/open_food_network/enterprise_issue_validator.rb'
- 'lib/open_food_network/order_cycle_form_applicator.rb'
- 'lib/open_food_network/order_cycle_permissions.rb'
- 'lib/open_food_network/scope_variants_for_search.rb'
- 'lib/reporting/line_items.rb'
- 'lib/reporting/reports/bulk_coop/bulk_coop_report.rb'
- 'lib/reporting/reports/enterprise_fee_summary/report_data/enterprise_fee_type_total.rb'
- 'lib/reporting/reports/order_cycle_management/order_cycle_management_report.rb'
- 'lib/open_food_network/order_cycle_permissions.rb'
- 'lib/reporting/reports/orders_and_fulfillment/customer_totals_report.rb'
- 'lib/reporting/reports/orders_and_fulfillment/distributor_totals_by_supplier_report.rb'
- 'lib/reporting/reports/payments/payments_report.rb'
- 'lib/reporting/reports/products_and_inventory/lettuce_share_report.rb'
- 'lib/reporting/reports/sales_tax/sales_tax_report.rb'
- 'lib/reporting/reports/xero_invoices/base.rb'
- 'lib/spree/localized_number.rb'
- 'lib/tasks/data.rake'
@@ -145,12 +128,10 @@ Layout/LineLength:
- 'spec/controllers/admin/subscriptions_controller_spec.rb'
- 'spec/controllers/admin/variant_overrides_controller_spec.rb'
- 'spec/controllers/api/v0/base_controller_spec.rb'
- 'spec/controllers/api/v0/enterprises_controller_spec.rb'
- 'spec/controllers/api/v0/exchange_products_controller_spec.rb'
- 'spec/controllers/api/v0/logos_controller_spec.rb'
- 'spec/controllers/api/v0/order_cycles_controller_spec.rb'
- 'spec/controllers/api/v0/orders_controller_spec.rb'
- 'spec/controllers/api/v0/product_images_controller_spec.rb'
- 'spec/controllers/api/v0/products_controller_spec.rb'
- 'spec/controllers/api/v0/promo_images_controller_spec.rb'
- 'spec/controllers/api/v0/terms_and_conditions_controller_spec.rb'
@@ -164,7 +145,6 @@ Layout/LineLength:
- 'spec/controllers/spree/admin/orders/invoices_spec.rb'
- 'spec/controllers/spree/admin/orders_controller_spec.rb'
- 'spec/controllers/spree/admin/payment_methods_controller_spec.rb'
- 'spec/controllers/spree/admin/reports_controller_spec.rb'
- 'spec/controllers/spree/admin/variants_controller_spec.rb'
- 'spec/controllers/spree/credit_cards_controller_spec.rb'
- 'spec/controllers/spree/orders_controller_spec.rb'
@@ -187,13 +167,9 @@ Layout/LineLength:
- 'spec/lib/open_food_network/tag_rule_applicator_spec.rb'
- 'spec/lib/reports/customers_report_spec.rb'
- 'spec/lib/reports/order_cycle_management_report_spec.rb'
- 'spec/lib/reports/order_grouper_spec.rb'
- 'spec/lib/reports/orders_and_fulfillment/orders_and_fulfillment_report_spec.rb'
- 'spec/lib/reports/packing/packing_report_spec.rb'
- 'spec/lib/reports/products_and_inventory_report_spec.rb'
- 'spec/lib/reports/users_and_enterprises_report_spec.rb'
- 'spec/lib/reports/xero_invoices_report_spec.rb'
- 'spec/lib/stripe/authorize_response_patcher_spec.rb'
- 'spec/mailers/order_mailer_spec.rb'
- 'spec/mailers/producer_mailer_spec.rb'
- 'spec/mailers/subscription_mailer_spec.rb'
@@ -201,7 +177,6 @@ Layout/LineLength:
- 'spec/models/concerns/calculated_adjustments_spec.rb'
- 'spec/models/concerns/order_shipment_spec.rb'
- 'spec/models/concerns/product_stock_spec.rb'
- 'spec/models/enterprise_group_spec.rb'
- 'spec/models/enterprise_relationship_spec.rb'
- 'spec/models/enterprise_spec.rb'
- 'spec/models/exchange_spec.rb'
@@ -227,7 +202,6 @@ Layout/LineLength:
- 'spec/models/tag_rule/filter_payment_methods_spec.rb'
- 'spec/models/tag_rule/filter_products_spec.rb'
- 'spec/models/tag_rule/filter_shipping_methods_spec.rb'
- 'spec/models/terms_of_service_file_spec.rb'
- 'spec/models/variant_override_spec.rb'
- 'spec/requests/api/orders_spec.rb'
- 'spec/requests/checkout/failed_checkout_spec.rb'
@@ -287,6 +261,7 @@ Layout/LineLength:
- 'spec/system/admin/variant_overrides_spec.rb'
- 'spec/system/consumer/authentication_spec.rb'
- 'spec/system/consumer/caching/shops_caching_spec.rb'
- 'spec/system/consumer/cookies_spec.rb'
- 'spec/system/consumer/shopping/cart_spec.rb'
- 'spec/system/consumer/shopping/checkout_auth_spec.rb'
- 'spec/system/consumer/shopping/checkout_spec.rb'
@@ -300,35 +275,20 @@ Layout/LineLength:
- 'spec/views/spree/admin/payment_methods/index.html.haml_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
Layout/MultilineBlockLayout:
Exclude:
- 'spec/lib/reports/report_renderer_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: symmetrical, new_line, same_line
Layout/MultilineMethodCallBraceLayout:
Exclude:
- 'lib/reporting/queries/joins.rb'
# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: aligned, indented, indented_relative_to_receiver
Layout/MultilineMethodCallIndentation:
Exclude:
- 'lib/reporting/reports/customers/customers_report.rb'
# Offense count: 20
# Cop supports --auto-correct.
# Offense count: 22
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowInHeredoc.
Layout/TrailingWhitespace:
Exclude:
- 'app/controllers/spree/admin/shipping_methods_controller.rb'
- 'spec/controllers/spree/admin/shipping_methods_controller_spec.rb'
- 'spec/system/admin/enterprises_spec.rb'
- 'spec/system/admin/order_spec.rb'
- 'spec/system/admin/shipping_methods_spec.rb'
- 'spec/system/flatpickr_spec.rb'
@@ -357,6 +317,7 @@ Lint/DuplicateMethods:
- 'lib/discourse/single_sign_on.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
Lint/DuplicateRequire:
Exclude:
- 'spec/lib/open_food_network/scope_variants_to_search_spec.rb'
@@ -378,9 +339,8 @@ Lint/IneffectiveAccessModifier:
Exclude:
- 'app/models/spree/user.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedMethods.
# AllowedMethods: instance_of?, kind_of?, is_a?, eql?, respond_to?, equal?
Lint/RedundantSafeNavigation:
@@ -388,6 +348,7 @@ Lint/RedundantSafeNavigation:
- 'app/models/spree/payment.rb'
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowedMethods.
# AllowedMethods: present?, blank?, presence, try, try!, in?
Lint/SafeNavigationChain:
@@ -396,22 +357,21 @@ Lint/SafeNavigationChain:
- 'app/models/spree/stock/availability_validator.rb'
# Offense count: 2
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods.
Lint/UnusedMethodArgument:
Exclude:
- 'lib/reporting/queries/query_interface.rb'
# Offense count: 5
# Cop supports --auto-correct.
# Configuration parameters: AllowComments.
# This cop supports unsafe autocorrection (--autocorrect-all).
Lint/UselessMethodDefinition:
Exclude:
- 'app/controllers/spree/user_registrations_controller.rb'
- 'app/models/spree/gateway.rb'
# Offense count: 38
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes, Max.
# Offense count: 28
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, CountRepeatedAttributes, Max.
Metrics/AbcSize:
Exclude:
- 'app/controllers/admin/enterprises_controller.rb'
@@ -433,20 +393,14 @@ Metrics/AbcSize:
- 'app/models/spree/return_authorization.rb'
- 'lib/discourse/single_sign_on.rb'
- 'lib/open_food_network/order_cycle_form_applicator.rb'
- 'lib/reporting/reports/bulk_coop/bulk_coop_report.rb'
- 'lib/reporting/reports/customers/customers_report.rb'
- 'lib/open_food_network/order_cycle_permissions.rb'
- 'lib/reporting/reports/orders_and_distributors/orders_and_distributors_report.rb'
- 'lib/reporting/reports/packing/customer.rb'
- 'lib/reporting/reports/payments/payments_report.rb'
- 'lib/reporting/reports/sales_tax/sales_tax_report.rb'
- 'lib/spree/core/controller_helpers/order.rb'
- 'lib/tasks/enterprises.rake'
- 'spec/services/order_checkout_restart_spec.rb'
# Offense count: 43
# Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods.
# IgnoredMethods: refine
# Offense count: 42
# Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
# AllowedMethods: refine
Metrics/BlockLength:
Exclude:
- 'app/models/spree/order/checkout.rb'
@@ -474,7 +428,6 @@ Metrics/BlockLength:
- 'spec/support/matchers/select2_matchers.rb'
- 'spec/support/matchers/table_matchers.rb'
- 'spec/swagger_helper.rb'
- 'spec/system/admin/order_cycles/complex_updating_specific_time_spec.rb'
- 'spec/system/consumer/shopping/checkout_spec.rb'
# Offense count: 1
@@ -483,7 +436,7 @@ Metrics/BlockNesting:
Exclude:
- 'app/models/spree/payment/processing.rb'
# Offense count: 50
# Offense count: 45
# Configuration parameters: CountComments, Max, CountAsOne.
Metrics/ClassLength:
Exclude:
@@ -502,7 +455,6 @@ Metrics/ClassLength:
- 'app/controllers/spree/admin/payment_methods_controller.rb'
- 'app/controllers/spree/admin/payments_controller.rb'
- 'app/controllers/spree/admin/products_controller.rb'
- 'app/controllers/spree/admin/reports_controller.rb'
- 'app/controllers/spree/admin/users_controller.rb'
- 'app/controllers/spree/orders_controller.rb'
- 'app/models/enterprise.rb'
@@ -529,16 +481,13 @@ Metrics/ClassLength:
- 'engines/order_management/app/services/order_management/order/updater.rb'
- 'lib/open_food_network/enterprise_fee_calculator.rb'
- 'lib/open_food_network/order_cycle_form_applicator.rb'
- 'lib/open_food_network/permissions.rb'
- 'lib/reporting/reports/bulk_coop/bulk_coop_report.rb'
- 'lib/reporting/reports/enterprise_fee_summary/scope.rb'
- 'lib/reporting/reports/order_cycle_management/order_cycle_management_report.rb'
- 'lib/open_food_network/order_cycle_permissions.rb'
- 'lib/reporting/reports/payments/payments_report.rb'
- 'lib/open_food_network/permissions.rb'
- 'lib/reporting/reports/enterprise_fee_summary/scope.rb'
- 'lib/reporting/reports/xero_invoices/base.rb'
# Offense count: 39
# Configuration parameters: IgnoredMethods, Max.
# Offense count: 35
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, Max.
Metrics/CyclomaticComplexity:
Exclude:
- 'app/controllers/admin/enterprises_controller.rb'
@@ -565,18 +514,14 @@ Metrics/CyclomaticComplexity:
- 'app/models/spree/zone.rb'
- 'lib/discourse/single_sign_on.rb'
- 'lib/open_food_network/enterprise_issue_validator.rb'
- 'lib/reporting/reports/bulk_coop/bulk_coop_report.rb'
- 'lib/reporting/reports/customers/customers_report.rb'
- 'lib/reporting/reports/orders_and_fulfillment/customer_totals_report.rb'
- 'lib/reporting/reports/payments/payments_report.rb'
- 'lib/reporting/reports/xero_invoices/base.rb'
- 'lib/spree/core/controller_helpers/order.rb'
- 'lib/spree/core/controller_helpers/respond_with.rb'
- 'lib/spree/localized_number.rb'
- 'spec/models/product_importer_spec.rb'
# Offense count: 32
# Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods.
# Offense count: 26
# Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
Metrics/MethodLength:
Exclude:
- 'app/controllers/admin/enterprises_controller.rb'
@@ -593,15 +538,12 @@ Metrics/MethodLength:
- 'app/models/spree/preferences/preferable_class_methods.rb'
- 'lib/discourse/single_sign_on.rb'
- 'lib/open_food_network/order_cycle_form_applicator.rb'
- 'lib/reporting/reports/bulk_coop/bulk_coop_report.rb'
- 'lib/reporting/reports/enterprise_fee_summary/scope.rb'
- 'lib/reporting/reports/order_cycle_management/order_cycle_management_report.rb'
- 'lib/open_food_network/order_cycle_permissions.rb'
- 'lib/reporting/reports/payments/payments_report.rb'
- 'lib/reporting/reports/enterprise_fee_summary/scope.rb'
- 'lib/reporting/reports/xero_invoices/base.rb'
- 'lib/tasks/sample_data/product_factory.rb'
# Offense count: 54
# Offense count: 51
# Configuration parameters: CountComments, Max, CountAsOne.
Metrics/ModuleLength:
Exclude:
@@ -641,9 +583,6 @@ Metrics/ModuleLength:
- 'spec/lib/reports/customers_report_spec.rb'
- 'spec/lib/reports/enterprise_fee_summary/authorizer_spec.rb'
- 'spec/lib/reports/order_cycle_management_report_spec.rb'
- 'spec/lib/reports/order_grouper_spec.rb'
- 'spec/lib/reports/orders_and_fulfillment/customer_totals_report_spec.rb'
- 'spec/lib/reports/orders_and_fulfillment/orders_and_fulfillment_report_spec.rb'
- 'spec/lib/reports/products_and_inventory_report_spec.rb'
- 'spec/lib/reports/users_and_enterprises_report_spec.rb'
- 'spec/models/spree/adjustment_spec.rb'
@@ -670,8 +609,8 @@ Metrics/ParameterLists:
- 'spec/support/controller_requests_helper.rb'
- 'spec/system/admin/reports_spec.rb'
# Offense count: 7
# Configuration parameters: IgnoredMethods, Max.
# Offense count: 5
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, Max.
Metrics/PerceivedComplexity:
Exclude:
- 'app/controllers/spree/admin/taxons_controller.rb'
@@ -679,10 +618,8 @@ Metrics/PerceivedComplexity:
- 'app/models/enterprise_relationship.rb'
- 'app/models/spree/ability.rb'
- 'app/models/spree/order/checkout.rb'
- 'lib/reporting/reports/bulk_coop/bulk_coop_report.rb'
- 'lib/reporting/reports/payments/payments_report.rb'
# Offense count: 9
# Offense count: 8
Naming/AccessorMethodName:
Exclude:
- 'app/controllers/spree/admin/taxonomies_controller.rb'
@@ -716,8 +653,8 @@ Naming/MethodParameterName:
Exclude:
- 'app/services/process_payment_intent.rb'
# Offense count: 30
# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers.
# Offense count: 28
# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns.
# SupportedStyles: snake_case, normalcase, non_integer
# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339
Naming/VariableNumber:
@@ -725,7 +662,6 @@ Naming/VariableNumber:
- 'app/controllers/spree/orders_controller.rb'
- 'app/models/content_configuration.rb'
- 'app/models/preference_sections/main_links_section.rb'
- 'lib/reporting/reports/orders_and_fulfillment/customer_totals_report.rb'
- 'lib/spree/core/controller_helpers/common.rb'
- 'spec/controllers/spree/admin/search_controller_spec.rb'
- 'spec/factories/stock_location_factory.rb'
@@ -741,13 +677,13 @@ Rails/ActiveRecordOverride:
- 'app/models/spree/product.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/ApplicationController:
Exclude:
- 'engines/dfc_provider/app/controllers/dfc_provider/api/base_controller.rb'
# Offense count: 6
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/ApplicationJob:
Exclude:
- 'app/jobs/bulk_invoice_job.rb'
@@ -758,19 +694,19 @@ Rails/ApplicationJob:
- 'app/jobs/subscription_placement_job.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/ApplicationMailer:
Exclude:
- 'app/mailers/spree/base_mailer.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/ApplicationRecord:
Exclude:
- 'lib/tasks/data/remove_transient_data.rb'
# Offense count: 5
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: NilOrEmpty, NotPresent, UnlessPresent.
Rails/Blank:
Exclude:
@@ -812,7 +748,7 @@ Rails/HasAndBelongsToMany:
- 'app/models/spree/variant.rb'
- 'app/models/spree/zone.rb'
# Offense count: 47
# Offense count: 45
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/HasManyOrHasOneDependent:
@@ -838,9 +774,8 @@ Rails/HasManyOrHasOneDependent:
- 'app/models/spree/taxonomy.rb'
- 'app/models/spree/user.rb'
- 'app/models/spree/variant.rb'
- 'app/models/subscription.rb'
# Offense count: 59
# Offense count: 62
# Configuration parameters: Include.
# Include: app/helpers/**/*.rb
Rails/HelperInstanceVariable:
@@ -881,7 +816,7 @@ Rails/InverseOf:
# Offense count: 38
# Configuration parameters: Include.
# Include: app/controllers/**/*.rb
# Include: app/controllers/**/*.rb, app/mailers/**/*.rb
Rails/LexicallyScopedActionFilter:
Exclude:
- 'app/controllers/admin/enterprise_groups_controller.rb'
@@ -904,10 +839,9 @@ Rails/LexicallyScopedActionFilter:
- 'app/controllers/spree/admin/zones_controller.rb'
- 'app/controllers/spree/users_controller.rb'
# Offense count: 19
# Offense count: 18
Rails/OutputSafety:
Exclude:
- 'app/controllers/spree/admin/reports_controller.rb'
- 'app/helpers/angular_form_helper.rb'
- 'app/helpers/application_helper.rb'
- 'app/helpers/reports_helper.rb'
@@ -922,7 +856,7 @@ Rails/OutputSafety:
- 'spec/system/admin/order_print_ticket_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/RelativeDateConstant:
Exclude:
- 'lib/tasks/data/remove_transient_data.rb'
@@ -936,7 +870,7 @@ Rails/SkipsModelValidations:
- 'spec/models/spree/line_item_spec.rb'
# Offense count: 5
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: strict, flexible
Rails/TimeZone:
@@ -971,20 +905,20 @@ Security/Open:
- 'app/services/image_importer.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
Style/BlockComments:
Exclude:
- 'spec/system/admin/tag_rules_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowOnConstant.
Style/CaseEquality:
Exclude:
- 'spec/models/spree/payment_spec.rb'
# Offense count: 3
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/CaseLikeIf:
Exclude:
- 'app/controllers/admin/order_cycles_controller.rb'
@@ -992,7 +926,7 @@ Style/CaseLikeIf:
- 'app/models/spree/payment/processing.rb'
# Offense count: 25
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: nested, compact
Style/ClassAndModuleChildren:
@@ -1027,13 +961,14 @@ Style/ClassVars:
- 'lib/spree/core/delegate_belongs_to.rb'
# Offense count: 2
# Configuration parameters: MaxUnannotatedPlaceholdersAllowed, IgnoredMethods.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns, IgnoredMethods.
# SupportedStyles: annotated, template, unannotated
Style/FormatStringToken:
EnforcedStyle: unannotated
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: always, always_true, never
Style/FrozenStringLiteralComment:
@@ -1041,7 +976,7 @@ Style/FrozenStringLiteralComment:
- '.simplecov'
# Offense count: 6
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/GlobalStdStream:
Exclude:
- 'lib/tasks/data.rake'
@@ -1050,8 +985,8 @@ Style/GlobalStdStream:
- 'lib/tasks/subscriptions/debug.rake'
- 'lib/tasks/subscriptions/test.rake'
# Offense count: 39
# Configuration parameters: MinBodyLength.
# Offense count: 40
# Configuration parameters: MinBodyLength, AllowConsecutiveConditionals.
Style/GuardClause:
Exclude:
- 'app/controllers/admin/enterprises_controller.rb'
@@ -1085,8 +1020,8 @@ Style/HashLikeCase:
- 'app/models/enterprise.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: IgnoredMethods.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods.
Style/MethodCallWithoutArgsParentheses:
Exclude:
- 'spec/system/flatpickr_spec.rb'
@@ -1098,22 +1033,8 @@ Style/MissingRespondToMissing:
- 'app/models/spree/gateway.rb'
- 'app/models/spree/preferences/configuration.rb'
# Offense count: 1
Style/MixinUsage:
Exclude:
- 'lib/reporting/reports/orders_and_fulfillment/orders_and_fulfillment_report.rb'
# Offense count: 3
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
# SupportedStyles: literals, strict
Style/MutableConstant:
Exclude:
- 'lib/reporting/report_template.rb'
- 'lib/reporting/reports/packing/base.rb'
# Offense count: 22
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
Style/NestedModifier:
Exclude:
- 'spec/controllers/admin/subscriptions_controller_spec.rb'
@@ -1127,7 +1048,7 @@ Style/NestedModifier:
- 'spec/system/admin/payments_stripe_spec.rb'
- 'spec/system/admin/reports_spec.rb'
# Offense count: 26
# Offense count: 17
# Configuration parameters: AllowedMethods.
# AllowedMethods: respond_to_missing?
Style/OptionalBooleanParameter:
@@ -1139,7 +1060,6 @@ Style/OptionalBooleanParameter:
- 'app/models/enterprise_relationship.rb'
- 'app/models/product_import/entry_processor.rb'
- 'app/models/spree/order_contents.rb'
- 'app/models/spree/preferences/file_configuration.rb'
- 'app/models/spree/shipment.rb'
- 'engines/order_management/app/services/order_management/stock/estimator.rb'
- 'lib/spree/core/controller_helpers/order.rb'
@@ -1147,7 +1067,7 @@ Style/OptionalBooleanParameter:
- 'spec/support/request/web_helper.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: short, verbose
Style/PreferredHashMethods:
@@ -1155,13 +1075,13 @@ Style/PreferredHashMethods:
- 'app/controllers/api/v0/shipments_controller.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowMultipleReturnValues.
Style/RedundantReturn:
Exclude:
- 'app/controllers/spree/admin/shipping_methods_controller.rb'
# Offense count: 205
# Offense count: 209
Style/Send:
Exclude:
- 'app/controllers/split_checkout_controller.rb'
@@ -1195,17 +1115,16 @@ Style/Send:
- 'spec/services/cart_service_spec.rb'
- 'spec/services/products_renderer_spec.rb'
- 'spec/services/variant_units/option_value_namer_spec.rb'
- 'spec/spec_helper.rb'
- 'spec/support/localized_number_helper.rb'
# Offense count: 1
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/SingleArgumentDig:
Exclude:
- 'app/services/checkout/form_data_adapter.rb'
# Offense count: 4
# Cop supports --auto-correct.
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/SlicingWithRange:
Exclude:
- 'app/helpers/spree/admin/navigation_helper.rb'
@@ -1213,8 +1132,8 @@ Style/SlicingWithRange:
- 'engines/order_management/app/services/order_management/subscriptions/validator.rb'
- 'lib/discourse/single_sign_on.rb'
# Offense count: 28
# Cop supports --auto-correct.
# Offense count: 29
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Mode.
Style/StringConcatenation:
Exclude:

11
Gemfile
View File

@@ -131,7 +131,7 @@ gem 'flipper'
gem 'flipper-active_record'
gem 'flipper-ui'
gem "view_component", require: "view_component/engine"
gem "view_component"
group :production, :staging do
gem 'ddtrace'
@@ -140,8 +140,6 @@ group :production, :staging do
end
group :test, :development do
# Pretty printed test output
gem 'awesome_print'
gem 'bullet'
gem 'capybara'
gem 'cuprite'
@@ -154,14 +152,12 @@ group :test, :development do
gem 'rspec-rails', ">= 3.5.2"
gem 'rspec-retry'
gem 'rswag-specs'
gem 'selenium-webdriver'
gem 'shoulda-matchers'
gem 'timecop'
gem 'webdrivers'
gem 'debug', '>= 1.0.0'
end
group :test do
gem 'byebug'
gem 'pdf-reader'
gem 'rails-controller-testing'
gem 'simplecov', require: false
@@ -176,14 +172,13 @@ group :development do
gem 'foreman'
gem 'listen'
gem 'pry', '~> 0.13.0'
gem 'pry-byebug', '~> 3.9.0'
gem 'rubocop'
gem 'rubocop-rails'
gem 'spring'
gem 'spring-commands-rspec'
gem 'web-console'
gem "view_component_storybook", require: "view_component/storybook/engine"
gem "view_component_storybook"
gem 'rack-mini-profiler', '< 3.0.0'
end

View File

@@ -51,66 +51,66 @@ GEM
remote: https://rubygems.org/
specs:
Ascii85 (1.1.0)
actioncable (6.1.6)
actionpack (= 6.1.6)
activesupport (= 6.1.6)
actioncable (6.1.6.1)
actionpack (= 6.1.6.1)
activesupport (= 6.1.6.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.1.6)
actionpack (= 6.1.6)
activejob (= 6.1.6)
activerecord (= 6.1.6)
activestorage (= 6.1.6)
activesupport (= 6.1.6)
actionmailbox (6.1.6.1)
actionpack (= 6.1.6.1)
activejob (= 6.1.6.1)
activerecord (= 6.1.6.1)
activestorage (= 6.1.6.1)
activesupport (= 6.1.6.1)
mail (>= 2.7.1)
actionmailer (6.1.6)
actionpack (= 6.1.6)
actionview (= 6.1.6)
activejob (= 6.1.6)
activesupport (= 6.1.6)
actionmailer (6.1.6.1)
actionpack (= 6.1.6.1)
actionview (= 6.1.6.1)
activejob (= 6.1.6.1)
activesupport (= 6.1.6.1)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (6.1.6)
actionview (= 6.1.6)
activesupport (= 6.1.6)
actionpack (6.1.6.1)
actionview (= 6.1.6.1)
activesupport (= 6.1.6.1)
rack (~> 2.0, >= 2.0.9)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actionpack-action_caching (1.2.2)
actionpack (>= 4.0.0)
actiontext (6.1.6)
actionpack (= 6.1.6)
activerecord (= 6.1.6)
activestorage (= 6.1.6)
activesupport (= 6.1.6)
actiontext (6.1.6.1)
actionpack (= 6.1.6.1)
activerecord (= 6.1.6.1)
activestorage (= 6.1.6.1)
activesupport (= 6.1.6.1)
nokogiri (>= 1.8.5)
actionview (6.1.6)
activesupport (= 6.1.6)
actionview (6.1.6.1)
activesupport (= 6.1.6.1)
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 (0.9.7)
active_storage_validations (0.9.8)
activejob (>= 5.2.0)
activemodel (>= 5.2.0)
activestorage (>= 5.2.0)
activesupport (>= 5.2.0)
activejob (6.1.6)
activesupport (= 6.1.6)
activejob (6.1.6.1)
activesupport (= 6.1.6.1)
globalid (>= 0.3.6)
activemerchant (1.123.0)
activesupport (>= 4.2)
builder (>= 2.1.2, < 4.0.0)
i18n (>= 0.6.9)
nokogiri (~> 1.4)
activemodel (6.1.6)
activesupport (= 6.1.6)
activerecord (6.1.6)
activemodel (= 6.1.6)
activesupport (= 6.1.6)
activemodel (6.1.6.1)
activesupport (= 6.1.6.1)
activerecord (6.1.6.1)
activemodel (= 6.1.6.1)
activesupport (= 6.1.6.1)
activerecord-import (1.4.0)
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 (6.1.6)
actionpack (= 6.1.6)
activejob (= 6.1.6)
activerecord (= 6.1.6)
activesupport (= 6.1.6)
activestorage (6.1.6.1)
actionpack (= 6.1.6.1)
activejob (= 6.1.6.1)
activerecord (= 6.1.6.1)
activesupport (= 6.1.6.1)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (6.1.6)
activesupport (6.1.6.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
@@ -141,12 +141,13 @@ GEM
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
afm (0.2.2)
angular-rails-templates (1.1.0)
railties (>= 4.2, < 7)
angular-rails-templates (1.2.0)
railties (>= 5.0, < 7.1)
sprockets (>= 3.0, < 5)
sprockets-rails
tilt
angular_rails_csrf (4.5.0)
railties (>= 3, < 7)
angular_rails_csrf (5.0.0)
railties (>= 3, < 8)
angularjs-file-upload-rails (2.4.1)
angularjs-rails (1.8.0)
arel-helpers (2.14.0)
@@ -154,7 +155,6 @@ GEM
ast (2.4.2)
awesome_nested_set (3.5.0)
activerecord (>= 4.0.0, < 7.1)
awesome_print (1.9.2)
aws-eventstream (1.2.0)
aws-partitions (1.601.0)
aws-sdk-core (3.131.2)
@@ -177,20 +177,19 @@ GEM
bcrypt (3.1.18)
bigdecimal (3.0.2)
bindex (0.8.1)
bootsnap (1.10.1)
bootsnap (1.13.0)
msgpack (~> 1.2)
bugsnag (6.24.2)
concurrent-ruby (~> 1.0)
builder (3.2.4)
bullet (7.0.2)
bullet (7.0.3)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
byebug (11.1.3)
cable_ready (5.0.0.pre3)
rails (>= 5.2)
thread-local (>= 1.1.0)
cancancan (1.15.0)
capybara (3.36.0)
capybara (3.37.1)
addressable
matrix
mini_mime (>= 0.1.3)
@@ -204,7 +203,6 @@ GEM
marcel (~> 1.0)
nokogiri (~> 1.10, >= 1.10.4)
rubyzip (>= 1.3.0, < 3)
childprocess (4.1.0)
chronic (0.10.2)
cliver (0.3.2)
coderay (1.1.3)
@@ -215,7 +213,8 @@ GEM
coffee-script-source
execjs
coffee-script-source (1.12.2)
combine_pdf (1.0.21)
combine_pdf (1.0.22)
matrix
ruby-rc4 (>= 0.1.5)
concurrent-ruby (1.1.10)
connection_pool (2.2.5)
@@ -237,6 +236,9 @@ GEM
debase-ruby_core_source (= 0.10.12)
msgpack
debase-ruby_core_source (0.10.12)
debug (1.6.2)
irb (>= 1.3.6)
reline (>= 0.3.1)
debugger-linecache (1.2.0)
devise (4.8.1)
bcrypt (~> 3.0)
@@ -250,15 +252,15 @@ GEM
devise (>= 4.8.0)
devise-token_authenticatable (1.1.0)
devise (>= 4.0.0, < 5.0.0)
diff-lcs (1.4.4)
diff-lcs (1.5.0)
digest (3.1.0)
docile (1.4.0)
dotenv (2.7.6)
dotenv-rails (2.7.6)
dotenv (= 2.7.6)
dotenv (2.8.1)
dotenv-rails (2.8.1)
dotenv (= 2.8.1)
railties (>= 3.2)
dry-inflector (0.2.1)
erubi (1.10.0)
erubi (1.11.0)
et-orbi (1.2.7)
tzinfo
excon (0.81.0)
@@ -326,7 +328,7 @@ GEM
highline (2.0.3)
hiredis (0.6.3)
htmlentities (4.3.4)
i18n (1.8.10)
i18n (1.12.0)
concurrent-ruby (~> 1.0)
i18n-js (3.9.2)
i18n (>= 0.6.6)
@@ -335,7 +337,10 @@ GEM
ruby-vips (>= 2.0.17, < 3)
immigrant (0.3.6)
activerecord (>= 3.0)
io-console (0.5.11)
ipaddress (0.8.3)
irb (1.4.1)
reline (>= 0.3.0)
jmespath (1.6.1)
jquery-rails (4.4.0)
rails-dom-testing (>= 1, < 3)
@@ -343,7 +348,7 @@ GEM
thor (>= 0.14, < 2.0)
jquery-ui-rails (4.2.1)
railties (>= 3.2.16)
json (2.6.1)
json (2.6.2)
json-schema (2.8.1)
addressable (>= 2.4)
json_spec (1.1.5)
@@ -351,13 +356,13 @@ GEM
rspec (>= 2.0, < 4.0)
jsonapi-serializer (2.2.0)
activesupport (>= 4.2)
jwt (2.3.0)
jwt (2.5.0)
knapsack (4.0.0)
rake
launchy (2.5.0)
addressable (~> 2.7)
letter_opener (1.7.0)
launchy (~> 2.2)
letter_opener (1.8.1)
launchy (>= 2.2, < 3)
libv8-node (15.14.0.1)
listen (3.7.1)
rb-fsevent (~> 0.10, >= 0.10.3)
@@ -381,16 +386,16 @@ GEM
mini_portile2 (2.8.0)
mini_racer (0.4.0)
libv8-node (~> 15.14.0.0)
minitest (5.16.2)
minitest (5.16.3)
monetize (1.12.0)
money (~> 6.12)
money (6.16.0)
i18n (>= 0.6.4, <= 2)
msgpack (1.4.2)
msgpack (1.5.4)
multi_json (1.15.0)
multi_xml (0.6.0)
nio4r (2.5.8)
nokogiri (1.13.6)
nokogiri (1.13.8)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
oauth2 (1.4.10)
@@ -400,21 +405,22 @@ GEM
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
orm_adapter (0.5.0)
pagy (5.1.2)
pagy (5.10.1)
activesupport
paper_trail (12.1.0)
activerecord (>= 5.2)
request_store (~> 1.1)
parallel (1.21.0)
paranoia (2.4.3)
activerecord (>= 4.0, < 6.2)
parser (3.1.0.0)
parallel (1.22.1)
paranoia (2.6.0)
activerecord (>= 5.1, < 7.1)
parser (3.1.2.1)
ast (~> 2.4.1)
paypal-sdk-core (0.3.4)
multi_json (~> 1.0)
xml-simple
paypal-sdk-merchant (1.117.2)
paypal-sdk-core (~> 0.3.0)
pdf-reader (2.5.0)
pdf-reader (2.10.0)
Ascii85 (~> 1.0)
afm (~> 0.2.1)
hashery (~> 2.0)
@@ -425,11 +431,8 @@ GEM
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
pry-byebug (3.9.0)
byebug (~> 11.0)
pry (~> 0.13.0)
public_suffix (4.0.7)
puma (5.6.4)
puma (5.6.5)
nio4r (~> 2.0)
raabro (1.4.0)
racc (1.6.0)
@@ -446,20 +449,20 @@ GEM
rack-test (2.0.2)
rack (>= 1.3)
rack-timeout (0.6.3)
rails (6.1.6)
actioncable (= 6.1.6)
actionmailbox (= 6.1.6)
actionmailer (= 6.1.6)
actionpack (= 6.1.6)
actiontext (= 6.1.6)
actionview (= 6.1.6)
activejob (= 6.1.6)
activemodel (= 6.1.6)
activerecord (= 6.1.6)
activestorage (= 6.1.6)
activesupport (= 6.1.6)
rails (6.1.6.1)
actioncable (= 6.1.6.1)
actionmailbox (= 6.1.6.1)
actionmailer (= 6.1.6.1)
actionpack (= 6.1.6.1)
actiontext (= 6.1.6.1)
actionview (= 6.1.6.1)
activejob (= 6.1.6.1)
activemodel (= 6.1.6.1)
activerecord (= 6.1.6.1)
activestorage (= 6.1.6.1)
activesupport (= 6.1.6.1)
bundler (>= 1.15.0)
railties (= 6.1.6)
railties (= 6.1.6.1)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
@@ -470,13 +473,13 @@ GEM
nokogiri (>= 1.6)
rails-html-sanitizer (1.4.3)
loofah (~> 2.3)
rails-i18n (7.0.1)
rails-i18n (7.0.5)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
rails_safe_tasks (1.0.0)
railties (6.1.6)
actionpack (= 6.1.6)
activesupport (= 6.1.6)
railties (6.1.6.1)
actionpack (= 6.1.6.1)
activesupport (= 6.1.6.1)
method_source
rake (>= 12.2)
thor (~> 1.0)
@@ -490,8 +493,10 @@ GEM
rb-inotify (0.10.1)
ffi (~> 1.0)
redcarpet (3.5.1)
redis (4.7.1)
regexp_parser (2.2.0)
redis (4.8.0)
regexp_parser (2.5.0)
reline (0.3.1)
io-console (~> 0.5)
request_store (1.5.0)
rack (>= 1.4)
responders (3.0.1)
@@ -515,15 +520,15 @@ GEM
rspec-core (~> 3.10.0)
rspec-expectations (~> 3.10.0)
rspec-mocks (~> 3.10.0)
rspec-core (3.10.1)
rspec-core (3.10.2)
rspec-support (~> 3.10.0)
rspec-expectations (3.10.1)
rspec-expectations (3.10.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-rails (5.0.2)
rspec-rails (5.1.2)
actionpack (>= 5.2)
activesupport (>= 5.2)
railties (>= 5.2)
@@ -533,28 +538,29 @@ GEM
rspec-support (~> 3.10)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.10.2)
rswag-api (2.4.0)
railties (>= 3.1, < 7.0)
rswag-specs (2.4.0)
activesupport (>= 3.1, < 7.0)
rspec-support (3.10.3)
rswag-api (2.5.1)
railties (>= 3.1, < 7.1)
rswag-specs (2.5.1)
activesupport (>= 3.1, < 7.1)
json-schema (~> 2.2)
railties (>= 3.1, < 7.0)
rswag-ui (2.4.0)
actionpack (>= 3.1, < 7.0)
railties (>= 3.1, < 7.0)
rubocop (1.22.2)
railties (>= 3.1, < 7.1)
rswag-ui (2.5.1)
actionpack (>= 3.1, < 7.1)
railties (>= 3.1, < 7.1)
rubocop (1.35.1)
json (~> 2.3)
parallel (~> 1.10)
parser (>= 3.0.0.0)
parser (>= 3.1.2.1)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml
rubocop-ast (>= 1.12.0, < 2.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.20.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.15.1)
parser (>= 3.0.1.1)
rubocop-rails (2.13.2)
rubocop-ast (1.21.0)
parser (>= 3.1.1.0)
rubocop-rails (2.15.2)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.7.0, < 2.0)
@@ -574,17 +580,13 @@ GEM
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
sd_notify (0.1.1)
selenium-webdriver (4.0.3)
childprocess (>= 0.5, < 5.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2)
semantic_range (3.0.0)
shoulda-matchers (5.1.0)
activesupport (>= 5.2.0)
sidekiq (6.3.1)
sidekiq (6.5.4)
connection_pool (>= 2.2.2)
rack (~> 2.0)
redis (>= 4.2.0)
redis (>= 4.5.0)
sidekiq-scheduler (4.0.2)
redis (>= 4.2.0)
rufus-scheduler (~> 3.2)
@@ -618,27 +620,28 @@ GEM
activerecord (>= 5.1)
state_machines-activemodel (>= 0.8.0)
stringex (2.8.5)
stripe (5.42.0)
stripe (7.1.0)
temple (0.8.2)
test-prof (1.0.9)
test-unit (3.5.0)
test-prof (1.0.10)
test-unit (3.5.3)
power_assert
thor (1.2.1)
thread-local (1.1.0)
tilt (2.0.10)
timecop (0.9.4)
tilt (2.0.11)
timecop (0.9.5)
ttfunk (1.7.0)
tzinfo (2.0.4)
tzinfo (2.0.5)
concurrent-ruby (~> 1.0)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
unicode-display_width (2.1.0)
unicode-display_width (2.2.0)
uniform_notifier (1.16.0)
valid_email2 (4.0.0)
valid_email2 (4.0.4)
activemodel (>= 3.2)
mail (~> 2.5)
view_component (2.57.1)
view_component (2.69.0)
activesupport (>= 5.0.0, < 8.0)
concurrent-ruby (~> 1.0)
method_source (~> 1.0)
view_component_storybook (0.11.1)
view_component (>= 2.36)
@@ -649,11 +652,7 @@ GEM
activemodel (>= 6.0.0)
bindex (>= 0.4.0)
railties (>= 6.0.0)
webdrivers (5.0.0)
nokogiri (~> 1.6)
rubyzip (>= 1.3.0)
selenium-webdriver (~> 4.0)
webmock (3.14.0)
webmock (3.18.1)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
@@ -694,13 +693,11 @@ DEPENDENCIES
angularjs-rails (= 1.8.0)
arel-helpers (~> 2.12)
awesome_nested_set
awesome_print
aws-sdk-s3
bigdecimal (= 3.0.2)
bootsnap
bugsnag
bullet
byebug
cable_ready (= 5.0.0.pre3)
cancancan (~> 1.15.0)
capybara
@@ -711,6 +708,7 @@ DEPENDENCIES
database_cleaner
db2fog!
ddtrace
debug (>= 1.0.0)
debugger-linecache
devise
devise-encryptable
@@ -760,7 +758,6 @@ DEPENDENCIES
pdf-reader
pg (~> 1.2.3)
pry (~> 0.13.0)
pry-byebug (~> 3.9.0)
puma
rack-mini-profiler (< 3.0.0)
rack-rewrite
@@ -786,7 +783,6 @@ DEPENDENCIES
rubocop-rails
sd_notify
select2-rails!
selenium-webdriver
shoulda-matchers
sidekiq
sidekiq-scheduler
@@ -806,7 +802,6 @@ DEPENDENCIES
view_component_storybook
web!
web-console
webdrivers
webmock
webpacker (~> 5)
whenever

View File

@@ -39,7 +39,7 @@ We use [BrowserStack](https://www.browserstack.com/) as a manual testing tool. B
## Licence
Copyright (c) 2012 - 2021 Open Food Foundation, released under the AGPL licence.
Copyright (c) 2012 - 2022 Open Food Foundation, released under the AGPL licence.
[survey]: https://docs.google.com/a/eaterprises.com.au/forms/d/1zxR5vSiU9CigJ9cEaC8-eJLgYid8CR8er7PPH9Mc-30/edit#
[slack-invite]: https://join.slack.com/t/openfoodnetwork/shared_invite/zt-9sjkjdlu-r02kUMP1zbrTgUhZhYPF~A

View File

@@ -1,15 +0,0 @@
angular.module("admin.enterprise_groups")
.controller "sideMenuCtrl", ($scope, SideMenu) ->
$scope.menu = SideMenu
$scope.select = SideMenu.select
$scope.menu.setItems [
{ name: 'primary_details', label: t('primary_details'), icon_class: "icon-user" }
{ name: 'users', label: t('users'), icon_class: "icon-user" }
{ name: 'about', label: t('about'), icon_class: "icon-pencil" }
{ name: 'images', label: t('images'), icon_class: "icon-picture" }
{ name: 'contact', label: t('admin_enterprise_groups_contact'), icon_class: "icon-phone" }
{ name: 'web', label: t('admin_enterprise_groups_web'), icon_class: "icon-globe" }
]
$scope.select(0)

View File

@@ -1,49 +0,0 @@
angular.module("admin.enterprises")
.controller "sideMenuCtrl", ($scope, $parse, enterprise, SideMenu, enterprisePermissions) ->
$scope.Enterprise = enterprise
$scope.menu = SideMenu
$scope.select = SideMenu.select
$scope.menu.setItems [
{ name: 'primary_details', label: t('primary_details'), icon_class: "icon-home" }
{ name: 'address', label: t('address'), icon_class: "icon-map-marker" }
{ name: 'contact', label: t('contact'), icon_class: "icon-phone" }
{ name: 'social', label: t('social'), icon_class: "icon-twitter" }
{ name: 'about', label: t('about'), icon_class: "icon-pencil" }
{ name: 'business_details', label: t('business_details'), icon_class: "icon-briefcase" }
{ name: 'images', label: t('images'), icon_class: "icon-picture" }
{ name: 'properties', label: t('properties'), icon_class: "icon-tags", show: "showProperties()" }
{ name: 'shipping_methods', label: t('shipping_methods'), icon_class: "icon-truck", show: "showShippingMethods()" }
{ name: 'payment_methods', label: t('payment_methods'), icon_class: "icon-money", show: "showPaymentMethods()" }
{ name: 'enterprise_fees', label: t('enterprise_fees'), icon_class: "icon-tasks", show: "showEnterpriseFees()" }
{ name: 'enterprise_permissions', label: t('enterprise_permissions'), icon_class: "icon-plug" }
{ name: 'inventory_settings', label: t('inventory_settings'), icon_class: "icon-list-ol", show: "enterpriseIsShop()" }
{ name: 'tag_rules', label: t('tag_rules'), icon_class: "icon-random", show: "enterpriseIsShop()" }
{ name: 'shop_preferences', label: t('shop_preferences'), icon_class: "icon-shopping-cart", show: "enterpriseIsShop()" }
{ name: 'users', label: t('users'), icon_class: "icon-user" }
]
SideMenu.init()
$scope.showItem = (item) ->
if item.show?
$parse(item.show)($scope)
else
true
$scope.showProperties = ->
!!$scope.Enterprise.is_primary_producer
$scope.showShippingMethods = ->
enterprisePermissions.can_manage_shipping_methods && $scope.Enterprise.sells != "none"
$scope.showPaymentMethods = ->
enterprisePermissions.can_manage_payment_methods && $scope.Enterprise.sells != "none"
$scope.showEnterpriseFees = ->
enterprisePermissions.can_manage_enterprise_fees && ($scope.Enterprise.sells != "none" || $scope.Enterprise.is_primary_producer)
$scope.enterpriseIsShop = ->
$scope.Enterprise.sells != "none"
$scope.menu.redirect_function('enterprise_permissions', '/admin/enterprise_relationships')

View File

@@ -20,3 +20,6 @@ angular.module('Darkswarm').controller "CreditCardsCtrl", ($scope, $http, Credit
).finally ->
window.location.reload()
$scope.hasOneDefaultSavedCards = () ->
$scope.savedCreditCards.some((card) -> card.is_default)

View File

@@ -7,6 +7,7 @@ require 'open_food_network/order_cycle_permissions'
module Admin
class EnterprisesController < Admin::ResourceController
include GeocodeEnterpriseAddress
include CablecarResponses
# These need to run before #load_resource so that @object is initialised with sanitised values
prepend_before_action :override_owner, only: :create
@@ -44,7 +45,11 @@ module Admin
def edit
@object = Enterprise.where(permalink: params[:id]).
includes(users: [:ship_address, :bill_address]).first
super
if params[:stimulus]
@enterprise.is_primary_producer = params[:is_primary_producer]
@enterprise.sells = params[:enterprise_sells]
render operations: cable_car.morph("#side_menu", partial("admin/shared/side_menu"))
end
end
def welcome

View File

@@ -165,8 +165,9 @@ class ApplicationController < ActionController::Base
return unless current_spree_user.disabled
flash[:success] = nil
flash.now[:error] = I18n.t("devise.failure.disabled")
flash[:error] = I18n.t("devise.failure.disabled")
sign_out current_spree_user
redirect_to main_app.root_path
end
end

View File

@@ -0,0 +1,17 @@
# frozen_string_literal: true
class ErrorsController < ApplicationController
layout "errors"
def not_found
render status: :not_found
end
def internal_server_error
render status: :internal_server_error
end
def unprocessable_entity
render status: :unprocessable_entity
end
end

View File

@@ -21,6 +21,7 @@ class SplitCheckoutController < ::BaseController
def edit
redirect_to_step_based_on_order unless params[:step]
check_step if params[:step]
end
def update
@@ -145,4 +146,13 @@ class SplitCheckoutController < ::BaseController
end
redirect_to_step_based_on_order
end
def check_step
case @order.state
when "cart", "address", "delivery"
redirect_to checkout_step_path(:details) unless params[:step] == "details"
when "payment"
redirect_to checkout_step_path(:payment) if params[:step] == "summary"
end
end
end

View File

@@ -42,6 +42,10 @@ module Spree
@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'))
@@ -55,7 +59,7 @@ module Spree
redirect_to spree.edit_admin_order_path(@order)
else
# Jump to next step if order is not complete
redirect_to spree.admin_order_customer_path(@order)
redirect_to spree.admin_order_payments_path(@order)
end
end

View File

@@ -48,30 +48,11 @@ module Spree
@user.spree_roles = roles.reject(&:blank?).collect{ |r| Spree::Role.find(r) }
end
message = if new_email_unconfirmed?
Spree.t(:email_updated)
else
Spree.t(:account_updated)
end
flash.now[:success] = message
flash.now[:success] = update_message
end
render :edit
end
def generate_api_key
if @user.generate_spree_api_key!
flash[:success] = t('spree.api.key_generated')
end
redirect_to spree.edit_admin_user_path(@user)
end
def clear_api_key
if @user.clear_spree_api_key!
flash[:success] = t('spree.api.key_cleared')
end
redirect_to spree.edit_admin_user_path(@user)
end
protected
def collection
@@ -100,6 +81,16 @@ module Spree
private
def update_message
return Spree.t(:show_api_key_view_toggled) if @user.show_api_key_view_previously_changed?
if new_email_unconfirmed?
Spree.t(:email_updated)
else
Spree.t(:account_updated)
end
end
# handling raise from Admin::ResourceController#destroy
def user_destroy_with_orders_error
render status: :forbidden, text: Spree.t(:error_user_destroy_with_orders)
@@ -137,7 +128,9 @@ module Spree
end
def user_params
::PermittedAttributes::User.new(params).call([:enterprise_limit])
::PermittedAttributes::User.new(params).call(
%i[enterprise_limit show_api_key_view]
)
end
end
end

View File

@@ -0,0 +1,57 @@
# frozen_string_literal: true
module Spree
class ApiKeysController < ::BaseController
include Spree::Core::ControllerHelpers
include I18nHelper
prepend_before_action :load_object
def create
@user.generate_api_key
if @user.save
flash[:success] = t('spree.api.key_generated')
end
redirect_to redirect_path
end
def destroy
@user.spree_api_key = nil
if @user.save
flash[:success] = t('spree.api.key_cleared')
end
redirect_to redirect_path
end
private
def load_object
@user ||= find_user
if @user
authorize! params[:action].to_sym, @user
else
redirect_to main_app.login_path
end
end
def find_user
Spree::User.find_by(id: params[:id]) || spree_current_user
end
def redirect_path
if request.referer.blank? || request.referer.include?(spree.account_path)
developer_settings_path
else
request.referer
end
end
def developer_settings_path
"#{spree.account_path}#/developer_settings"
end
end
end

View File

@@ -49,7 +49,10 @@ module Spree
# Using try because we may not have a card here
if @credit_card.try(:destroy)
remove_shop_authorizations if @credit_card.is_default
if @credit_card.is_default
remove_shop_authorizations
mark_as_default_next_credit_card if credit_cards_with_payment_profile.count > 0
end
flash[:success] = I18n.t(:card_has_been_removed, number: "x-#{@credit_card.last_digits}")
else
flash[:error] = I18n.t(:card_could_not_be_removed)
@@ -67,6 +70,14 @@ module Spree
@credit_card.user.customers.update_all(allow_charges: false)
end
def mark_as_default_next_credit_card
credit_cards_with_payment_profile.first.update(is_default: true)
end
def credit_cards_with_payment_profile
spree_current_user.credit_cards.with_payment_profile
end
def create_customer(token)
Stripe::Customer.create(email: spree_current_user.email, source: token)
end

View File

@@ -4,6 +4,7 @@ module Spree
class OrdersController < ::BaseController
include OrderCyclesHelper
include Rails.application.routes.url_helpers
include CablecarResponses
layout 'darkswarm'
@@ -99,7 +100,8 @@ module Spree
else
flash[:error] = I18n.t(:orders_could_not_cancel)
end
redirect_to request.referer || main_app.order_path(@order)
render status: :found,
operations: cable_car.redirect_to(url: request.referer || main_app.order_path(@order))
end
private

View File

@@ -16,6 +16,7 @@ module Spree
prepend_before_action :handle_unconfirmed_email
before_action :set_checkout_redirect, only: :create
after_action :ensure_valid_locale_persisted, only: :create
skip_before_action :check_disabled_user
def create
authenticate_spree_user!

View File

@@ -78,7 +78,7 @@ module Spree
def load_object
@user ||= spree_current_user
if @user
if @user && !@user.disabled
authorize! params[:action].to_sym, @user
else
redirect_to main_app.login_path

View File

@@ -0,0 +1,17 @@
# frozen_string_literal: true
module Admin
module EnterpriseGroupsHelper
def enterprise_group_side_menu_items
[
{ name: 'primary_details', label: 'primary_details', icon_class: "icon-user",
selected: "selected" },
{ name: 'users', label: 'users', icon_class: "icon-user" },
{ name: 'about', label: 'about', icon_class: "icon-pencil" },
{ name: 'images', label: 'images', icon_class: "icon-picture" },
{ name: 'contact', label: 'admin_enterprise_groups_contact', icon_class: "icon-phone" },
{ name: 'web', label: 'admin_enterprise_groups_web', icon_class: "icon-globe" },
]
end
end
end

View File

@@ -13,5 +13,34 @@ module Admin
def select_only_item(producers)
producers.size == 1 ? producers.first.id : nil
end
def enterprise_side_menu_items(enterprise)
is_shop = enterprise.sells != "none"
show_properties = !!enterprise.is_primary_producer
show_shipping_methods = can?(:manage_shipping_methods, enterprise) && is_shop
show_payment_methods = can?(:manage_payment_methods, enterprise) && is_shop
show_enterprise_fees = can?(:manage_enterprise_fees,
enterprise) && (is_shop || enterprise.is_primary_producer)
[
{ name: 'primary_details', icon_class: "icon-home", show: true, selected: 'selected' },
{ name: 'address', icon_class: "icon-map-marker", show: true },
{ name: 'contact', icon_class: "icon-phone", show: true },
{ name: 'social', icon_class: "icon-twitter", show: true },
{ name: 'about', icon_class: "icon-pencil", show: true, form_name: "about_us" },
{ name: 'business_details', icon_class: "icon-briefcase", show: true },
{ name: 'images', icon_class: "icon-picture", show: true },
{ name: 'properties', icon_class: "icon-tags", show: show_properties },
{ name: 'shipping_methods', icon_class: "icon-truck", show: show_shipping_methods },
{ name: 'payment_methods', icon_class: "icon-money", show: show_payment_methods },
{ name: 'enterprise_fees', icon_class: "icon-tasks", show: show_enterprise_fees },
{ name: 'enterprise_permissions', icon_class: "icon-plug", show: true,
href: admin_enterprise_relationships_path },
{ name: 'inventory_settings', icon_class: "icon-list-ol", show: is_shop },
{ name: 'tag_rules', icon_class: "icon-random", show: is_shop },
{ name: 'shop_preferences', icon_class: "icon-shopping-cart", show: is_shop },
{ name: 'users', icon_class: "icon-user", show: true }
]
end
end
end

View File

@@ -10,7 +10,7 @@ class Customer < ApplicationRecord
belongs_to :enterprise
belongs_to :user, class_name: "Spree::User"
has_many :orders, class_name: "Spree::Order"
before_destroy :check_for_orders
before_destroy :update_orders_and_delete_canceled_subscriptions
belongs_to :bill_address, class_name: "Spree::Address"
alias_attribute :billing_address, :bill_address
@@ -52,10 +52,12 @@ class Customer < ApplicationRecord
self.user = user || Spree::User.find_by(email: email)
end
def check_for_orders
return true unless orders.any?
errors.add(:base, I18n.t('admin.customers.destroy.has_associated_orders'))
throw :abort
def update_orders_and_delete_canceled_subscriptions
if Subscription.where(customer_id: id).not_canceled.any?
errors.add(:base, I18n.t('admin.customers.destroy.has_associated_subscriptions'))
throw :abort
end
Subscription.where(customer_id: id).destroy_all
orders.update_all(customer_id: nil)
end
end

View File

@@ -84,8 +84,8 @@ class Enterprise < ApplicationRecord
has_one_attached :promo_image
has_one_attached :terms_and_conditions
validates :logo, content_type: %r{\Aimage/(png|jpeg|gif|jpg|svg\+xml)\Z}
validates :promo_image, content_type: %r{\Aimage/(png|jpeg|gif|jpg|svg\+xml)\Z}
validates :logo, content_type: %r{\Aimage/(png|jpeg|gif|jpg|svg\+xml|webp)\Z}
validates :promo_image, content_type: %r{\Aimage/(png|jpeg|gif|jpg|svg\+xml|webp)\Z}
validates :terms_and_conditions, content_type: {
in: "application/pdf",
message: I18n.t(:enterprise_terms_and_conditions_type_error),

View File

@@ -28,8 +28,8 @@ class EnterpriseGroup < ApplicationRecord
has_one_attached :logo
has_one_attached :promo_image
validates :logo, content_type: %r{\Aimage/(png|jpeg|gif|jpg|svg\+xml)\Z}
validates :promo_image, content_type: %r{\Aimage/(png|jpeg|gif|jpg|svg\+xml)\Z}
validates :logo, content_type: %r{\Aimage/(png|jpeg|gif|jpg|svg\+xml|webp)\Z}
validates :promo_image, content_type: %r{\Aimage/(png|jpeg|gif|jpg|svg\+xml|webp)\Z}
scope :by_position, -> { order('position ASC') }
scope :on_front_page, -> { where(on_front_page: true) }

View File

@@ -5,7 +5,7 @@
# This reduces the need to keep Orders in sync with their parent Subscriptions
class ProxyOrder < ApplicationRecord
belongs_to :order, class_name: 'Spree::Order', dependent: :destroy
belongs_to :order, class_name: 'Spree::Order'
belongs_to :subscription
belongs_to :order_cycle

View File

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

View File

@@ -71,6 +71,10 @@ module Spree
set_reset_password_token
end
def generate_api_key
self.spree_api_key = SecureRandom.hex(24)
end
def known_users
if admin?
Spree::User.where(nil)
@@ -132,16 +136,6 @@ module Spree
end
end
def generate_spree_api_key!
self.spree_api_key = SecureRandom.hex(24)
save!
end
def clear_spree_api_key!
self.spree_api_key = nil
save!
end
def last_incomplete_spree_order
spree_orders.incomplete.where(created_by_id: id).order('created_at DESC').first
end

View File

@@ -17,9 +17,9 @@ class Subscription < ApplicationRecord
belongs_to :payment_method, class_name: 'Spree::PaymentMethod'
belongs_to :bill_address, class_name: "Spree::Address"
belongs_to :ship_address, class_name: "Spree::Address"
has_many :subscription_line_items, inverse_of: :subscription
has_many :subscription_line_items, inverse_of: :subscription, dependent: :destroy
has_many :order_cycles, through: :schedule
has_many :proxy_orders
has_many :proxy_orders, dependent: :destroy
has_many :orders, through: :proxy_orders
alias_attribute :billing_address, :bill_address

View File

@@ -68,12 +68,12 @@ class EmbeddedPageService
end
def current_referer
return if @request.referer.blank?
uri = URI(@request.referer)
return if uri.host.blank?
uri = URI.parse(@request.referer)
return unless uri.is_a?(URI::HTTP) && uri.host.present?
uri.host.downcase
rescue URI::InvalidURIError
false
end
def current_referer_without_www

View File

@@ -12,9 +12,9 @@ module PermittedAttributes
:email, :special_instructions,
:existing_card_id, :shipping_method_id,
{ payments_attributes: [
:payment_method_id,
{ source_attributes: PermittedAttributes::PaymentSource.attributes }
],
:payment_method_id,
{ source_attributes: PermittedAttributes::PaymentSource.attributes }
],
ship_address_attributes: PermittedAttributes::Address.attributes,
bill_address_attributes: PermittedAttributes::Address.attributes }
],

View File

@@ -1,7 +1,7 @@
= render 'spree/shared/error_messages', target: @enterprise
= form_for [main_app, :admin, @enterprise_group] do |f|
.row{ ng: {app: 'admin.enterprise_groups', controller: 'enterpriseGroupCtrl'} }
.row{ ng: {app: 'admin.enterprise_groups', controller: 'enterpriseGroupCtrl'}, data: { controller: 'tabs-and-panels', "tabs-and-panels-class-name-value": "selected" } }
.sixteen.columns.alpha
.four.columns.alpha
= render 'admin/shared/side_menu'

View File

@@ -1,5 +1,5 @@
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='about'" } }
%legend {{menu.selected.label}}
%fieldset.alpha.no-border-bottom#about_panel{ data: { "tabs-and-panels-target": "panel" } }
%legend= t('about')
= f.field_container :long_description do
%text-angular{'id' => 'enterprise_group_long_description', 'name' => 'enterprise_group[long_description]', 'class' => 'text-angular', "textangular-links-target-blank" => true,
'ta-toolbar' => "[['h1','h2','h3','h4','p'],['bold','italics','underline','clear'],['insertLink']]"}

View File

@@ -1,6 +1,6 @@
= f.fields_for :address do |af|
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='contact'" } }
%legend {{menu.selected.label}}
%fieldset.alpha.no-border-bottom#contact_panel{ data: { "tabs-and-panels-target": "panel" } }
%legend= t('admin_enterprise_groups_contact')
.row
.alpha.three.columns
= af.label :phone

View File

@@ -1,5 +1,5 @@
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='images'" } }
%legend {{menu.selected.label}}
%fieldset.alpha.no-border-bottom#images_panel{ data: { "tabs-and-panels-target": "panel" } }
%legend= t('images')
.row
.alpha.three.columns
= f.label :logo, 'ofn-with-tip' => t('admin_enterprise_groups_data_powertip_logo')

View File

@@ -1,5 +1,5 @@
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='primary_details'" } }
%legend {{menu.selected.label}}
%fieldset.alpha.no-border-bottom#primary_details_panel{ data: { "tabs-and-panels-target": "panel default" } }
%legend= t('primary_details')
= f.field_container :name do
= f.label :name
%br/

View File

@@ -1,5 +1,5 @@
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='users'" } }
%legend {{menu.selected.label}}
%fieldset.alpha.no-border-bottom#users_panel{ data: { "tabs-and-panels-target": "panel" } }
%legend= t('users')
.row
.three.columns.alpha
=f.label :owner_id, t(:admin_enterprise_groups_owner)

View File

@@ -1,5 +1,5 @@
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='web'" } }
%legend {{menu.selected.label}}
%fieldset.alpha.no-border-bottom#web_panel{ data: { "tabs-and-panels-target": "panel" } }
%legend= t('admin_enterprise_groups_web')
.row
.alpha.three.columns
= f.label :website

View File

@@ -1,63 +1,21 @@
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='primary_details'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/primary_details', f: f
- enterprise_side_menu_items(@enterprise).each do |item|
- case item[:name]
- when 'primary_details'
%fieldset.alpha.no-border-bottom{ id: "#{item[:name]}_panel", data: { controller: "primary-details", "primary-details-primary-producer-value": @enterprise.is_primary_producer.to_s, "primary-details-enterprise-sells-value": @enterprise.sells, "tabs-and-panels-target": "panel default" }}
%legend= t("#{ item[:name] }")
= render "admin/enterprises/form/#{ item[:form_name] || item[:name] }", f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='users'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/users', f: f
- when 'address'
= f.fields_for :address do |af|
%fieldset.alpha.no-border-bottom{ id: "#{item[:name]}_panel", data: { "tabs-and-panels-target": "panel" }}
%legend= t("#{ item[:name] }")
= render 'admin/enterprises/form/address', af: af
= f.fields_for :address do |af|
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='address'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/address', af: af
- when 'enterprise_permissions'
%fieldset.alpha.no-border-bottom{ id: "#{item[:name]}_panel", data: { "tabs-and-panels-target": "panel" }}
%legend= t("#{ item[:name] }")
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='contact'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/contact', f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='social'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/social', f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='business_details'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/business_details', f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='about'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/about_us', f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='images'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/images', f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='properties'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/properties', f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='shipping_methods'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/shipping_methods', f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='payment_methods'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/payment_methods', f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='enterprise_fees'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/enterprise_fees', f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='enterprise_permissions'" } }
%legend {{menu.selected.label}}
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='inventory_settings'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/inventory_settings', f: f
%fieldset.alpha.no-border-bottom{ ng: { show: "menu.selected.name=='shop_preferences'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/shop_preferences', f: f
%fieldset.alpha.no-border-bottom{ ng: { if: "menu.selected.name=='tag_rules'" } }
%legend {{menu.selected.label}}
= render 'admin/enterprises/form/tag_rules', f: f
- else
%fieldset.alpha.no-border-bottom{ id: "#{item[:name]}_panel", data: { "tabs-and-panels-target": "panel" }}
%legend= t("#{ item[:name] }")
= render "admin/enterprises/form/#{ item[:form_name] || item[:name] }", f: f

View File

@@ -10,7 +10,8 @@
%input.red{ type: "button", value: t(:update), ng: { click: "submit()", disabled: "!enterprise_form.$dirty" } }
%input{ type: "button", ng: { value: "enterprise_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", click: "cancel('#{main_app.admin_enterprises_path}')" } }
.row
.row{ data: {
controller: "tabs-and-panels", "tabs-and-panels-class-name-value": "selected" }}
.sixteen.columns.alpha
.four.columns.alpha
= render 'admin/shared/side_menu'

View File

@@ -6,8 +6,8 @@
.row
.alpha.three.columns
= f.label :email_address, t('.email_address')
%div{'ofn-with-tip' => t('.email_address_tip')}
%a= t('admin.whats_this')
= render partial: 'admin/shared/tooltip', locals: {tooltip_text: t('.email_address_tip')}
.omega.eight.columns
= f.text_field :email_address, { placeholder: t('.email_address_placeholder') }
.row
@@ -18,8 +18,8 @@
.row
.alpha.three.columns
= f.label :whatsapp_phone, t('.whatsapp_phone')
%div{'ofn-with-tip' => t('.whatsapp_phone_tip')}
%a= t('admin.whats_this')
= render partial: 'admin/shared/tooltip', locals: {tooltip_text: t('.whatsapp_phone_tip')}
.omega.eight.columns
= f.text_field :whatsapp_phone, { placeholder: t('.whatsapp_phone_placeholder') }
.row

View File

@@ -12,14 +12,13 @@
%a= t('admin.whats_this')
.eight.columns.omega
= f.collection_select :group_ids, @groups, :id, :name, {}, class: "select2 fullwidth", multiple: true, placeholder: t('.groups_placeholder')
.row
.three.columns.alpha
%label= t('.primary_producer')
%div{'ofn-with-tip' => t('.primary_producer_tip')}
%a= t('admin.whats_this')
.five.columns.omega
= f.check_box :is_primary_producer, 'ng-model' => 'Enterprise.is_primary_producer'
= f.check_box :is_primary_producer, data: { action: "change->primary-details#primaryProducerChanged" }
= f.label :is_primary_producer, t('.producer')
- if spree_current_user.admin?
.row
@@ -28,13 +27,13 @@
%div{'ofn-with-tip' => t('.sells_tip')}
%a= t('admin.whats_this')
.two.columns
= f.radio_button :sells, "none", 'ng-model' => 'Enterprise.sells'
= f.radio_button :sells, "none", 'ng-model' => 'Enterprise.sells', data: {action: "change->primary-details#enterpriseSellsChanged"}
= f.label :sells, t('.none'), value: "none"
.two.columns
= f.radio_button :sells, "own", 'ng-model' => 'Enterprise.sells'
= f.radio_button :sells, "own", 'ng-model' => 'Enterprise.sells', data: {action: "change->primary-details#enterpriseSellsChanged"}
= f.label :sells, t('.own'), value: "own"
.four.columns.omega
= f.radio_button :sells, "any", 'ng-model' => 'Enterprise.sells'
= f.radio_button :sells, "any", 'ng-model' => 'Enterprise.sells', data: {action: "change->primary-details#enterpriseSellsChanged"}
= f.label :sells, t('.any'), value: "any"
.row
.three.columns.alpha
@@ -70,8 +69,8 @@
%div{'ofn-with-tip' => t('.link_to_front_tip')}
%a= t('admin.whats_this')
.eight.columns.omega
= surround main_app.root_url, "/shop" do
{{Enterprise.permalink}}
- front_shop_path = "#{main_app.root_url}#{@enterprise.permalink}/shop"
= link_to front_shop_path, front_shop_path , target: "_blank"
.row
.three.columns.alpha
= f.label :id, t('.ofn_uid')

View File

@@ -7,19 +7,27 @@
.omega.fourteen.columns
= select_tag(:report_subtype, options_for_select(@report_subtypes, @report_subtype))
.row.rendering-options{ "data-controller": "csv-select" }
.alpha.two.columns
= label_tag :report_format, t(".generate_report")
.omega.fourteen.columns{ style: "margin-bottom: 1.5em;" }
= select_tag :report_format, grouped_options_for_select({ |
t('.formatted_data') => { t('.on_screen') => '', "PDF" => 'pdf', t('.spreadsheet') => 'xlsx' }, |
t('.raw_data') => { "CSV" => 'csv' }, |
}), { "data-csv-select-target": "reportType", "data-action": "csv-select#handleSelectChange" }
- if @report.header_option? || @report.summary_row_option?
.row
.alpha.two.columns= label_tag nil, t(".display")
.omega.fourteen.columns
- if @report.header_option?
%span.inline-checkbox{ style: "margin-right: 1rem;" }
= check_box_tag :display_header_row, true, params[:display_header_row]
= label_tag :display_header_row, t(".header_row")
- if @report.summary_row_option?
%span.inline-checkbox
= check_box_tag :display_summary_row, true, params[:display_summary_row]
= label_tag :display_summary_row, t(".summary_row")
- if @report.header_option? || @report.summary_row_option?
.row
.alpha.two.columns= label_tag nil, t(".display")
.omega.fourteen.columns
- if @report.header_option?
%span.inline-checkbox{ style: "margin-right: 1rem;" }
= check_box_tag :display_header_row, true, params[:display_header_row]
= label_tag :display_header_row, t(".header_row")
- if @report.summary_row_option?
%span.inline-checkbox
= check_box_tag :display_summary_row, true, params[:display_summary_row], { "data-csv-select-target": "checkbox" }
= label_tag :display_summary_row, t(".summary_row"), { "data-csv-select-target": "label" }
- if @report.available_headers.present?
.row
@@ -33,14 +41,3 @@
.omega.fourteen.columns
= select_tag(:fields_to_hide, options_for_select(@report.available_headers, params[:fields_to_hide]),
class: "select2 fullwidth", multiple: true)
.row.rendering-options
.alpha.two.columns
= label_tag :report_format, t(".generate_report")
.omega.fourteen.columns
= select_tag :report_format, grouped_options_for_select({ |
t('.formatted_data') => { t('.on_screen') => '', "PDF" => 'pdf', t('.spreadsheet') => 'xlsx' }, |
t('.raw_data') => { "CSV" => 'csv' }, |
})

View File

@@ -1,8 +1,13 @@
.side_menu{ ng: { controller: 'sideMenuCtrl' } }
%a.menu_item{ href: "", id: "{{ item.name.toLowerCase().replace(' ', '_') }}",
ng: { repeat: '(index,item) in menu.items | filter:{visible:true}',
click: 'select(index)',
show: '!showItem || showItem(item)',
class: '{ selected: item.selected }' } }
%i{ class: "{{item.icon_class}}" }
%span {{ item.label }}
.side_menu#side_menu
- if @enterprise
- enterprise_side_menu_items(@enterprise).each do |item|
- next unless item[:show]
%a.menu_item{ href: item[:href] || "##{item[:name]}_panel", id: item[:name], data: { action: "tabs-and-panels#changeActivePanel tabs-and-panels#changeActiveTab", "tabs-and-panels-target": "tab" }, class: item[:selected] }
%i{ class: item[:icon_class] }
%span= t("#{item[:name] }")
- else
- enterprise_group_side_menu_items.each do |item|
%a.menu_item{ href: "##{item[:name]}_panel", class: item[:selected], id: item[:name], data: { action: "tabs-and-panels#changeActivePanel tabs-and-panels#changeActiveTab", "tabs-and-panels-target": "tab" } }
%i{ class: item[:icon_class] }
%span= t("#{item[:label] }")

View File

@@ -0,0 +1,7 @@
%div{"data-controller": "tooltip"}
%a{"data-tooltip-target": "element", "data-action": "mouseenter->tooltip#showTooltip mouseleave->tooltip#hideTooltip"}= t('admin.whats_this')
.tooltip-container
.tooltip{"data-tooltip-target": "tooltip"}
= tooltip_text
.arrow{"data-tooltip-target": "arrow"}

View File

@@ -0,0 +1,8 @@
- content_for :title do
= I18n.t("errors.internal_server_error.title")
.dialog
%a{href: "/"}
%img{src: "/500.jpg"}
%h1
= t("errors.internal_server_error.title")
= t("errors.internal_server_error.message_html")

View File

@@ -0,0 +1,8 @@
- content_for :title do
= I18n.t("errors.not_found.title")
.dialog
%a{href: "/"}
%img{src: "/500.jpg"}
%h1
= t("errors.not_found.title")
= t("errors.not_found.message_html")

View File

@@ -0,0 +1,26 @@
:css
body {
text-align: center;
}
a {
font-size: 100%;
color: black;
line-height: 1.5em;
text-decoration: none;
border-bottom: 1px dotted black;
padding: 0 0.2rem;
}
a:hover, a:focus, a:active{
background: #8f301d;
color: white;
border-bottom: none;
}
- content_for :title do
= I18n.t("errors.unprocessable_entity.title")
.dialog
%a{href: "/", style: "border: none; background: none;"}
%img{src: "/422.jpg"}
%h1
= t("errors.unprocessable_entity.title")
= t("errors.unprocessable_entity.message_html")

View File

@@ -6,19 +6,3 @@
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
var u="#{Spree::Config.matomo_tag_manager_url}";
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u; s.parentNode.insertBefore(g,s);
- if Spree::Config.matomo_url.present?
:javascript
var _paq = window._paq || [];
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.#{Spree::Config.site_url}"]);
_paq.push(["setDomains", ["*.#{Spree::Config.site_url}"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="#{Spree::Config.matomo_url}";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '#{Spree::Config.matomo_site_id}']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();

View File

@@ -0,0 +1,16 @@
- if Spree::Config.matomo_url.present?
:javascript
var _paq = window._paq || [];
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.#{Spree::Config.site_url}"]);
_paq.push(["setDomains", ["*.#{Spree::Config.site_url}"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="#{Spree::Config.matomo_url}";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '#{Spree::Config.matomo_site_id}']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();

View File

@@ -15,6 +15,7 @@
%link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"}
%link{href: asset_pack_path("media/fonts/OFN-v2.woff"), rel: "preload", as: "font", crossorigin: "anonymous"}
= render "layouts/matomo_tag"
= render "layouts/matomo_tracking"
= language_meta_tags
= stylesheet_pack_tag "darkswarm", "data-turbo-track": "reload"

View File

@@ -0,0 +1,28 @@
%html
%head
:css
body {
background-color: #fff;
color: #666;
font-family: arial, sans-serif;
}
div.dialog {
width: 600px;
margin: auto;
}
@media only screen
and (min-width: 320px)
and (max-width: 568px) {
div.dialog, div.dialog img {
width: 95%;
}
}
div.dialog h1 {
font-size: 1.8em;
}
%title
= yield(:title)
%body
= yield

View File

@@ -9,6 +9,7 @@
- else
= favicon_link_tag "/favicon-staging.ico"
%link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"}
= render "layouts/matomo_tag"
= language_meta_tags
= stylesheet_pack_tag "darkswarm"

View File

@@ -24,8 +24,7 @@
- if Spree::Config[:enable_invoices?]
.ofn-drop-down-with-prepend
.ofn-drop-down-prepend{"ng-class": "selected_orders.length == 0 ? 'disabled' : ''"}
{{ selected_orders.length }}
=t('.selected')
{{ "spree.admin.orders.index.selected" | t:{count: selected_orders.length} }}
.ofn-drop-down{"ng-class": "selected_orders.length == 0 ? 'disabled' : ''"}
%span{ :class => 'icon-reorder' }
="#{t('admin.actions')}".html_safe

View File

@@ -77,3 +77,6 @@
= @order.distributor.invoice_text
= render 'spree/shared/payment'
- if @order.note.present?
= render partial: 'spree/shared/order_note'

View File

@@ -89,3 +89,6 @@
= @order.distributor.invoice_text
= render 'spree/shared/payment'
- if @order.note.present?
= render partial: 'spree/shared/order_note'

View File

@@ -9,7 +9,7 @@
\#
= @order.number
= render 'spree/admin/shared/order_tabs', :current => 'Order Details'
= render 'spree/admin/shared/order_tabs', :current => 'Customer Details'
= csrf_meta_tags
@@ -21,6 +21,7 @@
= render 'spree/admin/orders/_form/distribution_fields'
-# This param passed to stop validation error in next page due to no line items in order yet:
= hidden_field_tag 'suppress_error_msg', "true"
= hidden_field_tag "set_distribution_step", "true"
= button_tag :class => 'secondary radius expand small', :id => 'update-button' do
%i.icon-arrow-right
= t(:next)

View File

@@ -1,5 +1,5 @@
%fieldset#calculator_fields.no-border-bottom
%legend{align: "center"}= t(:calculator)
%legend{align: "center"}= t(:fees)
#preference-settings
.row
.alpha.four.columns

View File

@@ -44,22 +44,22 @@
%nav.menu
%ul
- order_details_classes = "active" if current == "Order Details"
%li{ class: order_details_classes }
= link_to_with_icon 'icon-edit', t(:order_details), spree.edit_admin_order_url(@order)
- customer_details_classes = "active" if current == "Customer Details"
%li{ class: customer_details_classes }
= link_to_with_icon 'icon-user', t(:customer_details), spree.admin_order_customer_url(@order)
- adjustments_classes = "active" if current == "Adjustments"
%li{ class: adjustments_classes }
= link_to_with_icon 'icon-cogs', t(:adjustments), spree.admin_order_adjustments_url(@order)
- order_details_classes = "active" if current == "Order Details"
%li{ class: order_details_classes }
= link_to_with_icon 'icon-edit', t(:order_details), spree.edit_admin_order_url(@order)
- payments_classes = "active" if current == "Payments"
%li{ class: payments_classes }
= link_to_with_icon 'icon-credit-card', t(:payments), spree.admin_order_payments_url(@order)
- adjustments_classes = "active" if current == "Adjustments"
%li{ class: adjustments_classes }
= link_to_with_icon 'icon-cogs', t(:adjustments), spree.admin_order_adjustments_url(@order)
- if @order.completed?
- authorizations_classes = "active" if current == "Return Authorizations"
%li{ class: authorizations_classes }

View File

@@ -1,17 +1,23 @@
%fieldset.omega.six.columns
%legend= t('spree.api.access')
= form_with(model: @user, url: spree.admin_user_path(@user)) do |form|
= form.check_box :show_api_key_view, onchange: "this.form.submit()"
= form.label :show_api_key_view, t('spree.api.toggle_api_key_view')
- if @user.spree_api_key.present?
.field
= label_tag t('spree.api.key')
= ":"
= @user.spree_api_key
.filter-actions.actions
= form_tag spree.clear_api_key_admin_user_path(@user), method: :put do
= button t('spree.api.clear_key'), 'icon-trash'
= form_tag spree.generate_api_key_admin_user_path(@user), method: :put do
= button t('spree.api.regenerate_key'), 'icon-refresh'
= form_with(model: @user, url: spree.api_key_path(id: @user), method: :delete) do |form|
= form.button t('spree.api.clear_key'), class: 'icon-trash', icon: 'icon-trash'
= form_with(model: @user, url: spree.api_keys_path(id: @user), method: :post) do |form|
= form.button t('spree.api.regenerate_key'), class: 'icon-refresh', icon: 'icon-refresh'
- else
.no-objects-found= t('spree.api.no_key')
.filter-actions.actions
= form_tag spree.generate_api_key_admin_user_path(@user), method: :put do
= button t('spree.api.generate_key'), 'icon-key'
= form_with(model: @user, url: spree.api_keys_path(id: @user), method: :post) do |form|
= form.button t('spree.api.generate_key'), class: 'icon-key', icon: 'icon-key'

View File

@@ -0,0 +1,4 @@
%p.callout{style: "margin-top: 30px"}
%strong= t :additional_information
%p{style: "margin: 5px"}
= @order.note

View File

@@ -0,0 +1,7 @@
%hr
%h3= t('.title')
%br
%p
= text_field_tag :api_key, @user.spree_api_key, disabled: true, class: 'title'
= form_tag spree.api_keys_path(@user), method: :post, class: 'inline' do
= button_tag(t('.regenerate_key'), type: 'submit', class: "button primary")

View File

@@ -7,10 +7,11 @@
%th= t(".allow_charges?")
%tr.customer{ id: "customer{{ customer.id }}", ng: { repeat: "customer in customers" } }
%td.shop{ ng: { bind: 'shopsByID[customer.enterprise_id].name' } }
%td.allow_charges
%td.allow_charges{ tooltip: "{{ hasOneDefaultSavedCards() ? null : \'" + t('.no_default_saved_cards_tooltip') + "\' }}" }
%input{ type: 'checkbox',
name: 'allow_charges',
ng: { model: 'customer.allow_charges',
change: 'customer.update()',
disabled: "!hasOneDefaultSavedCards()",
"true-value" => "true",
"false-value" => "false" } }

View File

@@ -0,0 +1,3 @@
%script{ type: "text/ng-template", id: "account/developer_settings.html" }
%h3= t('.title')
= render partial: 'api_keys'

View File

@@ -11,8 +11,7 @@
%th.order7.show-for-large-up.text-right= t('.cancel')
%tbody.transaction-group{"ng-repeat" => "order in Orders.changeable", "ng-class-odd"=>"'odd'", "ng-class-even"=>"'even'"}
%tr.order-row
%td.order1
%a{"ng-href" => "{{::order.path}}", "ng-bind" => "::order.number"}
%td.order1{"ng-bind" => "::order.number"}
%td.order2
%a{"ng-href" => "{{::Orders.shopsByID[order.shop_id].hash}}#{main_app.shop_path}", "ng-bind" => "::Orders.shopsByID[order.shop_id].name"}
%td.order3.show-for-large-up{"ng-bind" => "::order.changes_allowed_until"}

View File

@@ -8,16 +8,16 @@
%th.order4.show-for-large-up= t('.items')
%th.order5.text-right= t('.total')
%th.order6.text-right.show-for-large-up= t('.paid?')
%th.order7.text-right= t('.view')
%th.order7.text-right= t('.status')
%tbody.transaction-group{"ng-repeat" => "order in Orders.all | filter:{changes_allowed:false} as pastOrders", "ng-class-odd"=>"'odd'", "ng-class-even"=>"'even'"}
%tr.order-row
%td.order1
%a{"ng-href" => "{{::order.path}}", "ng-bind" => "::order.number"}
%td.order1{"ng-bind" => "::order.number"}
%td.order2
%a{"ng-href" => "{{::Orders.shopsByID[order.shop_id].hash}}#{main_app.shop_path}", "ng-bind" => "::Orders.shopsByID[order.shop_id].name"}
%td.order3.show-for-large-up{"ng-bind" => "::order.completed_at"}
%td.order4.show-for-large-up{"ng-bind" => "::order.item_count"}
%td.order5.text-right{"ng-class" => "{'debit': order.payment_state != 'paid', 'credit': order.payment_state == 'paid'}","ng-bind" => "::order.total | localizeCurrency"}
%td.order6.text-right.show-for-large-up{"ng-class" => "{'debit': order.payment_state != 'paid', 'credit': order.payment_state == 'paid'}", "ng-bind" => "::(order.payment_state == 'paid' ? 'say_yes' : 'say_no') | t"}
%td.order7.text-right
%a{"ng-href" => "{{::order.path}}" }= t('.view')
%td.order7.text-right{ "ng-switch" => "::order.state" }
%a{ "ng-switch-when" => "complete", "ng-href" => "{{::order.path}}" }= t('.completed')
%span{ "ng-switch-when" => "canceled" }= t('.cancelled')

View File

@@ -20,17 +20,23 @@
= render 'cards'
= render 'transactions'
= render 'settings'
= render 'developer_settings' if @user.show_api_key_view
.row.tabset-ctrl#account-tabs{ style: 'margin-bottom: 100px', navigate: 'true', selected: 'orders', prefix: 'account' }
.small.12.medium-3.columns.tab{ name: "orders" }
.small.12.medium-2.columns.tab{ name: "orders" }
%a=t('.tabs.orders')
- if Spree::Config.stripe_connect_enabled && Stripe.publishable_key
.small.12.medium-3.columns.tab{ name: "cards" }
.small.12.medium-2.columns.tab{ name: "cards" }
%a=t('.tabs.cards')
.small.12.medium-3.columns.tab{ name: "transactions" }
.small.12.medium-2.columns.tab{ name: "transactions" }
%a=t('.tabs.transactions')
.small.12.medium-3.columns.tab{ name: "settings" }
.small.12.medium-2.columns.tab{ name: "settings" }
%a=t('.tabs.settings')
// the api_keys partial is the only content for now, so we have to hide the whole tab for now
// if there is new content, we will need to handle this inside the developer_settings partial
- if @user.show_api_key_view
.small.12.medium-3.columns.tab{ name: "developer_settings" }
%a=t('.tabs.developer_settings')
.small-12.columns.tab-view
= render partial: "shared/footer"

View File

@@ -0,0 +1,21 @@
import { Controller } from "stimulus";
export default class extends Controller {
static targets = ["reportType", "checkbox", "label"]
handleSelectChange() {
this.reportTypeTarget.value == "csv" ? this.disableField() : this.enableField()
}
disableField() {
this.checkboxTarget.checked = false;
this.checkboxTarget.disabled = true;
this.labelTarget.classList.add("disabled");
}
enableField() {
this.checkboxTarget.checked = true;
this.checkboxTarget.disabled = false;
this.labelTarget.classList.remove("disabled");
}
}

View File

@@ -11,36 +11,36 @@ export default class extends Controller {
// private
populateSelect(sourceId) {
this.removeCurrentOptions()
this.populateNewOptions(sourceId)
this.removeCurrentOptions();
this.populateNewOptions(sourceId);
}
removeCurrentOptions() {
this.selectTarget.innerHTML = ""
this.selectTarget.innerHTML = "";
this.selectTarget.tomselect?.clear()
this.selectTarget.tomselect?.clearOptions()
this.selectTarget.tomselect?.clear();
this.selectTarget.tomselect?.clearOptions();
}
populateNewOptions(sourceId) {
const options = this.dependantOptionsFor(sourceId)
const options = this.dependantOptionsFor(sourceId);
options.forEach((item) => {
this.addOption(item[0], item[1])
this.addOption(item[0], item[1]);
});
this.selectTarget.tomselect?.sync()
this.selectTarget.tomselect?.addItem(options[0]?.[1])
this.selectTarget.tomselect?.sync();
this.selectTarget.tomselect?.addItem(options[0]?.[1]);
}
addOption(label, value) {
const newOption = document.createElement("option")
newOption.innerHTML = label
newOption.value = value
this.selectTarget.appendChild(newOption)
const newOption = document.createElement("option");
newOption.innerHTML = label;
newOption.value = value;
this.selectTarget.appendChild(newOption);
}
dependantOptionsFor(sourceId) {
return this.optionsValue.find((option) => option[0] === sourceId)[1]
return this.optionsValue.find((option) => option[0] === sourceId)[1];
}
}

View File

@@ -3,7 +3,7 @@
// or:
// div{data: {controller: "example"}}
import { Controller } from "stimulus"
import { Controller } from "stimulus";
export default class extends Controller {
// connect() is a built-in lifecycle callback for Stimulus Controllers. It fires when the
@@ -11,7 +11,7 @@ export default class extends Controller {
// injected into the DOM. This means initialization is not tied to the page load event, but
// will also happen dynamically if and when new DOM elements are added or removed.
connect() {
console.log("We're connected!")
console.log("We're connected!");
}
}

View File

@@ -1,20 +1,20 @@
import { Controller } from "stimulus"
import { Controller } from "stimulus";
document.addEventListener('turbolinks:before-cache', () =>
document.getElementById('flash').remove()
)
document.addEventListener("turbolinks:before-cache", () =>
document.getElementById("flash").remove()
);
export default class extends Controller {
connect() {
setTimeout(this.fadeout.bind(this), 3000)
setTimeout(this.fadeout.bind(this), 3000);
}
fadeout() {
this.element.classList.add("animate-hide-500")
setTimeout(this.close.bind(this), 500)
this.element.classList.add("animate-hide-500");
setTimeout(this.close.bind(this), 500);
}
close() {
this.element.remove()
this.element.remove();
}
}

View File

@@ -1,22 +1,24 @@
import { Controller } from "stimulus"
import { Controller } from "stimulus";
export default class extends Controller {
static targets = ["checkout", "guest"];
static values = {
distributor: String,
session: { type: String, default: "guest-checkout" }
session: { type: String, default: "guest-checkout" },
};
connect() {
if(!this.hasGuestTarget) { return }
if (!this.hasGuestTarget) {
return;
}
if(this.usingGuestCheckout()) {
if (this.usingGuestCheckout()) {
this.showCheckout();
}
}
login() {
window.dispatchEvent(new Event("login:modal:open"))
window.dispatchEvent(new Event("login:modal:open"));
}
showCheckout() {
@@ -30,6 +32,6 @@ export default class extends Controller {
}
usingGuestCheckout() {
return sessionStorage.getItem(this.sessionValue) === this.distributorValue
return sessionStorage.getItem(this.sessionValue) === this.distributorValue;
}
}

View File

@@ -1,33 +1,33 @@
import { Controller } from "stimulus"
import { Controller } from "stimulus";
export default class extends Controller {
static targets = ["background", "modal"]
static targets = ["background", "modal"];
open() {
this.backgroundTarget.style.display = "block"
this.modalTarget.style.display = "block"
this.backgroundTarget.style.display = "block";
this.modalTarget.style.display = "block";
setTimeout(() => {
this.modalTarget.classList.add("in")
this.backgroundTarget.classList.add("in")
document.querySelector("body").classList.add("modal-open")
})
this.modalTarget.classList.add("in");
this.backgroundTarget.classList.add("in");
document.querySelector("body").classList.add("modal-open");
});
}
close() {
this.modalTarget.classList.remove("in")
this.backgroundTarget.classList.remove("in")
document.querySelector("body").classList.remove("modal-open")
this.modalTarget.classList.remove("in");
this.backgroundTarget.classList.remove("in");
document.querySelector("body").classList.remove("modal-open");
setTimeout(() => {
this.backgroundTarget.style.display = "none"
this.modalTarget.style.display = "none"
}, 200)
this.backgroundTarget.style.display = "none";
this.modalTarget.style.display = "none";
}, 200);
}
closeIfEscapeKey(e) {
if (e.code == "Escape") {
this.close()
this.close();
}
}
}

View File

@@ -1,11 +1,15 @@
import { Controller } from "stimulus"
import { Controller } from "stimulus";
export default class extends Controller {
static values = { target: String }
static values = { target: String };
open() {
let helpModal = document.getElementById(this.targetValue)
let helpModalController = this.application.getControllerForElementAndIdentifier(helpModal, "help-modal");
let helpModal = document.getElementById(this.targetValue);
let helpModalController =
this.application.getControllerForElementAndIdentifier(
helpModal,
"help-modal"
);
helpModalController.open();
}
}

View File

@@ -1,61 +1,70 @@
import { Controller } from "stimulus"
import CableReady from "cable_ready"
import { Controller } from "stimulus";
import CableReady from "cable_ready";
export default class extends Controller {
static targets = ["background", "modal", "email"]
static values = { email: String }
static targets = ["background", "modal", "email"];
static values = { email: String };
connect() {
if(this.hasModalTarget) {
window.addEventListener("login:modal:open", this.open)
if (this.hasModalTarget) {
window.addEventListener("login:modal:open", this.open);
if(location.hash.substr(1).includes("/login")) {
this.open()
if (location.hash.substr(1).includes("/login")) {
this.open();
}
}
}
call(event) {
event.preventDefault()
window.dispatchEvent(new Event("login:modal:open"))
event.preventDefault();
window.dispatchEvent(new Event("login:modal:open"));
}
emailOnInput(event) {
this.emailValue = event.currentTarget.value
this.emailValue = event.currentTarget.value;
this.emailTargets.forEach((element) => {
element.value = this.emailValue
})
element.value = this.emailValue;
});
}
open = () => {
if(!location.hash.substr(1).includes("/login")) {
history.pushState({}, "", "#/login")
if (!location.hash.substr(1).includes("/login")) {
history.pushState({}, "", "#/login");
}
this.backgroundTarget.style.display = "block"
this.modalTarget.style.display = "block"
this.backgroundTarget.style.display = "block";
this.modalTarget.style.display = "block";
setTimeout(() => {
this.modalTarget.classList.add("in")
this.backgroundTarget.classList.add("in")
document.querySelector("body").classList.add("modal-open")
})
this.modalTarget.classList.add("in");
this.backgroundTarget.classList.add("in");
document.querySelector("body").classList.add("modal-open");
});
window._paq?.push(['trackEvent', 'Signin/Signup', 'Login Modal View', window.location.href])
}
window._paq?.push([
"trackEvent",
"Signin/Signup",
"Login Modal View",
window.location.href,
]);
};
close() {
history.pushState({}, "", window.location.pathname + window.location.search)
history.pushState(
{},
"",
window.location.pathname + window.location.search
);
this.modalTarget.classList.remove("in")
this.backgroundTarget.classList.remove("in")
this.modalTarget.classList.remove("in");
this.backgroundTarget.classList.remove("in");
document.querySelector("body").classList.remove("modal-open")
document.querySelector("body").classList.remove("modal-open");
setTimeout(() => {
this.backgroundTarget.style.display = "none"
this.modalTarget.style.display = "none"
}, 200)
this.backgroundTarget.style.display = "none";
this.modalTarget.style.display = "none";
}, 200);
}
resend_confirmation(event) {
@@ -63,19 +72,21 @@ export default class extends Controller {
method: "POST",
body: JSON.stringify({
spree_user: { email: this.emailValue },
tab: event.currentTarget.dataset.tab
tab: event.currentTarget.dataset.tab,
}),
headers: { "Content-type": "application/json; charset=UTF-8" }
}).then(data => data.json()).then(CableReady.perform)
headers: { "Content-type": "application/json; charset=UTF-8" },
})
.then((data) => data.json())
.then(CableReady.perform);
}
returnHome() {
window.location = "/"
window.location = "/";
}
disconnect() {
if(this.hasModalTarget) {
window.removeEventListener("login:modal:open", this.open)
if (this.hasModalTarget) {
window.removeEventListener("login:modal:open", this.open);
}
}
}

View File

@@ -27,7 +27,7 @@ export default class extends Controller {
Array.from(
document.getElementsByClassName("paymentmethod-container")
).forEach((container) => {
const enabled = container.id === paymentMethodContainerId
const enabled = container.id === paymentMethodContainerId;
if (enabled) {
container.style.display = "block";

View File

@@ -0,0 +1,30 @@
import { Controller } from "stimulus";
import CableReady from "cable_ready";
export default class extends Controller {
static values = { primaryProducer: String, enterpriseSells: String };
primaryProducerChanged(event) {
this.primaryProducerValue = event.currentTarget.checked;
this.makeRequest();
}
enterpriseSellsChanged(event) {
if (event.currentTarget.checked) {
this.enterpriseSellsValue = event.currentTarget.value;
this.makeRequest();
}
}
makeRequest() {
fetch(
`?stimulus=true&enterprise_sells=${this.enterpriseSellsValue}&is_primary_producer=${this.primaryProducerValue}`,
{
method: "GET",
headers: { "Content-type": "application/json; charset=UTF-8" },
}
)
.then((data) => data.json())
.then(CableReady.perform);
}
}

View File

@@ -2,16 +2,15 @@ import { Controller } from "stimulus";
export default class extends Controller {
static targets = ["chevron"];
static values = { selector: String }
static values = { selector: String };
toggle(event) {
if (this.hasChevronTarget) {
this.chevronTarget.classList.toggle("icon-chevron-down")
this.chevronTarget.classList.toggle("icon-chevron-up")
this.chevronTarget.classList.toggle("icon-chevron-down");
this.chevronTarget.classList.toggle("icon-chevron-up");
}
const element = document.querySelector(this.selectorValue)
element.style.display = element.style.display === "none" ? "block" : "none"
const element = document.querySelector(this.selectorValue);
element.style.display = element.style.display === "none" ? "block" : "none";
}
}

View File

@@ -6,7 +6,7 @@ export default class extends Controller {
static targets = ["stripeelements", "select"];
connect() {
this.initSelectedCard()
this.initSelectedCard();
}
initSelectedCard() {

View File

@@ -1,16 +1,24 @@
import { Controller } from "stimulus"
import { Controller } from "stimulus";
export default class extends Controller {
static targets = [ "cardElement", "cardErrors", "expMonth", "expYear", "brand", "last4", "pmId" ];
static targets = [
"cardElement",
"cardErrors",
"expMonth",
"expYear",
"brand",
"last4",
"pmId",
];
static styles = {
base: {
fontFamily: "Roboto, Arial, sans-serif",
fontSize: "16px",
color: "#5c5c5c",
"::placeholder": {
color: "#6c6c6c"
}
}
color: "#6c6c6c",
},
},
};
initialize() {
@@ -19,10 +27,12 @@ export default class extends Controller {
// Initialize Stripe JS
this.stripe = Stripe(this.data.get("key"));
this.stripeElement = this.stripe.elements({ locale: I18n.base_locale }).create("card", {
style: this.constructor.styles,
hidePostalCode: true
});
this.stripeElement = this.stripe
.elements({ locale: I18n.base_locale })
.create("card", {
style: this.constructor.styles,
hidePostalCode: true,
});
// Mount Stripe Elements JS to the form field
this.stripeElement.mount(this.cardElementTarget);
@@ -41,26 +51,42 @@ export default class extends Controller {
// Before the form is submitted we send the card details directly to Stripe (via StripeJS),
// and receive a token which represents the card object, and add that token into the form.
stripeSubmit = (event) => {
if(!this.stripeSelected() || !this.catchFormSubmit) { return }
if (!this.stripeSelected() || !this.catchFormSubmit) {
return;
}
event.preventDefault();
event.stopPropagation();
this.stripe.createPaymentMethod({type: "card", card: this.stripeElement}).then(response => {
if (response.error) {
this.updateErrors(response);
} else {
this.pmIdTarget.setAttribute("value", response.paymentMethod.id);
this.expMonthTarget.setAttribute("value", response.paymentMethod.card.exp_month);
this.expYearTarget.setAttribute("value", response.paymentMethod.card.exp_year);
this.brandTarget.setAttribute("value", response.paymentMethod.card.brand);
this.last4Target.setAttribute("value", response.paymentMethod.card.last4);
this.catchFormSubmit = false;
event.submitter.click();
}
});
}
this.stripe
.createPaymentMethod({ type: "card", card: this.stripeElement })
.then((response) => {
if (response.error) {
this.updateErrors(response);
} else {
this.pmIdTarget.setAttribute("value", response.paymentMethod.id);
this.expMonthTarget.setAttribute(
"value",
response.paymentMethod.card.exp_month
);
this.expYearTarget.setAttribute(
"value",
response.paymentMethod.card.exp_year
);
this.brandTarget.setAttribute(
"value",
response.paymentMethod.card.brand
);
this.last4Target.setAttribute(
"value",
response.paymentMethod.card.last4
);
this.catchFormSubmit = false;
event.submitter.click();
}
});
};
// Update validation messages from Stripe shown in the form
updateErrors = (data) => {
@@ -69,10 +95,10 @@ export default class extends Controller {
} else {
this.cardErrorsTarget.textContent = "";
}
}
};
// Boolean; true if Stripe is shown / currently selected
stripeSelected() {
return !!this.cardElementTarget.offsetParent
return !!this.cardElementTarget.offsetParent;
}
}

View File

@@ -0,0 +1,40 @@
import { Controller } from "stimulus";
export default class extends Controller {
static targets = ["tab", "panel", "default"];
static values = { className: String };
connect() {
// hide all active panel
this.panelTargets.forEach((panel) => {
panel.style.display = "none";
});
// only display the default panel
this.defaultTarget.style.display = "block";
}
changeActivePanel(event) {
const newActivePanel = this.panelTargets.find(
(panel) => panel.id == `${event.currentTarget.id}_panel`
);
this.currentActivePanel.style.display = "none";
newActivePanel.style.display = "block";
}
changeActiveTab(event) {
this.currentActiveTab.classList.remove(`${this.classNameValue}`);
event.currentTarget.classList.add(`${this.classNameValue}`);
}
get currentActiveTab() {
return this.tabTargets.find((tab) => tab.classList.contains("selected"));
}
get currentActivePanel() {
return this.panelTargets.find(
(panel) => panel.id == `${this.currentActiveTab.id}_panel`
);
}
}

View File

@@ -1,36 +1,36 @@
import { Controller } from "stimulus";
export default class extends Controller {
static targets = ["tab", "content"]
static targets = ["tab", "content"];
select(event) {
this.setCurrentTab(this.tabTargets.indexOf(event.currentTarget))
this.setCurrentTab(this.tabTargets.indexOf(event.currentTarget));
}
// private
connect() {
this.setCurrentTab()
this.setCurrentTab();
}
setCurrentTab(tabIndex = 0) {
this.showSelectedContent(tabIndex)
this.setButtonActiveClass(tabIndex)
this.showSelectedContent(tabIndex);
this.setButtonActiveClass(tabIndex);
}
showSelectedContent(tabIndex) {
this.contentTargets.forEach((element, index) => {
element.hidden = index !== tabIndex
})
element.hidden = index !== tabIndex;
});
}
setButtonActiveClass(tabIndex) {
this.tabTargets.forEach((element, index) => {
if(index === tabIndex) {
element.classList.add("active")
if (index === tabIndex) {
element.classList.add("active");
} else {
element.classList.remove("active")
element.classList.remove("active");
}
})
});
}
}

View File

@@ -0,0 +1,49 @@
import { Controller } from "stimulus";
import { computePosition, offset, arrow } from "@floating-ui/dom";
export default class extends Controller {
static targets = ["element", "tooltip", "arrow"];
static values = {
placement: {
type: String,
default: "top",
},
};
update() {
computePosition(this.elementTarget, this.tooltipTarget, {
placement: this.placementValue,
middleware: [offset(6), arrow({ element: this.arrowTarget })],
}).then(({ x, y, placement, middlewareData }) => {
Object.assign(this.tooltipTarget.style, {
left: `${x}px`,
top: `${y}px`,
});
const { x: arrowX, y: arrowY } = middlewareData.arrow;
const staticSide = {
top: "bottom",
right: "left",
bottom: "top",
left: "right",
}[placement.split("-")[0]];
Object.assign(this.arrowTarget.style, {
left: arrowX != null ? `${arrowX}px` : "",
top: arrowY != null ? `${arrowY}px` : "",
right: "",
bottom: "",
[staticSide]: "-4px",
});
});
}
showTooltip() {
this.tooltipTarget.style.display = "block";
this.update();
}
hideTooltip() {
this.tooltipTarget.style.display = "";
}
}

View File

@@ -2,3 +2,31 @@
max-width: 240px;
white-space: normal;
}
.tooltip {
display: none;
position: absolute;
top: 0;
left: 0;
font-size: 13px;
pointer-events: none;
background-color: #5498da;
padding: 5px 15px;
border-radius: 3px;
color: #fff;
max-width: 240px;
white-space: normal;
}
.arrow {
background-color: #5498da;
position: absolute;
width: 8px;
height: 8px;
transform: rotate(45deg);
}
.tooltip-container {
position: relative;
width: 240px;
}

View File

@@ -1,6 +1,6 @@
import { Application } from "stimulus"
import { definitionsFromContext } from "stimulus/webpack-helpers"
import { Application } from "stimulus";
import { definitionsFromContext } from "stimulus/webpack-helpers";
const application = Application.start()
const context = require.context("controllers", true, /.js$/)
application.load(definitionsFromContext(context))
const application = Application.start();
const context = require.context("controllers", true, /.js$/);
application.load(definitionsFromContext(context));

View File

@@ -1,27 +1,24 @@
/* eslint no-console:0 */
// StimulusJS
import { Application } from "stimulus"
import { definitionsFromContext } from "stimulus/webpack-helpers"
import { Application } from "stimulus";
import { definitionsFromContext } from "stimulus/webpack-helpers";
const application = Application.start()
const context = require.context("controllers", true, /.js$/)
application.load(definitionsFromContext(context))
const application = Application.start();
const context = require.context("controllers", true, /.js$/);
application.load(definitionsFromContext(context));
import CableReady from "cable_ready"
import mrujs from "mrujs"
import { CableCar } from "mrujs/plugins"
import * as Turbo from "@hotwired/turbo"
import CableReady from "cable_ready";
import mrujs from "mrujs";
import { CableCar } from "mrujs/plugins";
import * as Turbo from "@hotwired/turbo";
window.Turbo = Turbo
window.CableReady = CableReady
window.Turbo = Turbo;
window.CableReady = CableReady;
mrujs.start({
plugins: [
new CableCar(CableReady)
]
})
require.context('../fonts', true)
const images = require.context('../images', true)
const imagePath = (name) => images(name, true)
plugins: [new CableCar(CableReady)],
});
require.context("../fonts", true);
const images = require.context("../images", true);
const imagePath = (name) => images(name, true);

View File

@@ -32,6 +32,8 @@ if defined?(Bundler)
# Bundler.require(:default, :assets, Rails.env)
end
require "view_component/storybook" if Rails.env.development?
module Openfoodnetwork
class Application < Rails::Application
config.middleware.insert_before(
@@ -226,6 +228,7 @@ module Openfoodnetwork
config.active_record.belongs_to_required_by_default = false
config.active_record.cache_versioning = false
config.active_record.has_many_inversing = false
config.active_record.yaml_column_permitted_classes = [BigDecimal, Symbol]
config.active_support.escape_html_entities_in_json = true
@@ -242,5 +245,7 @@ module Openfoodnetwork
config.active_storage.service = ENV["S3_BUCKET"].present? ? :amazon : :local
config.active_storage.content_types_to_serve_as_binary -= ["image/svg+xml"]
config.active_storage.variable_content_types += ["image/svg+xml"]
config.exceptions_app = self.routes
end
end

View File

@@ -528,8 +528,6 @@ ar:
guest_label: "الخروج كضيف"
credit_owed: "الائتمان مدين"
balance_due: "الرصيد المستحق"
destroy:
has_associated_orders: "فشل الحذف: قام العميل بربط الطلبات مع متجره"
contents:
edit:
title: المحتوى
@@ -3640,7 +3638,6 @@ ar:
results_found: "تم العثور على النتائج %{number}."
viewing: "عرض %{start} إلى %{end}."
print_invoices: "طباعة الفواتير"
selected: تم الاختيار
sortable_header:
payment_state: "حالة الدفعة"
shipment_state: "حالة الشحن"
@@ -3777,7 +3774,6 @@ ar:
paypal:
no_payment_via_admin_backend: لا يمكن التقاط مدفوعات Paypal في Backoffice
products:
image_upload_error: "لم يتم التعرف على صورة المنتج. يرجى تحميل صورة بتنسيق PNG أو JPG."
new:
title: "منتج جديد"
new_product: "منتج جديد"
@@ -4040,6 +4036,8 @@ ar:
connection_failed: "تعذر الاتصال بـ PayPal."
generic_error: "فشل PayPal. %{reasons}"
users:
api_keys:
regenerate_key: "انشاء مفتاح"
form:
account_settings: إعدادت الحساب
show:
@@ -4073,7 +4071,8 @@ ar:
items: المواد
total: المجموع
paid?: دفع؟
view: عرض
status: الحالة
cancelled: ألغيت
saved_cards:
default?: الإفتراضي؟
delete?: حذف؟

View File

@@ -61,11 +61,6 @@ ca:
using_producer_stock_settings_but_count_on_hand_set: "ha d'estar en blanc perquè s'utilitza la configuració d'estoc de la productora"
on_demand_but_count_on_hand_set: "ha d'estar en blanc si és sota demanda"
limited_stock_but_no_count_on_hand: "cal especificar-se perquè força existències limitades"
errors:
messages:
file_size_out_of_range: "la mida %{file_size} no és entre el rang necessari"
limit_out_of_range: "el total està fora del marge"
image_metadata_missing: "no és una imatge vàlida"
stripe:
error_code:
incorrect_number: "El número de la targeta és incorrecte."
@@ -508,8 +503,6 @@ ca:
guest_label: "Fer comanda com a convidat"
credit_owed: "Crèdit a deure"
balance_due: "A pagar"
destroy:
has_associated_orders: "S'ha produït un error en suprimir: la consumidora té comandes associades amb la seva botiga"
contents:
edit:
title: Contingut
@@ -3448,7 +3441,6 @@ ca:
results_found: "%{number} Resultats trobats."
viewing: "Veient %{start} a %{end}."
print_invoices: "Imprimir factures"
selected: seleccionat
sortable_header:
payment_state: "Estat del pagament"
shipment_state: "Estat de la Tramesa"
@@ -3585,7 +3577,6 @@ ca:
paypal:
no_payment_via_admin_backend: Els pagaments amb Paypal no es poden marcar com pagats des de l'administració
products:
image_upload_error: "No s'ha reconegut la imatge del producte. Carregueu una imatge en format PNG o JPG."
new:
title: "Nou producte"
new_product: "Nou producte"
@@ -3847,6 +3838,8 @@ ca:
connection_failed: "No s'ha pogut connectar a PayPal."
generic_error: "PayPal ha fallat. %{reasons}"
users:
api_keys:
regenerate_key: "Regenerar la clau"
form:
account_settings: Configuració del compte
show:
@@ -3880,7 +3873,8 @@ ca:
items: Articles
total: Total
paid?: Pagat?
view: Veure
status: Estat
cancelled: Cancel·lada
saved_cards:
default?: Per defecte?
delete?: Suprimeix?

View File

@@ -61,27 +61,6 @@ cy:
using_producer_stock_settings_but_count_on_hand_set: "rhaid bod yn wag oherwydd defnydd o osodiadau stoc cynhyrchwyr"
on_demand_but_count_on_hand_set: "rhaid iddo fod yn wag os ar alw"
limited_stock_but_no_count_on_hand: "rhaid nodi hyn oherwydd gorfodi stoc gyfyngedig"
errors:
messages:
content_type_invalid: "math o gynnwys annilys"
file_size_out_of_range: "nid yw'r maint %{file_size} rhwng yr ystod ofynnol"
limit_out_of_range: "mae'r cyfanswm rhif tu hwnt i'r ystod"
image_metadata_missing: "nid yw'n llun dilys"
dimension_min_inclusion: "mae'n gorfod bod yn fwy neu'r un faint â %{width} x %{height} picsel."
dimension_max_inclusion: "mae'n gorfod bod yn llai neu'r un faint â %{width} x %{height} picsel."
dimension_width_inclusion: "nid yw lled yn cael ei gynnwys rhwng %{min} ac %{max} picsel."
dimension_height_inclusion: "nid yw uchder yn cael ei gynnwys rhwng %{min} acd %{max} picsel."
dimension_width_greater_than_or_equal_to: "mae'r lled yn gorfod bod yn fwy neu'r un faint â %{length} picsel."
dimension_height_greater_than_or_equal_to: "mae'r uchder yn gorfod bod yn fwy neu'r un faint â %{length} picsel."
dimension_width_less_than_or_equal_to: "mae'r lled yn gorfod bod yn llai neu'r un faint â %{length} picsel."
dimension_height_less_than_or_equal_to: "mae'r uchder yn gorfod bod yn llai neu'r un faint â %{length} picsel."
dimension_width_equal_to: "mae'r lled yn gorfod bod yr un faint â %{length} picsel."
dimension_height_equal_to: "mae'r uchder yn gorfod bod yr un faint â %{length} picsel."
aspect_ratio_not_square: "mae'n gorfod bod yn llun sgwâr"
aspect_ratio_not_portrait: "mae'n gorfod bod yn llun siâp portread"
aspect_ratio_not_landscape: "mae'n gorfod bod yn llun siâp tirlun"
aspect_ratio_is_not: "mae'n rhaid cael cymhareb agwedd o %{aspect_ratio}"
aspect_ratio_unknown: "yn meddu ar gymhareb agwedd anhysbys"
stripe:
error_code:
incorrect_number: "Mae rhif y cerdyn yn anghywir"
@@ -182,6 +161,7 @@ cy:
signed_up_but_unconfirmed: "Anfonwyd neges gyda dolen gadarnhau i'ch cyfeiriad e-bost. Agorwch y ddolen i actifadu eich cyfrif."
unknown_error: "Aeth rhywbeth o'i le wrth greu eich cyfrif. Gwiriwch eich cyfeiriad e-bost a rhoi cynnig arall arni."
failure:
disabled: "Analluogwyd eich cyfrif. Anfonwch ebost at: support@openfoodnetwork.org.uk i ddatrys y broblem hon."
invalid: |
Ebost neu gyfrinair annilys.
Wnaethoch chi archebu fel gwestai'r tro diwethaf? Hwyrach bod angen ichi greu cyfrif, neu ailosod eich cyfrinair.
@@ -502,6 +482,7 @@ cy:
enable_invoices?: "Galluogi Anfonebau?"
invoice_style2?: "Defnyddiwch y model anfoneb amgen sy'n cynnwys dadansoddiad treth cyfan fesul cyfradd a gwybodaeth cyfradd dreth fesul eitem (ddim yn addas eto ar gyfer gwledydd sy'n arddangos prisiau ac eithrio treth)"
enable_receipt_printing?: "Dangos opsiynau ar gyfer argraffu derbynebau gan ddefnyddio argraffwyr thermol yn nhrefn y cwymplen?"
enterprise_number_required_on_invoices?: "Angen rhif y cwmni i greu anfoneb?"
stripe_connect_settings:
edit:
title: "Cyswllt Stripe"
@@ -549,8 +530,6 @@ cy:
guest_label: "Talu fel gwestai"
credit_owed: "Credyd yn ddyledus"
balance_due: "Balans sy'n ddyledus"
destroy:
has_associated_orders: "Wedi methu ei ddileu: mae gan y cwsmer archebion cysylltiedig gyda'i siop"
contents:
edit:
title: Cynnwys
@@ -778,6 +757,9 @@ cy:
variants_without_unit_value: "RHYBUDD: Nid oes gwerth uned i rai amrywolion"
all: "I gyd"
select_variant: "Dewiswch amrywiolyn"
note:
note_label: "Noder:"
no_note_present: "Ni ddarparwyd nodyn."
enterprise:
select_outgoing_oc_products_from: Dewiswch gynnyrch OC sy'n mynd allan o
enterprises:
@@ -826,7 +808,9 @@ cy:
email_address_tip: "Dangosir y cyfeiriad e-bost hwn yn eich proffil cyhoeddus"
phone: Ffôn
phone_placeholder: e.e. 98 7654 3210
whatsapp_phone: Rhif ffôn WhatsApp
whatsapp_phone_placeholder: eg. +44 7545 123123
whatsapp_phone_tip: "Caiff y rhif ei arddangos ar eich proffil cyhoeddus iw agor fel dolen WhatsApp."
website: Gwefan
website_placeholder: ee. www.truffles.co.uk
enterprise_fees:
@@ -1171,6 +1155,7 @@ cy:
cancel: Canslo
proceed: Ewch ymlaen
status:
undated: dim dyddiad
upcoming: i ddod
open: agor
closed: ar gau
@@ -1201,6 +1186,7 @@ cy:
unitsize: MAINT UNEDAU
total: CYFANSWM
total_items: CYFANSWM EITEMAU
total_by_customer: Cyfanswm fesul Cwsmer
total_by_supplier: Cyfanswm fesul Cyflenwr
supplier_totals: Cyfanswm Cylch Archebu Cyflenwyr
supplier_totals_by_distributor: Cyfanswm Cylch Archebu Cyflenwyr fesul Dosbarthwr
@@ -1809,6 +1795,7 @@ cy:
order_hub_info: Gwybodaeth Hwb
order_back_to_store: Yn ôl i'r siop
order_back_to_cart: Yn ôl i'r basged
order_back_to_website: Yn ôl ir Wefan
bom_tip: "Defnyddiwch y dudalen hon i newid nifer cynnyrch ar draws sawl archeb. Gellir hefyd dileu cynnyrch o archebion yn gyfan gwbl, pe dymunir."
unsaved_changes_warning: "Mae newidiadau heb eu cadw yn bodoli a byddant yn cael eu colli os byddwch yn parhau."
unsaved_changes_error: "Mae'r meysydd â ffiniau coch yn cynnwys gwallau."
@@ -1829,13 +1816,13 @@ cy:
email_signoff: "Hwyl,"
email_signature: "Tîm %{sitename} "
email_confirm_customer_greeting: "Helo %{name},"
email_confirm_customer_intro_html: "Diolch am siopa yn <strong>%{distributor}</strong> !"
email_confirm_customer_number_html: "Cadarnhad o archeb <strong># %{number}</strong>"
email_confirm_customer_details_html: "Dyma fanylion eich archeb o <strong>%{distributor}</strong> :"
email_confirm_customer_intro_html: "Diolch am siopa gyda ni <strong>%{distributor}</strong> !"
email_confirm_customer_number_html: "Cadarnhad archeb <strong># %{number}</strong>"
email_confirm_customer_details_html: "Dyma fanylion eich archeb gan<strong>%{distributor}</strong> :"
email_confirm_customer_signoff: "Cofion cynnes,"
email_confirm_shop_greeting: "Helo %{name},"
email_confirm_shop_order_html: "Da iawn! Mae gennych archeb newydd ar gyfer <strong>%{distributor}</strong> !"
email_confirm_shop_number_html: "Cadarnhad o archeb <strong># %{number}</strong>"
email_confirm_shop_number_html: "Cadarnhad archeb <strong># %{number}</strong>"
email_order_summary_item: "Eitem"
email_order_summary_quantity: "NIfer"
email_order_summary_sku: "Cod y Cynnyrch"
@@ -2071,7 +2058,7 @@ cy:
orders_oc_expired_text_link: "neu gweler y cylchoedd archebu eraill sydd ar gael yn yr hwb yma"
orders_oc_expired_email: "E-bost:"
orders_oc_expired_phone: "Ffôn:"
orders_show_title: "Cadarnhau Archeb"
orders_show_title: "Cadarnhad Archeb"
orders_show_time: "Archeb yn barod ar"
orders_show_order_number: "Archeb # %{number}"
orders_show_cancelled: "Canslwyd"
@@ -2204,6 +2191,8 @@ cy:
contact_field_placeholder: "Enw Cyswllt"
contact_field_required: "Mae angen i chi nodi prif gyswllt."
phone_field: "Rhif ffôn"
whatsapp_phone_field: "Rhif ffôn WhatsApp"
whatsapp_phone_tooltip: "Caiff y rhif ei arddangos ar eich proffil cyhoeddus iw agor fel dolen WhatsApp."
phone_field_placeholder: "e.e. 07123123123"
whatsapp_phone_field_placeholder: "eg. +44 7545 123123"
type:
@@ -3652,7 +3641,6 @@ cy:
results_found: "Cafwyd hyd i%{number} canlyniad."
viewing: "Yn edrych ar %{start} i %{end}."
print_invoices: "Argraffu anfonebau"
selected: dewiswyd
sortable_header:
payment_state: "Cyflwr Talu"
shipment_state: "Sir anfon"
@@ -3667,6 +3655,9 @@ cy:
from: "O"
to: "Bil i"
shipping: "Yn anfon"
note:
note_label: "Noder:"
no_note_present: "Ni ddarparwyd nodyn."
form:
distribution_fields:
title: "Dosbarthiad"
@@ -3789,7 +3780,6 @@ cy:
paypal:
no_payment_via_admin_backend: Ni ellir cipio taliadau Paypal yn y Swyddfa Gefn
products:
image_upload_error: "Nid oedd yn bosib adnabod delwedd y cynnyrch. Lanlwythwch ddelwedd mewn fformat PNG neu JPG."
new:
title: "Cynnyrch Newydd"
new_product: "Cynnyrch Newydd"
@@ -3852,6 +3842,7 @@ cy:
back_to_users_list: "Yn ôl i'r Rhestr Defnyddwyr"
general_settings: "Gosodiadau Cyffredinol"
form:
disabled: "Analluogwyd?"
email: "E-bost"
roles: "Rolau"
enterprise_limit: "Uchafswm Mentrau"
@@ -4052,6 +4043,8 @@ cy:
connection_failed: "Methu cysylltu â PayPal."
generic_error: "PayPal wedi methu %{reasons}"
users:
api_keys:
regenerate_key: "Allwedd Adfer"
form:
account_settings: Gosodiadau Cyfrif
show:
@@ -4085,7 +4078,8 @@ cy:
items: Eitemau
total: Cyfanswm
paid?: Talwyd?
view: Gweld
status: Statws
cancelled: Canslwyd
saved_cards:
default?: Yn ddiofyn?
delete?: Dileu?

View File

@@ -35,7 +35,7 @@ de_CH:
verification_value: "Kartenprüfnummer (3-stellig)"
year: "Jahr"
order_cycle:
orders_close_at: Schließzeitpunkt
orders_close_at: Schliesszeitpunkt
variant_override:
count_on_hand: "Verfügbar"
errors:
@@ -61,27 +61,6 @@ de_CH:
using_producer_stock_settings_but_count_on_hand_set: "muss leer sein, da die Einstellungen des Produzentenbestands verwendet werden"
on_demand_but_count_on_hand_set: "muss leer sein, wenn unbegrenzt verfügbar oder die Produktion auf Bestellung erfolgt"
limited_stock_but_no_count_on_hand: "muss angegeben werden, da nur begrenzte Lagerbestände verfügbar sind"
errors:
messages:
content_type_invalid: "hat ein ungültiges Datenformat"
file_size_out_of_range: "Dateigröße %{file_size} liegt außerhalb des zulässigen Bereichs"
limit_out_of_range: "Gesamtzahl liegt außerhalb des zulässigen Bereichs"
image_metadata_missing: "ist kein gültiges Bild"
dimension_min_inclusion: "muss größer oder gleich %{width} x %{height} Pixel sein"
dimension_max_inclusion: "muss kleiner oder gleich %{width} x %{height} Pixel sein"
dimension_width_inclusion: "Breite liegt nicht zwischen %{min} und %{max} Pixel"
dimension_height_inclusion: "Höhe liegt nicht zwischen %{min} und %{max} Pixel"
dimension_width_greater_than_or_equal_to: "Breite muss größer oder gleich %{length} Pixel sein"
dimension_height_greater_than_or_equal_to: "Höhe muss größer oder gleich %{length} Pixel sein"
dimension_width_less_than_or_equal_to: "Breite muss kleiner oder gleich %{length} Pixel sein"
dimension_height_less_than_or_equal_to: "Höhe muss kleiner oder gleich %{length} Pixel sein"
dimension_width_equal_to: "Breite muss %{length} Pixel sein"
dimension_height_equal_to: "Höhe muss %{length} Pixel sein"
aspect_ratio_not_square: "muss ein quadratisches Bild sein"
aspect_ratio_not_portrait: "muss ein Bild im Hochformat sein"
aspect_ratio_not_landscape: "muss ein Bild im Querformat sein"
aspect_ratio_is_not: "muss ein Seitenverhältnis von %{aspect_ratio} haben"
aspect_ratio_unknown: "hat ein unbekanntes Seitenverhältnis"
stripe:
error_code:
incorrect_number: "Die Kreditkartennummer ist fehlerhaft."
@@ -108,7 +87,7 @@ de_CH:
fraudulent: "Die Zahlung wurde abgelehnt, da Stripe sie als potenziell betrügerisch einstuft."
generic_decline: "Die Karte wurde aus unbekanntem Grund abgelehnt."
incorrect_pin: "Die eingegebene PIN ist falsch. Dieser Ablehnungscode gilt nur für Zahlungen mit einem Kartenlesegerät."
insufficient_funds: "Die Karte ist nicht ausreichend gedeckt, um den Kaufvorgang abzuschließen."
insufficient_funds: "Die Karte ist nicht ausreichend gedeckt, um den Kaufvorgang abzuschliessen."
invalid_account: "Die Karte oder das dazugehörige Konto sind ungültig."
invalid_amount: "Der Zahlungsbetrag ist ungültig oder überschreitet den zulässigen Betrag."
invalid_pin: "Die eingegebene PIN ist falsch. Dieser Ablehnungscode gilt nur für Zahlungen mit einem Kartenlesegerät."
@@ -549,8 +528,6 @@ de_CH:
guest_label: "Gasteinkauf"
credit_owed: "Geschuldetes Guthaben"
balance_due: "Offener Betrag"
destroy:
has_associated_orders: "Löschen fehlgeschlagen: Der Kunde hat Bestellungen bei diesem Laden."
contents:
edit:
title: Inhalt
@@ -560,7 +537,7 @@ de_CH:
hub_signup_page: Registrierung für Läden
group_signup_page: Registrierung für Gruppen
main_links: Hauptmenü-Links
footer_and_external_links: Fußzeile und externe Links
footer_and_external_links: Fusszeile und externe Links
your_content: Ihr Inhalt
user_guide: Benutzerhandbuch
map: Karte
@@ -812,9 +789,9 @@ de_CH:
disabled: Deaktiviert
business_address:
company_legal_name: Unternehmensname
company_placeholder: z. B. Charlies großartige Farm
address1: Straße + Hausnummer
address1_placeholder: z. B. Gartenstraße 123
company_placeholder: z. B. Charlies grossartige Farm
address1: Strasse + Hausnummer
address1_placeholder: z. B. Gartenstrasse 123
address2: Adresszusatz (optional)
legal_phone_number: Telefonnummer
phone_placeholder: "z. B. +49 40 123 456"
@@ -909,7 +886,7 @@ de_CH:
allow_order_changes_false: "Kunden können Bestellungen nicht ändern oder stornieren "
allow_order_changes_true: "Kunden können Bestellungen ändern oder stornieren, solange der Bestellzyklus geöffnet ist"
enable_subscriptions: "Abonnements"
enable_subscriptions_tip: "Aktivieren Sie Abonnements, um Kunden eine automatische, regelmäßige Bestellung Ihrer Produkte einzurichten. Dies kann z. B. das Abonnement einer wöchentlichen Gemüsekiste sein."
enable_subscriptions_tip: "Aktivieren Sie Abonnements, um Kunden eine automatische, regelmässige Bestellung Ihrer Produkte einzurichten. Dies kann z. B. das Abonnement einer wöchentlichen Gemüsekiste sein."
enable_subscriptions_false: "deaktiviert"
enable_subscriptions_true: "aktiviert"
customer_names_in_reports: "Kundennamen in Berichten anzeigen"
@@ -918,7 +895,7 @@ de_CH:
customer_names_true: "aktiviert"
shopfront_message: "'Willkommen'-Nachricht im Laden"
shopfront_message_placeholder: >
Eine optionale Nachricht, um Kunden willkommen zu heißen und zu erklären,
Eine optionale Nachricht, um Kunden willkommen zu heissen und zu erklären,
wie sie bei Ihnen einkaufen können. Wenn hier Text eingegeben wird,
wird dieser auf einer Startseite in Ihrem Laden angezeigt, wenn Kunden
ihn zum ersten Mal besuchen.
@@ -933,7 +910,7 @@ de_CH:
shopfront_category_ordering: "Sortierung der Produktkategorien im Laden"
shopfront_category_ordering_note: "(von oben nach unten)"
open_date: "Öffnungszeitpunkt"
close_date: "Schließzeitpunkt"
close_date: "Schliesszeitpunkt"
display_ordering_in_shopfront: "Reihenfolge der Anzeige im Online-Shop:"
shopfront_sort_by_category: "Nach Kategorie"
shopfront_sort_by_producer: "Nach Produzent"
@@ -1113,7 +1090,7 @@ de_CH:
add_distributor: 'Verteilstelle hinzufügen'
advanced_settings:
automatic_notifications: Automatische Benachrichtigungen
automatic_notifications_tip: Benachrichtigen Sie die Produzenten automatisch per E-Mail über in diesem Bestellzyklus erhaltene Bestellungen, wenn der Bestellzyklus schließt.
automatic_notifications_tip: Benachrichtigen Sie die Produzenten automatisch per E-Mail über in diesem Bestellzyklus erhaltene Bestellungen, wenn der Bestellzyklus schliesst.
title: Erweiterte Einstellungen
choose_product_tip: Sie können die eingehenden und ausgehenden Produkte auf den Katalog nur von %{inventory} beschränken.
preferred_product_selection_from_coordinator_inventory_only_here: Nur vom Katalog des Koordinators
@@ -1144,12 +1121,12 @@ de_CH:
schedule: Zeitplan
schedules: Zeitpläne
new_schedule: Neuer Zeitplan
new_schedule_tooltip: Regelmäßigkeit, mit der ein Abonnement ausgeführt wird (z. B. wöchentlich, monatlich).
new_schedule_tooltip: Regelmässigkeit, mit der ein Abonnement ausgeführt wird (z. B. wöchentlich, monatlich).
name_and_timing_form:
name: Name des Bestellzyklus
orders_open: Bestellzyklus öffnet
coordinator: Koordinator
orders_close: Bestellzyklus schließt
orders_close: Bestellzyklus schliesst
row:
suppliers: Lieferanten
distributors: Verteilstellen
@@ -1163,7 +1140,7 @@ de_CH:
fees: Gebühren
tags: Stichwörter
destroy_errors:
orders_present: Dieser Bestellzyklus wurde von einem Kunden ausgewählt und kann nicht gelöscht werden. Um weitere Verwendung zu verhindern, können Sie ihn stattdessen schließen.
orders_present: Dieser Bestellzyklus wurde von einem Kunden ausgewählt und kann nicht gelöscht werden. Um weitere Verwendung zu verhindern, können Sie ihn stattdessen schliessen.
schedule_present: Dieser Bestellzyklus ist mit einem Zeitplan verknüpft und kann nicht gelöscht werden. Bitte heben Sie zuerst die Verknüpfung auf oder löschen Sie den Zeitplan.
bulk_update:
no_data: Hm, etwas ist schief gelaufen. Keine Bestellzyklusdaten gefunden.
@@ -1429,7 +1406,7 @@ de_CH:
edit_cart: "Warenkorb bearbeiten"
items_in_cart_singular: "%{num} Artikel in Ihrem Warenkorb"
items_in_cart_plural: "%{num} Artikel in Ihrem Warenkorb"
close: "Schließen"
close: "Schliessen"
cart_empty: "Ihr Warenkorb ist leer."
take_me_shopping: "Jetzt einkaufen!"
signed_in:
@@ -1533,7 +1510,7 @@ de_CH:
phone: Telefonnummer
next: Weiter
address: Adresse
address_placeholder: z. B. Gartenstraße 123
address_placeholder: z. B. Gartenstrasse 123
address2: Adresszusatz (optional)
city: Ort
city_placeholder: z. B. Nordwestheim
@@ -1629,7 +1606,7 @@ de_CH:
statistics_cookies_matomo_optout: "Möchten Sie Matomo Analytics deaktivieren? Wir sammeln keine persönlichen Daten und Matomo hilft uns, unseren Service zu verbessern, aber wir respektieren Ihre Wahl. :-)"
cookie_matomo_basics_desc: "Matomo First Party Cookies zum Sammeln von Statistiken."
cookie_matomo_heatmap_desc: "Matomo Heatmap & Session Aufnahme-Cookie."
cookie_matomo_ignore_desc: "Cookie, um Benutzer von der Verfolgung im Internet auszuschließen."
cookie_matomo_ignore_desc: "Cookie, um Benutzer von der Verfolgung im Internet auszuschliessen."
disabling_cookies_header: "Warnung zum Deaktivieren von Cookies"
disabling_cookies_desc: "Als Nutzer können Sie Cookies von Open Food Schweiz oder einer anderen Website immer zulassen, blockieren oder löschen, indem Sie die Einstellungen Ihres Browsers nutzen. Dies funktioniert in jedem Browser anders. Schauen Sie unter folgenden Links nach für genauere Beschreibungen:"
disabling_cookies_firefox_link: "https://support.mozilla.org/de/kb/verbesserter-schutz-aktivitatenverfolgung-desktop"
@@ -1648,7 +1625,7 @@ de_CH:
brandstory_headline: "Regionale Lebensmittel direkt online kaufen"
brandstory_intro: "Produkte von Produzenten vor Ort finden, online bestellen und abholen oder liefern lassen.\nWerden Sie Teil einer Bewegung, die mit jedem Einkauf ein Zeichen setzt für hochwertige regionale Produkte, faire Preise, Nachhaltigkeit und Transparenz. Helfen Sie uns bei ..."
brandstory_part1: "... einem Neuanfang. Nehmen Sie Anonymität und Ausbeutung von Mensch, Tier und Umwelt in der Lebensmittelindustrie nicht länger hin. Lesen Sie die Geschichten stolzer Landwirte, Gemüsegärtner und Züchter hinter den Produkten. Sehen Sie sich an, welche Aufschläge Händler berechnen um faire Preise zu erhalten und zu zahlen. Lernen Sie die Menschen kennen, die mit ihrer täglichen Arbeit Ihre regionalen und saisonalen Lebensmittel herstellen."
brandstory_part2: "Kaufen Sie ein in Hofläden, auf Bauernmärkten, in Food-Hubs oder schließen Sie sich zu Einkaufsgemeinschaften, Kooperativen, Genossenschaften oder einer solidarischen Landwirtschaft zusammen."
brandstory_part2: "Kaufen Sie ein in Hofläden, auf Bauernmärkten, in Food-Hubs oder schliessen Sie sich zu Einkaufsgemeinschaften, Kooperativen, Genossenschaften oder einer solidarischen Landwirtschaft zusammen."
brandstory_part3: "Die Anbieter bilden gemeinsam ein regionales Netzwerk, in dem sich Käufer und Verkäufer wieder kennen und mit Vertrauen wertschätzend umgegangen wird."
brandstory_part4: "Der Programmcode dieser Internet-Plattform ist öffentlich frei verfügbar (Open Source), sie gehört also auch Ihnen und ist unverkäuflich. Alle Einnahmen werden wieder in die Weiterentwicklung des Netzwerks investiert!"
brandstory_part5_strong: "Das ist das Open Food Schweiz."
@@ -1657,7 +1634,7 @@ de_CH:
system_step1: "1. Wo kann ich regionale und saisonale Produkte kaufen?"
system_step1_text: "Auf der Seite \"Einkaufen\" finden Sie die Liste der Läden in Ihrer Nähe. Sie können nach einem Ort suchen oder die Liste nach Kategorien, Lieferoptionen oder Produkteigenschaften filtern. Klicken Sie auf den Namen eines Ladens, um dort einzukaufen.\nAlternativ verwenden Sie die Seite \"Karte\" und finden Sie Produzenten und Läden in Ihrer Region."
system_step2: "2. Welche regionalen Lebensmittel kann ich online kaufen?"
system_step2_text: "Im Online-Shop des Ladens finden Sie ein großes Sortiment regionaler und saisonaler Produkte. Von Obst und Gemüse über Eier, Milch, Käse, Wurst und Fleisch bis hin zu Backwaren, Süßigkeiten und Fertiggerichten werden Sie fündig. Nutzen Sie die Suche oder die Filter nach Kategorien und Eigenschaften, wie bio, unverpackt oder fair gehandelt."
system_step2_text: "Im Online-Shop des Ladens finden Sie ein grosses Sortiment regionaler und saisonaler Produkte. Von Obst und Gemüse über Eier, Milch, Käse, Wurst und Fleisch bis hin zu Backwaren, Süssigkeiten und Fertiggerichten werden Sie fündig. Nutzen Sie die Suche oder die Filter nach Kategorien und Eigenschaften, wie bio, unverpackt oder fair gehandelt."
system_step3: "3. Wie kommen regionale Lebensmittel zu mir nach Hause?"
system_step3_text: "Jeder Laden kann seine Lieferoptionen selbst festlegen. Viele bieten einen Lieferservice an, oft ist auch die Abholung vor Ort oder an einer Abholstation möglich. Wählen Sie die gewünschte Option einfach beim Abschluss der Bestellung aus. Im Open Food Network kennt man sich - auch das Vereinbaren eines Ablageortes lässt sich sicher organisieren. "
cta_headline: "Machen Sie die Welt mit Ihrem Einkauf ein kleines bisschen besser."
@@ -1717,8 +1694,8 @@ de_CH:
title: Rechnungsadresse
address:
address1:
label: Straße + Hausnummer
placeholder: z. B. Gartenstraße 123
label: Strasse + Hausnummer
placeholder: z. B. Gartenstrasse 123
address2:
label: Adresszusatz (optional)
placeholder: z. B. c/o Familie Müller
@@ -1827,13 +1804,13 @@ de_CH:
email_confirmation_notice_unexpected: "Sie haben diese Nachricht erhalten, weil Sie sich im Open Food Network angemeldet haben oder von einer Person dazu eingeladen wurden. Wenn Sie nicht verstehen, warum Sie diese E-Mail erhalten, schreiben Sie bitte an %{contact}."
email_social: "Verbinden Sie sich mit uns:"
email_contact: "Schreiben Sie uns eine E-Mail:"
email_signoff: "Viele Grüße,"
email_signoff: "Viele Grüsse,"
email_signature: "das Team des Open Food Network"
email_confirm_customer_greeting: "Hallo %{name},"
email_confirm_customer_intro_html: "vielen Dank für Ihren Einkauf bei <strong>%{distributor}</strong>!"
email_confirm_customer_number_html: "<strong>Bestellbestätigung #%{number}</strong>"
email_confirm_customer_details_html: "Nachfolgend finden Sie Ihre <strong>Bestelldaten</strong> bei <strong>%{distributor}</strong>:"
email_confirm_customer_signoff: "Viele Grüße,"
email_confirm_customer_signoff: "Viele Grüsse,"
email_confirm_shop_greeting: "Hallo %{name},"
email_confirm_shop_order_html: "gut gemacht! <strong>%{distributor}</strong> hat eine neue Bestellung erhalten!"
email_confirm_shop_number_html: "<strong>Bestellbestätigung #%{number}</strong>"
@@ -1854,7 +1831,7 @@ de_CH:
email_so_placement_changes: "Leider waren nicht alle von Ihnen bestellten Produkte verfügbar. Die von Ihnen gewünschten Originalmengen sind unten durchgestrichen."
email_so_payment_success_intro_html: "Es wurde eine automatische Zahlung für Ihre Bestellung bei <strong>%{distributor}</strong> vorgenommen."
email_so_placement_explainer_html: "Diese Bestellung wurde automatisch für Sie erstellt."
email_so_edit_true_html: "Sie können <a href='%{order_url}'>Änderungen vornehmen</a>, bis Bestellungen am %{orders_close_at} schließen."
email_so_edit_true_html: "Sie können <a href='%{order_url}'>Änderungen vornehmen</a>, bis Bestellungen am %{orders_close_at} schliessen."
email_so_edit_false_html: "Sie können jederzeit <a href='%{order_url}'>Details zu dieser Bestellung anzeigen</a>."
email_so_contact_distributor_html: "Wenn Sie Fragen haben, können Sie sich mit <strong>%{distributor}</strong> über %{email} in Verbindung setzen."
email_so_contact_distributor_to_change_order_html: "Diese Bestellung wurde automatisch für Sie erstellt. Sie können Änderungen vornehmen, bis die Bestellungen am %{orders_close_at} geschlossen werden, indem Sie <strong>%{distributor}</strong> über %{email} kontaktieren."
@@ -1878,7 +1855,7 @@ de_CH:
email_signup_welcome: "Willkommen im Open Food Network!"
email_signup_confirmed_email: "Vielen Dank für die Bestätigung Ihrer E-Mail-Adresse."
email_signup_shop_html: "Sie können sich jetzt unter %{link} einloggen."
email_signup_text: "Danke, dass Sie dem Netzwerk beigetreten sind. Wenn Sie ein Kunde sind, freuen wir uns, Ihnen viele fantastische Landwirte, wunderbare Läden und leckeres Essen vorzustellen! Wenn Sie ein Produzent oder ein Lebensmittelunternehmer sind, freuen wir uns, Sie als Teil des Netzwerks zu begrüßen."
email_signup_text: "Danke, dass Sie dem Netzwerk beigetreten sind. Wenn Sie ein Kunde sind, freuen wir uns, Ihnen viele fantastische Landwirte, wunderbare Läden und leckeres Essen vorzustellen! Wenn Sie ein Produzent oder ein Lebensmittelunternehmer sind, freuen wir uns, Sie als Teil des Netzwerks zu begrüssen."
email_signup_help_html: "Wir freuen uns über Ihre Fragen und Rückmeldungen. Schreiben Sie uns gerne eine E-Mail an %{email}."
invite_email:
greeting: "Hallo!"
@@ -1890,7 +1867,7 @@ de_CH:
producer_mail_text_before: "wir informieren über den Stand des Bestellzyklus, bereit am:"
producer_mail_order_text: "Nachfolgend finden Sie eine Zusammenfassung der Bestellungen Ihrer Produkte:"
producer_mail_delivery_instructions: "Informationen zur Abholung/Lieferung:"
producer_mail_signoff: "Viele Grüße,"
producer_mail_signoff: "Viele Grüsse,"
producer_mail_order_customer_text: "Nachfolgend finden Sie eine Zusammenfassung der Bestellungen, gruppiert nach Kunden:"
shopping_oc_closed: Bestellzyklen sind derzeit geschlossen!
shopping_oc_closed_description: "Bitte warten Sie, bis der nächste Bestellzyklus öffnet (oder kontaktieren Sie uns direkt, um zu erfahren, ob wir verspätete Bestellungen annehmen können)."
@@ -1981,13 +1958,13 @@ de_CH:
groups_contact_email: Schreiben Sie uns eine E-Mail
groups_contact_website: Besuchen Sie unsere Homepage
groups_contact_facebook: Folgen Sie uns auf Facebook
groups_signup_title: Schließen Sie sich mit anderen Produzenten und Läden zu einer Gruppe zusammen
groups_signup_title: Schliessen Sie sich mit anderen Produzenten und Läden zu einer Gruppe zusammen
groups_signup_headline: Registrierung einer Gruppe
groups_signup_intro: "Wir sind eine großartige Plattform für kollaboratives Marketing - der einfachste Weg für die Mitglieder Ihrer Gruppe neue Märkte zu erreichen. Wir sind gemeinnützig, erschwinglich und transparent."
groups_signup_intro: "Wir sind eine grossartige Plattform für kollaboratives Marketing - der einfachste Weg für die Mitglieder Ihrer Gruppe neue Märkte zu erreichen. Wir sind gemeinnützig, erschwinglich und transparent."
groups_signup_email: Schreiben Sie uns eine E-Mail
groups_signup_motivation1: Wir verändern Lebensmittelsysteme fair.
groups_signup_motivation2: Deshalb sind wir jeden Tag aufgestanden. Wir sind eine globale Non-Profit-Organisation, die auf Open-Source-Code basiert. Wir spielen fair. Sie können uns immer vertrauen.
groups_signup_motivation3: Wir wissen, dass Sie große Ideen haben und wir helfen wollen. Wir teilen unser Wissen, Netzwerke und Ressourcen. Wir wissen, dass Isolation keine Veränderung verursacht, also werden wir mit Ihnen zusammenarbeiten.
groups_signup_motivation3: Wir wissen, dass Sie grosse Ideen haben und wir helfen wollen. Wir teilen unser Wissen, Netzwerke und Ressourcen. Wir wissen, dass Isolation keine Veränderung verursacht, also werden wir mit Ihnen zusammenarbeiten.
groups_signup_motivation4: Wir treffen Sie, wo Sie sind.
groups_signup_motivation5: Sie könnten ein Zusammenschluss von Hubs, Produzenten oder Verteilstellen sein, eine Industrieorganisation oder eine Lokalbehörde.
groups_signup_motivation6: Was auch immer Ihre Rolle in Ihrer lokalen Nahrungsmittelbewegung ist, wir sind bereit zu helfen. Wie auch immer Sie sich fragen, wie Open Food Schweiz in Ihrem Teil der Welt aussehen würde oder wird, lassen Sie uns das Gespräch beginnen.
@@ -2052,7 +2029,7 @@ de_CH:
shops_signup_pricing: Unternehmenskonten
shops_signup_stories: Geschichten unserer Hubs
shops_signup_help: Wir sind bereit zu helfen.
shops_signup_help_text: Du brauchst eine bessere Rendite. Sie brauchen neue Käufer und Logistikpartner. Sie müssen Ihre Geschichte über den Großhandel, den Einzelhandel und den Küchentisch erzählen.
shops_signup_help_text: Du brauchst eine bessere Rendite. Sie brauchen neue Käufer und Logistikpartner. Sie müssen Ihre Geschichte über den Grosshandel, den Einzelhandel und den Küchentisch erzählen.
shops_signup_detail: Weitere Details folgen.
orders: "Bestellungen"
orders_fees: "Gebühren ..."
@@ -2092,11 +2069,11 @@ de_CH:
products_cart_distributor_choice: "Verteilstelle Ihrer Bestellung:"
products_cart_distributor_change: "Die Verteilstelle für diese Bestellung wird in %{name} geändert, wenn Sie dieses Produkt zu Ihrem Warenkorb hinzufügen."
products_cart_distributor_is: "Die Verteilstelle dieser Bestellung ist %{name}."
products_distributor_error: "Bitte schließen Sie Ihre Bestellung bei %{link} ab, bevor Sie bei einem anderen Laden einkaufen."
products_distributor_error: "Bitte schliessen Sie Ihre Bestellung bei %{link} ab, bevor Sie bei einem anderen Laden einkaufen."
products_oc: "Bestellzyklus Ihrer Bestellung:"
products_oc_change: "Der Bestellzyklus für diese Bestellung wird in %{name} geändert, wenn Sie dieses Produkt zu Ihrem Warenkorb hinzufügen."
products_oc_is: "Der Bestellzyklus dieser Bestellung lautet %{name}."
products_oc_error: "Bitte schließen Sie Ihre Bestellung bei %{link} ab, bevor Sie in einem anderen Bestellzyklus einkaufen."
products_oc_error: "Bitte schliessen Sie Ihre Bestellung bei %{link} ab, bevor Sie in einem anderen Bestellzyklus einkaufen."
products_oc_current: "Ihr aktueller Bestellzyklus"
products_max_quantity: Max Menge
products_distributor: Verteilstelle
@@ -2105,7 +2082,7 @@ de_CH:
remember_me: Eingeloggt bleiben
are_you_sure: "Sind Sie sicher?"
orders_open: "Geöffnet"
closing: "Schließt"
closing: "Schliesst"
going_back_to_home_page: "Weiterleitung zur Startseite"
creating: Erstellung
updating: Aktualisierung
@@ -2113,7 +2090,7 @@ de_CH:
failed_to_create_enterprise_unknown: "Fehler beim Erstellen Ihres Unternehmens.\nBitte vergewissern Sie sich, dass alle Felder vollständig ausgefüllt sind."
failed_to_update_enterprise_unknown: "Fehler beim Aktualisieren Ihres Unternehmens.\nBitte vergewissern Sie sich, dass alle Felder vollständig ausgefüllt sind."
enterprise_confirm_delete_message: "Dadurch wird auch das von diesem Unternehmen bereitgestellte %{product} gelöscht. Sind Sie sicher, dass Sie das möchten?"
order_not_saved_yet: "Ihre Bestellung wurde noch nicht gespeichert. Geben Sie uns ein paar Sekunden, um dies abzuschließen!"
order_not_saved_yet: "Ihre Bestellung wurde noch nicht gespeichert. Geben Sie uns ein paar Sekunden, um dies abzuschliessen!"
filter_by: "Filtern nach"
hide_filters: "Filter ausblenden"
one_filter_applied: "1 Filter angewendet"
@@ -2177,11 +2154,11 @@ de_CH:
producer: "Nennen Sie uns zunächst bitte den Namen und die Adresse Ihres Betriebs."
enterprise_name_field: "Unternehmensname:"
producer_name_field: "Name des Betriebs:"
producer_name_field_placeholder: "z. B. Charlies großartige Farm"
producer_name_field_placeholder: "z. B. Charlies grossartige Farm"
producer_name_field_error: "Bitte wählen Sie einen eindeutigen Namen für Ihr Unternehmen."
address1_field: "Straße + Hausnummer:"
address1_field_placeholder: "z. B. Gartenstraße 123"
address1_field_error: "Bitte geben Sie eine Straße und Hausnummer ein."
address1_field: "Strasse + Hausnummer:"
address1_field_placeholder: "z. B. Gartenstrasse 123"
address1_field_error: "Bitte geben Sie eine Strasse und Hausnummer ein."
address2_field: "Adresszusatz (optional):"
suburb_field: "Ort:"
suburb_field_placeholder: "z. B. Nordwestheim"
@@ -2195,7 +2172,7 @@ de_CH:
country_field_error: "Bitte wählen Sie das Land aus."
map_location: "Position auf der Karte"
locate_address: "Adresse auf der Karte zeigen"
drag_pin: "Falls nötig, korrigieren Sie die Position Ihres Unternehmens, indem Sie die Markierung an den richtigen Ort ziehen. Bestätigen Sie dies anschließend durch das Setzen des Häkchens unter der Karte und klicken Sie dann ganz unten auf \"Weiter\"."
drag_pin: "Falls nötig, korrigieren Sie die Position Ihres Unternehmens, indem Sie die Markierung an den richtigen Ort ziehen. Bestätigen Sie dies anschliessend durch das Setzen des Häkchens unter der Karte und klicken Sie dann ganz unten auf \"Weiter\"."
confirm_address: "Ich bestätige, dass die auf der Karte angegebene Position des Unternehmens korrekt ist."
drag_map_marker: "Die korrekte Position Ihres Unternehmens auf der Karte ist wichtig, damit Ihre Kunden Sie möglichst einfach finden können."
contact:
@@ -2214,7 +2191,7 @@ de_CH:
no_producer: "Nein, es ist kein Produzent."
producer_field_error: "Bitte wählen Sie: Ist das Unternehmen ein Produzent?"
yes_producer_help: "Produzenten stellen leckere Lebensmittel oder Getränke her. Sie sind ein Produzent, wenn Sie anbauen, brauen, backen, fermentieren, melken oder sonst wie Lebenmittel produzieren."
no_producer_help: "Wenn Sie kein Produzent sind, sind Sie wahrscheinlich jemand, der Lebensmittel verkauft und verteilt. Sie könnten ein Food Hub, eine Lebensmittelkooperative, eine Einkaufsgemeinschaft, ein Einzelhändler, Hofladen, Großhändler oder Vergleichbares sein."
no_producer_help: "Wenn Sie kein Produzent sind, sind Sie wahrscheinlich jemand, der Lebensmittel verkauft und verteilt. Sie könnten ein Food Hub, eine Lebensmittelkooperative, eine Einkaufsgemeinschaft, ein Einzelhändler, Hofladen, Grosshändler oder Vergleichbares sein."
create_profile: "Profil erstellen"
about:
title: "Über uns"
@@ -2249,7 +2226,7 @@ de_CH:
logo_placeholder: "Ihr Logo wird hier zur Überprüfung angezeigt, sobald es hochgeladen wurde."
promo:
select_promo_image: "Schritt 3: Laden Sie ein Hintergrundbild hoch (empfohlen)"
promo_image_tip: "Tipp: Die als Banner dargestellte bevorzugte Größe beträgt 1200 × 260 Pixel."
promo_image_tip: "Tipp: Die als Banner dargestellte bevorzugte Grösse beträgt 1200 × 260 Pixel."
promo_image_label: "Bilddatei auswählen"
promo_image_drag: "Ziehen Sie Ihr Bild hierher."
review_promo_image: "Schritt 4: Überprüfen Sie Ihr Hintergrundbild"
@@ -2337,7 +2314,7 @@ de_CH:
admin_enterprise_groups_data_powertip_promo_image: "Dieses Bild wird oben im Gruppenprofil angezeigt."
admin_enterprise_groups_contact: "Kontakt"
admin_enterprise_groups_contact_phone_placeholder: "z. B. +40 40 123456"
admin_enterprise_groups_contact_address1_placeholder: "z. B. Gartenstraße 123"
admin_enterprise_groups_contact_address1_placeholder: "z. B. Gartenstrasse 123"
admin_enterprise_groups_contact_city: "Ort"
admin_enterprise_groups_contact_city_placeholder: "z. B. Nordwestheim"
admin_enterprise_groups_contact_zipcode: "Postleitzahl"
@@ -2349,7 +2326,7 @@ de_CH:
admin_enterprise_groups_web_website_placeholder: "z. B. www.truffles.com"
admin_order_cycles: "Bestellzyklen verwalten"
open: "Öffnet"
close: "Schließen"
close: "Schliessen"
create: "Neu"
search: "Suche"
supplier: "Lieferant"
@@ -2433,7 +2410,7 @@ de_CH:
change_package: "Paket ändern"
spree_admin_single_enterprise_hint: "Tipp: Damit andere Nutzer Sie finden können, aktivieren Sie Ihre Sichtbarkeit unter:"
spree_admin_eg_pickup_from_school: "z. B. \"Abholung von der Grundschule\""
spree_admin_eg_collect_your_order: "z. B. 'Bitte holen Sie Ihre Bestellung in der Gartenstraße 123 in 30701 Nordwestheim ab.'"
spree_admin_eg_collect_your_order: "z. B. 'Bitte holen Sie Ihre Bestellung in der Gartenstrasse 123 in 30701 Nordwestheim ab.'"
spree_classification_primary_taxon_error: "Kategorie %{taxon} ist die primäre Kategorie von %{product} und kann nicht gelöscht werden."
spree_order_availability_error: "Verteilstelle oder Bestellzyklus kann die Produkte in Ihrem Warenkorb nicht liefern"
spree_order_populator_error: "Diese Verteilstelle oder dieser Bestellzyklus kann nicht alle Produkte aus Ihrem Warenkorb liefern. Bitte ändern Sie Ihre Auswahl."
@@ -2526,15 +2503,15 @@ de_CH:
report_header_shipping: Lieferung
report_header_shipping_method: Lieferoption
report_header_shipping_instructions: Informationen zur Lieferung
report_header_ship_street: Lieferstraße
report_header_ship_street: Lieferstrasse
report_header_ship_street_2: Lieferadresszusatz
report_header_ship_city: Lieferstadt
report_header_ship_postcode: Lieferpostleitzahl
report_header_ship_state: Lieferbundesland
report_header_billing_street: Rechnungsstraße
report_header_billing_street: Rechnungsstrasse
report_header_billing_street_2: Rechnungsadresszusatz
report_header_billing_street_3: Rechnungsstraße 3
report_header_billing_street_4: Rechnungsstraße 4
report_header_billing_street_3: Rechnungsstrasse 3
report_header_billing_street_4: Rechnungsstrasse 4
report_header_billing_city: Rechnungsstadt
report_header_billing_postcode: Rechnungspostleitzahl
report_header_billing_state: Rechnungsbundesland
@@ -2759,14 +2736,14 @@ de_CH:
cart:
add_to_cart_failed: >
Beim Hinzufügen dieses Produkts zum Warenkorb ist ein Fehler aufgetreten.
Möglicherweise ist es nicht mehr verfügbar oder der Laden schließt gerade.
Möglicherweise ist es nicht mehr verfügbar oder der Laden schliesst gerade.
admin:
unit_price_tooltip: "Grundpreis: Er ermöglicht einen einfachen Preisvergleich von Produkten, unabhängig von Packungsgröße und -gewicht. Der im Online-Shop angezeigte Grundpreis kann ggf. aufgrund hinzukommender Gebühren abweichen."
unit_price_tooltip: "Grundpreis: Er ermöglicht einen einfachen Preisvergleich von Produkten, unabhängig von Packungsgrösse und -gewicht. Der im Online-Shop angezeigte Grundpreis kann ggf. aufgrund hinzukommender Gebühren abweichen."
enterprise_limit_reached: "Sie haben die maximale Anzahl der Unternehmen pro Konto erreicht. Schreiben Sie an %{contact_email}, wenn Sie das Limit erhöhen möchten."
deleting_item_will_cancel_order: "Das Löschen dieses Produkts führt zu einer oder mehreren leeren Bestellungen, die daher automatisch storniert werden. Möchten Sie fortfahren?"
modals:
got_it: "Verstanden"
close: "Schließen"
close: "Schliessen"
continue: "Weiter"
invite: "Einladen"
invite_title: "Geben Sie die E-Mail-Adresse eines nicht registrierten Benutzers ein, um dieses Unternehmen zu verwalten."
@@ -2779,7 +2756,7 @@ de_CH:
Produkte und Bestellzyklen sein.
by_default_rules: "'Standardregeln'"
by_default_rules_text: >
Mit 'Standardregeln' können Sie Elemente verbergen, so dass sie standardmäßig
Mit 'Standardregeln' können Sie Elemente verbergen, so dass sie standardmässig
nicht sichtbar sind. Durch die Verwendung von 'Regeln für Kunden mit
Stichwort', können diese Elemente für bestimmte Kunden wieder angezeigt
werden.
@@ -2790,7 +2767,7 @@ de_CH:
überschreiben und Elemente für bestimmte Kunden wieder anzeigen.
terms_and_conditions_info:
title: "Allgemeine Geschäftsbedingungen hochladen"
message_1: "Allgemeine Geschäftsbedingungen sind der Vertrag zwischen Ihnen (dem Verkäufer) und dem Käufer. Wenn Sie hier eine Datei hochladen, müssen Käufer Ihren Allgemeinen Geschäftsbedingungen zustimmen, um die Kaufabwicklung abzuschließen. Für den Käufer wird dies als Kontrollkästchen an der Kasse angezeigt, das aktiviert werden muss, um mit der Bezahlung fortzufahren. Wir empfehlen Ihnen dringend, Allgemeine Geschäftsbedingungen in Übereinstimmung mit den nationalen Gesetzen hochzuladen."
message_1: "Allgemeine Geschäftsbedingungen sind der Vertrag zwischen Ihnen (dem Verkäufer) und dem Käufer. Wenn Sie hier eine Datei hochladen, müssen Käufer Ihren Allgemeinen Geschäftsbedingungen zustimmen, um die Kaufabwicklung abzuschliessen. Für den Käufer wird dies als Kontrollkästchen an der Kasse angezeigt, das aktiviert werden muss, um mit der Bezahlung fortzufahren. Wir empfehlen Ihnen dringend, Allgemeine Geschäftsbedingungen in Übereinstimmung mit den nationalen Gesetzen hochzuladen."
message_2: "Käufer müssen den Allgemeinen Geschäftsbedingungen nur einmal zustimmen. Wenn Sie jedoch Ihre Allgemeinen Geschäftsbedingungen ändern, müssen Käufer diesen erneut zustimmen, bevor sie zur Kasse gehen können."
terms_and_conditions_warning:
title: "Allgemeine Geschäftsbedingungen hochladen"
@@ -2925,7 +2902,7 @@ de_CH:
compiling_invoices: "Rechnungen werden erstellt ..."
bulk_invoice_created: "Rechnungen wurden erstellt."
bulk_invoice_failed: "Fehler beim Erstellen der Rechnungen."
please_wait: "Bitte warten Sie, bis die pdf-Datei fertig ist, bevor Sie dieses Fenster schließen."
please_wait: "Bitte warten Sie, bis die pdf-Datei fertig ist, bevor Sie dieses Fenster schliessen."
order_state:
address: "Adresse"
adjustments: "Anpassungen"
@@ -3023,7 +3000,7 @@ de_CH:
min_quantity: "Minimale Menge"
max_quantity: "Maximale Menge"
price_breakdown: "Preisaufschlüsselung"
unit_price_tooltip: "Grundpreis: Er ermöglicht einen einfachen Preisvergleich von Produkten, unabhängig von Packungsgröße und -gewicht."
unit_price_tooltip: "Grundpreis: Er ermöglicht einen einfachen Preisvergleich von Produkten, unabhängig von Packungsgrösse und -gewicht."
variants:
on_demand:
'yes': "Unbegrenzt/auf Bestellung"
@@ -3078,9 +3055,9 @@ de_CH:
select_shop: 'Bitte wählen Sie zuerst einen Laden aus.'
could_not_create: 'Es tut uns leid! Konnte nicht erstellt werden:'
subscriptions:
closes: schließt
closes: schliesst
closed: geschlossen
close_date_not_set: Schließzeitpunkt nicht eingestellt
close_date_not_set: Schliesszeitpunkt nicht eingestellt
spree:
users:
order: "Bestellung"
@@ -3099,7 +3076,7 @@ de_CH:
other: "pro Stück"
bunch:
one: "Bündel"
other: "Sträuße"
other: "Sträusse"
pack:
one: "Pack"
other: "Packungen"
@@ -3339,7 +3316,7 @@ de_CH:
shipping_address: "Lieferadresse"
first_name: "Vorname"
last_name: "Nachname"
street_address: "Straße + Hausnummer"
street_address: "Strasse + Hausnummer"
street_address_2: "Adresszusatz (optional)"
city: "Ort"
zip: "Postleitzahl"
@@ -3518,7 +3495,7 @@ de_CH:
testmail:
delivery_success: "Test-E-Mail wurde gesendet."
error: "Beim Senden der Test-E-Mail ist ein Fehler aufgetreten."
unit_price_tooltip: "Grundpreis: Er ermöglicht einen einfachen Preisvergleich von Produkten, unabhängig von Packungsgröße und -gewicht. Der im Online-Shop angezeigte Grundpreis kann ggf. aufgrund hinzukommender Gebühren abweichen."
unit_price_tooltip: "Grundpreis: Er ermöglicht einen einfachen Preisvergleich von Produkten, unabhängig von Packungsgrösse und -gewicht. Der im Online-Shop angezeigte Grundpreis kann ggf. aufgrund hinzukommender Gebühren abweichen."
subscriptions:
number: "Bestellnummer"
tab:
@@ -3541,7 +3518,7 @@ de_CH:
groups: "Gruppen"
product_properties:
index:
inherits_properties_checkbox_hint: "Übernahme der Eigenschaften von %{supplier} (außer oben überschrieben)?"
inherits_properties_checkbox_hint: "Übernahme der Eigenschaften von %{supplier} (ausser oben überschrieben)?"
add_product_properties: "Produkteigenschaften hinzufügen"
properties:
index:
@@ -3591,7 +3568,7 @@ de_CH:
orders:
add_product:
cannot_add_item_to_canceled_order: "Artikel kann nicht zu stornierter Bestellung hinzugefügt werden"
include_out_of_stock_variants: "Produktvarianten ohne Lagerbestand mit einschließen"
include_out_of_stock_variants: "Produktvarianten ohne Lagerbestand mit einschliessen"
index:
listing_orders: "Bestellungen verwalten"
new_order: "Neue Bestellung"
@@ -3609,7 +3586,6 @@ de_CH:
results_found: "%{number} Ergebnisse gefunden."
viewing: "Angezeigt wird %{start} bis %{end}."
print_invoices: "Rechnungen drucken"
selected: ausgewählt
sortable_header:
payment_state: "Zahlungsstatus"
shipment_state: "Lieferstatus"
@@ -3746,7 +3722,6 @@ de_CH:
paypal:
no_payment_via_admin_backend: Paypal-Zahlungen können nicht im Backoffice erfasst werden.
products:
image_upload_error: "Das Produktbild wurde nicht erkannt. Bitte laden Sie ein Bild im PNG- oder JPG-Format hoch."
new:
title: "Neues Produkt"
new_product: "Neues Produkt"
@@ -3882,7 +3857,7 @@ de_CH:
flatpickr_datetime_format: "d.m.Y H:i"
today: "heute"
now: "Jetzt"
close: "Schließen"
close: "Schliessen"
orders:
error_flash_for_unavailable_items: "Ein Artikel in Ihrem Warenkorb ist nicht mehr verfügbar. Bitte passen Sie die ausgewählten Mengen an."
edit:
@@ -3990,7 +3965,7 @@ de_CH:
paused: pausiert
canceled: storniert
paypal:
already_refunded: "Diese Zahlung wurde zurückerstattet und es können keine weiteren Maßnahmen ergriffen werden."
already_refunded: "Diese Zahlung wurde zurückerstattet und es können keine weiteren Massnahmen ergriffen werden."
no_payment_via_admin_backend: "Sie können derzeit keine PayPal-Konten über das Administrationsmenü belasten."
transaction: "PayPal-Transaktion"
payer_id: "Zahler-ID"
@@ -4008,6 +3983,8 @@ de_CH:
connection_failed: "Es konnte keine Verbindung zu PayPal hergestellt werden."
generic_error: "PayPal ist fehlgeschlagen. %{reasons}"
users:
api_keys:
regenerate_key: "Schlüssel neu generieren"
form:
account_settings: E-Mail-Adresse und Passwort ändern
show:
@@ -4041,14 +4018,15 @@ de_CH:
items: Artikel
total: Gesamt
paid?: Bezahlt?
view: Ansehen
status: Status
cancelled: Storniert
saved_cards:
default?: Standard?
delete?: Löschen?
cards:
authorised_shops: Autorisierte Läden
authorised_shops_agreement: Dies ist die Liste der Läden, in denen Ihre Standardkreditkarte für eventuelle Abonnements (d. h. automatisch wiederholte Bestellungen) belastet werden darf. Ihre Kreditkartendaten werden sicher aufbewahrt und nicht an Ladenbesitzer weitergegeben. Sie werden immer benachrichtigt, wenn Ihre Kreditkarte belastet wird. Wenn Sie das Kontrollkästchen für einen Laden aktivieren, erlauben Sie diesem Laden Anweisungen an das Finanzinstitut, das Ihre Kreditkarte ausgestellt hat, zu senden, um Zahlungen gemäß der Bedingungen eines Abonnements, das Sie mit diesem Laden erstellen, entgegenzunehmen.
saved_cards_popover: Dies ist die Liste der Kreditkarten, die Sie für spätere Verwendung gespeichert haben. Ihr "Standard" wird automatisch beim Abschließen einer Bestellung ausgewählt und kann von allen Läden belastet werden, die Sie dazu berechtigt haben (siehe rechts).
authorised_shops_agreement: Dies ist die Liste der Läden, in denen Ihre Standardkreditkarte für eventuelle Abonnements (d. h. automatisch wiederholte Bestellungen) belastet werden darf. Ihre Kreditkartendaten werden sicher aufbewahrt und nicht an Ladenbesitzer weitergegeben. Sie werden immer benachrichtigt, wenn Ihre Kreditkarte belastet wird. Wenn Sie das Kontrollkästchen für einen Laden aktivieren, erlauben Sie diesem Laden Anweisungen an das Finanzinstitut, das Ihre Kreditkarte ausgestellt hat, zu senden, um Zahlungen gemäss der Bedingungen eines Abonnements, das Sie mit diesem Laden erstellen, entgegenzunehmen.
saved_cards_popover: Dies ist die Liste der Kreditkarten, die Sie für spätere Verwendung gespeichert haben. Ihr "Standard" wird automatisch beim Abschliessen einer Bestellung ausgewählt und kann von allen Läden belastet werden, die Sie dazu berechtigt haben (siehe rechts).
authorised_shops:
shop_name: "Ladenname"
allow_charges?: "Abbuchungen für die Standardkreditkarte zulassen?"

View File

@@ -61,27 +61,6 @@ de_DE:
using_producer_stock_settings_but_count_on_hand_set: "muss leer sein, da die Einstellungen des Produzentenbestands verwendet werden"
on_demand_but_count_on_hand_set: "muss leer sein, wenn unbegrenzt verfügbar oder die Produktion auf Bestellung erfolgt"
limited_stock_but_no_count_on_hand: "muss angegeben werden, da nur begrenzte Lagerbestände verfügbar sind"
errors:
messages:
content_type_invalid: "hat ein ungültiges Datenformat"
file_size_out_of_range: "Dateigröße %{file_size} liegt außerhalb des zulässigen Bereichs"
limit_out_of_range: "Gesamtzahl liegt außerhalb des zulässigen Bereichs"
image_metadata_missing: "ist kein gültiges Bild"
dimension_min_inclusion: "muss größer oder gleich %{width} x %{height} Pixel sein"
dimension_max_inclusion: "muss kleiner oder gleich %{width} x %{height} Pixel sein"
dimension_width_inclusion: "Breite liegt nicht zwischen %{min} und %{max} Pixel"
dimension_height_inclusion: "Höhe liegt nicht zwischen %{min} und %{max} Pixel"
dimension_width_greater_than_or_equal_to: "Breite muss größer oder gleich %{length} Pixel sein"
dimension_height_greater_than_or_equal_to: "Höhe muss größer oder gleich %{length} Pixel sein"
dimension_width_less_than_or_equal_to: "Breite muss kleiner oder gleich %{length} Pixel sein"
dimension_height_less_than_or_equal_to: "Höhe muss kleiner oder gleich %{length} Pixel sein"
dimension_width_equal_to: "Breite muss %{length} Pixel sein"
dimension_height_equal_to: "Höhe muss %{length} Pixel sein"
aspect_ratio_not_square: "muss ein quadratisches Bild sein"
aspect_ratio_not_portrait: "muss ein Bild im Hochformat sein"
aspect_ratio_not_landscape: "muss ein Bild im Querformat sein"
aspect_ratio_is_not: "muss ein Seitenverhältnis von %{aspect_ratio} haben"
aspect_ratio_unknown: "hat ein unbekanntes Seitenverhältnis"
stripe:
error_code:
incorrect_number: "Die Kreditkartennummer ist fehlerhaft."
@@ -162,6 +141,7 @@ de_DE:
cardholder_name: "Kreditkarteninhaber"
community_forum_url: "URL des Community-Forums"
customer_instructions: "Informationen für Kunden"
additional_information: "Anmerkung"
devise:
passwords:
spree_user:
@@ -494,6 +474,8 @@ de_DE:
terms_of_service: "Nutzungsbedingungen"
delete: "Löschen"
confirm_delete: "Sind Sie sicher, dass Sie die derzeitigen Nutzungsbedingungen löschen möchten?"
attachment: "Datei hochladen"
create_terms_of_service: "Nutzungsbedingungen hochladen "
number_localization:
number_localization_settings: "Zahlenformateinstellungen"
enable_localized_number: "Verwenden Sie die internationale Tausendertrennungslogik"
@@ -552,7 +534,7 @@ de_DE:
credit_owed: "Geschuldetes Guthaben"
balance_due: "Offener Betrag"
destroy:
has_associated_orders: "Löschen fehlgeschlagen: Der Kunde hat Bestellungen bei diesem Laden."
has_associated_subscriptions: "Löschen fehlgeschlagen: Dieser Kunde hat aktive Abonnements. Bitte kündigen Sie diese zuerst."
contents:
edit:
title: Inhalt
@@ -3478,6 +3460,7 @@ de_DE:
email: E-Mail-Adresse
account_updated: "Konto aktualisiert!"
email_updated: "Das Konto wird aktualisiert, sobald die neue E-Mail-Adresse bestätigt wurde."
show_api_key_view_toggled: "Anzeige des API-Schlüssels wurde geändert!"
my_account: "Ihr Konto"
date: "Datum"
time: "Uhrzeit"
@@ -3623,7 +3606,10 @@ de_DE:
results_found: "%{number} Ergebnisse gefunden."
viewing: "Angezeigt wird %{start} bis %{end}."
print_invoices: "Rechnungen drucken"
selected: ausgewählt
selected:
zero: "Keine Bestellung ausgewählt"
one: "1 Bestellung ausgewählt"
other: "%{count} Bestellungen ausgewählt"
sortable_header:
payment_state: "Zahlungsstatus"
shipment_state: "Lieferstatus"
@@ -3763,7 +3749,7 @@ de_DE:
paypal:
no_payment_via_admin_backend: Paypal-Zahlungen können nicht im Backoffice erfasst werden.
products:
image_upload_error: "Das Produktbild wurde nicht erkannt. Bitte laden Sie ein Bild im PNG- oder JPG-Format hoch."
image_upload_error: "Bitte laden Sie ein Bild im JPG-, PNG-, GIF-, SVG- oder WEBP-Format hoch."
new:
title: "Neues Produkt"
new_product: "Neues Produkt"
@@ -4026,10 +4012,16 @@ de_DE:
connection_failed: "Es konnte keine Verbindung zu PayPal hergestellt werden."
generic_error: "PayPal ist fehlgeschlagen. %{reasons}"
users:
api_keys:
regenerate_key: "Schlüssel neu generieren"
title: API-Schlüssel
developer_settings:
title: Entwicklereinstellungen
form:
account_settings: E-Mail-Adresse und Passwort ändern
show:
tabs:
developer_settings: Entwicklereinstellungen
orders: Bestellungen
cards: Kreditkarten
transactions: Transaktionen
@@ -4059,7 +4051,9 @@ de_DE:
items: Artikel
total: Gesamt
paid?: Bezahlt?
view: Ansehen
status: Status
completed: Abgeschlossen
cancelled: Storniert
saved_cards:
default?: Standard?
delete?: Löschen?
@@ -4069,7 +4063,8 @@ de_DE:
saved_cards_popover: Dies ist die Liste der Kreditkarten, die Sie für spätere Verwendung gespeichert haben. Ihr "Standard" wird automatisch beim Abschließen einer Bestellung ausgewählt und kann von allen Läden belastet werden, die Sie dazu berechtigt haben (siehe rechts).
authorised_shops:
shop_name: "Ladenname"
allow_charges?: "Abbuchungen für die Standardkreditkarte zulassen?"
allow_charges?: "Abbuchungen von der Standardkreditkarte zulassen?"
no_default_saved_cards_tooltip: Sie müssen eine Kreditkarte als Standard markieren, um automatische Abbuchungen zuzulassen.
localized_number:
invalid_format: hat ein ungültiges Format. Bitte Ziffern eingeben.
api:
@@ -4088,6 +4083,7 @@ de_DE:
shipment:
cannot_ready: "Versand nicht möglich."
invalid_taxonomy_id: "Ungültige Kategorie-ID"
toggle_api_key_view: "API-Schlüssel dem Benutzer anzeigen"
activerecord:
models:
spree/payment:
@@ -4134,3 +4130,13 @@ de_DE:
x_years:
one: "1 Jahr"
other: "%{count} Jahren"
errors:
not_found:
title: "Die gesuchte Seite existiert nicht (404). "
message_html: "<b>Bitte versuchen Sie es erneut</b><p> Dies könnte ein vorübergehendes Problem sein. Bitte klicken Sie auf die Zurück-Schaltfläche, um zum vorherigen Bildschirm zurückzukehren, oder gehen Sie zurück zur <a href='/'>Startseite</a> und versuchen Sie es erneut.</p> <b>Kontaktieren Sie den Support</b><p> Wenn das Problem weiterhin besteht oder dringend ist, teilen Sie uns dies bitte mit. Unsere Kontaktdaten finden Sie auf der <a href='https://openfoodnetwork.org/ofn-local/' target='blank'>lokalen Seite des globalen Open Food Network</a> .</p><p> Es hilft uns sehr, wenn Sie so detailliert wie möglich angeben können, worum es auf der fehlenden Seite geht.</p>"
internal_server_error:
title: "Es tut uns leid, aber etwas ist schief gelaufen (500). "
message_html: "<b>Bitte versuchen Sie es erneut</b><p> Dies könnte ein vorübergehendes Problem sein. Bitte klicken Sie auf die Zurück-Schaltfläche, um zum vorherigen Bildschirm zurückzukehren, oder gehen Sie zurück zur <a href='/''>Startseite</a> und versuchen Sie es erneut.</p> <b>Wir kümmern uns</b><p> Wenn Sie dieses Problem schon einmal gesehen haben, kennen wir es wahrscheinlich bereits und arbeiten an einer Lösung. Wir erfassen alle auftretenden Fehler.</p> <b>Kontaktieren Sie den Support</b><p> Wenn das Problem weiterhin besteht oder dringend ist, teilen Sie uns dies bitte mit. Unsere Kontaktdaten finden Sie auf der <a href='https://openfoodnetwork.org/ofn-local/' target='blank'>lokalen Seite des globalen Open Food Network</a> .</p><p> Es hilft uns sehr, wenn Sie so detailliert wie möglich angeben, was Sie getan haben, als dieser Fehler auftrat.</p>"
unprocessable_entity:
title: "Die gewünschte Änderung wurde abgelehnt (422). "
message_html: "<p>Die gewünschte Änderung wurde abgelehnt. Vielleicht haben Sie versucht, etwas zu ändern, auf das Sie keinen Zugriff haben.<br><h3> <a href='/' >Zur Startseite zurückkehren</a></h3></p>"

View File

@@ -187,6 +187,7 @@ en:
cardholder_name: "Cardholder name"
community_forum_url: "Community forum URL"
customer_instructions: "Customer instructions"
additional_information: "Additional Information"
devise:
passwords:
spree_user:
@@ -606,8 +607,7 @@ en:
credit_owed: "Credit Owed"
balance_due: "Balance Due"
destroy:
has_associated_orders: "Delete failed: customer has associated orders with his shop"
has_associated_subscriptions: "Delete failed: This customer has active subscriptions. Cancel them first."
contents:
edit:
title: Content
@@ -3639,6 +3639,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
# TODO: remove 'account_updated' key once we get to Spree 2.0
account_updated: "Account updated!"
email_updated: "The account will be updated once the new email is confirmed."
show_api_key_view_toggled: "Show API key view has been changed!"
my_account: "My account"
date: "Date"
time: "Time"
@@ -3786,7 +3787,10 @@ See the %{link} to find out more about %{sitename}'s features and to start using
results_found: "%{number} Results found."
viewing: "Viewing %{start} to %{end}."
print_invoices: "Print Invoices"
selected: selected
selected:
zero: "No order selected"
one: "1 order selected"
other: "%{count} orders selected"
sortable_header:
payment_state: "Payment State"
shipment_state: "Shipment State"
@@ -3926,7 +3930,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
paypal:
no_payment_via_admin_backend: Paypal payments cannot be captured in the Backoffice
products:
image_upload_error: "The product image was not recognised. Please upload an image in PNG or JPG format."
image_upload_error: "Please upload the image in JPG, PNG, GIF, SVG or WEBP format."
new:
title: "New Product"
new_product: "New Product"
@@ -4190,10 +4194,16 @@ See the %{link} to find out more about %{sitename}'s features and to start using
connection_failed: "Could not connect to PayPal."
generic_error: "PayPal failed. %{reasons}"
users:
api_keys:
regenerate_key: "Regenerate Key"
title: API key
developer_settings:
title: Developer Settings
form:
account_settings: Account Settings
show:
tabs:
developer_settings: Developer Settings
orders: Orders
cards: Credit Cards
transactions: Transactions
@@ -4223,7 +4233,9 @@ See the %{link} to find out more about %{sitename}'s features and to start using
items: Items
total: Total
paid?: Paid?
view: View
status: Status
completed: Completed
cancelled: Cancelled
saved_cards:
default?: Default?
delete?: Delete?
@@ -4234,6 +4246,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
authorised_shops:
shop_name: "Shop Name"
allow_charges?: "Allow Charges to Default Card?"
no_default_saved_cards_tooltip: You need to mark one credit card as default to allow charges.
localized_number:
invalid_format: has an invalid format. Please enter a number.
api:
@@ -4252,6 +4265,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
shipment:
cannot_ready: "Cannot ready shipment."
invalid_taxonomy_id: "Invalid taxonomy id."
toggle_api_key_view: "Show API key view for user"
activerecord:
models:
spree/payment:
@@ -4298,3 +4312,25 @@ See the %{link} to find out more about %{sitename}'s features and to start using
x_years:
one: 1 year
other: "%{count} years"
errors:
not_found:
title: "The page you were looking for doesn't exist (404)"
message_html: "<b>Please try again</b>
<p>This might be a temporary problem. Please click the back button to return to the previous screen or go back to <a href='/'>Home</a> and try again.</p>
<b>Contact support</b>
<p>If the problem persists or is urgent, please tell us about it. Find our contact details from the global <a href='https://openfoodnetwork.org/ofn-local/' target='blank'>Open Food Network Local page</a>.</p>
<p>It really helps us if you can give as much detail as possible about what the missing page is about.</p>"
internal_server_error:
title: "We're sorry, but something went wrong (500)"
message_html: "<b>Please try again</b>
<p>This might be a temporary problem. Please click the back button to return to the previous screen or go back to <a href='/''>Home</a> and try again.</p>
<b>We're on it</b>
<p>If you have seen this problem before, we probably already know about it and are working on a fix. We record all the errors that come up.</p>
<b>Contact support</b>
<p>If the problem persists or is urgent, please tell us about it. Find our contact details from the global <a href='https://openfoodnetwork.org/ofn-local/' target='blank'>Open Food Network Local page</a>.</p>
<p>It really helps us if you can give as much detail as possible about what you were doing when this error occurred.</p>"
unprocessable_entity:
title: "The change you wanted was rejected (422)"
message_html: "<p>The change you wanted was rejected. Maybe you tried to change something you don't have access to.
<br><h3><a href='/' >Return home</a></h3>
</p>"

View File

@@ -414,8 +414,6 @@ en_AU:
guest_label: "Guest checkout"
credit_owed: "Credit Owed"
balance_due: "Balance Due"
destroy:
has_associated_orders: "Delete failed: customer has associated orders with his shop"
contents:
edit:
title: Content
@@ -3257,7 +3255,6 @@ en_AU:
results_found: "%{number} Results found."
viewing: "Viewing %{start} to %{end}."
print_invoices: "Print Invoices"
selected: selected
sortable_header:
payment_state: "Payment State"
shipment_state: "Shipment State"
@@ -3383,7 +3380,6 @@ en_AU:
paypal:
no_payment_via_admin_backend: Paypal payments cannot be captured in the Backoffice
products:
image_upload_error: "The product image was not recognised. Please upload an image in PNG or JPG format."
new:
title: "New Product"
new_product: "New Product"
@@ -3609,6 +3605,8 @@ en_AU:
paypal:
refund_amount: "Amount"
users:
api_keys:
regenerate_key: "Regenerate Key"
form:
account_settings: Account Settings
show:
@@ -3640,7 +3638,8 @@ en_AU:
items: Items
total: Total
paid?: Paid?
view: View
status: Status
cancelled: Cancelled
saved_cards:
default?: Default?
delete?: Delete?

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