mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-12 18:36:49 +00:00
Compare commits
296 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
defb6e4fa4 | ||
|
|
62339de603 | ||
|
|
9b2cb1c3ef | ||
|
|
58c0b1e0fd | ||
|
|
2a71af7c6b | ||
|
|
819a445547 | ||
|
|
d57f20a542 | ||
|
|
28651bbecf | ||
|
|
06b41a8236 | ||
|
|
2fa8cd54fd | ||
|
|
043e175fa1 | ||
|
|
a1b4c7fdf2 | ||
|
|
300e12371a | ||
|
|
8290acfd91 | ||
|
|
a8bfedd847 | ||
|
|
6f33ae586e | ||
|
|
da1569abda | ||
|
|
7ce9a3f988 | ||
|
|
7a0b036edd | ||
|
|
d81ed36eef | ||
|
|
23c86a1937 | ||
|
|
fb88cfedcf | ||
|
|
94d1d5f3ae | ||
|
|
f9aac02e13 | ||
|
|
274cdefa26 | ||
|
|
9264badaaf | ||
|
|
152eb11913 | ||
|
|
0421d23e7b | ||
|
|
5ce51a4abb | ||
|
|
1c7ce9997a | ||
|
|
489665f3f9 | ||
|
|
cad79d74c8 | ||
|
|
f9e29c5aa7 | ||
|
|
ad9d9afd6a | ||
|
|
41d67d8b2e | ||
|
|
5568fd5826 | ||
|
|
f6277416ce | ||
|
|
4de4cc642d | ||
|
|
cd22361d13 | ||
|
|
1ddda92f4d | ||
|
|
4048957e2e | ||
|
|
2abbfad18c | ||
|
|
292199441a | ||
|
|
f56fa0b7a5 | ||
|
|
a432bbf789 | ||
|
|
6d9250c014 | ||
|
|
6d05de742e | ||
|
|
aa00756f9c | ||
|
|
ee65b4ba27 | ||
|
|
e2a865476d | ||
|
|
9e7e63cc94 | ||
|
|
4dd1a52f8e | ||
|
|
f6f6d9b46f | ||
|
|
204e3979d9 | ||
|
|
ad8c41e0ad | ||
|
|
acb1c41461 | ||
|
|
859d34c235 | ||
|
|
8d74c69402 | ||
|
|
4ac6664502 | ||
|
|
53a8fec181 | ||
|
|
313e6e2b45 | ||
|
|
6819042489 | ||
|
|
e1fb13b491 | ||
|
|
aa9054659e | ||
|
|
172a12d7d9 | ||
|
|
e561bcc895 | ||
|
|
9390fd6ccb | ||
|
|
b227c78aeb | ||
|
|
a44d0f7af6 | ||
|
|
41a7e26fcd | ||
|
|
5cd40cb19f | ||
|
|
907afe3131 | ||
|
|
261269bd57 | ||
|
|
d0c07b931a | ||
|
|
b6adef38e5 | ||
|
|
0ca4d0842a | ||
|
|
e5395709cc | ||
|
|
2515b1ae2c | ||
|
|
9fd8613107 | ||
|
|
bea8c2035f | ||
|
|
e616e32bbc | ||
|
|
19b5a004dd | ||
|
|
4a5a6a2242 | ||
|
|
d1b60e3778 | ||
|
|
2f1fdc5852 | ||
|
|
31fe8850b5 | ||
|
|
0309a20cb1 | ||
|
|
07b819ab4b | ||
|
|
50fd3656ef | ||
|
|
4243ff293f | ||
|
|
c79f2326fc | ||
|
|
ac69bef459 | ||
|
|
debbf9b361 | ||
|
|
1f470830c8 | ||
|
|
a00e964eb6 | ||
|
|
8e5cfdeb97 | ||
|
|
9d772dbcc9 | ||
|
|
0abcbc7b8f | ||
|
|
3badaa07d2 | ||
|
|
977ab26b00 | ||
|
|
d6160b5759 | ||
|
|
40d4ed2c95 | ||
|
|
72f5b1b251 | ||
|
|
eb2d8e65ed | ||
|
|
355c5f5c55 | ||
|
|
eb420d9eed | ||
|
|
bb3f958dd2 | ||
|
|
d1ef0e0a0b | ||
|
|
0efcf1536f | ||
|
|
b367d4328e | ||
|
|
ed346b3b54 | ||
|
|
290120d015 | ||
|
|
0fd163602d | ||
|
|
4c3a3d5d1a | ||
|
|
f8146fb946 | ||
|
|
9771fd7f13 | ||
|
|
6a61bf7656 | ||
|
|
9754d8d754 | ||
|
|
91789494b0 | ||
|
|
2eda8789d1 | ||
|
|
67a00173f8 | ||
|
|
5f8fc64b31 | ||
|
|
2f5efc86ee | ||
|
|
102df28e97 | ||
|
|
0b91991919 | ||
|
|
9a9538dace | ||
|
|
23bb72faa6 | ||
|
|
ce5bcaaa20 | ||
|
|
de22ad0000 | ||
|
|
23706ec1d6 | ||
|
|
c3e0f45f1a | ||
|
|
0a1947ae34 | ||
|
|
b79c568b08 | ||
|
|
e8139d3948 | ||
|
|
5761014205 | ||
|
|
90bf4f312b | ||
|
|
63a9765fea | ||
|
|
5c6cb4840e | ||
|
|
271d1ec103 | ||
|
|
2271a57ffe | ||
|
|
7c223a43fc | ||
|
|
d46fad3a02 | ||
|
|
c75a864ff2 | ||
|
|
95e048b37f | ||
|
|
99ca0adf64 | ||
|
|
a8207128df | ||
|
|
47bde1e77c | ||
|
|
0edeb82c32 | ||
|
|
dee34d1f26 | ||
|
|
acf984699e | ||
|
|
13bf7497a9 | ||
|
|
70e2fb759c | ||
|
|
a860b5ea42 | ||
|
|
74252e9d13 | ||
|
|
09b7aa134b | ||
|
|
78fbac8ff2 | ||
|
|
4e22787386 | ||
|
|
f6c85af4da | ||
|
|
49a60374e6 | ||
|
|
1b66a72c7f | ||
|
|
798194c03e | ||
|
|
b21a969502 | ||
|
|
d746ae3d9e | ||
|
|
621e2a3132 | ||
|
|
142bab8c35 | ||
|
|
abaa66cc14 | ||
|
|
1123e08a98 | ||
|
|
3a2802f5aa | ||
|
|
766b7449d8 | ||
|
|
2caa559869 | ||
|
|
04feccaef3 | ||
|
|
dfc31b9338 | ||
|
|
2ccb7c3eb0 | ||
|
|
f92d05656c | ||
|
|
1e2c092b70 | ||
|
|
6e626447d0 | ||
|
|
f14bb280c1 | ||
|
|
f093656c6b | ||
|
|
dd86e00913 | ||
|
|
b2309f8673 | ||
|
|
5404efcbce | ||
|
|
d8acf90240 | ||
|
|
6cc296926c | ||
|
|
6e1dd78e9f | ||
|
|
6e39ab779c | ||
|
|
8792ec1de3 | ||
|
|
b91f1578c9 | ||
|
|
9b91c490cb | ||
|
|
e8ba44f958 | ||
|
|
800ac0cabf | ||
|
|
9ef59f440b | ||
|
|
61c14cb61d | ||
|
|
467fa7e566 | ||
|
|
ef48187332 | ||
|
|
425901fa7a | ||
|
|
6e57e1ad56 | ||
|
|
6b4a518371 | ||
|
|
e6ab2ae753 | ||
|
|
c97fc45109 | ||
|
|
1d44d463e7 | ||
|
|
13b72154fa | ||
|
|
619e13ccba | ||
|
|
bc66c10a52 | ||
|
|
06e77372be | ||
|
|
422958ed6f | ||
|
|
51f39ee89d | ||
|
|
e615674541 | ||
|
|
ff82a1b73f | ||
|
|
ef7c7a3e73 | ||
|
|
3c23952fd6 | ||
|
|
9d1e12da68 | ||
|
|
aae0a6533a | ||
|
|
85e9819c3b | ||
|
|
1ea06763f8 | ||
|
|
5064769717 | ||
|
|
581a246b4f | ||
|
|
27404872de | ||
|
|
18cb0e0980 | ||
|
|
c923edd3bb | ||
|
|
be3a10b2b1 | ||
|
|
a002ec1894 | ||
|
|
ecc58cedd9 | ||
|
|
27ace50eb7 | ||
|
|
4df81f0864 | ||
|
|
95a9ca7775 | ||
|
|
d6a5ad70a8 | ||
|
|
a2ebc614d9 | ||
|
|
10b07aabd9 | ||
|
|
5738ec0542 | ||
|
|
c6bb756531 | ||
|
|
8b04e45ea5 | ||
|
|
f1a3814c0d | ||
|
|
8e84754f35 | ||
|
|
81710a2704 | ||
|
|
1af4bf6994 | ||
|
|
3217b3ba86 | ||
|
|
16b9c8c814 | ||
|
|
702669e61c | ||
|
|
cc317bc8c9 | ||
|
|
bda47d97ee | ||
|
|
d43e9b5716 | ||
|
|
efacca6292 | ||
|
|
646f48f0af | ||
|
|
f66538d2cb | ||
|
|
55f160c309 | ||
|
|
5835a0ee3a | ||
|
|
e96d9c1f45 | ||
|
|
5162964936 | ||
|
|
d12495f3db | ||
|
|
c6cd695b3c | ||
|
|
ebf9be41bb | ||
|
|
95ffff5087 | ||
|
|
03bb1f053a | ||
|
|
2e3702550d | ||
|
|
56b83b6bb5 | ||
|
|
e367cbd1e6 | ||
|
|
bdf9c1e405 | ||
|
|
2070cfd5bb | ||
|
|
8001e63f77 | ||
|
|
aed384183b | ||
|
|
e453b130e4 | ||
|
|
7e355a3248 | ||
|
|
a8a81f8023 | ||
|
|
d4c48e2b94 | ||
|
|
872cfcfc58 | ||
|
|
5b3fbe0aed | ||
|
|
ebeeeb7ed3 | ||
|
|
a929d82580 | ||
|
|
1f39731068 | ||
|
|
d2f0d96174 | ||
|
|
7218bb0c7d | ||
|
|
58da11fde7 | ||
|
|
2c65cea911 | ||
|
|
95698fac37 | ||
|
|
7b30008e8b | ||
|
|
50e6ce92b3 | ||
|
|
a78d615936 | ||
|
|
cd8355ea66 | ||
|
|
724a88344e | ||
|
|
9a09f420c1 | ||
|
|
12a5a266fd | ||
|
|
efeda61e40 | ||
|
|
38c5a9e105 | ||
|
|
89e5221dc5 | ||
|
|
c75341838e | ||
|
|
84d7538b1b | ||
|
|
388d575cc8 | ||
|
|
fdd21d7d7d | ||
|
|
ab67a4f80c | ||
|
|
5afb862ce1 | ||
|
|
6389fdb16e | ||
|
|
01ab974a3b | ||
|
|
7a9f9a5624 | ||
|
|
5648b2e281 | ||
|
|
1199a356c4 | ||
|
|
c40697cf61 |
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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:
|
||||
|
||||
7
Gemfile
7
Gemfile
@@ -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'
|
||||
|
||||
50
Gemfile.lock
50
Gemfile.lock
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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?
|
||||
|
||||
|
||||
@@ -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) ->
|
||||
|
||||
@@ -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)
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
@import '../admin/variables';
|
||||
|
||||
/* -------------------------------------
|
||||
* GLOBAL
|
||||
*------------------------------------- */
|
||||
|
||||
45
app/assets/stylesheets/mail/payments_list.scss
Normal file
45
app/assets/stylesheets/mail/payments_list.scss
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
17
app/controllers/concerns/paper_trail_logging.rb
Normal file
17
app/controllers/concerns/paper_trail_logging.rb
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
16
app/controllers/spree/base_controller.rb
Normal file
16
app/controllers/spree/base_controller.rb
Normal 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'
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
26
app/mailers/spree/base_mailer.rb
Normal file
26
app/mailers/spree/base_mailer.rb
Normal 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
|
||||
@@ -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
|
||||
69
app/mailers/spree/order_mailer.rb
Normal file
69
app/mailers/spree/order_mailer.rb
Normal 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
|
||||
@@ -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
|
||||
13
app/mailers/spree/shipment_mailer.rb
Normal file
13
app/mailers/spree/shipment_mailer.rb
Normal 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
|
||||
11
app/mailers/spree/test_mailer.rb
Normal file
11
app/mailers/spree/test_mailer.rb
Normal 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
|
||||
@@ -2,6 +2,7 @@ class SubscriptionMailer < Spree::BaseMailer
|
||||
helper CheckoutHelper
|
||||
helper ShopMailHelper
|
||||
helper OrderHelper
|
||||
helper Spree::Admin::PaymentsHelper
|
||||
include I18nHelper
|
||||
|
||||
def confirmation_email(order)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
155
app/models/spree/credit_card.rb
Normal file
155
app/models/spree/credit_card.rb
Normal 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
|
||||
@@ -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
|
||||
62
app/models/spree/gateway.rb
Normal file
62
app/models/spree/gateway.rb
Normal 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
|
||||
102
app/models/spree/gateway/bogus.rb
Normal file
102
app/models/spree/gateway/bogus.rb
Normal 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
|
||||
36
app/models/spree/gateway/bogus_simple.rb
Normal file
36
app/models/spree/gateway/bogus_simple.rb
Normal 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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
137
app/models/spree/payment_method.rb
Normal file
137
app/models/spree/payment_method.rb
Normal 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
|
||||
33
app/models/spree/payment_method/check.rb
Normal file
33
app/models/spree/payment_method/check.rb
Normal 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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
35
app/services/order_data_masker.rb
Normal file
35
app/services/order_data_masker.rb
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'" } }
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}"
|
||||
})
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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'])
|
||||
|
||||
@@ -70,4 +70,4 @@
|
||||
%p
|
||||
= @order.distributor.invoice_text
|
||||
|
||||
= render 'spree/order_mailer/payment'
|
||||
= render 'spree/shared/payment'
|
||||
|
||||
@@ -71,4 +71,4 @@
|
||||
%p
|
||||
= @order.distributor.invoice_text
|
||||
|
||||
= render 'spree/order_mailer/payment'
|
||||
= render 'spree/shared/payment'
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
%p.customer-names-tip
|
||||
= t(".customer_names_tip")
|
||||
@@ -6,4 +6,6 @@
|
||||
%br
|
||||
= button t(:search)
|
||||
|
||||
= render partial: "customer_names_message"
|
||||
|
||||
= render "table", id: "listing_orders", msg_option: t(:search)
|
||||
|
||||
@@ -25,4 +25,6 @@
|
||||
.row
|
||||
= button t(:search)
|
||||
|
||||
= render partial: "customer_names_message"
|
||||
|
||||
= render "table", id: "listing_orders", msg_option: t(:search)
|
||||
|
||||
@@ -25,4 +25,6 @@
|
||||
.row
|
||||
= button t(:search)
|
||||
|
||||
= render partial: "customer_names_message"
|
||||
|
||||
= render "table", id: "listing_orders", msg_option: t(:search)
|
||||
|
||||
@@ -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
|
||||
|
||||
4
app/views/spree/admin/shared/_order_links.html.haml
Normal file
4
app/views/spree/admin/shared/_order_links.html.haml
Normal 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'])
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
15
app/views/spree/shared/_payment.html.haml
Normal file
15
app/views/spree/shared/_payment.html.haml
Normal 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 }
|
||||
14
app/views/spree/shared/_payments_list.html.haml
Normal file
14
app/views/spree/shared/_payments_list.html.haml
Normal 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
|
||||
30
app/views/spree/shipment_mailer/shipped_email.html.haml
Normal file
30
app/views/spree/shipment_mailer/shipped_email.html.haml
Normal 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')
|
||||
4
app/views/spree/test_mailer/test_email.html.haml
Normal file
4
app/views/spree/test_mailer/test_email.html.haml
Normal file
@@ -0,0 +1,4 @@
|
||||
= t('.greeting')
|
||||
= "================"
|
||||
|
||||
= t('.message')
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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} ، وابحث عن متجرك ، وانقر على "إدارة"
|
||||
@@ -1046,6 +1072,8 @@ ar:
|
||||
create_at_least_one_schedule_step_3: 3. انقر فوق "+ جدول جديد" ، واملأ النموذج
|
||||
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: إعدادت الحساب
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user