WooCommerce Germanized - Version 2.0.5

Version Description

  • Feature: Support WC Role Based Price (https://de.wordpress.org/plugins/woocommerce-role-based-price/)
  • Feature: Support WooCommerce Gateway PayPal Express Checkout
  • Feature: Added new Shortcodes to better support Pagebuilders (see https://wordpress.org/plugins/woocommerce-germanized/#installation)
  • Feature: Added WooCommerce Subscriptions unit price compatiblity
  • Improvement: Better dynamic pricing plugin compatibility
  • Improvement: Added better PolyLang checkbox translation compatibility
  • Improvement: Check if gateway requires user input before forcing to redirect pay order
  • Improvement: Adjusted shipping cost split tax calculation to exclude non-taxable and zero-rate items
  • Improvement: Re-added order again button which now redirects back to the cart instead of placing the order directly
  • Fix: Possible ArgumentCountError within pre_get_option filter
  • Fix: Avoid loading frontend specific functions within admin
  • Fix: SEPA checkbox validation with force pay order script
  • Fix: Use role__in query argument to ensure multiple roles can be queries for DOI
  • Fix: eKomi review reminder support WC_DateTime
  • Fix: Parcel delivery post number address display
Download this release

Release Info

Developer vendidero
Plugin Icon 128x128 WooCommerce Germanized
Version 2.0.5
Comparing to
See all releases

Code changes from version 2.0.4 to 2.0.5

Files changed (44) hide show
  1. assets/js/add-to-cart-variation.js +5 -5
  2. assets/js/add-to-cart-variation.min.js +1 -1
  3. assets/js/force-pay-order.js +22 -8
  4. assets/js/force-pay-order.min.js +1 -1
  5. i18n/languages/woocommerce-germanized-de_DE.mo +0 -0
  6. i18n/languages/woocommerce-germanized-de_DE.po +36 -36
  7. i18n/languages/woocommerce-germanized-de_DE_formal.mo +0 -0
  8. i18n/languages/woocommerce-germanized-de_DE_formal.po +154 -158
  9. includes/abstracts/abstract-wc-gzd-compatibility-woocommerce-role-based-pricing.php +91 -0
  10. includes/abstracts/abstract-wc-gzd-product.php +14 -5
  11. includes/admin/class-wc-gzd-admin-notices.php +4 -1
  12. includes/admin/class-wc-gzd-admin-welcome.php +11 -6
  13. includes/admin/class-wc-gzd-admin.php +4 -0
  14. includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data.php +1 -1
  15. includes/admin/settings/class-wc-gzd-settings-germanized.php +4 -4
  16. includes/class-wc-gzd-checkout.php +16 -6
  17. includes/class-wc-gzd-customer-helper.php +2 -2
  18. includes/class-wc-gzd-dependencies.php +1 -1
  19. includes/class-wc-gzd-dhl-parcel-shops.php +16 -17
  20. includes/class-wc-gzd-ekomi.php +10 -4
  21. includes/class-wc-gzd-hook-priorities.php +1 -0
  22. includes/class-wc-gzd-install.php +4 -4
  23. includes/class-wc-gzd-legal-checkbox-manager.php +2 -2
  24. includes/class-wc-gzd-legal-checkbox.php +1 -1
  25. includes/class-wc-gzd-payment-gateways.php +6 -1
  26. includes/class-wc-gzd-privacy.php +1 -1
  27. includes/class-wc-gzd-product-factory.php +3 -2
  28. includes/class-wc-gzd-product-variable.php +9 -5
  29. includes/class-wc-gzd-shipping-rate.php +3 -3
  30. includes/class-wc-gzd-shortcodes.php +81 -9
  31. includes/class-wc-gzd-virtual-vat-helper.php +9 -3
  32. includes/compatibility/class-wc-gzd-compatibility-polylang.php +22 -1
  33. includes/compatibility/class-wc-gzd-compatibility-woocommerce-dynamic-pricing.php +9 -35
  34. includes/compatibility/class-wc-gzd-compatibility-woocommerce-gateway-paypal-express-checkout.php +44 -0
  35. includes/compatibility/class-wc-gzd-compatibility-woocommerce-role-based-price.php +19 -0
  36. includes/compatibility/class-wc-gzd-compatibility-woocommerce-role-based-prices.php +1 -46
  37. includes/compatibility/class-wc-gzd-compatibility-woocommerce-subscriptions.php +24 -128
  38. includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php +5 -3
  39. includes/wc-gzd-cart-functions.php +37 -23
  40. includes/wc-gzd-core-functions.php +1 -1
  41. includes/wc-gzd-template-hooks.php +0 -3
  42. readme.txt +43 -3
  43. woocommerce-germanized.php +67 -44
  44. wpml-config.xml +7 -1
assets/js/add-to-cart-variation.js CHANGED
@@ -11,7 +11,7 @@
11
  $.fn.wc_gzd_variation_form.reset_variation = function() {
12
 
13
  if ( $wrapper.find('.org_price').length > 0 ) {
14
- $wrapper.find('.price.variation_modified:not(.price-unit)' ).html( $wrapper.find('.org_price').html() ).removeClass('variation_modified').show();
15
  }
16
  if ( $wrapper.find('.org_delivery_time').length > 0 ) {
17
  $wrapper.find( '.delivery-time-info:first' ).html( $wrapper.find('.org_delivery_time').html() ).removeClass('variation_modified').show();
@@ -40,8 +40,8 @@
40
  if ( ! variation.variation_is_visible )
41
  return;
42
 
43
- if ( ! $wrapper.find( '.price:first' ).hasClass( 'variation_modified' ) ) {
44
- $wrapper.append( '<div class="org_price org_product_info">' + $wrapper.find( '.price:not(.price-unit):first' ).html() + '</div>' );
45
  if ( $wrapper.find( '.delivery-time-info:first' ).length > 0 ) {
46
  $wrapper.append( '<div class="org_delivery_time org_product_info">' + $wrapper.find( '.delivery-time-info:first' ).html() + '</div>' );
47
  }
@@ -62,8 +62,8 @@
62
 
63
  if ( variation.price_html !== '' ) {
64
  $( '.single_variation .price' ).hide();
65
- $wrapper.find( '.price:not(.price-unit):first' ).html( variation.price_html ).addClass( 'variation_modified' );
66
- $wrapper.find( '.price:not(.price-unit):first' ).find( '.price' ).contents().unwrap();
67
  }
68
 
69
  $wrapper.find( '.delivery-time-info:first' ).hide();
11
  $.fn.wc_gzd_variation_form.reset_variation = function() {
12
 
13
  if ( $wrapper.find('.org_price').length > 0 ) {
14
+ $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + '.variation_modified:not(.price-unit)' ).html( $wrapper.find('.org_price').html() ).removeClass('variation_modified').show();
15
  }
16
  if ( $wrapper.find('.org_delivery_time').length > 0 ) {
17
  $wrapper.find( '.delivery-time-info:first' ).html( $wrapper.find('.org_delivery_time').html() ).removeClass('variation_modified').show();
40
  if ( ! variation.variation_is_visible )
41
  return;
42
 
43
+ if ( ! $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':first' ).hasClass( 'variation_modified' ) ) {
44
+ $wrapper.append( '<div class="org_price org_product_info">' + $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':not(.price-unit):first' ).html() + '</div>' );
45
  if ( $wrapper.find( '.delivery-time-info:first' ).length > 0 ) {
46
  $wrapper.append( '<div class="org_delivery_time org_product_info">' + $wrapper.find( '.delivery-time-info:first' ).html() + '</div>' );
47
  }
62
 
63
  if ( variation.price_html !== '' ) {
64
  $( '.single_variation .price' ).hide();
65
+ $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':not(.price-unit):first' ).html( variation.price_html ).addClass( 'variation_modified' );
66
+ $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':not(.price-unit):first' ).find( '.price' ).contents().unwrap();
67
  }
68
 
69
  $wrapper.find( '.delivery-time-info:first' ).hide();
assets/js/add-to-cart-variation.min.js CHANGED
@@ -1,4 +1,4 @@
1
  /*!
2
  * Variations Plugin
3
  */
4
- !function(a){a.fn.wc_gzd_variation_form=function(){var b=this,c=b.parents(wc_gzd_add_to_cart_variation_params.wrapper);a.fn.wc_gzd_variation_form.reset_variation=function(){c.find(".org_price").length>0&&c.find(".price.variation_modified:not(.price-unit)").html(c.find(".org_price").html()).removeClass("variation_modified").show(),c.find(".org_delivery_time").length>0&&c.find(".delivery-time-info:first").html(c.find(".org_delivery_time").html()).removeClass("variation_modified").show(),c.find(".org_unit_price").length>0&&c.find(".price-unit:first").html(c.find(".org_unit_price").html()).removeClass("variation_modified").show(),c.find(".org_tax_info").length>0&&c.find(".tax-info:first").html(c.find(".org_tax_info").html()).removeClass("variation_modified").show(),c.find(".org_shipping_costs_info").length>0&&c.find(".shipping-costs-info:first").html(c.find(".org_shipping_costs_info").html()).removeClass("variation_modified").show(),c.find(".org_product_units").length>0&&c.find(".product-units:first").html(c.find(".org_product_units").html()).removeClass("variation_modified").show(),a(".org_product_info").remove(),a(".variation_modified").remove()},b.on("found_variation",function(b,d){d.variation_is_visible&&(c.find(".price:first").hasClass("variation_modified")||(c.append('<div class="org_price org_product_info">'+c.find(".price:not(.price-unit):first").html()+"</div>"),c.find(".delivery-time-info:first").length>0&&c.append('<div class="org_delivery_time org_product_info">'+c.find(".delivery-time-info:first").html()+"</div>"),c.find(".tax-info:first").length>0&&c.append('<div class="org_tax_info org_product_info">'+c.find(".tax-info:first").html()+"</div>"),c.find(".shipping-costs-info:first").length>0&&c.append('<div class="org_shipping_costs_info org_product_info">'+c.find(".shipping-costs-info:first").html()+"</div>"),c.find(".price-unit:first").length>0&&c.append('<div class="org_unit_price org_product_info">'+c.find(".price-unit:first").html()+"</div>"),c.find(".product-units:first").length>0&&c.append('<div class="org_product_units org_product_info">'+c.find(".product-units:first").html()+"</div>"),a(".org_product_info").hide()),""!==d.price_html&&(a(".single_variation .price").hide(),c.find(".price:not(.price-unit):first").html(d.price_html).addClass("variation_modified"),c.find(".price:not(.price-unit):first").find(".price").contents().unwrap()),c.find(".delivery-time-info:first").hide(),c.find(".price-unit:first").hide(),c.find(".tax-info:first").hide(),c.find(".shipping-costs-info:first").hide(),c.find(".product-units:first").hide(),""!==d.delivery_time&&c.find("p.delivery-time-info:first").html(d.delivery_time).addClass("variation_modified").show(),""!==d.tax_info&&c.find(".tax-info:first").html(d.tax_info).addClass("variation_modified").show(),""!==d.shipping_costs_info&&c.find(".shipping-costs-info:first").html(d.shipping_costs_info).addClass("variation_modified").show(),""!==d.unit_price&&(c.find(".price-unit:first").length?c.find(".price-unit:first").html(d.unit_price).addClass("variation-modified").show():(c.find(".price-unit:first").remove(),c.find("p.price:first").after('<p class="price price-unit smaller variation_modified">'+d.unit_price+"</p>").show())),""!==d.product_units&&(c.find(".product-units:first").length?c.find(".product-units:first").html(d.product_units).addClass("variation-modified").show():(c.find(".product-units:first").remove(),c.find(".product_meta:first").prepend('<p class="wc-gzd-additional-info product-units-wrapper product-units variation_modified">'+d.product_units+"</p>").show())))}).on("update_variation_values",function(){setTimeout(function(){(!a(".single_variation_wrap").is(":visible")||a(".single_add_to_cart_button").is("[disabled]"))&&a.fn.wc_gzd_variation_form.reset_variation()},250)}).on("click",".reset_variations",function(){a.fn.wc_gzd_variation_form.reset_variation()}).on("reset_data",function(){a.fn.wc_gzd_variation_form.reset_variation()})},a(function(){return"undefined"==typeof wc_add_to_cart_variation_params?!1:void a(".variations_form").each(function(){a(this).wc_gzd_variation_form(),a(this).find(".variations select").change(),a(this).find(".variations input:radio:checked").change()})})}(jQuery,window,document);
1
  /*!
2
  * Variations Plugin
3
  */
4
+ !function(a){a.fn.wc_gzd_variation_form=function(){var b=this,c=b.parents(wc_gzd_add_to_cart_variation_params.wrapper);a.fn.wc_gzd_variation_form.reset_variation=function(){c.find(".org_price").length>0&&c.find(wc_gzd_add_to_cart_variation_params.price_selector+".variation_modified:not(.price-unit)").html(c.find(".org_price").html()).removeClass("variation_modified").show(),c.find(".org_delivery_time").length>0&&c.find(".delivery-time-info:first").html(c.find(".org_delivery_time").html()).removeClass("variation_modified").show(),c.find(".org_unit_price").length>0&&c.find(".price-unit:first").html(c.find(".org_unit_price").html()).removeClass("variation_modified").show(),c.find(".org_tax_info").length>0&&c.find(".tax-info:first").html(c.find(".org_tax_info").html()).removeClass("variation_modified").show(),c.find(".org_shipping_costs_info").length>0&&c.find(".shipping-costs-info:first").html(c.find(".org_shipping_costs_info").html()).removeClass("variation_modified").show(),c.find(".org_product_units").length>0&&c.find(".product-units:first").html(c.find(".org_product_units").html()).removeClass("variation_modified").show(),a(".org_product_info").remove(),a(".variation_modified").remove()},b.on("found_variation",function(b,d){d.variation_is_visible&&(c.find(wc_gzd_add_to_cart_variation_params.price_selector+":first").hasClass("variation_modified")||(c.append('<div class="org_price org_product_info">'+c.find(wc_gzd_add_to_cart_variation_params.price_selector+":not(.price-unit):first").html()+"</div>"),c.find(".delivery-time-info:first").length>0&&c.append('<div class="org_delivery_time org_product_info">'+c.find(".delivery-time-info:first").html()+"</div>"),c.find(".tax-info:first").length>0&&c.append('<div class="org_tax_info org_product_info">'+c.find(".tax-info:first").html()+"</div>"),c.find(".shipping-costs-info:first").length>0&&c.append('<div class="org_shipping_costs_info org_product_info">'+c.find(".shipping-costs-info:first").html()+"</div>"),c.find(".price-unit:first").length>0&&c.append('<div class="org_unit_price org_product_info">'+c.find(".price-unit:first").html()+"</div>"),c.find(".product-units:first").length>0&&c.append('<div class="org_product_units org_product_info">'+c.find(".product-units:first").html()+"</div>"),a(".org_product_info").hide()),""!==d.price_html&&(a(".single_variation .price").hide(),c.find(wc_gzd_add_to_cart_variation_params.price_selector+":not(.price-unit):first").html(d.price_html).addClass("variation_modified"),c.find(wc_gzd_add_to_cart_variation_params.price_selector+":not(.price-unit):first").find(".price").contents().unwrap()),c.find(".delivery-time-info:first").hide(),c.find(".price-unit:first").hide(),c.find(".tax-info:first").hide(),c.find(".shipping-costs-info:first").hide(),c.find(".product-units:first").hide(),""!==d.delivery_time&&c.find("p.delivery-time-info:first").html(d.delivery_time).addClass("variation_modified").show(),""!==d.tax_info&&c.find(".tax-info:first").html(d.tax_info).addClass("variation_modified").show(),""!==d.shipping_costs_info&&c.find(".shipping-costs-info:first").html(d.shipping_costs_info).addClass("variation_modified").show(),""!==d.unit_price&&(c.find(".price-unit:first").length?c.find(".price-unit:first").html(d.unit_price).addClass("variation-modified").show():(c.find(".price-unit:first").remove(),c.find("p.price:first").after('<p class="price price-unit smaller variation_modified">'+d.unit_price+"</p>").show())),""!==d.product_units&&(c.find(".product-units:first").length?c.find(".product-units:first").html(d.product_units).addClass("variation-modified").show():(c.find(".product-units:first").remove(),c.find(".product_meta:first").prepend('<p class="wc-gzd-additional-info product-units-wrapper product-units variation_modified">'+d.product_units+"</p>").show())))}).on("update_variation_values",function(){setTimeout(function(){(!a(".single_variation_wrap").is(":visible")||a(".single_add_to_cart_button").is("[disabled]"))&&a.fn.wc_gzd_variation_form.reset_variation()},250)}).on("click",".reset_variations",function(){a.fn.wc_gzd_variation_form.reset_variation()}).on("reset_data",function(){a.fn.wc_gzd_variation_form.reset_variation()})},a(function(){return"undefined"==typeof wc_add_to_cart_variation_params?!1:void a(".variations_form").each(function(){a(this).wc_gzd_variation_form(),a(this).find(".variations select").change(),a(this).find(".variations input:radio:checked").change()})})}(jQuery,window,document);
assets/js/force-pay-order.js CHANGED
@@ -1,15 +1,29 @@
1
  jQuery( function( $ ) {
2
  if ( $( '#order_review' ).length > 0 && $( 'input#payment_method_' + wc_gzd_force_pay_order_params.gateway ).length > 0 ) {
3
 
4
- $( '#order_review' ).block({
5
- message: wc_gzd_force_pay_order_params.block_message,
6
- overlayCSS: {
7
- background: '#fff',
8
- opacity: 0.6
 
 
9
  }
10
- });
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
- $( 'input#payment_method_' + wc_gzd_force_pay_order_params.gateway ).attr( 'checked', 'checked' );
13
- $( '#order_review' ).trigger( 'submit' );
14
  }
15
  });
1
  jQuery( function( $ ) {
2
  if ( $( '#order_review' ).length > 0 && $( 'input#payment_method_' + wc_gzd_force_pay_order_params.gateway ).length > 0 ) {
3
 
4
+ $payment_box = $( 'div.payment_method_' + wc_gzd_force_pay_order_params.gateway );
5
+ do_submit = true;
6
+
7
+ if ( $payment_box.length > 0 ) {
8
+ if ( $payment_box.find( ':input' ).length > 0 ) {
9
+ // Do not submit if the payment requires inputs
10
+ do_submit = false;
11
  }
12
+ }
13
+
14
+ // Trigger click event because Woo listens to that
15
+ $( 'input#payment_method_' + wc_gzd_force_pay_order_params.gateway ).prop( 'checked', true ).trigger( 'click' );
16
+
17
+ if ( do_submit ) {
18
+ $( '#order_review' ).block({
19
+ message: wc_gzd_force_pay_order_params.block_message,
20
+ overlayCSS: {
21
+ background: '#fff',
22
+ opacity: 0.6
23
+ }
24
+ });
25
 
26
+ $( '#order_review' ).trigger( 'submit' );
27
+ }
28
  }
29
  });
assets/js/force-pay-order.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(a){a("#order_review").length>0&&a("input#payment_method_"+wc_gzd_force_pay_order_params.gateway).length>0&&(a("#order_review").block({message:wc_gzd_force_pay_order_params.block_message,overlayCSS:{background:"#fff",opacity:.6}}),a("input#payment_method_"+wc_gzd_force_pay_order_params.gateway).attr("checked","checked"),a("#order_review").trigger("submit"))});
1
+ jQuery(function(a){a("#order_review").length>0&&a("input#payment_method_"+wc_gzd_force_pay_order_params.gateway).length>0&&($payment_box=a("div.payment_method_"+wc_gzd_force_pay_order_params.gateway),do_submit=!0,$payment_box.length>0&&$payment_box.find(":input").length>0&&(do_submit=!1),a("input#payment_method_"+wc_gzd_force_pay_order_params.gateway).prop("checked",!0).trigger("click"),do_submit&&(a("#order_review").block({message:wc_gzd_force_pay_order_params.block_message,overlayCSS:{background:"#fff",opacity:.6}}),a("#order_review").trigger("submit")))});
i18n/languages/woocommerce-germanized-de_DE.mo CHANGED
Binary file
i18n/languages/woocommerce-germanized-de_DE.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized v1.5.1\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2018-06-15 12:13+0200\n"
6
- "PO-Revision-Date: 2018-06-15 12:14+0200\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE\n"
@@ -275,7 +275,7 @@ msgstr ""
275
  "deiner Bestellung mit der Ausführung des Vertrags bereits vor Ablauf der "
276
  "Widerrufsfrist begonnen wird. Du hast auch zur Kenntnis genommen, dass du "
277
  "mit Beginn der Ausführung des Vertrags dein {link}Widerrufsrecht{/link} "
278
- "verlieren."
279
 
280
  # @ woocommerce-germanized
281
  #: includes/admin/class-wc-gzd-admin-legal-checkboxes.php:115
@@ -2107,13 +2107,13 @@ msgstr ""
2107
 
2108
  # @ woocommerce-germanized
2109
  #: includes/admin/views/html-admin-page-checkboxes.php:16
2110
- #: includes/class-wc-gzd-legal-checkbox.php:720
2111
  msgid "Name"
2112
  msgstr "Name"
2113
 
2114
  # @ woocommerce-germanized
2115
  #: includes/admin/views/html-admin-page-checkboxes.php:17
2116
- #: includes/class-wc-gzd-legal-checkbox.php:739
2117
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:657
2118
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:106
2119
  msgid "Description"
@@ -2125,7 +2125,7 @@ msgstr "Aktiviert"
2125
 
2126
  # @ woocommerce-germanized
2127
  #: includes/admin/views/html-admin-page-checkboxes.php:19
2128
- #: includes/class-wc-gzd-legal-checkbox.php:776
2129
  msgid "Mandatory"
2130
  msgstr "Pflichtfeld"
2131
 
@@ -3098,7 +3098,7 @@ msgid "Please create an account or login before continuing to checkout"
3098
  msgstr ""
3099
  "Bitte erstelle ein Kundenkonto oder logge dich ein, bevor du zur Kasse gehst"
3100
 
3101
- #: includes/class-wc-gzd-customer-helper.php:297
3102
  msgid ""
3103
  "This activation code has expired. We have sent you a new activation code via "
3104
  "e-mail."
@@ -3107,20 +3107,20 @@ msgstr ""
3107
  "Code per E-Mail geschickt."
3108
 
3109
  # @ woocommerce-germanized
3110
- #: includes/class-wc-gzd-customer-helper.php:299
3111
  msgid "Sorry, but this activation code cannot be found."
3112
  msgstr "Sorry, dieser Aktivierungscode ist uns leider nicht bekannt."
3113
 
3114
  # @ woocommerce-germanized
3115
- #: includes/class-wc-gzd-customer-helper.php:303
3116
  msgid "Thank you. You have successfully activated your account."
3117
  msgstr "Vielen Dank. Dein Benutzerkonto wurde erfolgreich aktiviert."
3118
 
3119
- #: includes/class-wc-gzd-customer-helper.php:410
3120
  msgid "Expired activation key"
3121
  msgstr "Abgelaufener Aktivierungscode"
3122
 
3123
- #: includes/class-wc-gzd-customer-helper.php:415
3124
  msgid "Invalid activation key"
3125
  msgstr "Aktivierungscode ungültig"
3126
 
@@ -3531,50 +3531,50 @@ msgid "Asks the customer to issue the SEPA mandate."
3531
  msgstr "Lässt den Kunden das SEPA Mandat vor dem Kauf bestätigen."
3532
 
3533
  # @ woocommerce-germanized
3534
- #: includes/class-wc-gzd-legal-checkbox-manager.php:367
3535
  msgid "Checkout"
3536
  msgstr "Kasse"
3537
 
3538
  # @ woocommerce-germanized
3539
- #: includes/class-wc-gzd-legal-checkbox-manager.php:368
3540
  msgid "Register form"
3541
  msgstr "Registrierung"
3542
 
3543
  # @ woocommerce
3544
- #: includes/class-wc-gzd-legal-checkbox-manager.php:369
3545
  msgid "Pay for order"
3546
  msgstr "Bestell-Bezahlseite"
3547
 
3548
- #: includes/class-wc-gzd-legal-checkbox-manager.php:370
3549
  msgid "Reviews"
3550
  msgstr "Bewertungen"
3551
 
3552
- #: includes/class-wc-gzd-legal-checkbox-manager.php:432
3553
  #, php-format
3554
  msgid "Checkbox location %s does not exist."
3555
  msgstr "Checkbox Ort %s existiert nicht."
3556
 
3557
- #: includes/class-wc-gzd-legal-checkbox-manager.php:451
3558
  #, php-format
3559
  msgid "Please make sure to check %s checkbox."
3560
  msgstr "Kontrolliere bitte %s. Hier fehlt eine Einwilligung."
3561
 
3562
- #: includes/class-wc-gzd-legal-checkbox-manager.php:456
3563
  #, php-format
3564
  msgid "Checkbox with name %s does already exist."
3565
  msgstr "Eine Checkbox mit dem Namen %s existiert bereits."
3566
 
3567
  # @ woocommerce-germanized
3568
- #: includes/class-wc-gzd-legal-checkbox.php:712
3569
  msgid "Status"
3570
  msgstr "Status"
3571
 
3572
  # @ woocommerce-germanized
3573
- #: includes/class-wc-gzd-legal-checkbox.php:715
3574
  msgid "Enable checkbox"
3575
  msgstr "Checkbox aktivieren"
3576
 
3577
- #: includes/class-wc-gzd-legal-checkbox.php:724
3578
  msgid ""
3579
  "Choose a name to identify your checkbox. Upon creating a new checkbox, this "
3580
  "value is being used to generate the Id."
@@ -3582,11 +3582,11 @@ msgstr ""
3582
  "Wähle einen Namen um deine Checkbox zu identifizieren. Bei Erstellung einer "
3583
  "neuen Checkbox wird dieser Wert verwendet um eine Id zu erzeugen."
3584
 
3585
- #: includes/class-wc-gzd-legal-checkbox.php:729
3586
  msgid "Id"
3587
  msgstr "Id"
3588
 
3589
- #: includes/class-wc-gzd-legal-checkbox.php:733
3590
  msgid ""
3591
  "The checkbox Id is the unique indentifier which is used to identify the "
3592
  "checkbox within the code. Cannot be edited after creating the checkbox."
@@ -3595,29 +3595,29 @@ msgstr ""
3595
  "Code heraus zugreifbar zu machen. Kann nach dem Erstellen einer Checkbox "
3596
  "nicht mehr verändert werden."
3597
 
3598
- #: includes/class-wc-gzd-legal-checkbox.php:742
3599
  msgid "Describe the use case of your checkbox."
3600
  msgstr "Beschreibe hier den Use-Case deiner Checkbox."
3601
 
3602
- #: includes/class-wc-gzd-legal-checkbox.php:748
3603
  msgid "Label"
3604
  msgstr "Beschriftung"
3605
 
3606
- #: includes/class-wc-gzd-legal-checkbox.php:752
3607
  msgid "Choose a label to be inserted next to the checkbox."
3608
  msgstr "Wähle eine Beschriftung aus, die neben der Checkbox platziert wird."
3609
 
3610
- #: includes/class-wc-gzd-legal-checkbox.php:753
3611
- #: includes/class-wc-gzd-legal-checkbox.php:763
3612
  #, php-format
3613
  msgid "You may use one of the following placeholders within the text: %s"
3614
  msgstr "Du kannst einen der folgenden Platzhalter in deinem Text verwenden: %s"
3615
 
3616
- #: includes/class-wc-gzd-legal-checkbox.php:758
3617
  msgid "Error Message"
3618
  msgstr "Fehlermeldung"
3619
 
3620
- #: includes/class-wc-gzd-legal-checkbox.php:762
3621
  msgid ""
3622
  "Choose an error message to be shown when the user has not confirmed the "
3623
  "checkbox."
@@ -3626,25 +3626,25 @@ msgstr ""
3626
  "die Checkbox nicht bestätigt hat."
3627
 
3628
  # @ woocommerce-germanized
3629
- #: includes/class-wc-gzd-legal-checkbox.php:768
3630
  msgid "Hide input"
3631
  msgstr "Ausblenden"
3632
 
3633
- #: includes/class-wc-gzd-legal-checkbox.php:771
3634
  msgid "Do only show a label and hide the actual checkbox."
3635
  msgstr ""
3636
  "Zeige lediglich die Beschriftung und entferne die eigentliche Checkbox."
3637
 
3638
- #: includes/class-wc-gzd-legal-checkbox.php:779
3639
  msgid "Mark the checkbox as mandatory."
3640
  msgstr "Checkbox zum Pflichtfeld machen."
3641
 
3642
  # @ woocommerce-germanized
3643
- #: includes/class-wc-gzd-legal-checkbox.php:784
3644
  msgid "Locations"
3645
  msgstr "Orte"
3646
 
3647
- #: includes/class-wc-gzd-legal-checkbox.php:788
3648
  msgid "Choose where to display your checkbox."
3649
  msgstr "Wähle einen Ort aus, an dem die Checkbox platziert werden soll."
3650
 
@@ -5635,7 +5635,7 @@ msgid ""
5635
  msgstr ""
5636
  "Du hast vor kurzem bei %s online bestellt. Vielen Dank! Wir würden uns sehr "
5637
  "freuen, wenn du dir die Zeit nehmen würdest, eine kurze Bewertung zu deiner "
5638
- "Bestellung zu verfassen. Bitte klicke einfach auf nachfolgendem Button um "
5639
  "deine Bewertung bei Trusted Shops abzugeben."
5640
 
5641
  # @ woocommerce-germanized
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized v1.5.1\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2018-06-25 10:46+0200\n"
6
+ "PO-Revision-Date: 2018-09-10 13:03+0200\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE\n"
275
  "deiner Bestellung mit der Ausführung des Vertrags bereits vor Ablauf der "
276
  "Widerrufsfrist begonnen wird. Du hast auch zur Kenntnis genommen, dass du "
277
  "mit Beginn der Ausführung des Vertrags dein {link}Widerrufsrecht{/link} "
278
+ "verlierst."
279
 
280
  # @ woocommerce-germanized
281
  #: includes/admin/class-wc-gzd-admin-legal-checkboxes.php:115
2107
 
2108
  # @ woocommerce-germanized
2109
  #: includes/admin/views/html-admin-page-checkboxes.php:16
2110
+ #: includes/class-wc-gzd-legal-checkbox.php:726
2111
  msgid "Name"
2112
  msgstr "Name"
2113
 
2114
  # @ woocommerce-germanized
2115
  #: includes/admin/views/html-admin-page-checkboxes.php:17
2116
+ #: includes/class-wc-gzd-legal-checkbox.php:745
2117
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:657
2118
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:106
2119
  msgid "Description"
2125
 
2126
  # @ woocommerce-germanized
2127
  #: includes/admin/views/html-admin-page-checkboxes.php:19
2128
+ #: includes/class-wc-gzd-legal-checkbox.php:782
2129
  msgid "Mandatory"
2130
  msgstr "Pflichtfeld"
2131
 
3098
  msgstr ""
3099
  "Bitte erstelle ein Kundenkonto oder logge dich ein, bevor du zur Kasse gehst"
3100
 
3101
+ #: includes/class-wc-gzd-customer-helper.php:296
3102
  msgid ""
3103
  "This activation code has expired. We have sent you a new activation code via "
3104
  "e-mail."
3107
  "Code per E-Mail geschickt."
3108
 
3109
  # @ woocommerce-germanized
3110
+ #: includes/class-wc-gzd-customer-helper.php:298
3111
  msgid "Sorry, but this activation code cannot be found."
3112
  msgstr "Sorry, dieser Aktivierungscode ist uns leider nicht bekannt."
3113
 
3114
  # @ woocommerce-germanized
3115
+ #: includes/class-wc-gzd-customer-helper.php:302
3116
  msgid "Thank you. You have successfully activated your account."
3117
  msgstr "Vielen Dank. Dein Benutzerkonto wurde erfolgreich aktiviert."
3118
 
3119
+ #: includes/class-wc-gzd-customer-helper.php:409
3120
  msgid "Expired activation key"
3121
  msgstr "Abgelaufener Aktivierungscode"
3122
 
3123
+ #: includes/class-wc-gzd-customer-helper.php:414
3124
  msgid "Invalid activation key"
3125
  msgstr "Aktivierungscode ungültig"
3126
 
3531
  msgstr "Lässt den Kunden das SEPA Mandat vor dem Kauf bestätigen."
3532
 
3533
  # @ woocommerce-germanized
3534
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:371
3535
  msgid "Checkout"
3536
  msgstr "Kasse"
3537
 
3538
  # @ woocommerce-germanized
3539
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:372
3540
  msgid "Register form"
3541
  msgstr "Registrierung"
3542
 
3543
  # @ woocommerce
3544
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:373
3545
  msgid "Pay for order"
3546
  msgstr "Bestell-Bezahlseite"
3547
 
3548
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:374
3549
  msgid "Reviews"
3550
  msgstr "Bewertungen"
3551
 
3552
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:436
3553
  #, php-format
3554
  msgid "Checkbox location %s does not exist."
3555
  msgstr "Checkbox Ort %s existiert nicht."
3556
 
3557
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:455
3558
  #, php-format
3559
  msgid "Please make sure to check %s checkbox."
3560
  msgstr "Kontrolliere bitte %s. Hier fehlt eine Einwilligung."
3561
 
3562
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:460
3563
  #, php-format
3564
  msgid "Checkbox with name %s does already exist."
3565
  msgstr "Eine Checkbox mit dem Namen %s existiert bereits."
3566
 
3567
  # @ woocommerce-germanized
3568
+ #: includes/class-wc-gzd-legal-checkbox.php:718
3569
  msgid "Status"
3570
  msgstr "Status"
3571
 
3572
  # @ woocommerce-germanized
3573
+ #: includes/class-wc-gzd-legal-checkbox.php:721
3574
  msgid "Enable checkbox"
3575
  msgstr "Checkbox aktivieren"
3576
 
3577
+ #: includes/class-wc-gzd-legal-checkbox.php:730
3578
  msgid ""
3579
  "Choose a name to identify your checkbox. Upon creating a new checkbox, this "
3580
  "value is being used to generate the Id."
3582
  "Wähle einen Namen um deine Checkbox zu identifizieren. Bei Erstellung einer "
3583
  "neuen Checkbox wird dieser Wert verwendet um eine Id zu erzeugen."
3584
 
3585
+ #: includes/class-wc-gzd-legal-checkbox.php:735
3586
  msgid "Id"
3587
  msgstr "Id"
3588
 
3589
+ #: includes/class-wc-gzd-legal-checkbox.php:739
3590
  msgid ""
3591
  "The checkbox Id is the unique indentifier which is used to identify the "
3592
  "checkbox within the code. Cannot be edited after creating the checkbox."
3595
  "Code heraus zugreifbar zu machen. Kann nach dem Erstellen einer Checkbox "
3596
  "nicht mehr verändert werden."
3597
 
3598
+ #: includes/class-wc-gzd-legal-checkbox.php:748
3599
  msgid "Describe the use case of your checkbox."
3600
  msgstr "Beschreibe hier den Use-Case deiner Checkbox."
3601
 
3602
+ #: includes/class-wc-gzd-legal-checkbox.php:754
3603
  msgid "Label"
3604
  msgstr "Beschriftung"
3605
 
3606
+ #: includes/class-wc-gzd-legal-checkbox.php:758
3607
  msgid "Choose a label to be inserted next to the checkbox."
3608
  msgstr "Wähle eine Beschriftung aus, die neben der Checkbox platziert wird."
3609
 
3610
+ #: includes/class-wc-gzd-legal-checkbox.php:759
3611
+ #: includes/class-wc-gzd-legal-checkbox.php:769
3612
  #, php-format
3613
  msgid "You may use one of the following placeholders within the text: %s"
3614
  msgstr "Du kannst einen der folgenden Platzhalter in deinem Text verwenden: %s"
3615
 
3616
+ #: includes/class-wc-gzd-legal-checkbox.php:764
3617
  msgid "Error Message"
3618
  msgstr "Fehlermeldung"
3619
 
3620
+ #: includes/class-wc-gzd-legal-checkbox.php:768
3621
  msgid ""
3622
  "Choose an error message to be shown when the user has not confirmed the "
3623
  "checkbox."
3626
  "die Checkbox nicht bestätigt hat."
3627
 
3628
  # @ woocommerce-germanized
3629
+ #: includes/class-wc-gzd-legal-checkbox.php:774
3630
  msgid "Hide input"
3631
  msgstr "Ausblenden"
3632
 
3633
+ #: includes/class-wc-gzd-legal-checkbox.php:777
3634
  msgid "Do only show a label and hide the actual checkbox."
3635
  msgstr ""
3636
  "Zeige lediglich die Beschriftung und entferne die eigentliche Checkbox."
3637
 
3638
+ #: includes/class-wc-gzd-legal-checkbox.php:785
3639
  msgid "Mark the checkbox as mandatory."
3640
  msgstr "Checkbox zum Pflichtfeld machen."
3641
 
3642
  # @ woocommerce-germanized
3643
+ #: includes/class-wc-gzd-legal-checkbox.php:790
3644
  msgid "Locations"
3645
  msgstr "Orte"
3646
 
3647
+ #: includes/class-wc-gzd-legal-checkbox.php:794
3648
  msgid "Choose where to display your checkbox."
3649
  msgstr "Wähle einen Ort aus, an dem die Checkbox platziert werden soll."
3650
 
5635
  msgstr ""
5636
  "Du hast vor kurzem bei %s online bestellt. Vielen Dank! Wir würden uns sehr "
5637
  "freuen, wenn du dir die Zeit nehmen würdest, eine kurze Bewertung zu deiner "
5638
+ "Bestellung zu verfassen. Bitte klicke einfach auf nachfolgenden Button um "
5639
  "deine Bewertung bei Trusted Shops abzugeben."
5640
 
5641
  # @ woocommerce-germanized
i18n/languages/woocommerce-germanized-de_DE_formal.mo CHANGED
Binary file
i18n/languages/woocommerce-germanized-de_DE_formal.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized v1.5.1\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2018-06-15 12:12+0200\n"
6
- "PO-Revision-Date: 2018-06-15 12:13+0200\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE\n"
@@ -94,9 +94,8 @@ msgstr "l"
94
  # @ woocommerce-germanized
95
  #: includes/abstracts/abstract-wc-gzd-product.php:264
96
  #: includes/abstracts/abstract-wc-gzd-product.php:273
97
- #: includes/compatibility/class-wc-gzd-compatibility-woocommerce-subscriptions.php:169
98
  #: includes/wc-gzd-core-functions.php:148
99
- #: includes/wc-gzd-template-functions.php:445 woocommerce-germanized.php:863
100
  msgid "incl. VAT"
101
  msgstr "inkl. MwSt."
102
 
@@ -107,8 +106,7 @@ msgstr "exkl. MwSt."
107
 
108
  # @ woocommerce-germanized
109
  #: includes/abstracts/abstract-wc-gzd-product.php:266
110
- #: includes/compatibility/class-wc-gzd-compatibility-woocommerce-subscriptions.php:169
111
- #: includes/wc-gzd-core-functions.php:148 woocommerce-germanized.php:863
112
  #, php-format
113
  msgid "incl. %s%% VAT"
114
  msgstr "inkl. %s%% MwSt."
@@ -148,7 +146,7 @@ msgstr "Ja, Kunde wurde per Double Opt-In bestätigt."
148
  #: includes/export/class-wc-gzd-product-export.php:32
149
  #: includes/import/class-wc-gzd-product-import.php:23
150
  #: includes/import/class-wc-gzd-product-import.php:32
151
- #: woocommerce-germanized.php:94 woocommerce-germanized.php:103
152
  msgid "Cheatin&#8217; huh?"
153
  msgstr "So geht das leider nicht.."
154
 
@@ -402,7 +400,7 @@ msgid "Welcome to WooCommerce Germanized"
402
  msgstr "Willkommen bei WooCommerce Germanized"
403
 
404
  # @ woocommerce-germanized
405
- #: includes/admin/class-wc-gzd-admin-welcome.php:314
406
  msgid "Go to WooCommerce Germanized Settings"
407
  msgstr "zu den WooCommerce Germanized Einstellungen"
408
 
@@ -2107,14 +2105,14 @@ msgstr ""
2107
 
2108
  # @ woocommerce-germanized
2109
  #: includes/admin/views/html-admin-page-checkboxes.php:16
2110
- #: includes/class-wc-gzd-legal-checkbox.php:720
2111
  msgid "Name"
2112
  msgstr "Name"
2113
 
2114
  # @ woocommerce-germanized
2115
  #: includes/admin/views/html-admin-page-checkboxes.php:17
2116
- #: includes/class-wc-gzd-legal-checkbox.php:739
2117
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:657
2118
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:106
2119
  msgid "Description"
2120
  msgstr "Beschreibung"
@@ -2125,7 +2123,7 @@ msgstr "Aktiviert"
2125
 
2126
  # @ woocommerce-germanized
2127
  #: includes/admin/views/html-admin-page-checkboxes.php:19
2128
- #: includes/class-wc-gzd-legal-checkbox.php:776
2129
  msgid "Mandatory"
2130
  msgstr "Pflichtfeld"
2131
 
@@ -2751,8 +2749,8 @@ msgstr "jetzt upgraden"
2751
  #: includes/api/class-wc-gzd-rest-customers-controller.php:144
2752
  #: includes/api/class-wc-gzd-rest-orders-controller.php:161
2753
  #: includes/api/class-wc-gzd-rest-orders-controller.php:168
2754
- #: includes/class-wc-gzd-checkout.php:327
2755
  #: includes/class-wc-gzd-checkout.php:337
 
2756
  #: includes/class-wc-gzd-customer-helper.php:106
2757
  #: includes/class-wc-gzd-customer-helper.php:114
2758
  msgid "Title"
@@ -2777,7 +2775,7 @@ msgstr "PostNummer"
2777
  #: includes/api/class-wc-gzd-rest-customers-controller.php:163
2778
  #: includes/api/class-wc-gzd-rest-orders-controller.php:194
2779
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:30
2780
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:653
2781
  #: includes/gateways/direct-debit/views/html-export.php:27
2782
  msgid "Direct Debit"
2783
  msgstr "Lastschrift"
@@ -2788,9 +2786,9 @@ msgstr "Lastschrift"
2788
  #: includes/class-wc-gzd-privacy.php:61 includes/class-wc-gzd-privacy.php:83
2789
  #: includes/class-wc-gzd-privacy.php:123
2790
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:108
2791
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:448
2792
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:679
2793
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:820
2794
  msgid "Account Holder"
2795
  msgstr "Kontoinhaber"
2796
 
@@ -2800,10 +2798,10 @@ msgstr "Kontoinhaber"
2800
  #: includes/class-wc-gzd-privacy.php:62 includes/class-wc-gzd-privacy.php:84
2801
  #: includes/class-wc-gzd-privacy.php:124
2802
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:115
2803
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:449
2804
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:687
2805
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:824
2806
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:916
2807
  msgid "IBAN"
2808
  msgstr "IBAN"
2809
 
@@ -2813,9 +2811,9 @@ msgstr "IBAN"
2813
  #: includes/class-wc-gzd-privacy.php:63 includes/class-wc-gzd-privacy.php:85
2814
  #: includes/class-wc-gzd-privacy.php:125
2815
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:122
2816
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:450
2817
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:828
2818
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:917
2819
  msgid "BIC/SWIFT"
2820
  msgstr "BIC/SWIFT"
2821
 
@@ -2834,7 +2832,7 @@ msgstr "Paketdienstleister Datenweitergabe"
2834
  # @ woocommerce-germanized
2835
  #: includes/api/class-wc-gzd-rest-orders-controller.php:214
2836
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:129
2837
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:454
2838
  msgid "Mandate Reference ID"
2839
  msgstr "Mandat-Referenznummer"
2840
 
@@ -3039,10 +3037,10 @@ msgstr ""
3039
  "Mail mit Ihren Daten als Bestätigung."
3040
 
3041
  # @ woocommerce-germanized
3042
- #: includes/class-wc-gzd-checkout.php:328
3043
- #: includes/class-wc-gzd-checkout.php:336
3044
- #: includes/class-wc-gzd-checkout.php:361
3045
- #: includes/class-wc-gzd-checkout.php:587
3046
  #: includes/class-wc-gzd-customer-helper.php:108
3047
  #: includes/class-wc-gzd-customer-helper.php:116
3048
  #: includes/class-wc-gzd-revocation.php:41
@@ -3051,11 +3049,11 @@ msgid "Mr."
3051
  msgstr "Herr"
3052
 
3053
  # @ woocommerce-germanized
3054
- #: includes/class-wc-gzd-checkout.php:328
3055
- #: includes/class-wc-gzd-checkout.php:336
3056
- #: includes/class-wc-gzd-checkout.php:362
3057
- #: includes/class-wc-gzd-checkout.php:587
3058
- #: includes/class-wc-gzd-checkout.php:596
3059
  #: includes/class-wc-gzd-customer-helper.php:108
3060
  #: includes/class-wc-gzd-customer-helper.php:116
3061
  #: includes/class-wc-gzd-revocation.php:42
@@ -3100,7 +3098,7 @@ msgstr ""
3100
  "Bitte erstellen Sie ein Kundenkonto oder loggen Sie sich ein, bevor Sie zur "
3101
  "Kasse gehen"
3102
 
3103
- #: includes/class-wc-gzd-customer-helper.php:297
3104
  msgid ""
3105
  "This activation code has expired. We have sent you a new activation code via "
3106
  "e-mail."
@@ -3109,20 +3107,20 @@ msgstr ""
3109
  "Code per E-Mail geschickt."
3110
 
3111
  # @ woocommerce-germanized
3112
- #: includes/class-wc-gzd-customer-helper.php:299
3113
  msgid "Sorry, but this activation code cannot be found."
3114
  msgstr "Sorry, dieser Aktivierungscode ist uns leider nicht bekannt."
3115
 
3116
  # @ woocommerce-germanized
3117
- #: includes/class-wc-gzd-customer-helper.php:303
3118
  msgid "Thank you. You have successfully activated your account."
3119
  msgstr "Vielen Dank. Ihr Benutzerkonto wurde erfolgreich aktiviert."
3120
 
3121
- #: includes/class-wc-gzd-customer-helper.php:410
3122
  msgid "Expired activation key"
3123
  msgstr "Abgelaufener Aktivierungscode"
3124
 
3125
- #: includes/class-wc-gzd-customer-helper.php:415
3126
  msgid "Invalid activation key"
3127
  msgstr "Aktivierungscode ungültig"
3128
 
@@ -3169,43 +3167,43 @@ msgid "eKomi Customer"
3169
  msgstr "eKomi Kundenbewertung"
3170
 
3171
  # @ woocommerce-germanized
3172
- #: includes/class-wc-gzd-ekomi.php:396
3173
  msgctxt "ekomi"
3174
  msgid "Ekomi Integration"
3175
  msgstr "eKomi Integration"
3176
 
3177
  # @ woocommerce-germanized
3178
- #: includes/class-wc-gzd-ekomi.php:399
3179
  msgctxt "ekomi"
3180
  msgid "Shop ID"
3181
  msgstr "Shop ID"
3182
 
3183
  # @ woocommerce-germanized
3184
- #: includes/class-wc-gzd-ekomi.php:400
3185
  msgctxt "ekomi"
3186
  msgid "Insert your Shop ID here."
3187
  msgstr "Füge hier deine Shop ID ein."
3188
 
3189
  # @ woocommerce-germanized
3190
- #: includes/class-wc-gzd-ekomi.php:408
3191
  msgctxt "ekomi"
3192
  msgid "Link to Certificate"
3193
  msgstr "Link zum Shop-Zertifikat"
3194
 
3195
  # @ woocommerce-germanized
3196
- #: includes/class-wc-gzd-ekomi.php:409
3197
  msgctxt "ekomi"
3198
  msgid "Insert the link to your Certificate"
3199
  msgstr "Füge hier den Link zu deinem Shop-Zertifikat ein"
3200
 
3201
  # @ woocommerce-germanized
3202
- #: includes/class-wc-gzd-ekomi.php:417
3203
  msgctxt "ekomi"
3204
  msgid "Partner ID"
3205
  msgstr "Partner ID"
3206
 
3207
  # @ woocommerce-germanized
3208
- #: includes/class-wc-gzd-ekomi.php:418
3209
  msgctxt "ekomi"
3210
  msgid ""
3211
  "Insert your Partner ID here (you may find that ID on your certificate "
@@ -3215,13 +3213,13 @@ msgstr ""
3215
  "Zertifikat-Seite)"
3216
 
3217
  # @ woocommerce-germanized
3218
- #: includes/class-wc-gzd-ekomi.php:426
3219
  msgctxt "ekomi"
3220
  msgid "Interface ID"
3221
  msgstr "Interface ID"
3222
 
3223
  # @ woocommerce-germanized
3224
- #: includes/class-wc-gzd-ekomi.php:427
3225
  msgctxt "ekomi"
3226
  msgid "Insert your Interface ID here."
3227
  msgstr ""
@@ -3229,13 +3227,13 @@ msgstr ""
3229
  "Kundenbereich)"
3230
 
3231
  # @ woocommerce-germanized
3232
- #: includes/class-wc-gzd-ekomi.php:435
3233
  msgctxt "ekomi"
3234
  msgid "Interface Password"
3235
  msgstr "Interface Password"
3236
 
3237
  # @ woocommerce-germanized
3238
- #: includes/class-wc-gzd-ekomi.php:436
3239
  msgctxt "ekomi"
3240
  msgid "Insert your Interface Password here."
3241
  msgstr ""
@@ -3243,13 +3241,13 @@ msgstr ""
3243
  "Kundenbereich)"
3244
 
3245
  # @ woocommerce-germanized
3246
- #: includes/class-wc-gzd-ekomi.php:444
3247
  msgctxt "ekomi"
3248
  msgid "Days until Email"
3249
  msgstr "Tage bis E-Mail Erinnerung"
3250
 
3251
  # @ woocommerce-germanized
3252
- #: includes/class-wc-gzd-ekomi.php:445
3253
  msgctxt "ekomi"
3254
  msgid ""
3255
  "Number of days between an order being marked as completed and review email "
@@ -3260,7 +3258,7 @@ msgstr ""
3260
  "den Kunden"
3261
 
3262
  # @ woocommerce-germanized
3263
- #: includes/class-wc-gzd-ekomi.php:460
3264
  msgctxt "ekomi"
3265
  msgid "eKomi Options"
3266
  msgstr "eKomi"
@@ -3513,7 +3511,7 @@ msgstr ""
3513
 
3514
  # @ woocommerce-germanized
3515
  #: includes/class-wc-gzd-legal-checkbox-manager.php:173
3516
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:744
3517
  msgid "I hereby agree to the {link}direct debit mandate{/link}."
3518
  msgstr "Hiermit erteile ich das {link}SEPA Lastschriftmandat{/link}."
3519
 
@@ -3524,7 +3522,7 @@ msgstr "Bitte erteilen Sie das SEPA Lastschriftmandat."
3524
 
3525
  # @ woocommerce-germanized
3526
  #: includes/class-wc-gzd-legal-checkbox-manager.php:181
3527
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:187
3528
  msgid "SEPA"
3529
  msgstr "SEPA"
3530
 
@@ -3533,50 +3531,50 @@ msgid "Asks the customer to issue the SEPA mandate."
3533
  msgstr "Lässt den Kunden das SEPA Mandat vor dem Kauf bestätigen."
3534
 
3535
  # @ woocommerce-germanized
3536
- #: includes/class-wc-gzd-legal-checkbox-manager.php:367
3537
  msgid "Checkout"
3538
  msgstr "Kasse"
3539
 
3540
  # @ woocommerce-germanized
3541
- #: includes/class-wc-gzd-legal-checkbox-manager.php:368
3542
  msgid "Register form"
3543
  msgstr "Registrierung"
3544
 
3545
  # @ woocommerce
3546
- #: includes/class-wc-gzd-legal-checkbox-manager.php:369
3547
  msgid "Pay for order"
3548
  msgstr "Bestell-Bezahlseite"
3549
 
3550
- #: includes/class-wc-gzd-legal-checkbox-manager.php:370
3551
  msgid "Reviews"
3552
  msgstr "Bewertungen"
3553
 
3554
- #: includes/class-wc-gzd-legal-checkbox-manager.php:432
3555
  #, php-format
3556
  msgid "Checkbox location %s does not exist."
3557
  msgstr "Checkbox Ort %s existiert nicht."
3558
 
3559
- #: includes/class-wc-gzd-legal-checkbox-manager.php:451
3560
  #, php-format
3561
  msgid "Please make sure to check %s checkbox."
3562
  msgstr "Kontrolliere bitte %s. Hier fehlt eine Einwilligung."
3563
 
3564
- #: includes/class-wc-gzd-legal-checkbox-manager.php:456
3565
  #, php-format
3566
  msgid "Checkbox with name %s does already exist."
3567
  msgstr "Eine Checkbox mit dem Namen %s existiert bereits."
3568
 
3569
  # @ woocommerce-germanized
3570
- #: includes/class-wc-gzd-legal-checkbox.php:712
3571
  msgid "Status"
3572
  msgstr "Status"
3573
 
3574
  # @ woocommerce-germanized
3575
- #: includes/class-wc-gzd-legal-checkbox.php:715
3576
  msgid "Enable checkbox"
3577
  msgstr "Checkbox aktivieren"
3578
 
3579
- #: includes/class-wc-gzd-legal-checkbox.php:724
3580
  msgid ""
3581
  "Choose a name to identify your checkbox. Upon creating a new checkbox, this "
3582
  "value is being used to generate the Id."
@@ -3584,11 +3582,11 @@ msgstr ""
3584
  "Wähle einen Namen um deine Checkbox zu identifizieren. Bei Erstellung einer "
3585
  "neuen Checkbox wird dieser Wert verwendet um eine Id zu erzeugen."
3586
 
3587
- #: includes/class-wc-gzd-legal-checkbox.php:729
3588
  msgid "Id"
3589
  msgstr "Id"
3590
 
3591
- #: includes/class-wc-gzd-legal-checkbox.php:733
3592
  msgid ""
3593
  "The checkbox Id is the unique indentifier which is used to identify the "
3594
  "checkbox within the code. Cannot be edited after creating the checkbox."
@@ -3597,29 +3595,29 @@ msgstr ""
3597
  "Code heraus zugreifbar zu machen. Kann nach dem Erstellen einer Checkbox "
3598
  "nicht mehr verändert werden."
3599
 
3600
- #: includes/class-wc-gzd-legal-checkbox.php:742
3601
  msgid "Describe the use case of your checkbox."
3602
  msgstr "Beschreibe hier den Use-Case deiner Checkbox."
3603
 
3604
- #: includes/class-wc-gzd-legal-checkbox.php:748
3605
  msgid "Label"
3606
  msgstr "Beschriftung"
3607
 
3608
- #: includes/class-wc-gzd-legal-checkbox.php:752
3609
  msgid "Choose a label to be inserted next to the checkbox."
3610
  msgstr "Wähle eine Beschriftung aus, die neben der Checkbox platziert wird."
3611
 
3612
- #: includes/class-wc-gzd-legal-checkbox.php:753
3613
- #: includes/class-wc-gzd-legal-checkbox.php:763
3614
  #, php-format
3615
  msgid "You may use one of the following placeholders within the text: %s"
3616
  msgstr "Du kannst einen der folgenden Platzhalter in deinem Text verwenden: %s"
3617
 
3618
- #: includes/class-wc-gzd-legal-checkbox.php:758
3619
  msgid "Error Message"
3620
  msgstr "Fehlermeldung"
3621
 
3622
- #: includes/class-wc-gzd-legal-checkbox.php:762
3623
  msgid ""
3624
  "Choose an error message to be shown when the user has not confirmed the "
3625
  "checkbox."
@@ -3628,37 +3626,37 @@ msgstr ""
3628
  "die Checkbox nicht bestätigt hat."
3629
 
3630
  # @ woocommerce-germanized
3631
- #: includes/class-wc-gzd-legal-checkbox.php:768
3632
  msgid "Hide input"
3633
  msgstr "Ausblenden"
3634
 
3635
- #: includes/class-wc-gzd-legal-checkbox.php:771
3636
  msgid "Do only show a label and hide the actual checkbox."
3637
  msgstr ""
3638
  "Zeige lediglich die Beschriftung und entferne die eigentliche Checkbox."
3639
 
3640
- #: includes/class-wc-gzd-legal-checkbox.php:779
3641
  msgid "Mark the checkbox as mandatory."
3642
  msgstr "Checkbox zum Pflichtfeld machen."
3643
 
3644
  # @ woocommerce-germanized
3645
- #: includes/class-wc-gzd-legal-checkbox.php:784
3646
  msgid "Locations"
3647
  msgstr "Orte"
3648
 
3649
- #: includes/class-wc-gzd-legal-checkbox.php:788
3650
  msgid "Choose where to display your checkbox."
3651
  msgstr "Wähle einen Ort aus, an dem die Checkbox platziert werden soll."
3652
 
3653
  # @ woocommerce-germanized
3654
- #: includes/class-wc-gzd-payment-gateways.php:90
3655
- #: includes/class-wc-gzd-payment-gateways.php:134
3656
  #, php-format
3657
  msgid "%s payment charge"
3658
  msgstr "%s Zahlungsgebühr"
3659
 
3660
  # @ woocommerce-germanized
3661
- #: includes/class-wc-gzd-payment-gateways.php:93
3662
  #: includes/wc-gzd-order-functions.php:20
3663
  #: includes/wc-gzd-template-functions.php:375
3664
  #, php-format
@@ -3666,12 +3664,12 @@ msgid "Plus %s forwarding fee (charged by the transport agent)"
3666
  msgstr "zzgl. %s Übermittlungsentgelt (direkt an den Zusteller)"
3667
 
3668
  # @ woocommerce-germanized
3669
- #: includes/class-wc-gzd-payment-gateways.php:168
3670
  msgid "Fee"
3671
  msgstr "Zahlungsgebühr"
3672
 
3673
  # @ woocommerce-germanized
3674
- #: includes/class-wc-gzd-payment-gateways.php:170
3675
  msgid ""
3676
  "This fee is being added if customer selects payment method within checkout."
3677
  msgstr ""
@@ -3679,22 +3677,22 @@ msgstr ""
3679
  "Zahlungsart aktiviert."
3680
 
3681
  # @ woocommerce-germanized
3682
- #: includes/class-wc-gzd-payment-gateways.php:175
3683
  msgid "Fee is taxable?"
3684
  msgstr "Mwst. berechnen?"
3685
 
3686
  # @ woocommerce-germanized
3687
- #: includes/class-wc-gzd-payment-gateways.php:177
3688
  msgid "Check if fee is taxable."
3689
  msgstr "MwSt.-Berechnung für Gebühr aktivieren."
3690
 
3691
  # @ woocommerce-germanized
3692
- #: includes/class-wc-gzd-payment-gateways.php:184
3693
  msgid "Forwarding Fee"
3694
  msgstr "Übermittlungsentgelt"
3695
 
3696
  # @ woocommerce-germanized
3697
- #: includes/class-wc-gzd-payment-gateways.php:187
3698
  msgid ""
3699
  "Forwarding fee will be charged by the transport agent in addition to the "
3700
  "cash of delivery fee e.g. DHL - tax free."
@@ -3703,7 +3701,7 @@ msgstr ""
3703
  "kassiert - z.B. DHL (steuerfrei)."
3704
 
3705
  # @ woocommerce-germanized
3706
- #: includes/class-wc-gzd-payment-gateways.php:231
3707
  msgid "Payment charge"
3708
  msgstr "Zahlungsgebühr"
3709
 
@@ -3858,8 +3856,8 @@ msgstr "Mandat ID"
3858
  msgid "Mandate Email"
3859
  msgstr "Mandat E-Mail"
3860
 
3861
- #: includes/class-wc-gzd-product-variable.php:115
3862
- #: includes/class-wc-gzd-product-variable.php:120
3863
  #, php-format
3864
  msgctxt "Price range: from-to"
3865
  msgid "%1$s&ndash;%2$s"
@@ -3990,12 +3988,6 @@ msgid ""
3990
  "Sale price labels used to mark old prices (e.g. Recommended Retail Price)"
3991
  msgstr "Preishinweise zur Markierung von Streichpreisen"
3992
 
3993
- # @ woocommerce-germanized
3994
- #: includes/compatibility/class-wc-gzd-compatibility-woocommerce-subscriptions.php:109
3995
- #: includes/compatibility/class-wc-gzd-compatibility-woocommerce-subscriptions.php:116
3996
- msgid "recurring payments"
3997
- msgstr "wiederkehrende Zahlungen"
3998
-
3999
  # @ woocommerce-germanized
4000
  #: includes/emails/class-wc-gzd-email-customer-ekomi.php:24
4001
  msgctxt "ekomi"
@@ -4302,25 +4294,25 @@ msgstr ""
4302
  "Bitte beachten Sie: Die Frist für die Vorabinformation der SEPA-Lastschrift "
4303
  "wird auf einen Tag verkürzt. "
4304
 
4305
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:190
4306
  msgid "SEPA XML"
4307
  msgstr "SEPA XML"
4308
 
4309
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:251
4310
  msgid "SEPA XML Export"
4311
  msgstr "SEPA XML Export"
4312
 
4313
  # @ woocommerce-germanized
4314
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:388
4315
  #, php-format
4316
  msgid "Order %s"
4317
  msgstr "Bestellung %s"
4318
 
4319
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:410
4320
  msgid "Will be notified separately"
4321
  msgstr "Wird separat mitgeteilt"
4322
 
4323
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:459
4324
  #, php-format
4325
  msgid ""
4326
  "We will debit %s from your account by direct debit on or shortly after %s."
@@ -4329,105 +4321,105 @@ msgstr ""
4329
  "%s ein."
4330
 
4331
  # @ woocommerce-germanized
4332
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:563
4333
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:586
4334
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:610
4335
  msgid "a single payment"
4336
  msgstr "eine einmalige Zahlung"
4337
 
4338
  # @ woocommerce-germanized
4339
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:644
4340
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:93
4341
  msgid "Enable/Disable"
4342
  msgstr "Aktivieren/Deaktivieren"
4343
 
4344
  # @ woocommerce-germanized
4345
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:646
4346
  msgid "Enable Direct Debit Payment"
4347
  msgstr "Bezahlung per Lastschrift aktivieren"
4348
 
4349
  # @ woocommerce-germanized
4350
  # @ woocommerce
4351
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:650
4352
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:99
4353
  msgctxt "gateway"
4354
  msgid "Title"
4355
  msgstr "Bezeichnung"
4356
 
4357
  # @ woocommerce-germanized
4358
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:652
4359
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:101
4360
  msgid "This controls the title which the user sees during checkout."
4361
  msgstr ""
4362
  "Beschreibungstext, den Benutzer bei der Auswahl dieser Zahlungsart sehen."
4363
 
4364
  # @ woocommerce-germanized
4365
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:659
4366
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:108
4367
  msgid "Payment method description that the customer will see on your checkout."
4368
  msgstr "Beschreibung der Zahlungsart, die Kunden auf deiner Website sehen."
4369
 
4370
  # @ woocommerce-germanized
4371
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:660
4372
  msgid "The order amount will be debited directly from your bank account."
4373
  msgstr ""
4374
  "Der Gesamtbestellbetrag wird per SEPA-Lastschrift direkt von Ihrem Konto "
4375
  "abgebucht."
4376
 
4377
  # @ woocommerce-germanized
4378
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:664
4379
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:113
4380
  msgid "Instructions"
4381
  msgstr "Anweisungen"
4382
 
4383
  # @ woocommerce-germanized
4384
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:666
4385
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:115
4386
  msgid "Instructions that will be added to the thank you page and emails."
4387
  msgstr "Anweisung, die zur „Danke“-Seite und zu E-Mails hinzugefügt werden."
4388
 
4389
  # @ woocommerce-germanized
4390
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:671
4391
  msgid "Debtee"
4392
  msgstr "Gläubiger Informationen"
4393
 
4394
  # @ woocommerce-germanized
4395
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:673
4396
  msgid "Insert your company information."
4397
  msgstr "Füge hier die Informationen zu deinem Unternehmen ein."
4398
 
4399
  # @ woocommerce-germanized
4400
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:675
4401
  msgid "Company Inc, John Doe Street, New York"
4402
  msgstr "Musterfirma GmbH, Musterstraße 12, 12203 Musterstadt"
4403
 
4404
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:681
4405
  msgid "Insert the bank account holder name."
4406
  msgstr "Füge hier den Namen des Kontoinhabers ein."
4407
 
4408
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:683
4409
  msgid "Company Inc"
4410
  msgstr "Muster GmbH"
4411
 
4412
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:689
4413
  msgid "Insert the bank account IBAN."
4414
  msgstr "Füge hier den IBAN deines Kontos ein."
4415
 
4416
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:694
4417
  msgid "BIC"
4418
  msgstr "BIC"
4419
 
4420
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:696
4421
  msgid "Insert the bank account BIC."
4422
  msgstr "Füge hier den BIC deines Kontos ein."
4423
 
4424
  # @ woocommerce-germanized
4425
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:701
4426
  msgid "Debtee identification number"
4427
  msgstr "Identifikationsnummer"
4428
 
4429
  # @ woocommerce-germanized
4430
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:703
4431
  #, php-format
4432
  msgid ""
4433
  "Insert your debtee indentification number. More information can be found <a "
@@ -4437,16 +4429,16 @@ msgstr ""
4437
  "Weitere Informationen zu dieser Nummer erhältst du <a href=\"%s\">hier</a>."
4438
 
4439
  # @ woocommerce-germanized
4440
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:707
4441
  msgid "Generate Mandate ID"
4442
  msgstr "Mandat-Referenz generieren"
4443
 
4444
  # @ woocommerce-germanized
4445
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:709
4446
  msgid "Automatically generate Mandate ID."
4447
  msgstr "Mandat-Referenznummer automatisch generieren."
4448
 
4449
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:710
4450
  msgid ""
4451
  "Automatically generate Mandate ID after order completion (based on Order ID)."
4452
  msgstr ""
@@ -4454,11 +4446,11 @@ msgstr ""
4454
  "basierend auf der Bestellnummer."
4455
 
4456
  # @ woocommerce-germanized
4457
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:714
4458
  msgid "XML Pain Format"
4459
  msgstr "XML Pain Format"
4460
 
4461
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:716
4462
  msgid ""
4463
  "You may adjust the XML Export Pain Schema to your banks needs. Some banks "
4464
  "may require pain.001.003.03."
@@ -4467,11 +4459,11 @@ msgstr ""
4467
  "Banken benötigen z.B. pain.001.003.03."
4468
 
4469
  # @ woocommerce-germanized
4470
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:720
4471
  msgid "Mandate ID Format"
4472
  msgstr "Mandat-Referenz Format"
4473
 
4474
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:722
4475
  msgid ""
4476
  "You may extend the Mandate ID format by adding a prefix and/or suffix. Use "
4477
  "{id} as placeholder to insert the automatically generated ID."
@@ -4480,12 +4472,12 @@ msgstr ""
4480
  "{id} als Platzhalter um die automatisch generierte Referenznummer einzufügen."
4481
 
4482
  # @ woocommerce-germanized
4483
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:726
4484
  msgid "Mandate Text"
4485
  msgstr "Lastschriftmandat"
4486
 
4487
  # @ woocommerce-germanized
4488
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:728
4489
  msgid ""
4490
  "This text will be populated with live order/checkout data. Will be used as "
4491
  "preview direct debit mandate and as email template text."
@@ -4496,28 +4488,28 @@ msgstr ""
4496
  "Verfügung gestellt."
4497
 
4498
  # @ woocommerce-germanized
4499
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:734
4500
  msgid "Checkbox"
4501
  msgstr "Checkbox"
4502
 
4503
  # @ woocommerce-germanized
4504
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:735
4505
  msgid "Enable \"agree to SEPA mandate\" checkbox"
4506
  msgstr "Aktiviere die Checkbox zur Bestätigung des Lastschriftmandates."
4507
 
4508
  # @ woocommerce-germanized
4509
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:737
4510
  msgid "Enable a checkbox linking to a SEPA direct debit mandate preview."
4511
  msgstr ""
4512
  "Aktiviere eine Checkbox, die zu einer Vorschau des Lastschrift-Mandats führt."
4513
 
4514
  # @ woocommerce-germanized
4515
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:741
4516
  msgid "Checkbox label"
4517
  msgstr "Checkbox Text"
4518
 
4519
  # @ woocommerce-germanized
4520
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:743
4521
  msgid ""
4522
  "Customize the checkbox label. Use {link}link name{/link} to insert the "
4523
  "preview link."
@@ -4525,17 +4517,17 @@ msgstr ""
4525
  "Passe den Checkbox Text an. Verwende {link}SEPA Lastschriftmandat{/link} um "
4526
  "auf die Vorschau zu verlinken."
4527
 
4528
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:748
4529
  msgid "Enable pre-notification"
4530
  msgstr "Vorankündigung aktivieren"
4531
 
4532
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:749
4533
  msgid "Insert pre-notification text within the order confirmation email."
4534
  msgstr ""
4535
  "Fügt einen Standard-Text zur Vorankündigung des SEPA-Einzugs in die "
4536
  "Bestellbestätigung ein."
4537
 
4538
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:751
4539
  msgid ""
4540
  "This option inserts a standard text containing a pre-notification for the "
4541
  "customer."
@@ -4544,11 +4536,11 @@ msgstr ""
4544
  "die Bestellbestätigung ein. In der Ankündigung wird u.a. ein konkreter "
4545
  "Fälligkeitstermin genannt."
4546
 
4547
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:755
4548
  msgid "Debit days"
4549
  msgstr "Fälligkeitstage"
4550
 
4551
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:757
4552
  msgid ""
4553
  "This option is used to calculate the debit date and is added to the order "
4554
  "date."
@@ -4558,15 +4550,15 @@ msgstr ""
4558
  "hier eingestellten Anzahl Tage."
4559
 
4560
  # @ woocommerce-germanized
4561
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:761
4562
  msgid "Mask IBAN"
4563
  msgstr "IBAN maskieren"
4564
 
4565
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:762
4566
  msgid "Mask the IBAN within emails."
4567
  msgstr "IBAN in E-Mails maskieren."
4568
 
4569
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:764
4570
  msgid ""
4571
  "This will lead to masked IBANs within emails (replaced by *). All but last 4 "
4572
  "digits will be masked."
@@ -4574,15 +4566,15 @@ msgstr ""
4574
  "Der IBAN wird in E-Mails (abgesehen von den letzten 4 Stellen) mit * "
4575
  "maskiert."
4576
 
4577
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:773
4578
  msgid "Remember"
4579
  msgstr "Bankdaten merken\t"
4580
 
4581
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:774
4582
  msgid "Remember account data for returning customers."
4583
  msgstr "Bankverbindung für registrierte Kunden speichern."
4584
 
4585
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:776
4586
  msgid "Save account data as user meta if user has/creates a customer account."
4587
  msgstr ""
4588
  "Speichert die Bankverbindung für registrierte Kunden in der user_meta "
@@ -4590,32 +4582,32 @@ msgstr ""
4590
  "eigenständig aus."
4591
 
4592
  # @ woocommerce-germanized
4593
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:859
4594
  msgid "Please insert your SEPA account data."
4595
  msgstr "Bitte fügen Sie Ihre SEPA Kontoinformationen ein."
4596
 
4597
  # @ woocommerce-germanized
4598
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:869
4599
  msgid "Your IBAN seems to be invalid."
4600
  msgstr "Ihr IBAN scheint nicht gültig zu sein."
4601
 
4602
  # @ woocommerce-germanized
4603
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:871
4604
  msgid "Your IBAN's country code doesn’t match with your billing country."
4605
  msgstr "Der Ländercode des IBANs stimmt nicht mit dem Rechnungsland überein."
4606
 
4607
  # @ woocommerce-germanized
4608
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:875
4609
  msgid "Your BIC seems to be invalid."
4610
  msgstr "Ihr BIC/SWIFT scheint nicht gültig zu sein."
4611
 
4612
  # @ woocommerce-germanized
4613
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:918
4614
  msgid "is invalid"
4615
  msgstr "ist ungültig"
4616
 
4617
  # @ woocommerce-germanized
4618
- #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:955
4619
  msgid "Awaiting Direct Debit Payment"
4620
  msgstr "Zahlung per Lastschrift ausstehend"
4621
 
@@ -4679,7 +4671,7 @@ msgstr ""
4679
  # @ woocommerce-germanized
4680
  # @ woocommerce
4681
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:64
4682
- #: woocommerce-germanized.php:605
4683
  msgid "Settings"
4684
  msgstr "Einstellungen"
4685
 
@@ -5639,7 +5631,7 @@ msgid ""
5639
  msgstr ""
5640
  "Sie haben vor kurzem bei %s online bestellt. Vielen Dank! Wir würden uns "
5641
  "sehr freuen, wenn Sie sich die Zeit nehmen würden, eine kurze Bewertung zu "
5642
- "Ihrer Bestellung zu verfassen. Bitte klicken Sie einfach auf nachfolgendem "
5643
  "Button um Ihre Bewertung bei Trusted Shops abzugeben."
5644
 
5645
  # @ woocommerce-germanized
@@ -5728,15 +5720,19 @@ msgctxt "trusted-shops"
5728
  msgid "%s custom reviews"
5729
  msgstr "%s Kundenbewertungen"
5730
 
5731
- #: woocommerce-germanized.php:706
5732
  msgid "Pease wait while we are trying to redirect you to the payment provider."
5733
  msgstr "Einen Moment - wir versuchen Sie zum Zahlungsanbieter weiterzuleiten."
5734
 
5735
  # @ woocommerce-germanized
5736
- #: woocommerce-germanized.php:772
5737
  msgid "Order Confirmation"
5738
  msgstr "Bestellbestätigung"
5739
 
 
 
 
 
5740
  #~ msgid "Not found within legal notice."
5741
  #~ msgstr "Nicht im rechtlichen Hinweistext gefunden."
5742
 
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized v1.5.1\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2018-09-10 13:01+0200\n"
6
+ "PO-Revision-Date: 2018-09-10 13:17+0200\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE\n"
94
  # @ woocommerce-germanized
95
  #: includes/abstracts/abstract-wc-gzd-product.php:264
96
  #: includes/abstracts/abstract-wc-gzd-product.php:273
 
97
  #: includes/wc-gzd-core-functions.php:148
98
+ #: includes/wc-gzd-template-functions.php:445 woocommerce-germanized.php:886
99
  msgid "incl. VAT"
100
  msgstr "inkl. MwSt."
101
 
106
 
107
  # @ woocommerce-germanized
108
  #: includes/abstracts/abstract-wc-gzd-product.php:266
109
+ #: includes/wc-gzd-core-functions.php:148 woocommerce-germanized.php:886
 
110
  #, php-format
111
  msgid "incl. %s%% VAT"
112
  msgstr "inkl. %s%% MwSt."
146
  #: includes/export/class-wc-gzd-product-export.php:32
147
  #: includes/import/class-wc-gzd-product-import.php:23
148
  #: includes/import/class-wc-gzd-product-import.php:32
149
+ #: woocommerce-germanized.php:95 woocommerce-germanized.php:104
150
  msgid "Cheatin&#8217; huh?"
151
  msgstr "So geht das leider nicht.."
152
 
400
  msgstr "Willkommen bei WooCommerce Germanized"
401
 
402
  # @ woocommerce-germanized
403
+ #: includes/admin/class-wc-gzd-admin-welcome.php:319
404
  msgid "Go to WooCommerce Germanized Settings"
405
  msgstr "zu den WooCommerce Germanized Einstellungen"
406
 
2105
 
2106
  # @ woocommerce-germanized
2107
  #: includes/admin/views/html-admin-page-checkboxes.php:16
2108
+ #: includes/class-wc-gzd-legal-checkbox.php:726
2109
  msgid "Name"
2110
  msgstr "Name"
2111
 
2112
  # @ woocommerce-germanized
2113
  #: includes/admin/views/html-admin-page-checkboxes.php:17
2114
+ #: includes/class-wc-gzd-legal-checkbox.php:745
2115
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:659
2116
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:106
2117
  msgid "Description"
2118
  msgstr "Beschreibung"
2123
 
2124
  # @ woocommerce-germanized
2125
  #: includes/admin/views/html-admin-page-checkboxes.php:19
2126
+ #: includes/class-wc-gzd-legal-checkbox.php:782
2127
  msgid "Mandatory"
2128
  msgstr "Pflichtfeld"
2129
 
2749
  #: includes/api/class-wc-gzd-rest-customers-controller.php:144
2750
  #: includes/api/class-wc-gzd-rest-orders-controller.php:161
2751
  #: includes/api/class-wc-gzd-rest-orders-controller.php:168
 
2752
  #: includes/class-wc-gzd-checkout.php:337
2753
+ #: includes/class-wc-gzd-checkout.php:347
2754
  #: includes/class-wc-gzd-customer-helper.php:106
2755
  #: includes/class-wc-gzd-customer-helper.php:114
2756
  msgid "Title"
2775
  #: includes/api/class-wc-gzd-rest-customers-controller.php:163
2776
  #: includes/api/class-wc-gzd-rest-orders-controller.php:194
2777
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:30
2778
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:655
2779
  #: includes/gateways/direct-debit/views/html-export.php:27
2780
  msgid "Direct Debit"
2781
  msgstr "Lastschrift"
2786
  #: includes/class-wc-gzd-privacy.php:61 includes/class-wc-gzd-privacy.php:83
2787
  #: includes/class-wc-gzd-privacy.php:123
2788
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:108
2789
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:450
2790
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:681
2791
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:822
2792
  msgid "Account Holder"
2793
  msgstr "Kontoinhaber"
2794
 
2798
  #: includes/class-wc-gzd-privacy.php:62 includes/class-wc-gzd-privacy.php:84
2799
  #: includes/class-wc-gzd-privacy.php:124
2800
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:115
2801
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:451
2802
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:689
2803
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:826
2804
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:918
2805
  msgid "IBAN"
2806
  msgstr "IBAN"
2807
 
2811
  #: includes/class-wc-gzd-privacy.php:63 includes/class-wc-gzd-privacy.php:85
2812
  #: includes/class-wc-gzd-privacy.php:125
2813
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:122
2814
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:452
2815
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:830
2816
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:919
2817
  msgid "BIC/SWIFT"
2818
  msgstr "BIC/SWIFT"
2819
 
2832
  # @ woocommerce-germanized
2833
  #: includes/api/class-wc-gzd-rest-orders-controller.php:214
2834
  #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:129
2835
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:456
2836
  msgid "Mandate Reference ID"
2837
  msgstr "Mandat-Referenznummer"
2838
 
3037
  "Mail mit Ihren Daten als Bestätigung."
3038
 
3039
  # @ woocommerce-germanized
3040
+ #: includes/class-wc-gzd-checkout.php:338
3041
+ #: includes/class-wc-gzd-checkout.php:346
3042
+ #: includes/class-wc-gzd-checkout.php:371
3043
+ #: includes/class-wc-gzd-checkout.php:597
3044
  #: includes/class-wc-gzd-customer-helper.php:108
3045
  #: includes/class-wc-gzd-customer-helper.php:116
3046
  #: includes/class-wc-gzd-revocation.php:41
3049
  msgstr "Herr"
3050
 
3051
  # @ woocommerce-germanized
3052
+ #: includes/class-wc-gzd-checkout.php:338
3053
+ #: includes/class-wc-gzd-checkout.php:346
3054
+ #: includes/class-wc-gzd-checkout.php:372
3055
+ #: includes/class-wc-gzd-checkout.php:597
3056
+ #: includes/class-wc-gzd-checkout.php:606
3057
  #: includes/class-wc-gzd-customer-helper.php:108
3058
  #: includes/class-wc-gzd-customer-helper.php:116
3059
  #: includes/class-wc-gzd-revocation.php:42
3098
  "Bitte erstellen Sie ein Kundenkonto oder loggen Sie sich ein, bevor Sie zur "
3099
  "Kasse gehen"
3100
 
3101
+ #: includes/class-wc-gzd-customer-helper.php:296
3102
  msgid ""
3103
  "This activation code has expired. We have sent you a new activation code via "
3104
  "e-mail."
3107
  "Code per E-Mail geschickt."
3108
 
3109
  # @ woocommerce-germanized
3110
+ #: includes/class-wc-gzd-customer-helper.php:298
3111
  msgid "Sorry, but this activation code cannot be found."
3112
  msgstr "Sorry, dieser Aktivierungscode ist uns leider nicht bekannt."
3113
 
3114
  # @ woocommerce-germanized
3115
+ #: includes/class-wc-gzd-customer-helper.php:302
3116
  msgid "Thank you. You have successfully activated your account."
3117
  msgstr "Vielen Dank. Ihr Benutzerkonto wurde erfolgreich aktiviert."
3118
 
3119
+ #: includes/class-wc-gzd-customer-helper.php:409
3120
  msgid "Expired activation key"
3121
  msgstr "Abgelaufener Aktivierungscode"
3122
 
3123
+ #: includes/class-wc-gzd-customer-helper.php:414
3124
  msgid "Invalid activation key"
3125
  msgstr "Aktivierungscode ungültig"
3126
 
3167
  msgstr "eKomi Kundenbewertung"
3168
 
3169
  # @ woocommerce-germanized
3170
+ #: includes/class-wc-gzd-ekomi.php:402
3171
  msgctxt "ekomi"
3172
  msgid "Ekomi Integration"
3173
  msgstr "eKomi Integration"
3174
 
3175
  # @ woocommerce-germanized
3176
+ #: includes/class-wc-gzd-ekomi.php:405
3177
  msgctxt "ekomi"
3178
  msgid "Shop ID"
3179
  msgstr "Shop ID"
3180
 
3181
  # @ woocommerce-germanized
3182
+ #: includes/class-wc-gzd-ekomi.php:406
3183
  msgctxt "ekomi"
3184
  msgid "Insert your Shop ID here."
3185
  msgstr "Füge hier deine Shop ID ein."
3186
 
3187
  # @ woocommerce-germanized
3188
+ #: includes/class-wc-gzd-ekomi.php:414
3189
  msgctxt "ekomi"
3190
  msgid "Link to Certificate"
3191
  msgstr "Link zum Shop-Zertifikat"
3192
 
3193
  # @ woocommerce-germanized
3194
+ #: includes/class-wc-gzd-ekomi.php:415
3195
  msgctxt "ekomi"
3196
  msgid "Insert the link to your Certificate"
3197
  msgstr "Füge hier den Link zu deinem Shop-Zertifikat ein"
3198
 
3199
  # @ woocommerce-germanized
3200
+ #: includes/class-wc-gzd-ekomi.php:423
3201
  msgctxt "ekomi"
3202
  msgid "Partner ID"
3203
  msgstr "Partner ID"
3204
 
3205
  # @ woocommerce-germanized
3206
+ #: includes/class-wc-gzd-ekomi.php:424
3207
  msgctxt "ekomi"
3208
  msgid ""
3209
  "Insert your Partner ID here (you may find that ID on your certificate "
3213
  "Zertifikat-Seite)"
3214
 
3215
  # @ woocommerce-germanized
3216
+ #: includes/class-wc-gzd-ekomi.php:432
3217
  msgctxt "ekomi"
3218
  msgid "Interface ID"
3219
  msgstr "Interface ID"
3220
 
3221
  # @ woocommerce-germanized
3222
+ #: includes/class-wc-gzd-ekomi.php:433
3223
  msgctxt "ekomi"
3224
  msgid "Insert your Interface ID here."
3225
  msgstr ""
3227
  "Kundenbereich)"
3228
 
3229
  # @ woocommerce-germanized
3230
+ #: includes/class-wc-gzd-ekomi.php:441
3231
  msgctxt "ekomi"
3232
  msgid "Interface Password"
3233
  msgstr "Interface Password"
3234
 
3235
  # @ woocommerce-germanized
3236
+ #: includes/class-wc-gzd-ekomi.php:442
3237
  msgctxt "ekomi"
3238
  msgid "Insert your Interface Password here."
3239
  msgstr ""
3241
  "Kundenbereich)"
3242
 
3243
  # @ woocommerce-germanized
3244
+ #: includes/class-wc-gzd-ekomi.php:450
3245
  msgctxt "ekomi"
3246
  msgid "Days until Email"
3247
  msgstr "Tage bis E-Mail Erinnerung"
3248
 
3249
  # @ woocommerce-germanized
3250
+ #: includes/class-wc-gzd-ekomi.php:451
3251
  msgctxt "ekomi"
3252
  msgid ""
3253
  "Number of days between an order being marked as completed and review email "
3258
  "den Kunden"
3259
 
3260
  # @ woocommerce-germanized
3261
+ #: includes/class-wc-gzd-ekomi.php:466
3262
  msgctxt "ekomi"
3263
  msgid "eKomi Options"
3264
  msgstr "eKomi"
3511
 
3512
  # @ woocommerce-germanized
3513
  #: includes/class-wc-gzd-legal-checkbox-manager.php:173
3514
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:746
3515
  msgid "I hereby agree to the {link}direct debit mandate{/link}."
3516
  msgstr "Hiermit erteile ich das {link}SEPA Lastschriftmandat{/link}."
3517
 
3522
 
3523
  # @ woocommerce-germanized
3524
  #: includes/class-wc-gzd-legal-checkbox-manager.php:181
3525
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:189
3526
  msgid "SEPA"
3527
  msgstr "SEPA"
3528
 
3531
  msgstr "Lässt den Kunden das SEPA Mandat vor dem Kauf bestätigen."
3532
 
3533
  # @ woocommerce-germanized
3534
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:371
3535
  msgid "Checkout"
3536
  msgstr "Kasse"
3537
 
3538
  # @ woocommerce-germanized
3539
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:372
3540
  msgid "Register form"
3541
  msgstr "Registrierung"
3542
 
3543
  # @ woocommerce
3544
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:373
3545
  msgid "Pay for order"
3546
  msgstr "Bestell-Bezahlseite"
3547
 
3548
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:374
3549
  msgid "Reviews"
3550
  msgstr "Bewertungen"
3551
 
3552
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:436
3553
  #, php-format
3554
  msgid "Checkbox location %s does not exist."
3555
  msgstr "Checkbox Ort %s existiert nicht."
3556
 
3557
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:455
3558
  #, php-format
3559
  msgid "Please make sure to check %s checkbox."
3560
  msgstr "Kontrolliere bitte %s. Hier fehlt eine Einwilligung."
3561
 
3562
+ #: includes/class-wc-gzd-legal-checkbox-manager.php:460
3563
  #, php-format
3564
  msgid "Checkbox with name %s does already exist."
3565
  msgstr "Eine Checkbox mit dem Namen %s existiert bereits."
3566
 
3567
  # @ woocommerce-germanized
3568
+ #: includes/class-wc-gzd-legal-checkbox.php:718
3569
  msgid "Status"
3570
  msgstr "Status"
3571
 
3572
  # @ woocommerce-germanized
3573
+ #: includes/class-wc-gzd-legal-checkbox.php:721
3574
  msgid "Enable checkbox"
3575
  msgstr "Checkbox aktivieren"
3576
 
3577
+ #: includes/class-wc-gzd-legal-checkbox.php:730
3578
  msgid ""
3579
  "Choose a name to identify your checkbox. Upon creating a new checkbox, this "
3580
  "value is being used to generate the Id."
3582
  "Wähle einen Namen um deine Checkbox zu identifizieren. Bei Erstellung einer "
3583
  "neuen Checkbox wird dieser Wert verwendet um eine Id zu erzeugen."
3584
 
3585
+ #: includes/class-wc-gzd-legal-checkbox.php:735
3586
  msgid "Id"
3587
  msgstr "Id"
3588
 
3589
+ #: includes/class-wc-gzd-legal-checkbox.php:739
3590
  msgid ""
3591
  "The checkbox Id is the unique indentifier which is used to identify the "
3592
  "checkbox within the code. Cannot be edited after creating the checkbox."
3595
  "Code heraus zugreifbar zu machen. Kann nach dem Erstellen einer Checkbox "
3596
  "nicht mehr verändert werden."
3597
 
3598
+ #: includes/class-wc-gzd-legal-checkbox.php:748
3599
  msgid "Describe the use case of your checkbox."
3600
  msgstr "Beschreibe hier den Use-Case deiner Checkbox."
3601
 
3602
+ #: includes/class-wc-gzd-legal-checkbox.php:754
3603
  msgid "Label"
3604
  msgstr "Beschriftung"
3605
 
3606
+ #: includes/class-wc-gzd-legal-checkbox.php:758
3607
  msgid "Choose a label to be inserted next to the checkbox."
3608
  msgstr "Wähle eine Beschriftung aus, die neben der Checkbox platziert wird."
3609
 
3610
+ #: includes/class-wc-gzd-legal-checkbox.php:759
3611
+ #: includes/class-wc-gzd-legal-checkbox.php:769
3612
  #, php-format
3613
  msgid "You may use one of the following placeholders within the text: %s"
3614
  msgstr "Du kannst einen der folgenden Platzhalter in deinem Text verwenden: %s"
3615
 
3616
+ #: includes/class-wc-gzd-legal-checkbox.php:764
3617
  msgid "Error Message"
3618
  msgstr "Fehlermeldung"
3619
 
3620
+ #: includes/class-wc-gzd-legal-checkbox.php:768
3621
  msgid ""
3622
  "Choose an error message to be shown when the user has not confirmed the "
3623
  "checkbox."
3626
  "die Checkbox nicht bestätigt hat."
3627
 
3628
  # @ woocommerce-germanized
3629
+ #: includes/class-wc-gzd-legal-checkbox.php:774
3630
  msgid "Hide input"
3631
  msgstr "Ausblenden"
3632
 
3633
+ #: includes/class-wc-gzd-legal-checkbox.php:777
3634
  msgid "Do only show a label and hide the actual checkbox."
3635
  msgstr ""
3636
  "Zeige lediglich die Beschriftung und entferne die eigentliche Checkbox."
3637
 
3638
+ #: includes/class-wc-gzd-legal-checkbox.php:785
3639
  msgid "Mark the checkbox as mandatory."
3640
  msgstr "Checkbox zum Pflichtfeld machen."
3641
 
3642
  # @ woocommerce-germanized
3643
+ #: includes/class-wc-gzd-legal-checkbox.php:790
3644
  msgid "Locations"
3645
  msgstr "Orte"
3646
 
3647
+ #: includes/class-wc-gzd-legal-checkbox.php:794
3648
  msgid "Choose where to display your checkbox."
3649
  msgstr "Wähle einen Ort aus, an dem die Checkbox platziert werden soll."
3650
 
3651
  # @ woocommerce-germanized
3652
+ #: includes/class-wc-gzd-payment-gateways.php:95
3653
+ #: includes/class-wc-gzd-payment-gateways.php:139
3654
  #, php-format
3655
  msgid "%s payment charge"
3656
  msgstr "%s Zahlungsgebühr"
3657
 
3658
  # @ woocommerce-germanized
3659
+ #: includes/class-wc-gzd-payment-gateways.php:98
3660
  #: includes/wc-gzd-order-functions.php:20
3661
  #: includes/wc-gzd-template-functions.php:375
3662
  #, php-format
3664
  msgstr "zzgl. %s Übermittlungsentgelt (direkt an den Zusteller)"
3665
 
3666
  # @ woocommerce-germanized
3667
+ #: includes/class-wc-gzd-payment-gateways.php:173
3668
  msgid "Fee"
3669
  msgstr "Zahlungsgebühr"
3670
 
3671
  # @ woocommerce-germanized
3672
+ #: includes/class-wc-gzd-payment-gateways.php:175
3673
  msgid ""
3674
  "This fee is being added if customer selects payment method within checkout."
3675
  msgstr ""
3677
  "Zahlungsart aktiviert."
3678
 
3679
  # @ woocommerce-germanized
3680
+ #: includes/class-wc-gzd-payment-gateways.php:180
3681
  msgid "Fee is taxable?"
3682
  msgstr "Mwst. berechnen?"
3683
 
3684
  # @ woocommerce-germanized
3685
+ #: includes/class-wc-gzd-payment-gateways.php:182
3686
  msgid "Check if fee is taxable."
3687
  msgstr "MwSt.-Berechnung für Gebühr aktivieren."
3688
 
3689
  # @ woocommerce-germanized
3690
+ #: includes/class-wc-gzd-payment-gateways.php:189
3691
  msgid "Forwarding Fee"
3692
  msgstr "Übermittlungsentgelt"
3693
 
3694
  # @ woocommerce-germanized
3695
+ #: includes/class-wc-gzd-payment-gateways.php:192
3696
  msgid ""
3697
  "Forwarding fee will be charged by the transport agent in addition to the "
3698
  "cash of delivery fee e.g. DHL - tax free."
3701
  "kassiert - z.B. DHL (steuerfrei)."
3702
 
3703
  # @ woocommerce-germanized
3704
+ #: includes/class-wc-gzd-payment-gateways.php:236
3705
  msgid "Payment charge"
3706
  msgstr "Zahlungsgebühr"
3707
 
3856
  msgid "Mandate Email"
3857
  msgstr "Mandat E-Mail"
3858
 
3859
+ #: includes/class-wc-gzd-product-variable.php:116
3860
+ #: includes/class-wc-gzd-product-variable.php:121
3861
  #, php-format
3862
  msgctxt "Price range: from-to"
3863
  msgid "%1$s&ndash;%2$s"
3988
  "Sale price labels used to mark old prices (e.g. Recommended Retail Price)"
3989
  msgstr "Preishinweise zur Markierung von Streichpreisen"
3990
 
 
 
 
 
 
 
3991
  # @ woocommerce-germanized
3992
  #: includes/emails/class-wc-gzd-email-customer-ekomi.php:24
3993
  msgctxt "ekomi"
4294
  "Bitte beachten Sie: Die Frist für die Vorabinformation der SEPA-Lastschrift "
4295
  "wird auf einen Tag verkürzt. "
4296
 
4297
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:192
4298
  msgid "SEPA XML"
4299
  msgstr "SEPA XML"
4300
 
4301
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:253
4302
  msgid "SEPA XML Export"
4303
  msgstr "SEPA XML Export"
4304
 
4305
  # @ woocommerce-germanized
4306
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:390
4307
  #, php-format
4308
  msgid "Order %s"
4309
  msgstr "Bestellung %s"
4310
 
4311
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:412
4312
  msgid "Will be notified separately"
4313
  msgstr "Wird separat mitgeteilt"
4314
 
4315
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:461
4316
  #, php-format
4317
  msgid ""
4318
  "We will debit %s from your account by direct debit on or shortly after %s."
4321
  "%s ein."
4322
 
4323
  # @ woocommerce-germanized
4324
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:565
4325
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:588
4326
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:612
4327
  msgid "a single payment"
4328
  msgstr "eine einmalige Zahlung"
4329
 
4330
  # @ woocommerce-germanized
4331
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:646
4332
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:93
4333
  msgid "Enable/Disable"
4334
  msgstr "Aktivieren/Deaktivieren"
4335
 
4336
  # @ woocommerce-germanized
4337
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:648
4338
  msgid "Enable Direct Debit Payment"
4339
  msgstr "Bezahlung per Lastschrift aktivieren"
4340
 
4341
  # @ woocommerce-germanized
4342
  # @ woocommerce
4343
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:652
4344
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:99
4345
  msgctxt "gateway"
4346
  msgid "Title"
4347
  msgstr "Bezeichnung"
4348
 
4349
  # @ woocommerce-germanized
4350
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:654
4351
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:101
4352
  msgid "This controls the title which the user sees during checkout."
4353
  msgstr ""
4354
  "Beschreibungstext, den Benutzer bei der Auswahl dieser Zahlungsart sehen."
4355
 
4356
  # @ woocommerce-germanized
4357
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:661
4358
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:108
4359
  msgid "Payment method description that the customer will see on your checkout."
4360
  msgstr "Beschreibung der Zahlungsart, die Kunden auf deiner Website sehen."
4361
 
4362
  # @ woocommerce-germanized
4363
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:662
4364
  msgid "The order amount will be debited directly from your bank account."
4365
  msgstr ""
4366
  "Der Gesamtbestellbetrag wird per SEPA-Lastschrift direkt von Ihrem Konto "
4367
  "abgebucht."
4368
 
4369
  # @ woocommerce-germanized
4370
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:666
4371
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:113
4372
  msgid "Instructions"
4373
  msgstr "Anweisungen"
4374
 
4375
  # @ woocommerce-germanized
4376
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:668
4377
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:115
4378
  msgid "Instructions that will be added to the thank you page and emails."
4379
  msgstr "Anweisung, die zur „Danke“-Seite und zu E-Mails hinzugefügt werden."
4380
 
4381
  # @ woocommerce-germanized
4382
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:673
4383
  msgid "Debtee"
4384
  msgstr "Gläubiger Informationen"
4385
 
4386
  # @ woocommerce-germanized
4387
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:675
4388
  msgid "Insert your company information."
4389
  msgstr "Füge hier die Informationen zu deinem Unternehmen ein."
4390
 
4391
  # @ woocommerce-germanized
4392
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:677
4393
  msgid "Company Inc, John Doe Street, New York"
4394
  msgstr "Musterfirma GmbH, Musterstraße 12, 12203 Musterstadt"
4395
 
4396
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:683
4397
  msgid "Insert the bank account holder name."
4398
  msgstr "Füge hier den Namen des Kontoinhabers ein."
4399
 
4400
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:685
4401
  msgid "Company Inc"
4402
  msgstr "Muster GmbH"
4403
 
4404
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:691
4405
  msgid "Insert the bank account IBAN."
4406
  msgstr "Füge hier den IBAN deines Kontos ein."
4407
 
4408
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:696
4409
  msgid "BIC"
4410
  msgstr "BIC"
4411
 
4412
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:698
4413
  msgid "Insert the bank account BIC."
4414
  msgstr "Füge hier den BIC deines Kontos ein."
4415
 
4416
  # @ woocommerce-germanized
4417
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:703
4418
  msgid "Debtee identification number"
4419
  msgstr "Identifikationsnummer"
4420
 
4421
  # @ woocommerce-germanized
4422
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:705
4423
  #, php-format
4424
  msgid ""
4425
  "Insert your debtee indentification number. More information can be found <a "
4429
  "Weitere Informationen zu dieser Nummer erhältst du <a href=\"%s\">hier</a>."
4430
 
4431
  # @ woocommerce-germanized
4432
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:709
4433
  msgid "Generate Mandate ID"
4434
  msgstr "Mandat-Referenz generieren"
4435
 
4436
  # @ woocommerce-germanized
4437
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:711
4438
  msgid "Automatically generate Mandate ID."
4439
  msgstr "Mandat-Referenznummer automatisch generieren."
4440
 
4441
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:712
4442
  msgid ""
4443
  "Automatically generate Mandate ID after order completion (based on Order ID)."
4444
  msgstr ""
4446
  "basierend auf der Bestellnummer."
4447
 
4448
  # @ woocommerce-germanized
4449
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:716
4450
  msgid "XML Pain Format"
4451
  msgstr "XML Pain Format"
4452
 
4453
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:718
4454
  msgid ""
4455
  "You may adjust the XML Export Pain Schema to your banks needs. Some banks "
4456
  "may require pain.001.003.03."
4459
  "Banken benötigen z.B. pain.001.003.03."
4460
 
4461
  # @ woocommerce-germanized
4462
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:722
4463
  msgid "Mandate ID Format"
4464
  msgstr "Mandat-Referenz Format"
4465
 
4466
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:724
4467
  msgid ""
4468
  "You may extend the Mandate ID format by adding a prefix and/or suffix. Use "
4469
  "{id} as placeholder to insert the automatically generated ID."
4472
  "{id} als Platzhalter um die automatisch generierte Referenznummer einzufügen."
4473
 
4474
  # @ woocommerce-germanized
4475
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:728
4476
  msgid "Mandate Text"
4477
  msgstr "Lastschriftmandat"
4478
 
4479
  # @ woocommerce-germanized
4480
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:730
4481
  msgid ""
4482
  "This text will be populated with live order/checkout data. Will be used as "
4483
  "preview direct debit mandate and as email template text."
4488
  "Verfügung gestellt."
4489
 
4490
  # @ woocommerce-germanized
4491
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:736
4492
  msgid "Checkbox"
4493
  msgstr "Checkbox"
4494
 
4495
  # @ woocommerce-germanized
4496
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:737
4497
  msgid "Enable \"agree to SEPA mandate\" checkbox"
4498
  msgstr "Aktiviere die Checkbox zur Bestätigung des Lastschriftmandates."
4499
 
4500
  # @ woocommerce-germanized
4501
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:739
4502
  msgid "Enable a checkbox linking to a SEPA direct debit mandate preview."
4503
  msgstr ""
4504
  "Aktiviere eine Checkbox, die zu einer Vorschau des Lastschrift-Mandats führt."
4505
 
4506
  # @ woocommerce-germanized
4507
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:743
4508
  msgid "Checkbox label"
4509
  msgstr "Checkbox Text"
4510
 
4511
  # @ woocommerce-germanized
4512
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:745
4513
  msgid ""
4514
  "Customize the checkbox label. Use {link}link name{/link} to insert the "
4515
  "preview link."
4517
  "Passe den Checkbox Text an. Verwende {link}SEPA Lastschriftmandat{/link} um "
4518
  "auf die Vorschau zu verlinken."
4519
 
4520
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:750
4521
  msgid "Enable pre-notification"
4522
  msgstr "Vorankündigung aktivieren"
4523
 
4524
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:751
4525
  msgid "Insert pre-notification text within the order confirmation email."
4526
  msgstr ""
4527
  "Fügt einen Standard-Text zur Vorankündigung des SEPA-Einzugs in die "
4528
  "Bestellbestätigung ein."
4529
 
4530
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:753
4531
  msgid ""
4532
  "This option inserts a standard text containing a pre-notification for the "
4533
  "customer."
4536
  "die Bestellbestätigung ein. In der Ankündigung wird u.a. ein konkreter "
4537
  "Fälligkeitstermin genannt."
4538
 
4539
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:757
4540
  msgid "Debit days"
4541
  msgstr "Fälligkeitstage"
4542
 
4543
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:759
4544
  msgid ""
4545
  "This option is used to calculate the debit date and is added to the order "
4546
  "date."
4550
  "hier eingestellten Anzahl Tage."
4551
 
4552
  # @ woocommerce-germanized
4553
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:763
4554
  msgid "Mask IBAN"
4555
  msgstr "IBAN maskieren"
4556
 
4557
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:764
4558
  msgid "Mask the IBAN within emails."
4559
  msgstr "IBAN in E-Mails maskieren."
4560
 
4561
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:766
4562
  msgid ""
4563
  "This will lead to masked IBANs within emails (replaced by *). All but last 4 "
4564
  "digits will be masked."
4566
  "Der IBAN wird in E-Mails (abgesehen von den letzten 4 Stellen) mit * "
4567
  "maskiert."
4568
 
4569
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:775
4570
  msgid "Remember"
4571
  msgstr "Bankdaten merken\t"
4572
 
4573
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:776
4574
  msgid "Remember account data for returning customers."
4575
  msgstr "Bankverbindung für registrierte Kunden speichern."
4576
 
4577
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:778
4578
  msgid "Save account data as user meta if user has/creates a customer account."
4579
  msgstr ""
4580
  "Speichert die Bankverbindung für registrierte Kunden in der user_meta "
4582
  "eigenständig aus."
4583
 
4584
  # @ woocommerce-germanized
4585
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:861
4586
  msgid "Please insert your SEPA account data."
4587
  msgstr "Bitte fügen Sie Ihre SEPA Kontoinformationen ein."
4588
 
4589
  # @ woocommerce-germanized
4590
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:871
4591
  msgid "Your IBAN seems to be invalid."
4592
  msgstr "Ihr IBAN scheint nicht gültig zu sein."
4593
 
4594
  # @ woocommerce-germanized
4595
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:873
4596
  msgid "Your IBAN's country code doesn’t match with your billing country."
4597
  msgstr "Der Ländercode des IBANs stimmt nicht mit dem Rechnungsland überein."
4598
 
4599
  # @ woocommerce-germanized
4600
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:877
4601
  msgid "Your BIC seems to be invalid."
4602
  msgstr "Ihr BIC/SWIFT scheint nicht gültig zu sein."
4603
 
4604
  # @ woocommerce-germanized
4605
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:920
4606
  msgid "is invalid"
4607
  msgstr "ist ungültig"
4608
 
4609
  # @ woocommerce-germanized
4610
+ #: includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:957
4611
  msgid "Awaiting Direct Debit Payment"
4612
  msgstr "Zahlung per Lastschrift ausstehend"
4613
 
4671
  # @ woocommerce-germanized
4672
  # @ woocommerce
4673
  #: includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:64
4674
+ #: woocommerce-germanized.php:627
4675
  msgid "Settings"
4676
  msgstr "Einstellungen"
4677
 
5631
  msgstr ""
5632
  "Sie haben vor kurzem bei %s online bestellt. Vielen Dank! Wir würden uns "
5633
  "sehr freuen, wenn Sie sich die Zeit nehmen würden, eine kurze Bewertung zu "
5634
+ "Ihrer Bestellung zu verfassen. Bitte klicken Sie einfach auf nachfolgenden "
5635
  "Button um Ihre Bewertung bei Trusted Shops abzugeben."
5636
 
5637
  # @ woocommerce-germanized
5720
  msgid "%s custom reviews"
5721
  msgstr "%s Kundenbewertungen"
5722
 
5723
+ #: woocommerce-germanized.php:729
5724
  msgid "Pease wait while we are trying to redirect you to the payment provider."
5725
  msgstr "Einen Moment - wir versuchen Sie zum Zahlungsanbieter weiterzuleiten."
5726
 
5727
  # @ woocommerce-germanized
5728
+ #: woocommerce-germanized.php:795
5729
  msgid "Order Confirmation"
5730
  msgstr "Bestellbestätigung"
5731
 
5732
+ # @ woocommerce-germanized
5733
+ #~ msgid "recurring payments"
5734
+ #~ msgstr "wiederkehrende Zahlungen"
5735
+
5736
  #~ msgid "Not found within legal notice."
5737
  #~ msgstr "Nicht im rechtlichen Hinweistext gefunden."
5738
 
includes/abstracts/abstract-wc-gzd-compatibility-woocommerce-role-based-pricing.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WC GZD Role Based Pricing Compatibility Base Helper
4
+ *
5
+ * @class WC_GZD_Compatibility_Woocommerce_Role_Based_Pricing
6
+ * @category Class
7
+ * @author vendidero
8
+ */
9
+ abstract class WC_GZD_Compatibility_Woocommerce_Role_Based_Pricing extends WC_GZD_Compatibility {
10
+
11
+ protected function hooks() {
12
+ // Add filter to price output
13
+ add_filter( 'woocommerce_get_price_html', array( $this, 'set_unit_price_product_filter' ), 200, 2 );
14
+
15
+ // Filter seems to be removed due to low priority
16
+ remove_filter( 'woocommerce_cart_item_price', 'wc_gzd_cart_product_unit_price', wc_gzd_get_hook_priority( 'cart_product_unit_price' ) );
17
+ remove_filter( 'woocommerce_cart_item_subtotal', 'wc_gzd_cart_product_unit_price', wc_gzd_get_hook_priority( 'cart_subtotal_unit_price' ) );
18
+
19
+ // Readd filter with higher priority
20
+ add_filter( 'woocommerce_cart_item_price', 'wc_gzd_cart_product_unit_price', 500, 3 );
21
+ add_filter( 'woocommerce_cart_item_subtotal', 'wc_gzd_cart_product_unit_price', 500, 3 );
22
+
23
+ // Filters to recalculate unit price during cart/checkout
24
+ add_action( 'woocommerce_before_mini_cart', array( $this, 'set_unit_price_filter' ), 10 );
25
+ add_action( 'woocommerce_before_cart', array( $this, 'set_unit_price_filter' ), 10 );
26
+ add_action( 'woocommerce_before_checkout_form', array( $this, 'set_unit_price_filter' ), 10 );
27
+ add_action( 'woocommerce_gzd_review_order_before_cart_contents', array( $this, 'set_unit_price_filter' ), 10 );
28
+
29
+ // Recalculate unit price before adding order item meta
30
+ add_filter( 'woocommerce_gzd_order_item_unit_price', array( $this, 'unit_price_order_item' ), 10, 4 );
31
+
32
+ // Support variable products
33
+ add_filter( 'woocommerce_gzd_get_variation_unit_prices_hash', array( $this, 'variable_unit_prices_hash' ), 10, 1 );
34
+ }
35
+
36
+ public function load() {
37
+ $this->hooks();
38
+ }
39
+
40
+ public function set_unit_price_product_filter( $html, $product ) {
41
+ $this->set_unit_price_filter();
42
+ return $html;
43
+ }
44
+
45
+ public function unit_price_order_item( $price, $gzd_product, $item, $order ) {
46
+ $product_price = $order->get_item_subtotal( $item, true );
47
+
48
+ $gzd_product->recalculate_unit_price( array(
49
+ 'regular_price' => $product_price,
50
+ 'price' => $product_price,
51
+ ) );
52
+
53
+ return $gzd_product->get_unit_html( false );
54
+ }
55
+
56
+ public function set_unit_price_filter() {
57
+ add_action( 'woocommerce_gzd_before_get_unit_price', array( $this, 'calculate_unit_price' ), 10, 1 );
58
+ // Adjust variable from-to unit prices
59
+ add_action( 'woocommerce_gzd_before_get_variable_variation_unit_price', array( $this, 'calculate_unit_price' ), 10, 1 );
60
+ }
61
+
62
+ public function calculate_unit_price( $product ) {
63
+ $product->recalculate_unit_price();
64
+ }
65
+
66
+ public function variable_unit_prices_hash( $price_hash ) {
67
+ // Get a key based on role, since all rules use roles.
68
+ $session_id = null;
69
+
70
+ $roles = array();
71
+ if ( is_user_logged_in() ) {
72
+ $user = new WP_User( get_current_user_id() );
73
+ if ( ! empty( $user->roles ) && is_array( $user->roles ) ) {
74
+ foreach ( $user->roles as $role ) {
75
+ $roles[ $role ] = $role;
76
+ }
77
+ }
78
+ }
79
+
80
+ if ( ! empty( $roles ) ) {
81
+ $session_id = implode( '', $roles );
82
+ } else {
83
+ $session_id = 'norole';
84
+ }
85
+
86
+ $price_hash[] = $session_id;
87
+
88
+ return $price_hash;
89
+ }
90
+
91
+ }
includes/abstracts/abstract-wc-gzd-product.php CHANGED
@@ -382,6 +382,15 @@ class WC_GZD_Product {
382
  return apply_filters( 'woocommerce_gzd_get_unit_sale_price', $this->unit_price_sale, $this );
383
  }
384
 
 
 
 
 
 
 
 
 
 
385
  /**
386
  * Returns the unit price (if is sale then return sale price)
387
  *
@@ -390,10 +399,10 @@ class WC_GZD_Product {
390
  * @return string formatted unit price
391
  */
392
  public function get_unit_price( $qty = 1, $price = '' ) {
393
-
394
  do_action( 'woocommerce_gzd_before_get_unit_price', $this, $price, $qty );
395
 
396
  $tax_display_mode = get_option( 'woocommerce_tax_display_shop' );
 
397
  return ( $tax_display_mode == 'incl' ) ? $this->get_unit_price_including_tax( $qty, $price ) : $this->get_unit_price_excluding_tax( $qty, $price );
398
  }
399
 
@@ -405,7 +414,7 @@ class WC_GZD_Product {
405
  * @return string unit price including tax
406
  */
407
  public function get_unit_price_including_tax( $qty = 1, $price = '' ) {
408
- $price = ( $price == '' ) ? $this->unit_price : $price;
409
  return apply_filters( 'woocommerce_gzd_unit_price_including_tax', ( $price == '' ) ? '' : wc_gzd_get_price_including_tax( $this->child, array( 'price' => $price, 'qty' => $qty ) ), $price, $qty, $this );
410
  }
411
 
@@ -417,7 +426,7 @@ class WC_GZD_Product {
417
  * @return string unit price excluding tax
418
  */
419
  public function get_unit_price_excluding_tax( $qty = 1, $price = '' ) {
420
- $price = ( $price == '' ) ? $this->unit_price : $price;
421
  return apply_filters( 'woocommerce_gzd_unit_price_excluding_tax', ( $price == '' ) ? '' : wc_gzd_get_price_excluding_tax( $this->child, array( 'price' => $price, 'qty' => $qty ) ), $price, $qty, $this );
422
  }
423
 
@@ -446,9 +455,9 @@ class WC_GZD_Product {
446
 
447
  do_action( 'woocommerce_gzd_before_get_unit_price_html', $this );
448
 
449
- $display_price = $this->get_unit_price();
450
  $display_regular_price = $this->get_unit_price( 1, $this->get_unit_regular_price() );
451
- $display_sale_price = $this->get_unit_price( 1, $this->get_unit_sale_price() );
452
 
453
  $price_html = ( ( $this->is_on_unit_sale() && $show_sale ) ? $this->get_price_html_from_to( $display_regular_price, $display_sale_price, false ) : wc_price( $display_price ) );
454
  $text = get_option( 'woocommerce_gzd_unit_price_text' );
382
  return apply_filters( 'woocommerce_gzd_get_unit_sale_price', $this->unit_price_sale, $this );
383
  }
384
 
385
+ /**
386
+ * Returns unit sale price
387
+ *
388
+ * @return string the sale price
389
+ */
390
+ public function get_unit_price_raw() {
391
+ return apply_filters( 'woocommerce_gzd_get_unit_price_raw', $this->unit_price, $this );
392
+ }
393
+
394
  /**
395
  * Returns the unit price (if is sale then return sale price)
396
  *
399
  * @return string formatted unit price
400
  */
401
  public function get_unit_price( $qty = 1, $price = '' ) {
 
402
  do_action( 'woocommerce_gzd_before_get_unit_price', $this, $price, $qty );
403
 
404
  $tax_display_mode = get_option( 'woocommerce_tax_display_shop' );
405
+
406
  return ( $tax_display_mode == 'incl' ) ? $this->get_unit_price_including_tax( $qty, $price ) : $this->get_unit_price_excluding_tax( $qty, $price );
407
  }
408
 
414
  * @return string unit price including tax
415
  */
416
  public function get_unit_price_including_tax( $qty = 1, $price = '' ) {
417
+ $price = ( $price == '' ) ? $this->get_unit_price_raw() : $price;
418
  return apply_filters( 'woocommerce_gzd_unit_price_including_tax', ( $price == '' ) ? '' : wc_gzd_get_price_including_tax( $this->child, array( 'price' => $price, 'qty' => $qty ) ), $price, $qty, $this );
419
  }
420
 
426
  * @return string unit price excluding tax
427
  */
428
  public function get_unit_price_excluding_tax( $qty = 1, $price = '' ) {
429
+ $price = ( $price == '' ) ? $this->get_unit_price_raw() : $price;
430
  return apply_filters( 'woocommerce_gzd_unit_price_excluding_tax', ( $price == '' ) ? '' : wc_gzd_get_price_excluding_tax( $this->child, array( 'price' => $price, 'qty' => $qty ) ), $price, $qty, $this );
431
  }
432
 
455
 
456
  do_action( 'woocommerce_gzd_before_get_unit_price_html', $this );
457
 
458
+ $display_price = $this->get_unit_price();
459
  $display_regular_price = $this->get_unit_price( 1, $this->get_unit_regular_price() );
460
+ $display_sale_price = $this->get_unit_price( 1, $this->get_unit_sale_price() );
461
 
462
  $price_html = ( ( $this->is_on_unit_sale() && $show_sale ) ? $this->get_price_html_from_to( $display_regular_price, $display_sale_price, false ) : wc_price( $display_price ) );
463
  $text = get_option( 'woocommerce_gzd_unit_price_text' );
includes/admin/class-wc-gzd-admin-notices.php CHANGED
@@ -150,9 +150,11 @@ class WC_GZD_Admin_Notices {
150
 
151
  public function is_theme_ready() {
152
  $stylesheet = get_stylesheet_directory() . '/style.css';
153
- $data = get_file_data( $stylesheet, array( 'wc_gzd_compatible' => 'wc_gzd_compatible' ) );
 
154
  if ( ! $data[ 'wc_gzd_compatible' ] && ! current_theme_supports( 'woocommerce-germanized' ) )
155
  return false;
 
156
  return true;
157
  }
158
 
@@ -163,6 +165,7 @@ class WC_GZD_Admin_Notices {
163
  'flatsome',
164
  'storefront',
165
  'virtue',
 
166
  );
167
 
168
  $current = wp_get_theme();
150
 
151
  public function is_theme_ready() {
152
  $stylesheet = get_stylesheet_directory() . '/style.css';
153
+ $data = get_file_data( $stylesheet, array( 'wc_gzd_compatible' => 'wc_gzd_compatible' ) );
154
+
155
  if ( ! $data[ 'wc_gzd_compatible' ] && ! current_theme_supports( 'woocommerce-germanized' ) )
156
  return false;
157
+
158
  return true;
159
  }
160
 
165
  'flatsome',
166
  'storefront',
167
  'virtue',
168
+ 'shopkeeper',
169
  );
170
 
171
  $current = wp_get_theme();
includes/admin/class-wc-gzd-admin-welcome.php CHANGED
@@ -102,7 +102,12 @@ class WC_GZD_Admin_Welcome {
102
  // Drop minor version if 0
103
  $major_version = substr( WC_germanized()->version, 0, 3 );
104
  ?>
105
- <div class="wc-gzd-news">
 
 
 
 
 
106
 
107
  <h1>Willkommen bei WooCommerce Germanized</h1>
108
  <a class="wc-gzd-logo" href="https://vendidero.de/woocommerce-germanized" target="_blank" style="margin-right: 1em"></a>
@@ -120,7 +125,7 @@ class WC_GZD_Admin_Welcome {
120
  </div>
121
  <p class="woocommerce-actions wc-gzd-actions">
122
  <a href="<?php echo admin_url('admin.php?page=wc-settings&tab=germanized'); ?>" class="button button-primary">Einstellungen</a>
123
- <a href="https://vendidero.de/woocommerce-germanized#buy" target="_blank" class="button button-primary">Upgrade zur Pro Version</a>
124
  </p>
125
  <div class="changelog vendipro new-feature">
126
  <h3>Rechtliche Checkboxen UI</h3>
@@ -135,7 +140,7 @@ class WC_GZD_Admin_Welcome {
135
  <p>
136
  Weitere Informationen, auch zu den technischen Details der rechtl. Checkboxen findest du in unserer <a href="https://vendidero.de/dokument/woocommerce-germanized-rechtliche-checkboxen" target="_blank">Doku</a>.
137
  </p>
138
- <div class="vendipro-buttons">
139
  <a href="https://vendidero.de/woocommerce-germanized#pro" target="_blank" class="button button-primary wc-gzd-button">Pro Version entdecken</a>
140
  <p class="price smaller">ab 69,95 € inkl. MwSt. - inkl. 1 Jahr Updates & Premium Support!</p>
141
  </div>
@@ -144,7 +149,7 @@ class WC_GZD_Admin_Welcome {
144
  <img src="<?php echo WC_germanized()->plugin_url();?>/assets/images/checkboxes.png" />
145
  </div>
146
  </div>
147
- <div class="changelog vendipro new-feature">
148
  <h3>Neu: Rechtliche Hinweistexte als PDF-Anhang <span class="wc-gzd-pro">pro</span></h3>
149
  <div class="left">
150
  <a href="https://vendidero.de/woocommerce-germanized#legal-page" target="_blank"><img src="<?php echo WC_germanized()->plugin_url();?>/assets/images/legal-page.png" style="border: none" /></a>
@@ -170,7 +175,7 @@ class WC_GZD_Admin_Welcome {
170
  </div>
171
  </div>
172
  </div>
173
- <div class="changelog vendipro new-feature">
174
  <h3>Mehrstufige Kasse mit Datenüberprüfung <span class="wc-gzd-pro">pro</span></h3>
175
  <div class="left">
176
  <a href="https://vendidero.de/woocommerce-germanized#multistep-checkout" target="_blank"><img src="<?php echo WC_germanized()->plugin_url();?>/assets/images/multistep-checkout.png" /></a>
@@ -205,7 +210,7 @@ class WC_GZD_Admin_Welcome {
205
  </div>
206
  </div>
207
  </div>
208
- <div class="changelog vendipro">
209
  <h3>VendiPro - Das WooCommerce Theme für den deutschen Markt</h3>
210
  <div class="left">
211
  <a href="https://vendidero.de/vendipro" target="_blank"><img src="<?php echo WC_germanized()->plugin_url();?>/assets/images/vendidero.jpg" /></a>
102
  // Drop minor version if 0
103
  $major_version = substr( WC_germanized()->version, 0, 3 );
104
  ?>
105
+ <style>
106
+ .wc-gzd-admin-welcome-hide-pro .wc-germanized-welcome-pro {
107
+ display: none;
108
+ }
109
+ </style>
110
+ <div class="wc-gzd-news <?php echo ( WC_germanized()->is_pro() ? 'wc-gzd-admin-welcome-hide-pro' : '' ); ?>">
111
 
112
  <h1>Willkommen bei WooCommerce Germanized</h1>
113
  <a class="wc-gzd-logo" href="https://vendidero.de/woocommerce-germanized" target="_blank" style="margin-right: 1em"></a>
125
  </div>
126
  <p class="woocommerce-actions wc-gzd-actions">
127
  <a href="<?php echo admin_url('admin.php?page=wc-settings&tab=germanized'); ?>" class="button button-primary">Einstellungen</a>
128
+ <a href="https://vendidero.de/woocommerce-germanized#buy" target="_blank" class="button button-primary wc-germanized-welcome-pro">Upgrade zur Pro Version</a>
129
  </p>
130
  <div class="changelog vendipro new-feature">
131
  <h3>Rechtliche Checkboxen UI</h3>
140
  <p>
141
  Weitere Informationen, auch zu den technischen Details der rechtl. Checkboxen findest du in unserer <a href="https://vendidero.de/dokument/woocommerce-germanized-rechtliche-checkboxen" target="_blank">Doku</a>.
142
  </p>
143
+ <div class="vendipro-buttons wc-germanized-welcome-pro">
144
  <a href="https://vendidero.de/woocommerce-germanized#pro" target="_blank" class="button button-primary wc-gzd-button">Pro Version entdecken</a>
145
  <p class="price smaller">ab 69,95 € inkl. MwSt. - inkl. 1 Jahr Updates & Premium Support!</p>
146
  </div>
149
  <img src="<?php echo WC_germanized()->plugin_url();?>/assets/images/checkboxes.png" />
150
  </div>
151
  </div>
152
+ <div class="changelog vendipro new-feature wc-germanized-welcome-pro">
153
  <h3>Neu: Rechtliche Hinweistexte als PDF-Anhang <span class="wc-gzd-pro">pro</span></h3>
154
  <div class="left">
155
  <a href="https://vendidero.de/woocommerce-germanized#legal-page" target="_blank"><img src="<?php echo WC_germanized()->plugin_url();?>/assets/images/legal-page.png" style="border: none" /></a>
175
  </div>
176
  </div>
177
  </div>
178
+ <div class="changelog vendipro new-feature wc-germanized-welcome-pro">
179
  <h3>Mehrstufige Kasse mit Datenüberprüfung <span class="wc-gzd-pro">pro</span></h3>
180
  <div class="left">
181
  <a href="https://vendidero.de/woocommerce-germanized#multistep-checkout" target="_blank"><img src="<?php echo WC_germanized()->plugin_url();?>/assets/images/multistep-checkout.png" /></a>
210
  </div>
211
  </div>
212
  </div>
213
+ <div class="changelog vendipro wc-germanized-welcome-pro">
214
  <h3>VendiPro - Das WooCommerce Theme für den deutschen Markt</h3>
215
  <div class="left">
216
  <a href="https://vendidero.de/vendipro" target="_blank"><img src="<?php echo WC_germanized()->plugin_url();?>/assets/images/vendidero.jpg" /></a>
includes/admin/class-wc-gzd-admin.php CHANGED
@@ -412,6 +412,10 @@ class WC_GZD_Admin {
412
  }
413
 
414
  public function get_shipping_method_instances() {
 
 
 
 
415
 
416
  if ( ! class_exists( 'WC_Shipping_Zones' ) ) {
417
  $instances = WC()->shipping->get_shipping_methods();
412
  }
413
 
414
  public function get_shipping_method_instances() {
415
+ // Make sure we are not firing before init because otherwise some Woo errors might occur
416
+ if ( ! did_action( 'init' ) ) {
417
+ return array();
418
+ }
419
 
420
  if ( ! class_exists( 'WC_Shipping_Zones' ) ) {
421
  $instances = WC()->shipping->get_shipping_methods();
includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data.php CHANGED
@@ -94,7 +94,7 @@ class WC_Germanized_Meta_Box_Product_Data {
94
  // Let pro version filter prices
95
  $data = apply_filters( 'woocommerce_gzd_save_display_unit_price_data', array(
96
  '_unit_price_regular' => wc_gzd_get_gzd_product( $product )->get_unit_regular_price(),
97
- '_unit_price_sale' => wc_gzd_get_gzd_product( $product )->get_unit_sale_price(),
98
  ), $product );
99
 
100
  // Make sure we update automatically calculated prices
94
  // Let pro version filter prices
95
  $data = apply_filters( 'woocommerce_gzd_save_display_unit_price_data', array(
96
  '_unit_price_regular' => wc_gzd_get_gzd_product( $product )->get_unit_regular_price(),
97
+ '_unit_price_sale' => wc_gzd_get_gzd_product( $product )->get_unit_sale_price(),
98
  ), $product );
99
 
100
  // Make sure we update automatically calculated prices
includes/admin/settings/class-wc-gzd-settings-germanized.php CHANGED
@@ -767,7 +767,7 @@ class WC_GZD_Settings_Germanized extends WC_Settings_Page {
767
  ), $product_types );
768
 
769
  $shipping_methods_options = WC_GZD_Admin::instance()->get_shipping_method_instances_options();
770
- $payment_gateway_options = WC_GZD_Admin::instance()->get_payment_gateway_options();
771
 
772
  $settings = array(
773
 
@@ -1164,14 +1164,14 @@ class WC_GZD_Settings_Germanized extends WC_Settings_Page {
1164
  do_action( 'woocommerce_gzd_before_section_output', $current_section );
1165
 
1166
  if ( apply_filters( 'woocommerce_gzd_settings_section_include_path', true, $current_section ) ) {
1167
- $path = apply_filters( 'woocommerce_gzd_settings_section_html_path', WC_Germanized()->plugin_path() . '/includes/admin/views/html-settings-section.php', $current_section );
1168
  include_once( $path );
1169
  }
1170
  }
1171
 
1172
  public function get_sidebar() {
1173
  ob_start();
1174
- include_once( WC_Germanized()->plugin_path() . '/includes/admin/views/html-settings-sidebar.php' );
1175
  $content = ob_get_clean();
1176
  return $content;
1177
  }
@@ -1260,7 +1260,7 @@ class WC_GZD_Settings_Germanized extends WC_Settings_Page {
1260
  return;
1261
  $GLOBALS[ 'hide_save_button' ] = true;
1262
  $section_title = $this->premium_sections[ $current_section ];
1263
- include_once( WC_Germanized()->plugin_path() . '/includes/admin/views/html-settings-pro.php' );
1264
  }
1265
 
1266
  public function set_premium_sections( $sections ) {
767
  ), $product_types );
768
 
769
  $shipping_methods_options = WC_GZD_Admin::instance()->get_shipping_method_instances_options();
770
+ $payment_gateway_options = WC_GZD_Admin::instance()->get_payment_gateway_options();
771
 
772
  $settings = array(
773
 
1164
  do_action( 'woocommerce_gzd_before_section_output', $current_section );
1165
 
1166
  if ( apply_filters( 'woocommerce_gzd_settings_section_include_path', true, $current_section ) ) {
1167
+ $path = apply_filters( 'woocommerce_gzd_settings_section_html_path', WC_GERMANIZED_ABSPATH . 'includes/admin/views/html-settings-section.php', $current_section );
1168
  include_once( $path );
1169
  }
1170
  }
1171
 
1172
  public function get_sidebar() {
1173
  ob_start();
1174
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/views/html-settings-sidebar.php';
1175
  $content = ob_get_clean();
1176
  return $content;
1177
  }
1260
  return;
1261
  $GLOBALS[ 'hide_save_button' ] = true;
1262
  $section_title = $this->premium_sections[ $current_section ];
1263
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/views/html-settings-pro.php';
1264
  }
1265
 
1266
  public function set_premium_sections( $sections ) {
includes/class-wc-gzd-checkout.php CHANGED
@@ -86,7 +86,6 @@ class WC_GZD_Checkout {
86
 
87
  // Free Shipping auto select
88
  if ( get_option( 'woocommerce_gzd_display_checkout_free_shipping_select' ) == 'yes' ) {
89
- add_action( 'woocommerce_before_calculate_totals', array( $this, 'set_free_shipping_filter' ) );
90
  add_filter( 'woocommerce_package_rates', array( $this, 'free_shipping_auto_select' ) );
91
  }
92
 
@@ -98,6 +97,21 @@ class WC_GZD_Checkout {
98
  }
99
 
100
  add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'order_parcel_delivery_data_transfer' ), 10, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  }
102
 
103
  public function remove_cancel_button( $actions, $order ) {
@@ -179,10 +193,6 @@ class WC_GZD_Checkout {
179
  return false;
180
  }
181
 
182
- public function set_free_shipping_filter( $cart ) {
183
- $_POST[ 'update_cart' ] = true;
184
- }
185
-
186
  public function free_shipping_auto_select( $rates ) {
187
 
188
  $do_check = is_checkout() || is_cart() || ! empty( $_POST['update_cart'] );
@@ -323,7 +333,7 @@ class WC_GZD_Checkout {
323
 
324
  $this->custom_fields[ 'title' ] = array(
325
  'type' => 'select',
326
- 'required' => 1,
327
  'label' => __( 'Title', 'woocommerce-germanized' ),
328
  'options' => apply_filters( 'woocommerce_gzd_title_options', array( 1 => __( 'Mr.', 'woocommerce-germanized' ), 2 => __( 'Ms.', 'woocommerce-germanized' ) ) ),
329
  'before' => 'first_name',
86
 
87
  // Free Shipping auto select
88
  if ( get_option( 'woocommerce_gzd_display_checkout_free_shipping_select' ) == 'yes' ) {
 
89
  add_filter( 'woocommerce_package_rates', array( $this, 'free_shipping_auto_select' ) );
90
  }
91
 
97
  }
98
 
99
  add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'order_parcel_delivery_data_transfer' ), 10, 2 );
100
+
101
+ // Make sure that, just like in Woo core, the order submit button gets refreshed
102
+ add_filter( 'woocommerce_update_order_review_fragments', array( $this, 'refresh_order_submit' ), 10, 1 );
103
+ }
104
+
105
+ public function refresh_order_submit( $fragments ) {
106
+
107
+ // Get checkout order submit fragment
108
+ ob_start();
109
+ woocommerce_gzd_template_order_submit();
110
+ $wc_gzd_order_submit = ob_get_clean();
111
+
112
+ $fragments['.wc-gzd-order-submit'] = $wc_gzd_order_submit;
113
+
114
+ return $fragments;
115
  }
116
 
117
  public function remove_cancel_button( $actions, $order ) {
193
  return false;
194
  }
195
 
 
 
 
 
196
  public function free_shipping_auto_select( $rates ) {
197
 
198
  $do_check = is_checkout() || is_cart() || ! empty( $_POST['update_cart'] );
333
 
334
  $this->custom_fields[ 'title' ] = array(
335
  'type' => 'select',
336
+ 'required' => false,
337
  'label' => __( 'Title', 'woocommerce-germanized' ),
338
  'options' => apply_filters( 'woocommerce_gzd_title_options', array( 1 => __( 'Mr.', 'woocommerce-germanized' ), 2 => __( 'Ms.', 'woocommerce-germanized' ) ) ),
339
  'before' => 'first_name',
includes/class-wc-gzd-customer-helper.php CHANGED
@@ -351,8 +351,8 @@ class WC_GZD_Customer_Helper {
351
  $roles = array_map( 'ucfirst', $this->get_double_opt_in_user_roles() );
352
 
353
  $user_query = new WP_User_Query( apply_filters( 'woocommerce_gzd_customer_account_activation_query', array(
354
- 'role' => $roles,
355
- 'number' => 1,
356
  'meta_query' => array(
357
  array(
358
  'key' => '_woocommerce_activation',
351
  $roles = array_map( 'ucfirst', $this->get_double_opt_in_user_roles() );
352
 
353
  $user_query = new WP_User_Query( apply_filters( 'woocommerce_gzd_customer_account_activation_query', array(
354
+ 'role__in' => $roles,
355
+ 'number' => 1,
356
  'meta_query' => array(
357
  array(
358
  'key' => '_woocommerce_activation',
includes/class-wc-gzd-dependencies.php CHANGED
@@ -255,7 +255,7 @@ class WC_GZD_Dependencies {
255
  global $dependencies;
256
  $dependencies = $this;
257
 
258
- include_once( 'admin/views/html-notice-dependencies.php' );
259
  }
260
 
261
  }
255
  global $dependencies;
256
  $dependencies = $this;
257
 
258
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/views/html-notice-dependencies.php';
259
  }
260
 
261
  }
includes/class-wc-gzd-dhl-parcel-shops.php CHANGED
@@ -79,8 +79,8 @@ class WC_GZD_DHL_Parcel_Shops {
79
 
80
  public function remove_fields( $fields ) {
81
 
82
- if ( isset( $fields[ 'shipping' ][ 'shipping_parcelshop' ] ) ) {
83
- unset( $fields[ 'shipping' ][ 'shipping_parcelshop' ] );
84
  }
85
 
86
  return $fields;
@@ -95,10 +95,9 @@ class WC_GZD_DHL_Parcel_Shops {
95
  }
96
 
97
  public function set_address_format( $formats ) {
98
-
99
  foreach( $this->get_supported_countries() as $country ) {
100
 
101
- if ( ! isset( $formats[ $country ] ) )
102
  continue;
103
 
104
  $format = $formats[ $country ];
@@ -110,28 +109,28 @@ class WC_GZD_DHL_Parcel_Shops {
110
  }
111
 
112
  public function set_formatted_shipping_address( $fields = array(), $order ) {
113
- $fields[ 'parcelshop_post_number' ] = '';
114
 
115
  if ( wc_gzd_get_crud_data( $order, 'shipping_parcelshop' ) ) {
116
- $fields[ 'parcelshop_post_number' ] = wc_gzd_get_crud_data( $order, 'shipping_parcelshop_post_number' );
117
  }
118
 
119
  return $fields;
120
  }
121
 
122
  public function set_formatted_billing_address( $fields = array(), $order ) {
123
- $fields[ 'parcelshop_post_number' ] = '';
124
 
125
  return $fields;
126
  }
127
 
128
  public function set_formatted_address( $placeholder, $args ) {
129
- if ( isset( $args[ 'parcelshop_post_number' ] ) ) {
130
- $placeholder[ '{parcelshop_post_number}' ] = $args[ 'parcelshop_post_number' ];
131
- $placeholder[ '{parcelshop_post_number_upper}' ] = strtoupper( $args[ 'parcelshop_post_number' ] );
132
  } else {
133
- $placeholder[ '{parcelshop_post_number}' ] = '';
134
- $placeholder[ '{parcelshop_post_number_upper}' ] = '';
135
  }
136
  return $placeholder;
137
  }
@@ -139,7 +138,7 @@ class WC_GZD_DHL_Parcel_Shops {
139
  public function set_user_address( $address, $customer_id, $name ) {
140
  if ( 'shipping' === $name ) {
141
  if ( get_user_meta( $customer_id, $name . '_parcelshop', true ) ) {
142
- $address[ 'parcelshop_post_number' ] = get_user_meta( $customer_id, $name . '_parcelshop_post_number', true );
143
  }
144
  }
145
  return $address;
@@ -147,7 +146,7 @@ class WC_GZD_DHL_Parcel_Shops {
147
 
148
  public function init_fields( $fields ) {
149
 
150
- $fields[ 'parcelshop' ] = array(
151
  'type' => 'checkbox',
152
  'required' => false,
153
  'label' => __( 'Send to DHL Parcel Shop?', 'woocommerce-germanized' ),
@@ -157,7 +156,7 @@ class WC_GZD_DHL_Parcel_Shops {
157
  'hidden' => $this->maybe_hide_fields(),
158
  );
159
 
160
- $fields[ 'parcelshop_post_number' ] = array(
161
  'type' => 'text',
162
  'required' => true,
163
  'label' => __( 'Postnumber', 'woocommerce-germanized' ),
@@ -176,7 +175,7 @@ class WC_GZD_DHL_Parcel_Shops {
176
 
177
  public function init_profile_fields( $fields ) {
178
 
179
- $fields[ 'shipping' ][ 'fields' ][ 'shipping_parcelshop' ] = array(
180
  'label' => __( 'DHL Parcel Shop?', 'woocommerce-germanized' ),
181
  'type' => 'select',
182
  'options' => array( 0 => __( 'No', 'woocommerce-germanized' ), 1 => __( 'Yes', 'woocommerce-germanized' ) ),
@@ -184,7 +183,7 @@ class WC_GZD_DHL_Parcel_Shops {
184
  'class' => '',
185
  );
186
 
187
- $fields[ 'shipping' ][ 'fields' ][ 'shipping_parcelshop_post_number' ] = array(
188
  'label' => __( 'Postnumber', 'woocommerce-germanized' ),
189
  'type' => 'text',
190
  'description' => __( 'In case delivery to parcel shop is enabled please fill in the corresponding DHL post number.', 'woocommerce-germanized' ),
79
 
80
  public function remove_fields( $fields ) {
81
 
82
+ if ( isset( $fields['shipping']['shipping_parcelshop'] ) ) {
83
+ unset( $fields['shipping']['shipping_parcelshop'] );
84
  }
85
 
86
  return $fields;
95
  }
96
 
97
  public function set_address_format( $formats ) {
 
98
  foreach( $this->get_supported_countries() as $country ) {
99
 
100
+ if ( ! array_key_exists( $country, $formats ) )
101
  continue;
102
 
103
  $format = $formats[ $country ];
109
  }
110
 
111
  public function set_formatted_shipping_address( $fields = array(), $order ) {
112
+ $fields['parcelshop_post_number'] = '';
113
 
114
  if ( wc_gzd_get_crud_data( $order, 'shipping_parcelshop' ) ) {
115
+ $fields['parcelshop_post_number'] = wc_gzd_get_crud_data( $order, 'shipping_parcelshop_post_number' );
116
  }
117
 
118
  return $fields;
119
  }
120
 
121
  public function set_formatted_billing_address( $fields = array(), $order ) {
122
+ $fields['parcelshop_post_number'] = '';
123
 
124
  return $fields;
125
  }
126
 
127
  public function set_formatted_address( $placeholder, $args ) {
128
+ if ( isset( $args['parcelshop_post_number'] ) ) {
129
+ $placeholder['{parcelshop_post_number}'] = $args['parcelshop_post_number'];
130
+ $placeholder['{parcelshop_post_number_upper}'] = strtoupper( $args['parcelshop_post_number'] );
131
  } else {
132
+ $placeholder['{parcelshop_post_number}'] = '';
133
+ $placeholder['{parcelshop_post_number_upper}'] = '';
134
  }
135
  return $placeholder;
136
  }
138
  public function set_user_address( $address, $customer_id, $name ) {
139
  if ( 'shipping' === $name ) {
140
  if ( get_user_meta( $customer_id, $name . '_parcelshop', true ) ) {
141
+ $address['parcelshop_post_number'] = get_user_meta( $customer_id, $name . '_parcelshop_post_number', true );
142
  }
143
  }
144
  return $address;
146
 
147
  public function init_fields( $fields ) {
148
 
149
+ $fields['parcelshop'] = array(
150
  'type' => 'checkbox',
151
  'required' => false,
152
  'label' => __( 'Send to DHL Parcel Shop?', 'woocommerce-germanized' ),
156
  'hidden' => $this->maybe_hide_fields(),
157
  );
158
 
159
+ $fields['parcelshop_post_number'] = array(
160
  'type' => 'text',
161
  'required' => true,
162
  'label' => __( 'Postnumber', 'woocommerce-germanized' ),
175
 
176
  public function init_profile_fields( $fields ) {
177
 
178
+ $fields['shipping']['fields']['shipping_parcelshop'] = array(
179
  'label' => __( 'DHL Parcel Shop?', 'woocommerce-germanized' ),
180
  'type' => 'select',
181
  'options' => array( 0 => __( 'No', 'woocommerce-germanized' ), 1 => __( 'Yes', 'woocommerce-germanized' ) ),
183
  'class' => '',
184
  );
185
 
186
+ $fields['shipping']['fields']['shipping_parcelshop_post_number'] = array(
187
  'label' => __( 'Postnumber', 'woocommerce-germanized' ),
188
  'type' => 'text',
189
  'description' => __( 'In case delivery to parcel shop is enabled please fill in the corresponding DHL post number.', 'woocommerce-germanized' ),
includes/class-wc-gzd-ekomi.php CHANGED
@@ -256,11 +256,17 @@ class WC_GZD_Ekomi {
256
  global $post;
257
  $order_query->the_post();
258
 
259
- $order = wc_get_order( $post->ID );
 
260
 
261
- $diff = WC_germanized()->get_date_diff( date( 'Y-m-d H:i:s', wc_gzd_get_crud_data( $order, 'completed_date' ) ), date( 'Y-m-d H:i:s' ) );
262
-
263
- if ( $diff[ 'd' ] >= (int) get_option( 'woocommerce_gzd_ekomi_day_diff' ) ) {
 
 
 
 
 
264
  if ( $mail = WC_germanized()->emails->get_email_instance_by_id( 'customer_ekomi' ) ) {
265
  $mail->trigger( wc_gzd_get_crud_data( $order, 'id' ) );
266
 
256
  global $post;
257
  $order_query->the_post();
258
 
259
+ $order = wc_get_order( $post->ID );
260
+ $completed_date = wc_gzd_get_crud_data( $order, 'completed_date' );
261
 
262
+ if ( is_a( $completed_date, 'WC_DateTime' ) ) {
263
+ $completed_date = $completed_date->getTimestamp();
264
+ }
265
+
266
+ $days_diff = get_option( 'woocommerce_gzd_ekomi_day_diff' );
267
+ $diff = WC_germanized()->get_date_diff( date( 'Y-m-d H:i:s', $completed_date ), date( 'Y-m-d H:i:s' ) );
268
+
269
+ if ( $diff['d'] >= $days_diff ) {
270
  if ( $mail = WC_germanized()->emails->get_email_instance_by_id( 'customer_ekomi' ) ) {
271
  $mail->trigger( wc_gzd_get_crud_data( $order, 'id' ) );
272
 
includes/class-wc-gzd-hook-priorities.php CHANGED
@@ -135,6 +135,7 @@ class WC_GZD_Hook_Priorities {
135
  public function get_hook_priority( $hook, $suppress_filters = false ) {
136
  if ( isset( $this->hooks[ $hook ] ) )
137
  return ( ! $suppress_filters ? apply_filters( 'wc_gzd_frontend_hook_priority', $this->hooks[ $hook ], $hook, $this ) : $this->hooks[ $hook ] );
 
138
  return false;
139
  }
140
 
135
  public function get_hook_priority( $hook, $suppress_filters = false ) {
136
  if ( isset( $this->hooks[ $hook ] ) )
137
  return ( ! $suppress_filters ? apply_filters( 'wc_gzd_frontend_hook_priority', $this->hooks[ $hook ], $hook, $this ) : $this->hooks[ $hook ] );
138
+
139
  return false;
140
  }
141
 
includes/class-wc-gzd-install.php CHANGED
@@ -130,7 +130,7 @@ class WC_GZD_Install {
130
  }
131
 
132
  // Register post types
133
- include_once( 'class-wc-gzd-post-types.php' );
134
  WC_GZD_Post_types::register_taxonomies();
135
 
136
  self::create_cron_jobs();
@@ -528,9 +528,9 @@ class WC_GZD_Install {
528
  public static function create_options() {
529
 
530
  // Include settings so that we can run through defaults
531
- include_once( WC()->plugin_path() . '/includes/admin/settings/class-wc-settings-page.php' );
532
- include_once( 'admin/class-wc-gzd-admin-legal-checkboxes.php' );
533
- include_once( 'admin/settings/class-wc-gzd-settings-germanized.php' );
534
 
535
  $settings = new WC_GZD_Settings_Germanized();
536
  $options = apply_filters( 'woocommerce_gzd_installation_default_settings', array_merge( $settings->get_settings(), $settings->get_display_settings(), $settings->get_email_settings() ) );
130
  }
131
 
132
  // Register post types
133
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-post-types.php';
134
  WC_GZD_Post_types::register_taxonomies();
135
 
136
  self::create_cron_jobs();
528
  public static function create_options() {
529
 
530
  // Include settings so that we can run through defaults
531
+ include_once WC()->plugin_path() . '/includes/admin/settings/class-wc-settings-page.php';
532
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/class-wc-gzd-admin-legal-checkboxes.php';
533
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/settings/class-wc-gzd-settings-germanized.php';
534
 
535
  $settings = new WC_GZD_Settings_Germanized();
536
  $options = apply_filters( 'woocommerce_gzd_installation_default_settings', array_merge( $settings->get_settings(), $settings->get_display_settings(), $settings->get_email_settings() ) );
includes/class-wc-gzd-legal-checkbox-manager.php CHANGED
@@ -265,8 +265,8 @@ class WC_GZD_Legal_Checkbox_Manager {
265
  }
266
  }
267
 
268
- public function get_options() {
269
- if ( is_null( $this->options ) || ! is_array( $this->options ) ) {
270
  wp_cache_delete( 'woocommerce_gzd_legal_checkboxes_settings', 'options' );
271
  $this->options = get_option( 'woocommerce_gzd_legal_checkboxes_settings', array() );
272
  }
265
  }
266
  }
267
 
268
+ public function get_options( $force_refresh = false ) {
269
+ if ( is_null( $this->options ) || ! is_array( $this->options ) || $force_refresh ) {
270
  wp_cache_delete( 'woocommerce_gzd_legal_checkboxes_settings', 'options' );
271
  $this->options = get_option( 'woocommerce_gzd_legal_checkboxes_settings', array() );
272
  }
includes/class-wc-gzd-legal-checkbox.php CHANGED
@@ -815,7 +815,7 @@ class WC_GZD_Legal_Checkbox {
815
  return $old_value;
816
  }
817
 
818
- public function pre_get_option( $value, $name, $default ) {
819
  $name = str_replace( $this->get_form_field_id_prefix(), '', $name );
820
 
821
  return $this->get_option( $name, $default );
815
  return $old_value;
816
  }
817
 
818
+ public function pre_get_option( $value, $name, $default = null ) {
819
  $name = str_replace( $this->get_form_field_id_prefix(), '', $name );
820
 
821
  return $this->get_option( $name, $default );
includes/class-wc-gzd-payment-gateways.php CHANGED
@@ -33,10 +33,11 @@ class WC_GZD_Payment_Gateways {
33
  add_action( 'current_screen', array( $this, 'gateway_admin_init' ), 20 );
34
  // AJAX
35
  add_action( 'init', array( $this, 'gateway_ajax_init' ), 30 );
 
 
36
  }
37
 
38
  public function gateway_admin_init() {
39
-
40
  $allowed = array( 'edit-shop_order', 'export' );
41
  $screen = get_current_screen();
42
 
@@ -45,6 +46,10 @@ class WC_GZD_Payment_Gateways {
45
  }
46
  }
47
 
 
 
 
 
48
  public function gateway_ajax_init() {
49
  if ( is_ajax() ) {
50
  $direct_debit = new WC_GZD_Gateway_Direct_Debit();
33
  add_action( 'current_screen', array( $this, 'gateway_admin_init' ), 20 );
34
  // AJAX
35
  add_action( 'init', array( $this, 'gateway_ajax_init' ), 30 );
36
+ // Init upon Pay action
37
+ add_action( 'woocommerce_before_pay_action', array( $this, 'gateway_pay_init' ), 5 );
38
  }
39
 
40
  public function gateway_admin_init() {
 
41
  $allowed = array( 'edit-shop_order', 'export' );
42
  $screen = get_current_screen();
43
 
46
  }
47
  }
48
 
49
+ public function gateway_pay_init() {
50
+ $direct_debit = new WC_GZD_Gateway_Direct_Debit();
51
+ }
52
+
53
  public function gateway_ajax_init() {
54
  if ( is_ajax() ) {
55
  $direct_debit = new WC_GZD_Gateway_Direct_Debit();
includes/class-wc-gzd-privacy.php CHANGED
@@ -108,7 +108,7 @@ class WC_GZD_Privacy {
108
  }
109
 
110
  private function decrypt( $data ) {
111
- include_once( WC_germanized()->plugin_path() . '/includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php' );
112
  $instance = new WC_GZD_Gateway_Direct_Debit();
113
 
114
  return $instance->maybe_decrypt( $data );
108
  }
109
 
110
  private function decrypt( $data ) {
111
+ include_once WC_GERMANIZED_ABSPATH . 'includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php';
112
  $instance = new WC_GZD_Gateway_Direct_Debit();
113
 
114
  return $instance->maybe_decrypt( $data );
includes/class-wc-gzd-product-factory.php CHANGED
@@ -44,10 +44,11 @@ class WC_GZD_Product_Factory extends WC_Product_Factory {
44
  * @return object WC_GZD_Product
45
  */
46
  public function get_gzd_product( $product ) {
47
-
48
- $type = wc_gzd_get_crud_data( $product, 'product_type' );
49
  $classname = 'WC_GZD_Product_' . ucfirst( $type );
50
 
 
 
51
  if ( class_exists( $classname ) )
52
  return new $classname( $product );
53
 
44
  * @return object WC_GZD_Product
45
  */
46
  public function get_gzd_product( $product ) {
47
+ $type = wc_gzd_get_crud_data( $product, 'product_type' );
 
48
  $classname = 'WC_GZD_Product_' . ucfirst( $type );
49
 
50
+ $classname = apply_filters( 'woocommerce_gzd_product_classname', $classname, $type );
51
+
52
  if ( class_exists( $classname ) )
53
  return new $classname( $product );
54
 
includes/class-wc-gzd-product-variable.php CHANGED
@@ -95,6 +95,7 @@ class WC_GZD_Product_Variable extends WC_GZD_Product {
95
  return '';
96
 
97
  $prices = $this->get_variation_unit_prices( true );
 
98
  $text = get_option( 'woocommerce_gzd_unit_price_text' );
99
 
100
  if ( $this->has_unit() ) {
@@ -203,10 +204,15 @@ class WC_GZD_Product_Variable extends WC_GZD_Product {
203
  foreach ( $variation_ids as $variation_id ) {
204
 
205
  if ( $variation = wc_gzd_get_variation( $this->child, $variation_id ) ) {
 
 
 
 
 
206
 
207
- $price = apply_filters( 'woocommerce_gzd_variation_unit_prices_price', wc_gzd_get_crud_data( $variation, 'unit_price' ), $variation, $this );
208
- $regular_price = apply_filters( 'woocommerce_gzd_variation_unit_prices_regular_price', wc_gzd_get_crud_data( $variation, 'unit_price_regular' ), $variation, $this );
209
- $sale_price = apply_filters( 'woocommerce_gzd_variation_unit_prices_sale_price', wc_gzd_get_crud_data( $variation, 'unit_price_sale' ), $variation, $this );
210
 
211
  // If sale price does not equal price, the product is not yet on sale
212
  if ( $sale_price === $regular_price || $sale_price !== $price ) {
@@ -243,11 +249,9 @@ class WC_GZD_Product_Variable extends WC_GZD_Product {
243
  );
244
 
245
  set_transient( $transient_name, json_encode( $this->unit_prices_array ), DAY_IN_SECONDS * 30 );
246
-
247
  }
248
 
249
  $this->unit_prices_array[ $price_hash ] = apply_filters( 'woocommerce_gzd_variation_unit_prices', $this->unit_prices_array[ $price_hash ], $this, $display );
250
-
251
  }
252
 
253
  return $this->unit_prices_array[ $price_hash ];
95
  return '';
96
 
97
  $prices = $this->get_variation_unit_prices( true );
98
+
99
  $text = get_option( 'woocommerce_gzd_unit_price_text' );
100
 
101
  if ( $this->has_unit() ) {
204
  foreach ( $variation_ids as $variation_id ) {
205
 
206
  if ( $variation = wc_gzd_get_variation( $this->child, $variation_id ) ) {
207
+
208
+ $gzd_variation = wc_gzd_get_gzd_product( $variation );
209
+
210
+ // E.g. recalculate unit price for dynamic pricing plugins
211
+ do_action( 'woocommerce_gzd_before_get_variable_variation_unit_price', $gzd_variation );
212
 
213
+ $price = apply_filters( 'woocommerce_gzd_variation_unit_prices_price', $gzd_variation->get_unit_price_raw(), $variation, $this );
214
+ $regular_price = apply_filters( 'woocommerce_gzd_variation_unit_prices_regular_price', $gzd_variation->get_unit_regular_price(), $variation, $this );
215
+ $sale_price = apply_filters( 'woocommerce_gzd_variation_unit_prices_sale_price', $gzd_variation->get_unit_sale_price(), $variation, $this );
216
 
217
  // If sale price does not equal price, the product is not yet on sale
218
  if ( $sale_price === $regular_price || $sale_price !== $price ) {
249
  );
250
 
251
  set_transient( $transient_name, json_encode( $this->unit_prices_array ), DAY_IN_SECONDS * 30 );
 
252
  }
253
 
254
  $this->unit_prices_array[ $price_hash ] = apply_filters( 'woocommerce_gzd_variation_unit_prices', $this->unit_prices_array[ $price_hash ], $this, $display );
 
255
  }
256
 
257
  return $this->unit_prices_array[ $price_hash ];
includes/class-wc-gzd-shipping-rate.php CHANGED
@@ -30,7 +30,7 @@ class WC_GZD_Shipping_Rate extends WC_Shipping_Rate {
30
 
31
  public function set_shared_taxes() {
32
 
33
- $cart = WC()->cart;
34
  $this->tax_shares = wc_gzd_get_cart_tax_share();
35
 
36
  // Calculate tax class share
@@ -38,8 +38,8 @@ class WC_GZD_Shipping_Rate extends WC_Shipping_Rate {
38
 
39
  foreach ( $this->tax_shares as $rate => $class ) {
40
  $tax_rates = WC_Tax::get_rates( $rate );
41
- $this->tax_shares[ $rate ][ 'shipping_tax_share' ] = $this->cost * $class[ 'share' ];
42
- $this->tax_shares[ $rate ][ 'shipping_tax' ] = WC_Tax::calc_tax( ( $this->cost * $class[ 'share' ] ), $tax_rates, ( WC()->cart->tax_display_cart === 'incl' ) );
43
  }
44
 
45
  $this->taxes = array();
30
 
31
  public function set_shared_taxes() {
32
 
33
+ $cart = WC()->cart;
34
  $this->tax_shares = wc_gzd_get_cart_tax_share();
35
 
36
  // Calculate tax class share
38
 
39
  foreach ( $this->tax_shares as $rate => $class ) {
40
  $tax_rates = WC_Tax::get_rates( $rate );
41
+ $this->tax_shares[ $rate ]['shipping_tax_share'] = $this->cost * $class[ 'share' ];
42
+ $this->tax_shares[ $rate ]['shipping_tax'] = WC_Tax::calc_tax( ( $this->cost * $class[ 'share' ] ), $tax_rates, ( WC()->cart->tax_display_cart === 'incl' ) );
43
  }
44
 
45
  $this->taxes = array();
includes/class-wc-gzd-shortcodes.php CHANGED
@@ -20,15 +20,21 @@ class WC_GZD_Shortcodes {
20
 
21
  // Define shortcodes
22
  $shortcodes = array(
23
- 'revocation_form' => __CLASS__ . '::revocation_form',
24
- 'payment_methods_info' => __CLASS__ . '::payment_methods_info',
25
- 'ekomi_badge' => __CLASS__ . '::ekomi_badge',
26
- 'ekomi_widget' => __CLASS__ . '::ekomi_widget',
27
- 'add_to_cart' => __CLASS__ . '::gzd_add_to_cart',
28
- 'gzd_feature' => __CLASS__ . '::gzd_feature',
29
- 'gzd_vat_info' => __CLASS__ . '::gzd_vat_info',
30
- 'gzd_sale_info' => __CLASS__ . '::gzd_sale_info',
31
- 'gzd_complaints' => __CLASS__ . '::gzd_complaints',
 
 
 
 
 
 
32
  );
33
 
34
  foreach ( $shortcodes as $shortcode => $function ) {
@@ -37,6 +43,72 @@ class WC_GZD_Shortcodes {
37
 
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  public static function gzd_add_price_suffixes( $price, $org_product ) {
41
  global $product;
42
  $product = $org_product;
20
 
21
  // Define shortcodes
22
  $shortcodes = array(
23
+ 'revocation_form' => __CLASS__ . '::revocation_form',
24
+ 'payment_methods_info' => __CLASS__ . '::payment_methods_info',
25
+ 'ekomi_badge' => __CLASS__ . '::ekomi_badge',
26
+ 'ekomi_widget' => __CLASS__ . '::ekomi_widget',
27
+ 'add_to_cart' => __CLASS__ . '::gzd_add_to_cart',
28
+ 'gzd_feature' => __CLASS__ . '::gzd_feature',
29
+ 'gzd_vat_info' => __CLASS__ . '::gzd_vat_info',
30
+ 'gzd_sale_info' => __CLASS__ . '::gzd_sale_info',
31
+ 'gzd_complaints' => __CLASS__ . '::gzd_complaints',
32
+ 'gzd_product_unit_price' => __CLASS__ . '::gzd_product_unit_price',
33
+ 'gzd_product_units' => __CLASS__ . '::gzd_product_units',
34
+ 'gzd_product_delivery_time' => __CLASS__ . '::gzd_product_delivery_time',
35
+ 'gzd_product_tax_notice' => __CLASS__ . '::gzd_product_tax_notice',
36
+ 'gzd_product_shipping_notice' => __CLASS__ . '::gzd_product_shipping_notice',
37
+ 'gzd_product_cart_desc' => __CLASS__ . '::gzd_product_cart_desc',
38
  );
39
 
40
  foreach ( $shortcodes as $shortcode => $function ) {
43
 
44
  }
45
 
46
+ protected static function get_gzd_product_shortcode( $atts, $function_name = '' ) {
47
+ if ( empty( $function_name ) || ! function_exists( $function_name ) ) {
48
+ return;
49
+ }
50
+
51
+ global $product;
52
+
53
+ $content = '';
54
+
55
+ $atts = wp_parse_args( $atts, array(
56
+ 'product' => '',
57
+ ) );
58
+
59
+ if ( ! empty( $atts['product'] ) ) {
60
+ $product = wc_get_product( $atts['product'] );
61
+ }
62
+
63
+ if ( ! empty( $product ) && is_a( $product, 'WC_Product' ) ) {
64
+ ob_start();
65
+ call_user_func( $function_name );
66
+ $content = ob_get_clean();
67
+ }
68
+
69
+ return $content;
70
+ }
71
+
72
+ public static function gzd_product_unit_price( $atts ) {
73
+ return apply_filters( 'woocommerce_gzd_shortcode_product_unit_price_html', self::get_gzd_product_shortcode( $atts, 'woocommerce_gzd_template_single_price_unit' ), $atts );
74
+ }
75
+
76
+ public static function gzd_product_units( $atts ) {
77
+ return apply_filters( 'woocommerce_gzd_shortcode_product_units_html', self::get_gzd_product_shortcode( $atts, 'woocommerce_gzd_template_single_product_units' ), $atts );
78
+ }
79
+
80
+ public static function gzd_product_delivery_time( $atts ) {
81
+ return apply_filters( 'woocommerce_gzd_shortcode_product_delivery_time_html', self::get_gzd_product_shortcode( $atts, 'woocommerce_gzd_template_single_delivery_time_info' ), $atts );
82
+ }
83
+
84
+ public static function gzd_product_tax_notice( $atts ) {
85
+ return apply_filters( 'woocommerce_gzd_shortcode_product_tax_notice_html', self::get_gzd_product_shortcode( $atts, 'woocommerce_gzd_template_single_tax_info' ), $atts );
86
+ }
87
+
88
+ public static function gzd_product_shipping_notice( $atts ) {
89
+ return apply_filters( 'woocommerce_gzd_shortcode_product_shipping_notice_html', self::get_gzd_product_shortcode( $atts, 'woocommerce_gzd_template_single_shipping_costs_info' ), $atts );
90
+ }
91
+
92
+ public static function gzd_product_cart_desc( $atts ) {
93
+ global $product;
94
+
95
+ $content = '';
96
+
97
+ $atts = wp_parse_args( $atts, array(
98
+ 'product' => '',
99
+ ) );
100
+
101
+ if ( ! empty( $atts['product'] ) ) {
102
+ $product = wc_get_product( $atts['product'] );
103
+ }
104
+
105
+ if ( ! empty( $product ) && is_a( $product, 'WC_Product' ) ) {
106
+ $content = '<div class="wc-gzd-item-desc item-desc">' . do_shortcode( wc_gzd_get_gzd_product( $product )->get_mini_desc() ) . '</div>';
107
+ }
108
+
109
+ return $content;
110
+ }
111
+
112
  public static function gzd_add_price_suffixes( $price, $org_product ) {
113
  global $product;
114
  $product = $org_product;
includes/class-wc-gzd-virtual-vat-helper.php CHANGED
@@ -28,9 +28,15 @@ class WC_GZD_Virtual_VAT_Helper {
28
 
29
  public function set_base_tax_rates( $rates, $tax_class ) {
30
 
31
- // Make sure frontend functions are being loaded so that "wc_get_chosen_shipping_method_ids" is callable
32
- if ( ! WC_germanized()->is_frontend() && function_exists( 'wc' ) ) {
33
- wc()->frontend_includes();
 
 
 
 
 
 
34
  }
35
 
36
  $location = WC_Tax::get_tax_location( $tax_class );
28
 
29
  public function set_base_tax_rates( $rates, $tax_class ) {
30
 
31
+ /**
32
+ * Maybe load frontend functions if necessary e.g. if WC()->customer exists
33
+ * In case WC()->customer exists, WC_Tax::get_tax_location tries to get location data from customer which then calls "wc_get_chosen_shipping_method_ids".
34
+ * This problem was reported by a customer - seems to be an edge problem which could not yet be reproduced.
35
+ */
36
+ if ( ! empty( WC()->customer ) && ! function_exists( 'wc_get_chosen_shipping_method_ids' ) ) {
37
+ if ( ! WC_germanized()->is_frontend() && function_exists( 'wc' ) ) {
38
+ wc()->frontend_includes();
39
+ }
40
  }
41
 
42
  $location = WC_Tax::get_tax_location( $tax_class );
includes/compatibility/class-wc-gzd-compatibility-polylang.php CHANGED
@@ -25,13 +25,34 @@ class WC_GZD_Compatibility_Polylang extends WC_GZD_Compatibility {
25
  wc_maybe_define_constant( 'DOING_AJAX', true );
26
  wc_maybe_define_constant( 'WC_DOING_AJAX', true );
27
  }
 
 
 
 
28
  }
29
 
30
  public function load() {
31
  // Set language field for AJAX revocation and email language
32
  add_action( 'woocommerce_gzd_after_revocation_form_fields', array( $this, 'set_language_field' ), 10 );
33
  // Set language field for AJAX Checkout
34
- add_filter( 'woocommerce_review_order_before_submit', array( $this, 'set_language_field' ), 10 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
36
 
37
  public function set_language_field() {
25
  wc_maybe_define_constant( 'DOING_AJAX', true );
26
  wc_maybe_define_constant( 'WC_DOING_AJAX', true );
27
  }
28
+
29
+ // Refresh strings after wp action has been fired. Polylang initializes within wp action not init action (which is being triggered earlier).
30
+ // See https://polylang.wordpress.com/documentation/documentation-for-developers/general/ and https://codex.wordpress.org/Plugin_API/Action_Reference
31
+ add_action( 'wp', array( $this, 'refresh_checkbox' ), 50 );
32
  }
33
 
34
  public function load() {
35
  // Set language field for AJAX revocation and email language
36
  add_action( 'woocommerce_gzd_after_revocation_form_fields', array( $this, 'set_language_field' ), 10 );
37
  // Set language field for AJAX Checkout
38
+ add_action( 'woocommerce_review_order_before_submit', array( $this, 'set_language_field' ), 10 );
39
+ }
40
+
41
+ public function refresh_checkbox() {
42
+ if ( $manager = WC_GZD_Legal_Checkbox_Manager::instance() ) {
43
+ $options = $manager->get_options( true );
44
+
45
+ // Make sure we are not registering core checkboxes again
46
+ foreach( $options as $id => $checkbox_args ) {
47
+ if ( isset( $checkbox_args['id'] ) ) {
48
+ unset( $checkbox_args['id'] );
49
+ }
50
+
51
+ if ( $checkbox = $manager->get_checkbox( $id ) ) {
52
+ $checkbox->update( $checkbox_args );
53
+ }
54
+ }
55
+ }
56
  }
57
 
58
  public function set_language_field() {
includes/compatibility/class-wc-gzd-compatibility-woocommerce-dynamic-pricing.php CHANGED
@@ -8,7 +8,7 @@
8
  * @category Class
9
  * @author vendidero
10
  */
11
- class WC_GZD_Compatibility_Woocommerce_Dynamic_Pricing extends WC_GZD_Compatibility {
12
 
13
  public function __construct() {
14
  parent::__construct(
@@ -17,41 +17,15 @@ class WC_GZD_Compatibility_Woocommerce_Dynamic_Pricing extends WC_GZD_Compatibil
17
  );
18
  }
19
 
20
- public function load() {
21
- // Filter seems to be removed due to low priority
22
- remove_filter( 'woocommerce_cart_item_price', 'wc_gzd_cart_product_unit_price', wc_gzd_get_hook_priority( 'cart_product_unit_price' ), 3 );
23
- remove_filter( 'woocommerce_cart_item_subtotal', 'wc_gzd_cart_product_unit_price', wc_gzd_get_hook_priority( 'cart_subtotal_unit_price' ), 3 );
24
 
25
- // Readd filter with higher priority
26
- add_filter( 'woocommerce_cart_item_price', 'wc_gzd_cart_product_unit_price', 500, 3 );
27
- add_filter( 'woocommerce_cart_item_subtotal', 'wc_gzd_cart_product_unit_price', 500, 3 );
 
28
 
29
- // Filters to recalculate unit price during cart/checkout
30
- add_action( 'woocommerce_before_cart', array( $this, 'set_unit_price_filter' ), 10 );
31
- add_action( 'woocommerce_before_checkout_form', array( $this, 'set_unit_price_filter' ), 10 );
32
- add_action( 'woocommerce_gzd_review_order_before_cart_contents', array( $this, 'set_unit_price_filter' ), 10 );
33
-
34
- // Recalculate unit price before adding order item meta
35
- add_filter( 'woocommerce_gzd_order_item_unit_price', array( $this, 'unit_price_order_item' ), 10, 4 );
36
- }
37
-
38
- public function unit_price_order_item( $price, $gzd_product, $item, $order ) {
39
- $product_price = $order->get_item_subtotal( $item, true );
40
-
41
- $gzd_product->recalculate_unit_price( array(
42
- 'regular_price' => $product_price,
43
- 'price' => $product_price,
44
- ) );
45
-
46
- return $gzd_product->get_unit_html( false );
47
  }
48
-
49
- public function set_unit_price_filter() {
50
- add_action( 'woocommerce_gzd_before_get_unit_price', array( $this, 'calculate_unit_price' ), 10, 2 );
51
- }
52
-
53
- public function calculate_unit_price( $product, $price ) {
54
- $product->recalculate_unit_price();
55
- }
56
-
57
  }
8
  * @category Class
9
  * @author vendidero
10
  */
11
+ class WC_GZD_Compatibility_Woocommerce_Dynamic_Pricing extends WC_GZD_Compatibility_Woocommerce_Role_Based_Pricing {
12
 
13
  public function __construct() {
14
  parent::__construct(
17
  );
18
  }
19
 
20
+ public function variable_unit_prices_hash( $hash ) {
21
+ if ( class_exists( 'WC_Dynamic_Pricing' ) ) {
22
+ $instance = WC_Dynamic_Pricing::instance();
 
23
 
24
+ if ( is_callable( array( $instance, 'on_woocommerce_get_variation_prices_hash' ) ) ) {
25
+ return $instance->on_woocommerce_get_variation_prices_hash( $hash );
26
+ }
27
+ }
28
 
29
+ return $hash;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  }
 
 
 
 
 
 
 
 
 
31
  }
includes/compatibility/class-wc-gzd-compatibility-woocommerce-gateway-paypal-express-checkout.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Woo Gateway PayPal Express Checkout Helper
4
+ *
5
+ * Specific compatibility for PayPal Express
6
+ *
7
+ * @class WC_GZD_Compatibility_Woocommerce_Gateway_Paypal_Express_Checkout
8
+ * @category Class
9
+ * @author vendidero
10
+ */
11
+ class WC_GZD_Compatibility_Woocommerce_Gateway_Paypal_Express_Checkout extends WC_GZD_Compatibility {
12
+
13
+ public function __construct() {
14
+ parent::__construct(
15
+ 'WooCommerce PayPal Checkout Gateway',
16
+ 'woocommerce-gateway-paypal-express-checkout/woocommerce-gateway-paypal-express-checkout.php'
17
+ );
18
+ }
19
+
20
+ public function load() {
21
+ add_filter( 'woocommerce_available_payment_gateways', array( $this, 'payment_gateways' ), 30, 1 );
22
+ }
23
+
24
+ /**
25
+ * Problem: Smart Button is bound to review_order_after_submit which gets executed earlier than GZD submit button.
26
+ * Leads to JS problems while rendering the PayPal button. That's why we need to move the functionality to the GZD hook.
27
+ *
28
+ * @param $gateways
29
+ *
30
+ * @return mixed
31
+ */
32
+ public function payment_gateways( $gateways ) {
33
+ $gateway = isset( $gateways['ppec_paypal'] ) ? $gateways['ppec_paypal'] : false;
34
+
35
+ if ( $gateway && is_a( $gateway, 'WC_Gateway_PPEC_With_SPB' ) ) {
36
+ remove_action( 'woocommerce_review_order_after_submit', array( $gateway, 'display_paypal_button' ), 10 );
37
+ remove_action( 'woocommerce_gzd_review_order_before_submit', array( $gateway, 'display_paypal_button' ), 10 );
38
+
39
+ add_action( 'woocommerce_gzd_review_order_before_submit', array( $gateway, 'display_paypal_button' ), 10 );
40
+ }
41
+
42
+ return $gateways;
43
+ }
44
+ }
includes/compatibility/class-wc-gzd-compatibility-woocommerce-role-based-price.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WPML Helper
4
+ *
5
+ * Specific configuration for WPML
6
+ *
7
+ * @class WC_GZD_WPML_Helper
8
+ * @category Class
9
+ * @author vendidero
10
+ */
11
+ class WC_GZD_Compatibility_Woocommerce_Role_Based_Price extends WC_GZD_Compatibility_Woocommerce_Role_Based_Pricing {
12
+
13
+ public function __construct() {
14
+ parent::__construct(
15
+ 'WooCommerce Role Based Price',
16
+ 'woocommerce-role-based-price/woocommerce-role-based-price.php'
17
+ );
18
+ }
19
+ }
includes/compatibility/class-wc-gzd-compatibility-woocommerce-role-based-prices.php CHANGED
@@ -8,7 +8,7 @@
8
  * @category Class
9
  * @author vendidero
10
  */
11
- class WC_GZD_Compatibility_Woocommerce_Role_Based_Prices extends WC_GZD_Compatibility {
12
 
13
  public function __construct() {
14
  parent::__construct(
@@ -17,49 +17,4 @@ class WC_GZD_Compatibility_Woocommerce_Role_Based_Prices extends WC_GZD_Compatib
17
  );
18
  }
19
 
20
- public function load() {
21
- // Add filter to price output
22
- add_filter( 'woocommerce_get_price_html', array( $this, 'set_unit_price_product_filter' ), 200, 2 );
23
-
24
- // Filter seems to be removed due to low priority
25
- remove_filter( 'woocommerce_cart_item_price', 'wc_gzd_cart_product_unit_price', wc_gzd_get_hook_priority( 'cart_product_unit_price' ), 3 );
26
- remove_filter( 'woocommerce_cart_item_subtotal', 'wc_gzd_cart_product_unit_price', wc_gzd_get_hook_priority( 'cart_subtotal_unit_price' ), 3 );
27
-
28
- // Readd filter with higher priority
29
- add_filter( 'woocommerce_cart_item_price', 'wc_gzd_cart_product_unit_price', 500, 3 );
30
- add_filter( 'woocommerce_cart_item_subtotal', 'wc_gzd_cart_product_unit_price', 500, 3 );
31
-
32
- // Filters to recalculate unit price during cart/checkout
33
- add_action( 'woocommerce_before_cart', array( $this, 'set_unit_price_filter' ), 10 );
34
- add_action( 'woocommerce_before_checkout_form', array( $this, 'set_unit_price_filter' ), 10 );
35
- add_action( 'woocommerce_gzd_review_order_before_cart_contents', array( $this, 'set_unit_price_filter' ), 10 );
36
-
37
- // Recalculate unit price before adding order item meta
38
- add_filter( 'woocommerce_gzd_order_item_unit_price', array( $this, 'unit_price_order_item' ), 10, 4 );
39
- }
40
-
41
- public function set_unit_price_product_filter( $html, $product ) {
42
- $this->set_unit_price_filter();
43
- return $html;
44
- }
45
-
46
- public function unit_price_order_item( $price, $gzd_product, $item, $order ) {
47
- $product_price = $order->get_item_subtotal( $item, true );
48
-
49
- $gzd_product->recalculate_unit_price( array(
50
- 'regular_price' => $product_price,
51
- 'price' => $product_price,
52
- ) );
53
-
54
- return $gzd_product->get_unit_html( false );
55
- }
56
-
57
- public function set_unit_price_filter() {
58
- add_action( 'woocommerce_gzd_before_get_unit_price', array( $this, 'calculate_unit_price' ), 10, 2 );
59
- }
60
-
61
- public function calculate_unit_price( $product, $price ) {
62
- $product->recalculate_unit_price();
63
- }
64
-
65
  }
8
  * @category Class
9
  * @author vendidero
10
  */
11
+ class WC_GZD_Compatibility_Woocommerce_Role_Based_Prices extends WC_GZD_Compatibility_Woocommerce_Role_Based_Pricing {
12
 
13
  public function __construct() {
14
  parent::__construct(
17
  );
18
  }
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  }
includes/compatibility/class-wc-gzd-compatibility-woocommerce-subscriptions.php CHANGED
@@ -25,153 +25,51 @@ class WC_GZD_Compatibility_Woocommerce_Subscriptions extends WC_GZD_Compatibilit
25
 
26
  public function load() {
27
  add_filter( 'wcs_cart_totals_order_total_html', array( $this, 'set_tax_notice' ), 50, 2 );
28
-
29
- /**
30
- * Direct Debit Gateway
31
- */
32
- add_filter( 'woocommerce_gzd_direct_debit_mandate_type_order_text', array( $this, 'direct_debit_mandate_type_order_text' ), 10, 2 );
33
- add_filter( 'woocommerce_gzd_direct_debit_mandate_type_text', array( $this, 'direct_debit_mandate_type_cart_text' ), 10, 1 );
34
- add_filter( 'wcs_renewal_order_meta', array( $this, 'direct_debit_subscription_order_meta' ), 10, 3 );
35
- add_filter( 'wcs_subscription_meta', array( $this, 'direct_debit_subscription_order_meta' ), 10, 3 );
36
- add_action( 'woocommerce_gzd_direct_debit_order_data_updated', array( $this, 'update_direct_debit_order' ), 10, 3 );
37
- add_action( 'woocommerce_scheduled_subscription_payment_direct-debit', array( $this, 'direct_debit_subscription_payment' ), 10, 2 );
38
- add_filter( 'woocommerce_gzd_direct_debit_export_query_args', array( $this, 'exporter_query' ), 10, 2 );
39
- add_action( 'woocommerce_process_shop_subscription_meta', array( $this, 'save_direct_debit_data' ), 10, 2 );
40
  }
41
 
42
- public function save_direct_debit_data( $post_id, $post ) {
43
- $order = wc_get_order( $post_id );
44
-
45
- if ( wc_gzd_get_crud_data( $order, 'payment_method' ) !== 'direct-debit' )
46
- return;
47
-
48
- $gateways = WC()->payment_gateways()->payment_gateways();
49
 
50
- if ( ! empty( $gateways[ 'direct-debit' ] ) ) {
51
- $gateways[ 'direct-debit' ]->save_debit_fields( $order );
52
-
53
- if ( wc_gzd_get_dependencies()->woocommerce_version_supports_crud() ) {
54
- $order->save();
55
- }
56
- }
57
  }
58
 
59
- public function exporter_query( $query_args, $args ) {
60
-
61
- $query_args[ 'post_type' ] = array( 'shop_order', 'shop_subscription' );
62
- $query_args[ 'post_status' ] = array_merge( $query_args[ 'post_status' ], array( 'wc-active' ) );
63
-
64
- if ( isset( $query_args[ 'p' ] ) ) {
65
- $id = $query_args[ 'p' ];
66
-
67
- if ( wcs_order_contains_subscription( $id, array( 'parent' ) ) ) {
68
-
69
- $order_ids = array();
70
- $subscriptions = wcs_get_subscriptions_for_order( $id );
71
 
72
- if ( ! empty( $subscriptions ) ) {
73
- foreach( $subscriptions as $subscription ) {
74
- array_push( $order_ids, wc_gzd_get_crud_data( $subscription, 'id' ) );
75
-
76
- $orders = $subscription->get_related_orders();
77
- foreach( $orders as $order_id ) {
78
- array_push( $order_ids, $order_id );
79
- }
80
- }
81
- }
82
-
83
- unset( $query_args[ 'p' ] );
84
- $query_args[ 'post__in' ] = $order_ids;
85
- }
86
  }
87
 
88
- return $query_args;
89
- }
90
-
91
- public function direct_debit_subscription_payment( $total, $order ) {
92
- if ( $mail = WC_germanized()->emails->get_email_instance_by_id( 'customer_sepa_direct_debit_mandate' ) )
93
- $mail->trigger( $order );
94
-
95
- WC_Subscriptions_Manager::process_subscription_payments_on_order( $order );
96
- }
97
-
98
- public function direct_debit_subscription_order_meta( $meta, $to_order, $from_order ) {
99
- foreach( $meta as $key => $meta_data ) {
100
- if ( '_direct_debit_mandate_type' === $meta_data[ 'meta_key' ] ) {
101
- $meta[ $key ][ 'meta_value' ] = Digitick\Sepa\PaymentInformation::S_RECURRING;
102
- }
103
- }
104
- return $meta;
105
  }
106
 
107
- public function direct_debit_mandate_type_order_text( $text, $order ) {
108
- if ( wcs_order_contains_subscription( wc_gzd_get_crud_data( $order, 'id' ), array( 'parent', 'renewal' ) ) ) {
109
- return __( 'recurring payments', 'woocommerce-germanized' );
110
- }
111
- return $text;
112
- }
113
-
114
- public function direct_debit_mandate_type_cart_text( $text ) {
115
- if ( WC_Subscriptions_Cart::cart_contains_subscription() ) {
116
- return __( 'recurring payments', 'woocommerce-germanized' );
117
- }
118
- return $text;
119
- }
120
 
121
- public function update_direct_debit_order( $order, $user_id, $gateway ) {
122
- if ( WC_Subscriptions_Cart::cart_contains_subscription() ) {
123
- $order = wc_gzd_set_crud_data( $order, '_direct_debit_mandate_type', Digitick\Sepa\PaymentInformation::S_FIRST );
124
  }
125
- }
126
 
127
- public function set_tax_notice( $price, $cart ) {
128
  // Tax for inclusive prices
129
- if ( 'yes' == get_option( 'woocommerce_calc_taxes' ) && 'incl' == $cart->tax_display_cart ) {
 
130
 
131
  ob_start();
132
-
133
- $tax_array = array();
134
-
135
- if ( 'itemized' == get_option( 'woocommerce_tax_total_display' ) ) {
136
- foreach ( $cart->get_tax_totals() as $code => $tax ) {
137
- $rate = wc_gzd_get_tax_rate( $tax->tax_rate_id );
138
- if ( ! $rate )
139
- continue;
140
- if ( ! empty( $rate ) && isset( $rate->tax_rate ) )
141
- $tax->rate = $rate->tax_rate;
142
- if ( ! isset( $tax_array[ $tax->rate ] ) )
143
- $tax_array[ $tax->rate ] = array( 'tax' => $tax, 'amount' => $tax->amount, 'contains' => array( $tax ) );
144
- else {
145
- array_push( $tax_array[ $tax->rate ][ 'contains' ], $tax );
146
- $tax_array[ $tax->rate ][ 'amount' ] += $tax->amount;
147
- }
148
- }
149
- } else {
150
- $base_rate = array_values( WC_Tax::get_base_tax_rates() );
151
- $base_rate = (object) $base_rate[0];
152
- $base_rate->rate = $base_rate->rate;
153
- $tax_array[] = array( 'tax' => $base_rate, 'contains' => array( $base_rate ), 'amount' => $cart->get_taxes_total( true, true ) );
154
- }
155
-
156
- ?>
157
-
158
- <?php echo $price; ?>
159
- </td></tr>
160
 
161
- <?php
 
162
 
163
  if ( ! empty( $tax_array ) ) {
164
-
165
  $count = 0;
166
  foreach ( $tax_array as $tax ) {
167
-
168
- $count++;
169
- $label = ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ? sprintf( __( 'incl. %s%% VAT', 'woocommerce-germanized' ), wc_gzd_format_tax_rate_percentage( $tax[ 'tax' ]->rate ) ) : __( 'incl. VAT', 'woocommerce-germanized' ) );
170
  ?>
171
 
172
  <tr class="order-tax">
173
- <th rowspan="1"><?php echo $label; ?></th>
174
- <td data-title="<?php echo esc_attr( $label ); ?>"><?php echo wc_price( $tax[ 'amount' ] ); ?>
175
 
176
  <?php if ( sizeof( $tax_array ) != $count ) : ?>
177
  </td></tr>
@@ -181,11 +79,9 @@ class WC_GZD_Compatibility_Woocommerce_Subscriptions extends WC_GZD_Compatibilit
181
  }
182
  }
183
 
184
- return ob_get_clean();
185
-
186
- } else {
187
- return $price;
188
  }
189
- }
190
 
 
 
191
  }
25
 
26
  public function load() {
27
  add_filter( 'wcs_cart_totals_order_total_html', array( $this, 'set_tax_notice' ), 50, 2 );
28
+ add_filter( 'woocommerce_gzd_product_classname', array( $this, 'product_classname' ), 10, 2 );
29
+ add_filter( 'woocommerce_gzd_product_types_supporting_unit_prices', array( $this, 'enable_unit_prices' ), 10, 1 );
 
 
 
 
 
 
 
 
 
 
30
  }
31
 
32
+ public function enable_unit_prices( $types ) {
33
+ $types[] = 'subscription';
34
+ $types[] = 'variable-subscription';
 
 
 
 
35
 
36
+ return $types;
 
 
 
 
 
 
37
  }
38
 
39
+ public function product_classname( $classname, $type ) {
 
 
 
 
 
 
 
 
 
 
 
40
 
41
+ if ( 'variable-subscription' === $type ) {
42
+ return 'WC_GZD_Product_Variable';
 
 
 
 
 
 
 
 
 
 
 
 
43
  }
44
 
45
+ return $classname;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  }
47
 
48
+ public function set_tax_notice( $price, $cart ) {
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ if ( ! apply_filters( 'woocommerce_gzd_show_tax_for_cart_subscription_price', true ) ) {
51
+ return $price;
 
52
  }
 
53
 
 
54
  // Tax for inclusive prices
55
+ if ( 'yes' === get_option( 'woocommerce_calc_taxes' ) && 'incl' === $cart->tax_display_cart ) {
56
+ $tax_array = wc_gzd_get_cart_taxes( $cart );
57
 
58
  ob_start();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
+ echo $price;
61
+ echo '</td></tr>';
62
 
63
  if ( ! empty( $tax_array ) ) {
 
64
  $count = 0;
65
  foreach ( $tax_array as $tax ) {
66
+ $count++;
67
+ $label = wc_gzd_get_tax_rate_label( $tax[ 'tax' ]->rate );
 
68
  ?>
69
 
70
  <tr class="order-tax">
71
+ <th><?php echo $label; ?></th>
72
+ <td data-title="<?php echo esc_attr( $label ); ?>"><?php echo wc_price( $tax[ 'amount' ] ); ?>
73
 
74
  <?php if ( sizeof( $tax_array ) != $count ) : ?>
75
  </td></tr>
79
  }
80
  }
81
 
82
+ $price = ob_get_clean();
 
 
 
83
  }
 
84
 
85
+ return $price;
86
+ }
87
  }
includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php CHANGED
@@ -175,7 +175,9 @@ Please notice: Period for pre-information of the SEPA direct debit is shortened
175
  add_filter( 'export_args', array( $this, 'export_args' ), 0, 1 );
176
  }
177
 
178
- public function validate_pay_order_checkbox() {}
 
 
179
 
180
  public function print_debit_fields( $order ) {
181
 
@@ -861,7 +863,7 @@ Please notice: Period for pre-information of the SEPA direct debit is shortened
861
  }
862
 
863
  // Validate IBAN
864
- include_once( WC_germanized()->plugin_path() . '/includes/libraries/iban/oophp-iban.php' );
865
 
866
  $iban_validator = new IBAN( $iban );
867
 
@@ -1002,7 +1004,7 @@ Please notice: Period for pre-information of the SEPA direct debit is shortened
1002
  if ( version_compare( $wp_version, '4.4', '<' ) )
1003
  return false;
1004
 
1005
- require_once( 'class-wc-gzd-gateway-direct-debit-encryption-helper.php' );
1006
 
1007
  if ( ! WC_GZD_Gateway_Direct_Debit_Encryption_Helper::instance()->is_configured() )
1008
  return false;
175
  add_filter( 'export_args', array( $this, 'export_args' ), 0, 1 );
176
  }
177
 
178
+ public function validate_pay_order_checkbox() {
179
+ return $this->validate_checkbox();
180
+ }
181
 
182
  public function print_debit_fields( $order ) {
183
 
863
  }
864
 
865
  // Validate IBAN
866
+ include_once WC_GERMANIZED_ABSPATH . 'includes/libraries/iban/oophp-iban.php';
867
 
868
  $iban_validator = new IBAN( $iban );
869
 
1004
  if ( version_compare( $wp_version, '4.4', '<' ) )
1005
  return false;
1006
 
1007
+ require_once WC_GERMANIZED_ABSPATH . 'includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit-encryption-helper.php';
1008
 
1009
  if ( ! WC_GZD_Gateway_Direct_Debit_Encryption_Helper::instance()->is_configured() )
1010
  return false;
includes/wc-gzd-cart-functions.php CHANGED
@@ -202,19 +202,30 @@ function wc_gzd_cart_product_units( $title, $cart_item, $cart_item_key = '' ) {
202
  */
203
  function wc_gzd_get_cart_tax_share( $type = 'shipping' ) {
204
 
205
- $cart = WC()->cart->cart_contents;
206
- $tax_shares = array();
207
  $item_totals = 0;
208
 
209
  // Get tax classes and tax amounts
210
  if ( ! empty( $cart ) ) {
211
-
212
  foreach ( $cart as $key => $item ) {
213
 
214
- $_product = apply_filters( 'woocommerce_cart_item_product', $item[ 'data' ], $item, $key );
215
  $_product_shipping = apply_filters( 'woocommerce_gzd_cart_item_tax_share_product', $_product, $item, $key, $type );
 
216
 
217
- $no_shipping = ( 'shipping' === $type && $_product_shipping->is_virtual() || ( wc_gzd_get_gzd_product( $_product_shipping )->is_virtual_vat_exception() && 'shipping' === $type ) );
 
 
 
 
 
 
 
 
 
 
 
218
 
219
  if ( apply_filters( 'woocommerce_gzd_cart_item_not_supporting_tax_share', $no_shipping, $item, $key, $type ) ) {
220
  continue;
@@ -224,13 +235,13 @@ function wc_gzd_get_cart_tax_share( $type = 'shipping' ) {
224
 
225
  if ( ! isset( $tax_shares[ $class ] ) ) {
226
  $tax_shares[ $class ] = array();
227
- $tax_shares[ $class ][ 'total' ] = 0;
228
- $tax_shares[ $class ][ 'key' ] = '';
229
  }
230
 
231
- $tax_shares[ $class ][ 'total' ] += ( $item[ 'line_total' ] + $item[ 'line_tax' ] );
232
- $tax_shares[ $class ][ 'key' ] = key( $item[ 'line_tax_data' ][ 'total' ] );
233
- $item_totals += ( $item[ 'line_total' ] + $item[ 'line_tax' ] );
234
  }
235
  }
236
 
@@ -239,7 +250,7 @@ function wc_gzd_get_cart_tax_share( $type = 'shipping' ) {
239
  $default = ( $item_totals == 0 ? 1 / sizeof( $tax_shares ) : 0 );
240
 
241
  foreach ( $tax_shares as $key => $class )
242
- $tax_shares[ $key ][ 'share' ] = ( $item_totals > 0 ? $class[ 'total' ] / $item_totals : $default );
243
 
244
  }
245
 
@@ -259,8 +270,7 @@ function wc_gzd_cart_remove_shipping_taxes( $taxes, $cart ) {
259
  return is_callable( array( $cart, 'set_cart_contents_taxes' ) ) ? $cart->get_cart_contents_taxes() : $cart->taxes;
260
  }
261
 
262
- function wc_gzd_get_cart_total_taxes( $include_shipping_taxes = true ) {
263
-
264
  $tax_array = array();
265
 
266
  // If prices are tax inclusive, show taxes here
@@ -268,21 +278,21 @@ function wc_gzd_get_cart_total_taxes( $include_shipping_taxes = true ) {
268
 
269
  if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) {
270
 
271
- if ( ! $include_shipping_taxes ) {
272
- add_filter( 'woocommerce_cart_get_taxes', 'wc_gzd_cart_remove_shipping_taxes', 10, 2 );
273
- }
274
 
275
- $taxes = WC()->cart->get_tax_totals();
276
 
277
  if ( ! $include_shipping_taxes ) {
278
  remove_filter( 'woocommerce_cart_get_taxes', 'wc_gzd_cart_remove_shipping_taxes', 10, 2 );
279
  }
280
 
281
- foreach ( $taxes as $code => $tax ) {
282
 
283
- $rate = wc_gzd_get_tax_rate( $tax->tax_rate_id );
284
 
285
- if ( ! $rate ) {
286
  continue;
287
  }
288
 
@@ -292,9 +302,9 @@ function wc_gzd_get_cart_total_taxes( $include_shipping_taxes = true ) {
292
 
293
  if ( ! isset( $tax_array[ $tax->rate ] ) ) {
294
  $tax_array[ $tax->rate ] = array(
295
- 'tax' => $tax,
296
- 'amount' => $tax->amount,
297
- 'contains' => array( $tax )
298
  );
299
  } else {
300
  array_push( $tax_array[ $tax->rate ]['contains'], $tax );
@@ -315,6 +325,10 @@ function wc_gzd_get_cart_total_taxes( $include_shipping_taxes = true ) {
315
  return $tax_array;
316
  }
317
 
 
 
 
 
318
  /**
319
  * Get order total tax html.
320
  *
202
  */
203
  function wc_gzd_get_cart_tax_share( $type = 'shipping' ) {
204
 
205
+ $cart = WC()->cart->cart_contents;
206
+ $tax_shares = array();
207
  $item_totals = 0;
208
 
209
  // Get tax classes and tax amounts
210
  if ( ! empty( $cart ) ) {
 
211
  foreach ( $cart as $key => $item ) {
212
 
213
+ $_product = apply_filters( 'woocommerce_cart_item_product', $item['data'], $item, $key );
214
  $_product_shipping = apply_filters( 'woocommerce_gzd_cart_item_tax_share_product', $_product, $item, $key, $type );
215
+ $no_shipping = false;
216
 
217
+ if ( 'shipping' === $type ) {
218
+ if ( $_product_shipping->is_virtual() || wc_gzd_get_gzd_product( $_product_shipping )->is_virtual_vat_exception() ) {
219
+ $no_shipping = true;
220
+ }
221
+
222
+ $tax_status = wc_gzd_get_crud_data( $_product, 'tax_status' );
223
+ $tax_class = $_product->get_tax_class();
224
+
225
+ if ( 'none' === $tax_status || 'zero-rate' === $tax_class ) {
226
+ $no_shipping = true;
227
+ }
228
+ }
229
 
230
  if ( apply_filters( 'woocommerce_gzd_cart_item_not_supporting_tax_share', $no_shipping, $item, $key, $type ) ) {
231
  continue;
235
 
236
  if ( ! isset( $tax_shares[ $class ] ) ) {
237
  $tax_shares[ $class ] = array();
238
+ $tax_shares[ $class ]['total'] = 0;
239
+ $tax_shares[ $class ]['key'] = '';
240
  }
241
 
242
+ $tax_shares[ $class ]['total'] += ( $item['line_total'] + $item['line_tax'] );
243
+ $tax_shares[ $class ]['key'] = key( $item['line_tax_data']['total'] );
244
+ $item_totals += ( $item['line_total'] + $item['line_tax'] );
245
  }
246
  }
247
 
250
  $default = ( $item_totals == 0 ? 1 / sizeof( $tax_shares ) : 0 );
251
 
252
  foreach ( $tax_shares as $key => $class )
253
+ $tax_shares[ $key ]['share'] = ( $item_totals > 0 ? $class['total'] / $item_totals : $default );
254
 
255
  }
256
 
270
  return is_callable( array( $cart, 'set_cart_contents_taxes' ) ) ? $cart->get_cart_contents_taxes() : $cart->taxes;
271
  }
272
 
273
+ function wc_gzd_get_cart_taxes( $cart, $include_shipping_taxes = true ) {
 
274
  $tax_array = array();
275
 
276
  // If prices are tax inclusive, show taxes here
278
 
279
  if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) {
280
 
281
+ if ( ! $include_shipping_taxes ) {
282
+ add_filter( 'woocommerce_cart_get_taxes', 'wc_gzd_cart_remove_shipping_taxes', 10, 2 );
283
+ }
284
 
285
+ $taxes = $cart->get_tax_totals();
286
 
287
  if ( ! $include_shipping_taxes ) {
288
  remove_filter( 'woocommerce_cart_get_taxes', 'wc_gzd_cart_remove_shipping_taxes', 10, 2 );
289
  }
290
 
291
+ foreach ( $taxes as $code => $tax ) {
292
 
293
+ $rate = wc_gzd_get_tax_rate( $tax->tax_rate_id );
294
 
295
+ if ( ! $rate ) {
296
  continue;
297
  }
298
 
302
 
303
  if ( ! isset( $tax_array[ $tax->rate ] ) ) {
304
  $tax_array[ $tax->rate ] = array(
305
+ 'tax' => $tax,
306
+ 'amount' => $tax->amount,
307
+ 'contains' => array( $tax )
308
  );
309
  } else {
310
  array_push( $tax_array[ $tax->rate ]['contains'], $tax );
325
  return $tax_array;
326
  }
327
 
328
+ function wc_gzd_get_cart_total_taxes( $include_shipping_taxes = true ) {
329
+ return wc_gzd_get_cart_taxes( WC()->cart, $include_shipping_taxes );
330
+ }
331
+
332
  /**
333
  * Get order total tax html.
334
  *
includes/wc-gzd-core-functions.php CHANGED
@@ -10,7 +10,7 @@
10
 
11
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
12
 
13
- include( 'wc-gzd-product-functions.php' );
14
 
15
  function wc_gzd_get_dependencies( $instance = null ) {
16
  return apply_filters( 'woocommerce_gzd_dependencies_instance', WC_GZD_Dependencies::instance( $instance ) );
10
 
11
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
12
 
13
+ require WC_GERMANIZED_ABSPATH . 'includes/wc-gzd-product-functions.php';
14
 
15
  function wc_gzd_get_dependencies( $instance = null ) {
16
  return apply_filters( 'woocommerce_gzd_dependencies_instance', WC_GZD_Dependencies::instance( $instance ) );
includes/wc-gzd-template-hooks.php CHANGED
@@ -52,7 +52,6 @@ if ( get_option( 'woocommerce_gzd_display_listings_add_to_cart' ) == 'no' )
52
 
53
  if ( get_option( 'woocommerce_gzd_display_listings_link_details' ) == 'yes' )
54
  add_filter( 'woocommerce_loop_add_to_cart_link', 'woocommerce_gzd_template_loop_add_to_cart', 99, 2 );
55
-
56
  /**
57
  * Cart
58
  */
@@ -161,8 +160,6 @@ add_action( 'woocommerce_review_order_after_order_total', 'woocommerce_gzd_templ
161
  /**
162
  * Order details & Thankyou
163
  */
164
- remove_action( 'woocommerce_order_details_after_order_table', 'woocommerce_order_again_button' );
165
-
166
  add_action( 'woocommerce_thankyou_order_received_text', 'woocommerce_gzd_template_order_success_text', 0, 1 );
167
  add_action( 'woocommerce_thankyou', 'woocommerce_gzd_template_order_pay_now_button', wc_gzd_get_hook_priority( 'order_pay_now_button' ), 1 );
168
 
52
 
53
  if ( get_option( 'woocommerce_gzd_display_listings_link_details' ) == 'yes' )
54
  add_filter( 'woocommerce_loop_add_to_cart_link', 'woocommerce_gzd_template_loop_add_to_cart', 99, 2 );
 
55
  /**
56
  * Cart
57
  */
160
  /**
161
  * Order details & Thankyou
162
  */
 
 
163
  add_action( 'woocommerce_thankyou_order_received_text', 'woocommerce_gzd_template_order_success_text', 0, 1 );
164
  add_action( 'woocommerce_thankyou', 'woocommerce_gzd_template_order_pay_now_button', wc_gzd_get_hook_priority( 'order_pay_now_button' ), 1 );
165
 
readme.txt CHANGED
@@ -5,7 +5,7 @@ Requires at least: 3.8
5
  Tested up to: 4.9
6
  WC requires at least: 2.4
7
  WC tested up to: 3.4
8
- Stable tag: 2.0.4
9
  Requires PHP: 5.3
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -87,6 +87,7 @@ By default, Germanized works with every WooCommerce theme. Some themes may need
87
  * Storefront
88
  * VendiPro
89
  * Virtue
 
90
 
91
  == Installation ==
92
 
@@ -99,9 +100,31 @@ By default, Germanized works with every WooCommerce theme. Some themes may need
99
  = Automatic Installation =
100
 
101
  We recommend installing WooCommerce Germanized through the WordPress Backend. Please install WooCommerce before installing WC Germanized.
102
- After the installation you may easily adapt the settings to your own needs.
103
 
104
- = Shortcodes =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
 
106
  `[revocation_form]`
107
  Inserts online revocation form within your WooCommerce store. Customer and shop manager receive a confirmation by email.
@@ -161,6 +184,23 @@ Bug reports may be filed via our [GitHub repository](https://github.com/vendider
161
 
162
  == Changelog ==
163
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  = 2.0.4 =
165
  * Fix: Legal checkboxes Woo 2.4 support
166
 
5
  Tested up to: 4.9
6
  WC requires at least: 2.4
7
  WC tested up to: 3.4
8
+ Stable tag: 2.0.5
9
  Requires PHP: 5.3
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
87
  * Storefront
88
  * VendiPro
89
  * Virtue
90
+ * Shopkeeper
91
 
92
  == Installation ==
93
 
100
  = Automatic Installation =
101
 
102
  We recommend installing WooCommerce Germanized through the WordPress Backend. Please install WooCommerce before installing WC Germanized.
103
+ After the installation you may easily adapt the settings to your own needs.
104
 
105
+ = Product specific shortcodes =
106
+ You may use one of the following product-specific shortcodes to output notices within PageBuilders or on custom-built-pages.
107
+ The `product` parameter is optional. Shortcodes are falling back to the global $product variable in case the `product` parameter is missing.
108
+
109
+ `[gzd_product_unit_price product="123"]`
110
+ Outputs unit price for a product.
111
+
112
+ `[gzd_product_units product="123"]`
113
+ Outputs units included with the product e.g. 100 ml.
114
+
115
+ `[gzd_product_delivery_time product="123"]`
116
+ Outputs delivery time for a product.
117
+
118
+ `[gzd_product_tax_notice product="123"]`
119
+ Outputs tax notice for a product.
120
+
121
+ `[gzd_product_shipping_notice product="123"]`
122
+ Outputs shipping costs notice for a product.
123
+
124
+ `[gzd_product_cart_desc product="123"]`
125
+ Outputs mini cart description for a product.
126
+
127
+ = General Shortcodes =
128
 
129
  `[revocation_form]`
130
  Inserts online revocation form within your WooCommerce store. Customer and shop manager receive a confirmation by email.
184
 
185
  == Changelog ==
186
 
187
+ = 2.0.5 =
188
+ * Feature: Support WC Role Based Price (https://de.wordpress.org/plugins/woocommerce-role-based-price/)
189
+ * Feature: Support WooCommerce Gateway PayPal Express Checkout
190
+ * Feature: Added new Shortcodes to better support Pagebuilders (see https://wordpress.org/plugins/woocommerce-germanized/#installation)
191
+ * Feature: Added WooCommerce Subscriptions unit price compatiblity
192
+ * Improvement: Better dynamic pricing plugin compatibility
193
+ * Improvement: Added better PolyLang checkbox translation compatibility
194
+ * Improvement: Check if gateway requires user input before forcing to redirect pay order
195
+ * Improvement: Adjusted shipping cost split tax calculation to exclude non-taxable and zero-rate items
196
+ * Improvement: Re-added order again button which now redirects back to the cart instead of placing the order directly
197
+ * Fix: Possible ArgumentCountError within pre_get_option filter
198
+ * Fix: Avoid loading frontend specific functions within admin
199
+ * Fix: SEPA checkbox validation with force pay order script
200
+ * Fix: Use role__in query argument to ensure multiple roles can be queries for DOI
201
+ * Fix: eKomi review reminder support WC_DateTime
202
+ * Fix: Parcel delivery post number address display
203
+
204
  = 2.0.4 =
205
  * Fix: Legal checkboxes Woo 2.4 support
206
 
woocommerce-germanized.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce Germanized
4
  * Plugin URI: https://www.vendidero.de/woocommerce-germanized
5
  * Description: WooCommerce Germanized extends WooCommerce to become a legally compliant store in the german market.
6
- * Version: 2.0.4
7
  * Author: Vendidero
8
  * Author URI: https://vendidero.de
9
  * Requires at least: 3.8
@@ -31,7 +31,7 @@ final class WooCommerce_Germanized {
31
  *
32
  * @var string
33
  */
34
- public $version = '2.0.4';
35
 
36
  /**
37
  * Single instance of WooCommerce Germanized Main Class
@@ -82,6 +82,7 @@ final class WooCommerce_Germanized {
82
  if ( is_null( self::$_instance ) ) {
83
  self::$_instance = new self();
84
  }
 
85
  return self::$_instance;
86
  }
87
 
@@ -118,6 +119,9 @@ final class WooCommerce_Germanized {
118
  */
119
  public function __construct() {
120
 
 
 
 
121
  // Auto-load classes on demand
122
  if ( function_exists( '__autoload' ) ) {
123
  spl_autoload_register( '__autoload' );
@@ -131,8 +135,9 @@ final class WooCommerce_Germanized {
131
  return;
132
  }
133
 
134
- // Define constants
135
- $this->define_constants();
 
136
  $this->includes();
137
 
138
  // Hooks
@@ -267,7 +272,7 @@ final class WooCommerce_Germanized {
267
  * @return string
268
  */
269
  public function plugin_url() {
270
- return untrailingslashit( plugins_url( '/', __FILE__ ) );
271
  }
272
 
273
  /**
@@ -276,7 +281,7 @@ final class WooCommerce_Germanized {
276
  * @return string
277
  */
278
  public function plugin_path() {
279
- return untrailingslashit( plugin_dir_path( __FILE__ ) );
280
  }
281
 
282
  /**
@@ -302,6 +307,7 @@ final class WooCommerce_Germanized {
302
  */
303
  private function define_constants() {
304
  define( 'WC_GERMANIZED_PLUGIN_FILE', __FILE__ );
 
305
  define( 'WC_GERMANIZED_VERSION', $this->version );
306
  }
307
 
@@ -310,68 +316,81 @@ final class WooCommerce_Germanized {
310
  */
311
  private function includes() {
312
 
313
- include_once( 'includes/wc-gzd-core-functions.php' );
314
- include_once( 'includes/wc-gzd-legacy-functions.php' );
315
- include_once( 'includes/class-wc-gzd-install.php' );
316
 
317
  if ( is_admin() ) {
318
 
319
- include_once( 'includes/admin/class-wc-gzd-admin.php' );
320
- include_once( 'includes/admin/class-wc-gzd-admin-welcome.php' );
321
- include_once( 'includes/admin/class-wc-gzd-admin-notices.php' );
322
- include_once( 'includes/admin/class-wc-gzd-admin-customer.php' );
323
- include_once( 'includes/admin/class-wc-gzd-admin-legal-checkboxes.php' );
324
- include_once( 'includes/admin/class-wc-gzd-admin-importer.php' );
325
 
326
- include_once( 'includes/export/class-wc-gzd-product-export.php' );
327
- include_once( 'includes/import/class-wc-gzd-product-import.php' );
328
  }
329
 
330
- include_once( 'includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data.php' );
331
- include_once( 'includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php' );
332
 
333
  if ( $this->is_frontend() ) {
334
  if ( did_action( 'woocommerce_loaded' ) ) {
335
- $this->frontend_includes();
 
 
 
 
 
 
 
 
 
 
 
 
336
  } else {
337
  add_action( 'woocommerce_loaded', array( $this, 'frontend_includes' ), 5 );
338
  }
339
  }
340
 
341
  // Post types
342
- include_once( 'includes/class-wc-gzd-post-types.php' );
343
  // Gateway manipulation
344
- include_once( 'includes/class-wc-gzd-payment-gateways.php' );
345
  // Template priority
346
- include_once( 'includes/class-wc-gzd-hook-priorities.php' );
347
  // Customizer
348
- include_once 'includes/class-wc-gzd-shop-customizer.php';
349
  // Pricacy
350
- include_once 'includes/class-wc-gzd-privacy.php';
351
 
352
  // Abstracts
353
- include_once( 'includes/abstracts/abstract-wc-gzd-product.php' );
354
- include_once( 'includes/abstracts/abstract-wc-gzd-taxonomy.php' );
355
- include_once( 'includes/abstracts/abstract-wc-gzd-compatibility.php' );
 
356
 
357
  // API
358
- include_once( 'includes/api/class-wc-gzd-rest-api.php' );
359
 
360
- include_once( 'includes/wc-gzd-cart-functions.php' );
361
- include_once( 'includes/wc-gzd-order-functions.php' );
362
 
363
- include_once( 'includes/class-wc-gzd-ajax.php' );
364
- include_once( 'includes/class-wc-gzd-checkout.php' );
365
- include_once( 'includes/class-wc-gzd-dhl-parcel-shops.php' );
366
- include_once( 'includes/class-wc-gzd-customer-helper.php' );
367
- include_once( 'includes/class-wc-gzd-cache-helper.php' );
368
 
369
  // Only available for Woo 3.X
370
  if ( WC_GZD_Dependencies::instance( $this )->woocommerce_version_supports_crud() ) {
371
- include_once( 'includes/class-wc-gzd-coupon-helper.php' );
372
  }
373
 
374
- include_once( 'includes/class-wc-gzd-virtual-vat-helper.php' );
375
 
376
  $this->setup_trusted_shops();
377
  $this->ekomi = new WC_GZD_Ekomi();
@@ -380,8 +399,8 @@ final class WooCommerce_Germanized {
380
 
381
  public function checkbox_includes() {
382
  // Checkboxes
383
- include_once 'includes/class-wc-gzd-legal-checkbox.php';
384
- include_once 'includes/class-wc-gzd-legal-checkbox-manager.php';
385
  }
386
 
387
  public function is_frontend() {
@@ -398,6 +417,9 @@ final class WooCommerce_Germanized {
398
  'woocommerce-dynamic-pricing',
399
  'woocommerce-product-bundles',
400
  'woocommerce-role-based-prices',
 
 
 
401
  'woo-paypalplus'
402
  )
403
  );
@@ -416,14 +438,14 @@ final class WooCommerce_Germanized {
416
  * Include required frontend files.
417
  */
418
  public function frontend_includes() {
419
- include_once( 'includes/wc-gzd-template-hooks.php' );
420
  }
421
 
422
  /**
423
  * Function used to Init WooCommerceGermanized Template Functions - This makes them pluggable by plugins and themes.
424
  */
425
  public function include_template_functions() {
426
- include_once( 'includes/wc-gzd-template-functions.php' );
427
  }
428
 
429
  /**
@@ -690,10 +712,11 @@ final class WooCommerce_Germanized {
690
 
691
  wp_localize_script( 'wc-gzd-add-to-cart-variation', 'wc_gzd_add_to_cart_variation_params', apply_filters( 'woocommerce_gzd_add_to_cart_variation_params', array(
692
  'wrapper' => '.type-product',
 
693
  ) ) );
694
  }
695
 
696
- if ( wp_script_is( 'wc-gzd-force-pay-order' ) && ! in_array( 'wc-gzd-add-to-cart-variation', $this->localized_scripts ) ) {
697
  global $wp;
698
  $order_id = absint( $wp->query_vars[ 'order-pay' ] );
699
  $order = wc_get_order( $order_id );
@@ -726,7 +749,7 @@ final class WooCommerce_Germanized {
726
  * @return array
727
  */
728
  public function add_settings( $integrations ) {
729
- include_once( 'includes/admin/settings/class-wc-gzd-settings-germanized.php' );
730
  $integrations[] = new WC_GZD_Settings_Germanized();
731
  return $integrations;
732
  }
3
  * Plugin Name: WooCommerce Germanized
4
  * Plugin URI: https://www.vendidero.de/woocommerce-germanized
5
  * Description: WooCommerce Germanized extends WooCommerce to become a legally compliant store in the german market.
6
+ * Version: 2.0.5
7
  * Author: Vendidero
8
  * Author URI: https://vendidero.de
9
  * Requires at least: 3.8
31
  *
32
  * @var string
33
  */
34
+ public $version = '2.0.5';
35
 
36
  /**
37
  * Single instance of WooCommerce Germanized Main Class
82
  if ( is_null( self::$_instance ) ) {
83
  self::$_instance = new self();
84
  }
85
+
86
  return self::$_instance;
87
  }
88
 
119
  */
120
  public function __construct() {
121
 
122
+ // Define constants
123
+ $this->define_constants();
124
+
125
  // Auto-load classes on demand
126
  if ( function_exists( '__autoload' ) ) {
127
  spl_autoload_register( '__autoload' );
135
  return;
136
  }
137
 
138
+ // Loaded action
139
+ do_action( 'woocommerce_germanized_before_load' );
140
+
141
  $this->includes();
142
 
143
  // Hooks
272
  * @return string
273
  */
274
  public function plugin_url() {
275
+ return untrailingslashit( plugins_url( '/', WC_GERMANIZED_PLUGIN_FILE ) );
276
  }
277
 
278
  /**
281
  * @return string
282
  */
283
  public function plugin_path() {
284
+ return untrailingslashit( plugin_dir_path( WC_GERMANIZED_PLUGIN_FILE ) );
285
  }
286
 
287
  /**
307
  */
308
  private function define_constants() {
309
  define( 'WC_GERMANIZED_PLUGIN_FILE', __FILE__ );
310
+ define( 'WC_GERMANIZED_ABSPATH', dirname( WC_GERMANIZED_PLUGIN_FILE ) . '/' );
311
  define( 'WC_GERMANIZED_VERSION', $this->version );
312
  }
313
 
316
  */
317
  private function includes() {
318
 
319
+ include_once WC_GERMANIZED_ABSPATH . 'includes/wc-gzd-core-functions.php';
320
+ include_once WC_GERMANIZED_ABSPATH . 'includes/wc-gzd-legacy-functions.php';
321
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-install.php';
322
 
323
  if ( is_admin() ) {
324
 
325
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/class-wc-gzd-admin.php';
326
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/class-wc-gzd-admin-welcome.php';
327
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/class-wc-gzd-admin-notices.php';
328
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/class-wc-gzd-admin-customer.php';
329
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/class-wc-gzd-admin-legal-checkboxes.php';
330
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/class-wc-gzd-admin-importer.php';
331
 
332
+ include_once WC_GERMANIZED_ABSPATH . 'includes/export/class-wc-gzd-product-export.php';
333
+ include_once WC_GERMANIZED_ABSPATH . 'includes/import/class-wc-gzd-product-import.php';
334
  }
335
 
336
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data.php';
337
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php';
338
 
339
  if ( $this->is_frontend() ) {
340
  if ( did_action( 'woocommerce_loaded' ) ) {
341
+ /**
342
+ * If Pro version is enabled: Make sure we are not including frontend hooks before pro has been loaded.
343
+ * This is necessary to enable filters for hook priorities to work while adjusting theme-specific elements.
344
+ */
345
+ if ( $this->is_pro() ) {
346
+ if ( ! did_action( 'woocommerce_gzdp_loaded' ) ) {
347
+ add_action( 'woocommerce_gzdp_loaded', array( $this, 'frontend_includes' ), 5 );
348
+ } else {
349
+ $this->frontend_includes();
350
+ }
351
+ } else {
352
+ $this->frontend_includes();
353
+ }
354
  } else {
355
  add_action( 'woocommerce_loaded', array( $this, 'frontend_includes' ), 5 );
356
  }
357
  }
358
 
359
  // Post types
360
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-post-types.php';
361
  // Gateway manipulation
362
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-payment-gateways.php';
363
  // Template priority
364
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-hook-priorities.php';
365
  // Customizer
366
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-shop-customizer.php';
367
  // Pricacy
368
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-privacy.php';
369
 
370
  // Abstracts
371
+ include_once WC_GERMANIZED_ABSPATH . 'includes/abstracts/abstract-wc-gzd-product.php';
372
+ include_once WC_GERMANIZED_ABSPATH . 'includes/abstracts/abstract-wc-gzd-taxonomy.php';
373
+ include_once WC_GERMANIZED_ABSPATH . 'includes/abstracts/abstract-wc-gzd-compatibility.php';
374
+ include_once WC_GERMANIZED_ABSPATH . 'includes/abstracts/abstract-wc-gzd-compatibility-woocommerce-role-based-pricing.php';
375
 
376
  // API
377
+ include_once WC_GERMANIZED_ABSPATH . 'includes/api/class-wc-gzd-rest-api.php';
378
 
379
+ include_once WC_GERMANIZED_ABSPATH . 'includes/wc-gzd-cart-functions.php';
380
+ include_once WC_GERMANIZED_ABSPATH . 'includes/wc-gzd-order-functions.php';
381
 
382
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-ajax.php';
383
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-checkout.php';
384
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-dhl-parcel-shops.php';
385
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-customer-helper.php';
386
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-cache-helper.php';
387
 
388
  // Only available for Woo 3.X
389
  if ( WC_GZD_Dependencies::instance( $this )->woocommerce_version_supports_crud() ) {
390
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-coupon-helper.php';
391
  }
392
 
393
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-virtual-vat-helper.php';
394
 
395
  $this->setup_trusted_shops();
396
  $this->ekomi = new WC_GZD_Ekomi();
399
 
400
  public function checkbox_includes() {
401
  // Checkboxes
402
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-legal-checkbox.php';
403
+ include_once WC_GERMANIZED_ABSPATH . 'includes/class-wc-gzd-legal-checkbox-manager.php';
404
  }
405
 
406
  public function is_frontend() {
417
  'woocommerce-dynamic-pricing',
418
  'woocommerce-product-bundles',
419
  'woocommerce-role-based-prices',
420
+ 'woocommerce-role-based-price',
421
+ 'woocommerce-gateway-paypal-express-checkout',
422
+ 'woocommerce-subscriptions',
423
  'woo-paypalplus'
424
  )
425
  );
438
  * Include required frontend files.
439
  */
440
  public function frontend_includes() {
441
+ include_once WC_GERMANIZED_ABSPATH . 'includes/wc-gzd-template-hooks.php';
442
  }
443
 
444
  /**
445
  * Function used to Init WooCommerceGermanized Template Functions - This makes them pluggable by plugins and themes.
446
  */
447
  public function include_template_functions() {
448
+ include_once WC_GERMANIZED_ABSPATH . 'includes/wc-gzd-template-functions.php';
449
  }
450
 
451
  /**
712
 
713
  wp_localize_script( 'wc-gzd-add-to-cart-variation', 'wc_gzd_add_to_cart_variation_params', apply_filters( 'woocommerce_gzd_add_to_cart_variation_params', array(
714
  'wrapper' => '.type-product',
715
+ 'price_selector' => '.price',
716
  ) ) );
717
  }
718
 
719
+ if ( wp_script_is( 'wc-gzd-force-pay-order' ) && ! in_array( 'wc-gzd-force-pay-order', $this->localized_scripts ) ) {
720
  global $wp;
721
  $order_id = absint( $wp->query_vars[ 'order-pay' ] );
722
  $order = wc_get_order( $order_id );
749
  * @return array
750
  */
751
  public function add_settings( $integrations ) {
752
+ include_once WC_GERMANIZED_ABSPATH . 'includes/admin/settings/class-wc-gzd-settings-germanized.php';
753
  $integrations[] = new WC_GZD_Settings_Germanized();
754
  return $integrations;
755
  }
wpml-config.xml CHANGED
@@ -42,7 +42,13 @@
42
  <key name="woocommerce_gzd_order_confirmation_legal_digital_notice" />
43
  <key name="woocommerce_gzd_order_confirmation_legal_service_notice" />
44
  <key name="woocommerce_gzd_legal_checkboxes_settings">
45
- <key name="*"/>
 
 
 
 
 
 
46
  </key>
47
  <key name="woocommerce_gzd_alternative_complaints_text_none" />
48
  <key name="woocommerce_gzd_alternative_complaints_text_willing" />
42
  <key name="woocommerce_gzd_order_confirmation_legal_digital_notice" />
43
  <key name="woocommerce_gzd_order_confirmation_legal_service_notice" />
44
  <key name="woocommerce_gzd_legal_checkboxes_settings">
45
+ <key name="*">
46
+ <key name="admin_name" />
47
+ <key name="admin_desc" />
48
+ <key name="label" />
49
+ <key name="error_message" />
50
+ <key name="confirmation" />
51
+ </key>
52
  </key>
53
  <key name="woocommerce_gzd_alternative_complaints_text_none" />
54
  <key name="woocommerce_gzd_alternative_complaints_text_willing" />