WooCommerce Germanized - Version 1.0.4

Version Description

  • Feature - Applying new VAT rules for selling virtual products to EU countries
  • Feature - Added option to set a label for displaying unit price
  • Fix - Stop updating default order status to send order confirmation. Using (in)appropriate hooks instead
  • Fix - Filter priority bug fix
Download this release

Release Info

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

Code changes from version 1.0.3 to 1.0.4

assets/css/woocommerce-gzd-admin.css CHANGED
@@ -43,6 +43,10 @@ table.data_table tr td p.form-field {
43
  margin-top: 0.5em;
44
  }
45
 
 
 
 
 
46
  .wc-gzd-button {
47
  background-color: #7b9f35 !important;
48
  border: 1px solid #557020 !important;
43
  margin-top: 0.5em;
44
  }
45
 
46
+ ._billing_title_field, ._billing_address_1_field, ._shipping_title_field, ._shipping_address_1_field {
47
+ width: 100% !important;
48
+ }
49
+
50
  .wc-gzd-button {
51
  background-color: #7b9f35 !important;
52
  border: 1px solid #557020 !important;
i18n/languages/woocommerce-germanized-de_DE.mo CHANGED
Binary file
i18n/languages/woocommerce-germanized-de_DE.po CHANGED
@@ -1,9 +1,9 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: WooCommerce Germanized v1.0.2\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: 2014-09-29 12:26+0100\n"
6
- "PO-Revision-Date: 2014-12-02 16:57:36+0000\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
@@ -75,14 +75,14 @@ msgstr "ml"
75
  msgid "l"
76
  msgstr "l"
77
 
78
- #: includes/abstracts/abstract-wc-gzd-product.php:72
79
- #: woocommerce-germanized.php:612
80
  #, php-format
81
  #@ woocommerce-germanized
82
  msgid "incl. %s VAT"
83
  msgstr "inkl. %s MwSt."
84
 
85
- #: includes/abstracts/abstract-wc-gzd-product.php:72
86
  #, php-format
87
  #@ woocommerce-germanized
88
  msgid "excl. %s VAT"
@@ -98,7 +98,7 @@ msgstr "Über WooCommerce Germanized"
98
  msgid "Welcome to WooCommerce Germanized"
99
  msgstr "Willkommen bei WooCommerce Germanized"
100
 
101
- #: includes/admin/class-wc-gzd-admin-welcome.php:204
102
  #@ woocommerce-germanized
103
  msgid "Go to WooCommerce Germanized Settings"
104
  msgstr "zu den WooCommerce Germanized Einstellungen"
@@ -111,7 +111,7 @@ msgstr "zu den WooCommerce Germanized Einstellungen"
111
  #: woocommerce-germanized.php:92
112
  #@ woocommerce-germanized
113
  msgid "Cheatin’ huh?"
114
- msgstr "So geht das leider nicht.. "
115
 
116
  #: includes/admin/class-wc-gzd-admin.php:54
117
  #@ woocommerce-germanized
@@ -143,7 +143,7 @@ msgstr "Einheit"
143
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:36
144
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:64
145
  #: includes/admin/settings/class-wc-gzd-settings-germanized.php:52
146
- #: includes/class-wc-gzd-trusted-shops.php:344
147
  #@ woocommerce-germanized
148
  msgid "None"
149
  msgstr "Keine"
@@ -214,7 +214,7 @@ msgid "eKomi Options"
214
  msgstr "eKomi Optionen"
215
 
216
  #: includes/admin/settings/class-wc-gzd-settings-germanized.php:65
217
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:268
218
  #@ woocommerce-germanized
219
  msgid "General"
220
  msgstr "Allgemein"
@@ -375,201 +375,202 @@ msgstr "Dieser Text wird genutzt um die Kunden im Frontend über u.U. anfallende
375
  msgid "plus {link}Shipping Costs{/link}"
376
  msgstr "zzgl. {link}Versandkosten{/link}"
377
 
378
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:203
379
  #@ woocommerce-germanized
380
  msgid "Right of Recission"
381
  msgstr "Widerrufsrecht"
382
 
383
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:206
384
  #@ woocommerce-germanized
385
  msgid "Revocation Address"
386
  msgstr "Widerruf richten an"
387
 
388
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:207
389
  #@ woocommerce-germanized
390
  msgid "Type in an address, telephone/telefax number, email address which is to be used as revocation address"
391
  msgstr "Geben Sie hier Ihre Adresse, Telefon- und Faxnummer, E-Mail Adresse usw. an, an die Ihre Kunden Ihren Widerruf richten sollen"
392
 
393
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:216
394
  #@ woocommerce-germanized
395
  msgid "E-Mails"
396
  msgstr "E-Mails"
397
 
398
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:219
399
  #@ woocommerce-germanized
400
  msgid "Attach Imprint"
401
  msgstr "Impressum"
402
 
403
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:220
404
  #@ woocommerce-germanized
405
  msgid "Attach Imprint to the following email templates"
406
  msgstr "Hier können Sie die E-Mail Templates auswählen, an die das Impressum angehängt werden soll (Inhalt der oben ausgewählten Impressum-Seite bzw. des optionalen E-Mail Inhaltes dieser Seite)"
407
 
408
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:229
409
  #@ woocommerce-germanized
410
  msgid "Attach Terms & Conditions"
411
  msgstr "AGB"
412
 
413
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:230
414
  #@ woocommerce-germanized
415
  msgid "Attach Terms & Conditions to the following email templates"
416
  msgstr "Hier können Sie die E-Mail Templates auswählen, an die die AGB angehängt werden soll (Inhalt der in den WooCommerce-Einstellungen ausgewählten AGB-Seite bzw. des optionalen E-Mail Inhaltes dieser Seite)"
417
 
418
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:239
419
  #@ woocommerce-germanized
420
  msgid "Attach Power of Recission"
421
  msgstr "Widerrufsbelehrung"
422
 
423
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:240
424
  #@ woocommerce-germanized
425
  msgid "Attach Power of Recission to the following email templates"
426
  msgstr "Hier können Sie die E-Mail Templates auswählen, an die die Widerrufsbelehrung angehängt werden soll (Inhalt der oben ausgewählten Widerrufsbelehrungs-Seite bzw. des optionalen E-Mail Inhaltes dieser Seite). Standardmäßig sollte hier zumindest \"Bestellung in Abwicklung\" ausgewählt werden."
427
 
428
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:250
429
  #@ woocommerce-germanized
430
  msgid "Attach Data Security"
431
  msgstr "Datenschutzbelehrung"
432
 
433
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:251
434
  #@ woocommerce-germanized
435
  msgid "Attach Data Security Statement to the following email templates"
436
  msgstr "Hier können Sie die E-Mail Templates auswählen, an die die Datenschutzbelehrung angehängt werden soll (Inhalt der oben ausgewählten Datenschutzbelehrungs-Seite bzw. des optionalen E-Mail Inhaltes dieser Seite)"
437
 
438
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:271
439
  #@ woocommerce-germanized
440
  msgid "Add to Cart"
441
  msgstr "Zum Warenkorb Button"
442
 
443
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:272
444
  #@ woocommerce-germanized
445
  msgid "Show add to cart button on listings?"
446
  msgstr "Den zum Warenkorb Button in Produktlisten darstellen?"
447
 
448
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:276
449
  #@ woocommerce-germanized
450
  msgid "unset this option if you don't want to show the add to cart button within the product listings"
451
  msgstr "Deaktivieren Sie diese Option, wenn Sie den zum Warenkorb Button nicht innerhalb von Produktauflistungen darstellen möchten"
452
 
453
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:298
454
  #@ woocommerce-germanized
455
  msgid "Notice Footer"
456
  msgstr "Hinweise im Footer"
457
 
458
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:299
459
  #@ woocommerce-germanized
460
  msgid "Show a global VAT notice within footer"
461
  msgstr "Einen seitenübergreifenden Hinweis bzgl. der MwSt. im Footer darstellen"
462
 
463
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:307
464
  #@ woocommerce-germanized
465
  msgid "Show a global sale price notice within footer"
466
  msgstr "Einen seitenübergreifenden Hinweis bzgl. reduzierter Preise im Footer darstellen"
467
 
468
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:316
469
  #@ woocommerce-germanized
470
  msgid "Products"
471
  msgstr "Produkt"
472
 
473
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:319
474
  #@ woocommerce-germanized
475
  msgid "Show within Product Listings"
476
  msgstr "In Produktlisten"
477
 
478
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:320
479
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:353
480
  #@ woocommerce-germanized
481
  msgid "Shipping Costs notice"
482
  msgstr "Versandkosten-Hinweis"
483
 
484
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:336
485
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:369
 
486
  #@ woocommerce-germanized
487
  msgid "Unit Price"
488
  msgstr "Einheitspreis"
489
 
490
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:344
491
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:377
492
  #@ woocommerce-germanized
493
  msgid "Delivery Time Notice"
494
  msgstr "Lieferzeiten-Hinweis"
495
 
496
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:352
497
  #@ woocommerce-germanized
498
  msgid "Show on Product Detail Page"
499
  msgstr "Auf der Produktseite"
500
 
501
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:328
502
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:361
503
  #@ woocommerce-germanized
504
  msgid "Tax Info"
505
  msgstr "MwSt. Hinweis"
506
 
507
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:394
508
  #@ woocommerce-germanized
509
  msgid "Checkout & Cart"
510
  msgstr "Checkout & Warenkorb"
511
 
512
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:405
513
  #@ woocommerce-germanized
514
  msgid "Checkout Legal Display"
515
  msgstr "Checkbox oder Text"
516
 
517
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:406
518
  #@ woocommerce-germanized
519
  msgid "Use Text without Checkbox"
520
  msgstr "Rechtshinweis ohne Checkbox"
521
 
522
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:408
523
  #@ woocommerce-germanized
524
  msgid "This version will remove checkboxes from Checkout and display a text instead. This seems to be legally compliant (Zalando & Co are using this option)."
525
  msgstr "Diese Option nutzt anstatt einer Checkbox einen ausformulierten Text direkt überhalb des Kauf abschließen Buttons (Zalando und Andere Shops verwenden diese Form)"
526
 
527
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:414
528
  #@ woocommerce-germanized
529
  msgid "Legal Text"
530
  msgstr "Rechtlicher Hinweistext"
531
 
532
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:415
533
  #@ woocommerce-germanized
534
  msgid "Choose a Plain Text which will be shown right above checkout submit button. Use {term_link}{/term_link}, {data_security_link}{/data_security_link}, {revocation_link}{/revocation_link} as Placeholders for the links to legal pages."
535
  msgstr "Geben Sie hier den Text ein, den Sie als Hinweistext überhalb des \"Kaufen\" - Buttons darstellen möchten. Nutzen Sie die Platzhalter {term_link}{/term_link}, {data_security_link}{/data_security_link}, {revocation_link}{/revocation_link} um die jeweiligen Links zu den Seiten einzufügen."
536
 
537
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:417
538
  #@ woocommerce-germanized
539
  msgid "With your order, you agree to have read and understood our {term_link}Terms and Conditions{/term_link} and your {revocation_link}Right of Recission{/revocation_link}."
540
  msgstr "Mit Ihrer Bestellung erklären Sie sich mit unseren {term_link}Allgemeinen Geschäftsbedingungen{/term_link} und {revocation_link}Widerrufsbestimmungen{/revocation_link} einverstanden."
541
 
542
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:424
543
  #@ woocommerce-germanized
544
  msgid "Legal Text Error"
545
  msgstr "Fehlermeldung der Checkbox"
546
 
547
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:425
548
  #@ woocommerce-germanized
549
  msgid "If you have chosen to use checkbox validation please choose a error message which will be shown if the user doesn't check checkbox. Use {term_link}{/term_link}, {data_security_link}{/data_security_link}, {revocation_link}{/revocation_link} as Placeholders for the links to legal pages."
550
  msgstr "Falls Sie sich dazu entschieden haben, eine Checkbox zu nutzen, können Sie hier die Fehlermeldung eingeben, die angezeigt wird, wenn ein Benutzer die Checkbox nicht aktiviert hat. Nutzen Sie die Platzhalter um Links zu den jeweiligen Hinweisseiten einzufügen: {term_link}{/term_link}, {data_security_link}{/data_security_link}, {revocation_link}{/revocation_link}"
551
 
552
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:427
553
  #@ woocommerce-germanized
554
  msgid "To finish the order you have to accept to our {term_link}Terms and Conditions{/term_link} and {revocation_link}Right of Recission{/revocation_link}."
555
  msgstr "Bitte akzeptieren Sie unsere {term_link}Allgemeinen Geschäftsbedingungen{/term_link} und {revocation_link}Widerrufsbestimmungen{/revocation_link}."
556
 
557
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:444
558
  #@ woocommerce-germanized
559
  msgid "Order Success Text"
560
  msgstr "Bestellung eingegangen"
561
 
562
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:445
563
  #@ woocommerce-germanized
564
  msgid "Choose a custom text to display on order success page."
565
  msgstr "Hier können Sie einen individuellen kurzen Text eingeben, der nach der Bestellung ausgegeben wird."
566
 
567
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:453
568
  #@ woocommerce-germanized
569
  msgid "Order Success Data"
570
  msgstr "Bestellbestätigungs-Daten"
571
 
572
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:454
573
  #@ woocommerce-germanized
574
  msgid "Hide product table and customer data on order success page"
575
  msgstr "Zusätzliche Produktdetails (Tabelle, Kundeninformationen) von der Bestellbestätigungs-Seite entfernen"
@@ -587,7 +588,7 @@ msgstr "Nur ein paar Schritte trennen Sie vom rechtssicheren Online-Shop:"
587
  #: includes/admin/views/html-notice-install.php:19
588
  #@ woocommerce-germanized
589
  msgid "Germanize WooCommerce"
590
- msgstr "WooCommerce Germanized automatisch installieren"
591
 
592
  #: includes/admin/views/html-notice-install.php:23
593
  #@ woocommerce-germanized
@@ -597,19 +598,19 @@ msgstr "Wir passen die WooCommerce Einstellungen automatisch an (z.B. Währung,
597
  #: includes/admin/views/html-notice-install.php:28
598
  #@ woocommerce-germanized
599
  msgid "Generate Legal Pages"
600
- msgstr "Rechtlich relevante Seiten automatisch erstellen"
601
 
602
  #: includes/admin/views/html-notice-install.php:32
603
  #@ woocommerce-germanized
604
  msgid "We will automatically add legal pages such as Data Privacy Statement, Power of Revocation, Terms & Conditions etc."
605
  msgstr "Wir legen die rechtlich relevanten Seiten z.B. Datenschutzbelehrung, Widerrufsbelehrung und AGB automatisch für Sie an."
606
 
607
- #: includes/admin/views/html-notice-install.php:40
608
  #@ woocommerce-germanized
609
  msgid "Install WooCommerce Germanized"
610
  msgstr "WooCommerce Germanized installieren"
611
 
612
- #: includes/admin/views/html-notice-install.php:40
613
  #@ woocommerce-germanized
614
  msgid "Skip setup"
615
  msgstr "Setup überspringen"
@@ -664,79 +665,79 @@ msgstr "Frau"
664
  msgid "eKomi Customer"
665
  msgstr "eKomi Kundenbewertung"
666
 
667
- #: includes/class-wc-gzd-ekomi.php:312
668
  #@ woocommerce-germanized
669
  msgctxt "ekomi"
670
  msgid "Ekomi Integration"
671
  msgstr "eKomi Integration"
672
 
673
- #: includes/class-wc-gzd-ekomi.php:315
674
  #@ woocommerce-germanized
675
  msgctxt "ekomi"
676
  msgid "Shop ID"
677
  msgstr "Shop ID"
678
 
679
- #: includes/class-wc-gzd-ekomi.php:316
680
  #@ woocommerce-germanized
681
  msgctxt "ekomi"
682
  msgid "Insert your Shop ID here."
683
  msgstr "Fügen Sie hier ihre Shop ID ein."
684
 
685
- #: includes/class-wc-gzd-ekomi.php:324
686
  #@ woocommerce-germanized
687
  msgctxt "ekomi"
688
  msgid "Link to Certificate"
689
  msgstr "Link zum Shop-Zertifikat"
690
 
691
- #: includes/class-wc-gzd-ekomi.php:325
692
  #@ woocommerce-germanized
693
  msgctxt "ekomi"
694
  msgid "Insert the link to your Certificate"
695
  msgstr "Fügen Sie hier den Link zu Ihrem Shop-Zertifikat ein"
696
 
697
- #: includes/class-wc-gzd-ekomi.php:333
698
  #@ woocommerce-germanized
699
  msgctxt "ekomi"
700
  msgid "Partner ID"
701
  msgstr "Partner ID"
702
 
703
- #: includes/class-wc-gzd-ekomi.php:334
704
  #@ woocommerce-germanized
705
  msgctxt "ekomi"
706
  msgid "Insert your Partner ID here (you may find that ID on your certificate website)"
707
  msgstr "Fügen Sie hier Ihre Partner ID ein (diese ID finden Sie z.B. auf Ihrer Zertifikat-Seite)"
708
 
709
- #: includes/class-wc-gzd-ekomi.php:342
710
  #@ woocommerce-germanized
711
  msgctxt "ekomi"
712
  msgid "Interface ID"
713
  msgstr "Interface ID"
714
 
715
- #: includes/class-wc-gzd-ekomi.php:343
716
  #@ woocommerce-germanized
717
  msgctxt "ekomi"
718
  msgid "Insert your Interface ID here."
719
  msgstr "Fügen Sie hier Ihre Interface ID ein (diese Daten finden Sie im eKomi Kundenbereich)"
720
 
721
- #: includes/class-wc-gzd-ekomi.php:351
722
  #@ woocommerce-germanized
723
  msgctxt "ekomi"
724
  msgid "Interface Password"
725
  msgstr "Interface Password"
726
 
727
- #: includes/class-wc-gzd-ekomi.php:352
728
  #@ woocommerce-germanized
729
  msgctxt "ekomi"
730
  msgid "Insert your Interface Password here."
731
  msgstr "Fügen Sie hier Ihr Interface Passwort ein (diese Daten finden Sie im eKomi Kundenbereich)"
732
 
733
- #: includes/class-wc-gzd-ekomi.php:360
734
  #@ woocommerce-germanized
735
  msgctxt "ekomi"
736
  msgid "Days until Email"
737
  msgstr "Tage bis E-Mail Erinnerung"
738
 
739
- #: includes/class-wc-gzd-ekomi.php:361
740
  #@ woocommerce-germanized
741
  msgctxt "ekomi"
742
  msgid "Number of days between an order being marked as completed and review email to customer."
@@ -748,79 +749,79 @@ msgctxt "revocation-form"
748
  msgid "Forward your Revocation online"
749
  msgstr "Ihren Widerruf online erklären"
750
 
751
- #: includes/class-wc-gzd-install.php:98
752
  #, php-format
753
  #@ woocommerce-germanized
754
  msgid "Please install <a href=\"%s\" target=\"_blank\">WooCommerce</a> before installing WooCommerce Germanized. Thank you!"
755
  msgstr "Bitte installieren Sie <a href=\"%s\" target=\"_blank\">WooCommerce</a> bevor Sie WooCommerce Germanized installieren. Vielen Dank!"
756
 
757
- #: includes/class-wc-gzd-install.php:218
758
  #@ woocommerce-germanized
759
  msgctxt "Page slug"
760
  msgid "data-security"
761
  msgstr "datenschutzbelehrung"
762
 
763
- #: includes/class-wc-gzd-install.php:219
764
  #@ woocommerce-germanized
765
  msgctxt "Page title"
766
  msgid "Data Security Statement"
767
  msgstr "Datenschutzbelehrung"
768
 
769
- #: includes/class-wc-gzd-install.php:223
770
  #@ woocommerce-germanized
771
  msgctxt "Page slug"
772
  msgid "imprint"
773
  msgstr "impressum"
774
 
775
- #: includes/class-wc-gzd-install.php:224
776
  #@ woocommerce-germanized
777
  msgctxt "Page title"
778
  msgid "Imprint"
779
  msgstr "Impressum"
780
 
781
- #: includes/class-wc-gzd-install.php:228
782
  #@ woocommerce-germanized
783
  msgctxt "Page slug"
784
  msgid "terms"
785
  msgstr "agb"
786
 
787
- #: includes/class-wc-gzd-install.php:229
788
  #@ woocommerce-germanized
789
  msgctxt "Page title"
790
  msgid "Terms & Conditions"
791
  msgstr "AGB"
792
 
793
- #: includes/class-wc-gzd-install.php:233
794
  #@ woocommerce-germanized
795
  msgctxt "Page slug"
796
  msgid "revocation"
797
  msgstr "widerrufsbelehrung"
798
 
799
- #: includes/class-wc-gzd-install.php:234
800
  #@ woocommerce-germanized
801
  msgctxt "Page title"
802
  msgid "Power of Revocation"
803
  msgstr "Widerrufsbelehrung"
804
 
805
- #: includes/class-wc-gzd-install.php:243
806
  #@ woocommerce-germanized
807
  msgctxt "Page slug"
808
  msgid "payment-methods"
809
  msgstr "bezahlmoeglichkeiten"
810
 
811
- #: includes/class-wc-gzd-install.php:244
812
  #@ woocommerce-germanized
813
  msgctxt "Page title"
814
  msgid "Payment Methods"
815
  msgstr "Zahlungsmethoden"
816
 
817
- #: includes/class-wc-gzd-install.php:238
818
  #@ woocommerce-germanized
819
  msgctxt "Page slug"
820
  msgid "shipping-methods"
821
  msgstr "versandmethoden"
822
 
823
- #: includes/class-wc-gzd-install.php:239
824
  #@ woocommerce-germanized
825
  msgctxt "Page title"
826
  msgid "Shipping Methods"
@@ -1025,13 +1026,13 @@ msgctxt "trusted-shops"
1025
  msgid "out of %s"
1026
  msgstr "von %s"
1027
 
1028
- #: includes/class-wc-gzd-trusted-shops.php:348
1029
  #@ woocommerce-germanized
1030
  msgctxt "trusted-shops"
1031
  msgid "Trusted Shops Integration"
1032
  msgstr "Trusted Shops Integration"
1033
 
1034
- #: includes/class-wc-gzd-trusted-shops.php:444
1035
  #, php-format
1036
  #@ woocommerce-germanized
1037
  msgctxt "trusted-shops"
@@ -1130,7 +1131,7 @@ msgstr "Bestellung bearbeiten"
1130
  msgid "Choose a Payment Gateway"
1131
  msgstr "Zahlungsmethode auswählen"
1132
 
1133
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:437
1134
  #: includes/wc-gzd-cart-functions.php:104
1135
  #@ woocommerce-germanized
1136
  msgid "I want immediate access to the digital content and I acknowledge that thereby I lose my right to cancel once the service has begun."
@@ -1294,12 +1295,12 @@ msgstr "Widerruf erklären"
1294
  msgid "VAT free based on &#167;19 UStG"
1295
  msgstr "Umsatzsteuerbefreit nach &#167;19 UStG"
1296
 
1297
- #: woocommerce-germanized.php:437
1298
  #@ woocommerce
1299
  msgid "Settings"
1300
  msgstr "Einstellungen"
1301
 
1302
- #: woocommerce-germanized.php:590
1303
  #@ woocommerce
1304
  msgid "Order Total:"
1305
  msgstr "Gesamtsumme"
@@ -1378,87 +1379,87 @@ msgctxt "trusted-shops"
1378
  msgid "Trusted Shops Customer Reviews"
1379
  msgstr "Trusted Shops Kundenbewertungen"
1380
 
1381
- #: includes/class-wc-gzd-trusted-shops.php:351
1382
  #@ woocommerce-germanized
1383
  msgctxt "trusted-shops"
1384
  msgid "TS-ID"
1385
  msgstr "TS-ID"
1386
 
1387
- #: includes/class-wc-gzd-trusted-shops.php:352
1388
  #@ woocommerce-germanized
1389
  msgctxt "trusted-shops"
1390
  msgid "Insert your Trusted Shops ID here."
1391
  msgstr "Füge hier deine Trusted Shops ID ein."
1392
 
1393
- #: includes/class-wc-gzd-trusted-shops.php:361
1394
  #@ woocommerce-germanized
1395
  msgctxt "trusted-shops"
1396
  msgid "Configure the Trustbadge for your shop"
1397
  msgstr "Konfiguriere dein Trustbadge"
1398
 
1399
- #: includes/class-wc-gzd-trusted-shops.php:361
1400
  #, php-format
1401
  #@ woocommerce-germanized
1402
  msgctxt "trusted-shops"
1403
  msgid "You'll find a step-by-step instruction for your shopsoftware in our integration center. <a href=\"%s\" target=\"_blank\">Click here</a>"
1404
  msgstr "In unserem Integration Center findest du eine Schritt-für-Schritt Anleitung. Klicke <a href=\"%s\" target=\"_blank\">hier</a>."
1405
 
1406
- #: includes/class-wc-gzd-trusted-shops.php:364
1407
  #@ woocommerce-germanized
1408
  msgctxt "trusted-shops"
1409
  msgid "Trustbadge code"
1410
  msgstr "Trustbadge Code"
1411
 
1412
- #: includes/class-wc-gzd-trusted-shops.php:367
1413
  #@ woocommerce-germanized
1414
  msgctxt "trusted-shops"
1415
  msgid "Fill in your trustbadge code here"
1416
  msgstr "Trustbadge Code hier einfügen"
1417
 
1418
- #: includes/class-wc-gzd-trusted-shops.php:367
1419
  #@ woocommerce-germanized
1420
  msgctxt "trusted-shops"
1421
  msgid "If no further steps were required in the integration center, the Trustbadge is already displayed in your shop."
1422
  msgstr "Sofern keine weiteren Installationsschritte im Integration Center beschrieben wurden, wird das Trustbadge jetzt im Frontend deines Shops angezeigt."
1423
 
1424
- #: includes/class-wc-gzd-trusted-shops.php:374
1425
  #@ woocommerce-germanized
1426
  msgctxt "trusted-shops"
1427
  msgid "Configure Customer Reviews"
1428
  msgstr "Kundenbewertungen konfigurieren"
1429
 
1430
- #: includes/class-wc-gzd-trusted-shops.php:377
1431
  #@ woocommerce-germanized
1432
  msgctxt "trusted-shops"
1433
  msgid "Enable Review Widget"
1434
  msgstr "Kundenbewertungswidget aktiveren"
1435
 
1436
- #: includes/class-wc-gzd-trusted-shops.php:378
1437
  #, php-format
1438
  #@ woocommerce-germanized
1439
  msgctxt "trusted-shops"
1440
  msgid "This option will enable a Widget which shows your Trusted Shops Reviews as a graphic. You may configure your Widgets <a href=\"%s\">here</a>."
1441
  msgstr "Diese Option aktiviert ein Widget, mit dem du das Trusted Shops Review Widget in deinem Shop platzieren kannst. <a href=\"%s\">Hier</a> kannst du deine Widgets zuweisen."
1442
 
1443
- #: includes/class-wc-gzd-trusted-shops.php:386
1444
  #@ woocommerce-germanized
1445
  msgctxt "trusted-shops"
1446
  msgid "Enable Rich Snippets for Google"
1447
  msgstr "Rich Snippets Anzeige in Google aktivieren"
1448
 
1449
- #: includes/class-wc-gzd-trusted-shops.php:387
1450
  #@ woocommerce-germanized
1451
  msgctxt "trusted-shops"
1452
  msgid "This option will update your reviews received via Trusted Shops once per day and enables a Widget to show your reviews as Rich Snippets."
1453
  msgstr "Diese Option bewirkt, dass deine über Trusted Shops empfangenen Bewertungen als Rich Snippets im Shop als Widget verfügbar sind. "
1454
 
1455
- #: includes/class-wc-gzd-trusted-shops.php:414
1456
  #@ woocommerce-germanized
1457
  msgctxt "trusted-shops"
1458
  msgid "Assign payment methods"
1459
  msgstr "Zahlungsmethoden zuweisen"
1460
 
1461
- #: includes/class-wc-gzd-trusted-shops.php:463
1462
  #@ woocommerce-germanized
1463
  msgctxt "trusted-shops"
1464
  msgid "About Trusted Shops"
@@ -1489,12 +1490,12 @@ msgctxt "trusted-shops"
1489
  msgid "%s of %s based on %s <a href=\"%s\" target=\"_blank\">ratings</a>."
1490
  msgstr "%s von %s basierend auf %s <a href=\"%s\" target=\"_blank\">Bewertungen</a>."
1491
 
1492
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:397
1493
  #@ woocommerce-germanized
1494
  msgid "Checkout Table Color"
1495
  msgstr "Hintergrundfarbe der Tabelle"
1496
 
1497
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:399
1498
  #@ woocommerce-germanized
1499
  msgid "Choose the color of your checkout product table. This table should be highlighted within your checkout page."
1500
  msgstr "Wähle die Farbe des Hintergrundes deiner Produkt-Tabelle im Checkout. Die Tabelle sollte sich farblich vom Rest des Inhalts abheben."
@@ -1539,65 +1540,65 @@ msgstr "Wir haben festgestellt, dass dein Theme scheinbar noch nicht für WooCom
1539
  msgid "Check if fee is taxable."
1540
  msgstr "MwSt.-Berechnung für Gebühr aktivieren."
1541
 
1542
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:434
1543
  #@ woocommerce-germanized
1544
  msgid "Legal Digital Text"
1545
  msgstr "Hinweis Digital"
1546
 
1547
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:435
1548
  #@ woocommerce-germanized
1549
  msgid "Choose a Plain Text which will be shown right above checkout submit button if a user has picked a digital product. See legal text option for possible placeholders."
1550
  msgstr "Passen Sie hier optional den Hinweistext an, der angezeigt wird, wenn ein Kunde ein digitales Produkt im Warenkorb hat. Sie können hier die gleichen Platzhalter verwenden wie beim Rechtlichen Hinweistext"
1551
 
1552
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:280
1553
  #@ woocommerce-germanized
1554
  msgid "Link to Details"
1555
  msgstr "Verlinkung zu Produktdetails"
1556
 
1557
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:281
1558
  #@ woocommerce-germanized
1559
  msgid "Want to link to product details page instead of add to cart within listings?"
1560
  msgstr "Anstatt des zum Warenkorb Buttons einen Button zur Produktdetail-Seite einfügen?"
1561
 
1562
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:285
1563
  #@ woocommerce-germanized
1564
  msgid "Decide whether you like to link to your product's details page instead of displaying an add to cart button within product listings."
1565
  msgstr "Wenn du lieber einen Link zu deiner Produktseite anstatt eines zum Warenkorb Buttons innerhalb von Produktauflistungen haben möchtest, dann setze einfach diese Option."
1566
 
1567
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:289
1568
  #@ woocommerce-germanized
1569
  msgid "Product Details Text"
1570
  msgstr "Produktdetails Text"
1571
 
1572
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:291
1573
  #@ woocommerce-germanized
1574
  msgid "Details"
1575
  msgstr "Details"
1576
 
1577
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:293
1578
  #@ woocommerce-germanized
1579
  msgid "If you have chosen to link to product details page instead of add to cart URL you may want to change the button text."
1580
  msgstr "Wenn du dich dazu entschlossen hast, lieber auf die Produktseite zu verlinken anstatt den zum Warenkorb Button einzublenden, kannst du hier einen Button-Text vergeben."
1581
 
1582
- #: includes/class-wc-gzd-trusted-shops.php:395
1583
  #@ woocommerce-germanized
1584
  msgctxt "trusted-shops"
1585
  msgid "Enable Review Reminder"
1586
  msgstr "Bewertungserinnerung aktivieren"
1587
 
1588
- #: includes/class-wc-gzd-trusted-shops.php:396
1589
  #@ woocommerce-germanized
1590
  msgctxt "trusted-shops"
1591
  msgid "This option will enable a one-time email review reminder being sent to your customer."
1592
  msgstr "Diese Option sendet eine einmalige E-Mail Erinnerung bzgl. der Abgabe einer Bewertung über Trusted Shops an den Kunden."
1593
 
1594
- #: includes/class-wc-gzd-trusted-shops.php:404
1595
  #@ woocommerce-germanized
1596
  msgctxt "trusted-shops"
1597
  msgid "Days until reminder"
1598
  msgstr "Tage bis zur Erinnerung"
1599
 
1600
- #: includes/class-wc-gzd-trusted-shops.php:405
1601
  #@ woocommerce-germanized
1602
  msgctxt "trusted-shops"
1603
  msgid "Decide how many days after an order the email review reminder will be sent."
@@ -1673,19 +1674,97 @@ msgstr "jetzt Bewertung verfassen"
1673
  msgid "Found Bugs?"
1674
  msgstr "Bugs oder Wünsche melden"
1675
 
1676
- #. translators: plugin header field 'Version'
1677
- #: woocommerce-germanized.php:0
1678
- #@ woocommerce-germanized
1679
- msgid "1.0.2"
1680
- msgstr "1.0.2"
1681
-
1682
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:385
1683
  #@ woocommerce-germanized
1684
  msgid "Shipping Costs for Virtual"
1685
  msgstr "Versandkosten für virtuelle Produkte"
1686
 
1687
- #: includes/admin/settings/class-wc-gzd-settings-germanized.php:386
1688
  #@ woocommerce-germanized
1689
  msgid "Select this option if you want to display shipping costs notice for virtual products."
1690
  msgstr "Setze diese Option, falls du für virtuelle Produkte auch einen Versandkosten-Hinweis anzeigen möchtest."
1691
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: WooCommerce Germanized v1.0.4\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: 2014-09-29 12:26+0100\n"
6
+ "PO-Revision-Date: 2014-12-19 18:38:47+0000\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
75
  msgid "l"
76
  msgstr "l"
77
 
78
+ #: includes/abstracts/abstract-wc-gzd-product.php:83
79
+ #: woocommerce-germanized.php:676
80
  #, php-format
81
  #@ woocommerce-germanized
82
  msgid "incl. %s VAT"
83
  msgstr "inkl. %s MwSt."
84
 
85
+ #: includes/abstracts/abstract-wc-gzd-product.php:83
86
  #, php-format
87
  #@ woocommerce-germanized
88
  msgid "excl. %s VAT"
98
  msgid "Welcome to WooCommerce Germanized"
99
  msgstr "Willkommen bei WooCommerce Germanized"
100
 
101
+ #: includes/admin/class-wc-gzd-admin-welcome.php:217
102
  #@ woocommerce-germanized
103
  msgid "Go to WooCommerce Germanized Settings"
104
  msgstr "zu den WooCommerce Germanized Einstellungen"
111
  #: woocommerce-germanized.php:92
112
  #@ woocommerce-germanized
113
  msgid "Cheatin&#8217; huh?"
114
+ msgstr "So geht das leider nicht.."
115
 
116
  #: includes/admin/class-wc-gzd-admin.php:54
117
  #@ woocommerce-germanized
143
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:36
144
  #: includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:64
145
  #: includes/admin/settings/class-wc-gzd-settings-germanized.php:52
146
+ #: includes/class-wc-gzd-trusted-shops.php:342
147
  #@ woocommerce-germanized
148
  msgid "None"
149
  msgstr "Keine"
214
  msgstr "eKomi Optionen"
215
 
216
  #: includes/admin/settings/class-wc-gzd-settings-germanized.php:65
217
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:295
218
  #@ woocommerce-germanized
219
  msgid "General"
220
  msgstr "Allgemein"
375
  msgid "plus {link}Shipping Costs{/link}"
376
  msgstr "zzgl. {link}Versandkosten{/link}"
377
 
378
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:217
379
  #@ woocommerce-germanized
380
  msgid "Right of Recission"
381
  msgstr "Widerrufsrecht"
382
 
383
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:220
384
  #@ woocommerce-germanized
385
  msgid "Revocation Address"
386
  msgstr "Widerruf richten an"
387
 
388
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:221
389
  #@ woocommerce-germanized
390
  msgid "Type in an address, telephone/telefax number, email address which is to be used as revocation address"
391
  msgstr "Geben Sie hier Ihre Adresse, Telefon- und Faxnummer, E-Mail Adresse usw. an, an die Ihre Kunden Ihren Widerruf richten sollen"
392
 
393
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:230
394
  #@ woocommerce-germanized
395
  msgid "E-Mails"
396
  msgstr "E-Mails"
397
 
398
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:233
399
  #@ woocommerce-germanized
400
  msgid "Attach Imprint"
401
  msgstr "Impressum"
402
 
403
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:234
404
  #@ woocommerce-germanized
405
  msgid "Attach Imprint to the following email templates"
406
  msgstr "Hier können Sie die E-Mail Templates auswählen, an die das Impressum angehängt werden soll (Inhalt der oben ausgewählten Impressum-Seite bzw. des optionalen E-Mail Inhaltes dieser Seite)"
407
 
408
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:243
409
  #@ woocommerce-germanized
410
  msgid "Attach Terms & Conditions"
411
  msgstr "AGB"
412
 
413
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:244
414
  #@ woocommerce-germanized
415
  msgid "Attach Terms & Conditions to the following email templates"
416
  msgstr "Hier können Sie die E-Mail Templates auswählen, an die die AGB angehängt werden soll (Inhalt der in den WooCommerce-Einstellungen ausgewählten AGB-Seite bzw. des optionalen E-Mail Inhaltes dieser Seite)"
417
 
418
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:253
419
  #@ woocommerce-germanized
420
  msgid "Attach Power of Recission"
421
  msgstr "Widerrufsbelehrung"
422
 
423
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:254
424
  #@ woocommerce-germanized
425
  msgid "Attach Power of Recission to the following email templates"
426
  msgstr "Hier können Sie die E-Mail Templates auswählen, an die die Widerrufsbelehrung angehängt werden soll (Inhalt der oben ausgewählten Widerrufsbelehrungs-Seite bzw. des optionalen E-Mail Inhaltes dieser Seite). Standardmäßig sollte hier zumindest \"Bestellung in Abwicklung\" ausgewählt werden."
427
 
428
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:264
429
  #@ woocommerce-germanized
430
  msgid "Attach Data Security"
431
  msgstr "Datenschutzbelehrung"
432
 
433
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:265
434
  #@ woocommerce-germanized
435
  msgid "Attach Data Security Statement to the following email templates"
436
  msgstr "Hier können Sie die E-Mail Templates auswählen, an die die Datenschutzbelehrung angehängt werden soll (Inhalt der oben ausgewählten Datenschutzbelehrungs-Seite bzw. des optionalen E-Mail Inhaltes dieser Seite)"
437
 
438
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:298
439
  #@ woocommerce-germanized
440
  msgid "Add to Cart"
441
  msgstr "Zum Warenkorb Button"
442
 
443
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:299
444
  #@ woocommerce-germanized
445
  msgid "Show add to cart button on listings?"
446
  msgstr "Den zum Warenkorb Button in Produktlisten darstellen?"
447
 
448
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:303
449
  #@ woocommerce-germanized
450
  msgid "unset this option if you don't want to show the add to cart button within the product listings"
451
  msgstr "Deaktivieren Sie diese Option, wenn Sie den zum Warenkorb Button nicht innerhalb von Produktauflistungen darstellen möchten"
452
 
453
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:325
454
  #@ woocommerce-germanized
455
  msgid "Notice Footer"
456
  msgstr "Hinweise im Footer"
457
 
458
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:326
459
  #@ woocommerce-germanized
460
  msgid "Show a global VAT notice within footer"
461
  msgstr "Einen seitenübergreifenden Hinweis bzgl. der MwSt. im Footer darstellen"
462
 
463
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:334
464
  #@ woocommerce-germanized
465
  msgid "Show a global sale price notice within footer"
466
  msgstr "Einen seitenübergreifenden Hinweis bzgl. reduzierter Preise im Footer darstellen"
467
 
468
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:343
469
  #@ woocommerce-germanized
470
  msgid "Products"
471
  msgstr "Produkt"
472
 
473
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:346
474
  #@ woocommerce-germanized
475
  msgid "Show within Product Listings"
476
  msgstr "In Produktlisten"
477
 
478
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:347
479
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:380
480
  #@ woocommerce-germanized
481
  msgid "Shipping Costs notice"
482
  msgstr "Versandkosten-Hinweis"
483
 
484
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:203
485
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:363
486
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:396
487
  #@ woocommerce-germanized
488
  msgid "Unit Price"
489
  msgstr "Einheitspreis"
490
 
491
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:371
492
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:404
493
  #@ woocommerce-germanized
494
  msgid "Delivery Time Notice"
495
  msgstr "Lieferzeiten-Hinweis"
496
 
497
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:379
498
  #@ woocommerce-germanized
499
  msgid "Show on Product Detail Page"
500
  msgstr "Auf der Produktseite"
501
 
502
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:355
503
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:388
504
  #@ woocommerce-germanized
505
  msgid "Tax Info"
506
  msgstr "MwSt. Hinweis"
507
 
508
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:421
509
  #@ woocommerce-germanized
510
  msgid "Checkout & Cart"
511
  msgstr "Checkout & Warenkorb"
512
 
513
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:432
514
  #@ woocommerce-germanized
515
  msgid "Checkout Legal Display"
516
  msgstr "Checkbox oder Text"
517
 
518
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:433
519
  #@ woocommerce-germanized
520
  msgid "Use Text without Checkbox"
521
  msgstr "Rechtshinweis ohne Checkbox"
522
 
523
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:435
524
  #@ woocommerce-germanized
525
  msgid "This version will remove checkboxes from Checkout and display a text instead. This seems to be legally compliant (Zalando & Co are using this option)."
526
  msgstr "Diese Option nutzt anstatt einer Checkbox einen ausformulierten Text direkt überhalb des Kauf abschließen Buttons (Zalando und Andere Shops verwenden diese Form)"
527
 
528
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:441
529
  #@ woocommerce-germanized
530
  msgid "Legal Text"
531
  msgstr "Rechtlicher Hinweistext"
532
 
533
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:442
534
  #@ woocommerce-germanized
535
  msgid "Choose a Plain Text which will be shown right above checkout submit button. Use {term_link}{/term_link}, {data_security_link}{/data_security_link}, {revocation_link}{/revocation_link} as Placeholders for the links to legal pages."
536
  msgstr "Geben Sie hier den Text ein, den Sie als Hinweistext überhalb des \"Kaufen\" - Buttons darstellen möchten. Nutzen Sie die Platzhalter {term_link}{/term_link}, {data_security_link}{/data_security_link}, {revocation_link}{/revocation_link} um die jeweiligen Links zu den Seiten einzufügen."
537
 
538
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:444
539
  #@ woocommerce-germanized
540
  msgid "With your order, you agree to have read and understood our {term_link}Terms and Conditions{/term_link} and your {revocation_link}Right of Recission{/revocation_link}."
541
  msgstr "Mit Ihrer Bestellung erklären Sie sich mit unseren {term_link}Allgemeinen Geschäftsbedingungen{/term_link} und {revocation_link}Widerrufsbestimmungen{/revocation_link} einverstanden."
542
 
543
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:451
544
  #@ woocommerce-germanized
545
  msgid "Legal Text Error"
546
  msgstr "Fehlermeldung der Checkbox"
547
 
548
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:452
549
  #@ woocommerce-germanized
550
  msgid "If you have chosen to use checkbox validation please choose a error message which will be shown if the user doesn't check checkbox. Use {term_link}{/term_link}, {data_security_link}{/data_security_link}, {revocation_link}{/revocation_link} as Placeholders for the links to legal pages."
551
  msgstr "Falls Sie sich dazu entschieden haben, eine Checkbox zu nutzen, können Sie hier die Fehlermeldung eingeben, die angezeigt wird, wenn ein Benutzer die Checkbox nicht aktiviert hat. Nutzen Sie die Platzhalter um Links zu den jeweiligen Hinweisseiten einzufügen: {term_link}{/term_link}, {data_security_link}{/data_security_link}, {revocation_link}{/revocation_link}"
552
 
553
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:454
554
  #@ woocommerce-germanized
555
  msgid "To finish the order you have to accept to our {term_link}Terms and Conditions{/term_link} and {revocation_link}Right of Recission{/revocation_link}."
556
  msgstr "Bitte akzeptieren Sie unsere {term_link}Allgemeinen Geschäftsbedingungen{/term_link} und {revocation_link}Widerrufsbestimmungen{/revocation_link}."
557
 
558
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:471
559
  #@ woocommerce-germanized
560
  msgid "Order Success Text"
561
  msgstr "Bestellung eingegangen"
562
 
563
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:472
564
  #@ woocommerce-germanized
565
  msgid "Choose a custom text to display on order success page."
566
  msgstr "Hier können Sie einen individuellen kurzen Text eingeben, der nach der Bestellung ausgegeben wird."
567
 
568
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:480
569
  #@ woocommerce-germanized
570
  msgid "Order Success Data"
571
  msgstr "Bestellbestätigungs-Daten"
572
 
573
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:481
574
  #@ woocommerce-germanized
575
  msgid "Hide product table and customer data on order success page"
576
  msgstr "Zusätzliche Produktdetails (Tabelle, Kundeninformationen) von der Bestellbestätigungs-Seite entfernen"
588
  #: includes/admin/views/html-notice-install.php:19
589
  #@ woocommerce-germanized
590
  msgid "Germanize WooCommerce"
591
+ msgstr "WooCommerce anpassen"
592
 
593
  #: includes/admin/views/html-notice-install.php:23
594
  #@ woocommerce-germanized
598
  #: includes/admin/views/html-notice-install.php:28
599
  #@ woocommerce-germanized
600
  msgid "Generate Legal Pages"
601
+ msgstr "Rechtliche Hinweisseiten"
602
 
603
  #: includes/admin/views/html-notice-install.php:32
604
  #@ woocommerce-germanized
605
  msgid "We will automatically add legal pages such as Data Privacy Statement, Power of Revocation, Terms & Conditions etc."
606
  msgstr "Wir legen die rechtlich relevanten Seiten z.B. Datenschutzbelehrung, Widerrufsbelehrung und AGB automatisch für Sie an."
607
 
608
+ #: includes/admin/views/html-notice-install.php:49
609
  #@ woocommerce-germanized
610
  msgid "Install WooCommerce Germanized"
611
  msgstr "WooCommerce Germanized installieren"
612
 
613
+ #: includes/admin/views/html-notice-install.php:49
614
  #@ woocommerce-germanized
615
  msgid "Skip setup"
616
  msgstr "Setup überspringen"
665
  msgid "eKomi Customer"
666
  msgstr "eKomi Kundenbewertung"
667
 
668
+ #: includes/class-wc-gzd-ekomi.php:310
669
  #@ woocommerce-germanized
670
  msgctxt "ekomi"
671
  msgid "Ekomi Integration"
672
  msgstr "eKomi Integration"
673
 
674
+ #: includes/class-wc-gzd-ekomi.php:313
675
  #@ woocommerce-germanized
676
  msgctxt "ekomi"
677
  msgid "Shop ID"
678
  msgstr "Shop ID"
679
 
680
+ #: includes/class-wc-gzd-ekomi.php:314
681
  #@ woocommerce-germanized
682
  msgctxt "ekomi"
683
  msgid "Insert your Shop ID here."
684
  msgstr "Fügen Sie hier ihre Shop ID ein."
685
 
686
+ #: includes/class-wc-gzd-ekomi.php:322
687
  #@ woocommerce-germanized
688
  msgctxt "ekomi"
689
  msgid "Link to Certificate"
690
  msgstr "Link zum Shop-Zertifikat"
691
 
692
+ #: includes/class-wc-gzd-ekomi.php:323
693
  #@ woocommerce-germanized
694
  msgctxt "ekomi"
695
  msgid "Insert the link to your Certificate"
696
  msgstr "Fügen Sie hier den Link zu Ihrem Shop-Zertifikat ein"
697
 
698
+ #: includes/class-wc-gzd-ekomi.php:331
699
  #@ woocommerce-germanized
700
  msgctxt "ekomi"
701
  msgid "Partner ID"
702
  msgstr "Partner ID"
703
 
704
+ #: includes/class-wc-gzd-ekomi.php:332
705
  #@ woocommerce-germanized
706
  msgctxt "ekomi"
707
  msgid "Insert your Partner ID here (you may find that ID on your certificate website)"
708
  msgstr "Fügen Sie hier Ihre Partner ID ein (diese ID finden Sie z.B. auf Ihrer Zertifikat-Seite)"
709
 
710
+ #: includes/class-wc-gzd-ekomi.php:340
711
  #@ woocommerce-germanized
712
  msgctxt "ekomi"
713
  msgid "Interface ID"
714
  msgstr "Interface ID"
715
 
716
+ #: includes/class-wc-gzd-ekomi.php:341
717
  #@ woocommerce-germanized
718
  msgctxt "ekomi"
719
  msgid "Insert your Interface ID here."
720
  msgstr "Fügen Sie hier Ihre Interface ID ein (diese Daten finden Sie im eKomi Kundenbereich)"
721
 
722
+ #: includes/class-wc-gzd-ekomi.php:349
723
  #@ woocommerce-germanized
724
  msgctxt "ekomi"
725
  msgid "Interface Password"
726
  msgstr "Interface Password"
727
 
728
+ #: includes/class-wc-gzd-ekomi.php:350
729
  #@ woocommerce-germanized
730
  msgctxt "ekomi"
731
  msgid "Insert your Interface Password here."
732
  msgstr "Fügen Sie hier Ihr Interface Passwort ein (diese Daten finden Sie im eKomi Kundenbereich)"
733
 
734
+ #: includes/class-wc-gzd-ekomi.php:358
735
  #@ woocommerce-germanized
736
  msgctxt "ekomi"
737
  msgid "Days until Email"
738
  msgstr "Tage bis E-Mail Erinnerung"
739
 
740
+ #: includes/class-wc-gzd-ekomi.php:359
741
  #@ woocommerce-germanized
742
  msgctxt "ekomi"
743
  msgid "Number of days between an order being marked as completed and review email to customer."
749
  msgid "Forward your Revocation online"
750
  msgstr "Ihren Widerruf online erklären"
751
 
752
+ #: includes/class-wc-gzd-install.php:103
753
  #, php-format
754
  #@ woocommerce-germanized
755
  msgid "Please install <a href=\"%s\" target=\"_blank\">WooCommerce</a> before installing WooCommerce Germanized. Thank you!"
756
  msgstr "Bitte installieren Sie <a href=\"%s\" target=\"_blank\">WooCommerce</a> bevor Sie WooCommerce Germanized installieren. Vielen Dank!"
757
 
758
+ #: includes/class-wc-gzd-install.php:313
759
  #@ woocommerce-germanized
760
  msgctxt "Page slug"
761
  msgid "data-security"
762
  msgstr "datenschutzbelehrung"
763
 
764
+ #: includes/class-wc-gzd-install.php:314
765
  #@ woocommerce-germanized
766
  msgctxt "Page title"
767
  msgid "Data Security Statement"
768
  msgstr "Datenschutzbelehrung"
769
 
770
+ #: includes/class-wc-gzd-install.php:318
771
  #@ woocommerce-germanized
772
  msgctxt "Page slug"
773
  msgid "imprint"
774
  msgstr "impressum"
775
 
776
+ #: includes/class-wc-gzd-install.php:319
777
  #@ woocommerce-germanized
778
  msgctxt "Page title"
779
  msgid "Imprint"
780
  msgstr "Impressum"
781
 
782
+ #: includes/class-wc-gzd-install.php:323
783
  #@ woocommerce-germanized
784
  msgctxt "Page slug"
785
  msgid "terms"
786
  msgstr "agb"
787
 
788
+ #: includes/class-wc-gzd-install.php:324
789
  #@ woocommerce-germanized
790
  msgctxt "Page title"
791
  msgid "Terms & Conditions"
792
  msgstr "AGB"
793
 
794
+ #: includes/class-wc-gzd-install.php:328
795
  #@ woocommerce-germanized
796
  msgctxt "Page slug"
797
  msgid "revocation"
798
  msgstr "widerrufsbelehrung"
799
 
800
+ #: includes/class-wc-gzd-install.php:329
801
  #@ woocommerce-germanized
802
  msgctxt "Page title"
803
  msgid "Power of Revocation"
804
  msgstr "Widerrufsbelehrung"
805
 
806
+ #: includes/class-wc-gzd-install.php:338
807
  #@ woocommerce-germanized
808
  msgctxt "Page slug"
809
  msgid "payment-methods"
810
  msgstr "bezahlmoeglichkeiten"
811
 
812
+ #: includes/class-wc-gzd-install.php:339
813
  #@ woocommerce-germanized
814
  msgctxt "Page title"
815
  msgid "Payment Methods"
816
  msgstr "Zahlungsmethoden"
817
 
818
+ #: includes/class-wc-gzd-install.php:333
819
  #@ woocommerce-germanized
820
  msgctxt "Page slug"
821
  msgid "shipping-methods"
822
  msgstr "versandmethoden"
823
 
824
+ #: includes/class-wc-gzd-install.php:334
825
  #@ woocommerce-germanized
826
  msgctxt "Page title"
827
  msgid "Shipping Methods"
1026
  msgid "out of %s"
1027
  msgstr "von %s"
1028
 
1029
+ #: includes/class-wc-gzd-trusted-shops.php:346
1030
  #@ woocommerce-germanized
1031
  msgctxt "trusted-shops"
1032
  msgid "Trusted Shops Integration"
1033
  msgstr "Trusted Shops Integration"
1034
 
1035
+ #: includes/class-wc-gzd-trusted-shops.php:442
1036
  #, php-format
1037
  #@ woocommerce-germanized
1038
  msgctxt "trusted-shops"
1131
  msgid "Choose a Payment Gateway"
1132
  msgstr "Zahlungsmethode auswählen"
1133
 
1134
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:464
1135
  #: includes/wc-gzd-cart-functions.php:104
1136
  #@ woocommerce-germanized
1137
  msgid "I want immediate access to the digital content and I acknowledge that thereby I lose my right to cancel once the service has begun."
1295
  msgid "VAT free based on &#167;19 UStG"
1296
  msgstr "Umsatzsteuerbefreit nach &#167;19 UStG"
1297
 
1298
+ #: woocommerce-germanized.php:464
1299
  #@ woocommerce
1300
  msgid "Settings"
1301
  msgstr "Einstellungen"
1302
 
1303
+ #: woocommerce-germanized.php:654
1304
  #@ woocommerce
1305
  msgid "Order Total:"
1306
  msgstr "Gesamtsumme"
1379
  msgid "Trusted Shops Customer Reviews"
1380
  msgstr "Trusted Shops Kundenbewertungen"
1381
 
1382
+ #: includes/class-wc-gzd-trusted-shops.php:349
1383
  #@ woocommerce-germanized
1384
  msgctxt "trusted-shops"
1385
  msgid "TS-ID"
1386
  msgstr "TS-ID"
1387
 
1388
+ #: includes/class-wc-gzd-trusted-shops.php:350
1389
  #@ woocommerce-germanized
1390
  msgctxt "trusted-shops"
1391
  msgid "Insert your Trusted Shops ID here."
1392
  msgstr "Füge hier deine Trusted Shops ID ein."
1393
 
1394
+ #: includes/class-wc-gzd-trusted-shops.php:359
1395
  #@ woocommerce-germanized
1396
  msgctxt "trusted-shops"
1397
  msgid "Configure the Trustbadge for your shop"
1398
  msgstr "Konfiguriere dein Trustbadge"
1399
 
1400
+ #: includes/class-wc-gzd-trusted-shops.php:359
1401
  #, php-format
1402
  #@ woocommerce-germanized
1403
  msgctxt "trusted-shops"
1404
  msgid "You'll find a step-by-step instruction for your shopsoftware in our integration center. <a href=\"%s\" target=\"_blank\">Click here</a>"
1405
  msgstr "In unserem Integration Center findest du eine Schritt-für-Schritt Anleitung. Klicke <a href=\"%s\" target=\"_blank\">hier</a>."
1406
 
1407
+ #: includes/class-wc-gzd-trusted-shops.php:362
1408
  #@ woocommerce-germanized
1409
  msgctxt "trusted-shops"
1410
  msgid "Trustbadge code"
1411
  msgstr "Trustbadge Code"
1412
 
1413
+ #: includes/class-wc-gzd-trusted-shops.php:365
1414
  #@ woocommerce-germanized
1415
  msgctxt "trusted-shops"
1416
  msgid "Fill in your trustbadge code here"
1417
  msgstr "Trustbadge Code hier einfügen"
1418
 
1419
+ #: includes/class-wc-gzd-trusted-shops.php:365
1420
  #@ woocommerce-germanized
1421
  msgctxt "trusted-shops"
1422
  msgid "If no further steps were required in the integration center, the Trustbadge is already displayed in your shop."
1423
  msgstr "Sofern keine weiteren Installationsschritte im Integration Center beschrieben wurden, wird das Trustbadge jetzt im Frontend deines Shops angezeigt."
1424
 
1425
+ #: includes/class-wc-gzd-trusted-shops.php:372
1426
  #@ woocommerce-germanized
1427
  msgctxt "trusted-shops"
1428
  msgid "Configure Customer Reviews"
1429
  msgstr "Kundenbewertungen konfigurieren"
1430
 
1431
+ #: includes/class-wc-gzd-trusted-shops.php:375
1432
  #@ woocommerce-germanized
1433
  msgctxt "trusted-shops"
1434
  msgid "Enable Review Widget"
1435
  msgstr "Kundenbewertungswidget aktiveren"
1436
 
1437
+ #: includes/class-wc-gzd-trusted-shops.php:376
1438
  #, php-format
1439
  #@ woocommerce-germanized
1440
  msgctxt "trusted-shops"
1441
  msgid "This option will enable a Widget which shows your Trusted Shops Reviews as a graphic. You may configure your Widgets <a href=\"%s\">here</a>."
1442
  msgstr "Diese Option aktiviert ein Widget, mit dem du das Trusted Shops Review Widget in deinem Shop platzieren kannst. <a href=\"%s\">Hier</a> kannst du deine Widgets zuweisen."
1443
 
1444
+ #: includes/class-wc-gzd-trusted-shops.php:384
1445
  #@ woocommerce-germanized
1446
  msgctxt "trusted-shops"
1447
  msgid "Enable Rich Snippets for Google"
1448
  msgstr "Rich Snippets Anzeige in Google aktivieren"
1449
 
1450
+ #: includes/class-wc-gzd-trusted-shops.php:385
1451
  #@ woocommerce-germanized
1452
  msgctxt "trusted-shops"
1453
  msgid "This option will update your reviews received via Trusted Shops once per day and enables a Widget to show your reviews as Rich Snippets."
1454
  msgstr "Diese Option bewirkt, dass deine über Trusted Shops empfangenen Bewertungen als Rich Snippets im Shop als Widget verfügbar sind. "
1455
 
1456
+ #: includes/class-wc-gzd-trusted-shops.php:412
1457
  #@ woocommerce-germanized
1458
  msgctxt "trusted-shops"
1459
  msgid "Assign payment methods"
1460
  msgstr "Zahlungsmethoden zuweisen"
1461
 
1462
+ #: includes/class-wc-gzd-trusted-shops.php:461
1463
  #@ woocommerce-germanized
1464
  msgctxt "trusted-shops"
1465
  msgid "About Trusted Shops"
1490
  msgid "%s of %s based on %s <a href=\"%s\" target=\"_blank\">ratings</a>."
1491
  msgstr "%s von %s basierend auf %s <a href=\"%s\" target=\"_blank\">Bewertungen</a>."
1492
 
1493
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:424
1494
  #@ woocommerce-germanized
1495
  msgid "Checkout Table Color"
1496
  msgstr "Hintergrundfarbe der Tabelle"
1497
 
1498
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:426
1499
  #@ woocommerce-germanized
1500
  msgid "Choose the color of your checkout product table. This table should be highlighted within your checkout page."
1501
  msgstr "Wähle die Farbe des Hintergrundes deiner Produkt-Tabelle im Checkout. Die Tabelle sollte sich farblich vom Rest des Inhalts abheben."
1540
  msgid "Check if fee is taxable."
1541
  msgstr "MwSt.-Berechnung für Gebühr aktivieren."
1542
 
1543
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:461
1544
  #@ woocommerce-germanized
1545
  msgid "Legal Digital Text"
1546
  msgstr "Hinweis Digital"
1547
 
1548
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:462
1549
  #@ woocommerce-germanized
1550
  msgid "Choose a Plain Text which will be shown right above checkout submit button if a user has picked a digital product. See legal text option for possible placeholders."
1551
  msgstr "Passen Sie hier optional den Hinweistext an, der angezeigt wird, wenn ein Kunde ein digitales Produkt im Warenkorb hat. Sie können hier die gleichen Platzhalter verwenden wie beim Rechtlichen Hinweistext"
1552
 
1553
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:307
1554
  #@ woocommerce-germanized
1555
  msgid "Link to Details"
1556
  msgstr "Verlinkung zu Produktdetails"
1557
 
1558
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:308
1559
  #@ woocommerce-germanized
1560
  msgid "Want to link to product details page instead of add to cart within listings?"
1561
  msgstr "Anstatt des zum Warenkorb Buttons einen Button zur Produktdetail-Seite einfügen?"
1562
 
1563
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:312
1564
  #@ woocommerce-germanized
1565
  msgid "Decide whether you like to link to your product's details page instead of displaying an add to cart button within product listings."
1566
  msgstr "Wenn du lieber einen Link zu deiner Produktseite anstatt eines zum Warenkorb Buttons innerhalb von Produktauflistungen haben möchtest, dann setze einfach diese Option."
1567
 
1568
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:316
1569
  #@ woocommerce-germanized
1570
  msgid "Product Details Text"
1571
  msgstr "Produktdetails Text"
1572
 
1573
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:318
1574
  #@ woocommerce-germanized
1575
  msgid "Details"
1576
  msgstr "Details"
1577
 
1578
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:320
1579
  #@ woocommerce-germanized
1580
  msgid "If you have chosen to link to product details page instead of add to cart URL you may want to change the button text."
1581
  msgstr "Wenn du dich dazu entschlossen hast, lieber auf die Produktseite zu verlinken anstatt den zum Warenkorb Button einzublenden, kannst du hier einen Button-Text vergeben."
1582
 
1583
+ #: includes/class-wc-gzd-trusted-shops.php:393
1584
  #@ woocommerce-germanized
1585
  msgctxt "trusted-shops"
1586
  msgid "Enable Review Reminder"
1587
  msgstr "Bewertungserinnerung aktivieren"
1588
 
1589
+ #: includes/class-wc-gzd-trusted-shops.php:394
1590
  #@ woocommerce-germanized
1591
  msgctxt "trusted-shops"
1592
  msgid "This option will enable a one-time email review reminder being sent to your customer."
1593
  msgstr "Diese Option sendet eine einmalige E-Mail Erinnerung bzgl. der Abgabe einer Bewertung über Trusted Shops an den Kunden."
1594
 
1595
+ #: includes/class-wc-gzd-trusted-shops.php:402
1596
  #@ woocommerce-germanized
1597
  msgctxt "trusted-shops"
1598
  msgid "Days until reminder"
1599
  msgstr "Tage bis zur Erinnerung"
1600
 
1601
+ #: includes/class-wc-gzd-trusted-shops.php:403
1602
  #@ woocommerce-germanized
1603
  msgctxt "trusted-shops"
1604
  msgid "Decide how many days after an order the email review reminder will be sent."
1674
  msgid "Found Bugs?"
1675
  msgstr "Bugs oder Wünsche melden"
1676
 
1677
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:412
 
 
 
 
 
 
1678
  #@ woocommerce-germanized
1679
  msgid "Shipping Costs for Virtual"
1680
  msgstr "Versandkosten für virtuelle Produkte"
1681
 
1682
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:413
1683
  #@ woocommerce-germanized
1684
  msgid "Select this option if you want to display shipping costs notice for virtual products."
1685
  msgstr "Setze diese Option, falls du für virtuelle Produkte auch einen Versandkosten-Hinweis anzeigen möchtest."
1686
 
1687
+ #: includes/abstracts/abstract-wc-gzd-product.php:82
1688
+ #@ woocommerce-germanized
1689
+ msgid "incl. VAT"
1690
+ msgstr "inkl. MwSt."
1691
+
1692
+ #: includes/abstracts/abstract-wc-gzd-product.php:82
1693
+ #@ woocommerce-germanized
1694
+ msgid "excl. VAT"
1695
+ msgstr "exkl. MwSt."
1696
+
1697
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:275
1698
+ #@ woocommerce-germanized
1699
+ msgid "Virtual VAT"
1700
+ msgstr "USt. Änderung 2015"
1701
+
1702
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:278
1703
+ #@ woocommerce-germanized
1704
+ msgid "Enable Virtual VAT"
1705
+ msgstr "USt. Anpassung aktivieren"
1706
+
1707
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:279
1708
+ #@ woocommerce-germanized
1709
+ msgid "Enable if you want to charge your customer's countries' VAT for virtual products."
1710
+ msgstr "Aktiviere diese Option um für virtuelle Produkte den USt.-Satz des Dienstleistungsempfängers zu berechnen."
1711
+
1712
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:283
1713
+ #, php-format
1714
+ #@ woocommerce-germanized
1715
+ msgid "New EU VAT rule applies on 01.01.2015. Make sure that every digital or virtual product has chosen the right tax class (Virtual Rate or Virtual Reduced Rate). Gross prices will not differ from the prices you have chosen for affected products. In fact the net price will differ depending on the VAT rate of your customers' country. Shop settings will be adjusted to show prices including tax. More information can be found <a href=\"%s\" target=\"_blank\">here</a>."
1716
+ msgstr "Aktiviert die Änderungen der EU-Umsatzsteuerberechnung ab dem 01.01.2015. Von diesem Zeitpunkt an, muss beim Verkauf von Dienstleistungen (virtuelle, digitale Produkte z.B. e-Books) der USt.-Satz des Landes des Dienstleistungsempfängers berechnet werden (z.B. 20%% für Käufer aus AT). Diese Regel gilt für B2C Geschäfte. Mit dieser Einstellung bleiben die im Shop hinterlegten Brutto-Preise erhalten. Es gibt jedoch Schwankungen beim Netto-Preis (je nach Herkunftsland wird eine unterschiedlich hohe MwSt. berechnet). Die Shop-Einstellungen werden so angepasst, dass alle Preise im Shop inkl. MwSt. angezeigt werden und hinterlegt sind. Mehr Informationen dazu findest du <a href=\"%s\" target=\"_blank\">hier</a>."
1717
+
1718
+ #: includes/admin/views/html-notice-update.php:13
1719
+ #@ woocommerce-germanized
1720
+ msgid "<strong>Update WooCommerce Germanized</strong>"
1721
+ msgstr "<strong>WooCommerce Germanized aktualisieren</strong>"
1722
+
1723
+ #: includes/admin/views/html-notice-update.php:14
1724
+ #@ woocommerce-germanized
1725
+ msgid "If you are selling virtual products to EU countries different from your base country, you will have to charge the customers country VAT rate by 01.01.2015. If you want to install EU VAT rates automatically please choose the option below."
1726
+ msgstr "Wenn du virtuelle Produkte in das EU-Ausland verkaufst, gilt ab dem 01.01.2015 ein neues Gesetz für die Besteuerung dieser Produkte. Ab diesem Zeitpunkt wird bei B2C Geschäften die MwSt. des Dienstleistungsempfängers berechnet. Die Brutto-Preise dürfen im Checkout allerdings nicht angepasst werden (daraus folgen Schwankungen bei den Netto-Preisen). "
1727
+
1728
+ #: includes/admin/views/html-notice-install.php:37
1729
+ #: includes/admin/views/html-notice-update.php:19
1730
+ #@ woocommerce-germanized
1731
+ msgid "Generate EU VAT Rates"
1732
+ msgstr "EU MwSt.-Sätze anlegen"
1733
+
1734
+ #: includes/admin/views/html-notice-install.php:41
1735
+ #: includes/admin/views/html-notice-update.php:23
1736
+ #@ woocommerce-germanized
1737
+ msgid "We will automatically insert EU VAT Rates for selling virtual products."
1738
+ msgstr "Wir übernehmen das Einfügen der unterschiedlichen EU MwSt.-Sätze für dich."
1739
+
1740
+ #: includes/admin/views/html-notice-update.php:31
1741
+ #@ woocommerce-germanized
1742
+ msgid "Update WooCommerce Germanized"
1743
+ msgstr "WooCommerce Germanized aktualisieren"
1744
+
1745
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:206
1746
+ #@ woocommerce-germanized
1747
+ msgid "Unit Price Text"
1748
+ msgstr "Einheitspreis Text"
1749
+
1750
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:207
1751
+ #@ woocommerce-germanized
1752
+ msgid "This text will be used to display the unit price. Use {price} to insert the price."
1753
+ msgstr "Dieser Text wird verwendet um den Einheitspreis darzustellen. Nutze {price} als Platzhalter für den eigentlichen Preis."
1754
+
1755
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:212
1756
+ #@ woocommerce-germanized
1757
+ msgid "{price}"
1758
+ msgstr "{price}"
1759
+
1760
+ #: includes/admin/settings/class-wc-gzd-settings-germanized.php:592
1761
+ #@ woocommerce-germanized
1762
+ msgid "Sorry, but the new Virtual VAT rules cannot be applied to small business."
1763
+ msgstr "Sorry aber die neuen USt-Regelungen für virtuelle Produkte lassen sich leider nicht mit dem Kleinunternehmer vereinbaren. Bitte kontaktiere deinen Steuerberater für weitere Informationen."
1764
+
1765
+ #. translators: plugin header field 'Version'
1766
+ #: woocommerce-germanized.php:0
1767
+ #@ woocommerce-germanized
1768
+ msgid "1.0.4"
1769
+ msgstr "1.0.4"
1770
+
includes/abstracts/abstract-wc-gzd-product.php CHANGED
@@ -57,6 +57,15 @@ class WC_GZD_Product extends WC_Product {
57
  return false;
58
  }
59
 
 
 
 
 
 
 
 
 
 
60
  /**
61
  * Gets a product's tax description (if is taxable)
62
  *
@@ -69,6 +78,8 @@ class WC_GZD_Product extends WC_Product {
69
  $tax_rates = $_tax->get_rates( $this->get_tax_class() );
70
  if ( ! empty( $tax_rates ) ) {
71
  $tax_rates = array_values( $tax_rates );
 
 
72
  return ( $tax_display_mode == 'incl' ? sprintf( __( 'incl. %s VAT', 'woocommerce-germanized' ), ( (int) $tax_rates[0][ 'rate' ] ) . '%' ) : sprintf( __( 'excl. %s VAT', 'woocommerce-germanized' ), ( (int) $tax_rates[0][ 'rate' ] ) . '%' ) );
73
  }
74
  }
@@ -178,7 +189,7 @@ class WC_GZD_Product extends WC_Product {
178
  $display_regular_price = $this->get_unit_price( 1, $this->get_unit_regular_price() );
179
  $display_sale_price = $this->get_unit_price( 1, $this->get_unit_sale_price() );
180
  $price_html = ( $this->is_on_unit_sale() ? $this->get_price_html_from_to( $display_regular_price, $display_sale_price ) : wc_price( $display_price ) );
181
- return ( $this->has_unit() ) ? $price_html . $this->get_price_suffix() . apply_filters( 'wc_gzd_unit_price_seperator', ' / ' ) . $this->get_unit_base() : '';
182
  }
183
 
184
  /**
57
  return false;
58
  }
59
 
60
+ /**
61
+ * Checks whether current product applies for a virtual VAT exception (downloadable or virtual)
62
+ *
63
+ * @return boolean
64
+ */
65
+ public function is_virtual_vat_exception() {
66
+ return ( ( get_option( 'woocommerce_gzd_enable_virtual_vat' ) == 'yes' ) && ( $this->is_downloadable() || $this->is_virtual() ) ? true : false );
67
+ }
68
+
69
  /**
70
  * Gets a product's tax description (if is taxable)
71
  *
78
  $tax_rates = $_tax->get_rates( $this->get_tax_class() );
79
  if ( ! empty( $tax_rates ) ) {
80
  $tax_rates = array_values( $tax_rates );
81
+ if ( $this->is_virtual_vat_exception() )
82
+ return ( $tax_display_mode == 'incl' ? __( 'incl. VAT', 'woocommerce-germanized' ) : __( 'excl. VAT', 'woocommerce-germanized' ) );
83
  return ( $tax_display_mode == 'incl' ? sprintf( __( 'incl. %s VAT', 'woocommerce-germanized' ), ( (int) $tax_rates[0][ 'rate' ] ) . '%' ) : sprintf( __( 'excl. %s VAT', 'woocommerce-germanized' ), ( (int) $tax_rates[0][ 'rate' ] ) . '%' ) );
84
  }
85
  }
189
  $display_regular_price = $this->get_unit_price( 1, $this->get_unit_regular_price() );
190
  $display_sale_price = $this->get_unit_price( 1, $this->get_unit_sale_price() );
191
  $price_html = ( $this->is_on_unit_sale() ? $this->get_price_html_from_to( $display_regular_price, $display_sale_price ) : wc_price( $display_price ) );
192
+ return ( $this->has_unit() ) ? str_replace( '{price}', $price_html . $this->get_price_suffix() . apply_filters( 'wc_gzd_unit_price_seperator', ' / ' ) . $this->get_unit_base(), get_option( 'woocommerce_gzd_unit_price_text' ) ) : '';
193
  }
194
 
195
  /**
includes/admin/class-wc-gzd-admin-notices.php CHANGED
@@ -19,7 +19,26 @@ if ( ! class_exists( 'WC_GZD_Admin_Notices' ) ) :
19
  */
20
  class WC_GZD_Admin_Notices {
21
 
22
- public function __construct() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  add_action( 'admin_init', array( $this, 'check_notice_hide' ) );
24
  add_action( 'admin_print_styles', array( $this, 'add_notices' ), 1 );
25
  }
@@ -124,4 +143,4 @@ class WC_GZD_Admin_Notices {
124
 
125
  endif;
126
 
127
- return new WC_GZD_Admin_Notices();
19
  */
20
  class WC_GZD_Admin_Notices {
21
 
22
+ /**
23
+ * Single instance current class
24
+ *
25
+ * @var object
26
+ */
27
+ protected static $_instance = null;
28
+
29
+ /**
30
+ * Ensures that only one instance of this class is loaded or can be loaded.
31
+ *
32
+ * @static
33
+ */
34
+ public static function instance() {
35
+ if ( is_null( self::$_instance ) ) {
36
+ self::$_instance = new self();
37
+ }
38
+ return self::$_instance;
39
+ }
40
+
41
+ protected function __construct() {
42
  add_action( 'admin_init', array( $this, 'check_notice_hide' ) );
43
  add_action( 'admin_print_styles', array( $this, 'add_notices' ), 1 );
44
  }
143
 
144
  endif;
145
 
146
+ return WC_GZD_Admin_Notices::instance();
includes/admin/class-wc-gzd-admin-welcome.php CHANGED
@@ -101,7 +101,7 @@ class WC_GZD_Admin_Welcome {
101
  $major_version = substr( WC_germanized()->version, 0, 3 );
102
  ?>
103
  <h1>Willkommen bei WooCommerce Germanized</h1>
104
- <a class="wc-gzd-logo" href="" target="_blank"></a>
105
  <div class="about-text woocommerce-about-text">
106
  <?php
107
  if ( ! empty( $_GET['wc-gzd-installed'] ) )
@@ -152,6 +152,19 @@ class WC_GZD_Admin_Welcome {
152
  </div>
153
  </div>
154
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  <div class="changelog">
156
  <h3>WooCommerce Germanized - Funktionsübersicht</h3>
157
  <div class="wc-feature feature-section col three-col">
101
  $major_version = substr( WC_germanized()->version, 0, 3 );
102
  ?>
103
  <h1>Willkommen bei WooCommerce Germanized</h1>
104
+ <a class="wc-gzd-logo" href="" target="_blank" style="margin-right: 1em"></a>
105
  <div class="about-text woocommerce-about-text">
106
  <?php
107
  if ( ! empty( $_GET['wc-gzd-installed'] ) )
152
  </div>
153
  </div>
154
  </div>
155
+ <div class="changelog">
156
+ <h3>Neu in WooCommerce Germanized 1.0.4</h3>
157
+ <div class="wc-feature feature-section col one-col">
158
+ <div>
159
+ <h4><i class="fa fa-exclamation"></i> Neue USt. Regelungen 2015</h4>
160
+ <p>
161
+ Mit 1.0.4 haben wir auf die neuen USt.-Regelungen für virtuelle Produkte gültig ab 01.01.2015 reagiert (<a href="http://ec.europa.eu/taxation_customs/taxation/vat/how_vat_works/telecom/index_de.htm#new_rules" target="_blank">mehr erfahren</a>).
162
+ Ab dieser Version wird die im Brutto-Preis enthaltene MwSt. bei virtuellen Produkten automatisch an den MwSt.-Satz des Empfängers angepasst. Daraus folgt ein variierender Netto-Preis (je nach Herkunftsland). Andere Verfahren (z.B. das Erkennen des Herkunftslandes anhand der IP-Adresse) halten wir für nicht praktikabel,
163
+ da das Land des Rechnungsempfängers davon abweichen kann. Wir bitten dich dieses neue Verfahren unbedingt mit deinem Steuerberater bzw. Rechtsanwalt durchzusprechen.
164
+ </p>
165
+ </div>
166
+ </div>
167
+ </div>
168
  <div class="changelog">
169
  <h3>WooCommerce Germanized - Funktionsübersicht</h3>
170
  <div class="wc-feature feature-section col three-col">
includes/admin/settings/class-wc-gzd-settings-germanized.php CHANGED
@@ -200,6 +200,20 @@ class WC_GZD_Settings_Germanized extends WC_Settings_Page {
200
 
201
  array( 'type' => 'sectionend', 'id' => 'shipping_costs_options' ),
202
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  array( 'title' => __( 'Right of Recission', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'recission_options' ),
204
 
205
  array(
@@ -258,6 +272,19 @@ class WC_GZD_Settings_Germanized extends WC_Settings_Page {
258
 
259
  array( 'type' => 'sectionend', 'id' => 'email_options' ),
260
 
 
 
 
 
 
 
 
 
 
 
 
 
 
261
  ) ); // End general settings
262
  }
263
 
@@ -537,19 +564,34 @@ class WC_GZD_Settings_Germanized extends WC_Settings_Page {
537
  update_option( 'woocommerce_calc_taxes', 'yes' );
538
  update_option( 'woocommerce_prices_include_tax', 'yes' );
539
  }
540
- break;
541
  } else if ( $setting[ 'id' ] == 'woocommerce_gzd_trusted_shops_review_widget_enable' ) {
542
  if ( ! empty( $_POST[ 'woocommerce_gzd_trusted_shops_review_widget_enable' ] ) && ! WC_germanized()->trusted_shops->is_review_widget_enabled() )
543
  $update_reviews = true;
544
  } else if ( $setting[ 'id' ] == 'woocommerce_gzd_trusted_shops_rich_snippets_enable' ) {
545
  if ( ! empty( $_POST[ 'woocommerce_gzd_trusted_shops_rich_snippets_enable' ] ) && ! WC_germanized()->trusted_shops->is_rich_snippets_enabled() )
546
  $update_rich_snippets = true;
 
 
 
 
 
 
 
 
 
 
 
547
  }
548
  }
549
  }
550
 
551
  WC_Admin_Settings::save_fields( $settings );
552
 
 
 
 
 
 
553
  // Trusted Shops API
554
  if ( $update_rich_snippets || $update_reviews ) {
555
  $trusted_shops = new WC_GZD_Trusted_Shops();
200
 
201
  array( 'type' => 'sectionend', 'id' => 'shipping_costs_options' ),
202
 
203
+ array( 'title' => __( 'Unit Price', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'unit_price_options' ),
204
+
205
+ array(
206
+ 'title' => __( 'Unit Price Text', 'woocommerce-germanized' ),
207
+ 'desc' => __( 'This text will be used to display the unit price. Use {price} to insert the price.', 'woocommerce-germanized' ),
208
+ 'desc_tip' => true,
209
+ 'id' => 'woocommerce_gzd_unit_price_text',
210
+ 'type' => 'text',
211
+ 'css' => 'min-width:300px;',
212
+ 'default' => __( '{price}', 'woocommerce-germanized' ),
213
+ ),
214
+
215
+ array( 'type' => 'sectionend', 'id' => 'unit_price_options' ),
216
+
217
  array( 'title' => __( 'Right of Recission', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'recission_options' ),
218
 
219
  array(
272
 
273
  array( 'type' => 'sectionend', 'id' => 'email_options' ),
274
 
275
+ array( 'title' => __( 'Virtual VAT', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'virtual_vat_options' ),
276
+
277
+ array(
278
+ 'title' => __( 'Enable Virtual VAT', 'woocommerce-germanized' ),
279
+ 'desc' => __( 'Enable if you want to charge your customer\'s countries\' VAT for virtual products.', 'woocommerce-germanized' ),
280
+ 'id' => 'woocommerce_gzd_enable_virtual_vat',
281
+ 'default' => 'no',
282
+ 'type' => 'checkbox',
283
+ 'desc_tip' => sprintf( __( 'New EU VAT rule applies on 01.01.2015. Make sure that every digital or virtual product has chosen the right tax class (Virtual Rate or Virtual Reduced Rate). Gross prices will not differ from the prices you have chosen for affected products. In fact the net price will differ depending on the VAT rate of your customers\' country. Shop settings will be adjusted to show prices including tax. More information can be found <a href="%s" target="_blank">here</a>.', 'woocommerce-germanized' ), 'http://ec.europa.eu/taxation_customs/taxation/vat/how_vat_works/telecom/index_de.htm#new_rules' ),
284
+ ),
285
+
286
+ array( 'type' => 'sectionend', 'id' => 'virtual_vat_options' ),
287
+
288
  ) ); // End general settings
289
  }
290
 
564
  update_option( 'woocommerce_calc_taxes', 'yes' );
565
  update_option( 'woocommerce_prices_include_tax', 'yes' );
566
  }
 
567
  } else if ( $setting[ 'id' ] == 'woocommerce_gzd_trusted_shops_review_widget_enable' ) {
568
  if ( ! empty( $_POST[ 'woocommerce_gzd_trusted_shops_review_widget_enable' ] ) && ! WC_germanized()->trusted_shops->is_review_widget_enabled() )
569
  $update_reviews = true;
570
  } else if ( $setting[ 'id' ] == 'woocommerce_gzd_trusted_shops_rich_snippets_enable' ) {
571
  if ( ! empty( $_POST[ 'woocommerce_gzd_trusted_shops_rich_snippets_enable' ] ) && ! WC_germanized()->trusted_shops->is_rich_snippets_enabled() )
572
  $update_rich_snippets = true;
573
+ } else if ( $setting[ 'id' ] == 'woocommerce_gzd_enable_virtual_vat' ) {
574
+ if ( get_option( 'woocommerce_gzd_enable_virtual_vat' ) != 'yes' && ! empty( $_POST[ 'woocommerce_gzd_enable_virtual_vat' ] ) ) {
575
+ if ( ! empty( $_POST[ 'woocommerce_gzd_small_enterprise' ] ) )
576
+ continue;
577
+ // Update WooCommerce options to show prices including taxes
578
+ // Check if is small business
579
+ update_option( 'woocommerce_prices_include_tax', 'yes' );
580
+ update_option( 'woocommerce_tax_display_shop', 'incl' );
581
+ update_option( 'woocommerce_tax_display_cart', 'incl' );
582
+ update_option( 'woocommerce_tax_total_display', 'itemized' );
583
+ }
584
  }
585
  }
586
  }
587
 
588
  WC_Admin_Settings::save_fields( $settings );
589
 
590
+ if ( ! empty( $_POST[ 'woocommerce_gzd_small_enterprise' ] ) && ! empty( $_POST[ 'woocommerce_gzd_enable_virtual_vat' ] ) ) {
591
+ update_option( 'woocommerce_gzd_enable_virtual_vat', 'no' );
592
+ WC_Admin_Settings::add_error( __( 'Sorry, but the new Virtual VAT rules cannot be applied to small business.', 'woocommerce-germanized' ) );
593
+ }
594
+
595
  // Trusted Shops API
596
  if ( $update_rich_snippets || $update_reviews ) {
597
  $trusted_shops = new WC_GZD_Trusted_Shops();
includes/admin/views/html-notice-install.php CHANGED
@@ -33,6 +33,15 @@ if ( ! defined( 'ABSPATH' ) ) {
33
  </label>
34
  </td>
35
  </tr>
 
 
 
 
 
 
 
 
 
36
  </tbody>
37
  <input type="hidden" name="install_woocommerce_gzd" value="true" />
38
  </table>
33
  </label>
34
  </td>
35
  </tr>
36
+ <tr>
37
+ <th scope="row"><?php _e( 'Generate EU VAT Rates', 'woocommerce-germanized' );?></th>
38
+ <td>
39
+ <label for="install_woocommerce_gzd_tax_rates">
40
+ <input id="install_woocommerce_gzd_tax_rates" type="checkbox" value="true" name="install_woocommerce_gzd_tax_rates">
41
+ <?php _e( 'We will automatically insert EU VAT Rates for selling virtual products.', 'woocommerce-germanized' );?>
42
+ </label>
43
+ </td>
44
+ </tr>
45
  </tbody>
46
  <input type="hidden" name="install_woocommerce_gzd" value="true" />
47
  </table>
includes/admin/views/html-notice-update.php CHANGED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Admin View: Notice - Install
4
+ */
5
+
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit; // Exit if accessed directly
8
+ }
9
+
10
+ ?>
11
+
12
+ <div id="message" class="updated woocommerce-message woocommerce-gzd-message wc-connect">
13
+ <h3><?php _e( '<strong>Update WooCommerce Germanized</strong>', 'woocommerce-germanized' ); ?></h3>
14
+ <p><?php echo _e( 'If you are selling virtual products to EU countries different from your base country, you will have to charge the customers country VAT rate by 01.01.2015. If you want to install EU VAT rates automatically please choose the option below.', 'woocommerce-germanized' ); ?></p>
15
+ <form name="" method="get">
16
+ <table class="form-table">
17
+ <tbody>
18
+ <tr>
19
+ <th scope="row"><?php _e( 'Generate EU VAT Rates', 'woocommerce-germanized' );?></th>
20
+ <td>
21
+ <label for="install_woocommerce_gzd_tax_rates">
22
+ <input id="install_woocommerce_gzd_tax_rates" type="checkbox" value="true" name="install_woocommerce_gzd_tax_rates">
23
+ <?php _e( 'We will automatically insert EU VAT Rates for selling virtual products.', 'woocommerce-germanized' );?>
24
+ </label>
25
+ </td>
26
+ </tr>
27
+ </tbody>
28
+ <input type="hidden" name="do_update_woocommerce_gzd" value="true" />
29
+ </table>
30
+ <p class="submit">
31
+ <input type="submit" class="button-primary" value="<?php _e( 'Update WooCommerce Germanized', 'woocommerce-germanized' );?>" /> </p>
32
+ </form>
33
+ </div>
includes/class-wc-gzd-cart.php ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WooCommerce GZD cart
4
+ *
5
+ * Extends WooCommerce default cart to implement vat exception for digital products (if customer is not from shop base country)
6
+ *
7
+ * @class WC_GZD_Cart
8
+ * @see WC_Cart
9
+ * @version 1.0.0
10
+ * @author Vendidero
11
+ */
12
+ class WC_GZD_Cart extends WC_Cart {
13
+
14
+ /**
15
+ * Reset cart totals and clear sessions.
16
+ *
17
+ * @access private
18
+ * @return void
19
+ */
20
+ private function reset() {
21
+ foreach ( $this->cart_session_data as $key => $default ) {
22
+ $this->$key = $default;
23
+ unset( WC()->session->$key );
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Calculate totals for cart. Implements vat exception for digital products.
29
+ */
30
+ public function calculate_totals() {
31
+
32
+ $this->reset();
33
+
34
+ do_action( 'woocommerce_before_calculate_totals', $this );
35
+
36
+ if ( sizeof( $this->get_cart() ) == 0 ) {
37
+ $this->set_session();
38
+ return;
39
+ }
40
+
41
+ $tax_rates = array();
42
+ $shop_tax_rates = array();
43
+
44
+ /**
45
+ * Calculate subtotals for items. This is done first so that discount logic can use the values.
46
+ */
47
+ foreach ( $this->get_cart() as $cart_item_key => $values ) {
48
+
49
+ $_product = $values['data'];
50
+
51
+ // Count items + weight
52
+ $this->cart_contents_weight += $_product->get_weight() * $values['quantity'];
53
+ $this->cart_contents_count += $values['quantity'];
54
+
55
+ // Prices
56
+ $base_price = $_product->get_price();
57
+ $line_price = $_product->get_price() * $values['quantity'];
58
+
59
+ $line_subtotal = 0;
60
+ $line_subtotal_tax = 0;
61
+
62
+ /**
63
+ * No tax to calculate
64
+ */
65
+ if ( ! $_product->is_taxable() ) {
66
+
67
+ // Subtotal is the undiscounted price
68
+ $this->subtotal += $line_price;
69
+ $this->subtotal_ex_tax += $line_price;
70
+
71
+ /**
72
+ * Prices include tax
73
+ *
74
+ * To prevent rounding issues we need to work with the inclusive price where possible
75
+ * otherwise we'll see errors such as when working with a 9.99 inc price, 20% VAT which would
76
+ * be 8.325 leading to totals being 1p off
77
+ *
78
+ * Pre tax coupons come off the price the customer thinks they are paying - tax is calculated
79
+ * afterwards.
80
+ *
81
+ * e.g. $100 bike with $10 coupon = customer pays $90 and tax worked backwards from that
82
+ */
83
+ } elseif ( $this->prices_include_tax ) {
84
+
85
+ // Get base tax rates
86
+ if ( empty( $shop_tax_rates[ $_product->tax_class ] ) )
87
+ $shop_tax_rates[ $_product->tax_class ] = $this->tax->get_shop_base_rate( $_product->tax_class );
88
+
89
+ // Get item tax rates
90
+ if ( empty( $tax_rates[ $_product->get_tax_class() ] ) )
91
+ $tax_rates[ $_product->get_tax_class() ] = $this->tax->get_rates( $_product->get_tax_class() );
92
+
93
+ $base_tax_rates = $shop_tax_rates[ $_product->tax_class ];
94
+ $item_tax_rates = $tax_rates[ $_product->get_tax_class() ];
95
+
96
+ /**
97
+ * ADJUST TAX - Calculations when base tax is not equal to the item tax
98
+ */
99
+ if ( $item_tax_rates !== $base_tax_rates ) {
100
+
101
+ // Work out a new base price without the shop's base tax
102
+ $taxes = $this->tax->calc_tax( $line_price, $base_tax_rates, true, true );
103
+
104
+ // Digital VAT exception
105
+ if ( $this->is_virtual_taxable() && $_product->is_virtual_vat_exception() )
106
+ $taxes = $this->tax->calc_tax( $line_price, $item_tax_rates, true, true );
107
+
108
+ // Now we have a new item price (excluding TAX)
109
+ $line_subtotal = $line_price - array_sum( $taxes );
110
+
111
+ // Now add modifed taxes
112
+ $tax_result = $this->tax->calc_tax( $line_subtotal, $item_tax_rates );
113
+ $line_subtotal_tax = array_sum( $tax_result );
114
+
115
+ /**
116
+ * Regular tax calculation (customer inside base and the tax class is unmodified
117
+ */
118
+ } else {
119
+
120
+ // Calc tax normally
121
+ $taxes = $this->tax->calc_tax( $line_price, $item_tax_rates, true );
122
+ $line_subtotal_tax = array_sum( $taxes );
123
+ $line_subtotal = $line_price - array_sum( $taxes );
124
+ }
125
+
126
+ /**
127
+ * Prices exclude tax
128
+ *
129
+ * This calculation is simpler - work with the base, untaxed price.
130
+ */
131
+ } else {
132
+
133
+ // Get item tax rates
134
+ if ( empty( $tax_rates[ $_product->get_tax_class() ] ) )
135
+ $tax_rates[ $_product->get_tax_class() ] = $this->tax->get_rates( $_product->get_tax_class() );
136
+
137
+ $item_tax_rates = $tax_rates[ $_product->get_tax_class() ];
138
+
139
+ // Base tax for line before discount - we will store this in the order data
140
+ $taxes = $this->tax->calc_tax( $line_price, $item_tax_rates );
141
+ $line_subtotal_tax = array_sum( $taxes );
142
+ $line_subtotal = $line_price;
143
+ }
144
+
145
+ // Add to main subtotal
146
+ $this->subtotal += $line_subtotal + $line_subtotal_tax;
147
+ $this->subtotal_ex_tax += $line_subtotal;
148
+ }
149
+
150
+ /**
151
+ * Calculate totals for items
152
+ */
153
+ foreach ( $this->get_cart() as $cart_item_key => $values ) {
154
+
155
+ $_product = $values['data'];
156
+
157
+ // Prices
158
+ $base_price = $_product->get_price();
159
+ $line_price = $_product->get_price() * $values['quantity'];
160
+
161
+ // Tax data
162
+ $taxes = array();
163
+ $discounted_taxes = array();
164
+
165
+ /**
166
+ * No tax to calculate
167
+ */
168
+ if ( ! $_product->is_taxable() ) {
169
+
170
+ // Discounted Price (price with any pre-tax discounts applied)
171
+ $discounted_price = $this->get_discounted_price( $values, $base_price, true );
172
+ $discounted_tax_amount = 0;
173
+ $tax_amount = 0;
174
+ $line_subtotal_tax = 0;
175
+ $line_subtotal = $line_price;
176
+ $line_tax = 0;
177
+ $line_total = $this->tax->round( $discounted_price * $values['quantity'] );
178
+
179
+ /**
180
+ * Prices include tax
181
+ */
182
+ } elseif ( $this->prices_include_tax ) {
183
+
184
+ $base_tax_rates = $shop_tax_rates[ $_product->tax_class ];
185
+ $item_tax_rates = $tax_rates[ $_product->get_tax_class() ];
186
+
187
+ /**
188
+ * ADJUST TAX - Calculations when base tax is not equal to the item tax
189
+ */
190
+ if ( $item_tax_rates !== $base_tax_rates ) {
191
+
192
+ // Work out a new base price without the shop's base tax
193
+ $taxes = $this->tax->calc_tax( $line_price, $base_tax_rates, true, true );
194
+
195
+ // Digital tax exception
196
+ if ( $this->is_virtual_taxable() && $_product->is_virtual_vat_exception() )
197
+ $taxes = $this->tax->calc_tax( $line_price, $item_tax_rates, true, true );
198
+
199
+ // Now we have a new item price (excluding TAX)
200
+ $line_subtotal = round( $line_price - array_sum( $taxes ), WC_ROUNDING_PRECISION );
201
+
202
+ // Now add modifed taxes
203
+ $taxes = $this->tax->calc_tax( $line_subtotal, $item_tax_rates );
204
+ $line_subtotal_tax = array_sum( $taxes );
205
+
206
+ // Adjusted price (this is the price including the new tax rate)
207
+ $adjusted_price = ( $line_subtotal + $line_subtotal_tax ) / $values['quantity'];
208
+
209
+ // Apply discounts
210
+ $discounted_price = $this->get_discounted_price( $values, $adjusted_price, true );
211
+ $discounted_taxes = $this->tax->calc_tax( $discounted_price * $values['quantity'], $item_tax_rates, true );
212
+ $line_tax = array_sum( $discounted_taxes );
213
+ $line_total = ( $discounted_price * $values['quantity'] ) - $line_tax;
214
+
215
+ /**
216
+ * Regular tax calculation (customer inside base and the tax class is unmodified
217
+ */
218
+ } else {
219
+
220
+ // Work out a new base price without the shop's base tax
221
+ $taxes = $this->tax->calc_tax( $line_price, $item_tax_rates, true );
222
+
223
+ // Now we have a new item price (excluding TAX)
224
+ $line_subtotal = $line_price - array_sum( $taxes );
225
+ $line_subtotal_tax = array_sum( $taxes );
226
+
227
+ // Calc prices and tax (discounted)
228
+ $discounted_price = $this->get_discounted_price( $values, $base_price, true );
229
+ $discounted_taxes = $this->tax->calc_tax( $discounted_price * $values['quantity'], $item_tax_rates, true );
230
+ $line_tax = array_sum( $discounted_taxes );
231
+ $line_total = ( $discounted_price * $values['quantity'] ) - $line_tax;
232
+ }
233
+
234
+ // Tax rows - merge the totals we just got
235
+ foreach ( array_keys( $this->taxes + $discounted_taxes ) as $key ) {
236
+ $this->taxes[ $key ] = ( isset( $discounted_taxes[ $key ] ) ? $discounted_taxes[ $key ] : 0 ) + ( isset( $this->taxes[ $key ] ) ? $this->taxes[ $key ] : 0 );
237
+ }
238
+
239
+ /**
240
+ * Prices exclude tax
241
+ */
242
+ } else {
243
+
244
+ $item_tax_rates = $tax_rates[ $_product->get_tax_class() ];
245
+
246
+ // Work out a new base price without the shop's base tax
247
+ $taxes = $this->tax->calc_tax( $line_price, $item_tax_rates );
248
+
249
+ // Now we have the item price (excluding TAX)
250
+ $line_subtotal = $line_price;
251
+ $line_subtotal_tax = array_sum( $taxes );
252
+
253
+ // Now calc product rates
254
+ $discounted_price = $this->get_discounted_price( $values, $base_price, true );
255
+ $discounted_taxes = $this->tax->calc_tax( $discounted_price * $values['quantity'], $item_tax_rates );
256
+ $discounted_tax_amount = array_sum( $discounted_taxes );
257
+ $line_tax = $discounted_tax_amount;
258
+ $line_total = $discounted_price * $values['quantity'];
259
+
260
+ // Tax rows - merge the totals we just got
261
+ foreach ( array_keys( $this->taxes + $discounted_taxes ) as $key ) {
262
+ $this->taxes[ $key ] = ( isset( $discounted_taxes[ $key ] ) ? $discounted_taxes[ $key ] : 0 ) + ( isset( $this->taxes[ $key ] ) ? $this->taxes[ $key ] : 0 );
263
+ }
264
+ }
265
+
266
+ // Add any product discounts (after tax)
267
+ $this->apply_product_discounts_after_tax( $values, $line_total + $line_tax );
268
+
269
+ // Cart contents total is based on discounted prices and is used for the final total calculation
270
+ $this->cart_contents_total += $line_total;
271
+
272
+ // Store costs + taxes for lines
273
+ $this->cart_contents[ $cart_item_key ]['line_total'] = $line_total;
274
+ $this->cart_contents[ $cart_item_key ]['line_tax'] = $line_tax;
275
+ $this->cart_contents[ $cart_item_key ]['line_subtotal'] = $line_subtotal;
276
+ $this->cart_contents[ $cart_item_key ]['line_subtotal_tax'] = $line_subtotal_tax;
277
+
278
+ // Store rates ID and costs - Since 2.2
279
+ $this->cart_contents[ $cart_item_key ]['line_tax_data'] = array( 'total' => $discounted_taxes, 'subtotal' => $taxes );
280
+ }
281
+
282
+ // Only calculate the grand total + shipping if on the cart/checkout
283
+ if ( is_checkout() || is_cart() || defined('WOOCOMMERCE_CHECKOUT') || defined('WOOCOMMERCE_CART') ) {
284
+
285
+ // Calculate the Shipping
286
+ $this->calculate_shipping();
287
+
288
+ // Trigger the fees API where developers can add fees to the cart
289
+ $this->calculate_fees();
290
+
291
+ // Total up/round taxes and shipping taxes
292
+ if ( $this->round_at_subtotal ) {
293
+ $this->tax_total = $this->tax->get_tax_total( $this->taxes );
294
+ $this->shipping_tax_total = $this->tax->get_tax_total( $this->shipping_taxes );
295
+ $this->taxes = array_map( array( $this->tax, 'round' ), $this->taxes );
296
+ $this->shipping_taxes = array_map( array( $this->tax, 'round' ), $this->shipping_taxes );
297
+ } else {
298
+ $this->tax_total = array_sum( $this->taxes );
299
+ $this->shipping_tax_total = array_sum( $this->shipping_taxes );
300
+ }
301
+
302
+ // VAT exemption done at this point - so all totals are correct before exemption
303
+ if ( WC()->customer->is_vat_exempt() ) {
304
+ $this->remove_taxes();
305
+ }
306
+
307
+ // Cart Discounts (after tax)
308
+ $this->apply_cart_discounts_after_tax();
309
+
310
+ // Allow plugins to hook and alter totals before final total is calculated
311
+ do_action( 'woocommerce_calculate_totals', $this );
312
+
313
+ // Grand Total - Discounted product prices, discounted tax, shipping cost + tax, and any discounts to be added after tax (e.g. store credit)
314
+ $this->total = max( 0, apply_filters( 'woocommerce_calculated_total', round( $this->cart_contents_total + $this->tax_total + $this->shipping_tax_total + $this->shipping_total - $this->discount_total + $this->fee_total, $this->dp ), $this ) );
315
+
316
+ } else {
317
+
318
+ // Set tax total to sum of all tax rows
319
+ $this->tax_total = $this->tax->get_tax_total( $this->taxes );
320
+
321
+ // VAT exemption done at this point - so all totals are correct before exemption
322
+ if ( WC()->customer->is_vat_exempt() ) {
323
+ $this->remove_taxes();
324
+ }
325
+
326
+ // Cart Discounts (after tax)
327
+ $this->apply_cart_discounts_after_tax();
328
+ }
329
+
330
+ $this->set_session();
331
+ }
332
+
333
+ /**
334
+ * Decides whether current cart (and customer) apply for a digital vat exception (checks whether customer is from EU and not from base country)
335
+ *
336
+ * @return boolean
337
+ */
338
+ public function is_virtual_taxable() {
339
+ if ( get_option( 'woocommerce_gzd_enable_virtual_vat' ) != 'yes' )
340
+ return false;
341
+ if ( ( ! empty( WC()->customer ) ) && ( is_checkout() || defined('WOOCOMMERCE_CHECKOUT') ) ) {
342
+ $taxable_address = WC()->customer->get_taxable_address();
343
+ $base_country = WC()->countries->get_base_country();
344
+ if ( isset( $taxable_address[0] ) && $taxable_address[0] != $base_country && in_array( $taxable_address[0], WC()->countries->get_european_union_countries() ) )
345
+ return true;
346
+ }
347
+ return false;
348
+ }
349
+
350
+ }
351
+
352
+ ?>
includes/class-wc-gzd-checkout.php CHANGED
@@ -73,6 +73,12 @@ class WC_GZD_Checkout {
73
  add_filter( 'woocommerce_order_formatted_billing_address', array( $this, 'set_formatted_billing_address' ), 0, 2 );
74
  add_filter( 'woocommerce_order_formatted_shipping_address', array( $this, 'set_formatted_shipping_address' ), 0, 2 );
75
  add_filter( 'woocommerce_formatted_address_replacements', array( $this, 'set_formatted_address' ), 0, 2 );
 
 
 
 
 
 
76
  }
77
 
78
  public function set_formatted_billing_address( $fields = array(), $order ) {
73
  add_filter( 'woocommerce_order_formatted_billing_address', array( $this, 'set_formatted_billing_address' ), 0, 2 );
74
  add_filter( 'woocommerce_order_formatted_shipping_address', array( $this, 'set_formatted_shipping_address' ), 0, 2 );
75
  add_filter( 'woocommerce_formatted_address_replacements', array( $this, 'set_formatted_address' ), 0, 2 );
76
+ // Add item desc to order
77
+ add_action( 'woocommerce_order_add_product', array( $this, 'set_item_desc_order_meta' ), 0, 5 );
78
+ }
79
+
80
+ public function set_item_desc_order_meta( $order_id, $item_id, $product, $qty, $args ) {
81
+ wc_add_order_item_meta( $item_id, '_product_desc', $product->get_mini_desc() );
82
  }
83
 
84
  public function set_formatted_billing_address( $fields = array(), $order ) {
includes/class-wc-gzd-emails.php CHANGED
@@ -26,7 +26,8 @@ class WC_GZD_Emails {
26
  'woocommerce_gzd_mail_attach_imprint' => woocommerce_get_page_id ( 'imprint' ),
27
  );
28
 
29
- add_action( 'woocommerce_email_footer', array( $this, 'add_template_footers' ) );
 
30
  add_action( 'woocommerce_order_item_name', 'wc_gzd_product_item_desc', 0, 2 );
31
 
32
  $mails = WC()->mailer()->get_emails();
@@ -47,13 +48,12 @@ class WC_GZD_Emails {
47
  * @param object $mail
48
  */
49
  public function hook_mail_footer( $mail ) {
50
- if ( !empty( $this->footer_attachments ) ) {
51
  foreach ( $this->footer_attachments as $option_key => $option ) {
52
- if ( $option != -1 ) {
53
- if ( in_array( $mail->id, get_option( $option_key ) ) ) {
54
- $this->attach_page_content( $option );
55
- }
56
- }
57
  }
58
  }
59
  }
@@ -94,8 +94,8 @@ class WC_GZD_Emails {
94
  remove_shortcode( 'revocation_form' );
95
  add_shortcode( 'revocation_form', array( $this, 'revocation_form_replacement' ) );
96
  wc_get_template( 'emails/email-footer-attachment.php', array(
97
- 'post_attach' => get_post( $page_id ),
98
- ) );
99
  add_shortcode( 'revocation_form', 'WC_GZD_Shortcodes::revocation_form' );
100
  }
101
 
26
  'woocommerce_gzd_mail_attach_imprint' => woocommerce_get_page_id ( 'imprint' ),
27
  );
28
 
29
+ // Hook before WooCommerce Footer is applied
30
+ add_action( 'woocommerce_email_footer', array( $this, 'add_template_footers' ), -1 );
31
  add_action( 'woocommerce_order_item_name', 'wc_gzd_product_item_desc', 0, 2 );
32
 
33
  $mails = WC()->mailer()->get_emails();
48
  * @param object $mail
49
  */
50
  public function hook_mail_footer( $mail ) {
51
+ if ( ! empty( $this->footer_attachments ) ) {
52
  foreach ( $this->footer_attachments as $option_key => $option ) {
53
+ if ( $option == -1 || ! get_option( $option_key ) )
54
+ continue;
55
+ if ( in_array( $mail->id, get_option( $option_key ) ) )
56
+ $this->attach_page_content( $option );
 
57
  }
58
  }
59
  }
94
  remove_shortcode( 'revocation_form' );
95
  add_shortcode( 'revocation_form', array( $this, 'revocation_form_replacement' ) );
96
  wc_get_template( 'emails/email-footer-attachment.php', array(
97
+ 'post_attach' => get_post( $page_id ),
98
+ ) );
99
  add_shortcode( 'revocation_form', 'WC_GZD_Shortcodes::revocation_form' );
100
  }
101
 
includes/class-wc-gzd-install.php CHANGED
@@ -48,6 +48,9 @@ class WC_GZD_Install {
48
  if ( ! empty( $_GET['install_woocommerce_gzd_settings'] ) )
49
  self::set_default_settings();
50
 
 
 
 
51
  // We no longer need to install pages
52
  delete_option( '_wc_gzd_needs_pages' );
53
  delete_transient( '_wc_gzd_activation_redirect' );
@@ -80,7 +83,9 @@ class WC_GZD_Install {
80
  // What's new redirect
81
  wp_redirect( admin_url( 'index.php?page=wc-gzd-about&wc-gzd-updated=true' ) );
82
  exit;
 
83
  }
 
84
  }
85
 
86
  /**
@@ -104,10 +109,24 @@ class WC_GZD_Install {
104
 
105
  $this->create_cron_jobs();
106
 
 
 
 
 
 
 
 
 
 
 
 
107
  // Queue upgrades
108
  $current_version = get_option( 'woocommerce_gzd_version', null );
109
  $current_db_version = get_option( 'woocommerce_gzd_db_version', null );
110
 
 
 
 
111
  update_option( 'woocommerce_gzd_db_version', WC_germanized()->version );
112
 
113
  // Update version
@@ -122,9 +141,8 @@ class WC_GZD_Install {
122
  delete_option( '_wc_gzd_hide_review_notice' );
123
 
124
  // Check if pages are needed
125
- if ( wc_get_page_id( 'revocation' ) < 1 ) {
126
  update_option( '_wc_gzd_needs_pages', 1 );
127
- }
128
 
129
  // Flush rules after install
130
  flush_rewrite_rules();
@@ -138,6 +156,9 @@ class WC_GZD_Install {
138
  */
139
  public function update() {
140
  // Do updates
 
 
 
141
  $current_db_version = get_option( 'woocommerce_gzd_db_version' );
142
  update_option( 'woocommerce_gzd_db_version', WC_germanized()->version );
143
  }
@@ -154,6 +175,75 @@ class WC_GZD_Install {
154
  wp_schedule_event( time(), 'daily', 'woocommerce_gzd_ekomi' );
155
  }
156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  /**
158
  * Updates WooCommerce Options if user chooses to automatically adapt german options
159
  */
@@ -185,7 +275,7 @@ class WC_GZD_Install {
185
  $_tax_rate = array(
186
  'tax_rate_country' => 'DE',
187
  'tax_rate_state' => '',
188
- 'tax_rate' => 19.0,
189
  'tax_rate_name' => 'MwSt.',
190
  'tax_rate_priority' => 1,
191
  'tax_rate_compound' => '',
@@ -197,13 +287,17 @@ class WC_GZD_Install {
197
  if ( empty( $exists ) )
198
  $wpdb->insert( $wpdb->prefix . 'woocommerce_tax_rates', $_tax_rate );
199
 
200
- $_tax_rate[ 'tax_rate' ] = 7.0;
201
  $_tax_rate[ 'tax_rate_class' ] = 'reduced-rate';
202
  $_tax_rate[ 'tax_rate_name' ] = 'MwSt. 7%';
203
 
204
  $exists = $wpdb->get_results ( 'SELECT tax_rate_id FROM ' . $wpdb->prefix . 'woocommerce_tax_rates' . ' WHERE tax_rate LIKE "7%"' );
205
  if ( empty( $exists ) )
206
  $wpdb->insert( $wpdb->prefix . 'woocommerce_tax_rates', $_tax_rate );
 
 
 
 
207
  }
208
 
209
  /**
48
  if ( ! empty( $_GET['install_woocommerce_gzd_settings'] ) )
49
  self::set_default_settings();
50
 
51
+ if ( ! empty( $_GET['install_woocommerce_gzd_tax_rates'] ) )
52
+ self::create_tax_rates();
53
+
54
  // We no longer need to install pages
55
  delete_option( '_wc_gzd_needs_pages' );
56
  delete_transient( '_wc_gzd_activation_redirect' );
83
  // What's new redirect
84
  wp_redirect( admin_url( 'index.php?page=wc-gzd-about&wc-gzd-updated=true' ) );
85
  exit;
86
+
87
  }
88
+
89
  }
90
 
91
  /**
109
 
110
  $this->create_cron_jobs();
111
 
112
+ // Virtual Tax Classes
113
+ $tax_classes = array_filter( array_map( 'trim', explode( "\n", get_option('woocommerce_tax_classes' ) ) ) );
114
+ if ( ! in_array( 'Virtual Rate', $tax_classes ) || ! in_array( 'Virtual Reduced Rate', $tax_classes ) ) {
115
+ update_option( '_wc_gzd_needs_pages', 1 );
116
+ if ( ! in_array( 'Virtual Rate', $tax_classes ) )
117
+ array_push( $tax_classes, 'Virtual Rate' );
118
+ if ( ! in_array( 'Virtual Reduced Rate', $tax_classes ) )
119
+ array_push( $tax_classes, 'Virtual Reduced Rate' );
120
+ update_option( 'woocommerce_tax_classes', implode( "\n", $tax_classes ) );
121
+ }
122
+
123
  // Queue upgrades
124
  $current_version = get_option( 'woocommerce_gzd_version', null );
125
  $current_db_version = get_option( 'woocommerce_gzd_db_version', null );
126
 
127
+ if ( version_compare( $current_db_version, '1.0.4', '<' ) && null !== $current_db_version )
128
+ update_option( '_wc_gzd_needs_update', 1 );
129
+
130
  update_option( 'woocommerce_gzd_db_version', WC_germanized()->version );
131
 
132
  // Update version
141
  delete_option( '_wc_gzd_hide_review_notice' );
142
 
143
  // Check if pages are needed
144
+ if ( wc_get_page_id( 'revocation' ) < 1 )
145
  update_option( '_wc_gzd_needs_pages', 1 );
 
146
 
147
  // Flush rules after install
148
  flush_rewrite_rules();
156
  */
157
  public function update() {
158
  // Do updates
159
+ if ( ! empty( $_GET['install_woocommerce_gzd_tax_rates'] ) )
160
+ self::create_tax_rates();
161
+
162
  $current_db_version = get_option( 'woocommerce_gzd_db_version' );
163
  update_option( 'woocommerce_gzd_db_version', WC_germanized()->version );
164
  }
175
  wp_schedule_event( time(), 'daily', 'woocommerce_gzd_ekomi' );
176
  }
177
 
178
+ public static function create_tax_rates() {
179
+
180
+ global $wpdb;
181
+
182
+ // Delete digital rates
183
+ $wpdb->delete( $wpdb->prefix . 'woocommerce_tax_rates', array( 'tax_rate_class' => 'virtual-rate' ), array( '%s' ) );
184
+
185
+ $rates = array(
186
+ 'BE' => 21,
187
+ 'BG' => 20,
188
+ 'CZ' => 21,
189
+ 'DK' => 25,
190
+ 'DE' => 19,
191
+ 'EE' => 20,
192
+ 'EL' => 23,
193
+ 'ES' => 21,
194
+ 'FR' => 20,
195
+ 'HR' => 25,
196
+ 'IE' => 23,
197
+ 'IT' => 22,
198
+ 'CY' => 19,
199
+ 'LV' => 21,
200
+ 'LT' => 21,
201
+ 'LU' => 15,
202
+ 'HU' => 27,
203
+ 'MT' => 18,
204
+ 'NL' => 21,
205
+ 'AT' => 20,
206
+ 'PL' => 23,
207
+ 'PT' => 23,
208
+ 'RO' => 24,
209
+ 'SI' => 22,
210
+ 'SK' => 20,
211
+ 'FI' => 24,
212
+ 'SE' => 25,
213
+ 'UK' => 20,
214
+ );
215
+
216
+ if ( ! empty( $rates ) ) {
217
+ $count = 0;
218
+ foreach ( $rates as $iso => $rate ) {
219
+ $_tax_rate = array(
220
+ 'tax_rate_country' => $iso,
221
+ 'tax_rate_state' => '',
222
+ 'tax_rate' => (string) number_format( (double) wc_clean( $rate ), 4, '.', '' ),
223
+ 'tax_rate_name' => 'MwSt. ' . $iso . ' virtual',
224
+ 'tax_rate_priority' => 1,
225
+ 'tax_rate_compound' => 0,
226
+ 'tax_rate_shipping' => 0,
227
+ 'tax_rate_order' => $count++,
228
+ 'tax_rate_class' => 'virtual-rate'
229
+ );
230
+ // Check if standard rate exists
231
+ if ( WC()->countries->get_base_country() == $iso ) {
232
+ $base_rate = WC_Tax::get_shop_base_rate();
233
+ $base_rate = reset( $base_rate );
234
+ if ( ! empty( $base_rate ) )
235
+ $_tax_rate[ 'tax_rate_name' ] = $base_rate[ 'label' ];
236
+ }
237
+ $wpdb->insert( $wpdb->prefix . 'woocommerce_tax_rates', $_tax_rate );
238
+ $tax_rate_id = $wpdb->insert_id;
239
+ do_action( 'woocommerce_tax_rate_added', $tax_rate_id, $_tax_rate );
240
+ }
241
+ }
242
+ // Clear tax transients
243
+ $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE %s;", '_transient_wc_tax_rates%' ) );
244
+ $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE %s;", '_transient_timeout_wc_tax_rates%' ) );
245
+ }
246
+
247
  /**
248
  * Updates WooCommerce Options if user chooses to automatically adapt german options
249
  */
275
  $_tax_rate = array(
276
  'tax_rate_country' => 'DE',
277
  'tax_rate_state' => '',
278
+ 'tax_rate' => number_format( (double) wc_clean( 19.0 ), 4, '.', '' ),
279
  'tax_rate_name' => 'MwSt.',
280
  'tax_rate_priority' => 1,
281
  'tax_rate_compound' => '',
287
  if ( empty( $exists ) )
288
  $wpdb->insert( $wpdb->prefix . 'woocommerce_tax_rates', $_tax_rate );
289
 
290
+ $_tax_rate[ 'tax_rate' ] = number_format( (double) wc_clean( 7.0 ), 4, '.', '' );
291
  $_tax_rate[ 'tax_rate_class' ] = 'reduced-rate';
292
  $_tax_rate[ 'tax_rate_name' ] = 'MwSt. 7%';
293
 
294
  $exists = $wpdb->get_results ( 'SELECT tax_rate_id FROM ' . $wpdb->prefix . 'woocommerce_tax_rates' . ' WHERE tax_rate LIKE "7%"' );
295
  if ( empty( $exists ) )
296
  $wpdb->insert( $wpdb->prefix . 'woocommerce_tax_rates', $_tax_rate );
297
+
298
+ // Clear tax transients
299
+ $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE %s;", '_transient_wc_tax_rates%' ) );
300
+ $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE %s;", '_transient_timeout_wc_tax_rates%' ) );
301
  }
302
 
303
  /**
includes/class-wc-gzd-shortcodes.php CHANGED
@@ -42,7 +42,7 @@ class WC_GZD_Shortcodes {
42
  public static function revocation_form( $atts ) {
43
 
44
  ob_start();
45
- woocommerce_get_template( 'forms/revocation-form.php' );
46
  $return = '<div class="woocommerce woocommerce-gzd">' . ob_get_clean() . '</div>';
47
  return $return;
48
 
@@ -57,7 +57,7 @@ class WC_GZD_Shortcodes {
57
  public static function payment_methods_info( $atts ) {
58
 
59
  ob_start();
60
- woocommerce_get_template( 'global/payment-methods.php' );
61
  $return = '<div class="woocommerce woocommerce-gzd">' . ob_get_clean() . '</div>';
62
  return $return;
63
 
@@ -72,7 +72,7 @@ class WC_GZD_Shortcodes {
72
  public static function trusted_shops_rich_snippets( $atts ) {
73
 
74
  ob_start();
75
- woocommerce_get_template( 'trusted-shops/rich-snippets.php' );
76
  $html = ob_get_clean();
77
  return WC_germanized()->trusted_shops->is_enabled() ? '<div class="woocommerce woocommerce-gzd">' . $html . '</div>' : '';
78
 
@@ -87,7 +87,7 @@ class WC_GZD_Shortcodes {
87
  public static function trusted_shops_reviews( $atts ) {
88
 
89
  ob_start();
90
- woocommerce_get_template( 'trusted-shops/reviews.php' );
91
  $html = ob_get_clean();
92
  return WC_germanized()->trusted_shops->is_enabled() ? '<div class="woocommerce woocommerce-gzd">' . $html . '</div>' : '';
93
 
42
  public static function revocation_form( $atts ) {
43
 
44
  ob_start();
45
+ wc_get_template( 'forms/revocation-form.php' );
46
  $return = '<div class="woocommerce woocommerce-gzd">' . ob_get_clean() . '</div>';
47
  return $return;
48
 
57
  public static function payment_methods_info( $atts ) {
58
 
59
  ob_start();
60
+ wc_get_template( 'global/payment-methods.php' );
61
  $return = '<div class="woocommerce woocommerce-gzd">' . ob_get_clean() . '</div>';
62
  return $return;
63
 
72
  public static function trusted_shops_rich_snippets( $atts ) {
73
 
74
  ob_start();
75
+ wc_get_template( 'trusted-shops/rich-snippets.php' );
76
  $html = ob_get_clean();
77
  return WC_germanized()->trusted_shops->is_enabled() ? '<div class="woocommerce woocommerce-gzd">' . $html . '</div>' : '';
78
 
87
  public static function trusted_shops_reviews( $atts ) {
88
 
89
  ob_start();
90
+ wc_get_template( 'trusted-shops/reviews.php' );
91
  $html = ob_get_clean();
92
  return WC_germanized()->trusted_shops->is_enabled() ? '<div class="woocommerce woocommerce-gzd">' . $html . '</div>' : '';
93
 
includes/wc-gzd-cart-functions.php CHANGED
@@ -39,7 +39,7 @@ function wc_gzd_cart_totals_order_total_html() {
39
  }
40
 
41
  /**
42
- * Get order total tax html
43
  *
44
  * @return void
45
  */
@@ -48,12 +48,11 @@ function wc_gzd_cart_totals_order_total_tax_html() {
48
  // If prices are tax inclusive, show taxes here
49
  if ( get_option( 'woocommerce_calc_taxes' ) == 'yes' && WC()->cart->tax_display_cart == 'incl' ) {
50
  $tax_array = array();
51
-
52
  if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) {
53
  foreach ( WC()->cart->get_tax_totals() as $code => $tax ) {
54
  $rate = wc_gzd_get_tax_rate( $tax->tax_rate_id );
55
  if ( ! empty( $rate ) && isset( $rate->tax_rate ) )
56
- $tax->rate = (int) $rate->tax_rate;
57
  $tax_array[] = array( 'tax' => $tax, 'amount' => $tax->formatted_amount );
58
  }
59
  } else {
@@ -64,9 +63,10 @@ function wc_gzd_cart_totals_order_total_tax_html() {
64
  }
65
  if ( ! empty( $tax_array ) ) {
66
  foreach ( $tax_array as $tax ) {
 
67
  echo '
68
  <tr class="order-tax">
69
- <th>' . sprintf( __( 'incl. %s%% VAT', 'woocommerce-germanized' ), $tax[ 'tax' ]->rate ) . '</th>
70
  <td>' . $tax[ 'amount' ] . '</td>
71
  </tr>';
72
  }
39
  }
40
 
41
  /**
42
+ * Get order total tax html.
43
  *
44
  * @return void
45
  */
48
  // If prices are tax inclusive, show taxes here
49
  if ( get_option( 'woocommerce_calc_taxes' ) == 'yes' && WC()->cart->tax_display_cart == 'incl' ) {
50
  $tax_array = array();
 
51
  if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) {
52
  foreach ( WC()->cart->get_tax_totals() as $code => $tax ) {
53
  $rate = wc_gzd_get_tax_rate( $tax->tax_rate_id );
54
  if ( ! empty( $rate ) && isset( $rate->tax_rate ) )
55
+ $tax->rate = $rate->tax_rate;
56
  $tax_array[] = array( 'tax' => $tax, 'amount' => $tax->formatted_amount );
57
  }
58
  } else {
63
  }
64
  if ( ! empty( $tax_array ) ) {
65
  foreach ( $tax_array as $tax ) {
66
+ $rate = (int) $tax[ 'tax' ]->rate;
67
  echo '
68
  <tr class="order-tax">
69
+ <th>' . sprintf( __( 'incl. %s%% VAT', 'woocommerce-germanized' ), $rate ) . '</th>
70
  <td>' . $tax[ 'amount' ] . '</td>
71
  </tr>';
72
  }
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === WooCommerce Germanized ===
2
  Contributors: vendidero
3
- Tags: woocommerce, woocommerce german market, woocommerce deutsch, woocommerce de, woocommerce german, shop, commerce, e-commerce, woocommerce deutsche rechtsgrundlagen
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=info@vendidero.de&item_name=Donation+for+WooCommerce+Germanized
5
  Requires at least: 3.8
6
  Tested up to: 4.1
7
- Stable tag: 1.0.3
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -34,6 +34,11 @@ Selbstverständlich können Trusted Shops Kunden mit nur wenigen Einstellungen d
34
  Bei der Entwicklung von WooCommerce Germanized haben wir besonderes Augenmerk auf die nahtlose Integration in WooCommerce gelegt.
35
  Die meisten Änderungen erfolgen über Hooks & Filter - nur im äußersten Notfall wird ein Template direkt überschrieben.
36
 
 
 
 
 
 
37
  = eKomi Integration =
38
  Mit nur wenigen Klicks lässt sich eKomi als Bewertungsmanagement-Dienstleister in WooCommerce Germanized einstellen.
39
  Damit kann dein Online-Shop ganz einfach von den Vorteilen des externen Dienstleisters profitieren und unabhängige Kundenbewertungen veröffentlichen.
@@ -118,6 +123,12 @@ Bugs sowie Hilfe bei der Arbeit an WooCommerce Germanized werden gerne über uns
118
 
119
  == Changelog ==
120
 
 
 
 
 
 
 
121
  = 1.0.3 =
122
  * Fix - PHP 5.3 date diff backward compatibility
123
  * Fix - Trusted Shops review email days ignore fix
1
  === WooCommerce Germanized ===
2
  Contributors: vendidero
3
+ Tags: woocommerce, german market, german, germany, deutsch, deutschland, de, de_DE, shop, commerce, e-commerce, ecommerce, woothemes
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=info@vendidero.de&item_name=Donation+for+WooCommerce+Germanized
5
  Requires at least: 3.8
6
  Tested up to: 4.1
7
+ Stable tag: 1.0.4
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
34
  Bei der Entwicklung von WooCommerce Germanized haben wir besonderes Augenmerk auf die nahtlose Integration in WooCommerce gelegt.
35
  Die meisten Änderungen erfolgen über Hooks & Filter - nur im äußersten Notfall wird ein Template direkt überschrieben.
36
 
37
+ = Neue Umsatzsteuer-Regelung für virtuelle Produkte =
38
+ Mit der neuesten Version unterstützt WooCommerce Germanized die neuen Umsatzsteuer-Regelungen (B2C-Geschäfte, gültig ab 01.01.2015) zum Verkauf von virtuellen Produkten in die Europäische Union.
39
+ Dabei wird bei virtuellen Produkten der Brutto-Preis beibehalten und lediglich der Netto-Preis, je nach Herkunftsland des Dienstleistungsempfängers, angepasst.
40
+ Insofern du von den Regelungen betroffen sein solltest, empfehlen wir dir unbedingt mit deinem Steuerberater Rücksprache zu halten.
41
+
42
  = eKomi Integration =
43
  Mit nur wenigen Klicks lässt sich eKomi als Bewertungsmanagement-Dienstleister in WooCommerce Germanized einstellen.
44
  Damit kann dein Online-Shop ganz einfach von den Vorteilen des externen Dienstleisters profitieren und unabhängige Kundenbewertungen veröffentlichen.
123
 
124
  == Changelog ==
125
 
126
+ = 1.0.4 =
127
+ * Feature - Applying new VAT rules for selling virtual products to EU countries
128
+ * Feature - Added option to set a label for displaying unit price
129
+ * Fix - Stop updating default order status to send order confirmation. Using (in)appropriate hooks instead
130
+ * Fix - Filter priority bug fix
131
+
132
  = 1.0.3 =
133
  * Fix - PHP 5.3 date diff backward compatibility
134
  * Fix - Trusted Shops review email days ignore fix
woocommerce-germanized.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce Germanized
4
  * Plugin URI: http://www.vendidero.de/woocommerce-germanized
5
  * Description: Extends WooCommerce to become a legally compliant store for the german market.
6
- * Version: 1.0.3
7
  * Author: Vendidero
8
  * Author URI: http://vendidero.de
9
  * Requires at least: 3.8
@@ -26,7 +26,7 @@ final class WooCommerce_Germanized {
26
  *
27
  * @var string
28
  */
29
- public $version = '1.0.3';
30
 
31
  /**
32
  * Single instance of WooCommerce Germanized Main Class
@@ -125,6 +125,7 @@ final class WooCommerce_Germanized {
125
  add_action( 'init', array( 'WC_GZD_Shortcodes', 'init' ), 2 );
126
  add_action( 'widgets_init', array( $this, 'include_widgets' ), 25 );
127
  add_action( 'plugins_loaded', array( $this, 'load_plugin_textdomain' ) );
 
128
 
129
  // Loaded action
130
  do_action( 'woocommerce_germanized_loaded' );
@@ -159,8 +160,8 @@ final class WooCommerce_Germanized {
159
  do_action( 'before_woocommerce_germanized_init' );
160
  // Include required files
161
  $this->includes();
162
- add_filter( 'woocommerce_locate_template', array( $this, 'filter_templates' ), 0, PHP_INT_MAX );
163
- add_filter( 'woocommerce_product_class', array( $this, 'filter_product_classes' ), 0, PHP_INT_MAX );
164
  add_filter( 'woocommerce_get_settings_pages', array( $this, 'add_settings' ) );
165
  add_filter( 'woocommerce_enqueue_styles', array( $this, 'add_styles' ) );
166
  add_action( 'wp_enqueue_scripts', array( $this, 'add_scripts' ) );
@@ -175,7 +176,9 @@ final class WooCommerce_Germanized {
175
  // Add better tax display to order totals
176
  add_filter( 'woocommerce_get_order_item_totals', array( $this, 'order_item_totals' ), 0, 2 );
177
  add_action( 'woocommerce_cart_calculate_fees', array( $this, 'add_fee_cart' ), 0 );
178
-
 
 
179
  // Send order notice directly after new order is being added - use these filters because order status has to be updated already
180
  add_filter( 'woocommerce_payment_successful_result', array( $this, 'send_order_confirmation_mails' ), 0, 2 );
181
  add_filter( 'woocommerce_checkout_no_payment_needed_redirect', array( $this, 'send_order_confirmation_mails' ), 0, 2 );
@@ -200,6 +203,14 @@ final class WooCommerce_Germanized {
200
  }
201
  }
202
 
 
 
 
 
 
 
 
 
203
  /**
204
  * Auto-load WC_Germanized classes on demand to reduce memory consumption.
205
  *
@@ -285,6 +296,7 @@ final class WooCommerce_Germanized {
285
 
286
  include_once 'includes/wc-gzd-cart-functions.php';
287
  include_once 'includes/class-wc-gzd-checkout.php';
 
288
  }
289
 
290
  /**
@@ -383,6 +395,11 @@ final class WooCommerce_Germanized {
383
  return $gateways;
384
  }
385
 
 
 
 
 
 
386
  public function get_payment_gateways_feeable() {
387
  return apply_filters( 'wc_gzd_payment_gateways_feeable', array( 'bacs', 'paypal', 'cod' ) );
388
  }
@@ -444,8 +461,8 @@ final class WooCommerce_Germanized {
444
  */
445
  public function action_links( $links ) {
446
  return array_merge( array(
447
- '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=germanized' ) . '">' . __( 'Settings', 'woocommerce' ) . '</a>',
448
- ), $links );
449
  }
450
 
451
  /**
@@ -532,7 +549,7 @@ final class WooCommerce_Germanized {
532
  */
533
  public function email_small_business_notice() {
534
  if ( get_option( 'woocommerce_gzd_small_enterprise' ) == 'yes' )
535
- woocommerce_get_template( 'global/small-business-info.php' );
536
  }
537
 
538
  /**
@@ -557,9 +574,9 @@ final class WooCommerce_Germanized {
557
  * @return array
558
  */
559
  public function add_emails( $mails ) {
560
- $mails[] = include 'includes/emails/class-wc-gzd-email-customer-revocation.php';
561
- $mails[] = include 'includes/emails/class-wc-gzd-email-customer-ekomi.php';
562
- $mails[] = include 'includes/emails/class-wc-gzd-email-customer-trusted-shops.php';
563
  return $mails;
564
  }
565
 
@@ -594,6 +611,22 @@ final class WooCommerce_Germanized {
594
  return $return;
595
  }
596
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
597
  /**
598
  * Update fee for cart if feeable gateway has been selected as payment method
599
  */
3
  * Plugin Name: WooCommerce Germanized
4
  * Plugin URI: http://www.vendidero.de/woocommerce-germanized
5
  * Description: Extends WooCommerce to become a legally compliant store for the german market.
6
+ * Version: 1.0.4
7
  * Author: Vendidero
8
  * Author URI: http://vendidero.de
9
  * Requires at least: 3.8
26
  *
27
  * @var string
28
  */
29
+ public $version = '1.0.4';
30
 
31
  /**
32
  * Single instance of WooCommerce Germanized Main Class
125
  add_action( 'init', array( 'WC_GZD_Shortcodes', 'init' ), 2 );
126
  add_action( 'widgets_init', array( $this, 'include_widgets' ), 25 );
127
  add_action( 'plugins_loaded', array( $this, 'load_plugin_textdomain' ) );
128
+ add_action( 'woocommerce_init', array( $this, 'replace_woocommerce_cart' ), 0 );
129
 
130
  // Loaded action
131
  do_action( 'woocommerce_germanized_loaded' );
160
  do_action( 'before_woocommerce_germanized_init' );
161
  // Include required files
162
  $this->includes();
163
+ add_filter( 'woocommerce_locate_template', array( $this, 'filter_templates' ), PHP_INT_MAX, 3 );
164
+ add_filter( 'woocommerce_product_class', array( $this, 'filter_product_classes' ), PHP_INT_MAX, 4 );
165
  add_filter( 'woocommerce_get_settings_pages', array( $this, 'add_settings' ) );
166
  add_filter( 'woocommerce_enqueue_styles', array( $this, 'add_styles' ) );
167
  add_action( 'wp_enqueue_scripts', array( $this, 'add_scripts' ) );
176
  // Add better tax display to order totals
177
  add_filter( 'woocommerce_get_order_item_totals', array( $this, 'order_item_totals' ), 0, 2 );
178
  add_action( 'woocommerce_cart_calculate_fees', array( $this, 'add_fee_cart' ), 0 );
179
+ // Adjust virtual Product Price and tax class
180
+ add_filter( 'woocommerce_get_price_including_tax', array( $this, 'set_virtual_product_price' ), PHP_INT_MAX, 3 );
181
+
182
  // Send order notice directly after new order is being added - use these filters because order status has to be updated already
183
  add_filter( 'woocommerce_payment_successful_result', array( $this, 'send_order_confirmation_mails' ), 0, 2 );
184
  add_filter( 'woocommerce_checkout_no_payment_needed_redirect', array( $this, 'send_order_confirmation_mails' ), 0, 2 );
203
  }
204
  }
205
 
206
+ /**
207
+ * Replace the default WC_Cart by WC_GZD_Cart for EU virtual VAT rules.
208
+ */
209
+ public function replace_woocommerce_cart() {
210
+ if ( ! is_admin() || defined( 'DOING_AJAX' ) && get_option( 'woocommerce_gzd_enable_virtual_vat' ) == 'yes' )
211
+ WC()->cart = new WC_GZD_Cart();
212
+ }
213
+
214
  /**
215
  * Auto-load WC_Germanized classes on demand to reduce memory consumption.
216
  *
296
 
297
  include_once 'includes/wc-gzd-cart-functions.php';
298
  include_once 'includes/class-wc-gzd-checkout.php';
299
+
300
  }
301
 
302
  /**
395
  return $gateways;
396
  }
397
 
398
+ /**
399
+ * Gets payment gateways which are ready to accept fees.
400
+ *
401
+ * @return array
402
+ */
403
  public function get_payment_gateways_feeable() {
404
  return apply_filters( 'wc_gzd_payment_gateways_feeable', array( 'bacs', 'paypal', 'cod' ) );
405
  }
461
  */
462
  public function action_links( $links ) {
463
  return array_merge( array(
464
+ '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=germanized' ) . '">' . __( 'Settings', 'woocommerce' ) . '</a>',
465
+ ), $links );
466
  }
467
 
468
  /**
549
  */
550
  public function email_small_business_notice() {
551
  if ( get_option( 'woocommerce_gzd_small_enterprise' ) == 'yes' )
552
+ wc_get_template( 'global/small-business-info.php' );
553
  }
554
 
555
  /**
574
  * @return array
575
  */
576
  public function add_emails( $mails ) {
577
+ $mails[ 'WC_GZD_Email_Customer_Revocation' ] = include 'includes/emails/class-wc-gzd-email-customer-revocation.php';
578
+ $mails[ 'WC_GZD_Email_Customer_Ekomi' ] = include 'includes/emails/class-wc-gzd-email-customer-ekomi.php';
579
+ $mails[ 'WC_GZD_Email_Customer_Trusted_Shops' ] = include 'includes/emails/class-wc-gzd-email-customer-trusted-shops.php';
580
  return $mails;
581
  }
582
 
611
  return $return;
612
  }
613
 
614
+ /**
615
+ * Stop WooCommerce from adding additional VAT to virtual products within Checkout.
616
+ *
617
+ * @param float $price
618
+ * @param int $qty
619
+ * @param object $product
620
+ * @return adjusted price
621
+ */
622
+ public function set_virtual_product_price( $price, $qty, $product ) {
623
+ if ( ! $product->is_virtual_vat_exception() || ! isset( WC()->cart ) || ! WC()->cart->is_virtual_taxable() )
624
+ return $price;
625
+ if ( get_option('woocommerce_prices_include_tax') === 'yes' )
626
+ return $product->get_price() * $qty;
627
+ return $price;
628
+ }
629
+
630
  /**
631
  * Update fee for cart if feeable gateway has been selected as payment method
632
  */