mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Merge branch 'master' into 2-0-stable-Mar29
This commit is contained in:
@@ -301,7 +301,6 @@ Metrics/LineLength:
|
||||
- spec/lib/open_food_network/order_cycle_form_applicator_spec.rb
|
||||
- spec/lib/open_food_network/order_cycle_permissions_spec.rb
|
||||
- spec/lib/open_food_network/order_grouper_spec.rb
|
||||
- spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb
|
||||
- spec/lib/open_food_network/packing_report_spec.rb
|
||||
- spec/lib/open_food_network/permissions_spec.rb
|
||||
- spec/lib/open_food_network/products_and_inventory_report_spec.rb
|
||||
|
||||
@@ -703,7 +703,6 @@ Layout/SpaceInsideBlockBraces:
|
||||
- 'spec/helpers/spree/orders_helper_spec.rb'
|
||||
- 'spec/lib/open_food_network/order_cycle_form_applicator_spec.rb'
|
||||
- 'spec/lib/open_food_network/order_grouper_spec.rb'
|
||||
- 'spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/products_renderer_spec.rb'
|
||||
- 'spec/lib/open_food_network/tag_rule_applicator_spec.rb'
|
||||
- 'spec/models/column_preference_spec.rb'
|
||||
@@ -1033,7 +1032,6 @@ Lint/Void:
|
||||
- 'spec/lib/open_food_network/enterprise_fee_calculator_spec.rb'
|
||||
- 'spec/lib/open_food_network/enterprise_issue_validator_spec.rb'
|
||||
- 'spec/lib/open_food_network/group_buy_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/packing_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/reports/report_spec.rb'
|
||||
- 'spec/lib/open_food_network/reports/rule_spec.rb'
|
||||
@@ -1923,7 +1921,6 @@ Style/MixinUsage:
|
||||
- 'spec/features/admin/orders_spec.rb'
|
||||
- 'spec/lib/open_food_network/bulk_coop_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/order_cycle_management_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb'
|
||||
- 'spec/lib/open_food_network/packing_report_spec.rb'
|
||||
|
||||
# Offense count: 4
|
||||
|
||||
2
Gemfile
2
Gemfile
@@ -27,7 +27,7 @@ gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: '2-0-stable'
|
||||
# - Pass customer email and phone number to PayPal (merged to upstream master)
|
||||
# - Change type of password from string to password to hide it in the form
|
||||
gem 'spree_paypal_express', github: "openfoodfoundation/better_spree_paypal_express", branch: "2-0-stable"
|
||||
gem 'stripe', '~> 4.9.0'
|
||||
gem 'stripe', '~> 4.11.0'
|
||||
|
||||
# We need at least this version to have Digicert's root certificate
|
||||
# which is needed for Pin Payments (and possibly others).
|
||||
|
||||
@@ -553,7 +553,7 @@ GEM
|
||||
multi_json (~> 1.3)
|
||||
multi_xml (~> 0.5)
|
||||
rack (>= 1.2, < 3)
|
||||
oj (3.7.10)
|
||||
oj (3.7.11)
|
||||
orm_adapter (0.5.0)
|
||||
paper_trail (5.2.3)
|
||||
activerecord (>= 3.0, < 6.0)
|
||||
@@ -721,7 +721,7 @@ GEM
|
||||
tilt (~> 1.1, != 1.3.0)
|
||||
state_machine (1.2.0)
|
||||
stringex (1.5.1)
|
||||
stripe (4.9.0)
|
||||
stripe (4.11.0)
|
||||
faraday (~> 0.13)
|
||||
net-http-persistent (~> 3.0)
|
||||
therubyracer (0.12.0)
|
||||
@@ -860,7 +860,7 @@ DEPENDENCIES
|
||||
spree_paypal_express!
|
||||
spring (= 1.7.2)
|
||||
spring-commands-rspec
|
||||
stripe (~> 4.9.0)
|
||||
stripe (~> 4.11.0)
|
||||
therubyracer (= 0.12.0)
|
||||
timecop
|
||||
truncate_html
|
||||
|
||||
@@ -30,7 +30,7 @@ Spree::Admin::VariantsController.class_eval do
|
||||
|
||||
respond_with(@variant) do |format|
|
||||
format.html { redirect_to admin_product_variants_url(params[:product_id]) }
|
||||
format.js { render_js_for_destroy }
|
||||
format.js { render_js_for_destroy }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
5
app/models/concerns/address_display.rb
Normal file
5
app/models/concerns/address_display.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
module AddressDisplay
|
||||
def full_name_reverse
|
||||
[lastname, firstname].reject(&:blank?).join(" ")
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Spree::Address.class_eval do
|
||||
include AddressDisplay
|
||||
|
||||
has_one :enterprise, dependent: :restrict
|
||||
belongs_to :country, class_name: "Spree::Country"
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
%p
|
||||
= t('.welcome_text')
|
||||
%strong
|
||||
= "#{"producer " if @enterprise.is_primary_producer}profile"
|
||||
- profile_translation_key = @enterprise.is_primary_producer ? '.producer_profile' : '.profile'
|
||||
= t(profile_translation_key)
|
||||
|
||||
%section
|
||||
%h2= t('.next_step')
|
||||
|
||||
@@ -2558,63 +2558,216 @@ de_DE:
|
||||
reports:
|
||||
enterprise_fee_summary:
|
||||
date_end_before_start_error: "muss nach dem start sein"
|
||||
parameter_not_allowed_error: "Sie sind nicht berechtigt, einen oder mehrere ausgewählte Filter für diesen Bericht zu verwenden."
|
||||
fee_calculated_on_transfer_through_all: "Alle"
|
||||
fee_calculated_on_transfer_through_entire_orders: "Gesamte Bestellungen über %{distributor}"
|
||||
tax_category_various: "Verschiedene"
|
||||
fee_type:
|
||||
payment_method: "Zahlungsvorgang"
|
||||
shipping_method: "Sendung"
|
||||
fee_placements:
|
||||
supplier: "Eingehend"
|
||||
distributor: "Ausgehend"
|
||||
coordinator: "Koordinator"
|
||||
tax_category_name:
|
||||
shipping_instance_rate: "Plattformpreis"
|
||||
formats:
|
||||
csv:
|
||||
header:
|
||||
fee_type: "Art der Gebühr"
|
||||
enterprise_name: "Unternehmensinhaber"
|
||||
fee_name: "Name der Gebühr"
|
||||
customer_name: "Kunde"
|
||||
fee_placement: "Gebührenplatzierung"
|
||||
fee_calculated_on_transfer_through_name: "Gebührenberechnung bei Übergabe"
|
||||
tax_category_name: "Steuerkategorie"
|
||||
total_amount: "$$ SUMME"
|
||||
html:
|
||||
header:
|
||||
fee_type: "Art der Gebühr"
|
||||
enterprise_name: "Unternehmensinhaber"
|
||||
fee_name: "Name der Gebühr"
|
||||
customer_name: "Kunde"
|
||||
fee_placement: "Gebührenplatzierung"
|
||||
fee_calculated_on_transfer_through_name: "Gebührenberechnung bei Übergabe"
|
||||
tax_category_name: "Steuerkategorie"
|
||||
total_amount: "$$ SUMME"
|
||||
invalid_filter_parameters: "Die für diesen Bericht ausgewählten Filter sind ungültig."
|
||||
order: "Bestellung"
|
||||
distribution: "Verteilung"
|
||||
order_details: "Bestelldetails"
|
||||
customer_details: "Kundendetails"
|
||||
adjustments: "Anpassungen"
|
||||
payments: "Zahlungen"
|
||||
payment: "Zahlung"
|
||||
payment_method: "Zahlungsart"
|
||||
shipment: "Sendung"
|
||||
shipment_inc_vat: "Versand inklusive Mehrwertsteuer"
|
||||
shipping_tax_rate: "Versandsteuersatz"
|
||||
category: "Kategorie"
|
||||
delivery: "Lieferung"
|
||||
temperature_controlled: "Temperaturgesteuert"
|
||||
new_product: "Neues Produkt"
|
||||
administration: "Verwaltung"
|
||||
logged_in_as: "Eingeloggt als"
|
||||
account: "Konto"
|
||||
logout: "Ausloggen"
|
||||
date_range: "Datumsbereich"
|
||||
status: "Status"
|
||||
new: "Neu"
|
||||
start: "Start"
|
||||
stop: "Halt"
|
||||
first: "Zuerst"
|
||||
previous: "Bisherige"
|
||||
last: "Zuletzt"
|
||||
spree:
|
||||
your_order_is_empty_add_product: "Ihre Bestellung ist leer. Suchen Sie oben ein Produkt und fügen Sie es hinzu"
|
||||
add_product: "Produkt hinzufügen"
|
||||
name_or_sku: "Name oder SKU (geben Sie mindestens die ersten 4 Zeichen des Produktnamens ein)"
|
||||
resend: Erneut senden
|
||||
back_to_orders_list: Zurück zur Bestellliste
|
||||
select_stock: "Bestand auswählen"
|
||||
location: "Ort"
|
||||
count_on_hand: "Zählen Sie zur Hand"
|
||||
quantity: "Menge"
|
||||
package_from: "Paket von"
|
||||
item_description: "Artikelbeschreibung"
|
||||
price: "Preis"
|
||||
total: "Gesamt"
|
||||
edit: "Bearbeiten"
|
||||
split: "Teilt"
|
||||
delete: "Löschen"
|
||||
cannot_set_shipping_method_without_address: "Versandart kann nicht festgelegt werden, bis Kundendaten angegeben werden."
|
||||
no_tracking_present: "Keine Tracking-Details angegeben."
|
||||
order_total: "Auftrag insgesamt"
|
||||
customer_details: "Kundendetails"
|
||||
customer_search: "Kundensuche"
|
||||
choose_a_customer: "Wählen Sie einen Kunden aus"
|
||||
account: "Konto"
|
||||
billing_address: "Rechnungsadresse"
|
||||
shipping_address: "Lieferanschrift"
|
||||
first_name: "Vorname"
|
||||
last_name: "Nachname"
|
||||
street_address: "Adresse"
|
||||
street_address_2: "Straße (Fortsetzung)"
|
||||
city: "Ort"
|
||||
zip: "Postleitzahl"
|
||||
country: "Land"
|
||||
state: "Status"
|
||||
phone: "Telefon"
|
||||
update: "Aktualisieren"
|
||||
use_billing_address: "Rechnungsadresse verwenden"
|
||||
adjustments: "Anpassungen"
|
||||
continue: "Fortsetzen"
|
||||
fill_in_customer_info: "Bitte geben Sie Ihre Kundeninformationen ein"
|
||||
new_payment: "Neue Zahlung"
|
||||
configurations: "Konfigurationen"
|
||||
general_settings: "Allgemeine Einstellungen"
|
||||
site_name: "Site-Name"
|
||||
site_url: "Seiten-URL"
|
||||
default_seo_title: "Standard-Seo-Titel"
|
||||
default_meta_description: "Standard-Meta-Beschreibung"
|
||||
default_meta_keywords: "Standard-Metaschlüsselwörter"
|
||||
security_settings: "Sicherheitseinstellungen"
|
||||
allow_ssl_in_development_and_test: "Erlauben Sie SSL in Entwicklungs- und Testmodi"
|
||||
allow_ssl_in_production: "Zulassen, dass SSL im Produktionsmodus verwendet wird"
|
||||
allow_ssl_in_staging: "Zulassen, dass SSL im Staging-Modus verwendet wird"
|
||||
check_for_spree_alerts: "Suchen Sie nach Spree-Benachrichtigungen"
|
||||
currency_decimal_mark: "Dezimalzeichen der Währung"
|
||||
currency_settings: "Währungseinstellungen"
|
||||
currency_symbol_position: Setzen Sie "Währungssymbol vor oder nach dem Dollarbetrag?"
|
||||
currency_thousands_separator: "Tausendertrennzeichen der Währung"
|
||||
hide_cents: "Cent ausblenden"
|
||||
display_currency: "Währung anzeigen"
|
||||
choose_currency: "Währung wählen"
|
||||
mail_method_settings: "E-Mail-Methodeneinstellungen"
|
||||
general: "Allgemeines"
|
||||
enable_mail_delivery: "Aktivieren Sie die E-Mail-Zustellung"
|
||||
send_mails_as: "Mails senden als"
|
||||
smtp_send_all_emails_as_from_following_address: "Senden Sie alle E-Mails von der folgenden Adresse aus."
|
||||
send_copy_of_all_mails_to: "Kopie aller Mails an senden"
|
||||
smtp_send_copy_to_this_addresses: "Sendet eine Kopie aller ausgehenden Mails an diese Adresse. Bei mehreren Adressen trennen Sie diese durch Kommas."
|
||||
intercept_email_address: "E-Mail-Adresse abfangen"
|
||||
intercept_email_instructions: "Überschreiben Sie den E-Mail-Empfänger und ersetzen Sie ihn mit dieser Adresse."
|
||||
smtp: "SMTP"
|
||||
smtp_domain: "SMTP-Domäne"
|
||||
smtp_mail_host: "SMTP-Mail-Host"
|
||||
smtp_port: "SMTP-Port"
|
||||
secure_connection_type: "Sicherer Verbindungstyp"
|
||||
smtp_authentication_type: "SMTP-Authentifizierungstyp"
|
||||
smtp_username: "SMTP-Benutzername"
|
||||
smtp_password: "SMTP-Passwort"
|
||||
image_settings: "Bildeinstellungen"
|
||||
image_settings_warning: "Sie müssen die Miniaturbilder neu erstellen, wenn Sie die Büroklammerformate aktualisieren. Verwenden Sie dazu die Rake-Büroklammer: Refresh: thumbnails CLASS = Spree :: Image."
|
||||
attachment_default_style: Anhänge-Stil
|
||||
attachment_default_url: "Anhänge Standard-URL"
|
||||
attachment_path: "Pfad der Anhänge"
|
||||
attachment_styles: "Büroklammer-Stile"
|
||||
attachment_url: "Anhänge-URL"
|
||||
add_new_style: "Neuen Stil hinzufügen"
|
||||
image_settings_updated: "Bildeinstellungen erfolgreich aktualisiert."
|
||||
tax_categories: "Steuerkategorien"
|
||||
listing_tax_categories: "Steuerkategorien auflisten"
|
||||
back_to_tax_categories_list: "Zurück zur Liste der Steuerkategorien"
|
||||
tax rate: "Steuersätze"
|
||||
new_tax_rate: "Neuer Steuersatz"
|
||||
tax_category: "Steuerkategorie"
|
||||
rate: "Bewertung"
|
||||
tax_rate_amount_explanation: "Steuersätze sind ein Dezimalbetrag für Berechnungshilfen (d. H. Wenn der Steuersatz 5% beträgt, geben Sie 0,05 ein)."
|
||||
included_in_price: "Im Preis inbegriffen"
|
||||
show_rate_in_label: "Rate im Etikett anzeigen"
|
||||
back_to_tax_rates_list: "Zurück zur Liste der Steuersätze"
|
||||
tax_settings: "Steuereinstellungen"
|
||||
zones: "Zonen"
|
||||
new_zone: "Neue Zone"
|
||||
default_tax: "Standardsteuer"
|
||||
default_tax_zone: "Standardsteuerzone"
|
||||
country_based: "Land basiert"
|
||||
state_based: "State Based"
|
||||
countries: "Länder"
|
||||
listing_countries: "Länder auflisten"
|
||||
iso_name: "ISO-Name"
|
||||
states_required: "Staaten erforderlich"
|
||||
editing_country: "Land bearbeiten"
|
||||
back_to_countries_list: "Zurück zur Länderliste"
|
||||
states: "Zustände"
|
||||
abbreviation: "Abkürzung"
|
||||
new_state: "Neuer Staat"
|
||||
payment_methods: "Zahlungsarten"
|
||||
new_payment_method: "Neue Zahlungsart"
|
||||
provider: "Anbieter"
|
||||
taxonomies: "Taxonomien"
|
||||
new_taxonomy: "Neue Taxonomie"
|
||||
back_to_taxonomies_list: "Zurück zur Taxonomieliste"
|
||||
shipping_methods: "Lieferart"
|
||||
shipping_categories: "Versandkategorien"
|
||||
new_shipping_category: "Neue Versandkategorie"
|
||||
back_to_shipping_categories: "Zurück zu den Versandkategorien"
|
||||
analytics_trackers: "Analytics-Tracker"
|
||||
no_trackers_found: "Keine Tracker gefunden"
|
||||
new_tracker: "Neuer Tracker"
|
||||
add_one: "Füge eins hinzu"
|
||||
google_analytics_id: "Analytics-ID"
|
||||
back_to_trackers_list: "Zurück zur Trackers-Liste"
|
||||
name: "Name"
|
||||
description: "Beschreibung"
|
||||
type: "Art"
|
||||
default: "Standard"
|
||||
calculator: "Rechner"
|
||||
zone: "Zone"
|
||||
display: "Anzeige"
|
||||
environment: "Umgebung"
|
||||
active: "Aktiv"
|
||||
nore: "Mehr"
|
||||
no_results: "Keine Ergebnisse"
|
||||
create: "Neu"
|
||||
loading: "Wird geladen"
|
||||
email: Email
|
||||
account_updated: "Konto aktualisiert!"
|
||||
my_account: "Mein Konto"
|
||||
date: "Datum"
|
||||
time: "Zeit"
|
||||
inventory_error_flash_for_insufficient_quantity: "Ein Artikel in Ihrem Warenkorb ist nicht mehr verfügbar."
|
||||
inventory: Katalog
|
||||
zipcode: Postleitzahl
|
||||
weight: Gewicht (pro kg)
|
||||
@@ -2634,12 +2787,17 @@ de_DE:
|
||||
bulk_order_management: "Massenbearbeitung von Bestellungen"
|
||||
subscriptions: "Abonnements"
|
||||
products: "Produkte"
|
||||
option_types: "Optionstypen"
|
||||
properties: "Eigenschaften"
|
||||
prototypes: "Prototypen"
|
||||
variant_overrides: "Katalog"
|
||||
reports: "Berichte"
|
||||
configuration: "Aufbau"
|
||||
users: "Benutzer"
|
||||
roles: "Rollen"
|
||||
order_cycles: "Bestellrunden"
|
||||
enterprises: "Unternehmen"
|
||||
enterprise_relationships: "Berechtigungen"
|
||||
customers: "Kunden"
|
||||
groups: "Gruppen"
|
||||
product_properties:
|
||||
@@ -2681,6 +2839,11 @@ de_DE:
|
||||
distributor: "Verteiler:"
|
||||
order_cycle: "Bestellzyklus:"
|
||||
overview:
|
||||
products:
|
||||
active_products:
|
||||
zero: "Sie haben keine aktiven Produkte."
|
||||
one: "Sie haben ein aktives Produkt"
|
||||
other: "Sie haben %{count} aktive Produkte"
|
||||
order_cycles:
|
||||
order_cycles: "Bestellrunden"
|
||||
order_cycles_tip: "Bestellzyklen bestimmen, wann und wo Ihre Produkte für Kunden verfügbar sind."
|
||||
@@ -2755,8 +2918,13 @@ de_DE:
|
||||
bulk_coop_packing_sheets: 'Massenkoop - Verpackungsblätter'
|
||||
bulk_coop_customer_payments: 'Massenkoop - Kundenzahlungen'
|
||||
enterprise_fee_summaries:
|
||||
filters:
|
||||
date_range: "Datumsbereich"
|
||||
report_format_csv: "Als CSV herunterladen"
|
||||
generate_report: "Bericht generieren"
|
||||
report:
|
||||
none: "Keine"
|
||||
select_and_search: "Wählen Sie Filter aus und klicken Sie auf GENERATE REPORT, um auf Ihre Daten zuzugreifen."
|
||||
users:
|
||||
index:
|
||||
listing_users: "Benutzer auflisten"
|
||||
@@ -2765,10 +2933,15 @@ de_DE:
|
||||
enterprise_limit: "Enterprise Limit"
|
||||
search: "Suche"
|
||||
email: "E-Mail"
|
||||
edit:
|
||||
editing_user: "Benutzer bearbeiten"
|
||||
back_to_users_list: "Zurück zur Benutzerliste"
|
||||
general_settings: "Allgemeine Einstellungen"
|
||||
form:
|
||||
email: "E-Mail"
|
||||
roles: "Rollen"
|
||||
enterprise_limit: "Enterprise Limit"
|
||||
confirm_password: "Passwort bestätigen"
|
||||
password: "Passwort"
|
||||
email_confirmation:
|
||||
confirmation_pending: "E-Mail-Bestätigung steht aus. Wir haben eine Bestätigungs-E-Mail an %{address} gesendet."
|
||||
@@ -2802,6 +2975,7 @@ de_DE:
|
||||
item: "Bereits in dieser Reihenfolge bestellt"
|
||||
line_item:
|
||||
insufficient_stock: "Nicht genügend Lagerbestand verfügbar, nur noch %{on_hand} verfügbar"
|
||||
out_of_stock: "Ausverkauft"
|
||||
shipment_states:
|
||||
backorder: Lieferrückstand
|
||||
partial: teilweise
|
||||
|
||||
@@ -855,6 +855,8 @@ en:
|
||||
welcome_text: You have successfully created a
|
||||
next_step: Next step
|
||||
choose_starting_point: 'Choose your package:'
|
||||
profile: 'Profile'
|
||||
producer_profile: 'Producer Profile'
|
||||
invite_manager:
|
||||
user_already_exists: "User already exists"
|
||||
error: "Something went wrong"
|
||||
@@ -2531,6 +2533,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
pending: "pending"
|
||||
ready: "ready"
|
||||
shipped: "shipped"
|
||||
canceled: "cancelled"
|
||||
payment_states:
|
||||
balance_due: "balance due"
|
||||
completed: "completed"
|
||||
|
||||
@@ -242,6 +242,8 @@ en_CA:
|
||||
quantity: Quantity
|
||||
pick_up: Pick up
|
||||
copy: Copy
|
||||
change_my_password: "Change my password"
|
||||
update_password: "Update passord"
|
||||
password_confirmation: Password Confirmation
|
||||
reset_password_token: Reset password token
|
||||
expired: has expired, please request a new one
|
||||
@@ -371,6 +373,7 @@ en_CA:
|
||||
status: "Status"
|
||||
diff: "Diff"
|
||||
error: "Error"
|
||||
enable_products_cache: "Enable Products Cache?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Invoice Settings
|
||||
@@ -1234,6 +1237,7 @@ en_CA:
|
||||
no_shipping_or_payment: no shipping or payment methods
|
||||
unconfirmed: unconfirmed
|
||||
days: days
|
||||
authorization_failure: "Authorization Failure"
|
||||
label_shop: "Shop"
|
||||
label_shops: "Shops"
|
||||
label_map: "Map"
|
||||
@@ -1609,6 +1613,7 @@ en_CA:
|
||||
products_available: Available?
|
||||
products_producer: "Producer"
|
||||
products_price: "Price"
|
||||
name_or_sku: "NAME OR SKU"
|
||||
register_title: Register
|
||||
sell_title: "Register"
|
||||
sell_headline: "Get on the Open Food Network!"
|
||||
@@ -1666,6 +1671,7 @@ en_CA:
|
||||
orders_bought_edit_button: Edit confirmed items
|
||||
orders_bought_already_confirmed: "* already confirmed"
|
||||
orders_confirm_cancel: Are you sure you want to cancel this order?
|
||||
order_processed_successfully: "Your order has been processed successfully"
|
||||
products_cart_distributor_choice: "Distributor for your order:"
|
||||
products_cart_distributor_change: "Your distributor for this order will be changed to %{name} if you add this product to your cart."
|
||||
products_cart_distributor_is: "Your distributor for this order is %{name}."
|
||||
@@ -1746,11 +1752,13 @@ en_CA:
|
||||
registration_about_us: "'About Us' text"
|
||||
registration_outcome_headline: "What do I get?"
|
||||
registration_outcome1_html: "Your profile helps people <strong>find</strong> and <strong>contact</strong> you on the Open Food Network."
|
||||
registration_outcome2: "Use this space to tell the story of your enterprise, to help drive connections to your social and online presence. "
|
||||
registration_outcome3: "It's also the first step towards trading on the Open Food Network, or opening an online store."
|
||||
registration_action: "Let's get started!"
|
||||
details:
|
||||
title: "Details"
|
||||
headline: "Let's Get Started"
|
||||
enterprise: "Great! First we need to know a little bit about your enterprise:"
|
||||
producer: "Woot! First we need to know a little bit about your farm:"
|
||||
enterprise_name_field: "Enterprise Name:"
|
||||
producer_name_field: "Farm Name:"
|
||||
@@ -1792,6 +1800,7 @@ en_CA:
|
||||
title: "About"
|
||||
headline: "Nice one!"
|
||||
message: "Now let's flesh out the details about"
|
||||
success: "Success! %{enterprise} added to the Open Food Network "
|
||||
registration_exit_message: "If you exit this wizard at any stage, you can continue to create your profile by going to the admin interface."
|
||||
enterprise_description: "Short Description"
|
||||
enterprise_description_placeholder: "A short sentence describing your enterprise"
|
||||
@@ -1887,6 +1896,10 @@ en_CA:
|
||||
ok: OK
|
||||
not_visible: not visible
|
||||
you_have_no_orders_yet: "You have no orders yet"
|
||||
show_only_complete_orders: "Only show completed orders"
|
||||
successfully_created: '%{resource}has been successfully created!'
|
||||
successfully_removed: '%{resource}has been successfully removed!'
|
||||
successfully_updated: '%{resource}has been successfully updated!'
|
||||
running_balance: "Running balance"
|
||||
outstanding_balance: "Outstanding balance"
|
||||
admin_enterprise_relationships: "Enterprise Permissions"
|
||||
@@ -2222,6 +2235,8 @@ en_CA:
|
||||
shipping_methods: "Shipping Methods"
|
||||
payment_methods: "Payment Methods"
|
||||
payment_method_fee: "Transaction fee"
|
||||
payment_processing_failed: "Payment could not be processed, please check the details you entered."
|
||||
payment_updated: "Payment Updated"
|
||||
inventory_settings: "Inventory Settings"
|
||||
tag_rules: "Tag Rules"
|
||||
shop_preferences: "Shop Preferences"
|
||||
@@ -2458,6 +2473,7 @@ en_CA:
|
||||
sending: "Resend..."
|
||||
done: "Resend done ✓"
|
||||
failed: "Resend failed ✗"
|
||||
insufficient_stock: "Insufficient stock available, only %{on_hand} remaining"
|
||||
out_of_stock:
|
||||
reduced_stock_available: Reduced stock available
|
||||
out_of_stock_text: >
|
||||
@@ -2574,50 +2590,171 @@ en_CA:
|
||||
invalid_filter_parameters: "The filters you selected for this report are invalid."
|
||||
order: "Order"
|
||||
distribution: "Distribution"
|
||||
order_details: "Order Details"
|
||||
customer_details: "Customer Details"
|
||||
adjustments: "Adjustments"
|
||||
payments: "Payments"
|
||||
payment: "Payment"
|
||||
payment_method: "Payment Method"
|
||||
shipment: "Shipment"
|
||||
shipment_inc_vat: "Shipment including taxes"
|
||||
shipping_tax_rate: "Shipping Tax Rate"
|
||||
category: "Category"
|
||||
delivery: "Delivery"
|
||||
temperature_controlled: "Temperature Controlled"
|
||||
new_product: "New Product"
|
||||
administration: "Administration"
|
||||
logged_in_as: "Logged in as"
|
||||
account: "Account"
|
||||
logout: "Logout"
|
||||
date_range: "Date Range"
|
||||
status: "status"
|
||||
new: "New"
|
||||
start: "Start"
|
||||
stop: "Stop"
|
||||
first: "First"
|
||||
previous: "Previous"
|
||||
last: "Last"
|
||||
spree:
|
||||
your_order_is_empty_add_product: "Your order is empty, please search for and add a product above"
|
||||
add_product: "Add Product"
|
||||
name_or_sku: "Name or SKU (enter at least first 4 characters of product name)"
|
||||
resend: Resend
|
||||
back_to_orders_list: Back to Orders List
|
||||
select_stock: "Select stock"
|
||||
location: "Location"
|
||||
count_on_hand: "Count On Hand"
|
||||
quantity: "Quantity"
|
||||
package_from: "package from"
|
||||
item_description: "Item Description"
|
||||
price: "Price"
|
||||
total: "Total"
|
||||
edit: "Edit"
|
||||
split: "Split"
|
||||
delete: "Delete"
|
||||
cannot_set_shipping_method_without_address: "Cannot set shipping method until customer details are provided."
|
||||
no_tracking_present: "No tracking details provided."
|
||||
order_total: "Order Total"
|
||||
customer_details: "Customer Details"
|
||||
customer_search: "Customer Search"
|
||||
choose_a_customer: "Choose a customer"
|
||||
account: "Account"
|
||||
billing_address: "Billing Address"
|
||||
shipping_address: "Shipping Address"
|
||||
first_name: "First name"
|
||||
last_name: "Last name"
|
||||
street_address: "Street Address"
|
||||
street_address_2: "Street Address (cont'd)"
|
||||
city: "City"
|
||||
zip: "Postal Code"
|
||||
country: "Country"
|
||||
state: "Province"
|
||||
phone: "Phone"
|
||||
update: "Update"
|
||||
use_billing_address: "Use Billing Address"
|
||||
adjustments: "Adjustments"
|
||||
continue: "Continue"
|
||||
fill_in_customer_info: "Please fill in customer info"
|
||||
new_payment: "New Payment"
|
||||
configurations: "Configurations"
|
||||
general_settings: "General Settings"
|
||||
site_name: "Site Name"
|
||||
site_url: "Site URL"
|
||||
default_seo_title: "Default Seo Title"
|
||||
default_meta_description: "Default Meta Description"
|
||||
default_meta_keywords: "Default Meta Keywords"
|
||||
security_settings: "Security Settings"
|
||||
allow_ssl_in_development_and_test: "Allow SSL to be used when in development and test modes"
|
||||
allow_ssl_in_production: "Allow SSL to be used in production mode"
|
||||
allow_ssl_in_staging: "Allow SSL to be used in staging mode"
|
||||
check_for_spree_alerts: "Check for Spree alerts"
|
||||
currency_decimal_mark: "Currency decimal mark"
|
||||
currency_settings: "Currency Settings"
|
||||
currency_symbol_position: Put "currency symbol before or after dollar amount?"
|
||||
currency_thousands_separator: "Currency thousands separator"
|
||||
hide_cents: "Hide cents"
|
||||
display_currency: "Display currency"
|
||||
choose_currency: "Choose Currency"
|
||||
mail_method_settings: "Mail Method Settings"
|
||||
general: "General"
|
||||
enable_mail_delivery: "Enable Mail Delivery"
|
||||
send_mails_as: "Send Mails As"
|
||||
smtp_send_all_emails_as_from_following_address: "Send all mails from the following address"
|
||||
send_copy_of_all_mails_to: "Send copy of all mails to"
|
||||
smtp_send_copy_to_this_addresses: "Sends a copy of all outgoing mails to this address. For multiple addresses, separate with commas."
|
||||
intercept_email_address: "Intercept Email Address"
|
||||
intercept_email_instructions: "Override email recipient and replace with this address."
|
||||
smtp: "SMTP"
|
||||
smtp_domain: "SMTP Domain"
|
||||
smtp_mail_host: "SMTP Mail Host"
|
||||
smtp_port: "SMTP Port"
|
||||
secure_connection_type: "Secure Connection Type"
|
||||
smtp_authentication_type: "SMTP Authentication Type"
|
||||
smtp_username: "SMTP Username"
|
||||
smtp_password: "SMTP Password"
|
||||
image_settings: "Image Settings"
|
||||
image_settings_warning: "You will need to regenerate thumbnails if you update the paperclip styles. Use rake paperclip:refresh:thumbnails CLASS=Spree::Image to do this."
|
||||
attachment_default_style: Attachments Style
|
||||
attachment_default_url: "Attachments Default URL"
|
||||
attachment_path: "Attachments Path"
|
||||
attachment_styles: "Paperclip Styles"
|
||||
attachment_url: "Attachments URL"
|
||||
add_new_style: "Add New Style"
|
||||
image_settings_updated: "Image settings successfully updated"
|
||||
tax_categories: "Tax Categories"
|
||||
listing_tax_categories: "Listing Tax Categories"
|
||||
back_to_tax_categories_list: "Back to Tax Categories List"
|
||||
tax rate: "Tax Rates"
|
||||
new_tax_rate: "New Tax Rate"
|
||||
tax_category: "Tax Category"
|
||||
rate: "Rate"
|
||||
tax_rate_amount_explanation: "Tax rates are a decimal amount to aid in calcuations, (i.e. if the tax rate is 5% then enter 0.05)"
|
||||
included_in_price: "Included in Price"
|
||||
show_rate_in_label: "Show rate in label"
|
||||
back_to_tax_rates_list: "Back to Tax Rates List"
|
||||
tax_settings: "Tax Settings"
|
||||
zones: "Zones"
|
||||
new_zone: "New Zone"
|
||||
default_tax: "Default Tax"
|
||||
default_tax_zone: "Default Tax Zone"
|
||||
country_based: "Country Based"
|
||||
state_based: "State/Provinces Based"
|
||||
countries: "Countries"
|
||||
listing_countries: "Listing Countries"
|
||||
iso_name: "ISO Name"
|
||||
states_required: "Provinces Required"
|
||||
editing_country: "Editing Country"
|
||||
back_to_countries_list: "Back to Countries List"
|
||||
states: "Provinces"
|
||||
abbreviation: "Abbreviation"
|
||||
new_state: "New Province"
|
||||
payment_methods: "Payment Methods"
|
||||
new_payment_method: "New Payment Method"
|
||||
provider: "Provider"
|
||||
taxonomies: "Taxonomies"
|
||||
new_taxonomy: "New Taxonomy"
|
||||
back_to_taxonomies_list: "Back to Taxonomies List"
|
||||
shipping_methods: "Delivery/Pick-up Methods"
|
||||
shipping_categories: "Shipping Categories"
|
||||
new_shipping_category: "New Shipping Category"
|
||||
back_to_shipping_categories: "Back to Shipping Categories"
|
||||
analytics_trackers: "Analytics Trackers"
|
||||
no_trackers_found: "No Trackers Found"
|
||||
new_tracker: "New Tracker"
|
||||
add_one: "Add One"
|
||||
google_analytics_id: "Analytics ID"
|
||||
back_to_trackers_list: "Back to Trackers List"
|
||||
name: "Name"
|
||||
description: "Description"
|
||||
type: "Type"
|
||||
default: "default"
|
||||
calculator: "Calculator"
|
||||
zone: "Zone"
|
||||
display: "Display"
|
||||
environment: "Environment"
|
||||
active: "Active"
|
||||
nore: "More"
|
||||
no_results: "No results"
|
||||
create: "Create"
|
||||
loading: "Loading"
|
||||
email: Email
|
||||
@@ -2625,6 +2762,7 @@ en_CA:
|
||||
my_account: "My account"
|
||||
date: "Date"
|
||||
time: "Time"
|
||||
inventory_error_flash_for_insufficient_quantity: "An item in your cart has become unavailable"
|
||||
inventory: Inventory
|
||||
zipcode: Postal Code
|
||||
weight: Weight (per kg)
|
||||
@@ -2644,13 +2782,17 @@ en_CA:
|
||||
bulk_order_management: "Bulk Order Management"
|
||||
subscriptions: "Subscriptions"
|
||||
products: "Products"
|
||||
option_types: "Option Types"
|
||||
properties: "Properties"
|
||||
prototypes: "Prototypes"
|
||||
variant_overrides: "Inventory"
|
||||
reports: "Reports"
|
||||
configuration: "Configuration"
|
||||
users: "Users"
|
||||
roles: "Roles"
|
||||
order_cycles: "Order Cycles"
|
||||
enterprises: "Enterprises"
|
||||
enterprise_relationships: "Permissions"
|
||||
customers: "Customers"
|
||||
groups: "Groups"
|
||||
product_properties:
|
||||
@@ -2826,6 +2968,9 @@ en_CA:
|
||||
login_to_view_order: "Please log in to view your order."
|
||||
bought:
|
||||
item: "Already ordered in this order cycle"
|
||||
line_item:
|
||||
insufficient_stock: "Insufficient stock available, only %{on_hand} remaining"
|
||||
out_of_stock: "Out of Stock"
|
||||
shipment_states:
|
||||
backorder: backorder
|
||||
partial: partial
|
||||
|
||||
@@ -2736,6 +2736,7 @@ en_US:
|
||||
back_to_taxonomies_list: "Back to Taxonomies List"
|
||||
shipping_methods: "Shipping Methods"
|
||||
shipping_categories: "Shipping Categories"
|
||||
new_shipping_category: "New Shipping Category"
|
||||
back_to_shipping_categories: "Back To Shipping Categories"
|
||||
analytics_trackers: "Analytics Trackers"
|
||||
no_trackers_found: "No Trackers Found"
|
||||
|
||||
@@ -2748,6 +2748,7 @@ fr:
|
||||
back_to_taxonomies_list: "Retour à la liste des taxonomies"
|
||||
shipping_methods: "Méthodes de livraison"
|
||||
shipping_categories: "Condition de transport"
|
||||
new_shipping_category: "Nouvelle catégorie d'expédition"
|
||||
back_to_shipping_categories: "Retour aux catégories d'expédition"
|
||||
analytics_trackers: "Traqueurs analyse navigation"
|
||||
no_trackers_found: "Pas de traqueur trouvé"
|
||||
|
||||
@@ -243,6 +243,8 @@ fr_CA:
|
||||
quantity: Quantité
|
||||
pick_up: Retrait
|
||||
copy: Copier
|
||||
change_my_password: "Changer mon mot de passe"
|
||||
update_password: "Mettre à jour le mot de passe"
|
||||
password_confirmation: Confirmation de mot de passe
|
||||
reset_password_token: La demande de réinitialisation du mot de passe
|
||||
expired: a expiré, veuillez faire une nouvelle demande.
|
||||
@@ -372,6 +374,7 @@ fr_CA:
|
||||
status: "Statut"
|
||||
diff: "Diff"
|
||||
error: "Erreur"
|
||||
enable_products_cache: "Autoriser Cache Produits ?"
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Paramètres de facturation
|
||||
@@ -1235,6 +1238,7 @@ fr_CA:
|
||||
no_shipping_or_payment: pas de méthode de livraison ou de paiement
|
||||
unconfirmed: non confirmé
|
||||
days: jours
|
||||
authorization_failure: "Echec de l'autorisation"
|
||||
label_shop: "Boutique"
|
||||
label_shops: "Boutiques"
|
||||
label_map: "Carte"
|
||||
@@ -1610,6 +1614,7 @@ fr_CA:
|
||||
products_available: Disponible?
|
||||
products_producer: "Producteur"
|
||||
products_price: "Prix"
|
||||
name_or_sku: "NOM OU REF PRODUIT"
|
||||
register_title: S'inscrire
|
||||
sell_title: "S'inscrire"
|
||||
sell_headline: "Aller sur Open Food France!"
|
||||
@@ -1667,6 +1672,7 @@ fr_CA:
|
||||
orders_bought_edit_button: Modifier les produits confirmés
|
||||
orders_bought_already_confirmed: "* déjà confirmé"
|
||||
orders_confirm_cancel: Voulez-vous vraiment annuler cette commande ?
|
||||
order_processed_successfully: "Votre commande a été traitée avec succès"
|
||||
products_cart_distributor_choice: "Distributeur pour votre commande:"
|
||||
products_cart_distributor_change: "Vore distributeur pour cette commande sera dorénavant %{name} si vous ajoutez ce produit à votre panier."
|
||||
products_cart_distributor_is: "Votre distributeur pour cette commande est %{name}."
|
||||
@@ -1747,11 +1753,13 @@ fr_CA:
|
||||
registration_about_us: "Un texte \"A propos\""
|
||||
registration_outcome_headline: "Qu'est-ce que ça m'apporte?"
|
||||
registration_outcome1_html: "Votre profil permet aux gens de vous <strong>trouver</strong> et de vous <strong>contacter</strong> via Open Food Network."
|
||||
registration_outcome2: "Utilisez cet espace pour raconter l'histoire de votre entreprise, et stimuler les visites vers vos points de présence en ligne."
|
||||
registration_outcome3: "C'est aussi le premier pas vers la vente via Open Food Network, ou l'ouverture de votre boutique en ligne."
|
||||
registration_action: "Démarrons!"
|
||||
details:
|
||||
title: "Détails"
|
||||
headline: "Commençons !"
|
||||
enterprise: "Hey ! Nous avons d'abord besoin de quelques informations sur votre entreprise :"
|
||||
producer: "Woohoo! Dites-nous déjà quelques mots à propos de votre ferme:"
|
||||
enterprise_name_field: "Nom de l'entreprise:"
|
||||
producer_name_field: "Nom de la ferme:"
|
||||
@@ -1793,6 +1801,7 @@ fr_CA:
|
||||
title: "A propos"
|
||||
headline: "Bien joué!"
|
||||
message: "A présent, allons un peu plus dans les détails concernant"
|
||||
success: "Opération réussie ! %{enterprise}a été ajoutée à Open Food Network "
|
||||
registration_exit_message: "Si vous quittez ce module, vous pourrez continuer la création de votre profile via l'interface d'administration.\n\n "
|
||||
enterprise_description: "Description courte"
|
||||
enterprise_description_placeholder: "Une phrase pour décrire votre organisation"
|
||||
@@ -1888,6 +1897,10 @@ fr_CA:
|
||||
ok: OK
|
||||
not_visible: invisible
|
||||
you_have_no_orders_yet: "Vous n'avez pas encore de commande"
|
||||
show_only_complete_orders: "Ne montrer que les commandes finalisées"
|
||||
successfully_created: '%{resource} a été créé avec succès !'
|
||||
successfully_removed: ' %{resource}a été supprimé avec succès !'
|
||||
successfully_updated: ' %{resource}été mis à jour avec succès !'
|
||||
running_balance: "Solde courant"
|
||||
outstanding_balance: "Solde restant"
|
||||
admin_enterprise_relationships: "Permissions Inter-entreprises"
|
||||
@@ -2223,6 +2236,8 @@ fr_CA:
|
||||
shipping_methods: "Méthodes de livraison"
|
||||
payment_methods: "Méthodes de paiement"
|
||||
payment_method_fee: "Frais de transaction"
|
||||
payment_processing_failed: "Le paiement n'a pas pu être traité, veuillez vérifier les informations saisies"
|
||||
payment_updated: "Paiement mis à jour"
|
||||
inventory_settings: "Paramètres catalogue boutique"
|
||||
tag_rules: "Règles de tag"
|
||||
shop_preferences: "Préférences boutique"
|
||||
@@ -2469,6 +2484,7 @@ fr_CA:
|
||||
sending: "Renvoyer"
|
||||
done: "Renvoi effectué ✓"
|
||||
failed: "Renvoi échoué ✗"
|
||||
insufficient_stock: "Stock disponible insuffisant, il n'en reste que %{on_hand}"
|
||||
out_of_stock:
|
||||
reduced_stock_available: Stock disponible
|
||||
out_of_stock_text: >
|
||||
@@ -2586,50 +2602,171 @@ fr_CA:
|
||||
invalid_filter_parameters: "Les filtres sélectionnés pour ce rapport sont invalides."
|
||||
order: "Commander"
|
||||
distribution: "Distribution"
|
||||
order_details: "Détails de la commande"
|
||||
customer_details: "Informations acheteur"
|
||||
adjustments: "ajustements"
|
||||
payments: "Paiements"
|
||||
payment: "Paiement"
|
||||
payment_method: "Méthode de paiement"
|
||||
shipment: "Livraison"
|
||||
shipment_inc_vat: "Livraison incluant taxes"
|
||||
shipping_tax_rate: "Taux taxe livraison"
|
||||
category: "Catégorie"
|
||||
delivery: "Livraison"
|
||||
temperature_controlled: "Température contrôlée"
|
||||
new_product: "Nouveau Produit"
|
||||
administration: "Administration"
|
||||
logged_in_as: "Connecté en tant que"
|
||||
account: "Compte"
|
||||
logout: "Déconnexion"
|
||||
date_range: "Période"
|
||||
status: "Statut"
|
||||
new: "Nouveau"
|
||||
start: "Début"
|
||||
stop: "Arrêter"
|
||||
first: "Début"
|
||||
previous: "Précédent"
|
||||
last: "Fin"
|
||||
spree:
|
||||
your_order_is_empty_add_product: "Votre commande est vide, veuillez ajouter des produits"
|
||||
add_product: "Ajouter un produit"
|
||||
name_or_sku: "Nom ou Ref Produit (entrer au moins les 4 premiers caractères du nom du produit)"
|
||||
resend: Renvoyer
|
||||
back_to_orders_list: Retour à la liste des commandes
|
||||
select_stock: "Sélectionner le stock"
|
||||
location: "Localisation"
|
||||
count_on_hand: "Quantité en stock"
|
||||
quantity: "Quantité"
|
||||
package_from: "conditionnement par"
|
||||
item_description: "Description de la pièce"
|
||||
price: "Prix"
|
||||
total: "Total"
|
||||
edit: "Modifier"
|
||||
split: "Découper"
|
||||
delete: "Supprimer"
|
||||
cannot_set_shipping_method_without_address: "Impossible de choisir une méthode de livraison tant que les informations acheteur ne sont pas fournies."
|
||||
no_tracking_present: "Pas d'informations de traçabilité fournies."
|
||||
order_total: "Total Commande:"
|
||||
customer_details: "Informations acheteur"
|
||||
customer_search: "Recherche Acheteur"
|
||||
choose_a_customer: "Choisir un acheteur"
|
||||
account: "Compte"
|
||||
billing_address: "Adresse de facturation"
|
||||
shipping_address: "Adresse de livraison"
|
||||
first_name: "Prénom"
|
||||
last_name: "Nom de famille"
|
||||
street_address: "Adresse - nom de la rue"
|
||||
street_address_2: "Adresse - nom de la rue (cont.)"
|
||||
city: "Ville"
|
||||
zip: "Code postal"
|
||||
country: "Pays"
|
||||
state: "Département"
|
||||
phone: "n° tel"
|
||||
update: "Mettre à jour"
|
||||
use_billing_address: "Utiliser l'adresse de facturation"
|
||||
adjustments: "ajustements"
|
||||
continue: "Suivant"
|
||||
fill_in_customer_info: "Veuillez saisir les informations acheteur"
|
||||
new_payment: "Nouveau paiement"
|
||||
configurations: "Configurations"
|
||||
general_settings: "Configurations générales"
|
||||
site_name: "Nom du site"
|
||||
site_url: "URL du site"
|
||||
default_seo_title: "Titre référencement web (SEO) par défaut"
|
||||
default_meta_description: "Meta description par défaut"
|
||||
default_meta_keywords: "Meta mots clés par défaut"
|
||||
security_settings: "Paramètres de sécurité"
|
||||
allow_ssl_in_development_and_test: "Autoriser l'utilisation SSL dans les environnements de développement et de test"
|
||||
allow_ssl_in_production: "Autoriser l'utilisation SSL dans l'environnement de production"
|
||||
allow_ssl_in_staging: "Autoriser l'utilisation SSL dans l'environnement de staging"
|
||||
check_for_spree_alerts: "Vérifier les alertes Spree"
|
||||
currency_decimal_mark: "Symbole du séparateur de décimales"
|
||||
currency_settings: "Paramètres devise"
|
||||
currency_symbol_position: Mettre le symbole de la devise avant ou après le montant ?
|
||||
currency_thousands_separator: "Symbole du séparateur de milliers"
|
||||
hide_cents: "Masquer les centimes"
|
||||
display_currency: "Afficher la devise"
|
||||
choose_currency: "Choisir la devise"
|
||||
mail_method_settings: "Paramètre méthode mail"
|
||||
general: "Général"
|
||||
enable_mail_delivery: "Permettre distribution des mails"
|
||||
send_mails_as: "Envoyer les mails en tant que"
|
||||
smtp_send_all_emails_as_from_following_address: "Envoyer tous les mails depuis l'adresse suivante."
|
||||
send_copy_of_all_mails_to: "Envoyer une copie de tous les mails à"
|
||||
smtp_send_copy_to_this_addresses: "Envoyer une copie de tous les mails sortants à cette adresse. Si plusieurs adresses, les séparer par une virgule."
|
||||
intercept_email_address: "Adresse email d'interception"
|
||||
intercept_email_instructions: "Modifier l'email destinataire et le remplacer avec cette adresse."
|
||||
smtp: "SMTP"
|
||||
smtp_domain: "Domaine SMTP"
|
||||
smtp_mail_host: "Hôte de messagerie SMTP"
|
||||
smtp_port: "Port SMTP"
|
||||
secure_connection_type: "Type de connexion sécurisée"
|
||||
smtp_authentication_type: "Type d'authentification SMTP"
|
||||
smtp_username: "Nom d'utilisateur SMTP"
|
||||
smtp_password: "Mot de passe SMTP"
|
||||
image_settings: "Paramètres des images"
|
||||
image_settings_warning: "Vous devrez générer de nouvelles vignettes si vous mettez à jour les styles paperclip. Utilisez rake paperclip:refresh:thumbnails CLASS=Spree::Image pour le faire."
|
||||
attachment_default_style: Style des pièces jointes
|
||||
attachment_default_url: "URL par défaut des pièces jointes"
|
||||
attachment_path: "Chemin des pièces jointes"
|
||||
attachment_styles: "Styles paperclip"
|
||||
attachment_url: "URL des pièces jointes"
|
||||
add_new_style: "Ajouter nouveau style"
|
||||
image_settings_updated: "Paramètre des images mis à jour avec succès."
|
||||
tax_categories: "Taxe applicable"
|
||||
listing_tax_categories: "Catégories de taxe en cours d'affichage"
|
||||
back_to_tax_categories_list: "Retour à la liste des catégories de taxe"
|
||||
tax rate: "Taux de taxe"
|
||||
new_tax_rate: "Nouveau taux de taxe"
|
||||
tax_category: "Type de taxe"
|
||||
rate: "Taux"
|
||||
tax_rate_amount_explanation: "Les taux de taxe sont présentés en nombres décimaux pour faciliter les calculs (ex : si le taux est 5% saisissez 0.05)"
|
||||
included_in_price: "Inclus dans le prix"
|
||||
show_rate_in_label: "Montrer le taux dans le nom"
|
||||
back_to_tax_rates_list: "Retour à la liste des taux de taxe"
|
||||
tax_settings: "Paramètres taxe"
|
||||
zones: "Zones"
|
||||
new_zone: "Nouvelle zone"
|
||||
default_tax: "Taxe par défaut"
|
||||
default_tax_zone: "Zone de taxe par défaut"
|
||||
country_based: "Basé sur un pays"
|
||||
state_based: "Basé sur un État/département"
|
||||
countries: "Pays"
|
||||
listing_countries: "Pays en cours d'affichage"
|
||||
iso_name: "Noms ISO"
|
||||
states_required: "États/Départements requis"
|
||||
editing_country: "Pays en cours de mise à jour"
|
||||
back_to_countries_list: "Retour à la liste des pays"
|
||||
states: "États/Départements requis"
|
||||
abbreviation: "Code"
|
||||
new_state: "Nouveau Région:"
|
||||
payment_methods: "Méthodes de paiement"
|
||||
new_payment_method: "Nouvelle méthode de paiement"
|
||||
provider: "Fournisseur"
|
||||
taxonomies: "Taxonomies"
|
||||
new_taxonomy: "Nouvelle taxonomie"
|
||||
back_to_taxonomies_list: "Retour à la liste des taxonomies"
|
||||
shipping_methods: "Méthodes de livraison"
|
||||
shipping_categories: "Condition de transport"
|
||||
new_shipping_category: "Créer nouvelle méthode de livraison"
|
||||
back_to_shipping_categories: "Retour aux catégories d'expédition"
|
||||
analytics_trackers: "Traqueurs analyse navigation"
|
||||
no_trackers_found: "Pas de traqueur trouvé"
|
||||
new_tracker: "Nouveau traqueur"
|
||||
add_one: "En ajouter un"
|
||||
google_analytics_id: "ID analytique"
|
||||
back_to_trackers_list: "Retour à la liste des traqueurs"
|
||||
name: "Nom"
|
||||
description: "Description"
|
||||
type: "Catégorie"
|
||||
default: "par défaut"
|
||||
calculator: "Calculateur"
|
||||
zone: "Zone"
|
||||
display: "Afficher"
|
||||
environment: "Environnement"
|
||||
active: "Actif"
|
||||
nore: "Plus"
|
||||
no_results: "Pas de résultats"
|
||||
create: "Créer"
|
||||
loading: "Chargement en cours"
|
||||
email: Email
|
||||
@@ -2637,6 +2774,7 @@ fr_CA:
|
||||
my_account: "Mon compte"
|
||||
date: "Date"
|
||||
time: "Heure"
|
||||
inventory_error_flash_for_insufficient_quantity: "Un produit de votre panier n'est plus disponible."
|
||||
inventory: Catalogue boutique
|
||||
zipcode: Code postal
|
||||
weight: Poids (au kg)
|
||||
@@ -2656,13 +2794,17 @@ fr_CA:
|
||||
bulk_order_management: "Gestion des commandes"
|
||||
subscriptions: "Abonnements"
|
||||
products: "Produits"
|
||||
option_types: "Types d'options"
|
||||
properties: "Labels / propriétés"
|
||||
prototypes: "Prototypes"
|
||||
variant_overrides: "Catalogue boutique"
|
||||
reports: "Rapports"
|
||||
configuration: "Configuration"
|
||||
users: "Utilisateurs"
|
||||
roles: "Roles"
|
||||
order_cycles: "Cycles de Vente"
|
||||
enterprises: "Entreprises"
|
||||
enterprise_relationships: "Permissions"
|
||||
customers: "Acheteurs"
|
||||
groups: "Groupes"
|
||||
product_properties:
|
||||
@@ -2838,6 +2980,9 @@ fr_CA:
|
||||
login_to_view_order: "Veuillez vous connecter pour voir votre commande."
|
||||
bought:
|
||||
item: "Déjà commandé dans ce cycle de vente"
|
||||
line_item:
|
||||
insufficient_stock: "Stock disponible insuffisant, il n'en reste que %{on_hand}"
|
||||
out_of_stock: "En rupture de stock"
|
||||
shipment_states:
|
||||
backorder: réapprovisionnement
|
||||
partial: partiel
|
||||
|
||||
@@ -2735,6 +2735,7 @@ nb:
|
||||
back_to_taxonomies_list: "Tilbake til Taksonomiliste"
|
||||
shipping_methods: "Leveringsmetoder"
|
||||
shipping_categories: "Fraktkategorier"
|
||||
new_shipping_category: "Ny Fraktkategori"
|
||||
back_to_shipping_categories: "Tilbake til Leveringskategorier"
|
||||
analytics_trackers: "Analyseverktøy"
|
||||
no_trackers_found: "Ingen sporingsverktøy funnet"
|
||||
|
||||
@@ -21,16 +21,26 @@ pt:
|
||||
attributes:
|
||||
email:
|
||||
taken: "Já existe uma conta associada a este email. Por favor faça login ou defina uma nova palavra-passe."
|
||||
spree/order:
|
||||
no_card: Não há cartões autorizados disponíveis para serem cobrados
|
||||
order_cycle:
|
||||
attributes:
|
||||
orders_close_at:
|
||||
after_orders_open_at: tem de ser após data de abertura
|
||||
variant_override:
|
||||
count_on_hand:
|
||||
using_producer_stock_settings_but_count_on_hand_set: "deve ser vazio dado estar a usar as configurações do produtor"
|
||||
on_demand_but_count_on_hand_set: "deve ser vazio dado estar sob encomenda"
|
||||
limited_stock_but_no_count_on_hand: "deve ser definido dado não estar sob encomenda"
|
||||
activemodel:
|
||||
attributes:
|
||||
order_management/reports/enterprise_fee_summary/parameters:
|
||||
start_at: "Começar"
|
||||
end_at: "Terminar"
|
||||
distributor_ids: "Centrais"
|
||||
producer_ids: "Produtores"
|
||||
order_cycle_ids: "Ciclos de Encomendas"
|
||||
enterprise_fee_ids: "Nomes das Taxas"
|
||||
shipping_method_ids: "Métodos de Envio"
|
||||
payment_method_ids: "Métodos de pagamento"
|
||||
errors:
|
||||
@@ -49,6 +59,8 @@ pt:
|
||||
payment_method:
|
||||
not_available_to_shop: "não está disponível para %{shop}"
|
||||
invalid_type: "tem de ser em dinheiro ou método Stripe"
|
||||
charges_not_allowed: "^Cobranças no Cartão de Crédito não são autorizadas por este/a consumidor/a"
|
||||
no_default_card: "^Nenhum cartão por defeito para este/a consumidor/a"
|
||||
shipping_method:
|
||||
not_available_to_shop: "não está disponível para %{shop}"
|
||||
devise:
|
||||
@@ -61,6 +73,7 @@ pt:
|
||||
user_registrations:
|
||||
spree_user:
|
||||
signed_up_but_unconfirmed: "Foi enviada uma mensagem para o seu endereço de email com um link de confirmação. Por favor clique nesse link para activar a sua conta."
|
||||
unknown_error: "Algo correu mal ao criar a sua conta. Verifique o seu email e tente outra vez."
|
||||
failure:
|
||||
invalid: |
|
||||
Email ou palavra-passe incorrectos.
|
||||
@@ -73,6 +86,13 @@ pt:
|
||||
models:
|
||||
order_cycle:
|
||||
cloned_order_cycle_name: "CÓPIA DE%{order_cycle}"
|
||||
validators:
|
||||
date_time_string_validator:
|
||||
not_string_error: "deve ser texto"
|
||||
invalid_format_error: "deve ser válido"
|
||||
integer_array_validator:
|
||||
not_array_error: "deve ser uma lista"
|
||||
invalid_element_error: "deve conter apenas números válidos"
|
||||
enterprise_mailer:
|
||||
confirmation_instructions:
|
||||
subject: "Por favor confirme o endereço de email de %{enterprise}"
|
||||
@@ -222,6 +242,8 @@ pt:
|
||||
quantity: Quantidade
|
||||
pick_up: Levantamento
|
||||
copy: Copiar
|
||||
change_my_password: "Mudar a minha palavra-passe"
|
||||
update_password: "Redefinir palavra-passe"
|
||||
password_confirmation: Confirmação de Palavra-passe
|
||||
reset_password_token: Redefinir palavra-passe
|
||||
expired: expirou, por favor peça uma nova
|
||||
@@ -476,14 +498,21 @@ pt:
|
||||
inventory_no_permission: não tem permissões para criar inventário para este produtor
|
||||
none_saved: não gravou nenhum produto com sucesso
|
||||
line_number: "Linha %{number}:"
|
||||
encoding_error: "Por favor verifique as configurações de linguagem do ficheiro fonte e verifique que é gravado em UTF-8"
|
||||
unexpected_error: "Error inesperado ao abrir o ficheiro: %{error_message}"
|
||||
index:
|
||||
select_file: Selecione uma folha de cálculo para carregar
|
||||
spreadsheet: Folha de cálculo
|
||||
choose_import_type: Selecione tipo de importação
|
||||
import_into: Tipo de importação
|
||||
product_list: Lista de produtos
|
||||
inventories: Inventários
|
||||
import: Importar
|
||||
upload: Carregar
|
||||
csv_templates: Templates de CSV
|
||||
product_list_template: Descarregar templates de Lista de Produtos
|
||||
inventory_template: Descarregar template de Inventário
|
||||
category_values: Valores de Categoria disponíveis
|
||||
product_categories: Categorias de Produtos
|
||||
tax_categories: Categorias de Impostos
|
||||
shipping_categories: Categorias de Envio
|
||||
@@ -495,6 +524,8 @@ pt:
|
||||
save_imported: Guardar produtos importados
|
||||
no_valid_entries: Não foram encontradas entradas válidas
|
||||
none_to_save: Não foram encontradas entradas que possam ser guardadas
|
||||
some_invalid_entries: Ficheiro importado contém entradas inválidas
|
||||
fix_before_import: Por favor corrija estes erros e tente importar novamente
|
||||
save_valid?: Guardar entradas válidas e descartar as outras?
|
||||
no_errors: Nenhum erro detectado.
|
||||
save_all_imported?: Guardar todos os produtos importados?
|
||||
@@ -502,6 +533,9 @@ pt:
|
||||
no_permission: não tem permissões para gerir esta organização
|
||||
not_found: organização não encontrada
|
||||
no_name: Sem nome
|
||||
blank_enterprise: alguns produtos não têm uma organização definida
|
||||
reset_absent?: Restabelecer productos ausentes
|
||||
reset_absent_tip: Restabelecer stock a zero para todos os produtos não presentes no ficheiro
|
||||
overwrite_all: Substituir todos
|
||||
overwrite_empty: Substituir se vazio
|
||||
default_stock: Definir nível de stock
|
||||
@@ -519,6 +553,11 @@ pt:
|
||||
inventory_to_reset: Itens de inventário existentes terão o nível de stock restabelecido a zero
|
||||
line: Linha
|
||||
item_line: Linha de item
|
||||
import_review:
|
||||
not_updatable_tip: "Os campos seguintes não podem ser actualizados para produtos existentes através da funcionalidade de importação em massa:"
|
||||
fields_ignored: Estes campos vão ser ignorados quando os produtos importados forem gravados.
|
||||
entries_table:
|
||||
not_updatable: Este campo não é actualizável para produtos existentes através da funcionalidade de importação em massa
|
||||
save_results:
|
||||
final_results: Importar resultados finais
|
||||
products_created: Produtos criados
|
||||
@@ -530,6 +569,9 @@ pt:
|
||||
all_saved: "Todos os itens guardados com sucesso"
|
||||
some_saved: "itens guardados com sucesso"
|
||||
save_errors: Erros a guardar
|
||||
import_again: Carregar outro ficheiro
|
||||
view_products: Ir para a Página de Produtos
|
||||
view_inventory: Ir para a Página de Inventário
|
||||
variant_overrides:
|
||||
loading_flash:
|
||||
loading_inventory: A CARREGAR INVENTÁRIO...
|
||||
@@ -562,6 +604,7 @@ pt:
|
||||
tip: "Use esta página para alterar a quantidade de produtos entre múltiplas encomendas. Os produtos podem ser removidos completamente das encomendas, se necessário"
|
||||
shared: "Recurso Compartilhado?"
|
||||
order_no: "Encomenda Nº"
|
||||
order_date: "Concluído Em"
|
||||
max: "Máximo"
|
||||
product_unit: "Produto: Unidade"
|
||||
weight_volume: "Peso/Volume"
|
||||
@@ -703,7 +746,9 @@ pt:
|
||||
close_date: Data de fecho
|
||||
social:
|
||||
twitter_placeholder: 'ex: @o_prof'
|
||||
instagram_placeholder: ex. o_agricultor
|
||||
facebook_placeholder: ex. www.facebook.com/asuapagina
|
||||
linkedin_placeholder: ex. www.linkedin.com/in/OSeuNomeAqui
|
||||
stripe_connect:
|
||||
connect_with_stripe: "Conectar com o Stripe"
|
||||
stripe_connect_intro: "Para aceitar pagamentos com cartão de crédito, vai ser necessário ligar a sua conta Stripe à Open Food Network. Use o botão à direita para começar."
|
||||
@@ -795,10 +840,19 @@ pt:
|
||||
i_am_producer: Sou um produtor
|
||||
contact_name: Nome do contacto
|
||||
edit:
|
||||
editing: 'Configurações'
|
||||
back_link: Voltar à lista de organizações
|
||||
new:
|
||||
title: Nova Organização
|
||||
back_link: Voltar à lista de organizações
|
||||
remove_logo:
|
||||
remove: "Remover Imagem"
|
||||
removed_successfully: "Logotipo removido com sucesso"
|
||||
immediate_removal_warning: "O logotipo será removido imediatamente após a confirmação."
|
||||
remove_promo_image:
|
||||
remove: "Remover Imagem"
|
||||
removed_successfully: "Imagem promocional removida com sucesso"
|
||||
immediate_removal_warning: "A imagem promocional será removida imediatamente após confirmação."
|
||||
welcome:
|
||||
welcome_title: Bem-vindo à Open Food Network!
|
||||
welcome_text: Você criou com sucesso uma
|
||||
@@ -832,7 +886,10 @@ pt:
|
||||
coordinator_fees:
|
||||
add: Adicionar taxa de coordenador
|
||||
filters:
|
||||
search_by_order_cycle_name: "Procurar por nome do Ciclo de Encomenda..."
|
||||
involving: "Envolvendo"
|
||||
any_enterprise: "Qualquer Organização"
|
||||
any_schedule: "Qualquer Horário"
|
||||
form:
|
||||
incoming: Entrada
|
||||
supplier: Fornecedor
|
||||
@@ -882,6 +939,7 @@ pt:
|
||||
bulk_update:
|
||||
no_data: Hmmm, algo correu mal. Não foram encontrados dados do ciclo de encomendas.
|
||||
date_warning:
|
||||
msg: Este ciclo de encomendas está ligado a %{n} encomendas de subscrições abertas. Mudar esta data não afetará as encomendas que já foram colocadas, mas deve ser evitado se possível. Tem a certeza que quer continuar?
|
||||
cancel: Cancelar
|
||||
proceed: Continuar
|
||||
producer_properties:
|
||||
@@ -959,6 +1017,9 @@ pt:
|
||||
description: Facturas para importar para o Xero
|
||||
packing:
|
||||
name: Relatórios de Embalamento
|
||||
enterprise_fee_summary:
|
||||
name: "Sumário das Taxas de Organização"
|
||||
description: "Sumário das Taxas de Organização cobradas"
|
||||
subscriptions:
|
||||
subscriptions: Subscrições
|
||||
new: Nova Subscrição
|
||||
@@ -988,17 +1049,26 @@ pt:
|
||||
address: 2. Morada
|
||||
products: 3. Adicionar Produtos
|
||||
review: 4. Rever & Guardar
|
||||
subscription_line_items:
|
||||
this_is_an_estimate: |
|
||||
Os preços mostrados são apenas estimativas e são calculados no momento em que a subscrição é mudada.
|
||||
Se mudar preços ou taxas, as encomendas serão atualizadas, mas a subscrição ainda mostrará os preços anteriores.
|
||||
not_in_open_and_upcoming_order_cycles_warning: "Não há ciclos de encomenda abertos ou que estejam para abrir para este produto."
|
||||
details:
|
||||
details: Detalhes
|
||||
invalid_error: Ooops! Por favor preencha todos os campos obrigatórios...
|
||||
allowed_payment_method_types_tip: De momento, só podem ser usados métodos de pagamento em Dinheiro ou Stripe
|
||||
credit_card: Cartão de Crédito
|
||||
charges_not_allowed: Cobranças não são autorizadas por este/a consumidor/a
|
||||
no_default_card: O/a consumidor/a não tem cartões disponíveis para cobrança
|
||||
card_ok: O/a consumidor/a tem um cartão disponível para cobrança
|
||||
loading_flash:
|
||||
loading: A CARREGAR SUBSCRIÇÕES
|
||||
review:
|
||||
details: Detalhes
|
||||
address: Morada
|
||||
products: Produtos
|
||||
no_open_or_upcoming_order_cycle: "Nenhum Ciclo de Encomendas aberto ou que abrirá em breve"
|
||||
product_already_in_order: Este produto já foi adicionado à encomenda. Por favor edite a quantidade directamente.
|
||||
orders:
|
||||
number: Número
|
||||
@@ -1029,6 +1099,11 @@ pt:
|
||||
stripe_connect_fail: Pedimos desculpa, mas a ligação à sua conta Stripe falhou
|
||||
stripe_connect_settings:
|
||||
resource: Configuração Stripe Connect
|
||||
api:
|
||||
enterprise_logo:
|
||||
destroy_attachment_does_not_exist: "Logotipo não existe"
|
||||
enterprise_promo_image:
|
||||
destroy_attachment_does_not_exist: "Imagem promocional não existe"
|
||||
checkout:
|
||||
already_ordered:
|
||||
cart: "carrinho"
|
||||
@@ -1068,6 +1143,10 @@ pt:
|
||||
footer_legal_tos: "Termos e condições"
|
||||
footer_legal_visit: "Encontre-nos no"
|
||||
footer_legal_text_html: "A Open Food Network é uma plataforma livre e de código aberto. O nosso conteúdo tem uma licença %{content_license} e o nosso código %{code_license}."
|
||||
footer_data_text_with_privacy_policy_html: "Nós tratamos com cuidado dos nosso dados. Veja a nossa %{privacy_policy} e a nossa %{cookies_policy}"
|
||||
footer_data_text_without_privacy_policy_html: "Nós tratamos com cuidado dos nosso dados. Veja a nossa %{cookies_policy}"
|
||||
footer_data_privacy_policy: "politíca de privacidade"
|
||||
footer_data_cookies_policy: "política de cookies"
|
||||
footer_skylight_dashboard_html: Dados de performance disponível em %{dashboard}.
|
||||
shop:
|
||||
messages:
|
||||
@@ -1133,6 +1212,7 @@ pt:
|
||||
footer_email: "Email"
|
||||
footer_links_md: "Links"
|
||||
footer_about_url: "URL Sobre"
|
||||
user_guide_link: "Link para o Guia de Utilizador/a"
|
||||
name: Nome
|
||||
first_name: Primeiro Nome
|
||||
last_name: Último Nome
|
||||
@@ -1158,6 +1238,7 @@ pt:
|
||||
no_shipping_or_payment: sem métodos de envio nem pagamento
|
||||
unconfirmed: não confirmado
|
||||
days: dias
|
||||
authorization_failure: "Falha na Autorização"
|
||||
label_shop: "Loja"
|
||||
label_shops: "Lojas"
|
||||
label_map: "Mapa"
|
||||
@@ -1206,6 +1287,48 @@ pt:
|
||||
ie_warning_firefox: Descarregar Firefox
|
||||
ie_warning_ie: Actualizar Internet Explorer
|
||||
ie_warning_other: "Não consegue actualizar o navegador? Tente aceder à OFN pelo smartphone :-)"
|
||||
legal:
|
||||
cookies_policy:
|
||||
header: "Como usámos as Cookies"
|
||||
desc_part_1: "Cookies são pequenos ficheiros de texto que são guardados no seu computador quando visita um website."
|
||||
desc_part_2: "No OFN nós respeitamos totalmente a sua privacidade. Só usamos Cookies que são essenciais para o funcionamento do website."
|
||||
desc_part_3: "Usamos Cookies essencialmente para lembrar se fez login no website e que items é que tem no seu carrinho. Se continuar a navegar no website sem aceitar a política de cookies, nós assumimos que nos está a dar consentimento para guardar as cookies que são essenciais para o funcionamento do website. Aqui está a lista de cookies que usamos!"
|
||||
essential_cookies: "Cookies Essenciais"
|
||||
essential_cookies_desc: "As seguintes Cookies são estritamente necessárias para o funcionamento do website."
|
||||
essential_cookies_note: "A maioria das cookies contém apenas um identificador e portanto o seu email e password nunca são guardados nas cookies."
|
||||
cookie_domain: "Definida por:"
|
||||
cookie_session_desc: "Usada para identificar o utilizador entre páginas, por exemplo, items contidos no carrinho de compras."
|
||||
cookie_consent_desc: "Usado para manter o estado do consentimento sobre a utilização de cookies."
|
||||
cookie_remember_me_desc: "Usado no caso em que o/a utilizador/a pediu ao website para se lembrar. Esta cookie é automaticamente apagada passados 12 dias."
|
||||
cookie_openstreemap_desc: "Usado pelo nosso fornecedor amigável e de código aberto (OpenStreetMap) para garantir que não recebe demasiados pedidos durante um certo período de tempo, para evitar que os seus servidores sejam abusados."
|
||||
cookie_stripe_desc: "Cookie definida pelo nosso fornecedor de serviços de pagamento Stripe. Para mais informações veja https://stripe.com/cookies-policy/legal e https://stripe.com/privacy."
|
||||
statistics_cookies: "Cookies de Estatísticas"
|
||||
statistics_cookies_desc: "As seguintes cookies não são estritamente necessárias mas ajudam a uma melhor experiência do/a utilizador/a."
|
||||
statistics_cookies_analytics_desc_html: "Para coletar e analisar dados de utilização da plataforma nós usamos Google Analytics e <a href='https://matomo.org/' target='_blank'>Matomo</a> (ex Piwik, uma ferramenta de analytics de código aberto que está confirme do RGPD e protege a sua privacidade)."
|
||||
statistics_cookies_matomo_desc_html: "Para coletar e analisar dados de utilização da plataforma nós usamos <a href='https://matomo.org/' target='_blank'>Matomo</a> (ex Piwik, uma ferramenta de analytics de código aberto que está confirme do RGPD e protege a sua privacidade)."
|
||||
statistics_cookies_matomo_optout: "Quer optar por não usar a cookie Matomo?"
|
||||
cookie_analytics_utma_desc: "Usado para distinguir utilizadores e sessões."
|
||||
cookie_analytics_utmt_desc: "Usado para evitar demasiados pedidos aos servidores."
|
||||
cookie_analytics_utmb_desc: "Usado para determinar novas visitas/sessões."
|
||||
cookie_analytics_utmc_desc: "Versão anterior usada para determinar novas visitas/sessões."
|
||||
cookie_analytics_utmz_desc: "Usado para guarda a origem do trafego."
|
||||
cookie_matomo_basics_desc: "Cookies Matomo para recolher estatísticas."
|
||||
cookie_matomo_heatmap_desc: "Cookie Matomo para registo de sessões."
|
||||
cookie_matomo_ignore_desc: "Cookie Matomo para registar opt-out de utilizadores."
|
||||
disabling_cookies_header: "Aviso sobre cookies desactivadas"
|
||||
disabling_cookies_desc: "Como utilizador pode sempre autorizar, bloquear ou apagar as cookies da OFN e de outros websites. Aqui estão os links para o fazer em diferentes browsers:"
|
||||
disabling_cookies_firefox_link: "https://support.mozilla.org/en-US/kb/enable-and-disable-cookies-website-preferences"
|
||||
disabling_cookies_chrome_link: "https://support.google.com/chrome/answer/95647"
|
||||
disabling_cookies_ie_link: "https://support.microsoft.com/en-us/help/17442/windows-internet-explorer-delete-manage-cookies"
|
||||
disabling_cookies_safari_link: "https://www.apple.com/legal/privacy/en-ww/cookies/"
|
||||
disabling_cookies_note: "Repare que se desactivar as cookies totalmente o website deixará de funcionar."
|
||||
cookies_banner:
|
||||
cookies_usage: "Este website usa cookies para melhorar a experiência do utilizador."
|
||||
cookies_definition: "Cookies são pequenos ficheiros de texto que são guardados no seu computador quando visita um website."
|
||||
cookies_desc: "Usamos Cookies essencialmente para lembrar se fez login no website e que items é que tem no seu carrinho. Se continuar a navegar no website sem aceitar a política de cookies, nós assumimos que nos está a dar consentimento para guardar as cookies que são essenciais para o funcionamento do website. Aqui está a lista de cookies que usamos!"
|
||||
cookies_policy_link_desc: "Se quer saber mais, veja a nossa"
|
||||
cookies_policy_link: "politíca de cookies"
|
||||
cookies_accept_button: "Aceitar Cookies"
|
||||
home_shop: Ir às compras
|
||||
brandstory_headline: "Para quem consome com princípios"
|
||||
brandstory_intro: "Às vezes a melhor forma de consertar o sistema é construir um novo..."
|
||||
@@ -1295,6 +1418,7 @@ pt:
|
||||
email_confirmation_click_link: "Clique no link abaixo para confirmar o seu email e continuar a criar o seu perfil."
|
||||
email_confirmation_link_label: "Confirme este endereço de email »"
|
||||
email_confirmation_help_html: "Depois de confirmar o seu email, pode aceder à conta de administração desta organização. Veja o %{link} para saber mais sobre a %{sitename} e para começar a utilizar o seu perfil ou loja online."
|
||||
email_confirmation_notice_unexpected: "Está a receber esta mensagem por se registou em %{sitename}, ou foi convidado para se registar por alguém que provavelmente conhece. Se não entende porque está a receber esta mensagem, por favor escreva para %{contact}."
|
||||
email_social: "Conecte-se connosco:"
|
||||
email_contact: "Envie-nos um email:"
|
||||
email_signoff: "Obrigado,"
|
||||
@@ -1325,6 +1449,7 @@ pt:
|
||||
email_so_edit_true_html: "Pode <a href='%{order_url}'>fazer alterações</a> até ao fecho das encomendas a %{orders_close_at}."
|
||||
email_so_edit_false_html: "Pode <a href='%{order_url}'>ver detalhes desta encomenda</a> em qualquer momento. "
|
||||
email_so_contact_distributor_html: "Se tiver alguma questão pode contactar <strong>%{distributor}</strong>através de %{email}."
|
||||
email_so_contact_distributor_to_change_order_html: "Esta encomenda foi criada automaticamente para si. Pode fazer alterações até as encomendas fecharem em %{orders_close_at} contactando <strong>%{distributor}</strong> através do email %{email}."
|
||||
email_so_confirmation_intro_html: "A sua encomenda com <strong>%{distributor}</strong> está agora confirmada"
|
||||
email_so_confirmation_explainer_html: "Esta encomenda foi feita automaticamente para si, e está agora finalizada."
|
||||
email_so_confirmation_details_html: "Aqui está tudo o que precisa de saber sobre a sua encomenda com <strong>%{distributor}</strong>:"
|
||||
@@ -1489,6 +1614,7 @@ pt:
|
||||
products_available: Disponível?
|
||||
products_producer: "Produtor"
|
||||
products_price: "Preço"
|
||||
name_or_sku: "NOME OU CÓDIGO"
|
||||
register_title: Registo
|
||||
sell_title: "\bRegistar"
|
||||
sell_headline: "Junte-se à Open Food Network!"
|
||||
@@ -1546,6 +1672,7 @@ pt:
|
||||
orders_bought_edit_button: Editar itens confirmados
|
||||
orders_bought_already_confirmed: "* já confirmado"
|
||||
orders_confirm_cancel: Tem a certeza que quer cancelar esta encomenda?
|
||||
order_processed_successfully: "A sua encomenda foi processada com sucesso"
|
||||
products_cart_distributor_choice: "Distribuidor para a sua encomenda:"
|
||||
products_cart_distributor_change: "O distribuidor para esta encomenda será alterado para %{name} se adicionar este produto ao carrinho."
|
||||
products_cart_distributor_is: "O distribuidor para esta encomenda é %{name}."
|
||||
@@ -1585,6 +1712,7 @@ pt:
|
||||
error_number: "precisa ser um número"
|
||||
error_email: "precisa ser um endereço de email"
|
||||
error_not_found_in_database: "%{name} não foi encontrado na base de dados"
|
||||
error_not_primary_producer: "%{name} não está definido como produtor"
|
||||
error_no_permission_for_enterprise: "\"%{name}\": não tem permissão para gerir produtos desta organização"
|
||||
item_handling_fees: "Taxas de Manejo do Produto (incluídas no total do produto)"
|
||||
january: "Janeiro"
|
||||
@@ -1625,11 +1753,13 @@ pt:
|
||||
registration_about_us: "Texto 'Sobre Nós'"
|
||||
registration_outcome_headline: "O que ganho?"
|
||||
registration_outcome1_html: "O seu perfil ajuda as pessoas a o <strong>encontrarem</strong> e entrarem em <strong>contacto</strong> consigo na Open Food Network"
|
||||
registration_outcome2: "Use este espaço para contar a história da sua organização, de forma a gerar ligações à sua presença social e online. "
|
||||
registration_outcome3: "É também o primeiro passo para comercializar na Open Food Network, ou abrir uma loja online."
|
||||
registration_action: "Vamos começar!"
|
||||
details:
|
||||
title: "Detalhes"
|
||||
headline: "Vamos começar"
|
||||
enterprise: "Primeiro precisamos de saber um pouco sobre a sua organização:"
|
||||
producer: "Primeiro precisamos de saber um pouco sobre a sua quinta:"
|
||||
enterprise_name_field: "Nome da Organização:"
|
||||
producer_name_field: "Nome da Quinta"
|
||||
@@ -1671,6 +1801,8 @@ pt:
|
||||
title: "Sobre"
|
||||
headline: "Boa!"
|
||||
message: "Agora vamos inserir os detalhes sobre"
|
||||
success: "Sucesso! %{enterprise} foi adicionada à Open Food Network"
|
||||
registration_exit_message: "Se sair deste processo em qualquer passo, pode continuar a criar o seu perfil na área de administração."
|
||||
enterprise_description: "Descrição Curta"
|
||||
enterprise_description_placeholder: "Uma frase curta que descreva a sua organização "
|
||||
enterprise_long_desc: "Descrição Longa"
|
||||
@@ -1765,6 +1897,10 @@ pt:
|
||||
ok: OK
|
||||
not_visible: não visível
|
||||
you_have_no_orders_yet: "Ainda não tem encomendas"
|
||||
show_only_complete_orders: "Mostrar só encomendas completas"
|
||||
successfully_created: '%{resource} foi criado/a com sucesso!'
|
||||
successfully_removed: '%{resource} foi removido/a com sucesso!'
|
||||
successfully_updated: '%{resource} foi actualizado/a com sucesso!'
|
||||
running_balance: "Saldo corrente"
|
||||
outstanding_balance: "Saldo pendente"
|
||||
admin_enterprise_relationships: "Permissões das Organizações"
|
||||
@@ -1892,6 +2028,8 @@ pt:
|
||||
order_cycles: "Ciclos de Encomendas"
|
||||
enterprise_relationships: "Permissões das organizações"
|
||||
remove_tax: "Remover imposto"
|
||||
first_name_begins_with: "Primeiro nome começa com"
|
||||
last_name_begins_with: "Último nome começa com"
|
||||
enterprise_tos_link: "Ligação para Termos de Serviço da Organização"
|
||||
enterprise_tos_message: "Queremos trabalhar com pessoas que partilham os nossos objectivos e valores. Por isso pedimos às organizações novas que concordem com os nossos"
|
||||
enterprise_tos_link_text: "Termos de Serviço."
|
||||
@@ -2098,6 +2236,8 @@ pt:
|
||||
shipping_methods: "Métodos de Envio"
|
||||
payment_methods: "Métodos de Pagamento"
|
||||
payment_method_fee: "Taxa de transação"
|
||||
payment_processing_failed: "O pagamento não pode ser processado, por favor verifique os detalhes que introduziu"
|
||||
payment_updated: "Pagamento atualizado"
|
||||
inventory_settings: "Configurações de Inventário"
|
||||
tag_rules: "Regras para Etiquetas"
|
||||
shop_preferences: "Preferências da Loja"
|
||||
@@ -2292,6 +2432,13 @@ pt:
|
||||
new_tag_rule_dialog:
|
||||
select_rule_type: "Selecionar um tipo de regra:"
|
||||
orders:
|
||||
index:
|
||||
per_page: "%{results} por página"
|
||||
view_file: "Ver Ficheiro"
|
||||
compiling_invoices: "Preparando Faturas"
|
||||
bulk_invoice_created: "Grupo de Faturas criado"
|
||||
bulk_invoice_failed: "Falhou a criação de Grupo de Faturas"
|
||||
please_wait: "Por favor espere até que o PDF esteja pronto antes de fechar a janela."
|
||||
order_state:
|
||||
address: "morada"
|
||||
adjustments: "ajustes"
|
||||
@@ -2326,6 +2473,10 @@ pt:
|
||||
invalid: "inválido"
|
||||
resend_user_email_confirmation:
|
||||
resend: "Reenviar"
|
||||
sending: "Reenviar..."
|
||||
done: "Reenvio feito ✓"
|
||||
failed: "Reenvio falhou ✗"
|
||||
insufficient_stock: "Stock disponível insuficiente, apenas %{on_hand} disponíveis"
|
||||
out_of_stock:
|
||||
reduced_stock_available: Stock reduzido disponível
|
||||
out_of_stock_text: >
|
||||
@@ -2338,6 +2489,7 @@ pt:
|
||||
'yes': "Sob encomenda"
|
||||
variant_overrides:
|
||||
on_demand:
|
||||
use_producer_settings: "Usar configurações do produtor"
|
||||
'yes': "Sim"
|
||||
'no': "Não"
|
||||
inventory_products: "Produtos de Inventário"
|
||||
@@ -2374,7 +2526,9 @@ pt:
|
||||
confirmation: |
|
||||
Isto colocará a zero o stock de todos os produtos desta organização que não estejam presentes no ficheiro carregado.
|
||||
order_cycles:
|
||||
create_failure: "Falhou a criação do ciclo de encomendas"
|
||||
update_success: 'O seu ciclo de encomendas foi actualizado.'
|
||||
update_failure: "Falhou a atualização do ciclo de encomendas"
|
||||
no_distributors: Não existem distribuidores neste ciclo de encomendas. Este ciclo de encomendas só ficará visível para os consumidores quando um distribuidor for adicionado. Gostaria de continuar a guardar este ciclo de encomendas?
|
||||
enterprises:
|
||||
producer: "Produtor"
|
||||
@@ -2400,55 +2554,163 @@ pt:
|
||||
order_management:
|
||||
reports:
|
||||
enterprise_fee_summary:
|
||||
date_end_before_start_error: "deve ser depois do início"
|
||||
parameter_not_allowed_error: "Não está autorizado a usar um ou mais filtros selecionados neste relatório."
|
||||
fee_calculated_on_transfer_through_all: "Tudo"
|
||||
fee_calculated_on_transfer_through_entire_orders: "Encomendas Completas pelo %{distributor}"
|
||||
tax_category_various: "Vários"
|
||||
fee_type:
|
||||
payment_method: "Método de Pagamento"
|
||||
shipping_method: "Envio"
|
||||
fee_placements:
|
||||
supplier: "Entrada"
|
||||
distributor: "Saída"
|
||||
coordinator: "Coordenador"
|
||||
tax_category_name:
|
||||
shipping_instance_rate: "Taxa da Plataforma"
|
||||
formats:
|
||||
csv:
|
||||
header:
|
||||
fee_type: "Tipo de Taxa"
|
||||
enterprise_name: "Organização"
|
||||
fee_name: "Nome da Taxa"
|
||||
customer_name: "Consumidor"
|
||||
fee_placement: "Taxa"
|
||||
fee_calculated_on_transfer_through_name: "Calculo da Taxa na Transferência"
|
||||
tax_category_name: "Categoria de Imposto"
|
||||
total_amount: "Soma Total"
|
||||
html:
|
||||
header:
|
||||
fee_type: "Tipo de Taxa"
|
||||
enterprise_name: "Organização"
|
||||
fee_name: "Nome da Taxa"
|
||||
customer_name: "Consumidor"
|
||||
fee_placement: "Taxa"
|
||||
fee_calculated_on_transfer_through_name: "Calculo da Taxa na Transferência"
|
||||
tax_category_name: "Categoria de Imposto"
|
||||
total_amount: "Soma Total"
|
||||
invalid_filter_parameters: "Os filtros que selecionou para este relatório são inválidos."
|
||||
order: "Encomenda"
|
||||
distribution: "Distribuição"
|
||||
order_details: "Detalhes da Encomenda"
|
||||
customer_details: "Detalhes do/a Consumidor/a"
|
||||
adjustments: "Ajustes"
|
||||
payments: "Pagamentos"
|
||||
payment: "Pagamento"
|
||||
payment_method: "Método de Pagamento"
|
||||
shipment: "Envio"
|
||||
shipment_inc_vat: "Envio incluíndo IVA"
|
||||
shipping_tax_rate: "Taxa de Imposto sobre o Envio"
|
||||
category: "Categoria"
|
||||
delivery: "Entrega"
|
||||
temperature_controlled: "Temperatura Controlada"
|
||||
new_product: "Novo Produto"
|
||||
administration: "Administração"
|
||||
logged_in_as: "Ligado/a como"
|
||||
account: "Conta"
|
||||
logout: "Terminar sessão"
|
||||
date_range: "Intervalo de Datas"
|
||||
status: "estado"
|
||||
new: "Novo"
|
||||
start: "Começar"
|
||||
stop: "Parar"
|
||||
first: "Primeiro"
|
||||
previous: "Anterior"
|
||||
last: "Último"
|
||||
spree:
|
||||
your_order_is_empty_add_product: "A sua encomenda está vazia, por favor procure e adicione um produto em cima"
|
||||
add_product: "Adicionar Produto"
|
||||
name_or_sku: "Nome ou Código (insira pelo menos 4 caracteres)"
|
||||
resend: Reenviar
|
||||
back_to_orders_list: Voltar à Lista de Encomendas
|
||||
select_stock: "Selecione Quantidade"
|
||||
location: "Localização"
|
||||
count_on_hand: "Disponível"
|
||||
quantity: "Quantidade"
|
||||
package_from: "Embalagem de"
|
||||
item_description: "Descrição do Item"
|
||||
price: "Preço"
|
||||
total: "Total"
|
||||
edit: "Editar"
|
||||
split: "Separar"
|
||||
delete: "Apagar"
|
||||
cannot_set_shipping_method_without_address: "Não pode definir Método de Envio até os detalhes do/a consumidor/a estiverem definidos."
|
||||
no_tracking_present: "Detalhes de tracking não definidos."
|
||||
order_total: "Total da Encomenda"
|
||||
customer_details: "Detalhes do/a Consumidor/a"
|
||||
customer_search: "Pesquisa de Consumidor/a"
|
||||
choose_a_customer: "Escolha um/a consumidor/a"
|
||||
account: "Conta"
|
||||
billing_address: "Morada de faturação"
|
||||
shipping_address: "Morada de Envio"
|
||||
first_name: "Primeiro nome"
|
||||
last_name: "Último nome"
|
||||
street_address: "Morada"
|
||||
street_address_2: "Morada (continuação)"
|
||||
city: "Cidade"
|
||||
zip: "Código Postal"
|
||||
country: "País"
|
||||
state: "Região"
|
||||
phone: "Telefone"
|
||||
update: "Atualizar"
|
||||
use_billing_address: "Utilizar Morada de Faturação"
|
||||
adjustments: "Ajustes"
|
||||
continue: "Continuar"
|
||||
fill_in_customer_info: "Por favor preencha informação do/a consumidor/a"
|
||||
new_payment: "Novo Pagamento"
|
||||
configurations: "Configurações"
|
||||
general_settings: "Configurações Gerais"
|
||||
site_name: "Nome do Site"
|
||||
site_url: "URL do Site"
|
||||
default_seo_title: "Título SEO por defeito"
|
||||
default_meta_description: "Meta Description por defeito"
|
||||
default_meta_keywords: "Meta keywords por defeito"
|
||||
security_settings: "Configurações de Segurança"
|
||||
allow_ssl_in_development_and_test: "Permitir que SSL seja utilizado quando em desenvolvimento e testes"
|
||||
allow_ssl_in_production: "Permitir que SSL seja usado em produção"
|
||||
allow_ssl_in_staging: "Permitir que SSL seja usado em pre-produção"
|
||||
check_for_spree_alerts: "Veja Alertas do Spree"
|
||||
currency_decimal_mark: "Separador Decimal da Moeda"
|
||||
currency_settings: "Configurações de Moeda"
|
||||
currency_symbol_position: Colocar o símbolo de moeda antes ou depois do valor?
|
||||
currency_thousands_separator: "Separador de milhares na moeda"
|
||||
hide_cents: "Esconder cêntimos"
|
||||
display_currency: "Mostrar moeda"
|
||||
choose_currency: "Escolher Moeda"
|
||||
mail_method_settings: "Configurações de Email"
|
||||
general: "Geral"
|
||||
enable_mail_delivery: "Ativar Envios de Email"
|
||||
send_mails_as: "Enviar Emails como"
|
||||
smtp_send_all_emails_as_from_following_address: "Enviar todos os emails a partir do seguinte endereço."
|
||||
send_copy_of_all_mails_to: "Enviar cópia de todos os emails para"
|
||||
smtp_send_copy_to_this_addresses: "Envia uma cópia de todos os email enviados para este endereço. Para múltiplos endereços, separar por vírgulas."
|
||||
intercept_email_address: "Interceptar Endereço de Email"
|
||||
intercept_email_instructions: "Substituir destinatário de todos os email por este endereço."
|
||||
smtp: "SMTP"
|
||||
smtp_domain: "Domínio SMTP"
|
||||
smtp_mail_host: "Servidor de Email SMTP"
|
||||
smtp_port: "Porta SMTP"
|
||||
secure_connection_type: "Tipo de Ligação Segura"
|
||||
smtp_authentication_type: "Tipo de Autenticação SMTP"
|
||||
smtp_username: "Utilizador SMTP"
|
||||
smtp_password: "Password SMTP"
|
||||
image_settings: "Configurações de Imagens"
|
||||
image_settings_warning: "Terá de regenerar os ícones se alterar is estilos. Para tal execute rake paperclip:refresh:thumbnails CLASS=Spree::Image"
|
||||
attachment_default_style: Estilo dos Anexos
|
||||
attachment_default_url: "URL por defeito dos Anexos"
|
||||
attachment_path: "Localização dos Anexos"
|
||||
attachment_styles: "Estilos do Anexo"
|
||||
attachment_url: "URL do Anexo"
|
||||
add_new_style: "Adicionar Novo Estilo"
|
||||
image_settings_updated: "Configurações de Imagens actualizadas com sucesso."
|
||||
tax_categories: "Categorias de Impostos"
|
||||
listing_tax_categories: "Lista de Categorias de Impostos"
|
||||
back_to_tax_categories_list: "Voltar à Lista de Categorias de Impostos"
|
||||
tax rate: "Taxas de Imposto"
|
||||
new_tax_rate: "Nova Taxa de Imposto"
|
||||
tax_category: "Categoria de Imposto"
|
||||
rate: "Taxa"
|
||||
tax_rate_amount_explanation: "Taxas de Imposto são uma quantidade decimal que suportam o cálculo (por exemplo, se a taxa de imposto for 5%, insira 0.05)"
|
||||
included_in_price: "Incluído no Preço"
|
||||
show_rate_in_label: "Mostrar taxa na etiqueta"
|
||||
back_to_tax_rates_list: "Voltar à lista de Taxas de Imposto"
|
||||
@@ -2464,14 +2726,37 @@ pt:
|
||||
iso_name: "Nome ISO"
|
||||
states_required: "Regiões obrigatórias"
|
||||
editing_country: "Editar País"
|
||||
back_to_countries_list: "Voltar à Lista de Países"
|
||||
states: "Regiões"
|
||||
abbreviation: "Abreviatura"
|
||||
new_state: "Nova Região"
|
||||
payment_methods: "Métodos de pagamento"
|
||||
new_payment_method: "Novo Método de Pagamento"
|
||||
provider: "Fornecedor"
|
||||
taxonomies: "Taxonomias"
|
||||
new_taxonomy: "Nova Taxonomia"
|
||||
back_to_taxonomies_list: "Voltar à Lista de Taxonomias"
|
||||
shipping_methods: "Métodos de Envio"
|
||||
shipping_categories: "Categorias de Envio"
|
||||
new_shipping_category: "Nova Categoria de Envio"
|
||||
back_to_shipping_categories: "Voltar à Lista de Categorias de Envio"
|
||||
analytics_trackers: "Trackers do Analytics"
|
||||
no_trackers_found: "Nenhum Tracker encontrado"
|
||||
new_tracker: "Novo Tracker"
|
||||
add_one: "Adicionar um"
|
||||
google_analytics_id: "ID do Analytics"
|
||||
back_to_trackers_list: "Voltar à Lista de Trackers"
|
||||
name: "Nome"
|
||||
description: "Descrição"
|
||||
type: "Tipo"
|
||||
default: "por defeito"
|
||||
calculator: "Calculadora"
|
||||
zone: "Zona"
|
||||
display: "Mostrar"
|
||||
environment: "Ambiente"
|
||||
active: "Ativo"
|
||||
nore: "Mais"
|
||||
no_results: "Nenhum resultado"
|
||||
create: "Criar"
|
||||
loading: "A carregar"
|
||||
email: Email
|
||||
@@ -2479,6 +2764,7 @@ pt:
|
||||
my_account: "A minha conta"
|
||||
date: "Data"
|
||||
time: "Hora"
|
||||
inventory_error_flash_for_insufficient_quantity: "Um item do seu carrinho ficou indisponível."
|
||||
inventory: Inventário
|
||||
zipcode: Código postal
|
||||
weight: Peso (por kg)
|
||||
@@ -2487,6 +2773,10 @@ pt:
|
||||
errors:
|
||||
messages:
|
||||
blank: "não pode ser vazio"
|
||||
layouts:
|
||||
admin:
|
||||
header:
|
||||
store: Loja
|
||||
admin:
|
||||
tab:
|
||||
dashboard: "Painel de controlo"
|
||||
@@ -2494,15 +2784,22 @@ pt:
|
||||
bulk_order_management: "Gestão de Encomendas por Atacado"
|
||||
subscriptions: "Subscrições"
|
||||
products: "Produtos"
|
||||
option_types: "Tipos de Opções"
|
||||
properties: "Propriedades"
|
||||
prototypes: "Protótipos"
|
||||
variant_overrides: "Inventário"
|
||||
reports: "Relatórios"
|
||||
configuration: "Configuração"
|
||||
users: "Utilizadores"
|
||||
roles: "Papeis"
|
||||
order_cycles: "Ciclos de Encomendas"
|
||||
enterprises: "Organizações"
|
||||
enterprise_relationships: "Permissões"
|
||||
customers: "Consumidores/as"
|
||||
groups: "Grupos"
|
||||
product_properties:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Herdar propriedades de %{supplier}? (excepto se já alterado em cima)"
|
||||
orders:
|
||||
index:
|
||||
listing_orders: "Lista de Encomendas"
|
||||
@@ -2517,7 +2814,9 @@ pt:
|
||||
next: "Seguinte"
|
||||
loading: "A carregar"
|
||||
no_orders_found: "Nenhuma encomenda encontrada"
|
||||
results_found: "%{number} resultados encontrados."
|
||||
viewing: "A ver de %{start}a %{end}."
|
||||
print_invoices: "Imprimir Faturas"
|
||||
sortable_header:
|
||||
payment_state: "Estado do Pagamento"
|
||||
shipment_state: "Estado do envio"
|
||||
@@ -2540,6 +2839,8 @@ pt:
|
||||
products:
|
||||
active_products:
|
||||
zero: "Não tem nenhum produto ativo."
|
||||
one: "Tem um produto ativo"
|
||||
other: "Tem %{count} produtos ativos"
|
||||
order_cycles:
|
||||
order_cycles: "Ciclos de Encomendas"
|
||||
order_cycles_tip: "Os ciclos de encomendas determinam quando e onde é que os seus produtos estão disponíveis para os consumidores."
|
||||
@@ -2549,6 +2850,12 @@ pt:
|
||||
other: "Tem %{count}ciclos de encomendas activos."
|
||||
manage_order_cycles: "GERIR CICLOS DE ENCOMENDAS"
|
||||
payment_methods:
|
||||
new:
|
||||
new_payment_method: "Novo Método de Pagamento"
|
||||
back_to_payment_methods_list: "Voltar à Lista de Métodos de Pagamento"
|
||||
edit:
|
||||
editing_payment_method: "Editar Método de Pagamento"
|
||||
back_to_payment_methods_list: "Voltar à Lista de Métodos de Pagamento"
|
||||
stripe_connect:
|
||||
enterprise_select_placeholder: Escolher...
|
||||
loading_account_information_msg: A carregar informação de conta do Stripe, por favor aguarde...
|
||||
@@ -2600,14 +2907,21 @@ pt:
|
||||
display_as:
|
||||
display_as: Mostrar como
|
||||
reports:
|
||||
table:
|
||||
select_and_search: "Selecione os filtros e carregue em %{option} para ver os seus dados."
|
||||
bulk_coop:
|
||||
bulk_coop_supplier_report: 'Cooperativa por Atacado - Totais por Fornecedor'
|
||||
bulk_coop_allocation: 'Cooperativa por Atacado - Alocação'
|
||||
bulk_coop_packing_sheets: 'Cooperativa por Atacado - Folhas de Empacotamento'
|
||||
bulk_coop_customer_payments: 'Cooperativa por Atacado - Pagamentos do Consumidor'
|
||||
enterprise_fee_summaries:
|
||||
filters:
|
||||
date_range: "Intervalo de Datas"
|
||||
report_format_csv: "Descarregar como csv"
|
||||
generate_report: "Gerar Relatório"
|
||||
report:
|
||||
none: "Nenhum"
|
||||
select_and_search: "Selecione filtros e carregue em Gerar Relatório para ver os seus dados."
|
||||
users:
|
||||
index:
|
||||
listing_users: "Lista de Utilizadores"
|
||||
@@ -2634,8 +2948,11 @@ pt:
|
||||
general_settings:
|
||||
edit:
|
||||
legal_settings: "Configurações Legais"
|
||||
cookies_consent_banner_toggle: "Mostrar o Banner de consentimento de Cookies"
|
||||
privacy_policy_url: "URL da Politíca de Privacidade"
|
||||
enterprises_require_tos: "As organizações têm de aceitar os Termos de Serviço"
|
||||
cookies_policy_matomo_section: "Mostrar a secção do Matomo na página da política de Cookies"
|
||||
cookies_policy_ga_section: "Mostrar a secção do Google Analytics na página de política de Cookies"
|
||||
footer_tos_url: "URL dos Termos de Serviço"
|
||||
checkout:
|
||||
payment:
|
||||
@@ -2653,6 +2970,9 @@ pt:
|
||||
login_to_view_order: "Por favor faça login para ver a sua encomenda."
|
||||
bought:
|
||||
item: "Já encomendou neste ciclo"
|
||||
line_item:
|
||||
insufficient_stock: "Stock disponível insuficiente, apenas %{on_hand} disponíveis"
|
||||
out_of_stock: "Sem Stock"
|
||||
shipment_states:
|
||||
backorder: rutura de stock
|
||||
partial: parcial
|
||||
@@ -2744,6 +3064,8 @@ pt:
|
||||
delete?: Apagar?
|
||||
cards:
|
||||
authorised_shops: Lojas Autorizadas
|
||||
authorised_shops_popover: Esta é uma lista de organizações que está autorizada a cobrar o seu cartão de crédito por defeito para as subscrições que tem. Os detalhes do seu cartão não serão partilhados com os vendedores. Será sempre notificado quando houver alguma cobrança.
|
||||
saved_cards_popover: Esta é a lista de cartões que optou por guardar para uso futuro. O seu cartão por defeito será selecionado quando fizer checkout e pode ser cobrado pelas organizações que autorizou (veja à direita).
|
||||
authorised_shops:
|
||||
shop_name: "Nome da Loja"
|
||||
allow_charges?: "Permitir Taxas?"
|
||||
|
||||
@@ -102,55 +102,57 @@ module OpenFoodNetwork
|
||||
sort_by: proc { |full_name| full_name } } ]
|
||||
when "order_cycle_customer_totals"
|
||||
[ { group_by: proc { |line_item| line_item.order.distributor },
|
||||
sort_by: proc { |distributor| distributor.name } },
|
||||
sort_by: proc { |distributor| distributor.name } },
|
||||
{ group_by: proc { |line_item| line_item.order },
|
||||
sort_by: proc { |order| order.bill_address.lastname + " " + order.bill_address.firstname },
|
||||
summary_columns: [
|
||||
proc { |line_items| line_items.first.order.distributor.name },
|
||||
proc { |line_items| line_items.first.order.bill_address.firstname + " " + line_items.first.order.bill_address.lastname },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| I18n.t('admin.reports.total') },
|
||||
proc { |line_items| "" },
|
||||
sort_by: proc { |order| order.bill_address.full_name_reverse },
|
||||
summary_columns: [
|
||||
proc { |line_items| line_items.first.order.distributor.name },
|
||||
proc { |line_items| line_items.first.order.bill_address.full_name },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| I18n.t('admin.reports.total') },
|
||||
proc { |line_items| "" },
|
||||
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| line_items.sum { |li| li.amount } },
|
||||
proc { |line_items| line_items.sum { |li| li.amount_with_adjustments } },
|
||||
proc { |line_items| line_items.map { |li| li.order }.uniq.sum { |o| o.admin_and_handling_total } },
|
||||
proc { |line_items| line_items.map { |li| li.order }.uniq.sum { |o| o.ship_total } },
|
||||
proc { |line_items| line_items.map { |li| li.order }.uniq.sum { |o| o.payment_fee } },
|
||||
proc { |line_items| line_items.map { |li| li.order }.uniq.sum { |o| o.total } },
|
||||
proc { |line_items| line_items.all? { |li| li.order.paid? } ? I18n.t(:yes) : I18n.t(:no) },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| line_items.sum(&:amount) },
|
||||
proc { |line_items| line_items.sum(&:amount_with_adjustments) },
|
||||
proc { |line_items| line_items.first.order.admin_and_handling_total },
|
||||
proc { |line_items| line_items.first.order.ship_total },
|
||||
proc { |line_items| line_items.first.order.payment_fee },
|
||||
proc { |line_items| line_items.first.order.total },
|
||||
proc { |line_items| line_items.first.order.paid? ? I18n.t(:yes) : I18n.t(:no) },
|
||||
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
|
||||
proc { |line_items| line_items.first.order.special_instructions } ,
|
||||
proc { |line_items| "" },
|
||||
|
||||
proc { |line_items| line_items.first.order.order_cycle.andand.name },
|
||||
proc { |line_items| line_items.first.order.payments.first.andand.payment_method.andand.name },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" }
|
||||
] },
|
||||
proc { |line_items| line_items.first.order.special_instructions } ,
|
||||
proc { |line_items| "" },
|
||||
|
||||
proc { |line_items| line_items.first.order.order_cycle.andand.name },
|
||||
proc { |line_items|
|
||||
line_items.first.order.payments.first.andand.payment_method.andand.name
|
||||
},
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| "" }
|
||||
] },
|
||||
{ group_by: proc { |line_item| line_item.product },
|
||||
sort_by: proc { |product| product.name } },
|
||||
sort_by: proc { |product| product.name } },
|
||||
{ group_by: proc { |line_item| line_item.variant },
|
||||
sort_by: proc { |variant| variant.full_name } },
|
||||
{ group_by: proc { |line_item| line_item.full_name },
|
||||
sort_by: proc { |full_name| full_name } } ]
|
||||
sort_by: proc { |full_name| full_name } } ]
|
||||
else
|
||||
[ { group_by: proc { |line_item| line_item.product.supplier },
|
||||
sort_by: proc { |supplier| supplier.name } },
|
||||
@@ -222,7 +224,7 @@ module OpenFoodNetwork
|
||||
proc { |line_items| line_items.first.order.ship_address.andand.state if rsa.call(line_items) },
|
||||
|
||||
proc { |line_items| "" },
|
||||
proc { |line_items| line_items.first.product.sku },
|
||||
proc { |line_items| line_items.first.variant.sku },
|
||||
|
||||
proc { |line_items| line_items.first.order.order_cycle.andand.name },
|
||||
proc { |line_items| line_items.first.order.payments.first.andand.payment_method.andand.name },
|
||||
|
||||
@@ -35,6 +35,84 @@ module Spree
|
||||
assigns(:variants).should match_array [v1, v2]
|
||||
end
|
||||
end
|
||||
|
||||
describe '#destroy' do
|
||||
let(:variant) { create(:variant) }
|
||||
|
||||
context 'when requesting with js' do
|
||||
before do
|
||||
allow(Spree::Variant).to receive(:find).with(variant.id.to_s) { variant }
|
||||
allow(variant).to receive(:delete)
|
||||
end
|
||||
|
||||
it 'deletes the variant' do
|
||||
spree_delete :destroy, id: variant.id, product_id: variant.product.permalink, format: 'js'
|
||||
expect(variant).to have_received(:delete)
|
||||
end
|
||||
|
||||
it 'shows a success flash message' do
|
||||
spree_delete :destroy, id: variant.id, product_id: variant.product.permalink, format: 'js'
|
||||
expect(flash[:success]).to eq(I18n.t('notice_messages.variant_deleted'))
|
||||
end
|
||||
|
||||
it 'renders spree/admin/shared/destroy' do
|
||||
spree_delete :destroy, id: variant.id, product_id: variant.product.permalink, format: 'js'
|
||||
expect(response).to render_template('spree/admin/shared/_destroy')
|
||||
end
|
||||
|
||||
it 'refreshes the cache' do
|
||||
expect(OpenFoodNetwork::ProductsCache).to receive(:variant_destroyed).with(variant)
|
||||
spree_delete :destroy, id: variant.id, product_id: variant.product.permalink, format: 'js'
|
||||
end
|
||||
|
||||
it 'destroys all its exchanges' do
|
||||
exchange = create(:exchange)
|
||||
variant.exchanges << exchange
|
||||
|
||||
spree_delete :destroy, id: variant.id, product_id: variant.product.permalink, format: 'js'
|
||||
expect(variant.exchanges).to be_empty
|
||||
end
|
||||
end
|
||||
|
||||
context 'when requesting with html' do
|
||||
before do
|
||||
allow(Spree::Variant).to receive(:find).with(variant.id.to_s) { variant }
|
||||
allow(variant).to receive(:delete)
|
||||
end
|
||||
|
||||
it 'deletes the variant' do
|
||||
spree_delete :destroy, id: variant.id, product_id: variant.product.permalink, format: 'html'
|
||||
expect(variant).to have_received(:delete)
|
||||
end
|
||||
|
||||
it 'shows a success flash message' do
|
||||
spree_delete :destroy, id: variant.id, product_id: variant.product.permalink, format: 'html'
|
||||
expect(flash[:success]).to eq(I18n.t('notice_messages.variant_deleted'))
|
||||
end
|
||||
|
||||
it 'redirects to admin_product_variants_url' do
|
||||
spree_delete :destroy, id: variant.id, product_id: variant.product.permalink, format: 'html'
|
||||
expect(response).to redirect_to(
|
||||
controller: 'spree/admin/variants',
|
||||
action: :index,
|
||||
product_id: variant.product.permalink
|
||||
)
|
||||
end
|
||||
|
||||
it 'refreshes the cache' do
|
||||
expect(OpenFoodNetwork::ProductsCache).to receive(:variant_destroyed).with(variant)
|
||||
spree_delete :destroy, id: variant.id, product_id: variant.product.permalink, format: 'js'
|
||||
end
|
||||
|
||||
it 'destroys all its exchanges' do
|
||||
exchange = create(:exchange)
|
||||
variant.exchanges << exchange
|
||||
|
||||
spree_delete :destroy, id: variant.id, product_id: variant.product.permalink, format: 'js'
|
||||
expect(variant.exchanges).to be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,116 +1,242 @@
|
||||
require 'spec_helper'
|
||||
|
||||
include AuthenticationWorkflow
|
||||
describe OpenFoodNetwork::OrdersAndFulfillmentsReport do
|
||||
include AuthenticationWorkflow
|
||||
|
||||
module OpenFoodNetwork
|
||||
describe OrdersAndFulfillmentsReport do
|
||||
describe "fetching orders" do
|
||||
let(:d1) { create(:distributor_enterprise) }
|
||||
let(:oc1) { create(:simple_order_cycle) }
|
||||
let(:o1) { create(:order, completed_at: 1.day.ago, order_cycle: oc1, distributor: d1) }
|
||||
let(:li1) { build(:line_item_with_shipment) }
|
||||
let(:distributor) { create(:distributor_enterprise) }
|
||||
let(:order_cycle) { create(:simple_order_cycle) }
|
||||
let(:address) { create(:address) }
|
||||
let(:order) {
|
||||
create(
|
||||
:order,
|
||||
completed_at: 1.day.ago,
|
||||
order_cycle: order_cycle,
|
||||
distributor: distributor,
|
||||
bill_address: address
|
||||
)
|
||||
}
|
||||
let(:line_item) { build(:line_item_with_shipment) }
|
||||
let(:user) { create(:user) }
|
||||
let(:admin_user) { create(:admin_user) }
|
||||
|
||||
before { o1.line_items << li1 }
|
||||
describe "fetching orders" do
|
||||
before { order.line_items << line_item }
|
||||
|
||||
context "as a site admin" do
|
||||
let(:user) { create(:admin_user) }
|
||||
subject { PackingReport.new user, {}, true }
|
||||
context "as a site admin" do
|
||||
subject { described_class.new admin_user, {}, true }
|
||||
|
||||
it "fetches completed orders" do
|
||||
o2 = create(:order)
|
||||
o2.line_items << build(:line_item)
|
||||
subject.table_items.should == [li1]
|
||||
it "fetches completed orders" do
|
||||
o2 = create(:order)
|
||||
o2.line_items << build(:line_item)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
end
|
||||
|
||||
it "does not show cancelled orders" do
|
||||
o2 = create(:order, state: "canceled", completed_at: 1.day.ago)
|
||||
o2.line_items << build(:line_item_with_shipment)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
end
|
||||
end
|
||||
|
||||
context "as a manager of a supplier" do
|
||||
subject { described_class.new user, {}, true }
|
||||
|
||||
let(:s1) { create(:supplier_enterprise) }
|
||||
|
||||
before do
|
||||
s1.enterprise_roles.create!(user: user)
|
||||
end
|
||||
|
||||
context "that has granted P-OC to the distributor" do
|
||||
let(:o2) {
|
||||
create(
|
||||
:order,
|
||||
distributor: distributor,
|
||||
completed_at: 1.day.ago,
|
||||
bill_address: create(:address),
|
||||
ship_address: create(:address)
|
||||
)
|
||||
}
|
||||
let(:li2) { build(:line_item_with_shipment, product: create(:simple_product, supplier: s1)) }
|
||||
|
||||
before do
|
||||
o2.line_items << li2
|
||||
create(
|
||||
:enterprise_relationship,
|
||||
parent: s1,
|
||||
child: distributor,
|
||||
permissions_list: [:add_to_order_cycle]
|
||||
)
|
||||
end
|
||||
|
||||
it "does not show cancelled orders" do
|
||||
o2 = create(:order, state: "canceled", completed_at: 1.day.ago)
|
||||
o2.line_items << build(:line_item_with_shipment)
|
||||
subject.table_items.should == [li1]
|
||||
it "shows line items supplied by my producers, with names hidden" do
|
||||
expect(subject.table_items).to eq([li2])
|
||||
expect(subject.table_items.first.order.bill_address.firstname).to eq("HIDDEN")
|
||||
end
|
||||
end
|
||||
|
||||
context "as a manager of a supplier" do
|
||||
let!(:user) { create(:user) }
|
||||
subject { OrdersAndFulfillmentsReport.new user, {}, true }
|
||||
|
||||
let(:s1) { create(:supplier_enterprise) }
|
||||
context "that has not granted P-OC to the distributor" do
|
||||
let(:o2) {
|
||||
create(
|
||||
:order,
|
||||
distributor: distributor,
|
||||
completed_at: 1.day.ago,
|
||||
bill_address: create(:address),
|
||||
ship_address: create(:address)
|
||||
)
|
||||
}
|
||||
let(:li2) { build(:line_item_with_shipment, product: create(:simple_product, supplier: s1)) }
|
||||
|
||||
before do
|
||||
s1.enterprise_roles.create!(user: user)
|
||||
o2.line_items << li2
|
||||
end
|
||||
|
||||
context "that has granted P-OC to the distributor" do
|
||||
let(:o2) { create(:order, distributor: d1, completed_at: 1.day.ago, bill_address: create(:address), ship_address: create(:address)) }
|
||||
let(:li2) { build(:line_item_with_shipment, product: create(:simple_product, supplier: s1)) }
|
||||
|
||||
before do
|
||||
o2.line_items << li2
|
||||
create(:enterprise_relationship, parent: s1, child: d1, permissions_list: [:add_to_order_cycle])
|
||||
end
|
||||
|
||||
it "shows line items supplied by my producers, with names hidden" do
|
||||
subject.table_items.should == [li2]
|
||||
subject.table_items.first.order.bill_address.firstname.should == "HIDDEN"
|
||||
end
|
||||
end
|
||||
|
||||
context "that has not granted P-OC to the distributor" do
|
||||
let(:o2) { create(:order, distributor: d1, completed_at: 1.day.ago, bill_address: create(:address), ship_address: create(:address)) }
|
||||
let(:li2) { build(:line_item_with_shipment, product: create(:simple_product, supplier: s1)) }
|
||||
|
||||
before do
|
||||
o2.line_items << li2
|
||||
end
|
||||
|
||||
it "shows line items supplied by my producers, with names hidden" do
|
||||
subject.table_items.should == []
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "as a manager of a distributor" do
|
||||
let!(:user) { create(:user) }
|
||||
subject { OrdersAndFulfillmentsReport.new user, {}, true }
|
||||
|
||||
before do
|
||||
d1.enterprise_roles.create!(user: user)
|
||||
end
|
||||
|
||||
it "only shows line items distributed by enterprises managed by the current user" do
|
||||
d2 = create(:distributor_enterprise)
|
||||
d2.enterprise_roles.create!(user: create(:user))
|
||||
o2 = create(:order, distributor: d2, completed_at: 1.day.ago)
|
||||
o2.line_items << build(:line_item_with_shipment)
|
||||
subject.table_items.should == [li1]
|
||||
end
|
||||
|
||||
it "only shows the selected order cycle" do
|
||||
oc2 = create(:simple_order_cycle)
|
||||
o2 = create(:order, distributor: d1, order_cycle: oc2)
|
||||
o2.line_items << build(:line_item)
|
||||
subject.stub(:params).and_return(order_cycle_id_in: oc1.id)
|
||||
subject.table_items.should == [li1]
|
||||
it "shows line items supplied by my producers, with names hidden" do
|
||||
expect(subject.table_items).to eq([])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "columns are aligned" do
|
||||
let(:d1) { create(:distributor_enterprise) }
|
||||
let(:oc1) { create(:simple_order_cycle) }
|
||||
let(:o1) { create(:order, completed_at: 1.day.ago, order_cycle: oc1, distributor: d1) }
|
||||
let(:li1) { build(:line_item_with_shipment) }
|
||||
let(:user) { create(:admin_user)}
|
||||
context "as a manager of a distributor" do
|
||||
subject { described_class.new user, {}, true }
|
||||
|
||||
before { o1.line_items << li1 }
|
||||
before do
|
||||
distributor.enterprise_roles.create!(user: user)
|
||||
end
|
||||
|
||||
it 'has aligned columsn' do
|
||||
report_types = ["", "order_cycle_supplier_totals", "order_cycle_supplier_totals_by_distributor", "order_cycle_distributor_totals_by_supplier", "order_cycle_customer_totals"]
|
||||
it "only shows line items distributed by enterprises managed by the current user" do
|
||||
d2 = create(:distributor_enterprise)
|
||||
d2.enterprise_roles.create!(user: create(:user))
|
||||
o2 = create(:order, distributor: d2, completed_at: 1.day.ago)
|
||||
o2.line_items << build(:line_item_with_shipment)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
end
|
||||
|
||||
report_types.each do |report_type|
|
||||
report = OrdersAndFulfillmentsReport.new user, report_type: report_type
|
||||
report.header.size.should == report.columns.size
|
||||
end
|
||||
it "only shows the selected order cycle" do
|
||||
oc2 = create(:simple_order_cycle)
|
||||
o2 = create(:order, distributor: distributor, order_cycle: oc2)
|
||||
o2.line_items << build(:line_item)
|
||||
allow(subject).to receive(:params).and_return(order_cycle_id_in: order_cycle.id)
|
||||
expect(subject.table_items).to eq([line_item])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "columns are aligned" do
|
||||
it 'has aligned columsn' do
|
||||
report_types = [
|
||||
"",
|
||||
"order_cycle_supplier_totals",
|
||||
"order_cycle_supplier_totals_by_distributor",
|
||||
"order_cycle_distributor_totals_by_supplier",
|
||||
"order_cycle_customer_totals"
|
||||
]
|
||||
|
||||
report_types.each do |report_type|
|
||||
report = described_class.new admin_user, report_type: report_type
|
||||
expect(report.header.size).to eq(report.columns.size)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "order_cycle_customer_totals" do
|
||||
let!(:product) { line_item.product }
|
||||
let!(:fuji) { build(:variant, product: product, display_name: "Fuji", sku: "FUJI", on_hand: 100) }
|
||||
let!(:gala) { build(:variant, product: product, display_name: "Gala", sku: "GALA", on_hand: 100) }
|
||||
|
||||
let(:items) {
|
||||
report = described_class.new(admin_user, { report_type: "order_cycle_customer_totals" }, true)
|
||||
OpenFoodNetwork::OrderGrouper.new(report.rules, report.columns).table(report.table_items)
|
||||
}
|
||||
|
||||
before do
|
||||
# Clear price so it will be computed based on quantity and variant price.
|
||||
order.line_items << build(:line_item_with_shipment, variant: fuji, price: nil, quantity: 1)
|
||||
order.line_items << build(:line_item_with_shipment, variant: gala, price: nil, quantity: 2)
|
||||
end
|
||||
|
||||
it "has a product row" do
|
||||
product_name_field = items.first[5]
|
||||
expect(product_name_field).to eq product.name
|
||||
end
|
||||
|
||||
it "has a summary row" do
|
||||
product_name_field = items.last[5]
|
||||
expect(product_name_field).to eq "TOTAL"
|
||||
end
|
||||
|
||||
# Expected Report for Scenario:
|
||||
#
|
||||
# Row 1: Armstrong Amari, Fuji Apple, price: 8
|
||||
# Row 2: SUMMARY
|
||||
# Row 3: Bartoletti Brooklyn, Fuji Apple, price: 1 + 4
|
||||
# Row 4: Bartoletti Brooklyn, Gala Apple, price: 2
|
||||
# Row 5: SUMMARY
|
||||
describe "grouping of line items" do
|
||||
let!(:address) { create(:address, last_name: "Bartoletti", first_name: "Brooklyn") }
|
||||
|
||||
let!(:second_address) { create(:address, last_name: "Armstrong", first_name: "Amari") }
|
||||
let!(:second_order) do
|
||||
create(:order, completed_at: 1.day.ago, order_cycle: order_cycle, distributor: distributor,
|
||||
bill_address: second_address)
|
||||
end
|
||||
|
||||
before do
|
||||
# Add a second line item for Fuji variant to the order, to test grouping in this edge case.
|
||||
order.line_items << build(:line_item_with_shipment, variant: fuji, price: nil, quantity: 4)
|
||||
|
||||
second_order.line_items << build(:line_item_with_shipment, variant: fuji, price: nil, quantity: 8)
|
||||
end
|
||||
|
||||
it "groups line items by variant and order" do
|
||||
expect(items.length).to eq(5)
|
||||
|
||||
# Row 1: Armstrong Amari, Fuji Apple, price: 8
|
||||
row_data = items[0]
|
||||
expect(customer_name(row_data)).to eq(second_address.full_name)
|
||||
expect(amount(row_data)).to eq(fuji.price * 8)
|
||||
expect(variant_sku(row_data)).to eq(fuji.sku)
|
||||
|
||||
# Row 2: SUMMARY
|
||||
row_data = items[1]
|
||||
expect(totals_row?(row_data)).to eq(true)
|
||||
expect(customer_name(row_data)).to eq(second_address.full_name)
|
||||
expect(amount(row_data)).to eq(fuji.price * 8)
|
||||
|
||||
# Row 3: Bartoletti Brooklyn, Fuji Apple, price: 1 + 4
|
||||
row_data = items[2]
|
||||
expect(customer_name(row_data)).to eq(address.full_name)
|
||||
expect(amount(row_data)).to eq(fuji.price * 5)
|
||||
expect(variant_sku(row_data)).to eq(fuji.sku)
|
||||
|
||||
# Row 4: Bartoletti Brooklyn, Gala Apple, price: 2
|
||||
row_data = items[3]
|
||||
expect(customer_name(row_data)).to eq(address.full_name)
|
||||
expect(amount(row_data)).to eq(gala.price * 2)
|
||||
expect(variant_sku(row_data)).to eq(gala.sku)
|
||||
|
||||
# Row 5: SUMMARY
|
||||
row_data = items[4]
|
||||
expect(totals_row?(row_data)).to eq(true)
|
||||
expect(customer_name(row_data)).to eq(address.full_name)
|
||||
expect(amount(row_data)).to eq(fuji.price * 5 + gala.price * 2)
|
||||
end
|
||||
end
|
||||
|
||||
def totals_row?(row_data)
|
||||
row_data[5] == I18n.t("admin.reports.total")
|
||||
end
|
||||
|
||||
def customer_name(row_data)
|
||||
row_data[1]
|
||||
end
|
||||
|
||||
def amount(row_data)
|
||||
row_data[8]
|
||||
end
|
||||
|
||||
def variant_sku(row_data)
|
||||
row_data[23]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -24,6 +24,26 @@ describe Spree::Address do
|
||||
end
|
||||
end
|
||||
|
||||
describe "#full_name_reverse" do
|
||||
it "joins last name and first name" do
|
||||
address.firstname = "Jane"
|
||||
address.lastname = "Doe"
|
||||
expect(address.full_name_reverse).to eq("Doe Jane")
|
||||
end
|
||||
|
||||
it "is last name when first name is blank" do
|
||||
address.firstname = ""
|
||||
address.lastname = "Doe"
|
||||
expect(address.full_name_reverse).to eq("Doe")
|
||||
end
|
||||
|
||||
it "is first name when last name is blank" do
|
||||
address.firstname = "Jane"
|
||||
address.lastname = ""
|
||||
expect(address.full_name_reverse).to eq("Jane")
|
||||
end
|
||||
end
|
||||
|
||||
describe "geocode address" do
|
||||
it "should include address1, address2, zipcode, city, state and country" do
|
||||
expect(address.geocode_address).to include(address.address1)
|
||||
|
||||
@@ -188,7 +188,6 @@ module Spree
|
||||
end
|
||||
|
||||
it "refreshes the products cache for the entire product on destroy" do
|
||||
# Does this ever happen?
|
||||
expect(OpenFoodNetwork::ProductsCache).to receive(:product_changed).with(product)
|
||||
expect(OpenFoodNetwork::ProductsCache).to receive(:variant_destroyed).never
|
||||
master.destroy
|
||||
|
||||
Reference in New Issue
Block a user