mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-17 19:26:48 +00:00
Compare commits
283 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
259e139c47 | ||
|
|
4ca930bdad | ||
|
|
f0a052b65b | ||
|
|
07a72eccd4 | ||
|
|
27586d072d | ||
|
|
3bfa903912 | ||
|
|
0ba670b180 | ||
|
|
c4cfc1dc05 | ||
|
|
17957ed6c0 | ||
|
|
8b6a08457a | ||
|
|
9e2a3d6973 | ||
|
|
55b21310e4 | ||
|
|
1266a37ac5 | ||
|
|
54feb2f57d | ||
|
|
e9eb90507e | ||
|
|
ee44159c83 | ||
|
|
8861f5c6aa | ||
|
|
b089404891 | ||
|
|
2fa2a30c67 | ||
|
|
cabec7e73f | ||
|
|
87df44764f | ||
|
|
8f25568530 | ||
|
|
b1b422b90e | ||
|
|
85d99f3bf2 | ||
|
|
c6b3a615f1 | ||
|
|
5429bd8d7a | ||
|
|
300e87648b | ||
|
|
4a9ac62d91 | ||
|
|
d7a1d7769c | ||
|
|
cd20d2612d | ||
|
|
446007e283 | ||
|
|
7bc59512fd | ||
|
|
8c9960854f | ||
|
|
242c1a2715 | ||
|
|
21d67a0723 | ||
|
|
59b3bfa161 | ||
|
|
9fc3ff0250 | ||
|
|
7ddbc10c19 | ||
|
|
41a5787830 | ||
|
|
010c1c799d | ||
|
|
2faea65f82 | ||
|
|
dd8f139c1b | ||
|
|
6d0d4b5096 | ||
|
|
b0a70f0ba3 | ||
|
|
0b18b0dc0a | ||
|
|
d225294b6b | ||
|
|
3547b9fe56 | ||
|
|
1766f33d46 | ||
|
|
cbdb6126a6 | ||
|
|
6a26c9da8c | ||
|
|
36f4f40e84 | ||
|
|
787f29105c | ||
|
|
642a294844 | ||
|
|
7401e34c52 | ||
|
|
ca41bbcee7 | ||
|
|
c374bf5e49 | ||
|
|
417c4d9aea | ||
|
|
b85f8d4b45 | ||
|
|
315a5f0fd9 | ||
|
|
4ca8c220e9 | ||
|
|
442dbaa7d7 | ||
|
|
c080c1f1d6 | ||
|
|
3b92df42c3 | ||
|
|
e2dbb150e5 | ||
|
|
ca29604ff8 | ||
|
|
57bc146de9 | ||
|
|
e5b7c036d5 | ||
|
|
6f1d8664ac | ||
|
|
8d5e90e40f | ||
|
|
6db80e837b | ||
|
|
cec295a113 | ||
|
|
a553547403 | ||
|
|
1e4edc671a | ||
|
|
b2113c96a2 | ||
|
|
408103516e | ||
|
|
d96216b8d7 | ||
|
|
d4ff9055c0 | ||
|
|
591ba34eb6 | ||
|
|
8dfd3f624d | ||
|
|
9cf30b431a | ||
|
|
777cedd90d | ||
|
|
b80d15b672 | ||
|
|
228c7cc13a | ||
|
|
7c4691ab33 | ||
|
|
692adb0113 | ||
|
|
58e34b5ad6 | ||
|
|
694bc6a598 | ||
|
|
e06b82f335 | ||
|
|
f9869d4360 | ||
|
|
1cad631bdb | ||
|
|
17202ff39c | ||
|
|
03d49c7987 | ||
|
|
d5037abbe7 | ||
|
|
5ddfc54b2b | ||
|
|
bea8982085 | ||
|
|
fc06cc242b | ||
|
|
b70c349b05 | ||
|
|
634ab5ca6a | ||
|
|
a802fe29be | ||
|
|
88ac5dc955 | ||
|
|
e879aa1bed | ||
|
|
94a815a9ef | ||
|
|
c7c5a95407 | ||
|
|
1825c90a5f | ||
|
|
307b1ca9f9 | ||
|
|
17abb3e345 | ||
|
|
1903c575ff | ||
|
|
9a885173b9 | ||
|
|
3167e5ae2b | ||
|
|
7f968b2b10 | ||
|
|
b08299e83a | ||
|
|
d9e2a80a4f | ||
|
|
863702ed4b | ||
|
|
6114dfb4ef | ||
|
|
f39008f3d3 | ||
|
|
99301e1fb2 | ||
|
|
cb0b7ed030 | ||
|
|
7d9948f5b6 | ||
|
|
18a7bdc631 | ||
|
|
6083d61ba7 | ||
|
|
9e2054dcd4 | ||
|
|
b5f27d48df | ||
|
|
89d63dfbb9 | ||
|
|
73995d1aff | ||
|
|
f5a9c6f3f4 | ||
|
|
f6aeb04b14 | ||
|
|
00320e4387 | ||
|
|
ebd7409f70 | ||
|
|
e86d84e10f | ||
|
|
b7a503a848 | ||
|
|
28570cded2 | ||
|
|
c0bb9aad5e | ||
|
|
b281e7e9e5 | ||
|
|
3011bdb87d | ||
|
|
66b531ddf6 | ||
|
|
213f3cf072 | ||
|
|
e1962419c2 | ||
|
|
bb6f5cb3a7 | ||
|
|
2d90fa4723 | ||
|
|
db3576f469 | ||
|
|
c2362921fa | ||
|
|
0668dd2591 | ||
|
|
d8f9dead8b | ||
|
|
bc96ad9515 | ||
|
|
bd4da3b5ce | ||
|
|
8e3f0d2152 | ||
|
|
1ea503ed5d | ||
|
|
719007ecb4 | ||
|
|
bd06f898a3 | ||
|
|
246a1f368b | ||
|
|
f6443f00e5 | ||
|
|
fd52800d2c | ||
|
|
4b1f5ae060 | ||
|
|
31a34fc9d2 | ||
|
|
3fc0d1bcb9 | ||
|
|
bb89557beb | ||
|
|
0ae3bf985a | ||
|
|
387326b9b4 | ||
|
|
cb80f67dc6 | ||
|
|
5260c01f16 | ||
|
|
3170db9532 | ||
|
|
42d5f377e0 | ||
|
|
f513d888a3 | ||
|
|
5cde085241 | ||
|
|
23956726e9 | ||
|
|
1f1da3eb6d | ||
|
|
f6d0905517 | ||
|
|
c2591104ee | ||
|
|
3beea43143 | ||
|
|
8f2d52b9e3 | ||
|
|
eada388534 | ||
|
|
f6f4faf146 | ||
|
|
5c4ea1a6be | ||
|
|
72c454a211 | ||
|
|
543a9592c7 | ||
|
|
2ce96f4bbe | ||
|
|
00d121ebfc | ||
|
|
c785d0d1d7 | ||
|
|
80cbe6b30f | ||
|
|
09aef524f3 | ||
|
|
805b4d243e | ||
|
|
a07029f660 | ||
|
|
ccab133d63 | ||
|
|
a51645f316 | ||
|
|
4125fe1690 | ||
|
|
6950d7717f | ||
|
|
ab53db0c61 | ||
|
|
1b4a4a8113 | ||
|
|
66fb3a9cf3 | ||
|
|
79a7cf9b39 | ||
|
|
a18a198812 | ||
|
|
0ca71ce0a9 | ||
|
|
b7aa04353c | ||
|
|
bfeebccbc5 | ||
|
|
4b21667974 | ||
|
|
9bbeec5031 | ||
|
|
af3057f55f | ||
|
|
e8381304f9 | ||
|
|
58a476751b | ||
|
|
3320a3f0bc | ||
|
|
4c6708267a | ||
|
|
2f0d61d54f | ||
|
|
451d8488d9 | ||
|
|
bcca2eee9d | ||
|
|
1bce516a45 | ||
|
|
f6195f1159 | ||
|
|
503c17f896 | ||
|
|
795b7101ab | ||
|
|
9d4a15b0e0 | ||
|
|
459959c068 | ||
|
|
ba16de6627 | ||
|
|
72a39fdf54 | ||
|
|
4b8515358c | ||
|
|
cf7d8067df | ||
|
|
d4e4669e49 | ||
|
|
e9f76cb339 | ||
|
|
b68c5ee0f9 | ||
|
|
072cd2bd54 | ||
|
|
2f8198eecc | ||
|
|
f85044e035 | ||
|
|
751beceb34 | ||
|
|
8cb75fc6d8 | ||
|
|
d147996af6 | ||
|
|
daff0a250c | ||
|
|
65bccb9236 | ||
|
|
efe5a4700a | ||
|
|
0103cc3a2f | ||
|
|
2a2c7bdc4e | ||
|
|
ad76f3e91e | ||
|
|
201c9c109d | ||
|
|
4911bb6613 | ||
|
|
c07215552e | ||
|
|
2b01c80c54 | ||
|
|
9de74500cd | ||
|
|
04f5249176 | ||
|
|
5c81f645c9 | ||
|
|
6ff8cadb26 | ||
|
|
04358dfa39 | ||
|
|
b23d6674b5 | ||
|
|
8904273bea | ||
|
|
1bb7fd9ec8 | ||
|
|
0af20e48b0 | ||
|
|
bc40088eaf | ||
|
|
fa77204e14 | ||
|
|
af713385d8 | ||
|
|
c9972189d0 | ||
|
|
eb07a91acb | ||
|
|
66ba9ff73d | ||
|
|
bfce012a4b | ||
|
|
fb3dd0aa18 | ||
|
|
01320105ea | ||
|
|
c2c12b34f9 | ||
|
|
c71ebc38bb | ||
|
|
4b03dec119 | ||
|
|
ca1373a366 | ||
|
|
b0e889be2a | ||
|
|
b3196295e6 | ||
|
|
75cec3b606 | ||
|
|
92417d849c | ||
|
|
bf5fcde885 | ||
|
|
40f8c785a2 | ||
|
|
403384dbb1 | ||
|
|
c30cba8bfe | ||
|
|
e8138e8c23 | ||
|
|
4845cde20f | ||
|
|
a8265aff89 | ||
|
|
9cb3b0b14a | ||
|
|
06433b1be3 | ||
|
|
d4c52ce122 | ||
|
|
eb4e732c1a | ||
|
|
3fe2684270 | ||
|
|
3e6e338e3d | ||
|
|
5aa8c783b1 | ||
|
|
5a66c855bc | ||
|
|
ea3c456d3b | ||
|
|
f4c7a0b2a2 | ||
|
|
b477ed4a0a | ||
|
|
f7ee08855a | ||
|
|
e3d1f5256b | ||
|
|
4a60d7ef0e | ||
|
|
dbd41e9d31 | ||
|
|
87327dcf57 | ||
|
|
6d169c1b08 |
44
.github/workflows/brakeman-analysis.yml
vendored
Normal file
44
.github/workflows/brakeman-analysis.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
# This workflow integrates Brakeman with GitHub's Code Scanning feature
|
||||
# Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications
|
||||
|
||||
name: Brakeman Scan
|
||||
|
||||
# This section configures the trigger for the workflow. Feel free to customize depending on your convention
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
pull_request:
|
||||
branches: [ "master" ]
|
||||
|
||||
jobs:
|
||||
brakeman-scan:
|
||||
name: Brakeman Scan
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
# Checkout the repository to the GitHub Actions runner
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# Customize the ruby version depending on your needs
|
||||
- name: Setup Ruby
|
||||
uses: actions/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: '2.4'
|
||||
|
||||
- name: Setup Brakeman
|
||||
env:
|
||||
BRAKEMAN_VERSION: '4.10' # SARIF support is provided in Brakeman version 4.10+
|
||||
run: |
|
||||
gem install brakeman --version $BRAKEMAN_VERSION
|
||||
|
||||
# Execute Brakeman CLI and generate a SARIF output with the security issues identified during the analysis
|
||||
- name: Scan
|
||||
continue-on-error: true
|
||||
run: |
|
||||
brakeman -f sarif -o output.sarif.json .
|
||||
|
||||
# Upload the SARIF file generated in the previous step
|
||||
- name: Upload SARIF
|
||||
uses: github/codeql-action/upload-sarif@v1
|
||||
with:
|
||||
sarif_file: output.sarif.json
|
||||
4
.hound.yml
Normal file
4
.hound.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
rubocop:
|
||||
config_file: .rubocop_styleguide.yml
|
||||
scss:
|
||||
config_file: .scss-lint.yml
|
||||
@@ -61,11 +61,10 @@ Layout/LineLength:
|
||||
- app/models/product_import/unit_converter.rb
|
||||
- app/models/proxy_order.rb
|
||||
- app/models/schedule.rb
|
||||
- app/models/spree/app_configuration_decorator.rb
|
||||
- app/models/spree/app_configuration.rb
|
||||
- app/models/spree/gateway/stripe_connect.rb
|
||||
- app/models/spree/image.rb
|
||||
- app/models/spree/line_item_decorator.rb
|
||||
- app/models/spree/order_decorator.rb
|
||||
- app/models/spree/order.rb
|
||||
- app/models/spree/payment_method.rb
|
||||
- app/models/spree/product_decorator.rb
|
||||
- app/models/spree/user.rb
|
||||
@@ -74,6 +73,7 @@ Layout/LineLength:
|
||||
- app/models/variant_override_set.rb
|
||||
- app/serializers/api/admin/subscription_line_item_serializer.rb
|
||||
- app/services/cart_service.rb
|
||||
- app/services/checkout/post_checkout_actions.rb
|
||||
- app/services/default_stock_location.rb
|
||||
- app/services/embedded_page_service.rb
|
||||
- app/services/order_cycle_form.rb
|
||||
@@ -101,7 +101,6 @@ Layout/LineLength:
|
||||
- lib/open_food_network/scope_variants_for_search.rb
|
||||
- lib/open_food_network/xero_invoices_report.rb
|
||||
- lib/spree/localized_number.rb
|
||||
- lib/spree/product_filters.rb
|
||||
- lib/tasks/data.rake
|
||||
- lib/tasks/enterprises.rake
|
||||
- spec/controllers/admin/bulk_line_items_controller_spec.rb
|
||||
@@ -263,12 +262,17 @@ Layout/LineLength:
|
||||
- spec/models/spree/adjustment_spec.rb
|
||||
- spec/models/spree/classification_spec.rb
|
||||
- spec/models/spree/gateway/stripe_connect_spec.rb
|
||||
- spec/models/spree/inventory_unit_spec.rb
|
||||
- spec/models/spree/line_item_spec.rb
|
||||
- spec/models/spree/order/checkout_spec.rb
|
||||
- spec/models/spree/order_inventory_spec.rb
|
||||
- spec/models/spree/order_spec.rb
|
||||
- spec/models/spree/order/state_machine_spec.rb
|
||||
- spec/models/spree/payment_method_spec.rb
|
||||
- spec/models/spree/payment_spec.rb
|
||||
- spec/models/spree/product_set_spec.rb
|
||||
- spec/models/spree/product_spec.rb
|
||||
- spec/models/spree/return_authorization_spec.rb
|
||||
- spec/models/spree/shipping_method_spec.rb
|
||||
- spec/models/spree/stock_item_spec.rb
|
||||
- spec/models/spree/taxon_spec.rb
|
||||
@@ -298,6 +302,7 @@ Layout/LineLength:
|
||||
- spec/serializers/api/order_serializer_spec.rb
|
||||
- spec/services/cart_service_spec.rb
|
||||
- spec/services/checkout/form_data_adapter_spec.rb
|
||||
- spec/services/checkout/post_checkout_actions_spec.rb
|
||||
- spec/services/embedded_page_service_spec.rb
|
||||
- spec/services/exchange_products_renderer_spec.rb
|
||||
- spec/services/order_cycle_distributed_products_spec.rb
|
||||
@@ -384,17 +389,22 @@ Metrics/AbcSize:
|
||||
- app/models/proxy_order.rb
|
||||
- app/models/spree/ability.rb
|
||||
- app/models/spree/address.rb
|
||||
- app/models/spree/line_item_decorator.rb
|
||||
- app/models/spree/line_item.rb
|
||||
- app/models/spree/order/checkout.rb
|
||||
- app/models/spree/order_decorator.rb
|
||||
- app/models/spree/order_contents.rb
|
||||
- app/models/spree/order_inventory.rb
|
||||
- app/models/spree/order.rb
|
||||
- app/models/spree/payment/processing.rb
|
||||
- app/models/spree/payment.rb
|
||||
- app/models/spree/preference.rb
|
||||
- app/models/spree/preferences/preferable_class_methods.rb
|
||||
- app/models/spree/preferences/preferable.rb
|
||||
- app/models/spree/product_decorator.rb
|
||||
- app/models/spree/return_authorization.rb
|
||||
- app/models/spree/shipment.rb
|
||||
- app/models/spree/taxon.rb
|
||||
- app/models/spree/tax_rate.rb
|
||||
- app/models/spree/zone.rb
|
||||
- app/serializers/api/admin/enterprise_serializer.rb
|
||||
- app/serializers/api/product_serializer.rb
|
||||
- app/serializers/api/variant_serializer.rb
|
||||
- app/services/cart_service.rb
|
||||
@@ -517,7 +527,11 @@ Metrics/CyclomaticComplexity:
|
||||
- app/models/spree/order/checkout.rb
|
||||
- app/models/spree/payment_method.rb
|
||||
- app/models/spree/payment.rb
|
||||
- app/models/spree/preference.rb
|
||||
- app/models/spree/preferences/preferable.rb
|
||||
- app/models/spree/preferences/preferable_class_methods.rb
|
||||
- app/models/spree/product_decorator.rb
|
||||
- app/models/spree/return_authorization.rb
|
||||
- app/models/spree/zone.rb
|
||||
- app/models/variant_override_set.rb
|
||||
- app/services/cart_service.rb
|
||||
@@ -551,7 +565,10 @@ Metrics/PerceivedComplexity:
|
||||
- app/models/spree/order/checkout.rb
|
||||
- app/models/spree/payment_method.rb
|
||||
- app/models/spree/payment.rb
|
||||
- app/models/spree/preferences/preferable.rb
|
||||
- app/models/spree/preferences/preferable_class_methods.rb
|
||||
- app/models/spree/product_decorator.rb
|
||||
- app/models/spree/return_authorization.rb
|
||||
- app/models/spree/zone.rb
|
||||
- app/models/variant_override_set.rb
|
||||
- app/services/cart_service.rb
|
||||
@@ -577,7 +594,7 @@ Metrics/PerceivedComplexity:
|
||||
- app/models/spree/ability.rb
|
||||
- app/models/spree/address.rb
|
||||
- app/models/spree/order/checkout.rb
|
||||
- app/models/spree/order_decorator.rb
|
||||
- app/models/spree/order.rb
|
||||
- app/models/spree/product_decorator.rb
|
||||
- app/models/spree/zone.rb
|
||||
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb
|
||||
@@ -595,61 +612,6 @@ Metrics/PerceivedComplexity:
|
||||
Metrics/MethodLength:
|
||||
Max: 10
|
||||
Exclude:
|
||||
- app/controllers/admin/enterprise_fees_controller.rb
|
||||
- app/controllers/admin/enterprises_controller.rb
|
||||
- app/controllers/spree/admin/taxons_controller.rb
|
||||
- app/controllers/spree/orders_controller.rb
|
||||
- app/helpers/checkout_helper.rb
|
||||
- app/helpers/order_cycles_helper.rb
|
||||
- app/helpers/spree/admin/base_helper.rb
|
||||
- app/helpers/spree/admin/navigation_helper.rb
|
||||
- app/models/enterprise.rb
|
||||
- app/models/enterprise_relationship.rb
|
||||
- app/models/spree/ability.rb
|
||||
- app/models/spree/address.rb
|
||||
- app/models/spree/order/checkout.rb
|
||||
- app/models/spree/payment_method.rb
|
||||
- app/models/spree/payment.rb
|
||||
- app/models/spree/product_decorator.rb
|
||||
- app/models/spree/zone.rb
|
||||
- app/models/variant_override_set.rb
|
||||
- app/services/cart_service.rb
|
||||
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb
|
||||
- engines/order_management/app/services/order_management/stock/estimator.rb
|
||||
- lib/active_merchant/billing/gateways/stripe_payment_intents.rb
|
||||
- lib/discourse/single_sign_on.rb
|
||||
- lib/open_food_network/enterprise_issue_validator.rb
|
||||
- lib/spree/core/calculated_adjustments.rb
|
||||
- lib/spree/core/controller_helpers/order.rb
|
||||
- lib/spree/core/controller_helpers/respond_with.rb
|
||||
- lib/spree/core/controller_helpers/ssl.rb
|
||||
- lib/spree/localized_number.rb
|
||||
- spec/models/product_importer_spec.rb
|
||||
- app/controllers/admin/enterprises_controller.rb
|
||||
- app/controllers/api/variants_controller.rb
|
||||
- app/controllers/spree/admin/taxons_controller.rb
|
||||
- app/controllers/spree/orders_controller.rb
|
||||
- app/helpers/checkout_helper.rb
|
||||
- app/helpers/order_cycles_helper.rb
|
||||
- app/helpers/spree/admin/navigation_helper.rb
|
||||
- app/models/enterprise_relationship.rb
|
||||
- app/models/spree/ability.rb
|
||||
- app/models/spree/address.rb
|
||||
- app/models/spree/order/checkout.rb
|
||||
- app/models/spree/order_decorator.rb
|
||||
- app/models/spree/product_decorator.rb
|
||||
- app/models/spree/zone.rb
|
||||
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb
|
||||
- engines/order_management/app/services/order_management/stock/estimator.rb
|
||||
- lib/active_merchant/billing/gateways/stripe_payment_intents.rb
|
||||
- lib/discourse/single_sign_on.rb
|
||||
- lib/open_food_network/enterprise_issue_validator.rb
|
||||
- lib/spree/core/calculated_adjustments.rb
|
||||
- lib/spree/core/controller_helpers/order.rb
|
||||
- lib/spree/core/controller_helpers/respond_with.rb
|
||||
- lib/spree/core/controller_helpers/ssl.rb
|
||||
- lib/spree/localized_number.rb
|
||||
- spec/models/product_importer_spec.rb
|
||||
- app/controllers/admin/contents_controller.rb
|
||||
- app/controllers/admin/customers_controller.rb
|
||||
- app/controllers/admin/enterprise_fees_controller.rb
|
||||
@@ -699,10 +661,17 @@ Metrics/MethodLength:
|
||||
- app/models/spree/address.rb
|
||||
- app/models/spree/credit_card.rb
|
||||
- app/models/spree/order/checkout.rb
|
||||
- app/models/spree/order_decorator.rb
|
||||
- app/models/spree/order_contents.rb
|
||||
- app/models/spree/order_inventory.rb
|
||||
- app/models/spree/order.rb
|
||||
- app/models/spree/payment_method.rb
|
||||
- app/models/spree/payment/processing.rb
|
||||
- app/models/spree/preference.rb
|
||||
- app/models/spree/preferences/preferable_class_methods.rb
|
||||
- app/models/spree/preferences/preferable.rb
|
||||
- app/models/spree/preferences/store.rb
|
||||
- app/models/spree/product_decorator.rb
|
||||
- app/models/spree/return_authorization.rb
|
||||
- app/models/spree/shipment.rb
|
||||
- app/models/spree/taxon.rb
|
||||
- app/models/spree/tax_rate.rb
|
||||
@@ -783,6 +752,8 @@ Metrics/ClassLength:
|
||||
- app/models/spree/ability.rb
|
||||
- app/models/spree/address.rb
|
||||
- app/models/spree/credit_card.rb
|
||||
- app/models/spree/line_item.rb
|
||||
- app/models/spree/order.rb
|
||||
- app/models/spree/payment.rb
|
||||
- app/models/spree/shipment.rb
|
||||
- app/models/spree/user.rb
|
||||
@@ -817,6 +788,7 @@ Metrics/ModuleLength:
|
||||
- lib/open_food_network/column_preference_defaults.rb
|
||||
- spec/controllers/admin/order_cycles_controller_spec.rb
|
||||
- spec/controllers/api/orders_controller_spec.rb
|
||||
- spec/lib/open_food_network/order_cycle_form_applicator_spec.rb
|
||||
- spec/lib/open_food_network/order_cycle_permissions_spec.rb
|
||||
- spec/models/spree/adjustment_spec.rb
|
||||
- spec/models/spree/credit_card_spec.rb
|
||||
@@ -831,3 +803,9 @@ 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/**/*'
|
||||
- 'app/models/spree/taxon.rb'
|
||||
- 'lib/spree/core/controller_helpers/common.rb'
|
||||
|
||||
@@ -1,144 +1,11 @@
|
||||
# This configuration was generated by
|
||||
# `rubocop --auto-gen-config --exclude-limit 1400`
|
||||
# on 2020-10-14 09:49:36 +0100 using RuboCop version 0.81.0.
|
||||
# on 2020-10-30 17:18:53 +0000 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: 3
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: EnforcedStyle, IndentationWidth.
|
||||
# SupportedStyles: with_first_argument, with_fixed_indentation
|
||||
Layout/ArgumentAlignment:
|
||||
Exclude:
|
||||
- 'spec/models/spree/address_spec.rb'
|
||||
- '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: 3
|
||||
# Cop supports --auto-correct.
|
||||
Layout/EmptyLines:
|
||||
Exclude:
|
||||
- 'spec/features/admin/variants_spec.rb'
|
||||
- 'spec/models/spree/payment_spec.rb'
|
||||
|
||||
# Offense count: 4
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: EnforcedStyle.
|
||||
# SupportedStyles: empty_lines, no_empty_lines
|
||||
Layout/EmptyLinesAroundBlockBody:
|
||||
Exclude:
|
||||
- 'spec/models/spree/payment_spec.rb'
|
||||
- 'spec/models/spree/zone_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: 8
|
||||
# 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/lib/open_food_network/packing_report_spec.rb'
|
||||
- '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: 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: 3
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: EnforcedStyle.
|
||||
# SupportedStyles: final_newline, final_blank_line
|
||||
Layout/TrailingEmptyLines:
|
||||
Exclude:
|
||||
- 'spec/factories.rb'
|
||||
- 'spec/factories/address_factory.rb'
|
||||
- 'spec/support/request/stripe_helper.rb'
|
||||
|
||||
# Offense count: 6
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: AllowInHeredoc.
|
||||
Layout/TrailingWhitespace:
|
||||
Exclude:
|
||||
- 'spec/features/consumer/shopping/shopping_spec.rb'
|
||||
- 'spec/lib/open_food_network/orders_and_fulfillments_report/customer_totals_report_spec.rb'
|
||||
- 'spec/requests/api/orders_spec.rb'
|
||||
|
||||
# Offense count: 2
|
||||
Lint/DuplicateMethods:
|
||||
Exclude:
|
||||
@@ -152,20 +19,6 @@ Lint/IneffectiveAccessModifier:
|
||||
- 'app/services/mail_configuration.rb'
|
||||
- 'lib/open_food_network/feature_toggle.rb'
|
||||
|
||||
# Offense count: 1
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
|
||||
Lint/UnusedBlockArgument:
|
||||
Exclude:
|
||||
- 'spec/factories/stock_location_factory.rb'
|
||||
|
||||
# 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:
|
||||
@@ -174,19 +27,20 @@ Lint/UselessAccessModifier:
|
||||
- 'app/services/mail_configuration.rb'
|
||||
- 'lib/open_food_network/feature_toggle.rb'
|
||||
|
||||
# Offense count: 1
|
||||
# Offense count: 2
|
||||
Lint/UselessAssignment:
|
||||
Exclude:
|
||||
- 'spec/**/*'
|
||||
- 'lib/spree/core/controller_helpers/common.rb'
|
||||
- 'app/models/spree/taxon.rb'
|
||||
- 'lib/spree/core/controller_helpers/common.rb'
|
||||
|
||||
# Offense count: 9
|
||||
# Offense count: 10
|
||||
Naming/AccessorMethodName:
|
||||
Exclude:
|
||||
- 'app/controllers/spree/admin/taxonomies_controller.rb'
|
||||
- 'app/models/spree/adjustment.rb'
|
||||
- 'app/models/spree/order_decorator.rb'
|
||||
- 'app/models/spree/order.rb'
|
||||
- 'app/services/checkout/post_checkout_actions.rb'
|
||||
- 'lib/spree/core/controller_helpers/common.rb'
|
||||
- 'spec/support/request/shop_workflow.rb'
|
||||
- 'spec/support/request/web_helper.rb'
|
||||
@@ -206,7 +60,7 @@ Naming/MemoizedInstanceVariableName:
|
||||
- 'app/mailers/producer_mailer.rb'
|
||||
- 'lib/open_food_network/address_finder.rb'
|
||||
|
||||
# Offense count: 20
|
||||
# Offense count: 24
|
||||
# Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros.
|
||||
# NamePrefix: is_, has_, have_
|
||||
# ForbiddenPrefixes: is_, has_, have_
|
||||
@@ -220,10 +74,11 @@ Naming/PredicateName:
|
||||
- 'app/models/order_cycle.rb'
|
||||
- 'app/models/spree/adjustment.rb'
|
||||
- 'app/models/spree/credit_card.rb'
|
||||
- 'app/models/spree/line_item_decorator.rb'
|
||||
- 'app/models/spree/order_decorator.rb'
|
||||
- 'app/models/spree/line_item.rb'
|
||||
- 'app/models/spree/order.rb'
|
||||
- 'app/models/spree/payment_method.rb'
|
||||
- 'app/models/spree/preferences/file_configuration.rb'
|
||||
- 'app/models/spree/preferences/preferable.rb'
|
||||
- 'app/models/spree/shipping_method.rb'
|
||||
- 'app/models/spree/user.rb'
|
||||
- 'lib/open_food_network/customers_report.rb'
|
||||
@@ -262,21 +117,14 @@ Rails/Date:
|
||||
- 'app/models/order_cycle.rb'
|
||||
- 'app/models/spree/credit_card.rb'
|
||||
|
||||
# Offense count: 1
|
||||
# Offense count: 2
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: EnforceForPrefixed.
|
||||
Rails/Delegate:
|
||||
Exclude:
|
||||
- 'app/models/spree/line_item.rb'
|
||||
- 'engines/order_management/app/services/order_management/reports/bulk_coop/renderers/html_renderer.rb'
|
||||
|
||||
# Offense count: 1
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: Whitelist.
|
||||
# Whitelist: find_by_sql
|
||||
Rails/DynamicFindBy:
|
||||
Exclude:
|
||||
- 'spec/factories/state_factory.rb'
|
||||
|
||||
# Offense count: 16
|
||||
# Configuration parameters: EnforcedStyle.
|
||||
# SupportedStyles: slashes, arguments
|
||||
@@ -307,13 +155,12 @@ Rails/FindBy:
|
||||
- 'app/models/product_import/spreadsheet_data.rb'
|
||||
- 'app/models/spree/user.rb'
|
||||
|
||||
# Offense count: 2
|
||||
# Offense count: 1
|
||||
# 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: 9
|
||||
@@ -324,13 +171,13 @@ Rails/HasAndBelongsToMany:
|
||||
- 'app/models/concerns/payment_method_distributors.rb'
|
||||
- 'app/models/enterprise.rb'
|
||||
- 'app/models/enterprise_group.rb'
|
||||
- 'app/models/spree/line_item_decorator.rb'
|
||||
- 'app/models/spree/line_item.rb'
|
||||
- 'app/models/spree/role.rb'
|
||||
- 'app/models/spree/shipping_method.rb'
|
||||
- 'app/models/spree/user.rb'
|
||||
- 'app/models/spree/zone.rb'
|
||||
|
||||
# Offense count: 35
|
||||
# Offense count: 38
|
||||
# Configuration parameters: Include.
|
||||
# Include: app/models/**/*.rb
|
||||
Rails/HasManyOrHasOneDependent:
|
||||
@@ -341,9 +188,10 @@ Rails/HasManyOrHasOneDependent:
|
||||
- 'app/models/spree/address.rb'
|
||||
- 'app/models/spree/adjustment.rb'
|
||||
- 'app/models/spree/credit_card.rb'
|
||||
- 'app/models/spree/order_decorator.rb'
|
||||
- 'app/models/spree/order.rb'
|
||||
- 'app/models/spree/payment_method.rb'
|
||||
- 'app/models/spree/property.rb'
|
||||
- 'app/models/spree/return_authorization.rb'
|
||||
- 'app/models/spree/shipment.rb'
|
||||
- 'app/models/spree/shipping_category.rb'
|
||||
- 'app/models/spree/shipping_method.rb'
|
||||
@@ -392,7 +240,7 @@ Rails/LexicallyScopedActionFilter:
|
||||
- 'app/controllers/spree/users_controller.rb'
|
||||
- 'app/controllers/user_passwords_controller.rb'
|
||||
|
||||
# Offense count: 13
|
||||
# Offense count: 14
|
||||
Rails/OutputSafety:
|
||||
Exclude:
|
||||
- 'app/controllers/spree/admin/reports_controller.rb'
|
||||
@@ -415,15 +263,16 @@ Rails/RakeEnvironment:
|
||||
- 'lib/capistrano/tasks/**/*.rake'
|
||||
- 'lib/tasks/specs.rake'
|
||||
|
||||
# Offense count: 9
|
||||
# Offense count: 11
|
||||
Rails/ReflectionClassName:
|
||||
Exclude:
|
||||
- 'app/models/customer.rb'
|
||||
- 'app/models/distributor_shipping_method.rb'
|
||||
- 'app/models/enterprise_role.rb'
|
||||
- 'app/models/spree/order.rb'
|
||||
- 'app/models/subscription.rb'
|
||||
|
||||
# Offense count: 243
|
||||
# Offense count: 247
|
||||
# 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:
|
||||
@@ -442,7 +291,8 @@ Rails/SkipsModelValidations:
|
||||
- 'app/models/spree/address.rb'
|
||||
- 'app/models/spree/adjustment.rb'
|
||||
- 'app/models/spree/credit_card.rb'
|
||||
- 'app/models/spree/order_decorator.rb'
|
||||
- 'app/models/spree/inventory_unit.rb'
|
||||
- 'app/models/spree/order.rb'
|
||||
- 'app/models/spree/payment.rb'
|
||||
- 'app/models/spree/shipment.rb'
|
||||
- 'app/models/spree/shipping_method.rb'
|
||||
@@ -480,7 +330,6 @@ Rails/SkipsModelValidations:
|
||||
- 'spec/features/admin/order_cycles/complex_editing_spec.rb'
|
||||
- 'spec/features/admin/order_cycles/simple_spec.rb'
|
||||
- 'spec/features/admin/order_spec.rb'
|
||||
- 'spec/features/admin/payments_spec.rb'
|
||||
- 'spec/features/admin/reports_spec.rb'
|
||||
- 'spec/features/consumer/caching/shops_caching_spec.rb'
|
||||
- 'spec/features/consumer/shopping/checkout_spec.rb'
|
||||
@@ -501,6 +350,7 @@ Rails/SkipsModelValidations:
|
||||
- 'spec/models/spree/adjustment_spec.rb'
|
||||
- 'spec/models/spree/asset_spec.rb'
|
||||
- 'spec/models/spree/line_item_spec.rb'
|
||||
- 'spec/models/spree/order_inventory_spec.rb'
|
||||
- 'spec/models/spree/order_spec.rb'
|
||||
- 'spec/models/spree/tax_category_spec.rb'
|
||||
- 'spec/models/spree/variant_spec.rb'
|
||||
@@ -533,7 +383,7 @@ Rails/UniqueValidationWithoutIndex:
|
||||
# Environments: development, test, production
|
||||
Rails/UnknownEnv:
|
||||
Exclude:
|
||||
- 'app/models/spree/app_configuration_decorator.rb'
|
||||
- 'app/models/spree/app_configuration.rb'
|
||||
- 'lib/spree/core/controller_helpers/ssl.rb'
|
||||
|
||||
# Offense count: 2
|
||||
@@ -542,7 +392,7 @@ Style/CaseEquality:
|
||||
- 'app/helpers/angular_form_helper.rb'
|
||||
- 'spec/models/spree/payment_spec.rb'
|
||||
|
||||
# Offense count: 64
|
||||
# Offense count: 29
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: AutoCorrect, EnforcedStyle.
|
||||
# SupportedStyles: nested, compact
|
||||
@@ -556,6 +406,7 @@ Style/ClassAndModuleChildren:
|
||||
- 'app/models/tag_rule/filter_order_cycles.rb'
|
||||
- 'app/models/tag_rule/filter_payment_methods.rb'
|
||||
- 'app/models/tag_rule/filter_shipping_methods.rb'
|
||||
- 'app/serializers/api/address_serializer.rb'
|
||||
- 'app/serializers/api/country_serializer.rb'
|
||||
- 'app/serializers/api/currency_config_serializer.rb'
|
||||
- 'app/serializers/api/current_order_serializer.rb'
|
||||
@@ -589,7 +440,7 @@ Style/FormatStringToken:
|
||||
- 'lib/open_food_network/sales_tax_report.rb'
|
||||
- 'spec/features/admin/bulk_order_management_spec.rb'
|
||||
|
||||
# Offense count: 818
|
||||
# Offense count: 765
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: EnforcedStyle.
|
||||
# SupportedStyles: always, always_true, never
|
||||
@@ -781,13 +632,10 @@ Style/FrozenStringLiteralComment:
|
||||
- 'app/models/product_import/unit_converter.rb'
|
||||
- 'app/models/proxy_order.rb'
|
||||
- 'app/models/schedule.rb'
|
||||
- 'app/models/spree/app_configuration_decorator.rb'
|
||||
- 'app/models/spree/gateway/migs.rb'
|
||||
- 'app/models/spree/gateway/pin.rb'
|
||||
- 'app/models/spree/gateway/stripe_connect.rb'
|
||||
- 'app/models/spree/line_item_decorator.rb'
|
||||
- 'app/models/spree/option_type_decorator.rb'
|
||||
- 'app/models/spree/order_decorator.rb'
|
||||
- 'app/models/spree/preferences/file_configuration.rb'
|
||||
- 'app/models/spree/price_decorator.rb'
|
||||
- 'app/models/spree/product_decorator.rb'
|
||||
@@ -976,7 +824,6 @@ Style/FrozenStringLiteralComment:
|
||||
- 'lib/spree/authentication_helpers.rb'
|
||||
- 'lib/spree/localized_number.rb'
|
||||
- 'lib/spree/money_decorator.rb'
|
||||
- 'lib/spree/product_filters.rb'
|
||||
- 'lib/stripe/account_connector.rb'
|
||||
- 'lib/stripe/profile_storer.rb'
|
||||
- 'lib/stripe/webhook_handler.rb'
|
||||
@@ -1044,6 +891,7 @@ Style/FrozenStringLiteralComment:
|
||||
- 'spec/controllers/shops_controller_spec.rb'
|
||||
- 'spec/controllers/spree/admin/adjustments_controller_spec.rb'
|
||||
- 'spec/controllers/spree/admin/base_controller_spec.rb'
|
||||
- 'spec/controllers/spree/admin/general_settings_controller_spec.rb'
|
||||
- 'spec/controllers/spree/admin/invoices_controller_spec.rb'
|
||||
- 'spec/controllers/spree/admin/mail_methods_controller_spec.rb'
|
||||
- 'spec/controllers/spree/admin/orders/customer_details_controller_spec.rb'
|
||||
@@ -1197,7 +1045,6 @@ Style/FrozenStringLiteralComment:
|
||||
- 'spec/lib/open_food_network/users_and_enterprises_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/xero_invoices_report_spec.rb'
|
||||
- 'spec/lib/spree/localized_number_spec.rb'
|
||||
- 'spec/lib/spree/product_filters_spec.rb'
|
||||
- 'spec/lib/stripe/account_connector_spec.rb'
|
||||
- 'spec/lib/stripe/webhook_handler_spec.rb'
|
||||
- 'spec/lib/tasks/enterprises_rake_spec.rb'
|
||||
@@ -1241,7 +1088,6 @@ Style/FrozenStringLiteralComment:
|
||||
- 'spec/models/spree/classification_spec.rb'
|
||||
- 'spec/models/spree/credit_card_spec.rb'
|
||||
- 'spec/models/spree/gateway/stripe_connect_spec.rb'
|
||||
- 'spec/models/spree/image_spec.rb'
|
||||
- 'spec/models/spree/line_item_spec.rb'
|
||||
- 'spec/models/spree/order/checkout_spec.rb'
|
||||
- 'spec/models/spree/order_spec.rb'
|
||||
@@ -1348,7 +1194,6 @@ Style/FrozenStringLiteralComment:
|
||||
- 'spec/support/products_helper.rb'
|
||||
- 'spec/support/request/admin_helper.rb'
|
||||
- 'spec/support/request/authentication_helper.rb'
|
||||
- 'spec/support/request/checkout_helper.rb'
|
||||
- 'spec/support/request/cookie_helper.rb'
|
||||
- 'spec/support/request/distribution_helper.rb'
|
||||
- 'spec/support/request/menu_helper.rb'
|
||||
@@ -1367,7 +1212,7 @@ Style/FrozenStringLiteralComment:
|
||||
- 'spec/views/spree/admin/payment_methods/index.html.haml_spec.rb'
|
||||
- 'spec/views/spree/admin/shared/_order_links.html.haml_spec.rb'
|
||||
|
||||
# Offense count: 48
|
||||
# Offense count: 44
|
||||
# Configuration parameters: MinBodyLength.
|
||||
Style/GuardClause:
|
||||
Exclude:
|
||||
@@ -1383,7 +1228,7 @@ Style/GuardClause:
|
||||
- 'app/models/enterprise.rb'
|
||||
- 'app/models/enterprise_group.rb'
|
||||
- 'app/models/producer_property.rb'
|
||||
- 'app/models/spree/order_decorator.rb'
|
||||
- 'app/models/spree/preferences/preferable_class_methods.rb'
|
||||
- 'app/models/spree/price_decorator.rb'
|
||||
- 'app/models/spree/product_decorator.rb'
|
||||
- 'app/services/order_syncer.rb'
|
||||
@@ -1392,25 +1237,15 @@ Style/GuardClause:
|
||||
- 'lib/open_food_network/order_cycle_form_applicator.rb'
|
||||
- 'lib/open_food_network/rack_request_blocker.rb'
|
||||
- 'spec/support/delayed_job_helper.rb'
|
||||
- 'spec/support/request/checkout_helper.rb'
|
||||
- 'spec/support/request/distribution_helper.rb'
|
||||
- 'spec/support/request/shop_workflow.rb'
|
||||
|
||||
# Offense count: 66
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
|
||||
# SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
|
||||
Style/HashSyntax:
|
||||
Exclude:
|
||||
- 'spec/factories/stock_location_factory.rb'
|
||||
- 'spec/models/spree/credit_card_spec.rb'
|
||||
- 'spec/models/spree/payment_spec.rb'
|
||||
|
||||
# Offense count: 2
|
||||
# Offense count: 3
|
||||
Style/MissingRespondToMissing:
|
||||
Exclude:
|
||||
- 'app/helpers/application_helper.rb'
|
||||
- 'app/models/spree/gateway.rb'
|
||||
- 'app/models/spree/preferences/configuration.rb'
|
||||
|
||||
# Offense count: 2
|
||||
Style/MixinUsage:
|
||||
@@ -1418,7 +1253,7 @@ Style/MixinUsage:
|
||||
- 'lib/open_food_network/orders_and_fulfillments_report.rb'
|
||||
- 'spec/lib/open_food_network/packing_report_spec.rb'
|
||||
|
||||
# Offense count: 36
|
||||
# Offense count: 43
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: AutoCorrect, EnforcedStyle, IgnoredMethods.
|
||||
# SupportedStyles: predicate, comparison
|
||||
@@ -1432,8 +1267,11 @@ Style/NumericPredicate:
|
||||
- 'app/models/product_import/product_importer.rb'
|
||||
- 'app/models/product_import/spreadsheet_entry.rb'
|
||||
- 'app/models/spree/gateway/stripe_connect.rb'
|
||||
- 'app/models/spree/line_item_decorator.rb'
|
||||
- 'app/models/spree/order_decorator.rb'
|
||||
- 'app/models/spree/line_item.rb'
|
||||
- 'app/models/spree/order.rb'
|
||||
- 'app/models/spree/order_contents.rb'
|
||||
- 'app/models/spree/order_inventory.rb'
|
||||
- 'app/models/spree/preferences/preferable.rb'
|
||||
- 'app/models/spree/user.rb'
|
||||
- 'app/models/variant_override.rb'
|
||||
- 'app/services/cart_service.rb'
|
||||
@@ -1446,37 +1284,7 @@ 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.
|
||||
Style/RandomWithOffset:
|
||||
Exclude:
|
||||
- 'spec/factories.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: 1
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: EnforcedStyle.
|
||||
# SupportedStyles: implicit, explicit
|
||||
Style/RescueStandardError:
|
||||
Exclude:
|
||||
- 'lib/spree/core/delegate_belongs_to.rb'
|
||||
|
||||
# Offense count: 231
|
||||
# Offense count: 241
|
||||
Style/Send:
|
||||
Exclude:
|
||||
- 'spec/controllers/admin/subscriptions_controller_spec.rb'
|
||||
@@ -1501,8 +1309,10 @@ Style/Send:
|
||||
- 'spec/models/enterprise_spec.rb'
|
||||
- 'spec/models/exchange_spec.rb'
|
||||
- 'spec/models/spree/gateway/stripe_connect_spec.rb'
|
||||
- 'spec/models/spree/order_inventory_spec.rb'
|
||||
- 'spec/models/spree/order_spec.rb'
|
||||
- 'spec/models/spree/payment_spec.rb'
|
||||
- 'spec/models/spree/return_authorization_spec.rb'
|
||||
- 'spec/models/spree/tax_rate_spec.rb'
|
||||
- 'spec/models/tag_rule/discount_order_spec.rb'
|
||||
- 'spec/models/tag_rule/filter_order_cycles_spec.rb'
|
||||
@@ -1520,3 +1330,11 @@ Style/Send:
|
||||
Style/StructInheritance:
|
||||
Exclude:
|
||||
- 'lib/open_food_network/enterprise_fee_applicator.rb'
|
||||
|
||||
# Offense count: 2
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: IgnoredMethods.
|
||||
# IgnoredMethods: respond_to, define_method
|
||||
Style/SymbolProc:
|
||||
Exclude:
|
||||
- 'app/models/spree/preferences/preferable.rb'
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
scss_files: 'app/assets/stylesheets/**/*.css.scss'
|
||||
|
||||
exclude: 'app/assets/stylesheets/shared/**'
|
||||
|
||||
linters:
|
||||
ImportantRule:
|
||||
enabled: false
|
||||
VendorPrefix:
|
||||
enabled: false
|
||||
LeadingZero:
|
||||
enabled: false
|
||||
PropertySortOrder:
|
||||
enabled: false
|
||||
StringQuotes:
|
||||
enabled: false
|
||||
DeclarationOrder:
|
||||
enabled: false
|
||||
NestingDepth:
|
||||
enabled: false
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
FROM ubuntu:18.04
|
||||
FROM ubuntu:20.04
|
||||
|
||||
ENV TZ Europe/London
|
||||
|
||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
|
||||
RUN echo "deb http://security.ubuntu.com/ubuntu bionic-security main" >> /etc/apt/sources.list
|
||||
|
||||
# Install all the requirements
|
||||
RUN apt-get update && apt-get install -y curl git build-essential software-properties-common wget zlib1g-dev libssl1.0-dev libreadline-dev libyaml-dev libffi-dev libxml2-dev libxslt1-dev wait-for-it imagemagick unzip
|
||||
|
||||
22
Gemfile
22
Gemfile
@@ -18,18 +18,11 @@ gem 'web', path: './engines/web'
|
||||
gem 'activerecord-postgresql-adapter'
|
||||
gem 'pg', '~> 0.21.0'
|
||||
|
||||
# OFN-maintained and patched version of Spree v2.0.4. See
|
||||
# https://github.com/openfoodfoundation/openfoodnetwork/wiki/Tech-Doc:-OFN's-Spree-fork%F0%9F%8D%B4
|
||||
# for details.
|
||||
gem 'spree_core', github: 'openfoodfoundation/spree', branch: '2-1-0-stable'
|
||||
|
||||
### Dependencies brought from spree core
|
||||
gem 'acts_as_list', '= 0.2.0'
|
||||
gem 'awesome_nested_set', '~> 3.0.0.rc.1'
|
||||
gem 'acts_as_list', '= 0.3.0'
|
||||
gem 'awesome_nested_set', '~> 3.2.1'
|
||||
gem 'cancan', '~> 1.6.10'
|
||||
gem 'ffaker', '~> 1.16'
|
||||
gem 'highline', '= 1.6.18' # Necessary for the install generator
|
||||
gem 'httparty', '~> 0.18' # Used to check alerts in spree_core, this is not used in OFN.
|
||||
gem 'highline', '2.0.3' # Necessary for the install generator
|
||||
gem 'json', '>= 1.7.7'
|
||||
gem 'money', '5.1.1'
|
||||
gem 'paranoia', '~> 2.0'
|
||||
@@ -37,7 +30,7 @@ gem 'ransack', '~> 1.8.10'
|
||||
gem 'state_machine', '1.2.0'
|
||||
gem 'stringex', '~> 1.5.1'
|
||||
|
||||
gem 'spree_i18n', github: 'spree/spree_i18n', branch: '1-3-stable'
|
||||
gem 'spree_i18n', github: 'openfoodfoundation/spree_i18n', branch: '1-3-stable'
|
||||
|
||||
# Our branch contains the following changes:
|
||||
# - Pass customer email and phone number to PayPal (merged to upstream master)
|
||||
@@ -61,20 +54,17 @@ gem 'daemons'
|
||||
gem 'delayed_job_active_record'
|
||||
gem 'delayed_job_web'
|
||||
|
||||
# Spree's default pagination gem (locked to the current version used by Spree)
|
||||
# We use it's methods in OFN code as well, so this is a direct dependency
|
||||
gem 'kaminari', '~> 0.14.1'
|
||||
gem 'kaminari', '~> 0.17.0'
|
||||
|
||||
gem 'andand'
|
||||
gem 'angularjs-rails', '1.5.5'
|
||||
gem 'aws-sdk', '1.11.1' # temporarily locked down due to https://github.com/aws/aws-sdk-ruby/issues/273
|
||||
gem 'aws-sdk', '1.67.0'
|
||||
gem 'bugsnag'
|
||||
gem 'db2fog'
|
||||
gem 'haml'
|
||||
gem 'redcarpet'
|
||||
gem 'sass'
|
||||
gem 'sass-rails'
|
||||
gem 'truncate_html', '0.9.2'
|
||||
gem 'unicorn'
|
||||
|
||||
gem 'actionpack-action_caching'
|
||||
|
||||
70
Gemfile.lock
70
Gemfile.lock
@@ -6,12 +6,11 @@ GIT
|
||||
|
||||
GIT
|
||||
remote: https://github.com/openfoodfoundation/better_spree_paypal_express.git
|
||||
revision: 1736e3268239a841576d2719a1f276cf9b74c5c5
|
||||
revision: 1a477e9f7763297944cc99b6f4dd3d962aa963e9
|
||||
branch: 2-1-0-stable
|
||||
specs:
|
||||
spree_paypal_express (2.0.3)
|
||||
paypal-sdk-merchant (= 1.106.1)
|
||||
spree_core (~> 2.1.0)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/openfoodfoundation/ofn-qz.git
|
||||
@@ -21,39 +20,13 @@ GIT
|
||||
ofn-qz (0.1.0)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/openfoodfoundation/spree.git
|
||||
revision: cbb24a6ed701166ffaf2ab60a402154100d74766
|
||||
branch: 2-1-0-stable
|
||||
specs:
|
||||
spree_core (2.1.0)
|
||||
activemerchant (= 1.78.0)
|
||||
acts_as_list (= 0.2.0)
|
||||
awesome_nested_set (~> 3.0.0.rc.1)
|
||||
aws-sdk (= 1.11.1)
|
||||
cancan (~> 1.6.10)
|
||||
ffaker (~> 1.16)
|
||||
highline (= 1.6.18)
|
||||
httparty (~> 0.11)
|
||||
json (>= 1.7.7)
|
||||
kaminari (~> 0.14.1)
|
||||
money (= 5.1.1)
|
||||
paperclip (~> 3.4.1)
|
||||
paranoia (~> 2.0)
|
||||
rails (~> 4.0)
|
||||
ransack (~> 1.0)
|
||||
state_machine (= 1.2.0)
|
||||
stringex (~> 1.5.1)
|
||||
truncate_html (= 0.9.2)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/spree/spree_i18n.git
|
||||
revision: 752eb67204e9c5a4e22b62591a8fd55fe2285e43
|
||||
remote: https://github.com/openfoodfoundation/spree_i18n.git
|
||||
revision: 12f18312232f0ce70270d47859d2951d12f7791c
|
||||
branch: 1-3-stable
|
||||
specs:
|
||||
spree_i18n (1.0.0)
|
||||
i18n (~> 0.5)
|
||||
rails-i18n
|
||||
spree_core (>= 1.1)
|
||||
|
||||
PATH
|
||||
remote: engines/catalog
|
||||
@@ -127,7 +100,7 @@ GEM
|
||||
tzinfo (~> 0.3.37)
|
||||
acts-as-taggable-on (4.0.0)
|
||||
activerecord (>= 4.0)
|
||||
acts_as_list (0.2.0)
|
||||
acts_as_list (0.3.0)
|
||||
activerecord (>= 3.0)
|
||||
addressable (2.7.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
@@ -141,13 +114,14 @@ GEM
|
||||
arel (4.0.2)
|
||||
ast (2.4.0)
|
||||
atomic (1.1.101)
|
||||
awesome_nested_set (3.0.3)
|
||||
activerecord (>= 4.0.0, < 5)
|
||||
awesome_nested_set (3.2.1)
|
||||
activerecord (>= 4.0.0, < 7.0)
|
||||
awesome_print (1.8.0)
|
||||
aws-sdk (1.11.1)
|
||||
aws-sdk (1.67.0)
|
||||
aws-sdk-v1 (= 1.67.0)
|
||||
aws-sdk-v1 (1.67.0)
|
||||
json (~> 1.4)
|
||||
nokogiri (>= 1.4.4)
|
||||
uuidtools (~> 2.1)
|
||||
nokogiri (~> 1)
|
||||
bcrypt (3.1.13)
|
||||
bugsnag (6.18.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
@@ -415,11 +389,8 @@ GEM
|
||||
temple (>= 0.8.0)
|
||||
tilt
|
||||
hashdiff (1.0.1)
|
||||
highline (1.6.18)
|
||||
highline (2.0.3)
|
||||
hike (1.2.3)
|
||||
httparty (0.18.1)
|
||||
mime-types (~> 3.0)
|
||||
multi_xml (>= 0.5.2)
|
||||
i18n (0.6.11)
|
||||
i18n-js (3.8.0)
|
||||
i18n (>= 0.6.6)
|
||||
@@ -440,7 +411,7 @@ GEM
|
||||
multi_json (~> 1.0)
|
||||
rspec (>= 2.0, < 4.0)
|
||||
jwt (2.2.2)
|
||||
kaminari (0.14.1)
|
||||
kaminari (0.17.0)
|
||||
actionpack (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
kgio (2.11.3)
|
||||
@@ -664,7 +635,6 @@ GEM
|
||||
thread_safe (0.3.6)
|
||||
tilt (1.4.1)
|
||||
timecop (0.9.2)
|
||||
truncate_html (0.9.2)
|
||||
tzinfo (0.3.57)
|
||||
uglifier (4.2.0)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
@@ -678,14 +648,13 @@ GEM
|
||||
unicorn-worker-killer (0.4.4)
|
||||
get_process_mem (~> 0)
|
||||
unicorn (>= 4, < 6)
|
||||
uuidtools (2.1.5)
|
||||
warden (1.2.7)
|
||||
rack (>= 1.0)
|
||||
webdrivers (4.2.0)
|
||||
nokogiri (~> 1.6)
|
||||
rubyzip (>= 1.3.0)
|
||||
selenium-webdriver (>= 3.0, < 4.0)
|
||||
webmock (3.9.3)
|
||||
webmock (3.9.5)
|
||||
addressable (>= 2.3.6)
|
||||
crack (>= 0.3.2)
|
||||
hashdiff (>= 0.4.0, < 2.0.0)
|
||||
@@ -710,15 +679,15 @@ DEPENDENCIES
|
||||
activerecord-postgresql-adapter
|
||||
activerecord-session_store
|
||||
acts-as-taggable-on (~> 4.0)
|
||||
acts_as_list (= 0.2.0)
|
||||
acts_as_list (= 0.3.0)
|
||||
andand
|
||||
angular-rails-templates (~> 0.3.0)
|
||||
angularjs-file-upload-rails (~> 2.4.1)
|
||||
angularjs-rails (= 1.5.5)
|
||||
atomic
|
||||
awesome_nested_set (~> 3.0.0.rc.1)
|
||||
awesome_nested_set (~> 3.2.1)
|
||||
awesome_print
|
||||
aws-sdk (= 1.11.1)
|
||||
aws-sdk (= 1.67.0)
|
||||
bugsnag
|
||||
byebug (~> 11.0.0)
|
||||
cancan (~> 1.6.10)
|
||||
@@ -751,8 +720,7 @@ DEPENDENCIES
|
||||
geocoder
|
||||
gmaps4rails
|
||||
haml
|
||||
highline (= 1.6.18)
|
||||
httparty (~> 0.18)
|
||||
highline (= 2.0.3)
|
||||
i18n (~> 0.6.11)
|
||||
i18n-js (~> 3.8.0)
|
||||
immigrant
|
||||
@@ -762,7 +730,7 @@ DEPENDENCIES
|
||||
json (>= 1.7.7)
|
||||
json_spec (~> 1.1.4)
|
||||
jwt (~> 2.2)
|
||||
kaminari (~> 0.14.1)
|
||||
kaminari (~> 0.17.0)
|
||||
knapsack
|
||||
letter_opener (>= 1.4.1)
|
||||
mini_racer (= 0.2.15)
|
||||
@@ -799,7 +767,6 @@ DEPENDENCIES
|
||||
selenium-webdriver
|
||||
shoulda-matchers
|
||||
simplecov
|
||||
spree_core!
|
||||
spree_i18n!
|
||||
spree_paypal_express!
|
||||
spring
|
||||
@@ -810,7 +777,6 @@ DEPENDENCIES
|
||||
test-prof
|
||||
test-unit (~> 3.3)
|
||||
timecop
|
||||
truncate_html (= 0.9.2)
|
||||
uglifier (>= 1.0.3)
|
||||
unicorn
|
||||
unicorn-rails
|
||||
|
||||
@@ -16,7 +16,7 @@ We're part of global movement - get involved!
|
||||
|
||||
## Contributing
|
||||
|
||||
If you are interested in contributing to the OFN in any capacity, please introduce yourself [on Slack][slack-invite], and have a look through our [Contributor Guide][contributor-guide].
|
||||
If you are interested in contributing to the OFN in any capacity, please introduce yourself [on Slack][slack-invite], and have a look through the [OFN Handbook][ofn-handbook].
|
||||
|
||||
Our [GETTING_STARTED](GETTING_STARTED.md) and [CONTRIBUTING](CONTRIBUTING.md) guides are the best place to start for developers looking to set up a development environment and make contributions to the codebase.
|
||||
|
||||
@@ -33,7 +33,9 @@ We also have a [Super Admin Guide][super-admin-guide] to help with configuration
|
||||
|
||||
## Testing
|
||||
|
||||
We use [BrowserStack](https://www.browserstack.com/) as a manual testing tool. BrowserStack provides open source projects with unlimited and free of charge accounts. A big thanks to them!
|
||||
If you'd like to help out with testing, please introduce yourself on the #testing channel on [Slack][slack-invite] and download the [ZenHub browser extension][zenhub] to view the development pipeline.
|
||||
|
||||
We use [BrowserStack](https://www.browserstack.com/) as a manual testing tool. BrowserStack provides open source projects with unlimited and free of charge accounts. A big thanks to them!
|
||||
|
||||
## Licence
|
||||
|
||||
@@ -41,7 +43,8 @@ Copyright (c) 2012 - 2020 Open Food Foundation, released under the AGPL licence.
|
||||
|
||||
[survey]: https://docs.google.com/a/eaterprises.com.au/forms/d/1zxR5vSiU9CigJ9cEaC8-eJLgYid8CR8er7PPH9Mc-30/edit#
|
||||
[slack-invite]: https://join.slack.com/t/openfoodnetwork/shared_invite/zt-9sjkjdlu-r02kUMP1zbrTgUhZhYPF~A
|
||||
[contributor-guide]: https://ofn-user-guide.gitbook.io/ofn-contributor-guide/who-are-we
|
||||
[ofn-handbook]: https://ofn-user-guide.gitbook.io/ofn-handbook/
|
||||
[ofn-install]: https://github.com/openfoodfoundation/ofn-install
|
||||
[super-admin-guide]: https://ofn-user-guide.gitbook.io/ofn-super-admin-guide
|
||||
[welcome-dev]: https://github.com/openfoodfoundation/openfoodnetwork/projects/27
|
||||
[zenhub]: https://www.zenhub.com/extension
|
||||
|
||||
BIN
app/assets/images/logo/spree_50.png
Normal file
BIN
app/assets/images/logo/spree_50.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
@@ -34,7 +34,7 @@
|
||||
//= require css_browser_selector_dev
|
||||
//= require responsive-tables
|
||||
//= require admin/spree_paypal_express
|
||||
//= require handlebars
|
||||
//= require admin/spree/handlebar_extensions
|
||||
|
||||
// OFN specific
|
||||
//= require_tree ../templates/admin
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
//= require_self
|
||||
//= require admin/handlebar_extensions
|
||||
//= require admin/spree/orders/variant_autocomplete
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
//= require handlebars
|
||||
|
||||
Handlebars.registerHelper("t", function(key) {
|
||||
if (Spree.translations[key]) {
|
||||
return Spree.translations[key]
|
||||
} else {
|
||||
console.error("No translation found for " + key + ". Does it exist within spree/admin/shared/_translations.html.erb?")
|
||||
}
|
||||
});
|
||||
@@ -121,3 +121,10 @@ form#image_upload {
|
||||
}
|
||||
}
|
||||
|
||||
form.edit_image {
|
||||
.field {
|
||||
img {
|
||||
max-width: 150px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ $large-menu-height: 4.6875rem;
|
||||
$medium-menu-height: 3rem;
|
||||
$gutter-width: 0.9375rem;
|
||||
|
||||
nav.top-bar ul.left li.powered-by {
|
||||
.top-bar .powered-by {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,13 @@ nav.top-bar {
|
||||
|
||||
.top-bar-section {
|
||||
border-bottom: 1px solid $light-grey-transparency;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.nav-main-menu,
|
||||
.nav-icons-menu {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
a.icon {
|
||||
&:hover {
|
||||
@@ -99,21 +106,14 @@ nav.top-bar {
|
||||
}
|
||||
}
|
||||
|
||||
ul.center {
|
||||
display: inline-block;
|
||||
|
||||
// By default, we center between the left and right uls, but we want to be centered
|
||||
// relative to the whole page. The difference in width between the other uls is 74px,
|
||||
// so we offset by that amount here.
|
||||
margin-left: -74px;
|
||||
}
|
||||
|
||||
ul.dropdown {
|
||||
border: 1px solid $smoke;
|
||||
border-top: none;
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
ul.right {
|
||||
.nav-icons-menu {
|
||||
> li {
|
||||
border-left: 1px solid #ddd;
|
||||
padding: 0 14px;
|
||||
@@ -244,9 +244,7 @@ nav.top-bar {
|
||||
|
||||
.top-bar .ofn-logo img {
|
||||
height: auto;
|
||||
width: auto;
|
||||
max-height: 44px;
|
||||
max-width: 250px;
|
||||
}
|
||||
|
||||
.left-off-canvas-menu {
|
||||
@@ -289,10 +287,6 @@ nav.top-bar {
|
||||
.has-dropdown > a {
|
||||
padding: 0 ($topbar-height / 8) !important;
|
||||
}
|
||||
|
||||
ul.center {
|
||||
margin-left: -24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ module Admin
|
||||
end
|
||||
|
||||
def bulk_update
|
||||
@enterprise_fee_set = EnterpriseFeeSet.new(params[:enterprise_fee_set])
|
||||
@enterprise_fee_set = EnterpriseFeeSet.new(enterprise_fee_bulk_params)
|
||||
|
||||
if @enterprise_fee_set.save
|
||||
redirect_to redirect_path, notice: I18n.t(:enterprise_fees_update_notice)
|
||||
@@ -78,5 +78,15 @@ module Admin
|
||||
|
||||
main_app.admin_enterprise_fees_path
|
||||
end
|
||||
|
||||
def enterprise_fee_bulk_params
|
||||
params.require(:enterprise_fee_set).permit(
|
||||
collection_attributes: [
|
||||
:id, :enterprise_id, :fee_type, :name, :tax_category_id,
|
||||
:inherits_tax_category, :calculator_type,
|
||||
{ calculator_attributes: PermittedAttributes::Calculator.attributes }
|
||||
]
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -223,7 +223,7 @@ module Admin
|
||||
end
|
||||
|
||||
def order_cycle_set
|
||||
@order_cycle_set ||= OrderCycleSet.new(@order_cycles, params[:order_cycle_set])
|
||||
@order_cycle_set ||= OrderCycleSet.new(@order_cycles, order_cycle_bulk_params)
|
||||
end
|
||||
|
||||
def require_order_cycle_set_params
|
||||
@@ -240,5 +240,11 @@ module Admin
|
||||
def order_cycle_params
|
||||
PermittedAttributes::OrderCycle.new(params).call
|
||||
end
|
||||
|
||||
def order_cycle_bulk_params
|
||||
params.require(:order_cycle_set).permit(
|
||||
collection_attributes: [:id] + PermittedAttributes::OrderCycle.basic_attributes
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,6 +4,7 @@ require "spree/core/controller_helpers/ssl"
|
||||
|
||||
module Api
|
||||
class BaseController < ActionController::Metal
|
||||
include ActionController::StrongParameters
|
||||
include Spree::Api::ControllerSetup
|
||||
include Spree::Core::ControllerHelpers::SSL
|
||||
include ::ActionController::Head
|
||||
|
||||
@@ -11,11 +11,15 @@ module Api
|
||||
@customer = Customer.find(params[:id])
|
||||
authorize! :update, @customer
|
||||
|
||||
if @customer.update(params[:customer])
|
||||
if @customer.update(customer_params)
|
||||
render json: @customer, serializer: CustomerSerializer, status: :ok
|
||||
else
|
||||
invalid_resource!(@customer)
|
||||
end
|
||||
end
|
||||
|
||||
def customer_params
|
||||
params.require(:customer).permit(:code, :email, :enterprise_id, :allow_charges)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -12,7 +12,7 @@ module Api
|
||||
# params[:user_ids] breaks the enterprise creation
|
||||
# We remove them from params and save them after creating the enterprise
|
||||
user_ids = params[:enterprise].delete(:user_ids)
|
||||
@enterprise = Enterprise.new(params[:enterprise])
|
||||
@enterprise = Enterprise.new(enterprise_params)
|
||||
if @enterprise.save
|
||||
@enterprise.user_ids = user_ids
|
||||
render text: @enterprise.id, status: :created
|
||||
@@ -25,7 +25,7 @@ module Api
|
||||
@enterprise = Enterprise.find_by(permalink: params[:id]) || Enterprise.find(params[:id])
|
||||
authorize! :update, @enterprise
|
||||
|
||||
if @enterprise.update(params[:enterprise])
|
||||
if @enterprise.update(enterprise_params)
|
||||
render text: @enterprise.id, status: :ok
|
||||
else
|
||||
invalid_resource!(@enterprise)
|
||||
@@ -69,5 +69,9 @@ module Api
|
||||
def override_visible
|
||||
params[:enterprise][:visible] = false
|
||||
end
|
||||
|
||||
def enterprise_params
|
||||
PermittedAttributes::Enterprise.new(params).call
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
require 'open_food_network/permissions'
|
||||
require 'spree/core/product_duplicator'
|
||||
|
||||
module Api
|
||||
class ProductsController < Api::BaseController
|
||||
@@ -16,7 +17,7 @@ module Api
|
||||
def create
|
||||
authorize! :create, Spree::Product
|
||||
params[:product][:available_on] ||= Time.zone.now
|
||||
@product = Spree::Product.new(params[:product])
|
||||
@product = Spree::Product.new(product_params)
|
||||
begin
|
||||
if @product.save
|
||||
render json: @product, serializer: Api::Admin::ProductSerializer, status: :created
|
||||
@@ -32,7 +33,7 @@ module Api
|
||||
def update
|
||||
authorize! :update, Spree::Product
|
||||
@product = find_product(params[:id])
|
||||
if @product.update(params[:product])
|
||||
if @product.update(product_params)
|
||||
render json: @product, serializer: Api::Admin::ProductSerializer, status: :ok
|
||||
else
|
||||
invalid_resource!(@product)
|
||||
@@ -155,5 +156,9 @@ module Api
|
||||
per_page: (params[:per_page] || DEFAULT_PER_PAGE).to_i
|
||||
}
|
||||
end
|
||||
|
||||
def product_params
|
||||
params.require(:product).permit PermittedAttributes::Product.attributes
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -30,7 +30,7 @@ module Api
|
||||
@shipment.adjustment.open
|
||||
end
|
||||
|
||||
@shipment.update(params[:shipment])
|
||||
@shipment.update(shipment_params[:shipment])
|
||||
|
||||
if unlock == 'yes'
|
||||
@shipment.adjustment.close
|
||||
@@ -88,7 +88,7 @@ module Api
|
||||
|
||||
def find_and_update_shipment
|
||||
@shipment = @order.shipments.find_by!(number: params[:id])
|
||||
@shipment.update(params[:shipment])
|
||||
@shipment.update(shipment_params[:shipment]) if shipment_params[:shipment].present?
|
||||
@shipment.reload
|
||||
end
|
||||
|
||||
@@ -101,5 +101,12 @@ module Api
|
||||
def get_or_create_shipment(stock_location_id)
|
||||
@order.shipment || @order.shipments.create(stock_location_id: stock_location_id)
|
||||
end
|
||||
|
||||
def shipment_params
|
||||
params.permit(
|
||||
[:id, :order_id, :variant_id, :quantity,
|
||||
{ shipment: [:tracking, :selected_shipping_rate_id] }]
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -22,7 +22,7 @@ module Api
|
||||
|
||||
def create
|
||||
authorize! :create, Spree::Taxon
|
||||
@taxon = Spree::Taxon.new(params[:taxon])
|
||||
@taxon = Spree::Taxon.new(taxon_params)
|
||||
@taxon.taxonomy_id = params[:taxonomy_id]
|
||||
taxonomy = Spree::Taxonomy.find_by(id: params[:taxonomy_id])
|
||||
|
||||
@@ -42,7 +42,7 @@ module Api
|
||||
|
||||
def update
|
||||
authorize! :update, Spree::Taxon
|
||||
if taxon.update(params[:taxon])
|
||||
if taxon.update(taxon_params)
|
||||
render json: taxon, serializer: Api::TaxonSerializer, status: :ok
|
||||
else
|
||||
invalid_resource!(taxon)
|
||||
@@ -66,5 +66,11 @@ module Api
|
||||
def taxon
|
||||
@taxon ||= taxonomy.taxons.find(params[:id])
|
||||
end
|
||||
|
||||
def taxon_params
|
||||
return if params[:taxon].blank?
|
||||
|
||||
params.require(:taxon).permit([:name, :parent_id])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -17,7 +17,7 @@ module Api
|
||||
|
||||
def create
|
||||
authorize! :create, Spree::Variant
|
||||
@variant = scope.new(params[:variant])
|
||||
@variant = scope.new(variant_params)
|
||||
if @variant.save
|
||||
render json: @variant, serializer: Api::VariantSerializer, status: :created
|
||||
else
|
||||
@@ -28,7 +28,7 @@ module Api
|
||||
def update
|
||||
authorize! :update, Spree::Variant
|
||||
@variant = scope.find(params[:id])
|
||||
if @variant.update(params[:variant])
|
||||
if @variant.update(variant_params)
|
||||
render json: @variant, serializer: Api::VariantSerializer, status: :ok
|
||||
else
|
||||
invalid_resource!(@product)
|
||||
@@ -69,5 +69,9 @@ module Api
|
||||
end
|
||||
variants
|
||||
end
|
||||
|
||||
def variant_params
|
||||
params.require(:variant).permit(PermittedAttributes::Variant.attributes)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'open_food_network/address_finder'
|
||||
require 'spree/core/gateway_error'
|
||||
|
||||
class CheckoutController < Spree::StoreController
|
||||
layout 'darkswarm'
|
||||
|
||||
include OrderStockCheck
|
||||
include CheckoutHelper
|
||||
include OrderCyclesHelper
|
||||
include EnterprisesHelper
|
||||
@@ -25,7 +25,7 @@ class CheckoutController < Spree::StoreController
|
||||
|
||||
before_action :ensure_order_not_completed
|
||||
before_action :ensure_checkout_allowed
|
||||
before_action :ensure_sufficient_stock_lines
|
||||
before_action :handle_insufficient_stock
|
||||
|
||||
before_action :associate_user
|
||||
before_action :check_authorization
|
||||
@@ -78,13 +78,6 @@ class CheckoutController < Spree::StoreController
|
||||
redirect_to main_app.cart_path if @order.completed?
|
||||
end
|
||||
|
||||
def ensure_sufficient_stock_lines
|
||||
if @order.insufficient_stock_lines.present?
|
||||
flash[:error] = Spree.t(:inventory_error_flash_for_insufficient_quantity)
|
||||
redirect_to main_app.cart_path
|
||||
end
|
||||
end
|
||||
|
||||
def load_order
|
||||
@order = current_order
|
||||
|
||||
|
||||
18
app/controllers/concerns/order_stock_check.rb
Normal file
18
app/controllers/concerns/order_stock_check.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module OrderStockCheck
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
def handle_insufficient_stock
|
||||
return if sufficient_stock?
|
||||
|
||||
flash[:error] = Spree.t(:inventory_error_flash_for_insufficient_quantity)
|
||||
redirect_to main_app.cart_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def sufficient_stock?
|
||||
@sufficient_stock ||= @order.insufficient_stock_lines.blank?
|
||||
end
|
||||
end
|
||||
@@ -25,7 +25,7 @@ module Spree
|
||||
@object.attributes = permitted_resource_params
|
||||
if @object.save
|
||||
flash[:success] = flash_message_for(@object, :successfully_created)
|
||||
redirect_to admin_product_images_url(params[:product_id], @url_filters)
|
||||
redirect_to spree.admin_product_images_url(params[:product_id], @url_filters)
|
||||
else
|
||||
respond_with(@object)
|
||||
end
|
||||
@@ -41,7 +41,7 @@ module Spree
|
||||
|
||||
if @object.update(permitted_resource_params)
|
||||
flash[:success] = flash_message_for(@object, :successfully_updated)
|
||||
redirect_to admin_product_images_url(params[:product_id], @url_filters)
|
||||
redirect_to spree.admin_product_images_url(params[:product_id], @url_filters)
|
||||
else
|
||||
respond_with(@object)
|
||||
end
|
||||
@@ -55,7 +55,7 @@ module Spree
|
||||
flash[:success] = flash_message_for(@object, :successfully_removed)
|
||||
end
|
||||
|
||||
redirect_to admin_product_images_url(params[:product_id], @url_filters)
|
||||
redirect_to spree.admin_product_images_url(params[:product_id], @url_filters)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -3,7 +3,6 @@ require 'open_food_network/spree_api_key_loader'
|
||||
module Spree
|
||||
module Admin
|
||||
class OrdersController < Spree::Admin::BaseController
|
||||
require 'spree/core/gateway_error'
|
||||
include OpenFoodNetwork::SpreeApiKeyLoader
|
||||
helper CheckoutHelper
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ module Spree
|
||||
@payment_method = params[:payment_method].
|
||||
delete(:type).
|
||||
constantize.
|
||||
new(payment_method_params)
|
||||
new(PermittedAttributes::PaymentMethod.new(params[:payment_method]).call)
|
||||
@object = @payment_method
|
||||
|
||||
invoke_callbacks(:create, :before)
|
||||
@@ -92,17 +92,6 @@ module Spree
|
||||
|
||||
private
|
||||
|
||||
def payment_method_params
|
||||
params.require(:payment_method).permit(
|
||||
:name, :description, :type, :active,
|
||||
:environment, :display_on, :tag_list,
|
||||
:preferred_enterprise_id, :preferred_server, :preferred_login, :preferred_password,
|
||||
:calculator_type, :preferred_api_key,
|
||||
:preferred_signature, :preferred_solution, :preferred_landing_page, :preferred_logourl,
|
||||
:preferred_test_mode, distributor_ids: []
|
||||
)
|
||||
end
|
||||
|
||||
def force_environment
|
||||
params[:payment_method][:environment] = Rails.env unless spree_current_user.admin?
|
||||
end
|
||||
@@ -164,7 +153,7 @@ module Spree
|
||||
# Also, remove password if present and blank
|
||||
def params_for_update
|
||||
gateway_params = params[ActiveModel::Naming.param_key(@payment_method)] || {}
|
||||
params_for_update = payment_method_params.merge(gateway_params)
|
||||
params_for_update = params[:payment_method].merge(gateway_params)
|
||||
|
||||
params_for_update.each do |key, _value|
|
||||
if key.include?("password") && params_for_update[key].blank?
|
||||
@@ -172,7 +161,7 @@ module Spree
|
||||
end
|
||||
end
|
||||
|
||||
params_for_update
|
||||
PermittedAttributes::PaymentMethod.new(params_for_update).call
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -16,7 +16,7 @@ module Spree
|
||||
flash[:success] = flash_message_for(@object, :successfully_removed)
|
||||
end
|
||||
# if destroy fails it won't show any errors to the user
|
||||
redirect_to admin_product_product_properties_url(params[:product_id], @url_filters)
|
||||
redirect_to spree.admin_product_product_properties_url(params[:product_id], @url_filters)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -294,7 +294,7 @@ module Spree
|
||||
if report_in_order_management_engine?(report)
|
||||
main_app.public_send("new_order_management_reports_#{report}_url".to_sym)
|
||||
else
|
||||
public_send("#{report}_admin_reports_url".to_sym)
|
||||
spree.public_send("#{report}_admin_reports_url".to_sym)
|
||||
end
|
||||
rescue NoMethodError
|
||||
url_for([:new, :admin, :reports, report.to_s.singularize])
|
||||
|
||||
@@ -86,12 +86,7 @@ module Spree
|
||||
params.require(:shipping_method).permit(
|
||||
:name, :description, :display_on, :require_ship_address, :tag_list, :calculator_type,
|
||||
distributor_ids: [],
|
||||
calculator_attributes: [
|
||||
:id, :preferred_currency, :preferred_amount, :preferred_unit_from_list,
|
||||
:preferred_per_unit, :preferred_flat_percent, :preferred_first_item,
|
||||
:preferred_additional_item, :preferred_max_items, :preferred_minimal_amount,
|
||||
:preferred_normal_amount, :preferred_discount_amount
|
||||
]
|
||||
calculator_attributes: PermittedAttributes::Calculator.attributes
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,9 +21,9 @@ module Spree
|
||||
|
||||
if @object.update(permitted_resource_params)
|
||||
flash[:success] = flash_message_for(@object, :successfully_updated)
|
||||
redirect_to admin_product_variants_url(params[:product_id], @url_filters)
|
||||
redirect_to spree.admin_product_variants_url(params[:product_id], @url_filters)
|
||||
else
|
||||
redirect_to edit_admin_product_variant_url(params[:product_id], @object, @url_filters)
|
||||
redirect_to spree.edit_admin_product_variant_url(params[:product_id], @object, @url_filters)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -40,9 +40,9 @@ module Spree
|
||||
@object.attributes = permitted_resource_params
|
||||
if @object.save
|
||||
flash[:success] = flash_message_for(@object, :successfully_created)
|
||||
redirect_to admin_product_variants_url(params[:product_id], @url_filters)
|
||||
redirect_to spree.admin_product_variants_url(params[:product_id], @url_filters)
|
||||
else
|
||||
redirect_to new_admin_product_variant_url(params[:product_id], @url_filters)
|
||||
redirect_to spree.new_admin_product_variant_url(params[:product_id], @url_filters)
|
||||
end
|
||||
|
||||
return unless @object.present? && @object.valid?
|
||||
|
||||
@@ -1,11 +1,87 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
Spree::PaypalController.class_eval do
|
||||
include OrderStockCheck
|
||||
|
||||
before_action :enable_embedded_shopfront
|
||||
before_action :destroy_orphaned_paypal_payments, only: :confirm
|
||||
after_action :reset_order_when_complete, only: :confirm
|
||||
before_action :permit_parameters!
|
||||
|
||||
def express
|
||||
order = current_order || raise(ActiveRecord::RecordNotFound)
|
||||
items = order.line_items.map(&method(:line_item))
|
||||
|
||||
tax_adjustments = order.adjustments.tax
|
||||
# TODO: Remove in Spree 2.2
|
||||
tax_adjustments = tax_adjustments.additional if tax_adjustments.respond_to?(:additional)
|
||||
shipping_adjustments = order.adjustments.shipping
|
||||
|
||||
order.adjustments.eligible.each do |adjustment|
|
||||
next if (tax_adjustments + shipping_adjustments).include?(adjustment)
|
||||
|
||||
items << {
|
||||
Name: adjustment.label,
|
||||
Quantity: 1,
|
||||
Amount: {
|
||||
currencyID: order.currency,
|
||||
value: adjustment.amount
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
# Because PayPal doesn't accept $0 items at all.
|
||||
# See #10
|
||||
# https://cms.paypal.com/uk/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECCustomizing
|
||||
# "It can be a positive or negative value but not zero."
|
||||
items.reject! do |item|
|
||||
item[:Amount][:value].zero?
|
||||
end
|
||||
pp_request = provider.build_set_express_checkout(express_checkout_request_details(order, items))
|
||||
|
||||
begin
|
||||
pp_response = provider.set_express_checkout(pp_request)
|
||||
if pp_response.success?
|
||||
# At this point Paypal has *provisionally* accepted that the payment can now be placed,
|
||||
# and the user will be redirected to a Paypal payment page. On completion, the user is
|
||||
# sent back and the response is handled in the #confirm action in this controller.
|
||||
redirect_to provider.express_checkout_url(pp_response, useraction: 'commit')
|
||||
else
|
||||
flash[:error] = Spree.t('flash.generic_error', scope: 'paypal', reasons: pp_response.errors.map(&:long_message).join(" "))
|
||||
redirect_to spree.checkout_state_path(:payment)
|
||||
end
|
||||
rescue SocketError
|
||||
flash[:error] = Spree.t('flash.connection_failed', scope: 'paypal')
|
||||
redirect_to spree.checkout_state_path(:payment)
|
||||
end
|
||||
end
|
||||
|
||||
def confirm
|
||||
@order = current_order || raise(ActiveRecord::RecordNotFound)
|
||||
|
||||
# At this point the user has come back from the Paypal form, and we get one
|
||||
# last chance to interact with the payment process before the money moves...
|
||||
return reset_to_cart unless sufficient_stock?
|
||||
|
||||
@order.payments.create!({
|
||||
source: Spree::PaypalExpressCheckout.create({
|
||||
token: params[:token],
|
||||
payer_id: params[:PayerID]
|
||||
}),
|
||||
amount: @order.total,
|
||||
payment_method: payment_method
|
||||
})
|
||||
@order.next
|
||||
if @order.complete?
|
||||
flash.notice = Spree.t(:order_processed_successfully)
|
||||
flash[:commerce_tracking] = "nothing special"
|
||||
session[:order_id] = nil
|
||||
redirect_to completion_route(@order)
|
||||
else
|
||||
redirect_to checkout_state_path(@order.state)
|
||||
end
|
||||
end
|
||||
|
||||
def cancel
|
||||
flash[:notice] = Spree.t('flash.cancel', scope: 'paypal')
|
||||
redirect_to main_app.checkout_path
|
||||
@@ -21,6 +97,10 @@ Spree::PaypalController.class_eval do
|
||||
|
||||
private
|
||||
|
||||
def payment_method
|
||||
@payment_method ||= Spree::PaymentMethod.find(params[:payment_method_id])
|
||||
end
|
||||
|
||||
def permit_parameters!
|
||||
params.permit(:token, :payment_method_id, :PayerID)
|
||||
end
|
||||
@@ -34,6 +114,11 @@ Spree::PaypalController.class_eval do
|
||||
end
|
||||
end
|
||||
|
||||
def reset_to_cart
|
||||
OrderCheckoutRestart.new(@order).call
|
||||
handle_insufficient_stock
|
||||
end
|
||||
|
||||
# See #1074 and #1837 for more detail on why we need this
|
||||
# An 'orphaned' Spree::Payment is created for every call to CheckoutController#update
|
||||
# for orders that are processed using a Spree::Gateway::PayPalExpress payment method
|
||||
@@ -49,4 +134,24 @@ Spree::PaypalController.class_eval do
|
||||
orphaned_payments = current_order.payments.where(payment_method_id: payment_method.id, source_id: nil)
|
||||
orphaned_payments.each(&:destroy)
|
||||
end
|
||||
|
||||
def completion_route(order)
|
||||
spree.order_path(order, token: order.token)
|
||||
end
|
||||
|
||||
def express_checkout_request_details(order, items)
|
||||
{
|
||||
SetExpressCheckoutRequestDetails: {
|
||||
InvoiceID: order.number,
|
||||
BuyerEmail: order.email,
|
||||
ReturnURL: spree.confirm_paypal_url(payment_method_id: params[:payment_method_id], utm_nooverride: 1),
|
||||
CancelURL: spree.cancel_paypal_url,
|
||||
SolutionType: payment_method.preferred_solution.presence || "Mark",
|
||||
LandingPage: payment_method.preferred_landing_page.presence || "Billing",
|
||||
cppheaderimage: payment_method.preferred_logourl.presence || "",
|
||||
NoShipping: 1,
|
||||
PaymentDetails: [payment_details(items)]
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -86,9 +86,9 @@ module Spree
|
||||
|
||||
def link_to_delete(resource, options = {})
|
||||
url = options[:url] || object_url(resource)
|
||||
name = options[:name] || Spree.t(:delete)
|
||||
name = options[:name] || I18n.t(:delete)
|
||||
options[:class] = "delete-resource"
|
||||
options[:data] = { confirm: Spree.t(:are_you_sure), action: 'remove' }
|
||||
options[:data] = { confirm: I18n.t(:are_you_sure), action: 'remove' }
|
||||
link_to_with_icon 'icon-trash', name, url, options
|
||||
end
|
||||
|
||||
|
||||
@@ -113,11 +113,12 @@ module Spree
|
||||
end
|
||||
|
||||
def event_link(event)
|
||||
button_link_to(Spree.t(event),
|
||||
event_label = I18n.t(event, scope: "actions")
|
||||
confirm_message = I18n.t("admin.orders.edit.order_sure_want_to", event: event_label)
|
||||
button_link_to(event_label,
|
||||
fire_admin_order_url(@order, e: event),
|
||||
method: :put,
|
||||
icon: "icon-#{event}",
|
||||
data: { confirm: Spree.t(:order_sure_want_to, event: Spree.t(event)) })
|
||||
method: :put, icon: "icon-#{event}",
|
||||
data: { confirm: confirm_message })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,7 +4,7 @@ module ProductStock
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
def on_demand
|
||||
if has_variants?
|
||||
if variants?
|
||||
raise 'Cannot determine product on_demand value of product with multiple variants' if variants.size > 1
|
||||
|
||||
variants.first.on_demand
|
||||
@@ -14,7 +14,7 @@ module ProductStock
|
||||
end
|
||||
|
||||
def on_hand
|
||||
if has_variants?
|
||||
if variants?
|
||||
variants.map(&:on_hand).reduce(:+)
|
||||
else
|
||||
master.on_hand
|
||||
|
||||
@@ -8,7 +8,7 @@ module ProductImport
|
||||
@enterprise_ids = enterprise_ids
|
||||
|
||||
if enterprise_ids.present?
|
||||
relation.update_all(count_on_hand: 0)
|
||||
relation.update_all(count_on_hand: 0, on_demand: false)
|
||||
else
|
||||
0
|
||||
end
|
||||
|
||||
@@ -47,7 +47,7 @@ module Spree
|
||||
end
|
||||
|
||||
add_shopping_abilities user
|
||||
add_base_abilities user if new_user? user
|
||||
add_base_abilities user if is_new_user? user
|
||||
add_enterprise_management_abilities user if can_manage_enterprises? user
|
||||
add_group_management_abilities user if can_manage_groups? user
|
||||
add_product_management_abilities user if can_manage_products? user
|
||||
@@ -57,7 +57,7 @@ module Spree
|
||||
end
|
||||
|
||||
# New users have no enterprises.
|
||||
def new_user?(user)
|
||||
def is_new_user?(user)
|
||||
user.enterprises.blank?
|
||||
end
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
# a.get :color
|
||||
# a.preferred_color
|
||||
#
|
||||
require 'spree/core/mail_settings'
|
||||
|
||||
module Spree
|
||||
class AppConfiguration < Preferences::Configuration
|
||||
# Should state/state_name be required
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spree/core/s3_support'
|
||||
|
||||
module Spree
|
||||
class Image < Asset
|
||||
validates_attachment_presence :attachment
|
||||
@@ -48,26 +50,36 @@ module Spree
|
||||
false
|
||||
end
|
||||
|
||||
def self.set_attachment_attributes(attribute_name, attribute_value)
|
||||
def self.set_attachment_attribute(attribute_name, attribute_value)
|
||||
attachment_definitions[:attachment][attribute_name] = attribute_value
|
||||
end
|
||||
|
||||
def self.set_s3_attachment_definitions
|
||||
def self.set_storage_attachment_attributes
|
||||
if Spree::Config[:use_s3]
|
||||
set_attachment_attributes(:storage, :s3)
|
||||
set_attachment_attributes(:s3_credentials, s3_credentials)
|
||||
set_attachment_attributes(:s3_headers,
|
||||
ActiveSupport::JSON.decode(Spree::Config[:s3_headers]))
|
||||
set_attachment_attributes(:bucket, Spree::Config[:s3_bucket])
|
||||
set_s3_attachment_attributes
|
||||
else
|
||||
attachment_definitions[:attachment].delete :storage
|
||||
attachment_definitions[:attachment].delete(:storage)
|
||||
end
|
||||
end
|
||||
|
||||
def self.set_s3_attachment_attributes
|
||||
set_attachment_attribute(:storage, :s3)
|
||||
set_attachment_attribute(:s3_credentials, s3_credentials)
|
||||
set_attachment_attribute(:s3_headers,
|
||||
ActiveSupport::JSON.decode(Spree::Config[:s3_headers]))
|
||||
set_attachment_attribute(:bucket, Spree::Config[:s3_bucket])
|
||||
|
||||
# We use :s3_alias_url (virtual host url style) and set the URL on property s3_host_alias
|
||||
set_attachment_attribute(:s3_host_alias, attachment_definitions[:attachment][:url])
|
||||
set_attachment_attribute(:url, ":s3_alias_url")
|
||||
end
|
||||
private_class_method :set_s3_attachment_attributes
|
||||
|
||||
def self.s3_credentials
|
||||
{ access_key_id: Spree::Config[:s3_access_key],
|
||||
secret_access_key: Spree::Config[:s3_secret],
|
||||
bucket: Spree::Config[:s3_bucket] }
|
||||
end
|
||||
private_class_method :s3_credentials
|
||||
end
|
||||
end
|
||||
|
||||
18
app/models/spree/option_type.rb
Normal file
18
app/models/spree/option_type.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Spree
|
||||
class OptionType < ActiveRecord::Base
|
||||
has_many :products, through: :product_option_types
|
||||
has_many :option_values, -> { order(:position) }, dependent: :destroy
|
||||
has_many :product_option_types, dependent: :destroy
|
||||
|
||||
validates :name, :presentation, presence: true
|
||||
default_scope -> { order("#{table_name}.position") }
|
||||
|
||||
accepts_nested_attributes_for :option_values,
|
||||
reject_if: lambda { |ov|
|
||||
ov[:name].blank? || ov[:presentation].blank?
|
||||
},
|
||||
allow_destroy: true
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
module Spree
|
||||
OptionType.class_eval do
|
||||
has_many :products, through: :product_option_types
|
||||
end
|
||||
end
|
||||
12
app/models/spree/option_value.rb
Normal file
12
app/models/spree/option_value.rb
Normal file
@@ -0,0 +1,12 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Spree
|
||||
class OptionValue < ActiveRecord::Base
|
||||
belongs_to :option_type
|
||||
acts_as_list scope: :option_type
|
||||
has_and_belongs_to_many :variants, join_table: 'spree_option_values_variants',
|
||||
class_name: "Spree::Variant"
|
||||
|
||||
validates :name, :presentation, presence: true
|
||||
end
|
||||
end
|
||||
@@ -10,6 +10,9 @@
|
||||
# inherited hook will assign a new hash for the subclass definitions
|
||||
# and copy all the definitions allowing the subclass to add
|
||||
# additional defintions without affecting the base
|
||||
|
||||
require 'spree/preferences/store'
|
||||
|
||||
module Spree
|
||||
module Preferences
|
||||
module Preferable
|
||||
|
||||
57
app/models/spree/price.rb
Normal file
57
app/models/spree/price.rb
Normal file
@@ -0,0 +1,57 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Spree
|
||||
class Price < ActiveRecord::Base
|
||||
acts_as_paranoid without_default_scope: true
|
||||
|
||||
belongs_to :variant, class_name: 'Spree::Variant'
|
||||
|
||||
validate :check_price
|
||||
validates :amount, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true
|
||||
|
||||
def display_amount
|
||||
money
|
||||
end
|
||||
alias :display_price :display_amount
|
||||
|
||||
def money
|
||||
Spree::Money.new(amount || 0, currency: currency)
|
||||
end
|
||||
|
||||
def price
|
||||
amount
|
||||
end
|
||||
|
||||
def price=(price)
|
||||
self[:amount] = parse_price(price)
|
||||
end
|
||||
|
||||
# Allow prices to access associated soft-deleted variants.
|
||||
def variant
|
||||
Spree::Variant.unscoped { super }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_price
|
||||
return unless currency.nil?
|
||||
|
||||
self.currency = Spree::Config[:currency]
|
||||
end
|
||||
|
||||
# strips all non-price-like characters from the price, taking into account locale settings
|
||||
def parse_price(price)
|
||||
return price unless price.is_a?(String)
|
||||
|
||||
separator, _delimiter = I18n.t([:'number.currency.format.separator',
|
||||
:'number.currency.format.delimiter'])
|
||||
non_price_characters = /[^0-9\-#{separator}]/
|
||||
# Strip everything else first
|
||||
price.gsub!(non_price_characters, '')
|
||||
# Then replace the locale-specific decimal separator with the standard separator if necessary
|
||||
price.gsub!(separator, '.') unless separator == '.'
|
||||
|
||||
price.to_d
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,18 +0,0 @@
|
||||
module Spree
|
||||
Price.class_eval do
|
||||
acts_as_paranoid without_default_scope: true
|
||||
|
||||
# Allow prices to access associated soft-deleted variants.
|
||||
def variant
|
||||
Spree::Variant.unscoped { super }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_price
|
||||
if currency.nil?
|
||||
self.currency = Spree::Config[:currency]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
485
app/models/spree/product.rb
Executable file
485
app/models/spree/product.rb
Executable file
@@ -0,0 +1,485 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'open_food_network/permalink_generator'
|
||||
require 'open_food_network/property_merge'
|
||||
require 'concerns/product_stock'
|
||||
|
||||
# PRODUCTS
|
||||
# Products represent an entity for sale in a store.
|
||||
# Products can have variations, called variants
|
||||
# Products properties include description, permalink, availability,
|
||||
# shipping category, etc. that do not change by variant.
|
||||
#
|
||||
# MASTER VARIANT
|
||||
# Every product has one master variant, which stores master price and sku, size and weight, etc.
|
||||
# The master variant does not have option values associated with it.
|
||||
# Price, SKU, size, weight, etc. are all delegated to the master variant.
|
||||
# Contains on_hand inventory levels only when there are no variants for the product.
|
||||
#
|
||||
# VARIANTS
|
||||
# All variants can access the product properties directly (via reverse delegation).
|
||||
# Inventory units are tied to Variant.
|
||||
# The master variant can have inventory units, but not option values.
|
||||
# All other variants have option values and may have inventory units.
|
||||
# Sum of on_hand each variant's inventory level determine "on_hand" level for the product.
|
||||
#
|
||||
module Spree
|
||||
class Product < ActiveRecord::Base
|
||||
include PermalinkGenerator
|
||||
include ProductStock
|
||||
|
||||
acts_as_paranoid
|
||||
|
||||
has_many :product_option_types, dependent: :destroy
|
||||
# We have an after_destroy callback on Spree::ProductOptionType. However, if we
|
||||
# don't specify dependent => destroy on this association, it is not called. See:
|
||||
# https://github.com/rails/rails/issues/7618
|
||||
has_many :option_types, through: :product_option_types, dependent: :destroy
|
||||
has_many :product_properties, dependent: :destroy
|
||||
has_many :properties, through: :product_properties
|
||||
|
||||
has_many :classifications, dependent: :delete_all
|
||||
has_many :taxons, through: :classifications
|
||||
|
||||
belongs_to :tax_category, class_name: 'Spree::TaxCategory'
|
||||
belongs_to :shipping_category, class_name: 'Spree::ShippingCategory'
|
||||
belongs_to :supplier, class_name: 'Enterprise', touch: true
|
||||
belongs_to :primary_taxon, class_name: 'Spree::Taxon', touch: true
|
||||
|
||||
has_one :master,
|
||||
-> { where is_master: true },
|
||||
class_name: 'Spree::Variant',
|
||||
dependent: :destroy
|
||||
|
||||
has_many :variants, -> {
|
||||
where(is_master: false).order("#{::Spree::Variant.quoted_table_name}.position ASC")
|
||||
}, class_name: 'Spree::Variant'
|
||||
|
||||
has_many :variants_including_master,
|
||||
-> { order("#{::Spree::Variant.quoted_table_name}.position ASC") },
|
||||
class_name: 'Spree::Variant',
|
||||
dependent: :destroy
|
||||
|
||||
has_many :prices, -> {
|
||||
order('spree_variants.position, spree_variants.id, currency')
|
||||
}, through: :variants
|
||||
|
||||
has_many :stock_items, through: :variants
|
||||
|
||||
delegate_belongs_to :master, :sku, :price, :currency, :display_amount, :display_price, :weight,
|
||||
:height, :width, :depth, :is_master, :default_price?, :cost_currency,
|
||||
:price_in, :amount_in, :unit_value, :unit_description
|
||||
delegate_belongs_to :master, :cost_price if Variant.table_exists? &&
|
||||
Variant.column_names.include?('cost_price')
|
||||
delegate :images_attributes=, :display_as=, to: :master
|
||||
|
||||
after_create :set_master_variant_defaults
|
||||
after_create :build_variants_from_option_values_hash, if: :option_values_hash
|
||||
after_save :save_master
|
||||
|
||||
delegate :images, to: :master, prefix: true
|
||||
alias_method :images, :master_images
|
||||
|
||||
has_many :variant_images, -> { order(:position) }, source: :images,
|
||||
through: :variants_including_master
|
||||
|
||||
accepts_nested_attributes_for :variants, allow_destroy: true
|
||||
|
||||
validates :name, presence: true
|
||||
validates :permalink, presence: true
|
||||
validates :price, presence: true, if: proc { Spree::Config[:require_master_price] }
|
||||
validates :shipping_category_id, presence: true
|
||||
|
||||
validates :supplier, presence: true
|
||||
validates :primary_taxon, presence: true
|
||||
validates :tax_category_id, presence: true, if: "Spree::Config.products_require_tax_category"
|
||||
|
||||
validates :variant_unit, presence: true
|
||||
validates :variant_unit_scale,
|
||||
presence: { if: ->(p) { %w(weight volume).include? p.variant_unit } }
|
||||
validates :variant_unit_name,
|
||||
presence: { if: ->(p) { p.variant_unit == 'items' } }
|
||||
|
||||
attr_accessor :option_values_hash
|
||||
|
||||
accepts_nested_attributes_for :product_properties,
|
||||
allow_destroy: true,
|
||||
reject_if: lambda { |pp| pp[:property_name].blank? }
|
||||
|
||||
make_permalink order: :name
|
||||
|
||||
alias :options :product_option_types
|
||||
|
||||
after_initialize :ensure_master
|
||||
after_initialize :set_available_on_to_now, if: :new_record?
|
||||
|
||||
before_validation :sanitize_permalink
|
||||
before_save :add_primary_taxon_to_taxons
|
||||
after_save :remove_previous_primary_taxon_from_taxons
|
||||
after_save :ensure_standard_variant
|
||||
after_save :update_units
|
||||
|
||||
before_destroy :punch_permalink
|
||||
|
||||
# -- Joins
|
||||
scope :with_order_cycles_outer, -> {
|
||||
joins("
|
||||
LEFT OUTER JOIN spree_variants AS o_spree_variants
|
||||
ON (o_spree_variants.product_id = spree_products.id)").
|
||||
joins("
|
||||
LEFT OUTER JOIN exchange_variants AS o_exchange_variants
|
||||
ON (o_exchange_variants.variant_id = o_spree_variants.id)").
|
||||
joins("
|
||||
LEFT OUTER JOIN exchanges AS o_exchanges
|
||||
ON (o_exchanges.id = o_exchange_variants.exchange_id)").
|
||||
joins("
|
||||
LEFT OUTER JOIN order_cycles AS o_order_cycles
|
||||
ON (o_order_cycles.id = o_exchanges.order_cycle_id)")
|
||||
}
|
||||
|
||||
scope :imported_on, lambda { |import_date|
|
||||
import_date = Time.zone.parse import_date if import_date.is_a? String
|
||||
import_date = import_date.to_date
|
||||
joins(:variants).merge(Spree::Variant.
|
||||
where(import_date: import_date.beginning_of_day..import_date.end_of_day))
|
||||
}
|
||||
|
||||
scope :with_order_cycles_inner, -> {
|
||||
joins(variants_including_master: { exchanges: :order_cycle })
|
||||
}
|
||||
|
||||
scope :visible_for, lambda { |enterprise|
|
||||
joins('
|
||||
LEFT OUTER JOIN spree_variants AS o_spree_variants
|
||||
ON (o_spree_variants.product_id = spree_products.id)').
|
||||
joins('
|
||||
LEFT OUTER JOIN inventory_items AS o_inventory_items
|
||||
ON (o_spree_variants.id = o_inventory_items.variant_id)').
|
||||
where('o_inventory_items.enterprise_id = (?) AND visible = (?)', enterprise, true)
|
||||
}
|
||||
|
||||
# -- Scopes
|
||||
scope :in_supplier, lambda { |supplier| where(supplier_id: supplier) }
|
||||
|
||||
# Products distributed via the given distributor through an OC
|
||||
scope :in_distributor, lambda { |distributor|
|
||||
distributor = distributor.respond_to?(:id) ? distributor.id : distributor.to_i
|
||||
|
||||
with_order_cycles_outer.
|
||||
where('(o_exchanges.incoming = ? AND o_exchanges.receiver_id = ?)', false, distributor).
|
||||
select('distinct spree_products.*')
|
||||
}
|
||||
|
||||
scope :in_distributors, lambda { |distributors|
|
||||
with_order_cycles_outer.
|
||||
where('(o_exchanges.incoming = ? AND o_exchanges.receiver_id IN (?))', false, distributors).
|
||||
uniq
|
||||
}
|
||||
|
||||
# Products supplied by a given enterprise or distributed via that enterprise through an OC
|
||||
scope :in_supplier_or_distributor, lambda { |enterprise|
|
||||
enterprise = enterprise.respond_to?(:id) ? enterprise.id : enterprise.to_i
|
||||
|
||||
with_order_cycles_outer.
|
||||
where("
|
||||
spree_products.supplier_id = ?
|
||||
OR (o_exchanges.incoming = ? AND o_exchanges.receiver_id = ?)
|
||||
", enterprise, false, enterprise).
|
||||
select('distinct spree_products.*')
|
||||
}
|
||||
|
||||
# Products distributed by the given order cycle
|
||||
scope :in_order_cycle, lambda { |order_cycle|
|
||||
with_order_cycles_inner.
|
||||
merge(Exchange.outgoing).
|
||||
where('order_cycles.id = ?', order_cycle)
|
||||
}
|
||||
|
||||
scope :in_an_active_order_cycle, lambda {
|
||||
with_order_cycles_inner.
|
||||
merge(OrderCycle.active).
|
||||
merge(Exchange.outgoing).
|
||||
where('order_cycles.id IS NOT NULL')
|
||||
}
|
||||
|
||||
scope :by_producer, -> { joins(:supplier).order('enterprises.name') }
|
||||
scope :by_name, -> { order('name') }
|
||||
|
||||
scope :managed_by, lambda { |user|
|
||||
if user.has_spree_role?('admin')
|
||||
where(nil)
|
||||
else
|
||||
where('supplier_id IN (?)', user.enterprises.select("enterprises.id"))
|
||||
end
|
||||
}
|
||||
|
||||
scope :stockable_by, lambda { |enterprise|
|
||||
return where('1=0') if enterprise.blank?
|
||||
|
||||
permitted_producer_ids = EnterpriseRelationship.joins(:parent).permitting(enterprise.id)
|
||||
.with_permission(:add_to_order_cycle)
|
||||
.where(enterprises: { is_primary_producer: true })
|
||||
.pluck(:parent_id)
|
||||
return where('spree_products.supplier_id IN (?)', [enterprise.id] | permitted_producer_ids)
|
||||
}
|
||||
|
||||
scope :active, lambda {
|
||||
where("spree_products.deleted_at IS NULL AND spree_products.available_on <= ?", Time.zone.now)
|
||||
}
|
||||
|
||||
def self.group_by_products_id
|
||||
group(column_names.map { |col_name| "#{table_name}.#{col_name}" })
|
||||
end
|
||||
|
||||
def to_param
|
||||
permalink.present? ? permalink : (permalink_was || name.to_s.to_url)
|
||||
end
|
||||
|
||||
# the master variant is not a member of the variants array
|
||||
def variants?
|
||||
variants.any?
|
||||
end
|
||||
|
||||
def tax_category
|
||||
if self[:tax_category_id].nil?
|
||||
TaxCategory.find_by(is_default: true)
|
||||
else
|
||||
TaxCategory.find(self[:tax_category_id])
|
||||
end
|
||||
end
|
||||
|
||||
# Ensures option_types and product_option_types exist for keys in option_values_hash
|
||||
def ensure_option_types_exist_for_values_hash
|
||||
return if option_values_hash.nil?
|
||||
|
||||
option_values_hash.keys.map(&:to_i).each do |id|
|
||||
option_type_ids << id unless option_type_ids.include?(id)
|
||||
unless product_option_types.pluck(:option_type_id).include?(id)
|
||||
product_option_types.create(option_type_id: id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# for adding products which are closely related to existing ones
|
||||
def duplicate
|
||||
duplicator = Spree::Core::ProductDuplicator.new(self)
|
||||
duplicator.duplicate
|
||||
end
|
||||
|
||||
# use deleted? rather than checking the attribute directly. this
|
||||
# allows extensions to override deleted? if they want to provide
|
||||
# their own definition.
|
||||
def deleted?
|
||||
!!deleted_at
|
||||
end
|
||||
|
||||
def available?
|
||||
!(available_on.nil? || available_on.future?)
|
||||
end
|
||||
|
||||
# split variants list into hash which shows mapping of opt value onto matching variants
|
||||
# eg categorise_variants_from_option(color) => {"red" -> [...], "blue" -> [...]}
|
||||
def categorise_variants_from_option(opt_type)
|
||||
return {} unless option_types.include?(opt_type)
|
||||
|
||||
variants.active.group_by { |v| v.option_values.detect { |o| o.option_type == opt_type } }
|
||||
end
|
||||
|
||||
def self.like_any(fields, values)
|
||||
where fields.map { |field|
|
||||
values.map { |value|
|
||||
arel_table[field].matches("%#{value}%")
|
||||
}.inject(:or)
|
||||
}.inject(:or)
|
||||
end
|
||||
|
||||
def empty_option_values?
|
||||
options.empty? || options.any? do |opt|
|
||||
opt.option_type.option_values.empty?
|
||||
end
|
||||
end
|
||||
|
||||
def property(property_name)
|
||||
return nil unless prop = properties.find_by(name: property_name)
|
||||
|
||||
product_properties.find_by(property: prop).try(:value)
|
||||
end
|
||||
|
||||
def set_property(property_name, property_value)
|
||||
ActiveRecord::Base.transaction do
|
||||
property = Property.where(name: property_name).first_or_create!(presentation: property_name)
|
||||
product_property = ProductProperty.where(product: self,
|
||||
property: property).first_or_initialize
|
||||
product_property.value = property_value
|
||||
product_property.save!
|
||||
end
|
||||
end
|
||||
|
||||
def total_on_hand
|
||||
stock_items.sum(&:count_on_hand)
|
||||
end
|
||||
|
||||
# Master variant may be deleted (i.e. when the product is deleted)
|
||||
# which would make AR's default finder return nil.
|
||||
# This is a stopgap for that little problem.
|
||||
def master
|
||||
super || variants_including_master.with_deleted.find_by(is_master: true)
|
||||
end
|
||||
|
||||
def properties_including_inherited
|
||||
# Product properties override producer properties
|
||||
ps = product_properties.all
|
||||
|
||||
if inherits_properties
|
||||
ps = OpenFoodNetwork::PropertyMerge.merge(ps, supplier.producer_properties)
|
||||
end
|
||||
|
||||
ps.
|
||||
sort_by(&:position).
|
||||
map { |pp| { id: pp.property.id, name: pp.property.presentation, value: pp.value } }
|
||||
end
|
||||
|
||||
def in_distributor?(distributor)
|
||||
self.class.in_distributor(distributor).include? self
|
||||
end
|
||||
|
||||
def in_order_cycle?(order_cycle)
|
||||
self.class.in_order_cycle(order_cycle).include? self
|
||||
end
|
||||
|
||||
def variants_distributed_by(order_cycle, distributor)
|
||||
order_cycle.variants_distributed_by(distributor).where(product_id: self)
|
||||
end
|
||||
|
||||
# Get the most recent import_date of a product's variants
|
||||
def import_date
|
||||
variants.map(&:import_date).compact.max
|
||||
end
|
||||
|
||||
def variant_unit_option_type
|
||||
return if variant_unit.blank?
|
||||
|
||||
option_type_name = "unit_#{variant_unit}"
|
||||
option_type_presentation = variant_unit.capitalize
|
||||
|
||||
Spree::OptionType.find_by(name: option_type_name) ||
|
||||
Spree::OptionType.create!(name: option_type_name,
|
||||
presentation: option_type_presentation)
|
||||
end
|
||||
|
||||
def self.all_variant_unit_option_types
|
||||
Spree::OptionType.where('name LIKE ?', 'unit_%%')
|
||||
end
|
||||
|
||||
def destroy_with_delete_from_order_cycles
|
||||
transaction do
|
||||
touch_distributors
|
||||
|
||||
ExchangeVariant.
|
||||
where('exchange_variants.variant_id IN (?)', variants_including_master.with_deleted.
|
||||
select(:id)).destroy_all
|
||||
|
||||
destroy_without_delete_from_order_cycles
|
||||
end
|
||||
end
|
||||
alias_method_chain :destroy, :delete_from_order_cycles
|
||||
|
||||
private
|
||||
|
||||
# Builds variants from a hash of option types & values
|
||||
def build_variants_from_option_values_hash
|
||||
ensure_option_types_exist_for_values_hash
|
||||
values = option_values_hash.values
|
||||
values = values.inject(values.shift) { |memo, value| memo.product(value).map(&:flatten) }
|
||||
|
||||
values.each do |ids|
|
||||
variants.create(
|
||||
option_value_ids: ids,
|
||||
price: master.price
|
||||
)
|
||||
end
|
||||
save
|
||||
end
|
||||
|
||||
# ensures the master variant is flagged as such
|
||||
def set_master_variant_defaults
|
||||
master.is_master = true
|
||||
end
|
||||
|
||||
# Here we rescue errors when saving master variants (without the need for a
|
||||
# validates_associated on master) and we get more specific data about the errors
|
||||
def save_master
|
||||
if master && (
|
||||
master.changed? || master.new_record? || (
|
||||
master.default_price && (
|
||||
master.default_price.changed? || master.default_price.new_record?
|
||||
)
|
||||
)
|
||||
)
|
||||
master.save!
|
||||
end
|
||||
|
||||
# If the master cannot be saved, the Product object will get its errors
|
||||
# and will be destroyed
|
||||
rescue ActiveRecord::RecordInvalid
|
||||
master.errors.each do |att, error|
|
||||
errors.add(att, error)
|
||||
end
|
||||
raise
|
||||
end
|
||||
|
||||
def ensure_master
|
||||
return unless new_record?
|
||||
|
||||
self.master ||= Variant.new
|
||||
end
|
||||
|
||||
def punch_permalink
|
||||
# Punch permalink with date prefix
|
||||
update_attribute :permalink, "#{Time.now.to_i}_#{permalink}"
|
||||
end
|
||||
|
||||
def set_available_on_to_now
|
||||
self.available_on ||= Time.zone.now
|
||||
end
|
||||
|
||||
def update_units
|
||||
return unless variant_unit_changed?
|
||||
|
||||
option_types.delete self.class.all_variant_unit_option_types
|
||||
option_types << variant_unit_option_type if variant_unit.present?
|
||||
variants_including_master.each(&:update_units)
|
||||
end
|
||||
|
||||
def touch_distributors
|
||||
Enterprise.distributing_products(id).each(&:touch)
|
||||
end
|
||||
|
||||
def add_primary_taxon_to_taxons
|
||||
taxons << primary_taxon unless taxons.include? primary_taxon
|
||||
end
|
||||
|
||||
def remove_previous_primary_taxon_from_taxons
|
||||
return unless primary_taxon_id_changed? && primary_taxon_id_was
|
||||
|
||||
taxons.destroy(primary_taxon_id_was)
|
||||
end
|
||||
|
||||
def ensure_standard_variant
|
||||
return unless master.valid? && variants.empty?
|
||||
|
||||
variant = master.dup
|
||||
variant.product = self
|
||||
variant.is_master = false
|
||||
variants << variant
|
||||
end
|
||||
|
||||
# Spree creates a permalink already but our implementation fixes an edge case.
|
||||
def sanitize_permalink
|
||||
return unless permalink.blank? || permalink_changed?
|
||||
|
||||
requested = permalink.presence || permalink_was.presence || name.presence || 'product'
|
||||
self.permalink = create_unique_permalink(requested.parameterize)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,265 +0,0 @@
|
||||
require 'open_food_network/permalink_generator'
|
||||
require 'open_food_network/property_merge'
|
||||
require 'concerns/product_stock'
|
||||
|
||||
Spree::Product.class_eval do
|
||||
include PermalinkGenerator
|
||||
include ProductStock
|
||||
|
||||
# We have an after_destroy callback on Spree::ProductOptionType. However, if we
|
||||
# don't specify dependent => destroy on this association, it is not called. See:
|
||||
# https://github.com/rails/rails/issues/7618
|
||||
has_many :option_types, through: :product_option_types, dependent: :destroy
|
||||
|
||||
belongs_to :supplier, class_name: 'Enterprise', touch: true
|
||||
belongs_to :primary_taxon, class_name: 'Spree::Taxon', touch: true
|
||||
|
||||
delegate_belongs_to :master, :unit_value, :unit_description
|
||||
delegate :images_attributes=, :display_as=, to: :master
|
||||
|
||||
validates :supplier, presence: true
|
||||
validates :primary_taxon, presence: true
|
||||
validates :tax_category_id, presence: true, if: "Spree::Config.products_require_tax_category"
|
||||
|
||||
validates :variant_unit, presence: true
|
||||
validates :variant_unit_scale,
|
||||
presence: { if: ->(p) { %w(weight volume).include? p.variant_unit } }
|
||||
validates :variant_unit_name,
|
||||
presence: { if: ->(p) { p.variant_unit == 'items' } }
|
||||
|
||||
after_initialize :set_available_on_to_now, if: :new_record?
|
||||
before_validation :sanitize_permalink
|
||||
before_save :add_primary_taxon_to_taxons
|
||||
after_save :remove_previous_primary_taxon_from_taxons
|
||||
after_save :ensure_standard_variant
|
||||
after_save :update_units
|
||||
|
||||
# -- Joins
|
||||
scope :with_order_cycles_outer, -> {
|
||||
joins("
|
||||
LEFT OUTER JOIN spree_variants AS o_spree_variants
|
||||
ON (o_spree_variants.product_id = spree_products.id)").
|
||||
joins("
|
||||
LEFT OUTER JOIN exchange_variants AS o_exchange_variants
|
||||
ON (o_exchange_variants.variant_id = o_spree_variants.id)").
|
||||
joins("
|
||||
LEFT OUTER JOIN exchanges AS o_exchanges
|
||||
ON (o_exchanges.id = o_exchange_variants.exchange_id)").
|
||||
joins("
|
||||
LEFT OUTER JOIN order_cycles AS o_order_cycles
|
||||
ON (o_order_cycles.id = o_exchanges.order_cycle_id)")
|
||||
}
|
||||
|
||||
scope :imported_on, lambda { |import_date|
|
||||
import_date = Time.zone.parse import_date if import_date.is_a? String
|
||||
import_date = import_date.to_date
|
||||
joins(:variants).merge(Spree::Variant.where(import_date: import_date.beginning_of_day..import_date.end_of_day))
|
||||
}
|
||||
|
||||
scope :with_order_cycles_inner, -> {
|
||||
joins(variants_including_master: { exchanges: :order_cycle })
|
||||
}
|
||||
|
||||
scope :visible_for, lambda { |enterprise|
|
||||
joins('LEFT OUTER JOIN spree_variants AS o_spree_variants ON (o_spree_variants.product_id = spree_products.id)').
|
||||
joins('LEFT OUTER JOIN inventory_items AS o_inventory_items ON (o_spree_variants.id = o_inventory_items.variant_id)').
|
||||
where('o_inventory_items.enterprise_id = (?) AND visible = (?)', enterprise, true)
|
||||
}
|
||||
|
||||
# -- Scopes
|
||||
scope :in_supplier, lambda { |supplier| where(supplier_id: supplier) }
|
||||
|
||||
# Products distributed via the given distributor through an OC
|
||||
scope :in_distributor, lambda { |distributor|
|
||||
distributor = distributor.respond_to?(:id) ? distributor.id : distributor.to_i
|
||||
|
||||
with_order_cycles_outer.
|
||||
where('(o_exchanges.incoming = ? AND o_exchanges.receiver_id = ?)', false, distributor).
|
||||
select('distinct spree_products.*')
|
||||
}
|
||||
|
||||
scope :in_distributors, lambda { |distributors|
|
||||
with_order_cycles_outer.
|
||||
where('(o_exchanges.incoming = ? AND o_exchanges.receiver_id IN (?))', false, distributors).
|
||||
uniq
|
||||
}
|
||||
|
||||
# Products supplied by a given enterprise or distributed via that enterprise through an OC
|
||||
scope :in_supplier_or_distributor, lambda { |enterprise|
|
||||
enterprise = enterprise.respond_to?(:id) ? enterprise.id : enterprise.to_i
|
||||
|
||||
with_order_cycles_outer.
|
||||
where("
|
||||
spree_products.supplier_id = ?
|
||||
OR (o_exchanges.incoming = ? AND o_exchanges.receiver_id = ?)
|
||||
", enterprise, false, enterprise).
|
||||
select('distinct spree_products.*')
|
||||
}
|
||||
|
||||
# Products distributed by the given order cycle
|
||||
scope :in_order_cycle, lambda { |order_cycle|
|
||||
with_order_cycles_inner.
|
||||
merge(Exchange.outgoing).
|
||||
where('order_cycles.id = ?', order_cycle)
|
||||
}
|
||||
|
||||
scope :in_an_active_order_cycle, lambda {
|
||||
with_order_cycles_inner.
|
||||
merge(OrderCycle.active).
|
||||
merge(Exchange.outgoing).
|
||||
where('order_cycles.id IS NOT NULL')
|
||||
}
|
||||
|
||||
scope :by_producer, -> { joins(:supplier).order('enterprises.name') }
|
||||
scope :by_name, -> { order('name') }
|
||||
|
||||
scope :managed_by, lambda { |user|
|
||||
if user.has_spree_role?('admin')
|
||||
where(nil)
|
||||
else
|
||||
where('supplier_id IN (?)', user.enterprises.select("enterprises.id"))
|
||||
end
|
||||
}
|
||||
|
||||
scope :stockable_by, lambda { |enterprise|
|
||||
return where('1=0') if enterprise.blank?
|
||||
|
||||
permitted_producer_ids = EnterpriseRelationship.joins(:parent).permitting(enterprise.id)
|
||||
.with_permission(:add_to_order_cycle).where(enterprises: { is_primary_producer: true }).pluck(:parent_id)
|
||||
return where('spree_products.supplier_id IN (?)', [enterprise.id] | permitted_producer_ids)
|
||||
}
|
||||
|
||||
# -- Methods
|
||||
|
||||
# Called by Spree::Product::duplicate before saving.
|
||||
def duplicate_extra(_parent)
|
||||
# Spree sets the SKU to "COPY OF #{parent sku}".
|
||||
master.sku = ''
|
||||
end
|
||||
|
||||
def properties_including_inherited
|
||||
# Product properties override producer properties
|
||||
ps = product_properties.all
|
||||
|
||||
if inherits_properties
|
||||
ps = OpenFoodNetwork::PropertyMerge.merge(ps, supplier.producer_properties)
|
||||
end
|
||||
|
||||
ps.
|
||||
sort_by(&:position).
|
||||
map { |pp| { id: pp.property.id, name: pp.property.presentation, value: pp.value } }
|
||||
end
|
||||
|
||||
def in_distributor?(distributor)
|
||||
self.class.in_distributor(distributor).include? self
|
||||
end
|
||||
|
||||
def in_order_cycle?(order_cycle)
|
||||
self.class.in_order_cycle(order_cycle).include? self
|
||||
end
|
||||
|
||||
def variants_distributed_by(order_cycle, distributor)
|
||||
order_cycle.variants_distributed_by(distributor).where(product_id: self)
|
||||
end
|
||||
|
||||
# Get the most recent import_date of a product's variants
|
||||
def import_date
|
||||
variants.map(&:import_date).compact.max
|
||||
end
|
||||
|
||||
def variant_unit_option_type
|
||||
if variant_unit.present?
|
||||
option_type_name = "unit_#{variant_unit}"
|
||||
option_type_presentation = variant_unit.capitalize
|
||||
|
||||
Spree::OptionType.find_by(name: option_type_name) ||
|
||||
Spree::OptionType.create!(name: option_type_name,
|
||||
presentation: option_type_presentation)
|
||||
end
|
||||
end
|
||||
|
||||
def destroy_with_delete_from_order_cycles
|
||||
transaction do
|
||||
touch_distributors
|
||||
|
||||
ExchangeVariant.
|
||||
where('exchange_variants.variant_id IN (?)', variants_including_master.with_deleted.
|
||||
select(:id)).destroy_all
|
||||
|
||||
destroy_without_delete_from_order_cycles
|
||||
end
|
||||
end
|
||||
alias_method_chain :destroy, :delete_from_order_cycles
|
||||
|
||||
private
|
||||
|
||||
def set_available_on_to_now
|
||||
self.available_on ||= Time.zone.now
|
||||
end
|
||||
|
||||
def update_units
|
||||
if variant_unit_changed?
|
||||
option_types.delete self.class.all_variant_unit_option_types
|
||||
option_types << variant_unit_option_type if variant_unit.present?
|
||||
variants_including_master.each(&:update_units)
|
||||
end
|
||||
end
|
||||
|
||||
def touch_distributors
|
||||
Enterprise.distributing_products(id).each(&:touch)
|
||||
end
|
||||
|
||||
def add_primary_taxon_to_taxons
|
||||
taxons << primary_taxon unless taxons.include? primary_taxon
|
||||
end
|
||||
|
||||
def remove_previous_primary_taxon_from_taxons
|
||||
return unless primary_taxon_id_changed? && primary_taxon_id_was
|
||||
|
||||
taxons.destroy(primary_taxon_id_was)
|
||||
end
|
||||
|
||||
def self.all_variant_unit_option_types
|
||||
Spree::OptionType.where('name LIKE ?', 'unit_%%')
|
||||
end
|
||||
|
||||
def ensure_standard_variant
|
||||
if master.valid? && variants.empty?
|
||||
variant = master.dup
|
||||
variant.product = self
|
||||
variant.is_master = false
|
||||
variants << variant
|
||||
end
|
||||
end
|
||||
|
||||
# Override Spree's old save_master method and replace it with the most recent method from spree repository
|
||||
# This fixes any problems arising from failing master saves, without the need for a validates_associated on
|
||||
# master, while giving us more specific errors as to why saving failed
|
||||
def save_master
|
||||
if master && (
|
||||
master.changed? || master.new_record? || (
|
||||
master.default_price && (
|
||||
master.default_price.changed? || master.default_price.new_record?
|
||||
)
|
||||
)
|
||||
)
|
||||
master.save!
|
||||
end
|
||||
|
||||
# If the master cannot be saved, the Product object will get its errors
|
||||
# and will be destroyed
|
||||
rescue ActiveRecord::RecordInvalid
|
||||
master.errors.each do |att, error|
|
||||
errors.add(att, error)
|
||||
end
|
||||
raise
|
||||
end
|
||||
|
||||
# Spree creates a permalink already but our implementation fixes an edge case.
|
||||
def sanitize_permalink
|
||||
if permalink.blank? || permalink_changed?
|
||||
requested = permalink.presence || permalink_was.presence || name.presence || 'product'
|
||||
self.permalink = create_unique_permalink(requested.parameterize)
|
||||
end
|
||||
end
|
||||
end
|
||||
18
app/models/spree/product_option_type.rb
Normal file
18
app/models/spree/product_option_type.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Spree
|
||||
class ProductOptionType < ActiveRecord::Base
|
||||
after_destroy :remove_option_values
|
||||
|
||||
belongs_to :product, class_name: 'Spree::Product'
|
||||
belongs_to :option_type, class_name: 'Spree::OptionType'
|
||||
acts_as_list scope: :product
|
||||
|
||||
def remove_option_values
|
||||
product.variants_including_master.each do |variant|
|
||||
option_values = variant.option_values.where(option_type_id: option_type)
|
||||
variant.option_values.destroy(*option_values)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,10 +0,0 @@
|
||||
Spree::ProductOptionType.class_eval do
|
||||
after_destroy :remove_option_values
|
||||
|
||||
def remove_option_values
|
||||
product.variants_including_master.each do |variant|
|
||||
option_values = variant.option_values.where(option_type_id: option_type)
|
||||
variant.option_values.destroy(*option_values)
|
||||
end
|
||||
end
|
||||
end
|
||||
27
app/models/spree/product_property.rb
Normal file
27
app/models/spree/product_property.rb
Normal file
@@ -0,0 +1,27 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Spree
|
||||
class ProductProperty < ActiveRecord::Base
|
||||
belongs_to :product, class_name: "Spree::Product", touch: true
|
||||
belongs_to :property, class_name: 'Spree::Property'
|
||||
|
||||
validates :property, presence: true
|
||||
validates :value, length: { maximum: 255 }
|
||||
|
||||
default_scope -> { order("#{table_name}.position") }
|
||||
|
||||
# virtual attributes for use with AJAX completion stuff
|
||||
def property_name
|
||||
property&.name
|
||||
end
|
||||
|
||||
def property_name=(name)
|
||||
return if name.blank?
|
||||
|
||||
unless property = Property.find_by(name: name)
|
||||
property = Property.create(name: name, presentation: name)
|
||||
end
|
||||
self.property = property
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
module Spree
|
||||
ProductProperty.class_eval do
|
||||
belongs_to :product, class_name: "Spree::Product", touch: true
|
||||
end
|
||||
end
|
||||
301
app/models/spree/variant.rb
Normal file
301
app/models/spree/variant.rb
Normal file
@@ -0,0 +1,301 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'open_food_network/enterprise_fee_calculator'
|
||||
require 'variant_units/variant_and_line_item_naming'
|
||||
require 'concerns/variant_stock'
|
||||
require 'spree/localized_number'
|
||||
|
||||
module Spree
|
||||
class Variant < ActiveRecord::Base
|
||||
extend Spree::LocalizedNumber
|
||||
include VariantUnits::VariantAndLineItemNaming
|
||||
include VariantStock
|
||||
|
||||
acts_as_paranoid
|
||||
|
||||
belongs_to :product, touch: true, class_name: 'Spree::Product'
|
||||
delegate_belongs_to :product, :name, :description, :permalink, :available_on,
|
||||
:tax_category_id, :shipping_category_id, :meta_description,
|
||||
:meta_keywords, :tax_category, :shipping_category
|
||||
|
||||
has_many :inventory_units
|
||||
has_many :line_items
|
||||
|
||||
has_many :stock_items, dependent: :destroy
|
||||
has_many :stock_locations, through: :stock_items
|
||||
has_many :stock_movements
|
||||
|
||||
has_and_belongs_to_many :option_values, join_table: :spree_option_values_variants
|
||||
|
||||
has_many :images, -> { order(:position) }, as: :viewable,
|
||||
dependent: :destroy,
|
||||
class_name: "Spree::Image"
|
||||
accepts_nested_attributes_for :images
|
||||
|
||||
has_one :default_price,
|
||||
-> { where currency: Spree::Config[:currency] },
|
||||
class_name: 'Spree::Price',
|
||||
dependent: :destroy
|
||||
has_many :prices,
|
||||
class_name: 'Spree::Price',
|
||||
dependent: :destroy
|
||||
delegate_belongs_to :default_price, :display_price, :display_amount,
|
||||
:price, :price=, :currency
|
||||
|
||||
has_many :exchange_variants
|
||||
has_many :exchanges, through: :exchange_variants
|
||||
has_many :variant_overrides
|
||||
has_many :inventory_items
|
||||
|
||||
localize_number :price, :cost_price, :weight
|
||||
|
||||
validate :check_price
|
||||
validates :price, numericality: { greater_than_or_equal_to: 0 },
|
||||
presence: true,
|
||||
if: proc { Spree::Config[:require_master_price] }
|
||||
validates :cost_price, numericality: { greater_than_or_equal_to: 0, allow_nil: true }
|
||||
|
||||
validates :unit_value, presence: true, if: ->(variant) {
|
||||
%w(weight volume).include?(variant.product.andand.variant_unit)
|
||||
}
|
||||
|
||||
validates :unit_description, presence: true, if: ->(variant) {
|
||||
variant.product.andand.variant_unit.present? && variant.unit_value.nil?
|
||||
}
|
||||
|
||||
before_validation :set_cost_currency
|
||||
before_validation :update_weight_from_unit_value, if: ->(v) { v.product.present? }
|
||||
|
||||
after_save :save_default_price
|
||||
after_save :update_units
|
||||
|
||||
after_create :create_stock_items
|
||||
after_create :set_position
|
||||
|
||||
around_destroy :destruction
|
||||
|
||||
# default variant scope only lists non-deleted variants
|
||||
scope :deleted, lambda { where('deleted_at IS NOT NULL') }
|
||||
|
||||
scope :with_order_cycles_inner, -> { joins(exchanges: :order_cycle) }
|
||||
|
||||
scope :not_master, -> { where(is_master: false) }
|
||||
scope :in_order_cycle, lambda { |order_cycle|
|
||||
with_order_cycles_inner.
|
||||
merge(Exchange.outgoing).
|
||||
where('order_cycles.id = ?', order_cycle).
|
||||
select('DISTINCT spree_variants.*')
|
||||
}
|
||||
|
||||
scope :in_schedule, lambda { |schedule|
|
||||
joins(exchanges: { order_cycle: :schedules }).
|
||||
merge(Exchange.outgoing).
|
||||
where(schedules: { id: schedule }).
|
||||
select('DISTINCT spree_variants.*')
|
||||
}
|
||||
|
||||
scope :for_distribution, lambda { |order_cycle, distributor|
|
||||
where('spree_variants.id IN (?)', order_cycle.variants_distributed_by(distributor).
|
||||
select(&:id))
|
||||
}
|
||||
|
||||
scope :visible_for, lambda { |enterprise|
|
||||
joins(:inventory_items).
|
||||
where(
|
||||
'inventory_items.enterprise_id = (?) AND inventory_items.visible = (?)',
|
||||
enterprise,
|
||||
true
|
||||
)
|
||||
}
|
||||
|
||||
scope :not_hidden_for, lambda { |enterprise|
|
||||
return where("1=0") if enterprise.blank?
|
||||
|
||||
joins("
|
||||
LEFT OUTER JOIN (SELECT *
|
||||
FROM inventory_items
|
||||
WHERE enterprise_id = #{sanitize enterprise.andand.id})
|
||||
AS o_inventory_items
|
||||
ON o_inventory_items.variant_id = spree_variants.id")
|
||||
.where("o_inventory_items.id IS NULL OR o_inventory_items.visible = (?)", true)
|
||||
}
|
||||
|
||||
scope :stockable_by, lambda { |enterprise|
|
||||
return where("1=0") if enterprise.blank?
|
||||
|
||||
joins(:product).
|
||||
where(spree_products: { id: Spree::Product.stockable_by(enterprise).pluck(:id) })
|
||||
}
|
||||
|
||||
# Define sope as class method to allow chaining with other scopes filtering id.
|
||||
# In Rails 3, merging two scopes on the same column will consider only the last scope.
|
||||
def self.in_distributor(distributor)
|
||||
where(id: ExchangeVariant.select(:variant_id).
|
||||
joins(:exchange).
|
||||
where('exchanges.incoming = ? AND exchanges.receiver_id = ?', false, distributor))
|
||||
end
|
||||
|
||||
def self.indexed
|
||||
scoped.index_by(&:id)
|
||||
end
|
||||
|
||||
def self.active(currency = nil)
|
||||
# "where(id:" is necessary so that the returned relation has no includes
|
||||
# The relation without includes will not be readonly and allow updates on it
|
||||
where("spree_variants.id in (?)", joins(:prices).
|
||||
where(deleted_at: nil).
|
||||
where('spree_prices.currency' =>
|
||||
currency || Spree::Config[:currency]).
|
||||
where('spree_prices.amount IS NOT NULL').
|
||||
select("spree_variants.id"))
|
||||
end
|
||||
|
||||
# Allow variant to access associated soft-deleted prices.
|
||||
def default_price
|
||||
Spree::Price.unscoped { super }
|
||||
end
|
||||
|
||||
def price_with_fees(distributor, order_cycle)
|
||||
price + fees_for(distributor, order_cycle)
|
||||
end
|
||||
|
||||
def fees_for(distributor, order_cycle)
|
||||
OpenFoodNetwork::EnterpriseFeeCalculator.new(distributor, order_cycle).fees_for self
|
||||
end
|
||||
|
||||
def fees_by_type_for(distributor, order_cycle)
|
||||
OpenFoodNetwork::EnterpriseFeeCalculator.new(distributor, order_cycle).fees_by_type_for self
|
||||
end
|
||||
|
||||
# returns number of units currently on backorder for this variant.
|
||||
def on_backorder
|
||||
inventory_units.with_state('backordered').size
|
||||
end
|
||||
|
||||
def gross_profit
|
||||
cost_price.nil? ? 0 : (price - cost_price)
|
||||
end
|
||||
|
||||
# use deleted? rather than checking the attribute directly. this
|
||||
# allows extensions to override deleted? if they want to provide
|
||||
# their own definition.
|
||||
def deleted?
|
||||
deleted_at
|
||||
end
|
||||
|
||||
def set_option_value(opt_name, opt_value)
|
||||
# no option values on master
|
||||
return if is_master
|
||||
|
||||
option_type = Spree::OptionType.where(name: opt_name).first_or_initialize do |o|
|
||||
o.presentation = opt_name
|
||||
o.save!
|
||||
end
|
||||
|
||||
current_value = option_values.detect { |o| o.option_type.name == opt_name }
|
||||
|
||||
if current_value.nil?
|
||||
# then we have to check to make sure that the product has the option type
|
||||
unless product.option_types.include? option_type
|
||||
product.option_types << option_type
|
||||
product.save
|
||||
end
|
||||
else
|
||||
return if current_value.name == opt_value
|
||||
|
||||
option_values.delete(current_value)
|
||||
end
|
||||
|
||||
option_value = Spree::OptionValue.where(option_type_id: option_type.id,
|
||||
name: opt_value).first_or_initialize do |o|
|
||||
o.presentation = opt_value
|
||||
o.save!
|
||||
end
|
||||
|
||||
option_values << option_value
|
||||
save
|
||||
end
|
||||
|
||||
def option_value(opt_name)
|
||||
option_values.detect { |o| o.option_type.name == opt_name }.try(:presentation)
|
||||
end
|
||||
|
||||
def default_price?
|
||||
!default_price.nil?
|
||||
end
|
||||
|
||||
def price_in(currency)
|
||||
prices.select{ |price| price.currency == currency }.first ||
|
||||
Spree::Price.new(variant_id: id, currency: currency)
|
||||
end
|
||||
|
||||
def amount_in(currency)
|
||||
price_in(currency).try(:amount)
|
||||
end
|
||||
|
||||
def name_and_sku
|
||||
"#{name} - #{sku}"
|
||||
end
|
||||
|
||||
# Product may be created with deleted_at already set,
|
||||
# which would make AR's default finder return nil.
|
||||
# This is a stopgap for that little problem.
|
||||
def product
|
||||
Spree::Product.unscoped { super }
|
||||
end
|
||||
|
||||
# can_supply? is implemented in VariantStock
|
||||
def in_stock?(quantity = 1)
|
||||
can_supply?(quantity)
|
||||
end
|
||||
|
||||
def total_on_hand
|
||||
Spree::Stock::Quantifier.new(self).total_on_hand
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Ensures a new variant takes the product master price when price is not supplied
|
||||
def check_price
|
||||
if price.nil? && Spree::Config[:require_master_price]
|
||||
raise 'No master variant found to infer price' unless product&.master
|
||||
raise 'Must supply price for variant or master.price for product.' if self == product.master
|
||||
|
||||
self.price = product.master.price
|
||||
end
|
||||
|
||||
return unless currency.nil?
|
||||
|
||||
self.currency = Spree::Config[:currency]
|
||||
end
|
||||
|
||||
def save_default_price
|
||||
default_price.save if default_price && (default_price.changed? || default_price.new_record?)
|
||||
end
|
||||
|
||||
def set_cost_currency
|
||||
self.cost_currency = Spree::Config[:currency] if cost_currency.blank?
|
||||
end
|
||||
|
||||
def create_stock_items
|
||||
StockLocation.all.find_each do |stock_location|
|
||||
stock_location.propagate_variant(self)
|
||||
end
|
||||
end
|
||||
|
||||
def set_position
|
||||
update_column(:position, product.variants.maximum(:position).to_i + 1)
|
||||
end
|
||||
|
||||
def update_weight_from_unit_value
|
||||
return unless product.variant_unit == 'weight' && unit_value.present?
|
||||
|
||||
self.weight = weight_from_unit_value
|
||||
end
|
||||
|
||||
def destruction
|
||||
exchange_variants(:reload).destroy_all
|
||||
yield
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,141 +0,0 @@
|
||||
require 'open_food_network/enterprise_fee_calculator'
|
||||
require 'variant_units/variant_and_line_item_naming'
|
||||
require 'concerns/variant_stock'
|
||||
|
||||
Spree::Variant.class_eval do
|
||||
extend Spree::LocalizedNumber
|
||||
# Remove method From Spree, so method from the naming module is used instead
|
||||
# This file may be double-loaded in delayed job environment, so we check before
|
||||
# removing the Spree method to prevent error.
|
||||
remove_method :options_text if instance_methods(false).include? :options_text
|
||||
include VariantUnits::VariantAndLineItemNaming
|
||||
include VariantStock
|
||||
|
||||
has_many :exchange_variants
|
||||
has_many :exchanges, through: :exchange_variants
|
||||
has_many :variant_overrides
|
||||
has_many :inventory_items
|
||||
|
||||
accepts_nested_attributes_for :images
|
||||
|
||||
validates :unit_value, presence: true, if: ->(variant) {
|
||||
%w(weight volume).include?(variant.product.andand.variant_unit)
|
||||
}
|
||||
|
||||
validates :unit_description, presence: true, if: ->(variant) {
|
||||
variant.product.andand.variant_unit.present? && variant.unit_value.nil?
|
||||
}
|
||||
|
||||
before_validation :update_weight_from_unit_value, if: ->(v) { v.product.present? }
|
||||
after_save :update_units
|
||||
around_destroy :destruction
|
||||
|
||||
scope :with_order_cycles_inner, -> { joins(exchanges: :order_cycle) }
|
||||
|
||||
scope :not_master, -> { where(is_master: false) }
|
||||
scope :in_order_cycle, lambda { |order_cycle|
|
||||
with_order_cycles_inner.
|
||||
merge(Exchange.outgoing).
|
||||
where('order_cycles.id = ?', order_cycle).
|
||||
select('DISTINCT spree_variants.*')
|
||||
}
|
||||
|
||||
scope :in_schedule, lambda { |schedule|
|
||||
joins(exchanges: { order_cycle: :schedules }).
|
||||
merge(Exchange.outgoing).
|
||||
where(schedules: { id: schedule }).
|
||||
select('DISTINCT spree_variants.*')
|
||||
}
|
||||
|
||||
scope :for_distribution, lambda { |order_cycle, distributor|
|
||||
where('spree_variants.id IN (?)', order_cycle.variants_distributed_by(distributor).select(&:id))
|
||||
}
|
||||
|
||||
scope :visible_for, lambda { |enterprise|
|
||||
joins(:inventory_items).
|
||||
where(
|
||||
'inventory_items.enterprise_id = (?) AND inventory_items.visible = (?)',
|
||||
enterprise,
|
||||
true
|
||||
)
|
||||
}
|
||||
|
||||
scope :not_hidden_for, lambda { |enterprise|
|
||||
return where("1=0") if enterprise.blank?
|
||||
|
||||
joins("
|
||||
LEFT OUTER JOIN (SELECT *
|
||||
FROM inventory_items
|
||||
WHERE enterprise_id = #{sanitize enterprise.andand.id})
|
||||
AS o_inventory_items
|
||||
ON o_inventory_items.variant_id = spree_variants.id")
|
||||
.where("o_inventory_items.id IS NULL OR o_inventory_items.visible = (?)", true)
|
||||
}
|
||||
|
||||
localize_number :price, :cost_price, :weight
|
||||
|
||||
scope :stockable_by, lambda { |enterprise|
|
||||
return where("1=0") if enterprise.blank?
|
||||
|
||||
joins(:product).
|
||||
where(spree_products: { id: Spree::Product.stockable_by(enterprise).pluck(:id) })
|
||||
}
|
||||
|
||||
# Define sope as class method to allow chaining with other scopes filtering id.
|
||||
# In Rails 3, merging two scopes on the same column will consider only the last scope.
|
||||
def self.in_distributor(distributor)
|
||||
where(id: ExchangeVariant.select(:variant_id).
|
||||
joins(:exchange).
|
||||
where('exchanges.incoming = ? AND exchanges.receiver_id = ?', false, distributor))
|
||||
end
|
||||
|
||||
def self.indexed
|
||||
scoped.index_by(&:id)
|
||||
end
|
||||
|
||||
def self.active(currency = nil)
|
||||
# "where(id:" is necessary so that the returned relation has no includes
|
||||
# The relation without includes will not be readonly and allow updates on it
|
||||
where("spree_variants.id in (?)", joins(:prices).
|
||||
where(deleted_at: nil).
|
||||
where('spree_prices.currency' =>
|
||||
currency || Spree::Config[:currency]).
|
||||
where('spree_prices.amount IS NOT NULL').
|
||||
select("spree_variants.id"))
|
||||
end
|
||||
|
||||
# We override in_stock? to avoid depending
|
||||
# on the non-overridable method Spree::Stock::Quantifier.can_supply?
|
||||
# VariantStock implements can_supply? itself which depends on overridable methods
|
||||
def in_stock?(quantity = 1)
|
||||
can_supply?(quantity)
|
||||
end
|
||||
|
||||
# Allow variant to access associated soft-deleted prices.
|
||||
def default_price
|
||||
Spree::Price.unscoped { super }
|
||||
end
|
||||
|
||||
def price_with_fees(distributor, order_cycle)
|
||||
price + fees_for(distributor, order_cycle)
|
||||
end
|
||||
|
||||
def fees_for(distributor, order_cycle)
|
||||
OpenFoodNetwork::EnterpriseFeeCalculator.new(distributor, order_cycle).fees_for self
|
||||
end
|
||||
|
||||
def fees_by_type_for(distributor, order_cycle)
|
||||
OpenFoodNetwork::EnterpriseFeeCalculator.new(distributor, order_cycle).fees_by_type_for self
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def update_weight_from_unit_value
|
||||
self.weight = weight_from_unit_value if product.variant_unit == 'weight' && unit_value.present?
|
||||
end
|
||||
|
||||
def destruction
|
||||
exchange_variants(:reload).destroy_all
|
||||
yield
|
||||
end
|
||||
end
|
||||
@@ -17,7 +17,7 @@ module Api
|
||||
issues_summary(confirmation_only: true)
|
||||
|
||||
if issues.nil? && products.empty?
|
||||
issues = "no products in inventory"
|
||||
issues = I18n.t(:no_products)
|
||||
end
|
||||
issues
|
||||
end
|
||||
|
||||
@@ -31,7 +31,7 @@ class ExchangeProductsRenderer
|
||||
end
|
||||
|
||||
def supplied_products(enterprises_query_matcher)
|
||||
products_relation = Spree::Product.where(supplier_id: enterprises_query_matcher)
|
||||
products_relation = Spree::Product.where(supplier_id: enterprises_query_matcher).order(:name)
|
||||
|
||||
filter_visible(products_relation)
|
||||
end
|
||||
|
||||
14
app/services/permitted_attributes/calculator.rb
Normal file
14
app/services/permitted_attributes/calculator.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module PermittedAttributes
|
||||
class Calculator
|
||||
def self.attributes
|
||||
[
|
||||
:id, :preferred_currency, :preferred_amount, :preferred_flat_percent,
|
||||
:preferred_minimal_amount, :preferred_normal_amount, :preferred_discount_amount,
|
||||
:preferred_unit_from_list, :preferred_per_unit, :preferred_first_item,
|
||||
:preferred_additional_item, :preferred_max_items
|
||||
]
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -9,17 +9,24 @@ module PermittedAttributes
|
||||
def call
|
||||
return @params[:order_cycle] if @params[:order_cycle].blank?
|
||||
|
||||
@params.require(:order_cycle).permit(
|
||||
@params.require(:order_cycle).permit(attributes)
|
||||
end
|
||||
|
||||
def self.basic_attributes
|
||||
[
|
||||
:name, :orders_open_at, :orders_close_at, :coordinator_id,
|
||||
:preferred_product_selection_from_coordinator_inventory_only,
|
||||
incoming_exchanges: permitted_exchange_attributes,
|
||||
outgoing_exchanges: permitted_exchange_attributes,
|
||||
schedule_ids: [], coordinator_fee_ids: []
|
||||
)
|
||||
]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def attributes
|
||||
self.class.basic_attributes + [incoming_exchanges: permitted_exchange_attributes,
|
||||
outgoing_exchanges: permitted_exchange_attributes]
|
||||
end
|
||||
|
||||
def permitted_exchange_attributes
|
||||
[
|
||||
:id, :sender_id, :receiver_id, :enterprise_id, :incoming, :active,
|
||||
|
||||
21
app/services/permitted_attributes/payment_method.rb
Normal file
21
app/services/permitted_attributes/payment_method.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module PermittedAttributes
|
||||
class PaymentMethod
|
||||
def initialize(params)
|
||||
@params = params
|
||||
end
|
||||
|
||||
def call
|
||||
@params.permit(
|
||||
[:name, :description, :type, :active,
|
||||
:environment, :display_on, :tag_list,
|
||||
:preferred_enterprise_id, :preferred_server, :preferred_login, :preferred_password,
|
||||
:calculator_type, :preferred_api_key,
|
||||
:preferred_signature, :preferred_solution, :preferred_landing_page, :preferred_logourl,
|
||||
:preferred_test_mode, :calculator_type, { distributor_ids: [] },
|
||||
{ calculator_attributes: PermittedAttributes::Calculator.attributes }]
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -19,7 +19,7 @@
|
||||
.three.columns.alpha
|
||||
= f.label "enterprise_preferred_shopfront_taxon_order", t('.shopfront_category_ordering')
|
||||
%br
|
||||
(top to bottom)
|
||||
= t('.shopfront_category_ordering_note')
|
||||
.eight.columns.omega
|
||||
%textarea.fullwidth{ id: 'enterprise_preferred_shopfront_taxon_order', name: 'enterprise[preferred_shopfront_taxon_order]', rows: 6, 'ng-model' => 'Enterprise.preferred_shopfront_taxon_order', 'ofn-taxon-autocomplete' => '', 'multiple-selection' => 'true', placeholder: 'Category' }
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
%meta{charset: 'utf-8'}/
|
||||
%meta{name: 'viewport', content: "width=device-width,initial-scale=1.0"}/
|
||||
|
||||
%title= content_for?(:title) ? "#{yield(:title)} - #{Spree::Config[:site_name]}" : "#{t(:welcome_to)} #{Spree::Config[:site_name]}"
|
||||
%title= content_for?(:title) ? "#{yield(:title)} - #{Spree::Config[:site_name]}".html_safe : "#{t(:welcome_to)} #{Spree::Config[:site_name]}"
|
||||
- if Rails.env.production?
|
||||
= favicon_link_tag "/favicon.ico"
|
||||
- else
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%nav.top-bar.show-for-large-up{'data-topbar' => true}
|
||||
%section.top-bar-section
|
||||
%ul.left
|
||||
%ul.nav-logo
|
||||
%li.ofn-logo
|
||||
%a{href: main_app.root_path}
|
||||
%img{src: ContentConfig.logo.url}
|
||||
@@ -10,7 +10,7 @@
|
||||
= t 'powered_by'
|
||||
%a{href: '/'}
|
||||
= t 'title'
|
||||
%ul.center
|
||||
%ul.nav-main-menu
|
||||
- [*1..7].each do |menu_number|
|
||||
- menu_name = "menu_#{menu_number}"
|
||||
- if ContentConfig[menu_name].present?
|
||||
@@ -18,7 +18,7 @@
|
||||
%a{href: t("#{menu_name}_url") }
|
||||
%span.nav-primary
|
||||
= t "#{menu_name}_title"
|
||||
%ul.menu.icons.right
|
||||
%ul.nav-icons-menu
|
||||
- if OpenFoodNetwork::I18nConfig.selectable_locales.count > 1
|
||||
= render 'shared/menu/language_selector'
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
- if order.line_items.exists?
|
||||
%fieldset#order-total.no-border-bottom{"data-hook" => "order_details_total"}
|
||||
%legend= t(".order_total")
|
||||
%legend{ align: 'center' }= t(".order_total")
|
||||
%span.order-total= order.display_total
|
||||
|
||||
= form_for @order, url: admin_order_url(@order), method: :put do |f|
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- if adjustments.present?
|
||||
%fieldset.no-border-bottom
|
||||
%legend= title
|
||||
%legend{ align: 'center' }= title
|
||||
%table>
|
||||
%thead
|
||||
%tr
|
||||
|
||||
@@ -54,8 +54,8 @@
|
||||
|
||||
%td.actions
|
||||
- if can? :update, shipment
|
||||
= link_to '', '#', :class => 'save-method icon_link icon-ok no-text with-tip', :data => { 'shipment-number' => shipment.number, :action => 'save' }, title: Spree.t('actions.save')
|
||||
= link_to '', '#', :class => 'cancel-method icon_link icon-cancel no-text with-tip', :data => { :action => 'cancel' }, :title => Spree.t('actions.cancel')
|
||||
= link_to '', '#', :class => 'save-method icon_link icon-ok no-text with-tip', :data => { 'shipment-number' => shipment.number, :action => 'save' }, title: I18n.t('actions.save')
|
||||
= link_to '', '#', :class => 'cancel-method icon_link icon-cancel no-text with-tip', :data => { :action => 'cancel' }, :title => I18n.t('actions.cancel')
|
||||
|
||||
%tr.show-method.total
|
||||
%td{ :colspan => "4" }
|
||||
@@ -83,8 +83,8 @@
|
||||
|
||||
%td.actions
|
||||
- if can? :update, shipment
|
||||
= link_to '', '#', :class => 'save-tracking icon_link icon-ok no-text with-tip', :data => { 'shipment-number' => shipment.number, :action => 'save' }, :title => Spree.t('actions.save')
|
||||
= link_to '', '#', :class => 'cancel-tracking icon_link icon-cancel no-text with-tip', :data => { :action => 'cancel' }, :title => Spree.t('actions.cancel')
|
||||
= link_to '', '#', :class => 'save-tracking icon_link icon-ok no-text with-tip', :data => { 'shipment-number' => shipment.number, :action => 'save' }, :title => I18n.t('actions.save')
|
||||
= link_to '', '#', :class => 'cancel-tracking icon_link icon-cancel no-text with-tip', :data => { :action => 'cancel' }, :title => I18n.t('actions.cancel')
|
||||
|
||||
%tr.show-tracking.total
|
||||
%td{ :colspan => "5" }
|
||||
|
||||
@@ -11,4 +11,4 @@
|
||||
= f.text_field :value, class: 'autocomplete'
|
||||
%td.actions
|
||||
- if f.object.persisted?
|
||||
= link_to_delete f.object, { url: admin_product_product_property_url(@product, f.object, @url_filters), no_text: true }
|
||||
= link_to_delete f.object, { url: spree.admin_product_product_property_url(@product, f.object, @url_filters), no_text: true }
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
= admin_inject_available_units
|
||||
|
||||
- content_for :page_actions do
|
||||
%li= button_link_to t('admin.products.back_to_products_list'), "#{admin_products_path}#{(@url_filters.empty? ? "" : "#?#{@url_filters.to_query}")}", :icon => 'icon-arrow-left'
|
||||
%li#new_product_link
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
= render :partial => 'spree/admin/shared/product_sub_menu'
|
||||
= render :partial => 'spree/shared/error_messages', :locals => { :target => @product }
|
||||
= admin_inject_available_units
|
||||
|
||||
= form_for [:admin, @product], :html => { :multipart => true } do |f|
|
||||
.twelve.columns.alpha
|
||||
%fieldset.no-border-bottom{ id: "new_product" }
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
:scope => 'date_picker',
|
||||
:default => 'yy/mm/dd'),
|
||||
:abbr_day_names => I18n.t(:abbr_day_names, :scope => :date),
|
||||
:add => Spree.t(:add),
|
||||
:add => I18n.t(:add, scope: :actions),
|
||||
:are_you_sure_delete => Spree.t(:are_you_sure_delete),
|
||||
:bill_address => Spree.t(:bill_address),
|
||||
:bill_address => I18n.t(:bill_address),
|
||||
:choose_a_customer => Spree.t(:choose_a_customer),
|
||||
:confirm_delete => Spree.t(:confirm_delete),
|
||||
:cut => Spree.t(:cut),
|
||||
:destroy => Spree.t(:destroy),
|
||||
:cut => I18n.t(:cut, scope: :actions),
|
||||
:destroy => I18n.t(:destroy, scope: :actions),
|
||||
:edit => Spree.t(:edit),
|
||||
:loading => Spree.t(:loading),
|
||||
:month_names => I18n.t(:month_names, :scope => :date).reject(&:blank?),
|
||||
@@ -19,13 +19,13 @@
|
||||
:datetime_ui_close_text => I18n.t('datetime_picker_ui.close_text'),
|
||||
:datetime_ui_time_text => I18n.t('datetime_picker_ui.time_text'),
|
||||
:name => Spree.t(:name),
|
||||
:next => Spree.t(:next),
|
||||
:paste => Spree.t(:paste),
|
||||
:previous => Spree.t(:previous),
|
||||
:remove => Spree.t(:remove),
|
||||
:rename => Spree.t(:rename),
|
||||
:next => I18n.t(:next),
|
||||
:paste => I18n.t(:paste, scope: :actions),
|
||||
:previous => I18n.t(:previous),
|
||||
:remove => I18n.t(:remove),
|
||||
:rename => I18n.t(:rename, scope: :actions),
|
||||
:sku => Spree.t(:sku),
|
||||
:value => Spree.t(:value)
|
||||
:value => I18n.t(:value)
|
||||
}.to_json
|
||||
%>
|
||||
</script>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
%col{ style: "width: 15%" }
|
||||
%thead
|
||||
%tr
|
||||
%th= sort_link @search,:email, t(".user"), {}, {title: "users_email_title"}
|
||||
%th= sort_link @search,:enterprise_limit, t(".enterprise_limit")
|
||||
%th= sort_link [:spree, @search], :email, t(".user"), {}, {title: "users_email_title"}
|
||||
%th= sort_link [:spree, @search], :enterprise_limit, t(".enterprise_limit")
|
||||
%th.actions
|
||||
%tbody
|
||||
- @users.each do |user|
|
||||
@@ -26,7 +26,9 @@
|
||||
%td.user_enterprise_limit= user.enterprise_limit
|
||||
%td.actions
|
||||
= link_to_delete user, no_text: true
|
||||
= paginate @users
|
||||
- _with_routes Spree::Core::Engine.routes do
|
||||
= paginate @users
|
||||
|
||||
- content_for :sidebar_title do
|
||||
= t(".search")
|
||||
- content_for :sidebar do
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
%li
|
||||
= button_link_to t("spree.new_zone"), new_object_url, icon: 'icon-plus', id: 'admin_new_zone_link'
|
||||
|
||||
= paginate @zones
|
||||
- _with_routes Spree::Core::Engine.routes do
|
||||
= paginate @zones
|
||||
|
||||
- if @zones.empty?
|
||||
.no-objects-found
|
||||
@@ -22,9 +23,9 @@
|
||||
%col{style: "width: 15%"}/
|
||||
%thead
|
||||
%tr
|
||||
%th= sort_link @search,:name, t("spree.name"), title: 'zones_order_by_name_title'
|
||||
%th= sort_link [:spree, @search], :name, t("spree.name"), title: 'zones_order_by_name_title'
|
||||
%th
|
||||
= sort_link @search,:description, t("spree.description"), {}, {title: 'zones_order_by_description_title'}
|
||||
= sort_link [:spree, @search], :description, t("spree.description"), {}, {title: 'zones_order_by_description_title'}
|
||||
%th= t("spree.default_tax")
|
||||
%th.actions
|
||||
%tbody
|
||||
@@ -38,4 +39,5 @@
|
||||
%td.actions
|
||||
= link_to_edit zone, no_text: true
|
||||
= link_to_delete zone, no_text: true
|
||||
= paginate @zones
|
||||
- _with_routes Spree::Core::Engine.routes do
|
||||
= paginate @zones
|
||||
|
||||
@@ -14,6 +14,6 @@
|
||||
= f.password_field :password, class: 'title'
|
||||
|
||||
%p
|
||||
= f.label :password_confirmation, Spree.t(:confirm_password)
|
||||
= f.label :password_confirmation, t(:password_confirmation)
|
||||
%br
|
||||
= f.password_field :password_confirmation, class: 'title'
|
||||
|
||||
@@ -3,6 +3,9 @@ require_relative 'boot'
|
||||
require 'rails/all'
|
||||
require_relative "../lib/open_food_network/i18n_config"
|
||||
|
||||
require_relative '../lib/spree/core/environment'
|
||||
require_relative '../lib/spree/core/mail_interceptor'
|
||||
|
||||
if defined?(Bundler)
|
||||
# If you precompile assets before deploying to production, use this line
|
||||
Bundler.require(*Rails.groups(:assets => %w(development test)))
|
||||
@@ -20,6 +23,49 @@ module Openfoodnetwork
|
||||
end
|
||||
end
|
||||
|
||||
config.after_initialize do
|
||||
# We need this here because the test env file loads before the Spree engine is loaded
|
||||
Spree::Core::Engine.routes.default_url_options[:host] = 'test.host' if Rails.env == 'test'
|
||||
end
|
||||
|
||||
# We reload the routes here
|
||||
# so that the appended/prepended routes are available to the application.
|
||||
config.after_initialize do
|
||||
Rails.application.routes_reloader.reload!
|
||||
end
|
||||
|
||||
initializer "spree.environment", before: :load_config_initializers do |app|
|
||||
app.config.spree = Spree::Core::Environment.new
|
||||
Spree::Config = app.config.spree.preferences # legacy access
|
||||
end
|
||||
|
||||
initializer "spree.load_preferences", before: "spree.environment" do
|
||||
::ActiveRecord::Base.include Spree::Preferences::Preferable
|
||||
end
|
||||
|
||||
initializer "spree.register.payment_methods" do |app|
|
||||
app.config.spree.payment_methods = [
|
||||
Spree::Gateway::Bogus,
|
||||
Spree::Gateway::BogusSimple,
|
||||
Spree::PaymentMethod::Check
|
||||
]
|
||||
end
|
||||
|
||||
initializer "spree.mail.settings" do |_app|
|
||||
Spree::Core::MailSettings.init
|
||||
Mail.register_interceptor(Spree::Core::MailInterceptor)
|
||||
end
|
||||
|
||||
# filter sensitive information during logging
|
||||
initializer "spree.params.filter" do |app|
|
||||
app.config.filter_parameters += [
|
||||
:password,
|
||||
:password_confirmation,
|
||||
:number,
|
||||
:verification_value
|
||||
]
|
||||
end
|
||||
|
||||
# Settings dependent on locale
|
||||
#
|
||||
# We need to set this config before the promo environment gets loaded and
|
||||
|
||||
@@ -55,4 +55,3 @@ end
|
||||
|
||||
# Allows us to use _url helpers in Rspec
|
||||
Rails.application.routes.default_url_options[:host] = 'test.host'
|
||||
Spree::Core::Engine.routes.default_url_options[:host] = 'test.host'
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
require "action_dispatch/request"
|
||||
@@ -1,3 +1,14 @@
|
||||
Paperclip::Attachment.default_options[:source_file_options] = {
|
||||
all: "-auto-orient"
|
||||
}
|
||||
|
||||
url_adapters = [
|
||||
"Paperclip::UriAdapter",
|
||||
"Paperclip::HttpUrlProxyAdapter",
|
||||
"Paperclip::DataUriAdapter"
|
||||
]
|
||||
|
||||
# Remove Paperclip URL adapters from registered handlers
|
||||
Paperclip.io_adapters.registered_handlers.delete_if do |_proc, adapter_class|
|
||||
url_adapters.include? adapter_class.to_s
|
||||
end
|
||||
|
||||
@@ -3,11 +3,16 @@
|
||||
# Your secret key for verifying the integrity of signed cookies.
|
||||
# If you change this key, all old signed cookies will become invalid!
|
||||
# Make sure the secret is at least 30 characters and all random,
|
||||
# no regular words or you'll be exposed to dictionary attacks.
|
||||
Openfoodnetwork::Application.config.secret_token = if Rails.env.development? or Rails.env.test?
|
||||
# no regular words or you'll be exposed to dictionary attacks.
|
||||
|
||||
secret_key = if Rails.env.development? or Rails.env.test?
|
||||
('x' * 30) # Meets basic minimum of 30 chars.
|
||||
else
|
||||
ENV["SECRET_TOKEN"]
|
||||
end
|
||||
|
||||
Openfoodnetwork::Application.config.secret_key_base = 'ceb1eb86c50285e696f899b2e7ea306d1ec1e81fe5c7af0e5cbc238bebe3fd60f19df7b9076fab836182821ebe14e41b64bdcdb4370520dc5bb711c1bc0ae616'
|
||||
# Rails 4+ key for signing and encrypting cookies.
|
||||
Openfoodnetwork::Application.config.secret_key_base = secret_key
|
||||
|
||||
# Legacy secret_token variable. This is still used directly for encryption.
|
||||
Openfoodnetwork::Application.config.secret_token = secret_key
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# In order to initialize a setting do:
|
||||
# config.setting_name = 'new value'
|
||||
|
||||
require "spree/core/environment"
|
||||
require 'spree/core'
|
||||
|
||||
# Due to a bug in ActiveRecord we need to load the tagging code in Gateway which
|
||||
# should have inherited it from its parent PaymentMethod.
|
||||
@@ -37,9 +37,9 @@ Spree.config do |config|
|
||||
end
|
||||
|
||||
# Attachments settings
|
||||
Spree::Image.set_attachment_attributes(:path, ENV['ATTACHMENT_PATH']) if ENV['ATTACHMENT_PATH']
|
||||
Spree::Image.set_attachment_attributes(:url, ENV['ATTACHMENT_URL']) if ENV['ATTACHMENT_URL']
|
||||
Spree::Image.set_s3_attachment_definitions
|
||||
Spree::Image.set_attachment_attribute(:path, ENV['ATTACHMENT_PATH']) if ENV['ATTACHMENT_PATH']
|
||||
Spree::Image.set_attachment_attribute(:url, ENV['ATTACHMENT_URL']) if ENV['ATTACHMENT_URL']
|
||||
Spree::Image.set_storage_attachment_attributes
|
||||
|
||||
# Spree 2.0 recommends explicitly setting this here when using spree_auth_devise
|
||||
Spree.user_class = 'Spree::User'
|
||||
|
||||
@@ -289,10 +289,16 @@ ar:
|
||||
create_and_add_another: "إنشاء وإضافة آخر"
|
||||
create: "انشاء"
|
||||
cancel: "إلغاء"
|
||||
resume: "اكمل"
|
||||
save: "حفظ"
|
||||
edit: "تعديل"
|
||||
update: "تحديث"
|
||||
delete: "حذف"
|
||||
add: "إضافة"
|
||||
cut: "قص"
|
||||
paste: "لصق"
|
||||
destroy: "الغاء"
|
||||
rename: "إعادة تسمية"
|
||||
admin:
|
||||
begins_at: يبدأ عند
|
||||
begins_on: يبدأ في
|
||||
@@ -600,6 +606,8 @@ ar:
|
||||
controls:
|
||||
back_to_my_inventory: العودة إلى المخزون الخاص بي
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: هل أنت متأكد أنك تريد %{event} هذا الطلب؟
|
||||
invoice_email_sent: 'تم إرسال فاتورة البريد الإلكتروني'
|
||||
order_email_resent: 'تم اعادة ارسال الطلب لبريدك الإلكتروني'
|
||||
bulk_management:
|
||||
@@ -648,6 +656,7 @@ ar:
|
||||
invoice_text: أضف نصًا مخصصًا في نهاية الفواتير
|
||||
terms_and_conditions: "الأحكام والشروط"
|
||||
remove_terms_and_conditions: "إزالة الملف"
|
||||
uploaded_on: "تم الرفع في"
|
||||
contact:
|
||||
name: اسم
|
||||
name_placeholder: على سبيل المثال. برقوق غوستاف
|
||||
@@ -755,6 +764,7 @@ ar:
|
||||
للعملاء توقع فتحه مرة أخرى. يتم عرض هذا في متجرك فقط عندما لا يكون لديك
|
||||
دورات طلبات نشطة (على سبيل المثال ، المتجر مغلق).
|
||||
shopfront_category_ordering: "ترتيب فئة واجهة المتجر"
|
||||
shopfront_category_ordering_note: "(من اعلى لاسفل)"
|
||||
open_date: "تاريخ الفتح "
|
||||
close_date: "تاريخ الاغلاق"
|
||||
social:
|
||||
@@ -1164,6 +1174,7 @@ ar:
|
||||
cart: "سلة التسوق"
|
||||
message_html: "لديك طلب لدورة الطلب هذه بالفعل. تحقق من %{cart} لرؤية العناصر التي طلبتها من قبل. يمكنك أيضًا إلغاء العناصر طالما كانت دورة الطلب مفتوحة."
|
||||
terms_and_conditions:
|
||||
message_html: "أوافق على %{terms_and_conditions_link} للبائع."
|
||||
link_text: "الأحكام والشروط"
|
||||
failed: "فشل الخروج. يرجى إعلامنا حتى نتمكن من معالجة طلبك."
|
||||
shops:
|
||||
@@ -1578,9 +1589,7 @@ ar:
|
||||
hubs_distance: الأقرب إلى
|
||||
hubs_distance_filter: "أرني المتاجر بالقرب من %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
zero: لديك <a href='%{path}' target='_blank'>%{count} أوامر مع %{shop}</a> مفتوحة حاليًا للمراجعة. يمكنك إجراء تغييرات حتى %{oc_close}.
|
||||
one: طلبك مع <a href='%{path}' target='_blank'>%{shop} / %{order}</a> مفتوح للمراجعة. يمكنك إجراء تغييرات حتى %{oc_close}.
|
||||
two: لديك <a href='%{path}' target='_blank'>%{count} أوامر مع %{shop}</a> مفتوحة حاليًا للمراجعة. يمكنك إجراء تغييرات حتى %{oc_close}.
|
||||
few: لديك <a href='%{path}' target='_blank'>%{count} أوامر مع %{shop}</a> مفتوحة حاليًا للمراجعة. يمكنك إجراء تغييرات حتى %{oc_close}.
|
||||
many: لديك <a href='%{path}' target='_blank'>%{count} أوامر مع %{shop}</a> مفتوحة حاليًا للمراجعة. يمكنك إجراء تغييرات حتى %{oc_close}.
|
||||
other: لديك <a href='%{path}' target='_blank'>%{count} أوامر مع %{shop}</a> مفتوحة حاليًا للمراجعة. يمكنك إجراء تغييرات حتى %{oc_close}.
|
||||
@@ -1728,9 +1737,7 @@ ar:
|
||||
orders_could_not_cancel: "عذرًا ، تعذر إلغاء الطلب"
|
||||
orders_cannot_remove_the_final_item: "لا يمكن إزالة العنصر الأخير من الطلب ، يرجى إلغاء الطلب بدلاً من ذلك."
|
||||
orders_bought_items_notice:
|
||||
zero: "%{count} البنود الإضافية المؤكدة بالفعل لدورة الطلب هذه"
|
||||
one: "تم تأكيد عنصر إضافي بالفعل لدورة الطلب هذه"
|
||||
two: "%{count} البنود الإضافية المؤكدة بالفعل لدورة الطلب هذه"
|
||||
one: تم بالفعل تأكيد عنصر إضافي لدورة الطلب هذه
|
||||
few: "%{count} البنود الإضافية المؤكدة بالفعل لدورة الطلب هذه"
|
||||
many: "%{count} البنود الإضافية المؤكدة بالفعل لدورة الطلب هذه"
|
||||
other: "%{count} البنود الإضافية المؤكدة بالفعل لدورة الطلب هذه"
|
||||
@@ -2406,6 +2413,14 @@ ar:
|
||||
customer_tagged_rules_text: >
|
||||
من خلال إنشاء قواعد متعلقة بوسم عميل معين ، يمكنك تجاوز السلوك الافتراضي
|
||||
(سواء كان لإظهار أو إخفاء عناصر) للعملاء الذين لديهم وسم محدد.
|
||||
terms_and_conditions_info:
|
||||
title: "تحميل الشروط والأحكام"
|
||||
message_1: "الشروط والأحكام هي العقد المبرم بينك وبين البائع والمتسوق. إذا قمت بتحميل ملف هنا ، يجب على المتسوقين قبول الشروط والأحكام الخاصة بك لإكمال عملية الدفع. بالنسبة للمتسوق ، سيظهر هذا على شكل مربع اختيار عند الخروج يجب تحديده من أجل متابعة عملية الدفع. نوصي بشدة بتحميل الشروط والأحكام بما يتماشى مع التشريعات الوطنية."
|
||||
message_2: "سيُطلب من المتسوقين قبول البنود والشروط مرة واحدة فقط. ومع ذلك ، إذا قمت بتغيير الشروط والأحكام ، فسيُطلب من المتسوقين مرة أخرى قبولها قبل أن يتمكنوا من الدفع."
|
||||
terms_and_conditions_warning:
|
||||
title: "تحميل الشروط والأحكام"
|
||||
message_1: "سيتعين على جميع المشترين الموافقة عليهم مرة واحدة عند الخروج. إذا قمت بتحديث الملف ، فسيتعين على جميع المشترين الموافقة عليهم مرة أخرى عند الخروج."
|
||||
message_2: "بالنسبة للمشترين الذين لديهم اشتراكات ، يجب أن ترسل إليهم الشروط والأحكام (أو التغييرات عليها) عبر البريد الإلكتروني في الوقت الحالي ، ولن يخطرهم أي شيء بهذه الشروط والأحكام الجديدة."
|
||||
panels:
|
||||
save: حفظ
|
||||
saved: تم الحفظ
|
||||
@@ -2957,6 +2972,8 @@ ar:
|
||||
delete: "حذف"
|
||||
cannot_set_shipping_method_without_address: "لا يمكن ضبط طريقة الشحن حتى يتم تقديم تفاصيل العميل."
|
||||
no_tracking_present: "لم يتم تقديم تفاصيل التتبع."
|
||||
tracking: "تتبع"
|
||||
tracking_number: "أرقام التتبع"
|
||||
order_total: "مجموع الطلب "
|
||||
customer_details: "تفاصيل العميل"
|
||||
customer_search: "بحث العملاء"
|
||||
@@ -2978,6 +2995,7 @@ ar:
|
||||
adjustments: "التعديلات"
|
||||
continue: "تابع"
|
||||
fill_in_customer_info: "يرجى ملء معلومات العملاء"
|
||||
credit_card: "بطاقة ائتمان"
|
||||
new_payment: "دفعة جديد"
|
||||
capture: "إلتقاط"
|
||||
void: "فارغ"
|
||||
@@ -2989,6 +3007,8 @@ ar:
|
||||
server: "الخادم"
|
||||
test_mode: "وضع الاختبار"
|
||||
logourl: "وحدة"
|
||||
are_you_sure_delete: "هل أنت متأكد أنك تريد حذف هذا السجل؟"
|
||||
confirm_delete: "تأكيد الحذف"
|
||||
configurations: "تهيئة"
|
||||
general_settings: "الاعدادات العامة"
|
||||
site_name: "اسم الموقع"
|
||||
@@ -3098,6 +3118,7 @@ ar:
|
||||
has_no_shipped_units: "لا يوجد لديه طلبات مشحونة"
|
||||
successfully_created: '%{resource} تم إنشاؤه بنجاح!'
|
||||
successfully_updated: 'تم تحديث %{resource} بنجاح!'
|
||||
payment_method: "طريقة الدفع او السداد"
|
||||
payment_processing_failed: "لا يمكن معالجة الدفع ، يرجى التحقق من التفاصيل التي أدخلتها"
|
||||
not_available: "غير متاح"
|
||||
order_populator:
|
||||
@@ -3107,9 +3128,7 @@ ar:
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
zero: "منعت أخطاء %{count} حفظ هذا السجل:"
|
||||
one: "حظر خطأ واحد حفظ هذا السجل:"
|
||||
two: "منعت أخطاء %{count} حفظ هذا السجل:"
|
||||
one: "خطأ 1 منع حفظ هذا السجل:"
|
||||
few: "منعت أخطاء %{count} حفظ هذا السجل:"
|
||||
many: "منعت أخطاء %{count} حفظ هذا السجل:"
|
||||
other: "منعت أخطاء %{count} حفظ هذا السجل:"
|
||||
@@ -3150,7 +3169,6 @@ ar:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "وراثة الخصائص من %{supplier}؟ (ما لم يتم تجاوزه أعلاه)"
|
||||
add_product_properties: "إضافة خصائص المنتج"
|
||||
select_from_prototype: "حدد من النموذج الأولي"
|
||||
properties:
|
||||
index:
|
||||
properties: "الخصائص"
|
||||
@@ -3243,6 +3261,8 @@ ar:
|
||||
active_products:
|
||||
zero: "ليس لديك أي منتجات نشطة."
|
||||
one: "لديك منتج نشط واحد"
|
||||
few: "لديك %{count} من المنتجات النشطة"
|
||||
many: "لديك %{count} من المنتجات النشطة"
|
||||
other: "لديك %{count} من المنتجات النشطة"
|
||||
order_cycles:
|
||||
order_cycles: "دورات الطلب"
|
||||
@@ -3250,6 +3270,8 @@ ar:
|
||||
you_have_active:
|
||||
zero: "ليس لديك أي دورات طلب نشطة."
|
||||
one: "لديك دورة طلب نشطة واحدة."
|
||||
few: "لديك %{count} دورات طلب نشط."
|
||||
many: "لديك %{count} دورات طلب نشط."
|
||||
other: "لديك %{count} دورات طلب نشط."
|
||||
manage_order_cycles: "ادارة دورات الطلب"
|
||||
shipping_methods:
|
||||
@@ -3470,7 +3492,7 @@ ar:
|
||||
remember_this_card: تذكر هذه البطاقة؟
|
||||
date_picker:
|
||||
format: '٪ س-٪ م-%d'
|
||||
js_format: 'يوم-شهر-سنة'
|
||||
js_format: 'yy-mm-dd'
|
||||
orders:
|
||||
error_flash_for_unavailable_items: "عنصر في سلة التسوق الخاصة بك أصبح غير متوفر. يرجى تحديث الكميات المحددة."
|
||||
edit:
|
||||
|
||||
@@ -289,10 +289,16 @@ ca:
|
||||
create_and_add_another: "Crea i afegeix-ne una altra"
|
||||
create: "Crear"
|
||||
cancel: "Cancel·lar"
|
||||
resume: "Continuar"
|
||||
save: "Desa"
|
||||
edit: "Editar"
|
||||
update: "Actualitzar"
|
||||
delete: "Suprimir"
|
||||
add: "Afegeix"
|
||||
cut: "Tallar"
|
||||
paste: "Enganxar"
|
||||
destroy: "Eliminar"
|
||||
rename: "Reanomenar"
|
||||
admin:
|
||||
begins_at: Comença a
|
||||
begins_on: Comença
|
||||
@@ -351,6 +357,7 @@ ca:
|
||||
has_n_rules: "té%{num} regles"
|
||||
unsaved_confirm_leave: "Hi ha canvis no desats canviats en aquesta pàgina. Continua sense desar?"
|
||||
unsaved_changes: "Teniu canvis sense desar"
|
||||
available_units: "Unitats disponibles"
|
||||
shopfront_settings:
|
||||
embedded_shopfront_settings: "Configuració de botiga incrustada"
|
||||
enable_embedded_shopfronts: "Habilita les botigues incrustades"
|
||||
@@ -410,6 +417,7 @@ ca:
|
||||
search_by_email: "Cerca per correu electrònic/codi ..."
|
||||
guest_label: "Fer comanda com a convidat"
|
||||
credit_owed: "Crèdit a deure"
|
||||
balance_due: "A pagar"
|
||||
destroy:
|
||||
has_associated_orders: "S'ha produït un error en suprimir: la consumidora té comandes associades amb la seva botiga"
|
||||
contents:
|
||||
@@ -598,6 +606,8 @@ ca:
|
||||
controls:
|
||||
back_to_my_inventory: Torna al meu inventari
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: Esteu segur que voleu %{event} aquesta comanda?
|
||||
invoice_email_sent: 'S''ha enviat el correu electrònic de la factura'
|
||||
order_email_resent: 'S''ha reenviat el correu electrònic de la comanda'
|
||||
bulk_management:
|
||||
@@ -646,6 +656,7 @@ ca:
|
||||
invoice_text: Afegeix text personalitzat al final de les factures
|
||||
terms_and_conditions: "Termes i condicions"
|
||||
remove_terms_and_conditions: "Elimina el fitxer"
|
||||
uploaded_on: "carregat el"
|
||||
contact:
|
||||
name: Nom
|
||||
name_placeholder: 'p. ex: Josep Ribes'
|
||||
@@ -757,6 +768,7 @@ ca:
|
||||
no hi hagi cicles de comanda actius (és a dir, quan la botiga estigui
|
||||
tancada).
|
||||
shopfront_category_ordering: "Ordre de les categories de la botiga"
|
||||
shopfront_category_ordering_note: "(de dalt a baix)"
|
||||
open_date: "Data d'obertura"
|
||||
close_date: "Data de tancament"
|
||||
social:
|
||||
@@ -1166,6 +1178,7 @@ ca:
|
||||
cart: "cistella"
|
||||
message_html: "Ja teniu una comanda per a aquest cicle de comanda. Consulteu %{cart} per veure els articles que heu demanat anteriorment. També podeu cancel·lar articles sempre que el cicle de comanda estigui obert."
|
||||
terms_and_conditions:
|
||||
message_html: "Accepto el %{terms_and_conditions_link} del venedor."
|
||||
link_text: "Termes i condicions"
|
||||
failed: "La comanda ha fallat. Informeu-nos perquè puguem processar la vostra comanda."
|
||||
shops:
|
||||
@@ -1580,7 +1593,9 @@ ca:
|
||||
hubs_distance: El més proper a
|
||||
hubs_distance_filter: "Mostra'm botigues properes a%{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: El vostre ordre amb <a href='%{path}' target='_blank'> %{shop} / %{order} </ a> està obert per a la seva revisió. Podeu fer canvis fins %{oc_close}.
|
||||
one: La vostra comanda amb <a href='%{path}' target='_blank'>%{shop} / %{order}</a> està oberta per revisió. Podeu fer canvis fins %{oc_close}.
|
||||
few: Tens <a href='%{path}' target='_blank'> %{count} comandes amb %{shop} </a> actualment obertes per a la seva revisió. Pots fer canvis fins %{oc_close}.
|
||||
many: Tens <a href='%{path}' target='_blank'> %{count} comandes amb %{shop} </a> actualment obertes per a la seva revisió. Pots fer canvis fins %{oc_close}.
|
||||
other: Tens <a href='%{path}' target='_blank'> %{count} comandes amb %{shop} </a> actualment obertes per a la seva revisió. Pots fer canvis fins %{oc_close}.
|
||||
orders_changeable_orders_alert_html: S'ha confirmat aquesta comanda però pots fer-hi canvis fins a <strong> %{oc_close} </strong>.
|
||||
products_clear: Netejar
|
||||
@@ -1726,7 +1741,9 @@ ca:
|
||||
orders_could_not_cancel: "Disculpa, no s'ha pogut cancel·lar la teva comanda "
|
||||
orders_cannot_remove_the_final_item: "No es pot eliminar l'article final d'una comanda, si us plau, en comptes d'això cancel·leu la comanda."
|
||||
orders_bought_items_notice:
|
||||
one: "Ja s'ha confirmat un element addicional per al cicle d'aquest ordre"
|
||||
one: Ja s'ha confirmat un article addicional per a aquest cicle de comanda
|
||||
few: "%{count}articles addicionals confirmats per a aquest cicle de comandes"
|
||||
many: "%{count}articles addicionals confirmats per a aquest cicle de comandes"
|
||||
other: "%{count}articles addicionals confirmats per a aquest cicle de comandes"
|
||||
orders_bought_edit_button: Edita articles confirmats
|
||||
orders_bought_already_confirmed: "* ja confirmat"
|
||||
@@ -2406,6 +2423,14 @@ ca:
|
||||
En crear regles relacionades amb una etiqueta de client específica,
|
||||
podeu anul·lar el comportament predeterminat (ja sigui per mostrar o
|
||||
ocultar elements) per als clients amb l'etiqueta especificada.
|
||||
terms_and_conditions_info:
|
||||
title: "S'estan penjant els termes i condicions"
|
||||
message_1: "Els Termes i condicions són el contracte entre el venedor i el comprador. Si pengeu un fitxer aquí, els compradors han d’acceptar els vostres Termes i condicions per completar el pagament. Per al comprador, apareixerà com a casella de selecció a la comanda que s’ha de marcar per continuar amb la compra. Us recomanem que pengeu els Termes i condicions d'acord amb la legislació nacional."
|
||||
message_2: "Els compradors només hauran d’acceptar els Termes i condicions una vegada. Tanmateix, si canvieu els vostres Termes i condicions, els compradors hauran de tornar a acceptar-los abans de poder fer la comanda."
|
||||
terms_and_conditions_warning:
|
||||
title: "S'estan penjant els termes i condicions"
|
||||
message_1: "Tots els compradors hauran d’acceptar-los al fer la comanda. Si actualitzeu el fitxer, tots els compradors hauran d’acceptar-los de nou a la finalització de la compra."
|
||||
message_2: "Per als compradors que tinguin subscripcions, heu d’enviar-los per correu electrònic els Termes i condicions (o els canvis que s’hi apliquen) per ara, res els notificarà sobre aquests nous Termes i condicions."
|
||||
panels:
|
||||
save: DESA
|
||||
saved: DESAT
|
||||
@@ -2863,6 +2888,8 @@ ca:
|
||||
delete: "Suprimir"
|
||||
cannot_set_shipping_method_without_address: "No es pot establir el mètode d'enviament fins que no es proporcionin les dades del client."
|
||||
no_tracking_present: "No es proporcionen dades de seguiment."
|
||||
tracking: "Seguiment"
|
||||
tracking_number: "Número de seguiment"
|
||||
order_total: "Total comanda"
|
||||
customer_details: "Detalls de la consumidora"
|
||||
customer_search: "Cerca la consumidora"
|
||||
@@ -2884,6 +2911,7 @@ ca:
|
||||
adjustments: "Ajustaments"
|
||||
continue: "Continua"
|
||||
fill_in_customer_info: "Ompliu la informació de la consumidora"
|
||||
credit_card: "Targeta de crèdit"
|
||||
new_payment: "Nou pagament"
|
||||
capture: "Pagat"
|
||||
void: "Pendent"
|
||||
@@ -2895,6 +2923,8 @@ ca:
|
||||
server: "Servidor"
|
||||
test_mode: "Mode de prova"
|
||||
logourl: "URL del logo"
|
||||
are_you_sure_delete: "Esteu segur que voleu suprimir aquest registre?"
|
||||
confirm_delete: "Confirmeu l'eliminació"
|
||||
configurations: "Configuracions"
|
||||
general_settings: "Configuració general"
|
||||
site_name: "Nom del lloc"
|
||||
@@ -3004,6 +3034,7 @@ ca:
|
||||
has_no_shipped_units: "no té cap unitat enviada"
|
||||
successfully_created: '%{resource} s''ha creat correctament.'
|
||||
successfully_updated: '%{resource} s''ha actualitzat correctament.'
|
||||
payment_method: "Mètode de pagament"
|
||||
payment_processing_failed: "El pagament no s'ha pogut processar, comproveu les dades que heu introduït"
|
||||
not_available: "No disponible"
|
||||
order_populator:
|
||||
@@ -3013,7 +3044,9 @@ ca:
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "Un error va prohibir guardar aquest registre:"
|
||||
one: "1 error ha impedit que es guardi aquest registre:"
|
||||
few: "%{count} errors han impedit guardar aquest registre:"
|
||||
many: "%{count} errors han impedit guardar aquest registre:"
|
||||
other: "%{count} errors han impedit guardar aquest registre:"
|
||||
there_were_problems_with_the_following_fields: "Hi ha hagut problemes amb els camps següents"
|
||||
payments_list:
|
||||
@@ -3052,7 +3085,6 @@ ca:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "heredar propietats de %{supplier}? (llevat que es sobreescrigui a dalt)"
|
||||
add_product_properties: "Afegeix propietats del producte"
|
||||
select_from_prototype: "Seleccioneu d'un prototip"
|
||||
properties:
|
||||
index:
|
||||
properties: "Propietats"
|
||||
@@ -3145,6 +3177,8 @@ ca:
|
||||
active_products:
|
||||
zero: "No tens cap producte actiu."
|
||||
one: "Teniu un producte actiu"
|
||||
few: "Teniu %{count} productes actius"
|
||||
many: "Teniu %{count} productes actius"
|
||||
other: "Teniu %{count} productes actius"
|
||||
order_cycles:
|
||||
order_cycles: "Cicles de comanda"
|
||||
@@ -3152,6 +3186,8 @@ ca:
|
||||
you_have_active:
|
||||
zero: "No tens cicles de comanda actius."
|
||||
one: "Tens un cicle de comanda actiu."
|
||||
few: "Tens %{count} cicles de comanda actius"
|
||||
many: "Tens %{count} cicles de comanda actius"
|
||||
other: "Tens %{count} cicles de comanda actius"
|
||||
manage_order_cycles: "GESTIONA ELS CICLES DE COMANDA"
|
||||
shipping_methods:
|
||||
@@ -3426,6 +3462,7 @@ ca:
|
||||
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.
|
||||
subject: "Instruccions per restablir la contrasenya"
|
||||
confirmation_instructions:
|
||||
subject: "Si us plau confirma el teu compte d'OFN"
|
||||
shipment_mailer:
|
||||
|
||||
3614
config/locales/cy.yml
Normal file
3614
config/locales/cy.yml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -14,6 +14,7 @@ de_DE:
|
||||
spree/payment:
|
||||
amount: Betrag
|
||||
state: Status
|
||||
source: Quelle
|
||||
spree/product:
|
||||
primary_taxon: "Produktkategorie"
|
||||
supplier: "Anbieter"
|
||||
@@ -23,6 +24,9 @@ de_DE:
|
||||
spree/credit_card:
|
||||
base: "Kreditkarte"
|
||||
number: "Nummer"
|
||||
month: "Monat"
|
||||
verification_value: "Überprüfungswert"
|
||||
year: "Jahr"
|
||||
order_cycle:
|
||||
orders_close_at: Schlussdatum
|
||||
variant_override:
|
||||
@@ -120,6 +124,10 @@ de_DE:
|
||||
integer_array_validator:
|
||||
not_array_error: "muss ein Array sein"
|
||||
invalid_element_error: "muss nur gültige Ganzzahlen enthalten"
|
||||
datetime_picker_ui:
|
||||
current_text: Jetzt
|
||||
close_text: Erledigt
|
||||
time_text: Zeit
|
||||
enterprise_mailer:
|
||||
confirmation_instructions:
|
||||
subject: "Bitte bestätigen Sie die E-Mail-Adresse für %{enterprise}"
|
||||
@@ -184,6 +192,7 @@ de_DE:
|
||||
explainer: Die automatische Verarbeitung dieser Aufträge ist aus einem unbekannten Grund fehlgeschlagen. Dies sollte nicht geschehen, bitte kontaktieren Sie uns, wenn Sie dies sehen.
|
||||
home: "OFN"
|
||||
title: "Open Food Network"
|
||||
welcome_to: "Willkommen bei"
|
||||
site_meta_description: "Wir starten ganz grundsätzlich. Mit LandwirtInnen und GärtnerInnen, die stolz und ehrlich ihre Geschichte erzählen. Mit Lieferanten, die Menschen fair und vertrauenswürdig mit Produkten verbinden. Mit KonsumentInnen, die glauben, daß ihre wöchentlichen Einkaufsentscheidungen..."
|
||||
search_by_name: Suche nach Name oder Ort...
|
||||
producers_join: 'Wir laden Deutsche Produzenten ein, jetzt dem Open Food Network beizutreten. '
|
||||
@@ -226,6 +235,7 @@ de_DE:
|
||||
enterprises: Unternehmen
|
||||
enterprise_groups: Gruppen
|
||||
reports: Berichte
|
||||
listing_reports: Packberichte
|
||||
variant_overrides: Katalog
|
||||
import: Importieren
|
||||
spree_products: Spree Produkte
|
||||
@@ -272,14 +282,23 @@ de_DE:
|
||||
on hand: "Verfügbar"
|
||||
ship: "Liefern"
|
||||
shipping_category: "Versandkategorie"
|
||||
height: "Höhe"
|
||||
width: "Breite"
|
||||
depth: "Tiefe"
|
||||
actions:
|
||||
create_and_add_another: "Erstellen und weitere hinzufügen"
|
||||
create: "Neu"
|
||||
cancel: "Abbrechen"
|
||||
resume: "Fortsetzen"
|
||||
save: "Speichern"
|
||||
edit: "Bearbeiten"
|
||||
update: "Aktualisieren"
|
||||
delete: "Löschen"
|
||||
add: "Hinzufügen"
|
||||
cut: "Ausschneiden"
|
||||
paste: "Einfügen"
|
||||
destroy: "Zerstören"
|
||||
rename: "Umbenennen"
|
||||
admin:
|
||||
begins_at: Beginnt um
|
||||
begins_on: Beginnt am
|
||||
@@ -327,6 +346,7 @@ de_DE:
|
||||
show_n_more: '%{num} mehr zeigen'
|
||||
choose: "Wählen..."
|
||||
please_select: Bitte auswählen...
|
||||
column_save_as_default: Als Standard speichern
|
||||
columns: Spalten
|
||||
actions: Aktionen
|
||||
viewing: "Zeigt: %{current_view_name}"
|
||||
@@ -337,6 +357,7 @@ de_DE:
|
||||
has_n_rules: "hat %{num} Regel(n)"
|
||||
unsaved_confirm_leave: "Es gibt ungespeicherte Änderungen auf dieser Seite. Möchten Sie ohne Speichern fortfahren?"
|
||||
unsaved_changes: "Sie haben ungespeicherte Änderungen"
|
||||
available_units: "Verfügbare Einheiten"
|
||||
shopfront_settings:
|
||||
embedded_shopfront_settings: "Eingebettete Ladeneinstellungen"
|
||||
enable_embedded_shopfronts: "Eingebettete Läden erlauben"
|
||||
@@ -371,7 +392,10 @@ de_DE:
|
||||
title: "Matomo-Einstellungen"
|
||||
matomo_url: "Matomo-URL"
|
||||
matomo_site_id: "Matomo-Site-ID"
|
||||
matomo_tag_manager_url: "Matomo Tag Manager URL"
|
||||
info_html: "Matomo ist eine Web- und Mobile Analytics-Anwendung. Sie können Matomo entweder lokal hosten oder einen in der Cloud gehosteten Dienst verwenden. Weitere Informationen finden Sie unter <a href='http://matomo.org' target='_blank'>matomo.org</a> ."
|
||||
config_instructions_html: "Hier können Sie die OFN Matomo Integration konfigurieren. Die unten angegebene Matomo-URL sollte auf die Matomo-Instanz verweisen, an die die Benutzerverfolgungsinformationen gesendet werden. Wenn es leer bleibt, wird das Matomo-Benutzer-Tracking deaktiviert. Das Feld Site-ID ist nicht obligatorisch, aber nützlich, wenn Sie mehr als eine Website in einer einzelnen Matomo-Instanz verfolgen. Es kann auf der Matomo-Instanzkonsole gefunden werden."
|
||||
config_instructions_tag_manager_html: "Durch Festlegen der Matomo Tag Manager-URL wird Matomo Tag Manager aktiviert. Mit diesem Tool können Sie Analyseereignisse einrichten. Die Matomo Tag Manager-URL wird aus dem Abschnitt Installationscode von Matomo Tag Manager kopiert. Stellen Sie sicher, dass Sie den richtigen Container und die richtige Umgebung auswählen, da diese Optionen die URL ändern."
|
||||
customers:
|
||||
index:
|
||||
new_customer: "Neuer Kunde"
|
||||
@@ -392,6 +416,8 @@ de_DE:
|
||||
confirm_delete: "Sicher zu löschen?"
|
||||
search_by_email: "Suche nach Email/Kode"
|
||||
guest_label: "Gäste Kasse"
|
||||
credit_owed: "Gutschrift geschuldet"
|
||||
balance_due: "Restbetrag fällig"
|
||||
destroy:
|
||||
has_associated_orders: "Löschen fehlgeschlagen: Kunde hat Bestellungen mit diesem Laden"
|
||||
contents:
|
||||
@@ -478,6 +504,7 @@ de_DE:
|
||||
line_number: "Zeile %{number}:"
|
||||
encoding_error: "Bitte überprüfen Sie die Spracheinstellung Ihrer Quelldatei und stellen Sie sicher, dass sie mit der UTF-8-Kodierung gespeichert wird"
|
||||
unexpected_error: "Beim Produktimport ist beim Öffnen der Datei ein unerwarteter Fehler aufgetreten: %{error_message}"
|
||||
malformed_csv: "Beim Produktimport ist eine fehlerhafte CSV aufgetreten: %{error_message}"
|
||||
index:
|
||||
notice: "Beachten"
|
||||
beta_notice: "Diese Funktion befindet sich noch in der Beta-Phase: Während der Verwendung können Fehler auftreten. Bitte zögern Sie nicht, den Support zu kontaktieren."
|
||||
@@ -579,6 +606,8 @@ de_DE:
|
||||
controls:
|
||||
back_to_my_inventory: Zurück zu meinem Katalog
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: Sind Sie sicher, dass Sie diese Bestellung %{event} möchten?
|
||||
invoice_email_sent: 'Rechnungs-E-Mail wurde gesendet'
|
||||
order_email_resent: 'Bestellungs-E-Mail wurde erneut gesendet'
|
||||
bulk_management:
|
||||
@@ -588,6 +617,7 @@ de_DE:
|
||||
order_date: "Abgeschlossen am"
|
||||
max: "Max"
|
||||
product_unit: "Produkt: Einheit"
|
||||
weight_volume: "Gewicht / Volumen (g)"
|
||||
ask: "Fragen?"
|
||||
page_title: "Massenbearbeitung von Bestellungen"
|
||||
actions_delete: "Ausgewählte löschen"
|
||||
@@ -624,6 +654,9 @@ de_DE:
|
||||
acn_placeholder: z.B. 93815/08152
|
||||
display_invoice_logo: Logo in Rechnungen anzeigen
|
||||
invoice_text: Fügen Sie benutzerdefinierten Text am Ende der Rechnungen hinzu
|
||||
terms_and_conditions: "Geschäftsbedingungen"
|
||||
remove_terms_and_conditions: "Datei löschen"
|
||||
uploaded_on: "hochgeladen am"
|
||||
contact:
|
||||
name: Name
|
||||
name_placeholder: z.B. Gustav Pflaume
|
||||
@@ -692,6 +725,7 @@ de_DE:
|
||||
ofn_uid_tip: Die eindeutige ID, mit der das Unternehmen in Open Food Network identifiziert wird.
|
||||
shipping_methods:
|
||||
name: "Name"
|
||||
applies: "Aktiv?"
|
||||
manage: "Lieferarten verwalten"
|
||||
create_button: "Neue Lieferart erstellen"
|
||||
create_one_button: "Erstelle jetzt eine"
|
||||
@@ -714,6 +748,8 @@ de_DE:
|
||||
enable_subscriptions_tip: "Abo-Funktionalität aktivieren?"
|
||||
enable_subscriptions_false: "deaktiviert"
|
||||
enable_subscriptions_true: "aktiviert"
|
||||
customer_names_in_reports: "Kundennamen in Berichten"
|
||||
customer_names_tip: "Ermöglichen Sie Ihren Lieferanten, die Namen Ihrer Kunden in Berichten anzuzeigen"
|
||||
customer_names_false: "deaktiviert"
|
||||
customer_names_true: "aktiviert"
|
||||
shopfront_message: "Laden-Nachricht"
|
||||
@@ -731,6 +767,7 @@ de_DE:
|
||||
wieder geöffnet wird. Dies wird in Ihrem Laden nur angezeigt, wenn Sie
|
||||
keine aktiven Bestellzyklen haben (d.h. Laden ist geschlossen).
|
||||
shopfront_category_ordering: "Ordnung der Produktkategorien im Laden"
|
||||
shopfront_category_ordering_note: "(oben nach unten)"
|
||||
open_date: "Öffnungsdatum"
|
||||
close_date: "Abschlussdatum"
|
||||
social:
|
||||
@@ -865,6 +902,7 @@ de_DE:
|
||||
incoming: "Eingehend"
|
||||
supplier: "Anbieter"
|
||||
products: "Produkte"
|
||||
receival_details: "Empfangsdetails"
|
||||
fees: "Gebühren"
|
||||
save: "Speichern"
|
||||
save_and_next: "Speichern und weiter"
|
||||
@@ -1130,12 +1168,17 @@ de_DE:
|
||||
destroy_attachment_does_not_exist: "Logo existiert nicht"
|
||||
enterprise_promo_image:
|
||||
destroy_attachment_does_not_exist: "Webebild existiert nicht"
|
||||
enterprise_terms_and_conditions:
|
||||
destroy_attachment_does_not_exist: "AGB-Datei existiert nicht"
|
||||
orders:
|
||||
failed_to_update: "Bestellung konnte nicht aktualisiert werden"
|
||||
checkout:
|
||||
already_ordered:
|
||||
cart: "Warenkorb"
|
||||
message_html: "Sie haben bereits eine Bestellung für diesen Bestellzyklus. Überprüfen Sie den %{cart}, um die Artikel zu sehen, die Sie zuvor bestellt haben. Sie können Artikel auch stornieren, solange der Bestellzyklus geöffnet ist."
|
||||
terms_and_conditions:
|
||||
message_html: "Ich stimme dem %{terms_and_conditions_link} des Verkäufers zu."
|
||||
link_text: "Geschäftsbedingungen"
|
||||
failed: "Die Bestellung ist fehlgeschlagen. Bitte geben Sie uns Bescheid, damit wir Ihre Bestellung trotzdem bearbeiten können."
|
||||
shops:
|
||||
hubs:
|
||||
@@ -1148,7 +1191,12 @@ de_DE:
|
||||
cart: "Wagen"
|
||||
cart_sidebar:
|
||||
checkout: "Kasse"
|
||||
edit_cart: "Warenkorb bearbeiten"
|
||||
items_in_cart_singular: "%{num} Artikel in Ihrem Warenkorb"
|
||||
items_in_cart_plural: "%{num} Artikel in Ihrem Warenkorb"
|
||||
close: "Abschließen"
|
||||
cart_empty: "Ihr Warenkorb ist leer"
|
||||
take_me_shopping: "Bring mich einkaufen!"
|
||||
signed_in:
|
||||
profile: "Profil"
|
||||
mobile_menu:
|
||||
@@ -1177,7 +1225,17 @@ de_DE:
|
||||
messages:
|
||||
customer_required:
|
||||
login: "Anmeldung"
|
||||
signup: "Anmelden"
|
||||
contact: "Kontakt"
|
||||
require_customer_login: "Nur angemeldete Kunden können auf diesen Shop zugreifen."
|
||||
require_login_html: "Wenn Sie bereits ein angemeldeter Kunde sind, fahren Sie mit %{login} oder %{signup} fort."
|
||||
require_login_2_html: "Möchten Sie hier einkaufen? Bitte %{contact} %{enterprise} und fragen Sie nach dem Beitritt."
|
||||
require_customer_html: "Wenn Sie hier einkaufen möchten, fragen Sie bitte %{contact} %{enterprise} nach dem Beitritt."
|
||||
select_oc:
|
||||
select_oc_html: "Bitte <span class='highlighted'>wählen</span> Sie <span class='highlighted'>, wann Sie Ihre Bestellung wünschen, um</span> zu sehen, welche Produkte verfügbar sind."
|
||||
products:
|
||||
summary:
|
||||
bulk: "Bulk"
|
||||
card_could_not_be_updated: Die Karte konnte nicht aktualisiert werden
|
||||
card_could_not_be_saved: Karte konnte nicht gespeichert werden
|
||||
spree_gateway_error_flash_for_checkout: "Bei den Zahlungsinformationen ist ein Problem aufgetreten: %{error}"
|
||||
@@ -1241,7 +1299,7 @@ de_DE:
|
||||
email: 'E-Mail:'
|
||||
phone: Telefonnummer
|
||||
next: Weiter
|
||||
address: Adresse
|
||||
address: Straße + Hausnummer
|
||||
address_placeholder: z.B. Gartenstrasse 123
|
||||
address2: Adresse (Fortsetzung)
|
||||
city: Ort
|
||||
@@ -1439,12 +1497,12 @@ de_DE:
|
||||
email_signature: "%{sitename} Team"
|
||||
email_confirm_customer_greeting: "Hallo %{name},"
|
||||
email_confirm_customer_intro_html: "Vielen Dank für ihren Einkauf bei <strong> %{distributor} </strong>!"
|
||||
email_confirm_customer_number_html: "Bestellbestätigung <strong> # %{number} </ strong>"
|
||||
email_confirm_customer_details_html: "Hier sind Ihre Bestelldetails von <strong> %{distributor} </ strong>:"
|
||||
email_confirm_customer_number_html: "<strong>Bestellbestätigung # %{number}</strong>"
|
||||
email_confirm_customer_details_html: "Hier sind Ihre <strong>Bestelldaten</strong> von <strong>%{distributor}</strong> :"
|
||||
email_confirm_customer_signoff: "Mit freundlichen Grüßen,"
|
||||
email_confirm_shop_greeting: "Hallo %{name},"
|
||||
email_confirm_shop_order_html: "Gut gemacht! Sie haben eine neue Bestellung für <strong> %{distributor} </ strong>!"
|
||||
email_confirm_shop_number_html: "Bestellbestätigung <strong> # %{number} </ strong>"
|
||||
email_confirm_shop_number_html: "<strong>Bestellbestätigung # %{number}</strong>"
|
||||
email_order_summary_item: "Artikel"
|
||||
email_order_summary_quantity: "Menge"
|
||||
email_order_summary_sku: "Artikelnummer"
|
||||
@@ -1457,7 +1515,7 @@ de_DE:
|
||||
email_payment_summary: Zahlungsübersicht
|
||||
email_payment_method: "Bezahlen per:"
|
||||
email_so_placement_intro_html: "Sie haben eine neue Bestellung mit <strong> %{distributor} </ strong>"
|
||||
email_so_placement_details_html: "Hier sind die Details Ihrer Bestellung für <strong> %{distributor} </ strong>:"
|
||||
email_so_placement_details_html: "Hier sind die Details Ihrer Bestellung für <strong>%{distributor}</strong> :"
|
||||
email_so_placement_changes: "Leider waren nicht alle von Ihnen angeforderten Produkte verfügbar. Die von Ihnen angeforderten Originalmengen sind unten durchgestrichen."
|
||||
email_so_payment_success_intro_html: "Eine automatische Zahlung wurde für Ihre Bestellung von <strong> %{distributor} </ strong> verarbeitet."
|
||||
email_so_placement_explainer_html: "Diese Bestellung wurde automatisch für Sie erstellt."
|
||||
@@ -1470,7 +1528,7 @@ de_DE:
|
||||
email_so_confirmation_details_html: "Hier finden Sie alles, was Sie über Ihre Bestellung wissen müssen: <strong> %{distributor} </ strong>:"
|
||||
email_so_empty_intro_html: "Wir haben versucht, eine neue Bestellung mit <strong> %{distributor} </ strong> zu platzieren, hatten aber einige Probleme ..."
|
||||
email_so_empty_explainer_html: "Leider war keines der von Ihnen bestellten Produkte verfügbar, daher wurde keine Bestellung aufgegeben. Die von Ihnen angeforderten Originalmengen sind unten durchgestrichen."
|
||||
email_so_empty_details_html: "Hier sind die Details der nicht platzierten Reihenfolge für <strong> %{distributor} </ strong>:"
|
||||
email_so_empty_details_html: "Hier sind die Details der nicht platzierten Bestellung für <strong>%{distributor}</strong> :"
|
||||
email_so_failed_payment_intro_html: "Wir haben versucht, eine Zahlung zu verarbeiten, hatten aber einige Probleme ..."
|
||||
email_so_failed_payment_explainer_html: "Die Zahlung für Ihr Abonnement mit <strong> %{distributor} </ strong> ist aufgrund eines Problems mit Ihrer Kreditkarte fehlgeschlagen. <strong> %{distributor} </ strong> wurde über diese fehlgeschlagene Zahlung benachrichtigt."
|
||||
email_so_failed_payment_details_html: "Hier sind die Details des vom Zahlungs-Gateway bereitgestellten Fehlers:"
|
||||
@@ -1478,7 +1536,7 @@ de_DE:
|
||||
email_shipping_delivery_time: "Lieferung am:"
|
||||
email_shipping_delivery_address: "Lieferadresse:"
|
||||
email_shipping_collection_details: Sammlungsdetails
|
||||
email_shipping_collection_time: "Bereit für die Sammlung:"
|
||||
email_shipping_collection_time: "Bereit zur Abholung"
|
||||
email_shipping_collection_instructions: "Sammlung Anweisungen:"
|
||||
email_special_instructions: "Deine Noten:"
|
||||
email_signup_greeting: Hallo!
|
||||
@@ -1494,7 +1552,7 @@ de_DE:
|
||||
set_a_password: "Sie werden dann aufgefordert, ein Kennwort festzulegen, bevor Sie das Unternehmen verwalten können."
|
||||
mistakenly_sent: "Nicht sicher, warum Sie diese E-Mail erhalten haben? Bitte kontaktieren Sie %{owner_email} für weitere Informationen."
|
||||
producer_mail_greeting: "Liebe/r"
|
||||
producer_mail_text_before: "Wir haben jetzt alle Verbraucherbestellungen für den nächsten Essenstropfen."
|
||||
producer_mail_text_before: "Wir haben jetzt alle Verbraucherbestellungen für die nächste Auslieferung."
|
||||
producer_mail_order_text: "Hier finden Sie eine Zusammenfassung der Bestellungen für Ihre Produkte:"
|
||||
producer_mail_delivery_instructions: "Lagerabholung / Lieferanweisungen:"
|
||||
producer_mail_signoff: "Danke und die besten Wünsche"
|
||||
@@ -1534,16 +1592,24 @@ de_DE:
|
||||
hubs_distance: Am nächsten
|
||||
hubs_distance_filter: "Läden in der Nähe von %{location}suchen"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Ihre Bestellung mit <a href='%{path}' target='_blank'> %{shop} / %{order} </a> kann bearbeitet werden. Sie können Änderungen bis %{oc_close} vornehmen.
|
||||
other: Sie haben <a href='%{path}' target='_blank'> %{count} Bestellungen mit %{shop} </a> zur Überprüfung geöffnet. Sie können Änderungen bis %{oc_close} vornehmen.
|
||||
one: Ihre Bestellung mit <a href='%{path}' target='_blank'>%{shop} / %{order} kann</a> überprüft werden. Sie können Änderungen bis %{oc_close} vornehmen.
|
||||
few: Sie haben <a href='%{path}' target='_blank'>%{count} Bestellungen mit %{shop}, die</a> derzeit zur Überprüfung geöffnet sind. Sie können Änderungen bis %{oc_close} vornehmen.
|
||||
many: Sie haben <a href='%{path}' target='_blank'>%{count} Bestellungen mit %{shop}, die</a> derzeit zur Überprüfung geöffnet sind. Sie können Änderungen bis %{oc_close} vornehmen.
|
||||
other: Sie haben <a href='%{path}' target='_blank'>%{count} Bestellungen mit %{shop}, die</a> derzeit zur Überprüfung geöffnet sind. Sie können Änderungen bis %{oc_close} vornehmen.
|
||||
orders_changeable_orders_alert_html: Diese Bestellung wurde bestätigt, Sie können jedoch bis <strong> %{oc_close} </ strong> Änderungen vornehmen.
|
||||
products_clear: Leeren
|
||||
products_showing: "Angezeigt:"
|
||||
products_results_for: "Ergebnisse für"
|
||||
products_or: "oder"
|
||||
products_and: "und"
|
||||
products_filters_in: "im"
|
||||
products_with: mit
|
||||
products_search: "Suche..."
|
||||
products_filter_by: "Filtern nach"
|
||||
products_filter_selected: "ausgewählt"
|
||||
products_filter_heading: "Filter"
|
||||
products_filter_clear: "Leeren"
|
||||
products_filter_done: "Erledigt"
|
||||
products_loading: "Lade Produkte..."
|
||||
products_updating_cart: "Einkaufswagen aktualisieren..."
|
||||
products_cart_empty: "Leerer Einkaufswagen"
|
||||
@@ -1554,6 +1620,8 @@ de_DE:
|
||||
products_update_error_msg: "Speichern Fail"
|
||||
products_update_error_data: "Speichern wegen ungültiger Daten fehlgeschlagen:"
|
||||
products_changes_saved: "Änderungen gespeichert"
|
||||
products_no_results_html: "Für %{query} wurden leider keine Ergebnisse gefunden"
|
||||
products_clear_search: "Suche zurücksetzen"
|
||||
search_no_results_html: "Es wurden leider keine Ergebnisse für %{query} gefunden. Versuchen Sie eine andere Suche?"
|
||||
components_profiles_popover: "Profile haben keinen Laden im Open Food Network, verkaufen möglicherweise aber anderswo online oder offline."
|
||||
components_profiles_show: "Profile anzeigen"
|
||||
@@ -1672,7 +1740,9 @@ de_DE:
|
||||
orders_could_not_cancel: "Entschuldigung, die Bestellung konnte nicht storniert werden"
|
||||
orders_cannot_remove_the_final_item: "Der letzte Artikel aus einer Bestellung kann nicht entfernt werden. Bitte stornieren Sie stattdessen die Bestellung."
|
||||
orders_bought_items_notice:
|
||||
one: "Für diesen Bestellzyklus ist bereits eine zusätzliche Position bestätigt"
|
||||
one: Für diesen Bestellzyklus ist bereits ein zusätzlicher Artikel bestätigt
|
||||
few: "%{count} zusätzliche Artikel, die bereits für diesen Bestellzyklus bestätigt wurden"
|
||||
many: "%{count} zusätzliche Artikel, die bereits für diesen Bestellzyklus bestätigt wurden"
|
||||
other: "%{count} zusätzliche Artikel, die bereits für diesen Bestellzyklus bestätigt wurden"
|
||||
orders_bought_edit_button: Bestätigte Artikel bearbeiten
|
||||
orders_bought_already_confirmed: "* schon bestätigt"
|
||||
@@ -1694,6 +1764,7 @@ de_DE:
|
||||
remember_me: Erinnere dich an mich
|
||||
are_you_sure: "Bist du sicher?"
|
||||
orders_open: "Bestellungen öffnen"
|
||||
closing: "Schließen"
|
||||
going_back_to_home_page: "Bring dich zurück auf die Homepage"
|
||||
creating: Erstellen
|
||||
updating: Aktualisierung
|
||||
@@ -1907,6 +1978,7 @@ de_DE:
|
||||
admin_enterprise_relationships_permits: "Genehmigungen"
|
||||
admin_enterprise_relationships_seach_placeholder: "Suche"
|
||||
admin_enterprise_relationships_button_create: "Neu"
|
||||
admin_enterprise_relationships_to: "zu"
|
||||
admin_enterprise_groups: "Unternehmensgruppen"
|
||||
admin_enterprise_groups_name: "Name"
|
||||
admin_enterprise_groups_owner: "Inhaber"
|
||||
@@ -1935,6 +2007,7 @@ de_DE:
|
||||
supplier: "Anbieter"
|
||||
product_name: "Produktname"
|
||||
product_description: "Produktbeschreibung"
|
||||
permalink: "Permalink"
|
||||
shipping_categories: "Versandkategorien"
|
||||
units: "Einheitsgröße"
|
||||
coordinator: "Koordinator"
|
||||
@@ -1948,6 +2021,7 @@ de_DE:
|
||||
calculator: "Rechner"
|
||||
calculator_values: "Rechnerwerte"
|
||||
calculator_settings_warning: "Wenn Sie den Gebühren-Typ ändern, müssen Sie zuerst speichern, bevor Sie die Gebühren-Einstellungen bearbeiten können"
|
||||
calculator_preferred_unit_error: "muss kg oder lb sein"
|
||||
flat_percent_per_item: "Flache Prozent (pro Artikel)"
|
||||
flat_rate_per_item: "Pauschale (pro Stück)"
|
||||
flat_rate_per_order: "Pauschalpreis pro Bestellung)"
|
||||
@@ -2031,6 +2105,8 @@ de_DE:
|
||||
remove_tax: "Steuer entfernen"
|
||||
first_name_begins_with: "Der Vorname beginnt mit"
|
||||
last_name_begins_with: "Nachname beginnt mit"
|
||||
shipping_method: "Versandart"
|
||||
new_order: "Neue Bestellung"
|
||||
enterprise_tos_link: "Link zu den AGB des Unternehmens"
|
||||
enterprise_tos_message: "Wir wollen mit Menschen zusammenarbeiten, die unsere Ziele und Werte teilen. Als solche bitten wir neue Unternehmen, uns zuzustimmen"
|
||||
enterprise_tos_link_text: "AGB."
|
||||
@@ -2049,6 +2125,7 @@ de_DE:
|
||||
hub_sidebar_at_least: "Mindestens ein Hub muss ausgewählt sein"
|
||||
hub_sidebar_blue: "Blau"
|
||||
hub_sidebar_red: "rot"
|
||||
order_cycles_closed_for_hub: "Der von Ihnen ausgewählte Hub ist vorübergehend für Bestellungen geschlossen. Bitte versuchen Sie es später noch einmal."
|
||||
report_customers_distributor: "Verteiler"
|
||||
report_customers_supplier: "Anbieter"
|
||||
report_customers_cycle: "Bestellungszyklus"
|
||||
@@ -2254,6 +2331,7 @@ de_DE:
|
||||
enterprise_name_error: "wurde bereits vergeben. Wenn dies Ihr Unternehmen ist und Sie die Eigentumsrechte beanspruchen möchten oder wenn Sie mit diesem Unternehmen handeln möchten, wenden Sie sich bitte an den aktuellen Manager dieses Profils unter %{email}."
|
||||
enterprise_owner_error: "^ %{email} darf keine weiteren Unternehmen besitzen (Limit ist %{enterprise_limit})."
|
||||
enterprise_role_uniqueness_error: "^ Diese Rolle ist bereits vorhanden."
|
||||
enterprise_terms_and_conditions_type_error: "Es sind nur PDFs zulässig"
|
||||
inventory_item_visibility_error: muss wahr oder falsch sein
|
||||
product_importer_file_error: "Fehler: keine Datei hochgeladen"
|
||||
product_importer_spreadsheet_error: "Datei konnte nicht verarbeitet werden: ungültiges Datenformat"
|
||||
@@ -2285,6 +2363,7 @@ de_DE:
|
||||
order_cycles_email_to_producers_notice: 'E-Mails, die an die Produzenten gesendet werden sollen, wurden zum Senden in die Warteschlange gestellt.'
|
||||
order_cycles_no_permission_to_coordinate_error: "Keines Ihrer Unternehmen ist berechtigt, einen Bestellzyklus zu koordinieren"
|
||||
order_cycles_no_permission_to_create_error: "Sie sind nicht berechtigt, einen von diesem Unternehmen koordinierten Bestellzyklus zu erstellen"
|
||||
order_cycle_closed: "Der von Ihnen ausgewählte Bestellzyklus wurde gerade geschlossen. Bitte versuche es erneut!"
|
||||
back_to_orders_list: "Zurück zur Bestellliste"
|
||||
no_orders_found: "Keine Bestellungen gefunden"
|
||||
order_information: "Bestellinformationen"
|
||||
@@ -2312,6 +2391,10 @@ de_DE:
|
||||
resolve_errors: Bitte beheben Sie die folgenden Fehler
|
||||
more_items: "+ %{count} Mehr"
|
||||
default_card_updated: Standardkarte aktualisiert
|
||||
cart:
|
||||
add_to_cart_failed: >
|
||||
Beim Hinzufügen dieses Produkts zum Warenkorb ist ein Problem aufgetreten.
|
||||
Möglicherweise ist es nicht mehr verfügbar oder der Shop schließt.
|
||||
admin:
|
||||
enterprise_limit_reached: "Sie haben die Standardgrenze für Unternehmen pro Konto erreicht. Schreiben Sie an %{contact_email}, wenn Sie es erhöhen müssen."
|
||||
modals:
|
||||
@@ -2336,6 +2419,14 @@ de_DE:
|
||||
customer_tagged_rules_text: >
|
||||
Durch das Erstellen von Regeln für ein bestimmtes Stichwort können Sie
|
||||
die Standardregeln für bestimmte Kunden überschreiben.
|
||||
terms_and_conditions_info:
|
||||
title: "Allgemeine Geschäftsbedingungen hochladen"
|
||||
message_1: "Allgemeine Geschäftsbedingungen sind der Vertrag zwischen Ihnen, dem Verkäufer und dem Käufer. Wenn Sie hier eine Datei hochladen, müssen Käufer Ihre Allgemeinen Geschäftsbedingungen akzeptieren, um die Kaufabwicklung abzuschließen. Für den Käufer wird dies als Kontrollkästchen an der Kasse angezeigt, das aktiviert werden muss, um mit der Kasse fortzufahren. Wir empfehlen Ihnen dringend, die Allgemeinen Geschäftsbedingungen in Übereinstimmung mit den nationalen Gesetzen hochzuladen."
|
||||
message_2: "Käufer müssen die Allgemeinen Geschäftsbedingungen nur einmal akzeptieren. Wenn Sie jedoch Ihre Allgemeinen Geschäftsbedingungen ändern, müssen Käufer diese erneut akzeptieren, bevor sie zur Kasse gehen können."
|
||||
terms_and_conditions_warning:
|
||||
title: "Allgemeine Geschäftsbedingungen hochladen"
|
||||
message_1: "Alle Ihre Käufer müssen ihnen einmal an der Kasse zustimmen. Wenn Sie die Datei aktualisieren, müssen alle Ihre Käufer ihnen an der Kasse erneut zustimmen."
|
||||
message_2: "Für Käufer mit Abonnements müssen Sie ihnen vorerst die Allgemeinen Geschäftsbedingungen (oder die Änderungen an ihnen) per E-Mail senden. Nichts wird sie über diese neuen Allgemeinen Geschäftsbedingungen informieren."
|
||||
panels:
|
||||
save: SPEICHERN
|
||||
saved: GESPEICHERT
|
||||
@@ -2531,6 +2622,8 @@ de_DE:
|
||||
immediate_logo_removal_warning: "Das Logo wird sofort nach der Bestätigung entfernt."
|
||||
removed_promo_image_successfully: "Werbebild wurde erfolgreich entfernt"
|
||||
immediate_promo_image_removal_warning: "Das Werbebild wird sofort nach der Bestätigung entfernt."
|
||||
immediate_terms_and_conditions_removal_warning: "Die AGB-Datei wird sofort nach Bestätigung entfernt."
|
||||
removed_terms_and_conditions_successfully: "AGB-Datei erfolgreich entfernt"
|
||||
insufficient_stock: "Nicht genügend Lagerbestand verfügbar, nur noch %{on_hand} verfügbar"
|
||||
out_of_stock:
|
||||
reduced_stock_available: Reduzierter Bestand verfügbar
|
||||
@@ -2542,6 +2635,12 @@ de_DE:
|
||||
shopfront:
|
||||
variant:
|
||||
add_to_cart: "Hinzufügen"
|
||||
in_cart: "im Wagen"
|
||||
quantity_in_cart: "%{quantity} im Warenkorb"
|
||||
bulk_buy_modal:
|
||||
min_quantity: "Min. Menge"
|
||||
max_quantity: "Maximale Menge"
|
||||
price_breakdown: "Preisaufschlüsselung"
|
||||
variants:
|
||||
on_demand:
|
||||
'yes': "Auf Anfrage"
|
||||
@@ -2607,6 +2706,9 @@ de_DE:
|
||||
signup_or_login: "Beginnen Sie mit der Anmeldung (oder melden Sie sich an)"
|
||||
have_an_account: "Hast du schon ein Konto?"
|
||||
action_login: "Jetzt einloggen."
|
||||
stripe_elements:
|
||||
unknown_error_from_stripe: |
|
||||
Beim Einrichten Ihrer Karte in unserem Zahlungsgateway ist ein Problem aufgetreten. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut. Wenn dies ein zweites Mal fehlschlägt, kontaktieren Sie uns bitte, um Unterstützung zu erhalten.
|
||||
inflections:
|
||||
each:
|
||||
one: "jeder"
|
||||
@@ -2688,8 +2790,11 @@ de_DE:
|
||||
enterprise_fee_summaries:
|
||||
filters:
|
||||
date_range: "Datumsbereich"
|
||||
report_format_csv: "Als CSV herunterladen"
|
||||
generate_report: "Bericht generieren"
|
||||
report:
|
||||
none: "Keine"
|
||||
select_and_search: "Wählen Sie Filter aus und klicken Sie auf BERICHT ERSTELLEN, um auf Ihre Daten zuzugreifen."
|
||||
enterprise_fee_summary:
|
||||
date_end_before_start_error: "muss nach dem start sein"
|
||||
parameter_not_allowed_error: "Sie sind nicht berechtigt, einen oder mehrere ausgewählte Filter für diesen Bericht zu verwenden."
|
||||
@@ -2733,6 +2838,9 @@ de_DE:
|
||||
customer_details: "Kundendetails"
|
||||
adjustments: "Anpassungen"
|
||||
payments: "Zahlungen"
|
||||
return_authorizations: "Berechtigungen zurückgeben"
|
||||
credit_owed: "Gutschrift geschuldet"
|
||||
new_adjustment: "Neue Anpassung"
|
||||
payment: "Zahlung"
|
||||
payment_method: "Zahlungsart"
|
||||
shipment: "Sendung"
|
||||
@@ -2779,6 +2887,8 @@ de_DE:
|
||||
delete: "Löschen"
|
||||
cannot_set_shipping_method_without_address: "Versandart kann nicht festgelegt werden, bis Kundendaten angegeben werden."
|
||||
no_tracking_present: "Keine Tracking-Details angegeben."
|
||||
tracking: "Sendungsverfolgung"
|
||||
tracking_number: "Sendungscode"
|
||||
order_total: "Auftrag insgesamt"
|
||||
customer_details: "Kundendetails"
|
||||
customer_search: "Kundensuche"
|
||||
@@ -2800,11 +2910,20 @@ de_DE:
|
||||
adjustments: "Anpassungen"
|
||||
continue: "Fortsetzen"
|
||||
fill_in_customer_info: "Bitte geben Sie Ihre Kundeninformationen ein"
|
||||
credit_card: "Kreditkarte"
|
||||
new_payment: "Neue Zahlung"
|
||||
capture: "Erfassung"
|
||||
void: "Leere"
|
||||
login: "Anmeldung"
|
||||
password: "Passwort"
|
||||
signature: "Unterschrift"
|
||||
solution: "Lösung"
|
||||
landing_page: "Landing Page"
|
||||
server: "Server"
|
||||
test_mode: "Testmodus"
|
||||
logourl: "Logourl"
|
||||
are_you_sure_delete: "Möchten Sie diesen Datensatz wirklich löschen?"
|
||||
confirm_delete: "Löschung bestätigen"
|
||||
configurations: "Konfigurationen"
|
||||
general_settings: "Allgemeine Einstellungen"
|
||||
site_name: "Site-Name"
|
||||
@@ -2906,14 +3025,31 @@ de_DE:
|
||||
inventory_error_flash_for_insufficient_quantity: "Ein Artikel in Ihrem Warenkorb ist nicht mehr verfügbar."
|
||||
inventory: Katalog
|
||||
zipcode: Postleitzahl
|
||||
weight: Gewicht (pro kg oder lb)
|
||||
error_user_destroy_with_orders: "Benutzer mit abgeschlossenen Bestellungen dürfen nicht gelöscht werden"
|
||||
cannot_create_payment_without_payment_methods: "Sie können keine Zahlung für eine Bestellung erstellen, ohne dass Zahlungsmethoden definiert sind."
|
||||
please_define_payment_methods: "Bitte definieren Sie zunächst die Zahlungsmethoden."
|
||||
options: "Optionen"
|
||||
has_no_shipped_units: "hat keine versendeten Einheiten"
|
||||
successfully_created: '%{resource} wurde erfolgreich erstellt!'
|
||||
successfully_updated: '%{resource} wurde erfolgreich aktualisiert!'
|
||||
payment_method: "Zahlungsart"
|
||||
payment_processing_failed: "Die Zahlung konnte nicht bearbeitet werden. Bitte überprüfen Sie die von Ihnen eingegebenen Daten"
|
||||
not_available: "N / A"
|
||||
order_populator:
|
||||
out_of_stock: '%{item} ist nicht vorrätig.'
|
||||
actions:
|
||||
update: "Aktualisieren"
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 Fehler hat das Speichern dieses Datensatzes verhindert:"
|
||||
few: "%{count} Fehler haben das Speichern dieses Datensatzes verhindert:"
|
||||
many: "%{count} Fehler haben das Speichern dieses Datensatzes verhindert:"
|
||||
other: "%{count} Fehler haben das Speichern dieses Datensatzes verhindert:"
|
||||
there_were_problems_with_the_following_fields: "Es gab Probleme mit folgenden Feldern"
|
||||
payments_list:
|
||||
date_time: "Datum / Uhrzeit"
|
||||
amount: "Betrag"
|
||||
payment_method: "Zahlungsart"
|
||||
payment_state: "Zahlungsstatus"
|
||||
@@ -2948,7 +3084,6 @@ de_DE:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Vererben Eigenschaften von %{supplier}? (außer oben aufgehoben)"
|
||||
add_product_properties: "Produkteigenschaften hinzufügen"
|
||||
select_from_prototype: "Wählen Sie Aus Prototyp"
|
||||
properties:
|
||||
index:
|
||||
properties: "Eigenschaften"
|
||||
@@ -3041,6 +3176,8 @@ de_DE:
|
||||
active_products:
|
||||
zero: "Sie haben keine aktiven Produkte."
|
||||
one: "Sie haben ein aktives Produkt"
|
||||
few: "Sie haben %{count} aktive Produkte"
|
||||
many: "Sie haben %{count} aktive Produkte"
|
||||
other: "Sie haben %{count} aktive Produkte"
|
||||
order_cycles:
|
||||
order_cycles: "Bestellrunden"
|
||||
@@ -3048,6 +3185,8 @@ de_DE:
|
||||
you_have_active:
|
||||
zero: "Sie haben keine aktiven Bestellzyklen."
|
||||
one: "Sie haben einen aktiven Bestellzyklus."
|
||||
few: "Sie haben %{count} aktive Auftragszyklen."
|
||||
many: "Sie haben %{count} aktive Auftragszyklen."
|
||||
other: "Sie haben %{count} aktive Bestellzyklen."
|
||||
manage_order_cycles: "BESTELLRUNDEN VERWALTEN"
|
||||
shipping_methods:
|
||||
@@ -3059,6 +3198,8 @@ de_DE:
|
||||
zone: "Zone"
|
||||
calculator: "Rechner"
|
||||
display: "Anzeige"
|
||||
both: "Sowohl Checkout als auch Backoffice"
|
||||
back_end: "Nur Backoffice"
|
||||
no_shipping_methods_found: "Keine Versandmethoden gefunden"
|
||||
new:
|
||||
new_shipping_method: "Neue Versandart"
|
||||
@@ -3070,18 +3211,30 @@ de_DE:
|
||||
form:
|
||||
categories: "Kategorien"
|
||||
zones: "Zonen"
|
||||
both: "Sowohl Checkout als auch Backoffice"
|
||||
back_end: "Nur Backoffice"
|
||||
deactivation_warning: "Durch Deaktivieren einer Versandart kann die Versandart aus Ihrer Liste verschwinden. Alternativ können Sie eine Versandart auf der Checkout-Seite ausblenden, indem Sie die Option "Anzeige" auf "Nur Backoffice" setzen."
|
||||
payment_methods:
|
||||
index:
|
||||
payment_methods: "Zahlungsarten"
|
||||
new_payment_method: "Neue Zahlungsmethode"
|
||||
name: "Name"
|
||||
products_distributor: "Verteiler"
|
||||
provider: "Anbieter"
|
||||
environment: "Umgebung"
|
||||
display: "Anzeige"
|
||||
active: "Aktiv"
|
||||
both: "Beide"
|
||||
front_end: "Nur zur Kasse"
|
||||
back_end: "Nur Backoffice"
|
||||
active_yes: "Ja"
|
||||
active_no: "Nein"
|
||||
no_payment_methods_found: "Keine Zahlungsmethoden gefunden"
|
||||
new:
|
||||
new_payment_method: "Neue Zahlungsart"
|
||||
back_to_payment_methods_list: "Zurück zur Liste der Zahlungsmethoden"
|
||||
edit:
|
||||
new: "Neu"
|
||||
editing_payment_method: "Zahlungsmethode bearbeiten"
|
||||
back_to_payment_methods_list: "Zurück zur Liste der Zahlungsmethoden"
|
||||
stripe_connect:
|
||||
@@ -3100,14 +3253,25 @@ de_DE:
|
||||
form:
|
||||
name: "Name"
|
||||
description: "Beschreibung"
|
||||
environment: "Umgebung"
|
||||
display: "Anzeige"
|
||||
active: "Aktiv"
|
||||
active_yes: "Ja"
|
||||
active_no: "Nein"
|
||||
both: "Sowohl Checkout als auch Backoffice"
|
||||
front_end: "Nur zur Kasse"
|
||||
back_end: "Nur Backoffice"
|
||||
tags: "Stichwörter"
|
||||
deactivation_warning: "Durch Deaktivieren einer Zahlungsmethode kann die Zahlungsmethode aus Ihrer Liste verschwinden. Alternativ können Sie eine Zahlungsmethode auf der Checkout-Seite ausblenden, indem Sie die Option \"Anzeige\" auf \"Nur Backoffice\" setzen."
|
||||
providers:
|
||||
provider: "Anbieter"
|
||||
payments:
|
||||
source_forms:
|
||||
stripe:
|
||||
error_saving_payment: Fehler beim Speichern der Zahlung
|
||||
submitting_payment: Zahlung wird gesendet ...
|
||||
paypal:
|
||||
no_payment_via_admin_backend: Paypal-Zahlungen können nicht im Backoffice erfasst werden
|
||||
products:
|
||||
image_upload_error: "Das Produktbild wurde nicht erkannt. Bitte laden Sie ein Bild im PNG- oder JPG-Format hoch."
|
||||
new:
|
||||
@@ -3161,6 +3325,8 @@ de_DE:
|
||||
bulk_coop_allocation: 'Massenkoop - Zuteilung'
|
||||
bulk_coop_packing_sheets: 'Massenkoop - Verpackungsblätter'
|
||||
bulk_coop_customer_payments: 'Massenkoop - Kundenzahlungen'
|
||||
customer_names_message:
|
||||
customer_names_tip: "Wenn Kundennamen für von Ihnen gelieferte Bestellungen ausgeblendet sind, können Sie sich an den Händler wenden und ihn fragen, ob er seine Shop-Einstellungen aktualisieren kann, damit seine Lieferanten Kundennamen anzeigen können."
|
||||
users:
|
||||
index:
|
||||
listing_users: "Benutzer auflisten"
|
||||
@@ -3202,7 +3368,10 @@ de_DE:
|
||||
price: "Preis"
|
||||
display_as: "Angezeigt als"
|
||||
display_name: "Anzeigename"
|
||||
display_as_placeholder: 'z.B. 2 kg'
|
||||
display_name_placeholder: 'z.B. Tomaten'
|
||||
autocomplete:
|
||||
out_of_stock: "Nicht vorrättig"
|
||||
producer_name: "Produzent"
|
||||
unit: "Einheit"
|
||||
shared:
|
||||
@@ -3216,7 +3385,11 @@ de_DE:
|
||||
total: "Gesamt"
|
||||
general_settings:
|
||||
edit:
|
||||
legal_settings: "Rechtliche Einstellungen"
|
||||
cookies_consent_banner_toggle: "Zeigen Sie das Zustimmungsbanner für Cookies an"
|
||||
privacy_policy_url: "Datenschutz URL"
|
||||
enterprises_require_tos: "Unternehmen müssen die AGB akzeptieren"
|
||||
cookies_policy_matomo_section: "Zeigen Sie den Abschnitt Matomo auf der Richtlinienseite für Cookies an"
|
||||
footer_tos_url: "AGB URL"
|
||||
checkout:
|
||||
payment:
|
||||
@@ -3236,6 +3409,7 @@ de_DE:
|
||||
format: '%Y.%m.%d'
|
||||
js_format: 'dd.mm.yy'
|
||||
orders:
|
||||
error_flash_for_unavailable_items: "Ein Artikel in Ihrem Warenkorb ist nicht mehr verfügbar. Bitte aktualisieren Sie die ausgewählten Mengen."
|
||||
edit:
|
||||
login_to_view_order: "Bitte loggen Sie sich ein, um Ihre Bestellung anzuzeigen."
|
||||
bought:
|
||||
@@ -3263,6 +3437,14 @@ de_DE:
|
||||
invalid: ungültig
|
||||
order_mailer:
|
||||
cancel_email:
|
||||
customer_greeting: "Lieber %{name},"
|
||||
instructions_html: "Ihre Bestellung mit <strong>%{distributor}</strong> wurde storniert. Bitte bewahren Sie diese Stornierungsinformationen für Ihre Unterlagen auf."
|
||||
dont_cancel: "Wenn Sie Ihre Meinung geändert haben oder diese Bestellung nicht stornieren möchten, wenden Sie sich bitte an %{email}"
|
||||
order_summary_canceled_html: "<strong>Bestellübersicht # %{number} [ABGESAGT]</strong>"
|
||||
details: "Hier sind die Details Ihrer Bestellung:"
|
||||
unpaid_order: "Ihre Bestellung wurde nicht bezahlt, daher wurde keine Rückerstattung vorgenommen"
|
||||
paid_order: "Ihre Bestellung wurde bezahlt, sodass %{distributor} den vollen Betrag zurückerstattet hat"
|
||||
credit_order: "Ihre Bestellung wurde bezahlt, sodass Ihr Konto gutgeschrieben wurde"
|
||||
subject: "Stornierung der Bestellung"
|
||||
confirm_email:
|
||||
subject: "Bestellbestätigung"
|
||||
@@ -3279,6 +3461,7 @@ de_DE:
|
||||
bestätigen.
|
||||
issue_text: |
|
||||
Falls die URL nicht funktioniert, bitte den Link kopieren und in die Adresszeile Ihres Browsers einfügen
|
||||
subject: "Anweisungen zum Zurücksetzen des Passworts"
|
||||
confirmation_instructions:
|
||||
subject: "Bitte OFN-Konto bestätigen"
|
||||
shipment_mailer:
|
||||
@@ -3290,6 +3473,11 @@ de_DE:
|
||||
thanks: "Danke für Ihren Einkauf."
|
||||
track_information: "Tracking-Informationen: %{tracking}"
|
||||
track_link: "Tracking-Link: %{url}"
|
||||
test_mailer:
|
||||
test_email:
|
||||
greeting: "Herzliche Glückwünsche!"
|
||||
message: "Wenn Sie diese E-Mail erhalten haben, sind Ihre E-Mail-Einstellungen korrekt."
|
||||
subject: "Test Email"
|
||||
order_state:
|
||||
address: Adresse
|
||||
adjustments: Verbesserungen
|
||||
@@ -3372,3 +3560,8 @@ de_DE:
|
||||
shipment:
|
||||
cannot_ready: "Versand nicht möglich."
|
||||
invalid_taxonomy_id: "Ungültige Taxonomie-ID"
|
||||
activerecord:
|
||||
models:
|
||||
spree/payment:
|
||||
one: Zahlung
|
||||
other: Zahlungen
|
||||
|
||||
@@ -322,10 +322,16 @@ en:
|
||||
create_and_add_another: "Create and Add Another"
|
||||
create: "Create"
|
||||
cancel: "Cancel"
|
||||
resume: "Resume"
|
||||
save: "Save"
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
cut: "Cut"
|
||||
paste: "Paste"
|
||||
destroy: "Destroy"
|
||||
rename: "Rename"
|
||||
|
||||
admin:
|
||||
# Common properties / models
|
||||
@@ -656,6 +662,8 @@ en:
|
||||
controls:
|
||||
back_to_my_inventory: Back to my inventory
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: Are you sure you want to %{event} this order?
|
||||
invoice_email_sent: 'Invoice email has been sent'
|
||||
order_email_resent: 'Order email has been resent'
|
||||
bulk_management:
|
||||
@@ -811,6 +819,7 @@ en:
|
||||
closed and/or when customers can expect it to open again. This is displayed
|
||||
on your shop only when you have no active order cycles (ie. shop is closed).
|
||||
shopfront_category_ordering: "Shopfront Category Ordering"
|
||||
shopfront_category_ordering_note: "(top to bottom)"
|
||||
open_date: "Open Date"
|
||||
close_date: "Close Date"
|
||||
social:
|
||||
@@ -1693,6 +1702,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
|
||||
@@ -1852,6 +1863,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: An additional item is already confirmed for this order cycle
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -3018,6 +3031,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
delete: "Delete"
|
||||
cannot_set_shipping_method_without_address: "Cannot set shipping method until customer details are provided."
|
||||
no_tracking_present: "No tracking details provided."
|
||||
tracking: "Tracking"
|
||||
tracking_number: "Tracking Number"
|
||||
order_total: "Order Total"
|
||||
customer_details: "Customer Details"
|
||||
customer_search: "Customer Search"
|
||||
@@ -3039,6 +3054,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -3050,6 +3066,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
server: "Server"
|
||||
test_mode: "Test Mode"
|
||||
logourl: "Logourl"
|
||||
are_you_sure_delete: "Are you sure you want to delete this record?"
|
||||
confirm_delete: "Confirm Deletion"
|
||||
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
@@ -3176,6 +3194,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
has_no_shipped_units: "has no shipped units"
|
||||
successfully_created: ! '%{resource} has been successfully created!'
|
||||
successfully_updated: ! '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
not_available: "N/A"
|
||||
order_populator:
|
||||
@@ -3187,6 +3206,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 error prohibited this record from being saved:"
|
||||
few: "%{count} errors prohibited this record from being saved:"
|
||||
many: "%{count} errors 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:
|
||||
@@ -3225,7 +3246,6 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)"
|
||||
add_product_properties: "Add Product Properties"
|
||||
select_from_prototype: "Select From Prototype"
|
||||
properties:
|
||||
index:
|
||||
properties: "Properties"
|
||||
@@ -3318,6 +3338,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -3325,6 +3347,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
|
||||
@@ -14,6 +14,7 @@ en_AU:
|
||||
spree/payment:
|
||||
amount: Amount
|
||||
state: State
|
||||
source: Source
|
||||
spree/product:
|
||||
primary_taxon: "Product Category"
|
||||
supplier: "Supplier"
|
||||
@@ -23,6 +24,9 @@ en_AU:
|
||||
spree/credit_card:
|
||||
base: "Credit Card"
|
||||
number: "Number"
|
||||
month: "Month"
|
||||
verification_value: "Verification Value"
|
||||
year: "Year"
|
||||
order_cycle:
|
||||
orders_close_at: Close date
|
||||
variant_override:
|
||||
@@ -35,6 +39,10 @@ en_AU:
|
||||
taken: "There's already an account for this email. Please login or reset your password."
|
||||
spree/order:
|
||||
no_card: There are no authorised credit cards available to charge
|
||||
spree/credit_card:
|
||||
attributes:
|
||||
base:
|
||||
card_expired: "has expired"
|
||||
order_cycle:
|
||||
attributes:
|
||||
orders_close_at:
|
||||
@@ -56,6 +64,8 @@ en_AU:
|
||||
shipping_method_ids: "Shipping Methods"
|
||||
payment_method_ids: "Payment Methods"
|
||||
errors:
|
||||
messages:
|
||||
inclusion: "is not included in the list"
|
||||
models:
|
||||
order_management/subscriptions/validator:
|
||||
attributes:
|
||||
@@ -115,6 +125,8 @@ en_AU:
|
||||
not_array_error: "must be an array"
|
||||
invalid_element_error: "must contain only valid integers"
|
||||
datetime_picker_ui:
|
||||
current_text: Now
|
||||
close_text: Done
|
||||
time_text: Time
|
||||
enterprise_mailer:
|
||||
confirmation_instructions:
|
||||
@@ -180,6 +192,7 @@ en_AU:
|
||||
explainer: Automatic processing of these orders failed for an unknown reason. This should not occur, please contact us if you are seeing this.
|
||||
home: "OFN"
|
||||
title: "Open Food Network"
|
||||
welcome_to: "Welcome to"
|
||||
site_meta_description: "We begin from the ground up. With farmers and growers ready to tell their stories proudly and truly. With distributors ready to connect people with products fairly and honestly. With buyers who believe that better weekly shopping decisions can…"
|
||||
search_by_name: Search by name or suburb...
|
||||
producers_join: Australian producers are now welcome to join the Open Food Network.
|
||||
@@ -222,6 +235,7 @@ en_AU:
|
||||
enterprises: Enterprises
|
||||
enterprise_groups: Groups
|
||||
reports: Reports
|
||||
listing_reports: Listing Reports
|
||||
variant_overrides: Inventory
|
||||
import: Import
|
||||
spree_products: Spree Products
|
||||
@@ -251,6 +265,8 @@ en_AU:
|
||||
notes: Notes
|
||||
error: Error
|
||||
processing_payment: "Processing payment..."
|
||||
no_pending_payments: "No pending payments"
|
||||
invalid_payment_state: "Invalid payment state"
|
||||
filter_results: Filter Results
|
||||
quantity: Quantity
|
||||
pick_up: Pick up
|
||||
@@ -266,14 +282,23 @@ en_AU:
|
||||
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"
|
||||
cancel: "Cancel"
|
||||
resume: "Resume"
|
||||
save: "Save"
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
cut: "Cut"
|
||||
paste: "Paste"
|
||||
destroy: "Destroy"
|
||||
rename: "Rename"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -321,6 +346,7 @@ en_AU:
|
||||
show_n_more: Show %{num} more
|
||||
choose: "Choose..."
|
||||
please_select: Please select...
|
||||
column_save_as_default: Save As Default
|
||||
columns: Columns
|
||||
actions: Actions
|
||||
viewing: "Viewing: %{current_view_name}"
|
||||
@@ -331,6 +357,7 @@ en_AU:
|
||||
has_n_rules: "has %{num} rules"
|
||||
unsaved_confirm_leave: "There are unsaved changed on this page. Continue without saving?"
|
||||
unsaved_changes: "You have unsaved changes"
|
||||
available_units: "Available Units"
|
||||
shopfront_settings:
|
||||
embedded_shopfront_settings: "Embedded Shopfront Settings"
|
||||
enable_embedded_shopfronts: "Enable Embedded Shopfronts"
|
||||
@@ -365,7 +392,10 @@ en_AU:
|
||||
title: "Matomo Settings"
|
||||
matomo_url: "Matomo URL"
|
||||
matomo_site_id: "Matomo Site ID"
|
||||
matomo_tag_manager_url: "Matomo Tag Manager URL"
|
||||
info_html: "Matomo is a Web and Mobile Analytics application. You can either host Matomo on-premises or use a cloud-hosted service. See <a href='http://matomo.org' target='_blank'>matomo.org</a> for more information."
|
||||
config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console."
|
||||
config_instructions_tag_manager_html: "Setting the Matomo Tag Manager URL enables Matomo Tag Manager. This tool allows you to set up analytics events. The Matomo Tag Manager URL is copied from the Install Code section of Matomo Tag Manager. Ensure you select the right container and environment as these options change the URL."
|
||||
customers:
|
||||
index:
|
||||
new_customer: "New Customer"
|
||||
@@ -386,6 +416,8 @@ en_AU:
|
||||
confirm_delete: "Sure to delete?"
|
||||
search_by_email: "Search by email/code..."
|
||||
guest_label: "Guest checkout"
|
||||
credit_owed: "Credit Owed"
|
||||
balance_due: "Balance Due"
|
||||
destroy:
|
||||
has_associated_orders: "Delete failed: customer has associated orders with his shop"
|
||||
contents:
|
||||
@@ -472,6 +504,7 @@ en_AU:
|
||||
line_number: "Line %{number}:"
|
||||
encoding_error: "Please check the language setting of your source file and ensure it is saved with UTF-8 encoding"
|
||||
unexpected_error: "Product Import encountered an unexpected error whilst opening the file: %{error_message}"
|
||||
malformed_csv: "Product Import encountered a malformed CSV: %{error_message}"
|
||||
index:
|
||||
notice: "Notice"
|
||||
beta_notice: "This feature is still in beta: you may experience some errors while using it. Please don't hesitate to contact support."
|
||||
@@ -573,6 +606,8 @@ en_AU:
|
||||
controls:
|
||||
back_to_my_inventory: Back to my inventory
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: Are you sure you want to %{event} this order?
|
||||
invoice_email_sent: 'Invoice email has been sent'
|
||||
order_email_resent: 'Order email has been resent'
|
||||
bulk_management:
|
||||
@@ -582,6 +617,7 @@ en_AU:
|
||||
order_date: "Completed at"
|
||||
max: "Max"
|
||||
product_unit: "Product: Unit"
|
||||
weight_volume: "Weight/Volume (g)"
|
||||
ask: "Ask?"
|
||||
page_title: "Bulk Order Management"
|
||||
actions_delete: "Delete Selected"
|
||||
@@ -618,6 +654,9 @@ en_AU:
|
||||
acn_placeholder: eg. 123 456 789
|
||||
display_invoice_logo: Display logo in invoices
|
||||
invoice_text: Add customized text at the end of invoices
|
||||
terms_and_conditions: "Terms and Conditions"
|
||||
remove_terms_and_conditions: "Remove File"
|
||||
uploaded_on: "uploaded on"
|
||||
contact:
|
||||
name: Name
|
||||
name_placeholder: eg. Gustav Plum
|
||||
@@ -685,6 +724,7 @@ en_AU:
|
||||
ofn_uid_tip: The unique id used to identify the enterprise on Open Food Network.
|
||||
shipping_methods:
|
||||
name: "Name"
|
||||
applies: "Active?"
|
||||
manage: "Manage Shipping Methods"
|
||||
create_button: "Create New Shipping Method"
|
||||
create_one_button: "Create One Now"
|
||||
@@ -707,6 +747,8 @@ en_AU:
|
||||
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: "\"Home\" message"
|
||||
@@ -726,6 +768,7 @@ en_AU:
|
||||
is displayed on your shop only when you have no active order cycles
|
||||
(ie. shop is closed).
|
||||
shopfront_category_ordering: "Shopfront Category Ordering"
|
||||
shopfront_category_ordering_note: "(top to bottom)"
|
||||
open_date: "Open Date"
|
||||
close_date: "Close Date"
|
||||
social:
|
||||
@@ -867,6 +910,7 @@ en_AU:
|
||||
incoming: "Incoming"
|
||||
supplier: "Supplier"
|
||||
products: "Products"
|
||||
receival_details: "Receival Details"
|
||||
fees: "Fees"
|
||||
save: "Save"
|
||||
save_and_next: "Save and Next"
|
||||
@@ -878,6 +922,7 @@ en_AU:
|
||||
distributor: "Distributor"
|
||||
products: "Products"
|
||||
tags: "Tags"
|
||||
delivery_details: "Delivery Details"
|
||||
fees: "Fees"
|
||||
previous: "Previous"
|
||||
save: "Save"
|
||||
@@ -1131,10 +1176,18 @@ en_AU:
|
||||
destroy_attachment_does_not_exist: "Logo does not exist"
|
||||
enterprise_promo_image:
|
||||
destroy_attachment_does_not_exist: "Promo image does not exist"
|
||||
enterprise_terms_and_conditions:
|
||||
destroy_attachment_does_not_exist: "Terms and Conditions file does not exist"
|
||||
orders:
|
||||
failed_to_update: "Failed to update order"
|
||||
checkout:
|
||||
already_ordered:
|
||||
cart: "cart"
|
||||
message_html: "You have an order for this order cycle already. Check the %{cart} to see the items you ordered before. You can also cancel items as long as the order cycle is open."
|
||||
terms_and_conditions:
|
||||
message_html: "I agree to the seller's %{terms_and_conditions_link}."
|
||||
link_text: "Terms and Conditions"
|
||||
failed: "The checkout failed. Please let us know so that we can process your order."
|
||||
shops:
|
||||
hubs:
|
||||
show_closed_shops: "Show closed shops"
|
||||
@@ -1146,7 +1199,12 @@ en_AU:
|
||||
cart: "Cart"
|
||||
cart_sidebar:
|
||||
checkout: "Checkout"
|
||||
edit_cart: "Edit cart"
|
||||
items_in_cart_singular: "%{num} item in your cart"
|
||||
items_in_cart_plural: "%{num} items in your cart"
|
||||
close: "Close"
|
||||
cart_empty: "Your cart is empty"
|
||||
take_me_shopping: "Take me shopping!"
|
||||
signed_in:
|
||||
profile: "Profile"
|
||||
mobile_menu:
|
||||
@@ -1178,7 +1236,11 @@ en_AU:
|
||||
signup: "signup"
|
||||
contact: "contact"
|
||||
require_customer_login: "Only approved customers can access this shop."
|
||||
require_login_html: "If you're already an approved customer, %{login} or %{signup} to proceed."
|
||||
require_login_2_html: "Want to start shopping here? Please %{contact} %{enterprise} and ask about joining."
|
||||
require_customer_html: "If you'd like to start shopping here, please %{contact} %{enterprise} to ask about joining."
|
||||
select_oc:
|
||||
select_oc_html: "Please <span class='highlighted'>choose when you want your order</span>, to see what products are available."
|
||||
products:
|
||||
summary:
|
||||
bulk: "Bulk"
|
||||
@@ -1310,6 +1372,7 @@ en_AU:
|
||||
saving_credit_card: Saving credit card...
|
||||
card_has_been_removed: "Your card has been removed (number: %{number})"
|
||||
card_could_not_be_removed: Sorry, the card could not be removed
|
||||
invalid_credit_card: "Invalid credit card"
|
||||
ie_warning_headline: "Your browser is out of date :-("
|
||||
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
|
||||
ie_warning_chrome: Download Chrome
|
||||
@@ -1505,6 +1568,7 @@ en_AU:
|
||||
shopping_oc_closed_description: "Please wait until the next cycle opens (or contact us directly to see if we can accept any late orders)"
|
||||
shopping_oc_last_closed: "The last cycle closed %{distance_of_time} ago"
|
||||
shopping_oc_next_open: "The next cycle opens in %{distance_of_time}"
|
||||
shopping_oc_select: "Select..."
|
||||
shopping_tabs_home: "Home"
|
||||
shopping_tabs_shop: "Shop"
|
||||
shopping_tabs_about: "About"
|
||||
@@ -1537,16 +1601,23 @@ en_AU:
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
products_showing: "Showing:"
|
||||
products_results_for: "Results for"
|
||||
products_or: "or"
|
||||
products_and: "and"
|
||||
products_filters_in: "in"
|
||||
products_with: with
|
||||
products_search: "Search..."
|
||||
products_filter_by: "Filter by"
|
||||
products_filter_selected: "selected"
|
||||
products_filter_heading: "Filters"
|
||||
products_filter_clear: "Clear"
|
||||
products_filter_done: "Done"
|
||||
products_loading: "Loading products..."
|
||||
products_updating_cart: "Updating cart..."
|
||||
products_cart_empty: "Cart empty"
|
||||
@@ -1557,6 +1628,8 @@ en_AU:
|
||||
products_update_error_msg: "Saving failed."
|
||||
products_update_error_data: "Save failed due to invalid data:"
|
||||
products_changes_saved: "Changes saved."
|
||||
products_no_results_html: "Sorry, no results found for %{query}"
|
||||
products_clear_search: "Clear search"
|
||||
search_no_results_html: "Sorry, no results found for %{query}. Try another search?"
|
||||
components_profiles_popover: "Profiles do not have a shopfront on the Open Food Network, but may have their own physical or online shop elsewhere"
|
||||
components_profiles_show: "Show profiles"
|
||||
@@ -1675,7 +1748,9 @@ en_AU:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
one: An additional item is already confirmed for this order cycle
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -1697,6 +1772,7 @@ en_AU:
|
||||
remember_me: Remember Me
|
||||
are_you_sure: "Are you sure?"
|
||||
orders_open: "Orders open"
|
||||
closing: "Closing"
|
||||
going_back_to_home_page: "Taking you back to the home page"
|
||||
creating: Creating
|
||||
updating: Updating
|
||||
@@ -1864,6 +1940,7 @@ en_AU:
|
||||
headline: "You’re all set up! "
|
||||
thanks: "Thanks for filling out the details for %{enterprise}."
|
||||
login: "To manage your new Enterprise, go to openfoodnetwork.org.au/admin\n\nYou can also get to your Admin page in the top righthand corner of the Open Food Network homepage, just to the left of the shopping cart symbol."
|
||||
action: "Go to Enterprise Dashboard"
|
||||
back: "Back"
|
||||
continue: "Continue"
|
||||
action_or: "OR"
|
||||
@@ -1909,6 +1986,7 @@ en_AU:
|
||||
admin_enterprise_relationships_permits: "permits"
|
||||
admin_enterprise_relationships_seach_placeholder: "Search"
|
||||
admin_enterprise_relationships_button_create: "Create"
|
||||
admin_enterprise_relationships_to: "to"
|
||||
admin_enterprise_groups: "Enterprise Groups"
|
||||
admin_enterprise_groups_name: "Name"
|
||||
admin_enterprise_groups_owner: "Owner"
|
||||
@@ -1937,6 +2015,7 @@ en_AU:
|
||||
supplier: "Supplier"
|
||||
product_name: "Product Name"
|
||||
product_description: "Product Description"
|
||||
permalink: "Permalink"
|
||||
shipping_categories: "Shipping Categories"
|
||||
units: "Unit Size"
|
||||
coordinator: "Coordinator"
|
||||
@@ -1949,6 +2028,8 @@ en_AU:
|
||||
tax_category: "Tax Category"
|
||||
calculator: "Calculator"
|
||||
calculator_values: "Calculator values"
|
||||
calculator_settings_warning: "If you are changing the calculator type, you must save first before you can edit the calculator settings"
|
||||
calculator_preferred_unit_error: "must be kg or lb"
|
||||
flat_percent_per_item: "Flat Percent (per item)"
|
||||
flat_rate_per_item: "Flat Rate (per item)"
|
||||
flat_rate_per_order: "Flat Rate (per order)"
|
||||
@@ -2032,6 +2113,7 @@ en_AU:
|
||||
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 "
|
||||
@@ -2051,6 +2133,7 @@ en_AU:
|
||||
hub_sidebar_at_least: "At least one hub must be selected"
|
||||
hub_sidebar_blue: "blue"
|
||||
hub_sidebar_red: "red"
|
||||
order_cycles_closed_for_hub: "The hub you have selected is temporarily closed for orders. Please try again later."
|
||||
report_customers_distributor: "Distributor"
|
||||
report_customers_supplier: "Supplier"
|
||||
report_customers_cycle: "Order Cycle"
|
||||
@@ -2256,6 +2339,7 @@ en_AU:
|
||||
enterprise_name_error: "has already been taken. If this is your enterprise and you would like to claim ownership, or if you would like to trade with this enterprise please contact the current manager of this profile at %{email}."
|
||||
enterprise_owner_error: "^%{email} is not permitted to own any more enterprises (limit is %{enterprise_limit})."
|
||||
enterprise_role_uniqueness_error: "^That role is already present."
|
||||
enterprise_terms_and_conditions_type_error: "Only PDFs are allowed"
|
||||
inventory_item_visibility_error: must be true or false
|
||||
product_importer_file_error: "error: no file uploaded"
|
||||
product_importer_spreadsheet_error: "could not process file: invalid filetype"
|
||||
@@ -2279,6 +2363,7 @@ en_AU:
|
||||
enterprise_register_success_notice: "Congratulations! Registration for %{enterprise} is complete!"
|
||||
enterprise_bulk_update_success_notice: "Enterprises updated successfully"
|
||||
enterprise_bulk_update_error: 'Update failed'
|
||||
enterprise_shop_show_error: "The shop you are looking for doesn't exist or is inactive on OFN. Please check other shops."
|
||||
order_cycles_create_notice: 'Your order cycle has been created.'
|
||||
order_cycles_update_notice: 'Your order cycle has been updated.'
|
||||
order_cycles_bulk_update_notice: 'Order cycles have been updated.'
|
||||
@@ -2286,6 +2371,7 @@ en_AU:
|
||||
order_cycles_email_to_producers_notice: 'Emails to be sent to producers have been queued for sending.'
|
||||
order_cycles_no_permission_to_coordinate_error: "None of your enterprises have permission to coordinate an order cycle"
|
||||
order_cycles_no_permission_to_create_error: "You don't have permission to create an order cycle coordinated by that enterprise"
|
||||
order_cycle_closed: "The order cycle you've selected has just closed. Please try again!"
|
||||
back_to_orders_list: "Back to order list"
|
||||
no_orders_found: "No Orders Found"
|
||||
order_information: "Order Information"
|
||||
@@ -2313,6 +2399,10 @@ en_AU:
|
||||
resolve_errors: Please resolve the following errors
|
||||
more_items: "+ %{count} More"
|
||||
default_card_updated: Default Card Updated
|
||||
cart:
|
||||
add_to_cart_failed: >
|
||||
There was a problem adding this product to the cart. Perhaps it has become
|
||||
unavailable or the shop is closing.
|
||||
admin:
|
||||
enterprise_limit_reached: "You have reached the standard limit of enterprises per account. Write to %{contact_email} if you need to increase it."
|
||||
modals:
|
||||
@@ -2338,6 +2428,14 @@ en_AU:
|
||||
By creating rules related to a specific customer tag, you can override
|
||||
the default behaviour (whether it be to show or to hide items) for customers
|
||||
with the specified tag.
|
||||
terms_and_conditions_info:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "Terms and Conditions are the contract between you, the seller, and the shopper. If you upload a file here shoppers must accept your Terms and Conditions in order to complete checkout. For the shopper this will appear as a checkbox at checkout that must be checked in order to proceed with checkout. We highly recommend you upload Terms and Conditions in alignment with national legislation."
|
||||
message_2: "Shoppers will only be required to accept Terms and Conditions once. However if you change you Terms and Conditions shoppers will again be required to accept them before they can checkout."
|
||||
terms_and_conditions_warning:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "All your buyers will have to agree to them once at checkout. If you update the file, all your buyers will have to agree to them again at checkout."
|
||||
message_2: "For buyers with subscriptions, you need to email them the Terms and Conditions (or the changes to them) for now, nothing will notify them about these new Terms and Conditions."
|
||||
panels:
|
||||
save: SAVE
|
||||
saved: SAVED
|
||||
@@ -2431,6 +2529,12 @@ en_AU:
|
||||
severity: Severity
|
||||
description: Description
|
||||
resolve: Resolve
|
||||
exchange_products:
|
||||
load_more_variants: "Load More Variants"
|
||||
load_all_variants: "Load All Variants"
|
||||
select_all_variants: "Select All %{total_number_of_variants} Variants"
|
||||
variants_loaded: "%{num_of_variants_loaded} of %{total_number_of_variants} Variants Loaded"
|
||||
loading_variants: "Loading Variants"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Shipping methods tagged"
|
||||
shipping_method_tagged_bottom: "are:"
|
||||
@@ -2513,6 +2617,7 @@ en_AU:
|
||||
customer_placeholder: "customer@example.org"
|
||||
valid_email_error: "Please enter a valid email address"
|
||||
subscriptions:
|
||||
error_saving: "Error saving subscription"
|
||||
new:
|
||||
please_select_a_shop: "Please select a shop"
|
||||
enterprises:
|
||||
@@ -2522,6 +2627,8 @@ en_AU:
|
||||
immediate_logo_removal_warning: "The logo will be removed immediately after you confirm."
|
||||
removed_promo_image_successfully: "Promo image removed successfully"
|
||||
immediate_promo_image_removal_warning: "The promo image will be removed immediately after you confirm."
|
||||
immediate_terms_and_conditions_removal_warning: "The Terms and Conditions file will be removed immediately after you confirm."
|
||||
removed_terms_and_conditions_successfully: "Terms and Conditions file removed successfully"
|
||||
insufficient_stock: "Insufficient stock available, only %{on_hand} remaining"
|
||||
out_of_stock:
|
||||
reduced_stock_available: Reduced stock available
|
||||
@@ -2533,8 +2640,12 @@ en_AU:
|
||||
shopfront:
|
||||
variant:
|
||||
add_to_cart: "Add"
|
||||
in_cart: "in cart"
|
||||
quantity_in_cart: "%{quantity} in cart"
|
||||
bulk_buy_modal:
|
||||
min_quantity: "Min quantity"
|
||||
max_quantity: "Max quantity"
|
||||
price_breakdown: "Price breakdown"
|
||||
variants:
|
||||
on_demand:
|
||||
'yes': "On demand"
|
||||
@@ -2600,6 +2711,84 @@ en_AU:
|
||||
signup_or_login: "Start By Signing Up (or logging in)"
|
||||
have_an_account: "Already have an account?"
|
||||
action_login: "Log in now."
|
||||
stripe_elements:
|
||||
unknown_error_from_stripe: |
|
||||
There was a problem setting up your card in our payments gateway.
|
||||
Please refresh the page and try again, if it fails a second time,
|
||||
please contact us for support.
|
||||
inflections:
|
||||
each:
|
||||
one: "each"
|
||||
other: "each"
|
||||
bunch:
|
||||
one: "bunch"
|
||||
other: "bunches"
|
||||
pack:
|
||||
one: "pack"
|
||||
other: "packs"
|
||||
box:
|
||||
one: "box"
|
||||
other: "boxes"
|
||||
bottle:
|
||||
one: "bottle"
|
||||
other: "bottles"
|
||||
jar:
|
||||
one: "jar"
|
||||
other: "jars"
|
||||
head:
|
||||
one: "head"
|
||||
other: "heads"
|
||||
bag:
|
||||
one: "bag"
|
||||
other: "bags"
|
||||
loaf:
|
||||
one: "loaf"
|
||||
other: "loaves"
|
||||
single:
|
||||
one: "single"
|
||||
other: "singles"
|
||||
tub:
|
||||
one: "tub"
|
||||
other: "tubs"
|
||||
punnet:
|
||||
one: "punnet"
|
||||
other: "punnets"
|
||||
packet:
|
||||
one: "packet"
|
||||
other: "packets"
|
||||
item:
|
||||
one: "item"
|
||||
other: "items"
|
||||
dozen:
|
||||
one: "dozen"
|
||||
other: "dozens"
|
||||
unit:
|
||||
one: "unit"
|
||||
other: "units"
|
||||
serve:
|
||||
one: "serve"
|
||||
other: "serves"
|
||||
tray:
|
||||
one: "tray"
|
||||
other: "trays"
|
||||
piece:
|
||||
one: "piece"
|
||||
other: "pieces"
|
||||
pot:
|
||||
one: "pot"
|
||||
other: "pots"
|
||||
bundle:
|
||||
one: "bundle"
|
||||
other: "bundles"
|
||||
flask:
|
||||
one: "flask"
|
||||
other: "flasks"
|
||||
basket:
|
||||
one: "basket"
|
||||
other: "baskets"
|
||||
sack:
|
||||
one: "sack"
|
||||
other: "sacks"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Start with a free profile, and expand when you're ready!"
|
||||
@@ -2657,6 +2846,8 @@ en_AU:
|
||||
adjustments: "Adjustments"
|
||||
payments: "Payments"
|
||||
return_authorizations: "Return Authorizations"
|
||||
credit_owed: "Credit Owed"
|
||||
new_adjustment: "New Adjustment"
|
||||
payment: "Payment"
|
||||
payment_method: "Payment Method"
|
||||
shipment: "Shipment"
|
||||
@@ -2703,6 +2894,8 @@ en_AU:
|
||||
delete: "Delete"
|
||||
cannot_set_shipping_method_without_address: "Cannot set shipping method until customer details are provided."
|
||||
no_tracking_present: "No tracking details provided."
|
||||
tracking: "Tracking"
|
||||
tracking_number: "Tracking Number"
|
||||
order_total: "Order Total"
|
||||
customer_details: "Customer Details"
|
||||
customer_search: "Customer Search"
|
||||
@@ -2724,11 +2917,20 @@ en_AU:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
login: "Login"
|
||||
password: "Password"
|
||||
signature: "Signature"
|
||||
solution: "Solution"
|
||||
landing_page: "Landing Page"
|
||||
server: "Server"
|
||||
test_mode: "Test Mode"
|
||||
logourl: "Logourl"
|
||||
are_you_sure_delete: "Are you sure you want to delete this record?"
|
||||
confirm_delete: "Confirm Deletion"
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
site_name: "Site Name"
|
||||
@@ -2830,15 +3032,31 @@ en_AU:
|
||||
inventory_error_flash_for_insufficient_quantity: "An item in your cart has become unavailable."
|
||||
inventory: Inventory
|
||||
zipcode: Postcode
|
||||
weight: Weight (per kg or lb)
|
||||
error_user_destroy_with_orders: "Users with completed orders may not be deleted"
|
||||
cannot_create_payment_without_payment_methods: "You cannot create a payment for an order without any payment methods defined."
|
||||
please_define_payment_methods: "Please define some payment methods first."
|
||||
options: "Options"
|
||||
has_no_shipped_units: "has no shipped units"
|
||||
successfully_created: '%{resource} has been successfully created!'
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
not_available: "N/A"
|
||||
order_populator:
|
||||
out_of_stock: '%{item} is out of stock.'
|
||||
actions:
|
||||
update: "Update"
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 error prohibited this record from being saved:"
|
||||
few: "%{count} errors prohibited this record from being saved:"
|
||||
many: "%{count} errors 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"
|
||||
@@ -2873,7 +3091,6 @@ en_AU:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)"
|
||||
add_product_properties: "Add Product Properties"
|
||||
select_from_prototype: "Select From Prototype"
|
||||
properties:
|
||||
index:
|
||||
properties: "Properties"
|
||||
@@ -2926,6 +3143,7 @@ en_AU:
|
||||
capture: "Capture"
|
||||
ship: "Ship"
|
||||
edit: "Edit"
|
||||
order_not_updated: "The order could not be updated"
|
||||
note: "Note"
|
||||
first: "First"
|
||||
last: "Last"
|
||||
@@ -2948,6 +3166,8 @@ en_AU:
|
||||
tax_invoice: "TAX INVOICE"
|
||||
code: "Code"
|
||||
from: "From"
|
||||
to: "Bill to"
|
||||
shipping: "Shipping"
|
||||
form:
|
||||
distribution_fields:
|
||||
title: "Distribution"
|
||||
@@ -2963,6 +3183,8 @@ en_AU:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -2970,6 +3192,8 @@ en_AU:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
@@ -2981,6 +3205,8 @@ en_AU:
|
||||
zone: "Zone"
|
||||
calculator: "Calculator"
|
||||
display: "Display"
|
||||
both: "Both Checkout and Back office"
|
||||
back_end: "Back office only"
|
||||
no_shipping_methods_found: "No shipping methods found"
|
||||
new:
|
||||
new_shipping_method: "New Shipping Method"
|
||||
@@ -2992,6 +3218,9 @@ en_AU:
|
||||
form:
|
||||
categories: "Categories"
|
||||
zones: "Zones"
|
||||
both: "Both Checkout and Back office"
|
||||
back_end: "Back office only"
|
||||
deactivation_warning: "De-activating a shipping method can make the shipping method disappear from your list. Alternatively, you can hide a shipping method from the checkout page by setting the option 'Display' to 'back office only'."
|
||||
payment_methods:
|
||||
index:
|
||||
payment_methods: "Payment Methods"
|
||||
@@ -3003,8 +3232,11 @@ en_AU:
|
||||
display: "Display"
|
||||
active: "Active"
|
||||
both: "Both"
|
||||
front_end: "Checkout only"
|
||||
back_end: "Back office only"
|
||||
active_yes: "Yes"
|
||||
active_no: "No"
|
||||
no_payment_methods_found: "No payment methods found"
|
||||
new:
|
||||
new_payment_method: "New Payment Method"
|
||||
back_to_payment_methods_list: "Back To Payment Methods List"
|
||||
@@ -3033,7 +3265,11 @@ en_AU:
|
||||
active: "Active"
|
||||
active_yes: "Yes"
|
||||
active_no: "No"
|
||||
both: "Both Checkout and Back office"
|
||||
front_end: "Checkout only"
|
||||
back_end: "Back office only"
|
||||
tags: "Tags"
|
||||
deactivation_warning: "De-activating a payment method can make the payment method disappear from your list. Alternatively, you can hide a payment method from the checkout page by setting the option 'Display' to 'back office only'."
|
||||
providers:
|
||||
provider: "Provider"
|
||||
payments:
|
||||
@@ -3041,6 +3277,8 @@ en_AU:
|
||||
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:
|
||||
@@ -3094,6 +3332,8 @@ en_AU:
|
||||
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"
|
||||
@@ -3135,6 +3375,8 @@ en_AU:
|
||||
price: "Price"
|
||||
display_as: "Display As"
|
||||
display_name: "Display Name"
|
||||
display_as_placeholder: 'eg. 2 kg'
|
||||
display_name_placeholder: 'eg. Tomatoes'
|
||||
autocomplete:
|
||||
out_of_stock: "Out of Stock"
|
||||
producer_name: "Producer"
|
||||
@@ -3174,6 +3416,7 @@ en_AU:
|
||||
format: '%Y-%m-%d'
|
||||
js_format: 'yy-mm-dd'
|
||||
orders:
|
||||
error_flash_for_unavailable_items: "An item in your cart has become unavailable. Please update the selected quantities."
|
||||
edit:
|
||||
login_to_view_order: "Please log in to view your order."
|
||||
bought:
|
||||
@@ -3201,6 +3444,14 @@ en_AU:
|
||||
invalid: invalid
|
||||
order_mailer:
|
||||
cancel_email:
|
||||
customer_greeting: "Dear %{name},"
|
||||
instructions_html: "Your order with <strong>%{distributor}</strong> has been CANCELED. Please retain this cancellation information for your records."
|
||||
dont_cancel: "If you have changed your mind or don't wish to cancel this order please contact %{email}"
|
||||
order_summary_canceled_html: "<strong>Order Summary #%{number} [CANCELED]</strong>"
|
||||
details: "Here are the details of what you ordered:"
|
||||
unpaid_order: "Your order was unpaid so no refund has been made"
|
||||
paid_order: "Your order was paid so %{distributor} has refunded the full amount"
|
||||
credit_order: "Your order was paid so your account has been credited"
|
||||
subject: "Cancellation of Order"
|
||||
confirm_email:
|
||||
subject: "Order Confirmation"
|
||||
@@ -3217,6 +3468,7 @@ en_AU:
|
||||
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.
|
||||
subject: "Reset password instructions"
|
||||
confirmation_instructions:
|
||||
subject: "Please confirm your OFN account"
|
||||
shipment_mailer:
|
||||
@@ -3228,6 +3480,11 @@ en_AU:
|
||||
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
|
||||
@@ -3310,3 +3567,8 @@ en_AU:
|
||||
shipment:
|
||||
cannot_ready: "Cannot ready shipment."
|
||||
invalid_taxonomy_id: "Invalid taxonomy id."
|
||||
activerecord:
|
||||
models:
|
||||
spree/payment:
|
||||
one: Payment
|
||||
other: Payments
|
||||
|
||||
@@ -269,6 +269,7 @@ en_BE:
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -1497,7 +1498,8 @@ en_BE:
|
||||
hubs_distance: Closest to
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1635,7 +1637,8 @@ en_BE:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -2681,6 +2684,7 @@ en_BE:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -2782,6 +2786,7 @@ en_BE:
|
||||
zipcode: Postcode
|
||||
successfully_created: '%{resource} has been successfully created! '
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
actions:
|
||||
update: "Update"
|
||||
@@ -2883,6 +2888,8 @@ en_BE:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -2890,6 +2897,8 @@ en_BE:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
|
||||
@@ -289,10 +289,16 @@ en_CA:
|
||||
create_and_add_another: "Create and Add Another"
|
||||
create: "Create"
|
||||
cancel: "Cancel"
|
||||
resume: "Resume"
|
||||
save: "Save"
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
cut: "Cut"
|
||||
paste: "Paste"
|
||||
destroy: "Destroy"
|
||||
rename: "Rename"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -351,6 +357,7 @@ en_CA:
|
||||
has_n_rules: "has %{num} rules"
|
||||
unsaved_confirm_leave: "There are unsaved changes on this page. Continue without saving?"
|
||||
unsaved_changes: "You have unsaved changes"
|
||||
available_units: "Available Units"
|
||||
shopfront_settings:
|
||||
embedded_shopfront_settings: "Embedded Shopfront Settings"
|
||||
enable_embedded_shopfronts: "Enable Embedded Shopfronts"
|
||||
@@ -410,6 +417,7 @@ en_CA:
|
||||
search_by_email: "Search by email/code..."
|
||||
guest_label: "Guest checkout"
|
||||
credit_owed: "Credit Owed"
|
||||
balance_due: "Balance Due"
|
||||
destroy:
|
||||
has_associated_orders: "Delete failed: customer has associated orders with his shop"
|
||||
contents:
|
||||
@@ -598,6 +606,8 @@ en_CA:
|
||||
controls:
|
||||
back_to_my_inventory: Back to my inventory
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: Are you sure you want to %{event} this order?
|
||||
invoice_email_sent: 'Invoice email has been sent'
|
||||
order_email_resent: 'Order email has been resent'
|
||||
bulk_management:
|
||||
@@ -646,6 +656,7 @@ en_CA:
|
||||
invoice_text: Add customized text at the end of invoices
|
||||
terms_and_conditions: "Terms and Conditions"
|
||||
remove_terms_and_conditions: "Remove File"
|
||||
uploaded_on: "uploaded on"
|
||||
contact:
|
||||
name: Name
|
||||
name_placeholder: eg. Gustav Plum
|
||||
@@ -754,6 +765,7 @@ en_CA:
|
||||
is displayed on your shop only when you have no active order cycles
|
||||
(ie. shop is closed).
|
||||
shopfront_category_ordering: "Shopfront Category Ordering"
|
||||
shopfront_category_ordering_note: "(top to bottom)"
|
||||
open_date: "Open Date"
|
||||
close_date: "Close Date"
|
||||
social:
|
||||
@@ -1163,6 +1175,7 @@ en_CA:
|
||||
cart: "cart"
|
||||
message_html: "You have an order for this order cycle already. Check the %{cart} to see the items you ordered before. You can also cancel items as long as the order cycle is open."
|
||||
terms_and_conditions:
|
||||
message_html: "I agree to the seller's %{terms_and_conditions_link}."
|
||||
link_text: "Terms and Conditions"
|
||||
failed: "The checkout failed. Please let us know so that we can process your order."
|
||||
shops:
|
||||
@@ -1577,7 +1590,9 @@ en_CA:
|
||||
hubs_distance: Closest to
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1723,7 +1738,9 @@ en_CA:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
one: An additional item is already confirmed for this order cycle.
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -2401,6 +2418,14 @@ en_CA:
|
||||
By creating rules related to a specific customer tag, you can override
|
||||
the default behaviour (whether it be to show or to hide items) for customers
|
||||
with the specified tag.
|
||||
terms_and_conditions_info:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "Terms and Conditions are the contract between you, the seller, and the shopper. They can be anything you want every shopper to understand about your farm, CSA, hub, market, etc. If you upload a file here shoppers must accept your Terms and Conditions in order to complete checkout. For the shopper this will appear as a checkbox at checkout that must be checked in order to proceed with checkout. "
|
||||
message_2: "Shoppers will only be required to accept Terms and Conditions once. However if you change you Terms and Conditions shoppers will again be required to accept them before they can checkout."
|
||||
terms_and_conditions_warning:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "All your buyers will have to agree to them once at checkout. If you update the file, all your buyers will have to agree to them again at checkout."
|
||||
message_2: "For buyers with subscriptions, you need to email them the Terms and Conditions (or the changes to them) for now, nothing will notify them about these new Terms and Conditions."
|
||||
panels:
|
||||
save: SAVE
|
||||
saved: SAVED
|
||||
@@ -2858,6 +2883,8 @@ en_CA:
|
||||
delete: "Delete"
|
||||
cannot_set_shipping_method_without_address: "Cannot set shipping method until customer details are provided."
|
||||
no_tracking_present: "No tracking details provided."
|
||||
tracking: "Tracking"
|
||||
tracking_number: "Tracking Number"
|
||||
order_total: "Order Total"
|
||||
customer_details: "Customer Details"
|
||||
customer_search: "Customer Search"
|
||||
@@ -2879,6 +2906,7 @@ en_CA:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -2890,6 +2918,8 @@ en_CA:
|
||||
server: "Server"
|
||||
test_mode: "Test Mode"
|
||||
logourl: "Logourl"
|
||||
are_you_sure_delete: "Are you sure you want to delete this record?"
|
||||
confirm_delete: "Confirm Deletion"
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
site_name: "Site Name"
|
||||
@@ -2999,6 +3029,7 @@ en_CA:
|
||||
has_no_shipped_units: "has no shipped units"
|
||||
successfully_created: '%{resource}has been successfully created!'
|
||||
successfully_updated: '%{resource}has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered."
|
||||
not_available: "N/A"
|
||||
order_populator:
|
||||
@@ -3008,7 +3039,9 @@ en_CA:
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: " 1 errors prohibited this record from being saved:"
|
||||
one: "1 error prohibited this record from being saved:"
|
||||
few: " %{count}errors prohibited this record from being saved:"
|
||||
many: " %{count}errors 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:
|
||||
@@ -3047,7 +3080,6 @@ en_CA:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)"
|
||||
add_product_properties: "Add Product Properties"
|
||||
select_from_prototype: "Select From Prototype"
|
||||
properties:
|
||||
index:
|
||||
properties: "Properties"
|
||||
@@ -3140,6 +3172,8 @@ en_CA:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -3147,6 +3181,8 @@ en_CA:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
@@ -3421,6 +3457,7 @@ en_CA:
|
||||
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.
|
||||
subject: "Reset password instructions"
|
||||
confirmation_instructions:
|
||||
subject: "Please confirm your OFN account"
|
||||
shipment_mailer:
|
||||
|
||||
@@ -274,6 +274,7 @@ en_DE:
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -1507,7 +1508,8 @@ en_DE:
|
||||
hubs_distance: Closest to
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1645,7 +1647,8 @@ en_DE:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -2694,6 +2697,7 @@ en_DE:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -2797,6 +2801,7 @@ en_DE:
|
||||
error_user_destroy_with_orders: "Users with completed orders may not be deleted"
|
||||
successfully_created: '%{resource} has been successfully created!'
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
actions:
|
||||
update: "Update"
|
||||
@@ -2900,6 +2905,8 @@ en_DE:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -2907,6 +2914,8 @@ en_DE:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
|
||||
@@ -289,10 +289,16 @@ en_FR:
|
||||
create_and_add_another: "Create and Add Another"
|
||||
create: "Create"
|
||||
cancel: "Cancel"
|
||||
resume: "Resume"
|
||||
save: "Save"
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
cut: "Cut"
|
||||
paste: "Paste"
|
||||
destroy: "Destroy"
|
||||
rename: "Rename"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -600,6 +606,8 @@ en_FR:
|
||||
controls:
|
||||
back_to_my_inventory: Back to my inventory
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: Are you sure you want to %{event} this order?
|
||||
invoice_email_sent: 'Invoice email has been sent'
|
||||
order_email_resent: 'Order email has been resent'
|
||||
bulk_management:
|
||||
@@ -648,6 +656,7 @@ en_FR:
|
||||
invoice_text: Add customized text at the end of invoices
|
||||
terms_and_conditions: "Terms and Conditions"
|
||||
remove_terms_and_conditions: "Remove File"
|
||||
uploaded_on: "uploaded on"
|
||||
contact:
|
||||
name: Name
|
||||
name_placeholder: eg. Gustav Plum
|
||||
@@ -756,6 +765,7 @@ en_FR:
|
||||
is displayed on your shop only when you have no active order cycles
|
||||
(ie. shop is closed).
|
||||
shopfront_category_ordering: "Shopfront Category Ordering"
|
||||
shopfront_category_ordering_note: "(top to bottom)"
|
||||
open_date: "Open Date"
|
||||
close_date: "Close Date"
|
||||
social:
|
||||
@@ -1165,6 +1175,7 @@ en_FR:
|
||||
cart: "cart"
|
||||
message_html: "You have an order for this order cycle already. Check the %{cart} to see the items you ordered before. You can also cancel items as long as the order cycle is open."
|
||||
terms_and_conditions:
|
||||
message_html: "I agree to the seller's %{terms_and_conditions_link}."
|
||||
link_text: "Terms and Conditions"
|
||||
failed: "The checkout failed. Please let us know so that we can process your order."
|
||||
shops:
|
||||
@@ -1579,7 +1590,9 @@ en_FR:
|
||||
hubs_distance: Closest to
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop}/%{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1725,7 +1738,9 @@ en_FR:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
one: An additional item is already confirmed for this order cycle
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -2403,6 +2418,14 @@ en_FR:
|
||||
By creating rules related to a specific customer tag, you can override
|
||||
the default behaviour (whether it be to show or to hide items) for customers
|
||||
with the specified tag.
|
||||
terms_and_conditions_info:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "Terms and Conditions are the contract between you, the seller, and the shopper. If you upload a file here shoppers must accept your Terms and Conditions in order to complete checkout. For the shopper this will appear as a checkbox at checkout that must be checked in order to proceed with checkout. We highly recommend you upload Terms and Conditions in alignment with national legislation."
|
||||
message_2: "Shoppers will only be required to accept Terms and Conditions once. However if you change you Terms and Conditions shoppers will again be required to accept them before they can checkout."
|
||||
terms_and_conditions_warning:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "All your buyers will have to agree to them once at checkout. If you update the file, all your buyers will have to agree to them again at checkout."
|
||||
message_2: "For buyers with subscriptions, you need to email them the Terms and Conditions (or the changes to them) for now, nothing will notify them about these new Terms and Conditions."
|
||||
panels:
|
||||
save: SAVE
|
||||
saved: SAVED
|
||||
@@ -2861,6 +2884,8 @@ en_FR:
|
||||
delete: "Delete"
|
||||
cannot_set_shipping_method_without_address: "Cannot set shipping method until customer details are provided."
|
||||
no_tracking_present: "No tracking details provided."
|
||||
tracking: "Tracking"
|
||||
tracking_number: "Tracking Number"
|
||||
order_total: "Order Total"
|
||||
customer_details: "Customer Details"
|
||||
customer_search: "Customer Search"
|
||||
@@ -2882,6 +2907,7 @@ en_FR:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -2893,6 +2919,8 @@ en_FR:
|
||||
server: "Server"
|
||||
test_mode: "Test Mode"
|
||||
logourl: "Logourl"
|
||||
are_you_sure_delete: "Are you sure you want to delete this record?"
|
||||
confirm_delete: "Confirm Deletion"
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
site_name: "Site Name"
|
||||
@@ -3002,6 +3030,7 @@ en_FR:
|
||||
has_no_shipped_units: "has no shipped units"
|
||||
successfully_created: '%{resource} has been successfully created!'
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
not_available: "N/A"
|
||||
order_populator:
|
||||
@@ -3012,6 +3041,8 @@ en_FR:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 error prohibited this record from being saved:"
|
||||
few: "%{count} errors prohibited this record from being saved:"
|
||||
many: "%{count} errors 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:
|
||||
@@ -3050,7 +3081,6 @@ en_FR:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)"
|
||||
add_product_properties: "Add Product Properties"
|
||||
select_from_prototype: "Select From Prototype"
|
||||
properties:
|
||||
index:
|
||||
properties: "Properties"
|
||||
@@ -3143,6 +3173,8 @@ en_FR:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -3150,6 +3182,8 @@ en_FR:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
|
||||
@@ -24,6 +24,9 @@ en_GB:
|
||||
spree/credit_card:
|
||||
base: "Credit Card"
|
||||
number: "Number"
|
||||
month: "Month"
|
||||
verification_value: "Verification Value"
|
||||
year: "Year"
|
||||
order_cycle:
|
||||
orders_close_at: Close date
|
||||
variant_override:
|
||||
@@ -286,10 +289,16 @@ en_GB:
|
||||
create_and_add_another: "Create and Add Another"
|
||||
create: "Create"
|
||||
cancel: "Cancel"
|
||||
resume: "Resume"
|
||||
save: "Save"
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
cut: "Cut"
|
||||
paste: "Paste"
|
||||
destroy: "Destroy"
|
||||
rename: "Rename"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -348,6 +357,7 @@ en_GB:
|
||||
has_n_rules: "has %{num} rules"
|
||||
unsaved_confirm_leave: "There are unsaved changed on this page. Continue without saving?"
|
||||
unsaved_changes: "You have unsaved changes"
|
||||
available_units: "Available Units"
|
||||
shopfront_settings:
|
||||
embedded_shopfront_settings: "Embedded Shopfront Settings"
|
||||
enable_embedded_shopfronts: "Enable Embedded Shopfronts"
|
||||
@@ -407,6 +417,7 @@ en_GB:
|
||||
search_by_email: "Search by email/code..."
|
||||
guest_label: "Guest checkout"
|
||||
credit_owed: "Credit Owed"
|
||||
balance_due: "Balance Due"
|
||||
destroy:
|
||||
has_associated_orders: "Delete failed: customer has associated orders with this shop"
|
||||
contents:
|
||||
@@ -595,6 +606,8 @@ en_GB:
|
||||
controls:
|
||||
back_to_my_inventory: Back to my inventory
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: Are you sure you want to %{event} this order?
|
||||
invoice_email_sent: 'Invoice email has been sent'
|
||||
order_email_resent: 'Order email has been resent'
|
||||
bulk_management:
|
||||
@@ -643,6 +656,7 @@ en_GB:
|
||||
invoice_text: Add customized text at the end of invoices
|
||||
terms_and_conditions: "Terms and Conditions"
|
||||
remove_terms_and_conditions: "Remove File"
|
||||
uploaded_on: "uploaded on"
|
||||
contact:
|
||||
name: Name
|
||||
name_placeholder: eg. Amanda Plum
|
||||
@@ -751,6 +765,7 @@ en_GB:
|
||||
is displayed on your shop only when you have no active order cycles
|
||||
(ie. shop is closed).
|
||||
shopfront_category_ordering: "Shopfront Category Ordering"
|
||||
shopfront_category_ordering_note: "(top to bottom)"
|
||||
open_date: "Open Date"
|
||||
close_date: "Close Date"
|
||||
social:
|
||||
@@ -1160,6 +1175,7 @@ en_GB:
|
||||
cart: "cart"
|
||||
message_html: "You have an order for this order cycle already. Check the %{cart} to see the items you ordered before. You can also cancel items as long as the order cycle is open."
|
||||
terms_and_conditions:
|
||||
message_html: "I agree to the seller's %{terms_and_conditions_link}."
|
||||
link_text: "Terms and Conditions"
|
||||
failed: "The checkout failed. Please let us know so that we can process your order."
|
||||
shops:
|
||||
@@ -1575,6 +1591,8 @@ en_GB:
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1720,7 +1738,9 @@ en_GB:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
one: An additional item is already confirmed for this order cycle
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -1999,6 +2019,7 @@ en_GB:
|
||||
calculator: "Calculator"
|
||||
calculator_values: "Calculator values"
|
||||
calculator_settings_warning: "If you are changing the calculator type, you must save first before you can edit the calculator settings"
|
||||
calculator_preferred_unit_error: "must be kg or lb"
|
||||
flat_percent_per_item: "Flat Percent (per item)"
|
||||
flat_rate_per_item: "Flat Rate (per item)"
|
||||
flat_rate_per_order: "Flat Rate (per order)"
|
||||
@@ -2397,6 +2418,14 @@ en_GB:
|
||||
By creating rules related to a specific customer tag, you can override
|
||||
the default behaviour (whether it be to show or to hide items) for customers
|
||||
with the specified tag.
|
||||
terms_and_conditions_info:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "Terms and Conditions are the contract between you, the seller, and the shopper. If you upload a file here shoppers must accept your Terms and Conditions in order to complete checkout. For the shopper this will appear as a checkbox at checkout that must be checked in order to proceed with checkout. We highly recommend you upload Terms and Conditions in alignment with national legislation."
|
||||
message_2: "Shoppers will only be required to accept Terms and Conditions once. However if you change you Terms and Conditions shoppers will again be required to accept them before they can checkout."
|
||||
terms_and_conditions_warning:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "All your buyers will have to agree to them once at checkout. If you update the file, all your buyers will have to agree to them again at checkout."
|
||||
message_2: "For buyers with subscriptions, you need to email them the Terms and Conditions (or the changes to them) for now, nothing will notify them about these new Terms and Conditions."
|
||||
panels:
|
||||
save: SAVE
|
||||
saved: SAVED
|
||||
@@ -2607,8 +2636,12 @@ en_GB:
|
||||
shopfront:
|
||||
variant:
|
||||
add_to_cart: "Add"
|
||||
in_cart: "in cart"
|
||||
quantity_in_cart: "%{quantity} in cart"
|
||||
bulk_buy_modal:
|
||||
min_quantity: "Min quantity"
|
||||
max_quantity: "Max quantity"
|
||||
price_breakdown: "Price breakdown"
|
||||
variants:
|
||||
on_demand:
|
||||
'yes': "Unlimited"
|
||||
@@ -2857,6 +2890,8 @@ en_GB:
|
||||
delete: "Delete"
|
||||
cannot_set_shipping_method_without_address: "Cannot set shipping method until customer details are provided."
|
||||
no_tracking_present: "No tracking details provided."
|
||||
tracking: "Tracking"
|
||||
tracking_number: "Tracking Number"
|
||||
order_total: "Order Total"
|
||||
customer_details: "Customer Details"
|
||||
customer_search: "Customer Search"
|
||||
@@ -2878,6 +2913,7 @@ en_GB:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -2889,6 +2925,8 @@ en_GB:
|
||||
server: "Server"
|
||||
test_mode: "Test Mode"
|
||||
logourl: "Logo url"
|
||||
are_you_sure_delete: "Are you sure you want to delete this record?"
|
||||
confirm_delete: "Confirm Deletion"
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
site_name: "Site Name"
|
||||
@@ -2990,19 +3028,27 @@ en_GB:
|
||||
inventory_error_flash_for_insufficient_quantity: "An item in your cart has become unavailable."
|
||||
inventory: Inventory
|
||||
zipcode: Postcode
|
||||
weight: Weight (per kg or lb)
|
||||
error_user_destroy_with_orders: "Users with completed orders may not be deleted"
|
||||
cannot_create_payment_without_payment_methods: "You cannot create a payment for an order without any payment methods defined."
|
||||
please_define_payment_methods: "Please define some payment methods first."
|
||||
options: "Options"
|
||||
has_no_shipped_units: "has no shipped units"
|
||||
successfully_created: '%{resource} has been successfully created!'
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
not_available: "N/A"
|
||||
order_populator:
|
||||
out_of_stock: '%{item} is out of stock.'
|
||||
actions:
|
||||
update: "Update"
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 error prohibited this record from being saved:"
|
||||
few: "%{count} errors prohibited this record from being saved:"
|
||||
many: "%{count} errors 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:
|
||||
@@ -3041,7 +3087,6 @@ en_GB:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)"
|
||||
add_product_properties: "Add Product Properties"
|
||||
select_from_prototype: "Select From Prototype"
|
||||
properties:
|
||||
index:
|
||||
properties: "Properties"
|
||||
@@ -3134,6 +3179,8 @@ en_GB:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -3141,6 +3188,8 @@ en_GB:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
@@ -3415,6 +3464,7 @@ en_GB:
|
||||
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.
|
||||
subject: "Reset password instructions"
|
||||
confirmation_instructions:
|
||||
subject: "Please confirm your OFN account"
|
||||
shipment_mailer:
|
||||
|
||||
@@ -293,6 +293,7 @@ en_IE:
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -1577,7 +1578,8 @@ en_IE:
|
||||
hubs_distance: Closest to
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1723,7 +1725,8 @@ en_IE:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -2886,6 +2889,7 @@ en_IE:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -3006,6 +3010,7 @@ en_IE:
|
||||
has_no_shipped_units: "has no shipped units"
|
||||
successfully_created: '%{resource} has been successfully created!'
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
not_available: "N/A"
|
||||
order_populator:
|
||||
@@ -3015,7 +3020,8 @@ en_IE:
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 error prohibited this record from being saved:"
|
||||
few: "%{count} errors prohibited this record from being saved:"
|
||||
many: "%{count} errors 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:
|
||||
@@ -3054,7 +3060,6 @@ en_IE:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)"
|
||||
add_product_properties: "Add Product Properties"
|
||||
select_from_prototype: "Select From Prototype"
|
||||
properties:
|
||||
index:
|
||||
properties: "Properties"
|
||||
@@ -3147,6 +3152,8 @@ en_IE:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -3154,6 +3161,8 @@ en_IE:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
|
||||
@@ -284,6 +284,7 @@ en_IN:
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -1558,7 +1559,8 @@ en_IN:
|
||||
hubs_distance: Closest to
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1704,7 +1706,8 @@ en_IN:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -2850,6 +2853,7 @@ en_IN:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -2968,13 +2972,15 @@ en_IN:
|
||||
options: "Options"
|
||||
successfully_created: '%{resource} has been successfully created!'
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
actions:
|
||||
update: "Update"
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 error prohibited this record from being saved:"
|
||||
few: "%{count} errors prohibited this record from being saved:"
|
||||
many: "%{count} errors 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:
|
||||
@@ -3012,7 +3018,6 @@ en_IN:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)"
|
||||
add_product_properties: "Add Product Properties"
|
||||
select_from_prototype: "Select From Prototype"
|
||||
properties:
|
||||
index:
|
||||
properties: "Properties"
|
||||
@@ -3105,6 +3110,8 @@ en_IN:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -3112,6 +3119,8 @@ en_IN:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
|
||||
@@ -24,6 +24,9 @@ en_NZ:
|
||||
spree/credit_card:
|
||||
base: "Credit Card"
|
||||
number: "Number"
|
||||
month: "Month"
|
||||
verification_value: "Verification Value"
|
||||
year: "Year"
|
||||
order_cycle:
|
||||
orders_close_at: Close date
|
||||
variant_override:
|
||||
@@ -286,10 +289,16 @@ en_NZ:
|
||||
create_and_add_another: "Create and Add Another"
|
||||
create: "Create"
|
||||
cancel: "Cancel"
|
||||
resume: "Resume"
|
||||
save: "Save"
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
cut: "Cut"
|
||||
paste: "Paste"
|
||||
destroy: "Destroy"
|
||||
rename: "Rename"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -348,6 +357,7 @@ en_NZ:
|
||||
has_n_rules: "has %{num} rules"
|
||||
unsaved_confirm_leave: "There are unsaved changed on this page. Continue without saving?"
|
||||
unsaved_changes: "You have unsaved changes"
|
||||
available_units: "Available Units"
|
||||
shopfront_settings:
|
||||
embedded_shopfront_settings: "Embedded Shopfront Settings"
|
||||
enable_embedded_shopfronts: "Enable Embedded Shopfronts"
|
||||
@@ -407,6 +417,7 @@ en_NZ:
|
||||
search_by_email: "Search by email/code..."
|
||||
guest_label: "Guest checkout"
|
||||
credit_owed: "Credit Owed"
|
||||
balance_due: "Balance Due"
|
||||
destroy:
|
||||
has_associated_orders: "Delete failed: customer has associated orders with his shop"
|
||||
contents:
|
||||
@@ -595,6 +606,8 @@ en_NZ:
|
||||
controls:
|
||||
back_to_my_inventory: Back to my inventory
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: Are you sure you want to %{event} this order?
|
||||
invoice_email_sent: 'Invoice email has been sent'
|
||||
order_email_resent: 'Order email has been resent'
|
||||
bulk_management:
|
||||
@@ -643,6 +656,7 @@ en_NZ:
|
||||
invoice_text: Add customized text at the end of invoices
|
||||
terms_and_conditions: "Terms and Conditions"
|
||||
remove_terms_and_conditions: "Remove File"
|
||||
uploaded_on: "uploaded on"
|
||||
contact:
|
||||
name: Name
|
||||
name_placeholder: eg. Gustav Plum
|
||||
@@ -751,6 +765,7 @@ en_NZ:
|
||||
is displayed on your shop only when you have no active order cycles
|
||||
(ie. shop is closed).
|
||||
shopfront_category_ordering: "Shopfront Category Ordering"
|
||||
shopfront_category_ordering_note: "(top to bottom)"
|
||||
open_date: "Open Date"
|
||||
close_date: "Close Date"
|
||||
social:
|
||||
@@ -1160,6 +1175,7 @@ en_NZ:
|
||||
cart: "cart"
|
||||
message_html: "You have an order for this order cycle already. Check the %{cart} to see the items you ordered before. You can also cancel items as long as the order cycle is open."
|
||||
terms_and_conditions:
|
||||
message_html: "I agree to the seller's %{terms_and_conditions_link}."
|
||||
link_text: "Terms and Conditions"
|
||||
failed: "The checkout failed. Please let us know so that we can process your order."
|
||||
shops:
|
||||
@@ -1575,6 +1591,8 @@ en_NZ:
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1720,7 +1738,9 @@ en_NZ:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
one: An additional item is already confirmed for this order cycle
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -1999,6 +2019,7 @@ en_NZ:
|
||||
calculator: "Calculator"
|
||||
calculator_values: "Calculator values"
|
||||
calculator_settings_warning: "If you are changing the calculator type, you must save first before you can edit the calculator settings"
|
||||
calculator_preferred_unit_error: "must be kg or lb"
|
||||
flat_percent_per_item: "Flat Percent (per item)"
|
||||
flat_rate_per_item: "Flat Rate (per item)"
|
||||
flat_rate_per_order: "Flat Rate (per order)"
|
||||
@@ -2397,6 +2418,14 @@ en_NZ:
|
||||
By creating rules related to a specific customer tag, you can override
|
||||
the default behaviour (whether it be to show or to hide items) for customers
|
||||
with the specified tag.
|
||||
terms_and_conditions_info:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "Terms and Conditions are the contract between you, the seller, and the shopper. If you upload a file here shoppers must accept your Terms and Conditions in order to complete checkout. For the shopper this will appear as a checkbox at checkout that must be checked in order to proceed with checkout. We highly recommend you upload Terms and Conditions in alignment with national legislation."
|
||||
message_2: "Shoppers will only be required to accept Terms and Conditions once. However if you change the Terms and Conditions shoppers will be required to accept them again before they can checkout."
|
||||
terms_and_conditions_warning:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "All your buyers will have to agree to them once at checkout. If you update the file, all your buyers will have to agree to them again at checkout."
|
||||
message_2: "For buyers with subscriptions, you need to email them the Terms and Conditions (or the changes to them) for now, nothing will notify them about these new Terms and Conditions."
|
||||
panels:
|
||||
save: SAVE
|
||||
saved: SAVED
|
||||
@@ -2601,8 +2630,12 @@ en_NZ:
|
||||
shopfront:
|
||||
variant:
|
||||
add_to_cart: "Add"
|
||||
in_cart: "in cart"
|
||||
quantity_in_cart: "%{quantity} in cart"
|
||||
bulk_buy_modal:
|
||||
min_quantity: "Min quantity"
|
||||
max_quantity: "Max quantity"
|
||||
price_breakdown: "Price breakdown"
|
||||
variants:
|
||||
on_demand:
|
||||
'yes': "On demand"
|
||||
@@ -2851,6 +2884,8 @@ en_NZ:
|
||||
delete: "Delete"
|
||||
cannot_set_shipping_method_without_address: "Cannot set shipping method until customer details are provided."
|
||||
no_tracking_present: "No tracking details provided."
|
||||
tracking: "Tracking"
|
||||
tracking_number: "Tracking Number"
|
||||
order_total: "Order Total"
|
||||
customer_details: "Customer Details"
|
||||
customer_search: "Customer Search"
|
||||
@@ -2872,6 +2907,7 @@ en_NZ:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -2883,6 +2919,8 @@ en_NZ:
|
||||
server: "Server"
|
||||
test_mode: "Test Mode"
|
||||
logourl: "Logourl"
|
||||
are_you_sure_delete: "Are you sure you want to delete this record?"
|
||||
confirm_delete: "Confirm Deletion"
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
site_name: "Site Name"
|
||||
@@ -2984,19 +3022,27 @@ en_NZ:
|
||||
inventory_error_flash_for_insufficient_quantity: "An item in your cart has become unavailable."
|
||||
inventory: Inventory
|
||||
zipcode: Postcode
|
||||
weight: Weight
|
||||
error_user_destroy_with_orders: "Users with completed orders may not be deleted"
|
||||
cannot_create_payment_without_payment_methods: "You cannot create a payment for an order without any payment methods defined."
|
||||
please_define_payment_methods: "Please define some payment methods first."
|
||||
options: "Options"
|
||||
has_no_shipped_units: "has no shipped units"
|
||||
successfully_created: '%{resource} has been successfully created!'
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
not_available: "N/A"
|
||||
order_populator:
|
||||
out_of_stock: '%{item} is out of stock.'
|
||||
actions:
|
||||
update: "Update"
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 error prohibited this record from being saved:"
|
||||
few: "%{count} errors prohibited this record from being saved:"
|
||||
many: "%{count} errors 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:
|
||||
@@ -3035,7 +3081,6 @@ en_NZ:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)"
|
||||
add_product_properties: "Add Product Properties"
|
||||
select_from_prototype: "Select From Prototype"
|
||||
properties:
|
||||
index:
|
||||
properties: "Properties"
|
||||
@@ -3128,6 +3173,8 @@ en_NZ:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -3135,6 +3182,8 @@ en_NZ:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
@@ -3409,6 +3458,7 @@ en_NZ:
|
||||
issue_text: |
|
||||
If the above URL does not work try copying and pasting it into your browser.
|
||||
If you continue to have problems please contact us.
|
||||
subject: "Reset password instructions"
|
||||
confirmation_instructions:
|
||||
subject: "Please confirm your OFN account"
|
||||
shipment_mailer:
|
||||
|
||||
@@ -282,6 +282,7 @@ en_PH:
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -1540,7 +1541,8 @@ en_PH:
|
||||
hubs_distance: Closest to
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1679,7 +1681,8 @@ en_PH:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -2811,6 +2814,7 @@ en_PH:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -2923,6 +2927,7 @@ en_PH:
|
||||
options: "Options"
|
||||
successfully_created: '%{resource} has been successfully created!'
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
actions:
|
||||
update: "Update"
|
||||
@@ -2962,7 +2967,6 @@ en_PH:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)"
|
||||
add_product_properties: "Add Product Properties"
|
||||
select_from_prototype: "Select From Prototype"
|
||||
properties:
|
||||
index:
|
||||
properties: "Properties"
|
||||
@@ -3055,6 +3059,8 @@ en_PH:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -3062,6 +3068,8 @@ en_PH:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
|
||||
@@ -24,6 +24,9 @@ en_US:
|
||||
spree/credit_card:
|
||||
base: "Credit Card"
|
||||
number: "Number"
|
||||
month: "Month"
|
||||
verification_value: "Verification Value"
|
||||
year: "Year"
|
||||
order_cycle:
|
||||
orders_close_at: Close Date
|
||||
variant_override:
|
||||
@@ -286,10 +289,16 @@ en_US:
|
||||
create_and_add_another: "Create and Add Another"
|
||||
create: "Create"
|
||||
cancel: "Cancel"
|
||||
resume: "Resume"
|
||||
save: "Save"
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
cut: "Cut"
|
||||
paste: "Paste"
|
||||
destroy: "Destroy"
|
||||
rename: "Rename"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -348,6 +357,7 @@ en_US:
|
||||
has_n_rules: "has %{num} rules"
|
||||
unsaved_confirm_leave: "There are unsaved changed on this page. Continue without saving?"
|
||||
unsaved_changes: "You have unsaved changes"
|
||||
available_units: "Available Units"
|
||||
shopfront_settings:
|
||||
embedded_shopfront_settings: "Embedded Shopfront Settings"
|
||||
enable_embedded_shopfronts: "Enable Embedded Shopfronts"
|
||||
@@ -407,6 +417,7 @@ en_US:
|
||||
search_by_email: "Search by email/code..."
|
||||
guest_label: "Guest checkout"
|
||||
credit_owed: "Credit Owed"
|
||||
balance_due: "Balance Due"
|
||||
destroy:
|
||||
has_associated_orders: "Delete failed: customer has associated orders with his shop"
|
||||
contents:
|
||||
@@ -595,6 +606,8 @@ en_US:
|
||||
controls:
|
||||
back_to_my_inventory: Back to my inventory
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: Are you sure you want to %{event} this order?
|
||||
invoice_email_sent: 'Invoice email has been sent'
|
||||
order_email_resent: 'Order email has been resent'
|
||||
bulk_management:
|
||||
@@ -643,6 +656,7 @@ en_US:
|
||||
invoice_text: Add customized text at the end of invoices
|
||||
terms_and_conditions: "Terms and Conditions"
|
||||
remove_terms_and_conditions: "Remove File"
|
||||
uploaded_on: "uploaded on"
|
||||
contact:
|
||||
name: Name
|
||||
name_placeholder: eg. Justin Jones
|
||||
@@ -751,6 +765,7 @@ en_US:
|
||||
is displayed on your shop only when you have no active order cycles
|
||||
(ie. shop is closed).
|
||||
shopfront_category_ordering: "Shopfront Category Ordering"
|
||||
shopfront_category_ordering_note: "(top to bottom)"
|
||||
open_date: "Open Date"
|
||||
close_date: "Close Date"
|
||||
social:
|
||||
@@ -1160,6 +1175,7 @@ en_US:
|
||||
cart: "cart"
|
||||
message_html: "You have an order for this order cycle already. Check the %{cart} to see the items you ordered before. You can also cancel items as long as the order cycle is open."
|
||||
terms_and_conditions:
|
||||
message_html: "I agree to the seller's %{terms_and_conditions_link}."
|
||||
link_text: "Terms and Conditions"
|
||||
failed: "The checkout failed. Please let us know so that we can process your order."
|
||||
shops:
|
||||
@@ -1483,7 +1499,7 @@ en_US:
|
||||
email_confirm_customer_details_html: "Here are your order details from <strong>%{distributor}</strong>:"
|
||||
email_confirm_customer_signoff: "Kind regards,"
|
||||
email_confirm_shop_greeting: "Hi %{name},"
|
||||
email_confirm_shop_order_html: "Awesome! You have a new order for <strong>%{distributor}</strong>!"
|
||||
email_confirm_shop_order_html: "Woo hoo! You have a new order for <strong>%{distributor}</strong>!"
|
||||
email_confirm_shop_number_html: "Order confirmation <strong>#%{number}</strong>"
|
||||
email_order_summary_item: "Item"
|
||||
email_order_summary_quantity: "Qty"
|
||||
@@ -1575,6 +1591,8 @@ en_US:
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1720,7 +1738,9 @@ en_US:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
one: An additional item is already confirmed for this order cycle
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -2398,6 +2418,14 @@ en_US:
|
||||
By creating rules related to a specific customer tag, you can override
|
||||
the default behavior (whether it be to show or to hide items) for customers
|
||||
with the specified tag.
|
||||
terms_and_conditions_info:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "Terms and Conditions are the contract between you, the seller, and the shopper. If you upload a file here shoppers must accept your Terms and Conditions in order to complete checkout. For the shopper this will appear as a checkbox at checkout that must be checked in order to proceed with checkout. We highly recommend you upload Terms and Conditions in alignment with national legislation."
|
||||
message_2: "Shoppers will only be required to accept Terms and Conditions once. However if you change your Terms and Conditions shoppers will again be required to accept them before they can checkout."
|
||||
terms_and_conditions_warning:
|
||||
title: "Uploading Terms and Conditions"
|
||||
message_1: "All your buyers will have to agree to them once at checkout. If you update the file, all your buyers will have to agree to them again at checkout."
|
||||
message_2: "For buyers with subscriptions, you need to email them the Terms and Conditions (or the changes to them) for now, nothing will notify them about these new Terms and Conditions."
|
||||
panels:
|
||||
save: SAVE
|
||||
saved: SAVED
|
||||
@@ -2602,8 +2630,12 @@ en_US:
|
||||
shopfront:
|
||||
variant:
|
||||
add_to_cart: "Add"
|
||||
in_cart: "in cart"
|
||||
quantity_in_cart: "%{quantity} in cart"
|
||||
bulk_buy_modal:
|
||||
min_quantity: "Min quantity"
|
||||
max_quantity: "Max quantity"
|
||||
price_breakdown: "Price breakdown"
|
||||
variants:
|
||||
on_demand:
|
||||
'yes': "On demand"
|
||||
@@ -2873,6 +2905,7 @@ en_US:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -2884,6 +2917,8 @@ en_US:
|
||||
server: "Server"
|
||||
test_mode: "Test Mode"
|
||||
logourl: "Logourl"
|
||||
are_you_sure_delete: "Are you sure you want to delete this record?"
|
||||
confirm_delete: "Confirm Deletion"
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
site_name: "Site Name"
|
||||
@@ -2990,15 +3025,22 @@ en_US:
|
||||
cannot_create_payment_without_payment_methods: "You cannot create a payment for an order without any payment methods defined."
|
||||
please_define_payment_methods: "Please define some payment methods first."
|
||||
options: "Options"
|
||||
has_no_shipped_units: "has no shipped units"
|
||||
successfully_created: '%{resource} has been successfully created!'
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
not_available: "N/A"
|
||||
order_populator:
|
||||
out_of_stock: '%{item} is out of stock.'
|
||||
actions:
|
||||
update: "Update"
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 error prohibited this record from being saved:"
|
||||
few: "%{count} errors prohibited this record from being saved:"
|
||||
many: "%{count} errors 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:
|
||||
@@ -3037,7 +3079,6 @@ en_US:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)"
|
||||
add_product_properties: "Add Product Properties"
|
||||
select_from_prototype: "Select From Prototype"
|
||||
properties:
|
||||
index:
|
||||
properties: "Properties"
|
||||
@@ -3130,6 +3171,8 @@ en_US:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -3137,6 +3180,8 @@ en_US:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
@@ -3411,6 +3456,7 @@ en_US:
|
||||
issue_text: |
|
||||
If the above URL does nor work, try to copy and paste it into your browser.
|
||||
If you continue to have problems please feel free to contact us.
|
||||
subject: "Reset password instructions"
|
||||
confirmation_instructions:
|
||||
subject: "Please confirm your OFN account"
|
||||
shipment_mailer:
|
||||
|
||||
@@ -283,6 +283,7 @@ en_ZA:
|
||||
edit: "Edit"
|
||||
update: "Update"
|
||||
delete: "Delete"
|
||||
add: "Add"
|
||||
admin:
|
||||
begins_at: Begins At
|
||||
begins_on: Begins On
|
||||
@@ -1547,7 +1548,8 @@ en_ZA:
|
||||
hubs_distance: Closest to
|
||||
hubs_distance_filter: "Show me shops near %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Your order with <a href='%{path}' target='_blank'>%{shop} / %{order}</a> is open for review. You can make changes until %{oc_close}.
|
||||
few: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
many: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
other: You have <a href='%{path}' target='_blank'>%{count} orders with %{shop}</a> currently open for review. You can make changes until %{oc_close}.
|
||||
orders_changeable_orders_alert_html: This order has been confirmed, but you can make changes until <strong>%{oc_close}</strong>.
|
||||
products_clear: Clear
|
||||
@@ -1693,7 +1695,8 @@ en_ZA:
|
||||
orders_could_not_cancel: "Sorry, the order could not be cancelled"
|
||||
orders_cannot_remove_the_final_item: "Cannot remove the final item from an order, please cancel the order instead."
|
||||
orders_bought_items_notice:
|
||||
one: "An additional item is already confirmed for this order cycle"
|
||||
few: "%{count} additional items already confirmed for this order cycle"
|
||||
many: "%{count} additional items already confirmed for this order cycle"
|
||||
other: "%{count} additional items already confirmed for this order cycle"
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
@@ -2756,6 +2759,7 @@ en_ZA:
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
credit_card: "Credit Card"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
@@ -2858,6 +2862,7 @@ en_ZA:
|
||||
error_user_destroy_with_orders: "Users with completed orders may not be deleted"
|
||||
successfully_created: '%{resource} has been successfully created!'
|
||||
successfully_updated: '%{resource} has been successfully updated!'
|
||||
payment_method: "Payment Method"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
actions:
|
||||
update: "Update"
|
||||
@@ -2959,6 +2964,8 @@ en_ZA:
|
||||
active_products:
|
||||
zero: "You don't have any active products."
|
||||
one: "You have one active product"
|
||||
few: "You have %{count} active products"
|
||||
many: "You have %{count} active products"
|
||||
other: "You have %{count} active products"
|
||||
order_cycles:
|
||||
order_cycles: "Order Cycles"
|
||||
@@ -2966,6 +2973,8 @@ en_ZA:
|
||||
you_have_active:
|
||||
zero: "You don't have any active order cycles."
|
||||
one: "You have one active order cycle."
|
||||
few: "You have %{count} active order cycles."
|
||||
many: "You have %{count} active order cycles."
|
||||
other: "You have %{count} active order cycles."
|
||||
manage_order_cycles: "MANAGE ORDER CYCLES"
|
||||
shipping_methods:
|
||||
|
||||
@@ -289,10 +289,16 @@ es:
|
||||
create_and_add_another: "Crear y agregar otro"
|
||||
create: "Crear"
|
||||
cancel: "Cancelar"
|
||||
resume: "Continuar"
|
||||
save: "Guardar"
|
||||
edit: "Editar"
|
||||
update: "Actualizar"
|
||||
delete: "Borrar"
|
||||
add: "Añadir"
|
||||
cut: "Cortar"
|
||||
paste: "Pegar"
|
||||
destroy: "Eliminar"
|
||||
rename: "Renombrar"
|
||||
admin:
|
||||
begins_at: Empieza en
|
||||
begins_on: Comienza en
|
||||
@@ -351,6 +357,7 @@ es:
|
||||
has_n_rules: "Tiene %{num} reglas"
|
||||
unsaved_confirm_leave: "Has cambios sin guardar en esta página ¿Continuar sin guardar?"
|
||||
unsaved_changes: "Tienes cambios sin guardar"
|
||||
available_units: "Unidades disponibles"
|
||||
shopfront_settings:
|
||||
embedded_shopfront_settings: "Configuración de la tienda integrada"
|
||||
enable_embedded_shopfronts: "Habilitar tiendas integradas"
|
||||
@@ -410,6 +417,7 @@ es:
|
||||
search_by_email: "Buscar por email/código"
|
||||
guest_label: "Hacer pedido como invitado"
|
||||
credit_owed: "Crédito debido"
|
||||
balance_due: "Saldo adeudado"
|
||||
destroy:
|
||||
has_associated_orders: "Se ha producido un error en la eliminación: la consumidora tiene pedidos asociados en su tienda."
|
||||
contents:
|
||||
@@ -598,6 +606,8 @@ es:
|
||||
controls:
|
||||
back_to_my_inventory: Volver a mi inventario
|
||||
orders:
|
||||
edit:
|
||||
order_sure_want_to: ¿Está seguro de que desea %{event} este pedido?
|
||||
invoice_email_sent: 'Se ha enviado correo electrónico con la factura.'
|
||||
order_email_resent: 'El correo electrónico del pedido se ha reenviado'
|
||||
bulk_management:
|
||||
@@ -646,6 +656,7 @@ es:
|
||||
invoice_text: Añadir texto personalizado al final de las facturas
|
||||
terms_and_conditions: "Términos y Condiciones"
|
||||
remove_terms_and_conditions: "Eliminar archivo"
|
||||
uploaded_on: "Subido en"
|
||||
contact:
|
||||
name: Nombre
|
||||
name_placeholder: ej. Gustav Plum
|
||||
@@ -756,6 +767,7 @@ es:
|
||||
en tu tienda sólo cuando no tienes ciclos de pedidos activos (p.e. la
|
||||
tienda está cerrada).
|
||||
shopfront_category_ordering: "Orden de las categorías de la tienda"
|
||||
shopfront_category_ordering_note: "(de arriba hacia abajo)"
|
||||
open_date: "Fecha de Inicio"
|
||||
close_date: "Fecha de Finalización"
|
||||
social:
|
||||
@@ -1165,6 +1177,7 @@ es:
|
||||
cart: "carrito"
|
||||
message_html: "Ya realizó un pedido para este ciclo de pedido. Compruebe el %{cart}para ver los artículos que pidió. También puede cancelar artículos mientras el ciclo de pedido siga abierto."
|
||||
terms_and_conditions:
|
||||
message_html: "Acepto el %{terms_and_conditions_link} del vendedor."
|
||||
link_text: "Términos y Condiciones"
|
||||
failed: "La finalización de compra falló, por favor comunicate con nosotros para procesar la orden."
|
||||
shops:
|
||||
@@ -1579,7 +1592,9 @@ es:
|
||||
hubs_distance: Más cercano a
|
||||
hubs_distance_filter: "Muéstrame tiendas cerca de %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Su pedido con <a href='%{path}' target='_blank'> %{shop} / %{order} </a> está abierto para revisión. Puede realizar cambios hasta %{oc_close}.
|
||||
one: Su pedido con <a href='%{path}' target='_blank'>%{shop} / %{order}</a> está abierto para revisión. Puede realizar cambios hasta %{oc_close}.
|
||||
few: 'Usted tiene <a href=''%{path}'' target=''_blank''> %{count} pedidos con %{shop} </a> actualmente abiertos para revisión. Puede realizar cambios hasta %{oc_close}. '
|
||||
many: 'Usted tiene <a href=''%{path}'' target=''_blank''> %{count} pedidos con %{shop} </a> actualmente abiertos para revisión. Puede realizar cambios hasta %{oc_close}. '
|
||||
other: 'Usted tiene <a href=''%{path}'' target=''_blank''> %{count} pedidos con %{shop} </a> actualmente abiertos para revisión. Puede realizar cambios hasta %{oc_close}. '
|
||||
orders_changeable_orders_alert_html: Este pedido ha sido confirmado, pero puede realizar cambios hasta <strong>%{oc_close}</strong>.
|
||||
products_clear: Limpiar
|
||||
@@ -1725,7 +1740,9 @@ es:
|
||||
orders_could_not_cancel: "Lo sentimos, no se pudo cancelar el pedido"
|
||||
orders_cannot_remove_the_final_item: "No se puede quitar el último artículo de un pedido, en su lugar, por favor cancele el pedido."
|
||||
orders_bought_items_notice:
|
||||
one: "Un elemento adicional ya está confirmado para este ciclo de pedido"
|
||||
one: Ya se ha confirmado un artículo adicional para este ciclo de pedido
|
||||
few: "%{count} artículos adicionales ya confirmados para este ciclo de pedido"
|
||||
many: "%{count} artículos adicionales ya confirmados para este ciclo de pedido"
|
||||
other: "%{count} artículos adicionales ya confirmados para este ciclo de pedido"
|
||||
orders_bought_edit_button: Editar artículos confirmados
|
||||
orders_bought_already_confirmed: "* ya confirmados"
|
||||
@@ -2404,6 +2421,14 @@ es:
|
||||
Al crear reglas relacionadas con una etiqueta de consumidor específica,
|
||||
puedes anular el comportamiento predeterminado (ya sea para mostrar
|
||||
u ocultar elementos) para los consumidores con la etiqueta concreta.
|
||||
terms_and_conditions_info:
|
||||
title: "Subiendo términos y condiciones"
|
||||
message_1: "Los términos y condiciones son el contrato entre usted, el vendedor y el comprador. Si carga un archivo aquí, los compradores deben aceptar sus Términos y condiciones para completar la compra. Para el comprador, esto aparecerá como una casilla de verificación en el momento de hacer el pedido que debe marcar para continuar con la compra. Le recomendamos encarecidamente que cargue los Términos y condiciones de acuerdo con la legislación nacional."
|
||||
message_2: "Los compradores solo deberán aceptar los términos y condiciones una vez. Sin embargo, si cambia sus Términos y condiciones, los compradores deberán aceptarlos nuevamente antes de poder hacer el pedido."
|
||||
terms_and_conditions_warning:
|
||||
title: "Subiendo términos y condiciones"
|
||||
message_1: "Todos sus compradores deberán aceptarlos una vez al finalizar la compra. Si actualiza el archivo, todos sus compradores deberán volver a aceptarlos al finalizar la compra."
|
||||
message_2: "Para los compradores con suscripciones, debe enviarles por correo electrónico los Términos y condiciones (o los cambios en ellos) por ahora, nada les notificará sobre estos nuevos Términos y condiciones."
|
||||
panels:
|
||||
save: GUARDAR
|
||||
saved: GUARDADO
|
||||
@@ -2863,6 +2888,8 @@ es:
|
||||
delete: "Borrar"
|
||||
cannot_set_shipping_method_without_address: "No se puede establecer el método de envío hasta que se proporcionen los detalles de la consumidora."
|
||||
no_tracking_present: "No se han proporcionado detalles de seguimiento."
|
||||
tracking: "Seguimiento"
|
||||
tracking_number: "Número de seguimiento"
|
||||
order_total: "Total del pedido"
|
||||
customer_details: "Detalles de la consumidora"
|
||||
customer_search: "Búsqueda de consumidores"
|
||||
@@ -2884,6 +2911,7 @@ es:
|
||||
adjustments: "Ajustes"
|
||||
continue: "Continuar"
|
||||
fill_in_customer_info: "Por favor complete la información de la consumidora"
|
||||
credit_card: "Tarjeta de crédito"
|
||||
new_payment: "Nuevo pago"
|
||||
capture: "Pagado"
|
||||
void: "Pendiente"
|
||||
@@ -2895,6 +2923,8 @@ es:
|
||||
server: "Servidor"
|
||||
test_mode: "Modo de prueba"
|
||||
logourl: "URL del logo"
|
||||
are_you_sure_delete: "¿Está seguro de que desea eliminar este registro?"
|
||||
confirm_delete: "Confirmar la eliminación"
|
||||
configurations: "Configuraciones"
|
||||
general_settings: "Configuración general"
|
||||
site_name: "Nombre del sitio"
|
||||
@@ -3004,6 +3034,7 @@ es:
|
||||
has_no_shipped_units: "no tiene unidades enviadas"
|
||||
successfully_created: '%{resource} se ha creado exitosamente!'
|
||||
successfully_updated: '%{resource} ha sido actualizado exitosamente!'
|
||||
payment_method: "Método de pago"
|
||||
payment_processing_failed: "No se pudo procesar el pago, por favor verifique los detalles que introdujo"
|
||||
not_available: "No disponible"
|
||||
order_populator:
|
||||
@@ -3013,7 +3044,9 @@ es:
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 error prohibió guardar este registro:"
|
||||
one: "1 error impidió que se guardara este registro:"
|
||||
few: "%{count} errores impidieron que se guardara este registro:"
|
||||
many: "%{count} errores impidieron que se guardara este registro:"
|
||||
other: "%{count} errores impidieron que se guardara este registro:"
|
||||
there_were_problems_with_the_following_fields: "Hubo problemas con los siguientes campos"
|
||||
payments_list:
|
||||
@@ -3052,7 +3085,6 @@ es:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "¿Heredar propiedades desde %{supplier}? (a menos que sea anulado arriba)"
|
||||
add_product_properties: "Agregar Propiedades del producto"
|
||||
select_from_prototype: "seleccionar de prototipo"
|
||||
properties:
|
||||
index:
|
||||
properties: "Propiedades"
|
||||
@@ -3145,6 +3177,8 @@ es:
|
||||
active_products:
|
||||
zero: "No tienes ningún producto activo"
|
||||
one: "Tiene un producto activo."
|
||||
few: "Tiene %{count} productos activos"
|
||||
many: "Tiene %{count} productos activos"
|
||||
other: "Tiene %{count} productos activos"
|
||||
order_cycles:
|
||||
order_cycles: "Ciclos de Pedido"
|
||||
@@ -3152,6 +3186,8 @@ es:
|
||||
you_have_active:
|
||||
zero: "No tienes ningún ciclo de pedido activo."
|
||||
one: "Tienes un ciclo de pedido activo."
|
||||
few: "Tienes %{count} ciclos de pedido activos."
|
||||
many: "Tienes %{count} ciclos de pedido activos."
|
||||
other: "Tienes %{count} ciclos de pedido activos."
|
||||
manage_order_cycles: "GESTIONA LOS CICLOS DE PEDIDO"
|
||||
shipping_methods:
|
||||
@@ -3426,6 +3462,7 @@ es:
|
||||
issue_text: |
|
||||
Si el enlace no funciona prueba a copiarlo y pegarlo en tu navegador.
|
||||
Si los problemas continúan no dudes en contactarnos.
|
||||
subject: "Instrucciones para restablecer la contraseña"
|
||||
confirmation_instructions:
|
||||
subject: "Por favor, confirma tu cuenta de OFN"
|
||||
shipment_mailer:
|
||||
|
||||
@@ -54,7 +54,7 @@ es_CO:
|
||||
order_management/reports/enterprise_fee_summary/parameters:
|
||||
start_at: "Inicio"
|
||||
end_at: "Final"
|
||||
distributor_ids: "Centros de acopio"
|
||||
distributor_ids: "Nodos"
|
||||
producer_ids: "Productoras"
|
||||
order_cycle_ids: "Ciclos de Pedido"
|
||||
enterprise_fee_ids: "Nombres de las comisiones"
|
||||
@@ -130,7 +130,7 @@ es_CO:
|
||||
subject: "%{enterprise} está ahora en %{sitename}"
|
||||
email_welcome: "Bienvenido"
|
||||
email_registered: "ahora es parte de"
|
||||
email_userguide_html: "La Guía de Usuario con soporte detallado para configurar su Productora o Grupo de Consumo está aquí: %{link}"
|
||||
email_userguide_html: "La Guía de Usuario con soporte detallado para configurar su Productora o Nodo está aquí: %{link}"
|
||||
userguide: "Guía de usuario de Open Food Network"
|
||||
email_admin_html: "Puede administrar su cuenta iniciando sesión en %{link} o haciendo clic en el engranaje arriba a la derecha de la página de inicio, y seleccionando Administración."
|
||||
admin_panel: "Panel de administración"
|
||||
@@ -288,6 +288,7 @@ es_CO:
|
||||
edit: "Editar"
|
||||
update: "Actualizar"
|
||||
delete: "Borrar"
|
||||
add: "Añadir"
|
||||
admin:
|
||||
begins_at: Empieza en
|
||||
begins_on: Comienza en
|
||||
@@ -412,7 +413,7 @@ es_CO:
|
||||
header: Encabezado
|
||||
home_page: Página principal
|
||||
producer_signup_page: Página de registro del productor
|
||||
hub_signup_page: Página para registro del Hub
|
||||
hub_signup_page: Página para registro del Nodo
|
||||
group_signup_page: Página de registro de grupo
|
||||
main_links: Enlaces al menú principal
|
||||
footer_and_external_links: Pie de página y enlaces externos
|
||||
@@ -814,18 +815,18 @@ es_CO:
|
||||
producer_profile: Perfil del productor
|
||||
connect_ofn: Conectar a través de OFN
|
||||
always_free: SIEMPRE GRATIS
|
||||
producer_description_text: Añade tus productos a Open Food Network, permitiendo a los Grupos de Consumo vender tus productos.
|
||||
producer_description_text: Añade tus productos a Open Food Network, permitiendo a los nodos agregar tus productos en sus tiendas.
|
||||
producer_shop: Tienda de productor
|
||||
sell_your_produce: Vende tu propia producción
|
||||
producer_shop_description_text: Venda sus productos directamente a los clientes a través de su propia tienda.
|
||||
producer_shop_description_text2: Una tienda de productor es para vender sus productos solamente, si quiere vender productos de otros productores, seleccione "Hub de Productor"
|
||||
producer_hub: Hub de productor
|
||||
producer_shop_description_text2: Una tienda de productor es para vender sus productos solamente, si quiere vender productos de otros productores, seleccione "Nodo de Productor"
|
||||
producer_hub: Nodo de productor
|
||||
producer_hub_text: Vende tu propia producción y la de otros
|
||||
producer_hub_description_text: Tu organización es la columna vertebral de un sistema de consumo local. Agrega productos tuyos o de otras organizaciones y véndelo a través de tu tienda en Open Food Network.
|
||||
profile: Solo perfil
|
||||
get_listing: Obtener un listado
|
||||
profile_description_text: La gente podrá encontrarlo y ponerse en contacto con usted en Open Food Network. Su organización será visible en el mapa y se podrá buscar en los listados.
|
||||
hub_shop: Tienda del Hub
|
||||
hub_shop: Tienda del Nodo
|
||||
hub_shop_text: Vender la producción de otros
|
||||
hub_shop_description_text: Tu organización es la columna vertebral de un sistema de consumo local. Agrega productos de otras organizaciones y véndelos a través de tu tienda en Open Food Network.
|
||||
choose_option: Por favor, elija una de las opciones anteriores.
|
||||
@@ -1176,8 +1177,8 @@ es_CO:
|
||||
mobile_menu:
|
||||
cart: "Carrito"
|
||||
register_call:
|
||||
selling_on_ofn: "¿Interesado en formar parte de Open Food Network?"
|
||||
register: "Regístrarse aquí"
|
||||
selling_on_ofn: "¿Interesado en vender a través de Open Food Network?"
|
||||
register: "Regístrese aquí"
|
||||
footer:
|
||||
footer_secure: "Seguro y de confianza."
|
||||
footer_secure_text: "Open Food Network utiliza encriptación SSL (RSA de 2048 bits) en todas partes para mantener la privacidad de su información de compras y pagos. Nuestros servidores no almacenan los datos de su tarjeta de crédito y los pagos son procesados por servicios compatibles con PCI."
|
||||
@@ -1392,15 +1393,15 @@ es_CO:
|
||||
brandstory_part6: "Todos amamos la comida. Ahora podemos amar nuestro sistema de comida también."
|
||||
learn_body: "Explora modelos, historias y recursos para ayudarte a desarrollar tu organización. Encuentra formación, eventos y otras oportunidades para aprender de tus compañeros."
|
||||
learn_cta: "Inspírate"
|
||||
connect_body: "Busca en nuestros directorios de productoras, grupos u otras organizaciones. Haz una lista de tu organización en OFN para que los consumidores puedan encontrarte. Únete a la comunidad para obtener consejos y resolver problemas juntos."
|
||||
connect_body: "Busque en nuestros directorios completos de productores, nodos y grupos para encontrar comerciantes justos de alimentos cerca de usted. Incluya su empresa u organización en la OFN para que los compradores puedan encontrarlo. Únase a la comunidad para recibir consejos y resolver problemas juntos."
|
||||
connect_cta: "Explorar"
|
||||
system_headline: "Compras - aquí está cómo funcionan."
|
||||
system_step1: "1. Buscar"
|
||||
system_step1_text: "Busque comida local y de temporada en nuestras tiendas diversas e independientes. Puede buscar por cantón y tipo de comida o si prefiere por método de envío."
|
||||
system_step2: "2. Comprar"
|
||||
system_step2_text: "Transforme su consumo con comida local y asequible de diversos productores ¡Conozca las historias detrás de su comida y la gente que la hace!"
|
||||
system_step2_text: "Transforme su consumo con comida local y asequible de diversos productores y nodos ¡Conozca las historias detrás de su comida y la gente que la hace!"
|
||||
system_step3: "3. Recogida"
|
||||
system_step3_text: "Visite su productor para crear un vínculo más directo con los productores y sus vecinos, también puede comprar directamente a algunos productores. Compre su comida de una manera tan diversa como la naturaleza."
|
||||
system_step3_text: "Espere su entrega, o visite su productor o nodo para una conexión más personal con su comida. Compra de alimentos tan diversa como la naturaleza lo propuso."
|
||||
cta_headline: "Compras que hacen el mundo un mejor lugar."
|
||||
cta_label: "Estoy listo"
|
||||
stats_headline: "Entre todos creamos un nuevo sistema de producción, distribución y consumo."
|
||||
@@ -1447,7 +1448,7 @@ es_CO:
|
||||
order_total_price: Total
|
||||
order_includes_tax: (incluye impuesto)
|
||||
order_payment_paypal_successful: Su pago a través de PayPal ha sido procesado con éxito.
|
||||
order_hub_info: Información del centro de acopio
|
||||
order_hub_info: Información del nodo
|
||||
order_back_to_store: Volver a la Tienda
|
||||
order_back_to_cart: Volver al Carrito
|
||||
bom_tip: "Use esta página para alterar la cantidad del producto en varios pedidos a la vez. Los productos pueden ser eliminados de los pedidos si es necesario. "
|
||||
@@ -1517,7 +1518,7 @@ es_CO:
|
||||
email_signup_welcome: "¡Bienvenido a %{sitename}!"
|
||||
email_signup_confirmed_email: "Gracias por confirmar su correo electrónico."
|
||||
email_signup_shop_html: "Ahora puedes iniciar sesión en %{link}."
|
||||
email_signup_text: "Gracias por unirse a la red. Si es un comprador, ¡esperamos presentarle a muchos agricultores, grupos de consumo y comida deliciosa! Si es un productor o forma parte de una organización de alimentos, estamos emocionados de que forme parte de la red."
|
||||
email_signup_text: "Gracias por unirse a la red. Si es un comprador, esperamos poder presentarle a muchos agricultores fantásticos, maravillosos nodos de alimentos y alimentos deliciosos. Si usted es un productor o una organización de alimentos, estamos emocionados de tenerlo como parte de la red."
|
||||
email_signup_help_html: "Agradecemos todas tus preguntas y retroalimentación; puedes usar el botón de <em>Enviar retroalimenación</em> en el sitio o escribir un correo electrónico a %{email}"
|
||||
invite_email:
|
||||
greeting: "¡Hola!"
|
||||
@@ -1566,7 +1567,8 @@ es_CO:
|
||||
hubs_distance: Más cercano a
|
||||
hubs_distance_filter: "Muéstrame tiendas cerca de %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Su pedido con <a href='%{path}' target='_blank'> %{shop} / %{order} </a> está abierto para revisión. Puede realizar cambios hasta %{oc_close}.
|
||||
few: 'Usted tiene <a href=''%{path}'' target=''_blank''> %{count} pedidos con %{shop} </a> actualmente abiertos para revisión. Puede realizar cambios hasta %{oc_close}. '
|
||||
many: 'Usted tiene <a href=''%{path}'' target=''_blank''> %{count} pedidos con %{shop} </a> actualmente abiertos para revisión. Puede realizar cambios hasta %{oc_close}. '
|
||||
other: 'Usted tiene <a href=''%{path}'' target=''_blank''> %{count} pedidos con %{shop} </a> actualmente abiertos para revisión. Puede realizar cambios hasta %{oc_close}. '
|
||||
orders_changeable_orders_alert_html: Este pedido ha sido confirmado, pero puede realizar cambios hasta <strong>%{oc_close}</strong>.
|
||||
products_clear: Limpiar
|
||||
@@ -1601,12 +1603,12 @@ es_CO:
|
||||
components_filters_clearfilters: "Limpiar todos los filtros"
|
||||
groups_title: Grupos
|
||||
groups_headline: Grupos / regiones
|
||||
groups_text: "Cada productor es único. Cada organización tiene algo diferente que ofrecer. Nuestros grupos son colectivos de productores, centros de acopio y distribuidores que comparten valores agroecológicos. Esto hace que su experiencia de compra sea más fácil."
|
||||
groups_text: "Cada productor es único. Cada negocio tiene algo diferente que ofrecer. Nuestros grupos son colectivos de productores, nodos y distribuidores que comparten algo en común, localización, mercado de agricultores o filosofía. Esto facilita su experiencia de compra. Así que explore nuestros grupos y disfrute la selección hecha para usted."
|
||||
groups_search: "Buscar nombre o palabra clave"
|
||||
groups_no_groups: "No se encontraron grupos"
|
||||
groups_about: "Acerca de nosotros"
|
||||
groups_producers: "Nuestros productores"
|
||||
groups_hubs: "Nuestros Grupos de Consumo"
|
||||
groups_hubs: "Nuestros nodos"
|
||||
groups_contact_web: Contacto
|
||||
groups_contact_social: Seguir
|
||||
groups_contact_address: Dirección
|
||||
@@ -1621,7 +1623,7 @@ es_CO:
|
||||
groups_signup_motivation2: Es por lo que salimos de la cama cada día. Somos una organización sin fines de lucro global, basada en código de fuente abierta. Jugamos de forma justa. Siempre puede confiar en nosotros.
|
||||
groups_signup_motivation3: Sabemos que tiene grandes ideas, y queremos ayudar. Compartiremos nuestro conocimiento, redes y recursos. Sabemos que el aislamiento no crea cambio, entonces nos asociaremos con usted.
|
||||
groups_signup_motivation4: Nos reunimos con usted en donde esté.
|
||||
groups_signup_motivation5: Quizás eres un grupo de consumo, productora o distribuidora u otra organización.
|
||||
groups_signup_motivation5: Ud. puede ser una alianza de nodos de alimentos, productores o distribuidores, y un organismo de la industria o un gobierno local.
|
||||
groups_signup_motivation6: Cualquiera que sea su rol en el movimiento de comida local, estamos listos para ayudar. De cualquier forma en que se pregunte cómo se vería Open Food Network o qué está haciendo en su parte del mundo, empecemos la conversación.
|
||||
groups_signup_motivation7: Hacemos que los movimientos alimenticios tengan más sentido.
|
||||
groups_signup_motivation8: Necesita activar y habilitar sus redes. Le ofrecemos una plataforma para conversación y acción. Necesita involucramiento real. Le ayudaremos a alcanzar todos los actores, todos los interesados, todos los sectores.
|
||||
@@ -1665,7 +1667,7 @@ es_CO:
|
||||
sell_headline: "¡Consíguelo en Open Food Network!"
|
||||
sell_motivation: "Muestra tus preciosos alimentos."
|
||||
sell_producers: "Productoras"
|
||||
sell_hubs: "Hubs"
|
||||
sell_hubs: "Nodos"
|
||||
sell_groups: "Grupos"
|
||||
sell_producers_detail: "Crea tu perfil en OFN en cuestión de minutos. En cualquier momento puedes actualizar tu perfil a una tienda en línea y vender tus productos directamente a los consumidores."
|
||||
sell_hubs_detail: "Crea un perfil para tu organización en OFN. En cualquier momento puedes actualizar tu perfil a una tienda de varias productoras."
|
||||
@@ -1677,12 +1679,12 @@ es_CO:
|
||||
shops_title: Tiendas
|
||||
shops_headline: Compras, transformadas.
|
||||
shops_text: Los alimentos crecen en ciclos, los agricultores cosechan en ciclos, y nosotros pedimos la comida en ciclos. Si encuentras un ciclo de pedido cerrado, vuelve a visitarlo pronto.
|
||||
shops_signup_title: Registrarse como un grupo de consumo
|
||||
shops_signup_headline: Grupos de Consumo, sin límites.
|
||||
shops_signup_title: Registrarse como un nodo
|
||||
shops_signup_headline: Nodos de alimentos, sin límites.
|
||||
shops_signup_motivation: Cualquiera que sea su modelo, lo apoyamos. De cualquier forma que cambie, estamos con usted. Somos una organización sin findes de lucro, independiente, y de código abierto. Somos los socios de software con los que ha soñado.
|
||||
shops_signup_action: Únete ahora
|
||||
shops_signup_pricing: Cuentas de organización
|
||||
shops_signup_stories: Historias de nuestros grupos de consumo.
|
||||
shops_signup_stories: Historias de nuestros nodos.
|
||||
shops_signup_help: Estamos listos para ayudar.
|
||||
shops_signup_help_text: Usted necesita un mejor retorno. Usted necesita nuevos compradores y socios de logística. Usted necesita que su historia sea contada a través de ventas al por mayor, al detalle y en la mesa de la cocina.
|
||||
shops_signup_detail: Aquí está el detalle.
|
||||
@@ -1698,9 +1700,9 @@ es_CO:
|
||||
orders_form_admin: Administrar y Gestionar
|
||||
orders_form_total: Total
|
||||
orders_oc_expired_headline: Los pedidos están cerrados para este ciclo
|
||||
orders_oc_expired_text: "Lo sentimos, ¡los pedidos para este ciclo cerraron hace %{time}! Contacta con tu grupo de consumo directamente para ver si pueden aceptar pedidos tardíos."
|
||||
orders_oc_expired_text_others_html: "Lo sentimos, ¡los pedidos para este ciclo cerraron hace %{time}! Contacta con tu grupo de consumo directamente para ver si pueden aceptar pedidos tardíos <strong>%{link}</strong>."
|
||||
orders_oc_expired_text_link: "o visitar otros ciclos de pedidos disponibles en este grupo de consumo"
|
||||
orders_oc_expired_text: "Lo sentimos, ¡los pedidos para este ciclo cerraron hace %{time}! Contacta con tu nodo directamente para ver si pueden aceptar pedidos tardíos."
|
||||
orders_oc_expired_text_others_html: "Lo sentimos, ¡los pedidos para este ciclo cerraron hace %{time}! Contacta con tu nodo directamente para ver si pueden aceptar pedidos tardíos <strong>%{link}</strong>."
|
||||
orders_oc_expired_text_link: "o vea los otros ciclos de pedidos disponibles en este nodo"
|
||||
orders_oc_expired_email: "Correo electrónico:"
|
||||
orders_oc_expired_phone: "Teléfono:"
|
||||
orders_show_title: Confirmación del pedido
|
||||
@@ -1712,7 +1714,8 @@ es_CO:
|
||||
orders_could_not_cancel: "Lo sentimos, no se pudo cancelar el pedido"
|
||||
orders_cannot_remove_the_final_item: "No se puede quitar el último artículo de un pedido, en su lugar, por favor cancele el pedido."
|
||||
orders_bought_items_notice:
|
||||
one: "Un elemento adicional ya está confirmado para este ciclo de pedido"
|
||||
few: "%{count} artículos adicionales ya confirmados para este ciclo de pedido"
|
||||
many: "%{count} artículos adicionales ya confirmados para este ciclo de pedido"
|
||||
other: "%{count} artículos adicionales ya confirmados para este ciclo de pedido"
|
||||
orders_bought_edit_button: Editar artículos confirmados
|
||||
orders_bought_already_confirmed: "* ya confirmados"
|
||||
@@ -1748,7 +1751,7 @@ es_CO:
|
||||
one_filter_applied: "1 filtro aplicado"
|
||||
x_filters_applied: "filtros aplicados"
|
||||
submitting_order: "Enviando su orden: espere"
|
||||
confirm_hub_change: "¿Está seguro? Esto cambiará tu grupo de consumo seleccionado y eliminará cualquier artículo en tu carrito de la compra."
|
||||
confirm_hub_change: "¿Está seguro? Esto cambiará su nodo seleccionado y eliminará cualquier artículo en su carrito de compra."
|
||||
confirm_oc_change: "¿Está seguro? Esto cambiará su ciclo de orden seleccionado y eliminará cualquier artículo en su carrito de compras."
|
||||
location_placeholder: "Escriba una ubicación..."
|
||||
error_required: "no puede estar vacío"
|
||||
@@ -1786,7 +1789,7 @@ es_CO:
|
||||
steps:
|
||||
introduction:
|
||||
registration_greeting: "¡Hola!"
|
||||
registration_intro: "Ahora puedes crear un perfil para tu Productora o Grupo de Consumo"
|
||||
registration_intro: "Ahora puede crear un perfil para su Productora o Nodo"
|
||||
registration_checklist: "¿Qué necesito?"
|
||||
registration_time: "5-10 minutos"
|
||||
registration_enterprise_address: "Dirección de la organización"
|
||||
@@ -1838,7 +1841,7 @@ es_CO:
|
||||
no_producer: "No, no soy una productora"
|
||||
producer_field_error: "Por favor elige uno. ¿Eres una productora?"
|
||||
yes_producer_help: "Las productoras hacen cosas deliciosas para comer y/o beber. Eres una productora si lo cultivas, lo haces crecer, lo preparas, lo horneas, lo fermentas, lo ordeñas, ..."
|
||||
no_producer_help: "Si no eres una productora, probablemente conozcas a alguien que venda o distribuya comida. También podrías convertirte en un grupo de consumo u otro tipo de organización."
|
||||
no_producer_help: "Si no es una productora, probablemente conozca a alguien que venda o distribuya alimentos. También podría convertirse en un nodo u otro tipo de organización."
|
||||
create_profile: "Crear Perfil"
|
||||
about:
|
||||
title: "Acerca de"
|
||||
@@ -2010,11 +2013,11 @@ es_CO:
|
||||
queued: "En Cola"
|
||||
scheduled_for: "Planificado para"
|
||||
customers: "Consumidores"
|
||||
please_select_hub: "Selecciona un Grupo"
|
||||
please_select_hub: "Seleccione un Nodo"
|
||||
loading_customers: "Cargando Consumidores"
|
||||
no_customers_found: "No se encuentran consumidores"
|
||||
go: "Ir"
|
||||
hub: "Grupo de Consumo"
|
||||
hub: "Nodo"
|
||||
producer: "Productora"
|
||||
product: "Producto"
|
||||
price: "Precio"
|
||||
@@ -2031,7 +2034,7 @@ es_CO:
|
||||
spree_admin_enterprises_fees: "Comisiones de la Organización"
|
||||
spree_admin_enterprises_none_create_a_new_enterprise: "CREAR NUEVA ORGANIZACIÓN"
|
||||
spree_admin_enterprises_none_text: "No tienes ninguna organización"
|
||||
spree_admin_enterprises_tabs_hubs: "HUBS"
|
||||
spree_admin_enterprises_tabs_hubs: "NODOS"
|
||||
spree_admin_enterprises_producers_manage_products: "GESTIONAR PRODUCTOS"
|
||||
spree_admin_enterprises_create_new_product: "CREAR UN NUEVO PRODUCTO"
|
||||
spree_admin_single_enterprise_alert_mail_confirmation: "Confirma la dirección de email para"
|
||||
@@ -2054,7 +2057,7 @@ es_CO:
|
||||
spree_order_availability_error: "El Distribuidor o el Ciclo de Pedido no pueden suministrar los productos en su carrito"
|
||||
spree_order_populator_error: "Este Distribuidor o Ciclo de Pedido no puede suministrar todos los productos en tu carrito. Por favor, elige otro."
|
||||
spree_order_populator_availability_error: "Este producto no está disponible por el distribuidor o Ciclo de Pedido elegido."
|
||||
spree_distributors_error: "Se debe seleccionar al menos un Grupo"
|
||||
spree_distributors_error: "Se debe seleccionar al menos un nodo"
|
||||
spree_user_enterprise_limit_error: "^ %{email} no está autorizado a tener más organizaciones (el límite es %{enterprise_limit})."
|
||||
spree_variant_product_error: Debes tener al menos una variante
|
||||
your_profil_live: "Tu perfil online"
|
||||
@@ -2088,13 +2091,13 @@ es_CO:
|
||||
admin_share_zipcode: "Código Postal"
|
||||
admin_share_country: "País"
|
||||
admin_share_state: "Provincia"
|
||||
hub_sidebar_hubs: "Hubs"
|
||||
hub_sidebar_hubs: "Nodos"
|
||||
hub_sidebar_none_available: "Ninguno Disponible"
|
||||
hub_sidebar_manage: "Gestionar"
|
||||
hub_sidebar_at_least: "Al menos un grupo debe ser seleccionado"
|
||||
hub_sidebar_at_least: "Al menos un nodo debe ser seleccionado"
|
||||
hub_sidebar_blue: "azul"
|
||||
hub_sidebar_red: "rojo"
|
||||
order_cycles_closed_for_hub: "El centro que ha seleccionado está temporalmente cerrado para pedidos. Por favor, inténtelo de nuevo más tarde."
|
||||
order_cycles_closed_for_hub: "El nodo que ha seleccionado está temporalmente cerrado para pedidos. Por favor, inténtelo de nuevo más tarde."
|
||||
report_customers_distributor: "Distribuidor"
|
||||
report_customers_supplier: "Proveedora"
|
||||
report_customers_cycle: "Ciclo de Pedido"
|
||||
@@ -2102,7 +2105,7 @@ es_CO:
|
||||
report_customers_csv: "Descargar como CSV"
|
||||
report_producers: "Productoras:"
|
||||
report_type: "Tipo de Reporte:"
|
||||
report_hubs: "Hubs: "
|
||||
report_hubs: "Nodos: "
|
||||
report_payment: "Métodos de Pago:"
|
||||
report_distributor: "Distribuidora:"
|
||||
report_payment_by: 'Pagos por Tipo'
|
||||
@@ -2126,10 +2129,10 @@ es_CO:
|
||||
report_header_address: Dirección
|
||||
report_header_billing_address: Dirección de Facturación
|
||||
report_header_relationship: Relación
|
||||
report_header_hub: Grupo
|
||||
report_header_hub_address: Dirección del Grupo
|
||||
report_header_to_hub: Al Grupo
|
||||
report_header_hub_code: Código de Grupo
|
||||
report_header_hub: Nodo
|
||||
report_header_hub_address: Dirección del Nodo
|
||||
report_header_to_hub: Al Nodo
|
||||
report_header_hub_code: Código del Nodo
|
||||
report_header_code: Código
|
||||
report_header_paid: ¿Pagado?
|
||||
report_header_delivery: ¿Entregado?
|
||||
@@ -2291,7 +2294,7 @@ es_CO:
|
||||
enterprise_fee_whole_order: Pedido completo
|
||||
enterprise_fee_by: "%{type} comisión por %{role} %{enterprise_name}"
|
||||
validation_msg_relationship_already_established: "^Esta relación ya existe."
|
||||
validation_msg_at_least_one_hub: "^Al menos se debe seleccionar un grupo de consumo"
|
||||
validation_msg_at_least_one_hub: "^Al menos se debe seleccionar un nodo"
|
||||
validation_msg_tax_category_cant_be_blank: "^La Categoría del Impuesto no puede estar vacía"
|
||||
validation_msg_is_associated_with_an_exising_customer: "está asociado con un cliente existente"
|
||||
content_configuration_pricing_table: "(TODO: tabla de precios)"
|
||||
@@ -2306,17 +2309,17 @@ es_CO:
|
||||
product_importer_products_save_error: No se guardó ningún producto con éxito
|
||||
product_import_file_not_found_notice: 'Archivo no encontrado o no se pudo abrir'
|
||||
product_import_no_data_in_spreadsheet_notice: 'No se encontraron datos en la hoja de cálculo'
|
||||
order_choosing_hub_notice: Tu Grupo se ha seleccionado.
|
||||
order_choosing_hub_notice: Su nodo se ha seleccionado.
|
||||
order_cycle_selecting_notice: Se ha seleccionado el ciclo de pedido.
|
||||
adjustments_tax_rate_error: "^Comprueba que los impuestos para este ajuste es correcta."
|
||||
active_distributors_not_ready_for_checkout_message_singular: >-
|
||||
El Grupo %{distributor_names} aparece en un ciclo de pedido activo, pero no
|
||||
tiene métodos de envío y pago válidos. Hasta que los configure, los clientes
|
||||
no podrán comprar en este grupo.
|
||||
El nodo %{distributor_names} aparece en un ciclo de pedido activo, pero no tiene
|
||||
métodos de envío y pago válidos. Hasta que los configure, los clientes no podrán
|
||||
comprar en este nodo.
|
||||
active_distributors_not_ready_for_checkout_message_plural: >-
|
||||
Los Grupos %{distributor_names} se listan los ciclos de pedido activos, pero
|
||||
Los nodos %{distributor_names} se listan los ciclos de pedido activos, pero
|
||||
no tienen métodos de envío y pago válidos. Hasta que los configure, los clientes
|
||||
no podrán comprar en estos concentradores.
|
||||
no podrán comprar en estos nodos.
|
||||
enterprise_fees_update_notice: Las comisiones de tu Organización se han actualizado.
|
||||
enterprise_register_package_error: "Seleccione un paquete"
|
||||
enterprise_register_error: "No se pudo completar el registro para %{enterprise}"
|
||||
@@ -2353,7 +2356,7 @@ es_CO:
|
||||
error: Error
|
||||
unavailable: No disponible
|
||||
profile: Perfil
|
||||
hub: Grupo
|
||||
hub: Nodo
|
||||
shop: Tienda
|
||||
choose: Escoge
|
||||
resolve_errors: Resuelve los siguientes errores
|
||||
@@ -2394,7 +2397,7 @@ es_CO:
|
||||
saved: GUARDADO
|
||||
saving: GUARDANDO
|
||||
enterprise_package:
|
||||
hub_profile: Perfil del Grupo
|
||||
hub_profile: Perfil del Nodo
|
||||
hub_profile_cost: "COSTE: GRATUITO PARA SIEMPRE"
|
||||
hub_profile_text1: >
|
||||
La gente puede encontrarte y ponerse en contacto contigo en Open Food
|
||||
@@ -2409,8 +2412,9 @@ es_CO:
|
||||
Agrega productos de otras organizaciones y véndelo a través de tu tienda
|
||||
en Open Food Network.
|
||||
hub_shop_text2: >
|
||||
Los grupos pueden tener diferentes finalidades, ya sea una cooperativa
|
||||
de alimentos, un grupo de consumo, un supermercado local, ...
|
||||
Los nodos pueden tomar muchas formas, ya sea una cooperativa de alimentos,
|
||||
un grupo de compras, un programa de caja de verduras o una tienda local
|
||||
de comestibles.
|
||||
hub_shop_text3: >
|
||||
Si también quieres vender tus propios productos, tendrás que cambiar
|
||||
esta organización para ser una productora.
|
||||
@@ -2431,28 +2435,28 @@ es_CO:
|
||||
Si prefieres concentrarte en producir alimentos y deseas dejar el trabajo
|
||||
de venderlo a otras personas, no necesitas una tienda en Open Food Network.
|
||||
profile_only_text3: >
|
||||
Añade tus productos a Open Food Network, permitiendo a los Hubs vender
|
||||
tus productos.
|
||||
Añada sus productos a Open Food Network, permitiendo a los Nodos agregar
|
||||
sus productos en sus tiendas.
|
||||
producer_shop: Tienda de productor
|
||||
producer_shop_text1: >
|
||||
Vende tus productos directamente a los consumidores con tu tienda en
|
||||
Open Food Network.
|
||||
producer_shop_text2: >
|
||||
Una tienda de productora es para tu producto solamente, si quieres vender
|
||||
productos de otros productores, selecciona 'Grupo de Productores'.
|
||||
producer_hub: Grupo de Productoras
|
||||
Una tienda de productora es solo para lo que ud. produce, si quiere
|
||||
vender productos de otros productores, seleccione 'Nodo de Productores'.
|
||||
producer_hub: Nodo de Productoras
|
||||
producer_hub_text1: >
|
||||
Tu organización es la columna vertebral de un sistema de consumo local.
|
||||
Agrega productos tuyos o de otras organizaciones y véndelo a través
|
||||
de tu tienda en Open Food Network.
|
||||
producer_hub_text2: >
|
||||
Los Hubs de Productoras pueden tener diferentes finalidades, ya sea
|
||||
una cooperativa de alimentos, un grupo de consumo o un supermercado
|
||||
local.
|
||||
Los Nodos de Productoras pueden tomar muchas formas, ya sea un cooperativa
|
||||
de agricultores, un programa vegetariano o una cooperativa de alimentos
|
||||
con un jardín en la azotea.
|
||||
producer_hub_text3: >
|
||||
Open Food Network tiene como objetivo apoyar tantos modelos de organizaciones
|
||||
Open Food Network tiene como objetivo apoyar tantos modelos de nodo
|
||||
como sea posible, queremos aportarte las herramientas que necesites
|
||||
para poner en marcha tu organización.
|
||||
para poner en marcha tu organización o negocio local de alimentos.
|
||||
get_listing: Obtener un listado
|
||||
always_free: SIEMPRE GRATIS
|
||||
sell_produce_others: Vende la producción de otros
|
||||
@@ -2864,6 +2868,7 @@ es_CO:
|
||||
adjustments: "Ajustes"
|
||||
continue: "Continuar"
|
||||
fill_in_customer_info: "Por favor complete la información del cliente"
|
||||
credit_card: "Tarjeta de crédito"
|
||||
new_payment: "Nuevo pago"
|
||||
capture: "Captura"
|
||||
void: "Vacío"
|
||||
@@ -2982,14 +2987,12 @@ es_CO:
|
||||
options: "Opciones"
|
||||
successfully_created: '%{resource} se ha creado exitosamente!'
|
||||
successfully_updated: '%{resource} ha sido actualizado exitosamente!'
|
||||
payment_method: "Método de pago"
|
||||
payment_processing_failed: "No se pudo procesar el pago, por favor verifique los detalles que introdujo"
|
||||
actions:
|
||||
update: "Actualizar"
|
||||
shared:
|
||||
error_messages:
|
||||
errors_prohibited_this_record_from_being_saved:
|
||||
one: "1 error prohibió que se guardara este registro:"
|
||||
other: "Los errores %{count} impidieron que se guardara este registro:"
|
||||
there_were_problems_with_the_following_fields: "Hubo problemas con los siguientes campos"
|
||||
payments_list:
|
||||
date_time: "Fecha y hora"
|
||||
@@ -3027,7 +3030,6 @@ es_CO:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "¿Heredar propiedades desde %{supplier}? (a menos que sea anulado arriba)"
|
||||
add_product_properties: "Agregar propiedades del producto"
|
||||
select_from_prototype: "Seleccionar de prototipo"
|
||||
properties:
|
||||
index:
|
||||
properties: "Propiedades"
|
||||
@@ -3115,11 +3117,13 @@ es_CO:
|
||||
order_total: "Total del pedido"
|
||||
overview:
|
||||
enterprises_header:
|
||||
ofn_with_tip: Las organizaciones son productores y/o grupos y son la unidad básica de organización dentro de Open Food Network.
|
||||
ofn_with_tip: Las organizaciones son Productores y/o Nodos y son la unidad básica de organización dentro de Open Food Network.
|
||||
products:
|
||||
active_products:
|
||||
zero: "No tienes ningún producto activo"
|
||||
one: "Tiene un producto activo."
|
||||
few: "Tiene %{count} productos activos"
|
||||
many: "Tiene %{count} productos activos"
|
||||
other: "Tiene %{count} productos activos"
|
||||
order_cycles:
|
||||
order_cycles: "Ciclos de Pedido"
|
||||
@@ -3127,6 +3131,8 @@ es_CO:
|
||||
you_have_active:
|
||||
zero: "No tienes ningún ciclo de pedido activo."
|
||||
one: "Tienes un ciclo de pedido activo."
|
||||
few: "Tienes %{count} ciclos de pedido activos."
|
||||
many: "Tienes %{count} ciclos de pedido activos."
|
||||
other: "Tienes %{count} ciclos de pedido activos."
|
||||
manage_order_cycles: "GESTIONA LOS CICLOS DE PEDIDO"
|
||||
shipping_methods:
|
||||
|
||||
@@ -282,6 +282,7 @@ es_CR:
|
||||
edit: "Editar"
|
||||
update: "Actualizar"
|
||||
delete: "Borrar"
|
||||
add: "Añadir"
|
||||
admin:
|
||||
begins_at: Empieza en
|
||||
begins_on: Comienza en
|
||||
@@ -1543,7 +1544,8 @@ es_CR:
|
||||
hubs_distance: Más cercano a
|
||||
hubs_distance_filter: "Muéstrame tiendas cerca de %{location}"
|
||||
shop_changeable_orders_alert_html:
|
||||
one: Su pedido con <a href='%{path}' target='_blank'> %{shop} / %{order} </a> está abierto para revisión. Puede realizar cambios hasta %{oc_close}.
|
||||
few: 'Usted tiene <a href=''%{path}'' target=''_blank''> %{count} pedidos con %{shop} </a> actualmente abiertos para revisión. Puede realizar cambios hasta %{oc_close}. '
|
||||
many: 'Usted tiene <a href=''%{path}'' target=''_blank''> %{count} pedidos con %{shop} </a> actualmente abiertos para revisión. Puede realizar cambios hasta %{oc_close}. '
|
||||
other: 'Usted tiene <a href=''%{path}'' target=''_blank''> %{count} pedidos con %{shop} </a> actualmente abiertos para revisión. Puede realizar cambios hasta %{oc_close}. '
|
||||
orders_changeable_orders_alert_html: Este pedido ha sido confirmado, pero puede realizar cambios hasta <strong>%{oc_close}</strong>.
|
||||
products_clear: Limpiar
|
||||
@@ -1682,7 +1684,8 @@ es_CR:
|
||||
orders_could_not_cancel: "Lo sentimos, no se pudo cancelar el pedido"
|
||||
orders_cannot_remove_the_final_item: "No se puede quitar el último artículo de un pedido, en su lugar, por favor cancele el pedido."
|
||||
orders_bought_items_notice:
|
||||
one: "Un elemento adicional ya está confirmado para este ciclo de pedido"
|
||||
few: "%{count} artículos adicionales ya confirmados para este ciclo de pedido"
|
||||
many: "%{count} artículos adicionales ya confirmados para este ciclo de pedido"
|
||||
other: "%{count} artículos adicionales ya confirmados para este ciclo de pedido"
|
||||
orders_bought_edit_button: Editar artículos confirmados
|
||||
orders_bought_already_confirmed: "* ya confirmados"
|
||||
@@ -2819,6 +2822,7 @@ es_CR:
|
||||
adjustments: "Ajustes"
|
||||
continue: "Continuar"
|
||||
fill_in_customer_info: "Por favor complete la información del cliente"
|
||||
credit_card: "Tarjeta de crédito"
|
||||
new_payment: "Nuevo pago"
|
||||
capture: "Captura"
|
||||
void: "Vacío"
|
||||
@@ -2931,6 +2935,7 @@ es_CR:
|
||||
options: "Opciones"
|
||||
successfully_created: '%{resource} se ha creado exitosamente!'
|
||||
successfully_updated: '%{resource} ha sido actualizado exitosamente!'
|
||||
payment_method: "Método de pago"
|
||||
payment_processing_failed: "No se pudo procesar el pago, por favor verifique los detalles que introdujo"
|
||||
actions:
|
||||
update: "Actualizar"
|
||||
@@ -2970,7 +2975,6 @@ es_CR:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "¿Heredar propiedades desde %{supplier}? (a menos que sea anulado arriba)"
|
||||
add_product_properties: "Agregar propiedades del producto"
|
||||
select_from_prototype: "Seleccionar de prototipo"
|
||||
properties:
|
||||
index:
|
||||
properties: "Propiedades"
|
||||
@@ -3063,6 +3067,8 @@ es_CR:
|
||||
active_products:
|
||||
zero: "No tienes ningún producto activo"
|
||||
one: "Tiene un producto activo."
|
||||
few: "Tiene %{count} productos activos"
|
||||
many: "Tiene %{count} productos activos"
|
||||
other: "Tiene %{count} productos activos"
|
||||
order_cycles:
|
||||
order_cycles: "Ciclos de Pedido"
|
||||
@@ -3070,6 +3076,8 @@ es_CR:
|
||||
you_have_active:
|
||||
zero: "No tienes ningún ciclo de pedido activo."
|
||||
one: "Tienes un ciclo de pedido activo."
|
||||
few: "Tienes %{count} ciclos de pedido activos."
|
||||
many: "Tienes %{count} ciclos de pedido activos."
|
||||
other: "Tienes %{count} ciclos de pedido activos."
|
||||
manage_order_cycles: "GESTIONA LOS CICLOS DE PEDIDO"
|
||||
shipping_methods:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user