Compare commits

...

322 Commits

Author SHA1 Message Date
Maikel Linke
e2ea4d21f4 Update translations 2023-02-17 14:12:24 +11:00
Filipe
2f0e00370b Merge pull request #10385 from rioug/10350-BUU-read-only-product-list-take-2
New product page, add missing column and handle formatting
2023-02-16 18:41:05 +00:00
Filipe
b91bb8961f Merge pull request #10434 from openfoodfoundation/dependabot/bundler/sidekiq-7.0.4
Upgrade sidekiq from 6.5.8 to 7.0.4 (incl new metrics tab)
2023-02-16 18:18:17 +00:00
Filipe
5e3b0cf47c Merge pull request #10433 from openfoodfoundation/dependabot/npm_and_yarn/rails/webpacker-5.4.4
Bump @rails/webpacker from 5.4.3 to 5.4.4
2023-02-16 18:05:13 +00:00
Filipe
ba46756cba Merge pull request #10445 from cyrillefr/Remov-I18nt-keys-from-automated-tests#9499
Remov i18nt keys from automated tests#9499
2023-02-16 17:51:08 +00:00
Filipe
f6c9246e20 Merge pull request #10343 from jibees/9538-track-404-errors-in-bugsnag
Notify bugsnag on 404 errors
2023-02-16 17:45:41 +00:00
Konrad
11e9329b97 Merge pull request #10351 from rioug/9874-order-cycle-creation-fix-needless-warning-and-data-loss
Order cycle creation, fix needless warning and add warning to prevent data loss
2023-02-16 16:08:37 +01:00
Rachel Arnould
1a7598d96d Merge pull request #10428 from jibees/9145-Splitcheckout,-add-error-message-when-no-shipping-methods-are-available-to-the-customer
SplitCheckout: improve error messages in flash banner to improve user experience
2023-02-16 15:33:12 +01:00
Jean-Baptiste Bellet
2eec3d625a Notify bugsnag on 404 errors 2023-02-16 13:45:42 +00:00
cyrillefr
ba30606052 Remove I18n keys from consumer specs 2023-02-16 14:33:17 +01:00
cyrillefr
f6f62515b5 Remove I18n keys in system admin specs 2023-02-16 14:33:09 +01:00
cyrillefr
a75892ccc1 Remove I18n keys in support specs 2023-02-16 14:28:14 +01:00
cyrillefr
0082653170 Remove I18n keys in service specs 2023-02-16 14:28:14 +01:00
cyrillefr
cc0b23c0bd Remove I18n keys in request specs 2023-02-16 14:28:14 +01:00
cyrillefr
b3ad5aeaca Remove I18n keys in model specs 2023-02-16 14:28:14 +01:00
cyrillefr
ffe9756f50 Removes I18n keys in mailer specs 2023-02-16 14:27:21 +01:00
dependabot[bot]
40eb5e320b Bump @rails/webpacker from 5.4.3 to 5.4.4
Bumps [@rails/webpacker](https://github.com/rails/webpacker) from 5.4.3 to 5.4.4.
- [Release notes](https://github.com/rails/webpacker/releases)
- [Changelog](https://github.com/rails/webpacker/blob/v5.4.4/CHANGELOG.md)
- [Commits](https://github.com/rails/webpacker/compare/v5.4.3...v5.4.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-16 11:06:29 +00:00
jibees
4e4a392a8c Merge pull request #10443 from openfoodfoundation/dependabot/npm_and_yarn/cable_ready-5.0.0-pre10
Bump cable_ready from 5.0.0-pre9 to 5.0.0-pre10
2023-02-16 12:00:48 +01:00
Filipe
e3fa933699 Merge pull request #10381 from anansilva/8229-listing-orders-payment-state-cancelled-order
Update payment (cash/EFF) state on cancelled order
2023-02-15 12:06:38 +00:00
cyrillefr
78a6317c84 Remove I18n keys in reports lib specs 2023-02-15 11:08:19 +01:00
cyrillefr
fa57e37467 Remove I18n keys in User ctrllers spec 2023-02-15 11:08:19 +01:00
cyrillefr
7c24f6b26f Remove I18n keys from Pay/Stripe/Chkout Ctrllers spec 2023-02-15 11:08:19 +01:00
cyrillefr
f9f6abf740 Remove I18n keys from Api Ctrllers spec 2023-02-15 11:08:19 +01:00
cyrillefr
e6c0dd95c4 Remive I18n keys in Admin ctrller specs 2023-02-15 11:08:19 +01:00
dependabot[bot]
ade2eda638 Bump cable_ready from 5.0.0-pre9 to 5.0.0-pre10
Bumps [cable_ready](https://github.com/stimulusreflex/cable_ready) from 5.0.0-pre9 to 5.0.0-pre10.
- [Release notes](https://github.com/stimulusreflex/cable_ready/releases)
- [Changelog](https://github.com/stimulusreflex/cable_ready/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stimulusreflex/cable_ready/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-15 09:57:26 +00:00
Jean-Baptiste Bellet
0a3d362282 Still improve error message for Billing address
```
"Bill" is a person's name, and I don't know his address
```

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

It was added to avoid filling up Redis on dev, but it's actually a Sidekiq pro option which needs to be defined on jobs, so I guess it never worked.
2023-02-15 12:22:41 +11:00
Gaetan Craig-Riou
eb67340c52 Simplify usage of UnsavedChangesController
Remove the need to manually bind handleSubmit to onSubmit event
2023-02-15 10:51:23 +11:00
Gaetan Craig-Riou
75ed68c9cb UnsavedChangesController, automatically add onChange event handler to form elements 2023-02-15 10:30:52 +11:00
Maikel
255fc64fdb Merge pull request #10383 from filipefurtad0/add_pagination_BOM_spec
Adds a spec on BOM pagination
2023-02-15 09:38:43 +11:00
filipefurtad0
c84ec148db Adds a spec on BOM pagination
Adds coverage on bottom section of pagination

Extracts order line item creation to before block

Removes disabled option when asserting on button 2
2023-02-14 12:04:38 +00:00
jibees
eeb059ae17 Merge pull request #10435 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.119.1
Bump aws-sdk-s3 from 1.119.0 to 1.119.1
2023-02-14 12:29:58 +01:00
dependabot[bot]
7a5b7c4f64 Bump aws-sdk-s3 from 1.119.0 to 1.119.1
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.119.0 to 1.119.1.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-14 10:06:09 +00:00
dependabot[bot]
613c693774 Bump sidekiq from 6.5.8 to 7.0.4
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 6.5.8 to 7.0.4.
- [Release notes](https://github.com/sidekiq/sidekiq/releases)
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v6.5.8...v7.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-14 10:05:01 +00:00
Maikel
9ea9ac99f9 Merge pull request #10356 from openfoodfoundation/dependabot/bundler/rspec-rails-6.0.1
Bump rspec-rails from 5.1.2 to 6.0.1
2023-02-14 13:57:38 +11:00
Gaetan Craig-Riou
1cf55cde4d Refactor column_value, to use a giant case
A giant case is more readable that the previous 'smart' solution.
It also disables a couple of Rubocop checks triggered by the giant case
2023-02-14 13:36:49 +11:00
Gaetan Craig-Riou
503e0ecba1 Fix category spec as per code review
- Use a hardcoded string for the expected categories (taxons), and fix
taxon step up to not use default taxon
- Fix constant typo
2023-02-14 13:36:12 +11:00
Maikel
ecc2c7ba43 Merge pull request #10423 from mkllnk/suburbs
Remove unused suburbs table
2023-02-14 11:51:48 +11:00
Jean-Baptiste Bellet
32fc1eae61 Remove ship_address errors if shipping method isn't selected 2023-02-13 21:06:41 +01:00
Filipe
822f640997 Merge pull request #10427 from jibees/10417-flaky-rspec-specsystemadminproducts_specrb210
Fix flaky spec `spec/system/admin/products_spec.rb:210`
2023-02-13 16:39:21 +00:00
Filipe
2d0e64a7d3 Merge pull request #10426 from openfoodfoundation/dependabot/bundler/puma-6.1.0
Bump puma from 6.0.2 to 6.1.0
2023-02-13 15:08:25 +00:00
jibees
f5e1cbca08 Merge pull request #10321 from openfoodfoundation/dependabot/bundler/rails-6.1.7.2
Bump rails from 6.1.7 to 6.1.7.2
2023-02-13 14:12:39 +01:00
Jean-Baptiste Bellet
51272eef00 Actually, those two tests are in the same context
The diff is pretty hard to read, but i've put the two tests "removes it from the product list" and "keeps the line item on the order (admin)" under the same context and the same `before` block
2023-02-13 13:38:57 +01:00
dependabot[bot]
2f6a910a1c Bump rails from 6.1.7 to 6.1.7.2
Bumps [rails](https://github.com/rails/rails) from 6.1.7 to 6.1.7.2.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v6.1.7...v6.1.7.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 10:48:01 +00:00
jibees
9ca25df934 Merge pull request #10411 from mkllnk/paper_trail
Bump paper_trail from 12.1.0 to 12.3.0
2023-02-13 11:46:34 +01:00
Maikel Linke
a3e1193f28 Bump paper_trail from 12.1.0 to 12.3.0
No breaking changes but Rails 7 support.
2023-02-13 11:21:32 +01:00
jibees
889b132069 Merge pull request #10425 from openfoodfoundation/dependabot/npm_and_yarn/floating-ui/dom-1.2.1
Bump @floating-ui/dom from 1.2.0 to 1.2.1
2023-02-13 11:18:09 +01:00
jibees
3e18445c36 Merge pull request #10424 from openfoodfoundation/dependabot/npm_and_yarn/js-big-decimal-1.4.1
Bump js-big-decimal from 1.3.15 to 1.4.1
2023-02-13 11:07:20 +01:00
dependabot[bot]
3c158cd061 Bump puma from 6.0.2 to 6.1.0
Bumps [puma](https://github.com/puma/puma) from 6.0.2 to 6.1.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.0.2...v6.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 10:05:55 +00:00
dependabot[bot]
c464f3a43d Bump @floating-ui/dom from 1.2.0 to 1.2.1
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.1/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 10:00:15 +00:00
dependabot[bot]
84be4aec7b Bump js-big-decimal from 1.3.15 to 1.4.1
Bumps [js-big-decimal](https://github.com/royNiladri/js-big-decimal) from 1.3.15 to 1.4.1.
- [Release notes](https://github.com/royNiladri/js-big-decimal/releases)
- [Commits](https://github.com/royNiladri/js-big-decimal/compare/v1.3.15...v1.4.1)

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

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

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

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

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-09 16:50:40 +01:00
jibees
a3278ab6d3 Merge pull request #10404 from openfoodfoundation/dependabot/bundler/rubocop-1.45.1
Bump rubocop from 1.44.1 to 1.45.1
2023-02-09 10:15:34 +01:00
dependabot[bot]
416a2efea9 Bump rubocop from 1.44.1 to 1.45.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.44.1 to 1.45.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.44.1...v1.45.1)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-08 09:05:24 +00:00
dependabot[bot]
c38f1b88d3 Bump prettier from 2.8.3 to 2.8.4
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.3 to 2.8.4.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.3...2.8.4)

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

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

This is a down-grade, but it's better to match the version in production. The next step will be to upgrade again for production.
2023-02-07 21:25:20 +11:00
dependabot[bot]
68acca2530 Bump prettier from 2.7.1 to 2.8.3
Bumps [prettier](https://github.com/prettier/prettier) from 2.7.1 to 2.8.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.7.1...2.8.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-07 09:02:25 +00:00
dependabot[bot]
180aabdb90 Bump @floating-ui/dom from 1.1.1 to 1.2.0
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.0/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-07 09:02:00 +00:00
Maikel
c82af88c48 Merge pull request #10371 from openfoodfoundation/dependabot/npm_and_yarn/karma-6.4.1
Bump karma from 6.3.20 to 6.4.1
2023-02-07 16:43:19 +11:00
Maikel
40eae3f84d Merge pull request #10378 from openfoodfoundation/dependabot/bundler/valid_email2-4.0.5
Bump valid_email2 from 4.0.4 to 4.0.5
2023-02-07 16:41:47 +11:00
Ana Nunes da Silva
8bd890f311 Add :checkout scope in Spree::Payment 2023-02-06 11:09:40 +00:00
dependabot[bot]
64e6bd8248 Bump mrujs from 0.7.4 to 0.10.1
Bumps [mrujs](https://github.com/ParamagicDev/mrujs) from 0.7.4 to 0.10.1.
- [Release notes](https://github.com/ParamagicDev/mrujs/releases)
- [Changelog](https://github.com/KonnorRogers/mrujs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ParamagicDev/mrujs/compare/v0.7.4...v0.10.1)

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 09:08:09 +00:00
dependabot[bot]
ec3d7174de Bump valid_email2 from 4.0.4 to 4.0.5
Bumps [valid_email2](https://github.com/micke/valid_email2) from 4.0.4 to 4.0.5.
- [Release notes](https://github.com/micke/valid_email2/releases)
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v4.0.4...v4.0.5)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

In your Gemfile, replace the line:

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

With:

gem 'omniauth_openid_connect', '~> 0.6'

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

Allow upgrading omniauth_openid_connect gem

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-30 09:06:42 +00:00
dependabot[bot]
24d29c6949 Bump @floating-ui/dom from 1.1.0 to 1.1.1
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.1.1/packages/dom)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-30 09:01:33 +00:00
Maikel Linke
1609cc49e3 Wait only for report jobs within Puma workers
Otherwise a root Puma worker will try to wait for its other child
processes as well while they live a long time.
2023-01-30 16:28:59 +11:00
Maikel Linke
8c458c2d48 Remove outdated SSL setting from database 2023-01-30 14:32:31 +11:00
Maikel Linke
0fc108a8e6 Remove useless option to allow SSL
It's an outdated Spree setting. We always enforce SSL in production and
staging while development and test environments are running without SSL.
This setting didn't have any effect.
2023-01-30 14:19:37 +11:00
Maikel Linke
f888a0eb21 Remove unnecessary rack-ssl gem
Rails comes with ActionDispatch::SSL which is enabled in staging and
production. We don't need this ancient gem last updated in 2014.
2023-01-30 14:08:55 +11:00
filipefurtad0
994232f6d1 Adds pagination test on orders page 2023-01-28 17:50:28 +00:00
jibees
a97fb0f46b Merge pull request #10336 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.119.0
Bump aws-sdk-s3 from 1.118.0 to 1.119.0
2023-01-27 10:29:38 +01:00
dependabot[bot]
73c81e626c Bump aws-sdk-s3 from 1.118.0 to 1.119.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.118.0 to 1.119.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-27 09:08:25 +00:00
Maikel Linke
b35f9551eb Update translations 2023-01-27 17:12:37 +11:00
Maikel
4193cdb9f1 Merge pull request #10320 from dacook/remove-ie-warning
Remove unnecessary IE warning
2023-01-27 17:02:53 +11:00
David Cook
57678b7566 Remove IE warning
It brings me great pleasure to remove this. I've been waiting my whole career: IE is finally gone!!
2023-01-27 12:45:46 +11:00
Maikel
ee5f255fc9 Merge pull request #10326 from openfoodfoundation/dependabot/bundler/bootsnap-1.16.0
Bump bootsnap from 1.15.0 to 1.16.0
2023-01-27 12:10:52 +11:00
Maikel
408c2f7a04 Merge pull request #10325 from openfoodfoundation/dependabot/bundler/rubocop-1.44.1
Bump rubocop from 1.44.0 to 1.44.1
2023-01-27 11:59:21 +11:00
Filipe
1cfc13e66f Merge pull request #10208 from jibees/9424-calculator-provide-a-calculator-none
Admin: Include a "None" option for calculator type user in shipping method and payment method forms
2023-01-26 14:48:41 +00:00
dependabot[bot]
110c594353 Bump rubocop from 1.44.0 to 1.44.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.44.0 to 1.44.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.44.0...v1.44.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-26 14:31:42 +00:00
dependabot[bot]
1748274e72 Bump bootsnap from 1.15.0 to 1.16.0
Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.15.0 to 1.16.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.15.0...v1.16.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-26 14:31:00 +00:00
Filipe
e6863f83fc Merge pull request #10328 from jibees/10327-flaky-specsystemconsumersplit_checkout_specrb486
SplitCheckout, Specs: fix errors count when submitting form with errors
2023-01-26 14:27:03 +00:00
jibees
e48ba1b5fa Specify assertions by grouping them into page section
Co-Authored-By: Filipe <49817236+filipefurtad0@users.noreply.github.com>
2023-01-26 15:06:00 +01:00
Jean-Baptiste Bellet
999440da0a Fix errors count when user submit the form
Since https://github.com/openfoodfoundation/openfoodnetwork/pull/10317 we are displaying the error message also in the flash message. For unknown reason, build didn't fail for that PR, but, as the PR adds some error message, we need to change the spec to reflect that change.

This PR separates error in checkout page itself, and errors in flash message banner.
2023-01-26 11:05:55 +01:00
Filipe
1ea7304549 Merge pull request #10276 from jibees/10250-split-checkout-responsiveness-is-broken-on-iphone
Split Checkout, increase input to 16px for small devices and iOS devices
2023-01-25 17:32:10 +00:00
Filipe
ad4670705e Merge pull request #10245 from jibees/10222-in-bom-dont-show-group-buy-info-if-equal-to-0
Admin, BOM: Don't display "group by size" if group by product value is actually null
2023-01-25 15:29:05 +00:00
Filipe
5e4afb765b Merge pull request #10307 from rioug/10271-add-mandatory-asterisk-in-business-detail
Add required asterisk in business details panel
2023-01-25 13:23:39 +00:00
Filipe
d2d9e318fc Merge pull request #10310 from openfoodfoundation/dependabot/bundler/sidekiq-scheduler-5.0.0
Bump sidekiq-scheduler from 4.0.3 to 5.0.0
2023-01-25 12:42:16 +00:00
Filipe
a2a1d8b7e2 Merge pull request #10264 from dacook/readonly-mail-settings
Update mail settings notice
2023-01-25 12:25:05 +00:00
Filipe
65d8337d3d Merge pull request #10319 from mkllnk/show-flash-until-closed-by-user
Show new flash messages until discarded by user
2023-01-25 12:19:45 +00:00
Filipe
7f3cf743f7 Merge pull request #10317 from mkllnk/9056-stuck-in-split-checkout
Display checkout error messages to user for convencience
2023-01-25 12:15:36 +00:00
Rachel Arnould
27e8d89325 Merge pull request #10313 from jibees/split-checkout-do-not-display-payment-method-instruction-if-empty
SplitCheckout: On step3, do not display payment method description if not present
2023-01-25 11:43:19 +01:00
Maikel Linke
882d7a1215 Simplify method according to style rules 2023-01-25 15:49:44 +11:00
Maikel Linke
cec9d2987e Name order attributes similar to other text
Rails' auto-generated names used in error messages were a bit cryptic
for users.
2023-01-25 15:49:44 +11:00
Maikel Linke
2bba38134e Show new flash messages until discarded by user
We currently have two mechanisms to display flash messages. The old one
through AngularJS and the new one with StimulusReflex.

The AngularJS directive showed flashes for 10 seconds. The
StimulusReflex controller showed them only for 3 seconds. But any time
based disappearance of error messages is problematic. There's important
information in there and some error messages can be long. It's also
possible that a request takes a while, the user leaves the computer and
comes back later. If we hide the flash automatically then the user may
have no idea what went wrong. They may even think that everything is
fine and their order went through.

I removed the time-based removal of flash messages from the new
StimulusReflex controller to address this problem. But I didn't touch
the AngularJS directive because it will be removed anyway. There may
also be many more messages that could be annoying if they didn't
disappear, for example a simple "login successful".

I personally think that flash messages that are not important to keep,
don't need to be shown in the first place. The best UX makes the success
obvious on the page. And success should be assumed.
2023-01-25 15:33:17 +11:00
David Cook
428b589357 Remove unused currency from calculators 2023-01-25 15:31:40 +11:00
Maikel Linke
ab7e1ac39f Display error messages to user for convencience
It will also help us to debug the application if the error is not
obvious.
2023-01-25 14:50:28 +11:00
Maikel Linke
0782447863 Drop superflous js flag from system spec 2023-01-25 14:50:28 +11:00
Maikel
1a71e55029 Merge pull request #10316 from openfoodfoundation/dependabot/npm_and_yarn/ua-parser-js-0.7.33
Bump ua-parser-js from 0.7.30 to 0.7.33
2023-01-25 14:42:03 +11:00
Jean-Baptiste Bellet
f082dfdb79 Move scheduler options to scheduler key in the sidekiq.yml
As requested by https://github.com/sidekiq-scheduler/sidekiq-scheduler/blob/v5.0.0.beta1/CHANGELOG.md#500beta1 and https://github.com/sidekiq-scheduler/sidekiq-scheduler/pull/412

```
[BREAKING CHANGE] Moves all sidekiq-scheduler config options under the scheduler key in the sidekiq.yml file #412

If you're migrating from v4 to v5, any sidekiq-scheduler config you may have in your sidekiq.yml should be moved under the scheduler key.
See #412 to see which are the config options that you need to move under the scheduler key.
```
2023-01-25 10:43:44 +11:00
dependabot[bot]
10060be300 Bump ua-parser-js from 0.7.30 to 0.7.33
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.30 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.30...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-24 23:05:42 +00:00
David Cook
6424b37e70 Merge pull request #10314 from jibees/upgrade-Brakeman-version
Upgrade brakeman to its latest version
2023-01-25 10:03:30 +11:00
Jean-Baptiste Bellet
ada164d29b Upgrade brakeman to its latest version 2023-01-24 16:23:15 +01:00
Gaetan Craig-Riou
8194ae1eae Add required asterisk in business details panel 2023-01-24 15:24:14 +01:00
Jean-Baptiste Bellet
64b7ccc2ba Do not display payment method description if not present
This avoid an empty section with `Instructions` title empty
2023-01-24 15:06:46 +01:00
Jean-Baptiste Bellet
3e8ec039f7 Increase input to 16px for small devices and iOS devices
This avoid that "zoom on input focus" on iOS devices
2023-01-24 12:05:09 +01:00
Filipe
f917027cb1 Merge pull request #10249 from jibees/10228-split-checkout-error-422-on-step-2-payment-update-highlighted-fields
SplitCheckout: Fix an issue that was sending unintentionally bad params for payment
2023-01-24 10:31:49 +00:00
jibees
5d7ab0973a Merge pull request #10311 from openfoodfoundation/dependabot/bundler/rubocop-1.44.0
Bump rubocop from 1.43.0 to 1.44.0
2023-01-24 10:45:18 +01:00
dependabot[bot]
ee07b81cd6 Bump rubocop from 1.43.0 to 1.44.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.43.0 to 1.44.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.43.0...v1.44.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-24 09:06:15 +00:00
dependabot[bot]
04e7b3b617 Bump sidekiq-scheduler from 4.0.3 to 5.0.0
Bumps [sidekiq-scheduler](https://github.com/moove-it/sidekiq-scheduler) from 4.0.3 to 5.0.0.
- [Release notes](https://github.com/moove-it/sidekiq-scheduler/releases)
- [Changelog](https://github.com/sidekiq-scheduler/sidekiq-scheduler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moove-it/sidekiq-scheduler/compare/v4.0.3...v5.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-24 09:01:21 +00:00
Pipo Bimbo
118d3a9d8e separate log file for both steps of the tests 2023-01-24 08:50:33 +01:00
Maikel
2fc935e99c Merge pull request #10167 from openfoodfoundation/dependabot/bundler/ddtrace-1.8.0
Bump ddtrace from 0.54.1 to 1.8.0
2023-01-24 14:53:12 +11:00
Maikel
00d9c2836d Merge pull request #10309 from mkllnk/flaky-serializer-spec
Parse JSON to test ids separately and avoid flakiness
2023-01-24 14:32:20 +11:00
Maikel Linke
79887c0b44 Clarify array intend of array operation in spec 2023-01-24 14:17:46 +11:00
Maikel Linke
5b6a855dfe Clarify test result structure 2023-01-24 13:39:48 +11:00
Maikel Linke
d18d0ef6b1 Parse JSON to test variant and distributor ids
We looked at the whole JSON string before and sometimes a distributor id
would match a variant id which made the test flaky.
2023-01-24 11:51:44 +11:00
Maikel Linke
d37fa9fc5f Simplify spec structure without defining modules
Specs should test classes and modules independently and they should not
be in the same module. It also avoids indentation and accidental
namespace polution.
2023-01-24 11:41:06 +11:00
Filipe
7b14afbabe Merge pull request #10294 from abdellani/fix_invoice_print_spec
fix the pending invoice print spec
2023-01-23 19:06:36 +00:00
Filipe
bc788b6d60 Merge pull request #10243 from jibees/10242-change-how-orders-are-loaded-in-bom-+-filters
Admin, BOM: add pagination, remove date range filtering on first load
2023-01-23 17:48:05 +00:00
Jean-Baptiste Bellet
3247c32191 Be consistant and use data-paymentmethod-id attribute
as already used on other element
2023-01-23 17:48:54 +01:00
Jean-Baptiste Bellet
251ab2ac9a Payment method id attribute don't need to start with paymentmethod 2023-01-23 17:46:26 +01:00
jibees
dafe4b599f Merge pull request #10303 from mkllnk/webpacker-ignores-tmp-files
Ignore vi .swp files when webpack dev reloads page
2023-01-23 17:12:29 +01:00
Filipe
d7c99a9d8b Merge pull request #10275 from filipefurtad0/update_orders_spec
Updates system spec for orders page
2023-01-23 16:00:38 +00:00
Rachel Arnould
53fb906861 Merge pull request #10254 from jibees/10246-split-checkout-order-summary-page-design-changes
Split checkout: order summary page design changes
2023-01-23 15:52:06 +01:00
Pipo Bimbo
54acfbf7f2 documentation for docker on windows 2023-01-23 15:08:18 +01:00
Pipo Bimbo
5708fb04a5 switch from command scripts to powershell scripts 2023-01-23 14:15:16 +01:00
Pipo Bimbo
fa4ff7534b for windows and docker usage compatibilities, force certain files to use LF line endings, even on Windows 2023-01-23 14:10:41 +01:00
Pipo Bimbo
4bae28bbad removed node_modules folder mounting on docker because it is not possible to have node_modules files on Windows host used by yarn/npm process on docker container 2023-01-23 14:10:41 +01:00
Pipo Bimbo
e1b79db65e Set line endings to LF, even on Windows, for Shell scripts. Otherwise, execution within Docker fails. 2023-01-23 14:10:41 +01:00
Pipo Bimbo
d413a39c3c grep option -x does not work on windows installation due to EOL characters 2023-01-23 14:10:41 +01:00
Pipo Bimbo
d153adca9b docker server.bat files for use of docker on windows environment + documentation 2023-01-23 14:10:41 +01:00
Pipo Bimbo
38fe572943 Avoid spaces and line return around ruby version, especially for windows 2023-01-23 14:10:41 +01:00
Pipo Bimbo
ee1ad57c7f add docker build and seed scripts for windows 2023-01-23 14:10:41 +01:00
filipefurtad0
fa96f7339d Replaces URL with routing syntax 2023-01-23 11:35:53 +00:00
Sigmund Petersen
78bbb08666 Merge pull request #10301 from openfoodfoundation/update-getting-started
Docs: Suggest using SSH instead of HTTPS for cloning
2023-01-23 08:36:17 +01:00
Sigmund Petersen
e260112eb8 Merge pull request #10296 from filipefurtad0/add_no_sandbox_to_cuprite_settings
Sets no-sandbox option, for CI env.; increases timeout values
2023-01-23 08:34:09 +01:00
Maikel Linke
a91ece8f3b Replace outdated datadog config syntax 2023-01-23 16:40:36 +11:00
Jean-Baptiste Bellet
6327370401 Update datadog settings from 0.x to 1.x
Reference: https://github.com/DataDog/dd-trace-rb/blob/master/docs/UpgradeGuide.md#settings-have-been-renamed
2023-01-23 16:25:03 +11:00
Maikel Linke
b91b85febc Ignore vi .swp files when webpack dev reloads page
The webpack dev server watches assets and reloads the page when files
change on disk. I'm adding vi's temporary files to the ignore list.
2023-01-23 14:42:08 +11:00
Mohamed ABDELLANI
19df15d75b move item group instruction from db to rails 2023-01-21 18:40:27 +01:00
Mohamed ABDELLANI
92c4bd9eb7 introduces format_percentage in ReportRowBuilder#format_cell 2023-01-21 18:40:27 +01:00
Mohamed ABDELLANI
4822be532b test Sales Tax Totals By Producer 2023-01-21 18:40:27 +01:00
Mohamed ABDELLANI
c87c8ed0df subreport filtering partial 2023-01-21 18:39:33 +01:00
Mohamed ABDELLANI
f4a5130cb5 remove pending from tests 2023-01-21 08:35:12 +01:00
Mohamed ABDELLANI
8823b2ac89 add display_line_items_taxes to expected message in invoice view spec 2023-01-21 08:35:01 +01:00
Mohamed ABDELLANI
9bff2718c7 implement display_line_items_taxes to render included & added tax 2023-01-21 08:16:05 +01:00
filipefurtad0
7dc14cc35a Adds coverage for bulk pdf generation
and order cancelling
2023-01-20 18:31:33 +00:00
Mohamed ABDELLANI
a4f388336a remove duplicated test 2023-01-20 18:00:04 +01:00
Jean-Baptiste Bellet
370e476fc5 has:() relational pseudo class is not available for firefox
cf. https://caniuse.com/css-has

So be more generic, as the only `checkout-input` is for that checkbox for T&Cs
2023-01-20 15:37:52 +01:00
filipefurtad0
8bfb17144c Filters by order state 2023-01-20 13:56:40 +00:00
filipefurtad0
f984cd89c2 Filters by invoice number 2023-01-20 13:14:23 +00:00
filipefurtad0
336210b898 Tests shipping methods filtering 2023-01-20 13:10:18 +00:00
filipefurtad0
9323394eb7 Adds CI condition browser_options; sets timeouts to 60 2023-01-20 11:13:31 +00:00
jibees
895fc94a75 Merge pull request #10295 from openfoodfoundation/dependabot/bundler/aws-sdk-s3-1.118.0
Bump aws-sdk-s3 from 1.117.2 to 1.118.0
2023-01-20 11:43:14 +01:00
jibees
aa725ec8a4 Merge pull request #10299 from openfoodfoundation/dependabot/bundler/globalid-1.0.1
Bump globalid from 1.0.0 to 1.0.1
2023-01-20 11:37:20 +01:00
dependabot[bot]
1313b55531 Bump rspec-rails from 5.1.2 to 6.0.1
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 5.1.2 to 6.0.1.
- [Release notes](https://github.com/rspec/rspec-rails/releases)
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v5.1.2...v6.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-20 10:33:08 +00:00
Sigmund Petersen
f921bbfe45 Merge pull request #10288 from openfoodfoundation/dependabot/bundler/rack-2.2.6.2
Bump rack from 2.2.4 to 2.2.6.2
2023-01-20 11:31:49 +01:00
Jean-Baptiste Bellet
f8b8e79725 Specify a bit when T&Cs label is longer that summary width
and therefore on two lines
2023-01-20 11:20:35 +01:00
Jean-Baptiste Bellet
b559171d0e Put order summary footer into its own file _totals_footer.html.haml 2023-01-20 11:20:35 +01:00
Jean-Baptiste Bellet
3e7e0e4d81 Instead of adding inline style, create a CSS rule 2023-01-20 11:20:35 +01:00
Jean-Baptiste Bellet
c5d94d372f Remove unnecessary within block 2023-01-20 11:20:35 +01:00
Jean-Baptiste Bellet
c99ec38c85 By default, we reject all adjustements with amount equal to 0 2023-01-20 11:20:35 +01:00
Jean-Baptiste Bellet
37f359542e Remove bold on firstname+lastname 2023-01-20 11:20:35 +01:00
Jean-Baptiste Bellet
21b74386f9 Introduce mobile view for summary step 2023-01-20 11:20:35 +01:00
Jean-Baptiste Bellet
53c701e04c In fact, it seems likely to be strictly less. 2023-01-20 11:20:35 +01:00
Jean-Baptiste Bellet
ef572668d5 Let's keep fees next to the payment or shipping method 2023-01-20 11:20:35 +01:00
Jean-Baptiste Bellet
fa8e36fbeb As this is used in a odd/even table, background needs to be transparent
Otherwise, it's set via `checkout h5`
2023-01-20 11:20:34 +01:00
Jean-Baptiste Bellet
1ea9c15bb8 Put total on the summary box on the right 2023-01-20 11:20:34 +01:00
Jean-Baptiste Bellet
cc838d2c88 Remove sentence 2023-01-20 11:20:34 +01:00
Jean-Baptiste Bellet
99fcbad0f0 On split checkout, do not display footer on order summary
introduced via `display_footer` which is by default `true`
2023-01-20 11:20:34 +01:00
Jean-Baptiste Bellet
52959a913f New step3: two columns, more condensed 2023-01-20 11:20:34 +01:00
David Cook
097bfd953f Suggest using SSH instead of HTTPS for cloning
This basically reverts 3a0c5bf0c3
2023-01-20 14:46:47 +11:00
dependabot[bot]
b9039f4b1f Bump globalid from 1.0.0 to 1.0.1
Bumps [globalid](https://github.com/rails/globalid) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/rails/globalid/releases)
- [Commits](https://github.com/rails/globalid/compare/v1.0.0...v1.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 22:24:49 +00:00
filipefurtad0
f7d4d7595c Filters by customer/billing address first and last names 2023-01-19 16:22:53 +00:00
filipefurtad0
28782775ad adds filter by Email assertion 2023-01-19 16:22:53 +00:00
filipefurtad0
6f35b38fa8 Asserts on the correct display of orders
(for a given distributor)
2023-01-19 16:22:53 +00:00
filipefurtad0
9757ab2a6c Creates customers and enterprise owners (users)
Fixes typo and removes unecessary js: true line
2023-01-19 16:22:53 +00:00
dependabot[bot]
381c4e6146 Bump aws-sdk-s3 from 1.117.2 to 1.118.0
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.117.2 to 1.118.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 09:08:10 +00:00
dependabot[bot]
828c6e5427 Bump rack from 2.2.4 to 2.2.6.2
Bumps [rack](https://github.com/rack/rack) from 2.2.4 to 2.2.6.2.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.4...v2.2.6.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 00:47:53 +00:00
Jean-Baptiste Bellet
7320a1714c Instead of selecting the controller, send an event handled by stripe-cards
Using a query selector to find controller in order to call method could be dangerous as the DOM can change. Using an event should be more robust.
2023-01-18 17:40:17 +01:00
Jean-Baptiste Bellet
9b4f9314bc Make a proper alignement for filtering options
I used inline style, because:
 - I didn't find any pre-existing CSS for this page
 - I think that flex is self-explaining and I think adding class (for what?) won't add any value
2023-01-18 17:39:42 +01:00
Jean-Baptiste Bellet
455c11c289 Put columns selector component on left, and per_page component on right 2023-01-18 17:39:42 +01:00
Jean-Baptiste Bellet
31dc35c500 Remove that awful double arrow on each select2 component
Already defined via `app/webpacker/css/admin/plugins/select2.scss`
2023-01-18 17:39:42 +01:00
Jean-Baptiste Bellet
35791034cc Remove orders/_per_page_controls and use the shared one 2023-01-18 17:39:42 +01:00
Jean-Baptiste Bellet
1a874d6fcf Introduce pagination for BOM page 2023-01-18 17:39:42 +01:00
Jean-Baptiste Bellet
85a748af99 When selecting an OC, do not pre-fill date range with OC date range
+ update specs as well
2023-01-18 17:39:42 +01:00
Jean-Baptiste Bellet
121a4a08af On filters reseting , set dates to undefined: range is not mandatory
+ send flatpickr event to reset the component

+ update specs as well
2023-01-18 17:39:09 +01:00
Jean-Baptiste Bellet
b75b123cba Don't check date range before refreshing data: they aren't mandatory
- Creates a simple formatDates method that handle date formatting before sending it as params instead of creating scoped variable (useless)
 - Put key to `undefined` (ie. don't then the params) if no date: already handled by the backend
2023-01-18 17:39:09 +01:00
Mohamed ABDELLANI
61037aa5ad sales tax totals by producers report 2023-01-17 08:37:47 +01:00
dependabot[bot]
fd4fb53df1 Bump ddtrace from 0.54.1 to 1.8.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.54.1 to 1.8.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.54.1...v1.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-17 01:39:59 +00:00
Jean-Baptiste Bellet
5a61722f8b + force FlatRate as calculator for payment methods in spec 2023-01-16 09:31:15 +01:00
Jean-Baptiste Bellet
719025f98e Only set calculator if it's a new record (having an id)
Unless we have a ActiveRecord::NotNullViolation
```
     ActiveRecord::NotNullViolation:
       PG::NotNullViolation: ERROR:  null value in column "calculable_id" of relation "spree_calculators" violates not-null constraint
       DETAIL:  Failing row contains (9370, Calculator::None, null, Spree::ShippingMethod, 2023-01-12 15:09:44.381142, 2023-01-12 15:09:44.381142).
     # ------------------
     # --- Caused by: ---
     # PG::NotNullViolation:
     #   ERROR:  null value in column "calculable_id" of relation "spree_calculators" violates not-null constraint
     #   DETAIL:  Failing row contains (9370, Calculator::None, null, Spree::ShippingMethod, 2023-01-12 15:09:44.381142, 2023-01-12 15:09:44.381142).

```
2023-01-16 09:31:15 +01:00
Jean-Baptiste Bellet
a9097df112 Already defined via CalculatedAdjustments 2023-01-16 09:31:15 +01:00
Jean-Baptiste Bellet
7015cb30c3 Calculator 'None' is the default one for both shipping and payment method
+ update specs as well

Update shipping_method.rb
2023-01-16 09:31:15 +01:00
David Cook
702bf1b76e Update mail settings notice
It is confusing how these settings work, hopefully the message makes it clear now.

We could just disable the fields entirely, but it was chosen to allow temporary updates so that instance managers can troubleshoot mail issues (063d44fecc).
2023-01-12 17:40:54 +11:00
Gaetan Craig-Riou
6e76bcac4a Refactor option_value_value_unit_scaled to use to_d instead of calling BigDecimal
As we are now using truncate(2) we don't need to specify the number of significant digits
2023-01-11 15:35:30 +11:00
Gaetan Craig-Riou
91af282ccc Truncate scaled value unit to maximum of two decimals
ie truncate 12.50001234 to 12.5

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

+ related spec
2023-01-11 11:04:32 +11:00
Jean-Baptiste Bellet
8958fe4199 Orders and fulfilment: Sort by lastname + firstname case insensitive 2023-01-06 15:36:12 +01:00
Jean-Baptiste Bellet
2258af9cec Don't display "group by size" if value is actually null or empty
+ add spec
2023-01-06 14:39:39 +01:00
Jean-Baptiste Bellet
a793fc9f99 Create a "None" calculator for shipping and payment methods
Only for payment and shipping methods
2022-12-27 17:49:48 +01:00
263 changed files with 5130 additions and 2450 deletions

View File

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

11
.gitattributes vendored Normal file
View File

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

View File

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

View File

@@ -33,7 +33,7 @@ jobs:
- name: Setup Brakeman
env:
BRAKEMAN_VERSION: '4.10' # SARIF support is provided in Brakeman version 4.10+
BRAKEMAN_VERSION: '5.4.0'
run: |
gem install brakeman --version $BRAKEMAN_VERSION

View File

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

View File

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

View File

@@ -1 +1 @@
14.16.1
14.21.2

View File

@@ -35,7 +35,10 @@ ENV BUNDLE_PATH /bundles
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so
WORKDIR /usr/src/app
COPY .ruby-version .
# trim spaces and line return from .ruby-version file
COPY .ruby-version .ruby-version.raw
RUN cat .ruby-version.raw | tr -d '\r\t ' > .ruby-version
# Install Rbenv & Ruby
RUN git clone --depth 1 https://github.com/rbenv/rbenv.git ${RBENV_ROOT} && \

View File

@@ -11,6 +11,9 @@ Head to our wiki on [Learning Rails](https://github.com/openfoodfoundation/openf
The fastest way to make it work locally is to use Docker, you only need to setup git, see the [Docker setup guide](docker/README.md).
Otherwise, for a local setup you will need:
* Ruby and bundler (check current Ruby version in [.ruby-version](https://github.com/openfoodfoundation/openfoodnetwork/blob/master/.ruby-version) file)
- To manage versions, it's recommended to use [rbenv](https://github.com/rbenv/rbenv) or [RVM](https://rvm.io/)
* Node and yarn (check current Node version in [.node-version](https://github.com/openfoodfoundation/openfoodnetwork/blob/master/.node-version) file)
- [nodevn](https://github.com/nodenv/nodenv) is recommended.
* PostgreSQL database
* Redis (for background jobs)
* Chrome (for testing)
@@ -20,15 +23,13 @@ The following guides will provide OS-specific step-by-step instructions to get t
- [Debian Setup Guide][debian]
- [OSX Setup Guide][osx]
If you are likely to need to manage multiple version of ruby on your local machine, we recommend version managers such as [rbenv](https://github.com/rbenv/rbenv) or [RVM](https://rvm.io/).
For those new to Rails, the following tutorial will help get you up to speed with configuring a [Rails environment](http://guides.rubyonrails.org/getting_started.html).
### Get it
So you have set up your local environment according to the requirements listed above. If you're planning on contributing code to the project (which we [LOVE](CONTRIBUTING.md)), it is a good idea to begin by forking this repo using the `Fork` button in the top-right corner of this screen. You should then be able to use `git clone` to copy your fork onto your local machine:
git clone https://github.com/YOUR_GITHUB_USERNAME_HERE/openfoodnetwork
git clone git@github.com:YOUR_GITHUB_USERNAME_HERE/openfoodnetwork.git
Jump into your new local copy of the Open Food Network:
@@ -36,7 +37,7 @@ Jump into your new local copy of the Open Food Network:
And then add an `upstream` remote that points to the main repo:
git remote add upstream https://github.com/openfoodfoundation/openfoodnetwork
git remote add upstream git@github.com:openfoodfoundation/openfoodnetwork.git
Fetch the latest version of `master` from `upstream` (ie. the main repo):

View File

@@ -17,7 +17,7 @@ gem 'activemerchant', '>= 1.78.0'
gem 'rexml'
gem 'angular-rails-templates', '>= 0.3.0'
gem 'awesome_nested_set'
gem 'ransack', '2.4.2'
gem 'ransack', '~> 2.6.0'
gem 'responders'
gem 'webpacker', '~> 5'
@@ -69,7 +69,7 @@ gem 'pagy', '~> 5.1'
gem 'rswag-api'
gem 'rswag-ui'
gem 'gitlab-omniauth-openid-connect', require: 'omniauth_openid_connect'
gem 'omniauth_openid_connect'
gem 'openid_connect', '~> 1.3'
gem 'omniauth-rails_csrf_protection'
@@ -83,16 +83,15 @@ gem 'actionpack-action_caching'
# AMS is deprecated, we will introduce an alternative at some point
gem "active_model_serializers", "0.8.4"
gem 'activerecord-session_store'
gem 'acts-as-taggable-on', '~> 8.1'
gem 'acts-as-taggable-on'
gem 'angularjs-file-upload-rails', '~> 2.4.1'
gem 'bigdecimal', '3.0.2'
gem 'bootsnap', require: false
gem 'geocoder'
gem 'gmaps4rails'
gem 'mimemagic', '> 0.3.5'
gem 'paper_trail', '~> 12.1.0'
gem 'paper_trail', '~> 12.1'
gem 'rack-rewrite'
gem 'rack-ssl', require: 'rack/ssl'
gem 'roadie-rails'
gem 'hiredis'

View File

@@ -51,42 +51,42 @@ GEM
remote: https://rubygems.org/
specs:
Ascii85 (1.1.0)
actioncable (6.1.7)
actionpack (= 6.1.7)
activesupport (= 6.1.7)
actioncable (6.1.7.2)
actionpack (= 6.1.7.2)
activesupport (= 6.1.7.2)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.1.7)
actionpack (= 6.1.7)
activejob (= 6.1.7)
activerecord (= 6.1.7)
activestorage (= 6.1.7)
activesupport (= 6.1.7)
actionmailbox (6.1.7.2)
actionpack (= 6.1.7.2)
activejob (= 6.1.7.2)
activerecord (= 6.1.7.2)
activestorage (= 6.1.7.2)
activesupport (= 6.1.7.2)
mail (>= 2.7.1)
actionmailer (6.1.7)
actionpack (= 6.1.7)
actionview (= 6.1.7)
activejob (= 6.1.7)
activesupport (= 6.1.7)
actionmailer (6.1.7.2)
actionpack (= 6.1.7.2)
actionview (= 6.1.7.2)
activejob (= 6.1.7.2)
activesupport (= 6.1.7.2)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (6.1.7)
actionview (= 6.1.7)
activesupport (= 6.1.7)
actionpack (6.1.7.2)
actionview (= 6.1.7.2)
activesupport (= 6.1.7.2)
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.7)
actionpack (= 6.1.7)
activerecord (= 6.1.7)
activestorage (= 6.1.7)
activesupport (= 6.1.7)
actiontext (6.1.7.2)
actionpack (= 6.1.7.2)
activerecord (= 6.1.7.2)
activestorage (= 6.1.7.2)
activesupport (= 6.1.7.2)
nokogiri (>= 1.8.5)
actionview (6.1.7)
activesupport (= 6.1.7)
actionview (6.1.7.2)
activesupport (= 6.1.7.2)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@@ -98,19 +98,19 @@ GEM
activemodel (>= 5.2.0)
activestorage (>= 5.2.0)
activesupport (>= 5.2.0)
activejob (6.1.7)
activesupport (= 6.1.7)
activejob (6.1.7.2)
activesupport (= 6.1.7.2)
globalid (>= 0.3.6)
activemerchant (1.123.0)
activesupport (>= 4.2)
builder (>= 2.1.2, < 4.0.0)
i18n (>= 0.6.9)
nokogiri (~> 1.4)
activemodel (6.1.7)
activesupport (= 6.1.7)
activerecord (6.1.7)
activemodel (= 6.1.7)
activesupport (= 6.1.7)
activemodel (6.1.7.2)
activesupport (= 6.1.7.2)
activerecord (6.1.7.2)
activemodel (= 6.1.7.2)
activesupport (= 6.1.7.2)
activerecord-import (1.4.1)
activerecord (>= 4.2)
activerecord-postgresql-adapter (0.0.1)
@@ -121,21 +121,21 @@ GEM
multi_json (~> 1.11, >= 1.11.2)
rack (>= 2.0.8, < 3)
railties (>= 5.2.4.1)
activestorage (6.1.7)
actionpack (= 6.1.7)
activejob (= 6.1.7)
activerecord (= 6.1.7)
activesupport (= 6.1.7)
activestorage (6.1.7.2)
actionpack (= 6.1.7.2)
activejob (= 6.1.7.2)
activerecord (= 6.1.7.2)
activesupport (= 6.1.7.2)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (6.1.7)
activesupport (6.1.7.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
acts-as-taggable-on (8.1.0)
activerecord (>= 5.0, < 6.2)
acts-as-taggable-on (9.0.1)
activerecord (>= 6.0, < 7.1)
acts_as_list (1.0.4)
activerecord (>= 4.2)
addressable (2.8.1)
@@ -158,16 +158,16 @@ GEM
awesome_nested_set (3.5.0)
activerecord (>= 4.0.0, < 7.1)
aws-eventstream (1.2.0)
aws-partitions (1.669.0)
aws-sdk-core (3.168.2)
aws-partitions (1.711.0)
aws-sdk-core (3.170.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.60.0)
aws-sdk-kms (1.62.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.117.2)
aws-sdk-s3 (1.119.1)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
@@ -177,9 +177,9 @@ GEM
bigdecimal (3.0.2)
bindata (2.4.12)
bindex (0.8.1)
bootsnap (1.15.0)
bootsnap (1.16.0)
msgpack (~> 1.2)
bugsnag (6.25.1)
bugsnag (6.25.2)
concurrent-ruby (~> 1.0)
builder (3.2.4)
bullet (7.0.7)
@@ -221,7 +221,7 @@ GEM
combine_pdf (1.0.22)
matrix
ruby-rc4 (>= 0.1.5)
concurrent-ruby (1.1.10)
concurrent-ruby (1.2.0)
connection_pool (2.3.0)
crack (0.4.5)
rexml
@@ -237,10 +237,13 @@ GEM
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
ddtrace (0.54.1)
debase-ruby_core_source (= 0.10.12)
date (3.3.3)
ddtrace (1.9.0)
debase-ruby_core_source (>= 0.10.16, <= 3.2.0)
libdatadog (~> 1.0.1.1.0)
libddwaf (~> 1.5.1.0.0)
msgpack
debase-ruby_core_source (0.10.12)
debase-ruby_core_source (3.2.0)
debug (1.7.1)
irb (>= 1.5.0)
reline (>= 0.3.1)
@@ -264,7 +267,7 @@ GEM
dotenv-rails (2.8.1)
dotenv (= 2.8.1)
railties (>= 3.2)
erubi (1.11.0)
erubi (1.12.0)
et-orbi (1.2.7)
tzinfo
excon (0.81.0)
@@ -313,18 +316,14 @@ GEM
nokogiri (>= 1.5.11, < 2.0.0)
foreman (0.87.2)
formatador (0.2.5)
fugit (1.7.1)
fugit (1.8.1)
et-orbi (~> 1, >= 1.2.7)
raabro (~> 1.4)
fuubar (2.5.1)
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
geocoder (1.8.1)
gitlab-omniauth-openid-connect (0.10.0)
addressable (~> 2.7)
omniauth (>= 1.9, < 3)
openid_connect (~> 1.2)
globalid (1.0.0)
globalid (1.1.0)
activesupport (>= 5.0)
gmaps4rails (2.1.2)
good_migrations (0.2.1)
@@ -374,13 +373,16 @@ GEM
rspec (>= 2.0, < 4.0)
jsonapi-serializer (2.2.0)
activesupport (>= 4.2)
jwt (2.6.0)
jwt (2.7.0)
knapsack_pro (3.7.0)
rake
launchy (2.5.0)
addressable (~> 2.7)
letter_opener (1.8.1)
launchy (>= 2.2, < 3)
libdatadog (1.0.1.1.0)
libddwaf (1.5.1.0.0)
ffi (~> 1.0)
libv8-node (16.10.0.0)
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
@@ -388,8 +390,11 @@ GEM
loofah (2.19.1)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
net-pop
net-smtp
marcel (1.0.2)
matrix (0.4.2)
method_source (1.0.0)
@@ -412,12 +417,17 @@ GEM
msgpack (1.6.0)
multi_json (1.15.0)
multi_xml (0.6.0)
net-protocol (0.1.3)
net-imap (0.3.4)
date
net-protocol
net-pop (0.1.2)
net-protocol
net-protocol (0.2.1)
timeout
net-smtp (0.3.2)
net-smtp (0.3.3)
net-protocol
nio4r (2.5.8)
nokogiri (1.13.10)
nokogiri (1.14.1)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
oauth2 (1.4.11)
@@ -433,6 +443,9 @@ GEM
omniauth-rails_csrf_protection (1.0.1)
actionpack (>= 4.2)
omniauth (~> 2.0)
omniauth_openid_connect (0.6.0)
omniauth (>= 1.9, < 3)
openid_connect (~> 1.1)
openid_connect (1.4.2)
activemodel
attr_required (>= 1.0.0)
@@ -447,7 +460,7 @@ GEM
orm_adapter (0.5.0)
pagy (5.10.1)
activesupport
paper_trail (12.1.0)
paper_trail (12.3.0)
activerecord (>= 5.2)
request_store (~> 1.1)
parallel (1.22.1)
@@ -472,11 +485,11 @@ GEM
coderay (~> 1.1)
method_source (~> 1.0)
public_suffix (5.0.0)
puma (6.0.2)
puma (6.1.0)
nio4r (~> 2.0)
raabro (1.4.0)
racc (1.6.1)
rack (2.2.4)
racc (1.6.2)
rack (2.2.6.2)
rack-mini-profiler (2.3.4)
rack (>= 1.2.0)
rack-oauth2 (1.21.3)
@@ -487,28 +500,26 @@ GEM
rack (>= 2.1.0)
rack-protection (2.1.0)
rack
rack-proxy (0.7.0)
rack-proxy (0.7.6)
rack
rack-rewrite (1.5.1)
rack-ssl (1.4.1)
rack
rack-test (2.0.2)
rack (>= 1.3)
rack-timeout (0.6.3)
rails (6.1.7)
actioncable (= 6.1.7)
actionmailbox (= 6.1.7)
actionmailer (= 6.1.7)
actionpack (= 6.1.7)
actiontext (= 6.1.7)
actionview (= 6.1.7)
activejob (= 6.1.7)
activemodel (= 6.1.7)
activerecord (= 6.1.7)
activestorage (= 6.1.7)
activesupport (= 6.1.7)
rails (6.1.7.2)
actioncable (= 6.1.7.2)
actionmailbox (= 6.1.7.2)
actionmailer (= 6.1.7.2)
actionpack (= 6.1.7.2)
actiontext (= 6.1.7.2)
actionview (= 6.1.7.2)
activejob (= 6.1.7.2)
activemodel (= 6.1.7.2)
activerecord (= 6.1.7.2)
activestorage (= 6.1.7.2)
activesupport (= 6.1.7.2)
bundler (>= 1.15.0)
railties (= 6.1.7)
railties (= 6.1.7.2)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
@@ -522,37 +533,39 @@ GEM
activesupport (>= 4.2)
choice (~> 0.2.0)
ruby-graphviz (~> 1.2)
rails-html-sanitizer (1.4.4)
rails-html-sanitizer (1.5.0)
loofah (~> 2.19, >= 2.19.1)
rails-i18n (7.0.6)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
rails_safe_tasks (1.0.0)
railties (6.1.7)
actionpack (= 6.1.7)
activesupport (= 6.1.7)
railties (6.1.7.2)
actionpack (= 6.1.7.2)
activesupport (= 6.1.7.2)
method_source
rake (>= 12.2)
thor (~> 1.0)
rainbow (3.1.1)
rake (13.0.6)
ransack (2.4.2)
activerecord (>= 5.2.4)
activesupport (>= 5.2.4)
ransack (2.6.0)
activerecord (>= 6.0.4)
activesupport (>= 6.0.4)
i18n
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
redcarpet (3.5.1)
redis (4.8.0)
regexp_parser (2.6.1)
redcarpet (3.6.0)
redis (4.8.1)
redis-client (0.12.1)
connection_pool
regexp_parser (2.7.0)
reline (0.3.2)
io-console (~> 0.5)
request_store (1.5.0)
request_store (1.5.1)
rack (>= 1.4)
responders (3.0.1)
actionpack (>= 5.0)
railties (>= 5.0)
responders (3.1.0)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.5)
roadie (5.0.1)
css_parser (~> 1.4)
@@ -566,29 +579,29 @@ GEM
roo (2.9.0)
nokogiri (~> 1)
rubyzip (>= 1.3.0, < 3.0.0)
rspec (3.10.0)
rspec-core (~> 3.10.0)
rspec-expectations (~> 3.10.0)
rspec-mocks (~> 3.10.0)
rspec-core (3.10.2)
rspec-support (~> 3.10.0)
rspec-expectations (3.10.2)
rspec (3.12.0)
rspec-core (~> 3.12.0)
rspec-expectations (~> 3.12.0)
rspec-mocks (~> 3.12.0)
rspec-core (3.12.1)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.2)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-rails (5.1.2)
actionpack (>= 5.2)
activesupport (>= 5.2)
railties (>= 5.2)
rspec-core (~> 3.10)
rspec-expectations (~> 3.10)
rspec-mocks (~> 3.10)
rspec-support (~> 3.10)
rspec-support (~> 3.12.0)
rspec-rails (6.0.1)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
rspec-core (~> 3.11)
rspec-expectations (~> 3.11)
rspec-mocks (~> 3.11)
rspec-support (~> 3.11)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.10.3)
rspec-support (3.12.0)
rswag-api (2.8.0)
railties (>= 3.1, < 7.1)
rswag-specs (2.8.0)
@@ -599,7 +612,7 @@ GEM
rswag-ui (2.8.0)
actionpack (>= 3.1, < 7.1)
railties (>= 3.1, < 7.1)
rubocop (1.43.0)
rubocop (1.45.1)
json (~> 2.3)
parallel (~> 1.10)
parser (>= 3.2.0.0)
@@ -636,14 +649,14 @@ GEM
semantic_range (3.0.0)
shoulda-matchers (5.3.0)
activesupport (>= 5.2.0)
sidekiq (6.5.8)
connection_pool (>= 2.2.5, < 3)
rack (~> 2.0)
redis (>= 4.5.0, < 5)
sidekiq-scheduler (4.0.3)
redis (>= 4.2.0)
sidekiq (7.0.4)
concurrent-ruby (< 2)
connection_pool (>= 2.3.0)
rack (>= 2.2.4)
redis-client (>= 0.11.0)
sidekiq-scheduler (5.0.1)
rufus-scheduler (~> 3.2)
sidekiq (>= 4, < 7)
sidekiq (>= 4, < 8)
tilt (>= 1.4.0)
simplecov (0.22.0)
docile (~> 1.1)
@@ -694,13 +707,13 @@ GEM
thread-local (1.1.0)
tilt (2.0.11)
timecop (0.9.6)
timeout (0.3.0)
timeout (0.3.1)
ttfunk (1.7.0)
tzinfo (2.0.5)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (2.4.2)
uniform_notifier (1.16.0)
valid_email2 (4.0.4)
valid_email2 (4.0.5)
activemodel (>= 3.2)
mail (~> 2.5)
validate_email (0.1.6)
@@ -732,7 +745,7 @@ GEM
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webpacker (5.4.3)
webpacker (5.4.4)
activesupport (>= 5.2)
rack-proxy (>= 0.6.1)
railties (>= 5.2)
@@ -749,7 +762,7 @@ GEM
xml-simple (1.1.8)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.6)
zeitwerk (2.6.7)
PLATFORMS
ruby
@@ -762,7 +775,7 @@ DEPENDENCIES
activerecord-import
activerecord-postgresql-adapter
activerecord-session_store
acts-as-taggable-on (~> 8.1)
acts-as-taggable-on
acts_as_list (= 1.0.4)
angular-rails-templates (>= 0.3.0)
angular_rails_csrf
@@ -803,7 +816,6 @@ DEPENDENCIES
foreman
fuubar (~> 2.5.1)
geocoder
gitlab-omniauth-openid-connect
gmaps4rails
good_migrations
haml
@@ -830,10 +842,11 @@ DEPENDENCIES
oauth2 (~> 1.4.7)
ofn-qz!
omniauth-rails_csrf_protection
omniauth_openid_connect
openid_connect (~> 1.3)
order_management!
pagy (~> 5.1)
paper_trail (~> 12.1.0)
paper_trail (~> 12.1)
paranoia (~> 2.4)
paypal-sdk-merchant (= 1.117.2)
pdf-reader
@@ -842,14 +855,13 @@ DEPENDENCIES
puma
rack-mini-profiler (< 3.0.0)
rack-rewrite
rack-ssl
rack-timeout
rails (>= 6.1.4)
rails-controller-testing
rails-erd
rails-i18n
rails_safe_tasks (~> 1.0)
ransack (= 2.4.2)
ransack (~> 2.6.0)
redcarpet
redis (>= 4.0)
responders

View File

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

View File

@@ -9,41 +9,41 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.sharedResource = false
$scope.columns = Columns.columns
$scope.sorting = SortOptions
$scope.pagination = LineItems.pagination
$scope.per_page_options = [
{id: 15, name: t('js.admin.orders.index.per_page', results: 15)},
{id: 50, name: t('js.admin.orders.index.per_page', results: 50)},
{id: 100, name: t('js.admin.orders.index.per_page', results: 100)}
]
$scope.page = 1
$scope.per_page = $scope.per_page_options[0].id
$scope.confirmRefresh = ->
LineItems.allSaved() || confirm(t("unsaved_changes_warning"))
$scope.initStartAndEnDate = ->
$scope.startDate = moment().startOf('day').subtract(7, 'days').format('YYYY-MM-DD')
$scope.endDate = moment().startOf('day').format('YYYY-MM-DD')
$scope.resetFilters = ->
$scope.distributorFilter = ''
$scope.supplierFilter = ''
$scope.orderCycleFilter = ''
$scope.quickSearch = ''
$scope.initStartAndEnDate()
event = new CustomEvent('flatpickr:change', {
detail: {
startDate: $scope.startDate,
endDate: $scope.endDate
}
})
$scope.startDate = undefined
$scope.endDate = undefined
event = new CustomEvent('flatpickr:clear')
window.dispatchEvent(event)
$scope.resetSelectFilters = ->
$scope.resetFilters()
$scope.refreshData()
$scope.fetchResults = ->
# creates indirection in order to factorize the code between orders and bulk orders
# used in app/views/admin/shared/_angular_per_page_controls.html.haml
$scope.refreshData()
$scope.refreshData = ->
$scope.formattedStartDate = moment($scope.startDate).format()
$scope.formattedEndDate = moment($scope.endDate).add(1,'day').format()
return unless moment($scope.formattedStartDate).isValid() and moment($scope.formattedEndDate).isValid()
return "cancel" unless $scope.confirmRefresh()
$scope.loadOrders()
$scope.loadLineItems()
unless $scope.initialized
@@ -51,33 +51,14 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.dereferenceLoadedData()
$scope.setOrderCycleDateRange = ->
start_date = OrderCycles.byID[$scope.orderCycleFilter].orders_open_at
end_date = OrderCycles.byID[$scope.orderCycleFilter].orders_close_at
format = "YYYY-MM-DD HH:mm:ss Z"
$scope.startDate = moment(start_date, format).format('YYYY-MM-DD')
$scope.endDate = moment(end_date, format).startOf('day').format('YYYY-MM-DD')
# throw a flatpickr:change event to change the date back in the datepicker
event = new CustomEvent('flatpickr:change', {
detail: {
startDate: $scope.startDate,
endDate: $scope.endDate
}
})
window.dispatchEvent(event)
$scope.loadOrders = ->
RequestMonitor.load $scope.orders = Orders.index(
"q[state_not_eq]": "canceled",
"q[shipment_state_not_eq]": "shipped",
"q[completed_at_not_null]": "true",
"q[distributor_id_eq]": $scope.distributorFilter,
"q[order_cycle_id_eq]": $scope.orderCycleFilter,
"q[completed_at_gteq]": $scope.formattedStartDate,
"q[completed_at_lt]": $scope.formattedEndDate
"q[id_in][]": $scope.line_items.map((line_item) -> line_item.order.id)
)
$scope.loadLineItems = ->
[formattedStartDate, formattedEndDate] = $scope.formatDates($scope.startDate, $scope.endDate)
RequestMonitor.load LineItems.index(
"q[order_state_not_eq]": "canceled",
"q[order_shipment_state_not_eq]": "shipped",
@@ -85,23 +66,32 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
"q[order_distributor_id_eq]": $scope.distributorFilter,
"q[variant_product_supplier_id_eq]": $scope.supplierFilter,
"q[order_order_cycle_id_eq]": $scope.orderCycleFilter,
"q[order_completed_at_gteq]": $scope.formattedStartDate,
"q[order_completed_at_lt]": $scope.formattedEndDate
"q[order_completed_at_gteq]": if formattedStartDate then formattedStartDate else undefined,
"q[order_completed_at_lt]": if formattedEndDate then formattedEndDate else undefined,
"page": $scope.page,
"per_page": $scope.per_page
)
$scope.formatDates = (startDate, endDate) ->
formattedStartDate = moment(startDate).format('YYYY-MM-DD') if startDate
formattedEndDate = moment(endDate).add(1,'day').format('YYYY-MM-DD') if endDate
return [formattedStartDate, formattedEndDate]
$scope.loadAssociatedData = ->
RequestMonitor.load $scope.distributors = Enterprises.index(action: "visible", ams_prefix: "basic", "q[sells_in][]": ["own", "any"])
RequestMonitor.load $scope.orderCycles = OrderCycles.index(ams_prefix: "basic", as: "distributor", "q[orders_close_at_gt]": "#{moment().subtract(90,'days').format()}")
RequestMonitor.load $scope.suppliers = Enterprises.index(action: "visible", ams_prefix: "basic", "q[is_primary_producer_eq]": "true")
$scope.dereferenceLoadedData = ->
RequestMonitor.load $q.all([$scope.orders.$promise, $scope.distributors.$promise, $scope.orderCycles.$promise, $scope.suppliers.$promise, $scope.line_items.$promise]).then ->
Dereferencer.dereferenceAttr $scope.orders, "distributor", Enterprises.byID
Dereferencer.dereferenceAttr $scope.orders, "order_cycle", OrderCycles.byID
RequestMonitor.load $q.all([$scope.distributors.$promise, $scope.orderCycles.$promise, $scope.suppliers.$promise, $scope.line_items.$promise]).then ->
Dereferencer.dereferenceAttr $scope.line_items, "supplier", Enterprises.byID
Dereferencer.dereferenceAttr $scope.line_items, "order", Orders.byID
$scope.bulk_order_form.$setPristine()
StatusMessage.clear()
$scope.loadOrders()
RequestMonitor.load $q.all([$scope.orders.$promise]).then ->
Dereferencer.dereferenceAttr $scope.line_items, "order", Orders.byID
Dereferencer.dereferenceAttr $scope.orders, "distributor", Enterprises.byID
Dereferencer.dereferenceAttr $scope.orders, "order_cycle", OrderCycles.byID
$scope.bulk_order_form.$setPristine()
StatusMessage.clear()
unless $scope.initialized
$scope.initialized = true
@@ -219,7 +209,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
$scope.getGroupBySizeFormattedValueWithUnitName = (value, unitsProduct, unitsVariant) ->
scale = $scope.getScale(unitsProduct, unitsVariant)
if scale
if scale && value
value = value / scale if scale != 28.35 && scale != 1 && scale != 453.6 # divide by scale if not smallest unit
$scope.getFormattedValueWithUnitName(value, unitsProduct, unitsVariant, scale)
else
@@ -263,4 +253,8 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout,
lineItem.final_weight_volume = LineItems.pristineByID[lineItem.id].final_weight_volume * lineItem.quantity / LineItems.pristineByID[lineItem.id].quantity
$scope.weightAdjustedPrice(lineItem)
$scope.changePage = (newPage) ->
$scope.page = newPage
$scope.refreshData()
$scope.resetSelectFilters()

View File

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

View File

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

View File

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

View File

@@ -1,5 +0,0 @@
$( document ).ready(function() {
$("#closeie").click(function() {
$("#ie-warning").hide();
});
})

View File

@@ -1,18 +1,26 @@
# frozen_string_literal: true
class ProductComponent < ViewComponentReflex::Component
DATETIME_FORMAT = '%F %T'
def initialize(product:, columns:)
super
@product = product
@image = @product.images[0] if product.images.any?
@columns = columns.map { |c|
@columns = columns.map do |c|
{
id: c[:value],
value: column_value(c[:value])
}
}
end
end
# This must be define when using ProductComponent.with_collection()
def collection_key
@product.id
end
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength
def column_value(column)
case column
when 'name'
@@ -25,6 +33,27 @@ class ProductComponent < ViewComponentReflex::Component
@product.supplier.name
when 'category'
@product.taxons.map(&:name).join(', ')
when 'sku'
@product.sku
when 'on_hand'
@product.on_hand || 0
when 'on_demand'
@product.on_demand
when 'tax_category'
@product.tax_category.name
when 'inherits_properties'
@product.inherits_properties
when 'available_on'
format_date(@product.available_on)
when 'import_date'
format_date(@product.import_date)
end
end
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength
private
def format_date(date)
date&.strftime(DATETIME_FORMAT) || ''
end
end

View File

@@ -3,27 +3,37 @@
class ProductsTableComponent < ViewComponentReflex::Component
include Pagy::Backend
SORTABLE_COLUMNS = ["name"].freeze
SELECTABLE_COMUMNS = [{ label: I18n.t("admin.products_page.columns_selector.price"),
value: "price" },
{ label: I18n.t("admin.products_page.columns_selector.unit"),
value: "unit" },
{ label: I18n.t("admin.products_page.columns_selector.producer"),
value: "producer" },
{ label: I18n.t("admin.products_page.columns_selector.category"),
value: "category" }].sort { |a, b|
SORTABLE_COLUMNS = ['name', 'import_date'].freeze
SELECTABLE_COLUMNS = [
{ label: I18n.t("admin.products_page.columns_selector.price"), value: "price" },
{ label: I18n.t("admin.products_page.columns_selector.unit"), value: "unit" },
{ label: I18n.t("admin.products_page.columns_selector.producer"), value: "producer" },
{ label: I18n.t("admin.products_page.columns_selector.category"), value: "category" },
{ label: I18n.t("admin.products_page.columns_selector.sku"), value: "sku" },
{ label: I18n.t("admin.products_page.columns_selector.on_hand"), value: "on_hand" },
{ label: I18n.t("admin.products_page.columns_selector.on_demand"), value: "on_demand" },
{ label: I18n.t("admin.products_page.columns_selector.tax_category"), value: "tax_category" },
{
label: I18n.t("admin.products_page.columns_selector.inherits_properties"),
value: "inherits_properties"
},
{ label: I18n.t("admin.products_page.columns_selector.available_on"), value: "available_on" },
{ label: I18n.t("admin.products_page.columns_selector.import_date"), value: "import_date" }
].sort do |a, b|
a[:label] <=> b[:label]
}.freeze
end.freeze
PER_PAGE_VALUE = [10, 25, 50, 100].freeze
PER_PAGE = PER_PAGE_VALUE.map { |value| { label: value, value: value } }
NAME_COLUMN = { label: I18n.t("admin.products_page.columns.name"), value: "name",
sortable: true }.freeze
NAME_COLUMN = {
label: I18n.t("admin.products_page.columns.name"), value: "name", sortable: true
}.freeze
def initialize(user:)
super
@user = user
@selectable_columns = SELECTABLE_COMUMNS
@columns_selected = ["price", "unit"]
@selectable_columns = SELECTABLE_COLUMNS
@columns_selected = ['unit', 'price', 'on_hand', 'category', 'import_date']
@per_page = PER_PAGE
@per_page_selected = [10]
@categories = [{ label: "All", value: "all" }] +
@@ -40,16 +50,20 @@ class ProductsTableComponent < ViewComponentReflex::Component
@search_term = ""
end
# any change on a "reflex_data_attributes" (defined in the template) will trigger a re render
def before_render
fetch_products
refresh_columns
end
# Element refers to the component the data is set on
def search_term
# Element is SearchInputComponent
@search_term = element.dataset['value']
end
def toggle_column
# Element is SelectorComponent
column = element.dataset['value']
@columns_selected = if @columns_selected.include?(column)
@columns_selected - [column]
@@ -59,26 +73,33 @@ class ProductsTableComponent < ViewComponentReflex::Component
end
def click_sort
@sort = { column: element.dataset['sort-value'],
direction: element.dataset['sort-direction'] == "asc" ? "desc" : "asc" }
# Element is TableHeaderComponent
@sort = {
column: element.dataset['sort-value'],
direction: element.dataset['sort-direction'] == "asc" ? "desc" : "asc"
}
end
def toggle_per_page
# Element is SelectorComponent
selected = element.dataset['value'].to_i
@per_page_selected = [selected] if PER_PAGE_VALUE.include?(selected)
end
def toggle_category
# Element is SelectorWithFilterComponent
category_clicked = element.dataset['value']
@categories_selected = toggle_selector_with_filter(category_clicked, @categories_selected)
end
def toggle_producer
# Element is SelectorWithFilterComponent
producer_clicked = element.dataset['value']
@producers_selected = toggle_selector_with_filter(producer_clicked, @producers_selected)
end
def change_page
# Element is PaginationComponent
page = element.dataset['page'].to_i
@page = page if page > 0
end
@@ -86,10 +107,13 @@ class ProductsTableComponent < ViewComponentReflex::Component
private
def refresh_columns
@columns = @columns_selected.map { |column|
{ label: I18n.t("admin.products_page.columns.#{column}"), value: column,
sortable: SORTABLE_COLUMNS.include?(column) }
}.sort! { |a, b| a[:label] <=> b[:label] }
@columns = @columns_selected.map do |column|
{
label: I18n.t("admin.products_page.columns.#{column}"),
value: column,
sortable: SORTABLE_COLUMNS.include?(column)
}
end.sort! { |a, b| a[:label] <=> b[:label] }
@columns.unshift(NAME_COLUMN)
end
@@ -145,8 +169,13 @@ class ProductsTableComponent < ViewComponentReflex::Component
def product_query_includes
[
master: [:images],
variants: [:default_price, :stock_locations, :stock_items, :variant_overrides,
{ option_values: :option_type }]
variants: [
:default_price,
:stock_locations,
:stock_items,
:variant_overrides,
{ option_values: :option_type }
]
]
end
end

View File

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

View File

@@ -61,7 +61,7 @@ module Api
def search_customers
customers = visible_customers.includes(:bill_address, :ship_address)
customers = customers.where(enterprise_id: params[:enterprise_id]) if params[:enterprise_id]
customers.ransack(params[:q]).result
customers.ransack(params[:q]).result.order(:id)
end
def visible_customers

View File

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

View File

@@ -36,11 +36,7 @@ class SplitCheckoutController < ::BaseController
advance_order_state
redirect_to_step
else
flash.now[:error] ||= I18n.t('split_checkout.errors.global')
render status: :unprocessable_entity, operations: cable_car.
replace("#checkout", partial("split_checkout/checkout")).
replace("#flashes", partial("shared/flashes", locals: { flashes: flash }))
render_error
end
rescue Spree::Core::GatewayError => e
flash[:error] = I18n.t(:spree_gateway_error_flash_for_checkout, error: e.message)
@@ -50,6 +46,61 @@ class SplitCheckoutController < ::BaseController
private
def render_error
flash.now[:error] ||= I18n.t(
'split_checkout.errors.saving_failed',
messages: order_error_messages
)
render status: :unprocessable_entity, operations: cable_car.
replace("#checkout", partial("split_checkout/checkout")).
replace("#flashes", partial("shared/flashes", locals: { flashes: flash }))
end
def order_error_messages
# Remove ship_address.* errors if no shipping method is not selected
remove_ship_address_errors if no_ship_address_needed?
# Reorder errors to make sure the most important ones are shown first
# and finally, return the error messages to sentence
reorder_errors.map(&:full_message).to_sentence
end
def no_ship_address_needed?
@order.errors[:shipping_method].present? || params[:ship_address_same_as_billing] == "1"
end
def remove_ship_address_errors
@order.errors.delete("ship_address.firstname")
@order.errors.delete("ship_address.address1")
@order.errors.delete("ship_address.city")
@order.errors.delete("ship_address.phone")
@order.errors.delete("ship_address.lastname")
@order.errors.delete("ship_address.zipcode")
end
def reorder_errors
@order.errors.sort_by do |e|
case e.attribute
when /email/i then 0
when /phone/i then 1
when /bill_address/i then 2 + bill_address_error_order(e)
else 20
end
end
end
def bill_address_error_order(error)
case error.attribute
when /firstname/i then 0
when /lastname/i then 1
when /address1/i then 2
when /city/i then 3
when /zipcode/i then 4
else 5
end
end
def flash_error_when_no_shipping_method_available
flash[:error] = I18n.t('split_checkout.errors.no_shipping_methods_available')
end

View File

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

View File

@@ -11,6 +11,7 @@ module CheckoutHelper
def checkout_adjustments_for(order, opts = {})
exclude = opts[:exclude] || {}
reject_zero_amount = opts.fetch(:reject_zero_amount, true)
adjustments = order.all_adjustments.eligible.to_a
@@ -32,6 +33,10 @@ module CheckoutHelper
}
end
if reject_zero_amount
adjustments.reject! { |a| a.amount == 0 }
end
adjustments
end

View File

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

View File

@@ -12,6 +12,16 @@ module TaxHelper
end
end
def display_line_items_taxes(line_item, display_zero: true)
if line_item.included_tax.positive?
Spree::Money.new(line_item.included_tax, currency: line_item.currency)
elsif line_item.added_tax.positive?
Spree::Money.new(line_item.added_tax, currency: line_item.currency)
elsif display_zero
Spree::Money.new(0.00, currency: line_item.currency)
end
end
def display_total_with_tax(taxable)
total = taxable.amount + taxable.additional_tax_total
Spree::Money.new(total, currency: taxable.currency)

View File

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

View File

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

View File

@@ -0,0 +1,13 @@
# frozen_string_literal: false
module Calculator
class None < Spree::Calculator
def self.description
I18n.t(:none)
end
def compute(_object = nil)
0
end
end
end

View File

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

View File

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

View File

@@ -33,8 +33,6 @@ module Spree
preference :allow_backorder_shipping, :boolean, default: false
preference :allow_checkout_on_gateway_error, :boolean, default: false
preference :allow_guest_checkout, :boolean, default: true
preference :allow_ssl_in_production, :boolean, default: true
preference :allow_ssl_in_staging, :boolean, default: true
# Replace with the name of a zone if you would like to limit the countries
preference :checkout_zone, :string, default: nil
preference :currency, :string, default: "USD"

View File

@@ -186,6 +186,10 @@ module Spree
adjustments.tax.inclusive.sum(:amount)
end
def added_tax
adjustments.tax.additional.sum(:amount)
end
def tax_rates
product.tax_category&.tax_rates || []
end

View File

@@ -13,7 +13,7 @@ module Spree
include SetUnusedAddressFields
searchable_attributes :number, :state, :shipment_state, :payment_state, :distributor_id,
:order_cycle_id, :email, :total
:order_cycle_id, :email, :total, :customer_id
searchable_associations :shipping_method, :bill_address
searchable_scopes :complete, :incomplete
@@ -665,6 +665,7 @@ module Spree
def after_cancel
shipments.each(&:cancel!)
payments.checkout.each(&:void!)
OrderMailer.cancel_email(id).deliver_later if send_cancellation_email
update(payment_state: updater.update_payment_state)
@@ -672,6 +673,8 @@ module Spree
def after_resume
shipments.each(&:resume!)
payments.void.each(&:resume!)
update(payment_state: updater.update_payment_state)
end

View File

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

View File

@@ -113,7 +113,7 @@ module Spree
end
def init
self.calculator ||= ::Calculator::FlatRate.new(preferred_amount: 0)
self.calculator ||= ::Calculator::None.new
end
def has_distributor?(distributor)

View File

@@ -32,6 +32,8 @@ module Spree
validate :at_least_one_shipping_category
validates :display_on, inclusion: { in: DISPLAY_ON_OPTIONS.values }, allow_nil: true
after_initialize :init
after_save :touch_distributors
scope :managed_by, lambda { |user|
@@ -67,10 +69,6 @@ module Spree
tracking_url.gsub(/:tracking/, tracking) unless tracking.blank? || tracking_url.blank?
end
def self.calculators
spree_calculators.__send__ model_name_without_spree_namespace
end
# Some shipping methods are only meant to be set via backend
def frontend?
display_on != "back_end"
@@ -110,6 +108,10 @@ module Spree
where(display_on: [nil, ""])
end
def init
self.calculator ||= ::Calculator::None.new if new_record?
end
private
def no_active_or_upcoming_order_cycle_distributors_with_only_one_shipping_method?

View File

@@ -15,7 +15,7 @@ class DefaultAddressUpdater
assign_bill_addresses
assign_ship_addresses
customer.save
customer&.save
user&.save
end

View File

@@ -19,8 +19,8 @@ class JobProcessor
exit # rubocop:disable Rails/Exit
end
# Wait for all forked child processes to exit
Process.waitall
# Wait for the forked child process to exit.
Process.waitpid(child)
ensure
# If this Puma thread is interrupted then we need to detach the child
# process to avoid it becoming a zombie.

View File

@@ -4,7 +4,7 @@ module PermittedAttributes
class Calculator
def self.attributes
[
:id, :preferred_currency, :preferred_amount, :preferred_flat_percent,
:id, :preferred_amount, :preferred_flat_percent,
:preferred_minimal_amount, :preferred_normal_amount, :preferred_discount_amount,
:preferred_unit_from_list, :preferred_per_unit, :preferred_first_item,
:preferred_additional_item, :preferred_max_items

View File

@@ -56,7 +56,7 @@ module VariantUnits
def option_value_value_unit_scaled
unit_scale, unit_name = scale_for_unit_value
value = BigDecimal(@variant.unit_value / unit_scale, 6)
value = (@variant.unit_value / unit_scale).to_d.truncate(2)
[value, unit_name]
end

View File

@@ -38,3 +38,5 @@
%tr
%td{colspan: "4"}= t(:none)
= f.submit t(:update)
= render partial: 'admin/shared/pagy_links', locals: { pagy: @pagy }

View File

@@ -1,6 +1,12 @@
.row
= t(:required_fields)
(
%span.required *
)
.row
.three.columns.alpha
= bf.label :company, t(".company_legal_name")
%span.required *
%i.text-big.icon-question-sign{ "data-controller": "help-modal-link", "data-action": "click->help-modal-link#open", "data-help-modal-link-target-value": "business_address_info_modal" }
.eight.columns.omega
= bf.text_field :company, { placeholder: t(".company_placeholder") }
@@ -8,6 +14,7 @@
.row
.three.columns.alpha
= bf.label :address1, t('.address1')
%span.required *
%i.text-big.icon-question-sign{ "data-controller": "help-modal-link", "data-action": "click->help-modal-link#open", "data-help-modal-link-target-value": "business_address_info_modal" }
.eight.columns.omega
= bf.text_field :address1, { placeholder: t(".address1_placeholder") }
@@ -19,8 +26,10 @@
.row
.three.columns.alpha
= bf.label :city, t(:city)
%span.required *
\/
= bf.label :zipcode, t(:postcode)
%span.required *
.four.columns
= bf.text_field :city, { placeholder: t(:city_placeholder) }
.four.columns.omega
@@ -28,8 +37,10 @@
.row{"data-controller": "dependent-select", "data-dependent-select-options-value": countries_with_states }
.three.columns.alpha
= bf.label :country_id, t(:country)
%span.required *
\/
= bf.label :state_id, t(:state)
%span.required *
.four.columns
= bf.select :country_id, options_for_select(available_countries.map { |c| [c.name, c.id] }, @enterprise.business_address.country_id), {}, { "data-controller": "tom-select", "data-dependent-select-target": "source", "data-action": "dependent-select#handleSelectChange", class: "primary" }
.four.columns.omega
@@ -39,6 +50,7 @@
.row
.three.columns.alpha
= bf.label :phone, t(".legal_phone_number")
%span.required *
%i.text-big.icon-question-sign{ "data-controller": "help-modal-link", "data-action": "click->help-modal-link#open", "data-help-modal-link-target-value": "business_address_info_modal" }
.eight.columns.omega
= bf.text_field :phone, { placeholder: t(".phone_placeholder") }

View File

@@ -10,7 +10,7 @@
%td.tags.panel-toggle.text-center{ name: "tags", ng: { if: 'enterprises[exchange.enterprise_id].managed || order_cycle.viewing_as_coordinator' } }
{{ exchange.tags.length }}
%td.collection-details
= text_field_tag 'order_cycle_outgoing_exchange_{{ $index }}_pickup_time', '', 'ng-init' => 'setPickupTimeFieldDirty($index)', 'id' => 'order_cycle_outgoing_exchange_{{ $index }}_pickup_time', 'required' => 'required', 'placeholder' => t('.pickup_time_placeholder'), 'ng-model' => 'exchange.pickup_time', 'ng-disabled' => '!enterprises[exchange.enterprise_id].managed && !order_cycle.viewing_as_coordinator', 'maxlength' => 35
= text_field_tag 'order_cycle_outgoing_exchange_{{ $index }}_pickup_time', '', 'ng-init' => 'setPickupTimeFieldDirty($index, exchange.pickup_time)', 'id' => 'order_cycle_outgoing_exchange_{{ $index }}_pickup_time', 'required' => 'required', 'placeholder' => t('.pickup_time_placeholder'), 'ng-model' => 'exchange.pickup_time', 'ng-disabled' => '!enterprises[exchange.enterprise_id].managed && !order_cycle.viewing_as_coordinator', 'maxlength' => 35
%span.icon-question-sign{'ofn-with-tip' => t('.pickup_time_tip')}
%br/
= text_field_tag 'order_cycle_outgoing_exchange_{{ $index }}_pickup_instructions', '', 'id' => 'order_cycle_outgoing_exchange_{{ $index }}_pickup_instructions', 'placeholder' => t('.pickup_instructions_placeholder'), 'ng-model' => 'exchange.pickup_instructions', 'ng-disabled' => '!enterprises[exchange.enterprise_id].managed && !order_cycle.viewing_as_coordinator'

View File

@@ -3,8 +3,7 @@
- content_for :page_title do
= t :edit_order_cycle
= form_for [main_app, :admin, @order_cycle], html: { class: "order_cycle" } do |f|
= form_for [main_app, :admin, @order_cycle], html: { class: "order_cycle" , data: { controller: 'unsaved-changes', action: 'beforeunload@window->unsaved-changes#leavingPage', 'unsaved-changes-changed': "false" } } do |f|
= render 'wizard_progress'
%fieldset.no-border-bottom

View File

@@ -0,0 +1,13 @@
.row
.alpha.two.columns= label_tag nil, t(:report_producers)
.omega.fourteen.columns= select_tag(:supplier_id_in, options_from_collection_for_select(@data.orders_suppliers, :id, :name, params[:supplier_id_in]), {class: "select2 fullwidth", multiple: true})
.row
.alpha.two.columns= label_tag nil, t(:report_customers_cycle)
.omega.fourteen.columns
= f.select(:order_cycle_id_in, report_order_cycle_options(@data.order_cycles), {selected: params.dig(:q, :order_cycle_id_in)}, {class: "select2 fullwidth", multiple: true})
.row
.alpha.two.columns= label_tag nil, t(:report_customers)
.omega.fourteen.columns
= f.select(:customer_id_in, customer_email_options(@data.order_customers), {selected: params.dig(:q, :customer_id_in)}, {class: "select2 fullwidth", multiple: true})

View File

@@ -5,6 +5,8 @@
%fieldset.no-border-bottom.print-hidden
%legend{ align: 'center'}= t(:report_filters)
= render partial: "admin/reports/filters/#{@report_type}", locals: { f: f }
- if @report_subtype && lookup_context.exists?(@report_subtype, "admin/reports/filters/", true)
= render partial: "admin/reports/filters/#{@report_subtype}", locals: { f: f }
%fieldset.print-hidden
%legend{ align: 'center'}= t(:report_render_options)

View File

@@ -0,0 +1,7 @@
- position ||= ""
.per-page{'ng-show' => "!RequestMonitor.loading && #{model}.length > 0", class: ("right" if position == "right") }
%input.per-page-select.ofn-select2{type: 'number', data: 'per_page_options', 'min-search' => 999, 'ng-model' => 'per_page', 'ng-change' => 'fetchResults()'}
%span.per-page-feedback
{{ "spree.admin.#{model}.index.results_found" | t:{number: pagination.results} }}
{{ 'spree.admin.#{model}.index.viewing' | t:{start: ((pagination.page -1) * pagination.per_page) +1, end: ((pagination.page -1) * pagination.per_page) + #{model}.length} }}

View File

@@ -9,7 +9,7 @@
= t :checkout_cart_total
%td.cart-total.text-right= display_checkout_subtotal(@order)
- checkout_adjustments_for(current_order, exclude: [:shipping, :payment, :line_item]).reject{ |a| a.amount == 0 }.each do |adjustment|
- checkout_adjustments_for(current_order, exclude: [:shipping, :payment, :line_item]).each do |adjustment|
%tr.adjustment
%th= adjustment.label
%td.text-right= adjustment.display_amount.to_html

View File

@@ -36,10 +36,6 @@
= action_cable_meta_tag
%body{ class: body_classes, "body-scroll": "true", "data-turbo": "false" }
/ [if lte IE 8]
= render partial: "shared/ie_warning"
= javascript_include_tag "iehack"
.off-canvas-wrap{ offcanvas: true }
.fixed.off-canvas-fixed
= render "shared/menu/menu" unless @hide_menu

View File

@@ -19,10 +19,6 @@
= csrf_meta_tags
%body.off-canvas{ style: "background-image: url(#{image_pack_path('tile-wide.png')})", "data-turbo": "false" }
/ [if lte IE 8]
= render partial: "shared/ie_warning"
= javascript_include_tag "iehack"
.off-canvas-wrap{offcanvas: true}
.inner-wrap

View File

@@ -1,31 +0,0 @@
.alert-box.alert#ie-warning{"data-alert" => ""}
.row.ie-msg
.small-4.large-2.columns
%i.ofn-i_012-warning
.small-8.large-10.columns
%h3
= t :ie_warning_headline
%p
= t :ie_warning_text
.row
.small-4.columns.browserbtn
%a.browserlogo{href: "https://www.google.com/intl/en_au/chrome/browser/", target: "_blank"}
%img{src: image_pack_path("browser-logos/chrome.png") }
%a{href: "https://www.google.com/intl/en_au/chrome/browser/", target: "_blank"}
= t :ie_warning_chrome
.small-4.columns.browserbtn
%a.browserlogo{href: "http://www.mozilla.org/en-US/firefox/new/", target: "_blank"}
%img{src: image_pack_path("browser-logos/firefox.png") }
%a{href: "http://www.mozilla.org/en-US/firefox/new/", target: "_blank"}
= t :ie_warning_firefox
.small-4.columns.browserbtn
%a.browserlogo{href: "http://windows.microsoft.com/en-AU/internet-explorer/download-ie", target: "_blank"}
%img{src: image_pack_path("browser-logos/internet-explorer.png") }
%a{href: "http://windows.microsoft.com/en-AU/internet-explorer/download-ie", target: "_blank"}
= t :ie_warning_ie
.row.ie-msg
.small-12.large-12.columns
.text-center
%em
= t :ie_warning_other
%a#closeie.close{href: "#"} ×

View File

@@ -1,3 +1,3 @@
.already-ordered
.panel.medium-6
.panel
= t("split_checkout.already_ordered.message_html", cart: link_to(t('split_checkout.already_ordered.cart'), "#{main_app.cart_path}#bought-products"))

View File

@@ -1,5 +1,4 @@
%checkout.row#checkout
.small-12.medium-12.columns
= render partial: "split_checkout/tabs"
= render partial: "split_checkout/already_ordered" if show_bought_items? && checkout_step?(:summary)
= render partial: "split_checkout/form"

View File

@@ -89,7 +89,7 @@
"data-action": "toggle#toggle shippingmethod#selectShippingMethod",
"data-toggle-show": shipping_method.require_ship_address
= shipping_method_form.label shipping_method.id, shipping_method.name, {for: "shipping_method_" + shipping_method.id.to_s }
%em= payment_or_shipping_price(shipping_method, @order)
%em.fees= payment_or_shipping_price(shipping_method, @order)
- display_ship_address = display_ship_address || (ship_method_is_selected && shipping_method.require_ship_address)
%div.checkout-input{"data-shippingmethod-target": "shippingMethodDescription", "data-shippingmethodid": shipping_method.id , style: "display: #{ship_method_is_selected ? 'block' : 'none'}" }
#distributor_address.panel

View File

@@ -1,7 +1,7 @@
- content_for :injection_data do
= inject_saved_credit_cards
%div.checkout-step
%div.checkout-step{"class": if checkout_step?(:summary) then "checkout-summary" end}
= form_with url: checkout_update_path(checkout_step), model: @order, method: :put,
data: { remote: "true" } do |form|

View File

@@ -12,12 +12,12 @@
name: "order[payments_attributes][][payment_method_id]",
checked: (payment_method.id == selected_payment_method),
"data-action": "paymentmethod#selectPaymentMethod",
"data-paymentmethod-id": "paymentmethod#{payment_method.id}",
"data-paymentmethod-id": "#{payment_method.id}",
"data-paymentmethod-target": "input"
= f.label :payment_method_id, "#{payment_method.name}", for: "payment_method_#{payment_method.id}"
%em=payment_or_shipping_price(payment_method, @order)
%em.fees=payment_or_shipping_price(payment_method, @order)
.paymentmethod-container{"data-paymentmethod-id": "paymentmethod#{payment_method.id}", style: "display: #{payment_method.id == selected_payment_method ? "block" : "none"}"}
.paymentmethod-container{"data-paymentmethod-id": "#{payment_method.id}", style: "display: #{payment_method.id == selected_payment_method ? "block" : "none"}"}
- if payment_method.description && !payment_method.description.empty?
.paymentmethod-description.panel
#{payment_method.description}

View File

@@ -1,81 +1,95 @@
.medium-10
%div.checkout-substep
%div.checkout-title
= t("split_checkout.step3.your_details.title")
%div.summary
%span.summary-label
= t("split_checkout.step1.billing_address.first_name.label")
%span.summary-value
= @order.bill_address.firstname
%div.summary
%span.summary-label
= t("split_checkout.step1.billing_address.last_name.label")
%span.summary-value
= @order.bill_address.lastname
%div.summary
%span.summary-label
= t("split_checkout.step1.contact_information.email.label")
%span.summary-value
= @order.user ? @order.user.email : "Change me"
%div.summary
%span.summary-label
= t("split_checkout.step1.contact_information.phone.label")
%span.summary-value
= @order.bill_address.phone
%div.checkout-substep
%div.checkout-title
= t("split_checkout.step3.billing_address.title")
= render "summary_address", address: @order.bill_address
%div.checkout-substep
%div.checkout-title
= t("split_checkout.step3.shipping_address.title")
= render "summary_address", address: @order.shipping_address
%div.checkout-substep
%div.checkout-title
= t("split_checkout.step3.delivery_info.title")
%div.summary
%span.summary-label
= t("split_checkout.step1.shipping_info.title")
%span.summary-value
= @order.shipping_method.name
%div.summary-description
= @order.shipping_method.description
.summary-main
= render partial: "split_checkout/already_ordered" if show_bought_items? && checkout_step?(:summary)
.checkout-substep
.checkout-title
= t("split_checkout.step3.delivery_details.title")
%a.summary-edit{href: main_app.checkout_step_path(:details)}
= t("split_checkout.step3.your_details.edit")
= t("split_checkout.step3.delivery_details.edit")
%div.checkout-substep
%div.checkout-title
.summary-subtitle
= @order.shipping_method.name
%em.fees= payment_or_shipping_price(@order.shipping_method, @order)
.two-columns
%div
.summary-subtitle
= t("split_checkout.step3.delivery_details.address")
%span
= @order.bill_address.firstname
= @order.bill_address.lastname
%div
= @order.bill_address.phone
%div
= @order.user.email if @order.user
%br
%div
= @order.bill_address.address1
- unless @order.bill_address.address2.blank?
%div
= @order.bill_address.address2
%div
= @order.bill_address.city
%div
= @order.bill_address.state
%div
= @order.bill_address.zipcode
%div
= @order.bill_address.country
- if @order.shipping_method.description.present?
%div
.summary-subtitle
= t("split_checkout.step3.delivery_details.instructions")
%div
= @order.shipping_method.description
%hr
.checkout-substep
.checkout-title
= t("split_checkout.step3.payment_method.title")
%div.summary
%span.summary-value
= last_payment_method(@order)&.name
%div.summary-description
= last_payment_method(@order)&.description
%a.summary-edit{href: main_app.checkout_step_path(:payment)}
= t("split_checkout.step3.payment_method.edit")
.two-columns
%div
- payment_method = last_payment_method(@order)
= payment_method&.name
%em.fees=payment_or_shipping_price(payment_method, @order)
- if payment_method&.description.present?
%div
.summary-subtitle
= t("split_checkout.step3.payment_method.instructions")
%div
= last_payment_method(@order)&.description
%div.checkout-substep
%div.checkout-title
= t("split_checkout.step3.order.title")
%a.summary-edit{href: main_app.cart_path}
= t("split_checkout.step3.order.edit")
= render 'spree/orders/summary', order: @order
= render 'spree/orders/summary', order: @order, display_footer: false
.checkout-step3{"data-controller": "sticky", "data-sticky-target": "container"}
- if any_terms_required?(@order.distributor)
= render partial: "terms_and_conditions", locals: { f: f }
.medium-6
.checkout-submit
= f.submit t("split_checkout.step3.submit"), name: "confirm_order", class: "button primary", disabled: @terms_and_conditions_accepted == false || @platform_tos_accepted == false
%a.button.cancel{href: main_app.checkout_step_path(:payment)}
= t("split_checkout.step3.cancel")
.summary-right{ "data-controller": "sticky", "data-sticky-target": "container" }
.summary-right-line.total
.summary-right-line-label= t :order_total_price
.summary-right-line-value#order_total= @order.display_total.to_html
.summary-right-line
.summary-right-line-label= t :order_produce
.summary-right-line-value= display_checkout_subtotal(@order)
- checkout_adjustments_for(@order, exclude: [:line_item]).reverse_each do |adjustment|
.summary-right-line
.summary-right-line-label= adjustment.label
.summary-right-line-value= adjustment.display_amount.to_html
- if @order.total_tax > 0
.summary-right-line
.summary-right-line-label= t :order_includes_tax
.summary-right-line-value#tax-row= display_checkout_tax_total(@order)
.checkout-submit
- if any_terms_required?(@order.distributor)
= render partial: "terms_and_conditions", locals: { f: f }
= f.submit t("split_checkout.step3.submit"), name: "confirm_order", class: "button primary", disabled: @terms_and_conditions_accepted == false || @platform_tos_accepted == false

View File

@@ -1,36 +0,0 @@
%div.summary
%span.summary-label
= t("split_checkout.step1.address.address1.label")
%span.summary-value
= address.address1
- unless @order.bill_address.address2.blank?
%div.summary
%span.summary-label
= t("split_checkout.step1.address.address2.label")
%span.summary-value
= address.address2
%div.summary
%span.summary-label
= t("split_checkout.step1.address.city.label")
%span.summary-value
= address.city
%div.summary
%span.summary-label
= t("split_checkout.step1.address.state_id.label")
%span.summary-value
= address.state
%div.summary
%span.summary-label
= t("split_checkout.step1.address.zipcode.label")
%span.summary-value
= address.zipcode
%div.summary
%span.summary-label
= t("split_checkout.step1.address.country_id.label")
%span.summary-value
= address.country

View File

@@ -1,4 +1,4 @@
%div.checkout-substep.medium-6
%div.checkout-substep
%div.checkout-input
- if platform_terms_required? && distributor_terms_required?
= f.check_box :accept_terms, { name: "accept_terms", checked: all_terms_and_conditions_already_accepted? }, 1, nil
@@ -14,6 +14,3 @@
= t('split_checkout.step3.terms_and_conditions.message_html', terms_and_conditions_link: link_to( t("split_checkout.step3.terms_and_conditions.link_text"), @order.distributor.terms_and_conditions, target: '_blank'))
= f.error_message_on :terms_and_conditions, standalone: true
%div.checkout-input
= t("split_checkout.step3.agree")

View File

@@ -1,4 +1,4 @@
%div{"data-controller": "stripe-cards"}
%div{"data-controller": "stripe-cards", "data-paymentmethod-id": "#{payment_method.id}" }
- if @saved_credit_cards.any?
.checkout-input
%label

View File

@@ -17,14 +17,6 @@
.row
.alpha.six.columns
%fieldset.security.no-border-bottom
%legend{:align => "center"}= Spree.t(:security_settings)
- @preferences_security.each do |key|
- type = Spree::Config.preference_type(key)
.field
= label_tag(key, Spree.t(key) + ': ') + tag(:br) if type != :boolean
= preference_field_tag(key, Spree::Config[key], :type => type)
= label_tag(key, Spree.t(key)) + tag(:br) if type == :boolean
%fieldset.legal.no-border-bottom
%legend{:align => "center"}= t('.legal_settings')
.field

View File

@@ -20,11 +20,11 @@
%td{:align => "right"}
= item.quantity
%td{:align => "right"}
= item.included_tax > 0 ? item.display_included_tax : ""
= display_line_items_taxes(item)
%td{:align => "right"}
= item.display_amount_with_adjustments
- checkout_adjustments_for(@order, exclude: [:line_item]).reject{ |a| a.amount == 0 }.reverse_each do |adjustment|
- checkout_adjustments_for(@order, exclude: [:line_item]).reverse_each do |adjustment|
- taxable = adjustment.adjustable_type == "Spree::Shipment" ? adjustment.adjustable : adjustment
%tr
%td

View File

@@ -30,7 +30,7 @@
%td{:align => "right"}
= display_line_item_tax_rates(item)
- checkout_adjustments_for(@order, exclude: [:line_item]).reject{ |a| a.amount == 0 }.reverse_each do |adjustment|
- checkout_adjustments_for(@order, exclude: [:line_item]).reverse_each do |adjustment|
%tr
%td
%strong= "#{raw(adjustment.label)}"

View File

@@ -1,7 +0,0 @@
- position ||= ""
.per-page{'ng-show' => '!RequestMonitor.loading && orders.length > 0', class: ("right" if position == "right") }
%input.per-page-select.ofn-select2{type: 'number', data: 'per_page_options', 'min-search' => 999, 'ng-model' => 'per_page', 'ng-change' => 'fetchResults()'}
%span.per-page-feedback
{{ 'spree.admin.orders.index.results_found' | t:{number: pagination.results} }}
{{ 'spree.admin.orders.index.viewing' | t:{start: ((pagination.page -1) * pagination.per_page) +1, end: ((pagination.page -1) * pagination.per_page) + orders.length} }}

View File

@@ -32,7 +32,7 @@
%label{ :for => 'order_cycle_filter' }
= t("admin.order_cycle")
%br
%input#order_cycle_filter.ofn-select2.fullwidth{ type: 'number', 'min-search' => 5, data: 'orderCycles', placeholder: "#{t(:all)}", blank: "{ id: '', name: '#{t(:all)}' }", on: { selecting: "confirmRefresh" }, ng: { model: 'orderCycleFilter', change: "setOrderCycleDateRange()" } }
%input#order_cycle_filter.ofn-select2.fullwidth{ type: 'number', 'min-search' => 5, data: 'orderCycles', placeholder: "#{t(:all)}", blank: "{ id: '', name: '#{t(:all)}' }", on: { selecting: "confirmRefresh" }, ng: { model: 'orderCycleFilter' } }
.date_filter{class: "four columns"}
%label
= t("date_range")
@@ -94,14 +94,20 @@
= t("admin.orders.bulk_management.variants_without_unit_value")
%hr.divider.sixteen.columns.alpha.omega
.clear
.controls.sixteen.columns.alpha.omega{ ng: { hide: 'RequestMonitor.loading || line_items.length == 0' } }
%div.three.columns.alpha
%div{ ng: { hide: 'RequestMonitor.loading || line_items.length == 0' }, style: "display: flex; justify-content: flex-start; column-gap: 10px; margin-bottom: 15px" }
%div{ style: "flex-grow: 1" }
%input.fullwidth{ :type => "text", :id => 'quick_search', 'ng-model' => 'quickSearch', :placeholder => 'Quick Search' }
%div.three.columns
-# This -20px is a hack to make the dropdowns align properly
%div{ style: "margin-right: -20px;" }
= render 'admin/shared/bulk_actions_dropdown'
%div.ten.columns
%div
%columns-dropdown{ action: "#{controller_name}_#{action_name}" }
%div{ style: "flex-grow: 1"}
%div{ style: "float: right;"}
= render partial: 'admin/shared/angular_per_page_controls', locals: { position: "right", model: "line_items" }
%div.sixteen.columns.alpha#loading{ 'ng-if' => 'RequestMonitor.loading' }
= render partial: "components/admin_spinner"
@@ -184,4 +190,7 @@
%td.actions
%a{ 'ng-click' => "deleteLineItem(line_item)", :class => "delete-line-item icon-trash no-text" }
%div{'ng-show' => "!RequestMonitor.loading && line_items.length > 0" }
= render partial: 'admin/shared/angular_pagination'
= render 'spree/admin/shared/custom-confirm'

View File

@@ -40,7 +40,7 @@
%span.name{'ng-controller' => 'bulkCancelCtrl', 'ng-click' => 'cancelSelectedOrders()' }
= t('.cancel_orders')
= render partial: 'per_page_controls', locals: { position: "right" }
= render partial: 'admin/shared/angular_per_page_controls', locals: { position: "right", model: "orders" }
%table#listing_orders.index.responsive{width: "100%", 'ng-init' => 'initialise()', 'ng-show' => "!RequestMonitor.loading && orders.length > 0" }
%colgroup

View File

@@ -43,7 +43,7 @@
j(line_item.display_amount_with_adjustments.format(symbol: false, with_currency: false))] }
.join('" + \'\x0A\' + "')}",
'\x0A',
"#{checkout_adjustments_for(@order, exclude: [:line_item])
"#{checkout_adjustments_for(@order, exclude: [:line_item], reject_zero_amount: false)
.reject{ |a| a.amount == 0 }
.reverse.map { |adjustment| '%5s %-27.27s%8.8s' %
["",

View File

@@ -40,7 +40,7 @@
= t :email_order_summary_subtotal
%td{align: "right"}
= display_checkout_subtotal(@order)
- checkout_adjustments_for(@order, exclude: [:line_item]).reject{ |a| a.amount == 0 }.reverse_each do |adjustment|
- checkout_adjustments_for(@order, exclude: [:line_item]).reverse_each do |adjustment|
%tr
%td{align: "right", colspan: "3"}
= "#{raw(adjustment.label)}:"

View File

@@ -31,7 +31,7 @@
%span.order-total.item-total= display_checkout_subtotal(@order)
%td
- checkout_adjustments_for(@order, exclude: [:line_item]).reject{ |a| a.amount == 0 }.reverse_each do |adjustment|
- checkout_adjustments_for(@order, exclude: [:line_item]).reverse_each do |adjustment|
%tr.order-adjustment
%td.text-right{:colspan => "3"}
= adjustment.label

View File

@@ -1,3 +1,5 @@
- display_footer = true if display_footer.nil?
%table#line-items{"data-hook" => "order_details"}
%col{valign: "middle"}/
%col{halign: "center", valign: "middle", width: "5%"}/
@@ -26,36 +28,4 @@
%td.text-right.total{"data-hook" => "order_item_total"}
%span= item.display_amount_with_adjustments.to_html
%tfoot
#subtotal{"data-hook" => "order_details_subtotal"}
%tr#subtotal-row.total
%td.text-right{colspan: "3"}
%strong
= t :order_produce
%td.text-right.total
%span= display_checkout_subtotal(order)
#order-charges{"data-hook" => "order_details_adjustments"}
- checkout_adjustments_for(order, exclude: [:line_item]).reject{ |a| a.amount == 0 }.reverse_each do |adjustment|
%tr.total
%td.text-right{:colspan => "3"}
%strong
= adjustment.label
%td.text-right.total
%span= adjustment.display_amount.to_html
#order-total{"data-hook" => "order_details_total"}
%tr.total
%td.text-right{colspan: "3"}
%h5
= t :order_total_price
%td.text-right.total
%h5#order_total= order.display_total.to_html
- if order.total_tax > 0
#tax{"data-hook" => "order_details_tax"}
%tr#tax-row.total
%td.text-right{colspan: "3"}
= t :order_includes_tax
%td.text-right.total
%span= display_checkout_tax_total(order)
= render partial: "spree/orders/totals_footer", locals: { order: order } if display_footer

View File

@@ -0,0 +1,33 @@
%tfoot
#subtotal{"data-hook" => "order_details_subtotal"}
%tr#subtotal-row.total
%td.text-right{colspan: "3"}
%strong
= t :order_produce
%td.text-right.total
%span= display_checkout_subtotal(order)
#order-charges{"data-hook" => "order_details_adjustments"}
- checkout_adjustments_for(order, exclude: [:line_item]).reverse_each do |adjustment|
%tr.total
%td.text-right{:colspan => "3"}
%strong
= adjustment.label
%td.text-right.total
%span= adjustment.display_amount.to_html
#order-total{"data-hook" => "order_details_total"}
%tr.total
%td.text-right{colspan: "3"}
%h5
= t :order_total_price
%td.text-right.total
%h5#order_total= order.display_total.to_html
- if order.total_tax > 0
#tax{"data-hook" => "order_details_tax"}
%tr#tax-row.total
%td.text-right{colspan: "3"}
= t :order_includes_tax
%td.text-right.total
%span= display_checkout_tax_total(order)

View File

@@ -5,15 +5,6 @@ document.addEventListener("turbolinks:before-cache", () =>
);
export default class extends Controller {
connect() {
setTimeout(this.fadeout.bind(this), 3000);
}
fadeout() {
this.element.classList.add("animate-hide-500");
setTimeout(this.close.bind(this), 500);
}
close() {
this.element.remove();
}

View File

@@ -55,6 +55,7 @@ export default class extends Flatpickr {
mode,
};
window.addEventListener("flatpickr:change", this.onChangeEvent.bind(this));
window.addEventListener("flatpickr:clear", this.clear.bind(this));
}
clear(e) {

View File

@@ -12,17 +12,12 @@ export default class extends Controller {
selectPaymentMethod(event) {
this.setPaymentMethod(event.target.dataset.paymentmethodId);
const stripeCardSelector =
this.application.getControllerForElementAndIdentifier(
document
.querySelector(
`[data-paymentmethod-id="${event.target.dataset.paymentmethodId}"]`
)
.querySelector('[data-controller="stripe-cards"]'),
"stripe-cards"
);
stripeCardSelector?.initSelectedCard();
// Send an event to the right (ie. the one with the same paymentmethodId)
// StripeCardsController to initialize the form elements with the selected card
const customEvent = new CustomEvent("stripecards:initSelectedCard", {
detail: event.target.dataset.paymentmethodId,
});
document.dispatchEvent(customEvent);
}
setPaymentMethod(paymentMethodContainerId) {

View File

@@ -15,7 +15,7 @@ export default class extends Controller {
this.containerTarget.style.bottom = "-1px";
const observer = new IntersectionObserver(
([e]) => {
e.target.classList.toggle("sticked", e.intersectionRatio <= 1);
e.target.classList.toggle("sticked", e.intersectionRatio < 1);
},
{ threshold: [1] }
);

View File

@@ -7,6 +7,11 @@ export default class extends Controller {
connect() {
this.initSelectedCard();
document.addEventListener("stripecards:initSelectedCard", (e) => {
if (e.detail == this.element.dataset.paymentmethodId) {
this.initSelectedCard();
}
});
}
initSelectedCard() {

View File

@@ -0,0 +1,122 @@
import { Controller } from "stimulus";
// UnsavedChanges allows you to promp the user about unsaved changes when trying to leave the page
//
// Usage :
// - with beforeunload event :
// <form
// data-controller="unsaved-changes"
// data-action="beforeunload@window->unsaved-changes#leavingPage"
// data-unsaved-changes-changed="true"
// >
// <input data-action="change->unsaved-changes#formIsChanged" />
// </form>
//
// - with turbolinks :
// <form
// data-controller="unsaved-changes"
// data-action="turbolinks:before-visit@window->unsaved-changes#leavingPage"
// data-unsaved-changes-changed="true"
// >
// <input data-action="change->unsaved-changes#formIsChanged" />
// </form>
//
// You can also combine the two event trigger ie :
// <form
// data-controller="unsaved-changes"
// data-action="beforeunload@window->unsaved-changes#leavingPage turbolinks:before-visit@window->unsaved-changes#leavingPage"
// data-unsaved-changes-changed="true"
// >
//
// Optional, you can add 'data-unsaved-changes-disable-submit-button="true"' if you want to disable all
// submit buttons when the form hasn't been interacted with
//
export default class extends Controller {
connect() {
// add onChange event to all form element
this.element
.querySelectorAll("input, select, textarea")
.forEach((input) => {
input.addEventListener("change", this.formIsChanged.bind(this));
});
this.element.addEventListener("submit", this.handleSubmit.bind(this));
// disable submit button when first loading the page
if (!this.isFormChanged() && this.isSubmitButtonDisabled()) {
this.disableButtons();
}
}
formIsChanged(event) {
// We only do something if the form hasn't already been changed
if (!this.isFormChanged()) {
this.setChanged("true");
if (this.isSubmitButtonDisabled()) {
this.enableButtons();
}
}
}
leavingPage(event) {
const LEAVING_PAGE_MESSAGE = I18n.t("admin.unsaved_confirm_leave");
if (this.isFormChanged()) {
if (event.type == "turbolinks:before-visit") {
if (!window.confirm(LEAVING_PAGE_MESSAGE)) {
event.preventDefault();
}
} else {
// We cover our bases, according to the documentation we should be able to prompt the user
// by calling event.preventDefault(), but it's not really supported yet.
// Instead we set the value of event.returnValue, and return a string, both of them
// should prompt the user.
// Note, in most modern browser a generic string not under the control of the webpage is shown
// instead of the returned string.
//
// More info : https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
//
event.returnValue = LEAVING_PAGE_MESSAGE;
return event.returnValue;
}
}
}
handleSubmit(event) {
// if we are submitting the form, we don't want to trigger a warning so set changed to false
this.setChanged("false");
}
setChanged(changed) {
this.data.set("changed", changed);
}
isFormChanged() {
return this.data.get("changed") == "true";
}
isSubmitButtonDisabled() {
if (this.data.has("disable-submit-button")) {
return this.data.get("disable-submit-button") == "true";
}
return false;
}
enableButtons() {
this.submitButtons().forEach((button) => {
button.disabled = false;
});
}
disableButtons() {
this.submitButtons().forEach((button) => {
button.disabled = true;
});
}
submitButtons() {
return this.element.querySelectorAll("input[type='submit']");
}
}

View File

@@ -39,7 +39,6 @@
@import 'home_tagline';
@import 'hub_node';
@import 'hubs';
@import 'ie_warning';
@import 'images';
@import 'lists';
@import 'loading';

View File

@@ -4,17 +4,6 @@
// ANIMATION FUNCTIONS
@keyframes fade-out-hide {
0% {opacity: 1; visibility: visible;}
99% {opacity: 0; visibility: visible;}
100% {opacity: 0; visibility: hidden;}
}
.animate-hide-500 {
animation: fade-out-hide 0.5s;
}
//
@-webkit-keyframes slideInDown {
0% {
opacity: 0;

View File

@@ -1,40 +0,0 @@
#ie-warning {
margin-bottom: 0;
padding-bottom: 2rem;
.ie-msg {
background: rgba(255, 255, 255, 0.15);
padding: 0.5rem;
margin-bottom: 1rem;
margin-top: 1rem;
}
.browserbtn {
text-align: center;
margin-bottom: 1rem;
a {
color: white;
font-size: 1rem;
filter: alpha(opacity = 70);
opacity: 0.7;
&:hover, &:active, &:focus {
filter: alpha(opacity = 100);
opacity: 1;
}
}
a.browserlogo {
display: block;
width: 100%;
}
}
i {
font-size: 5rem;
color: white;
text-align: center;
display: block;
}
}

View File

@@ -62,8 +62,9 @@
}
.already-ordered {
margin-left: 20px;
.panel {
margin-top: 3rem;
background-color: $grey-250;
border: 1px solid $tiny-blue;
color: $grey-700;
@@ -160,22 +161,24 @@
label {
margin-top: 0.3rem;
& + em {
margin-left: -0.5rem;
font-size: 14px; // same as label
font-weight: bold;
// Add opening and closing parentheses
&:before {
content: "(";
}
&:after {
content: ")";
}
}
}
}
}
em.fees {
margin-left: -0.5rem;
font-size: 14px; // same as label
font-weight: bold;
margin-left: 10px;
// Add opening and closing parentheses
&:before {
content: "(";
}
&:after {
content: ")";
}
}
.checkout-input span.formError, div.error.card-errors {
background-color: rgba(193, 18, 43, 0.1);
color: $red-700;
@@ -203,42 +206,7 @@
@include force-wrap;
}
.checkout-step3 {
padding-left: 15px;
padding-right: 15px;
.checkout-submit {
margin-top: 0;
margin-bottom: 0;
padding-top: 2rem;
.button {
margin-bottom: 1rem;
}
}
&.sticked {
background-color: $white;
box-shadow: 0 -6px 12px -6px rgba(0, 0, 0, 0.33);
border-left: 1px solid $light-grey;
border-right: 1px solid $light-grey;
border-top: 1px solid $light-grey;
}
@media screen and (max-width: 700px) {
&.sticked {
width: auto;
margin-left: -15px;
margin-right: -15px;
box-shadow: 0 0px 10px 0px rgba(0, 0, 0, 0.33);
.checkout-submit {
width: 100%;
padding-left: 15px;
padding-right: 15px;
}
}
}
}
.checkout-submit {
margin-top: 5rem;
@@ -291,24 +259,44 @@
}
}
.summary {
margin-bottom: 2px;
font-size: 0.875rem;
.checkout-summary {
margin-top: 0;
.summary-label {
font-weight: bold;
}
.checkout-substep {
font-size: 0.875rem;
margin-top: 1rem;
.summary-description {
@include force-wrap;
color: $min-accessible-grey;
&:first-child {
margin-top: 20px;
}
.two-columns {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: 1fr;
grid-column-gap: 10px;
grid-row-gap: 0px;
}
}
.summary-edit {
color: $teal-400;
text-decoration: underline;
display: block;
margin-top: 5px;
display: inline-block;
margin-left: 15px;
font-size: 0.875rem;
font-weight: normal;
font-family: $body-font;
&:hover {
color: $teal-500;
text-decoration: underline;
&:after {
color: $teal-500;
}
}
&:after {
background-image: url("../images/edit-with-pen.svg");
content: " ";
@@ -321,11 +309,94 @@
top: 2px;
}
}
.summary-subtitle {
font-weight: bold;
margin-bottom: 20px;
}
}
.checkout-summary {
form {
display: flex;
justify-content: space-between;
.summary-main {
width: 66.66%;
border-right: 1px solid #DDD;
padding-right: 20px;
padding-top: 20px;
}
.summary-right {
width: calc(33.33% - 20px);
padding-left: 20px;
padding-right: 20px;
border-right: 1px solid #DDD;
}
}
}
.summary-right {
padding-top: 40px;
.checkout-submit {
margin-top: 40px;
.button.primary {
background-color: $clr-turquoise;
&:hover {
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
}
}
}
}
.summary-right-line {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
.summary-right-line-label {
font-size: 0.875rem;
}
.summary-right-line-value {
font-size: 0.875rem;
text-align: right;
}
&.total {
margin-bottom: 20px;
@include headingFont;
.summary-right-line-label {
font-weight: bold;
font-size: 1.06rem;
}
.summary-right-line-value {
font-size: 1.06rem;
}
}
}
.summary-right {
.checkout-input {
display: flex;
align-items: baseline;
input[type=checkbox] + label {
margin-left: 1rem;
}
}
}
#line-items {
display: block;
overflow-x: auto;
h5 {
background-color: transparent;
}
}
.two-columns-inputs {
@@ -381,3 +452,70 @@
}
}
}
// Handle the mobile view for the summary step
@media screen and (max-width: 800px) {
.checkout-summary form {
display: block;
}
.checkout-summary form .summary-right {
width: calc(100% + 30px);
margin-left: -15px;
background-color: white;
border-right: none;
border-top: 1px solid #DDD;
padding-top: 20px;
&.sticked {
box-shadow: 0 -4px 10px #DDD;
}
.summary-right-line.total {
margin-bottom: 10px;
}
.checkout-submit {
margin-top: 10px;
.checkout-input {
margin-bottom: 10px;
}
.button {
margin-bottom: 10px;
}
}
}
.checkout-summary form .summary-main {
width: 100%;
border-right: none;
}
.checkout-summary .checkout-substep .two-columns {
// only one column actually
grid-template-columns: 1fr;
> :nth-child(2) {
margin-top: 20px;
}
}
.checkout-summary .summary-subtitle {
margin-bottom: 10px;
}
}
// For small screen or for iOS devices, increase to 16px the input font-size
@media screen and (max-width: 700px) {
.checkout-input input {
font-size: 16px;
}
}
@supports(-webkit-overflow-scrolling: touch) {
.checkout-input input {
font-size: 16px;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -114,7 +114,8 @@ module Openfoodnetwork
Calculator::FlexiRate,
Calculator::PerItem,
Calculator::PriceSack,
Calculator::Weight
Calculator::Weight,
Calculator::None
]
app.config.spree.calculators.add_class('enterprise_fees')
@@ -133,7 +134,8 @@ module Openfoodnetwork
Calculator::FlatRate,
Calculator::FlexiRate,
Calculator::PerItem,
Calculator::PriceSack
Calculator::PriceSack,
Calculator::None
]
app.config.spree.calculators.add_class('tax_rates')
@@ -213,7 +215,6 @@ module Openfoodnetwork
# Instead, they must be explicitly included below
# http://stackoverflow.com/questions/8012434/what-is-the-purpose-of-config-assets-precompile
config.assets.initialize_on_precompile = true
config.assets.precompile += ['iehack.js']
config.assets.precompile += ['admin/*.js', 'admin/**/*.js']
config.assets.precompile += ['web/all.js']
config.assets.precompile += ['darkswarm/all.js']

View File

@@ -1,10 +1,9 @@
if ENV['DATADOG_RAILS_APM']
Datadog.configure do |c|
c.use :rails, service_name: 'rails'
c.tracing.instrument :rack, request_queuing: true
c.tracing.instrument :rails, service_name: 'rails'
c.analytics_enabled = true
c.runtime_metrics_enabled = true
c[:rack].request_queuing = true
c.tracing.analytics.enabled = true
c.runtime_metrics.enabled = true
end
end

View File

@@ -3,7 +3,6 @@
redis_connection_settings = {
url: ENV.fetch("OFN_REDIS_JOBS_URL", "redis://localhost:6381/0"),
network_timeout: 5,
expires_in: Rails.env.development? ? 90.minutes : nil
}
Sidekiq.configure_server do |config|

View File

@@ -5,6 +5,23 @@ ar:
spree/product: المنتج
spree/shipping_method: طريقة الشحن
attributes:
spree/order/ship_address:
address1: "عنوان الشحن (الشارع + رقم المنزل)"
address2: "عنوان الشحن 2"
city: "عنوان الشحن المدينة"
country: "عنوان الشحن الدولة"
phone: "رقم الهاتف"
firstname: "الاسم الاول"
lastname: "الكنية"
zipcode: "الرمز البريدي لعنوان الشحن"
spree/order/bill_address:
address1: "عنوان الفاتورة (الشارع + رقم المنزل)"
zipcode: "الرمز البريدي لعنوان الفاتورة"
city: "عنوان إرسال الفواتير المدينة "
country: "عنوان إرسال الفواتير البلد "
firstname: "عنوان إرسال الفواتير - الاسم الأول "
lastname: "عنوان إرسال الفواتير - الاسم الأخير"
phone: هاتف العميل
spree/user:
password: "كلمه السر"
password_confirmation: "تأكيد كلمة المرور"
@@ -416,11 +433,25 @@ ar:
price: السعر
producer: المنتج
category: الفئة
sku: SKU
on_hand: "متوفر"
on_demand: "على الطلب"
tax_category: "الفئة الضريبية"
inherits_properties: "الخصائص الموروثة؟"
available_on: "متاح على"
import_date: "تاريخ الاستيراد"
columns_selector:
unit: وحدة
price: السعر
producer: المنتج
category: الفئة
sku: SKU
on_hand: "متوفر"
on_demand: "على الطلب"
tax_category: "الفئة الضريبية"
inherits_properties: "الخصائص الموروثة؟"
available_on: "متاح على"
import_date: "تاريخ الاستيراد"
adjustments:
skipped_changing_canceled_order: "لا يمكنك تغيير الطلب الذي تم إلغاؤه."
begins_at: يبدأ عند
@@ -1292,6 +1323,7 @@ ar:
total_by_customer: الإجمالي حسب العميل
total_by_supplier: الإجمالي حسب المورد
supplier_totals: اجمالي دورة الطلب الموردين
percentage: "%{value}٪"
supplier_totals_by_distributor: اجمالي دورة الطلب الموردين حسب الموزع
totals_by_supplier: اجمالي دورة الطلب الموزعين من قبل المورد
customer_totals: اجمالي دورة الطلب للعملاء
@@ -1302,6 +1334,7 @@ ar:
addresses: عناوين
payment_methods: تقرير طرق الدفع
delivery: إشعار بالإستلام
sales_tax_totals_by_producer: إجمالي ضريبة المبيعات حسب المنتج
tax_types: أنواع الضرائب
tax_rates: معدلات الضريبة
pack_by_customer: تم التعبئة من العملاء
@@ -1481,6 +1514,13 @@ ar:
stripe_connect_fail: عذرًا ، فشل اتصال حساب Stripe الخاص بك
stripe_connect_settings:
resource: تهيئة ربط Strip
resend_confirmation_emails_feedback:
zero: "تم إرسال رسائل التأكيد عبر البريد الإلكتروني لطلبات %{count}."
one: "تم إرسال بريد إلكتروني للتأكيد لطلب واحد."
two: "تم إرسال رسائل التأكيد عبر البريد الإلكتروني لطلبات %{count}."
few: "تم إرسال رسائل التأكيد عبر البريد الإلكتروني لطلبات %{count}."
many: "تم إرسال رسائل التأكيد عبر البريد الإلكتروني لطلبات %{count}."
other: "تم إرسال رسائل التأكيد عبر البريد الإلكتروني لطلبات %{count}."
api:
unknown_error: "هناك خطأ ما. تم إخطار فريقنا."
invalid_api_key: "مفتاح API المحدد غير صالح (%{key})."
@@ -1606,11 +1646,11 @@ ar:
menu_4_title: "مجموعات"
menu_4_url: "/groups"
menu_5_title: "حول"
menu_5_url: "https://about.flaha.org/"
menu_5_url: "https://about.flaha.org"
menu_6_title: "الاتصال"
menu_6_url: "https://openfoodnetwork.org/au/connect/"
menu_6_url: "https://join.slack.com/t/flahaqaopenfo-2gd5913/shared_invite/zt-1pg0uzd4j-tFxELTtA9iA78ipnO3NZ5w"
menu_7_title: "تعلم"
menu_7_url: "https://openfoodnetwork.org/au/learn/"
menu_7_url: "https://kh.flaha.org"
logo: "الشعار (640 × 130)"
logo_mobile: "شعار الجوال (75 × 26)"
logo_mobile_svg: "شعار الجوال (SVG)"
@@ -1703,12 +1743,6 @@ ar:
card_has_been_removed: "تمت إزالة بطاقتك (الرقم: %{number})"
card_could_not_be_removed: عذرًا ، تعذرت إزالة البطاقة
invalid_credit_card: "بطاقة الائتمان غير صالحة"
ie_warning_headline: "متصفحك غير محدث :-("
ie_warning_text: "للحصول على أفضل تجربة لشبكة الغذاء المفتوح ، نوصي بشدة بترقية متصفحك:"
ie_warning_chrome: تحميل متصفح كروم
ie_warning_firefox: تحميل متصفح فايرفوكس
ie_warning_ie: ترقية Internet Explorer
ie_warning_other: "لا يمكنك ترقية متصفحك؟ جرب شبكة الغذاء المفتوح على هاتفك الذكي :-)"
legal:
cookies_policy:
header: "كيف نستخدم ملفات تعريف الارتباط"
@@ -1851,20 +1885,18 @@ ar:
submit: التالي - ملخص الطلب
cancel: العودة إلى التفاصيل الخاصة بك
step3:
your_details:
title: تفاصيلك
edit: تحرير التفاصيل الخاصة بك
billing_address:
title: عنوان وصول الفواتير
shipping_address:
title: عنوان الشحن
delivery_info:
title: معلومات التوصيل
delivery_details:
title: تفاصيل التسليم
edit: تعديل
address: عنوان التسليم
instructions: التعليمات
payment_method:
title: 'طريقة الدفع '
edit: تحرير طريقة الدفع
edit: تعديل
instructions: التعليمات
order:
title: الطلب الكلي
title: تفاصيل الطلب
edit: تعديل
terms_and_conditions:
message_html: "أوافق على %{terms_and_conditions_link} للبائع."
link_text: "الأحكام والشروط"
@@ -1873,11 +1905,10 @@ ar:
all_terms_and_conditions:
message_html: "أوافق على %{terms_and_conditions_link} البائع والمنصة %{tos_link}."
terms_and_conditions: "الأحكام والشروط"
agree: بالنقر فوق "إكمال الطلب" فإنك توافق على معالجة طلبك.
submit: اكمل الطلب
cancel: العودة إلى طريقة الدفع
errors:
global: "فشل الحفظ ، يرجى تحديث الحقول المميزة."
saving_failed: "فشل الحفظ ، يرجى تحديث الحقول المميزة. %{messages}"
terms_not_accepted: الرجاء قبول الشروط والأحكام
required: لا يمكن أن يكون الحقل فارغًا
invalid_number: "يرجى إدخال رقم هاتف صالح"
@@ -2578,6 +2609,7 @@ ar:
report_customers_cycle: "ترتيب الدورة"
report_customers_type: "نوع التقرير"
report_customers_csv: "تنزيل بتنسيق CSV"
report_customers: عميل
report_producers: "المنتجين"
report_type: "نوع التقرير"
report_hubs: "مراكز بيع"
@@ -2655,8 +2687,12 @@ ar:
report_header_taxable_items_total: "إجمالي العناصر الخاضعة للضريبة (%{currency_symbol})"
report_header_sales_tax: "ضريبة المبيعات (%{currency_symbol})"
report_header_delivery_charge: "رسوم التوصيل (%{currency_symbol})"
report_header_tax: "ضريبة"
report_header_tax_on_delivery: "الضريبة على التسليم (%{currency_symbol})"
report_header_tax_on_fees: "الضريبة على الرسوم (%{currency_symbol})"
report_header_tax_category: "الفئة الضريبية"
report_header_tax_rate_name: "اسم معدل الضريبة"
report_header_tax_rate: "معدل الضريبة"
report_header_total_tax: "إجمالي الضريبة (%{currency_symbol})"
report_header_total_excl_tax: "المجموع باستثناء الضريبة (%{currency_symbol})"
report_header_total_incl_tax: "إجمالي مدفوع الضريبة (%{currency_symbol})"
@@ -2679,6 +2715,7 @@ ar:
report_header_supplier: المورد
report_header_producer: المنتج
report_header_producer_suburb: منتج الضاحية
report_header_producer_tax_status: الوضع الضريبي للمنتج
report_header_producer_charges_sales_tax?: مسجل في ضريبة السلع والخدمات / ضريبة القيمة المضافة
report_header_unit: وحدة
report_header_group_buy_unit_quantity: مجموعة شراء وحدة الكمية
@@ -2695,6 +2732,7 @@ ar:
report_header_distributor_address: عنوان الموزع
report_header_distributor_city: مدينة الموزع
report_header_distributor_postcode: الرمز البريدي للموزع
report_header_distributor_tax_status: الوضع الضريبي للموزع
report_header_delivery_address: عنوان التسليم
report_header_delivery_postcode: تسليم الرمز البريدي
report_header_bulk_unit_size: حجم الوحدة بالجملة
@@ -2874,6 +2912,7 @@ ar:
deleting_item_will_cancel_order: "ستؤدي هذه العملية إلى أمر واحد أو أكثر من الطلبات الفارغة ، والتي سيتم إلغاؤها. هل ترغب في المتابعة؟"
modals:
got_it: "فهمتك"
confirm: "التأكيد"
close: "إغلاق"
continue: "تابع"
cancel: "إلغاء"
@@ -3488,6 +3527,8 @@ ar:
server_error: "خطأ في الخادم"
shipping_method_names:
UPS Ground: "UPS الأرضي"
pick_up: "التسليم من المزرعة مباشرة"
delivery: "موقعة ومختومة وتم التسليم"
start_date: "تاريخ البدء"
successfully_removed: "تمت الإزالة بنجاح"
taxonomy_edit: "التصنيف"
@@ -3564,9 +3605,6 @@ ar:
default_seo_title: "العنوان الافتراضي ل SEO"
default_meta_description: "وصف التعريف الافتراضي"
default_meta_keywords: "الكلمات الرئيسية الوصفية الافتراضية"
security_settings: "اعدادات الامان"
allow_ssl_in_production: "السماح باستخدام طبقة المقابس الآمنة في وضع الإنتاج"
allow_ssl_in_staging: "اسمح باستخدام طبقة المقابس الآمنة في وضع التدريج"
currency_decimal_mark: "العملة العشرية"
currency_settings: "إعدادات العملة"
currency_symbol_position: ضع &quot;رمز العملة قبل أو بعد مبلغ الدولار؟&quot;
@@ -3575,7 +3613,7 @@ ar:
display_currency: "عرض العملة"
choose_currency: "اختر العملة"
mail_method_settings: "إعدادات طريقة البريد"
mail_settings_notice_html: "لا يمكن تحرير بعض الإعدادات التالية وهي مدرجة هنا فقط لأغراض التصحيح. يمكن إجراء التغييرات عن طريق تحديث أسرار المثيل وتوفيرها باستخدام <a href='https://github.com/openfoodfoundation/ofn-install'>ofn-install</a> . تواصل مع فريق OFN العالمي لمزيد من التفاصيل."
mail_settings_notice_html: "<b>التغييرات التي يتم إجراؤها هنا ستكون مؤقتة</b> للتصحيح فقط ، وقد يتم التراجع عنها في المستقبل.<br> يمكن إجراء تغييرات دائمة عن طريق تحديث أسرار المثيل وتوفيرها باستخدام <a href='https://github.com/openfoodfoundation/ofn-install'>ofn-install</a> . تواصل مع فريق OFN العالمي لمزيد من التفاصيل."
general: "عام"
enable_mail_delivery: "تمكين تسليم البريد"
send_mails_as: "إرسال رسائل ب"
@@ -3782,6 +3820,10 @@ ar:
authorized: "مخول"
received: "تم الاستلام"
canceled: "ألغيت"
line_items:
index:
results_found: "تم العثور على النتائج %{number}."
viewing: "عرض %{start} إلى %{end}."
orders:
add_product:
cannot_add_item_to_canceled_order: "لا يمكن إضافة عنصر إلى الطلب الملغى"
@@ -3805,6 +3847,7 @@ ar:
print_invoices: "طباعة الفواتير"
cancel_orders: "إلغاء الطلبات"
resend_confirmation: "أعد إرسال التأكيد"
resend_confirmation_confirm_html: "سيؤدي هذا إلى إعادة إرسال البريد الإلكتروني للتأكيد إلى العميل.<br /> هل انت متأكد انك تريد المتابعة؟"
selected:
zero: "لم يتم اختيار أي طلب"
one: "طلب واحد تم اختياره"

View File

@@ -5,6 +5,10 @@ ca:
spree/product: Producte
spree/shipping_method: Mètode d'enviament
attributes:
spree/order/ship_address:
phone: "Número de telèfon "
firstname: "Nom"
lastname: "Cognom"
spree/user:
password: "Contrasenya"
password_confirmation: "confirmació de la contrasenya"
@@ -413,11 +417,25 @@ ca:
price: Preu
producer: Productora
category: Categoria
sku: Número de referència (SKU)
on_hand: "Disponibles"
on_demand: "Sota demanda"
tax_category: "Categoria d'impostos"
inherits_properties: "Hereda propietats?"
available_on: "Disponible el"
import_date: "Data d'importació"
columns_selector:
unit: Unitat
price: Preu
producer: Productora
category: Categoria
sku: Número de referència (SKU)
on_hand: "Disponibles"
on_demand: "Sota demanda"
tax_category: "Categoria d'impostos"
inherits_properties: "Hereda propietats?"
available_on: "Disponible el"
import_date: "Data d'importació"
adjustments:
skipped_changing_canceled_order: "No podeu canviar una comanda cancel·lada."
begins_at: Comença a
@@ -1671,12 +1689,6 @@ ca:
card_has_been_removed: "S'ha eliminat la teva targeta (número: %{number})"
card_could_not_be_removed: Ho sentim, no s'ha pogut eliminar la targeta
invalid_credit_card: "Targeta de crèdit no vàlida"
ie_warning_headline: "El vostre navegador no està actualitzat :-("
ie_warning_text: "Per obtenir la millor experiència a Open Food Network et recomanem que actualitzis el teu navegador:"
ie_warning_chrome: Descarrega Chrome
ie_warning_firefox: Descarrega Firefox
ie_warning_ie: Actualitza Internet Explorer
ie_warning_other: "No pots actualitzar el navegador? Prova Open Food Network al telèfon mòbil :-)"
legal:
cookies_policy:
header: "Com utilitzem les cookies"
@@ -1797,10 +1809,14 @@ ca:
card_year:
label: Any
step3:
your_details:
title: Els teus detalls
billing_address:
title: Adreça de facturació
delivery_details:
title: Detalls de lliurament
edit: Editar
address: Adreça de lliurament
payment_method:
edit: Editar
order:
edit: Editar
terms_and_conditions:
message_html: "Accepto el %{terms_and_conditions_link} del venedor."
link_text: "Termes i condicions"
@@ -2498,6 +2514,7 @@ ca:
report_customers_cycle: "Cicle de Comanda"
report_customers_type: "Tipus d'informe"
report_customers_csv: "Descarrega com a csv"
report_customers: Consumidora
report_producers: "Productors"
report_type: "Tipus d'informe"
report_hubs: "Grups"
@@ -2562,6 +2579,8 @@ ca:
report_header_delivery_charge: "Càrrec de lliurament (%{currency_symbol})"
report_header_tax_on_delivery: "Impost sobre el lliurament (%{currency_symbol})"
report_header_tax_on_fees: "Impost sobre les comissions (%{currency_symbol})"
report_header_tax_category: "Categoria d'impostos"
report_header_tax_rate: "Impost"
report_header_total_tax: "Impost total (%{currency_symbol})"
report_header_total_excl_tax: "Total excl. impostos (%{currency_symbol})"
report_header_total_incl_tax: "Total incl. impostos (%{currency_symbol})"
@@ -3365,9 +3384,6 @@ ca:
default_seo_title: "Títol Seo predeterminat "
default_meta_description: "Descripció Meta predeterminada"
default_meta_keywords: "Paraules clau meta predeterminades"
security_settings: "Configuració de seguretat"
allow_ssl_in_production: "Permet que SSL s'utilitzi en mode de producció"
allow_ssl_in_staging: "Permet que SSL s'utilitzi en mode de staging"
currency_decimal_mark: "Separador decimal de moneda"
currency_settings: "Configuració de moneda"
currency_symbol_position: Posa "símbol de moneda abans o després d'una quantitat"?
@@ -3376,7 +3392,6 @@ ca:
display_currency: "Moneda de visualització"
choose_currency: "Escull la moneda"
mail_method_settings: "Configuració del mètode de correu"
mail_settings_notice_html: "Algunes de les opcions de configuració següents no es poden editar i es mostren aquí només amb finalitats de depuració. Es poden fer canvis actualitzant els secrets de la instància i provisionant-los mitjançant <a href='https://github.com/openfoodfoundation/ofn-install'>ofn-install</a> . Contacteu amb l'equip global d'OFN per obtenir més informació."
general: "General"
enable_mail_delivery: "Habilita el lliurament de correu"
send_mails_as: "Enviar missatges com"
@@ -3581,6 +3596,10 @@ ca:
authorized: "Autoritzat"
received: "Rebut"
canceled: "Cancel·lat"
line_items:
index:
results_found: "%{number} Resultats trobats."
viewing: "Veient %{start} a %{end}."
orders:
add_product:
cannot_add_item_to_canceled_order: "No es pot afegir l'article a la comanda cancel·lada"

View File

@@ -5,6 +5,10 @@ cy:
spree/product: Cynnyrch
spree/shipping_method: Dull Anfon
attributes:
spree/order/ship_address:
phone: "Rhif ffôn"
firstname: "Enw cyntaf"
lastname: "Enw olaf"
spree/user:
password: "Cyfrinair"
password_confirmation: "Cadarnhau'r cyfrinair"
@@ -416,11 +420,25 @@ cy:
price: Pris
producer: Cynhyrchydd
category: Categori
sku: Cod y Cynnyrch
on_hand: "Ar gael"
on_demand: "Ar alw"
tax_category: "Categori Treth"
inherits_properties: "Yn etifeddu manylion cynnyrch?"
available_on: "Ar gael ar"
import_date: "Dyddiad Mewnforio"
columns_selector:
unit: Uned
price: Pris
producer: Cynhyrchydd
category: Categori
sku: Cod y Cynnyrch
on_hand: "Ar gael"
on_demand: "Ar alw"
tax_category: "Categori Treth"
inherits_properties: "Yn etifeddu manylion cynnyrch?"
available_on: "Ar gael ar"
import_date: "Dyddiad Mewnforio"
adjustments:
skipped_changing_canceled_order: "Nid yw'n bosib newid archeb a ganslwyd"
begins_at: Yn dechrau am
@@ -1293,6 +1311,7 @@ cy:
total_by_customer: Cyfanswm fesul Cwsmer
total_by_supplier: Cyfanswm fesul Cyflenwr
supplier_totals: Cyfanswm Cylch Archebu Cyflenwyr
percentage: "%{value} %"
supplier_totals_by_distributor: Cyfanswm Cylch Archebu Cyflenwyr fesul Dosbarthwr
totals_by_supplier: Cyfanswm Cylch Dosbarthu Archebion fesul Cyflenwr
customer_totals: Archebu Cyfansymiau Cwsmer Beicio
@@ -1704,12 +1723,6 @@ cy:
card_has_been_removed: "Dilëwyd eich cerdyn (rhif: %{number})"
card_could_not_be_removed: Mae'n ddrwg gennym, nid oedd yn bosib dileu'r cerdyn
invalid_credit_card: "Cerdyn credyd annilys"
ie_warning_headline: "Mae eich porwr yn hen :-("
ie_warning_text: "I gael y profiad gorau gyda'r Open Food Network rydym yn argymell yn gryf uwchraddio'ch porwr:"
ie_warning_chrome: Dadlwytho Chrome
ie_warning_firefox: Dadlwytho Firefox
ie_warning_ie: Uwchraddio Internet Explorer
ie_warning_other: "Methu uwchraddio'ch porwr? Rhowch gynnig ar y Open Food Network ar eich ffôn clyfar :-)"
legal:
cookies_policy:
header: "Sut Rydym yn Defnyddio Cwcis"
@@ -1851,20 +1864,15 @@ cy:
submit: Nesaf - Crynodeb o'r Archeb
cancel: Nôl at Eich Manylion
step3:
your_details:
title: Eich manylion
edit: Golygu Eich Manylion
billing_address:
title: Cyfeiriad bilio
shipping_address:
title: Cyfeiriad cludo
delivery_info:
title: Gwybodaeth cludo
delivery_details:
title: Manylion dosbarthu
edit: Golygu
address: Cyfeiriad dosbarthu
payment_method:
title: Dull talu
edit: Golygu'r Dull Talu
edit: Golygu
order:
title: Cyfanswm yr Archeb
edit: Golygu
terms_and_conditions:
message_html: "Rwy'n cytuno i %{terms_and_conditions_link} y gwerthwr."
link_text: "Telerau ac Amodau"
@@ -1873,11 +1881,9 @@ cy:
all_terms_and_conditions:
message_html: "Rwyf yn cytuno â %{terms_and_conditions_link}y gwerthwr a'r platfform %{tos_link}"
terms_and_conditions: "Telerau ac Amodau"
agree: Trwy glicio 'Cwblhau'r Archeb' rydych yn cytuno inni brosesu eich archeb.
submit: Cwblhau'r archeb
cancel: Nôl at y Dull Talu
errors:
global: "Wedi methu ei gadw, gofynnir ichi ddiweddaru'r meysydd a amlygwyd."
terms_not_accepted: Mae angen ichi dderbyn y Telerau ac Amodau
required: Ni chaniateir gadael maes yn wag
invalid_number: "Noder rhif ffôn dilys os gwelwch yn dda"
@@ -2578,6 +2584,7 @@ cy:
report_customers_cycle: "Cylch archebu "
report_customers_type: "Math o Adroddiad"
report_customers_csv: "Lawrlwytho fel csv"
report_customers: Cwsmer
report_producers: "Prynu bwyd"
report_type: "Math o Adroddiad"
report_hubs: "Hybiau"
@@ -2623,6 +2630,9 @@ cy:
report_header_hub_phone: "Rhif Ffôn yr Hyb"
report_header_hub_address_line1: "Llinell 1af Cyfeiriad yr Hyb"
report_header_hub_address_line2: "2ail Linell Cyfeiriad yr Hyb"
report_header_hub_address_city: "Maestref yr Hyb"
report_header_hub_address_zipcode: "Cod post yr Hyb"
report_header_hub_address_state_name: "Talaith/Sir yr Hyb"
report_header_code: Côd
report_header_paid: Wedi talu?
report_header_delivery: Dosbarthu?
@@ -2652,16 +2662,20 @@ cy:
report_header_taxable_items_total: "Cyfanswm Eitemau Trethadwy (%{currency_symbol})"
report_header_sales_tax: "Treth Gwerthu (%{currency_symbol})"
report_header_delivery_charge: "Tâl Dosbarthu (%{currency_symbol})"
report_header_tax: "Treth"
report_header_tax_on_delivery: "Treth ar Gyflenwi (%{currency_symbol})"
report_header_tax_on_fees: "Treth ar Ffioedd (%{currency_symbol})"
report_header_tax_category: "Categori Treth"
report_header_total_tax: "Cyfanswm Treth (%{currency_symbol})"
report_header_total_excl_tax: "Cyfanswm heb dreth (%{currency_symbol})"
report_header_total_incl_tax: "Cyfanswm gan gynnwys treth (%{currency_symbol})"
report_header_total_orders: "Cyfanswm nifer yr Archebion"
report_header_enterprise: Menter
report_header_customer: Cwsmer
report_header_customer_code: Cod Cwsmer
report_header_product: Cynnyrch
report_header_product_properties: Manylion Cynnyrch
report_header_product_tax_category: Categori Treth y Cynnyrch
report_header_quantity: Nifer
report_header_max_quantity: Uchafswm nifer
report_header_variant: Amrywiolyn
@@ -2674,6 +2688,7 @@ cy:
report_header_supplier: Cyflenwr
report_header_producer: Cynhyrchydd
report_header_producer_suburb: Maestref y Cynhyrchydd
report_header_producer_charges_sales_tax?: Cofrestrwyd ar gyfer GST/TAW
report_header_unit: Uned
report_header_group_buy_unit_quantity: Nifer Unedau Grŵp Prynu
report_header_cost: Cost
@@ -3518,9 +3533,6 @@ cy:
default_seo_title: "Teitl SEO diofyn"
default_meta_description: "Disgrifiad Meta diofyn"
default_meta_keywords: "Allweddeiriau Meta diofyn"
security_settings: "Gosodiadau Diogelwch"
allow_ssl_in_production: "Caniatáu defnyddio SSL yn y modd cynhyrchu"
allow_ssl_in_staging: "Caniatáu defnyddio SSL yn y modd llwyfannu"
currency_decimal_mark: "Marc degol arian cyfred"
currency_settings: "Gosodiadau Arian Parod"
currency_symbol_position: Noder "symbol arian cyfred cyn neu ar ôl swm doler?"
@@ -3529,7 +3541,6 @@ cy:
display_currency: "Arddangos arian cyfred"
choose_currency: "Dewis Arian Cyfred"
mail_method_settings: "Gosodiadau Dull Postio"
mail_settings_notice_html: "Nid yw'n bosib golygu rhai o'r gosodiadau canlynol, ac fe'u rhestrir yma at ddibenion dadfygio'n unig. Gellir eu newid trwy ddiweddaru cyfrinachau'r achos a'u darparu trwy ddefnyddio ofn-install . Cysylltwch <a href='https://github.com/openfoodfoundation/ofn-install'></a>â thîm byd-eang y Open Food Network am fanylion pellach."
general: "Cyffredinol"
enable_mail_delivery: "Galluogi Dosbarthu trwy'r Post"
send_mails_as: "Anfon eitemau drwy'r Post fel"
@@ -3652,6 +3663,7 @@ cy:
messages:
included_price_validation: "ni ellir dewis hwn oni bai bod gennych Barth Treth Diofyn"
blank: "ni chaniateir ei adael yn wag"
invalid_instagram_url: "Defnyddiwch yr enw defnyddiwr yn unig e.e. yr_athro"
layouts:
admin:
login_nav:
@@ -3735,6 +3747,10 @@ cy:
authorized: "Awdurdodwyd"
received: "Derbyniwyd"
canceled: "Canslwyd"
line_items:
index:
results_found: "Cafwyd hyd i%{number} canlyniad."
viewing: "Yn edrych ar %{start} i %{end}."
orders:
add_product:
cannot_add_item_to_canceled_order: "Nid yw'n bosib ychwanegu'r eitem i archeb a ganslwyd."
@@ -3951,6 +3967,9 @@ cy:
select_and_search: "Dewis hidlwyr a chlicio ar %{option} i gael mynediad i'ch data."
customer_names_message:
customer_names_tip: "Os cuddiwyd enwau cwsmeriaid ar gyfer archebion a gyflenwyd gennych, gallwch gysylltu â'r dosbarthwr a gofyn a yw'n bosib iddyn nhw ddiweddaru eu dewisiadau siop i ganiatáu i'w cyflenwyr weld enwau cwsmeriaid."
products_and_inventory:
all_products:
message: "Noder y caiff lefelau stoc eu hadrodd o restrau cynnyrch cyflenwyr yn unig. Os ydych yn defnyddior rhestr stoc i reoli maint eich stoc, caiff y gwerthoedd hyn eu hanwybyddu yn yr adroddiad hwn."
users:
index:
listing_users: "Yn rhestru Defnyddwyr"
@@ -4119,6 +4138,8 @@ cy:
thanks: "Diolch am archebu gyda ni."
track_information: "Gwybodaeth Tracio: %{tracking}"
track_link: "Dolen Tracio: %{url}"
picked_up_instructions: "Casglwyd eich archeb gan %{distributor}"
picked_up_subject: "Hysbysiad Casglu"
test_mailer:
test_email:
greeting: "Llongyfarchiadau!"
@@ -4311,11 +4332,16 @@ cy:
errors:
not_found:
title: "Nid yw'r dudalen rydych yn chwilio amdani'n bodoli (404)"
message_html: "<b>Rhowch gynnig arall</b> <p>. Hwyrach taw problem dros dro yw hon. Cliciwch y botwm yn ôl i ddychwelyd at y sgrin flaenorol, neu ewch yn ôl ir <a href='/'> Hafan </a>, a rhowch gynnig arall </p>. <b> Cysylltwch âr ddesg</b> <p>Gymorth os bydd y broblem yn parhau neu os bydd yn fater brys, cofiwch ddweud wrthym amdano. Mae ein manylion cyswllt ar gael ar dudalen Lleol <a href='https://openfoodnetwork.org/ofn-local/' target='blank'> y Rhwydwaith Bwyd Agored byd-eang </a>. </p> <p> Bydd o gymorth mawr inni os gallwch roi cymaint o fanylion â phosibl am y dudalen sydd ar goll.</p>"
internal_server_error:
title: "Mae'n ddrwg gennym, aeth rhywbeth o'i le (500)"
message_html: "<b>Rhowch gynnig arall</b> <p>. Hwyrach taw problem dros dro yw hon. Cliciwch y botwm yn ôl i ddychwelyd at y sgrin flaenorol, neu ewch yn ôl ir <a href='/''> Hafan </a>, a rhowch gynnig arall </p>. <b>Rydym yn gwybod am hyn</b><p>. Os ydych chi wedi gweld y broblem hon or blaen, maen debyg ein bod yn gwybod amdano, ac yn gweithio iw drwsio. Byddwn yn cofnodi pob nam sy'n digwydd.</p><b>Cysylltwch âr ddesg Gymorth</b><p>os bydd y broblem yn parhau neu os bydd yn fater brys, cofiwch ddweud wrthym amdano. Mae ein manylion cyswllt ar gael ar dudalen Lleol<a href='https://openfoodnetwork.org/ofn-local/' target='blank'>y Rhwydwaith Bwyd Agored byd-eang</a>. </p><p> Bydd o gymorth mawr inni os gallwch roi cymaint o fanylion â phosibl inni am yr hyn roeddech yn ei wneud pan ddigwyddodd y nam hwn.</p>"
unprocessable_entity:
title: "Gwrthodwyd y newid roeddech chi am ei wneud (422)"
message_html: "<p>Gwrthodwyd y newid roeddech chi am ei wneud. Hwyrach ichi geisio newid rhywbeth nad oes gennych fynediad ato.<br><h3><a href='/' >Ewch yn ôl ir Hafan.</a></h3></p>"
components:
multiple_checked_select:
filter_placeholder: "Opsiynau hidlo"
search_input:
placeholder: Chwilio
selector_with_filter:

View File

@@ -5,6 +5,10 @@ de_CH:
spree/product: Produkt
spree/shipping_method: Lieferoption
attributes:
spree/order/ship_address:
phone: "Telefonnummer (optional)"
firstname: "Vorname"
lastname: "Nachname"
spree/user:
password: "Passwort"
password_confirmation: "Passwort erneut eingeben"
@@ -408,11 +412,25 @@ de_CH:
price: Preis
producer: Produzent
category: Kategorie
sku: Artikelnummer
on_hand: "Verfügbar"
on_demand: "Unbegrenzt/auf Bestellung"
tax_category: "Steuerkategorie"
inherits_properties: "Übernimmt Eigenschaften des Ladens?"
available_on: "Verfügbar am"
import_date: "Importdatum"
columns_selector:
unit: Einheit
price: Preis
producer: Produzent
category: Kategorie
sku: Artikelnummer
on_hand: "Verfügbar"
on_demand: "Unbegrenzt/auf Bestellung"
tax_category: "Steuerkategorie"
inherits_properties: "Übernimmt Eigenschaften des Ladens?"
available_on: "Verfügbar am"
import_date: "Importdatum"
adjustments:
skipped_changing_canceled_order: "Eine stornierte Bestellung kann nicht geändert werden."
begins_at: Beginnt
@@ -1666,12 +1684,6 @@ de_CH:
card_has_been_removed: "Ihre Kreditkarte wurde entfernt (Nummer: %{number})."
card_could_not_be_removed: Die Kreditkarte konnte nicht entfernt werden.
invalid_credit_card: "Ungültige Kreditkarte"
ie_warning_headline: "Ihr Browser ist veraltet. :-("
ie_warning_text: "Für das beste Open-Food-Schweiz-Erlebnis empfehlen wir dringend, Ihren Browser zu aktualisieren:"
ie_warning_chrome: Chrome herunterladen
ie_warning_firefox: Firefox herunterladen
ie_warning_ie: Internet Explorer aktualisieren
ie_warning_other: "Können Sie Ihren Browser nicht aktualisieren? Versuchen Sie Open Food Schweiz auf Ihrem Smartphone! :-)"
legal:
cookies_policy:
header: "Wie wir Cookies verwenden"
@@ -1813,20 +1825,15 @@ de_CH:
submit: Weiter - Bestellübersicht
cancel: Zurück - Ihre Daten
step3:
your_details:
title: Ihre Daten
edit: Ihre Daten ändern
billing_address:
title: Rechnungsadresse
shipping_address:
title: Lieferadresse
delivery_info:
title: Abhol-/Lieferinformationen
delivery_details:
title: Lieferdetails
edit: Bearbeiten
address: Lieferadresse
payment_method:
title: Zahlungsart
edit: Zahlungsart ändern
edit: Bearbeiten
order:
title: Bestellübersicht
edit: Bearbeiten
terms_and_conditions:
message_html: "Ich stimme den %{terms_and_conditions_link} des Verkäufers zu."
link_text: "Allgemeinen Geschäftsbedingungen (AGB)"
@@ -1835,11 +1842,9 @@ de_CH:
all_terms_and_conditions:
message_html: "Ich stimme den %{terms_and_conditions_link} des Verkäufers und den %{tos_link} des Open Food Network zu."
terms_and_conditions: "Allgemeinen Geschäftsbedingungen (AGB)"
agree: Durch Klicken auf "Zahlungspflichtig bestellen" stimmen Sie der Verarbeitung Ihrer Bestellung zu.
submit: Zahlungspflichtig bestellen
cancel: Zurück - Zahlungsart
errors:
global: "Speichern fehlgeschlagen. Bitte prüfen Sie die markierten Felder."
terms_not_accepted: Bitte akzeptieren Sie die Allgemeinen Geschäftsbedingungen.
required: Feld darf nicht leer sein.
invalid_number: "Bitte geben Sie eine gültige Telefonnummer ein."
@@ -2536,6 +2541,7 @@ de_CH:
report_customers_cycle: "Bestellzyklus"
report_customers_type: "Berichtsart"
report_customers_csv: "Als csv-Datei herunterladen"
report_customers: Kunde
report_producers: "Unsere Produzenten"
report_type: "Berichtsart"
report_hubs: "Hubs"
@@ -2601,8 +2607,10 @@ de_CH:
report_header_taxable_items_total: "Steuerpflichtige Posten insgesamt (%{currency_symbol})"
report_header_sales_tax: "Umsatzsteuer (%{currency_symbol})"
report_header_delivery_charge: "Liefergebühr (%{currency_symbol})"
report_header_tax: "Steuern"
report_header_tax_on_delivery: "Steuer auf Lieferkosten (%{currency_symbol})"
report_header_tax_on_fees: "Steuer auf Gebühren (%{currency_symbol})"
report_header_tax_category: "Steuerkategorie"
report_header_total_tax: "Summe Steuern (%{currency_symbol})"
report_header_total_excl_tax: "Summe exkl. Steuern (%{currency_symbol})"
report_header_total_incl_tax: "Summe inkl. Steuern (%{currency_symbol})"
@@ -3423,9 +3431,6 @@ de_CH:
default_seo_title: "Standard SEO-Titel"
default_meta_description: "Standard Meta-Beschreibung"
default_meta_keywords: "Standard Meta-Schlüsselwörter"
security_settings: "Sicherheitseinstellungen"
allow_ssl_in_production: "Zulassen, dass SSL im Produktionsmodus verwendet wird"
allow_ssl_in_staging: "Zulassen, dass SSL im Staging-Modus verwendet wird"
currency_decimal_mark: "Dezimalzeichen der Währung"
currency_settings: "Währungseinstellungen"
currency_symbol_position: Währungssymbol (CHF) vor oder nach dem Betrag?
@@ -3434,7 +3439,6 @@ de_CH:
display_currency: "Währung anzeigen"
choose_currency: "Währung auswählen"
mail_method_settings: "E-Mail-Methodeneinstellungen"
mail_settings_notice_html: "Einige der folgenden Einstellungen können nicht geändert werden und werden hier nur zu Zwecken der Fehlerbehebung aufgeführt. Änderungen können vorgenommen werden, indem die Einstellungen der deutschen Instanz aktualisiert und mithilfe von <a href='https://github.com/openfoodfoundation/ofn-install'>ofn-install</a> bereitgestellt werden. Wenden Sie sich an das globale Team des Open Food Network, um weitere Informationen zu erhalten."
general: "Allgemeines"
enable_mail_delivery: "E-Mail-Versand aktivieren"
send_mails_as: "E-Mails senden als"
@@ -3639,6 +3643,10 @@ de_CH:
authorized: "Autorisiert"
received: "Empfangen"
canceled: "abgebrochen"
line_items:
index:
results_found: "%{number} Ergebnisse gefunden."
viewing: "Angezeigt wird %{start} bis %{end}."
orders:
add_product:
cannot_add_item_to_canceled_order: "Artikel kann nicht zu stornierter Bestellung hinzugefügt werden"

View File

@@ -5,6 +5,13 @@ de_DE:
spree/product: Produkt
spree/shipping_method: Lieferoption
attributes:
spree/order/ship_address:
address2: "Lieferadresse Adresszusatz"
country: "Lieferadresse Land"
phone: "Telefonnummer"
firstname: "Vorname"
lastname: "Nachname"
zipcode: "Lieferadresse Postleitzahl"
spree/user:
password: "Passwort"
password_confirmation: "Passwort erneut eingeben"
@@ -404,8 +411,11 @@ de_DE:
filters:
categories:
title: Lieferkategorien
selected_categories: "%{count} Kategorien ausgewählt"
producers:
title: Unsere Produzenten
selected_producers: "%{count} Produzenten ausgewählt"
per_page: "%{count} Produkte pro Seite"
colums: Spalten
columns:
name: Name
@@ -413,11 +423,25 @@ de_DE:
price: Preis
producer: Produzent
category: Kategorie
sku: Artikelnummer
on_hand: "Verfügbar"
on_demand: "Unbegrenzt/auf Bestellung"
tax_category: "Steuerkategorie"
inherits_properties: "Übernimmt Eigenschaften des Ladens?"
available_on: "Verfügbar am"
import_date: "Importdatum"
columns_selector:
unit: Einheit
price: Preis
producer: Produzent
category: Kategorie
sku: Artikelnummer
on_hand: "Verfügbar"
on_demand: "Unbegrenzt/auf Bestellung"
tax_category: "Steuerkategorie"
inherits_properties: "Übernimmt Eigenschaften des Ladens?"
available_on: "Verfügbar am"
import_date: "Importdatum"
adjustments:
skipped_changing_canceled_order: "Eine stornierte Bestellung kann nicht geändert werden."
begins_at: Beginnt
@@ -590,7 +614,7 @@ de_DE:
form_users:
users: "Benutzer"
form_about:
about: "Verkaufen"
about: "Über uns"
form_images:
images: "Bilder"
form_address:
@@ -642,13 +666,14 @@ de_DE:
model:
no_file: "Fehler: Es wurde keine Datei hochgeladen."
could_not_process: "Die Datei konnte nicht verarbeitet werden: Ungültiges Datenformat."
incorrect_value: Der eingetragene Wert ist fehlerhaft.
conditional_blank: Darf nicht leer sein, wenn das Feld 'unit_type' leer ist.
no_product: Es konnten keine passenden Produkte in der Datenbank gefunden werden.
not_found: Konnte nicht in der Datenbank gefunden werden.
incorrect_value: enthält einen fehlerhaften Wert.
conditional_blank: darf nicht leer sein, wenn das Feld 'unit_type' leer ist.
no_product: entspricht keinem passenden Produkt in der Datenbank.
not_found: konnte nicht in der Datenbank gefunden werden.
category_not_found: stimmt nicht mit den verfügbaren Kategorien überein. Diese finden Sie auf der Seite zum Produktimport. Überprüfen Sie zusätzlich Ihre Angaben auf Tippfehler.
not_updatable: Kann über den Produktimport nicht auf bestehende Produkte aktualisiert werden.
blank: darf nicht leer sein
not_updatable: kann über den Produktimport nicht für bestehende Produkte aktualisiert werden.
values_must_be_same: muss für gleichnamige Produkte gleich sein.
blank: darf nicht leer sein.
products_no_permission: Sie sind nicht berechtigt, Produkte dieses Unternehmens zu verwalten.
inventory_no_permission: Sie sind nicht berechtigt, für diesen Produzenten Produkte in den Katalog aufzunehmen.
none_saved: Es konnten keine Produkte erfolgreich gespeichert werden.
@@ -690,8 +715,8 @@ de_DE:
options_and_defaults: Importoptionen und Voreinstellungen
no_permission: Sie sind nicht berechtigt, dieses Unternehmen zu verwalten.
not_found: Das Unternehmen konnte nicht in der Datenbank gefunden werden.
no_name: Für einige Produkte ist kein Name definiert.
blank_enterprise: Für einige Produkte ist kein Unternehmen definiert.
no_name: Für einige Produkte ist kein Name angegeben.
blank_enterprise: Für einige Produkte ist kein Unternehmen angegeben.
reset_absent?: Fehlende Produkte zurücksetzen?
reset_absent_tip: Den Lagerbestand für alle nicht in der Datei vorhandenen Produkte auf Null setzen.
overwrite_all: Alle überschreiben
@@ -813,7 +838,7 @@ de_DE:
manage: Verwalten
form:
about_us:
legend: "Verkaufen"
legend: "Über uns"
desc_short: Kurzbeschreibung
desc_short_placeholder: Schreiben Sie etwas in ein oder zwei Sätzen über Ihr Unternehmen.
desc_long: Über uns
@@ -1257,7 +1282,7 @@ de_DE:
address: "Adresse"
contact: "Kontaktdaten"
social: "Soziale Medien"
about: "Verkaufen"
about: "Über uns"
business_details: "Geschäftsdetails"
images: "Bilder"
properties: "Eigenschaften"
@@ -1272,7 +1297,7 @@ de_DE:
enterprise_group:
primary_details: "Unternehmen"
users: "Benutzer"
about: "Verkaufen"
about: "Über uns"
images: "Bilder"
contact: "Kontaktdaten"
web: "Homepage"
@@ -1291,6 +1316,7 @@ de_DE:
total_by_customer: Gesamtsummen nach Kunden
total_by_supplier: Gesamtsummen nach Lieferanten
supplier_totals: Lieferantengesamtsummen
percentage: "%{value} %"
supplier_totals_by_distributor: Lieferantengesamtsummen nach Verteilstelle
totals_by_supplier: Verteilstellengesamtsummen nach Lieferanten
customer_totals: Kundengesamtsummen
@@ -1301,6 +1327,7 @@ de_DE:
addresses: Adressen
payment_methods: Zahlungsarten
delivery: Lieferungen
sales_tax_totals_by_producer: Umsatzsteuer nach Produzenten
tax_types: Steuerarten
tax_rates: Steuersätze
pack_by_customer: Packliste nach Kunden
@@ -1480,6 +1507,9 @@ de_DE:
stripe_connect_fail: Die Verbindung Ihres Stripe-Kontos ist fehlgeschlagen.
stripe_connect_settings:
resource: Konfiguration für Stripe Connect
resend_confirmation_emails_feedback:
one: "Bestätigungs-E-Mail für 1 Bestellung gesendet."
other: "E-Mail-Bestätigung wurde für %{count} Bestellungen gesendet."
api:
unknown_error: "Etwas ist schief gelaufen. Unser Team wurde benachrichtigt."
invalid_api_key: "Ungültiger API-Schlüssel (%{key}) angegeben."
@@ -1645,7 +1675,7 @@ de_DE:
use_geocoder: Breiten- und Längengrad automatisch aus der Adresse bestimmen
postcode: Postleitzahl
postcode_placeholder: z. B. 30701
suburb: Vorort
suburb: Ort
state: Bundesland
country: Land
unauthorized: Nicht autorisiert
@@ -1702,12 +1732,6 @@ de_DE:
card_has_been_removed: "Ihre Kreditkarte wurde entfernt (Nummer: %{number})."
card_could_not_be_removed: Die Kreditkarte konnte nicht entfernt werden.
invalid_credit_card: "Ungültige Kreditkarte"
ie_warning_headline: "Ihr Browser ist veraltet. :-("
ie_warning_text: "Für das beste Open-Food-Network-Erlebnis empfehlen wir dringend, Ihren Browser zu aktualisieren:"
ie_warning_chrome: Chrome herunterladen
ie_warning_firefox: Firefox herunterladen
ie_warning_ie: Internet Explorer aktualisieren
ie_warning_other: "Können Sie Ihren Browser nicht aktualisieren? Versuchen Sie Open Food Network auf Ihrem Smartphone! :-)"
legal:
cookies_policy:
header: "Wie wir Cookies verwenden"
@@ -1794,12 +1818,13 @@ de_DE:
split_checkout:
your_details_without_number: Ihre Daten
payment_method_without_number: Zahlungsart
order_summary_without_number: Bestellübersicht
order_summary_without_number: Bestellabschluss
already_ordered:
cart: "im Warenkorb"
message_html: "Sie haben bereits eine Bestellung für diesen Bestellzyklus. Überprüfen Sie den %{cart}, um die Artikel zu sehen, die Sie zuvor bestellt haben. Sie können Artikel auch stornieren, solange der Bestellzyklus geöffnet ist."
step1:
contact_information:
title: Kontaktdaten
email:
label: E-Mail-Adresse
phone:
@@ -1846,23 +1871,21 @@ de_DE:
save_card: Kreditkarte für zukünftige Verwendung speichern
create_new_card: oder geben Sie unten neue Kreditkartendetails ein
explaination: Sie können Ihre Bestellung im nächsten Schritt überprüfen und die endgültigen Kosten bestätigen.
submit: Weiter - Bestellübersicht
submit: Weiter - Bestellabschluss
cancel: Zurück - Ihre Daten
step3:
your_details:
title: Ihre Daten
edit: Ihre Daten ändern
billing_address:
title: Rechnungsadresse
shipping_address:
title: Lieferadresse
delivery_info:
title: Abhol-/Lieferinformationen
delivery_details:
title: Lieferdetails
edit: Bearbeiten
address: Liefer-/Abholinformationen
instructions: Informationen
payment_method:
title: Zahlungsart
edit: Zahlungsart ändern
edit: Bearbeiten
instructions: Informationen
order:
title: Bestellübersicht
edit: Bearbeiten
terms_and_conditions:
message_html: "Ich stimme den %{terms_and_conditions_link} des Verkäufers zu."
link_text: "Allgemeinen Geschäftsbedingungen (AGB)"
@@ -1871,11 +1894,10 @@ de_DE:
all_terms_and_conditions:
message_html: "Ich stimme den %{terms_and_conditions_link} des Verkäufers und den %{tos_link} des Open Food Network zu."
terms_and_conditions: "Allgemeinen Geschäftsbedingungen (AGB)"
agree: Durch Klicken auf "Zahlungspflichtig bestellen" stimmen Sie der Verarbeitung Ihrer Bestellung zu.
submit: Zahlungspflichtig bestellen
cancel: Zurück - Zahlungsart
errors:
global: "Speichern fehlgeschlagen. Bitte prüfen Sie die markierten Felder."
saving_failed: "Speichern fehlgeschlagen. Bitte prüfen Sie die markierten Felder. %{messages}"
terms_not_accepted: Bitte akzeptieren Sie die Allgemeinen Geschäftsbedingungen.
required: Feld darf nicht leer sein.
invalid_number: "Bitte geben Sie eine gültige Telefonnummer ein."
@@ -2576,6 +2598,7 @@ de_DE:
report_customers_cycle: "Bestellzyklus"
report_customers_type: "Berichtsart"
report_customers_csv: "Als csv-Datei herunterladen"
report_customers: Kunde
report_producers: "Unsere Produzenten"
report_type: "Berichtsart"
report_hubs: "Hubs"
@@ -2653,8 +2676,12 @@ de_DE:
report_header_taxable_items_total: "Steuerpflichtige Posten insgesamt (%{currency_symbol})"
report_header_sales_tax: "Umsatzsteuer (%{currency_symbol})"
report_header_delivery_charge: "Liefergebühr (%{currency_symbol})"
report_header_tax: "Steuern"
report_header_tax_on_delivery: "Steuer auf Lieferkosten (%{currency_symbol})"
report_header_tax_on_fees: "Steuer auf Gebühren (%{currency_symbol})"
report_header_tax_category: "Steuerkategorie"
report_header_tax_rate_name: "Steuersatzname"
report_header_tax_rate: "Steuersatz"
report_header_total_tax: "Summe Steuern (%{currency_symbol})"
report_header_total_excl_tax: "Summe exkl. Steuern (%{currency_symbol})"
report_header_total_incl_tax: "Summe inkl. Steuern (%{currency_symbol})"
@@ -2664,6 +2691,7 @@ de_DE:
report_header_customer_code: Kundennummer
report_header_product: Produkt
report_header_product_properties: Produkteigenschaften
report_header_product_tax_category: Steuerkategorie
report_header_quantity: Menge
report_header_max_quantity: Max Menge
report_header_variant: Produktvariante
@@ -2676,6 +2704,8 @@ de_DE:
report_header_supplier: Lieferant
report_header_producer: Produzent
report_header_producer_suburb: Produzentenort
report_header_producer_tax_status: Produzent berechnet Steuern
report_header_producer_charges_sales_tax?: Berechnet Steuern
report_header_unit: Einheit
report_header_group_buy_unit_quantity: Gruppenkauf Einheitsmenge
report_header_cost: Summe
@@ -2691,10 +2721,12 @@ de_DE:
report_header_distributor_address: Verteilstellenadresse
report_header_distributor_city: Verteilstellen-Stadt
report_header_distributor_postcode: Verteilstellen-Postleitzahl
report_header_distributor_tax_status: Verteilstelle berechnet Steuern
report_header_delivery_address: Lieferadresse
report_header_delivery_postcode: Lieferpostleitzahl
report_header_bulk_unit_size: Gruppenkauf-Einheit
report_header_weight: Gewicht
report_header_final_weight_volume: Tatsächliche Menge
report_header_height: Höhe
report_header_width: Breite
report_header_depth: Tiefe
@@ -2871,6 +2903,7 @@ de_DE:
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"
confirm: "Bestätigen"
close: "Schließen"
continue: "Weiter"
cancel: "Stornieren"
@@ -3401,6 +3434,8 @@ de_DE:
server_error: "Serverfehler"
shipping_method_names:
UPS Ground: "UPS Ground"
pick_up: "Abholung"
delivery: "Lieferung"
start_date: "Anfangsdatum"
successfully_removed: "Erfolgreich gelöscht"
taxonomy_edit: "Kategorien bearbeiten"
@@ -3477,9 +3512,6 @@ de_DE:
default_seo_title: "Standard SEO-Titel"
default_meta_description: "Standard Meta-Beschreibung"
default_meta_keywords: "Standard Meta-Schlüsselwörter"
security_settings: "Sicherheitseinstellungen"
allow_ssl_in_production: "Zulassen, dass SSL im Produktionsmodus verwendet wird"
allow_ssl_in_staging: "Zulassen, dass SSL im Staging-Modus verwendet wird"
currency_decimal_mark: "Dezimalzeichen der Währung"
currency_settings: "Währungseinstellungen"
currency_symbol_position: Währungssymbol (€) vor oder nach dem Betrag?
@@ -3488,7 +3520,7 @@ de_DE:
display_currency: "Währung anzeigen"
choose_currency: "Währung auswählen"
mail_method_settings: "E-Mail-Methodeneinstellungen"
mail_settings_notice_html: "Einige der folgenden Einstellungen können nicht geändert werden und werden hier nur zu Zwecken der Fehlerbehebung aufgeführt. Änderungen können vorgenommen werden, indem die Einstellungen der deutschen Instanz aktualisiert und mithilfe von <a href='https://github.com/openfoodfoundation/ofn-install'>ofn-install</a> bereitgestellt werden. Wenden Sie sich an das globale Team des Open Food Network, um weitere Informationen zu erhalten."
mail_settings_notice_html: "<b>Hier vorgenommene Änderungen sind nur vorübergehend</b> zum Debuggen und können in Zukunft rückgängig gemacht werden.<br> Dauerhafte Änderungen können vorgenommen werden, indem die Daten der Instanz aktualisiert und mithilfe von <a href='https://github.com/openfoodfoundation/ofn-install'>ofn-install bereitgestellt</a> werden. Wenden Sie sich für weitere Einzelheiten an das globale OFN-Team."
general: "Allgemeines"
enable_mail_delivery: "E-Mail-Versand aktivieren"
send_mails_as: "E-Mails senden als"
@@ -3578,7 +3610,7 @@ de_DE:
zipcode: Postleitzahl
weight: Gewicht (pro kg oder lb)
error_user_destroy_with_orders: "Benutzer mit abgeschlossenen Bestellungen dürfen nicht gelöscht werden."
cannot_create_payment_without_payment_methods: "Sie können keine Zahlung für eine Bestellung erstellen, ohne dass Zahlungsarten definiert sind."
cannot_create_payment_without_payment_methods: "Sie können keine Zahlung für eine Bestellung erstellen, wenn keine Zahlungsarten angelegt sind."
please_define_payment_methods: "Bitte definieren Sie zunächst die Zahlungsarten."
options: "Optionen"
has_no_shipped_units: "hat keine gelieferten Einheiten"
@@ -3611,6 +3643,7 @@ de_DE:
messages:
included_price_validation: "kann nur ausgewählt werden, wenn Sie eine Standardsteuerzone festgelegt haben"
blank: "darf nicht leer sein"
invalid_instagram_url: "darf nur den Benutzernamen enthalten, z. B. the_prof"
layouts:
admin:
login_nav:
@@ -3694,6 +3727,10 @@ de_DE:
authorized: "autorisiert"
received: "empfangen"
canceled: "storniert"
line_items:
index:
results_found: "%{number} Ergebnisse gefunden."
viewing: "Angezeigt wird %{start} bis %{end}."
orders:
add_product:
cannot_add_item_to_canceled_order: "Einer stornierten Bestellung können keine Produkte hinzugefügt werden. "
@@ -3717,6 +3754,7 @@ de_DE:
print_invoices: "Rechnungen drucken"
cancel_orders: "Bestellungen stornieren"
resend_confirmation: "Bestätigung erneut senden"
resend_confirmation_confirm_html: "Sind Sie sicher, dass Sie die E-Mail-Bestätigungen erneut senden wollen?"
selected:
zero: "Keine Bestellung ausgewählt"
one: "1 Bestellung ausgewählt"
@@ -3865,6 +3903,7 @@ de_DE:
title: "Neues Produkt"
new_product: "Neues Produkt"
supplier: "Lieferant"
supplier_select_placeholder: "Lieferant wählen"
product_name: "Produktname"
units: "Einheit"
value: "Menge"
@@ -3910,6 +3949,9 @@ de_DE:
select_and_search: "Treffen Sie Ihre Auswahl und klicken Sie auf %{option}, um den Bericht zu erstellen."
customer_names_message:
customer_names_tip: "Wenn Kundennamen für von Ihnen gelieferte Bestellungen ausgeblendet sind, können Sie sich an den Händler wenden und ihn bitten, seine Ladeneinstellungen anzupassen, damit seine Lieferanten Kundennamen anzeigen können."
products_and_inventory:
all_products:
message: "Beachten Sie, dass die gemeldeten Lagerbestände nur aus den Produktlisten der Lieferanten stammen. Wenn Sie den Katalog verwenden, um Ihre Lagerbestand zu verwalten, werden diese Werte in diesem Bericht ignoriert."
users:
index:
listing_users: "Benutzer verwalten"
@@ -4258,6 +4300,7 @@ de_DE:
search_input:
placeholder: Suche
selector_with_filter:
selected_items: "%{count} ausgewählt"
search_placeholder: Suche
pagination:
next: Nächste

View File

@@ -26,6 +26,23 @@ en:
spree/product: Product
spree/shipping_method: Shipping Method
attributes:
spree/order/ship_address:
address1: "Shipping address (Street + House number)"
address2: "Shipping address line 2"
city: "Shipping address city"
country: "Shipping address country"
phone: "Phone number"
firstname: "First name"
lastname: "Last name"
zipcode: "Shipping address postcode"
spree/order/bill_address:
address1: "Billing address (Street + House number)"
zipcode: "Billing address postcode"
city: "Billing address city"
country: "Billing address country"
firstname: "Billing address first name"
lastname: "Billing address last name"
phone: Customer phone
spree/user:
password: "Password"
password_confirmation: "Password confirmation"
@@ -475,11 +492,25 @@ en:
price: Price
producer: Producer
category: Category
sku: SKU
on_hand: "On Hand"
on_demand: "On Demand"
tax_category: "Tax Category"
inherits_properties: "Inherits Properties?"
available_on: "Available On"
import_date: "Import Date"
columns_selector:
unit: Unit
price: Price
producer: Producer
category: Category
sku: SKU
on_hand: "On Hand"
on_demand: "On Demand"
tax_category: "Tax Category"
inherits_properties: "Inherits Properties?"
available_on: "Available On"
import_date: "Import Date"
adjustments:
skipped_changing_canceled_order: "You can't change a cancelled order."
# Common properties / models
@@ -1373,6 +1404,7 @@ en:
total_by_customer: Total By Customer
total_by_supplier: Total By Supplier
supplier_totals: Order Cycle Supplier Totals
percentage: "%{value} %"
supplier_totals_by_distributor: Order Cycle Supplier Totals by Distributor
totals_by_supplier: Order Cycle Distributor Totals by Supplier
customer_totals: Order Cycle Customer Totals
@@ -1383,6 +1415,7 @@ en:
addresses: Addresses
payment_methods: Payment Methods Report
delivery: Delivery Report
sales_tax_totals_by_producer: Sales Tax Totals By Producer
tax_types: Tax Types
tax_rates: Tax Rates
pack_by_customer: Pack By Customer
@@ -1815,12 +1848,6 @@ en:
card_could_not_be_removed: Sorry, the card could not be removed
invalid_credit_card: "Invalid credit card"
ie_warning_headline: "Your browser is out of date :-("
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
ie_warning_chrome: Download Chrome
ie_warning_firefox: Download Firefox
ie_warning_ie: Upgrade Internet Explorer
ie_warning_other: "Can't upgrade your browser? Try Open Food Network on your smartphone :-)"
legal:
cookies_policy:
header: "How We Use Cookies"
@@ -1973,20 +2000,18 @@ en:
submit: Next - Order summary
cancel: Back to Your details
step3:
your_details:
title: Your details
edit: Edit your details
billing_address:
title: Billing address
shipping_address:
title: Shipping address
delivery_info:
title: Delivery info
delivery_details:
title: Delivery details
edit: Edit
address: Delivery address
instructions: Instructions
payment_method:
title: Payment method
edit: Edit payment method
edit: Edit
instructions: Instructions
order:
title: Order total
title: Order details
edit: Edit
terms_and_conditions:
message_html: "I agree to the seller's %{terms_and_conditions_link}."
link_text: "Terms and Conditions"
@@ -1995,11 +2020,10 @@ en:
all_terms_and_conditions:
message_html: "I agree to the seller's %{terms_and_conditions_link} and the platform %{tos_link}."
terms_and_conditions: "Terms and Conditions"
agree: By clicking 'Complete order' you agree to your order being processed.
submit: Complete order
cancel: Back to Payment method
errors:
global: "Saving failed, please update the highlighted fields."
saving_failed: "Saving failed, please update the highlighted fields. %{messages}"
terms_not_accepted: Please accept Terms and Conditions
required: Field cannot be blank
invalid_number: "Please enter a valid phone number"
@@ -2740,6 +2764,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
report_customers_cycle: "Order Cycle"
report_customers_type: "Report Type"
report_customers_csv: "Download as csv"
report_customers: Customer
report_producers: "Producers"
report_type: "Report Type"
report_hubs: "Hubs"
@@ -2818,8 +2843,12 @@ See the %{link} to find out more about %{sitename}'s features and to start using
report_header_taxable_items_total: "Taxable Items Total (%{currency_symbol})"
report_header_sales_tax: "Sales Tax (%{currency_symbol})"
report_header_delivery_charge: "Delivery Charge (%{currency_symbol})"
report_header_tax: "Tax"
report_header_tax_on_delivery: "Tax on Delivery (%{currency_symbol})"
report_header_tax_on_fees: "Tax on Fees (%{currency_symbol})"
report_header_tax_category: "Tax Category"
report_header_tax_rate_name: "Tax Rate Name"
report_header_tax_rate: "Tax Rate"
report_header_total_tax: "Total Tax (%{currency_symbol})"
report_header_total_excl_tax: "Total excl. tax (%{currency_symbol})"
report_header_total_incl_tax: "Total incl. tax (%{currency_symbol})"
@@ -2842,6 +2871,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
report_header_supplier: Supplier
report_header_producer: Producer
report_header_producer_suburb: Producer Suburb
report_header_producer_tax_status: Producer Tax Status
report_header_producer_charges_sales_tax?: GST/VAT Registered
report_header_unit: Unit
report_header_group_buy_unit_quantity: Group Buy Unit Quantity
@@ -2858,6 +2888,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
report_header_distributor_address: Distributor address
report_header_distributor_city: Distributor city
report_header_distributor_postcode: Distributor postcode
report_header_distributor_tax_status: Distributor Tax Status
report_header_delivery_address: Delivery Address
report_header_delivery_postcode: Delivery Postcode
report_header_bulk_unit_size: Bulk Unit Size
@@ -3577,6 +3608,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using
server_error: "Server error"
shipping_method_names:
UPS Ground: "UPS Ground"
pick_up: "Pick-up at the farm"
delivery: "Signed, sealed, delivered"
start_date: "Start date"
successfully_removed: "Successfully Removed"
taxonomy_edit: "Taxonomy edit"
@@ -3654,9 +3687,6 @@ See the %{link} to find out more about %{sitename}'s features and to start using
default_seo_title: "Default Seo Title"
default_meta_description: "Default Meta Description"
default_meta_keywords: "Default Meta Keywords"
security_settings: "Security Settings"
allow_ssl_in_production: "Allow SSL to be used in production mode"
allow_ssl_in_staging: "Allow SSL to be used in staging mode"
currency_decimal_mark: "Currency decimal mark"
currency_settings: "Currency Settings"
currency_symbol_position: Put "currency symbol before or after dollar amount?"
@@ -3666,7 +3696,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
choose_currency: "Choose Currency"
mail_method_settings: "Mail Method Settings"
mail_settings_notice_html: "Some of the following settings can't be edited and are listed here just for debugging purposes. Changes can be made by updating the instance's secrets and provisioning them using <a href='https://github.com/openfoodfoundation/ofn-install'>ofn-install</a>. Reach out to the OFN global team for further details."
mail_settings_notice_html: "<b>Changes made here will be temporary</b> for debugging only, and may get reverted in the future. <br>Permanent changes can be made by updating the instance's secrets and provisioning them using <a href='https://github.com/openfoodfoundation/ofn-install'>ofn-install</a>. Reach out to the OFN global team for further details."
general: "General"
enable_mail_delivery: "Enable Mail Delivery"
send_mails_as: "Send Mails As"
@@ -3889,6 +3919,10 @@ See the %{link} to find out more about %{sitename}'s features and to start using
authorized: "Authorized"
received: "Received"
canceled: "Canceled"
line_items:
index:
results_found: "%{number} Results found."
viewing: "Viewing %{start} to %{end}."
orders:
add_product:
cannot_add_item_to_canceled_order: "Cannot add item to canceled order"

View File

@@ -5,6 +5,10 @@ en_AU:
spree/product: Product
spree/shipping_method: Shipping Method
attributes:
spree/order/ship_address:
phone: "Phone number"
firstname: "First name"
lastname: "Last name"
spree/user:
password: "Password"
reset_password_token: Reset password token
@@ -309,11 +313,25 @@ en_AU:
price: Price
producer: Producer
category: Category
sku: SKU
on_hand: "On Hand"
on_demand: "On Demand"
tax_category: "Tax Category"
inherits_properties: "Inherits Properties?"
available_on: "Available On"
import_date: "Import Date"
columns_selector:
unit: Unit
price: Price
producer: Producer
category: Category
sku: SKU
on_hand: "On Hand"
on_demand: "On Demand"
tax_category: "Tax Category"
inherits_properties: "Inherits Properties?"
available_on: "Available On"
import_date: "Import Date"
begins_at: Begins At
begins_on: Begins On
customer: Customer
@@ -1499,12 +1517,6 @@ en_AU:
card_has_been_removed: "Your card has been removed (number: %{number})"
card_could_not_be_removed: Sorry, the card could not be removed
invalid_credit_card: "Invalid credit card"
ie_warning_headline: "Your browser is out of date :-("
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
ie_warning_chrome: Download Chrome
ie_warning_firefox: Download Firefox
ie_warning_ie: Upgrade Internet Explorer
ie_warning_other: "Can't upgrade your browser? Try Open Food Network on your smartphone :-)"
legal:
cookies_policy:
header: "How We Use Cookies"
@@ -1623,10 +1635,14 @@ en_AU:
card_year:
label: Year
step3:
your_details:
title: Your details
billing_address:
title: Billing address
delivery_details:
title: Delivery details
edit: Edit
address: Delivery address
payment_method:
edit: Edit
order:
edit: Edit
terms_and_conditions:
message_html: "I agree to the seller's %{terms_and_conditions_link}."
link_text: "Terms and Conditions"
@@ -2308,6 +2324,7 @@ en_AU:
report_customers_cycle: "Order Cycle"
report_customers_type: "Report Type"
report_customers_csv: "Download as csv"
report_customers: Customer
report_producers: "Producers"
report_type: "Report Type"
report_hubs: "Hubs"
@@ -2371,6 +2388,7 @@ en_AU:
report_header_delivery_charge: "Delivery Charge (%{currency_symbol})"
report_header_tax_on_delivery: "Tax on Delivery (%{currency_symbol})"
report_header_tax_on_fees: "Tax on Fees (%{currency_symbol})"
report_header_tax_category: "Tax Category"
report_header_total_tax: "Total Tax (%{currency_symbol})"
report_header_total_excl_tax: "Total excl. tax (%{currency_symbol})"
report_header_total_incl_tax: "Total incl. tax (%{currency_symbol})"
@@ -3114,9 +3132,6 @@ en_AU:
default_seo_title: "Default Seo Title"
default_meta_description: "Default Meta Description"
default_meta_keywords: "Default Meta Keywords"
security_settings: "Security Settings"
allow_ssl_in_production: "Allow SSL to be used in production mode"
allow_ssl_in_staging: "Allow SSL to be used in staging mode"
currency_decimal_mark: "Currency decimal mark"
currency_settings: "Currency Settings"
currency_symbol_position: Put "currency symbol before or after dollar amount?"
@@ -3319,6 +3334,10 @@ en_AU:
authorized: "Authorized"
received: "Received"
canceled: "Canceled"
line_items:
index:
results_found: "%{number} Results found."
viewing: "Viewing %{start} to %{end}."
orders:
index:
listing_orders: "Listing Orders"

View File

@@ -5,6 +5,10 @@ en_BE:
spree/product: Product
spree/shipping_method: Shipping Method
attributes:
spree/order/ship_address:
phone: "Phone number"
firstname: "First name"
lastname: "Last name"
spree/user:
password: "Password"
reset_password_token: Reset password token
@@ -283,11 +287,25 @@ en_BE:
price: Price
producer: Producer
category: Category
sku: SKU
on_hand: "On Hand"
on_demand: "On Demand"
tax_category: "Tax Category"
inherits_properties: "Inherits Properties?"
available_on: "Available On"
import_date: "Import Date"
columns_selector:
unit: Unit
price: Price
producer: Producer
category: Category
sku: SKU
on_hand: "On Hand"
on_demand: "On Demand"
tax_category: "Tax Category"
inherits_properties: "Inherits Properties?"
available_on: "Available On"
import_date: "Import Date"
begins_at: Begins At
begins_on: Begins On
customer: Customer
@@ -1393,12 +1411,6 @@ en_BE:
saving_credit_card: Saving credit card...
card_has_been_removed: "Your card has been removed (number: %{number})"
card_could_not_be_removed: Sorry, the card could not be removed
ie_warning_headline: "Your browser is out of date :-("
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
ie_warning_chrome: Download Chrome
ie_warning_firefox: Download Firefox
ie_warning_ie: Upgrade Internet Explorer
ie_warning_other: "Can't upgrade your browser? Try Open Food Network on your smartphone :-)"
legal:
cookies_policy:
header: "How We Use Cookies"
@@ -1511,10 +1523,14 @@ en_BE:
shipping_info:
title: Shipping info
step3:
your_details:
title: Your details
billing_address:
title: Billing address
delivery_details:
title: Delivery details
edit: Edit
address: Delivery address
payment_method:
edit: Edit
order:
edit: Edit
errors:
invalid_email: "Please enter a valid email address"
order_paid: PAID
@@ -2173,6 +2189,7 @@ en_BE:
report_customers_cycle: "Order Cycle"
report_customers_type: "Report Type"
report_customers_csv: "Download as csv"
report_customers: Customer
report_producers: "Producers"
report_type: "Report Type"
report_hubs: "Hubs"
@@ -2236,6 +2253,8 @@ en_BE:
report_header_delivery_charge: "Delivery Charge (%{currency_symbol})"
report_header_tax_on_delivery: "Tax on Delivery (%{currency_symbol})"
report_header_tax_on_fees: "Tax on Fees (%{currency_symbol})"
report_header_tax_category: "Tax Category"
report_header_tax_rate: "Tax Rate"
report_header_total_tax: "Total Tax (%{currency_symbol})"
report_header_total_excl_tax: "Total excl. tax (%{currency_symbol})"
report_header_total_incl_tax: "Total incl. tax (%{currency_symbol})"
@@ -2854,9 +2873,6 @@ en_BE:
default_seo_title: "Default Seo Title"
default_meta_description: "Default Meta Description"
default_meta_keywords: "Default Meta Keywords"
security_settings: "Security Settings"
allow_ssl_in_production: "Allow SSL to be used in production mode"
allow_ssl_in_staging: "Allow SSL to be used in staging mode"
currency_decimal_mark: "Currency decimal mark"
currency_settings: "Currency Settings"
currency_symbol_position: Put "currency symbol before or after euros amount?"
@@ -3008,6 +3024,10 @@ en_BE:
form:
product: "Product"
amount: "Amount"
line_items:
index:
results_found: "%{number} Results found."
viewing: "Viewing %{start} to %{end}."
orders:
index:
listing_orders: "Listing Orders"

View File

@@ -5,6 +5,13 @@ en_CA:
spree/product: Product
spree/shipping_method: Shipping/Pick-up Method
attributes:
spree/order/ship_address:
address2: "Shipping address line 2"
country: "Shipping address country"
phone: "Phone number"
firstname: "First name"
lastname: "Last name"
zipcode: "Shipping address postal code"
spree/user:
password: "Password"
password_confirmation: "Password confirmation"
@@ -404,8 +411,11 @@ en_CA:
filters:
categories:
title: Categories
selected_categories: "%{count} categories selected"
producers:
title: Producers
selected_producers: "%{count} producers selected"
per_page: "%{count} items per page"
colums: Columns
columns:
name: Name
@@ -413,11 +423,25 @@ en_CA:
price: Price
producer: Producer
category: Category
sku: SKU
on_hand: "On Hand"
on_demand: "On Demand"
tax_category: "Tax Category"
inherits_properties: "Inherits Properties?"
available_on: "Available"
import_date: "Import Date"
columns_selector:
unit: Unit
price: Price
producer: Producer
category: Category
sku: SKU
on_hand: "On Hand"
on_demand: "On Demand"
tax_category: "Tax Category"
inherits_properties: "Inherits Properties?"
available_on: "Available"
import_date: "Import Date"
adjustments:
skipped_changing_canceled_order: "You can't change a cancelled order."
begins_at: Begins At
@@ -648,6 +672,7 @@ en_CA:
not_found: not found in database
category_not_found: doesn't match allowed categories. See the correct categories to choose from on the product import page, or check that there's no misspelling.
not_updatable: cannot be updated on existing products via product import
values_must_be_same: must be the same for products with the same name
blank: can't be blank
products_no_permission: you do not have permission to manage products for this enterprise
inventory_no_permission: you do not have permission to create inventory for this producer
@@ -1478,6 +1503,9 @@ en_CA:
stripe_connect_fail: Sorry, the connection of your Stripe account failed
stripe_connect_settings:
resource: Stripe Connect configuration
resend_confirmation_emails_feedback:
one: "Confirmation email sent for 1 order."
other: "Confirmation emails sent for %{count} orders."
api:
unknown_error: "Something went wrong. Our team has been notified."
invalid_api_key: "Invalid API key (%{key}) specified."
@@ -1700,12 +1728,6 @@ en_CA:
card_has_been_removed: "Your card has been removed (number: %{number})"
card_could_not_be_removed: Sorry, the card could not be removed
invalid_credit_card: "Invalid credit card"
ie_warning_headline: "Your browser is out of date :-("
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
ie_warning_chrome: Download Chrome
ie_warning_firefox: Download Firefox
ie_warning_ie: Upgrade Internet Explorer
ie_warning_other: "Can't upgrade your browser? Try Open Food Network on your smartphone :-)"
legal:
cookies_policy:
header: "How We Use Cookies"
@@ -1798,6 +1820,7 @@ en_CA:
message_html: "You have an order for this order cycle already. Check the %{cart} to see the items you ordered before. You can also cancel items as long as the order cycle is open."
step1:
contact_information:
title: Contact information
email:
label: Email
phone:
@@ -1847,20 +1870,18 @@ en_CA:
submit: Next - Order Summary
cancel: Back to your details
step3:
your_details:
title: Your details
edit: Edit your details
billing_address:
title: Billing address
shipping_address:
title: Shipping address
delivery_info:
title: Delivery info
delivery_details:
title: Delivery details
edit: Edit
address: Delivery address
instructions: Instructions
payment_method:
title: Payment Method
edit: Edit payment method
edit: Edit
instructions: Instructions
order:
title: Order total
title: Order details
edit: Edit
terms_and_conditions:
message_html: "I agree to the seller's %{terms_and_conditions_link}."
link_text: "Terms and Conditions"
@@ -1869,11 +1890,10 @@ en_CA:
all_terms_and_conditions:
message_html: "I agree to the seller's %{terms_and_conditions_link} and the platform %{tos_link}"
terms_and_conditions: "Terms and Conditions"
agree: By clicking 'Complete order' you agree to your order being processed.
submit: Complete order
cancel: Back to Payment method
errors:
global: "Saving failed, please update the highlighted fields."
saving_failed: "Saving failed, please update the highlighted fields. %{messages}"
terms_not_accepted: Please accept Terms and Conditions
required: Field cannot be blank
invalid_number: "Please enter a valid phone number"
@@ -2574,6 +2594,7 @@ en_CA:
report_customers_cycle: "Order Cycle"
report_customers_type: "Report Type"
report_customers_csv: "Download as csv"
report_customers: Customer
report_producers: "Producers"
report_type: "Report Type"
report_hubs: "Hubs"
@@ -2651,8 +2672,11 @@ en_CA:
report_header_taxable_items_total: "Taxable Items Total (%{currency_symbol})"
report_header_sales_tax: "Sales Tax (%{currency_symbol})"
report_header_delivery_charge: "Delivery Charge (%{currency_symbol})"
report_header_tax: "Tax"
report_header_tax_on_delivery: "Tax on Delivery (%{currency_symbol})"
report_header_tax_on_fees: "Tax on Fees (%{currency_symbol})"
report_header_tax_category: "Tax Category"
report_header_tax_rate: "Tax Rate"
report_header_total_tax: "Total Tax (%{currency_symbol})"
report_header_total_excl_tax: "Total excl. tax (%{currency_symbol})"
report_header_total_incl_tax: "Total incl. tax (%{currency_symbol})"
@@ -2662,6 +2686,7 @@ en_CA:
report_header_customer_code: Customer Code
report_header_product: Product
report_header_product_properties: Product Properties
report_header_product_tax_category: Product Tax Category
report_header_quantity: Quantity
report_header_max_quantity: Max Quantity
report_header_variant: Variant
@@ -2674,6 +2699,7 @@ en_CA:
report_header_supplier: Supplier
report_header_producer: Producer
report_header_producer_suburb: Producer City/Town
report_header_producer_charges_sales_tax?: Tax registered
report_header_unit: Unit
report_header_group_buy_unit_quantity: Group Buy Unit Quantity
report_header_cost: Cost
@@ -2693,6 +2719,7 @@ en_CA:
report_header_delivery_postcode: Delivery Postal Code
report_header_bulk_unit_size: Bulk Unit Size
report_header_weight: Weight
report_header_final_weight_volume: Final (Weight/Volume)
report_header_height: Height
report_header_width: Width
report_header_depth: Depth
@@ -2869,6 +2896,7 @@ en_CA:
deleting_item_will_cancel_order: "This operation will result in one or more empty orders, which will be cancelled. Do you wish to proceed?"
modals:
got_it: "Got it"
confirm: "Confirm"
close: "Close"
continue: "Continue"
cancel: "Cancel"
@@ -3391,6 +3419,8 @@ en_CA:
server_error: "Server error"
shipping_method_names:
UPS Ground: "UPS Ground"
pick_up: "Pick-up at the farm"
delivery: "Signed, sealed, delivered"
start_date: "Start date"
successfully_removed: "Successfully Removed"
taxonomy_edit: "Taxonomy edit"
@@ -3467,9 +3497,6 @@ en_CA:
default_seo_title: "Default Seo Title"
default_meta_description: "Default Meta Description"
default_meta_keywords: "Default Meta Keywords"
security_settings: "Security Settings"
allow_ssl_in_production: "Allow SSL to be used in production mode"
allow_ssl_in_staging: "Allow SSL to be used in staging mode"
currency_decimal_mark: "Currency decimal mark"
currency_settings: "Currency Settings"
currency_symbol_position: Put "currency symbol before or after dollar amount?"
@@ -3478,7 +3505,7 @@ en_CA:
display_currency: "Display currency"
choose_currency: "Choose Currency"
mail_method_settings: "Mail Method Settings"
mail_settings_notice_html: "Some of the following settings can't be edited and are listed here just for debugging purposes. Changes can be made by updating the instance's secrets and provisioning them using <a href='https://github.com/openfoodfoundation/ofn-install'>ofn-install</a>. Reach out to the OFN global team for further details."
mail_settings_notice_html: "<b>Changes made here will be temporary</b> for debugging only, and may get reverted in the future. <br>Permanent changes can be made by updating the instance's secrets and provisioning them using <a href='https://github.com/openfoodfoundation/ofn-install'>ofn-install</a>. Reach out to the OFN global team for further details. "
general: "General"
enable_mail_delivery: "Enable Mail Delivery"
send_mails_as: "Send Mails As"
@@ -3601,6 +3628,7 @@ en_CA:
messages:
included_price_validation: "cannot be selected unless you have set a Default Tax Zone"
blank: "can't be blank"
invalid_instagram_url: "Must be user name only eg. the_prof"
layouts:
admin:
login_nav:
@@ -3684,6 +3712,10 @@ en_CA:
authorized: "Authorized"
received: "Received"
canceled: "Canceled"
line_items:
index:
results_found: " %{number} Results found."
viewing: "Viewing %{start} to %{end}."
orders:
add_product:
cannot_add_item_to_canceled_order: "You cannot add an item to a cancelled order."
@@ -3707,6 +3739,7 @@ en_CA:
print_invoices: "Print Invoices"
cancel_orders: "Cancel Orders"
resend_confirmation: "Resend Confirmation"
resend_confirmation_confirm_html: "This will resend the confirmation email to the customer. <br />Are you sure you want to proceed?"
selected:
zero: "No order selected"
one: "1 order selected"
@@ -3855,6 +3888,7 @@ en_CA:
title: "New Product"
new_product: "New Product"
supplier: "Supplier"
supplier_select_placeholder: "Select a supplier"
product_name: "Product Name"
units: "Unit Size"
value: "Value"
@@ -3900,6 +3934,9 @@ en_CA:
select_and_search: "Select filters and click on %{option} to access your data."
customer_names_message:
customer_names_tip: "If customer names are hidden for the items you have supplied, you can contact the seller and ask if they can update their preferences and allow you to view customer names."
products_and_inventory:
all_products:
message: "Note that stock levels reported are from supplier product lists only. If you are using Inventory to manage your stock quantities, these values will be ignored in this report. "
users:
index:
listing_users: "Listing Users"
@@ -4249,6 +4286,7 @@ en_CA:
search_input:
placeholder: Search
selector_with_filter:
selected_items: "%{count} selected"
search_placeholder: Search
pagination:
next: Next

View File

@@ -35,8 +35,6 @@ en_CH:
menu_5_url: "https://www.openfoodswitzerland.ch/"
menu_6_url: "https://www.openfoodswitzerland.ch"
menu_7_url: "https://www.openfoodswitzerland.ch/"
ie_warning_text: "For the best Open Food Switzerland experience, we strongly recommend upgrading your browser:"
ie_warning_other: "Can't upgrade your browser? Try Open Food Switzerland on your smartphone :-)"
legal:
cookies_policy:
disabling_cookies_desc: "As a user you can always allow, block or delete Open Food Switzerlands or any other website cookies whenever you want to through your browsers setting control. Each browser has a different operative. Here are the links:"

View File

@@ -5,6 +5,10 @@ en_DE:
spree/product: Product
spree/shipping_method: Shipping Method
attributes:
spree/order/ship_address:
phone: "Phone number"
firstname: "First name"
lastname: "Last name"
spree/user:
password: "Password"
reset_password_token: Reset password token
@@ -288,11 +292,25 @@ en_DE:
price: Price
producer: Producer
category: Category
sku: SKU
on_hand: "On Hand"
on_demand: "On Demand"
tax_category: "Tax Category"
inherits_properties: "Inherits Properties?"
available_on: "Available On"
import_date: "Import Date"
columns_selector:
unit: Unit
price: Price
producer: Producer
category: Category
sku: SKU
on_hand: "On Hand"
on_demand: "On Demand"
tax_category: "Tax Category"
inherits_properties: "Inherits Properties?"
available_on: "Available On"
import_date: "Import Date"
begins_at: Begins At
begins_on: Begins On
customer: Customer
@@ -1403,12 +1421,6 @@ en_DE:
saving_credit_card: Saving credit card...
card_has_been_removed: "Your card has been removed (number: %{number})"
card_could_not_be_removed: Sorry, the card could not be removed
ie_warning_headline: "Your browser is out of date :-("
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
ie_warning_chrome: Download Chrome
ie_warning_firefox: Download Firefox
ie_warning_ie: Upgrade Internet Explorer
ie_warning_other: "Can't upgrade your browser? Try Open Food Network on your smartphone :-)"
legal:
cookies_policy:
header: "How We Use Cookies"
@@ -1521,10 +1533,14 @@ en_DE:
shipping_info:
title: Shipping info
step3:
your_details:
title: Your details
billing_address:
title: Billing address
delivery_details:
title: Delivery details
edit: Edit
address: Delivery address
payment_method:
edit: Edit
order:
edit: Edit
errors:
invalid_email: "Please enter a valid email address"
order_paid: PAID
@@ -2182,6 +2198,7 @@ en_DE:
report_customers_cycle: "Order Cycle"
report_customers_type: "Report Type"
report_customers_csv: "Download as csv"
report_customers: Customer
report_producers: "Producers"
report_type: "Report Type"
report_hubs: "Hubs"
@@ -2245,6 +2262,7 @@ en_DE:
report_header_delivery_charge: "Delivery Charge (%{currency_symbol})"
report_header_tax_on_delivery: "Tax on Delivery (%{currency_symbol})"
report_header_tax_on_fees: "Tax on Fees (%{currency_symbol})"
report_header_tax_category: "Tax Category"
report_header_total_tax: "Total Tax (%{currency_symbol})"
report_header_total_excl_tax: "Total excl. tax (%{currency_symbol})"
report_header_total_incl_tax: "Total incl. tax (%{currency_symbol})"
@@ -2866,9 +2884,6 @@ en_DE:
default_seo_title: "Default Seo Title"
default_meta_description: "Default Meta Description"
default_meta_keywords: "Default Meta Keywords"
security_settings: "Security Settings"
allow_ssl_in_production: "Allow SSL to be used in production mode"
allow_ssl_in_staging: "Allow SSL to be used in staging mode"
currency_decimal_mark: "Currency decimal mark"
currency_settings: "Currency Settings"
currency_symbol_position: Put "currency symbol before or after dollar amount?"
@@ -3024,6 +3039,10 @@ en_DE:
form:
product: "Product"
amount: "Amount"
line_items:
index:
results_found: "%{number} Results found."
viewing: "Viewing %{start} to %{end}."
orders:
index:
listing_orders: "Listing Orders"

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