Compare commits

...

296 Commits

Author SHA1 Message Date
Pau Perez
defb6e4fa4 Update all locales with the latest Transifex translations 2020-08-28 13:19:39 +02:00
Pau Pérez Fabregat
62339de603 Merge pull request #5963 from coopdevs/fix-payment-translation
Fix payment translation
2020-08-28 11:20:24 +02:00
Pau Perez
9b2cb1c3ef Fix payment translation
One in the i18n key refers to singular/plural not the copy itself. Now
we see `Order #R587218174 -> Payment -> Cash on collection` instead of
`Order #R587218174 -> One -> Cash on collection`.
2020-08-28 10:06:19 +02:00
Pau Perez
58c0b1e0fd Update all locales with the latest Transifex translations 2020-08-28 09:51:53 +02:00
Maikel
2a71af7c6b Merge pull request #5944 from romale/patch-9
Missing translation key en.spree.activerecord.models.spree/payment.one
2020-08-28 09:48:46 +10:00
Maikel
819a445547 Merge pull request #5712 from mbudm/issue/5208
Add payment details to invoice
2020-08-28 09:46:49 +10:00
Maikel
d57f20a542 Merge pull request #4925 from luisramos0/finders
Adapt remaining AR finders to rails 4
2020-08-28 09:46:20 +10:00
Matt-Yorkley
28651bbecf Merge pull request #5941 from luisramos0/no_spree_specs
[Bye bye Spree] Make OFN independent of spec helpers under core/lib/testing_support
2020-08-27 17:05:45 +02:00
Pau Pérez Fabregat
06b41a8236 Merge pull request #5908 from Matt-Yorkley/subs-logging
Improve subs logging
2020-08-27 16:23:15 +02:00
Pau Pérez Fabregat
2fa8cd54fd Merge pull request #5769 from Matt-Yorkley/customer-names
Customer names in reports
2020-08-27 15:39:47 +02:00
Pau Pérez Fabregat
043e175fa1 Merge pull request #5952 from openfoodfoundation/transifex
Transifex
2020-08-27 13:51:31 +02:00
Pau Pérez Fabregat
a1b4c7fdf2 Merge pull request #5923 from openfoodfoundation/dependabot/bundler/jwt-2.2.2
Bump jwt from 2.2.1 to 2.2.2
2020-08-27 13:50:44 +02:00
Pau Pérez Fabregat
300e12371a Merge pull request #5918 from luisramos0/stripe_disabled
Do not add stripe JS code to layout if stripe is disabled at instance level
2020-08-27 13:27:40 +02:00
Transifex-Openfoodnetwork
8290acfd91 Updating translations for config/locales/es.yml 2020-08-27 18:15:46 +10:00
Transifex-Openfoodnetwork
a8bfedd847 Updating translations for config/locales/ca.yml 2020-08-27 18:15:32 +10:00
Pau Pérez Fabregat
6f33ae586e Merge pull request #5943 from luisramos0/spree_factories
[Bye bye Spree] Make OFN independent of all spree spec factories
2020-08-27 08:54:20 +02:00
Maikel
da1569abda Merge pull request #5914 from romale/patch-8
Missing translation key 'listing_reports'
2020-08-27 11:02:40 +10:00
Maikel
7ce9a3f988 Merge pull request #5894 from julesemmac/places-error
adding required argument to resolve Places error
2020-08-27 11:01:19 +10:00
Maikel
7a0b036edd Merge pull request #5899 from andrewpbrett/dashboard-link
Update dashboard link to point to enterprise shop
2020-08-27 10:53:43 +10:00
Maikel
d81ed36eef Merge pull request #5892 from arku/fix/price-i18n
Fix price translation in Bulk Order Management
2020-08-27 10:31:38 +10:00
Luis Ramos
23c86a1937 Replace select2_search usages with faster targetted_select2_search and remove select2_search and dependent code 2020-08-26 23:06:25 +01:00
Luis Ramos
fb88cfedcf Remove unused helpers 2020-08-26 22:49:52 +01:00
Luis Ramos
94d1d5f3ae Run rubocop -a on spec/factories 2020-08-26 22:18:40 +01:00
Luis Ramos
f9aac02e13 Run rubocop -a 2020-08-26 22:16:02 +01:00
Luis Ramos
274cdefa26 Remove commented code 2020-08-26 22:14:24 +01:00
Luis Ramos
9264badaaf Merge pull request #5879 from luisramos0/payments
[Bye bye Spree] Bring models payment_method, credit_card and gateway from spree_core
2020-08-26 22:09:16 +01:00
Pau Pérez Fabregat
152eb11913 Merge pull request #5940 from openfoodfoundation/transifex
Transifex
2020-08-26 09:12:58 +02:00
Pau Pérez Fabregat
0421d23e7b Merge pull request #5851 from cillian/osm-tile-provider-updates
Open Street Map tile provider updates
2020-08-25 10:51:55 +02:00
Transifex-Openfoodnetwork
5ce51a4abb Updating translations for config/locales/nb.yml 2020-08-25 18:23:24 +10:00
Transifex-Openfoodnetwork
1c7ce9997a Updating translations for config/locales/es.yml 2020-08-25 18:21:19 +10:00
Transifex-Openfoodnetwork
489665f3f9 Updating translations for config/locales/ca.yml 2020-08-25 18:21:04 +10:00
Maikel
cad79d74c8 Merge pull request #5696 from jeduardo824/enhancement/5210-action-buttons-on-all-tabs
Enhancement/5210 - Add Actions dropdown menu to all pages of Order Details menu
2020-08-25 15:39:50 +10:00
Transifex-Openfoodnetwork
f9e29c5aa7 Updating translations for config/locales/ar.yml 2020-08-25 07:24:29 +10:00
romale
ad9d9afd6a Update en.yml 2020-08-24 17:51:06 +03:00
Luis Ramos
41d67d8b2e Fix estimator spec 2020-08-23 18:07:01 +01:00
Luis Ramos
5568fd5826 Fix problem in order factory
We dont need the global zone
2020-08-23 17:40:54 +01:00
Luis Ramos
f6277416ce Simplify stock location factory and fix related issues in several factories 2020-08-23 17:34:02 +01:00
Luis Ramos
4de4cc642d Fix stock location factory 2020-08-23 17:34:02 +01:00
Luis Ramos
cd22361d13 Fix shipping category factory 2020-08-23 17:34:02 +01:00
Luis Ramos
1ddda92f4d Move factories from generic factories file to their respective factory file 2020-08-23 14:55:45 +01:00
Luis Ramos
4048957e2e Bring the final batch of factories from spree_core 2020-08-23 14:51:15 +01:00
Luis Ramos
2abbfad18c Remove the need to import both :role and :state factory to OFN 2020-08-23 14:47:30 +01:00
Luis Ramos
292199441a Fix problem with shipment's stock location creation 2020-08-23 14:35:59 +01:00
Luis Ramos
f56fa0b7a5 Bring calculator factories from spree_core 2020-08-23 14:35:59 +01:00
Luis Ramos
a432bbf789 Fix problem with shipping method's shipping category creation 2020-08-23 14:35:59 +01:00
Luis Ramos
6d9250c014 Bring tax category factory from spree_core and fix a problem with the stock location of the product factory 2020-08-23 14:35:59 +01:00
Luis Ramos
6d05de742e Fix problem with product shipping category factory 2020-08-23 14:35:59 +01:00
Luis Ramos
aa00756f9c Bring product factory from spree_core and merge with modification 2020-08-23 14:35:59 +01:00
Luis Ramos
ee65b4ba27 Bring taxon and taxonomy factories from spree_core 2020-08-23 14:35:59 +01:00
Luis Ramos
e2a865476d Bring adjustment factory from spree_core 2020-08-23 14:35:59 +01:00
Luis Ramos
9e7e63cc94 Bring line_item factory from spree_core 2020-08-23 14:35:59 +01:00
Luis Ramos
4dd1a52f8e Bring random_email and random description from spree_core factories 2020-08-23 14:35:59 +01:00
Luis Ramos
f6f6d9b46f Bring variant factory from spree_core and merge with modification 2020-08-23 14:35:59 +01:00
Luis Ramos
204e3979d9 Bring user factory from spree_core and merge with modification 2020-08-23 14:35:58 +01:00
Luis Ramos
ad8c41e0ad Bring shipping_method factory from spree_core and merge with modification 2020-08-23 14:35:58 +01:00
Luis Ramos
acb1c41461 Bring shipment factory from spree_core and merge with modification 2020-08-23 14:35:58 +01:00
Luis Ramos
859d34c235 Remove nice trick to reuse traits by copy pasting the traits to each of
the 3 factories

I cannot figure out out to make this work again...
2020-08-23 14:35:58 +01:00
Luis Ramos
8d74c69402 Bring order factory from spree_core and merge with modification 2020-08-23 14:35:58 +01:00
Luis Ramos
4ac6664502 Replace FactoryGirl with FactoryBot weverywhere 2020-08-23 14:35:58 +01:00
Luis Ramos
53a8fec181 Bring shipping_category factory from spree_core and merge with modification 2020-08-23 14:35:58 +01:00
Luis Ramos
313e6e2b45 Bring stock_location factory from spree_core and merge with modification 2020-08-23 14:35:58 +01:00
Luis Ramos
6819042489 Bring options factories from spree_core and merge with modification 2020-08-23 14:35:58 +01:00
Luis Ramos
e1fb13b491 Bring payment method factory from spree_core and merge with modification 2020-08-23 14:35:58 +01:00
Luis Ramos
aa9054659e Bring payment factory from spree_core and merge with modification 2020-08-23 14:35:56 +01:00
Luis Ramos
172a12d7d9 Bring credit_card factory from spree_core and merge with modification 2020-08-23 13:13:50 +01:00
Luis Ramos
e561bcc895 Bring address factory from spree_core and merge with modification 2020-08-23 13:13:11 +01:00
Luis Ramos
9390fd6ccb Remove all factories from spree so we can see exactly what factories we need to bring from spree_core 2020-08-23 13:10:00 +01:00
Luis Ramos
b227c78aeb Fix rubocop issues 2020-08-22 18:14:53 +01:00
Luis Ramos
a44d0f7af6 Add WebHelper where necessary 2020-08-22 18:14:53 +01:00
Luis Ramos
41a7e26fcd Remove unused helper 2020-08-22 18:14:53 +01:00
Luis Ramos
5cd40cb19f Remove dependency to Spree::TestingSupport code 2020-08-22 18:14:53 +01:00
Luis Ramos
907afe3131 Remove dependency to BarAbility from spree_core 2020-08-22 18:14:53 +01:00
Luis Ramos
261269bd57 Bring core/lib/spree/testing_support/i18n from spree_core to ofn as i18n_translations_checker 2020-08-22 18:14:53 +01:00
Luis Ramos
d0c07b931a Bring Spree::TestingSupport::Preferences from spree_core to ofn as PreferencesHelper 2020-08-22 16:50:12 +01:00
Luis Ramos
b6adef38e5 Remove unused auth helpers 2020-08-22 16:50:12 +01:00
Luis Ramos
0ca4d0842a Remove capybara_ext from spree and bring its helpers that are required in ofn 2020-08-22 16:50:12 +01:00
Transifex-Openfoodnetwork
e5395709cc Updating translations for config/locales/en_NZ.yml 2020-08-22 21:18:58 +10:00
Transifex-Openfoodnetwork
2515b1ae2c Updating translations for config/locales/en_IE.yml 2020-08-22 00:58:13 +10:00
Luis Ramos
9fd8613107 Update all locales with the latest Transifex translations 2020-08-21 14:56:26 +01:00
Luis Ramos
bea8c2035f Merge pull request #5909 from openfoodfoundation/transifex
Transifex
2020-08-21 14:54:49 +01:00
Luis Ramos
e616e32bbc Merge pull request #5931 from Matt-Yorkley/customer-totals-fees
Customer totals fee calculations
2020-08-21 14:09:00 +01:00
Luis Ramos
19b5a004dd Merge pull request #5877 from Matt-Yorkley/bugsnagger
BugsnagJS checkout errors
2020-08-21 14:01:48 +01:00
Luis Ramos
4a5a6a2242 Merge pull request #5906 from Matt-Yorkley/checkout_flash_errors
Fix flash error issues in checkout requests
2020-08-21 13:03:30 +01:00
Luis Ramos
d1b60e3778 Merge pull request #5905 from mkllnk/lost-decorators
Load previously lost decorator code and don't delete orders
2020-08-21 12:34:37 +01:00
Matt-Yorkley
2f1fdc5852 Simplify conditional statement 2020-08-21 12:12:30 +01:00
Maikel
31fe8850b5 Merge pull request #5913 from openfoodfoundation/luisramos0-patch-1
Remove spree upgrade section from the PR template ❤️
2020-08-21 16:35:09 +10:00
Maikel
0309a20cb1 Merge pull request #5904 from Matt-Yorkley/favicon
Fix broken favicon path
2020-08-21 14:05:00 +10:00
Matt-Yorkley
07b819ab4b Adjust payment state conditional
The `Spree::Order#paid?` method actually includes orders with `payment_state == "credit_owed"`, which was breaking the desired display logic here.
2020-08-20 17:16:20 +01:00
Steve Roberts
50fd3656ef Fix tests - the move of payments to shared has wider impact than first thought (yay tests) 2020-08-20 17:16:20 +01:00
Steve Roberts
4243ff293f Update invoice2 to also use the shared payment partial 2020-08-20 17:16:20 +01:00
Steve Roberts
c79f2326fc Fix some more issues raised by semaphore 2020-08-20 17:16:20 +01:00
Steve Roberts
ac69bef459 Fix issues raised by linter 2020-08-20 17:16:20 +01:00
Steve Roberts
debbf9b361 Modify payment_list partial to be shared
- Partial is used by both the invoice pdf and the order confirmation email
- separate scss file for new payment list table
- extracted outstanding balance logic (also changed in payments view.. admin/orders/RXXX/payments)
- translations in shared.payments_list and lazy loaded
2020-08-20 17:16:20 +01:00
Steve Roberts
1f470830c8 add vars to email.scss 2020-08-20 17:16:20 +01:00
Steve Roberts
a00e964eb6 Clean up scss - picked up by codeclimate 2020-08-20 17:16:20 +01:00
Steve Roberts
8e5cfdeb97 Add more details on payments to invoice. 2020-08-20 17:16:20 +01:00
Matt-Yorkley
9d772dbcc9 Merge pull request #5935 from luisramos0/fix_build
Fix master build - fix mail interceptor spec
2020-08-20 18:15:37 +02:00
Luis Ramos
0abcbc7b8f Fix specs in mail interceptor spec
This was due to an incompatibility between two recent PRs: 5763 and
5733. PR 5733 did not take into account 5763 (the confirm email method was removed) and so the specs introduced
were broken.
2020-08-20 12:52:54 +01:00
Matt-Yorkley
3badaa07d2 Fix adjustment calculations; only "eligible" adjustments should be regarded as applied to an order.
When an order is submitted and the payment fails, the failed payment's adjustments (payment fees) are set to `eligible: false` to indicate they do not apply. These should not be counted as being included in an order's adjustments.
2020-08-19 22:50:37 +01:00
Matt-Yorkley
977ab26b00 Add failing spec for payment fee calculation in customer totals report 2020-08-19 22:50:35 +01:00
Luis Ramos
d6160b5759 Merge pull request #5758 from luisramos0/order_updater
Bring Order Updater from spree_core
2020-08-19 20:47:27 +01:00
Luis Ramos
40d4ed2c95 Merge pull request #5733 from luisramos0/base_ctrl
Move lib/spree to OFN
2020-08-19 18:35:17 +01:00
Luis Ramos
72f5b1b251 Revert "Remove unreachable order recovery code"
This reverts commit 355c5f5c55.

This code is necessary to preserver cart contents across logins on
different browser sessions.
2020-08-19 17:36:36 +01:00
Luis Ramos
eb2d8e65ed Merge pull request #5910 from Matt-Yorkley/silky-mooth-sidebar-scrolling-for-danni
Add scrolling animate on sidebar hide
2020-08-19 11:47:39 +01:00
Maikel Linke
355c5f5c55 Remove unreachable order recovery code
Every page load creates a cart order if none is present. So when a user
logs in, they always have an order stored in their session. And
therefore, we never got to recover an old order.

We could have fixed the code to restore old orders. But as far as I can
tell, order recovery hasn't been working for years and I couldn't find
any issue requesting this feature.

If we wanted to implement order recovery, it should probably be designed
more carefully and included in the `current_order` method.
2020-08-19 12:06:58 +10:00
dependabot-preview[bot]
eb420d9eed Bump jwt from 2.2.1 to 2.2.2
Bumps [jwt](https://github.com/jwt/ruby-jwt) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/jwt/ruby-jwt/releases)
- [Changelog](https://github.com/jwt/ruby-jwt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jwt/ruby-jwt/compare/v2.2.1...v2.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-19 00:52:03 +00:00
Maikel Linke
bb3f958dd2 Remove redundant includes 2020-08-19 10:37:18 +10:00
Luis Ramos
d1ef0e0a0b Do not add stripe JS code to layout if stripe is disabled at instance level 2020-08-18 16:41:29 +01:00
romale
0efcf1536f Update en.yml 2020-08-17 23:10:43 +03:00
Luis Ramos
b367d4328e Remove spree upgrade section from the PR template ❤️ 2020-08-17 18:28:23 +01:00
Matt-Yorkley
ed346b3b54 Add scrolling animate on sidebar hide 2020-08-17 13:41:06 +01:00
Matt-Yorkley
290120d015 Fix broken favicon path
Ensures the non-fingerprinted version of the favicon will be used directly from `/public/favicon.ico`. Needed after recent changes to the Rails asset pipeline.
2020-08-17 11:59:22 +01:00
Matt-Yorkley
0fd163602d Rename method for clarity 2020-08-17 11:17:42 +01:00
Transifex-Openfoodnetwork
4c3a3d5d1a Updating translations for config/locales/en_GB.yml 2020-08-17 18:19:09 +10:00
Luis Ramos
f8146fb946 Adapt finders to rails 4 2020-08-16 16:50:54 +01:00
Luis Ramos
9771fd7f13 Merge pull request #5902 from openfoodfoundation/dependabot/bundler/bugsnag-6.16.0
Bump bugsnag from 6.15.0 to 6.16.0
2020-08-16 16:19:36 +01:00
Luis Ramos
6a61bf7656 Merge pull request #5898 from mkllnk/remove-diffy
Remove unused dependency diffy
2020-08-16 16:04:42 +01:00
Luis Ramos
9754d8d754 Merge pull request #5616 from openfoodfoundation/dependabot/bundler/paper_trail-7.1.3
Bump paper_trail from 5.2.3 to 7.1.3
2020-08-15 21:53:33 +01:00
Matt-Yorkley
91789494b0 Fix error: Unpermitted attribute: order_cycle_ids 2020-08-15 17:03:19 +01:00
Matt-Yorkley
2eda8789d1 Add user id logging to OrderCycle an Schedule PaperTrail entries 2020-08-15 14:49:08 +01:00
Matt-Yorkley
67a00173f8 Replace one-letter-variables in old spec and wrap long lines 2020-08-15 12:26:59 +01:00
Matt-Yorkley
5f8fc64b31 Move layout adjustment from view to CSS 2020-08-15 12:18:41 +01:00
Matt-Yorkley
2f5efc86ee Add missing include 2020-08-14 20:48:33 +01:00
Matt-Yorkley
102df28e97 Extract data masking to service 2020-08-14 20:48:33 +01:00
Matt-Yorkley
0b91991919 Add explanatory user message for viewing customer names 2020-08-14 20:48:33 +01:00
Matt-Yorkley
9a9538dace Don't hide customer names if enterprise has enabled :allow_customer_names perference 2020-08-14 20:48:33 +01:00
Matt-Yorkley
23bb72faa6 Add Enterprise shop preference to allow customer names in reports 2020-08-14 20:48:32 +01:00
Matt-Yorkley
ce5bcaaa20 Explicitly notify Bugsnag on checkout failure 2020-08-14 18:06:30 +01:00
Matt-Yorkley
de22ad0000 Fix flash error issues in checkout requests 2020-08-14 12:41:56 +01:00
Maikel Linke
23706ec1d6 Load our version of the Spree environment
We didn't actually change any logic in our version of the Spree
environment file but if we do that in the future, we want to be sure
that it takes effect. Our file was ignored and not loaded before.
2020-08-14 15:38:10 +10:00
Maikel Linke
c3e0f45f1a Remove unused Report class from lib
Also removing related unused classes and their specs.
2020-08-14 15:38:10 +10:00
Maikel Linke
0a1947ae34 Remove unused module from lib
I was looking for library files that may be used but are not loaded.
I would then add the missing `require` statements. But I found that this
module isn't used any more.

Usage removed in:
310d1b3726
2020-08-14 15:38:10 +10:00
Maikel Linke
b79c568b08 Load our spree overrides instead of the originals
We changed some of Spree's logic and want to use that. And once we
remove the spree_core gem, we need to load those files before using
them.
2020-08-14 15:38:00 +10:00
Maikel Linke
e8139d3948 Keep old incomplete (cart) orders
We used to delete old cart orders so that they wouldn't re-appear after
a successful checkout of another order. Keeping them ensures that we
don't remove an order that is still used by another device. It also
makes sure that we keep references of failed payments.
2020-08-14 10:02:48 +10:00
Maikel Linke
5761014205 Restore Spree customisations for controllers 2020-08-13 16:59:15 +10:00
Maikel Linke
90bf4f312b Document and spec current controller behaviour
When we imported and merged Spree's controller modules with our
decorators, Rails started using Spree's original code again.

This was first included in v3.2.0 and deployed on 28 July 2020.
2020-08-13 16:59:15 +10:00
Maikel Linke
63a9765fea Update rubocop todo lists 2020-08-13 16:33:47 +10:00
dependabot-preview[bot]
5c6cb4840e Bump bugsnag from 6.15.0 to 6.16.0
Bumps [bugsnag](https://github.com/bugsnag/bugsnag-ruby) from 6.15.0 to 6.16.0.
- [Release notes](https://github.com/bugsnag/bugsnag-ruby/releases)
- [Changelog](https://github.com/bugsnag/bugsnag-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bugsnag/bugsnag-ruby/compare/v6.15.0...v6.16.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-13 01:56:14 +00:00
Maikel Linke
271d1ec103 Update translations from Transifex 2020-08-13 10:52:55 +10:00
Maikel
2271a57ffe Merge pull request #5880 from openfoodfoundation/transifex
Transifex
2020-08-13 10:35:00 +10:00
Andy Brett
7c223a43fc remove unused key from en.yml 2020-08-12 12:59:38 -07:00
Andy Brett
d46fad3a02 remove map reference 2020-08-12 12:33:15 -07:00
Andy Brett
c75a864ff2 link to the enterprise's shop instead of a full map 2020-08-12 12:21:07 -07:00
Transifex-Openfoodnetwork
95e048b37f Updating translations for config/locales/en_CA.yml 2020-08-13 02:50:37 +10:00
Maikel Linke
99ca0adf64 Remove unused dependency diffy
It was used to show differences in the product cache. But we removed the
cache in ab330e882e and the gem hasn't
been used since.
2020-08-12 13:10:51 +10:00
Maikel
a8207128df Merge pull request #5889 from Matt-Yorkley/suppress-selenium-warings
Suppress Selenium warnings in test log output.
2020-08-12 11:29:30 +10:00
Transifex-Openfoodnetwork
47bde1e77c Updating translations for config/locales/tr.yml 2020-08-12 00:50:03 +10:00
Matt-Yorkley
0edeb82c32 Update spec/spec_helper.rb
Co-authored-by: Maikel <maikel@email.org.au>
2020-08-11 14:02:49 +02:00
julesemmac
dee34d1f26 adding required argument to resolve Places error 2020-08-10 23:19:21 -04:00
Transifex-Openfoodnetwork
acf984699e Updating translations for config/locales/en_US.yml 2020-08-11 12:02:26 +10:00
Arun Kumar Mohan
13bf7497a9 Fix price translation in Bulk Order Management 2020-08-10 18:26:09 -05:00
Pau Pérez Fabregat
70e2fb759c Merge pull request #5751 from luisramos0/subs_jobs
Add rescue statements with bugsnag alerts to subs jobs
2020-08-10 12:50:54 +02:00
Eduardo
a860b5ea42 remove unnecessary code 2020-08-09 20:45:33 -03:00
Matt-Yorkley
74252e9d13 Suppress Selenium warnings in test log output. 2020-08-09 14:02:07 +01:00
Luis Ramos
09b7aa134b Ammend payment method spec and specify a calculator so that the default calculator is not the spree one that is based on a calculator that does not exist in OFN: Spree::Calculator::FlatRate 2020-08-07 18:36:59 +01:00
Luis Ramos
78fbac8ff2 Merge pull request #5882 from coopdevs/fix-doc-ocd
Fix docs OCD in Gemfile
2020-08-07 16:38:40 +01:00
Pau Perez
4e22787386 Fix docs OCD in Gemfile
@luisramos0 and I can't cope with reading TWO and seeing THREE items listed.
2020-08-07 17:20:14 +02:00
Transifex-Openfoodnetwork
f6c85af4da Updating translations for config/locales/fr.yml 2020-08-08 00:21:32 +10:00
Luis Ramos
49a60374e6 Remove dead method in payment method, it's a scope in OFN and remove unnecessary comments about spree 2020-08-07 14:14:46 +01:00
Luis Ramos
1b66a72c7f Run transpec 2020-08-07 14:03:15 +01:00
Luis Ramos
798194c03e Fix payment_method spec 2020-08-07 14:02:05 +01:00
Luis Ramos
b21a969502 Fix new credit_card_spec 2020-08-07 13:45:25 +01:00
Luis Ramos
d746ae3d9e Fix easy rubocop issues 2020-08-07 13:28:09 +01:00
Luis Ramos
621e2a3132 Run rubocop autocorrect 2020-08-07 13:16:38 +01:00
Luis Ramos
142bab8c35 Merge decorators with original spree files 2020-08-07 13:13:43 +01:00
Luis Ramos
abaa66cc14 Bring models from spree_core 2020-08-07 13:06:16 +01:00
Matt-Yorkley
1123e08a98 Update BugsnagJS to latest version and update initialization syntax 2020-08-07 12:59:33 +01:00
Matt-Yorkley
3a2802f5aa Merge pull request #5871 from coopdevs/fix-paypal-ssl-error
Point better_spree_paypal_express to its latest commit
2020-08-07 11:43:52 +02:00
Matt-Yorkley
766b7449d8 Update all locales with the latest Transifex translations 2020-08-07 10:00:21 +01:00
Matt-Yorkley
2caa559869 Merge pull request #5860 from openfoodfoundation/transifex
Transifex
2020-08-07 10:58:25 +02:00
Luis Ramos
04feccaef3 Merge pull request #5863 from romale/patch-7
Missing translation key 'item', 'qty'
2020-08-07 09:22:34 +01:00
Pau Pérez Fabregat
dfc31b9338 Merge pull request #5864 from openfoodfoundation/dependabot/bundler/ddtrace-0.39.0
Bump ddtrace from 0.38.0 to 0.39.0
2020-08-07 08:22:17 +02:00
Pau Perez
2ccb7c3eb0 Point spree_paypal_express to its latest commit
This brings in the fix for the intermittent PayPal connection failures
due to SSL verification failed. Checkout that gem's commit for details.
2020-08-07 08:18:24 +02:00
Transifex-Openfoodnetwork
f92d05656c Updating translations for config/locales/en_FR.yml 2020-08-06 17:17:36 +10:00
Transifex-Openfoodnetwork
1e2c092b70 Updating translations for config/locales/fr.yml 2020-08-06 17:14:33 +10:00
dependabot-preview[bot]
6e626447d0 Bump ddtrace from 0.38.0 to 0.39.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.38.0 to 0.39.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.38.0...v0.39.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-05 23:48:20 +00:00
Luis Ramos
f14bb280c1 Merge pull request #5680 from cillian/prevent-blank-open-street-map
If no enterprises have been geocoded yet make sure Open Street Map displays correctly
2020-08-05 20:27:40 +01:00
Luis Ramos
f093656c6b Merge pull request #5763 from luisramos0/mailers
Bring Mailers from Spree and make order shipped email translatable
2020-08-05 18:09:12 +01:00
romale
dd86e00913 Update en.yml 2020-08-05 18:17:14 +03:00
Transifex-Openfoodnetwork
b2309f8673 Updating translations for config/locales/en_FR.yml 2020-08-06 00:21:16 +10:00
Transifex-Openfoodnetwork
5404efcbce Updating translations for config/locales/fr.yml 2020-08-06 00:21:09 +10:00
Luis Ramos
d8acf90240 Merge pull request #5770 from openfoodfoundation/revert-5601-enhancement/5454-links-to-shops-in-new-tabs
Revert "Enhancement/5454 make links to shops under Groups > Producers open in new tab"
2020-08-05 11:51:48 +01:00
Luis Ramos
6cc296926c Merge pull request #5847 from rmklaus12/5579-missing-translation-subscriptions
5579 missing translation subscriptions
2020-08-05 11:29:34 +01:00
Pau Pérez Fabregat
6e1dd78e9f Merge pull request #5828 from luisramos0/ent_user
Clean up AuthenticationWorkflow spec helper
2020-08-04 12:07:54 +02:00
Pau Perez
6e39ab779c Make RSpec infer the file type from its location
Apparently, although we tend to add the type of spec file some RSpec
methods are not working without it. We're getting:

```
NoMethodError:
  undefined method `helper' for RSpec::ExampleGroups::SpreeSharedOrderDetailsHtmlHaml:Class
```

```
NameError:
   undefined local variable or method `controller' for #<RSpec::ExampleGroups::SpreeAdminUsersController::AuthorizeAdmin:0x00007fa8b32addf8>
 # ./spec/controllers/spree/admin/users_controller_spec.rb:10:in `block (3 levels) in <top (required)>'
```

It needs more investigation but another day.
2020-08-04 11:24:49 +02:00
Transifex-Openfoodnetwork
8792ec1de3 Updating translations for config/locales/es.yml 2020-08-04 18:14:45 +10:00
Transifex-Openfoodnetwork
b91f1578c9 Updating translations for config/locales/ca.yml 2020-08-04 18:14:27 +10:00
Pau Pérez Fabregat
9b91c490cb Merge pull request #5859 from openfoodfoundation/transifex
Transifex
2020-08-04 10:13:37 +02:00
Transifex-Openfoodnetwork
e8ba44f958 Updating translations for config/locales/en_FR.yml 2020-08-04 17:27:10 +10:00
Transifex-Openfoodnetwork
800ac0cabf Updating translations for config/locales/fr.yml 2020-08-04 17:26:53 +10:00
Pau Perez
9ef59f440b Remove commented out includes 2020-08-04 08:50:14 +02:00
Pau Perez
61c14cb61d Remove unneeded RSpec config block
Spec files individually include the module and we specify the type of
spec in each RSpec's describe so none of this settings are needed. They
are just Spree's legacy I bet.
2020-08-04 08:48:08 +02:00
Pau Pérez Fabregat
467fa7e566 Merge pull request #5856 from openfoodfoundation/transifex
Transifex
2020-08-04 08:37:32 +02:00
Pau Pérez Fabregat
ef48187332 Merge pull request #5745 from openfoodfoundation/dependabot/bundler/rswag-2.3.1
Bump rswag from 2.2.0 to 2.3.1
2020-08-04 08:00:32 +02:00
Luis Ramos
425901fa7a Add some paragraphs and breaklines to the tempalte that used to be text and is now html
This template needs to be revisited, this is just a quick fix
2020-08-03 16:43:11 +01:00
Luis Ramos
6e57e1ad56 Fix conflict between unused Spree::CheckoutHelper in spree_core and the required ::CheckoutHelper in OFN
The OFN checkoutHelper was not being included and instead the Spree::CheckoutHelper, that doesnt have the necessary helpers, was used
2020-08-03 16:25:18 +01:00
Luis Ramos
6b4a518371 Merge pull request #5845 from romale/patch-6
Missing translation key for "height", "width", "depth"
2020-08-03 16:02:20 +01:00
Cillian O'Ruanaidh
e6ab2ae753 Remove unused positiveAngles and negativeAngles arrays from map centre calculator service.
I forgot to remove these when I was refactoring this earlier.
2020-08-03 15:12:40 +01:00
Transifex-Openfoodnetwork
c97fc45109 Updating translations for config/locales/nb.yml 2020-08-03 22:53:31 +10:00
Transifex-Openfoodnetwork
1d44d463e7 Updating translations for config/locales/tr.yml 2020-08-03 22:48:36 +10:00
Luis Ramos
13b72154fa Merge pull request #5852 from openfoodfoundation/dependabot/bundler/activerecord-import-1.0.6
Bump activerecord-import from 1.0.5 to 1.0.6
2020-08-03 11:54:00 +01:00
dependabot-preview[bot]
619e13ccba Bump rswag from 2.2.0 to 2.3.1
Bumps [rswag](https://github.com/rswag/rswag) from 2.2.0 to 2.3.1.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.2.0...2.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-03 08:32:45 +00:00
Pau Pérez Fabregat
bc66c10a52 Merge pull request #5848 from openfoodfoundation/transifex
Transifex
2020-08-03 09:59:12 +02:00
Pau Pérez Fabregat
06e77372be Merge pull request #5842 from openfoodfoundation/dependabot/bundler/bugsnag-6.15.0
Bump bugsnag from 6.14.0 to 6.15.0
2020-08-03 09:58:52 +02:00
Eduardo
422958ed6f create specific spec for order links partial 2020-08-02 20:02:36 -03:00
Eduardo
51f39ee89d move coffee directive to partial 2020-08-02 20:01:49 -03:00
dependabot-preview[bot]
e615674541 Bump bugsnag from 6.14.0 to 6.15.0
Bumps [bugsnag](https://github.com/bugsnag/bugsnag-ruby) from 6.14.0 to 6.15.0.
- [Release notes](https://github.com/bugsnag/bugsnag-ruby/releases)
- [Changelog](https://github.com/bugsnag/bugsnag-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bugsnag/bugsnag-ruby/compare/v6.14.0...v6.15.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-01 14:57:18 +00:00
dependabot-preview[bot]
ff82a1b73f Bump activerecord-import from 1.0.5 to 1.0.6
Bumps [activerecord-import](https://github.com/zdennis/activerecord-import) from 1.0.5 to 1.0.6.
- [Release notes](https://github.com/zdennis/activerecord-import/releases)
- [Changelog](https://github.com/zdennis/activerecord-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zdennis/activerecord-import/compare/v1.0.5...v1.0.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-01 07:31:53 +00:00
Cillian O'Ruanaidh
ef7c7a3e73 Upgrade vendored :leaflet-providers JS to 1.10.2 to update available OSM tile providers and fix deprecated MapBox endpoint.
Before MapBox could no longer be used as an OSM tile provider as they recently deprecated their tile API endpoint (https://blog.mapbox.com/deprecating-studio-classic-styles-d8892ac38cb4)

This update of leaflet-providers from 1.9.1 to 1.10.2 uses the new MapBox endpoint, it also adds new tile providers and removes some ones no longer supported. See https://github.com/leaflet-extras/leaflet-providers/blob/master/CHANGELOG.md#1102-2020-07-31
2020-07-31 20:18:15 +01:00
Cillian O'Ruanaidh
3c23952fd6 Don't double escape :open_street_map_provider_options so they are parsed into a JS object rather than a string.
Before if you entered '{ accessToken: secret }' into the open street map provider options field in the admin content settings the 'JSON.parse(openStreetMapConfig.open_street_map_provider_options)' call in the open_street_map directive was converting them into a string because they were double escaped. They need to be converted into a JS object in order to set the Leaflet provider options.
2020-07-31 20:08:09 +01:00
Transifex-Openfoodnetwork
9d1e12da68 Updating translations for config/locales/en_FR.yml 2020-07-31 18:11:19 +10:00
Transifex-Openfoodnetwork
aae0a6533a Updating translations for config/locales/fr.yml 2020-07-31 18:10:57 +10:00
Luis Ramos
85e9819c3b Make more translation keys use lazy look ups 2020-07-31 09:00:48 +01:00
Transifex-Openfoodnetwork
1ea06763f8 Updating translations for config/locales/es.yml 2020-07-31 17:00:19 +10:00
Transifex-Openfoodnetwork
5064769717 Updating translations for config/locales/ca.yml 2020-07-31 16:59:55 +10:00
Robin Klaus
581a246b4f Added translation key for subscriptions heading 2020-07-31 16:29:04 +10:00
romale
27404872de Missing translation key for "height", "width", "depth"
When edit product in path admin/products/PRODUCT_NAME/varians/NN/edit
2020-07-31 00:20:55 +03:00
dependabot-preview[bot]
18cb0e0980 Bump paper_trail from 5.2.3 to 7.1.3
Bumps [paper_trail](https://github.com/airblade/paper_trail) from 5.2.3 to 7.1.3.
- [Release notes](https://github.com/airblade/paper_trail/releases)
- [Changelog](https://github.com/paper-trail-gem/paper_trail/blob/master/CHANGELOG.md)
- [Commits](https://github.com/airblade/paper_trail/compare/v5.2.3...v7.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-30 16:56:15 +00:00
Pau Perez
c923edd3bb Replace hardcoded URL with path helper 2020-07-29 11:36:49 +02:00
Pau Perez
be3a10b2b1 Fix some easy rubocop issues 2020-07-28 19:01:14 +02:00
Luis Ramos
a002ec1894 Simplify login_as_admin by using existing factory admin_user 2020-07-27 16:02:59 +01:00
Luis Ramos
ecc58cedd9 Fix navigation problem in spec 2020-07-27 16:02:59 +01:00
Luis Ramos
27ace50eb7 Fix general settings path in specs 2020-07-27 16:02:57 +01:00
Luis Ramos
4df81f0864 Remove unnecesasary and now broken require statement from spec and fix rubocop todo files 2020-07-27 15:32:35 +01:00
Luis Ramos
95a9ca7775 Remove redundant method, login_as is the name of the test helper in warden 2020-07-27 15:32:35 +01:00
Luis Ramos
d6a5ad70a8 Adapt specs in order mgmt engine to new authentication helper 2020-07-27 15:32:35 +01:00
Luis Ramos
a2ebc614d9 Rename AuthenticationWorkflow to AuthenticationHelper 2020-07-27 15:32:35 +01:00
Luis Ramos
10b07aabd9 Rename quick_login_as to login_as 2020-07-27 15:32:35 +01:00
Luis Ramos
5738ec0542 Rename login_to_admin_and_visit to login_as_admin_and_visit 2020-07-27 15:32:34 +01:00
Luis Ramos
c6bb756531 Rename quick_login_as_admin to login_as_admin and also re-use login_to_admin_and_visit when applicable 2020-07-27 15:31:23 +01:00
Luis Ramos
8b04e45ea5 Create login_to_admin_and_visit to avoid loading the admin dashboard unnecessarily
This commit removes 19 unnecessary page loads of the admin dashboard
2020-07-27 15:31:11 +01:00
Luis Ramos
f1a3814c0d Rename login_as_enterprise_user to a more specific name controller_login_as_enterprise_user 2020-07-27 14:44:25 +01:00
Luis Ramos
8e84754f35 Rename login_as_admin to a more specific name controller_login_as_admin 2020-07-27 14:44:25 +01:00
Luis Ramos
81710a2704 Remove now dead create_enterprise_user, the user factory should be used instead 2020-07-27 14:44:25 +01:00
Luis Ramos
1af4bf6994 Replace usage of create_enterprise_user with :user factory 2020-07-27 14:44:23 +01:00
Luis Ramos
3217b3ba86 Delete dead commented code 2020-07-27 12:28:53 +01:00
Luis Ramos
16b9c8c814 Replace usage of create_enterprise_user with :user factory 2020-07-27 12:28:33 +01:00
Cillian O'Ruanaidh
702669e61c Merge branch 'master' into prevent-blank-open-street-map 2020-07-24 16:00:37 +01:00
Cillian O'Ruanaidh
cc317bc8c9 Move the :initialLatitude and :initialLongitude methods from the OpenStreetMap service to the MapCenterCalculator service. 2020-07-24 16:00:30 +01:00
Eduardo
bda47d97ee add view specs to admin edit page 2020-07-20 21:08:04 -03:00
Eduardo
d43e9b5716 add Actions dropdown to all pages of order details menu 2020-07-20 20:45:50 -03:00
Luis Ramos
efacca6292 Revert "Enhancement/5454 make links to shops under Groups > Producers open in new tab" 2020-07-15 15:33:03 +01:00
Luis Ramos
646f48f0af Add translation keys for test and shipment emails and make them lazy lookups 2020-07-14 14:35:36 +01:00
Luis Ramos
f66538d2cb Convert test and shipment email templates to haml 2020-07-14 14:26:05 +01:00
Luis Ramos
55f160c309 Bring test and shipment email templates from spree_core 2020-07-14 14:23:09 +01:00
Luis Ramos
5835a0ee3a Transpec mailer specs 2020-07-14 14:20:30 +01:00
Luis Ramos
e96d9c1f45 Fix mailer specs brought from spree_core 2020-07-14 14:19:19 +01:00
Luis Ramos
5162964936 Fix easy rubocop issues 2020-07-14 13:46:01 +01:00
Luis Ramos
d12495f3db Merge decorators with original classes brought from spree and merge order_mailer specs 2020-07-14 13:38:11 +01:00
Luis Ramos
c6cd695b3c Bring remaing mailers from spree_core 2020-07-14 13:28:11 +01:00
Luis Ramos
ebf9be41bb Transpec specs 2020-07-11 17:02:03 +01:00
Luis Ramos
95ffff5087 Fix specs brought from spree 2020-07-11 16:59:35 +01:00
Luis Ramos
03bb1f053a Fix easy rubocop issues 2020-07-11 16:43:42 +01:00
Luis Ramos
2e3702550d Bring a number of files from spree_core needed in OFN 2020-07-11 16:09:13 +01:00
Luis Ramos
56b83b6bb5 Fix easy rubocop issues 2020-07-11 15:56:08 +01:00
Luis Ramos
e367cbd1e6 Fix one rubocop issues and add the remaining to the manual todo 2020-07-11 15:53:06 +01:00
Luis Ramos
bdf9c1e405 Simplify update_shipment_state based on the fact there's only one shipment per order in OFN 2020-07-11 15:53:06 +01:00
Luis Ramos
2070cfd5bb Fix easy rubocop issues 2020-07-11 15:44:23 +01:00
Luis Ramos
8001e63f77 Unnest OrderManagement::Order declaration in two module declaration 2020-07-11 15:44:23 +01:00
Luis Ramos
aed384183b Move Spree::OrderUpdater to OrderManagement engine 2020-07-11 15:44:23 +01:00
Luis Ramos
e453b130e4 Bring core/lib/spree/core/ext/active_record.rb to OFN and add it to Spree::Order, the only place where it is used 2020-07-11 15:44:23 +01:00
Luis Ramos
7e355a3248 Remove hash rockets 2020-07-11 15:44:23 +01:00
Luis Ramos
a8a81f8023 Merge and fix OrderUpdater spec with Spree::OrderUpdater spec 2020-07-11 15:44:23 +01:00
Luis Ramos
d4c48e2b94 Merge OrderUpdate Delegator into Spree::OrderUpdater 2020-07-11 15:44:23 +01:00
Luis Ramos
872cfcfc58 Remove unused promotions code 2020-07-11 15:44:23 +01:00
Luis Ramos
5b3fbe0aed Merge decorator OrderUpdater 2020-07-11 15:44:23 +01:00
Luis Ramos
ebeeeb7ed3 Fix easy rubocop issues 2020-07-11 15:44:23 +01:00
Luis Ramos
a929d82580 Transpec order_updater_spec 2020-07-11 15:44:23 +01:00
Luis Ramos
1f39731068 Modernize and fix spec brought from spree 2020-07-11 15:44:23 +01:00
Luis Ramos
d2f0d96174 Bring Spree::OrderUpdater spec 2020-07-11 15:44:23 +01:00
Luis Ramos
7218bb0c7d Bring Spree::OrderUpdater from spree 2020-07-11 15:44:23 +01:00
Luis Ramos
58da11fde7 Bring Environment Calculators and Environment Extension from spree_core 2020-07-11 15:43:20 +01:00
Luis Ramos
2c65cea911 Fix easy rubocop issues 2020-07-11 15:41:26 +01:00
Luis Ramos
95698fac37 Bring responder from spree_core 2020-07-11 15:41:26 +01:00
Luis Ramos
7b30008e8b Run transpec 2020-07-11 15:41:26 +01:00
Luis Ramos
50e6ce92b3 Fix easy rubocop issues 2020-07-11 15:41:26 +01:00
Luis Ramos
a78d615936 Bring money_spec from spree_core 2020-07-11 15:41:26 +01:00
Luis Ramos
cd8355ea66 Bring money.rb from spree 2020-07-11 15:41:26 +01:00
Luis Ramos
724a88344e Run transpec 2020-07-11 15:41:26 +01:00
Luis Ramos
9a09f420c1 Modernize spec 2020-07-11 15:41:26 +01:00
Luis Ramos
12a5a266fd Fix easy rubocop issues 2020-07-11 15:41:26 +01:00
Luis Ramos
efeda61e40 Bring i18n.rb from spree 2020-07-11 15:41:26 +01:00
Luis Ramos
38c5a9e105 Remove coupon applicator, it's not used in ofn 2020-07-11 15:41:26 +01:00
Luis Ramos
89e5221dc5 Fix easy rubocop issues 2020-07-11 15:41:26 +01:00
Luis Ramos
c75341838e Bring core.rb from spree_core 2020-07-11 15:41:26 +01:00
Luis Ramos
84d7538b1b Bring i18n code from spree 2020-07-11 15:41:26 +01:00
Luis Ramos
388d575cc8 Remove strong parameters and search helpers, they are not used in OFN 2020-07-11 15:41:26 +01:00
Luis Ramos
fdd21d7d7d Fix easy rubocop issues 2020-07-11 15:41:26 +01:00
Luis Ramos
ab67a4f80c Bring base controller from spree 2020-07-11 15:41:26 +01:00
Luis Ramos
5afb862ce1 Extract setup and authorize to a new method called prepare_for_payment to fix rubocop ABCsize issue
It looks like this rubocop rule weights a raise over a return...
2020-07-10 13:14:07 +01:00
Pau Perez
6389fdb16e Simplify code related to error handling 2020-07-10 13:14:07 +01:00
Luis Ramos
01ab974a3b Add rescue statment to failed payment email so that the processing of other orders continues if there is a problem while sending the email 2020-07-10 13:14:07 +01:00
Luis Ramos
7a9f9a5624 Log bugsnag and still send failed payment email when any exception is caught during the confirmation process 2020-07-10 13:14:05 +01:00
Luis Ramos
5648b2e281 Add rescue statements to subs jobs so that when an order placement or confirmation fails, there's a bugsnag alert for it and the job continues processing the rest of the orders 2020-07-08 18:41:14 +01:00
Cillian O'Ruanaidh
1199a356c4 Extract out a JS service for calculating where to centre the map when given a set of coordinates.
Also removing the hardcoded default latitude/longitude from open_street_map directive because it's probably not very likely that it will be needed.
2020-06-26 22:26:39 +01:00
Cillian O'Ruanaidh
c40697cf61 If no enterprises have been geocoded yet make sure Open Street Map still displays correctly.
Before it would display a gray/blank div instead of map because the map latitude, longitude couldn't be calculated without geocoded enterprises. This adds a setting so the default coordinates can be set even if no geocoded enterprises present.
2020-06-26 15:45:58 +01:00
348 changed files with 6896 additions and 2439 deletions

View File

@@ -23,10 +23,6 @@ The categories are based on https://keepachangelog.com/en/1.0.0/. -->
Changelog Category: Added | Changed | Deprecated | Removed | Fixed | Security
#### How is this related to the Spree upgrade?
<!-- Any known conflicts with the Spree Upgrade?
Explain them or remove this section. -->
#### Discourse thread

View File

@@ -321,6 +321,15 @@ Layout/LineLength:
- spec/support/request/shop_workflow.rb
- spec/support/request/web_helper.rb
- spec/support/seeds.rb
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb
- spec/controllers/base_controller2_spec.rb
- spec/features/consumer/caching/darkswarm_caching_spec.rb
- spec/models/calculator/flexi_rate_spec.rb
- spec/models/calculator/price_sack_spec.rb
- spec/models/spree/stock_item_spec.rb
- spec/requests/api/orders_spec.rb
- spec/swagger_helper.rb
- spec/views/spree/admin/payment_methods/index.html.haml_spec.rb
Metrics/AbcSize:
Max: 15
@@ -399,6 +408,7 @@ Metrics/AbcSize:
- app/services/create_order_cycle.rb
- app/services/order_cycle_form.rb
- app/services/order_syncer.rb
- engines/order_management/app/services/order_management/order/updater.rb
- engines/order_management/app/services/order_management/stock/estimator.rb
- engines/order_management/app/services/order_management/stock/package.rb
- engines/order_management/app/services/order_management/stock/packer.rb
@@ -444,6 +454,11 @@ Metrics/AbcSize:
- spec/models/product_importer_spec.rb
- spec/services/order_checkout_restart_spec.rb
- spec/support/performance_helper.rb
- app/controllers/application_controller.rb
- app/models/spree/order/checkout.rb
- app/models/spree/payment/processing.rb
- app/models/spree/payment.rb
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb
Metrics/BlockLength:
Max: 25
@@ -482,6 +497,10 @@ Metrics/BlockLength:
- spec/support/delayed_job_helper.rb
- spec/support/matchers/select2_matchers.rb
- spec/support/matchers/table_matchers.rb
- app/models/spree/order/checkout.rb
- app/models/spree/payment/processing.rb
- spec/requests/api/orders_spec.rb
- spec/swagger_helper.rb
Metrics/CyclomaticComplexity:
Max: 6
@@ -513,6 +532,9 @@ Metrics/CyclomaticComplexity:
- lib/spree/core/controller_helpers/ssl.rb
- lib/spree/localized_number.rb
- spec/models/product_importer_spec.rb
- app/models/spree/order/checkout.rb
- app/models/spree/payment.rb
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb
Metrics/PerceivedComplexity:
Max: 7
@@ -539,6 +561,8 @@ Metrics/PerceivedComplexity:
- lib/spree/core/controller_helpers/ssl.rb
- lib/spree/localized_number.rb
- spec/models/product_importer_spec.rb
- app/models/spree/order/checkout.rb
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb
Metrics/MethodLength:
Max: 10
@@ -601,6 +625,7 @@ Metrics/MethodLength:
- app/serializers/api/cached_enterprise_serializer.rb
- app/services/order_cycle_form.rb
- app/services/permitted_attributes/checkout.rb
- engines/order_management/app/services/order_management/order/updater.rb
- engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb
- engines/order_management/app/services/order_management/stock/estimator.rb
- engines/order_management/app/services/order_management/stock/package.rb
@@ -644,7 +669,12 @@ Metrics/MethodLength:
- spec/features/consumer/shopping/checkout_paypal_spec.rb
- spec/features/consumer/shopping/variant_overrides_spec.rb
- spec/models/product_importer_spec.rb
- spec/support/request/authentication_workflow.rb
- spec/support/request/authentication_helper.rb
- app/models/spree/order/checkout.rb
- app/models/spree/payment/processing.rb
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_allocation_report.rb
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_supplier_report.rb
Metrics/ClassLength:
Max: 100
@@ -674,6 +704,7 @@ Metrics/ClassLength:
- app/serializers/api/cached_enterprise_serializer.rb
- app/serializers/api/enterprise_shopfront_serializer.rb
- app/services/cart_service.rb
- engines/order_management/app/services/order_management/order/updater.rb
- engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb
- lib/active_merchant/billing/gateways/stripe_payment_intents.rb
- lib/open_food_network/bulk_coop_report.rb
@@ -686,6 +717,8 @@ Metrics/ClassLength:
- lib/open_food_network/permissions.rb
- lib/open_food_network/users_and_enterprises_report.rb
- lib/open_food_network/xero_invoices_report.rb
- app/models/spree/payment.rb
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb
Metrics/ModuleLength:
Max: 100
@@ -694,6 +727,7 @@ Metrics/ModuleLength:
- app/helpers/injection_helper.rb
- app/helpers/spree/admin/base_helper.rb
- app/helpers/spree/admin/navigation_helper.rb
- engines/order_management/spec/services/order_management/order/updater_spec.rb
- engines/order_management/spec/services/order_management/stock/package_spec.rb
- engines/order_management/spec/services/order_management/subscriptions/estimator_spec.rb
- engines/order_management/spec/services/order_management/subscriptions/form_spec.rb
@@ -728,6 +762,8 @@ Metrics/ModuleLength:
- spec/models/spree/variant_spec.rb
- spec/services/permissions/order_spec.rb
- spec/support/request/web_helper.rb
- app/models/spree/order/checkout.rb
- app/models/spree/payment/processing.rb
Metrics/ParameterLists:
Max: 5
@@ -736,3 +772,8 @@ Metrics/ParameterLists:
- app/models/product_import/entry_processor.rb
- lib/open_food_network/xero_invoices_report.rb
- spec/features/admin/reports_spec.rb
Lint/UselessAssignment:
Exclude:
- 'spec/**/*'
- 'lib/spree/core/controller_helpers/common.rb'

View File

@@ -1,79 +1,214 @@
# This configuration was generated by
# `rubocop --auto-gen-config --exclude-limit 1400`
# on 2020-06-22 13:28:10 +0100 using RuboCop version 0.81.0.
# on 2020-08-13 16:05:53 +1000 using RuboCop version 0.81.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
# Offense count: 139
# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: with_first_argument, with_fixed_indentation
Layout/ArgumentAlignment:
Exclude:
- 'spec/models/spree/order/checkout_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyleAlignWith.
# SupportedStylesAlignWith: either, start_of_block, start_of_line
Layout/BlockAlignment:
Exclude:
- 'spec/models/spree/order/checkout_spec.rb'
# Offense count: 2
# Cop supports --auto-correct.
Layout/EmptyLines:
Exclude:
- 'spec/models/spree/payment_spec.rb'
# Offense count: 3
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
# SupportedStyles: empty_lines, no_empty_lines
Layout/EmptyLinesAroundBlockBody:
Exclude:
- 'spec/models/spree/payment_spec.rb'
# Offense count: 3
# Cop supports --auto-correct.
# Configuration parameters: AllowForAlignment, AllowBeforeTrailingComments, ForceEqualSignAlignment.
Layout/ExtraSpacing:
Exclude:
- 'spec/models/spree/payment_spec.rb'
- 'spec/requests/api/orders_spec.rb'
# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: special_inside_parentheses, consistent, align_brackets
Layout/FirstArrayElementIndentation:
Exclude:
- 'spec/views/spree/admin/payment_methods/index.html.haml_spec.rb'
# Offense count: 3
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: special_inside_parentheses, consistent, align_braces
Layout/FirstHashElementIndentation:
Exclude:
- 'spec/models/spree/payment_spec.rb'
- 'spec/swagger_helper.rb'
# Offense count: 5
# Cop supports --auto-correct.
# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
# SupportedHashRocketStyles: key, separator, table
# SupportedColonStyles: key, separator, table
# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
Layout/HashAlignment:
Exclude:
- 'spec/models/spree/payment_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
# SupportedStyles: normal, indented_internal_methods
Layout/IndentationConsistency:
Exclude:
- 'spec/models/spree/order/checkout_spec.rb'
# Offense count: 26
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
# URISchemes: http, https
Layout/LineLength:
Max: 268
Max: 409
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
# SupportedStyles: symmetrical, new_line, same_line
Layout/MultilineHashBraceLayout:
Exclude:
- 'spec/models/spree/payment_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: AllowForAlignment, EnforcedStyleForExponentOperator.
# SupportedStylesForExponentOperator: space, no_space
Layout/SpaceAroundOperators:
Exclude:
- 'spec/models/spree/payment_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
# SupportedStyles: space, no_space
# SupportedStylesForEmptyBraces: space, no_space
Layout/SpaceInsideBlockBraces:
Exclude:
- 'spec/models/spree/payment_spec.rb'
# Offense count: 11
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces.
# SupportedStyles: space, no_space, compact
# SupportedStylesForEmptyBraces: space, no_space
Layout/SpaceInsideHashLiteralBraces:
Exclude:
- 'spec/models/spree/payment_spec.rb'
- 'spec/requests/api/orders_spec.rb'
- 'spec/services/checkout/form_data_adapter_spec.rb'
- 'spec/services/user_locale_setter_spec.rb'
# Offense count: 6
# Cop supports --auto-correct.
# Configuration parameters: AllowInHeredoc.
Layout/TrailingWhitespace:
Exclude:
- 'spec/controllers/base_controller2_spec.rb'
- 'spec/features/consumer/shopping/shopping_spec.rb'
- 'spec/requests/api/orders_spec.rb'
# Offense count: 2
Lint/DuplicateMethods:
Exclude:
- 'lib/discourse/single_sign_on.rb'
# Offense count: 9
# Offense count: 8
Lint/IneffectiveAccessModifier:
Exclude:
- 'app/models/column_preference.rb'
- 'app/models/spree/user.rb'
- 'app/services/mail_configuration.rb'
- 'lib/open_food_network/feature_toggle.rb'
- 'spec/lib/open_food_network/reports/report_spec.rb'
# Offense count: 5
# Offense count: 4
# Cop supports --auto-correct.
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods.
Lint/UnusedMethodArgument:
Exclude:
- 'spec/views/spree/admin/payment_methods/index.html.haml_spec.rb'
# Offense count: 3
# Configuration parameters: ContextCreatingMethods, MethodCreatingMethods.
Lint/UselessAccessModifier:
Exclude:
- 'app/models/column_preference.rb'
- 'app/services/mail_configuration.rb'
- 'lib/open_food_network/feature_toggle.rb'
- 'lib/open_food_network/reports/bulk_coop_report.rb'
- 'spec/lib/open_food_network/reports/report_spec.rb'
# Offense count: 6
# Configuration parameters: IgnoredMethods.
Metrics/AbcSize:
Max: 37
# Offense count: 1
Lint/UselessAssignment:
Exclude:
- 'spec/**/*'
- 'lib/spree/core/controller_helpers/common.rb'
# Offense count: 19
# Configuration parameters: IgnoredMethods.
Metrics/AbcSize:
Max: 126
# Offense count: 7
# Configuration parameters: CountComments, ExcludedMethods.
# ExcludedMethods: refine
Metrics/BlockLength:
Max: 27
Max: 102
# Offense count: 1
# Offense count: 2
# Configuration parameters: CountComments.
Metrics/ClassLength:
Max: 101
Max: 231
# Offense count: 1
# Offense count: 3
# Configuration parameters: IgnoredMethods.
Metrics/CyclomaticComplexity:
Max: 7
Max: 23
# Offense count: 6
# Offense count: 19
# Configuration parameters: CountComments, ExcludedMethods.
Metrics/MethodLength:
Max: 20
Max: 140
# Offense count: 1
# Offense count: 2
# Configuration parameters: CountComments.
Metrics/ModuleLength:
Max: 121
Max: 208
# Offense count: 8
# Offense count: 2
# Configuration parameters: IgnoredMethods.
Metrics/PerceivedComplexity:
Max: 24
# Offense count: 9
Naming/AccessorMethodName:
Exclude:
- 'app/controllers/spree/admin/taxonomies_controller.rb'
- 'app/models/spree/adjustment_decorator.rb'
- 'app/models/spree/order_decorator.rb'
- 'lib/spree/core/controller_helpers/common.rb'
- 'spec/support/request/shop_workflow.rb'
- 'spec/support/request/web_helper.rb'
@@ -117,6 +252,15 @@ Naming/PredicateName:
- 'lib/open_food_network/packing_report.rb'
- 'lib/tasks/data.rake'
# Offense count: 7
# Cop supports --auto-correct.
Rails/ActiveRecordAliases:
Exclude:
- 'spec/controllers/line_items_controller_spec.rb'
- 'spec/controllers/spree/orders_controller_spec.rb'
- 'spec/features/consumer/shopping/orders_spec.rb'
- 'spec/requests/api/orders_spec.rb'
# Offense count: 1
# Configuration parameters: EnforcedStyle.
# SupportedStyles: strict, flexible
@@ -124,6 +268,13 @@ Rails/Date:
Exclude:
- 'app/models/order_cycle.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforceForPrefixed.
Rails/Delegate:
Exclude:
- 'engines/order_management/app/services/order_management/reports/bulk_coop/renderers/html_renderer.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: Whitelist.
@@ -150,7 +301,7 @@ Rails/FilePath:
- 'spec/serializers/api/admin/enterprise_serializer_spec.rb'
- 'spec/support/downloads_helper.rb'
# Offense count: 7
# Offense count: 9
# Cop supports --auto-correct.
# Configuration parameters: Include.
# Include: app/models/**/*.rb
@@ -160,15 +311,17 @@ Rails/FindBy:
- 'app/models/product_import/entry_processor.rb'
- 'app/models/product_import/entry_validator.rb'
- 'app/models/product_import/spreadsheet_data.rb'
- 'app/models/spree/shipment.rb'
- 'app/models/spree/user.rb'
# Offense count: 1
# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/FindEach:
Exclude:
- 'app/models/spree/order_decorator.rb'
- 'app/models/spree/shipment.rb'
# Offense count: 5
# Configuration parameters: Include.
@@ -180,7 +333,7 @@ Rails/HasAndBelongsToMany:
- 'app/models/spree/concerns/payment_method_distributors.rb'
- 'app/models/spree/line_item_decorator.rb'
# Offense count: 25
# Offense count: 26
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/HasManyOrHasOneDependent:
@@ -192,6 +345,7 @@ Rails/HasManyOrHasOneDependent:
- 'app/models/spree/order_decorator.rb'
- 'app/models/spree/payment_method_decorator.rb'
- 'app/models/spree/property.rb'
- 'app/models/spree/shipment.rb'
- 'app/models/spree/shipping_method_decorator.rb'
- 'app/models/spree/user.rb'
- 'app/models/spree/variant_decorator.rb'
@@ -268,7 +422,7 @@ Rails/ReflectionClassName:
- 'app/models/enterprise_role.rb'
- 'app/models/subscription.rb'
# Offense count: 227
# Offense count: 233
# Configuration parameters: Blacklist, Whitelist.
# Blacklist: decrement!, decrement_counter, increment!, increment_counter, toggle!, touch, update_all, update_attribute, update_column, update_columns, update_counters
Rails/SkipsModelValidations:
@@ -287,7 +441,8 @@ Rails/SkipsModelValidations:
- 'app/models/spree/address_decorator.rb'
- 'app/models/spree/credit_card_decorator.rb'
- 'app/models/spree/order_decorator.rb'
- 'app/models/spree/payment_decorator.rb'
- 'app/models/spree/payment.rb'
- 'app/models/spree/shipment.rb'
- 'app/models/spree/shipping_method_decorator.rb'
- 'app/models/subscription.rb'
- 'app/models/variant_override.rb'
@@ -355,27 +510,22 @@ Rails/SkipsModelValidations:
- 'spec/support/request/shop_workflow.rb'
- 'spec/views/spree/shared/_order_details.html.haml_spec.rb'
# Offense count: 2
# Offense count: 3
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/UniqueValidationWithoutIndex:
Exclude:
- 'app/models/customer.rb'
- 'app/models/exchange.rb'
# Offense count: 2
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/UniqueValidationWithoutIndex:
Exclude:
- 'app/models/spree/stock_item.rb'
# Offense count: 1
# Offense count: 2
# Configuration parameters: Environments.
# Environments: development, test, production
Rails/UnknownEnv:
Exclude:
- 'app/models/spree/app_configuration_decorator.rb'
- 'lib/spree/core/controller_helpers/ssl.rb'
# Offense count: 2
Style/CaseEquality:
@@ -383,7 +533,7 @@ Style/CaseEquality:
- 'app/helpers/angular_form_helper.rb'
- 'spec/models/spree/payment_spec.rb'
# Offense count: 75
# Offense count: 71
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect, EnforcedStyle.
# SupportedStyles: nested, compact
@@ -447,20 +597,10 @@ Style/ClassAndModuleChildren:
- 'app/serializers/api/property_serializer.rb'
- 'app/serializers/api/shipping_method_serializer.rb'
- 'app/serializers/api/state_serializer.rb'
- 'app/serializers/api/taxon_image_serializer.rb'
- 'app/serializers/api/taxon_serializer.rb'
- 'app/serializers/api/variant_serializer.rb'
- 'lib/open_food_network/locking.rb'
- 'lib/open_food_network/reports/bulk_coop_allocation_report.rb'
- 'lib/open_food_network/reports/bulk_coop_report.rb'
- 'lib/open_food_network/reports/bulk_coop_supplier_report.rb'
- 'lib/open_food_network/reports/report.rb'
- 'lib/open_food_network/reports/row.rb'
- 'lib/open_food_network/reports/rule.rb'
- 'spec/controllers/spree/admin/base_controller_spec.rb'
- 'spec/lib/open_food_network/reports/report_spec.rb'
- 'spec/lib/open_food_network/reports/row_spec.rb'
- 'spec/lib/open_food_network/reports/rule_spec.rb'
# Offense count: 2
Style/ClassVars:
@@ -475,7 +615,7 @@ Style/FormatStringToken:
- 'lib/open_food_network/sales_tax_report.rb'
- 'spec/features/admin/bulk_order_management_spec.rb'
# Offense count: 874
# Offense count: 847
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
# SupportedStyles: always, always_true, never
@@ -569,7 +709,6 @@ Style/FrozenStringLiteralComment:
- 'app/controllers/spree/admin/variants_controller.rb'
- 'app/controllers/spree/admin/zones_controller.rb'
- 'app/controllers/spree/credit_cards_controller.rb'
- 'app/controllers/spree/home_controller.rb'
- 'app/controllers/spree/orders_controller.rb'
- 'app/controllers/spree/store_controller.rb'
- 'app/controllers/spree/user_passwords_controller.rb'
@@ -624,8 +763,6 @@ Style/FrozenStringLiteralComment:
- 'app/jobs/subscription_placement_job.rb'
- 'app/jobs/welcome_enterprise_job.rb'
- 'app/mailers/enterprise_mailer.rb'
- 'app/mailers/spree/base_mailer_decorator.rb'
- 'app/mailers/spree/order_mailer_decorator.rb'
- 'app/mailers/spree/user_mailer.rb'
- 'app/mailers/subscription_mailer.rb'
- 'app/models/adjustment_metadata.rb'
@@ -684,12 +821,6 @@ Style/FrozenStringLiteralComment:
- 'app/models/spree/address_decorator.rb'
- 'app/models/spree/adjustment_decorator.rb'
- 'app/models/spree/app_configuration_decorator.rb'
- 'app/models/spree/calculator/default_tax_decorator.rb'
- 'app/models/spree/calculator/flat_percent_item_total_decorator.rb'
- 'app/models/spree/calculator/flat_rate_decorator.rb'
- 'app/models/spree/calculator/flexi_rate_decorator.rb'
- 'app/models/spree/calculator/per_item_decorator.rb'
- 'app/models/spree/calculator/price_sack_decorator.rb'
- 'app/models/spree/calculator_decorator.rb'
- 'app/models/spree/classification_decorator.rb'
- 'app/models/spree/concerns/payment_method_distributors.rb'
@@ -702,7 +833,6 @@ Style/FrozenStringLiteralComment:
- 'app/models/spree/line_item_decorator.rb'
- 'app/models/spree/option_type_decorator.rb'
- 'app/models/spree/order_decorator.rb'
- 'app/models/spree/payment_decorator.rb'
- 'app/models/spree/payment_method_decorator.rb'
- 'app/models/spree/preferences/file_configuration.rb'
- 'app/models/spree/price_decorator.rb'
@@ -711,15 +841,12 @@ Style/FrozenStringLiteralComment:
- 'app/models/spree/product_property_decorator.rb'
- 'app/models/spree/product_set.rb'
- 'app/models/spree/property.rb'
- 'app/models/spree/shipment_decorator.rb'
- 'app/models/spree/shipping_method_decorator.rb'
- 'app/models/spree/stock/availability_validator_decorator.rb'
- 'app/models/spree/stock_location_decorator.rb'
- 'app/models/spree/tax_rate_decorator.rb'
- 'app/models/spree/taxon_decorator.rb'
- 'app/models/spree/user.rb'
- 'app/models/spree/variant_decorator.rb'
- 'app/models/stock/package.rb'
- 'app/models/stripe_account.rb'
- 'app/models/subscription.rb'
- 'app/models/subscription_line_item.rb'
@@ -803,7 +930,6 @@ Style/FrozenStringLiteralComment:
- 'app/serializers/api/shipping_method_serializer.rb'
- 'app/serializers/api/shop_for_orders_serializer.rb'
- 'app/serializers/api/state_serializer.rb'
- 'app/serializers/api/taxon_image_serializer.rb'
- 'app/serializers/api/taxon_jstree_attribute_serializer.rb'
- 'app/serializers/api/taxon_jstree_serializer.rb'
- 'app/serializers/api/taxon_serializer.rb'
@@ -811,7 +937,6 @@ Style/FrozenStringLiteralComment:
- 'app/serializers/api/user_serializer.rb'
- 'app/serializers/api/variant_serializer.rb'
- 'app/services/action_callbacks.rb'
- 'app/services/advance_order_service.rb'
- 'app/services/bulk_invoice_service.rb'
- 'app/services/cart_service.rb'
- 'app/services/create_order_cycle.rb'
@@ -831,6 +956,7 @@ Style/FrozenStringLiteralComment:
- 'app/services/order_factory.rb'
- 'app/services/order_syncer.rb'
- 'app/services/order_update_issues.rb'
- 'app/services/order_workflow.rb'
- 'app/services/permissions/order.rb'
- 'app/services/product_tag_rules_filterer.rb'
- 'app/services/products_renderer.rb'
@@ -893,7 +1019,6 @@ Style/FrozenStringLiteralComment:
- 'lib/discourse/single_sign_on.rb'
- 'lib/open_food_network/address_finder.rb'
- 'lib/open_food_network/available_payment_method_filter.rb'
- 'lib/open_food_network/bulk_coop_report.rb'
- 'lib/open_food_network/column_preference_defaults.rb'
- 'lib/open_food_network/customers_report.rb'
- 'lib/open_food_network/enterprise_fee_applicator.rb'
@@ -906,7 +1031,6 @@ Style/FrozenStringLiteralComment:
- 'lib/open_food_network/i18n_config.rb'
- 'lib/open_food_network/lettuce_share_report.rb'
- 'lib/open_food_network/locking.rb'
- 'lib/open_food_network/model_class_from_controller_name.rb'
- 'lib/open_food_network/order_and_distributor_report.rb'
- 'lib/open_food_network/order_cycle_form_applicator.rb'
- 'lib/open_food_network/order_cycle_management_report.rb'
@@ -928,14 +1052,8 @@ Style/FrozenStringLiteralComment:
- 'lib/open_food_network/property_merge.rb'
- 'lib/open_food_network/rack_request_blocker.rb'
- 'lib/open_food_network/referer_parser.rb'
- 'lib/open_food_network/reports/bulk_coop_allocation_report.rb'
- 'lib/open_food_network/reports/bulk_coop_report.rb'
- 'lib/open_food_network/reports/bulk_coop_supplier_report.rb'
- 'lib/open_food_network/reports/line_items.rb'
- 'lib/open_food_network/reports/list.rb'
- 'lib/open_food_network/reports/report.rb'
- 'lib/open_food_network/reports/row.rb'
- 'lib/open_food_network/reports/rule.rb'
- 'lib/open_food_network/sales_tax_report.rb'
- 'lib/open_food_network/scope_product_to_hub.rb'
- 'lib/open_food_network/scope_variant_to_hub.rb'
@@ -949,9 +1067,6 @@ Style/FrozenStringLiteralComment:
- 'lib/spree/api/controller_setup.rb'
- 'lib/spree/api/testing_support/setup.rb'
- 'lib/spree/authentication_helpers.rb'
- 'lib/spree/core/controller_helpers/auth_decorator.rb'
- 'lib/spree/core/controller_helpers/order_decorator.rb'
- 'lib/spree/core/controller_helpers/respond_with_decorator.rb'
- 'lib/spree/localized_number.rb'
- 'lib/spree/money_decorator.rb'
- 'lib/spree/product_filters.rb'
@@ -980,7 +1095,6 @@ Style/FrozenStringLiteralComment:
- 'lib/tasks/sample_data/user_factory.rb'
- 'lib/tasks/specs.rake'
- 'lib/tasks/users.rake'
- 'spec/config/application_spec.rb'
- 'spec/controllers/admin/bulk_line_items_controller_spec.rb'
- 'spec/controllers/admin/column_preferences_controller_spec.rb'
- 'spec/controllers/admin/customers_controller_spec.rb'
@@ -1011,9 +1125,9 @@ Style/FrozenStringLiteralComment:
- 'spec/controllers/api/taxonomies_controller_spec.rb'
- 'spec/controllers/api/taxons_controller_spec.rb'
- 'spec/controllers/api/variants_controller_spec.rb'
- 'spec/controllers/base_controller2_spec.rb'
- 'spec/controllers/base_controller_spec.rb'
- 'spec/controllers/cart_controller_spec.rb'
- 'spec/controllers/checkout_controller_concurrency_spec.rb'
- 'spec/controllers/checkout_controller_spec.rb'
- 'spec/controllers/enterprises_controller_spec.rb'
- 'spec/controllers/groups_controller_spec.rb'
@@ -1030,7 +1144,6 @@ Style/FrozenStringLiteralComment:
- 'spec/controllers/spree/admin/orders_controller_spec.rb'
- 'spec/controllers/spree/admin/overview_controller_spec.rb'
- 'spec/controllers/spree/admin/payment_methods_controller_spec.rb'
- 'spec/controllers/spree/admin/payments_controller_spec.rb'
- 'spec/controllers/spree/admin/products_controller_spec.rb'
- 'spec/controllers/spree/admin/reports_controller_spec.rb'
- 'spec/controllers/spree/admin/search_controller_spec.rb'
@@ -1039,7 +1152,6 @@ Style/FrozenStringLiteralComment:
- 'spec/controllers/spree/admin/variants_controller_spec.rb'
- 'spec/controllers/spree/credit_cards_controller_spec.rb'
- 'spec/controllers/spree/orders_controller_spec.rb'
- 'spec/controllers/spree/store_controller_spec.rb'
- 'spec/controllers/spree/user_sessions_controller_spec.rb'
- 'spec/controllers/spree/users_controller_spec.rb'
- 'spec/controllers/stripe/callbacks_controller_spec.rb'
@@ -1147,7 +1259,6 @@ Style/FrozenStringLiteralComment:
- 'spec/jobs/subscription_placement_job_spec.rb'
- 'spec/jobs/welcome_enterprise_job_spec.rb'
- 'spec/lib/open_food_network/address_finder_spec.rb'
- 'spec/lib/open_food_network/bulk_coop_report_spec.rb'
- 'spec/lib/open_food_network/customers_report_spec.rb'
- 'spec/lib/open_food_network/enterprise_fee_applicator_spec.rb'
- 'spec/lib/open_food_network/enterprise_fee_calculator_spec.rb'
@@ -1173,9 +1284,6 @@ Style/FrozenStringLiteralComment:
- 'spec/lib/open_food_network/products_and_inventory_report_spec.rb'
- 'spec/lib/open_food_network/property_merge_spec.rb'
- 'spec/lib/open_food_network/referer_parser_spec.rb'
- 'spec/lib/open_food_network/reports/report_spec.rb'
- 'spec/lib/open_food_network/reports/row_spec.rb'
- 'spec/lib/open_food_network/reports/rule_spec.rb'
- 'spec/lib/open_food_network/sales_tax_report_spec.rb'
- 'spec/lib/open_food_network/scope_variant_to_hub_spec.rb'
- 'spec/lib/open_food_network/scope_variants_to_search_spec.rb'
@@ -1190,12 +1298,16 @@ Style/FrozenStringLiteralComment:
- 'spec/lib/tasks/enterprises_rake_spec.rb'
- 'spec/lib/tasks/users_rake_spec.rb'
- 'spec/mailers/enterprise_mailer_spec.rb'
- 'spec/mailers/order_mailer_spec.rb'
- 'spec/mailers/producer_mailer_spec.rb'
- 'spec/mailers/subscription_mailer_spec.rb'
- 'spec/mailers/user_mailer_spec.rb'
- 'spec/models/adjustment_metadata_spec.rb'
- 'spec/models/calculator/flat_percent_item_total_spec.rb'
- 'spec/models/calculator/flat_percent_per_item_spec.rb'
- 'spec/models/calculator/flat_rate_spec.rb'
- 'spec/models/calculator/flexi_rate_spec.rb'
- 'spec/models/calculator/per_item_spec.rb'
- 'spec/models/calculator/price_sack_spec.rb'
- 'spec/models/calculator/weight_spec.rb'
- 'spec/models/column_preference_spec.rb'
- 'spec/models/concerns/order_shipment_spec.rb'
@@ -1221,11 +1333,6 @@ Style/FrozenStringLiteralComment:
- 'spec/models/spree/ability_spec.rb'
- 'spec/models/spree/addresses_spec.rb'
- 'spec/models/spree/adjustment_spec.rb'
- 'spec/models/spree/calculator/flat_percent_item_total_spec.rb'
- 'spec/models/spree/calculator/flat_rate_spec.rb'
- 'spec/models/spree/calculator/flexi_rate_spec.rb'
- 'spec/models/spree/calculator/per_item_spec.rb'
- 'spec/models/spree/calculator/price_sack_spec.rb'
- 'spec/models/spree/calculator_spec.rb'
- 'spec/models/spree/classification_spec.rb'
- 'spec/models/spree/credit_card_spec.rb'
@@ -1240,14 +1347,12 @@ Style/FrozenStringLiteralComment:
- 'spec/models/spree/price_spec.rb'
- 'spec/models/spree/product_set_spec.rb'
- 'spec/models/spree/product_spec.rb'
- 'spec/models/spree/shipment_spec.rb'
- 'spec/models/spree/shipping_method_spec.rb'
- 'spec/models/spree/stock/availability_validator_spec.rb'
- 'spec/models/spree/tax_rate_spec.rb'
- 'spec/models/spree/taxon_spec.rb'
- 'spec/models/spree/user_spec.rb'
- 'spec/models/spree/variant_spec.rb'
- 'spec/models/stock/package_spec.rb'
- 'spec/models/stripe_account_spec.rb'
- 'spec/models/subscription_line_item_spec.rb'
- 'spec/models/subscription_spec.rb'
@@ -1289,7 +1394,6 @@ Style/FrozenStringLiteralComment:
- 'spec/serializers/api/product_serializer_spec.rb'
- 'spec/serializers/api/shipping_method_serializer_spec.rb'
- 'spec/serializers/api/variant_serializer_spec.rb'
- 'spec/services/advance_order_service_spec.rb'
- 'spec/services/bulk_invoice_service_spec.rb'
- 'spec/services/cart_service_spec.rb'
- 'spec/services/default_shipping_category_spec.rb'
@@ -1305,6 +1409,7 @@ Style/FrozenStringLiteralComment:
- 'spec/services/order_cycle_warning_spec.rb'
- 'spec/services/order_factory_spec.rb'
- 'spec/services/order_syncer_spec.rb'
- 'spec/services/order_workflow_spec.rb'
- 'spec/services/permissions/order_spec.rb'
- 'spec/services/product_tag_rules_filterer_spec.rb'
- 'spec/services/products_renderer_spec.rb'
@@ -1338,7 +1443,7 @@ Style/FrozenStringLiteralComment:
- 'spec/support/performance_helper.rb'
- 'spec/support/products_helper.rb'
- 'spec/support/request/admin_helper.rb'
- 'spec/support/request/authentication_workflow.rb'
- 'spec/support/request/authentication_helper.rb'
- 'spec/support/request/checkout_workflow.rb'
- 'spec/support/request/cookie_helper.rb'
- 'spec/support/request/distribution_helper.rb'
@@ -1355,8 +1460,9 @@ Style/FrozenStringLiteralComment:
- 'spec/validators/integer_array_validator_spec.rb'
- 'spec/views/spree/admin/orders/edit.html.haml_spec.rb'
- 'spec/views/spree/admin/orders/index.html.haml_spec.rb'
- 'spec/views/spree/admin/payment_methods/index.html.haml_spec.rb'
# Offense count: 51
# Offense count: 48
# Configuration parameters: MinBodyLength.
Style/GuardClause:
Exclude:
@@ -1376,32 +1482,35 @@ Style/GuardClause:
- 'app/models/spree/order_decorator.rb'
- 'app/models/spree/price_decorator.rb'
- 'app/models/spree/product_decorator.rb'
- 'app/services/advance_order_service.rb'
- 'app/services/order_syncer.rb'
- 'lib/discourse/single_sign_on.rb'
- 'lib/open_food_network/order_cycle_form_applicator.rb'
- 'lib/open_food_network/rack_request_blocker.rb'
- 'lib/open_food_network/variant_and_line_item_naming.rb'
- 'lib/spree/core/controller_helpers/order_decorator.rb'
- 'lib/spree/core/controller_helpers/respond_with_decorator.rb'
- 'spec/support/delayed_job_helper.rb'
- 'spec/support/request/distribution_helper.rb'
- 'spec/support/request/shop_workflow.rb'
# Offense count: 54
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
# SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
Style/HashSyntax:
Exclude:
- 'spec/models/spree/payment_spec.rb'
# Offense count: 1
Style/MissingRespondToMissing:
Exclude:
- 'app/helpers/application_helper.rb'
# Offense count: 4
# Offense count: 2
Style/MixinUsage:
Exclude:
- 'lib/open_food_network/orders_and_fulfillments_report.rb'
- 'spec/lib/open_food_network/bulk_coop_report_spec.rb'
- 'spec/lib/open_food_network/order_cycle_management_report_spec.rb'
- 'spec/lib/open_food_network/packing_report_spec.rb'
# Offense count: 41
# Offense count: 39
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect, EnforcedStyle, IgnoredMethods.
# SupportedStyles: predicate, comparison
@@ -1416,11 +1525,9 @@ Style/NumericPredicate:
- 'app/models/product_import/product_importer.rb'
- 'app/models/product_import/spreadsheet_entry.rb'
- 'app/models/spree/adjustment_decorator.rb'
- 'app/models/spree/calculator/flexi_rate_decorator.rb'
- 'app/models/spree/gateway/stripe_connect.rb'
- 'app/models/spree/line_item_decorator.rb'
- 'app/models/spree/order_decorator.rb'
- 'app/models/spree/shipment_decorator.rb'
- 'app/models/spree/user.rb'
- 'app/models/variant_override.rb'
- 'app/services/cart_service.rb'
@@ -1433,6 +1540,22 @@ Style/NumericPredicate:
- 'lib/spree/money_decorator.rb'
- 'lib/tasks/sample_data.rake'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
# SupportedStyles: compact, exploded
Style/RaiseArgs:
Exclude:
- 'spec/controllers/checkout_controller_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, AllowInnerSlashes.
# SupportedStyles: slashes, percent_r, mixed
Style/RegexpLiteral:
Exclude:
- 'lib/spree/core/controller_helpers/auth.rb'
# Offense count: 231
Style/Send:
Exclude:

View File

@@ -39,10 +39,12 @@ gem 'stringex', '~> 1.5.1'
gem 'spree_i18n', github: 'spree/spree_i18n', branch: '1-3-stable'
# Our branch contains two changes
# Our branch contains the following changes:
# - Pass customer email and phone number to PayPal (merged to upstream master)
# - Change type of password from string to password to hide it in the form
# - Skip CA cert file and use the ones provided by the OS
gem 'spree_paypal_express', github: 'openfoodfoundation/better_spree_paypal_express', branch: '2-1-0-stable'
gem 'stripe'
# We need at least this version to have Digicert's root certificate
@@ -84,12 +86,11 @@ gem 'acts-as-taggable-on', '~> 4.0'
gem 'angularjs-file-upload-rails', '~> 2.4.1'
gem 'custom_error_message', github: 'jeremydurham/custom-err-msg'
gem 'dalli'
gem 'diffy'
gem 'figaro'
gem 'geocoder'
gem 'gmaps4rails'
gem 'oj'
gem 'paper_trail', '~> 5.2.3'
gem 'paper_trail', '~> 7.1.3'
gem 'paperclip', '~> 3.4.1'
gem 'rack-rewrite'
gem 'rack-ssl', require: 'rack/ssl'

View File

@@ -6,7 +6,7 @@ GIT
GIT
remote: https://github.com/openfoodfoundation/better_spree_paypal_express.git
revision: e28e4a8c5cedba504eea9cdad4be440d277d7e68
revision: 1736e3268239a841576d2719a1f276cf9b74c5c5
branch: 2-1-0-stable
specs:
spree_paypal_express (2.0.3)
@@ -108,7 +108,7 @@ GEM
activesupport (= 4.0.13)
arel (~> 4.0.0)
activerecord-deprecated_finders (1.0.4)
activerecord-import (1.0.5)
activerecord-import (1.0.6)
activerecord (>= 3.2)
activerecord-postgresql-adapter (0.0.1)
pg
@@ -148,7 +148,7 @@ GEM
nokogiri (>= 1.4.4)
uuidtools (~> 2.1)
bcrypt (3.1.13)
bugsnag (6.14.0)
bugsnag (6.16.0)
concurrent-ruby (~> 1.0)
builder (3.1.4)
byebug (11.0.1)
@@ -192,7 +192,7 @@ GEM
compass (~> 1.0.0)
sass-rails (< 5.1)
sprockets (< 4.0)
concurrent-ruby (1.1.6)
concurrent-ruby (1.1.7)
crack (0.4.3)
safe_yaml (~> 1.0.0)
css_parser (1.7.1)
@@ -204,7 +204,7 @@ GEM
activerecord (>= 3.2.0, < 5.0)
fog (~> 1.0)
rails (>= 3.2.0, < 5.0)
ddtrace (0.38.0)
ddtrace (0.39.0)
msgpack
debugger-linecache (1.2.0)
delayed_job (4.1.8)
@@ -229,7 +229,6 @@ GEM
devise-token_authenticatable (0.4.10)
devise (>= 3.5.2, < 4.0.0)
diff-lcs (1.3)
diffy (3.3.0)
docile (1.3.2)
dry-inflector (0.1.2)
erubis (2.7.0)
@@ -440,7 +439,7 @@ GEM
json_spec (1.1.5)
multi_json (~> 1.0)
rspec (>= 2.0, < 4.0)
jwt (2.2.1)
jwt (2.2.2)
kaminari (0.14.1)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
@@ -468,7 +467,7 @@ GEM
money (5.1.1)
i18n (~> 0.6.0)
msgpack (1.3.3)
multi_json (1.14.1)
multi_json (1.15.0)
multi_xml (0.6.0)
multipart-post (2.1.1)
newrelic_rpm (3.18.1.330)
@@ -483,8 +482,8 @@ GEM
oj (3.10.8)
optimist (3.0.0)
orm_adapter (0.5.0)
paper_trail (5.2.3)
activerecord (>= 3.0, < 6.0)
paper_trail (7.1.3)
activerecord (>= 4.0, < 5.2)
request_store (~> 1.1)
paperclip (3.4.2)
activemodel (>= 3.0.0)
@@ -510,7 +509,7 @@ GEM
pry-byebug (3.7.0)
byebug (~> 11.0)
pry (~> 0.10)
public_suffix (4.0.3)
public_suffix (4.0.5)
rack (1.5.5)
rack-mini-profiler (2.0.2)
rack (>= 1.2.0)
@@ -555,7 +554,7 @@ GEM
nokogiri (~> 1.5)
optimist (~> 3.0)
redcarpet (3.5.0)
request_store (1.4.1)
request_store (1.5.0)
rack (>= 1.4)
responders (1.1.2)
railties (>= 3.2, < 4.2)
@@ -592,19 +591,19 @@ GEM
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.9.2)
rswag (2.2.0)
rswag-api (= 2.2.0)
rswag-specs (= 2.2.0)
rswag-ui (= 2.2.0)
rswag-api (2.2.0)
railties (>= 3.1, < 6.1)
rswag-specs (2.2.0)
activesupport (>= 3.1, < 6.1)
rswag (2.3.1)
rswag-api (= 2.3.1)
rswag-specs (= 2.3.1)
rswag-ui (= 2.3.1)
rswag-api (2.3.1)
railties (>= 3.1, < 7.0)
rswag-specs (2.3.1)
activesupport (>= 3.1, < 7.0)
json-schema (~> 2.2)
railties (>= 3.1, < 6.1)
rswag-ui (2.2.0)
actionpack (>= 3.1, < 6.1)
railties (>= 3.1, < 6.1)
railties (>= 3.1, < 7.0)
rswag-ui (2.3.1)
actionpack (>= 3.1, < 7.0)
railties (>= 3.1, < 7.0)
rubocop (0.81.0)
jaro_winkler (~> 1.5.1)
parallel (~> 1.10)
@@ -743,7 +742,6 @@ DEPENDENCIES
devise-encryptable
devise-token_authenticatable (~> 0.4.10)
dfc_provider!
diffy
eventmachine (>= 1.2.3)
factory_bot_rails (= 4.10.0)
ffaker (~> 1.16)
@@ -777,7 +775,7 @@ DEPENDENCIES
ofn-qz!
oj
order_management!
paper_trail (~> 5.2.3)
paper_trail (~> 7.1.3)
paperclip (~> 3.4.1)
paranoia (~> 2.0)
pg (~> 0.21.0)

View File

@@ -43,7 +43,7 @@ Darkswarm.directive 'mapSearch', ($timeout, Search) ->
# When the map loads, and we have a search from ?query, perform that search
scope.performUrlSearch = (map) ->
google.maps.event.addListenerOnce map, "idle", =>
google.maps.event.trigger(scope.input, 'focus');
google.maps.event.trigger(scope.input, 'focus',{});
google.maps.event.trigger(scope.input, 'keydown', {keyCode: 13});
# Bias the SearchBox results towards places that are within the bounds of the

View File

@@ -1,4 +1,4 @@
Darkswarm.directive 'ofnOpenStreetMap', ($window, Enterprises, EnterpriseModal, availableCountries, openStreetMapConfig) ->
Darkswarm.directive 'ofnOpenStreetMap', ($window, MapCentreCalculator, Enterprises, EnterpriseModal, availableCountries, openStreetMapConfig) ->
restrict: 'E'
replace: true
scope: true
@@ -11,34 +11,6 @@ Darkswarm.directive 'ofnOpenStreetMap', ($window, Enterprises, EnterpriseModal,
openStreetMapProviderName = openStreetMapConfig.open_street_map_provider_name
openStreetMapProviderOptions = JSON.parse(openStreetMapConfig.open_street_map_provider_options)
average = (values) ->
total = values.reduce (sum, value) ->
sum = sum + value
, 0
total / values.length
averageAngle = (angleName) ->
positiveAngles = []
negativeAngles = []
for enterprise in Enterprises.enterprises
if enterprise.latitude? && enterprise.longitude?
if enterprise[angleName] > 0
positiveAngles.push(enterprise[angleName])
else
negativeAngles.push(enterprise[angleName])
averageNegativeAngle = average(negativeAngles)
averagePositiveAngle = average(positiveAngles)
if negativeAngles.length == 0
averagePositiveAngle
else if positiveAngles.length == 0
averageNegativeAngle
else if averagePositiveAngle > averageNegativeAngle
averagePositiveAngle - averageNegativeAngle
else
averageNegativeAngle - averagePositiveAngle
buildMarker = (enterprise, latlng, title) ->
icon = L.icon
iconUrl: enterprise.icon
@@ -61,28 +33,31 @@ Darkswarm.directive 'ofnOpenStreetMap', ($window, Enterprises, EnterpriseModal,
displayMap = ->
setMapDimensions()
averageLatitude = averageAngle("latitude")
averageLongitude = averageAngle("longitude")
zoomLevel = 6
map = L.map('open-street-map')
L.tileLayer.provider(openStreetMapProviderName, openStreetMapProviderOptions).addTo(map)
map.setView([averageLatitude, averageLongitude], zoomLevel)
map.setView([MapCentreCalculator.initialLatitude(), MapCentreCalculator.initialLongitude()], zoomLevel)
displayEnterprises = ->
for enterprise in Enterprises.enterprises
if enterprise.latitude? && enterprise.longitude?
marker = buildMarker(enterprise, { lat: enterprise.latitude, lng: enterprise.longitude }, enterprise.name).addTo(map)
enterpriseNames.push(enterpriseName(enterprise))
markers.push(marker)
for enterprise in Enterprises.geocodedEnterprises()
marker = buildMarker(enterprise, { lat: enterprise.latitude, lng: enterprise.longitude }, enterprise.name).addTo(map)
enterpriseNames.push(enterpriseName(enterprise))
markers.push(marker)
disableSearchField = () =>
$('#open-street-map--search input').prop("disabled", true)
displaySearchField = () ->
new Autocomplete('#open-street-map--search',
onSubmit: goToEnterprise
search: searchEnterprises
)
overwriteInlinePositionRelativeToPositionSearchField = ->
$('#open-street-map--search').css("position", "absolute")
overwriteInlinePositionRelativeToPositionSearchField()
overwriteInlinePositionRelativeToAbsoluteOnSearchField()
if Enterprises.geocodedEnterprises().length == 0
disableSearchField()
overwriteInlinePositionRelativeToAbsoluteOnSearchField = ->
$('#open-street-map--search').css("position", "absolute")
searchEnterprises = (input) ->
if input.length < 1

View File

@@ -24,7 +24,8 @@ Darkswarm.factory 'Checkout', ($injector, CurrentOrder, ShippingMethods, StripeE
try
@loadFlash(error: t("checkout.failed")) # inform the user about the unexpected error
finally
throw error # generate a BugsnagJS alert
Bugsnag.notify(error)
throw error
handle_checkout_error_response: (response) =>
throw response unless response.data?

View File

@@ -84,3 +84,8 @@ Darkswarm.factory 'Enterprises', (enterprises, ShopsResource, CurrentHub, Taxons
resetDistance: ->
enterprise.distance = null for enterprise in @enterprises
geocodedEnterprises: =>
@enterprises.filter (enterprise) ->
enterprise.latitude? && enterprise.longitude?

View File

@@ -2,9 +2,7 @@ Darkswarm.factory "OfnMap", (Enterprises, EnterpriseListModal, MapConfiguration)
new class OfnMap
constructor: ->
@coordinates = {}
@enterprises = Enterprises.enterprises.filter (enterprise) ->
# Remove enterprises w/o lat or long
enterprise.latitude != null || enterprise.longitude != null
@enterprises = Enterprises.geocodedEnterprises()
@enterprises = @enterprise_markers(@enterprises)
enterprise_markers: (enterprises) ->

View File

@@ -0,0 +1,30 @@
Darkswarm.factory 'MapCentreCalculator', (Enterprises, openStreetMapConfig) ->
new class MapCentreCalculator
initialLatitude: =>
if Enterprises.geocodedEnterprises().length > 0
@_calculate("latitude", Enterprises.geocodedEnterprises())
else
openStreetMapConfig.open_street_map_default_latitude
initialLongitude: =>
if Enterprises.geocodedEnterprises().length > 0
@_calculate("longitude", Enterprises.geocodedEnterprises())
else
openStreetMapConfig.open_street_map_default_longitude
_calculate: (angleName, coordinates) =>
angles = []
for coordinate in coordinates
angles.push(coordinate[angleName])
minimumAngle = Math.min.apply(null, angles)
maximumAngle = Math.max.apply(null, angles)
distanceBetweenMinimumAndMaximum = if maximumAngle > minimumAngle
maximumAngle - minimumAngle
else
minimumAngle - maximumAngle
minimumAngle + (distanceBetweenMinimumAndMaximum / 2)

View File

@@ -3,6 +3,7 @@
.report__table {
margin-top: 2em;
}
.report__message {
margin-top: 2em;
border: 1px solid $pale-blue;
@@ -10,3 +11,7 @@
padding: .5em;
text-align: center;
}
.customer-names-tip {
margin-top: 1em;
}

View File

@@ -16,12 +16,14 @@
width: 100%;
background-color: $shop-sidebar-overlay;
opacity: 0;
transition: opacity $transition-sidebar;
visibility: hidden;
transition: all $transition-sidebar;
}
&.shown {
.background {
opacity: 1;
visibility: visible;
}
.sidebar,

View File

@@ -1,3 +1,5 @@
@import '../admin/variables';
/* -------------------------------------
* GLOBAL
*------------------------------------- */

View File

@@ -0,0 +1,45 @@
@import "../admin/variables";
// payment list, used in both invoice pdfs and order confirmation emails
.payments-list {
width: 100%;
border-collapse: separate;
border-spacing: 0;
font-size: 12px;
margin-bottom: 20px;
td {
padding: 5px;
border-bottom: 1px solid $medium-grey;
.payment-method-name {
display: block;
font-weight: bold;
}
.payment-method-description {
display: block;
}
}
thead th {
border-bottom: 1px solid $medium-grey;
padding: 10px 5px 5px;
text-transform: uppercase;
text-align: left;
}
.amount {
text-align: right;
padding-right: 15px;
}
.payment-state {
text-align: right;
}
.payment-state-value {
text-transform: uppercase;
}
}

View File

@@ -1,6 +1,7 @@
module Admin
class OrderCyclesController < ResourceController
include OrderCyclesHelper
include PaperTrailLogging
prepend_before_action :set_order_cycle_id, only: [:incoming, :outgoing]
before_action :load_data_for_index, only: :index

View File

@@ -3,6 +3,8 @@ require 'order_management/subscriptions/proxy_order_syncer'
module Admin
class SchedulesController < ResourceController
include PaperTrailLogging
before_action :adapt_params, only: [:update]
before_action :editable_order_cycle_ids_for_create, only: [:create]
before_action :editable_order_cycle_ids_for_update, only: [:update]
@@ -140,7 +142,7 @@ module Admin
end
def permitted_resource_params
params.require(:schedule).permit(:id, :name)
params.require(:schedule).permit(:id, :name, order_cycle_ids: [])
end
end
end

View File

@@ -1,5 +1,6 @@
# Base controller for OFN's API
require_dependency 'spree/api/controller_setup'
require "spree/core/controller_helpers/ssl"
module Api
class BaseController < ActionController::Metal

View File

@@ -1,8 +1,10 @@
require 'spree/core/controller_helpers/auth'
require 'spree/core/controller_helpers/common'
require 'spree/core/controller_helpers/order'
require 'spree/core/controller_helpers/respond_with'
require 'open_food_network/tag_rule_applicator'
class BaseController < ApplicationController
include Spree::Core::ControllerHelpers
include Spree::Core::ControllerHelpers::Auth
include Spree::Core::ControllerHelpers::Common
include Spree::Core::ControllerHelpers::Order

View File

@@ -235,6 +235,7 @@ class CheckoutController < Spree::StoreController
render :edit
end
format.json do
discard_flash_errors
render json: { errors: @order.errors, flash: flash.to_hash }.to_json, status: :bad_request
end
end
@@ -248,4 +249,11 @@ class CheckoutController < Spree::StoreController
def permitted_params
PermittedAttributes::Checkout.new(params).call
end
def discard_flash_errors
# Marks flash errors for deletion after the current action has completed.
# This ensures flash errors generated during XHR requests are not persisted in the
# session for longer than expected.
flash.discard(:error)
end
end

View File

@@ -0,0 +1,17 @@
# frozen_string_literal: true
# This concern adds additional Papertrail logging options so that the id of the
# user that modified the record is also logged.
# See: https://github.com/paper-trail-gem/paper_trail#setting-whodunnit-with-a-controller-callback
module PaperTrailLogging
extend ActiveSupport::Concern
included do
before_action :set_paper_trail_whodunnit
end
def user_for_paper_trail
spree_current_user
end
end

View File

@@ -51,7 +51,7 @@ module Spree
end
def load_order
@order = Order.find_by_number!(params[:order_id], include: :adjustments)
@order = Order.find_by!({ number: params[:order_id] }, include: :adjustments)
end
def check_authorization

View File

@@ -178,7 +178,7 @@ module Spree
return nil if parent_data.blank?
@parent ||= parent_data[:model_class].
public_send("find_by_#{parent_data[:find_by]}", params["#{model_name}_id"])
public_send("find_by", parent_data[:find_by] => params["#{model_name}_id"])
instance_variable_set("@#{model_name}", @parent)
end

View File

@@ -0,0 +1,16 @@
# frozen_string_literal: true
require 'cancan'
module Spree
class BaseController < ApplicationController
include Spree::Core::ControllerHelpers::Auth
include Spree::Core::ControllerHelpers::RespondWith
include Spree::Core::ControllerHelpers::SSL
include Spree::Core::ControllerHelpers::Common
respond_to :html
end
end
require 'spree/i18n/initializer'

View File

@@ -1,3 +1,10 @@
# frozen_string_literal: true
require "spree/core/controller_helpers/auth"
require "spree/core/controller_helpers/common"
require "spree/core/controller_helpers/order"
require "spree/core/controller_helpers/ssl"
module Spree
class UserPasswordsController < Devise::PasswordsController
helper 'spree/base', 'spree/store'

View File

@@ -1,3 +1,10 @@
# frozen_string_literal: true
require "spree/core/controller_helpers/auth"
require "spree/core/controller_helpers/common"
require "spree/core/controller_helpers/order"
require "spree/core/controller_helpers/ssl"
module Spree
class UserRegistrationsController < Devise::RegistrationsController
helper 'spree/base', 'spree/store'

View File

@@ -1,3 +1,10 @@
# frozen_string_literal: true
require "spree/core/controller_helpers/auth"
require "spree/core/controller_helpers/common"
require "spree/core/controller_helpers/order"
require "spree/core/controller_helpers/ssl"
module Spree
class UserSessionsController < Devise::SessionsController
helper 'spree/base', 'spree/store'

View File

@@ -4,4 +4,8 @@ module OrderHelper
def last_payment_method(order)
OrderPaymentFinder.new(order).last_payment&.payment_method
end
def outstanding_balance_label(order)
order.outstanding_balance.negative? ? t(:credit_owed) : t(:balance_due)
end
end

View File

@@ -45,27 +45,33 @@ class SubscriptionConfirmJob
def confirm_order!(order)
record_order(order)
if process_payment!(order)
send_confirmation_email(order)
else
process_payment!(order)
send_confirmation_email(order)
rescue StandardError => e
if order.errors.any?
send_failed_payment_email(order)
else
Bugsnag.notify(e, order: order)
send_failed_payment_email(order, e.message)
end
end
# Process the order payment and raise if it's not successful
def process_payment!(order)
return false if order.errors.present?
return true unless order.payment_required?
raise if order.errors.present?
return unless order.payment_required?
prepare_for_payment!(order)
order.process_payments!
raise if order.errors.any?
end
def prepare_for_payment!(order)
setup_payment!(order)
return false if order.errors.any?
raise if order.errors.any?
authorize_payment!(order)
return false if order.errors.any?
order.process_payments!
return false if order.errors.any?
true
raise if order.errors.any?
end
def setup_payment!(order)
@@ -87,9 +93,11 @@ class SubscriptionConfirmJob
SubscriptionMailer.confirmation_email(order).deliver
end
def send_failed_payment_email(order)
def send_failed_payment_email(order, error_message = nil)
order.update!
record_and_log_error(:failed_payment, order)
record_and_log_error(:failed_payment, order, error_message)
SubscriptionMailer.failed_payment_email(order).deliver
rescue StandardError => e
Bugsnag.notify(e, order: order, error_message: error_message)
end
end

View File

@@ -29,10 +29,16 @@ class SubscriptionPlacementJob
def place_order_for(proxy_order)
JobLogger.logger.info("Placing Order for Proxy Order #{proxy_order.id}")
proxy_order.initialise_order!
initialise_order(proxy_order)
place_order(proxy_order.order)
end
def initialise_order(proxy_order)
proxy_order.initialise_order!
rescue StandardError => e
Bugsnag.notify(e, subscription: proxy_order.subscription, proxy_order: proxy_order)
end
def place_order(order)
record_order(order)
return record_issue(:complete, order) if order.completed?
@@ -42,8 +48,9 @@ class SubscriptionPlacementJob
move_to_completion(order)
send_placement_email(order, changes)
rescue StateMachine::InvalidTransition
record_and_log_error(:processing, order)
rescue StandardError => e
record_and_log_error(:processing, order, e.message)
Bugsnag.notify(e, order: order)
end
def cap_quantity_and_store_changes(order)

View File

@@ -0,0 +1,26 @@
# frozen_string_literal: true
module Spree
class BaseMailer < ActionMailer::Base
# Inline stylesheets
include Roadie::Rails::Automatic
layout 'mailer'
def from_address
Spree::Config[:mails_from]
end
def money(amount)
Spree::Money.new(amount).to_s
end
helper_method :money
protected
def roadie_options
# This lets us specify assets using relative paths in email templates
super.merge(url_options: { host: URI(main_app.root_url).host })
end
end
end

View File

@@ -1,14 +0,0 @@
Spree::BaseMailer.class_eval do
# Inline stylesheets
include Roadie::Rails::Automatic
# Define layout
layout 'mailer'
protected
def roadie_options
# This lets us specify assets using relative paths in email templates
super.merge(url_options: { host: URI(main_app.root_url).host })
end
end

View File

@@ -0,0 +1,69 @@
# frozen_string_literal: true
module Spree
class OrderMailer < BaseMailer
helper HtmlHelper
helper ::CheckoutHelper
helper SpreeCurrencyHelper
helper Spree::Admin::PaymentsHelper
helper OrderHelper
include I18nHelper
def cancel_email(order_or_order_id, resend = false)
@order = find_order(order_or_order_id)
I18n.with_locale valid_locale(@order.user) do
mail(to: @order.email,
from: from_address,
subject: mail_subject(t('spree.order_mailer.cancel_email.subject'), resend))
end
end
def confirm_email_for_customer(order_or_order_id, resend = false)
@order = find_order(order_or_order_id)
I18n.with_locale valid_locale(@order.user) do
subject = mail_subject(t('spree.order_mailer.confirm_email.subject'), resend)
mail(to: @order.email,
from: from_address,
subject: subject,
reply_to: @order.distributor.contact.email)
end
end
def confirm_email_for_shop(order_or_order_id, resend = false)
@order = find_order(order_or_order_id)
I18n.with_locale valid_locale(@order.user) do
subject = mail_subject(t('spree.order_mailer.confirm_email.subject'), resend)
mail(to: @order.distributor.contact.email,
from: from_address,
subject: subject)
end
end
def invoice_email(order_or_order_id, pdf)
@order = find_order(order_or_order_id)
attach_file("invoice-#{@order.number}.pdf", pdf)
I18n.with_locale valid_locale(@order.user) do
mail(to: @order.email,
from: from_address,
subject: mail_subject(t(:invoice), false),
reply_to: @order.distributor.contact.email)
end
end
private
# Finds an order instance from an order or from an order id
def find_order(order_or_order_id)
order_or_order_id.respond_to?(:id) ? order_or_order_id : Spree::Order.find(order_or_order_id)
end
def mail_subject(base_subject, resend)
resend_prefix = (resend ? "[#{t(:resend).upcase}] " : '')
"#{resend_prefix}#{Spree::Config[:site_name]} #{base_subject} ##{@order.number}"
end
def attach_file(filename, file)
attachments[filename] = file if file.present?
end
end
end

View File

@@ -1,64 +0,0 @@
Spree::OrderMailer.class_eval do
helper HtmlHelper
helper CheckoutHelper
helper SpreeCurrencyHelper
helper OrderHelper
include I18nHelper
def cancel_email(order_or_order_id, resend = false)
@order = find_order(order_or_order_id)
I18n.with_locale valid_locale(@order.user) do
mail(to: @order.email,
from: from_address,
subject: mail_subject(t('spree.order_mailer.cancel_email.subject'), resend))
end
end
def confirm_email_for_customer(order_or_order_id, resend = false)
@order = find_order(order_or_order_id)
I18n.with_locale valid_locale(@order.user) do
subject = mail_subject(t('spree.order_mailer.confirm_email.subject'), resend)
mail(to: @order.email,
from: from_address,
subject: subject,
reply_to: @order.distributor.contact.email)
end
end
def confirm_email_for_shop(order_or_order_id, resend = false)
@order = find_order(order_or_order_id)
I18n.with_locale valid_locale(@order.user) do
subject = mail_subject(t('spree.order_mailer.confirm_email.subject'), resend)
mail(to: @order.distributor.contact.email,
from: from_address,
subject: subject)
end
end
def invoice_email(order_or_order_id, pdf)
@order = find_order(order_or_order_id)
attach_file("invoice-#{@order.number}.pdf", pdf)
I18n.with_locale valid_locale(@order.user) do
mail(to: @order.email,
from: from_address,
subject: mail_subject(t(:invoice), false),
reply_to: @order.distributor.contact.email)
end
end
private
# Finds an order instance from an order or from an order id
def find_order(order_or_order_id)
order_or_order_id.respond_to?(:id) ? order_or_order_id : Spree::Order.find(order_or_order_id)
end
def mail_subject(base_subject, resend)
resend_prefix = (resend ? "[#{t(:resend).upcase}] " : '')
"#{resend_prefix}#{Spree::Config[:site_name]} #{base_subject} ##{@order.number}"
end
def attach_file(filename, file)
attachments[filename] = file if file.present?
end
end

View File

@@ -0,0 +1,13 @@
# frozen_string_literal: true
module Spree
class ShipmentMailer < BaseMailer
def shipped_email(shipment, resend = false)
@shipment = shipment.respond_to?(:id) ? shipment : Spree::Shipment.find(shipment)
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
base_subject = t('spree.shipment_mailer.shipped_email.subject')
subject += "#{Spree::Config[:site_name]} #{base_subject} ##{@shipment.order.number}"
mail(to: @shipment.order.email, from: from_address, subject: subject)
end
end
end

View File

@@ -0,0 +1,11 @@
# frozen_string_literal: true
module Spree
class TestMailer < BaseMailer
def test_email(user)
recipient = user.respond_to?(:id) ? user : Spree.user_class.find(user)
subject = "#{Spree::Config[:site_name]} #{t('spree.test_mailer.test_email.subject')}"
mail(to: recipient.email, from: from_address, subject: subject)
end
end
end

View File

@@ -2,6 +2,7 @@ class SubscriptionMailer < Spree::BaseMailer
helper CheckoutHelper
helper ShopMailHelper
helper OrderHelper
helper Spree::Admin::PaymentsHelper
include I18nHelper
def confirmation_email(order)

View File

@@ -21,6 +21,8 @@ class ContentConfiguration < Spree::Preferences::FileConfiguration
preference :open_street_map_enabled, :boolean, default: false
preference :open_street_map_provider_name, :string, default: "OpenStreetMap.Mapnik"
preference :open_street_map_provider_options, :text, default: "{}"
preference :open_street_map_default_latitude, :string, default: "-37.4713077"
preference :open_street_map_default_longitude, :string, default: "144.7851531"
# Producer sign-up page
# All the following defaults using I18n don't work.

View File

@@ -6,6 +6,7 @@ class Enterprise < ActiveRecord::Base
preference :shopfront_closed_message, :text, default: ""
preference :shopfront_taxon_order, :string, default: ""
preference :shopfront_order_cycle_order, :string, default: "orders_close_at"
preference :show_customer_names_to_suppliers, :boolean, default: false
# This is hopefully a temporary measure, pending the arrival of multiple named inventories
# for shops. We need this here to allow hubs to restrict visible variants to only those in

View File

@@ -1,92 +0,0 @@
require 'delegate'
class OrderUpdater < SimpleDelegator
# TODO: This logic adapted from Spree 2.4, remove when we get there
# Handles state updating in a much more logical way than < 2.4
# Specifically, doesn't depend on payments.last to determine payment state
# Also swapped: == 0 for .zero?, .size == 0 for empty? and .size > 0 for !empty?
# See:
# https://github.com/spree/spree/commit/38b8456183d11fc1e00e395e7c9154c76ef65b85
# https://github.com/spree/spree/commit/7b264acff7824f5b3dc6651c106631d8f30b147a
def update_payment_state
last_payment_state = order.payment_state
order.payment_state = infer_payment_state
track_payment_state_change(last_payment_state)
order.payment_state
end
def before_save_hook
shipping_address_from_distributor
end
# Sets the distributor's address as shipping address of the order for those
# shipments using a shipping method that doesn't require address, such us
# a pickup.
def shipping_address_from_distributor
return if order.shipping_method.blank? || order.shipping_method.require_ship_address
order.ship_address = order.address_from_distributor
end
private
def infer_payment_state
if failed_payments?
'failed'
elsif canceled_and_not_paid_for?
'void'
else
infer_payment_state_from_balance
end
end
def infer_payment_state_from_balance
# This part added so that we don't need to override
# order.outstanding_balance
balance = order.outstanding_balance
balance = -1 * order.payment_total if canceled_and_paid_for?
infer_state(balance)
end
def infer_state(balance)
if balance > 0
'balance_due'
elsif balance < 0
'credit_owed'
elsif balance.zero?
'paid'
end
end
# Tracks the state transition through a state_change for this order. It
# does so until the last state is reached. That is, when the infered next
# state is the same as the order has now.
#
# @param last_payment_state [String]
def track_payment_state_change(last_payment_state)
return if last_payment_state == order.payment_state
order.state_changed('payment')
end
# Taken from order.outstanding_balance in Spree 2.4
# See: https://github.com/spree/spree/commit/7b264acff7824f5b3dc6651c106631d8f30b147a
def canceled_and_paid_for?
order.canceled? && paid?
end
def canceled_and_not_paid_for?
order.state == 'canceled' && order.payment_total.zero?
end
def paid?
payments.present? && !payments.completed.empty?
end
def failed_payments?
payments.present? && payments.valid.empty?
end
end

View File

@@ -10,7 +10,9 @@ module PreferenceSections
[
:open_street_map_enabled,
:open_street_map_provider_name,
:open_street_map_provider_options
:open_street_map_provider_options,
:open_street_map_default_latitude,
:open_street_map_default_longitude
]
end
end

View File

@@ -0,0 +1,155 @@
# frozen_string_literal: true
module Spree
class CreditCard < ActiveRecord::Base
belongs_to :payment_method
belongs_to :user
has_many :payments, as: :source
before_save :set_last_digits
attr_accessor :verification_value
attr_reader :number
attr_writer :save_requested_by_customer # For holding customer preference in memory
validates :month, :year, numericality: { only_integer: true }
validates :number, presence: true, unless: :has_payment_profile?, on: :create
validates :verification_value, presence: true, unless: :has_payment_profile?, on: :create
validate :expiry_not_in_the_past
after_create :ensure_single_default_card
after_save :ensure_single_default_card, if: :default_card_needs_updating?
scope :with_payment_profile, -> { where('gateway_customer_profile_id IS NOT NULL') }
# needed for some of the ActiveMerchant gateways (eg. SagePay)
alias_attribute :brand, :cc_type
def expiry=(expiry)
self[:month], self[:year] = expiry.split(" / ")
self[:year] = "20" + self[:year]
end
def number=(num)
@number = begin
num.gsub(/[^0-9]/, '')
rescue StandardError
nil
end
end
# cc_type is set by jquery.payment, which helpfully provides different
# types from Active Merchant. Converting them is necessary.
def cc_type=(type)
real_type = case type
when 'mastercard', 'maestro'
'master'
when 'amex'
'american_express'
when 'dinersclub'
'diners_club'
else
type
end
self[:cc_type] = real_type
end
def set_last_digits
number.to_s.gsub!(/\s/, '')
verification_value.to_s.gsub!(/\s/, '')
self.last_digits ||= number.to_s.length <= 4 ? number : number.to_s.slice(-4..-1)
end
def name?
first_name? && last_name?
end
def name
"#{first_name} #{last_name}"
end
def verification_value?
verification_value.present?
end
# Show the card number, with all but last 4 numbers replace with "X". (XXXX-XXXX-XXXX-4338)
def display_number
"XXXX-XXXX-XXXX-#{last_digits}"
end
def actions
%w{capture void credit}
end
# Indicates whether its possible to capture the payment
def can_capture?(payment)
payment.pending? || payment.checkout?
end
# Indicates whether its possible to void the payment.
def can_void?(payment)
!payment.void?
end
# Indicates whether its possible to credit the payment. Note that most gateways require that the
# payment be settled first which generally happens within 12-24 hours of the transaction.
def can_credit?(payment)
return false unless payment.completed?
return false unless payment.order.payment_state == 'credit_owed'
payment.credit_allowed.positive?
end
# Allows us to use a gateway_payment_profile_id to store Stripe Tokens
def has_payment_profile?
gateway_customer_profile_id.present? || gateway_payment_profile_id.present?
end
def to_active_merchant
ActiveMerchant::Billing::CreditCard.new(
number: number,
month: month,
year: year,
verification_value: verification_value,
first_name: first_name,
last_name: last_name
)
end
def save_requested_by_customer?
!!@save_requested_by_customer
end
private
def expiry_not_in_the_past
return unless year.present? && month.present?
time = "#{year}-#{month}-1".to_time
return unless time < Time.zone.now.to_time.beginning_of_month
errors.add(:base, :card_expired)
end
def reusable?
gateway_customer_profile_id.present?
end
def default_missing?
!user.credit_cards.exists?(is_default: true)
end
def default_card_needs_updating?
is_default_changed? || gateway_customer_profile_id_changed?
end
def ensure_single_default_card
return unless user
return unless is_default? || (reusable? && default_missing?)
user.credit_cards.update_all(['is_default=(id=?)', id])
self.is_default = true
end
end
end

View File

@@ -1,47 +0,0 @@
Spree::CreditCard.class_eval do
# For holding customer preference in memory
attr_writer :save_requested_by_customer
# Should be able to remove once we reach Spree v2.2.0
# https://github.com/spree/spree/commit/411010f3975c919ab298cb63962ee492455b415c
belongs_to :payment_method
belongs_to :user
after_create :ensure_single_default_card
after_save :ensure_single_default_card, if: :default_card_needs_updating?
# Allows us to use a gateway_payment_profile_id to store Stripe Tokens
# Should be able to remove once we reach Spree v2.2.0
# Commit: https://github.com/spree/spree/commit/5a4d690ebc64b264bf12904a70187e7a8735ef3f
# See also: https://github.com/spree/spree_gateway/issues/111
def has_payment_profile? # rubocop:disable Naming/PredicateName
gateway_customer_profile_id.present? || gateway_payment_profile_id.present?
end
def save_requested_by_customer?
!!@save_requested_by_customer
end
private
def reusable?
gateway_customer_profile_id.present?
end
def default_missing?
!user.credit_cards.exists?(is_default: true)
end
def default_card_needs_updating?
is_default_changed? || gateway_customer_profile_id_changed?
end
def ensure_single_default_card
return unless user
return unless is_default? || (reusable? && default_missing?)
user.credit_cards.update_all(['is_default=(id=?)', id])
self.is_default = true
end
end

View File

@@ -0,0 +1,62 @@
# frozen_string_literal: true
require 'spree/concerns/payment_method_distributors'
module Spree
class Gateway < PaymentMethod
include Spree::PaymentMethodDistributors
delegate_belongs_to :provider, :authorize, :purchase, :capture, :void, :credit
validates :name, :type, presence: true
# Default to live
preference :server, :string, default: 'live'
preference :test_mode, :boolean, default: false
def payment_source_class
CreditCard
end
# instantiates the selected gateway and configures with the options stored in the database
def self.current
super
end
def provider
gateway_options = options
gateway_options.delete :login if gateway_options.key?(:login) && gateway_options[:login].nil?
if gateway_options[:server]
ActiveMerchant::Billing::Base.gateway_mode = gateway_options[:server].to_sym
end
@provider ||= provider_class.new(gateway_options)
end
def options
preferences.each_with_object({}){ |(key, value), memo| memo[key.to_sym] = value; }
end
def method_missing(method, *args)
if @provider.nil? || !@provider.respond_to?(method)
super
else
provider.__send__(method, *args)
end
end
def payment_profiles_supported?
false
end
def method_type
'gateway'
end
def supports?(source)
return true unless provider_class.respond_to? :supports?
return false unless source.brand
provider_class.supports?(source.brand)
end
end
end

View File

@@ -0,0 +1,102 @@
# frozen_string_literal: true
module Spree
class Gateway
class Bogus < Spree::Gateway
TEST_VISA = ['4111111111111111', '4012888888881881', '4222222222222'].freeze
TEST_MC = ['5500000000000004', '5555555555554444', '5105105105105100'].freeze
TEST_AMEX = ['378282246310005', '371449635398431',
'378734493671000', '340000000000009'].freeze
TEST_DISC = ['6011000000000004', '6011111111111117', '6011000990139424'].freeze
VALID_CCS = ['1', TEST_VISA, TEST_MC, TEST_AMEX, TEST_DISC].flatten
attr_accessor :test
def provider_class
self.class
end
def preferences
{}
end
def create_profile(payment)
# simulate the storage of credit card profile using remote service
success = VALID_CCS.include? payment.source.number
payment.source.update(gateway_customer_profile_id: generate_profile_id(success))
end
def authorize(_money, credit_card, _options = {})
profile_id = credit_card.gateway_customer_profile_id
if VALID_CCS.include?(credit_card.number) || profile_id&.starts_with?('BGS-')
ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {},
test: true, authorization: '12345',
avs_result: { code: 'A' })
else
ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure',
{ message: 'Bogus Gateway: Forced failure' },
test: true)
end
end
def purchase(_money, credit_card, _options = {})
profile_id = credit_card.gateway_customer_profile_id
if VALID_CCS.include?(credit_card.number) || profile_id&.starts_with?('BGS-')
ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {},
test: true, authorization: '12345',
avs_result: { code: 'A' })
else
ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure',
message: 'Bogus Gateway: Forced failure',
test: true)
end
end
def credit(_money, _credit_card, _response_code, _options = {})
ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {},
test: true, authorization: '12345')
end
def capture(authorization, _credit_card, _gateway_options)
if authorization.response_code == '12345'
ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {},
test: true, authorization: '67890')
else
ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure',
error: 'Bogus Gateway: Forced failure', test: true)
end
end
def void(_response_code, _credit_card, _options = {})
ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {},
test: true, authorization: '12345')
end
def test?
# Test mode is not really relevant with bogus gateway (no such thing as live server)
true
end
def payment_profiles_supported?
true
end
def actions
%w(capture void credit)
end
private
def generate_profile_id(success)
record = true
prefix = success ? 'BGS' : 'FAIL'
while record
random = "#{prefix}-#{Array.new(6){ rand(6) }.join}"
record = CreditCard.find_by(gateway_customer_profile_id: random)
end
random
end
end
end
end

View File

@@ -0,0 +1,36 @@
# frozen_string_literal: true
# Bogus Gateway that doesn't support payment profiles
module Spree
class Gateway
class BogusSimple < Spree::Gateway::Bogus
def payment_profiles_supported?
false
end
def authorize(_money, credit_card, _options = {})
if VALID_CCS.include? credit_card.number
ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {},
test: true, authorization: '12345',
avs_result: { code: 'A' })
else
ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure',
{ message: 'Bogus Gateway: Forced failure' },
test: true)
end
end
def purchase(_money, credit_card, _options = {})
if VALID_CCS.include? credit_card.number
ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {},
test: true, authorization: '12345',
avs_result: { code: 'A' })
else
ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure',
message: 'Bogus Gateway: Forced failure',
test: true)
end
end
end
end
end

View File

@@ -1,9 +0,0 @@
require 'spree/concerns/payment_method_distributors'
Spree::Gateway.class_eval do
include Spree::PaymentMethodDistributors
# Default to live
preference :server, :string, default: 'live'
preference :test_mode, :boolean, default: false
end

View File

@@ -89,6 +89,10 @@ Spree::Order.class_eval do
where("state != ?", state)
}
def updater
@updater ||= OrderManagement::Order::Updater.new(self)
end
def create_proposed_shipments
adjustments.shipping.delete_all
shipments.destroy_all
@@ -374,6 +378,13 @@ Spree::Order.class_eval do
address
end
# Update attributes of a record in the database without callbacks, validations etc.
# This was originally an extension to ActiveRecord in Spree but only used for Spree::Order
def update_attributes_without_callbacks(attributes)
assign_attributes(attributes)
Spree::Order.where(id: id).update_all(attributes)
end
private
def adjustments_fetcher

View File

@@ -1,8 +0,0 @@
# frozen_string_literal: true
Spree::OrderUpdater.class_eval do
# Override spree method to make it update all adjustments as in Spree v2.0.4
def update_shipping_adjustments
order.adjustments.reload.each(&:update!)
end
end

View File

@@ -0,0 +1,137 @@
# frozen_string_literal: true
require 'spree/concerns/payment_method_distributors'
module Spree
class PaymentMethod < ActiveRecord::Base
include Spree::Core::CalculatedAdjustments
include Spree::PaymentMethodDistributors
acts_as_taggable
acts_as_paranoid
DISPLAY = [:both, :front_end, :back_end].freeze
default_scope -> { where(deleted_at: nil) }
has_many :credit_cards, class_name: "Spree::CreditCard"
validates :name, presence: true
validate :distributor_validation
after_initialize :init
scope :production, -> { where(environment: 'production') }
scope :managed_by, lambda { |user|
if user.has_spree_role?('admin')
where(nil)
else
joins(:distributors).
where('distributors_payment_methods.distributor_id IN (?)',
user.enterprises.select(&:id)).
select('DISTINCT spree_payment_methods.*')
end
}
scope :for_distributors, ->(distributors) {
non_unique_matches = unscoped.joins(:distributors).where(enterprises: { id: distributors })
where(id: non_unique_matches.map(&:id))
}
scope :for_distributor, lambda { |distributor|
joins(:distributors).
where('enterprises.id = ?', distributor)
}
scope :for_subscriptions, -> { where(type: Subscription::ALLOWED_PAYMENT_METHOD_TYPES) }
scope :by_name, -> { order('spree_payment_methods.name ASC') }
scope :available, lambda { |display_on = 'both'|
where(active: true).
where('spree_payment_methods.display_on=? OR spree_payment_methods.display_on=? OR spree_payment_methods.display_on IS NULL', display_on, '').
where('spree_payment_methods.environment=? OR spree_payment_methods.environment=? OR spree_payment_methods.environment IS NULL', Rails.env, '')
}
def self.providers
Rails.application.config.spree.payment_methods
end
def provider_class
raise 'You must implement provider_class method for this gateway.'
end
# The class that will process payments for this payment type, used for @payment.source
# e.g. CreditCard in the case of a the Gateway payment type
# nil means the payment method doesn't require a source e.g. check
def payment_source_class
raise 'You must implement payment_source_class method for this gateway.'
end
def self.active?
where(type: to_s, environment: Rails.env, active: true).count.positive?
end
def method_type
type.demodulize.downcase
end
def self.find_with_destroyed(*args)
unscoped { find(*args) }
end
def payment_profiles_supported?
false
end
def source_required?
true
end
def auto_capture?
Spree::Config[:auto_capture]
end
def supports?(_source)
true
end
def init
unless reflections.key?(:calculator)
self.class.include Spree::Core::CalculatedAdjustments
end
self.calculator ||= Calculator::FlatRate.new(preferred_amount: 0)
end
def has_distributor?(distributor)
distributors.include?(distributor)
end
def self.clean_name
case name
when "Spree::PaymentMethod::Check"
"Cash/EFT/etc. (payments for which automatic validation is not required)"
when "Spree::Gateway::Migs"
"MasterCard Internet Gateway Service (MIGS)"
when "Spree::Gateway::Pin"
"Pin Payments"
when "Spree::Gateway::StripeConnect"
"Stripe"
when "Spree::Gateway::StripeSCA"
"Stripe SCA"
when "Spree::Gateway::PayPalExpress"
"PayPal Express"
else
i = name.rindex('::') + 2
name[i..-1]
end
end
private
def distributor_validation
validates_with DistributorsValidator
end
end
end

View File

@@ -0,0 +1,33 @@
# frozen_string_literal: true
module Spree
class PaymentMethod
class Check < Spree::PaymentMethod
def actions
%w{capture void}
end
# Indicates whether its possible to capture the payment
def can_capture?(payment)
['checkout', 'pending'].include?(payment.state)
end
# Indicates whether its possible to void the payment.
def can_void?(payment)
payment.state != 'void'
end
def capture(*_args)
ActiveMerchant::Billing::Response.new(true, "", {}, {})
end
def void(*_args)
ActiveMerchant::Billing::Response.new(true, "", {}, {})
end
def source_required?
false
end
end
end
end

View File

@@ -1,84 +0,0 @@
require 'spree/concerns/payment_method_distributors'
Spree::PaymentMethod.class_eval do
include Spree::Core::CalculatedAdjustments
include Spree::PaymentMethodDistributors
acts_as_taggable
has_many :credit_cards, class_name: "Spree::CreditCard" # from Spree v.2.3.0 d470b31798f37
after_initialize :init
validate :distributor_validation
# -- Scopes
scope :managed_by, lambda { |user|
if user.has_spree_role?('admin')
where(nil)
else
joins(:distributors).
where('distributors_payment_methods.distributor_id IN (?)', user.enterprises.select(&:id)).
select('DISTINCT spree_payment_methods.*')
end
}
scope :for_distributors, ->(distributors) {
non_unique_matches = unscoped.joins(:distributors).where(enterprises: { id: distributors })
where(id: non_unique_matches.map(&:id))
}
scope :for_distributor, lambda { |distributor|
joins(:distributors).
where('enterprises.id = ?', distributor)
}
scope :for_subscriptions, -> { where(type: Subscription::ALLOWED_PAYMENT_METHOD_TYPES) }
scope :by_name, -> { order('spree_payment_methods.name ASC') }
# Rewrite Spree's ruby-land class method as a scope
scope :available, lambda { |display_on = 'both'|
where(active: true).
where('spree_payment_methods.display_on=? OR spree_payment_methods.display_on=? OR spree_payment_methods.display_on IS NULL', display_on, '').
where('spree_payment_methods.environment=? OR spree_payment_methods.environment=? OR spree_payment_methods.environment IS NULL', Rails.env, '')
}
def init
unless reflections.key?(:calculator)
self.class.include Spree::Core::CalculatedAdjustments
end
self.calculator ||= Calculator::FlatRate.new(preferred_amount: 0)
end
def has_distributor?(distributor)
distributors.include?(distributor)
end
def self.clean_name
case name
when "Spree::PaymentMethod::Check"
"Cash/EFT/etc. (payments for which automatic validation is not required)"
when "Spree::Gateway::Migs"
"MasterCard Internet Gateway Service (MIGS)"
when "Spree::Gateway::Pin"
"Pin Payments"
when "Spree::Gateway::StripeConnect"
"Stripe"
when "Spree::Gateway::StripeSCA"
"Stripe SCA"
when "Spree::Gateway::PayPalExpress"
"PayPal Express"
else
i = name.rindex('::') + 2
name[i..-1]
end
end
private
def distributor_validation
validates_with DistributorsValidator
end
end

View File

@@ -4,8 +4,8 @@ class Api::Admin::EnterpriseSerializer < ActiveModel::Serializer
:preferred_shopfront_message, :preferred_shopfront_closed_message,
:preferred_shopfront_taxon_order, :preferred_shopfront_order_cycle_order,
:preferred_product_selection_from_inventory_only,
:owner, :contact, :users, :tag_groups, :default_tag_group,
:require_login, :allow_guest_orders, :allow_order_changes,
:preferred_show_customer_names_to_suppliers, :owner, :contact, :users, :tag_groups,
:default_tag_group, :require_login, :allow_guest_orders, :allow_order_changes,
:logo, :promo_image
has_one :owner, serializer: Api::Admin::UserSerializer

View File

@@ -4,7 +4,9 @@ module Api
class OpenStreetMapConfigSerializer < ActiveModel::Serializer
attributes :open_street_map_enabled,
:open_street_map_provider_name,
:open_street_map_provider_options
:open_street_map_provider_options,
:open_street_map_default_latitude,
:open_street_map_default_longitude
def open_street_map_enabled
ContentConfig.open_street_map_enabled
@@ -15,7 +17,15 @@ module Api
end
def open_street_map_provider_options
ContentConfig.open_street_map_provider_options.to_json
ContentConfig.open_street_map_provider_options
end
def open_street_map_default_latitude
ContentConfig.open_street_map_default_latitude
end
def open_street_map_default_longitude
ContentConfig.open_street_map_default_longitude
end
end
end

View File

@@ -57,11 +57,12 @@ class OrderAdjustmentsFetcher
if adjustments_eager_loaded?
adjustment_scope = public_send("#{scope}_scope")
# Adjustments are already loaded here, this block is using `Array#select`
adjustments.select do |adjustment|
match_by_scope(adjustment, adjustment_scope)
match_by_scope(adjustment, adjustment_scope) && match_by_scope(adjustment, eligible_scope)
end
else
adjustments.where(nil).public_send scope
adjustments.where(nil).eligible.public_send scope
end
end

View File

@@ -0,0 +1,35 @@
# frozen_string_literal: true
class OrderDataMasker
def initialize(order)
@order = order
end
def call
mask_customer_names unless customer_names_allowed?
mask_contact_data
end
private
attr_accessor :order
def customer_names_allowed?
order.distributor.preferences[:show_customer_names_to_suppliers]
end
def mask_customer_names
order.bill_address&.assign_attributes(firstname: I18n.t('admin.reports.hidden'),
lastname: "")
order.ship_address&.assign_attributes(firstname: I18n.t('admin.reports.hidden'),
lastname: "")
end
def mask_contact_data
order.bill_address&.assign_attributes(phone: "", address1: "", address2: "",
city: "", zipcode: "", state: nil)
order.ship_address&.assign_attributes(phone: "", address1: "", address2: "",
city: "", zipcode: "", state: nil)
order.assign_attributes(email: I18n.t('admin.reports.hidden'))
end
end

View File

@@ -30,7 +30,7 @@ module PermittedAttributes
:abn, :acn, :charges_sales_tax, :display_invoice_logo, :invoice_text,
:preferred_product_selection_from_inventory_only, :preferred_shopfront_message,
:preferred_shopfront_closed_message, :preferred_shopfront_taxon_order,
:preferred_shopfront_order_cycle_order
:preferred_shopfront_order_cycle_order, :preferred_show_customer_names_to_suppliers
]
end
end

View File

@@ -89,3 +89,16 @@
.five.columns.omega
= f.radio_button :enable_subscriptions, false
= f.label :enable_subscriptions, t('.enable_subscriptions_false'), value: :false
.row
.alpha.eleven.columns
.three.columns.alpha
%label= t '.customer_names_in_reports'
%div{'ofn-with-tip' => t('.customer_names_tip')}
%a= t 'admin.whats_this'
.three.columns
= radio_button :enterprise, :preferred_show_customer_names_to_suppliers, true
= label :enterprise_preferred_show_customer_names_to_suppliers, t('.customer_names_true'), value: :true
.five.columns.omega
= radio_button :enterprise, :preferred_show_customer_names_to_suppliers, false
= label :enterprise_preferred_show_customer_names_to_suppliers, t('.customer_names_false'), value: :false

View File

@@ -4,7 +4,7 @@
%a.button{ href: main_app.admin_subscriptions_path, ng: { show: "['details','review'].indexOf(view) >= 0" } }= t(:cancel)
%input{ type: "button", value: t(:back), ng: { click: 'back()', show: '!!backCallbacks[view]'} }
%input.red{ type: "button", value: t(:next), ng: { click: 'next()', show: '!!nextCallbacks[view]' } }
%input.red{ type: "submit", value: t('admin.subscriptions.create'), ng: { show: "view == 'review'" } }
%input.red{ type: "submit", value: t('.create'), ng: { show: "view == 'review'" } }
%div{ ng: { show: 'subscription.id' } }
%a.button{ href: main_app.admin_subscriptions_path }= t(:close)
%input.red{ type: "button", value: t(:review), ng: { click: "setView('review')", show: "view != 'review'" } }

View File

@@ -1,5 +1,5 @@
- content_for :page_title do
=t('admin.subscriptions.edit')
=t('.title')
-# - content_for :page_actions do
-# %li= button_link_to "Back to subscriptions list", main_app.admin_subscriptions_path, icon: 'icon-arrow-left'

View File

@@ -1,5 +1,5 @@
- content_for :page_title do
= t('admin.subscriptions.subscriptions')
= t('.title')
- content_for :main_ng_app_name do
= "admin.subscriptions"
@@ -7,7 +7,7 @@
- content_for :page_actions do
%li
%a.button.icon-plus#new-subscription{ href: "javascript:void(0)", "new-subscription-dialog" => true }
= t('admin.subscriptions.new')
= t('.new')
= render :partial => 'spree/admin/shared/order_sub_menu'

View File

@@ -1,7 +1,7 @@
-# = render :partial => 'spree/shared/error_messages', :locals => { :target => @enterprise }
- content_for :page_title do
=t('admin.subscriptions.new')
=t('.title')
-# - content_for :page_actions do
-# %li= button_link_to "Back to subscriptions list", main_app.admin_subscriptions_path, icon: 'icon-arrow-left'

View File

@@ -1,4 +1,4 @@
%h1.text-center.margin-bottom-30= t('admin.subscription.subscriptions')
%h1.text-center.margin-bottom-30= t('.title')
.row
.four.columns.alpha &nbsp;

View File

@@ -1,10 +1,8 @@
- bugsnag_js_key = ENV['BUGSNAG_JS_KEY'] || ENV['BUGSNAG_API_KEY']
- if bugsnag_js_key.present?
%script{src: "//d2wy8f7a9ursnm.cloudfront.net/v6/bugsnag.min.js"}
%script{src: "//d2wy8f7a9ursnm.cloudfront.net/v7/bugsnag.min.js"}
:javascript
window.bugsnagClient = bugsnag({
Bugsnag.start({
apiKey: "#{bugsnag_js_key}",
beforeSend: function (report) {
report.app.releaseStage = "#{Rails.env}"
}
});
releaseStage: "#{Rails.env}"
})

View File

@@ -9,7 +9,7 @@
%meta{name: "robots", content: "noindex"}
%title= content_for?(:title) ? "#{yield(:title)} - #{t(:title)}".html_safe : "#{t(:welcome_to)} #{t(:title)}"
- if Rails.env.production?
= favicon_link_tag
= favicon_link_tag "/favicon.ico"
- else
= favicon_link_tag "/favicon-staging.ico"
%link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"}
@@ -38,9 +38,12 @@
%loading
= render "layouts/bugsnag_js"
%script{:src => "https://js.stripe.com/v3/", :type => "text/javascript"}
- if Spree::Config.stripe_connect_enabled
%script{:src => "https://js.stripe.com/v3/", :type => "text/javascript"}
- if !ContentConfig.open_street_map_enabled
%script{src: "//maps.googleapis.com/maps/api/js?libraries=places,geometry#{ ENV['GOOGLE_MAPS_API_KEY'] ? '&key=' + ENV['GOOGLE_MAPS_API_KEY'] : ''} "}
= javascript_include_tag "darkswarm/all"
= javascript_include_tag "web/all"
= render "layouts/i18n_script"

View File

@@ -5,7 +5,7 @@
%title= content_for?(:title) ? "#{yield(:title)} - #{Spree::Config[:site_name]}" : "#{t(:welcome_to)} #{Spree::Config[:site_name]}"
- if Rails.env.production?
= favicon_link_tag
= favicon_link_tag "/favicon.ico"
- else
= favicon_link_tag "/favicon-staging.ico"
%link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"}

View File

@@ -78,8 +78,8 @@
.row.cta-container
.columns.small-12
%a.cta-hub{"ng-repeat" => "hub in producer.hubs | orderBy:'-active'",
"ng-href" => "{{::hub.path}}", "ng-attr-target" => "_blank",
"ng-class" => "::{primary: hub.active, secondary: !hub.active}", "target" => "_blank"}
"ng-href" => "{{::hub.path}}", "ng-attr-target" => "{{ embedded_layout ? '_blank' : undefined }}",
"ng-class" => "::{primary: hub.active, secondary: !hub.active}"}
%i.ofn-i_068-shop-reversed{"ng-if" => "::hub.active"}
%i.ofn-i_068-shop-reversed{"ng-if" => "::!hub.active"}
.hub-name{"ng-bind" => "::hub.name"}

View File

@@ -3,7 +3,7 @@
%span{"ng-if" => "::producer.is_distributor" }
.row.vertical-align-middle
.columns.small-12
%a.is_distributor{"ng-href" => "{{::producer.path}}", "ng-attr-target" => "_blank", "data-is-link" => "true", "target" => "_blank"}
%a.is_distributor{"ng-href" => "{{::producer.path}}", "ng-attr-target" => "{{ embedded_layout ? '_blank' : undefined}}", "data-is-link" => "true"}
%i{ng: {class: "::producer.producer_icon_font"}}
%span.margin-top
%strong{"ng-bind" => "::producer.name"}

View File

@@ -1,4 +1,4 @@
.expanding-sidebar.cart-sidebar{ng: {controller: 'CartCtrl', show: 'showCartSidebar', class: "{'shown': showCartSidebar, 'hidden': !showCartSidebar}"}}
.expanding-sidebar.cart-sidebar{ng: {controller: 'CartCtrl', class: "{'shown': showCartSidebar}"}}
.background{ng: {click: 'toggleCartSidebar()'}}
.sidebar
.cart-header

View File

@@ -7,6 +7,7 @@
- content_for :page_actions do
%li= button_link_to t(:new_adjustment), new_admin_order_adjustment_url(@order), :icon => 'icon-plus'
= render partial: 'spree/admin/shared/order_links'
%li= button_link_to t(:back_to_orders_list), admin_orders_path, :icon => 'icon-arrow-left'
= render :partial => 'adjustments_table'

View File

@@ -151,7 +151,7 @@
%th.final_weight_volume{ 'ng-show' => 'columns.final_weight_volume.visible' }
= t("admin.orders.bulk_management.weight_volume")
%th.price{ 'ng-show' => 'columns.price.visible' }
= t("admin.price (#{currency_symbol})")
= "#{t('admin.price')} (#{currency_symbol})"
%th.actions
%th.actions
= t("admin.orders.bulk_management.ask")

View File

@@ -8,6 +8,7 @@
= Spree.t(:customer_details)
- content_for :page_actions do
= render partial: 'spree/admin/shared/order_links'
%li= button_link_to Spree.t(:back_to_orders_list), admin_orders_path, :icon => 'icon-arrow-left'
- if @order.cart? || @order.address?

View File

@@ -4,7 +4,7 @@
%li= event_links
- if can?(:resend, @order)
%li= button_link_to Spree.t(:resend), resend_admin_order_url(@order), :method => :post, :icon => 'icon-email'
%li.links-dropdown#links-dropdown{ links: order_links(@order).to_json }
= render partial: 'spree/admin/shared/order_links'
- if can?(:admin, Spree::Order)
%li= button_link_to t(:back_to_orders_list), admin_orders_path, :icon => 'icon-arrow-left'
@@ -29,6 +29,3 @@
%div{"data-hook" => "admin_order_edit_form"}
= render :partial => 'form', :locals => { :order => @order }
:coffee
angular.bootstrap(document.getElementById("links-dropdown"),['admin.dropdown'])

View File

@@ -70,4 +70,4 @@
%p
= @order.distributor.invoice_text
= render 'spree/order_mailer/payment'
= render 'spree/shared/payment'

View File

@@ -71,4 +71,4 @@
%p
= @order.distributor.invoice_text
= render 'spree/order_mailer/payment'
= render 'spree/shared/payment'

View File

@@ -37,13 +37,10 @@
.alpha.seven.columns.dashboard_item.single-ent#map
.header
%h3
%span.icon-map-marker
%span.icon-user
= t "your_profil_live"
%p
= t "on_ofn_map"
.list
/-# Can we pass an anchor here to zoom to our enterprise?
%a.button.bottom{href: main_app.map_path, target: '_blank'}
%a.button.bottom{href: main_app.enterprise_shop_url(@enterprise), target: '_blank'}
= t "see"
= @enterprise.name
= t "live"

View File

@@ -5,6 +5,7 @@
- if @order.outstanding_balance?
%li#new_payment_section
= button_link_to t(:new_payment), new_admin_order_payment_url(@order), icon: 'icon-plus'
= render partial: 'spree/admin/shared/order_links'
%li= button_link_to t(:back_to_orders_list), admin_orders_path, icon: 'icon-arrow-left'
- content_for :page_title do
@@ -13,7 +14,7 @@
- if @order.outstanding_balance?
%h5.outstanding-balance
= @order.outstanding_balance < 0 ? t(:credit_owed) : t(:balance_due)
= outstanding_balance_label(@order)
\:
%strong= @order.display_outstanding_balance

View File

@@ -0,0 +1,2 @@
%p.customer-names-tip
= t(".customer_names_tip")

View File

@@ -6,4 +6,6 @@
%br
= button t(:search)
= render partial: "customer_names_message"
= render "table", id: "listing_orders", msg_option: t(:search)

View File

@@ -25,4 +25,6 @@
.row
= button t(:search)
= render partial: "customer_names_message"
= render "table", id: "listing_orders", msg_option: t(:search)

View File

@@ -25,4 +25,6 @@
.row
= button t(:search)
= render partial: "customer_names_message"
= render "table", id: "listing_orders", msg_option: t(:search)

View File

@@ -5,6 +5,7 @@
- if @order.shipments.any? &:shipped?
%li
= button_link_to t('.new_return_authorization'), new_admin_order_return_authorization_url(@order), icon: 'icon-plus'
= render partial: 'spree/admin/shared/order_links'
%li= button_link_to t('.back_to_orders_list'), spree.admin_orders_path, icon: 'icon-arrow-left'
- content_for :page_title do

View File

@@ -0,0 +1,4 @@
%li.links-dropdown#links-dropdown{ links: order_links(@order).to_json }
:coffee
angular.bootstrap(document.getElementById("links-dropdown"),['admin.dropdown'])

View File

@@ -1,14 +0,0 @@
%p.callout
%span{:style => "float:right;"}
- if @order.paid?
= t :email_payment_paid
- else
= t :email_payment_not_paid
%strong
= t :email_payment_summary
%h4
= t :email_payment_method
%strong= last_payment_method(@order)&.name
%p
%em= last_payment_method(@order)&.description
%p &nbsp;

View File

@@ -21,7 +21,7 @@
= t :email_confirm_customer_details_html, distributor: @order.distributor.name
= render 'order_summary'
= render 'payment'
= render 'spree/shared/payment'
= render 'shipping'
= render 'special_instructions'
= render 'signoff'

View File

@@ -23,7 +23,7 @@
= @order.bill_address.phone if @order.bill_address.phone
= render 'order_summary'
= render 'payment'
= render 'spree/shared/payment'
= render 'shipping'
= render 'special_instructions'

View File

@@ -0,0 +1,15 @@
%p.callout
%span{:style => "float:right;"}
- if @order.outstanding_balance?
= outstanding_balance_label(@order)
\:
%strong= @order.display_outstanding_balance
- else
- if @order.paid?
= t :email_payment_paid
- else
= t :email_payment_not_paid
%strong
= t :email_payment_summary
- if @order.payments.any?
= render partial: 'spree/shared/payments_list', locals: { payments: @order.payments }

View File

@@ -0,0 +1,14 @@
%table.payments-list
%thead
%tr
%th= t('.date_time')
%th= t('.payment_method')
%th.payment-state= t('.payment_state')
%th.amount= t('.amount')
%tbody
- payments.each do |payment|
%tr
%td= l(payment.created_at, format: "%b %d, %Y %H:%M")
%td.payment-method-name= payment_method_name(payment)
%td.payment-state.payment-state-value= t(payment.state, scope: :payment_states, default: payment.state.capitalize)
%td.amount= payment.display_amount.to_html

View File

@@ -0,0 +1,30 @@
%p
= t('.dear_customer')
%p
= t('.instructions')
%p
= "============================================================"
%br
= t('.shipment_summary')
%br
= "============================================================"
%p
- @shipment.manifest.each do |item|
= item.variant.sku
= item.variant.product.name
= item.variant.options_text
%br
= "============================================================"
- if @shipment.tracking
%p
= t('.track_information', tracking: @shipment.tracking)
- if @shipment.tracking_url
%p
= t('.track_link', url: @shipment.tracking_url)
%p
= t('.thanks')

View File

@@ -0,0 +1,4 @@
= t('.greeting')
= "================"
= t('.message')

View File

@@ -17,7 +17,7 @@
= render 'spree/order_mailer/order_summary'
= render 'spree/order_mailer/payment'
= render 'spree/shared/payment'
= render 'spree/order_mailer/shipping'
= render 'spree/order_mailer/special_instructions'

View File

@@ -28,7 +28,7 @@
= render 'spree/order_mailer/order_summary'
= render 'spree/order_mailer/payment'
= render 'spree/shared/payment'
= render 'spree/order_mailer/shipping'
= render 'spree/order_mailer/special_instructions'

View File

@@ -6,6 +6,7 @@
# In order to initialize a setting do:
# config.setting_name = 'new value'
require "spree/core/environment"
require 'spree/product_filters'
# Due to a bug in ActiveRecord we need to load the tagging code in Gateway which
@@ -17,9 +18,6 @@ Spree::Gateway.class_eval do
acts_as_taggable
end
require "#{Rails.root}/app/models/spree/payment_method_decorator"
require "#{Rails.root}/app/models/spree/gateway_decorator"
Spree.config do |config|
config.shipping_instructions = true
config.address_requires_state = true
@@ -30,8 +28,6 @@ Spree.config do |config|
config.auto_capture = true
#config.override_actionmailer_config = false
config.order_updater_decorator = OrderUpdater
# S3 settings
config.s3_bucket = ENV['S3_BUCKET'] if ENV['S3_BUCKET']
config.s3_access_key = ENV['S3_ACCESS_KEY'] if ENV['S3_ACCESS_KEY']

View File

@@ -1,5 +1,5 @@
ar:
language_name: "الانجيلزي"
language_name: "العربي"
activerecord:
attributes:
enterprise_fee:
@@ -14,6 +14,7 @@ ar:
spree/payment:
amount: القيمة
state: ولاية
source: المصدر
spree/product:
primary_taxon: "نوع المنتج "
supplier: "المورد"
@@ -34,6 +35,10 @@ ar:
taken: "يوجد حساب متصل بهذا الايميل.\nالرجاء الدخول او اعادة تعيين كلمة السر."
spree/order:
no_card: لا يوجد بطاقة ائتمان معتمدة متاحة لاتمام عملية الدفع
spree/credit_card:
attributes:
base:
card_expired: "انتهت صلاحيته"
order_cycle:
attributes:
orders_close_at:
@@ -179,6 +184,7 @@ ar:
explainer: فشلت المعالجة التلقائية لهذه الطلبات لسبب غير معروف. لا ينبغي أن يحدث هذا ، يرجى الاتصال بنا إذا كنت ترى هذا.
home: "OFN"
title: "شبكة الغذاء المفتوح"
welcome_to: "مرحبا بك في"
site_meta_description: "نبدأ من الألف إلى الياء. مع المزارعين والمزارعين على استعداد لرواية قصصهم بفخر وحق. مع الموزعين على استعداد لتوصيل الأشخاص بالمنتجات بطريقة عادلة وبصدق. مع المشترين الذين يعتقدون أن أفضل قرارات التسوق الأسبوعية يمكن ..."
search_by_name: البحث بالاسم أو الضاحية ...
producers_join: المنتجون الأستراليون مدعوون الآن للانضمام إلى شبكة الغذاء المفتوح.
@@ -221,6 +227,7 @@ ar:
enterprises: المؤسسات
enterprise_groups: مجموعات
reports: التقارير
listing_reports: قائمة التقارير
variant_overrides: المخزون
import: استيراد
spree_products: منتجات Spree 
@@ -267,6 +274,9 @@ ar:
on hand: "متوفر"
ship: "الشحن"
shipping_category: "نوع الشحن"
height: "الارتفاع"
width: "العرض"
depth: "العمق"
actions:
create_and_add_another: "إنشاء وإضافة آخر"
create: "انشاء"
@@ -322,6 +332,7 @@ ar:
show_n_more: عرض %{num} أكثر
choose: "أختر..."
please_select: الرجاء اختيار ...
column_save_as_default: إحفظ كافتراض اساسي
columns: أعمدة
actions: أجراءات
viewing: "عرض: %{current_view_name}"
@@ -366,7 +377,10 @@ ar:
title: "إعدادات Matomo"
matomo_url: "العنوان الالكتروني ل Matomo "
matomo_site_id: "معرف موقع Matomo"
matomo_tag_manager_url: "عنوان URL لبرنامج Matomo "
info_html: "ماتومو هو تطبيق تحليلات الويب والجوال. يمكنك اضافة Matomo محليًا أو استخدام خدمة مستضافة على السحابة. انظر <a href='http://matomo.org' target='_blank'>matomo.org</a> لمزيد من المعلومات."
config_instructions_html: "هنا يمكنك تهيئة تكامل Matomo لشبكة الغذاء المفتوح. يجب أن يشير عنوان الالكتروني URL الخاص بـ Matomo أدناه إلى مثيل Matomo حيث سيتم إرسال معلومات تتبع المستخدم إلى ؛ إذا تم تركه فارغًا ، فسيتم تعطيل تتبع مستخدم Matomo. حقل معرف الموقع ليس إلزاميًا ولكنه مفيد إذا كنت تتعقب أكثر من موقع ويب على مثيل Matomo ؛ يمكن العثور عليه على وحدة تحكم مثيل Matomo."
config_instructions_tag_manager_html: "يؤدي تعيين عنوان URL لبرنامج Matomo إلى تمكين Matomo . تتيح لك هذه الأداة إعداد أحداث التحليلات. يتم نسخ عنوان URL لبرنامج Matomo من قسم كود التثبيت في Manager. تأكد من تحديد الحاوية والبيئة المناسبة لأن هذه الخيارات تغير عنوان URL."
customers:
index:
new_customer: "عميل جديد"
@@ -472,6 +486,7 @@ ar:
line_number: "السطر %{number}:"
encoding_error: "يرجى التحقق من إعداد اللغة للملف المصدر والتأكد من حفظه بترميز UTF-8"
unexpected_error: "واجه استيراد المنتج خطأ غير متوقع أثناء فتح الملف: %{error_message}"
malformed_csv: "صادف استيراد المنتج ملف CSV مشوه: %{error_message}"
index:
notice: "تنويه"
beta_notice: "لا تزال هذه الميزة تجريبية: قد تواجه بعض الأخطاء أثناء استخدامها. من فضلك لا تتردد في الاتصال بالدعم."
@@ -684,6 +699,7 @@ ar:
ofn_uid_tip: المعرف الفريد المستخدم لتحديد الشركة على شبكة الغذاء المفتوح.
shipping_methods:
name: "اسم"
applies: "نشيط؟"
manage: "إدارة طرق الشحن"
create_button: "إنشاء طريقة شحن جديدة"
create_one_button: "إنشاء واحدة الآن"
@@ -706,6 +722,10 @@ ar:
enable_subscriptions_tip: "تمكين الاشتراكات وظيفيا ؟"
enable_subscriptions_false: "تعليق"
enable_subscriptions_true: "تمكين"
customer_names_in_reports: "أسماء العملاء في التقارير"
customer_names_tip: "قم بتمكين مورديك من رؤية أسماء عملائك في التقارير"
customer_names_false: "تعليق"
customer_names_true: "تمكين"
shopfront_message: "رسالة واجهة المتجر"
shopfront_message_placeholder: >
رسالة اختيارية للترحيب بالعملاء وشرح كيفية التسوق معك. إذا تم إدخال
@@ -861,6 +881,7 @@ ar:
incoming: "الوارد"
supplier: "المورد"
products: "منتجات"
receival_details: "تفاصيل الاستلام"
fees: "رسوم"
save: "حفظ"
save_and_next: "حفظ والتالي"
@@ -872,6 +893,7 @@ ar:
distributor: "الموزع"
products: "منتجات"
tags: "الاوسمة"
delivery_details: "تفاصيل التسليم"
fees: "رسوم"
previous: "السابق"
save: "حفظ"
@@ -1021,10 +1043,13 @@ ar:
name: "ملخص رسوم الشركات"
description: "ملخص رسوم الشركات التي تم جمعها"
subscriptions:
subscriptions: الاشتراكات
new: اشتراك جديد
create: إنشاء اشتراك
edit: تحرير الاشتراك
index:
title: "الاشتراكات"
new: "اشتراك جديد"
new:
title: "اشتراك جديد"
edit:
title: "تحرير الاشتراك"
table:
edit_subscription: تحرير الاشتراك
pause_subscription: وقف مؤقت الاشتراك
@@ -1033,6 +1058,7 @@ ar:
filters:
query_placeholder: "البحث عن طريق البريد الإلكتروني ..."
setup_explanation:
title: "الاشتراكات"
just_a_few_more_steps: 'فقط بضع خطوات أخرى قبل أن تبدأ:'
enable_subscriptions: "تمكين الاشتراكات في واحد على الأقل من المتاجر الخاصة بك"
enable_subscriptions_step_1_html: 1. انتقل إلى صفحة %{enterprises_link} ، وابحث عن متجرك ، وانقر على &quot;إدارة&quot;
@@ -1046,6 +1072,8 @@ ar:
create_at_least_one_schedule_step_3: 3. انقر فوق &quot;+ جدول جديد&quot; ، واملأ النموذج
once_you_are_done_you_can_html: بمجرد الانتهاء من ذلك ، يمكنك %{reload_this_page_link}
reload_this_page: اعد تحميل هذه الصفحة
form:
create: "إنشاء اشتراك"
steps:
details: 1. التفاصيل الأساسية
address: 2. العنوان
@@ -1137,7 +1165,12 @@ ar:
cart: "سلة"
cart_sidebar:
checkout: "تابع للخروج"
edit_cart: "تعديل سلة التسوق"
items_in_cart_singular: "%{num} عنصر في سلة التسوق الخاصة بك"
items_in_cart_plural: "%{num} العناصر في سلة التسوق الخاصة بك"
close: "إغلاق"
cart_empty: "سلة التسوق فارغة"
take_me_shopping: "خذني للتسوق!"
signed_in:
profile: "الملف الشخصي"
mobile_menu:
@@ -1169,7 +1202,11 @@ ar:
signup: "سجل"
contact: "اتصل"
require_customer_login: "يمكن للعملاء المعتمدين فقط الوصول إلى هذا المتجر."
require_login_html: "إذا كنت عميلاً معتمدًا بالفعل ، %{login} أو %{signup} للمتابعة."
require_login_2_html: "تريد أن تبدأ التسوق هنا؟ من فضلك %{contact} %{enterprise} واسأل عن الانضمام."
require_customer_html: "إذا كنت ترغب في بدء التسوق هنا ، فيرجى %{contact} %{enterprise} أن تسأل عن الانضمام."
select_oc:
select_oc_html: "يرجى <span class='highlighted'>اختيار الوقت الذي تريده لطلبك</span> ، لمعرفة المنتجات المتوفرة."
card_could_not_be_updated: لا يمكن تحديث البطاقة
card_could_not_be_saved: لا يمكن حفظ البطاقة
spree_gateway_error_flash_for_checkout: "حدثت مشكلة في معلومات الدفع الخاصة بك: %{error}"
@@ -1281,6 +1318,8 @@ ar:
cart_updating: "جارٍ تحديث العربة ..."
cart_empty: "السلة فارغة"
cart_edit: "تعديل عربة التسوق"
item: "بند"
qty: "الكمية"
card_number: رقم البطاقة
card_securitycode: "رمز الحماية"
card_expiry_date: تاريخ الانتهاء
@@ -1533,12 +1572,17 @@ ar:
orders_changeable_orders_alert_html: تم تأكيد هذا الطلب ، ولكن يمكنك إجراء تغييرات حتى <strong>%{oc_close}</strong> .
products_clear: ازالة
products_showing: "عرض:"
products_results_for: "نتائج"
products_or: "أو"
products_and: "و"
products_filters_in: "في"
products_with: مع
products_search: "بحث..."
products_filter_by: "مرشح بواسطة"
products_filter_selected: "تم الاختيار"
products_filter_heading: "المرشحات"
products_filter_clear: "ازالة"
products_filter_done: "تم"
products_loading: "جارٍ تحميل المنتجات ..."
products_updating_cart: "جارٍ تحديث سلة المشتريات..."
products_cart_empty: "السلة فارغة"
@@ -1549,6 +1593,8 @@ ar:
products_update_error_msg: "فشل الحفظ."
products_update_error_data: "فشل الحفظ بسبب بيانات غير صالحة:"
products_changes_saved: "تم حفظ التغييرات."
products_no_results_html: "عذرا ، لم يتم العثور على نتائج لـ %{query}"
products_clear_search: "مسح البحث"
search_no_results_html: "عذرًا ، لم يتم العثور على نتائج لـ %{query}. جرب بحث آخر؟"
components_profiles_popover: "لا تملك ملفات التعريف واجهة متجر على شبكة الغذاء المفتوح ، ولكن قد يكون لها متجر على ارض الواقع أو عبر الإنترنت في أي مكان آخر"
components_profiles_show: "إظهار الملفات الشخصية"
@@ -1693,6 +1739,7 @@ ar:
remember_me: تذكرنى
are_you_sure: "هل أنت واثق؟"
orders_open: "الطلب مفتوح"
closing: "إغلاق"
going_back_to_home_page: "الرجوع إلى الصفحة الرئيسية"
creating: انشاء
updating: تحديث
@@ -1907,6 +1954,7 @@ ar:
admin_enterprise_relationships_permits: "تسمح"
admin_enterprise_relationships_seach_placeholder: "بحث"
admin_enterprise_relationships_button_create: "انشاء"
admin_enterprise_relationships_to: "إلى"
admin_enterprise_groups: "مجموعات المؤسسة"
admin_enterprise_groups_name: "اسم"
admin_enterprise_groups_owner: "المالك"
@@ -1935,6 +1983,7 @@ ar:
supplier: "المورد"
product_name: "اسم المنتج"
product_description: "وصف المنتج"
permalink: "الرابط الثابت"
shipping_categories: "فئات الشحن"
units: "حجم الوحدة"
coordinator: "منسق"
@@ -2015,7 +2064,6 @@ ar:
spree_user_enterprise_limit_error: "^ %{email} غير مسموح به لامتلاك أي مؤسسات أخرى (الحد الأقصى هو %{enterprise_limit})."
spree_variant_product_error: يجب أن يكون لديك نوع واحد على الأقل
your_profil_live: "ملفك الشخصي نشط"
on_ofn_map: "على خريطة شبكة الغذاء المفتوح"
see: "نرى"
live: "نشط"
manage: "يدير"
@@ -2032,6 +2080,7 @@ ar:
remove_tax: "إزالة الضريبة"
first_name_begins_with: "الاسم الأول يبدأ بـ"
last_name_begins_with: "اسم العائلة يبدأ بـ"
shipping_method: "طريقة الشحن"
new_order: "طلب جديد"
enterprise_tos_link: "شروط المؤسسة لخدمة الرابط"
enterprise_tos_message: "نريد العمل مع أشخاص يشاركوننا أهدافنا وقيمنا. على هذا النحو ، نطلب من المؤسسات الجديدة الموافقة على"
@@ -2051,6 +2100,7 @@ ar:
hub_sidebar_at_least: "يجب تحديد مركز واحد على الأقل"
hub_sidebar_blue: "أزرق"
hub_sidebar_red: "أحمر"
order_cycles_closed_for_hub: "المحور الذي حددته مغلق مؤقتًا للطلبات. الرجاء معاودة المحاولة في وقت لاحق."
report_customers_distributor: "الموزع"
report_customers_supplier: "المورد"
report_customers_cycle: "ترتيب الدورة"
@@ -2285,6 +2335,7 @@ ar:
order_cycles_email_to_producers_notice: 'رسائل البريد الإلكتروني المراد إرسالها إلى المنتجين تم وضعها في قائمة الانتظار للإرسال.'
order_cycles_no_permission_to_coordinate_error: "لا تملك أي من مؤسساتك إذنًا لتنسيق دورة الطلب"
order_cycles_no_permission_to_create_error: "ليس لديك إذن لإنشاء دورة طلب تنسقها تلك المؤسسة"
order_cycle_closed: "تم إغلاق دورة الطلب التي حددتها للتو. حاول مرة اخرى!"
back_to_orders_list: "العودة إلى قائمة الطلب"
no_orders_found: "لم يتم العثور على أية طلبات"
order_information: "معلومات الطلب"
@@ -2312,6 +2363,10 @@ ar:
resolve_errors: يرجى حل الأخطاء التالية
more_items: "+ %{count} ايضا"
default_card_updated: تم تحديث البطاقة الافتراضية
cart:
add_to_cart_failed: >
حدثت مشكلة أثناء إضافة هذا المنتج إلى عربة التسوق. ربما أصبح غير متوفر أو
أن المحل يغلق.
admin:
enterprise_limit_reached: "لقد وصلت إلى الحد القياسي للمؤسسات لكل حساب. اكتب %{contact_email} إذا كنت بحاجة إلى زيادته."
modals:
@@ -2596,6 +2651,13 @@ ar:
few: "كل"
many: "كل"
other: "كل"
bunch:
zero: "عناقيد"
one: "حفنة"
two: "عناقيد"
few: "عناقيد"
many: "عناقيد"
other: "عناقيد"
pack:
zero: "حزم"
one: "رزمة"
@@ -2603,6 +2665,13 @@ ar:
few: "حزم"
many: "حزم"
other: "حزم"
box:
zero: "مربعات"
one: "صندوق"
two: "مربعات"
few: "مربعات"
many: "مربعات"
other: "بكسات"
bottle:
zero: "زجاجات"
one: "زجاجة"
@@ -2610,6 +2679,62 @@ ar:
few: "زجاجات"
many: "زجاجات"
other: "زجاجات"
jar:
zero: "الجرار"
one: "إناء"
two: "الجرار"
few: "الجرار"
many: "الجرار"
other: "مرتبان"
head:
zero: "رؤساء"
one: "رئيس"
two: "رؤساء"
few: "رؤساء"
many: "رؤساء"
other: "رؤوس"
bag:
zero: "أكياس"
one: "كيس"
two: "أكياس"
few: "أكياس"
many: "أكياس"
other: "أكياس"
loaf:
zero: "أرغفة"
one: "رغيف"
two: "أرغفة"
few: "أرغفة"
many: "أرغفة"
other: "أرغفة"
single:
zero: "الفردي"
one: "غير مرتبطة"
two: "الفردي"
few: "الفردي"
many: "الفردي"
other: "الفردي"
tub:
zero: "أحواض"
one: "حوض"
two: "أحواض"
few: "أحواض"
many: "أحواض"
other: "أحواض"
punnet:
zero: "سلات"
one: "إناء"
two: "سلات"
few: "سلات"
many: "سلات"
other: "سلات"
packet:
zero: "الحزم"
one: "رزمة"
two: "الحزم"
few: "الحزم"
many: "الحزم"
other: "الحزم"
item:
zero: "العناصر"
one: "بند"
@@ -2631,6 +2756,62 @@ ar:
few: "الوحدات"
many: "الوحدات"
other: "الوحدات"
serve:
zero: "يخدم"
one: "تخدم"
two: "يخدم"
few: "يخدم"
many: "يخدم"
other: "خدمة"
tray:
zero: "صواني"
one: "صينية"
two: "صواني"
few: "صواني"
many: "صواني"
other: "صواني"
piece:
zero: "قطع"
one: "قطعة"
two: "قطع"
few: "قطع"
many: "قطع"
other: "قطع"
pot:
zero: "الأواني"
one: "وعاء"
two: "الأواني"
few: "الأواني"
many: "الأواني"
other: "اصص"
bundle:
zero: "حزم"
one: "حزمة"
two: "حزم"
few: "حزم"
many: "حزم"
other: "حزم"
flask:
zero: "قوارير"
one: "قارورة"
two: "قوارير"
few: "قوارير"
many: "قوارير"
other: "قوارير"
basket:
zero: "سلال"
one: "سلة"
two: "سلال"
few: "سلال"
many: "سلال"
other: "سلال"
sack:
zero: "أكياس"
one: "كيس"
two: "أكياس"
few: "أكياس"
many: "أكياس"
other: "أكياس"
producers:
signup:
start_free_profile: "ابدأ بملف تعريف مجاني ، وتوسع عندما تكون جاهزًا!"
@@ -2760,6 +2941,12 @@ ar:
void: "فارغ"
login: "تسجيل الدخول"
password: "كلمه السر"
signature: "التوقيع"
solution: "المحاليل"
landing_page: "الصفحة المقصودة"
server: "الخادم"
test_mode: "وضع الاختبار"
logourl: "وحدة"
configurations: "تهيئة"
general_settings: "الاعدادات العامة"
site_name: "اسم الموقع"
@@ -2876,6 +3063,16 @@ ar:
options: "خيارات"
actions:
update: "تحديث"
shared:
error_messages:
errors_prohibited_this_record_from_being_saved:
zero: "منعت أخطاء %{count} حفظ هذا السجل:"
one: "حظر خطأ واحد حفظ هذا السجل:"
two: "منعت أخطاء %{count} حفظ هذا السجل:"
few: "منعت أخطاء %{count} حفظ هذا السجل:"
many: "منعت أخطاء %{count} حفظ هذا السجل:"
other: "منعت أخطاء %{count} حفظ هذا السجل:"
there_were_problems_with_the_following_fields: "كانت هناك مشاكل مع الحقول التالية"
errors:
messages:
blank: "لا يمكن أن تكون فارغة"
@@ -3018,6 +3215,8 @@ ar:
zone: "منطقة"
calculator: "آلة حاسبة"
display: "عرض"
both: "كل من تسجيل الخروج والمكتب الخلفي"
back_end: "المكتب الخلفي فقط"
no_shipping_methods_found: "لم يتم العثور على طرق الشحن"
new:
new_shipping_method: "طريقة الشحن الجديدة"
@@ -3029,6 +3228,9 @@ ar:
form:
categories: "التصنيفات"
zones: "مناطق"
both: "كل من تسجيل الخروج والمكتب الخلفي"
back_end: "المكتب الخلفي فقط"
deactivation_warning: "يمكن أن يؤدي إلغاء تنشيط طريقة الشحن إلى اختفاء طريقة الشحن من قائمتك. بدلاً من ذلك ، يمكنك إخفاء طريقة الشحن من صفحة الخروج عن طريق تعيين الخيار\"عرض\" إلى\"المكتب الخلفي فقط\"."
payment_methods:
index:
payment_methods: "طريقة الدفع"
@@ -3040,8 +3242,11 @@ ar:
display: "عرض"
active: "نشط"
both: "على حد سواء"
front_end: "الخروج فقط"
back_end: "المكتب الخلفي فقط"
active_yes: "نعم"
active_no: "لا"
no_payment_methods_found: "لم يتم العثور على طرق دفع"
new:
new_payment_method: "طريقة الدفع الجديدة"
back_to_payment_methods_list: "العودة إلى قائمة طرق الدفع"
@@ -3070,7 +3275,11 @@ ar:
active: "نشط"
active_yes: "نعم"
active_no: "لا"
both: "كل من تسجيل الخروج والمكتب الخلفي"
front_end: "الخروج فقط"
back_end: "المكتب الخلفي فقط"
tags: "الاوسمة"
deactivation_warning: "يمكن أن يؤدي إلغاء تنشيط طريقة الدفع إلى اختفاء طريقة الدفع من قائمتك. بدلاً من ذلك ، يمكنك إخفاء طريقة الدفع من صفحة الخروج عن طريق تعيين الخيار \"عرض\" إلى\"المكتب الخلفي فقط\"."
providers:
provider: "مزود"
payments:
@@ -3078,6 +3287,8 @@ ar:
stripe:
error_saving_payment: خطأ في حفظ الدفعة
submitting_payment: تقديم الدفعة ...
paypal:
no_payment_via_admin_backend: لا يمكن التقاط مدفوعات Paypal في Backoffice
products:
image_upload_error: "لم يتم التعرف على صورة المنتج. يرجى تحميل صورة بتنسيق PNG أو JPG."
new:
@@ -3131,6 +3342,8 @@ ar:
bulk_coop_allocation: 'معظم التعاونية - تخصيص'
bulk_coop_packing_sheets: 'معظم التعاونية - صحائف التعبئة'
bulk_coop_customer_payments: ' الجمعية التعاونية - مدفوعات العملاء بالجملة'
customer_names_message:
customer_names_tip: "إذا كانت أسماء العملاء مخفية للطلبات التي قدمتها ، فيمكنك الاتصال بالموزع والسؤال عما إذا كان بإمكانهم تحديث تفضيلات متجرهم للسماح لمورديهم بمشاهدة أسماء العملاء."
users:
index:
listing_users: "قائمة المستخدمين"
@@ -3172,6 +3385,8 @@ ar:
price: "السعر"
display_as: "عرض ب"
display_name: "اسم العرض"
display_as_placeholder: 'على سبيل المثال 2 كجم'
display_name_placeholder: 'على سبيل المثال طماطم'
autocomplete:
out_of_stock: "غير متوفر"
producer_name: "المنتج"
@@ -3211,6 +3426,7 @@ ar:
format: '٪ س-٪ م-%d'
js_format: 'يوم-شهر-سنة'
orders:
error_flash_for_unavailable_items: "عنصر في سلة التسوق الخاصة بك أصبح غير متوفر. يرجى تحديث الكميات المحددة."
edit:
login_to_view_order: "يرجى تسجيل الدخول لعرض طلبك."
bought:
@@ -3238,12 +3454,46 @@ ar:
invalid: غير صالحة
order_mailer:
cancel_email:
customer_greeting: "عزيزي %{name} ،"
instructions_html: "تم إلغاء طلبك مع <strong>%{distributor}</strong> . يرجى الاحتفاظ بمعلومات الإلغاء هذه في سجلاتك."
dont_cancel: "إذا غيرت رأيك أو لا ترغب في إلغاء هذا الطلب ، فيرجى الاتصال بـ %{email}"
order_summary_canceled_html: "<strong>ملخص الطلب # %{number} [ملغي]</strong>"
details: "إليك تفاصيل ما طلبته:"
unpaid_order: "لم يتم سداد طلبك ، لذا لم يتم رد الأموال"
paid_order: "تم دفع طلبك حتى أعاد %{distributor} المبلغ بالكامل"
credit_order: "تم دفع طلبك حتى تم إضافة رصيد إلى حسابك"
subject: "إلغاء الطلب"
confirm_email:
subject: "تأكيد الطلب"
invoice_email:
hi: "مرحبًا %{name}"
invoice_attached_text: يرجى الاطلاع على فاتورة مرفقة لطلبك الأخير من
user_mailer:
reset_password_instructions:
request_sent_text: |
تم تقديم طلب لإعادة تعيين كلمة المرور الخاصة بك.
إذا لم تقدم هذا الطلب ، ببساطة تجاهل هذا البريد الإلكتروني.
link_text: >
إذا قمت بهذا الطلب ، فما عليك سوى النقر فوق الرابط أدناه:
issue_text: |
إذا لم يعمل عنوان URL أعلاه ، فحاول نسخه ولصقه في متصفحك.
إذا كنت لا تزال تواجه مشاكل ، فلا تتردد في الاتصال بنا.
confirmation_instructions:
subject: "يرجى تأكيد حسابك OFN"
shipment_mailer:
shipped_email:
dear_customer: "عزيزي العميل،"
instructions: "تم شحن طلبك"
shipment_summary: "ملخص الشحن"
subject: "إشعار الشحن"
thanks: "شكرا لك على اعمالك."
track_information: "معلومات التتبع : %{tracking}"
track_link: "رابط التتبع: %{url}"
test_mailer:
test_email:
greeting: "تهانينا!"
message: "إذا كنت قد تلقيت هذا البريد الإلكتروني ، فإن إعدادات بريدك الإلكتروني صحيحة."
subject: "اختبار البريد"
order_state:
address: العنوان
adjustments: التعديلات
@@ -3265,18 +3515,6 @@ ar:
ended: انتهى
paused: التعليق
canceled: الالغاء
user_mailer:
reset_password_instructions:
request_sent_text: |
تم تقديم طلب لإعادة تعيين كلمة المرور الخاصة بك.
إذا لم تقدم هذا الطلب ، ببساطة تجاهل هذا البريد الإلكتروني.
link_text: >
إذا قمت بهذا الطلب ، فما عليك سوى النقر فوق الرابط أدناه:
issue_text: |
إذا لم يعمل عنوان URL أعلاه ، فحاول نسخه ولصقه في متصفحك.
إذا كنت لا تزال تواجه مشاكل ، فلا تتردد في الاتصال بنا.
confirmation_instructions:
subject: يرجى تأكيد حسابك OFN
users:
form:
account_settings: إعدادت الحساب

View File

@@ -227,6 +227,7 @@ ca:
enterprises: Organitzacions
enterprise_groups: Grups
reports: Informes
listing_reports: Llistat d'informes
variant_overrides: Inventari
import: Importa
spree_products: Productes Spree
@@ -273,6 +274,9 @@ ca:
on hand: "Disponibles"
ship: "Enviament"
shipping_category: "Categoria d'enviament"
height: "Alçada"
width: "Amplada"
depth: "Profunditat"
actions:
create_and_add_another: "Crea i afegeix-ne una altra"
create: "Crear"
@@ -719,6 +723,10 @@ ca:
enable_subscriptions_tip: "Habilitar la funcionalitat de subscripcions?"
enable_subscriptions_false: "Deshabilitat"
enable_subscriptions_true: "Habilitat"
customer_names_in_reports: "Noms de consumidores als informes"
customer_names_tip: "Habiliteu als proveïdors veure els noms dels vostres clients als informes"
customer_names_false: "Deshabilitat"
customer_names_true: "Habilitat"
shopfront_message: "Missatge de la botiga"
shopfront_message_placeholder: >
Un missatge opcional per donar la benvinguda als clients i explicar
@@ -1039,10 +1047,13 @@ ca:
name: "Resum de les comissions de l'organització"
description: "Resum de les comissions de l'organització recollides"
subscriptions:
subscriptions: Subscripcions
new: Nova subscripció
create: Crea una subscripció
edit: Edita la subscripció
index:
title: "Subscripcions"
new: "Nova subscripció"
new:
title: "Nova subscripció"
edit:
title: "Edita la subscripció"
table:
edit_subscription: Edita la subscripció
pause_subscription: Pausa la subscripció
@@ -1051,6 +1062,7 @@ ca:
filters:
query_placeholder: "Cerca per correu electrònic ..."
setup_explanation:
title: "Subscripcions"
just_a_few_more_steps: 'Només uns quants passos més abans de començar:'
enable_subscriptions: "Activa les subscripcions d'almenys una de les teves botigues"
enable_subscriptions_step_1_html: 1. Aneu a la pàgina %{enterprises_link}, cerqueu la vostra botiga i feu clic a "Gestionar"
@@ -1064,6 +1076,8 @@ ca:
create_at_least_one_schedule_step_3: 3. Fes clic a '+ Nova programació' i omple el formulari
once_you_are_done_you_can_html: Un cop hagueu acabat, podeu %{reload_this_page_link}
reload_this_page: tornar a carregar aquesta pàgina
form:
create: "Crea una subscripció"
steps:
details: 1. Detalls bàsics
address: 2. Adreça
@@ -1308,6 +1322,8 @@ ca:
cart_updating: "Actualitzant la cistella..."
cart_empty: "Cistella buida"
cart_edit: "Edita la teva cistella"
item: "Article"
qty: "quant."
card_number: Número de targeta
card_securitycode: "Codi de seguretat"
card_expiry_date: Data de caducitat
@@ -1529,7 +1545,7 @@ ca:
shopping_contact_social: "Segueix"
shopping_groups_part_of: "forma part de:"
shopping_producers_of_hub: "Productores de%{hub}:"
enterprises_next_closing: "Tancament de la comanda següent"
enterprises_next_closing: "La següent comanda tanca"
enterprises_ready_for: "Llest per"
enterprises_choose: "Escull quan vols la teva comanda:"
maps_open: "Obert"
@@ -1938,7 +1954,7 @@ ca:
admin_enterprise_groups: "Grups d'organització"
admin_enterprise_groups_name: "Nom"
admin_enterprise_groups_owner: "Propietària"
admin_enterprise_groups_on_front_page: "A la primera pàgina?"
admin_enterprise_groups_on_front_page: "Visible a la web"
admin_enterprise_groups_enterprise: "Organitzacions"
admin_enterprise_groups_data_powertip: "La usuària principal responsable d'aquest grup."
admin_enterprise_groups_data_powertip_logo: "Això és el logotip del grup"
@@ -1963,6 +1979,7 @@ ca:
supplier: "Proveïdora"
product_name: "Nom del producte"
product_description: "Descripció del producte"
permalink: "Enllaç permanent"
shipping_categories: "Tipus d'enviament"
units: "Mida d'unitat"
coordinator: "Coordinador"
@@ -2043,7 +2060,6 @@ ca:
spree_user_enterprise_limit_error: "^ %{email} no està autoritzat a tenir més organitzacions (el límit és %{enterprise_limit})."
spree_variant_product_error: ha de tenir com a mínim una variant
your_profil_live: "El teu perfil online"
on_ofn_map: "al mapa d'Open Food Network"
see: "Veure"
live: "online"
manage: "Gestiona"
@@ -2060,6 +2076,7 @@ ca:
remove_tax: "Suprimeix comissions"
first_name_begins_with: "El nom comença amb"
last_name_begins_with: "El cognom comença amb"
shipping_method: "Mètode d'enviament"
new_order: "Nova comanda"
enterprise_tos_link: "Enllaç a les condicions d'ús de l'organització"
enterprise_tos_message: "Volem treballar amb persones que comparteixen els nostres objectius i valors. Com a tal, demanem a les noves organitzacions que acceptin la nostra"
@@ -3176,6 +3193,8 @@ ca:
stripe:
error_saving_payment: Error en desar el pagament
submitting_payment: S'està lliurant el pagament...
paypal:
no_payment_via_admin_backend: Els pagaments amb Paypal no es poden capturar des de l'administració
products:
image_upload_error: "No s'ha reconegut la imatge del producte. Carregueu una imatge en format PNG o JPG."
new:
@@ -3229,6 +3248,8 @@ ca:
bulk_coop_allocation: 'Compra grupal - Assignació'
bulk_coop_packing_sheets: 'Compra grupal - Fulls de preparació de cistelles'
bulk_coop_customer_payments: 'Compra grupal - Pagaments de les consumidores'
customer_names_message:
customer_names_tip: "Si els noms de les consumidores per a les comandes que heu subministrat apareixen amagats, podeu contactar amb la distribuïdora i preguntar-los si poden actualitzar les seves preferències de la botiga per permetre als seus proveïdors visualitzar els noms de les consumidores."
users:
index:
listing_users: "Llistat d'usuàries"
@@ -3353,6 +3374,32 @@ ca:
invoice_email:
hi: "Hola %{name}"
invoice_attached_text: Trobareu adjunta un comprovant de la compra per a la vostra comanda recent
user_mailer:
reset_password_instructions:
request_sent_text: |
S'ha fet una sol·licitud per restablir la teva contrasenya.
Si no has fet aquesta sol·licitud, simplement ignora aquest correu electrònic.
link_text: >
Si has fet aquesta sol·licitud, fes clic a l'enllaç següent:
issue_text: |
Si l'URL anterior no funciona, prova de copiar-lo i enganxar-lo al navegador.
Si continues tenint problemes, no dubtis en contactar-nos.
confirmation_instructions:
subject: "Si us plau confirma el teu compte d'OFN"
shipment_mailer:
shipped_email:
dear_customer: "Benvolguda consumidora:"
instructions: "La vostra comanda s'ha enviat"
shipment_summary: "Resum de l'enviament"
subject: "Notificació d'enviament"
thanks: "Gràcies per la teva compra."
track_information: "Informació del seguiment: %{tracking}"
track_link: "Enllaç del seguiment: %{url}"
test_mailer:
test_email:
greeting: "Enhorabona!"
message: "Si heu rebut aquest correu electrònic, la vostra configuració de correu electrònic és correcta."
subject: "Correu de prova"
order_state:
address: adreça
adjustments: ajustaments
@@ -3374,18 +3421,6 @@ ca:
ended: acabat
paused: en pausa
canceled: cancel·lat
user_mailer:
reset_password_instructions:
request_sent_text: |
S'ha fet una sol·licitud per restablir la teva contrasenya.
Si no has fet aquesta sol·licitud, simplement ignora aquest correu electrònic.
link_text: >
Si has fet aquesta sol·licitud, fes clic a l'enllaç següent:
issue_text: |
Si l'URL anterior no funciona, prova de copiar-lo i enganxar-lo al navegador.
Si continues tenint problemes, no dubtis en contactar-nos.
confirmation_instructions:
subject: Si us plau confirma el teu compte d'OFN
users:
form:
account_settings: Configuració del compte

View File

@@ -711,6 +711,8 @@ de_DE:
enable_subscriptions_tip: "Abo-Funktionalität aktivieren?"
enable_subscriptions_false: "deaktiviert"
enable_subscriptions_true: "aktiviert"
customer_names_false: "deaktiviert"
customer_names_true: "aktiviert"
shopfront_message: "Laden-Nachricht"
shopfront_message_placeholder: >
Eine optionale Nachricht, um Kunden willkommen zu heißen und zu erklären,
@@ -1029,10 +1031,13 @@ de_DE:
name: "Unternehmensgebühr Zusammenfassung"
description: "Zusammenfassung der erhobenen Zuschläge"
subscriptions:
subscriptions: Abonnements
new: Neues Abonnement
create: Abonnement erstellen
edit: Abonnement bearbeiten
index:
title: "Abonnements"
new: "Neues Abonnement"
new:
title: "Neues Abonnement"
edit:
title: "Abonnement bearbeiten"
table:
edit_subscription: Abonnement bearbeiten
pause_subscription: Abonement pausieren
@@ -1041,6 +1046,7 @@ de_DE:
filters:
query_placeholder: "Suche per E-Mail ..."
setup_explanation:
title: "Abonnements"
just_a_few_more_steps: 'Nur noch ein paar Schritte bevor Sie beginnen können:'
enable_subscriptions: "Aktivieren Sie Abonnements für mindestens einen Ihrer Läden"
enable_subscriptions_step_1_html: 1. Gehen Sie zur Seite %{enterprises_link}, suchen Sie Ihren Laden und klicken Sie auf "Verwalten"
@@ -1054,6 +1060,8 @@ de_DE:
create_at_least_one_schedule_step_3: 3. Klicken Sie auf "+ Neuer Zeitplan" und füllen Sie das Formular aus
once_you_are_done_you_can_html: Sobald Sie fertig sind, können Sie %{reload_this_page_link}
reload_this_page: diese Seite neu laden
form:
create: "Abonnement erstellen"
steps:
details: 1. Grundlegendes
address: 2. Adresse
@@ -1286,6 +1294,8 @@ de_DE:
cart_updating: "Warenkorb aktualisieren..."
cart_empty: "Warenkorb leer"
cart_edit: "Warenkorb bearbeiten"
item: "Artikel"
qty: "Menge"
card_number: Kartennummer
card_securitycode: "Sicherheitscode"
card_expiry_date: Ablaufdatum
@@ -2011,7 +2021,6 @@ de_DE:
spree_user_enterprise_limit_error: "^ %{email} darf keine weiteren Unternehmen besitzen (Limit ist %{enterprise_limit})."
spree_variant_product_error: muss mindestens eine Variante haben
your_profil_live: "Dein Profil live"
on_ofn_map: "auf der Open Food Network Karte"
see: "Sehen"
live: "Leben"
manage: "Verwalten"
@@ -3259,6 +3268,27 @@ de_DE:
invoice_email:
hi: "Hallo %{name}"
invoice_attached_text: Im Anhang findest Du eine Rechnung für die letzte Bestellung vom
user_mailer:
reset_password_instructions:
request_sent_text: |
Es wurde angefragt, das Passwort zurückzusetzen.
Sollte kein neues Passwort angefordert werden, bitte dieses E-Mail ignorieren.
link_text: >
Sollte ein neues Passwort angefordert werden, bitte den folgenden Aktivierungslink
bestätigen.
issue_text: |
Falls die URL nicht funktioniert, bitte den Link kopieren und in die Adresszeile Ihres Browsers einfügen
confirmation_instructions:
subject: "Bitte OFN-Konto bestätigen"
shipment_mailer:
shipped_email:
dear_customer: "Sehr geehrter Kunde,"
instructions: "Ihre Bestellung wurde versandt"
shipment_summary: "Übersicht"
subject: "Versandbenachrichtigung"
thanks: "Danke für Ihren Einkauf."
track_information: "Tracking-Informationen: %{tracking}"
track_link: "Tracking-Link: %{url}"
order_state:
address: Adresse
adjustments: Verbesserungen
@@ -3280,18 +3310,6 @@ de_DE:
ended: beendet
paused: pausiert
canceled: storniert
user_mailer:
reset_password_instructions:
request_sent_text: |
Es wurde angefragt, das Passwort zurückzusetzen.
Sollte kein neues Passwort angefordert werden, bitte dieses E-Mail ignorieren.
link_text: >
Sollte ein neues Passwort angefordert werden, bitte den folgenden Aktivierungslink
bestätigen.
issue_text: |
Falls die URL nicht funktioniert, bitte den Link kopieren und in die Adresszeile Ihres Browsers einfügen
confirmation_instructions:
subject: Bitte OFN-Konto bestätigen
users:
form:
account_settings: Konto Einstellungen

View File

@@ -84,7 +84,7 @@ en:
messages:
inclusion: "is not included in the list"
models:
order_management/subscriptions/validator:
order_management/subscriptions/validator:
attributes:
subscription_line_items:
at_least_one_product: "^Please add at least one product"
@@ -256,6 +256,7 @@ en:
enterprises: Enterprises
enterprise_groups: Groups
reports: Reports
listing_reports: Listing Reports
variant_overrides: Inventory
import: Import
spree_products: Spree Products
@@ -305,6 +306,9 @@ en:
"on hand": "On Hand"
ship: "Ship"
shipping_category: "Shipping Category"
height: "Height"
width: "Width"
depth: "Depth"
actions:
create_and_add_another: "Create and Add Another"
@@ -774,6 +778,10 @@ en:
enable_subscriptions_tip: "Enable subscriptions functionality?"
enable_subscriptions_false: "Disabled"
enable_subscriptions_true: "Enabled"
customer_names_in_reports: "Customer Names in Reports"
customer_names_tip: "Enable your suppliers to see your customers names in reports"
customer_names_false: "Disabled"
customer_names_true: "Enabled"
shopfront_message: "Shopfront Message"
shopfront_message_placeholder: >
An optional message to welcome customers and explain how to shop with you. If text is entered here it will be displayed in a home tab when customers first arrive at your shopfront.
@@ -1093,10 +1101,13 @@ en:
name: "Enterprise Fee Summary"
description: "Summary of Enterprise Fees collected"
subscriptions:
subscriptions: Subscriptions
new: New Subscription
create: Create Subscription
edit: Edit Subscription
index:
title: "Subscriptions"
new: "New Subscription"
new:
title: "New Subscription"
edit:
title: "Edit Subscription"
table:
edit_subscription: Edit Subscription
pause_subscription: Pause Subscription
@@ -1105,6 +1116,7 @@ en:
filters:
query_placeholder: "Search by email..."
setup_explanation:
title: "Subscriptions"
just_a_few_more_steps: 'Just a few more steps before you can begin:'
enable_subscriptions: "Enable subscriptions for at least one of your shops"
enable_subscriptions_step_1_html: 1. Go to the %{enterprises_link} page, find your shop, and click "Manage"
@@ -1118,6 +1130,8 @@ en:
create_at_least_one_schedule_step_3: 3. Click '+ New Schedule', and fill out the form
once_you_are_done_you_can_html: Once you are done, you can %{reload_this_page_link}
reload_this_page: reload this page
form:
create: "Create Subscription"
steps:
details: 1. Basic Details
address: 2. Address
@@ -1386,6 +1400,8 @@ en:
cart_updating: "Updating cart..."
cart_empty: "Cart empty"
cart_edit: "Edit your cart"
item: "Item"
qty: "Qty"
card_number: Card Number
card_securitycode: "Security Code"
@@ -2171,7 +2187,6 @@ See the %{link} to find out more about %{sitename}'s features and to start using
spree_user_enterprise_limit_error: "^%{email} is not permitted to own any more enterprises (limit is %{enterprise_limit})."
spree_variant_product_error: must have at least one variant
your_profil_live: "Your profile live"
on_ofn_map: "on the Open Food Network map"
see: "See"
live: "live"
manage: "Manage"
@@ -3123,6 +3138,11 @@ See the %{link} to find out more about %{sitename}'s features and to start using
one: "1 error prohibited this record from being saved:"
other: "%{count} errors prohibited this record from being saved:"
there_were_problems_with_the_following_fields: "There were problems with the following fields"
payments_list:
date_time: "Date/time"
amount: "Amount"
payment_method: "Payment Method"
payment_state: "Payment State"
errors:
messages:
blank: "can't be blank"
@@ -3392,6 +3412,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using
bulk_coop_allocation: 'Bulk Co-op - Allocation'
bulk_coop_packing_sheets: 'Bulk Co-op - Packing Sheets'
bulk_coop_customer_payments: 'Bulk Co-op - Customer Payments'
customer_names_message:
customer_names_tip: "If customer names are hidden for orders you have supplied, you can contact the distributor and ask if they can update their shop preferences to allow their suppliers to view customer names."
users:
index:
listing_users: "Listing Users"
@@ -3516,6 +3538,32 @@ See the %{link} to find out more about %{sitename}'s features and to start using
invoice_email:
hi: "Hi %{name}"
invoice_attached_text: Please find attached an invoice for your recent order from
user_mailer:
reset_password_instructions:
request_sent_text: |
A request to reset your password has been made.
If you did not make this request, simply ignore this email.
link_text: >
If you did make this request just click the link below:
issue_text: |
If the above URL does not work try copying and pasting it into your browser.
If you continue to have problems please feel free to contact us.
confirmation_instructions:
subject: "Please confirm your OFN account"
shipment_mailer:
shipped_email:
dear_customer: "Dear Customer,"
instructions: "Your order has been shipped"
shipment_summary: "Shipment Summary"
subject: "Shipment Notification"
thanks: "Thank you for your business."
track_information: ! "Tracking Information: %{tracking}"
track_link: ! "Tracking Link: %{url}"
test_mailer:
test_email:
greeting: "Congratulations!"
message: "If you have received this email, then your email settings are correct."
subject: "Test Mail"
order_state:
address: address
adjustments: adjustments
@@ -3537,18 +3585,6 @@ See the %{link} to find out more about %{sitename}'s features and to start using
ended: ended
paused: paused
canceled: cancelled
user_mailer:
reset_password_instructions:
request_sent_text: |
A request to reset your password has been made.
If you did not make this request, simply ignore this email.
link_text: >
If you did make this request just click the link below:
issue_text: |
If the above URL does not work try copying and pasting it into your browser.
If you continue to have problems please feel free to contact us.
confirmation_instructions:
subject: Please confirm your OFN account
users:
form:
account_settings: Account Settings
@@ -3610,3 +3646,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
shipment:
cannot_ready: "Cannot ready shipment."
invalid_taxonomy_id: "Invalid taxonomy id."
activerecord:
models:
spree/payment:
one: Payment

View File

@@ -702,6 +702,8 @@ en_AU:
enable_subscriptions_tip: "Enable subscriptions functionality?"
enable_subscriptions_false: "Disabled"
enable_subscriptions_true: "Enabled"
customer_names_false: "Disabled"
customer_names_true: "Enabled"
shopfront_message: "\"Home\" message"
shopfront_message_placeholder: >
Create your home page content to welcome customers and explain how people
@@ -1028,10 +1030,13 @@ en_AU:
name: "Enterprise Fee Summary"
description: "Summary of Enterprise Fees collected"
subscriptions:
subscriptions: Subscriptions
new: New Subscription
create: Create Subscription
edit: Edit Subscription
index:
title: "Subscriptions"
new: "New Subscription"
new:
title: "New Subscription"
edit:
title: "Edit Subscription"
table:
edit_subscription: Edit Subscription
pause_subscription: Pause Subscription
@@ -1040,6 +1045,7 @@ en_AU:
filters:
query_placeholder: "Search by email..."
setup_explanation:
title: "Subscriptions"
just_a_few_more_steps: 'Just a few more steps before you can begin:'
enable_subscriptions: "Enable subscriptions for at least one of your shops"
enable_subscriptions_step_1_html: 1. Go to the %{enterprises_link} page, find your shop, and click "Manage"
@@ -1053,6 +1059,8 @@ en_AU:
create_at_least_one_schedule_step_3: 3. Click '+ New Schedule', and fill out the form
once_you_are_done_you_can_html: Once you are done, you can %{reload_this_page_link}
reload_this_page: reload this page
form:
create: "Create Subscription"
steps:
details: 1. Basic Details
address: 2. Address
@@ -1285,6 +1293,8 @@ en_AU:
cart_updating: "Updating cart..."
cart_empty: "Cart empty"
cart_edit: "Edit your cart"
item: "Item"
qty: "Qty"
card_number: Card Number
card_securitycode: "Security Code"
card_expiry_date: Expiry Date
@@ -2007,7 +2017,6 @@ en_AU:
spree_user_enterprise_limit_error: "^%{email} is not permitted to own any more enterprises (limit is %{enterprise_limit})."
spree_variant_product_error: must have at least one variant
your_profil_live: "Your profile live"
on_ofn_map: "on the Open Food Network map"
see: "See"
live: "live"
manage: "Manage"
@@ -3187,6 +3196,27 @@ en_AU:
invoice_email:
hi: "Hi %{name}"
invoice_attached_text: Please find attached an invoice for your recent order from
user_mailer:
reset_password_instructions:
request_sent_text: |
A request to reset your password has been made.
If you did not make this request, simply ignore this email.
link_text: >
If you did make this request just click the link below:
issue_text: |
If the above URL does not work try copying and pasting it into your browser.
If you continue to have problems please feel free to contact us.
confirmation_instructions:
subject: "Please confirm your OFN account"
shipment_mailer:
shipped_email:
dear_customer: "Dear Customer,"
instructions: "Your order has been shipped"
shipment_summary: "Shipment Summary"
subject: "Shipment Notification"
thanks: "Thank you for your business."
track_information: "Tracking Information: %{tracking}"
track_link: "Tracking Link: %{url}"
order_state:
address: address
adjustments: adjustments
@@ -3208,18 +3238,6 @@ en_AU:
ended: ended
paused: paused
canceled: cancelled
user_mailer:
reset_password_instructions:
request_sent_text: |
A request to reset your password has been made.
If you did not make this request, simply ignore this email.
link_text: >
If you did make this request just click the link below:
issue_text: |
If the above URL does not work try copying and pasting it into your browser.
If you continue to have problems please feel free to contact us.
confirmation_instructions:
subject: Please confirm your OFN account
users:
form:
account_settings: Account Settings

View File

@@ -691,6 +691,8 @@ en_BE:
enable_subscriptions_tip: "Enable subscriptions functionality?"
enable_subscriptions_false: "Disabled"
enable_subscriptions_true: "Enabled"
customer_names_false: "Disabled"
customer_names_true: "Enabled"
shopfront_message: "Shopfront Message"
shopfront_message_link_tooltip: "Insert / edit link"
shopfront_message_link_prompt: "Please enter a URL to insert"
@@ -991,10 +993,13 @@ en_BE:
name: "Enterprise Fee Summary"
description: "Summary of Enterprise Fees collected"
subscriptions:
subscriptions: Subscriptions
new: New Subscription
create: Create Subscription
edit: Edit Subscription
index:
title: "Subscriptions"
new: "New Subscription"
new:
title: "New Subscription"
edit:
title: "Edit Subscription"
table:
edit_subscription: Edit Subscription
pause_subscription: Pause Subscription
@@ -1003,6 +1008,7 @@ en_BE:
filters:
query_placeholder: "Search by email..."
setup_explanation:
title: "Subscriptions"
just_a_few_more_steps: 'Just a few more steps before you can begin:'
enable_subscriptions: "Enable subscriptions for at least one of your shops"
enable_subscriptions_step_1_html: 1. Go to the %{enterprises_link} page, find your shop, and click "Manage"
@@ -1016,6 +1022,8 @@ en_BE:
create_at_least_one_schedule_step_3: 3. Click '+ New Schedule', and fill out the form
once_you_are_done_you_can_html: Once you are done, you can %{reload_this_page_link}
reload_this_page: reload this page
form:
create: "Create Subscription"
steps:
details: 1. Basic Details
address: 2. Address
@@ -1246,6 +1254,8 @@ en_BE:
cart_updating: "Updating cart..."
cart_empty: "Cart empty"
cart_edit: "Edit your cart"
item: "Item"
qty: "Qty"
card_number: Card Number
card_securitycode: "Security Code"
card_expiry_date: Expiry Date
@@ -1967,7 +1977,6 @@ en_BE:
spree_user_enterprise_limit_error: "^%{email} is not permitted to own any more enterprises (limit is %{enterprise_limit})."
spree_variant_product_error: must have at least one variant
your_profil_live: "Your profile live"
on_ofn_map: "on the Open Food Network map"
see: "See"
live: "live"
manage: "Manage"
@@ -3096,6 +3105,27 @@ en_BE:
invoice_email:
hi: "Hi %{name}"
invoice_attached_text: Please find attached an invoice for your recent order from
user_mailer:
reset_password_instructions:
request_sent_text: |
A request to reset your password has been made.
If you did not make this request, simply ignore this email.
link_text: >
If you did make this request just click the link below:
issue_text: |
If the above URL does not work try copying and pasting it into your browser.
If you continue to have problems please feel free to contact us.
confirmation_instructions:
subject: "Please confirm your OFN account"
shipment_mailer:
shipped_email:
dear_customer: "Dear Customer,"
instructions: "Your order has been shipped"
shipment_summary: "Shipment Summary"
subject: "Shipment Notification"
thanks: "Thank you for your business."
track_information: "Tracking Information: %{tracking}"
track_link: "Tracking Link: %{url}"
order_state:
address: address
adjustments: adjustments
@@ -3117,18 +3147,6 @@ en_BE:
ended: ended
paused: paused
canceled: cancelled
user_mailer:
reset_password_instructions:
request_sent_text: |
A request to reset your password has been made.
If you did not make this request, simply ignore this email.
link_text: >
If you did make this request just click the link below:
issue_text: |
If the above URL does not work try copying and pasting it into your browser.
If you continue to have problems please feel free to contact us.
confirmation_instructions:
subject: Please confirm your OFN account
users:
form:
account_settings: Account Settings

View File

@@ -14,6 +14,7 @@ en_CA:
spree/payment:
amount: Amount
state: State
source: Source
spree/product:
primary_taxon: "Product Category"
supplier: "Supplier"
@@ -226,6 +227,7 @@ en_CA:
enterprises: Enterprises
enterprise_groups: Groups
reports: Reports
listing_reports: Listing Reports
variant_overrides: Inventory
import: Import
spree_products: Spree Products
@@ -272,6 +274,9 @@ en_CA:
on hand: "On Hand"
ship: "Ship"
shipping_category: "Shipping Category"
height: "Height"
width: "Width"
depth: "Depth"
actions:
create_and_add_another: "Create and Add Another"
create: "Create"
@@ -717,6 +722,10 @@ en_CA:
enable_subscriptions_tip: "Enable subscriptions functionality?"
enable_subscriptions_false: "Disabled"
enable_subscriptions_true: "Enabled"
customer_names_in_reports: "Customer Names in Reports"
customer_names_tip: "Enable your suppliers/vendors to see your customers' names in reports."
customer_names_false: "Disabled"
customer_names_true: "Enabled"
shopfront_message: "Shopfront Message"
shopfront_message_placeholder: >
An optional message to welcome customers and explain how to shop with
@@ -1035,10 +1044,13 @@ en_CA:
name: "Enterprise Fee Summary"
description: "Summary of Enterprise Fees collected"
subscriptions:
subscriptions: Subscriptions
new: New Subscription
create: Create Subscription
edit: Edit Subscription
index:
title: "Subscriptions"
new: "New Subscription"
new:
title: "New Subscription"
edit:
title: "Edit Subscription"
table:
edit_subscription: Edit Subscription
pause_subscription: Pause Subscription
@@ -1047,6 +1059,7 @@ en_CA:
filters:
query_placeholder: "Search by email..."
setup_explanation:
title: "Subscriptions"
just_a_few_more_steps: 'Just a few more steps before you can begin:'
enable_subscriptions: "Enable subscriptions for at least one of your shops"
enable_subscriptions_step_1_html: 1. Go to the %{enterprises_link} page, find your shop, and click "Manage"
@@ -1060,6 +1073,8 @@ en_CA:
create_at_least_one_schedule_step_3: 3. Click '+ New Schedule', and fill out the form
once_you_are_done_you_can_html: Once you are done, you can %{reload_this_page_link}
reload_this_page: reload this page
form:
create: "Create Subscription"
steps:
details: 1. Basic Details
address: 2. Address
@@ -1304,6 +1319,8 @@ en_CA:
cart_updating: "Updating cart..."
cart_empty: "Cart empty"
cart_edit: "Edit your cart"
item: "Item"
qty: "Qty"
card_number: Card Number
card_securitycode: "Security Code"
card_expiry_date: Expiry Date
@@ -1959,6 +1976,7 @@ en_CA:
supplier: "Supplier"
product_name: "Product Name"
product_description: "Product Description"
permalink: "Permalink"
shipping_categories: "Shipping Categories"
units: "Unit Size"
coordinator: "Coordinator"
@@ -2039,7 +2057,6 @@ en_CA:
spree_user_enterprise_limit_error: "^%{email} is not permitted to own any more enterprises (limit is %{enterprise_limit})."
spree_variant_product_error: must have at least one variant
your_profil_live: "Your profile live"
on_ofn_map: "on the Open Food Network map"
see: "See"
live: "live"
manage: "Manage"
@@ -2056,6 +2073,7 @@ en_CA:
remove_tax: "Remove tax"
first_name_begins_with: "First name begins with"
last_name_begins_with: "Last name begins with"
shipping_method: "Shipping method"
new_order: "New Order"
enterprise_tos_link: "Enterprise Terms of Service link"
enterprise_tos_message: "We want to work with people that share our aims and values. As such we ask new enterprises to agree to our "
@@ -3168,6 +3186,8 @@ en_CA:
stripe:
error_saving_payment: Error saving payment
submitting_payment: Submitting payment...
paypal:
no_payment_via_admin_backend: Paypal payments cannot be captured in the backoffice.
products:
image_upload_error: "The product image was not recognised. Please upload an image in PNG or JPG format."
new:
@@ -3221,6 +3241,8 @@ en_CA:
bulk_coop_allocation: 'Bulk Co-op - Allocation'
bulk_coop_packing_sheets: 'Bulk Co-op - Packing Sheets'
bulk_coop_customer_payments: 'Bulk Co-op - Customer Payments'
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."
users:
index:
listing_users: "Listing Users"
@@ -3345,6 +3367,32 @@ en_CA:
invoice_email:
hi: "Hi %{name}"
invoice_attached_text: Please find attached an invoice for your recent order from
user_mailer:
reset_password_instructions:
request_sent_text: |
A request to reset your password has been made.
If you did not make this request, simply ignore this email.
link_text: >
If you did make this request just click the link below:
issue_text: |
If the above URL does not work try copying and pasting it into your browser.
If you continue to have problems please feel free to contact us.
confirmation_instructions:
subject: "Please confirm your OFN account"
shipment_mailer:
shipped_email:
dear_customer: "Dear Customer, "
instructions: "Your order has been shipped or picked up."
shipment_summary: "Shipment/Pick Up Summary"
subject: "Shipment/Pick Up Notification"
thanks: "Thank you for your business."
track_information: "Tracking Information: %{tracking}"
track_link: "Tracking Link: %{url}"
test_mailer:
test_email:
greeting: "Congratulations!"
message: "If you have received this email, then your OFN email settings are correct."
subject: "Test Mail"
order_state:
address: address
adjustments: adjustments
@@ -3366,18 +3414,6 @@ en_CA:
ended: ended
paused: paused
canceled: cancelled
user_mailer:
reset_password_instructions:
request_sent_text: |
A request to reset your password has been made.
If you did not make this request, simply ignore this email.
link_text: >
If you did make this request just click the link below:
issue_text: |
If the above URL does not work try copying and pasting it into your browser.
If you continue to have problems please feel free to contact us.
confirmation_instructions:
subject: Please confirm your OFN account
users:
form:
account_settings: Account Settings

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