mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-12 18:36:49 +00:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77c78f35d3 | ||
|
|
2280b15664 | ||
|
|
2c279fd02d | ||
|
|
8a048cc155 | ||
|
|
b3c378e8c1 | ||
|
|
39475be792 | ||
|
|
bdeb56bfaf | ||
|
|
fb4e573cfa | ||
|
|
e65df31bc3 | ||
|
|
ce1ac57522 | ||
|
|
09ff57d462 | ||
|
|
542cf0cf4f | ||
|
|
f4113745ce | ||
|
|
6d197c53e0 | ||
|
|
b2c6e6271c | ||
|
|
cdd36eeefc | ||
|
|
97148f6f57 | ||
|
|
6219b3f0c3 | ||
|
|
d66cac7a26 | ||
|
|
07c11b9b1f | ||
|
|
6a232a1f36 | ||
|
|
034e8b180a | ||
|
|
ead0e1c08d | ||
|
|
8dfb628d88 | ||
|
|
85b3d7dac5 | ||
|
|
84040fd2a6 |
@@ -0,0 +1,8 @@
|
||||
module LineItemBasedAdjustmentHandling
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
has_many :adjustments_for_which_source, class_name: "Spree::Adjustment", as: :source,
|
||||
dependent: :destroy
|
||||
end
|
||||
end
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
module ProductImport
|
||||
class EntryValidator
|
||||
SKIP_VALIDATE_ON_UPDATE = [:description].freeze
|
||||
|
||||
# rubocop:disable Metrics/ParameterLists
|
||||
def initialize(current_user, import_time, spreadsheet_data, editable_enterprises,
|
||||
inventory_permissions, reset_counts, import_settings, all_entries)
|
||||
@@ -314,6 +316,7 @@ module ProductImport
|
||||
def product_field_errors(entry, existing_product)
|
||||
EntryValidator.non_updatable_fields.each do |display_name, attribute|
|
||||
next if attributes_match?(attribute, existing_product, entry) || attributes_blank?(attribute, existing_product, entry)
|
||||
next if ignore_when_updating_product?(attribute)
|
||||
mark_as_invalid(entry, attribute: display_name, error: I18n.t('admin.product_import.model.not_updatable'))
|
||||
end
|
||||
end
|
||||
@@ -324,6 +327,10 @@ module ProductImport
|
||||
existing_product_value == convert_to_trusted_type(entry_value, existing_product_value)
|
||||
end
|
||||
|
||||
def ignore_when_updating_product?(attribute)
|
||||
SKIP_VALIDATE_ON_UPDATE.include? attribute
|
||||
end
|
||||
|
||||
def convert_to_trusted_type(untrusted_attribute, trusted_attribute)
|
||||
case trusted_attribute
|
||||
when Integer
|
||||
|
||||
@@ -3,6 +3,7 @@ require 'open_food_network/variant_and_line_item_naming'
|
||||
|
||||
Spree::LineItem.class_eval do
|
||||
include OpenFoodNetwork::VariantAndLineItemNaming
|
||||
include LineItemBasedAdjustmentHandling
|
||||
has_and_belongs_to_many :option_values, join_table: 'spree_option_values_line_items', class_name: 'Spree::OptionValue'
|
||||
|
||||
# Redefining here to add the inverse_of option
|
||||
@@ -20,7 +21,7 @@ Spree::LineItem.class_eval do
|
||||
|
||||
before_destroy :update_inventory_before_destroy
|
||||
|
||||
delegate :unit_description, to: :variant
|
||||
delegate :product, :unit_description, to: :variant
|
||||
|
||||
# -- Scopes
|
||||
scope :managed_by, lambda { |user|
|
||||
@@ -74,6 +75,11 @@ Spree::LineItem.class_eval do
|
||||
where('spree_adjustments.id IS NULL')
|
||||
}
|
||||
|
||||
def variant
|
||||
# Overridden so that LineItems always have access to soft-deleted Variant attributes
|
||||
Spree::Variant.unscoped { super }
|
||||
end
|
||||
|
||||
def cap_quantity_at_stock!
|
||||
scoper.scope(variant)
|
||||
return if variant.on_demand
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
- content_for :injection_data do
|
||||
= inject_available_shipping_methods
|
||||
= inject_available_payment_methods
|
||||
= inject_saved_credit_cards
|
||||
|
||||
= f_form_for current_order,
|
||||
html: {name: "checkout",
|
||||
id: "checkout_form",
|
||||
novalidate: true,
|
||||
"ng-submit" => "purchase($event, checkout)"} do |f|
|
||||
|
||||
= inject_available_shipping_methods
|
||||
= inject_available_payment_methods
|
||||
= inject_saved_credit_cards
|
||||
|
||||
= render "checkout/details", f: f
|
||||
= render "checkout/billing", f: f
|
||||
= render "checkout/shipping", f: f
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
%fieldset#payment
|
||||
- content_for :injection_data do
|
||||
- if Stripe.publishable_key
|
||||
:javascript
|
||||
angular.module('Darkswarm').value("stripeObject", Stripe("#{Stripe.publishable_key}"))
|
||||
|
||||
%fieldset#payment
|
||||
%ng-form{"ng-controller" => "PaymentCtrl", name: "payment"}
|
||||
|
||||
%h5{"ng-class" => "{valid: payment.$valid, dirty: payment.$dirty || submitted}"}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
- content_for(:title) do
|
||||
= t :checkout_title
|
||||
|
||||
= inject_enterprise_and_relatives
|
||||
= inject_available_countries
|
||||
- content_for :injection_data do
|
||||
= inject_enterprise_and_relatives
|
||||
= inject_available_countries
|
||||
|
||||
.darkswarm.footer-pad
|
||||
- content_for :order_cycle_form do
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
- content_for(:image) do
|
||||
= current_distributor.logo.url
|
||||
|
||||
= inject_enterprise_shopfront(@enterprise)
|
||||
- content_for :injection_data do
|
||||
= inject_enterprise_shopfront(@enterprise)
|
||||
|
||||
%shop.darkswarm
|
||||
- if @shopfront_layout == 'embedded'
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
- content_for(:title) do
|
||||
= t :groups_title
|
||||
|
||||
= inject_groups
|
||||
- content_for :injection_data do
|
||||
= inject_groups
|
||||
|
||||
#groups.pad-top.footer-pad{"ng-controller" => "GroupsCtrl"}
|
||||
.row
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
- content_for(:image) do
|
||||
= @group.logo.url
|
||||
|
||||
= inject_group_enterprises
|
||||
- content_for :injection_data do
|
||||
= inject_group_enterprises
|
||||
|
||||
#group-page.row.pad-top.footer-pad{"ng-controller" => "GroupPageCtrl"}
|
||||
.small-12.columns.pad-top
|
||||
|
||||
@@ -15,16 +15,7 @@
|
||||
%link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"}
|
||||
%link{href: "/OFN-v2.woff?eslsji", rel: "preload", as: "font", crossorigin: "anonymous"}
|
||||
|
||||
= yield :scripts
|
||||
%script{:src => "https://js.stripe.com/v3/", :type => "text/javascript"}
|
||||
%script{src: "//maps.googleapis.com/maps/api/js?libraries=places,geometry#{ ENV['GOOGLE_MAPS_API_KEY'] ? '&key=' + ENV['GOOGLE_MAPS_API_KEY'] : ''} "}
|
||||
= stylesheet_link_tag "darkswarm/all"
|
||||
= javascript_include_tag "darkswarm/all"
|
||||
= javascript_include_tag "web/all"
|
||||
|
||||
= render "layouts/i18n_script"
|
||||
= render "layouts/bugherd_script"
|
||||
= render "layouts/matomo_tag"
|
||||
= csrf_meta_tags
|
||||
|
||||
%body{class: body_classes, ng: {app: "Darkswarm"}}
|
||||
@@ -34,14 +25,6 @@
|
||||
|
||||
= render "layouts/shopfront_script" if @shopfront_layout
|
||||
|
||||
= inject_current_hub
|
||||
= inject_json "user", "current_user"
|
||||
= inject_json "railsFlash", "flash"
|
||||
= inject_taxons
|
||||
= inject_properties
|
||||
= inject_current_order
|
||||
= inject_currency_config
|
||||
|
||||
.off-canvas-wrap{offcanvas: true}
|
||||
.inner-wrap
|
||||
= render "shared/menu/menu" unless @hide_menu
|
||||
@@ -51,4 +34,23 @@
|
||||
|
||||
#footer
|
||||
%loading
|
||||
|
||||
%script{:src => "https://js.stripe.com/v3/", :type => "text/javascript"}
|
||||
%script{src: "//maps.googleapis.com/maps/api/js?libraries=places,geometry#{ ENV['GOOGLE_MAPS_API_KEY'] ? '&key=' + ENV['GOOGLE_MAPS_API_KEY'] : ''} "}
|
||||
= javascript_include_tag "darkswarm/all"
|
||||
= javascript_include_tag "web/all"
|
||||
= render "layouts/i18n_script"
|
||||
= yield :scripts
|
||||
|
||||
= inject_current_hub
|
||||
= inject_json "user", "current_user"
|
||||
= inject_json "railsFlash", "flash"
|
||||
= inject_taxons
|
||||
= inject_properties
|
||||
= inject_current_order
|
||||
= inject_currency_config
|
||||
= yield :injection_data
|
||||
|
||||
= render "layouts/bugherd_script"
|
||||
= render "layouts/matomo_tag"
|
||||
= render 'spree/shared/google_analytics'
|
||||
|
||||
@@ -10,13 +10,7 @@
|
||||
= favicon_link_tag "/favicon-staging.ico"
|
||||
%link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"}
|
||||
|
||||
= yield :scripts
|
||||
%script{src: "//maps.googleapis.com/maps/api/js?libraries=places"}
|
||||
= stylesheet_link_tag "darkswarm/all"
|
||||
= javascript_include_tag "darkswarm/all"
|
||||
|
||||
= render "layouts/i18n_script"
|
||||
= render "layouts/bugherd_script"
|
||||
= csrf_meta_tags
|
||||
|
||||
%body.off-canvas{"ng-app" => "Darkswarm", style: 'background-image: url("/assets/tile-wide.png")' }
|
||||
@@ -24,8 +18,6 @@
|
||||
= render partial: "shared/ie_warning"
|
||||
= javascript_include_tag "iehack"
|
||||
|
||||
= inject_json "user", "current_user"
|
||||
|
||||
.off-canvas-wrap{offcanvas: true}
|
||||
.inner-wrap
|
||||
|
||||
@@ -34,3 +26,13 @@
|
||||
|
||||
#footer
|
||||
%loading
|
||||
|
||||
%script{src: "//maps.googleapis.com/maps/api/js?libraries=places"}
|
||||
= javascript_include_tag "darkswarm/all"
|
||||
= yield :scripts
|
||||
|
||||
= inject_json "user", "current_user"
|
||||
= yield :injection_data
|
||||
|
||||
= render "layouts/i18n_script"
|
||||
= render "layouts/bugherd_script"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
- content_for(:title) do
|
||||
= t :label_map
|
||||
|
||||
= inject_enterprise_shopfront_list
|
||||
- content_for :injection_data do
|
||||
= inject_enterprise_shopfront_list
|
||||
|
||||
.map-container{"fill-vertical" => true}
|
||||
%map{"ng-controller" => "MapCtrl"}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
- content_for(:title) do
|
||||
= t :producers_title
|
||||
|
||||
= inject_enterprises(@enterprises)
|
||||
- content_for :injection_data do
|
||||
= inject_enterprises(@enterprises)
|
||||
|
||||
.producers{"ng-controller" => "EnterprisesCtrl", "ng-cloak" => true}
|
||||
.row
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
- content_for(:title) do
|
||||
= t :register_title
|
||||
|
||||
= inject_spree_api_key
|
||||
= inject_available_countries
|
||||
= inject_enterprise_attributes
|
||||
- content_for :injection_data do
|
||||
= inject_spree_api_key
|
||||
= inject_available_countries
|
||||
= inject_enterprise_attributes
|
||||
|
||||
- steps = %w{about contact details finished images introduction}
|
||||
- steps += %w{logo promo social steps type}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
%ordercycle{"ng-controller" => "OrderCycleCtrl"}
|
||||
- content_for :scripts do
|
||||
:javascript
|
||||
angular.module('Darkswarm').value('orderCycleData', #{render "json/order_cycle"})
|
||||
|
||||
%ordercycle{"ng-controller" => "OrderCycleCtrl"}
|
||||
|
||||
- if @order_cycles and @order_cycles.empty?
|
||||
%h4
|
||||
%i.ofn-i_012-warning
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
- content_for(:title) do
|
||||
= t :shops_title
|
||||
|
||||
= inject_enterprises(@enterprises)
|
||||
- content_for :injection_data do
|
||||
= inject_enterprises(@enterprises)
|
||||
|
||||
#panes
|
||||
#shops.pane
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
- content_for(:title) do
|
||||
= t :orders_edit_title
|
||||
|
||||
= inject_enterprise_and_relatives
|
||||
- content_for :injection_data do
|
||||
= inject_enterprise_and_relatives
|
||||
|
||||
.darkswarm
|
||||
- content_for :order_cycle_form do
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
- content_for(:title) do
|
||||
= t :orders_show_title
|
||||
|
||||
= inject_enterprise_and_relatives if current_distributor.present?
|
||||
- content_for :injection_data do
|
||||
= inject_enterprise_and_relatives if current_distributor.present?
|
||||
|
||||
.darkswarm
|
||||
= render "shopping_shared/details" if current_distributor.present?
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
.darkswarm
|
||||
- content_for :injection_data do
|
||||
= inject_orders
|
||||
= inject_shops
|
||||
= inject_saved_credit_cards
|
||||
|
||||
- if Stripe.publishable_key
|
||||
:javascript
|
||||
angular.module('Darkswarm').value("stripeObject", Stripe("#{Stripe.publishable_key}"))
|
||||
|
||||
.darkswarm
|
||||
.row.pad-top
|
||||
.small-12.columns.pad-top
|
||||
%h2
|
||||
|
||||
@@ -164,7 +164,7 @@ ca:
|
||||
site_meta_description: "Comencem des de baix. Amb agricultors i productors disposats a explicar les seves històries amb orgull i sinceritat. Amb distribuïdors connectant persones i productes de manera justa i honesta. Amb compradors que creuen que millors decisions de compra setmanal poden ..."
|
||||
search_by_name: Cercar per nom o barri ...
|
||||
producers_join: Els productors australians son ara benvinguts a unir-se a Open Food Network.
|
||||
charges_sales_tax: Càrrecs GST?
|
||||
charges_sales_tax: Càrrecs d'IVA?
|
||||
print_invoice: "Imprimir Factura"
|
||||
print_ticket: "Imprimir tiquet"
|
||||
select_ticket_printer: "Seleccionar la impressora de tiquets"
|
||||
@@ -322,9 +322,10 @@ ca:
|
||||
enable_products_cache: "Habilitar la memòria cau de productes?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Configuració de la factura
|
||||
invoice_style2?: Utilitzeu el model de factura alternatiu que inclou el desglossament dels càrregs totals per tarifa i la informació sobre la taxa impositiva per article (encara no està disponible per als països sense recàrregs en concpte d'impostos)
|
||||
enable_receipt_printing?: Mostra les opcions per imprimir rebuts amb impressores tèrmiques en el menú desplegable de la comanda?
|
||||
title: "Configuració de la factura"
|
||||
enable_invoices?: "Activar factures?"
|
||||
invoice_style2?: "Utilitzeu el model de factura alternatiu que inclou el desglossament dels càrregs totals per tarifa i la informació sobre la taxa impositiva per article (encara no està disponible per als països sense recàrregs en concpte d'impostos)"
|
||||
enable_receipt_printing?: "Mostra les opcions per imprimir rebuts amb impressores tèrmiques en el menú desplegable de la comanda?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
@@ -651,6 +652,8 @@ ca:
|
||||
permalink_tip: "Aquest enllaç permanent s'utilitza per crear l'url a la vostra botiga: %{link}your-shop-name / shop"
|
||||
link_to_front: Enllaç a la botiga
|
||||
link_to_front_tip: Un enllaç directe a la vostra botiga a l'Open Food Netwok.
|
||||
ofn_uid: UID d'OFN
|
||||
ofn_uid_tip: L'identificador únic que s’utilitza per identificar l'organització a Open Food Network.
|
||||
shipping_methods:
|
||||
name: Nom
|
||||
applies: 'Aplicar? '
|
||||
@@ -833,6 +836,7 @@ ca:
|
||||
add_distributor: 'Afegeix distribuïdora'
|
||||
advanced_settings:
|
||||
title: Configuració avançada
|
||||
choose_product_tip: Podeu restringir els productes entrants i sortints a només l’inventari d’%{inventory}.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Només inventari del coordinador
|
||||
preferred_product_selection_from_coordinator_inventory_only_all: Tots els productes disponibles
|
||||
save_reload: Desa i recarrega la pàgina
|
||||
@@ -1696,6 +1700,7 @@ ca:
|
||||
introduction:
|
||||
registration_greeting: "Hola!"
|
||||
registration_intro: "Ara pots crear un perfil per productora o grup de consum"
|
||||
registration_checklist: "Què necessito?"
|
||||
registration_time: "5-10 minuts"
|
||||
registration_enterprise_address: "Adreça de l'organització"
|
||||
registration_contact_details: "Dades de contacte principals"
|
||||
|
||||
@@ -14,7 +14,9 @@ de_DE:
|
||||
spree/product:
|
||||
primary_taxon: "Produktkategorie"
|
||||
supplier: "Anbieter"
|
||||
shipping_category_id: "Versandkategorie"
|
||||
variant_unit: "Varianteneinheit"
|
||||
variant_unit_name: "Name der Varianteneinheit"
|
||||
order_cycle:
|
||||
orders_close_at: Schlussdatum
|
||||
errors:
|
||||
@@ -75,6 +77,8 @@ de_DE:
|
||||
user_confirmations:
|
||||
spree_user:
|
||||
send_instructions: "Sie erhalten in einigen Minuten eine E-Mail mit Anweisungen zur Bestätigung Ihres Kontos."
|
||||
confirmation_sent: "E-Mail-Bestätigung gesendet"
|
||||
confirmation_not_sent: "Fehler beim Senden der Bestätigungs-E-Mail"
|
||||
user_registrations:
|
||||
spree_user:
|
||||
signed_up_but_unconfirmed: "Eine Nachricht mit einem Bestätigungslink wurde an Ihre E-Mail-Adresse gesendet. Bitte öffnen Sie den Link, um Ihr Konto zu aktivieren."
|
||||
@@ -85,6 +89,8 @@ de_DE:
|
||||
Haben Sie als Gast bestellt? Vielleicht brauchen Sie ein neues Konto oder müssen Ihr Passwort zurücksetzen.
|
||||
unconfirmed: "Sie müssen Ihr Konto bestätigen, bevor Sie fortfahren."
|
||||
already_registered: "Diese E-Mail ist bereits registriert. Bitte loggen Sie sich ein oder verwenden Sie eine andere E-Mail-Adresse."
|
||||
success:
|
||||
logged_in_succesfully: "Erfolgreich eingeloggt"
|
||||
user_passwords:
|
||||
spree_user:
|
||||
updated_not_active: "Ihr Passwort wurde zurückgesetzt, aber ihre E-Mail muss noch bestätigt werden."
|
||||
@@ -316,9 +322,10 @@ de_DE:
|
||||
enable_products_cache: "Produktcache aktivieren?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Rechnungseinstellungen
|
||||
invoice_style2?: Verwenden Sie das alternative Rechnungsmodell, das die gesamte Steueraufschlüsselung pro Tarif- und Steuersatzinfo pro Artikel enthält (noch nicht für Länder mit Preisen ohne Steuern geeignet)
|
||||
enable_receipt_printing?: Optionen zum Drucken von Belegen mit Thermodruckern in der Dropdown-Liste anzeigen?
|
||||
title: "Rechnungseinstellungen"
|
||||
enable_invoices?: "Rechnungen aktivieren?"
|
||||
invoice_style2?: "Verwenden Sie das alternative Rechnungsmodell, das die gesamte Steueraufschlüsselung pro Tarif- und Steuersatzinfo pro Artikel enthält (noch nicht für Länder mit Preisen ohne Steuern geeignet)"
|
||||
enable_receipt_printing?: "Optionen zum Drucken von Belegen mit Thermodruckern in der Dropdown-Liste anzeigen?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
@@ -385,6 +392,7 @@ de_DE:
|
||||
calculator: "Rechner"
|
||||
calculator_values: "Werte des Rechners"
|
||||
search: "Suche"
|
||||
name_placeholder: "zB Verpackungsgebühr"
|
||||
enterprise_groups:
|
||||
index:
|
||||
new_button: Neue Unternehmensgruppe
|
||||
@@ -644,6 +652,8 @@ de_DE:
|
||||
permalink_tip: "Dieser Permalink wird verwendet, um die URL zu Ihrem Laden zu erstellen: %{link}name-ihres-ladens / laden"
|
||||
link_to_front: Link zum Laden
|
||||
link_to_front_tip: Ein direkter Link zu Ihrem Laden im Open Food Network.
|
||||
ofn_uid: OFN UID
|
||||
ofn_uid_tip: Die eindeutige ID, mit der das Unternehmen in Open Food Network identifiziert wird.
|
||||
shipping_methods:
|
||||
name: Name
|
||||
applies: Gilt?
|
||||
@@ -805,6 +815,9 @@ de_DE:
|
||||
user_already_exists: "Benutzer existiert bereits"
|
||||
error: "Etwas ist schief gelaufen"
|
||||
order_cycles:
|
||||
loading_flash:
|
||||
loading_order_cycles: LADEN VON AUFTRAGSZYKLEN
|
||||
loading: WIRD GELADEN...
|
||||
edit:
|
||||
advanced_settings: Erweiterte Einstellungen
|
||||
update_and_close: Aktualisieren und schließen
|
||||
@@ -823,6 +836,7 @@ de_DE:
|
||||
add_distributor: 'Verteiler hinzufügen'
|
||||
advanced_settings:
|
||||
title: Erweiterte Einstellungen
|
||||
choose_product_tip: Sie können den Wareneingang und -ausgang auf den Bestand von nur %{inventory} beschränken.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Nur der Katalog des Koordinators
|
||||
preferred_product_selection_from_coordinator_inventory_only_all: Alle verfügbaren Produkte
|
||||
save_reload: Speichern und neu laden
|
||||
@@ -958,6 +972,8 @@ de_DE:
|
||||
pause_subscription: Abonement pausieren
|
||||
unpause_subscription: Abonnement fortsetzen
|
||||
cancel_subscription: Abonnement beenden
|
||||
filters:
|
||||
query_placeholder: "Suche per E-Mail ..."
|
||||
setup_explanation:
|
||||
just_a_few_more_steps: 'Nur noch ein paar Schritte bevor Sie beginnen können:'
|
||||
enable_subscriptions: "Aktivieren Sie Abonnements für mindestens einen Ihrer Läden"
|
||||
@@ -990,6 +1006,8 @@ de_DE:
|
||||
charges_not_allowed: Der Kunde hat keine Belastungen erlaubt.
|
||||
no_default_card: Für den Kunden ist keine belastbare Karte vorhanden.
|
||||
card_ok: Eine belastbare Karte ist für den Kunden vorhanden.
|
||||
begins_at_placeholder: "Wählen Sie ein Datum"
|
||||
ends_at_placeholder: "Wahlweise"
|
||||
loading_flash:
|
||||
loading: ABONNEMENTS WERDEN GELADEN
|
||||
review:
|
||||
@@ -999,6 +1017,7 @@ de_DE:
|
||||
no_open_or_upcoming_order_cycle: "Kein bevorstehender Bestellzyklus"
|
||||
products_panel:
|
||||
save: "SPEICHERN"
|
||||
saving: "SPEICHERN"
|
||||
saved: "GESPEICHERT"
|
||||
product_already_in_order: Dieses Produkt wurde bereits zur Bestellung hinzugefügt. Bitte änderns Sie stattdessen die Menge.
|
||||
orders:
|
||||
@@ -1046,8 +1065,12 @@ de_DE:
|
||||
show_on_map: "Alle auf der Karte zeigen"
|
||||
shared:
|
||||
menu:
|
||||
cart:
|
||||
cart: "Wagen"
|
||||
signed_in:
|
||||
profile: "Profil"
|
||||
mobile_menu:
|
||||
cart: "Wagen"
|
||||
joyride:
|
||||
checkout: "Zur Kasse"
|
||||
already_ordered_products: "Bereits in diesem Bestellzyklus bestellt"
|
||||
@@ -1084,7 +1107,11 @@ de_DE:
|
||||
shop:
|
||||
messages:
|
||||
login: "Anmeldung"
|
||||
signup: "Anmelden"
|
||||
contact: "Kontakt"
|
||||
require_customer_login: "Nur zugelassene Kunden können auf diesen Shop zugreifen."
|
||||
require_login_html: "Wenn Sie bereits ein genehmigter Kunde sind, fahren Sie mit %{login} oder %{signup} fort. Möchten Sie hier einkaufen? Bitte %{contact} %{enterprise} und frage nach Beitritt."
|
||||
require_customer_html: "Wenn Sie hier einkaufen möchten, fragen Sie bitte %{contact} %{enterprise} nach dem Beitritt."
|
||||
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}"
|
||||
@@ -1121,6 +1148,7 @@ de_DE:
|
||||
menu_4_title: "Gruppen"
|
||||
menu_4_url: "/groups"
|
||||
menu_5_title: "Über Uns"
|
||||
menu_5_url: "https://about.openfoodnetwork.org.au/"
|
||||
menu_6_title: "Verbinden"
|
||||
menu_6_url: "https://openfoodnetwork.org/au/connect/"
|
||||
menu_7_title: "Mehr Erfahren"
|
||||
@@ -1450,6 +1478,7 @@ de_DE:
|
||||
orders_changeable_orders_alert_html: Diese Bestellung wurde bestätigt, Sie können jedoch bis <strong> %{oc_close} </ strong> Änderungen vornehmen.
|
||||
products_clear_all: Alles löschen
|
||||
products_showing: "Angezeigt:"
|
||||
products_or: "ODER"
|
||||
products_with: mit
|
||||
products_search: "Suche nach Produkt oder Hersteller"
|
||||
products_loading: "Lade Produkte..."
|
||||
@@ -1555,6 +1584,7 @@ de_DE:
|
||||
sell_hubs_detail: "Richten Sie im OFN ein Profil für Ihr Lebensmittelunternehmen oder Ihre Organisation ein. Sie können Ihr Profil jederzeit auf einen Multi-Producer-Shop upgraden."
|
||||
sell_groups_detail: "Richten Sie ein maßgeschneidertes Verzeichnis von Unternehmen (Produzenten und andere Lebensmittelunternehmen) für Ihre Region oder für Ihre Organisation ein."
|
||||
sell_user_guide: "Erfahren Sie mehr in unserem Benutzerhandbuch."
|
||||
sell_listing_price: "Das Listing im OFN ist kostenlos. Das Eröffnen und Betreiben eines OFN-Shops ist bis zu 500 US-Dollar monatlich kostenlos. Wenn Sie mehr verkaufen, können Sie Ihren Community-Beitrag zwischen 1% und 3% des Umsatzes wählen. Weitere Informationen zur Preisgestaltung finden Sie im Abschnitt Software Platform über den Link About im oberen Menü."
|
||||
sell_embed: "Wir können auch einen OFN-Laden in Ihre eigene Website einbetten oder eine maßgeschneiderte Webseite für Ihr Lokalität oder Region erstellen."
|
||||
sell_ask_services: "Fragen Sie uns nach OFN-Diensten."
|
||||
shops_title: Läden
|
||||
@@ -1670,6 +1700,7 @@ de_DE:
|
||||
introduction:
|
||||
registration_greeting: "Hallo!"
|
||||
registration_intro: "Sie können jetzt ein Profil als Produzent oder Verteilstelle erzeugen"
|
||||
registration_checklist: "Was brauche ich?"
|
||||
registration_time: "5-10 Minuten"
|
||||
registration_enterprise_address: "Unternehmensadresse"
|
||||
registration_contact_details: "Primäre Kontaktangaben"
|
||||
@@ -1924,6 +1955,7 @@ de_DE:
|
||||
spree_admin_supplier: Anbieter
|
||||
spree_admin_product_category: Produktkategorie
|
||||
spree_admin_variant_unit_name: Einheit der Variante
|
||||
unit_name: "Einheitenname"
|
||||
change_package: "Paket ändern"
|
||||
spree_admin_single_enterprise_hint: "Tipp: Um es Ihnen zu ermöglichen, Sie zu finden, aktivieren Sie Ihre Sichtbarkeit unter"
|
||||
spree_admin_eg_pickup_from_school: "z.B. \"Abholung von der Grundschule\""
|
||||
@@ -2159,6 +2191,7 @@ de_DE:
|
||||
payment_methods: "Zahlungsarten"
|
||||
payment_method_fee: "Transaktionsgebühr"
|
||||
payment_processing_failed: "Die Zahlung konnte nicht verarbeitet werden. Bitte überprüfen Sie die eingegebenen Daten"
|
||||
payment_method_not_supported: "Diese Zahlungsmethode wird nicht unterstützt. Bitte wählen Sie einen anderen."
|
||||
payment_updated: "Zahlung wurde aktualisiert"
|
||||
inventory_settings: "Katalogeinstellungen"
|
||||
tag_rules: "Stichwort-Regeln"
|
||||
@@ -2352,8 +2385,18 @@ de_DE:
|
||||
severity: Schwere
|
||||
description: Beschreibung
|
||||
resolve: Entschlossenheit
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Versandarten markiert"
|
||||
shipping_method_tagged_bottom: "sind:"
|
||||
payment_method_tagged_top: "Zahlungsmethoden markiert"
|
||||
payment_method_tagged_bottom: "sind:"
|
||||
order_cycle_tagged_top: "Bestellzyklen markiert"
|
||||
order_cycle_tagged_bottom: "sind:"
|
||||
inventory_tagged_top: "Inventarvarianten markiert"
|
||||
inventory_tagged_bottom: "sind:"
|
||||
new_tag_rule_dialog:
|
||||
select_rule_type: "Wählen Sie einen Regelart aus:"
|
||||
add_rule: "Regel hinzufügen"
|
||||
enterprise_fees:
|
||||
inherit_from_product: "Vom Produkt erben"
|
||||
orders:
|
||||
@@ -2416,6 +2459,7 @@ de_DE:
|
||||
name_required_error: "Bitte geben Sie einen Namen für diesen Zeitplan ein"
|
||||
no_order_cycles_error: "Bitte wählen Sie mindestens einen Bestellzyklus aus (Drag & Drop)"
|
||||
available: "Verfügbar"
|
||||
selected: "Ausgewählt"
|
||||
customers:
|
||||
index:
|
||||
add_customer: "Kunden hinzufügen"
|
||||
@@ -2609,6 +2653,7 @@ de_DE:
|
||||
fill_in_customer_info: "Bitte geben Sie Ihre Kundeninformationen ein"
|
||||
new_payment: "Neue Zahlung"
|
||||
capture: "Erfassung"
|
||||
void: "Leere"
|
||||
configurations: "Konfigurationen"
|
||||
general_settings: "Allgemeine Einstellungen"
|
||||
site_name: "Site-Name"
|
||||
@@ -2710,7 +2755,16 @@ de_DE:
|
||||
no_results: "Keine Ergebnisse"
|
||||
create: "Neu"
|
||||
loading: "Wird geladen"
|
||||
flat_percent: "Flacher Prozentsatz"
|
||||
per_kg: "Pro kg"
|
||||
amount: "Betrag"
|
||||
currency: "Währung"
|
||||
first_item: "Erste Artikelkosten"
|
||||
additional_item: "Zusätzliche Artikelkosten"
|
||||
max_items: "Max. Artikel"
|
||||
minimal_amount: "Minimale Menge"
|
||||
normal_amount: "Normaler Betrag"
|
||||
discount_amount: "Rabattbetrag"
|
||||
email: Email
|
||||
account_updated: "Konto aktualisiert!"
|
||||
my_account: "Mein Konto"
|
||||
@@ -2809,11 +2863,29 @@ de_DE:
|
||||
shipping_methods:
|
||||
index:
|
||||
shipping_methods: "Lieferart"
|
||||
new_shipping_method: "Neue Versandart"
|
||||
name: "Name"
|
||||
products_distributor: "Verteiler"
|
||||
zone: "Zone"
|
||||
calculator: "Rechner"
|
||||
display: "Anzeige"
|
||||
both: "Beide"
|
||||
front_end: "Vorderes Ende"
|
||||
back_end: "Back End"
|
||||
no_shipping_methods_found: "Keine Versandmethoden gefunden"
|
||||
new:
|
||||
new_shipping_method: "Neue Versandart"
|
||||
back_to_shipping_methods_list: "Zurück zur Liste der Versandmethoden"
|
||||
edit:
|
||||
editing_shipping_method: "Versandart bearbeiten"
|
||||
new: "Neu"
|
||||
back_to_shipping_methods_list: "Zurück zur Liste der Versandmethoden"
|
||||
form:
|
||||
categories: "Kategorien"
|
||||
zones: "Zonen"
|
||||
both: "Beide"
|
||||
front_end: "Vorderes Ende"
|
||||
back_end: "Back End"
|
||||
payment_methods:
|
||||
new:
|
||||
new_payment_method: "Neue Zahlungsart"
|
||||
@@ -2840,6 +2912,7 @@ de_DE:
|
||||
error_saving_payment: Fehler beim Speichern der Zahlung
|
||||
submitting_payment: Zahlung wird gesendet ...
|
||||
products:
|
||||
image_upload_error: "Das Produktbild wurde nicht erkannt. Bitte laden Sie ein Bild im PNG- oder JPG-Format hoch."
|
||||
new:
|
||||
title: 'Neues Produkt'
|
||||
unit_name_placeholder: 'z.B. Trauben'
|
||||
|
||||
@@ -14,7 +14,9 @@ en_AU:
|
||||
spree/product:
|
||||
primary_taxon: "Product Category"
|
||||
supplier: "Supplier"
|
||||
shipping_category_id: "Shipping Category"
|
||||
variant_unit: "Variant Unit"
|
||||
variant_unit_name: "Variant Unit Name"
|
||||
order_cycle:
|
||||
orders_close_at: Close date
|
||||
errors:
|
||||
@@ -75,6 +77,8 @@ en_AU:
|
||||
user_confirmations:
|
||||
spree_user:
|
||||
send_instructions: "You will receive an email with instructions about how to confirm your account in a few minutes."
|
||||
confirmation_sent: "Email confirmation sent"
|
||||
confirmation_not_sent: "Error sending confirmation email"
|
||||
user_registrations:
|
||||
spree_user:
|
||||
signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please open the link to activate your account."
|
||||
@@ -85,6 +89,8 @@ en_AU:
|
||||
Were you a guest last time? Perhaps you need to create an account or reset your password.
|
||||
unconfirmed: "You have to confirm your account before continuing."
|
||||
already_registered: "This email address is already registered. Please log in to continue, or go back and use another email address."
|
||||
success:
|
||||
logged_in_succesfully: "Logged in successfully"
|
||||
user_passwords:
|
||||
spree_user:
|
||||
updated_not_active: "Your password has been reset, but your email has not been confirmed yet."
|
||||
@@ -316,9 +322,10 @@ en_AU:
|
||||
enable_products_cache: "Enable Products Cache?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Invoice Settings
|
||||
invoice_style2?: Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)
|
||||
enable_receipt_printing?: Show options for printing receipts using thermal printers in order dropdown?
|
||||
title: "Invoice Settings"
|
||||
enable_invoices?: "Enable Invoices?"
|
||||
invoice_style2?: "Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)"
|
||||
enable_receipt_printing?: "Show options for printing receipts using thermal printers in order dropdown?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
@@ -385,6 +392,7 @@ en_AU:
|
||||
calculator: "Calculator"
|
||||
calculator_values: "Calculator Values"
|
||||
search: "Search"
|
||||
name_placeholder: "e.g. packing fee"
|
||||
enterprise_groups:
|
||||
index:
|
||||
new_button: New Enterprise Group
|
||||
@@ -643,6 +651,8 @@ en_AU:
|
||||
permalink_tip: "This permalink is used to create the url to your shop: %{link}your-shop-name/shop"
|
||||
link_to_front: Link to shop front
|
||||
link_to_front_tip: A direct link to your shopfront on the Open Food Network.
|
||||
ofn_uid: OFN UID
|
||||
ofn_uid_tip: The unique id used to identify the enterprise on Open Food Network.
|
||||
shipping_methods:
|
||||
name: Name
|
||||
applies: Applies?
|
||||
@@ -824,6 +834,7 @@ en_AU:
|
||||
add_distributor: 'Add distributor'
|
||||
advanced_settings:
|
||||
title: Advanced Settings
|
||||
choose_product_tip: You can restrict products incoming and outgoing to only %{inventory}'s inventory.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Coordinator's Inventory Only
|
||||
preferred_product_selection_from_coordinator_inventory_only_all: All Available Products
|
||||
save_reload: Save and Reload Page
|
||||
@@ -959,6 +970,8 @@ en_AU:
|
||||
pause_subscription: Pause Subscription
|
||||
unpause_subscription: Unpause Subscription
|
||||
cancel_subscription: Cancel Subscription
|
||||
filters:
|
||||
query_placeholder: "Search by email..."
|
||||
setup_explanation:
|
||||
just_a_few_more_steps: 'Just a few more steps before you can begin:'
|
||||
enable_subscriptions: "Enable subscriptions for at least one of your shops"
|
||||
@@ -991,6 +1004,8 @@ en_AU:
|
||||
charges_not_allowed: Charges are not allowed by this customer
|
||||
no_default_card: Customer has no cards available to charge
|
||||
card_ok: Customer has a card available to charge
|
||||
begins_at_placeholder: "Select a Date"
|
||||
ends_at_placeholder: "Optional"
|
||||
loading_flash:
|
||||
loading: LOADING SUBSCRIPTIONS
|
||||
review:
|
||||
@@ -1048,8 +1063,12 @@ en_AU:
|
||||
show_on_map: "Show all on the map"
|
||||
shared:
|
||||
menu:
|
||||
cart:
|
||||
cart: "Cart"
|
||||
signed_in:
|
||||
profile: "Profile"
|
||||
mobile_menu:
|
||||
cart: "Cart"
|
||||
joyride:
|
||||
checkout: "Checkout now"
|
||||
already_ordered_products: "Already ordered in this order cycle"
|
||||
@@ -1086,7 +1105,11 @@ en_AU:
|
||||
shop:
|
||||
messages:
|
||||
login: "login"
|
||||
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. 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."
|
||||
card_could_not_be_updated: Card could not be updated
|
||||
card_could_not_be_saved: card could not be saved
|
||||
spree_gateway_error_flash_for_checkout: "There was a problem with your payment information: %{error}"
|
||||
@@ -1675,6 +1698,7 @@ en_AU:
|
||||
introduction:
|
||||
registration_greeting: "Hi there!"
|
||||
registration_intro: "You can now create a profile for your Producer or Hub"
|
||||
registration_checklist: "What do I need?"
|
||||
registration_time: "5-10 minutes"
|
||||
registration_enterprise_address: "Enterprise address"
|
||||
registration_contact_details: "Primary contact details"
|
||||
@@ -1929,6 +1953,7 @@ en_AU:
|
||||
spree_admin_supplier: Supplier
|
||||
spree_admin_product_category: Product Category
|
||||
spree_admin_variant_unit_name: Variant unit name
|
||||
unit_name: "Unit name"
|
||||
change_package: "Change Package"
|
||||
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
|
||||
spree_admin_eg_pickup_from_school: "eg. 'Pick-up from Primary School'"
|
||||
@@ -2164,6 +2189,7 @@ en_AU:
|
||||
payment_methods: "Payment Methods"
|
||||
payment_method_fee: "Transaction fee"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
payment_method_not_supported: "That payment method is unsupported. Please choose another one."
|
||||
payment_updated: "Payment Updated"
|
||||
inventory_settings: "Inventory Settings"
|
||||
tag_rules: "Tag Rules"
|
||||
@@ -2354,8 +2380,18 @@ en_AU:
|
||||
severity: Severity
|
||||
description: Description
|
||||
resolve: Resolve
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Shipping methods tagged"
|
||||
shipping_method_tagged_bottom: "are:"
|
||||
payment_method_tagged_top: "Payment methods tagged"
|
||||
payment_method_tagged_bottom: "are:"
|
||||
order_cycle_tagged_top: "Order Cycles tagged"
|
||||
order_cycle_tagged_bottom: "are:"
|
||||
inventory_tagged_top: "Inventory variants tagged"
|
||||
inventory_tagged_bottom: "are:"
|
||||
new_tag_rule_dialog:
|
||||
select_rule_type: "Select a rule type:"
|
||||
add_rule: "Add Rule"
|
||||
enterprise_fees:
|
||||
inherit_from_product: "Inherit From Product"
|
||||
orders:
|
||||
@@ -2612,6 +2648,7 @@ en_AU:
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
site_name: "Site Name"
|
||||
@@ -2713,7 +2750,16 @@ en_AU:
|
||||
no_results: "No results"
|
||||
create: "Create"
|
||||
loading: "Loading"
|
||||
flat_percent: "Flat Percent"
|
||||
per_kg: "Per Kg"
|
||||
amount: "Amount"
|
||||
currency: "Currency"
|
||||
first_item: "First Item Cost"
|
||||
additional_item: "Additional Item Cost"
|
||||
max_items: "Max Items"
|
||||
minimal_amount: "Minimal Amount"
|
||||
normal_amount: "Normal Amount"
|
||||
discount_amount: "Discount Amount"
|
||||
email: Email
|
||||
account_updated: "Account updated!"
|
||||
my_account: "My account"
|
||||
@@ -2812,16 +2858,29 @@ en_AU:
|
||||
shipping_methods:
|
||||
index:
|
||||
shipping_methods: "Shipping Methods"
|
||||
new_shipping_method: "New Shipping Method"
|
||||
name: "Name"
|
||||
products_distributor: "Distributor"
|
||||
zone: "Zone"
|
||||
calculator: "Calculator"
|
||||
display: "Display"
|
||||
both: "Both"
|
||||
front_end: "Front End"
|
||||
back_end: "Back End"
|
||||
no_shipping_methods_found: "No shipping methods found"
|
||||
new:
|
||||
new_shipping_method: "New Shipping Method"
|
||||
back_to_shipping_methods_list: "Back To Shipping Methods List"
|
||||
edit:
|
||||
editing_shipping_method: "Editing Shipping Method"
|
||||
new: "New"
|
||||
back_to_shipping_methods_list: "Back To Shipping Methods List"
|
||||
form:
|
||||
categories: "Categories"
|
||||
zones: "Zones"
|
||||
both: "Both"
|
||||
front_end: "Front End"
|
||||
back_end: "Back End"
|
||||
payment_methods:
|
||||
new:
|
||||
new_payment_method: "New Payment Method"
|
||||
@@ -2848,6 +2907,7 @@ en_AU:
|
||||
error_saving_payment: Error saving payment
|
||||
submitting_payment: Submitting payment...
|
||||
products:
|
||||
image_upload_error: "The product image was not recognised. Please upload an image in PNG or JPG format."
|
||||
new:
|
||||
title: 'New Product'
|
||||
unit_name_placeholder: 'eg. bunches'
|
||||
|
||||
@@ -14,7 +14,9 @@ en_BE:
|
||||
spree/product:
|
||||
primary_taxon: "Product Category"
|
||||
supplier: "Supplier"
|
||||
shipping_category_id: "Shipping Category"
|
||||
variant_unit: "Variant Unit"
|
||||
variant_unit_name: "Variant Unit Name"
|
||||
order_cycle:
|
||||
orders_close_at: Close date
|
||||
errors:
|
||||
@@ -75,6 +77,8 @@ en_BE:
|
||||
user_confirmations:
|
||||
spree_user:
|
||||
send_instructions: "You will receive an email with instructions about how to confirm your account in a few minutes."
|
||||
confirmation_sent: "Email confirmation sent"
|
||||
confirmation_not_sent: "Error sending confirmation email"
|
||||
user_registrations:
|
||||
spree_user:
|
||||
signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please open the link to activate your account."
|
||||
@@ -85,6 +89,8 @@ en_BE:
|
||||
Were you a guest last time? Perhaps you need to create an account or reset your password.
|
||||
unconfirmed: "You have to confirm your account before continuing."
|
||||
already_registered: "This email address is already registered. Please log in to continue, or go back and use another email address."
|
||||
success:
|
||||
logged_in_succesfully: "Logged in successfully"
|
||||
user_passwords:
|
||||
spree_user:
|
||||
updated_not_active: "Your password has been reset, but your email has not been confirmed yet."
|
||||
@@ -316,9 +322,10 @@ en_BE:
|
||||
enable_products_cache: "Enable Products Cache?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Invoice Settings
|
||||
invoice_style2?: Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)
|
||||
enable_receipt_printing?: Show options for printing receipts using thermal printers in order dropdown?
|
||||
title: "Invoice Settings"
|
||||
enable_invoices?: "Enable Invoices?"
|
||||
invoice_style2?: "Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)"
|
||||
enable_receipt_printing?: "Show options for printing receipts using thermal printers in order dropdown?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
@@ -385,6 +392,7 @@ en_BE:
|
||||
calculator: "Calculator"
|
||||
calculator_values: "Calculator Values"
|
||||
search: "Search"
|
||||
name_placeholder: "e.g. packing fee"
|
||||
enterprise_groups:
|
||||
index:
|
||||
new_button: New Enterprise Group
|
||||
@@ -643,6 +651,8 @@ en_BE:
|
||||
permalink_tip: "This permalink is used to create the url to your shop: %{link}your-shop-name/shop"
|
||||
link_to_front: Link to shop front
|
||||
link_to_front_tip: A direct link to your shopfront on the Open Food Network.
|
||||
ofn_uid: OFN UID
|
||||
ofn_uid_tip: The unique id used to identify the enterprise on Open Food Network.
|
||||
shipping_methods:
|
||||
name: Name
|
||||
applies: Applies?
|
||||
@@ -824,6 +834,7 @@ en_BE:
|
||||
add_distributor: 'Add distributor'
|
||||
advanced_settings:
|
||||
title: Advanced Settings
|
||||
choose_product_tip: You can restrict products incoming and outgoing to only %{inventory}'s inventory.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Coordinator's Inventory Only
|
||||
preferred_product_selection_from_coordinator_inventory_only_all: All Available Products
|
||||
save_reload: Save and Reload Page
|
||||
@@ -959,6 +970,8 @@ en_BE:
|
||||
pause_subscription: Pause Subscription
|
||||
unpause_subscription: Unpause Subscription
|
||||
cancel_subscription: Cancel Subscription
|
||||
filters:
|
||||
query_placeholder: "Search by email..."
|
||||
setup_explanation:
|
||||
just_a_few_more_steps: 'Just a few more steps before you can begin:'
|
||||
enable_subscriptions: "Enable subscriptions for at least one of your shops"
|
||||
@@ -991,6 +1004,8 @@ en_BE:
|
||||
charges_not_allowed: Charges are not allowed by this customer
|
||||
no_default_card: Customer has no cards available to charge
|
||||
card_ok: Customer has a card available to charge
|
||||
begins_at_placeholder: "Select a Date"
|
||||
ends_at_placeholder: "Optional"
|
||||
loading_flash:
|
||||
loading: LOADING SUBSCRIPTIONS
|
||||
review:
|
||||
@@ -1048,8 +1063,12 @@ en_BE:
|
||||
show_on_map: "Show all on the map"
|
||||
shared:
|
||||
menu:
|
||||
cart:
|
||||
cart: "Cart"
|
||||
signed_in:
|
||||
profile: "Profile"
|
||||
mobile_menu:
|
||||
cart: "Cart"
|
||||
joyride:
|
||||
checkout: "Checkout now"
|
||||
already_ordered_products: "Already ordered in this order cycle"
|
||||
@@ -1086,7 +1105,11 @@ en_BE:
|
||||
shop:
|
||||
messages:
|
||||
login: "login"
|
||||
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. 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."
|
||||
card_could_not_be_updated: Card could not be updated
|
||||
card_could_not_be_saved: card could not be saved
|
||||
spree_gateway_error_flash_for_checkout: "There was a problem with your payment information: %{error}"
|
||||
@@ -1123,6 +1146,7 @@ en_BE:
|
||||
menu_4_title: "Groups"
|
||||
menu_4_url: "/groups"
|
||||
menu_5_title: "About"
|
||||
menu_5_url: "https://about.openfoodnetwork.org.au/"
|
||||
menu_6_title: "Connect"
|
||||
menu_6_url: "https://openfoodnetwork.org/au/connect/"
|
||||
menu_7_title: "Learn"
|
||||
@@ -1558,6 +1582,7 @@ en_BE:
|
||||
sell_hubs_detail: "Set up a profile for your food enterprise or organisation on the OFN. At any time you can upgrade your profile to a multi-producer shop."
|
||||
sell_groups_detail: "Set up a tailored directory of enterprises (producers and other food enterprises) for your region or for your organisation."
|
||||
sell_user_guide: "Find out more in our user guide."
|
||||
sell_listing_price: "Listing on the OFN is free. Opening and running a shop on OFN is free up to €500 of monthly sales. If you sell more you can choose your community contribution between 1% and 3% of sales. For more detail on pricing visit the Software Platform section via the About link in the top menu."
|
||||
sell_embed: "We can also embed an OFN shop in your own customised website or build a customised local food network website for your region."
|
||||
sell_ask_services: "Ask us about OFN services."
|
||||
shops_title: Shops
|
||||
@@ -1673,6 +1698,7 @@ en_BE:
|
||||
introduction:
|
||||
registration_greeting: "Hi there!"
|
||||
registration_intro: "You can now create a profile for your Producer or Hub"
|
||||
registration_checklist: "What do I need?"
|
||||
registration_time: "5-10 minutes"
|
||||
registration_enterprise_address: "Enterprise address"
|
||||
registration_contact_details: "Primary contact details"
|
||||
@@ -1927,6 +1953,7 @@ en_BE:
|
||||
spree_admin_supplier: Supplier
|
||||
spree_admin_product_category: Product Category
|
||||
spree_admin_variant_unit_name: Variant unit name
|
||||
unit_name: "Unit name"
|
||||
change_package: "Change Package"
|
||||
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
|
||||
spree_admin_eg_pickup_from_school: "eg. 'Pick-up from Primary School'"
|
||||
@@ -2162,6 +2189,7 @@ en_BE:
|
||||
payment_methods: "Payment Methods"
|
||||
payment_method_fee: "Transaction fee"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered"
|
||||
payment_method_not_supported: "That payment method is unsupported. Please choose another one."
|
||||
payment_updated: "Payment Updated"
|
||||
inventory_settings: "Inventory Settings"
|
||||
tag_rules: "Tag Rules"
|
||||
@@ -2352,8 +2380,18 @@ en_BE:
|
||||
severity: Severity
|
||||
description: Description
|
||||
resolve: Resolve
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Shipping methods tagged"
|
||||
shipping_method_tagged_bottom: "are:"
|
||||
payment_method_tagged_top: "Payment methods tagged"
|
||||
payment_method_tagged_bottom: "are:"
|
||||
order_cycle_tagged_top: "Order Cycles tagged"
|
||||
order_cycle_tagged_bottom: "are:"
|
||||
inventory_tagged_top: "Inventory variants tagged"
|
||||
inventory_tagged_bottom: "are:"
|
||||
new_tag_rule_dialog:
|
||||
select_rule_type: "Select a rule type:"
|
||||
add_rule: "Add Rule"
|
||||
enterprise_fees:
|
||||
inherit_from_product: "Inherit From Product"
|
||||
orders:
|
||||
@@ -2610,6 +2648,7 @@ en_BE:
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
site_name: "Site Name"
|
||||
@@ -2711,7 +2750,16 @@ en_BE:
|
||||
no_results: "No results"
|
||||
create: "Create"
|
||||
loading: "Loading"
|
||||
flat_percent: "Flat Percent"
|
||||
per_kg: "Per Kg"
|
||||
amount: "Amount"
|
||||
currency: "Currency"
|
||||
first_item: "First Item Cost"
|
||||
additional_item: "Additional Item Cost"
|
||||
max_items: "Max Items"
|
||||
minimal_amount: "Minimal Amount"
|
||||
normal_amount: "Normal Amount"
|
||||
discount_amount: "Discount Amount"
|
||||
email: Email
|
||||
account_updated: "Account updated!"
|
||||
my_account: "My account"
|
||||
@@ -2810,16 +2858,29 @@ en_BE:
|
||||
shipping_methods:
|
||||
index:
|
||||
shipping_methods: "Shipping Methods"
|
||||
new_shipping_method: "New Shipping Method"
|
||||
name: "Name"
|
||||
products_distributor: "Distributor"
|
||||
zone: "Zone"
|
||||
calculator: "Calculator"
|
||||
display: "Display"
|
||||
both: "Both"
|
||||
front_end: "Front End"
|
||||
back_end: "Back End"
|
||||
no_shipping_methods_found: "No shipping methods found"
|
||||
new:
|
||||
new_shipping_method: "New Shipping Method"
|
||||
back_to_shipping_methods_list: "No shipping methods found"
|
||||
edit:
|
||||
editing_shipping_method: "Editing Shipping Method"
|
||||
new: "New"
|
||||
back_to_shipping_methods_list: "No shipping methods found"
|
||||
form:
|
||||
categories: "Categories"
|
||||
zones: "Zones"
|
||||
both: "Both"
|
||||
front_end: "Front End"
|
||||
back_end: "Back End"
|
||||
payment_methods:
|
||||
new:
|
||||
new_payment_method: "New Payment Method"
|
||||
@@ -2846,6 +2907,7 @@ en_BE:
|
||||
error_saving_payment: Error saving payment
|
||||
submitting_payment: Submitting payment...
|
||||
products:
|
||||
image_upload_error: "The product image was not recognised. Please upload an image in PNG or JPG format."
|
||||
new:
|
||||
title: 'New Product'
|
||||
unit_name_placeholder: 'eg. bunches'
|
||||
|
||||
@@ -14,7 +14,9 @@ en_CA:
|
||||
spree/product:
|
||||
primary_taxon: "Product Category"
|
||||
supplier: "Supplier"
|
||||
shipping_category_id: "Shipping Category"
|
||||
variant_unit: "Variant Unit"
|
||||
variant_unit_name: "Variant Unit Name"
|
||||
order_cycle:
|
||||
orders_close_at: Close date
|
||||
errors:
|
||||
@@ -75,6 +77,8 @@ en_CA:
|
||||
user_confirmations:
|
||||
spree_user:
|
||||
send_instructions: "You will receive an email with instructions about how to confirm your account in a few minutes."
|
||||
confirmation_sent: "Email confirmation sent"
|
||||
confirmation_not_sent: "Error sending confirmation email"
|
||||
user_registrations:
|
||||
spree_user:
|
||||
signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please open the link to activate your account."
|
||||
@@ -85,6 +89,8 @@ en_CA:
|
||||
Were you a guest last time? Perhaps you need to create an account or reset your password.
|
||||
unconfirmed: "You have to confirm your account before continuing."
|
||||
already_registered: "This email address is already registered. Please log in to continue, or go back and use another email address."
|
||||
success:
|
||||
logged_in_succesfully: "Logged in successfully"
|
||||
user_passwords:
|
||||
spree_user:
|
||||
updated_not_active: "Your password has been reset, but your email has not been confirmed yet."
|
||||
@@ -156,8 +162,8 @@ en_CA:
|
||||
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.
|
||||
search_by_name: Search by name or city
|
||||
producers_join: Producers are welcome to join the Open Food Network.
|
||||
charges_sales_tax: Charges sales tax?
|
||||
print_invoice: "Print Invoice"
|
||||
print_ticket: "Print Ticket"
|
||||
@@ -316,9 +322,10 @@ en_CA:
|
||||
enable_products_cache: "Enable Products Cache?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Invoice Settings
|
||||
invoice_style2?: Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)
|
||||
enable_receipt_printing?: Show options for printing receipts using thermal printers in order dropdown?
|
||||
title: "Invoice Settings"
|
||||
enable_invoices?: "Enable Invoices?"
|
||||
invoice_style2?: "Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)"
|
||||
enable_receipt_printing?: "Show options for printing receipts using thermal printers in order dropdown?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
@@ -385,6 +392,7 @@ en_CA:
|
||||
calculator: "Calculator"
|
||||
calculator_values: "Calculator Values"
|
||||
search: "Search"
|
||||
name_placeholder: "e.g. packing fee"
|
||||
enterprise_groups:
|
||||
index:
|
||||
new_button: New Enterprise Group
|
||||
@@ -401,7 +409,7 @@ en_CA:
|
||||
category: Category
|
||||
tax_category: Tax Category
|
||||
inherits_properties?: Inherits Properties?
|
||||
available_on: Available On
|
||||
available_on: Available
|
||||
av_on: "Av. On"
|
||||
import_date: Imported
|
||||
upload_an_image: Upload an image
|
||||
@@ -414,6 +422,7 @@ en_CA:
|
||||
property_name: Property Name
|
||||
inherited_property: Inherited Property
|
||||
variants:
|
||||
infinity: "Infinity"
|
||||
to_order_tip: "Items made to order do not have a set stock level, such as loaves of bread made fresh to order."
|
||||
group_buy_options: "Group Buy Options"
|
||||
back_to_products_list: "Back to products list"
|
||||
@@ -642,6 +651,8 @@ en_CA:
|
||||
permalink_tip: "This permalink is used to create the url to your shop: %{link}your-shop-name/shop"
|
||||
link_to_front: Link to shop front
|
||||
link_to_front_tip: A direct link to your shopfront on the Open Food Network.
|
||||
ofn_uid: OFN UID
|
||||
ofn_uid_tip: The unique id used to identify the enterprise on Open Food Network
|
||||
shipping_methods:
|
||||
name: Name
|
||||
applies: Applies?
|
||||
@@ -671,6 +682,8 @@ en_CA:
|
||||
shopfront_message_placeholder: >
|
||||
An optional explanation for customers detailing how your shopfront works,
|
||||
to be displayed above the product list on your shop page.
|
||||
shopfront_message_link_tooltip: "Insert/edit link"
|
||||
shopfront_message_link_prompt: "Please enter a URL to insert"
|
||||
shopfront_closed_message: "Shopfront Closed Message"
|
||||
shopfront_closed_message_placeholder: >
|
||||
A message which provides a more detailed explanation about why your
|
||||
@@ -800,6 +813,9 @@ en_CA:
|
||||
user_already_exists: "User already exists"
|
||||
error: "Something went wrong"
|
||||
order_cycles:
|
||||
loading_flash:
|
||||
loading_order_cycles: LOADING ORDER CYCLES
|
||||
loading: LOADING....
|
||||
edit:
|
||||
advanced_settings: Advanced Settings
|
||||
update_and_close: Update and Close
|
||||
@@ -808,7 +824,7 @@ en_CA:
|
||||
pickup_time_tip: When orders from this OC will be ready for the customer
|
||||
pickup_instructions_placeholder: "Pick-up instructions"
|
||||
pickup_instructions_tip: These instructions are shown to customers after they complete an order
|
||||
pickup_time_placeholder: "Ready for (ie. Date / Time)"
|
||||
pickup_time_placeholder: "Ready for (ie. Date/Time)"
|
||||
receival_instructions_placeholder: "Receival instructions"
|
||||
add_fee: 'Add fee'
|
||||
remove: 'Remove'
|
||||
@@ -818,6 +834,7 @@ en_CA:
|
||||
add_distributor: 'Add distributor'
|
||||
advanced_settings:
|
||||
title: Advanced Settings
|
||||
choose_product_tip: You can restrict products incoming and outgoing to only%{inventory}'s inventory.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Coordinator's Inventory Only
|
||||
preferred_product_selection_from_coordinator_inventory_only_all: All Available Products
|
||||
save_reload: Save and Reload Page
|
||||
@@ -953,6 +970,8 @@ en_CA:
|
||||
pause_subscription: Pause Subscription
|
||||
unpause_subscription: Unpause Subscription
|
||||
cancel_subscription: Cancel Subscription
|
||||
filters:
|
||||
query_placeholder: "Search by email..."
|
||||
setup_explanation:
|
||||
just_a_few_more_steps: 'Just a few more steps before you can begin:'
|
||||
enable_subscriptions: "Enable subscriptions for at least one of your shops"
|
||||
@@ -985,6 +1004,8 @@ en_CA:
|
||||
charges_not_allowed: Charges are not allowed by this customer
|
||||
no_default_card: Customer has no cards available to charge
|
||||
card_ok: Customer has a card available to charge
|
||||
begins_at_placeholder: "Select a Date"
|
||||
ends_at_placeholder: "Optional"
|
||||
loading_flash:
|
||||
loading: LOADING SUBSCRIPTIONS
|
||||
review:
|
||||
@@ -1042,8 +1063,12 @@ en_CA:
|
||||
show_on_map: "Show all on the map"
|
||||
shared:
|
||||
menu:
|
||||
cart:
|
||||
cart: "Cart"
|
||||
signed_in:
|
||||
profile: "Profile"
|
||||
mobile_menu:
|
||||
cart: "Cart"
|
||||
joyride:
|
||||
checkout: "Checkout now"
|
||||
already_ordered_products: "Already ordered in this order cycle"
|
||||
@@ -1080,7 +1105,11 @@ en_CA:
|
||||
shop:
|
||||
messages:
|
||||
login: "login"
|
||||
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. 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."
|
||||
card_could_not_be_updated: Card could not be updated
|
||||
card_could_not_be_saved: card could not be saved
|
||||
spree_gateway_error_flash_for_checkout: "There was a problem with your payment information: %{error}"
|
||||
@@ -1117,6 +1146,7 @@ en_CA:
|
||||
menu_4_title: "Groups"
|
||||
menu_4_url: "/groups"
|
||||
menu_5_title: "About"
|
||||
menu_5_url: "https://about.openfoodnetwork.org.au/"
|
||||
menu_6_title: "Connect"
|
||||
menu_6_url: "https://openfoodnetwork.org/au/connect/"
|
||||
menu_7_title: "Learn"
|
||||
@@ -1150,7 +1180,7 @@ en_CA:
|
||||
city_placeholder: eg. Northcote
|
||||
postcode: Postal Code
|
||||
postcode_placeholder: eg. 3070
|
||||
suburb: Suburb
|
||||
suburb: City
|
||||
state: Province
|
||||
country: Country
|
||||
unauthorized: Unauthorized
|
||||
@@ -1552,6 +1582,7 @@ en_CA:
|
||||
sell_hubs_detail: "Set up a profile for your food enterprise or organisation on the OFN. At any time you can upgrade your profile to a multi-producer shop."
|
||||
sell_groups_detail: "Set up a tailored directory of enterprises (producers and other food enterprises) for your region or for your organisation."
|
||||
sell_user_guide: "Find out more in our user guide."
|
||||
sell_listing_price: "Listing on the OFN is free. Opening and running a shop on OFN is free up to $500 of monthly sales. If you sell more we will invoice you for 2% of sales to a maximum of $100/month. For more detail on pricing visit the Software Platform section via the About link in the top menu."
|
||||
sell_embed: "We can also embed an OFN shop in your own customised website or build a customised local food network website for your region."
|
||||
sell_ask_services: "Ask us about OFN services."
|
||||
shops_title: Shops
|
||||
@@ -1667,6 +1698,7 @@ en_CA:
|
||||
introduction:
|
||||
registration_greeting: "Hi there!"
|
||||
registration_intro: "You can now create a profile for your Producer or Hub"
|
||||
registration_checklist: "What do I need?"
|
||||
registration_time: "5-10 minutes"
|
||||
registration_enterprise_address: "Enterprise address"
|
||||
registration_contact_details: "Primary contact details"
|
||||
@@ -1921,6 +1953,7 @@ en_CA:
|
||||
spree_admin_supplier: Supplier
|
||||
spree_admin_product_category: Product Category
|
||||
spree_admin_variant_unit_name: Variant unit name
|
||||
unit_name: "Unit Name"
|
||||
change_package: "Change Package"
|
||||
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
|
||||
spree_admin_eg_pickup_from_school: "eg. 'Pick-up from Primary School'"
|
||||
@@ -2156,6 +2189,7 @@ en_CA:
|
||||
payment_methods: "Payment Methods"
|
||||
payment_method_fee: "Transaction fee"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered."
|
||||
payment_method_not_supported: "That payment method is unsupported. Please choose another one."
|
||||
payment_updated: "Payment Updated"
|
||||
inventory_settings: "Inventory Settings"
|
||||
tag_rules: "Tag Rules"
|
||||
@@ -2346,8 +2380,20 @@ en_CA:
|
||||
severity: Severity
|
||||
description: Description
|
||||
resolve: Resolve
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Shipping methods tagged"
|
||||
shipping_method_tagged_bottom: "are:"
|
||||
payment_method_tagged_top: "Payment methods tagged"
|
||||
payment_method_tagged_bottom: "are:"
|
||||
order_cycle_tagged_top: " Order Cycles tagged"
|
||||
order_cycle_tagged_bottom: "are:"
|
||||
inventory_tagged_top: "Inventory variants tagged"
|
||||
inventory_tagged_bottom: "are:"
|
||||
new_tag_rule_dialog:
|
||||
select_rule_type: "Select a rule type:"
|
||||
add_rule: "Add Rule"
|
||||
enterprise_fees:
|
||||
inherit_from_product: "Inherit From Product"
|
||||
orders:
|
||||
index:
|
||||
per_page: "%{results} per page"
|
||||
@@ -2408,6 +2454,7 @@ en_CA:
|
||||
name_required_error: "Please enter a name for this schedule"
|
||||
no_order_cycles_error: "Please select at least one order cycle (drag and drop)"
|
||||
available: "Available"
|
||||
selected: "Selected"
|
||||
customers:
|
||||
index:
|
||||
add_customer: "Add Customer"
|
||||
@@ -2601,6 +2648,7 @@ en_CA:
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
new_payment: "New Payment"
|
||||
capture: "Capture"
|
||||
void: "Void"
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
site_name: "Site Name"
|
||||
@@ -2702,7 +2750,16 @@ en_CA:
|
||||
no_results: "No results"
|
||||
create: "Create"
|
||||
loading: "Loading"
|
||||
flat_percent: "Flat Percent"
|
||||
per_kg: "Per Kg"
|
||||
amount: "Amount"
|
||||
currency: "Currency"
|
||||
first_item: "First Item Cost"
|
||||
additional_item: "Additional Item Cost"
|
||||
max_items: "Max Items"
|
||||
minimal_amount: "Minimal Amount"
|
||||
normal_amount: "Normal Amount"
|
||||
discount_amount: "Discount Amount"
|
||||
email: Email
|
||||
account_updated: "Account updated!"
|
||||
my_account: "My account"
|
||||
@@ -2779,6 +2836,8 @@ en_CA:
|
||||
title: "Distribution"
|
||||
distributor: "Distributor:"
|
||||
order_cycle: "Order cycle:"
|
||||
line_item_adjustments: "Line Item Adjustments"
|
||||
order_adjustments: "Order Adjustments"
|
||||
order_total: "Order Total"
|
||||
overview:
|
||||
enterprises_header:
|
||||
@@ -2799,15 +2858,27 @@ en_CA:
|
||||
shipping_methods:
|
||||
index:
|
||||
shipping_methods: "Shipping Methods"
|
||||
new_shipping_method: "No Shipping Method"
|
||||
name: "Name"
|
||||
products_distributor: "Distributor"
|
||||
zone: "Zone"
|
||||
calculator: "Calculator"
|
||||
display: "Display"
|
||||
both: "Both"
|
||||
front_end: "Front End"
|
||||
back_end: "Back End"
|
||||
no_shipping_methods_found: "No shipping methods found"
|
||||
new:
|
||||
new_shipping_method: "New Shipping Method"
|
||||
back_to_shipping_methods_list: "Back to Shipping Methods List"
|
||||
edit:
|
||||
new: "New"
|
||||
back_to_shipping_methods_list: "Back to Shipping Methods List"
|
||||
form:
|
||||
zones: "Zones"
|
||||
both: "Both"
|
||||
front_end: "Front End"
|
||||
back_end: "Back End"
|
||||
payment_methods:
|
||||
new:
|
||||
new_payment_method: "New Payment Method"
|
||||
|
||||
@@ -316,9 +316,9 @@ en_US:
|
||||
enable_products_cache: "Enable Products Cache?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Invoice Settings
|
||||
invoice_style2?: Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)
|
||||
enable_receipt_printing?: Show options for printing receipts using thermal printers in order dropdown?
|
||||
title: "Invoice Settings"
|
||||
invoice_style2?: "Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)"
|
||||
enable_receipt_printing?: "Show options for printing receipts using thermal printers in order dropdown?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
|
||||
@@ -322,9 +322,10 @@ en_ZA:
|
||||
enable_products_cache: "Enable Products Cache?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Invoice Settings
|
||||
invoice_style2?: Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)
|
||||
enable_receipt_printing?: Show options for printing receipts using thermal printers in order dropdown?
|
||||
title: "Invoice Settings"
|
||||
enable_invoices?: "Enable Invoices?"
|
||||
invoice_style2?: "Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)"
|
||||
enable_receipt_printing?: "Show options for printing receipts using thermal printers in order dropdown?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
@@ -833,6 +834,7 @@ en_ZA:
|
||||
add_distributor: 'Add distributor'
|
||||
advanced_settings:
|
||||
title: Advanced Settings
|
||||
choose_product_tip: You can restrict products incoming and outgoing to only %{inventory}'s inventory.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Coordinator's Inventory Only
|
||||
preferred_product_selection_from_coordinator_inventory_only_all: All Available Products
|
||||
save_reload: Save and Reload Page
|
||||
@@ -1696,6 +1698,7 @@ en_ZA:
|
||||
introduction:
|
||||
registration_greeting: "Hi there!"
|
||||
registration_intro: "You can now create a profile for your Producer or Hub"
|
||||
registration_checklist: "What do I need?"
|
||||
registration_time: "5-10 minutes"
|
||||
registration_enterprise_address: "Enterprise address"
|
||||
registration_contact_details: "Primary contact details"
|
||||
|
||||
@@ -322,9 +322,10 @@ es:
|
||||
enable_products_cache: "¿Habilitar caché de productos?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Configuración de Factura
|
||||
invoice_style2?: Utiliza el modelo de factura alternativo que incluye el desglose fiscal total por tipo de interés y tasa de impuestos por artículo (todavía no es adecuado para países que muestran los precios sin impuestos)
|
||||
enable_receipt_printing?: ¿Mostrar opciones para imprimir recibos usando impresoras térmicas en el desplegable del pedido?
|
||||
title: "Configuración de Factura"
|
||||
enable_invoices?: "Habilitar facturas?"
|
||||
invoice_style2?: "Utiliza el modelo de factura alternativo que incluye el desglose fiscal total por tipo de interés y tasa de impuestos por artículo (todavía no es adecuado para países que muestran los precios sin impuestos)"
|
||||
enable_receipt_printing?: "¿Mostrar opciones para imprimir recibos usando impresoras térmicas en el desplegable del pedido?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
@@ -651,6 +652,8 @@ es:
|
||||
permalink_tip: "Se usa para crear la URL de tu tienda: %{link}nombre-de-tu-tienda/shop"
|
||||
link_to_front: Link a la tienda
|
||||
link_to_front_tip: Enlace directo a tu tienda en Open Food Networks
|
||||
ofn_uid: UID de OFN
|
||||
ofn_uid_tip: La identificación única utilizada para identificar la organización en Open Food Network.
|
||||
shipping_methods:
|
||||
name: Nombre
|
||||
applies: ¿Aplicar?
|
||||
@@ -833,6 +836,7 @@ es:
|
||||
add_distributor: 'Añadir distribuidora'
|
||||
advanced_settings:
|
||||
title: Configuración Avanzada
|
||||
choose_product_tip: Puede restringir los productos entrantes y salientes a solo el inventario de %{inventory}.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Solo el Inventario de la Coordinadora
|
||||
preferred_product_selection_from_coordinator_inventory_only_all: Todos los productos disponibles
|
||||
save_reload: Guardar y recargar la página
|
||||
@@ -1696,6 +1700,7 @@ es:
|
||||
introduction:
|
||||
registration_greeting: "¡Hola!"
|
||||
registration_intro: "Ahora puedes crear un perfil para tu Productora o Grupo de Consumo"
|
||||
registration_checklist: "¿Qué necesito?"
|
||||
registration_time: "5-10 minutos"
|
||||
registration_enterprise_address: "Dirección de la organización"
|
||||
registration_contact_details: "Detalles de contacto principal"
|
||||
|
||||
@@ -322,9 +322,10 @@ fr:
|
||||
enable_products_cache: "Autoriser Cache Produits ?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Paramètres de facturation
|
||||
invoice_style2?: Utiliser le modèle de facture alternatif qui détaille le montant de TVA agrégé par taux et l'information du taux de TVA par produit (pas adapté pour les instances affichant les prix HT)
|
||||
enable_receipt_printing?: Afficher les options d'impression de tickets de caisse dans le menu déroulant des commandes?
|
||||
title: "Paramètres de facturation"
|
||||
enable_invoices?: "Autoriser l'émission de factures ?"
|
||||
invoice_style2?: "Utiliser le modèle de facture alternatif qui détaille le montant de TVA agrégé par taux et l'information du taux de TVA par produit (pas adapté pour les instances affichant les prix HT)"
|
||||
enable_receipt_printing?: "Afficher les options d'impression de tickets de caisse dans le menu déroulant des commandes?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
|
||||
@@ -14,7 +14,9 @@ fr_BE:
|
||||
spree/product:
|
||||
primary_taxon: "Catégorie Produit"
|
||||
supplier: "Fournisseur"
|
||||
shipping_category_id: "Catégorie d'expédition"
|
||||
variant_unit: "Unité"
|
||||
variant_unit_name: "Nom de la variante"
|
||||
order_cycle:
|
||||
orders_close_at: Date de fermeture
|
||||
errors:
|
||||
@@ -75,6 +77,8 @@ fr_BE:
|
||||
user_confirmations:
|
||||
spree_user:
|
||||
send_instructions: "Un email a été envoyé avec des instructions pour confirmer votre adresse email. Vérifiez votre boite mail!"
|
||||
confirmation_sent: "Email de confirmation envoyé"
|
||||
confirmation_not_sent: "Erreur d'envoi du courrier électronique de confirmation"
|
||||
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."
|
||||
@@ -85,6 +89,8 @@ fr_BE:
|
||||
Créez votre compte ou réinitialisez votre mot de passe.
|
||||
unconfirmed: "Veuillez valider le lien envoyé par email pour pouvoir continuer."
|
||||
already_registered: "Cet email est déjà associé à un utilisateur et a déjà été validé. Veuillez vous connecter pour continuer, ou utiliser un autre email."
|
||||
success:
|
||||
logged_in_succesfully: "Connecté avec succès"
|
||||
user_passwords:
|
||||
spree_user:
|
||||
updated_not_active: "Votre mot de passe a bien été réinitialisé, mais votre email n'a pas encore été confirmé."
|
||||
@@ -316,9 +322,10 @@ fr_BE:
|
||||
enable_products_cache: "Permettre des produits en approvisionnement? "
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Paramètres de facturation
|
||||
invoice_style2?: Utiliser le modèle de facture alternatif qui détaille le montant de TVA agrégé par taux et l'information du taux de TVA par produit (pas adapté pour les instances affichant les prix HT)
|
||||
enable_receipt_printing?: Afficher les options d'impression de tickets de caisse dans le menu déroulant des commandes?
|
||||
title: "Paramètres de facturation"
|
||||
enable_invoices?: "Activer les factures?"
|
||||
invoice_style2?: "Utiliser le modèle de facture alternatif qui détaille le montant de TVA agrégé par taux et l'information du taux de TVA par produit (pas adapté pour les instances affichant les prix HT)"
|
||||
enable_receipt_printing?: "Afficher les options d'impression de tickets de caisse dans le menu déroulant des commandes?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "connexion Stripe"
|
||||
@@ -385,6 +392,7 @@ fr_BE:
|
||||
calculator: "Calculateur"
|
||||
calculator_values: "Montants pour calculs"
|
||||
search: "Rechercher"
|
||||
name_placeholder: "par exemple. frais d'emballage"
|
||||
enterprise_groups:
|
||||
index:
|
||||
new_button: Nouveau groupe d'entreprises
|
||||
@@ -644,6 +652,8 @@ fr_BE:
|
||||
permalink_tip: "Ce nom permanent est utilisé pour créer l'url de votre comptoir: %{link}ma-boutique/shop"
|
||||
link_to_front: Lien URL du comptoir
|
||||
link_to_front_tip: C'est le lien qui permet d'accéder en direct à votre comptoir sur Open Food Network.
|
||||
ofn_uid: OFN UID
|
||||
ofn_uid_tip: L'identifiant unique utilisé pour identifier l'entreprise sur Open Food Network.
|
||||
shipping_methods:
|
||||
name: Nom
|
||||
applies: Active?
|
||||
@@ -825,6 +835,7 @@ fr_BE:
|
||||
add_distributor: 'Ajouter un distributeur'
|
||||
advanced_settings:
|
||||
title: Paramétrages avancés
|
||||
choose_product_tip: Vous pouvez limiter les produits entrants et sortants à l'inventaire uniquement%{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
|
||||
@@ -960,6 +971,8 @@ fr_BE:
|
||||
pause_subscription: Mettre en pause Abonnement
|
||||
unpause_subscription: Reprendre Abonnement
|
||||
cancel_subscription: Annuler Abonnement
|
||||
filters:
|
||||
query_placeholder: "Recherche par email ..."
|
||||
setup_explanation:
|
||||
just_a_few_more_steps: 'Encore quelques étapes avant de pouvoir commencer:'
|
||||
enable_subscriptions: "Activez la fonction abonnements pour au moins une de vos comptoirs"
|
||||
@@ -992,6 +1005,8 @@ fr_BE:
|
||||
charges_not_allowed: Le débit automatique n'a pas été autorisé par cet acheteur
|
||||
no_default_card: L'acheteur n'a pas de carte de paiement disponible pour le débit
|
||||
card_ok: L'acheteur a une carte de paiement disponible pour le débit
|
||||
begins_at_placeholder: "Sélectionnez une date"
|
||||
ends_at_placeholder: "Optionnel"
|
||||
loading_flash:
|
||||
loading: Abonnements en cours de chargement
|
||||
review:
|
||||
@@ -1049,8 +1064,12 @@ fr_BE:
|
||||
show_on_map: "Tout afficher sur la carte"
|
||||
shared:
|
||||
menu:
|
||||
cart:
|
||||
cart: "Cart"
|
||||
signed_in:
|
||||
profile: "Profil"
|
||||
mobile_menu:
|
||||
cart: "Cart"
|
||||
joyride:
|
||||
checkout: "Passer la commande"
|
||||
already_ordered_products: "Déjà commandé dans ce cycle de vente"
|
||||
@@ -1087,7 +1106,11 @@ fr_BE:
|
||||
shop:
|
||||
messages:
|
||||
login: "Se connecter"
|
||||
signup: "s'inscrire"
|
||||
contact: "contacter"
|
||||
require_customer_login: "Seuls les clients approuvés peuvent accéder à ce comptoir."
|
||||
require_login_html: "Si vous êtes déjà un client approuvé, %{login}ou %{signup}si vous souhaitez continuer. Voulez-vous commencer à faire vos courses ici? S'il vous plaît %{contact}%{enterprise}et demandez à rejoindre."
|
||||
require_customer_html: "Si vous souhaitez commencer à magasiner ici, veuillez %{contact}%{enterprise}demander si vous souhaitez vous inscrire."
|
||||
card_could_not_be_updated: La carte bancaire n'a pas pu être mise à jour
|
||||
card_could_not_be_saved: la carte n'a pas pu être sauvegardée
|
||||
spree_gateway_error_flash_for_checkout: "Il y a eu un problème avec vos informations de paiement : %{error}"
|
||||
@@ -1124,6 +1147,7 @@ fr_BE:
|
||||
menu_4_title: "Groupes"
|
||||
menu_4_url: "/groups"
|
||||
menu_5_title: "A propos"
|
||||
menu_5_url: "https://about.openfoodnetwork.org.au/"
|
||||
menu_6_title: "Blog"
|
||||
menu_6_url: "https://apropos.openfoodfrance.org/blog/"
|
||||
menu_7_title: "Support"
|
||||
@@ -1535,7 +1559,7 @@ fr_BE:
|
||||
producers_signup_headline: Des producteurs, autonomes
|
||||
producers_signup_motivation: Vendez vos produits. Présentez votre projet pour une alimentation durable. Économisez du temps et de l'argent sur la gestion des opérations courantes. Participez à un système alimentaire transparent et équitable.
|
||||
producers_signup_send: Rejoindre le réseau
|
||||
producers_signup_enterprise: Profil Producteur-trice-s
|
||||
producers_signup_enterprise: Profil Producteur∙trice∙s
|
||||
producers_signup_studies: Témoignages de nos producteurs.
|
||||
producers_signup_cta_headline: Rejoindre le réseau!
|
||||
producers_signup_cta_action: Rejoindre le réseau
|
||||
@@ -1559,6 +1583,7 @@ fr_BE:
|
||||
sell_hubs_detail: "Créer un profil pour votre activité sur OFN en quelques minutes. A tout moment vous pourrez créer un comptoir en ligne pour vendre vos produits en direct aux acheteurs."
|
||||
sell_groups_detail: "Créer un répertoire sur mesure (regroupant différents producteurs et comptoirs) pour votre région ou votre organisation."
|
||||
sell_user_guide: "En savoir plus en explorant le guide utilisateur."
|
||||
sell_listing_price: "L'inscription à l'OFN est libre de contribution. Ouvrir et utiliser un comptoir sur OFN vous permet de gagner jusqu'à 500 $ de ventes mensuelles. Si vous vendez plus, vous pouvez choisir votre contribution communautaire entre 1% et 3% des ventes. Pour plus de détails sur les prix, visitez la section Plateforme logicielle via le lien \"À propos\" de dans le menu supérieur."
|
||||
sell_embed: "D’ici là, vous pouvez également participer au projet. Soit en co-créant la communauté belge, en contribuant à l’amélioration des fonctionnalités… Soit en mettant à disposition : un local pour la démonstration de l’outil ou un point relais pour faciliter les livraisons… Soit en le finançant BE41 0682 2264 2410 – com: Open Food Network"
|
||||
sell_ask_services: "Nous consulter sur les services des partenaires OFN."
|
||||
shops_title: Comptoirs
|
||||
@@ -1674,6 +1699,7 @@ fr_BE:
|
||||
introduction:
|
||||
registration_greeting: "Bonjour!"
|
||||
registration_intro: "Vous pouvez maintenant créer votre profil \"Producteur\" ou \"Comptoir\""
|
||||
registration_checklist: "De quoi ai-je besoin?"
|
||||
registration_time: "5-10 minutes"
|
||||
registration_enterprise_address: "L'adresse de l'entreprise"
|
||||
registration_contact_details: "Les détails du contact référent"
|
||||
@@ -1928,6 +1954,7 @@ fr_BE:
|
||||
spree_admin_supplier: Fournisseur
|
||||
spree_admin_product_category: Catégorie Produit
|
||||
spree_admin_variant_unit_name: Nom de la pièce (si vendu à la pièce)
|
||||
unit_name: "Nom de l'unité"
|
||||
change_package: "Changer de type de compte"
|
||||
spree_admin_single_enterprise_hint: "Astuce: Pour permettre aux gens de vous trouver, activez votre visibilité "
|
||||
spree_admin_eg_pickup_from_school: "ex : \"Retrait des produits à l'Ecole Marimati / Au Café du coin / chez Babette / ...\""
|
||||
@@ -2163,6 +2190,7 @@ fr_BE:
|
||||
payment_methods: "Méthodes de paiement"
|
||||
payment_method_fee: "Frais de transaction"
|
||||
payment_processing_failed: "Le paiement n' a pu être effectué , merci de vérifier les données rentrées"
|
||||
payment_method_not_supported: "Ce mode de paiement n'est pas possible. Veuillez en choisir un autre."
|
||||
payment_updated: "Paiement mis à jour "
|
||||
inventory_settings: "Catalogue boutique"
|
||||
tag_rules: "Règles de tag"
|
||||
@@ -2365,8 +2393,18 @@ fr_BE:
|
||||
severity: Rigueur
|
||||
description: Description
|
||||
resolve: Résoudre
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Méthodes d'expédition étiquetées"
|
||||
shipping_method_tagged_bottom: "sont:"
|
||||
payment_method_tagged_top: "Modes de paiement marqués"
|
||||
payment_method_tagged_bottom: "sont:"
|
||||
order_cycle_tagged_top: "Cycles de commande marqués"
|
||||
order_cycle_tagged_bottom: "sont:"
|
||||
inventory_tagged_top: "Variantes d'inventaire marquées"
|
||||
inventory_tagged_bottom: "sont:"
|
||||
new_tag_rule_dialog:
|
||||
select_rule_type: "Choisir le type de règle:"
|
||||
add_rule: "Ajouter une règle"
|
||||
enterprise_fees:
|
||||
inherit_from_product: "Hériter du produit"
|
||||
orders:
|
||||
@@ -2515,7 +2553,7 @@ fr_BE:
|
||||
action_login: "Se connecter."
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Commencez par créer votre profil entreprise, et changez de formule quand vous êtes prêt !"
|
||||
start_free_profile: "Commencez par créer votre profil entreprise, et présentez votre formule quand vous êtes prêt !"
|
||||
order_management:
|
||||
reports:
|
||||
enterprise_fee_summary:
|
||||
@@ -2624,6 +2662,7 @@ fr_BE:
|
||||
fill_in_customer_info: "Merci de remplir les informations client"
|
||||
new_payment: "Nouveau paiement"
|
||||
capture: "Payée"
|
||||
void: "Vide"
|
||||
configurations: "Configurations"
|
||||
general_settings: "Réglages Généraux"
|
||||
site_name: "Nom du site"
|
||||
@@ -2725,7 +2764,16 @@ fr_BE:
|
||||
no_results: "Aucun résultat"
|
||||
create: "Créer"
|
||||
loading: "Chargement en cours"
|
||||
flat_percent: "Pourcentage plat"
|
||||
per_kg: "Par kg"
|
||||
amount: "Quantité"
|
||||
currency: "Devise"
|
||||
first_item: "Coût du premier article "
|
||||
additional_item: "Coût d'objet supplémentaire"
|
||||
max_items: "Articles maximum"
|
||||
minimal_amount: "Montant minimal"
|
||||
normal_amount: "Montant normal"
|
||||
discount_amount: "Montant de la remise"
|
||||
email: Email
|
||||
account_updated: "Compte mis à jour!"
|
||||
my_account: "Mon compte"
|
||||
@@ -2824,16 +2872,29 @@ fr_BE:
|
||||
shipping_methods:
|
||||
index:
|
||||
shipping_methods: "Méthodes de livraison"
|
||||
new_shipping_method: "Nouvelle méthode de livraison"
|
||||
name: "Nom"
|
||||
products_distributor: "Distributeur"
|
||||
zone: "Zone"
|
||||
calculator: "Calculateur"
|
||||
display: "Ecran"
|
||||
both: "Tous les deux"
|
||||
front_end: "L'extrémité avant"
|
||||
back_end: "Back End"
|
||||
no_shipping_methods_found: "Aucune méthode de livraison trouvée"
|
||||
new:
|
||||
new_shipping_method: "Nouvelle méthode de livraison"
|
||||
back_to_shipping_methods_list: "Retour à la liste des méthodes de livraison"
|
||||
edit:
|
||||
editing_shipping_method: "Éditer une méthode de livraison"
|
||||
new: "Nouveau"
|
||||
back_to_shipping_methods_list: "Retour à la liste des méthodes de livraison"
|
||||
form:
|
||||
categories: "Les catégories"
|
||||
zones: "Zones"
|
||||
both: "Tous les deux"
|
||||
front_end: "L'extrémité avant"
|
||||
back_end: "Back End"
|
||||
payment_methods:
|
||||
new:
|
||||
new_payment_method: "Nouvelle méthode de paiement"
|
||||
@@ -2860,6 +2921,7 @@ fr_BE:
|
||||
error_saving_payment: Erreur à l'enregistrement du paiement
|
||||
submitting_payment: Envoi du paiement...
|
||||
products:
|
||||
image_upload_error: "L'image du produit n'a pas été reconnue. Veuillez télécharger une image au format PNG ou JPG."
|
||||
new:
|
||||
title: 'Nouveau Produit'
|
||||
unit_name_placeholder: 'ex: botte'
|
||||
|
||||
@@ -317,9 +317,9 @@ fr_CA:
|
||||
enable_products_cache: "Autoriser Cache Produits ?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Paramètres de facturation
|
||||
invoice_style2?: Utiliser le modèle de facture alternatif qui détaille le montant de Taxe agrégé par taux et l'information du taux de taxe par produit (pas adapté pour les instances affichant les prix HT)
|
||||
enable_receipt_printing?: Afficher les options d'impression de tickets de caisse dans le menu déroulant des commandes?
|
||||
title: "Paramètres de facturation"
|
||||
invoice_style2?: "Utiliser le modèle de facture alternatif qui détaille le montant de Taxe agrégé par taux et l'information du taux de taxe par produit (pas adapté pour les instances affichant les prix HT)"
|
||||
enable_receipt_printing?: "Afficher les options d'impression de tickets de caisse dans le menu déroulant des commandes?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
|
||||
@@ -316,9 +316,9 @@ it:
|
||||
enable_products_cache: "Abilita la cache dei prodotti?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Impostazioni fatturazione
|
||||
invoice_style2?: Utilizzare il modello di fattura alternativa che include la ripartizione totale delle imposte per tariffa e le informazioni sulla tariffa fiscale per articolo (non ancora adatto per i paesi che visualizzano i prezzi al netto delle imposte)
|
||||
enable_receipt_printing?: Visualizzo le opzioni per stampare la ricevuta usando la stampante termica nel menù a cascata?
|
||||
title: "Impostazioni fatturazione"
|
||||
invoice_style2?: "Utilizzare il modello di fattura alternativa che include la ripartizione totale delle imposte per tariffa e le informazioni sulla tariffa fiscale per articolo (non ancora adatto per i paesi che visualizzano i prezzi al netto delle imposte)"
|
||||
enable_receipt_printing?: "Visualizzo le opzioni per stampare la ricevuta usando la stampante termica nel menù a cascata?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
|
||||
@@ -316,9 +316,9 @@ nb:
|
||||
enable_products_cache: "Aktiver Mellomlagring for Produkter?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Fakturainnstillinger
|
||||
invoice_style2?: Bruk den alternative fakturamodellen som inkluderer total avgiftsoppdeling pr rate og avgiftsrateinfo pr vare (passer ikke for land som viser priser ekskludert avgift)
|
||||
enable_receipt_printing?: 'Vis valg for utskrift av kvitteringer ved bruk av kvitteringsprinter i nedtrekksmeny for bestillinger? '
|
||||
title: "Fakturainnstillinger"
|
||||
invoice_style2?: "Bruk den alternative fakturamodellen som inkluderer total avgiftsoppdeling pr rate og avgiftsrateinfo pr vare (passer ikke for land som viser priser ekskludert avgift)"
|
||||
enable_receipt_printing?: "Vis valg for utskrift av kvitteringer ved bruk av kvitteringsprinter i nedtrekksmeny for bestillinger? "
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
|
||||
@@ -14,7 +14,9 @@ nl_BE:
|
||||
spree/product:
|
||||
primary_taxon: "Product categorie"
|
||||
supplier: "Leverancier"
|
||||
shipping_category_id: "Verzendcategorie"
|
||||
variant_unit: "Eénheid"
|
||||
variant_unit_name: "Variant Unit Name"
|
||||
order_cycle:
|
||||
orders_close_at: Sluitingsdatum
|
||||
errors:
|
||||
@@ -75,6 +77,8 @@ nl_BE:
|
||||
user_confirmations:
|
||||
spree_user:
|
||||
send_instructions: "U ontvangt een e-mail met instructies over hoe u uw account binnen enkele minuten kunt bevestigen."
|
||||
confirmation_sent: "E-mailbevestiging verzonden"
|
||||
confirmation_not_sent: "Fout bij verzenden bevestigingsmail"
|
||||
user_registrations:
|
||||
spree_user:
|
||||
signed_up_but_unconfirmed: "Er is een bericht met een bevestigingslink naar uw e-mailadres gestuurd. Open de link om uw account te activeren."
|
||||
@@ -85,6 +89,8 @@ nl_BE:
|
||||
Bent u de laatste keer gast geweest? Misschien moet u een account aanmaken of uw wachtwoord opnieuw instellen.
|
||||
unconfirmed: "U moet uw account bevestigen voordat u verdergaat."
|
||||
already_registered: "Dit e-mailadres is al geregistreerd. Log in om verder te gaan, of ga terug en gebruik een ander e-mailadres."
|
||||
success:
|
||||
logged_in_succesfully: "succesvol ingelogd"
|
||||
user_passwords:
|
||||
spree_user:
|
||||
updated_not_active: "Uw wachtwoord is gereset, maar uw e-mail is nog niet bevestigd."
|
||||
@@ -316,9 +322,10 @@ nl_BE:
|
||||
enable_products_cache: "Produkten in voorraad toelaten? "
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Factuur instellingen
|
||||
invoice_style2?: Gebruik het alternatieve factuurmodel dat de totale belastingsuitsplitsing per tarief en belastingtariefinformatie per artikel bevat (nog niet geschikt voor landen met prijzen exclusief belastingen).
|
||||
enable_receipt_printing?: Toon opties voor het afdrukken van kassabonnen met behulp van thermische printers in de volgorde dropdown?
|
||||
title: "Factuur instellingen"
|
||||
enable_invoices?: "Facturen inschakelen?"
|
||||
invoice_style2?: "Gebruik het alternatieve factuurmodel dat de totale belastingsuitsplitsing per tarief en belastingtariefinformatie per artikel bevat (nog niet geschikt voor landen met prijzen exclusief belastingen)."
|
||||
enable_receipt_printing?: "Toon opties voor het afdrukken van kassabonnen met behulp van thermische printers in de volgorde dropdown?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Stripe Connect"
|
||||
@@ -385,6 +392,7 @@ nl_BE:
|
||||
calculator: "Rekenmachine"
|
||||
calculator_values: "Rekenmachine Waarden"
|
||||
search: "Zoeken"
|
||||
name_placeholder: "bijv. verpakkingskosten"
|
||||
enterprise_groups:
|
||||
index:
|
||||
new_button: Nieuwe Ondernemingsgroep
|
||||
@@ -646,6 +654,8 @@ nl_BE:
|
||||
permalink_tip: "Deze permalink wordt gebruikt om de url te gebruiken in jouw winkel: %{link} jouw-winkel-naam/winkel"
|
||||
link_to_front: Link naar je etalage
|
||||
link_to_front_tip: Een directe link naar je etalage op het Open Food Network.
|
||||
ofn_uid: OFN UID
|
||||
ofn_uid_tip: Het unieke ID dat wordt gebruikt om de onderneming in Open Food Network te identificeren.
|
||||
shipping_methods:
|
||||
name: Naam
|
||||
applies: Van toepassing?
|
||||
@@ -827,6 +837,7 @@ nl_BE:
|
||||
add_distributor: 'Voeg verdeler toe'
|
||||
advanced_settings:
|
||||
title: Geavanceerde Instellingen
|
||||
choose_product_tip: U kunt inkomende en uitgaande producten beperken tot alleen de%{inventory} voorraad.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: 'Enkel Coördinator Inventaris '
|
||||
preferred_product_selection_from_coordinator_inventory_only_all: Alle Beschikbare Producten
|
||||
save_reload: Bewaar en Herlaad Webpagina
|
||||
@@ -962,6 +973,8 @@ nl_BE:
|
||||
pause_subscription: Pauze Abonnement
|
||||
unpause_subscription: Abonnement Opzeggen
|
||||
cancel_subscription: Abonnement Opzeggen
|
||||
filters:
|
||||
query_placeholder: "Zoeken per e-mail ..."
|
||||
setup_explanation:
|
||||
just_a_few_more_steps: 'Nog een paar stappen voordat u kunt beginnen:'
|
||||
enable_subscriptions: "Inschrijven voor minstens één van uw winkels mogelijk maken"
|
||||
@@ -994,6 +1007,8 @@ nl_BE:
|
||||
charges_not_allowed: Kredietkaartskosten zijn niet toegestaan door deze klant
|
||||
no_default_card: De klant heeft geen kredietkaart beschikbaar om te verrekenen
|
||||
card_ok: De klant heeft een kredietkaart beschikbaar om te verrekenen
|
||||
begins_at_placeholder: "Selecteer een datum"
|
||||
ends_at_placeholder: "Facultatief"
|
||||
loading_flash:
|
||||
loading: ABONNEMENTEN WORDEN GELADEN
|
||||
review:
|
||||
@@ -1051,8 +1066,12 @@ nl_BE:
|
||||
show_on_map: "Toon alles op de kaart"
|
||||
shared:
|
||||
menu:
|
||||
cart:
|
||||
cart: "kar"
|
||||
signed_in:
|
||||
profile: "Profiel"
|
||||
mobile_menu:
|
||||
cart: "kar"
|
||||
joyride:
|
||||
checkout: "Naar de kassa"
|
||||
already_ordered_products: "Reeds besteld in de huidige bestelcyclus"
|
||||
@@ -1089,7 +1108,11 @@ nl_BE:
|
||||
shop:
|
||||
messages:
|
||||
login: "login"
|
||||
signup: "inschrijven"
|
||||
contact: "contact"
|
||||
require_customer_login: "Alleen goedgekeurde klanten hebben toegang tot deze winkel. "
|
||||
require_login_html: "Als u al een goedgekeurde klant bent %{login} of %{signup} wilt doorgaan. Wil je hier beginnen met winkelen? Alstublieft %{contact}en%{enterprise} vragen over meedoen."
|
||||
require_customer_html: "Als u hier wilt beginnen met winkelen, kunt u vragen of %{contact}%{enterprise}u lid wilt worden."
|
||||
card_could_not_be_updated: De bankkaart kon niet worden geüpdatet.
|
||||
card_could_not_be_saved: De bankkaart kon niet worden bewaard.
|
||||
spree_gateway_error_flash_for_checkout: "Er was een probleem met betaalinformatie: %{error}"
|
||||
@@ -1126,6 +1149,7 @@ nl_BE:
|
||||
menu_4_title: "Groepen"
|
||||
menu_4_url: "/groups"
|
||||
menu_5_title: "Over"
|
||||
menu_5_url: "https://about.openfoodnetwork.org.au/"
|
||||
menu_6_title: "Connecteer je "
|
||||
menu_6_url: "https://openfoodnetwork.org/au/connect/"
|
||||
menu_7_title: "Ontdek"
|
||||
@@ -1561,6 +1585,7 @@ nl_BE:
|
||||
sell_hubs_detail: "Maak een profiel voor je voedselonderneming of organisatie aan op het OFN. Op om het even welk moment kan je je profiel opwaarderen naar multi-producentenwinkel."
|
||||
sell_groups_detail: "Maak een op maat gemaakt pad van ondernemingen (producent en andere voedselondernemingen) voor je regio of voor jouw organisatie."
|
||||
sell_user_guide: "Kom kom meer te weten in onze gebruikershandleiding."
|
||||
sell_listing_price: "Vermelding op de OFN is gratis. Het openen en runnen van een winkel op OFN is gratis tot €500 maandelijkse verkoop. Als u meer verkoopt, kunt u uw communitybijdrage kiezen tussen 1% en 3% van de omzet. Ga voor meer informatie over prijzen naar het gedeelte Softwareplatform via de koppeling Over in het hoofdmenu."
|
||||
sell_embed: "We kunnen ook een OFNwinkel in aan je persoonlijke noden aangepaste website of een speciaal aangepast lokaal voedselnetwerkwebsite bouwen voor jouw regio bouwen."
|
||||
sell_ask_services: "Vraag ons over de OFN diensten."
|
||||
shops_title: Winkels
|
||||
@@ -1676,6 +1701,7 @@ nl_BE:
|
||||
introduction:
|
||||
registration_greeting: "Hallo daar!"
|
||||
registration_intro: "Je kan nu een nieuw profiel creëren voor jouw Producent of Hub"
|
||||
registration_checklist: "Wat heb ik nodig?"
|
||||
registration_time: "5-10 minuten "
|
||||
registration_enterprise_address: "Adres bedrijf"
|
||||
registration_contact_details: "Hoofdcontactpersoon gegevens"
|
||||
@@ -1930,6 +1956,7 @@ nl_BE:
|
||||
spree_admin_supplier: Leverancier
|
||||
spree_admin_product_category: Product categorie
|
||||
spree_admin_variant_unit_name: Naam van het stuk (indien per stuk verkocht)
|
||||
unit_name: "Unit naam"
|
||||
change_package: "Wijzig je Packet"
|
||||
spree_admin_single_enterprise_hint: "Hint: Om het voor mensen mogelijk te maken je te vinden, zet je zichtbaarheid aan"
|
||||
spree_admin_eg_pickup_from_school: "bv. 'Ophaling op een basisschool'"
|
||||
@@ -2165,6 +2192,7 @@ nl_BE:
|
||||
payment_methods: "Betaalmethodes"
|
||||
payment_method_fee: "Transactiekosten (excl.BTW)"
|
||||
payment_processing_failed: "De betaling is niet succesvol, gelieve de ingevoerde gegevens na te kijken"
|
||||
payment_method_not_supported: "Die betaalmethode wordt niet ondersteund. Kies alstublieft een andere."
|
||||
payment_updated: "Betaling is bijgewerkt"
|
||||
inventory_settings: "Catalogus winkel"
|
||||
tag_rules: "Tagregels"
|
||||
@@ -2361,8 +2389,18 @@ nl_BE:
|
||||
severity: Strengheid
|
||||
description: Beschrijving
|
||||
resolve: Oplossen
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Verzendmethoden getagd"
|
||||
shipping_method_tagged_bottom: "zijn:"
|
||||
payment_method_tagged_top: "Betaalmethoden getagged"
|
||||
payment_method_tagged_bottom: "zijn:"
|
||||
order_cycle_tagged_top: "Bestel Cycles getagd"
|
||||
order_cycle_tagged_bottom: "zijn:"
|
||||
inventory_tagged_top: "Inventarisatievarianten getagd"
|
||||
inventory_tagged_bottom: "zijn:"
|
||||
new_tag_rule_dialog:
|
||||
select_rule_type: "Selecteer een regel : "
|
||||
add_rule: "Regel toevoegen"
|
||||
enterprise_fees:
|
||||
inherit_from_product: "Overnemen van product"
|
||||
orders:
|
||||
@@ -2619,6 +2657,7 @@ nl_BE:
|
||||
fill_in_customer_info: "Gelieve informatie over klant in te vullen"
|
||||
new_payment: "Nieuwe betaling"
|
||||
capture: "Capture"
|
||||
void: "leegte"
|
||||
configurations: "configuraties "
|
||||
general_settings: "Algemene instellingen"
|
||||
site_name: "Website Naam"
|
||||
@@ -2720,7 +2759,16 @@ nl_BE:
|
||||
no_results: "Geen resultaten "
|
||||
create: "Maak"
|
||||
loading: "Aan het opladen"
|
||||
flat_percent: "Flat Percent"
|
||||
per_kg: "Per Kg"
|
||||
amount: "Bedrag"
|
||||
currency: "Valuta"
|
||||
first_item: "Kosten eerste item"
|
||||
additional_item: "Bijkomende artikelkosten"
|
||||
max_items: "Max"
|
||||
minimal_amount: "Minimaal bedrag"
|
||||
normal_amount: "Normaal bedrag"
|
||||
discount_amount: "Korting hoeveelheid"
|
||||
email: Email
|
||||
account_updated: "Rekening reset !"
|
||||
my_account: "Mijn rekening"
|
||||
@@ -2819,16 +2867,29 @@ nl_BE:
|
||||
shipping_methods:
|
||||
index:
|
||||
shipping_methods: "Methode Verzending"
|
||||
new_shipping_method: "New Shipping Method"
|
||||
name: "Naam"
|
||||
products_distributor: "Distributeur"
|
||||
zone: "Zone"
|
||||
calculator: "Rekenmachine"
|
||||
display: "Display"
|
||||
both: "Beide"
|
||||
front_end: "Voorkant"
|
||||
back_end: "Back End"
|
||||
no_shipping_methods_found: "Geen verzendmethoden gevonden"
|
||||
new:
|
||||
new_shipping_method: "New Shipping Method"
|
||||
back_to_shipping_methods_list: "Terug naar Verzendmethodenlijst"
|
||||
edit:
|
||||
editing_shipping_method: "Verzendmethode bewerken"
|
||||
new: "Nieuw"
|
||||
back_to_shipping_methods_list: "Terug naar Verzendmethodenlijst"
|
||||
form:
|
||||
categories: "Categorieën"
|
||||
zones: "Zones "
|
||||
both: "Beide"
|
||||
front_end: "Voorkant"
|
||||
back_end: "Back End"
|
||||
payment_methods:
|
||||
new:
|
||||
new_payment_method: "Nieuwe betalingswijze"
|
||||
@@ -2855,6 +2916,7 @@ nl_BE:
|
||||
error_saving_payment: Fout bij het opladen van de betaling
|
||||
submitting_payment: 'Het doorsturen van de betaling '
|
||||
products:
|
||||
image_upload_error: "Het productbeeld werd niet herkend. Upload een afbeelding in PNG- of JPG-indeling."
|
||||
new:
|
||||
title: 'Nieuw product'
|
||||
unit_name_placeholder: 'b.v. trossen'
|
||||
|
||||
@@ -316,9 +316,9 @@ pt:
|
||||
enable_products_cache: "Activar Cache?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Configuração de Faturas
|
||||
invoice_style2?: Use o modelo alternativo de fatura que inclui o total de impostos dividido por taxa e taxa de imposto por item (ainda não disponível para países que exibem preços sem taxas)
|
||||
enable_receipt_printing?: Mostrar opções para imprimir recibos usando impressoras térmicas no selector de encomendas?
|
||||
title: "Configuração de Faturas"
|
||||
invoice_style2?: "Use o modelo alternativo de fatura que inclui o total de impostos dividido por taxa e taxa de imposto por item (ainda não disponível para países que exibem preços sem taxas)"
|
||||
enable_receipt_printing?: "Mostrar opções para imprimir recibos usando impressoras térmicas no selector de encomendas?"
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
title: "Ligar ao Stripe"
|
||||
|
||||
@@ -157,9 +157,9 @@ sv:
|
||||
error: "Fel"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Fakturainställningar
|
||||
invoice_style2?: Använd den alternativa faktureringsmodellen som inkluderar totala skattefördelning per beräkning och skatt per artikel (ännu inte passande för länder som visar priser exklusive skatt)
|
||||
enable_receipt_printing?: 'Visa alternativ för att skriva ut recept genom att använda termiska skrivare i ordermenyn? '
|
||||
title: "Fakturainställningar"
|
||||
invoice_style2?: "Använd den alternativa faktureringsmodellen som inkluderar totala skattefördelning per beräkning och skatt per artikel (ännu inte passande för länder som visar priser exklusive skatt)"
|
||||
enable_receipt_printing?: "Visa alternativ för att skriva ut recept genom att använda termiska skrivare i ordermenyn? "
|
||||
customers:
|
||||
index:
|
||||
new_customer: "Ny kund"
|
||||
|
||||
42
spec/features/admin/reports/packing_report_spec.rb
Normal file
42
spec/features/admin/reports/packing_report_spec.rb
Normal file
@@ -0,0 +1,42 @@
|
||||
require "spec_helper"
|
||||
|
||||
feature "Packing Reports", js: true do
|
||||
include AuthenticationWorkflow
|
||||
include WebHelper
|
||||
|
||||
let(:distributor) { create(:distributor_enterprise) }
|
||||
let(:oc) { create(:simple_order_cycle) }
|
||||
let(:order) { create(:order, completed_at: 1.day.ago, order_cycle: oc, distributor: distributor) }
|
||||
let(:li1) { build(:line_item_with_shipment) }
|
||||
let(:li2) { build(:line_item_with_shipment) }
|
||||
|
||||
before do
|
||||
order.line_items << li1
|
||||
order.line_items << li2
|
||||
quick_login_as_admin
|
||||
end
|
||||
|
||||
describe "viewing a report" do
|
||||
context "when an associated variant has been soft-deleted" do
|
||||
it "shows line items" do
|
||||
li1.variant.delete
|
||||
|
||||
visit spree.admin_reports_path
|
||||
|
||||
click_on I18n.t("admin.reports.packing.name")
|
||||
select oc.name, from: "q_order_cycle_id_in"
|
||||
|
||||
find('#q_completed_at_gt').click
|
||||
select_date(Time.zone.today - 1.days)
|
||||
|
||||
find('#q_completed_at_lt').click
|
||||
select_date(Time.zone.today)
|
||||
|
||||
find("button[type='submit']").click
|
||||
|
||||
expect(page).to have_content li1.product.name
|
||||
expect(page).to have_content li2.product.name
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -47,8 +47,8 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
describe "importing products from a spreadsheet" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "variant_unit_name", "on_demand", "shipping_category"]
|
||||
csv << ["Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", "", "", shipping_category.name]
|
||||
csv << ["Potatoes", "User Enterprise", "Vegetables", "6", "6.50", "2", "kg", "", "", shipping_category.name]
|
||||
@@ -56,16 +56,16 @@ describe ProductImport::ProductImporter do
|
||||
csv << ["Salad", "User Enterprise", "Vegetables", "7", "4.50", "1", "", "bags", "", shipping_category.name]
|
||||
csv << ["Hot Cross Buns", "User Enterprise", "Cake", "7", "3.50", "1", "", "buns", "1", shipping_category.name]
|
||||
end
|
||||
@importer = import_data csv_data
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data }
|
||||
|
||||
it "returns the number of entries" do
|
||||
expect(@importer.item_count).to eq(5)
|
||||
expect(importer.item_count).to eq(5)
|
||||
end
|
||||
|
||||
it "validates entries and returns the results as json" do
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 5
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
@@ -74,11 +74,11 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
it "saves the results and returns info on updated products" do
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 5
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 5
|
||||
expect(importer.products_created_count).to eq 5
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 5
|
||||
|
||||
carrots = Spree::Product.find_by_name('Carrots')
|
||||
expect(carrots.supplier).to eq enterprise
|
||||
@@ -133,18 +133,18 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
describe "when uploading a spreadsheet with some invalid entries" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "shipping_category"]
|
||||
csv << ["Good Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", shipping_category.name]
|
||||
csv << ["Bad Potatoes", "", "Vegetables", "6", "6.50", "1", "", shipping_category.name]
|
||||
end
|
||||
@importer = import_data csv_data
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data }
|
||||
|
||||
it "validates entries" do
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 1
|
||||
expect(filter('invalid', entries)).to eq 1
|
||||
@@ -153,11 +153,11 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
it "allows saving of the valid entries" do
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 1
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 1
|
||||
expect(importer.products_created_count).to eq 1
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 1
|
||||
|
||||
carrots = Spree::Product.find_by_name('Good Carrots')
|
||||
expect(carrots.supplier).to eq enterprise
|
||||
@@ -170,35 +170,35 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
describe "when shipping category is missing" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "variant_unit_name", "on_demand", "shipping_category"]
|
||||
csv << ["Shipping Test", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", "", nil, nil]
|
||||
end
|
||||
@importer = import_data csv_data
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data }
|
||||
|
||||
it "raises an error" do
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(entries['2']['errors']['shipping_category']).to eq "Shipping_category can't be blank"
|
||||
end
|
||||
end
|
||||
|
||||
describe "when enterprises are not valid" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type"]
|
||||
csv << ["Product 1", "Non-existent Enterprise", "Vegetables", "5", "5.50", "500", "g"]
|
||||
csv << ["Product 2", "Non-Producer", "Vegetables", "5", "5.50", "500", "g"]
|
||||
end
|
||||
@importer = import_data csv_data
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data }
|
||||
|
||||
it "adds enterprise errors" do
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(entries['2']['errors']['producer']).to include "not found in database"
|
||||
expect(entries['3']['errors']['producer']).to include "not enabled as a producer"
|
||||
@@ -206,18 +206,18 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
describe "adding new variants to existing products and updating exiting products" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category"]
|
||||
csv << ["Hypothetical Cake", "Another Enterprise", "Cake", "5", "5.50", "500", "g", "Preexisting Banana", shipping_category.name]
|
||||
csv << ["Hypothetical Cake", "Another Enterprise", "Cake", "6", "3.50", "500", "g", "Emergent Coffee", shipping_category.name]
|
||||
end
|
||||
@importer = import_data csv_data
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data }
|
||||
|
||||
it "validates entries" do
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 2
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
@@ -226,12 +226,12 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
it "saves and updates" do
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 1
|
||||
expect(@importer.products_updated_count).to eq 1
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 2
|
||||
expect(importer.products_created_count).to eq 1
|
||||
expect(importer.products_updated_count).to eq 1
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 2
|
||||
|
||||
added_coffee = Spree::Variant.find_by_display_name('Emergent Coffee')
|
||||
expect(added_coffee.product.name).to eq 'Hypothetical Cake'
|
||||
@@ -247,9 +247,28 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
end
|
||||
|
||||
describe "updating an exiting variant" do
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "description" ,"category", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category"]
|
||||
csv << ["Hypothetical Cake", "Another Enterprise", "New Description", "Cake", "5", "5.50", "500", "g", "Preexisting Banana", shipping_category.name]
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data }
|
||||
|
||||
it "ignores (non-updatable) description field if it doesn't match the current description" do
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 1
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
expect(filter('update_product', entries)).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
describe "adding new product and sub-variant at the same time" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category"]
|
||||
csv << ["Potatoes", "User Enterprise", "Vegetables", "5", "3.50", "500", "g", "Small Bag", shipping_category.name]
|
||||
csv << ["Chives", "User Enterprise", "Vegetables", "6", "4.50", "500", "g", "Small Bag", shipping_category.name]
|
||||
@@ -257,12 +276,12 @@ describe ProductImport::ProductImporter do
|
||||
csv << ["Potatoes", "User Enterprise", "Vegetables", "6", "22.00", "10000", "g", "Small Sack", shipping_category.name]
|
||||
csv << ["Potatoes", "User Enterprise", "Vegetables", "6", "60.00", "30000", "", "Big Sack", shipping_category.name]
|
||||
end
|
||||
@importer = import_data csv_data
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data }
|
||||
|
||||
it "validates entries" do
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 3
|
||||
expect(filter('invalid', entries)).to eq 2
|
||||
@@ -270,11 +289,11 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
it "saves and updates" do
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 3
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 3
|
||||
expect(importer.products_created_count).to eq 3
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 3
|
||||
|
||||
small_bag = Spree::Variant.find_by_display_name('Small Bag')
|
||||
expect(small_bag.product.name).to eq 'Potatoes'
|
||||
@@ -296,18 +315,18 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
describe "updating various fields" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "on_demand", "sku", "shipping_category"]
|
||||
csv << ["Beetroot", "And Another Enterprise", "Vegetables", "5", "3.50", "500", "g", "0", nil, shipping_category.name]
|
||||
csv << ["Tomato", "And Another Enterprise", "Vegetables", "6", "5.50", "500", "g", "1", "TOMS", shipping_category.name]
|
||||
end
|
||||
@importer = import_data csv_data
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data }
|
||||
|
||||
it "validates entries" do
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 2
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
@@ -316,12 +335,12 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
it "saves and updates" do
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 0
|
||||
expect(@importer.products_updated_count).to eq 2
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 2
|
||||
expect(importer.products_created_count).to eq 0
|
||||
expect(importer.products_updated_count).to eq 2
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 2
|
||||
|
||||
beetroot = Spree::Product.find_by_name('Beetroot').variants.first
|
||||
expect(beetroot.price).to eq 3.50
|
||||
@@ -334,31 +353,31 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
describe "updating non-updatable fields on existing products" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type"]
|
||||
csv << ["Beetroot", "And Another Enterprise", "Meat", "5", "3.50", "500", "g"]
|
||||
csv << ["Tomato", "And Another Enterprise", "Vegetables", "6", "5.50", "500", "Kg"]
|
||||
end
|
||||
@importer = import_data csv_data
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data }
|
||||
|
||||
it "does not allow updating" do
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 0
|
||||
expect(filter('invalid', entries)).to eq 2
|
||||
|
||||
@importer.entries.each do |entry|
|
||||
importer.entries.each do |entry|
|
||||
expect(entry.errors.messages.values).to include [I18n.t('admin.product_import.model.not_updatable')]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "when more than one product of the same name already exists with multiple variants each" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "category", "description", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category"]
|
||||
csv << ["Oats", "User Enterprise", "Cereal", "", "50", "3.50", "500", "g", "Rolled Oats", shipping_category.name] # Update
|
||||
csv << ["Oats", "User Enterprise", "Cereal", "", "80", "3.75", "500", "g", "Flaked Oats", shipping_category.name] # Update
|
||||
@@ -366,12 +385,12 @@ describe ProductImport::ProductImporter do
|
||||
csv << ["Oats", "User Enterprise", "Cereal", "", "70", "8.50", "500", "g", "French Oats", shipping_category.name] # Add
|
||||
csv << ["Oats", "User Enterprise", "Cereal", "", "70", "8.50", "500", "g", "Scottish Oats", shipping_category.name] # Add
|
||||
end
|
||||
@importer = import_data csv_data
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data }
|
||||
|
||||
it "validates entries" do
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 5
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
@@ -382,19 +401,19 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
it "saves and updates" do
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 3
|
||||
expect(@importer.products_updated_count).to eq 2
|
||||
expect(@importer.inventory_created_count).to eq 0
|
||||
expect(@importer.inventory_updated_count).to eq 0
|
||||
expect(@importer.updated_ids.count).to eq 5
|
||||
expect(importer.products_created_count).to eq 3
|
||||
expect(importer.products_updated_count).to eq 2
|
||||
expect(importer.inventory_created_count).to eq 0
|
||||
expect(importer.inventory_updated_count).to eq 0
|
||||
expect(importer.updated_ids.count).to eq 5
|
||||
end
|
||||
end
|
||||
|
||||
describe "when importer processes create and update across multiple stages" do
|
||||
before do
|
||||
@csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category"]
|
||||
csv << ["Bag of Oats", "User Enterprise", "Cereal", "60", "5.50", "500", "g", "Magic Oats", shipping_category.name] # Add
|
||||
csv << ["Bag of Oats", "User Enterprise", "Cereal", "70", "8.50", "500", "g", "French Oats", shipping_category.name] # Add
|
||||
@@ -402,14 +421,14 @@ describe ProductImport::ProductImporter do
|
||||
csv << ["Bag of Oats", "User Enterprise", "Cereal", "90", "7.50", "500", "g", "Scottish Oats", shipping_category.name] # Add
|
||||
csv << ["Bag of Oats", "User Enterprise", "Cereal", "30", "6.50", "500", "g", "Breakfast Oats", shipping_category.name] # Add
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
it "processes the validation in stages" do
|
||||
# Using settings of start: 1, end: 3 to simulate import over multiple stages
|
||||
@importer = import_data @csv_data, start: 1, end: 3
|
||||
importer = import_data csv_data, start: 1, end: 3
|
||||
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 3
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
@@ -418,10 +437,10 @@ describe ProductImport::ProductImporter do
|
||||
expect(filter('create_inventory', entries)).to eq 0
|
||||
expect(filter('update_inventory', entries)).to eq 0
|
||||
|
||||
@importer = import_data @csv_data, start: 4, end: 6
|
||||
importer = import_data csv_data, start: 4, end: 6
|
||||
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 2
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
@@ -432,23 +451,23 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
it "processes saving in stages" do
|
||||
@importer = import_data @csv_data, start: 1, end: 3
|
||||
@importer.save_entries
|
||||
importer = import_data csv_data, start: 1, end: 3
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 3
|
||||
expect(@importer.products_updated_count).to eq 0
|
||||
expect(@importer.inventory_created_count).to eq 0
|
||||
expect(@importer.inventory_updated_count).to eq 0
|
||||
expect(@importer.updated_ids.count).to eq 3
|
||||
expect(importer.products_created_count).to eq 3
|
||||
expect(importer.products_updated_count).to eq 0
|
||||
expect(importer.inventory_created_count).to eq 0
|
||||
expect(importer.inventory_updated_count).to eq 0
|
||||
expect(importer.updated_ids.count).to eq 3
|
||||
|
||||
@importer = import_data @csv_data, start: 4, end: 6
|
||||
@importer.save_entries
|
||||
importer = import_data csv_data, start: 4, end: 6
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 2
|
||||
expect(@importer.products_updated_count).to eq 0
|
||||
expect(@importer.inventory_created_count).to eq 0
|
||||
expect(@importer.inventory_updated_count).to eq 0
|
||||
expect(@importer.updated_ids.count).to eq 2
|
||||
expect(importer.products_created_count).to eq 2
|
||||
expect(importer.products_updated_count).to eq 0
|
||||
expect(importer.inventory_created_count).to eq 0
|
||||
expect(importer.inventory_updated_count).to eq 0
|
||||
expect(importer.updated_ids.count).to eq 2
|
||||
|
||||
products = Spree::Product.find_all_by_name('Bag of Oats')
|
||||
|
||||
@@ -459,19 +478,19 @@ describe ProductImport::ProductImporter do
|
||||
|
||||
describe "importing items into inventory" do
|
||||
describe "creating and updating inventory" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "distributor", "producer", "on_hand", "price", "units", "unit_type", "variant_unit_name"]
|
||||
csv << ["Beans", "Another Enterprise", "User Enterprise", "5", "3.20", "500", "g", ""]
|
||||
csv << ["Sprouts", "Another Enterprise", "User Enterprise", "6", "6.50", "500", "g", ""]
|
||||
csv << ["Cabbage", "Another Enterprise", "User Enterprise", "2001", "1.50", "1", "", "Whole"]
|
||||
end
|
||||
@importer = import_data csv_data, import_into: 'inventories'
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data, import_into: 'inventories' }
|
||||
|
||||
it "validates entries" do
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 3
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
@@ -480,12 +499,12 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
it "saves and updates inventory" do
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.inventory_created_count).to eq 2
|
||||
expect(@importer.inventory_updated_count).to eq 1
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 3
|
||||
expect(importer.inventory_created_count).to eq 2
|
||||
expect(importer.inventory_updated_count).to eq 1
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 3
|
||||
|
||||
beans_override = VariantOverride.where(variant_id: product2.variants.first.id, hub_id: enterprise2.id).first
|
||||
sprouts_override = VariantOverride.where(variant_id: product3.variants.first.id, hub_id: enterprise2.id).first
|
||||
@@ -503,18 +522,19 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
describe "updating existing inventory referenced by display_name" do
|
||||
before do
|
||||
csv_data = CSV.generate do |csv|
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "display_name", "distributor", "producer", "on_hand", "price", "units"]
|
||||
csv << ["Oats", "Porridge Oats", "Another Enterprise", "User Enterprise", "900", "", "500"]
|
||||
end
|
||||
@importer = import_data csv_data, import_into: 'inventories'
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data, import_into: 'inventories' }
|
||||
|
||||
|
||||
it "updates inventory item correctly" do
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.inventory_created_count).to eq 1
|
||||
expect(importer.inventory_created_count).to eq 1
|
||||
|
||||
override = VariantOverride.where(variant_id: variant2.id, hub_id: enterprise2.id).first
|
||||
visible = InventoryItem.where(variant_id: variant2.id, enterprise_id: enterprise2.id).first.visible
|
||||
@@ -525,20 +545,19 @@ describe ProductImport::ProductImporter do
|
||||
end
|
||||
|
||||
describe "updating existing item that was set to hidden in inventory" do
|
||||
before do
|
||||
InventoryItem.create(variant_id: product4.variants.first.id, enterprise_id: enterprise2.id, visible: false)
|
||||
|
||||
csv_data = CSV.generate do |csv|
|
||||
csv << ["name", "distributor", "producer", "on_hand", "price", "units", "variant_unit_name"]
|
||||
csv << ["Cabbage", "Another Enterprise", "User Enterprise", "900", "", "1", "Whole"]
|
||||
let!(:inventory) { InventoryItem.create(variant_id: product4.variants.first.id, enterprise_id: enterprise2.id, visible: false) }
|
||||
let(:csv_data) {
|
||||
CSV.generate do |csv|
|
||||
csv << ["name", "distributor", "producer", "on_hand", "price", "units", "variant_unit_name"]
|
||||
csv << ["Cabbage", "Another Enterprise", "User Enterprise", "900", "", "1", "Whole"]
|
||||
end
|
||||
@importer = import_data csv_data, import_into: 'inventories'
|
||||
end
|
||||
}
|
||||
let(:importer) { import_data csv_data, import_into: 'inventories' }
|
||||
|
||||
it "sets the item to visible in inventory when the item is updated" do
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.inventory_updated_count).to eq 1
|
||||
expect(importer.inventory_updated_count).to eq 1
|
||||
|
||||
override = VariantOverride.where(variant_id: product4.variants.first.id, hub_id: enterprise2.id).first
|
||||
visible = InventoryItem.where(variant_id: product4.variants.first.id, enterprise_id: enterprise2.id).first.visible
|
||||
@@ -556,20 +575,20 @@ describe ProductImport::ProductImporter do
|
||||
csv << ["My Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", shipping_category.name]
|
||||
csv << ["Your Potatoes", "Another Enterprise", "Vegetables", "6", "6.50", "1", "kg", shipping_category.name]
|
||||
end
|
||||
@importer = import_data csv_data, import_user: user
|
||||
importer = import_data csv_data, import_user: user
|
||||
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 1
|
||||
expect(filter('invalid', entries)).to eq 1
|
||||
expect(filter('create_product', entries)).to eq 1
|
||||
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 1
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 1
|
||||
expect(importer.products_created_count).to eq 1
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 1
|
||||
|
||||
expect(Spree::Product.find_by_name('My Carrots')).to be_a Spree::Product
|
||||
expect(Spree::Product.find_by_name('Your Potatoes')).to eq nil
|
||||
@@ -580,20 +599,20 @@ describe ProductImport::ProductImporter do
|
||||
csv << ["name", "producer", "distributor", "on_hand", "price", "units", "unit_type"]
|
||||
csv << ["Beans", "User Enterprise", "Another Enterprise", "777", "3.20", "500", "g"]
|
||||
end
|
||||
@importer = import_data csv_data, import_into: 'inventories'
|
||||
importer = import_data csv_data, import_into: 'inventories'
|
||||
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 1
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
expect(filter('create_inventory', entries)).to eq 1
|
||||
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.inventory_created_count).to eq 1
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 1
|
||||
expect(importer.inventory_created_count).to eq 1
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 1
|
||||
|
||||
beans = VariantOverride.where(variant_id: product2.variants.first.id, hub_id: enterprise2.id).first
|
||||
expect(beans.count_on_hand).to eq 777
|
||||
@@ -605,20 +624,20 @@ describe ProductImport::ProductImporter do
|
||||
csv << ["Beans", "User Enterprise", "5", "3.20", "500", "g"]
|
||||
csv << ["Sprouts", "User Enterprise", "6", "6.50", "500", "g"]
|
||||
end
|
||||
@importer = import_data csv_data, import_into: 'inventories'
|
||||
importer = import_data csv_data, import_into: 'inventories'
|
||||
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 0
|
||||
expect(filter('invalid', entries)).to eq 2
|
||||
expect(filter('create_inventory', entries)).to eq 0
|
||||
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.inventory_created_count).to eq 0
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 0
|
||||
expect(importer.inventory_created_count).to eq 0
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 0
|
||||
end
|
||||
end
|
||||
|
||||
@@ -629,29 +648,29 @@ describe ProductImport::ProductImporter do
|
||||
csv << ["Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", shipping_category.name]
|
||||
csv << ["Beans", "User Enterprise", "Vegetables", "6", "6.50", "500", "g", shipping_category.name]
|
||||
end
|
||||
@importer = import_data csv_data, reset_all_absent: true
|
||||
importer = import_data csv_data, reset_all_absent: true
|
||||
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 2
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
expect(filter('create_product', entries)).to eq 1
|
||||
expect(filter('update_product', entries)).to eq 1
|
||||
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 1
|
||||
expect(@importer.products_updated_count).to eq 1
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 2
|
||||
expect(importer.products_created_count).to eq 1
|
||||
expect(importer.products_updated_count).to eq 1
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 2
|
||||
|
||||
updated_ids = @importer.updated_ids
|
||||
updated_ids = importer.updated_ids
|
||||
|
||||
@importer = import_data csv_data, reset_all_absent: true, updated_ids: updated_ids, enterprises_to_reset: [enterprise.id]
|
||||
@importer.reset_absent(updated_ids)
|
||||
importer = import_data csv_data, reset_all_absent: true, updated_ids: updated_ids, enterprises_to_reset: [enterprise.id]
|
||||
importer.reset_absent(updated_ids)
|
||||
|
||||
expect(@importer.products_reset_count).to eq 7
|
||||
expect(importer.products_reset_count).to eq 7
|
||||
|
||||
expect(Spree::Product.find_by_name('Carrots').on_hand).to eq 5 # Present in file, added
|
||||
expect(Spree::Product.find_by_name('Beans').on_hand).to eq 6 # Present in file, updated
|
||||
@@ -666,27 +685,25 @@ describe ProductImport::ProductImporter do
|
||||
csv << ["Beans", "Another Enterprise", "User Enterprise", "6", "3.20", "500", "g"]
|
||||
csv << ["Sprouts", "Another Enterprise", "User Enterprise", "7", "6.50", "500", "g"]
|
||||
end
|
||||
@importer = import_data csv_data, import_into: 'inventories', reset_all_absent: true
|
||||
importer = import_data csv_data, import_into: 'inventories', reset_all_absent: true
|
||||
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 2
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
expect(filter('create_inventory', entries)).to eq 2
|
||||
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.inventory_created_count).to eq 2
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 2
|
||||
expect(importer.inventory_created_count).to eq 2
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 2
|
||||
|
||||
updated_ids = @importer.updated_ids
|
||||
updated_ids = importer.updated_ids
|
||||
|
||||
@importer = import_data csv_data, import_into: 'inventories', reset_all_absent: true, updated_ids: updated_ids, enterprises_to_reset: [enterprise2.id]
|
||||
@importer.reset_absent(updated_ids)
|
||||
|
||||
# expect(@importer.products_reset_count).to eq 1
|
||||
importer = import_data csv_data, import_into: 'inventories', reset_all_absent: true, updated_ids: updated_ids, enterprises_to_reset: [enterprise2.id]
|
||||
importer.reset_absent(updated_ids)
|
||||
|
||||
beans = VariantOverride.where(variant_id: product2.variants.first.id, hub_id: enterprise2.id).first
|
||||
sprouts = VariantOverride.where(variant_id: product3.variants.first.id, hub_id: enterprise2.id).first
|
||||
@@ -731,20 +748,20 @@ describe ProductImport::ProductImporter do
|
||||
}
|
||||
} }
|
||||
|
||||
@importer = import_data csv_data, settings: settings
|
||||
importer = import_data csv_data, settings: settings
|
||||
|
||||
@importer.validate_entries
|
||||
entries = JSON.parse(@importer.entries_json)
|
||||
importer.validate_entries
|
||||
entries = JSON.parse(importer.entries_json)
|
||||
|
||||
expect(filter('valid', entries)).to eq 2
|
||||
expect(filter('invalid', entries)).to eq 0
|
||||
expect(filter('create_product', entries)).to eq 2
|
||||
|
||||
@importer.save_entries
|
||||
importer.save_entries
|
||||
|
||||
expect(@importer.products_created_count).to eq 2
|
||||
expect(@importer.updated_ids).to be_a(Array)
|
||||
expect(@importer.updated_ids.count).to eq 2
|
||||
expect(importer.products_created_count).to eq 2
|
||||
expect(importer.updated_ids).to be_a(Array)
|
||||
expect(importer.updated_ids.count).to eq 2
|
||||
|
||||
carrots = Spree::Product.find_by_name('Carrots')
|
||||
expect(carrots.on_hand).to eq 9000
|
||||
|
||||
@@ -585,5 +585,17 @@ module Spree
|
||||
}.to change(Spree::OptionValue, :count).by(0)
|
||||
end
|
||||
end
|
||||
|
||||
describe "when the associated variant is soft-deleted" do
|
||||
let!(:variant) { create(:variant) }
|
||||
let!(:line_item) { create(:line_item, variant: variant) }
|
||||
|
||||
it "returns the associated variant or product" do
|
||||
line_item.variant.delete
|
||||
|
||||
expect(line_item.variant).to eq variant
|
||||
expect(line_item.product).to eq variant.product
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -366,6 +366,8 @@ describe Spree::Order do
|
||||
before do
|
||||
order.add_variant v1
|
||||
order.add_variant v2
|
||||
|
||||
order.update_distribution_charge!
|
||||
end
|
||||
|
||||
it "removes the variant's line item" do
|
||||
@@ -378,6 +380,34 @@ describe Spree::Order do
|
||||
order.remove_variant v3
|
||||
end.to change(order.line_items(:reload), :count).by(0)
|
||||
end
|
||||
|
||||
context "when the item has an associated adjustment" do
|
||||
let(:distributor) { create(:distributor_enterprise) }
|
||||
|
||||
let(:order_cycle) do
|
||||
create(:order_cycle).tap do |record|
|
||||
create(:exchange, variants: [v1], incoming: true)
|
||||
create(:exchange, variants: [v1], incoming: false, receiver: distributor)
|
||||
end
|
||||
end
|
||||
|
||||
let(:order) { create(:order, distributor: distributor, order_cycle: order_cycle) }
|
||||
|
||||
it "removes the variant's line item" do
|
||||
order.remove_variant v1
|
||||
expect(order.line_items(:reload).map(&:variant)).to eq([v2])
|
||||
end
|
||||
|
||||
it "removes the variant's adjustment" do
|
||||
line_item = order.line_items.where(variant_id: v1.id).first
|
||||
adjustment_scope = Spree::Adjustment.where(source_type: "Spree::LineItem",
|
||||
source_id: line_item.id)
|
||||
expect(adjustment_scope.count).to eq(1)
|
||||
adjustment = adjustment_scope.first
|
||||
order.remove_variant v1
|
||||
expect { adjustment.reload }.to raise_error
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "emptying the order" do
|
||||
|
||||
Reference in New Issue
Block a user