Compare commits

...

20 Commits

Author SHA1 Message Date
Andy Brett
4a19a368dd Merge pull request #6706 from Matt-Yorkley/adjustments-migration
Fix issue with orphaned adjustments in migration
2021-01-20 13:23:36 -08:00
Andy Brett
dd38c8b3e2 add down method for migration 2021-01-20 12:56:03 -08:00
Matt-Yorkley
e1c13bc194 Fix issue with orphaned adjustments in migration 2021-01-20 13:42:14 +00:00
Andy Brett
a53cc6bc92 Update all locales with the latest Transifex translations 2021-01-19 19:07:37 -08:00
Andy Brett
89ce850da6 Merge pull request #6703 from openfoodfoundation/fix-datadog-init
Revert "Enable request queuing tracking in Datadog"
2021-01-19 18:39:21 -08:00
Andy Brett
012289e95f Merge pull request #6687 from openfoodfoundation/dependabot/bundler/monetize-1.10.0
Bump monetize from 1.9.4 to 1.10.0
2021-01-19 17:23:33 -08:00
Pau Pérez Fabregat
b84fb5814e Merge pull request #6696 from Matt-Yorkley/migration-issues
Update adjustment migration
2021-01-19 16:02:04 +01:00
Pau Pérez Fabregat
8b01c9c8ba Merge pull request #6279 from luisramos0/base_controller
Merge Spree::BaseController with ApplicationController and merge StoreController with ::BaseController
2021-01-19 15:52:47 +01:00
Matt-Yorkley
79b86f535d Move class definitions in adjustment migration 2021-01-19 13:33:37 +00:00
Luis Ramos
fc40775ca8 Make paypal controller inherit from base controller and not from old store controller 2021-01-18 23:33:05 +00:00
Maikel
334e270a11 Merge pull request #6552 from Matt-Yorkley/adjustments-order-association
[Adjustments] Associate all adjustments with an order
2021-01-19 08:43:13 +11:00
dependabot[bot]
d1eea4654a Bump monetize from 1.9.4 to 1.10.0
Bumps [monetize](https://github.com/RubyMoney/monetize) from 1.9.4 to 1.10.0.
- [Release notes](https://github.com/RubyMoney/monetize/releases)
- [Changelog](https://github.com/RubyMoney/monetize/blob/master/CHANGELOG.md)
- [Commits](https://github.com/RubyMoney/monetize/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-18 16:10:24 +00:00
Luis Ramos
4060e7debf Replace usages of Spree::BaseController with ApplicationController 2021-01-15 21:59:16 +00:00
Luis Ramos
7a22367b4a Make controllers use ::Basecontroller instead of StoreController 2021-01-15 21:59:16 +00:00
Luis Ramos
23e6048bde Merge StoreController with BaseController 2021-01-15 21:59:16 +00:00
Luis Ramos
ff8a81cee7 Remove includes already present in parent ApplicationController 2021-01-15 21:59:16 +00:00
Luis Ramos
0eab1b2339 Merge Spree::BaseController with ApplicationController 2021-01-15 21:59:16 +00:00
Matt-Yorkley
1eb08ba31c Define basic models in migration 2021-01-15 16:17:18 +00:00
Pau Perez
e83a3ff76d Revert "Enable request queuing tracking in Datadog"
This reverts commit 91e5276140.
2021-01-12 10:56:11 +01:00
Matt-Yorkley
ca4de40fa2 Associate all adjustments with an order
This change is introduced in the adjustments updates from Spree 2.2 and used heavily in new scopes and methods (not included here).
2021-01-11 17:35:35 +00:00
24 changed files with 186 additions and 93 deletions

View File

@@ -56,7 +56,7 @@ gem 'cancancan', '~> 1.7.0'
gem 'ffaker'
gem 'highline', '2.0.3' # Necessary for the install generator
gem 'json'
gem 'monetize', '~> 1.1'
gem 'monetize', '~> 1.10'
gem 'paranoia', '~> 2.4'
gem 'state_machines-activerecord'
gem 'stringex', '~> 2.8.5'

View File

@@ -450,9 +450,9 @@ GEM
mini_racer (0.2.15)
libv8 (> 7.3)
minitest (5.14.3)
monetize (1.9.4)
monetize (1.10.0)
money (~> 6.12)
money (6.13.8)
money (6.14.0)
i18n (>= 0.6.4, <= 2)
msgpack (1.3.3)
multi_json (1.15.0)
@@ -783,7 +783,7 @@ DEPENDENCIES
knapsack
letter_opener (>= 1.4.1)
mini_racer (= 0.2.15)
monetize (~> 1.1)
monetize (~> 1.10)
oauth2 (~> 1.4.4)
ofn-qz!
order_management!

View File

@@ -1,8 +1,13 @@
# frozen_string_literal: true
require "application_responder"
require 'open_food_network/referer_parser'
require_dependency 'spree/authentication_helpers'
require "application_responder"
require 'cancan'
require 'spree/core/controller_helpers/auth'
require 'spree/core/controller_helpers/respond_with'
require 'spree/core/controller_helpers/ssl'
require 'spree/core/controller_helpers/common'
require 'open_food_network/referer_parser'
class ApplicationController < ActionController::Base
self.responder = ApplicationResponder
@@ -10,6 +15,11 @@ class ApplicationController < ActionController::Base
protect_from_forgery
include Spree::Core::ControllerHelpers::Auth
include Spree::Core::ControllerHelpers::RespondWith
include Spree::Core::ControllerHelpers::SSL
include Spree::Core::ControllerHelpers::Common
prepend_before_action :restrict_iframes
before_action :set_cache_headers # prevent cart emptying via cache when using back button #1213
@@ -22,6 +32,8 @@ class ApplicationController < ActionController::Base
raise ActiveModel::ForbiddenAttributesError, params.to_s
end
respond_to :html
def redirect_to(options = {}, response_status = {})
::Rails.logger.error("Redirected by #{begin
caller(1).first
@@ -150,3 +162,5 @@ class ApplicationController < ActionController::Base
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end
end
require 'spree/i18n/initializer'

View File

@@ -1,17 +1,14 @@
require 'spree/core/controller_helpers/auth'
require 'spree/core/controller_helpers/common'
# frozen_string_literal: true
require 'spree/core/controller_helpers/order'
require 'spree/core/controller_helpers/respond_with'
require 'open_food_network/tag_rule_applicator'
class BaseController < ApplicationController
include Spree::Core::ControllerHelpers::Auth
include Spree::Core::ControllerHelpers::Common
layout 'darkswarm'
include Spree::Core::ControllerHelpers::Order
include Spree::Core::ControllerHelpers::RespondWith
include I18nHelper
include EnterprisesHelper
include OrderCyclesHelper
helper 'spree/base'

View File

@@ -2,7 +2,7 @@
require 'open_food_network/address_finder'
class CheckoutController < Spree::StoreController
class CheckoutController < ::BaseController
layout 'darkswarm'
include OrderStockCheck

View File

@@ -1,6 +1,6 @@
module Spree
module Admin
class BaseController < Spree::BaseController
class BaseController < ApplicationController
ssl_required
helper 'spree/admin/navigation'

View File

@@ -1,20 +0,0 @@
# frozen_string_literal: true
require 'cancan'
require 'spree/core/controller_helpers/auth'
require 'spree/core/controller_helpers/respond_with'
require 'spree/core/controller_helpers/ssl'
require 'spree/core/controller_helpers/common'
module Spree
class BaseController < ApplicationController
include Spree::Core::ControllerHelpers::Auth
include Spree::Core::ControllerHelpers::RespondWith
include Spree::Core::ControllerHelpers::SSL
include Spree::Core::ControllerHelpers::Common
respond_to :html
end
end
require 'spree/i18n/initializer'

View File

@@ -7,7 +7,7 @@
# to CheckoutController directly in the routes
# with a slash like "to: '/checkout#edit'", but it does not work in this case.
module Spree
class CheckoutController < Spree::StoreController
class CheckoutController < ::BaseController
def edit
flash.keep
redirect_to main_app.checkout_path

View File

@@ -1,5 +1,5 @@
module Spree
class OrdersController < Spree::StoreController
class OrdersController < ::BaseController
include OrderCyclesHelper
include Rails.application.routes.url_helpers

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
module Spree
class PaypalController < StoreController
class PaypalController < ::BaseController
ssl_allowed
include OrderStockCheck

View File

@@ -1,14 +0,0 @@
# frozen_string_literal: true
require 'spree/core/controller_helpers/order'
module Spree
class StoreController < Spree::BaseController
layout 'darkswarm'
include Spree::Core::ControllerHelpers::Order
include I18nHelper
before_action :set_locale
end
end

View File

@@ -1,5 +1,5 @@
module Spree
class UsersController < Spree::StoreController
class UsersController < ::BaseController
layout 'darkswarm'
ssl_required
skip_before_action :set_current_order, only: :show

View File

@@ -39,6 +39,8 @@ module Spree
belongs_to :adjustable, polymorphic: true
belongs_to :source, polymorphic: true
belongs_to :originator, polymorphic: true
belongs_to :order, class_name: "Spree::Order"
belongs_to :tax_rate, -> { where spree_adjustments: { originator_type: 'Spree::TaxRate' } },
foreign_key: 'originator_id'

View File

@@ -71,6 +71,7 @@ module Spree
amount: amount,
source: order,
originator: self,
order: order,
state: "closed",
label: label
)

View File

@@ -3,9 +3,7 @@ if ENV['DATADOG_RAILS_APM']
c.use :rails, service_name: 'rails'
c.use :delayed_job, service_name: 'delayed_job'
c.use :dalli, service_name: 'memcached'
c.analytics_enabled = true
c.runtime_metrics_enabled = true
c.request_queuing = true
end
end

View File

@@ -2376,6 +2376,7 @@ ar:
js:
saving: 'حفظ...'
changes_saved: 'تم حفظ التغييرات.'
authorising: "تفويض ..."
save_changes_first: حفظ التغييرات أولا.
all_changes_saved: تم حفظ جميع التغييرات
unsaved_changes: لم تحفظ التغييرات
@@ -3147,6 +3148,7 @@ ar:
payment_state: "حالة الدفعة"
errors:
messages:
included_price_validation: "لا يمكن تحديده إلا إذا قمت بتعيين منطقة ضريبية افتراضية"
blank: "لا يمكن أن تكون فارغة"
layouts:
admin:
@@ -3357,6 +3359,13 @@ ar:
deactivation_warning: "يمكن أن يؤدي إلغاء تنشيط طريقة الدفع إلى اختفاء طريقة الدفع من قائمتك. بدلاً من ذلك ، يمكنك إخفاء طريقة الدفع من صفحة الخروج عن طريق تعيين الخيار \"عرض\" إلى\"المكتب الخلفي فقط\"."
providers:
provider: "مزود"
check: "النقد / التحويل الإلكتروني / إلخ. (المدفوعات التي لا تتطلب المصادقة التلقائية)"
migs: "خدمة بوابة الإنترنت من ( MasterCard Internet Gateway Service MIGS)"
paypalexpress: "باي بال اكسبريس"
stripeconnect: "Stripe SCA"
stripesca: "Stripe SCA"
bogus: "Bogus"
bogussimple: "BogusSimple"
payments:
source_forms:
stripe:
@@ -3592,7 +3601,23 @@ ar:
paused: التعليق
canceled: الالغاء
paypal:
already_refunded: "تم رد هذه الدفعة ولا يمكن اتخاذ أي إجراء آخر بشأنها."
no_payment_via_admin_backend: "لا يمكنك شحن حسابات PayPal من خلال المسؤول للواجهة الخلفية في الوقت الحالي."
transaction: "معاملة PayPal"
payer_id: "معرف الدافع"
transaction_id: "رقم المعاملة"
token: "رمز"
refund: "إعادة المال"
refund_amount: "القيمة"
original_amount: "المبلغ الأصلي: %{amount}"
refund_successful: "تم استرداد المال عبر PayPal بنجاح"
refund_unsuccessful: "استرداد المال عبر PayPal غير ناجح"
actions:
refund: "إعادة المال"
flash:
cancel: "لا تريد استخدام PayPal؟ لا يوجد مشكلة."
connection_failed: "تعذر الاتصال بـ PayPal."
generic_error: "فشل PayPal. %{reasons}"
users:
form:
account_settings: إعدادت الحساب

View File

@@ -59,7 +59,7 @@ de_DE:
end_at: "Ende"
distributor_ids: "Hubs"
producer_ids: "Erzeuger"
order_cycle_ids: "Bestellrunden"
order_cycle_ids: "Bestellzyklen"
enterprise_fee_ids: "Gebührennamen"
shipping_method_ids: "Lieferart"
payment_method_ids: "Zahlungsarten"
@@ -193,7 +193,7 @@ de_DE:
home: "OFN"
title: "Open Food Network"
welcome_to: "Willkommen bei"
site_meta_description: "Wir starten ganz grundsätzlich. Mit LandwirtInnen und GärtnerInnen, die stolz und ehrlich ihre Geschichte erzählen. Mit Lieferanten, die Menschen fair und vertrauenswürdig mit Produkten verbinden. Mit KonsumentInnen, die glauben, daß ihre wöchentlichen Einkaufsentscheidungen..."
site_meta_description: "Wir starten ganz grundsätzlich. Mit LandwirtInnen und GärtnerInnen, die stolz und ehrlich ihre Geschichte erzählen. Mit Lieferanten, die Menschen fair und vertrauenswürdig mit Produkten verbinden. Mit KonsumentInnen, die glauben, dass ihre wöchentlichen Einkaufsentscheidungen..."
search_by_name: Suche nach Name oder Ort...
producers_join: 'Wir laden Deutsche Produzenten ein, jetzt dem Open Food Network beizutreten. '
charges_sales_tax: Berechnet Steuern?
@@ -1557,13 +1557,13 @@ de_DE:
producer_mail_delivery_instructions: "Lagerabholung / Lieferanweisungen:"
producer_mail_signoff: "Danke und die besten Wünsche"
shopping_oc_closed: Bestellungen sind geschlossen
shopping_oc_closed_description: "Bitte warten Sie, bis der nächste Zyklus beginnt (oder kontaktieren Sie uns direkt, um zu sehen, ob wir verspätete Bestellungen annehmen können)"
shopping_oc_last_closed: "Der letzte Zyklus wurde vor %{distance_of_time} geschlossen"
shopping_oc_closed_description: "Bitte warten Sie, bis der nächste Bestellzyklus öffnet (oder kontaktieren Sie uns direkt, um zu sehen, ob wir verspätete Bestellungen annehmen können)."
shopping_oc_last_closed: "Der letzte Bestellzyklus wurde vor %{distance_of_time} geschlossen."
shopping_oc_next_open: "Der nächste Zyklus wird in %{distance_of_time} geöffnet"
shopping_oc_select: "Wählen..."
shopping_tabs_home: "Startseite"
shopping_tabs_shop: "Laden"
shopping_tabs_about: "Über Uns"
shopping_tabs_about: "Über uns"
shopping_tabs_contact: "Kontakt"
shopping_contact_address: "Adresse"
shopping_contact_web: "Kontakt"
@@ -1571,13 +1571,14 @@ de_DE:
shopping_groups_part_of: "ist ein Teil von:"
shopping_producers_of_hub: "Erzeuger bei%{hub}"
enterprises_next_closing: "Nächster Bestellschluß"
enterprises_currently_open: "Bestellzyklus ist geöffnet"
enterprises_ready_for: "Fertig am"
enterprises_choose: "Wählen Sie, wann Sie Ihre Bestellung wollen:"
maps_open: "Offen"
maps_closed: "Geschlossen"
hubs_buy: "Suche nach:"
hubs_shopping_here: "Hier einkaufen"
hubs_orders_closed: "Momentan keine Bestellungen"
hubs_shopping_here: "Sie kaufen hier ein"
hubs_orders_closed: "Bestellzyklus geschlossen"
hubs_profile_only: "Profil nur"
hubs_delivery_options: "Lieferoptionen"
hubs_pickup: "Abholen"
@@ -1585,8 +1586,8 @@ de_DE:
hubs_producers: "Unsere Produzenten"
hubs_filter_by: "Filtern nach"
hubs_filter_type: "Art"
hubs_filter_delivery: "Lieferung"
hubs_filter_property: "Eigentum"
hubs_filter_delivery: "Lieferoptionen"
hubs_filter_property: "Eigenschaften"
hubs_matches: "Meintest Du?"
hubs_intro: Regional einkaufen
hubs_distance: Am nächsten
@@ -1597,7 +1598,7 @@ de_DE:
many: Sie haben <a href='%{path}' target='_blank'>%{count} Bestellungen mit %{shop}, die</a> derzeit zur Überprüfung geöffnet sind. Sie können Änderungen bis %{oc_close} vornehmen.
other: Sie haben <a href='%{path}' target='_blank'>%{count} Bestellungen mit %{shop}, die</a> derzeit zur Überprüfung geöffnet sind. Sie können Änderungen bis %{oc_close} vornehmen.
orders_changeable_orders_alert_html: Diese Bestellung wurde bestätigt, Sie können jedoch bis <strong> %{oc_close} </ strong> Änderungen vornehmen.
products_clear: Leeren
products_clear: Zurücksetzen
products_showing: "Angezeigt:"
products_results_for: "Ergebnisse für"
products_or: "oder"
@@ -1608,8 +1609,8 @@ de_DE:
products_filter_by: "Filtern nach"
products_filter_selected: "ausgewählt"
products_filter_heading: "Filter"
products_filter_clear: "Leeren"
products_filter_done: "Erledigt"
products_filter_clear: "Zurücksetzen"
products_filter_done: "Anwenden"
products_loading: "Lade Produkte..."
products_updating_cart: "Einkaufswagen aktualisieren..."
products_cart_empty: "Leerer Einkaufswagen"
@@ -1620,7 +1621,7 @@ de_DE:
products_update_error_msg: "Speichern Fail"
products_update_error_data: "Speichern wegen ungültiger Daten fehlgeschlagen:"
products_changes_saved: "Änderungen gespeichert"
products_no_results_html: "Für %{query} wurden leider keine Ergebnisse gefunden"
products_no_results_html: "Leider wurden keine Ergebnisse gefunden für %{query}."
products_clear_search: "Suche zurücksetzen"
search_no_results_html: "Es wurden leider keine Ergebnisse für %{query} gefunden. Versuchen Sie eine andere Suche?"
components_profiles_popover: "Profile haben keinen Laden im Open Food Network, verkaufen möglicherweise aber anderswo online oder offline."
@@ -1665,10 +1666,10 @@ de_DE:
producers_contact: Kontakt
producers_contact_phone: Anruf
producers_contact_social: Folgen
producers_buy_at_html: "Suche nach %{enterprise} Produkten unter:"
producers_buy_at_html: "Hier erhalten Sie %{enterprise}-Produkte:"
producers_filter: Filtern nach
producers_filter_type: Art
producers_filter_property: Eigentum
producers_filter_property: Eigenschaften
producers_title: Produzenten
producers_headline: Finden Sie lokale Produzenten
producers_signup_title: Melde dich als Produzent an
@@ -1703,8 +1704,8 @@ de_DE:
sell_embed: "Wir können auch einen OFN-Laden in Ihre eigene Website einbetten oder eine maßgeschneiderte Webseite für Ihr Lokalität oder Region erstellen."
sell_ask_services: "Fragen Sie uns nach OFN-Diensten."
shops_title: Läden
shops_headline: Einkaufen, verwandelt.
shops_text: Nahrung wächst in Zyklen, Bauern ernten in Zyklen und wir bestellen Nahrung in Zyklen. Wenn Sie feststellen, dass ein Bestellzyklus geschlossen ist, schauen Sie bald wieder vorbei.
shops_headline: Einkaufen, neu gedacht.
shops_text: Nahrung wächst in Zyklen, Bauern ernten in Zyklen und wir bestellen Nahrung in Zyklen. Ist ein Bestellzyklus gerade geschlossen, schauen Sie bald wieder vorbei.
shops_signup_title: Als Hub registrieren
shops_signup_headline: Lebensmittel-Hubs, unbegrenzt.
shops_signup_motivation: Was auch immer Ihr Modell ist, wir unterstützen Sie. Wie auch immer Sie sich ändern, wir sind bei Ihnen. Wir sind gemeinnützig, unabhängig und Open-Source. Wir sind die Software-Partner, von denen Sie schon immer geträumt haben.
@@ -1763,8 +1764,8 @@ de_DE:
password: Passwort
remember_me: Erinnere dich an mich
are_you_sure: "Bist du sicher?"
orders_open: "Bestellungen öffnen"
closing: "Schließen"
orders_open: "Geöffnet"
closing: "Schließt"
going_back_to_home_page: "Bring dich zurück auf die Homepage"
creating: Erstellen
updating: Aktualisierung
@@ -1871,7 +1872,7 @@ de_DE:
no_producer_help: "Wenn Sie kein Produzent sind, sind Sie wahrscheinlich jemand, der Lebensmittel verkauft und verteilt. Sie könnten ein Foodhub, eine Coop, eine Einkaufsgruppe, Einzelhändler, ein Hofladen, Großhändler oder vergleichbares sein."
create_profile: "Profil erstellen"
about:
title: "Über Uns"
title: "Über uns"
headline: "Schön!"
message: "Lassen Sie uns nun die Details überarbeiten"
success: "Erfolg! %{enterprise} wurde dem Open Food Network hinzugefügt"
@@ -1903,7 +1904,7 @@ de_DE:
logo_placeholder: "Ihr Logo wird hier zur Überprüfung angezeigt, sobald es hochgeladen wurde"
promo:
select_promo_image: "Schritt 3. Wählen Sie Promo Image"
promo_image_tip: "Tipp: Die als Banner dargestellte bevorzugte Größe beträgt 1200 × 260px"
promo_image_tip: "Tipp: Die als Banner dargestellte bevorzugte Größe beträgt 1200 × 260 px"
promo_image_label: "Wählen Sie ein Promobild"
promo_image_drag: "Verschieben Sie Ihre Promo hier"
review_promo_image: "Schritt 4. Überprüfen Sie Ihr Promo-Banner"
@@ -1944,7 +1945,7 @@ de_DE:
shop_variant_quantity_min: "Mindest"
shop_variant_quantity_max: "max"
follow: "Folgen"
shop_for_products_html: "Suche nach <span class=\"turquoise\">%{enterprise}</span> Produkten unter:"
shop_for_products_html: "Hier erhalten Sie <span class=\"turquoise\">%{enterprise}</span>-Produkte:"
change_shop: "Laden ändern auf:"
shop_at: "Kaufe jetzt bei:"
admin_fee: "Gebühr Administration"
@@ -1989,7 +1990,7 @@ de_DE:
admin_enterprise_groups_data_powertip_promo_image: "Dieses Bild wird oben im Gruppenprofil angezeigt"
admin_enterprise_groups_contact: "Kontakt"
admin_enterprise_groups_contact_phone_placeholder: "z.B. 98 7654 3210"
admin_enterprise_groups_contact_address1_placeholder: "z.B. Gartenstrasse 123"
admin_enterprise_groups_contact_address1_placeholder: "z.B. Gartenstraße 123"
admin_enterprise_groups_contact_city: "Vorort"
admin_enterprise_groups_contact_city_placeholder: "z.B. Nordwestheim"
admin_enterprise_groups_contact_zipcode: "Postleitzahl"
@@ -2087,6 +2088,7 @@ de_DE:
spree_classification_primary_taxon_error: "Taxon %{taxon} ist das primäre Taxon von %{product} und kann nicht gelöscht werden"
spree_order_availability_error: "Distributor oder Bestellzyklus kann die Produkte in Ihrem Warenkorb nicht liefern"
spree_order_populator_error: "Dieser Verteiler oder Bestellzyklus kann nicht alle Produkte in Ihrem Einkaufswagen liefern. Bitte wählen Sie ein anderes."
spree_order_cycle_error: "Bitte wählen Sie einen Bestellzyklus für diese Bestellung aus."
spree_order_populator_availability_error: "Dieses Produkt ist im ausgewählten Distributor oder Bestellzyklus nicht verfügbar."
spree_distributors_error: "Mindestens ein Hub muss ausgewählt sein"
spree_user_enterprise_limit_error: "^ %{email} darf keine weiteren Unternehmen besitzen (Limit ist %{enterprise_limit})."
@@ -2102,8 +2104,8 @@ de_DE:
manage_products: "Produkte verwalten"
edit_profile_details: "Profildetails bearbeiten"
edit_profile_details_etc: "Ändern Sie Ihre Profilbeschreibung, Bilder usw."
order_cycle: "Bestellungszyklus"
order_cycles: "Bestellrunden"
order_cycle: "Bestellzyklus"
order_cycles: "Bestellzyklen"
enterprise_relationships: "Unternehmensberechtigungen"
remove_tax: "Steuer entfernen"
first_name_begins_with: "Der Vorname beginnt mit"
@@ -2128,7 +2130,7 @@ de_DE:
hub_sidebar_at_least: "Mindestens ein Hub muss ausgewählt sein"
hub_sidebar_blue: "Blau"
hub_sidebar_red: "rot"
order_cycles_closed_for_hub: "Der von Ihnen ausgewählte Hub ist vorübergehend für Bestellungen geschlossen. Bitte versuchen Sie es später noch einmal."
order_cycles_closed_for_hub: "Der Bestellzyklus des von Ihnen ausgewählten Ladens ist derzeit geschlossen. Bitte versuchen Sie es später noch einmal."
report_customers_distributor: "Verteiler"
report_customers_supplier: "Anbieter"
report_customers_cycle: "Bestellungszyklus"
@@ -2148,7 +2150,7 @@ de_DE:
report_users: "Benutzer:"
report_tax_rates: Steuersätze
report_tax_types: Steuerarten
report_header_order_cycle: Bestellrunde
report_header_order_cycle: Bestellzyklus
report_header_user: Benutzer
report_header_email: Email
report_header_status: Status
@@ -2379,6 +2381,7 @@ de_DE:
js:
saving: 'Speichern ...'
changes_saved: 'Änderungen gespeichert'
authorising: "Autorisierung ..."
save_changes_first: Änderungen zuerst speichern.
all_changes_saved: Alle Änderungen gespeichert
unsaved_changes: Du hast nicht gespeicherte Änderungen
@@ -2394,6 +2397,7 @@ de_DE:
resolve_errors: Bitte beheben Sie die folgenden Fehler
more_items: "+ %{count} Mehr"
default_card_updated: Standardkarte aktualisiert
default_card_voids_auth: Durch das Ändern Ihrer Standardkarte werden die vorhandenen Berechtigungen für Abbuchungen des Shops entfernt. Sie können die Berechtigungen nach dem Aktualisieren der Standardkarte erneut erteilen. Möchten Sie die Standardkarte ändern?
cart:
add_to_cart_failed: >
Beim Hinzufügen dieses Produkts zum Warenkorb ist ein Problem aufgetreten.
@@ -2693,7 +2697,7 @@ de_DE:
no_distributors: In diesem Bestellzyklus gibt es keine Distributoren. Dieser Bestellzyklus ist für Kunden erst sichtbar, wenn Sie einen hinzufügen. Möchten Sie diesen Bestellzyklus weiterhin speichern?
enterprises:
producer: "Erzeuger"
non_producer: "Widerverkäufer"
non_producer: "Wiederverkäufer"
customers:
select_shop: 'Bitte wählen Sie zuerst einen Laden aus'
could_not_create: Es tut uns leid! Konnte nicht ... Erstellen
@@ -2706,7 +2710,7 @@ de_DE:
order: "Bestellung"
registration:
welcome_to_ofn: "Willkommen im Open Food Network!"
signup_or_login: "Beginnen Sie mit der Anmeldung (oder melden Sie sich an)"
signup_or_login: "Beginnen Sie mit der Registrierung (oder melden Sie sich an)"
have_an_account: "Hast du schon ein Konto?"
action_login: "Jetzt einloggen."
stripe_elements:
@@ -3059,6 +3063,7 @@ de_DE:
payment_state: "Zahlungsstatus"
errors:
messages:
included_price_validation: "kann nur ausgewählt werden, wenn Sie eine Standardsteuerzone festgelegt haben"
blank: "kann nicht leer sein"
layouts:
admin:
@@ -3079,7 +3084,7 @@ de_DE:
configuration: "Aufbau"
users: "Benutzer"
roles: "Rollen"
order_cycles: "Bestellrunden"
order_cycles: "Bestellzyklen"
enterprises: "Unternehmen"
enterprise_relationships: "Berechtigungen"
customers: "Kunden"
@@ -3091,11 +3096,11 @@ de_DE:
properties:
index:
properties: "Eigenschaften"
new_property: "Neues Eigentum"
new_property: "Neue Eigenschaft"
name: "Name"
presentation: "Präsentation"
new:
new_property: "Neues Eigentum"
new_property: "Neue Eigenschaft"
edit:
editing_property: "Eigenschaft bearbeiten"
back_to_properties_list: "Zurück zur Eigenschaftenliste"
@@ -3184,7 +3189,7 @@ de_DE:
many: "Sie haben %{count} aktive Produkte"
other: "Sie haben %{count} aktive Produkte"
order_cycles:
order_cycles: "Bestellrunden"
order_cycles: "Bestellzyklen"
order_cycles_tip: "Bestellzyklen bestimmen, wann und wo Ihre Produkte für Kunden verfügbar sind."
you_have_active:
zero: "Sie haben keine aktiven Bestellzyklen."
@@ -3192,7 +3197,7 @@ de_DE:
few: "Sie haben %{count} aktive Auftragszyklen."
many: "Sie haben %{count} aktive Auftragszyklen."
other: "Sie haben %{count} aktive Bestellzyklen."
manage_order_cycles: "BESTELLRUNDEN VERWALTEN"
manage_order_cycles: "BESTELLZYKLEN VERWALTEN"
shipping_methods:
index:
shipping_methods: "Lieferart"
@@ -3269,6 +3274,14 @@ de_DE:
deactivation_warning: "Durch Deaktivieren einer Zahlungsmethode kann die Zahlungsmethode aus Ihrer Liste verschwinden. Alternativ können Sie eine Zahlungsmethode auf der Checkout-Seite ausblenden, indem Sie die Option \"Anzeige\" auf \"Nur Backoffice\" setzen."
providers:
provider: "Anbieter"
check: "Bargeld, EC etc. (Zahlungen, für die keine automatische Validierung erforderlich ist)"
migs: "MasterCard Internet Gateway Service (MIGS)"
pin: "Pin Zahlungen"
paypalexpress: "PayPal Express"
stripeconnect: "Stripe"
stripesca: "Stripe SCA"
bogus: "Bogus"
bogussimple: "BogusSimple"
payments:
source_forms:
stripe:
@@ -3504,7 +3517,23 @@ de_DE:
paused: pausiert
canceled: storniert
paypal:
already_refunded: "Diese Zahlung wurde zurückerstattet und es können keine weiteren Maßnahmen ergriffen werden."
no_payment_via_admin_backend: "Sie können derzeit keine PayPal-Konten über das Administrationsmenü belasten."
transaction: "PayPal-Transaktion"
payer_id: "Zahler-ID"
transaction_id: "Transaktions-ID"
token: "Token"
refund: "Rückerstattung"
refund_amount: "Betrag"
original_amount: "Ursprünglicher Betrag: %{amount}"
refund_successful: "PayPal-Rückerstattung erfolgreich"
refund_unsuccessful: "PayPal-Rückerstattung nicht erfolgreich"
actions:
refund: "Rückerstattung"
flash:
cancel: "Sie möchten PayPal nicht nutzen? Kein Problem."
connection_failed: "Es konnte keine Verbindung zu PayPal hergestellt werden."
generic_error: "PayPal ist fehlgeschlagen. %{reasons}"
users:
form:
account_settings: Konto Einstellungen
@@ -3543,9 +3572,11 @@ de_DE:
delete?: Löschen?
cards:
authorised_shops: Bevollmächtigte Läden
authorised_shops_agreement: Dies ist die Liste der Läden, in denen Ihre Standardkreditkarte für eventuelle Abonnements (d.h. wiederholte Bestellungen) belastet werden darf. Ihre Kartendaten werden sicher aufbewahrt und nicht an Ladenbesitzer weitergegeben. Sie werden immer benachrichtigt, wenn Ihre Kreditkarte belastet wird. Wenn Sie das Kontrollkästchen für einen Laden aktivieren, erklären Sie sich damit einverstanden, diesen Laden zu autorisieren, Anweisungen an das Finanzinstitut, das Ihre Kreditkarte ausgestellt hat, zu senden, um Zahlungen gemäß den Bedingungen eines Abonnements entgegenzunehmen, das Sie mit diesem Laden erstellen.
saved_cards_popover: Dies ist die Liste der Karten, die Sie für spätere Verwendung gespeichert haben. Ihr "Standard" wird automatisch beim Abschließen einer Bestellung ausgewählt und kann von allen Geschäften belastet werden, die Sie dazu berechtigt haben (siehe rechts).
authorised_shops:
shop_name: "Ladenname"
allow_charges?: "Abbuchungen für die Standardkarte zulassen?"
localized_number:
invalid_format: hat ein ungültiges Format. Bitte Ziffern eingeben.
api:

View File

@@ -0,0 +1,41 @@
class AddOrderToAdjustments < ActiveRecord::Migration
class Spree::Adjustment < ActiveRecord::Base
belongs_to :adjustable, polymorphic: true
belongs_to :order, class_name: "Spree::Order"
end
class Spree::LineItem < ActiveRecord::Base
belongs_to :order, class_name: "Spree::Order"
end
def up
add_column :spree_adjustments, :order_id, :integer
# Ensure migration can use the new column
Spree::Adjustment.reset_column_information
# Migrate adjustments on orders
Spree::Adjustment.where(order_id: nil, adjustable_type: "Spree::Order").find_each do |adjustment|
adjustment.update_column(:order_id, adjustment.adjustable_id)
end
# Migrate adjustments on line_items
Spree::Adjustment.where(order_id: nil, adjustable_type: "Spree::LineItem").includes(:adjustable).find_each do |adjustment|
line_item = adjustment.adjustable
# In some cases a line item has been deleted but an orphaned adjustment remains in the
# database. There is no way for this orphan to ever be returned or accessed via any scopes,
# and no way to know what order it related to. In this case we can remove the record.
if line_item.nil?
adjustment.delete
next
end
adjustment.update_column(:order_id, line_item.order_id)
end
end
def down
remove_column :spree_adjustments, :order_id
end
end

View File

@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20201113163227) do
ActiveRecord::Schema.define(version: 20201219120055) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -393,6 +393,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
t.string "adjustable_type", limit: 255
t.decimal "included_tax", precision: 10, scale: 2, default: 0.0, null: false
t.string "state", limit: 255
t.integer "order_id"
end
add_index "spree_adjustments", ["adjustable_id"], name: "index_adjustments_on_order_id", using: :btree

View File

@@ -40,6 +40,7 @@ module Spree
amount: amount,
source: old_calculable,
originator: self,
order: order_object_for(target),
label: label,
mandatory: mandatory,
state: state
@@ -74,6 +75,17 @@ module Spree
Rails.application.config.spree.calculators
end
private_class_method :spree_calculators
private
def order_object_for(target)
# Temporary method for adjustments transition.
if target.is_a? Spree::Order
target
elsif target.respond_to?(:order)
target.order
end
end
end
end
end

View File

@@ -16,7 +16,7 @@ module ActionController
# Fix spree issues #3531 and #2210 (patch provided by leiyangyou)
if (defined_response = collector.response) &&
!Spree::BaseController.spree_responders[self.class.to_s.to_sym].try(:[],
!ApplicationController.spree_responders[self.class.to_s.to_sym].try(:[],
action_name.to_sym)
if action = options.delete(:action)
render action: action

View File

@@ -1,3 +1,3 @@
# frozen_string_literal: true
Spree::BaseController.include(Spree::ViewContext)
ApplicationController.include(Spree::ViewContext)

View File

@@ -10,7 +10,7 @@ module Spree
class_name = controller.class.name.to_sym
action_name = options.delete(:action_name)
result = Spree::BaseController.spree_responders[class_name].
result = ApplicationController.spree_responders[class_name].
try(:[], action_name).
try(:[], self.format.to_sym)
return unless result

View File

@@ -28,6 +28,11 @@ describe Spree::Core::CalculatedAdjustments do
tax_rate.create_adjustment("foo", target, order)
end
it "should be associated with the order" do
tax_rate.create_adjustment("foo", target, order)
expect(target.adjustments.first.order_id).to eq order.id
end
it "should have the correct originator and an amount derived from the calculator and supplied calculable" do
adjustment = tax_rate.create_adjustment("foo", target, order)
expect(adjustment).not_to be_nil