mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Merge branch 'master' into 2-0-stable-dec-10th
This commit is contained in:
@@ -114,7 +114,7 @@ $ createdb open_food_network_test --owner=ofn
|
||||
If these commands succeed, you should be able to [continue the setup process](#get-it-running).
|
||||
|
||||
[developer-wiki]: https://github.com/openfoodfoundation/openfoodnetwork/wiki
|
||||
[sierra]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup:-macOS-(Sierra)
|
||||
[sierra]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup%3A-macOS-%28Sierra%2C-HighSierra-and-Mojave%29
|
||||
[el-capitan]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup:-OS-X-(El-Capitan)
|
||||
[ubuntu]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup:-Ubuntu
|
||||
[wiki]: https://github.com/openfoodfoundation/openfoodnetwork/wiki
|
||||
|
||||
@@ -497,7 +497,7 @@ GEM
|
||||
actionpack (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
kgio (2.11.2)
|
||||
knapsack (1.16.0)
|
||||
knapsack (1.17.1)
|
||||
rake
|
||||
launchy (2.4.3)
|
||||
addressable (~> 2.3)
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
@import 'darkswarm/branding';
|
||||
|
||||
$modal-background-color: #efefef;
|
||||
$modal-content-background-color: #fff;
|
||||
$modal-alert-link-color: #fff;
|
||||
$modal-alert-link-hover-color: rgba(255, 255, 255, .7);
|
||||
|
||||
$cookies-banner-background-color: $dark-grey;
|
||||
$cookies-banner-button-background-color: $clr-turquoise;
|
||||
$cookies-banner-text-color: $white;
|
||||
$cookies-policy-modal-background-color: $disabled-light;
|
||||
$cookies-policy-modal-border-bottom-color: $disabled-light;
|
||||
$cookies-policy-modal-table-tr-even-background-color: $disabled-very-light;
|
||||
|
||||
@@ -4,5 +4,11 @@ class ShopsController < BaseController
|
||||
before_filter :enable_embedded_shopfront
|
||||
|
||||
def index
|
||||
@enterprises = Enterprise
|
||||
.activated
|
||||
.includes(address: :state)
|
||||
.includes(:properties)
|
||||
.includes(supplied_products: :properties)
|
||||
.all
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
require 'open_food_network/enterprise_injection_data'
|
||||
|
||||
module InjectionHelper
|
||||
def inject_enterprises
|
||||
inject_json_ams "enterprises", Enterprise.activated.includes(address: :state).all, Api::EnterpriseSerializer, enterprise_injection_data
|
||||
def inject_enterprises(enterprises = Enterprise.activated.includes(address: :state).all)
|
||||
inject_json_ams(
|
||||
'enterprises',
|
||||
enterprises,
|
||||
Api::EnterpriseSerializer,
|
||||
enterprise_injection_data
|
||||
)
|
||||
end
|
||||
|
||||
def inject_enterprise_and_relatives
|
||||
|
||||
@@ -26,6 +26,9 @@ module Spree
|
||||
# When a Property is destroyed, dependent-destroy will destroy all ProductProperties,
|
||||
# which will take care of refreshing the products cache
|
||||
|
||||
def property
|
||||
self
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
|
||||
161
app/serializers/api/cached_enterprise_serializer.rb
Normal file
161
app/serializers/api/cached_enterprise_serializer.rb
Normal file
@@ -0,0 +1,161 @@
|
||||
require 'open_food_network/property_merge'
|
||||
|
||||
module Api
|
||||
class CachedEnterpriseSerializer < ActiveModel::Serializer
|
||||
include SerializerHelper
|
||||
|
||||
cached
|
||||
|
||||
def cache_key
|
||||
object.andand.cache_key
|
||||
end
|
||||
|
||||
attributes :name, :id, :description, :latitude, :longitude,
|
||||
:long_description, :website, :instagram, :linkedin, :twitter,
|
||||
:facebook, :is_primary_producer, :is_distributor, :phone, :visible,
|
||||
:email_address, :hash, :logo, :promo_image, :path, :pickup, :delivery,
|
||||
:icon, :icon_font, :producer_icon_font, :category, :producers, :hubs
|
||||
|
||||
attributes :taxons, :supplied_taxons
|
||||
|
||||
has_one :address, serializer: AddressSerializer
|
||||
|
||||
has_many :supplied_properties, serializer: PropertySerializer
|
||||
has_many :distributed_properties, serializer: PropertySerializer
|
||||
|
||||
def pickup
|
||||
services = data.shipping_method_services[object.id]
|
||||
services ? services[:pickup] : false
|
||||
end
|
||||
|
||||
def delivery
|
||||
services = data.shipping_method_services[object.id]
|
||||
services ? services[:delivery] : false
|
||||
end
|
||||
|
||||
def email_address
|
||||
object.email_address.to_s.reverse
|
||||
end
|
||||
|
||||
def hash
|
||||
object.to_param
|
||||
end
|
||||
|
||||
def logo
|
||||
object.logo(:medium) if object.logo?
|
||||
end
|
||||
|
||||
def promo_image
|
||||
object.promo_image(:large) if object.promo_image?
|
||||
end
|
||||
|
||||
def path
|
||||
enterprise_shop_path(object)
|
||||
end
|
||||
|
||||
def producers
|
||||
relatives = data.relatives[object.id]
|
||||
ids_to_objs(relatives.andand[:producers])
|
||||
end
|
||||
|
||||
def hubs
|
||||
relatives = data.relatives[object.id]
|
||||
ids_to_objs(relatives.andand[:distributors])
|
||||
end
|
||||
|
||||
def taxons
|
||||
if active
|
||||
ids_to_objs data.current_distributed_taxons[object.id]
|
||||
else
|
||||
ids_to_objs data.all_distributed_taxons[object.id]
|
||||
end
|
||||
end
|
||||
|
||||
def supplied_taxons
|
||||
ids_to_objs data.supplied_taxons[object.id]
|
||||
end
|
||||
|
||||
def supplied_properties
|
||||
(product_properties + producer_properties).uniq do |property_object|
|
||||
property_object.property.presentation
|
||||
end
|
||||
end
|
||||
|
||||
def distributed_properties
|
||||
# This results in 3 queries per enterprise
|
||||
|
||||
if active
|
||||
product_properties = Spree::Property.currently_sold_by(object)
|
||||
producer_property_ids = ProducerProperty.currently_sold_by(object).pluck(:property_id)
|
||||
|
||||
else
|
||||
product_properties = Spree::Property.ever_sold_by(object)
|
||||
producer_property_ids = ProducerProperty.ever_sold_by(object).pluck(:property_id)
|
||||
end
|
||||
|
||||
producer_properties = Spree::Property.where(id: producer_property_ids)
|
||||
|
||||
OpenFoodNetwork::PropertyMerge.merge product_properties, producer_properties
|
||||
end
|
||||
|
||||
def active
|
||||
data.active_distributors.andand.include? object
|
||||
end
|
||||
|
||||
# Map svg icons.
|
||||
def icon
|
||||
icons = {
|
||||
hub: "/assets/map_005-hub.svg",
|
||||
hub_profile: "/assets/map_006-hub-profile.svg",
|
||||
producer_hub: "/assets/map_005-hub.svg",
|
||||
producer_shop: "/assets/map_003-producer-shop.svg",
|
||||
producer: "/assets/map_001-producer-only.svg",
|
||||
}
|
||||
icons[object.category]
|
||||
end
|
||||
|
||||
# Choose regular icon font for enterprises.
|
||||
def icon_font
|
||||
icon_fonts = {
|
||||
hub: "ofn-i_063-hub",
|
||||
hub_profile: "ofn-i_064-hub-reversed",
|
||||
producer_hub: "ofn-i_063-hub",
|
||||
producer_shop: "ofn-i_059-producer",
|
||||
producer: "ofn-i_059-producer",
|
||||
}
|
||||
icon_fonts[object.category]
|
||||
end
|
||||
|
||||
# Choose producer page icon font - yes, sadly its got to be different.
|
||||
# This duplicates some code but covers the producer page edge case where
|
||||
# producer-hub has a producer icon without needing to duplicate the category logic in angular.
|
||||
def producer_icon_font
|
||||
icon_fonts = {
|
||||
hub: "",
|
||||
hub_profile: "",
|
||||
producer_hub: "ofn-i_059-producer",
|
||||
producer_shop: "ofn-i_059-producer",
|
||||
producer: "ofn-i_059-producer",
|
||||
}
|
||||
icon_fonts[object.category]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def product_properties
|
||||
enterprise.supplied_products.flat_map(&:properties)
|
||||
end
|
||||
|
||||
def producer_properties
|
||||
enterprise.properties
|
||||
end
|
||||
|
||||
def enterprise
|
||||
object
|
||||
end
|
||||
|
||||
def data
|
||||
options[:data]
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -18,161 +18,3 @@ class Api::EnterpriseSerializer < ActiveModel::Serializer
|
||||
Api::UncachedEnterpriseSerializer.new(object, @options).serializable_hash || {}
|
||||
end
|
||||
end
|
||||
|
||||
class Api::UncachedEnterpriseSerializer < ActiveModel::Serializer
|
||||
include SerializerHelper
|
||||
|
||||
attributes :orders_close_at, :active
|
||||
|
||||
def orders_close_at
|
||||
options[:data].earliest_closing_times[object.id]
|
||||
end
|
||||
|
||||
def active
|
||||
options[:data].active_distributors.andand.include? object
|
||||
end
|
||||
end
|
||||
|
||||
class Api::CachedEnterpriseSerializer < ActiveModel::Serializer
|
||||
include SerializerHelper
|
||||
|
||||
cached
|
||||
#delegate :cache_key, to: :object
|
||||
|
||||
def cache_key
|
||||
object.andand.cache_key
|
||||
end
|
||||
|
||||
|
||||
attributes :name, :id, :description, :latitude, :longitude,
|
||||
:long_description, :website, :instagram, :linkedin, :twitter,
|
||||
:facebook, :is_primary_producer, :is_distributor, :phone, :visible,
|
||||
:email_address, :hash, :logo, :promo_image, :path, :pickup, :delivery,
|
||||
:icon, :icon_font, :producer_icon_font, :category, :producers, :hubs
|
||||
|
||||
attributes :taxons, :supplied_taxons
|
||||
|
||||
has_one :address, serializer: Api::AddressSerializer
|
||||
|
||||
has_many :supplied_properties, serializer: Api::PropertySerializer
|
||||
has_many :distributed_properties, serializer: Api::PropertySerializer
|
||||
|
||||
def pickup
|
||||
services = options[:data].shipping_method_services[object.id]
|
||||
services ? services[:pickup] : false
|
||||
end
|
||||
|
||||
def delivery
|
||||
services = options[:data].shipping_method_services[object.id]
|
||||
services ? services[:delivery] : false
|
||||
end
|
||||
|
||||
def email_address
|
||||
object.email_address.to_s.reverse
|
||||
end
|
||||
|
||||
def hash
|
||||
object.to_param
|
||||
end
|
||||
|
||||
def logo
|
||||
object.logo(:medium) if object.logo?
|
||||
end
|
||||
|
||||
def promo_image
|
||||
object.promo_image(:large) if object.promo_image?
|
||||
end
|
||||
|
||||
def path
|
||||
enterprise_shop_path(object)
|
||||
end
|
||||
|
||||
def producers
|
||||
relatives = options[:data].relatives[object.id]
|
||||
ids_to_objs(relatives.andand[:producers])
|
||||
end
|
||||
|
||||
def hubs
|
||||
relatives = options[:data].relatives[object.id]
|
||||
ids_to_objs(relatives.andand[:distributors])
|
||||
end
|
||||
|
||||
def taxons
|
||||
if active
|
||||
ids_to_objs options[:data].current_distributed_taxons[object.id]
|
||||
else
|
||||
ids_to_objs options[:data].all_distributed_taxons[object.id]
|
||||
end
|
||||
end
|
||||
|
||||
def supplied_taxons
|
||||
ids_to_objs options[:data].supplied_taxons[object.id]
|
||||
end
|
||||
|
||||
def supplied_properties
|
||||
# This results in 3 queries per enterprise
|
||||
product_properties = Spree::Property.applied_by(object)
|
||||
producer_properties = object.properties
|
||||
|
||||
OpenFoodNetwork::PropertyMerge.merge product_properties, producer_properties
|
||||
end
|
||||
|
||||
def distributed_properties
|
||||
# This results in 3 queries per enterprise
|
||||
|
||||
if active
|
||||
product_properties = Spree::Property.currently_sold_by(object)
|
||||
producer_property_ids = ProducerProperty.currently_sold_by(object).pluck(:property_id)
|
||||
|
||||
else
|
||||
product_properties = Spree::Property.ever_sold_by(object)
|
||||
producer_property_ids = ProducerProperty.ever_sold_by(object).pluck(:property_id)
|
||||
end
|
||||
|
||||
producer_properties = Spree::Property.where(id: producer_property_ids)
|
||||
|
||||
OpenFoodNetwork::PropertyMerge.merge product_properties, producer_properties
|
||||
end
|
||||
|
||||
def active
|
||||
options[:data].active_distributors.andand.include? object
|
||||
end
|
||||
|
||||
# Map svg icons.
|
||||
def icon
|
||||
icons = {
|
||||
:hub => "/assets/map_005-hub.svg",
|
||||
:hub_profile => "/assets/map_006-hub-profile.svg",
|
||||
:producer_hub => "/assets/map_005-hub.svg",
|
||||
:producer_shop => "/assets/map_003-producer-shop.svg",
|
||||
:producer => "/assets/map_001-producer-only.svg",
|
||||
}
|
||||
icons[object.category]
|
||||
end
|
||||
|
||||
# Choose regular icon font for enterprises.
|
||||
def icon_font
|
||||
icon_fonts = {
|
||||
:hub => "ofn-i_063-hub",
|
||||
:hub_profile => "ofn-i_064-hub-reversed",
|
||||
:producer_hub => "ofn-i_063-hub",
|
||||
:producer_shop => "ofn-i_059-producer",
|
||||
:producer => "ofn-i_059-producer",
|
||||
}
|
||||
icon_fonts[object.category]
|
||||
end
|
||||
|
||||
# Choose producer page icon font - yes, sadly its got to be different.
|
||||
# This duplicates some code but covers the producer page edge case where
|
||||
# producer-hub has a producer icon without needing to duplicate the category logic in angular.
|
||||
def producer_icon_font
|
||||
icon_fonts = {
|
||||
:hub => "",
|
||||
:hub_profile => "",
|
||||
:producer_hub => "ofn-i_059-producer",
|
||||
:producer_shop => "ofn-i_059-producer",
|
||||
:producer => "ofn-i_059-producer",
|
||||
}
|
||||
icon_fonts[object.category]
|
||||
end
|
||||
end
|
||||
|
||||
15
app/serializers/api/uncached_enterprise_serializer.rb
Normal file
15
app/serializers/api/uncached_enterprise_serializer.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
module Api
|
||||
class UncachedEnterpriseSerializer < ActiveModel::Serializer
|
||||
include SerializerHelper
|
||||
|
||||
attributes :orders_close_at, :active
|
||||
|
||||
def orders_close_at
|
||||
options[:data].earliest_closing_times[object.id]
|
||||
end
|
||||
|
||||
def active
|
||||
options[:data].active_distributors.andand.include? object
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
= inject_enterprises
|
||||
= inject_enterprises(@enterprises)
|
||||
|
||||
#hubs.hubs{"ng-controller" => "EnterprisesCtrl", "ng-cloak" => true}
|
||||
.row
|
||||
|
||||
@@ -1145,7 +1145,7 @@ de_DE:
|
||||
menu_3_title: "Erzeuger"
|
||||
menu_3_url: "/ producers"
|
||||
menu_4_title: "Gruppen"
|
||||
menu_4_url: "/ groups"
|
||||
menu_4_url: "/groups"
|
||||
menu_5_title: "Über Uns"
|
||||
menu_5_url: "http://www.openfoodnetwork.org/"
|
||||
menu_6_title: "Verbinden"
|
||||
@@ -1790,7 +1790,6 @@ de_DE:
|
||||
enterprise_long_desc: "Ausführliche Beschreibung"
|
||||
enterprise_long_desc_placeholder: "Dies ist Ihre Chance, die Geschichte Ihres Unternehmens zu erzählen - was macht Sie anders und wundervoll? Wir empfehlen, Ihre Beschreibung auf unter 600 Zeichen oder 150 Wörter zu beschränken."
|
||||
enterprise_long_desc_length: "%{num} Zeichen / bis zu 600 empfohlen"
|
||||
enterprise_limit: Unternehmensgrenze
|
||||
enterprise_abn: "USt-IdNr."
|
||||
enterprise_abn_placeholder: "z.B. 99 123 456 789"
|
||||
enterprise_acn: "St.-Nr."
|
||||
@@ -2593,6 +2592,14 @@ de_DE:
|
||||
bulk_coop_packing_sheets: 'Massenkoop - Verpackungsblätter'
|
||||
bulk_coop_customer_payments: 'Massenkoop - Kundenzahlungen'
|
||||
users:
|
||||
index:
|
||||
user: "Benutzer"
|
||||
search: "Suche"
|
||||
email: "E-Mail"
|
||||
form:
|
||||
email: "E-Mail"
|
||||
roles: "Rollen"
|
||||
password: "Passwort"
|
||||
email_confirmation:
|
||||
confirmation_pending: "E-Mail-Bestätigung steht aus. Wir haben eine Bestätigungs-E-Mail an %{address} gesendet."
|
||||
variants:
|
||||
|
||||
@@ -1793,7 +1793,6 @@ en_BE:
|
||||
enterprise_long_desc: "Long Description"
|
||||
enterprise_long_desc_placeholder: "This is your opportunity to tell the story of your enterprise - what makes you different and wonderful? We'd suggest keeping your description to under 600 characters or 150 words."
|
||||
enterprise_long_desc_length: "%{num} characters / up to 600 recommended"
|
||||
enterprise_limit: Enterprise Limit
|
||||
enterprise_abn: "ABN"
|
||||
enterprise_abn_placeholder: "eg. 99 123 456 789"
|
||||
enterprise_acn: "ACN"
|
||||
@@ -2598,6 +2597,16 @@ en_BE:
|
||||
bulk_coop_packing_sheets: 'Bulk Co-op - Packing Sheets'
|
||||
bulk_coop_customer_payments: 'Bulk Co-op - Customer Payments'
|
||||
users:
|
||||
index:
|
||||
user: "User"
|
||||
enterprise_limit: "Enterprise Limit"
|
||||
search: "Search"
|
||||
email: "Email"
|
||||
form:
|
||||
email: "Email"
|
||||
roles: "Roles"
|
||||
enterprise_limit: "Enterprise Limit"
|
||||
password: "Password"
|
||||
email_confirmation:
|
||||
confirmation_pending: "Email confirmation is pending. We've sent a confirmation email to %{address}."
|
||||
variants:
|
||||
|
||||
@@ -195,6 +195,7 @@ en_GB:
|
||||
admin_and_handling: Admin & Handling
|
||||
profile: Profile
|
||||
supplier_only: Supplier Only
|
||||
has_shopfront: Has Shopfront
|
||||
weight: Weight
|
||||
volume: Volume
|
||||
items: Items
|
||||
@@ -219,6 +220,7 @@ en_GB:
|
||||
password_confirmation: Password Confirmation
|
||||
reset_password_token: Reset password
|
||||
expired: has expired, please request a new one
|
||||
back_to_payments_list: "Back to Payments List"
|
||||
actions:
|
||||
create_and_add_another: "Create and Add Another"
|
||||
admin:
|
||||
@@ -572,6 +574,7 @@ en_GB:
|
||||
tip: "Use this page to alter product quantities across multiple orders. Products may also be removed from orders entirely, if required."
|
||||
shared: "Shared Resource?"
|
||||
order_no: "Order No."
|
||||
order_date: "Completed at"
|
||||
max: "Max"
|
||||
product_unit: "Product: Unit"
|
||||
weight_volume: "Weight/Volume"
|
||||
@@ -1793,7 +1796,6 @@ en_GB:
|
||||
enterprise_long_desc: "Long Description"
|
||||
enterprise_long_desc_placeholder: "This is your opportunity to tell the story of your enterprise - what makes you different and wonderful? We'd suggest keeping your description to under 600 characters or 150 words."
|
||||
enterprise_long_desc_length: "%{num} characters / up to 600 recommended"
|
||||
enterprise_limit: Enterprise Limit
|
||||
enterprise_abn: "Company Number"
|
||||
enterprise_abn_placeholder: "eg. 99 123 456 789"
|
||||
enterprise_acn: "Charity Number"
|
||||
@@ -2235,6 +2237,7 @@ en_GB:
|
||||
validation_msg_relationship_already_established: "^That relationship is already established."
|
||||
validation_msg_at_least_one_hub: "^At least one hub must be selected"
|
||||
validation_msg_product_category_cant_be_blank: "^Product Category cant be blank"
|
||||
validation_msg_tax: "^Tax Category is required"
|
||||
validation_msg_tax_category_cant_be_blank: "^Tax Category can't be blank"
|
||||
validation_msg_is_associated_with_an_exising_customer: "is associated with an existing customer"
|
||||
content_configuration_pricing_table: "(TODO: Pricing table)"
|
||||
@@ -2604,6 +2607,23 @@ en_GB:
|
||||
bulk_coop_packing_sheets: 'Bulk Co-op - Packing Sheets'
|
||||
bulk_coop_customer_payments: 'Bulk Co-op - Customer Payments'
|
||||
users:
|
||||
index:
|
||||
listing_users: "Listing Users"
|
||||
new_user: "New User"
|
||||
user: "User"
|
||||
enterprise_limit: "Enterprise Limit"
|
||||
search: "Search"
|
||||
email: "Email"
|
||||
edit:
|
||||
editing_user: "Editing User"
|
||||
back_to_users_list: "Back To Users List"
|
||||
general_settings: "General Settings"
|
||||
form:
|
||||
email: "Email"
|
||||
roles: "Roles"
|
||||
enterprise_limit: "Enterprise Limit"
|
||||
confirm_password: "Confirm Password"
|
||||
password: "Password"
|
||||
email_confirmation:
|
||||
confirmation_pending: "Email confirmation is pending. We've sent a confirmation email to %{address}."
|
||||
variants:
|
||||
|
||||
@@ -1793,7 +1793,6 @@ en_US:
|
||||
enterprise_long_desc: "Long Description"
|
||||
enterprise_long_desc_placeholder: "This is your opportunity to tell the story of your enterprise - what makes you different and wonderful? We'd suggest keeping your description to under 600 characters or 150 words."
|
||||
enterprise_long_desc_length: "%{num} characters / up to 600 recommended"
|
||||
enterprise_limit: Enterprise Limit
|
||||
enterprise_abn: "Tax ID Number or EIN (optional)"
|
||||
enterprise_abn_placeholder: "eg. 123456789"
|
||||
enterprise_acn: "Legal Business Name"
|
||||
@@ -2598,6 +2597,16 @@ en_US:
|
||||
bulk_coop_packing_sheets: 'Bulk Co-op - Packing Sheets'
|
||||
bulk_coop_customer_payments: 'Bulk Co-op - Customer Payments'
|
||||
users:
|
||||
index:
|
||||
user: "User"
|
||||
enterprise_limit: "Enterprise Limit"
|
||||
search: "Search"
|
||||
email: "Email"
|
||||
form:
|
||||
email: "Email"
|
||||
roles: "Roles"
|
||||
enterprise_limit: "Enterprise Limit"
|
||||
password: "Password"
|
||||
email_confirmation:
|
||||
confirmation_pending: "Email confirmation is pending. We've sent a confirmation email to %{address}."
|
||||
variants:
|
||||
|
||||
@@ -1788,7 +1788,6 @@ es:
|
||||
enterprise_long_desc: "Descripción larga"
|
||||
enterprise_long_desc_placeholder: "Esta es tu oportunidad de contar la historia de tu organización - ¿qué la hace diferente? Sugerimos mantener la descripción en menos de 600 caracteres o 150 palabras."
|
||||
enterprise_long_desc_length: "%{num} caracteres / recomentdamos hasta 600"
|
||||
enterprise_limit: Límite de la Organización
|
||||
enterprise_abn: "NIF"
|
||||
enterprise_abn_placeholder: "eg. 99 123 456 789"
|
||||
enterprise_acn: "ACN"
|
||||
@@ -2592,6 +2591,16 @@ es:
|
||||
bulk_coop_packing_sheets: 'Bulk Co-op - Hojas de Empaquetado'
|
||||
bulk_coop_customer_payments: 'Bulk Co-op - Pagos de las Consumidoras'
|
||||
users:
|
||||
index:
|
||||
user: "Usuaria"
|
||||
enterprise_limit: "Límite de la Organización"
|
||||
search: "Buscar"
|
||||
email: "Email"
|
||||
form:
|
||||
email: "Email"
|
||||
roles: "Roles"
|
||||
enterprise_limit: "Límite de la Organización"
|
||||
password: "Contraseña"
|
||||
email_confirmation:
|
||||
confirmation_pending: "La confirmación por correo electrónico está pendiente. Hemos enviado un correo electrónico de confirmación a %{address}."
|
||||
variants:
|
||||
|
||||
@@ -74,7 +74,7 @@ fr:
|
||||
welcome:
|
||||
subject: "%{enterprise} est maintenant sur %{sitename}"
|
||||
invite_manager:
|
||||
subject: "%{enterprise} vous a invité comme manager"
|
||||
subject: "%{enterprise} vous a invité comme gestionnaire"
|
||||
order_mailer:
|
||||
cancel_email:
|
||||
dear_customer: "Cher Acheteur,"
|
||||
@@ -195,6 +195,7 @@ fr:
|
||||
admin_and_handling: Frais si par commande
|
||||
profile: Profil
|
||||
supplier_only: Uniquement Producteur
|
||||
has_shopfront: (gère une boutique)
|
||||
weight: Poids
|
||||
volume: Volume
|
||||
items: Pièces
|
||||
@@ -217,6 +218,9 @@ fr:
|
||||
pick_up: Retrait
|
||||
copy: Copier
|
||||
password_confirmation: Confirmation de mot de passe
|
||||
reset_password_token: La demande de réinitialisation du mot de passe
|
||||
expired: a expiré, veuillez faire une nouvelle demande.
|
||||
back_to_payments_list: "Retour à la liste des paiements"
|
||||
actions:
|
||||
create_and_add_another: "Créer et ajouter nouveau"
|
||||
admin:
|
||||
@@ -499,6 +503,7 @@ fr:
|
||||
no_permission: vous n'avez pas l'autorisation de gérer cette entreprise
|
||||
not_found: l'entreprise n'a pas été trouvée dans la base de données
|
||||
no_name: Pas de nom
|
||||
blank_enterprise: certains produits n'ont pas d'entreprise associée
|
||||
reset_absent?: Mettre à zéro le produits absents du fichier
|
||||
reset_absent_tip: Remettre le sock à zero pour les produits non présents dans le fichier.
|
||||
overwrite_all: Modifier pour tous
|
||||
@@ -569,6 +574,7 @@ fr:
|
||||
tip: "Utilisez cette page pour changer les quantités d'un produit sur plusieurs commandes. Les produits peuvent aussi être supprimés de toutes les commandes, si nécessaire."
|
||||
shared: "Ressource partagée?"
|
||||
order_no: "N° commande"
|
||||
order_date: "Passée le"
|
||||
max: "Max"
|
||||
product_unit: "Produit: Unité"
|
||||
weight_volume: "Poids/Volume"
|
||||
@@ -735,18 +741,18 @@ fr:
|
||||
users:
|
||||
email_confirmation_notice_html: "L'email de confirmation n'a pas encore été validé. Il a été envoyé à %{email}."
|
||||
resend: Renvoyer
|
||||
owner: 'Manager principal'
|
||||
owner: 'Gestionnaire principal'
|
||||
contact: "Contact"
|
||||
contact_tip: "Le manager qui recevra les emails de confirmation de commande et autres notifications de l'entreprise. Il doit avoir confirmé son adresse email pour pouvoir être sélectionné."
|
||||
owner_tip: Manager principal de cette entreprise.
|
||||
contact_tip: "Le gestionnaire qui recevra les emails de confirmation de commande et autres notifications de l'entreprise. Il doit avoir confirmé son adresse email pour pouvoir être sélectionné."
|
||||
owner_tip: Gestionnaire principal de cette entreprise.
|
||||
notifications: Notifications
|
||||
notifications_tip: Une notification de commande sera envoyée à cette adresse email pour chaque commande passée dans votre boutique.
|
||||
notifications_placeholder: 'ex: bernard@maferme.fr'
|
||||
notifications_note: 'A noter: si vous saisissez une nouvelle adresse, un email de confirmation sera envoyé à cette adresse avec un lien de validation à cliquer.'
|
||||
managers: Managers
|
||||
managers: Gestionnaires
|
||||
managers_tip: Sélectionner ici les utilisateurs ayant la permission de gérer cette entreprise. Ils doivent avoir un compte sur Open Food France pour être sélectionnés.
|
||||
invite_manager: "Inviter un manager"
|
||||
invite_manager_tip: "Inviter un nouvel utilisateur à créer son compte et le nommer comme manager de cette entreprise."
|
||||
invite_manager: "Inviter un gestionnaire"
|
||||
invite_manager_tip: "Inviter un nouvel utilisateur à créer son compte et le nommer comme gestionnaire de cette entreprise."
|
||||
add_unregistered_user: "Ajouter un nouvel utilisateur"
|
||||
email_confirmed: "Email confirmé"
|
||||
email_not_confirmed: "Email non confirmé"
|
||||
@@ -764,7 +770,7 @@ fr:
|
||||
role: Role
|
||||
sells: Produits vendus
|
||||
visible: Visible?
|
||||
owner: Manager principal
|
||||
owner: Gestionnaire principal
|
||||
producer: Producteur
|
||||
change_type_form:
|
||||
producer_profile: Profil producteur
|
||||
@@ -796,8 +802,8 @@ fr:
|
||||
package: "Pack"
|
||||
status: "Statut"
|
||||
new_form:
|
||||
owner: Manager principal
|
||||
owner_tip: Le manager principal est l'individu qui porte la responsabilité principale de l'entreprise dans le contexte de l'utilisation d'Open Food France.
|
||||
owner: Gestionnaire principal
|
||||
owner_tip: Le gestionnaire principal est l'individu qui porte la responsabilité principale de l'entreprise dans le contexte de l'utilisation d'Open Food France.
|
||||
i_am_producer: Je suis un producteur
|
||||
contact_name: Nom du contact principal
|
||||
edit:
|
||||
@@ -967,8 +973,8 @@ fr:
|
||||
name: Total des Ventes
|
||||
description: Total des Ventes pour toutes les Commandes
|
||||
users_and_enterprises:
|
||||
name: Managers & Entreprises
|
||||
description: Managers de l'Entreprise & Droits
|
||||
name: Gestionnaires & Entreprises
|
||||
description: Gestionnaires de l'Entreprise & Droits
|
||||
order_cycle_management:
|
||||
name: Gestion des Cycles de Vente
|
||||
sales_tax:
|
||||
@@ -1452,8 +1458,8 @@ fr:
|
||||
enterprises_next_closing: "Clôture des commandes pour ce cycle"
|
||||
enterprises_ready_for: "Prêt pour"
|
||||
enterprises_choose: "Choisissez votre option:"
|
||||
maps_open: "Ouvre"
|
||||
maps_closed: "Fermée"
|
||||
maps_open: "Ouvert"
|
||||
maps_closed: "Fermé"
|
||||
hubs_buy: "Acheter:"
|
||||
hubs_shopping_here: "Achats en cours"
|
||||
hubs_orders_closed: "Boutique fermée"
|
||||
@@ -1791,7 +1797,6 @@ fr:
|
||||
enterprise_long_desc: "Description longue"
|
||||
enterprise_long_desc_placeholder: "Vous pouvez ici raconter l'histoire de votre organisation - votre projet, les valeurs que vous défendez. Nous vous conseillons de ne pas dépasser 600 caractères ou 150 mots."
|
||||
enterprise_long_desc_length: "%{num} caractères / inférieur à 600 recommandé"
|
||||
enterprise_limit: Nombre max d'entreprises
|
||||
enterprise_abn: "SIRET"
|
||||
enterprise_abn_placeholder: "ex: 404 833 048 00022"
|
||||
enterprise_acn: "n° TVA intracommunautaire"
|
||||
@@ -1900,10 +1905,10 @@ fr:
|
||||
admin_enterprise_relationships_button_create: "Créer"
|
||||
admin_enterprise_groups: "Groupes d'entreprises"
|
||||
admin_enterprise_groups_name: "Produit/Variante"
|
||||
admin_enterprise_groups_owner: "Manager principal"
|
||||
admin_enterprise_groups_owner: "Gestionnaire principal"
|
||||
admin_enterprise_groups_on_front_page: "Sur la page d'accueil?"
|
||||
admin_enterprise_groups_enterprise: "Entreprises"
|
||||
admin_enterprise_groups_data_powertip: "Le manager principal en charge de ce groupe."
|
||||
admin_enterprise_groups_data_powertip: "Le gestionnaire principal en charge de ce groupe."
|
||||
admin_enterprise_groups_data_powertip_logo: "Il s'agit du logo du groupe"
|
||||
admin_enterprise_groups_data_powertip_promo_image: "Cette image est affichée en haut du profil Groupe."
|
||||
admin_enterprise_groups_contact: "Contact"
|
||||
@@ -2054,7 +2059,7 @@ fr:
|
||||
report_all: 'tous'
|
||||
report_order_cycle: "Cycle de vente:"
|
||||
report_enterprises: "Entreprises:"
|
||||
report_users: "Managers:"
|
||||
report_users: "Utilisateurs :"
|
||||
report_tax_rates: TVA par taux
|
||||
report_tax_types: TVA par type de produit/service
|
||||
report_header_order_cycle: Cycle de Vente
|
||||
@@ -2207,11 +2212,11 @@ fr:
|
||||
unsaved_changes_confirmation: "Les changements non sauvegardés seront perdus. Continuer?"
|
||||
one_product_unsaved: "Des changements sur un produit n'ont pas été sauvegardés."
|
||||
products_unsaved: "Des changements sur %{n} produits n'ont pas été sauvegardés."
|
||||
is_already_manager: "est déjà manager!"
|
||||
is_already_manager: "est déjà gestionnaire !"
|
||||
no_change_to_save: "Pas de changement à sauvegarder"
|
||||
user_invited: "%{email}a été invité à gérer cette entreprise"
|
||||
add_manager: "Ajouter un utilisateur existant"
|
||||
users: "Managers"
|
||||
users: "Utilisateurs"
|
||||
about: "A propos"
|
||||
images: "Images"
|
||||
web: "Web"
|
||||
@@ -2233,12 +2238,13 @@ fr:
|
||||
validation_msg_relationship_already_established: "^Un lien est déjà établi entre ces entreprises."
|
||||
validation_msg_at_least_one_hub: "^Sélectionnez au moins un hub"
|
||||
validation_msg_product_category_cant_be_blank: "^Veuillez sélectionner la catégorie produit"
|
||||
validation_msg_tax: "^La TVA applicable est requise"
|
||||
validation_msg_tax_category_cant_be_blank: "^Veuillez sélectionner la TVA applicable"
|
||||
validation_msg_is_associated_with_an_exising_customer: "est associé à un acheteur existant"
|
||||
content_configuration_pricing_table: "(A FAIRE : Tableau des tarifs)"
|
||||
content_configuration_case_studies: "(A FAIRE : Etudes de Cas)"
|
||||
content_configuration_detail: "(A FAIRE : Détails)"
|
||||
enterprise_name_error: "est déjà utilisé. Si vous êtes le gérant de cette entreprise et que vous souhaitez demander le transfert du compte, ou bien si vous souhaitez distribuer les produits de cette entreprise, merci de contacter le manager actuel du profil à %{email}."
|
||||
enterprise_name_error: "est déjà utilisé. Si vous êtes le gérant de cette entreprise et que vous souhaitez demander le transfert du compte, ou bien si vous souhaitez distribuer les produits de cette entreprise, merci de contacter le gestionnaire principal du profil à %{email}."
|
||||
enterprise_owner_error: "^ %{email} ne peut pas créer de nouvelles entreprises (limite actuelle : %{enterprise_limit} entreprises )."
|
||||
enterprise_role_uniqueness_error: "^Ce rôle existe déjà."
|
||||
inventory_item_visibility_error: doit être vrai ou faux
|
||||
@@ -2607,6 +2613,23 @@ fr:
|
||||
bulk_coop_packing_sheets: 'Achats groupés - Feuilles de préparation des paniers'
|
||||
bulk_coop_customer_payments: 'Achats groupés - Paiement des acheteurs'
|
||||
users:
|
||||
index:
|
||||
listing_users: "Liste des utilisateurs"
|
||||
new_user: "Nouvel utilisateur"
|
||||
user: "Utilisateur"
|
||||
enterprise_limit: "Nombre max d'entreprises"
|
||||
search: "Rechercher"
|
||||
email: "Email"
|
||||
edit:
|
||||
editing_user: "Modifier l'utilisateur"
|
||||
back_to_users_list: "Retour à la liste utilisateurs"
|
||||
general_settings: "Configurations générales"
|
||||
form:
|
||||
email: "Email"
|
||||
roles: "Roles"
|
||||
enterprise_limit: "Nombre max d'entreprises"
|
||||
confirm_password: "Confirmez votre mot de passe"
|
||||
password: "Mot de passe"
|
||||
email_confirmation:
|
||||
confirmation_pending: "L'email de confirmation n'a pas encore été validé. Il a été envoyé à %{address}."
|
||||
variants:
|
||||
|
||||
@@ -7,7 +7,7 @@ fr_BE:
|
||||
shipment_state: Statut livraison
|
||||
completed_at: 'Passée à '
|
||||
number: N° commande
|
||||
email: Email acheteur
|
||||
email: Adresse électronique acheteur
|
||||
spree/payment:
|
||||
amount: Montant
|
||||
order_cycle:
|
||||
@@ -17,7 +17,7 @@ fr_BE:
|
||||
spree/user:
|
||||
attributes:
|
||||
email:
|
||||
taken: "Un compte existe déjà pour cet e-mail. Connectez-vous ou demandez un nouveau mot de passe."
|
||||
taken: "Un compte existe déjà pour cette adresse électronique. Connectez-vous ou demandez un nouveau mot de passe."
|
||||
spree/order:
|
||||
no_card: Aucune carte de paiement autorisée disponible
|
||||
order_cycle:
|
||||
@@ -55,7 +55,7 @@ fr_BE:
|
||||
user_registrations:
|
||||
spree_user:
|
||||
signed_up_but_unconfirmed: "Un message avec un lien de confirmation a été envoyé à l'adresse email indiquée. Veuillez cliquer sur ce lien pour activer votre compte."
|
||||
unknown_error: "Une erreur s'est glissée lors de la création de votre compte. Vérifiez votre addresse email et recommencez."
|
||||
unknown_error: "Une erreur s'est glissée lors de la création de votre compte. Vérifiez votre adresse email et recommencez."
|
||||
failure:
|
||||
invalid: |
|
||||
Email / mot de passe incorrect.
|
||||
@@ -289,7 +289,7 @@ fr_BE:
|
||||
finalise_invoice: "Finaliser les factures"
|
||||
auto_finalise_invoices: "Finaliser automatiquement les factures le 2 de chaque mois à 01:30"
|
||||
manually_run_task: "Tâche exécutée manuellement"
|
||||
update_user_invoice_explained: "Cliquez ici pour mettre à jour immédiatement les factures pour le mois en cours pour toutes les entreprises utilisant le système. Cette tache peut être définie pour s'effectuer automatiquement chaque nuit."
|
||||
update_user_invoice_explained: "Cliquez ici pour mettre à jour immédiatement les factures pour le mois en cours pour toutes les entreprises utilisant le système. Cette tâche peut être définie pour s'effectuer automatiquement chaque nuit."
|
||||
finalise_user_invoices: "Finaliser les factures utilisateurs"
|
||||
finalise_user_invoice_explained: "Cliquez ici pour finaliser toutes les factures pour le mois calendaire précédent. Cette tâche peut-être définie pour être opérée automatiquement une fois par mois."
|
||||
update_user_invoices: "Mettre à jour les factures utilisateurs"
|
||||
@@ -435,7 +435,7 @@ fr_BE:
|
||||
import_date: Importé
|
||||
upload_an_image: Importer une image
|
||||
product_search_keywords: Mots-clés de recherche produits
|
||||
product_search_tip: Saisissez des mots qui peuvent simplifier la recherche de vo produits dans les boutiques. Laissez un espace entre chaque mot-clé.
|
||||
product_search_tip: Saisissez des mots qui peuvent simplifier la recherche de vos produits dans les boutiques. Laissez un espace entre chaque mot-clé.
|
||||
SEO_keywords: Mot-clés de référencement web
|
||||
seo_tip: Saisissez des mots qui peuvent simplifier la recherche de vos produits sur le web. Laissez un espace entre chaque mot-clé.
|
||||
Search: Rechercher
|
||||
@@ -511,56 +511,56 @@ fr_BE:
|
||||
entries_with_errors: Certaines lignes contiennent des erreurs et les produits correspondant ne seront pas importés
|
||||
products_to_create: Ces produits vont être crées
|
||||
products_to_update: Ces produits vont être mis à jour
|
||||
inventory_to_create: Ces produits vont être ajoutés au catalogue boutique
|
||||
inventory_to_update: Les informations de ces produits dans le catalogue boutique vont être mises à jour
|
||||
inventory_to_create: Ces produits vont être ajoutés au catalogue du magasin
|
||||
inventory_to_update: Les informations de ces produits dans le catalogue du magasin vont être mises à jour
|
||||
products_to_reset: Le stock des produits existants va être remis à zero
|
||||
inventory_to_reset: Dans le catalogue boutique, le stock des produits existants va être remis à zéro
|
||||
inventory_to_reset: Dans le catalogue du magasin, le stock des produits existants va être remis à zéro
|
||||
line: Ligne
|
||||
item_line: Ligne produit concernée
|
||||
import_review:
|
||||
not_updatable_tip: "Les champs suivants ne peuvent pas être mis à jour pour des produits existants via la fonctionnalité d'import de fichier produits :"
|
||||
fields_ignored: Ces champs seront ignorés à l'enregistrement des produits importés.
|
||||
entries_table:
|
||||
not_updatable: Ce champs ne peut pas être mis à jour pour des produits existants via la fonctionnalité d'import de fichier produits
|
||||
not_updatable: Ce champ ne peut pas être mis à jour pour des produits existants via la fonctionnalité d'import de fichier produits
|
||||
save_results:
|
||||
final_results: Importer les informations produits confirmées
|
||||
products_created: produits crées
|
||||
products_updated: produits mis à jour
|
||||
inventory_created: produits ajoutés dans le catalogue boutique
|
||||
inventory_updated: produits mis à jour dans le catalogue boutique
|
||||
inventory_created: produits ajoutés dans le catalogue du magasin
|
||||
inventory_updated: produits mis à jour dans le catalogue du magasin
|
||||
products_reset: produits ont vu leur niveau de stock remis à zéro
|
||||
inventory_reset: produits ont vu leur niveau de stock remis à zéro dans le catalogue boutique
|
||||
inventory_reset: produits ont vu leur niveau de stock remis à zéro dans le catalogue du magasin
|
||||
all_saved: "Tous les produits ont été sauvegardés avec succès"
|
||||
some_saved: "produits sauvegardés avec succès"
|
||||
save_errors: Sauvegarder les erreurs
|
||||
import_again: Importer un autre fichier
|
||||
view_products: Aller à la page Produits
|
||||
view_inventory: Aller à la page Catalogues Boutiques
|
||||
view_inventory: Aller à la page Catalogues Magasins
|
||||
variant_overrides:
|
||||
loading_flash:
|
||||
loading_inventory: Catalogue boutique en cours de chargement...
|
||||
loading_inventory: Catalogue du magasin en cours de chargement...
|
||||
index:
|
||||
title: Catalogue boutique
|
||||
title: Catalogue du magasin
|
||||
description: Utilisez cette page pour gérer le catalogue de votre entreprise. Les détails produits saisis ici remplaceront ceux de la page "Produit" pour votre entreprise uniquement.
|
||||
enable_reset?: Autoriser réinitialisation du stock (retour configurations par défaut)?
|
||||
inherit?: Hériter?
|
||||
add: Ajouter
|
||||
hide: Masquer
|
||||
import_date: Importé
|
||||
select_a_shop: Choisir une boutique
|
||||
select_a_shop: Choisir un magasin
|
||||
review_now: Vérifier maintenant
|
||||
new_products_alert_message: Il y a %{new_product_count} nouveaux produits disponibles pouvant être ajoutés à votre catalogue.
|
||||
currently_empty: Votre catalogue est actuellement vide
|
||||
no_matching_products: Pas de produits correspondants dans votre catalogue
|
||||
no_hidden_products: Aucun produit masqué dans ce catalogue
|
||||
no_matching_hidden_products: Aucune produit masqué ne répond à la recherche
|
||||
no_matching_hidden_products: Aucun produit masqué ne répond à la recherche
|
||||
no_new_products: Pas de nouveaux produits à ajouter à ce catalogue
|
||||
no_matching_new_products: Pas de nouveaux produits répondant à la recherche
|
||||
inventory_powertip: Ceci est votre catalogue produits. Pour ajouter des produits à votre catalogue, sélectionnez "Nouveaux Produits" dans le menu déroulant.
|
||||
hidden_powertip: Ces produits ont été masqués de votre catalogue, vous ne pourrez pas les proposer dans votre boutique. Vous pouvez cliquer sur "Ajouter" pour ajouter un produit à votre catalogue.
|
||||
new_powertip: Ces produits peuvent être ajoutés à votre catalogue. Cliquez sur "Ajouter" pour ajouter un produit à votre catalogue, ou 'Masquer" pour ne plus l'afficher. Vous pourrez changer d'avis plus tard!
|
||||
controls:
|
||||
back_to_my_inventory: Retour à mon catalogue boutique
|
||||
back_to_my_inventory: Retour à mon catalogue magasin
|
||||
orders:
|
||||
invoice_email_sent: 'L''email de facturation a bien été envoyé'
|
||||
order_email_resent: 'L''email de commande a de nouveau été envoyé'
|
||||
@@ -631,15 +631,15 @@ fr_BE:
|
||||
promo_image_note3: La bannière est affichée en haut de la page de votre entreprise et dans sa version condensée (pop-up).
|
||||
inventory_settings:
|
||||
text1: Vous pouvez choisir de gérer vos stocks et prix via votre
|
||||
inventory: catalogue boutique
|
||||
inventory: catalogue magasin
|
||||
text2: >
|
||||
Si vous utilisez l'outil "catalogue boutique", vous pouvez choisir si
|
||||
Si vous utilisez l'outil "catalogue magasin", vous pouvez choisir si
|
||||
les nouveaux produits ajoutés par vos fournisseurs doivent être référencés
|
||||
dans votre catalogue boutique avant qu'ils puissent mis en vente dans
|
||||
votre boutique. Si vous n'utilisez pas cet outil, choisissez l'option
|
||||
dans votre catalogue magasin avant qu'ils puissent être mis en vente
|
||||
dans votre magasin Si vous n'utilisez pas cet outil, choisissez l'option
|
||||
indiquant "recommandé" ci-dessous:
|
||||
preferred_product_selection_from_inventory_only_yes: Les nouveaux produits des producteurs peuvent être ajoutés à ma boutique en ligne (recommandé)
|
||||
preferred_product_selection_from_inventory_only_no: Les nouveaux produits des producteurs doivent être ajoutés à mon catalogue boutique avant de pouvoir être ajoutés à ma boutique en ligne
|
||||
preferred_product_selection_from_inventory_only_yes: Les nouveaux produits des producteurs peuvent être ajoutés à mon magasin en ligne (recommandé)
|
||||
preferred_product_selection_from_inventory_only_no: Les nouveaux produits des producteurs doivent être ajoutés à mon catalogue magasin avant de pouvoir être ajoutés à mon magasin en ligne
|
||||
payment_methods:
|
||||
name: Nom
|
||||
applies: Active?
|
||||
@@ -662,13 +662,13 @@ fr_BE:
|
||||
sells: Produits vendus
|
||||
sells_tip: "Aucun - l'entreprise ne vend pas en direct aux acheteurs.<br />Les miens - l'entreprise vend ses propres produits aux acheteurs.<br />Tous - l'entreprise vend ses propres produits et/ou les produits d'autres entreprises.<br />"
|
||||
visible_in_search: Apparaît sur la plateforme?
|
||||
visible_in_search_tip: Indiquez si vous souhaitez ou ne souhaitez pas que votre entreprise apparaisse sur la carte et dans la liste des boutiques.
|
||||
visible_in_search_tip: Indiquez si vous souhaitez ou ne souhaitez pas que votre entreprise apparaisse sur la carte et dans la liste des magasins.
|
||||
visible: Visible
|
||||
not_visible: Invisible
|
||||
permalink: Nom pour URL (sans espace)
|
||||
permalink_tip: "Ce nom permanent est utilisé pour créer l'url de votre boutique: %{link}ma-boutique/shop"
|
||||
link_to_front: Lien URL de la boutique
|
||||
link_to_front_tip: C'est le lien qui permet d'accéder en direct à votre boutique sur Open Food Network.
|
||||
permalink_tip: "Ce nom permanent est utilisé pour créer l'url de votre magasin: %{link}ma-boutique/shop"
|
||||
link_to_front: Lien URL du magasin
|
||||
link_to_front_tip: C'est le lien qui permet d'accéder en direct à votre magasin sur Open Food Network.
|
||||
shipping_methods:
|
||||
name: Nom
|
||||
applies: Active?
|
||||
@@ -677,8 +677,8 @@ fr_BE:
|
||||
create_one_button: En créer une maintenant
|
||||
no_method_yet: Vous n'avez pas encore paramétré de méthode de livraison.
|
||||
shop_preferences:
|
||||
shopfront_requires_login: "Boutique visible par tous?"
|
||||
shopfront_requires_login_tip: "Choisissez si les acheteurs doivent être connectés pour voir la boutique ou si la boutique est visible par tout le monde."
|
||||
shopfront_requires_login: "Magasin visible par tous?"
|
||||
shopfront_requires_login_tip: "Choisissez si les acheteurs doivent être connectés pour voir le magasin ou si le magasin est visible par tout le monde."
|
||||
shopfront_requires_login_false: "Visible par tous"
|
||||
shopfront_requires_login_true: "Visible uniquement pour les acheteurs logués"
|
||||
recommend_require_login: "Nous recommandons de demander aux utilisateurs de se connecter si vous souhaitez leur permettre de modifier leur commande."
|
||||
@@ -694,16 +694,15 @@ fr_BE:
|
||||
enable_subscriptions_tip: "Activer la fonction abonnements?"
|
||||
enable_subscriptions_false: "Désactivé"
|
||||
enable_subscriptions_true: "Activé"
|
||||
shopfront_message: Message d'accueil boutique ouverte
|
||||
shopfront_message: Message d'accueil magasin ouvert
|
||||
shopfront_message_placeholder: >
|
||||
Vous pouvez ici expliquer à vos acheteurs comment votre boutique fonctionne.
|
||||
Ce texte s'affiche dans votre boutique, au-dessus de la liste de produits.
|
||||
shopfront_closed_message: Message d'accueil boutique fermée
|
||||
Vous pouvez ici expliquer à vos acheteurs comment votre magasin fonctionne.
|
||||
Ce texte s'affiche dans votre magasin, au-dessus de la liste de produits.
|
||||
shopfront_closed_message: Message d'accueil magasin fermé
|
||||
shopfront_closed_message_placeholder: >
|
||||
Vous pouvez ici expliquer à vos acheteurs pourquoi votre boutique est
|
||||
fermée et/ou quand elle ouvrira. Ce texte s'affiche uniquement quand
|
||||
il n'y a pas de cycle de vente en cours (donc quand votre boutique est
|
||||
fermée).
|
||||
Vous pouvez ici expliquer à vos acheteurs pourquoi votre magasin est
|
||||
fermé et/ou quand il ouvrira. Ce texte s'affiche uniquement quand il
|
||||
n'y a pas de cycle de vente en cours (donc quand votre magasin est fermé).
|
||||
shopfront_category_ordering: Ordre d'affichage des catégories
|
||||
open_date: Date d'ouverture
|
||||
close_date: Date de fermeture
|
||||
@@ -716,7 +715,7 @@ fr_BE:
|
||||
disconnect: "Déconnecter le compte"
|
||||
confirm_modal:
|
||||
title: Connecter avec Stripe
|
||||
part1: Stripe est un système de paiement qui permet aux boutiques sur Open Food France d'accepter des paiements par carte bancaire de leurs acheteurs.
|
||||
part1: Stripe est un système de paiement qui permet aux magasins sur Open Food France d'accepter des paiements par carte bancaire de leurs acheteurs.
|
||||
part2: Pour utiliser cette fonctionnalité, vous devez connecter votre compte Stripe à Open Food France. En cliquant sur "J'accepte" ci-dessous, vous serez redirigé vers le site internet de Stripe, où vous pourrez connecter votre compte existant ou en créer un si vous n'en avez pas encore.
|
||||
part3: Cela permettra à Open Food Network d'accepter en votre nom les paiements par carte de crédit en provenance de vos acheteurs. Veuillez noter que c'est à vous de gérer votre compte Stripe, de payer les frais dus à Stripe et de gérer les éventuels remboursements et le service après vente.
|
||||
i_agree: J'accepte
|
||||
@@ -739,7 +738,7 @@ fr_BE:
|
||||
contact_tip: "Le manager qui recevra les emails de confirmation de commande et autres notifications de l'entreprise. Il doit avoir confirmé son adresse email pour pouvoir être sélectionné."
|
||||
owner_tip: Manager principal de cette entreprise.
|
||||
notifications: Notifications
|
||||
notifications_tip: Une notification de commande sera envoyée à cette adresse email pour chaque commande passée dans votre boutique.
|
||||
notifications_tip: Une notification de commande sera envoyée à cette adresse email pour chaque commande passée dans votre magasin.
|
||||
notifications_placeholder: 'ex: bernard@maferme.fr'
|
||||
notifications_note: 'A noter: si vous saisissez une nouvelle adresse, un email de confirmation sera envoyé à cette adresse avec un lien de validation à cliquer.'
|
||||
managers: Managers
|
||||
@@ -769,20 +768,20 @@ fr_BE:
|
||||
producer_profile: Profil producteur
|
||||
connect_ofn: Gagnez en visibilité via OFFrance
|
||||
always_free: GRATUIT
|
||||
producer_description_text: Saisissez votre catalogue produits sur Open Food Network, ce qui permettra aux hubs-distributeurs utilisant la plateforme de les proposer dans leurs boutiques (sur votre autorisation).
|
||||
producer_shop: Boutique Producteur
|
||||
producer_description_text: Saisissez votre catalogue produits sur Open Food Network, ce qui permettra aux hubs-distributeurs utilisant la plateforme de les proposer dans leurs magasins (sur votre autorisation).
|
||||
producer_shop: Magasin Producteur
|
||||
sell_your_produce: Vendez vos propres produits
|
||||
producer_shop_description_text: Vendez vos produits en direct aux mangeurs/restaurateurs/etc. via votre propre Boutique Producteur sur Open Food Network.
|
||||
producer_shop_description_text2: Une Boutique Producteur vous permet de vendre uniquement vos propres produits. Si vous voulez vendre d'autres produits, sélectionnez "Hub Producteur"
|
||||
producer_shop_description_text: Vendez vos produits en direct aux consommateurs via votre propre Magasin Producteur sur Open Food Network.
|
||||
producer_shop_description_text2: Un Magasin Producteur vous permet de vendre uniquement vos propres produits. Si vous voulez vendre d'autres produits, sélectionnez "Hub Producteur"
|
||||
producer_hub: Hub Producteur
|
||||
producer_hub_text: Vendez vos produits et ceux d'autres fournisseurs
|
||||
producer_hub_description_text: Vous vendez non seulement vos produits, mais aussi des produits d'autres producteurs de votre région, artisans, ou distributeurs afin de proposer une offre complète dans votre boutique. Vous soutenez ainsi le développement de votre système alimentaire territorial !
|
||||
producer_hub_description_text: Vous vendez non seulement vos produits, mais aussi des produits d'autres producteurs de votre région, artisans, ou distributeurs afin de proposer une offre complète dans votre magasin. Vous soutenez ainsi le développement de votre système alimentaire territorial !
|
||||
profile: Profil uniquement
|
||||
get_listing: Référencez votre hub/point de vente
|
||||
profile_description_text: Les visiteurs peuvent vous trouver sur Open Food Network et vous contacter. Votre entreprise sera visible sur la carte.
|
||||
hub_shop: Magasin Hub
|
||||
hub_shop_text: Vendez des produits de multiples fournisseurs différents
|
||||
hub_shop_description_text: Vous proposez des produits de différents producteurs de votre région, artisans, ou distributeurs afin de proposer une offre complète dans votre boutique. Vous soutenez ainsi le développement de votre système alimentaire territorial !
|
||||
hub_shop_description_text: Vous proposez des produits de différents producteurs de votre région, artisans, ou distributeurs afin de proposer une offre complète dans votre magasin. Vous soutenez ainsi le développement de votre système alimentaire territorial !
|
||||
choose_option: Veuilliez choisir l'une des options ci-dessus.
|
||||
change_now: Changer
|
||||
enterprise_user_index:
|
||||
@@ -839,8 +838,8 @@ fr_BE:
|
||||
add_distributor: 'Ajouter un distributeur'
|
||||
advanced_settings:
|
||||
title: Paramétrages avancés
|
||||
choose_product_tip: Vous pouvez choisir de limiter le choix des produits pouvant être mis en vente dans votre boutique à ceux figurant dans le catalogue boutique de %{inventory}.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Uniquement les produits du catalogue boutique
|
||||
choose_product_tip: Vous pouvez choisir de limiter le choix des produits pouvant être mis en vente dans votre magasin à ceux figurant dans le catalogue magasin de %{inventory}.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Uniquement les produits du catalogue magasin
|
||||
preferred_product_selection_from_coordinator_inventory_only_all: Tous les produits disponibles dans les catalogues producteurs
|
||||
save_reload: Sauvegarder et rafraichir la page
|
||||
coordinator_fees:
|
||||
@@ -894,7 +893,7 @@ fr_BE:
|
||||
products: Produits
|
||||
fees: Commissions
|
||||
destroy_errors:
|
||||
orders_present: Ce cycle de vente a déjà été utilisé par un acheteur et ne peut être supprimé. Pour empêcher aux acheteurs d'y accéder, veuillez plutôt le fermer.
|
||||
orders_present: Ce cycle de vente a déjà été utilisé par un acheteur et ne peut être supprimé. Pour empêcher les acheteurs d'y accéder, veuillez plutôt le fermer.
|
||||
schedule_present: Ce cycle de vente est lié à un rythme d'abonnement et ne peut pas être supprimé. Veuillez d'abord supprimer ce lien ou supprimer le rythme d'abonnement.
|
||||
bulk_update:
|
||||
no_data: Une erreur s'est produite. Aucune donnée trouvée.
|
||||
@@ -1074,7 +1073,7 @@ fr_BE:
|
||||
checkout: "Poursuivre la commande"
|
||||
already_ordered_products: "Déjà commandé dans ce cycle de vente"
|
||||
register_call:
|
||||
selling_on_ofn: "Vous souhaitez proposer vos produits sur Open Food Network?"
|
||||
selling_on_ofn: "Intéressé à participer à Open Food Network?"
|
||||
register: "Démarrez ici"
|
||||
footer:
|
||||
footer_global_headline: "OFN Global"
|
||||
@@ -1138,8 +1137,8 @@ fr_BE:
|
||||
ticket_column_item: "Produit"
|
||||
ticket_column_unit_price: "Prix unitaire"
|
||||
ticket_column_total_price: "Prix total"
|
||||
menu_1_title: "Boutiques"
|
||||
menu_1_url: "/shops"
|
||||
menu_1_title: "Magasins"
|
||||
menu_1_url: "/magasins"
|
||||
menu_2_title: "Carte"
|
||||
menu_2_url: "/map"
|
||||
menu_3_title: "Producteurs"
|
||||
@@ -1194,7 +1193,7 @@ fr_BE:
|
||||
unconfirmed: non confirmé
|
||||
days: jours
|
||||
label_shop: "Boutique"
|
||||
label_shops: "Boutiques"
|
||||
label_shops: "Magasins"
|
||||
label_map: "Carte"
|
||||
label_producer: "Producteur"
|
||||
label_producers: "Producteurs"
|
||||
@@ -1575,16 +1574,16 @@ fr_BE:
|
||||
sell_producers: "Producteurs"
|
||||
sell_hubs: "Hubs"
|
||||
sell_groups: "Groupes"
|
||||
sell_producers_detail: "Créer un profil pour votre entreprise sur OFN en quelques minutes. A tout moment vous pourrez créer une boutique en ligne pour vendre vos produits en direct aux acheteurs."
|
||||
sell_producers_detail: "Créer un profil pour votre entreprise sur OFN en quelques minutes. A tout moment vous pourrez créer un magasin en ligne pour vendre vos produits en direct aux acheteurs."
|
||||
sell_hubs_detail: "Créer un profil pour votre entreprise de distribution ou organisation sur OFN. A tout moment vous pourrez créer une boutique multi-fournisseurs."
|
||||
sell_groups_detail: "Créer un répertoire sur mesure (regroupant différents producteurs et hubs de distribution) pour votre région ou votre organisation."
|
||||
sell_user_guide: "En savoir plus en explorant le guide utilisateur."
|
||||
sell_listing_price: "La création d'un profil sur OFN, ouvrir, gérer une boutique ou créer un groupe pour votre organisation ou réseau régional sur l'OFN est à contribution libre. Afin de maintenir et développer ce commun numérique, nous avons besoin de compétences et des fonds. Nous vous invitons à contribuer au commun \"en compétences\" (développement de fonctionnalités, recherche de financement, support utilisateur, etc.) ou \"en argent\" d'un montant fixe par mois et/ou 2% de votre chiffre d'affaires par les mois. "
|
||||
sell_listing_price: "La création d'un profil sur OFN, ouvrir, gérer un magasin ou créer un groupe pour votre organisation ou réseau régional sur l'OFN est à contribution libre. Afin de maintenir et développer ce commun numérique, nous avons besoin de compétences et des fonds. Nous vous invitons à contribuer au commun \"en compétences\" (développement de fonctionnalités, recherche de financement, support utilisateur, etc.) ou \"en argent\" d'un montant fixe par mois et/ou 2% de votre chiffre d'affaires par les mois. "
|
||||
sell_embed: "Nous pouvons aussi intégrer votre boutique OFN dans votre propre site web ou construire un site web d'alimentation locale sur mesure pour votre région."
|
||||
sell_ask_services: "Nous consulter sur les services des partenaires OFN."
|
||||
shops_title: Boutiques
|
||||
shops_headline: Des achats qui transforment.
|
||||
shops_text: Les aliments poussent selon des cycles naturels, les fermiers récoltent en cycles, nous achetons aussi en cycles. Si un cycle de vente est terminé, attendez le suivant ou demandez des infos à votre la boutique préférée.
|
||||
shops_text: Les aliments poussent selon des cycles naturels, les fermiers récoltent en cycles, nous achetons aussi en cycles. Si un cycle de vente est terminé, attendez le suivant ou demandez des infos à votre magasin préféré.
|
||||
shops_signup_title: S'inscrire en tant que hub
|
||||
shops_signup_headline: Des hubs divers et variés
|
||||
shops_signup_motivation: Quel que soit votre modèle, vous pouvez vous appuyer sur Open Food France. Si vous voulez le faire évoluer, nous sommes là pour vous aider. Nous agissons selon des principes de non-lucrativité, d'indépendance, et de transparence. Et nous faisons tout notre possible pour répondre à vos besoins et vous accompagner en toute circonstance.
|
||||
@@ -1790,7 +1789,6 @@ fr_BE:
|
||||
enterprise_long_desc: "Description longue"
|
||||
enterprise_long_desc_placeholder: "Vous pouvez ici raconter l'histoire de votre organisation - votre projet, les valeurs que vous défendez. Nous vous conseillons de ne pas dépasser 600 caractères ou 150 mots."
|
||||
enterprise_long_desc_length: "%{num} caractères / inférieur à 600 recommandé"
|
||||
enterprise_limit: Nombre max d'entreprises
|
||||
enterprise_abn: "SIRET"
|
||||
enterprise_abn_placeholder: "ex: 404 833 048 00022"
|
||||
enterprise_acn: "n° TVA intracommunautaire"
|
||||
@@ -2606,6 +2604,16 @@ fr_BE:
|
||||
bulk_coop_packing_sheets: 'Achats groupés - Feuilles de préparation des paniers'
|
||||
bulk_coop_customer_payments: 'Achats groupés - Paiement des acheteurs'
|
||||
users:
|
||||
index:
|
||||
user: "Utilisateur"
|
||||
enterprise_limit: "Nombre max d'entreprises"
|
||||
search: "Rechercher"
|
||||
email: "Email"
|
||||
form:
|
||||
email: "Email"
|
||||
roles: "Roles"
|
||||
enterprise_limit: "Nombre max d'entreprises"
|
||||
password: "Mot de passe"
|
||||
email_confirmation:
|
||||
confirmation_pending: "L'email de confirmation n'a pas encore été validé. Il a été envoyé à %{address}."
|
||||
variants:
|
||||
@@ -2733,7 +2741,7 @@ fr_BE:
|
||||
cards:
|
||||
authorised_shops: Boutiques autorisées.
|
||||
authorised_shops_popover: Voilà la liste des boutiques que vous avez autorisées à débiter votre carte de paiement par défaut dans le cadre de vos abonnements en cours (commandes récurrentes). Les informations concernant votre carte de paiement sont sécurisées et ne sont pas accessibles par le gérant de la boutique. Vous recevrez systématiquement une notification avant tout débit sur votre carte.
|
||||
saved_cards_popover: Voilà la liste des cartes de paiement que vous avez enregistrées. Votre carte par défaut sera automatiquement sélectionnée au moment de la finalisation d'une commande, et pourra être débitée par les boutiques auxquelles vous avez donné cette autorisation (voir à droite).
|
||||
saved_cards_popover: Voilà la liste des cartes de paiement que vous avez enregistrées. Votre carte par défaut sera automatiquement sélectionnée au moment de la finalisation d'une commande, et pourra être débitée par les magasins auxquels vous avez donné cette autorisation (voir à droite).
|
||||
authorised_shops:
|
||||
shop_name: "Nom de la boutique"
|
||||
allow_charges?: "Autoriser les prélèvements ?"
|
||||
|
||||
@@ -1780,7 +1780,6 @@ fr_CA:
|
||||
enterprise_long_desc: "Description longue"
|
||||
enterprise_long_desc_placeholder: "Vous pouvez ici raconter l'histoire de votre organisation - votre projet, les valeurs que vous défendez. Nous vous conseillons de ne pas dépasser 600 caractères ou 150 mots."
|
||||
enterprise_long_desc_length: "%{num} caractères / inférieur à 600 recommandé"
|
||||
enterprise_limit: Nombre max d'entreprises
|
||||
enterprise_abn: "SIRET"
|
||||
enterprise_abn_placeholder: "ex: 404 833 048 00022"
|
||||
enterprise_acn: "n° TVA intracommunautaire"
|
||||
@@ -2584,6 +2583,16 @@ fr_CA:
|
||||
bulk_coop_packing_sheets: 'Achats groupés - Feuilles de préparation des paniers'
|
||||
bulk_coop_customer_payments: 'Achats groupés - Paiement des acheteurs'
|
||||
users:
|
||||
index:
|
||||
user: "Utilisateur"
|
||||
enterprise_limit: "Nombre max d'entreprises"
|
||||
search: "Chercher"
|
||||
email: "Email"
|
||||
form:
|
||||
email: "Email"
|
||||
roles: "Roles"
|
||||
enterprise_limit: "Nombre max d'entreprises"
|
||||
password: "Mot de passe"
|
||||
email_confirmation:
|
||||
confirmation_pending: "L'email de confirmation n'a pas encore été validé. Il a été envoyé à %{address}."
|
||||
variants:
|
||||
|
||||
@@ -1455,7 +1455,6 @@ it:
|
||||
enterprise_long_desc: "Descrizione lunga"
|
||||
enterprise_long_desc_placeholder: "Questa è la tua opportunità per raccontare la storia della tua azienda - cosa ti rende differente e fantastico? Ti suggeriamo di mantenere la descrizione sotto i 600 caratteri o le 150 parole."
|
||||
enterprise_long_desc_length: "%{num} caratteri / fino a 600 raccomandati"
|
||||
enterprise_limit: Limite azienda
|
||||
enterprise_abn: "Partita IVA"
|
||||
enterprise_abn_placeholder: "es. 99 123 456 789"
|
||||
enterprise_acn: "Codice fiscale"
|
||||
@@ -2065,6 +2064,16 @@ it:
|
||||
table:
|
||||
select_and_search: "Seleziona i filtri e clicca su CERCA per accedere ai tuoi dati"
|
||||
users:
|
||||
index:
|
||||
user: "Utente"
|
||||
enterprise_limit: "Limite azienda"
|
||||
search: "Cerca"
|
||||
email: "Email"
|
||||
form:
|
||||
email: "Email"
|
||||
roles: "Ruoli"
|
||||
enterprise_limit: "Limite azienda"
|
||||
password: "Password"
|
||||
email_confirmation:
|
||||
confirmation_pending: "Email di conferma in sospeso. Abbiamo inviato una mail di conferma a %{address}."
|
||||
variants:
|
||||
|
||||
@@ -170,7 +170,7 @@ nb:
|
||||
remove: Fjern
|
||||
or: eller
|
||||
collapse_all: Skjul alle
|
||||
expand_all: Vis alle
|
||||
expand_all: Utvid alle
|
||||
loading: Laster...
|
||||
show_more: Vis mer
|
||||
show_all: Vis alle
|
||||
@@ -314,8 +314,8 @@ nb:
|
||||
bill_calculation_settings: "Kalkulatorinnstillinger for Regninger"
|
||||
bill_calculation_settings_tip: "Tilpass hvor mye bedrifter skal faktureres for hver måned for bruken av OFN."
|
||||
shop_trial_length: "Lengde på prøveperiode for butikker (dager)"
|
||||
shop_trial_length_tip: "Antall dager prøveperiode for en bedrift som er satt opp som butikk."
|
||||
fixed_monthly_charge: "Fast månedlig belastning"
|
||||
shop_trial_length_tip: "Hvor lang tid (i dager) bedrifter som er satt opp som butikker, kan kjøre som prøveperiode."
|
||||
fixed_monthly_charge: "Fast Månedlig Belastning"
|
||||
fixed_monthly_charge_tip: "En fast månedlig belastning for alle bedrifter som er satt opp som butikk og har overskredet minimum fakturert omsetning (hvis konfigurert)."
|
||||
percentage_of_turnover: "Prosent av omsetning"
|
||||
percentage_of_turnover_tip: "Når større enn null, gjelder denne raten (0.0 - 1.0) på total omsetning for hver butikk og lagt til enhver fast rate (til venstre) for å beregne den månedlige fakturaen."
|
||||
@@ -572,6 +572,7 @@ nb:
|
||||
tip: "Bruk denne siden for å endre produktantall på tvers av flere bestillinger. Produkter kan også fjernes fra bestillinger helt, hvis påkrevd."
|
||||
shared: "Delt Ressurs?"
|
||||
order_no: "Bestillingsnr."
|
||||
order_date: "Fullført på"
|
||||
max: "Max"
|
||||
product_unit: "Produkt: Enhet"
|
||||
weight_volume: "Vekt/Volum"
|
||||
@@ -1491,7 +1492,7 @@ nb:
|
||||
products_update_error_data: "Lagring mislyktes på grunn av ugyldige data:"
|
||||
products_changes_saved: "Endringene er lagret."
|
||||
search_no_results_html: "Beklager, ingen treff på %{query}. Prøv på nytt?"
|
||||
components_profiles_popover: "Profiler har ikke butikkvindu på Open Food Network men kan ha sin egen fysiske butikk eller nettbutikk et annet sted"
|
||||
components_profiles_popover: "Profiler har ikke butikk på Open Food Network men kan ha sin egen fysiske butikk eller nettbutikk et annet sted"
|
||||
components_profiles_show: "Vis profiler"
|
||||
components_filters_nofilters: "Ingen filter"
|
||||
components_filters_clearfilters: "Fjern alle filtre"
|
||||
@@ -1793,7 +1794,6 @@ nb:
|
||||
enterprise_long_desc: "Lang beskrivelse"
|
||||
enterprise_long_desc_placeholder: "Dette er muligheten din til å fortelle historien om din virksomhet - hva gjør deg annerledes og flott? Vi vil foreslå å holde din beskrivelse til under 600 tegn eller 150 ord."
|
||||
enterprise_long_desc_length: "%{num} tegn / opptil 600 anbefales"
|
||||
enterprise_limit: Bedriftsgrense
|
||||
enterprise_abn: "Org. nr."
|
||||
enterprise_abn_placeholder: "f.eks. 999 000 123"
|
||||
enterprise_acn: "MVA nr."
|
||||
@@ -2597,6 +2597,16 @@ nb:
|
||||
bulk_coop_packing_sheets: 'Bulk Co-op - Pakkseddel'
|
||||
bulk_coop_customer_payments: 'Bulk Co-op - Kunde Betalinger'
|
||||
users:
|
||||
index:
|
||||
user: "Bruker"
|
||||
enterprise_limit: "Bedriftsgrense"
|
||||
search: "Søk"
|
||||
email: "Epost"
|
||||
form:
|
||||
email: "Epost"
|
||||
roles: "Roller"
|
||||
enterprise_limit: "Bedriftsgrense"
|
||||
password: "Passord"
|
||||
email_confirmation:
|
||||
confirmation_pending: "Epostbekreftelse venter. Vi har sendt en bekreftelses-epost til %{address}."
|
||||
variants:
|
||||
|
||||
@@ -1651,7 +1651,6 @@ pt:
|
||||
enterprise_long_desc: "Descrição Longa"
|
||||
enterprise_long_desc_placeholder: "Esta é a oportunidade para contar a história da sua organização - o quê que a torna diferente e maravilhosa? Sugerimos um parágrafo com 600 caracteres ou 150 palavras, no máximo. "
|
||||
enterprise_long_desc_length: "%{num} caracteres / recomendamos até 600"
|
||||
enterprise_limit: Limite da Organização
|
||||
enterprise_abn: "NIPC"
|
||||
enterprise_abn_placeholder: "ex: 99 123 456 789"
|
||||
enterprise_acn: "NIF"
|
||||
@@ -2423,6 +2422,17 @@ pt:
|
||||
bulk_coop_allocation: 'Cooperativa por Atacado - Alocação'
|
||||
bulk_coop_packing_sheets: 'Cooperativa por Atacado - Folhas de Empacotamento'
|
||||
bulk_coop_customer_payments: 'Cooperativa por Atacado - Pagamentos do Consumidor'
|
||||
users:
|
||||
index:
|
||||
user: "Utilizador"
|
||||
enterprise_limit: "Limite da Organização"
|
||||
search: "Procurar"
|
||||
email: "Email"
|
||||
form:
|
||||
email: "Email"
|
||||
roles: "Papeis"
|
||||
enterprise_limit: "Limite da Organização"
|
||||
password: "Palavra-passe"
|
||||
variants:
|
||||
autocomplete:
|
||||
producer_name: Produtor
|
||||
|
||||
@@ -1215,7 +1215,6 @@ sv:
|
||||
enterprise_long_desc: "Lång beskrivning"
|
||||
enterprise_long_desc_placeholder: "Detta är ditt tillfälle att beskriva ditt företag - vad som gör dig speciell och intressant. Vi föreslår att du begränsar beskrivningen till 600 tecken eller 150 ord."
|
||||
enterprise_long_desc_length: "%{num} tecken / upp till 600 rekommenderas"
|
||||
enterprise_limit: Företagets gräns
|
||||
enterprise_abn: "ABN"
|
||||
enterprise_abn_placeholder: "t.ex. 99 123 456 789"
|
||||
enterprise_acn: "ACN"
|
||||
@@ -1912,6 +1911,17 @@ sv:
|
||||
bulk_coop_allocation: 'Bulk Co-op - Allokering'
|
||||
bulk_coop_packing_sheets: 'Bulk Co-op - Förpackningssedlar'
|
||||
bulk_coop_customer_payments: 'Bulk Co-op - kundbetalningar'
|
||||
users:
|
||||
index:
|
||||
user: "Användare"
|
||||
enterprise_limit: "Företagets gräns"
|
||||
search: "Sök"
|
||||
email: "E-post"
|
||||
form:
|
||||
email: "E-post"
|
||||
roles: "Uppgifter"
|
||||
enterprise_limit: "Företagets gräns"
|
||||
password: "Lösenord"
|
||||
variants:
|
||||
autocomplete:
|
||||
producer_name: Producent
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
@import 'darkswarm/branding';
|
||||
@import 'darkswarm/base/colors';
|
||||
|
||||
.cookies-banner {
|
||||
background: $dark-grey;
|
||||
background: $cookies-banner-background-color;
|
||||
bottom: 0;
|
||||
position: fixed;
|
||||
top: 15% !important;
|
||||
z-index: 100000;
|
||||
|
||||
button {
|
||||
background-color: $clr-turquoise;
|
||||
background-color: $cookies-banner-button-background-color;
|
||||
}
|
||||
|
||||
p {
|
||||
color: $white;
|
||||
color: $cookies-banner-text-color;
|
||||
font-size: .75rem;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
@import 'darkswarm/branding';
|
||||
@import 'darkswarm/base/colors';
|
||||
|
||||
.cookies-policy-modal {
|
||||
background: $disabled-light;
|
||||
border-bottom-color: $disabled-light;
|
||||
background: $cookies-policy-modal-background-color;
|
||||
border-bottom-color: $cookies-policy-modal-border-bottom-color;
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
|
||||
tr:nth-of-type(even) {
|
||||
background-color: $disabled-very-light;
|
||||
background-color: $cookies-policy-modal-table-tr-even-background-color;
|
||||
}
|
||||
|
||||
p {
|
||||
|
||||
@@ -1,18 +1,9 @@
|
||||
module OpenFoodNetwork
|
||||
class PropertyMerge
|
||||
def self.merge(primary, secondary)
|
||||
primary + secondary.reject do |secondary_p|
|
||||
primary.any? do |primary_p|
|
||||
property_of(primary_p).presentation == property_of(secondary_p).presentation
|
||||
end
|
||||
(primary + secondary).uniq do |property_object|
|
||||
property_object.property.presentation
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
|
||||
def self.property_of(p)
|
||||
p.respond_to?(:property) ? p.property : p
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,16 +2,17 @@ require 'spec_helper'
|
||||
|
||||
describe ShopsController, type: :controller do
|
||||
render_views
|
||||
|
||||
let!(:distributor) { create(:distributor_enterprise) }
|
||||
let!(:invisible_distributor) { create(:distributor_enterprise, visible: false) }
|
||||
|
||||
before do
|
||||
Enterprise.stub_chain("distributors_with_active_order_cycles.ready_for_checkout") { [distributor] }
|
||||
allow(Enterprise).to receive_message_chain(:distributors_with_active_order_cycles, :ready_for_checkout) { [distributor] }
|
||||
end
|
||||
|
||||
# Exclusion from actual rendered view handled in features/consumer/home
|
||||
it "shows JSON for invisible hubs" do
|
||||
get :index
|
||||
response.body.should have_content invisible_distributor.name
|
||||
expect(response.body).to have_content(invisible_distributor.name)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -30,7 +30,7 @@ feature %q{
|
||||
end
|
||||
|
||||
|
||||
it "searches by URL" do
|
||||
pending "searches by URL" do
|
||||
visit producers_path(anchor: "/?query=xyzzy")
|
||||
expect(page).to have_content "Sorry, no results found for xyzzy"
|
||||
end
|
||||
|
||||
@@ -17,7 +17,7 @@ feature 'Shops', js: true do
|
||||
producer.set_producer_property 'Organic', 'NASAA 12345'
|
||||
end
|
||||
|
||||
it "searches by URL" do
|
||||
pending "searches by URL" do
|
||||
visit shops_path(anchor: "/?query=xyzzy")
|
||||
expect(page).to have_content "Sorry, no results found for xyzzy"
|
||||
end
|
||||
|
||||
@@ -2,23 +2,31 @@ require 'spec_helper'
|
||||
|
||||
module OpenFoodNetwork
|
||||
describe PropertyMerge do
|
||||
let(:p1a) { create(:property, presentation: 'One') }
|
||||
let(:p1b) { create(:property, presentation: 'One') }
|
||||
let(:p2) { create(:property, presentation: 'Two') }
|
||||
let(:property) { create(:property, presentation: 'One') }
|
||||
let(:duplicate_property) { create(:property, presentation: 'One') }
|
||||
let(:different_property) { create(:property, presentation: 'Two') }
|
||||
|
||||
describe "merging Spree::Properties" do
|
||||
it "merges properties" do
|
||||
expect(PropertyMerge.merge([p1a], [p1b, p2])).to eq [p1a, p2]
|
||||
merge = PropertyMerge.merge(
|
||||
[property],
|
||||
[duplicate_property, different_property]
|
||||
)
|
||||
expect(merge).to eq [property, different_property]
|
||||
end
|
||||
end
|
||||
|
||||
describe "merging ProducerProperties and Spree::ProductProperties" do
|
||||
let(:pp1a) { create(:product_property, property: p1a) }
|
||||
let(:pp1b) { create(:producer_property, property: p1b) }
|
||||
let(:pp2) { create(:producer_property, property: p2) }
|
||||
let(:product_property) { create(:product_property, property: property) }
|
||||
let(:duplicate_product_property) { create(:producer_property, property: duplicate_property) }
|
||||
let(:producer_property) { create(:producer_property, property: different_property) }
|
||||
|
||||
it "merges properties" do
|
||||
expect(PropertyMerge.merge([pp1a], [pp1b, pp2])).to eq [pp1a, pp2]
|
||||
merge = PropertyMerge.merge(
|
||||
[product_property],
|
||||
[duplicate_product_property, producer_property]
|
||||
)
|
||||
expect(merge).to eq [product_property, producer_property]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
26
spec/serializers/api/cached_enterprise_serializer_spec.rb
Normal file
26
spec/serializers/api/cached_enterprise_serializer_spec.rb
Normal file
@@ -0,0 +1,26 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Api::CachedEnterpriseSerializer do
|
||||
let(:cached_enterprise_serializer) { described_class.new(enterprise) }
|
||||
let(:enterprise) { create(:enterprise) }
|
||||
|
||||
describe '#supplied_properties' do
|
||||
let(:property) { create(:property, presentation: 'One') }
|
||||
let(:duplicate_property) { create(:property, presentation: 'One') }
|
||||
let(:different_property) { create(:property, presentation: 'Two') }
|
||||
|
||||
let(:enterprise) do
|
||||
create(:enterprise, properties: [duplicate_property, different_property])
|
||||
end
|
||||
|
||||
before do
|
||||
product = create(:product, properties: [property])
|
||||
enterprise.supplied_products << product
|
||||
end
|
||||
|
||||
it "removes duplicate product and producer properties" do
|
||||
properties = cached_enterprise_serializer.supplied_properties
|
||||
expect(properties).to eq([property, different_property])
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -91,7 +91,6 @@ RSpec.configure do |config|
|
||||
config.after(:each, js:true) do
|
||||
Capybara.reset_sessions!
|
||||
RackRequestBlocker.wait_for_requests_complete
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
def restart_phantomjs
|
||||
|
||||
Reference in New Issue
Block a user